On Do, 25 Mai 2017, Bram Moolenaar wrote:
> Christian Brabandt wrote:
> 
> > On Mi, 24 Mai 2017, fREW Schmidt wrote:
> > 
> > > Yes. "If I replace the contents of /usr/share/vim/vim80/syntax/vb.vim with `let
> > > b:current_syntax = "vb"` everything is fast and, as I would hope, the support
> > > files are not loaded N times per buffer but instead exactly once." 
> > 
> > Well, I see the problem, although I cannot reproduce it.
> > 
> > The markdown syntax script sources the html syntax script and that one 
> > does include a couple of other syntax scripts, like css.vim, 
> > javascript.vim and also vb.vim. However from my testing vb.vim is not 
> > guilty alone. If I uncomment vb.vim, the overall loading time only 
> > shrinks by 0.2 seconds or so (it needs here a total of around 7 
> > seconds). So you would need to disable all other to be included syntax 
> > scripts as well (for a test, you could set main_syntax='java').
> 
> I haven't read the whole thread, but I suspect that the trick is to set
> b:current_syntax (to anything), which will cause further syntax scripts to bail
> out.  Anyway, this is all working around the actual problem.
Not for html, which explicitly resets b:current_syntax to be able to 
include several other syntax scripts and even provides the main_syntax 
global variable to make this work with other syntax scripts.
> 
> > However, I think you might have found a bug here. Your ftdetect script 
> > does this:
> > 
> > autocmd BufNew,BufNewFile,BufRead *.md :set filetype=markdown
> > 
> > The :args command does fill the argument list, calls ex_next() which 
> > calls eventually alist_set() and then iterates over the argument list 
> > and calls adlist_add(). This will finally call buflist_add() which in 
> > turn calls buflist_new(), which triggers the BufNew autocommand, which 
> > then triggers the FileType and finally the Syntax autocommands. So in 
> > the end, we are iterating over the whole list of arguments and call 
> > autocommands, for buffers that are not even going to be displayed next.
> > 
> > So I wonder, if we can't do a little bit better, similar to how vimgrep 
> > sets the eventignore option to prevent at least the expensive FileType 
> > autocommand:
> 
> I'm quite sure this will make other things fail.  Just don't use
> BufNew for detecting the filetype, that is the cause of the problem.
> The file type should only be detected when the buffer is loaded.
> Doing it earlier indeed causes the overhead experienced.
Indeed, however, that doesn't mean, we shouldn't try to avoid this 
problem. Vimgrep does the same.
Best,
Christian
-- 
Am Ende ist alles ein Witz.
		-- Charlie Chaplin
-- 
-- 
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