anhnmncb wrote:
> On 2008-11-30, anhnmncb wrote:
>   
>> As title, I want to make a function for foldtext like this:
>>
>> function MY_TeX_BiBFoldText()
>>   let line = getline(v:foldstart, v:foldend)
>>   let matchlinea = match(line, '^\s*author.*{.*}.*') + 1
>>   let matchlinet = match(line, '^\s*title.*{.*}.*') + 1
>>   let matcha = substitute(getline(matchlinea), '^.*{\(.*\)}*.*$', '\1', 'g')
>>   let matcht = substitute(getline(matchlinet), '^.*{\(.*\)}*.*$', '\1', 'g')
>>   let matched = "title: " . matcht . "   author: " . matcha
>>   return v:folddashes . matched
>> endfunction
>>
>> So the folding will show the string "matched", but I find that v:foldstart 
>> and
>> v:foldend have the same value in foldings, so all my foldings show the same
>> string, why?
>>
>>     
> Isn't my description clear? If so, let me know please.
>
>   
Hello!

I've not messed with the foldtext option before; I suspect its one of 
the less common things people do, so your target audience is small.
Also, I've moved recently to a new email delivery mechanism (even though 
my email address itself hasn't changed), and its flagging your email as 
spam:
 

Content analysis details:   (5.9 points, 3.5 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 0.1 RDNS_NONE              Delivered to trusted network by a host with no rDNS
 3.2 FROM_LOCAL_NOVOWEL     From: localpart has series of non-vowel letters
 2.6 RCVD_NUMERIC_HELO      Received: contains an IP address used for HELO

The biggest item on the above list is your false "name".  Rather discourages 
one from looking at your email, you know.

Now, on to your problem -- I instrumented your function with Decho.vim calls 
(Dfunc, Decho, Dret).  Since the foldtext option says its a no-no to change 
windows, I used DechoMsgOn which sends Decho output via echomsg.

You can get the Decho plugin from:

        http://vim.sourceforge.net/scripts/script.php?script_id=120
-or-
        http://mysite.verizon.net/astronaut/vim/index.html#DECHO
        (this latter one is always the most up-to-date)

Here's the modified function/script:

DechoMsgOn
function! MY_TeX_BiBFoldText()
   call Dfunc("My_TeX_BiBFoldText() v:fold[".v:foldstart.",".v:foldend."]")
   let line       = getline(v:foldstart, v:foldend)
   let matchlinea = match(line, '^\s*author.*{.*}.*') + 1
   let matchlinet = match(line, '^\s*title.*{.*}.*') + 1
   call Decho("matchlinea=".matchlinea." matchlinet=".matchlinet)
   let matcha     = substitute(getline(matchlinea), '^.*{\(.*\)}*.*$', '\1', 
'g')
   let matcht     = substitute(getline(matchlinet), '^.*{\(.*\)}*.*$', '\1', 
'g')
   let matched    = "title: " . matcht . "   author: " . matcha
   call Dret("My_TeX_BiBFoldText ".v:folddashes . matched)
   return v:folddashes . matched
endfunction
set foldtext=MY_TeX_BiBFoldText()

With it, you'll see that v:foldstart and v:foldend do differ when 
MY_TeX_BiBFoldText() is called for each fold.  An example of one of the calls 
(gotten by typing :mess):

My_TeX_BiBFoldText() v:fold[30,35] {
|matchlinea=0 matchlinet=0
|return My_TeX_BiBFoldText -title:    author:  }

The problem here is that your two match() calls which look for author and title 
don't match.  None of my bib entries that I used for this test have {}s for 
author=... or title=... , so that's the proximate cause for me.  You'd need to 
share some of your bib files for a better test, or better: get Decho.vim and 
try debugging this one yourself.

Regards,
Chip Campbell




--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to