幸运的是,ALE 使用内置location-list来存储它的 lint 消息,这可以通过 访问,寄存器getloclist({nr})在哪里。{nr}当前寄存器始终为0.
因此,这是一种获取当前行的所有 lint 消息并将它们全部添加到 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().
*编辑:我正在添加一个接受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