К счастью, 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