我已经使用vim多年了,但是我刚刚开始集成eslint(通过ALE)。我发现有时候我希望能够快速添加一个/* eslint-ignore-next-line */
。例如:
...
❌ if (m = /^-l(\d+)$/.exec(args[i])) t.len = m[1];
...
~/some/dir/file.js [+]
cond-assign: Expected a conditional expression and instead saw an assignment.
ALE在窗口底部为您提供代码非常方便,但是很懒,我想自动添加注释/提示:
/* eslint-ignore-next-line cond-assign */
是否可以通过vim脚本/功能在屏幕底部访问该信息?
答案 0 :(得分:2)
尽管未记录,但ALE将皮棉信息存储在b:ale_highlight_items
变量中。
David784的解决方案对我不起作用,因为我已经使用ALE的g:ale_echo_msg_format
配置选项自定义了位置列表文本。因此,我对其进行了修改,以直接从b:ale_highlight_items
获取信息,而不是将其从位置列表中解析出来。
这里是:
command! ALEIgnoreEslint call AleIgnoreEslint()
function! AleIgnoreEslint()
" https://stackoverflow.com/questions/54961318/vim-ale-shortcut-to-add-eslint-ignore-hint
let l:codes = []
if (!exists('b:ale_highlight_items'))
echo 'cannot ignore eslint rule without b:ale_highlight_items'
return
endif
for l:item in b:ale_highlight_items
if (l:item['lnum']==line('.') && l:item['linter_name']=='eslint')
let l:code = l:item['code']
call add(l:codes, l:code)
endif
endfor
if len(l:codes)
exec 'normal O/* eslint-disable-next-line ' . join(l:codes, ', ') . ' */'
endif
endfunction
答案 1 :(得分:1)
幸运的是,ALE使用内置的location-list
存储其皮棉消息,并且可以通过getloclist({nr})
(其中{nr}
是寄存器)进行访问。当前寄存器始终为0
。
因此,这是一种获取当前行的所有皮棉消息并将其全部添加到eslint提示注释中的方法:
function AleIgnore()
let codes = []
for d in getloclist(0)
if (d.lnum==line('.'))
let code = split(d.text,':')[0]
call add(codes, code)
endif
endfor
if len(codes)
exe 'normal O/* eslint-disable-next-line ' . join(codes, ', ') . ' */'
endif
endfunction
此版本将仅在当前行之前添加eslint-disable-next-line
提示。将其扩展以在文件顶部添加全局eslint-disable
提示也很容易...最困难的部分是弄清楚getloclist()
。
* EDIT:我要添加一个接受new-line
参数的更新版本。如果为0
,它将在文件顶部添加一个全局提示;如果为1
,它将在当前行上方添加-next-line
提示。但是我仍然保留以前的版本,因为这是一个简单的示例,没有所有的三元组和所有内容。
function AleIgnore(nl)
let codes = []
for d in getloclist(0)
if (d.lnum==line('.'))
let code = split(d.text,':')[0]
call add(codes, code)
endif
endfor
if len(codes)
exe 'normal mq' . (a:nl?'':'1G') . 'O'
\ . '/* eslint-disable' . (a:nl?'-next-line ':' ')
\ . join(codes, ', ') . ' */' . "\<esc>`q"
endif
endfunction