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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to