幸运的是,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