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
-~----------~----~----~----~------~----~------~--~---