filetype on or filetype off?
Asked Answered
D

3

11

I use the Pathogen plugin for gvim. When configuring I set the following in my vimrc file:

call pathogen#infect()
call pathogen#helptags()
call pathogen#runtime_append_all_bundles()

filetype on  "force reloading *after* pathogen loaded

Now I'm following this tutorial on Youtube by Martin Brochhaus to set up Vim to be useful for Python coding and he suggests the following:

filetype off
filetype plugin indent on
syntax on 

So currently I have filetype on for pathogen but he is suggesting filetype off. What does this line of code do and how should I configure vimrc so Pathogen and Python are both happy?

Dual answered 13/7, 2013 at 12:55 Comment(2)
Related question: Why vundle requires filetype off.Ezzell
This is explained in great detail at :h filetypes.Ezzell
H
10
call pathogen#runtime_append_all_bundles()

is not needed at all: the function is deprecated and not useful anyway.

If you really need to be safe, this is what you should have at the top of your ~/.vimrc:

" turn filetype detection off and, even if it's not strictly
" necessary, disable loading of indent scripts and filetype plugins
filetype off
filetype plugin indent off

" pathogen runntime injection and help indexing
call pathogen#infect()
call pathogen#helptags()

" turn filetype detection, indent scripts and filetype plugins on
" and syntax highlighting too
filetype plugin indent on
syntax on

However, I've had the following for quite a while without any noticeable issue:

call pathogen#infect()
call pathogen#helptags()

filetype plugin indent on
syntax on
Hwang answered 13/7, 2013 at 14:56 Comment(1)
Agreed. Note that tpope has updated the preferred infect() invocation, so these days it reads execute pathogen#infect().Ezzell
A
10

The :filetype off is superfluous when immediately followed by :filetype [plugin indent] on (as it turns on filetype detection again, as described at :help filetype-plugin-on); don't blindly trust arbitrary resources on the Internet :-)

You usually want filetype detection (so that a corresponding syntax can be loaded for highlighting (with :syntax on)), and filetype-specific settings (the plugin part), and indentation rules (indent).

The only pitfall with Pathogen is that this should come after the Pathogen initialization, but you've done that right.

Adelinaadelind answered 13/7, 2013 at 13:9 Comment(3)
Nope, it isn't strictly superfluous. :filetype off does in fact do something quite specific, that is, it executes the ftoff.vim in the runtime files and this has real side-effects. For example it undefines an autocommand group which may have been set by a system vimrc.Ezzell
@Ezzell Technically correct, but (when run in a .vimrc at startup), the actions in ftoff.vim are undone by the :filetype on.Adelinaadelind
Not only technically, it may have real consequences: I was told that some Linux distros have filetype on in the system vimrc. In this situation, if you don't do filetype off and on again, it won't be possible to add ftdetect scripts in ~/.vim. Fortunately, pathogen internally does filetype off so we don't have to worry about that.Ezzell
H
10
call pathogen#runtime_append_all_bundles()

is not needed at all: the function is deprecated and not useful anyway.

If you really need to be safe, this is what you should have at the top of your ~/.vimrc:

" turn filetype detection off and, even if it's not strictly
" necessary, disable loading of indent scripts and filetype plugins
filetype off
filetype plugin indent off

" pathogen runntime injection and help indexing
call pathogen#infect()
call pathogen#helptags()

" turn filetype detection, indent scripts and filetype plugins on
" and syntax highlighting too
filetype plugin indent on
syntax on

However, I've had the following for quite a while without any noticeable issue:

call pathogen#infect()
call pathogen#helptags()

filetype plugin indent on
syntax on
Hwang answered 13/7, 2013 at 14:56 Comment(1)
Agreed. Note that tpope has updated the preferred infect() invocation, so these days it reads execute pathogen#infect().Ezzell
T
4

filetype on enables filetype detection. Setting filetype plugin or filetype indent to on will turn on filetype detection if it wasn't already anyway. See :help filetype.

Turnstone answered 13/7, 2013 at 12:57 Comment(2)
ok - seems a bit strange that in that tutorial he suggests filetype off - he doesn't say why - what would be the advantage of setting it to off?Dual
@Dual I know Vundle used to require this setting also as it caused an error when loading (but this was patched in vim). However I run Pathogen with vim myself without this line and haven't come across any trouble.Turnstone

© 2022 - 2024 — McMap. All rights reserved.