Neomake运行后,从文件更新缓冲区

时间:2017-12-11 05:37:09

标签: neovim neomake

我有一些Neomake定义对我来说很有效,但有一件事我可以很清楚地了解standard --fix的自动lint修复。这就是我所拥有的:

let g:neomake_javascript_standardfix_maker = {
    \ 'exe': 'standard',
    \ 'args': '--fix',
    \ 'errorformat': '%-G%.%#'
    \ }
let g:neomake_javascript_enabled_makers = ['standardfix', 'jest', 'standard']
call neomake#configure#automake('w')
set autoread
au FocusGained *.js :checktime

不幸的是,standard --fix运行后缓冲区没有更新(尽管我已经确认它确实用固定语法编写了正确的文件)。

我认为我的理想行为是:linter修复它可以修复的内容,并且位置列表会像现在一样弹出,但只有--fix不会自动处理的问题,例如未使用的变量

1 个答案:

答案 0 :(得分:0)

我将使用我的解决方案解决方案(使用ALE)发布答案,以防其他人帮助,但会接受更直接解决问题的任何其他答案。

我的主要问题是我不单独使用Neomake进行linting:以JavaScript为例,它在保存时被用作测试运行器,我也可以看到从它启动staging构建任务(React Native测试版本) , 例如)。我想我有ALE和Neomake合作,至少要继续:

" Suppress ALE warning about conflicts with Neomake
let g:ale_emit_conflict_warnings = 0

" JavaScript make/test
highlight NeomakeErrorMsg ctermfg=1 ctermbg=18
highlight NeomakeWarningMsg ctermfg=16 ctermbg=18
let g:neomake_error_sign = {
    \ 'text': '●',
    \ 'texthl': 'NeomakeErrorMsg'
    \ }
let g:neomake_warning_sign = {
    \ 'text': '●',
    \ 'texthl': 'NeomakeWarningMsg'
    \ }
let g:neomake_open_list = 2

" This reads config from a file specifying a custom Jest
" reporter (see below) making it easier to parse output with
" a Vim errorformat 
let g:neomake_javascript_jest_maker = {
    \ 'exe': './node_modules/jest-cli/bin/jest.js',
    \ 'args': [ '-c=./vim-jest.json', '--no-watchman' ],
    \ 'errorformat':
        \ '%f:%l:%c:%t:%m,' .
        \ '%-G%.%#'
    \ }

" By setting this explicitly, we overwrite the default
" (so Neomake shouldn't attempt to launch standard/eslint)
let g:neomake_javascript_enabled_makers = ['jest']

call neomake#configure#automake('w')

" linting
let g:ale_sign_error = '▶▶'
let g:ale_sign_warning = '▶▶'
highlight ALEErrorSign ctermfg=1 ctermbg=18
highlight ALEWarningSign ctermfg=16 ctermbg=18
let g:ale_linters = {
    \ 'javascript': ['standard']
    \ }
let g:ale_fixers = {
    \ 'javascript': ['standard']
    \ }
let g:ale_fix_on_save = 1

我的vim-jest.json包含每个项目我需要的任何Jest配置,至少包含:

{
  "reporters": [ "jest-simple-reporter" ]
}

jest-simple-reporter是一位非常粗略的记者,我将Jest的相当笨拙的输出提炼到每个灯具一行。它确实需要安装在当前项目的devDependencies中,因为Vim的单独配置,它不需要在test脚本或项目Jest配置中使用。

有趣的是,当我关闭ale_fix_on_save时,Neomake的警告/错误迹象似乎优先于排水沟。只有在我通过测试后才会出现linter的标志。工作得非常好,保存时修复错误,指示无法修复错误,与测试失败标志共存。