On Sun, Oct 15, 2006 at 11:37:33PM -0700, Kunapuli, Udaykumar wrote:
> Hi,
>  
> I am using VIM 7.0 on UNIX. I have files with extension .lib (*.lib 
> files). VIM automatically thinks that it is a Cobol filetype. The file 
> has nothing to do with Cobol. I have tried setting the following things 
> in my .vimrc. 
>  
> au BufNewFile,BufRead *.lib set ft=text 
> au BufNewFile,BufRead *.lib filetype off
> au BufNewFile,BufRead *.lib filetype plugin indent off

     The first line should be enough.  The 'filetype' (abbreviated 'ft')
option is local to the buffer and should be set each time you edit a
*.lib buffer.  The :filetype command is global.  If you want to turn off
all filetype detection, add the line

filetype off

to your vimrc file.  I cannot think of any situation in which it makes
sense to put it in a BufNewFile,BufRead autocommand.

> I could take away the glaring syntax highlighting (red background on 
> all text!!!), but it was not of any help in terms of searching and 
> regular expression. 
> 
> In ordinary text files, underscore ("_") is considered as a legal part 
> of the word (or the regular expression \w). However in files with 
> extension .lib, VIM seems to consider underscore ("_") as a special 
> character. 
> 
> Is there anyway for me to make *.lib files to be treated as ordinary 
> text files by VIM for everything (syntax highlighting, indenting, 
> regular expression searching etc.)? 

     The problem is that autocommands are executed in the order in which
they are defined.  Apparently, the autocommand in your vimrc file,
setting ft=text, comes after the one that sets ft=cobol.  Thus things
happen in this order:

:set ft=cobol
:source $VIMRUNTIME/syntax/cobol.vim
:setlocal isk=@,48-57,-
:set ft=text

and nothing undoes the 'iskeyword' setting.

     The simple solution is to make sure that your autocommand comes
before any

filetype on

or

source $VIMRUNTIME/vimrc_example.vim

in your vimrc file.

     A more robust method (since it does not rely on the order of lines
in your vimrc file) is to use either method A or C from

:help new-filetype

> I tried editing the filetype.vim in the runtime directory and 
> commenting the portion with the .lib extension. But it didn't work.

     That is not recommended.  If you fix problems by editing things
under $VIMRUNTIME, then you will have to remember to fix them each time
you upgrade to a new version of vim.  In the long run, it is easier to
fix things in your own vim directory.

> Thanks,
> Uday

HTH                                     --Benji Fisher

Reply via email to