Thomas schrieb:
Now, when I do set ft=X from the command line, it happens that the
ftplugin X doesn't get loaded because it finishes when
b:did_ftplugin is set.
What I actually meant by this was: the ftplugin X doesn't get loaded
when a filetype was already set before, i.e. when a filetype plugin
already defined b:did_ftplugin.
ftplugins should define b:undo_ftplugin .
:h undo_ftplugin
If this var exists and its commands get executed then (only then)
also b:did_ftplugin will be unset.
Executing b:undo_ftplugin is one of the first things :setf X tries
to do.
Thanks, in the meantime I already found this help page. But it doesn't
seem to solve the problem.
Here's what I do (vim is 7.0-204):
in ~/.vim/ftplugin/test.vim
if &cp || exists("b:did_ftplugin")
echom 'b:did_ftplugin already set!'
finish
endif
let b:did_ftplugin = 1
echom "Test ftplugin!"
on the command line:
gvim -u NONE
in vim:
:set nocompatible
:syntax on
:filetype plugin on
:help
:set ft=test
Result: 'b:did_ftplugin already set!' is printed in the echo area.
b:did_ftplugin obviously is set by the help ftplugin (b:undo_ftplugin
is set to "setl fo< tw<") but is never unset.
Ok. There has been an error in the earlier help ftplugin (from
2006-04-19). Are you sure your help ftplugin sets
:let b:undo_ftplugin = "setl fo< tw<"
and not
:let b:undo_plugin = "setl fo< tw<"
(?) In the latter case, update your runtime file(s) and try again.
Is this really the intended behaviour? Is the user meant to manually
unlet b:did_ftplugin in such a situation? Do I misunderstand here
something quite fundamentally?
Regards,
Thomas.
No, no, no :-)
--
Regards,
Andy
EOM