Мои локальные и глобальные .eslintrc
файлы указывают:
{
"extends": "airbnb",
"rules": {
"indent": ["error", 2, { "SwitchCase": 1 }],
}
Потенциально релевантными частями моего init.vim
являются:
scriptencoding utf-8
Plug 'moll/vim-node'
Plug 'mxw/vim-jsx'
Plug 'othree/javascript-libraries-syntax.vim'
Plug 'styled-components/vim-styled-components', { 'branch': 'main' }
set autoindent
set breakindent
set shiftwidth=2
set smartindent
function! LintThisFile()
set nomodifiable
if(&filetype =~ 'javascript')
" --rule etc is a recent addition, after the problems began
keepjumps silent! exec "! ".GetProjectPath()."/node_modules/.bin/eslint --fix --rule 'indent: ["error", 2, {SwitchCase: 1}]' %"
elseif (&ft =~ 'htm')
keepjumps silent! exec '!tidy -m %'
endif
set modifiable
edit
endfunction
function! LintFixThisFile()
if &modifiable
let l:line = line('.')
let l:col = col('.')
let l:view = winsaveview()
a keepjumps exec 'silent! %s/\t/ /g'
if (index(['javascript', 'javascript.jsx', 'html'], &filetype) >= 0)
silent! call LintThisFile()
else
exec 'silent! normal! gg=G'
endif
silent! call cursor(l:line, l:col)
silent! call winrestview(l:view)
endif
endfunction
function! GetProjectPath()
let l:cwd = expand('%:h')
if (l:cwd ==# '')
let l:cwd = getcwd()
endif
let l:raw_path=system('(cd '.l:cwd.' && git rev-parse --show-toplevel)')
if (l:raw_path=~# 'Not a git repository')
return l:cwd.'/'
elseif (l:raw_path =~ '\n')
return split(l:raw_path, '\n')[-1]
else
return l:raw_path
endif
endfunction
Когда я начинаю, все автоматически-форматы, как и ожидалось, с двумя пробелами и без вкладок для каждого уровня отступа.Но через некоторое время это меняется, и он начинает вставлять вкладки.
Любая идея, почему?
Возможно, мне интересно, если один из моих плагинов записывает поверх глобального или глобального выходапеременная, используемая другим для форматирования.Это объясняет, почему проблема появляется только после того, как я некоторое время работал в Neovim.Что-то похожее на это: https://github.com/mxw/vim-jsx/pull/177#issuecomment-443910457. Это также объясняет, почему все раньше работало, а сейчас нет - то есть это может быть проблема, возникающая при обновлении плагина.