sycc wrote: > 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? In addition to other's comments about the use of b:current_syntax, you should use ownsyntax (see :help :ownsyntax). I've attached a small plugin which does this.
Regards, Chip Campbell -- -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
sycc.vim
Description: application/octetstream
