On 19/06/10 03:03, Gary Johnson wrote:
On 2010-06-18, aleCodd wrote:
Tony Mechelynck-2 wrote:

Most Vim helpfiles have a modeline at the end, something like

   vim:tw=78:ts=8:ft=help:norl:

(see :help modeline)

The :ft=help: part in such a modeline (intentionally) overrides any
filetype which might have been set by the filetype-detection mechanism.
Normally you wouldn't want to override such modelines, they're there for
good reason. (For instance I have an own-coded rule to identify *.txt
files as filetype "text", but thanks to these modelines it doesn't apply
to the Vim help.)



I removed the modeline, and still defaults back to help filetype, and the
weird thing is that if i remove the 'syntax enable' and 'filetype on'
commands from the .vimrc the filetype would be to whatever i manually set in
the autocommand, but these SAME two commands don't overrule a buffer
filetype after it  has been already set.

If you want to find out what is setting 'ft', execute this:

     verbose set ft?

does 'filetype on' command behave differently from the .vimrc vs. the
command line?

The command itself behaves the same regardless of where it is
executed.  The effect of executing it may vary depending on when it
is executed relative to other commands that define autocommands.

Executing ":filetype on" loads the file $VIMRUNTIME/filetype.vim
(see ":help :filetype") and that file executes a whole lot of
autocommands that respond to the BufNewFile and BufRead events and
execute the :setf command in response.  Conceptually, Vim maintains
a list of autocommands for each autocommand event.  When an event
occurs, Vim traverses the list of autocommands for that event and
executes any whose patterns match.  The autocommands are executed in
the same order as they are added to the list.

What that means is that if you execute an autocommand, e.g.,

     au BufRead *.c setf python

and then execute

     filetype on

your autocommand will precede those loaded by ":filetype on" and
will be executed first whenever a file ending in ".c" is read.

In the case of the :setf command, the first one executed in response
to a single event wins.  Following my example, executing

     :e foo.c

where foo.c already exists will result in 'filetype' being set to
"python".

Now, if instead you executed those commands in this sequence,

     :filetype on
     :au BufRead *.c setf python
     :e foo.c

'filetype' would be set to "c".

If you used "set filetype=python" instead of "setf python", like
this,

     :filetype on
     :au BufRead *.c set filetype=python
     :e foo.c

then 'filetype' would be set to "python" because "set
filetype=python" is executed last and because the :set command
forces an option to be set unconditionally whereas :setf sets the
'filetype' conditionally as described in

     :help :setf

That's a lot of information.  The points are that:

1.  ":filetype on" defines a set of autocommands;
2.  autocommands are executed in the order in which they are
     defined;
3.  :setf sets the filetype conditionally (the first one in a
     sequence wins);
4.  ":set ft=" sets the filetype unconditionally (the last one in a
     sequence wins); and
5.  (not discussed above) modelines are executed after any BufRead
     autocommands.

I hope understanding that will help explain what you've been
observing.

Regards,
Gary


Another thing not yet discussed here is that you should NEVER modify-in-place any file in the $VIMRUNTIME directory or below it at any depth. The reason is that any runtime file upgrade may (and sooner or later some update is bound to) remove your modifications without any warning -- unless you let your runtime files go stale, which is of course not recommended.

aleCodd, I don't know why you want to set the filetype of Vim's helpfiles diff.txt (which is about viewing file differences in Vim -usually in vimdiff-) and vi_diff.txt (which is about usage differences between Vim and vi) to something other than help. IMHO this desire of yours is misguided, but if you still want to carry on with it by modifying the helpfiles, you should first copy them to ~/.vim/doc/ (on Unix) or ~/vimfiles/doc/ (on Windows) and apply any modifications to the copies.


Best regards,
Tony.
--
FATHER: We are here today to witness the union of two young people in the
joyful bond of the holy wedlock. Unfortunately, one of them, my son
        Herbert, has just fallen to his death.
   [Murmurs from CROWD;  the BRIDE smiles with relief, coughs.]
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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

Reply via email to