Почему Neovim начинает вставлять вкладки в мои файлы после того, как я их некоторое время редактировал? - PullRequest
0 голосов
/ 10 декабря 2018

Мои локальные и глобальные .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. Это также объясняет, почему все раньше работало, а сейчас нет - то есть это может быть проблема, возникающая при обновлении плагина.

...