Hello all!
I'm trying to write a function for switching between the current buffer 
syntax highlighting and whitespace, but I'm really new to vim scripting 
and such and am having a hard time.
I switch to whitespace syntax highlighting and back quite frequently. 
However, it's not as simple as switching back to the buffer's filetype 
syntax because there are times when I've changed it to something else. 
For instance, data in .txt files that I visualize with different syntax 
highlighting formats depending on the situation.
What I've tried is creating a buffer variable on buffer creation and 
then updating it, this is what I have so far:
au BufEnter * let b:current_syntax=&syntax
fu! SwitchHLwhitespace()
     if &syntax == "whitespace"
         let &syntax=b:current_syntax
     else
         let tmp=&syntax
         set syntax=whitespace
         let b:current_syntax=tmp
     endif
endfunction
This works pretty well until I open a second buffer, either with split, 
newtab or whatever.
Now onto the questions...
1) If I don't use the tmp variable, somewhere inside the "set syntax" 
routine the buffer var b:current_syntax disappears. I'm not entirely 
sure why this happens, is it normal? For instance, right after opening a 
file I can do "echo b:current_syntax" and get the correct output, then I 
call my function and then once again the echo command and now it fails 
with 'Undefined variable'. Why is this?
2) When opening a second buffer (lets name the A and B), if I call this 
on A and switch it to whitespace, then B and switch it as well, then 
back to A I can no longer go back, the buffer var has changed to 
"whitespace" and no longer contains the stored syntax highlighting.
Now, I'm pretty sure I'm missing something important here... given that 
I'm pretty new to vim scripting and such. I was under the impression 
that b: variables were local to buffers, so I thought I could create one 
per opened buffer and this would work, does it not behave like this?
Thank you all for your help!!
-- Sycc
-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment