1

我有一些适合我的 Neomake 定义,但我无法完全理解的一件事是使用standard --fix. 这是我所拥有的:

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不能自动处理的问题,比如未使用的变量。

4

1 回答 1

0

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

我的主要问题是我不只将 Neomake 用于 linting:以 JavaScript 为例,它在保存时被用作测试运行程序,我也可以看到从中启动暂存构建任务(例如 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 的标志才会出现。工作得很好,保存时修复了错误,并指出了那些无法修复的错误,与测试失败标志很好地共存。

于 2017-12-11T23:05:15.947 回答