Sunday, September 18, 2011

Re: Remembering syntax when moving in and out of buffers

On Sep 18, 5:45 pm, "Benjamin R. Haskell" <vim@benizi.com> wrote:
> On Sun, 18 Sep 2011, Spiros Bousbouras wrote:
>
> The problem is that the filetype is being detected again every time you
> switch buffers. Apparently Debian (like most distros) has a bunch of
> auto-detection on filetypes. With your:
>
> :let &verbose=20
>
> You can see there's an autocmd on BufRead that gets triggered every
> time. It's conditioned on:
>
> if !did_filetype()
>
> And, since your filetype isn't set up the way Debian expects it (which
> may or may not be the way Vim normally does it), did_filetype() returns
> 0.

I'm afraid I don't follow your explanation. Don't the Debian specific
stuff become irrelevant when I do vim -u NONE ? Or do you mean that
Debian have modified the source of vim before compiling so that even
when I start vim with -u NONE some filetype detection stuff still
happens ? In the experiment with vim -u NONE a b I described
why is it that when I return to a then issuing only the syntax
command (but not the highlight command) turns on highlighting ? And I
didn't see any autocommands being executed either , the output was
exactly as I described it.

> > Here's a version of the problem with no simplifications:
> > File a contains
> > This is a special line
>
> > File b is empty. I do
> > vim -u NONE a b
> > :let &verbose=20
> > :syntax match special /special/
> > :highlight special term=bold cterm=bold
>
> > The word "special" gets highlighted.
> > 2Ctrl-^
> > "b" 0 lines, 0 characters
> > Ctrl-^
> > "a" 1 line, 23 characters
>
> > Now "special" is no longer highlighted.
> > :syntax
> > No Syntax items defined for this buffer
> > :syntax match special /special/
>
> > The word "special" gets highlighted again. Note that this time I
> > didn't have to enter the highlight command to get the highlighting.
>
> > I would be especially interested if anyone who runs Debian Lenny would
> > try the above test.
>
> Is Debian Lenny the same as Debian 6? I don't use Debian, but I have
> VM's of Debian 5 and 6 for testing things. Under 6 is where I observed
> the BufRead problem.

Debian 6 is squeeze , Debian 5 is lenny.

> I'm not sure which parts of this are necessary, but the following works
> for me. Using your example with the 'a' and 'b' files, but moving 'a'
> to 'a.myfile' (so it can be detected by extension):
>
> 1. Change your autocmd for detection from:
>
> (old:) autocmd BufReadPost,BufNewFile *.myfile source ~/myfile.vim
>
> to, either:
>
> i. if you *really* want to keep it in vimrc (for some reason -- not
> recommended, but it worked fine in testing):
>
> aug filetypedetect
> autocmd BufReadPost,BufNewFile *.myfile setf myfile
> aug END
>
> ii. or just put it in ~/.vim/ftdetect/myfile.vim (where you don't need
> the augroup wrapper):
>
> au BufReadPost,BufNewFile *.myfile setf myfile
>
> " au is short for :autocmd
> " setf is short for :setfiletype
>
> 2. And create a file ~/.vim/syntax/myfile.vim containing just the
> following two lines:
>
> syn match special /special/
> hi special term=bold cterm=bold
>
> Then it's properly detected for me under Debian 6.

Thanks but if these are the alternatives then it's simpler just to
reexecute the syntax commands every time the buffer is loaded.

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

No comments: