On 2007-03-01, kib2 <[EMAIL PROTECTED]> wrote: > > Try ':filetype on' > > > > Yakov > > > > > filetype on is already inside my mimrc. > In fact, I've made a special function for the different languages I use : > > > au BufEnter *.py exe Fpython() > > function Fpython() > au FileType python source C:\Program Files\vim\vim70\scripts\python.vim > autocmd BufRead,BufNewFile *.py syntax on > autocmd BufRead,BufNewFile *.py set ai > filetype on > > " les tabs sont des espaces pour Python: > au BufNewFile,BufRead *.py set expandtab > au BufNewFile,BufRead *.py set tabstop=4 > au BufNewFile,BufRead *.py set shiftwidth=4 > > etc... > endfunction > > Where do I go wrong ?
If you want vim to automatically detect the file type, "filetype on" must be executed _before_ any buffer is loaded, that is, before the BufNewFile or BufRead events, and certainly before the BufEnter event. Executing "filetype on" is like arming the file detection mechanism, but the code above arms the detection _after_ the triggering events have occurred. So first of all, the "filetype on" line should be in the main body of the _vimrc so that it is executed when _vimrc is sourced, not later when an autocommand is triggered. Secondly, if you want "syntax on", et al. to be executed when you enter a buffer containing a Python file, you should either execute Fpython() in an autocommand and remove all the autocommands from within Fpython(), or you should execute Fpython() unconditionally and leave the autocommands within Fpython() as they are. Otherwise, the settings within Fpython() won't be executed until the second Python file is loaded and vim's behavior will appear to be inconsistent. Your whole approach is really more complicated and error-prone than it needs to be. I would recommend that you take all the settings now in Fpython() (except "filetype on"), remove the autocommand parts, and put them all in a separate file, C:\Program Files\vim\vim70\after\ftplugin\python.vim. Then change all the "set" commands to "setlocal", like this: source "C:/Program Files/vim/vim70/scripts/python.vim" syntax on setlocal ai " les tabs sont des espaces pour Python: setlocal expandtab setlocal tabstop=4 setlocal shiftwidth=4 Vim's filetype detection will cause this file to be sourced whenever you open a Python file. Using "setlocal" will cause those settings to apply only to the current buffer, that is, only to buffers containing Python files, rather that to every buffer in the current vim instance. Lastly, if you execute "syntax on" like this, you enable syntax highlighting for every buffer, regardless of file type. If you want syntax highlighting for only certain file types, I would recommend putting syntax manual in your _vimrc and setlocal syntax=ON in the C:\Program Files\vim\vim70\after\ftplugin\ file for each filetype for which you want highlighting enabled. HTH, Gary -- Gary Johnson | Agilent Technologies [EMAIL PROTECTED] | Mobile Broadband Division | Spokane, Washington, USA