Open GoogleCodeExporter opened 9 years ago
Why do you expect typing tab to insert 4 spaces? Where do you define this rule?
One of the big changes in Vim 7.4 when upgrading from 7.3 is that the default
ftplugin file for python will set tab to actually insert real tab characters
according to PEP8.
Probably you're actually hitting a problem where the filetype plugin IS firing,
and it is overwriting the settings you really want. But I can't know that for
certain without knowing how you told Vim to use 4-space indent in the first
place.
Original comment by fritzoph...@gmail.com
on 9 Feb 2015 at 4:36
According to https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
- Spaces are the preferred indentation method.
- Tabs should be used solely to remain consistent with code that is already
indented with tabs.
Where in PEP8 do you see that real tab characters are the appropriate mean to
indent?
Original comment by fmerci...@gmail.com
on 9 Feb 2015 at 4:50
After you open a Python file from the command line, execute the following
command.
:verbose set ts? sta? sts? et?
Note where each of those was set. On my system, they are all set from
/usr/local/share/vim/vim74/ftplugin/python.vim except 'sta' which is unset
('nosmarttab').
Then edit a different Python file from within Vim, repeat the :verbose command,
and see what changed. On my system, the results are the same.
Original comment by gary....@gmail.com
on 9 Feb 2015 at 3:42
I rescind my statement. Probably the problem is something in YOUR settings is
overwriting the filetype plugin somehow. Apparently the ftplugin sets
"expandtab tabstop=8 softtabstop=4 shiftwidth=4" which should be applying
4-space indent.
I couldn't tell you where in PEP8 the tabstop of 8 comes from. I don't develop
the python plugin nor do I code in python more than a couple times in a month.
All I know is there was a change to the runtime files somewhat recently that
applied these settings in the python file. I also know filetype plugins load
perfectly fine on every single python file for almost every single Vim user. So
probably something is wrong with your setup. Check ":verbose set expandtab?" to
see where this was apparently unset in your config.
Original comment by fritzoph...@gmail.com
on 9 Feb 2015 at 3:43
Found the tabstop of 8:
https://docs.python.org/2/reference/lexical_analysis.html#indentation
(Noted in the thread introducing the PEP8 settings:
https://groups.google.com/d/msg/vim_dev/vAAIicXPHlc/mPCkbBYaHRAJ)
Original comment by fritzoph...@gmail.com
on 9 Feb 2015 at 3:50
Result of :verbose set ts? sta? sts? et?
When editing a file from the command line:
tabstop=8
Last set from /usr/share/vim/vim74/ftplugin/python.vim
nosmarttab
softtabstop=4
Last set from /usr/share/vim/vim74/ftplugin/python.vim
expandtab
Last set from /usr/share/vim/vim74/ftplugin/python.vim
When editing a different file from within Vim:
tabstop=8
nosmarttab
softtabstop=0
noexpandtab
So it does look like the filetype plugins do not get loaded when using :e to
open a file.
Original comment by fmerci...@gmail.com
on 9 Feb 2015 at 3:50
That is not what I was expecting. I'm not sure what to look at next. After
using :e, what does
:verbose set ft?
say?
Original comment by gary....@gmail.com
on 9 Feb 2015 at 4:06
Result of :verbose set ft?
filetype=python
Last set from /usr/share/vim/vim74/filetype.vim
It reports the same thing before and after using :e
Original comment by fmerci...@gmail.com
on 10 Feb 2015 at 9:39
I'm not all that familiar with the internals of Vim. Is there some way or tools
I could use to investigate the plugin further?
Original comment by fmerci...@gmail.com
on 10 Feb 2015 at 9:46
Interestingly enough, if the first file I open is of a different type, the
plugins load correctly the first time I use :e (but not the second time)
$ vim test.html
(I get HTML syntax and indent and stuff)
:e foo.py
:verbose set ts? sta? sts? et? ft?
tabstop=8
Last set from /usr/share/vim/vim74/ftplugin/python.vim
nosmarttab
softtabstop=4
Last set from /usr/share/vim/vim74/ftplugin/python.vim
expandtab
Last set from /usr/share/vim/vim74/ftplugin/python.vim
filetype=python
Last set from /usr/share/vim/vim74/filetype.vim
:e bar.py
:verbose set ts? sta? sts? et? ft?
tabstop=4
nosmarttab
softtabstop=0
noexpandtab
filetype=python
Last set from /usr/share/vim/vim74/filetype.vim
So it's only when opening a second file of the same type that the plugins don't
get loaded. Actually, the same thing happens if I load a second HTML file with
:e after the first one, so it is not limited to the python plugin.
Original comment by fmerci...@gmail.com
on 10 Feb 2015 at 9:57
Please, before loading the second file, to :set verbose=10 and check, which
files are loaded on :e
I assume, you can reproduce it, starting with
vim -u NONE -i NONE -N --cmd ':filetype plugin on' foo.py
?
Original comment by chrisbr...@googlemail.com
on 11 Feb 2015 at 6:23
Original issue reported on code.google.com by
fmerci...@gmail.com
on 9 Feb 2015 at 3:23