handle multibyte string when linting text with redpen (#1416)
* handle multibyte string when linting text with redpen * fix error when no string is provided, fix test's expect value * remove ambiguious `==` operator
This commit is contained in:
parent
434f22e44a
commit
68b9399d4c
@ -25,6 +25,30 @@ function! ale#handlers#redpen#HandleRedpenOutput(buffer, lines) abort
|
|||||||
let l:item.lnum = l:err.lineNum
|
let l:item.lnum = l:err.lineNum
|
||||||
let l:item.col = l:err.sentenceStartColumnNum + 1
|
let l:item.col = l:err.sentenceStartColumnNum + 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Adjust column number for multibyte string
|
||||||
|
let l:line = getline(l:item.lnum)
|
||||||
|
if l:line is# ''
|
||||||
|
let l:line = l:err.sentence
|
||||||
|
endif
|
||||||
|
let l:line = split(l:line, '\zs')
|
||||||
|
|
||||||
|
if l:item.col >= 2
|
||||||
|
let l:col = 0
|
||||||
|
for l:strlen in map(l:line[0:(l:item.col - 2)], 'strlen(v:val)')
|
||||||
|
let l:col = l:col + l:strlen
|
||||||
|
endfor
|
||||||
|
let l:item.col = l:col + 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(l:item, 'end_col')
|
||||||
|
let l:col = 0
|
||||||
|
for l:strlen in map(l:line[0:(l:item.end_col - 1)], 'strlen(v:val)')
|
||||||
|
let l:col = l:col + l:strlen
|
||||||
|
endfor
|
||||||
|
let l:item.end_col = l:col
|
||||||
|
endif
|
||||||
|
|
||||||
call add(l:output, l:item)
|
call add(l:output, l:item)
|
||||||
endfor
|
endfor
|
||||||
return l:output
|
return l:output
|
||||||
|
@ -23,6 +23,15 @@ Execute(redpen handler should handle errors output):
|
|||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ 'code': 'Spelling',
|
\ 'code': 'Spelling',
|
||||||
\ },
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'col': 35,
|
||||||
|
\ 'end_lnum': 1,
|
||||||
|
\ 'end_col': 55,
|
||||||
|
\ 'text': 'Found possibly misspelled word "コードチェック".',
|
||||||
|
\ 'type': 'W',
|
||||||
|
\ 'code': 'Spelling',
|
||||||
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale#handlers#redpen#HandleRedpenOutput(bufnr(''), [
|
\ ale#handlers#redpen#HandleRedpenOutput(bufnr(''), [
|
||||||
\ '[',
|
\ '[',
|
||||||
@ -50,6 +59,21 @@ Execute(redpen handler should handle errors output):
|
|||||||
\ ' "lineNum": 1,',
|
\ ' "lineNum": 1,',
|
||||||
\ ' "sentenceStartColumnNum": 0,',
|
\ ' "sentenceStartColumnNum": 0,',
|
||||||
\ ' "message": "Found possibly misspelled word \"NeoVim\"."',
|
\ ' "message": "Found possibly misspelled word \"NeoVim\"."',
|
||||||
|
\ ' },',
|
||||||
|
\ ' {',
|
||||||
|
\ ' "sentence": "ALEはNeoVimとVim8で非同期のコードチェックを実現するプラグインです。",',
|
||||||
|
\ ' "endPosition": {',
|
||||||
|
\ ' "offset": 27,',
|
||||||
|
\ ' "lineNum": 1',
|
||||||
|
\ ' },',
|
||||||
|
\ ' "validator": "Spelling",',
|
||||||
|
\ ' "lineNum": 1,',
|
||||||
|
\ ' "sentenceStartColumnNum": 0,',
|
||||||
|
\ ' "message": "Found possibly misspelled word \"コードチェック\".",',
|
||||||
|
\ ' "startPosition": {',
|
||||||
|
\ ' "offset": 20,',
|
||||||
|
\ ' "lineNum": 1',
|
||||||
|
\ ' }',
|
||||||
\ ' }',
|
\ ' }',
|
||||||
\ ' ]',
|
\ ' ]',
|
||||||
\ ' }',
|
\ ' }',
|
||||||
|
Loading…
Reference in New Issue
Block a user