Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
238 lines
7.0 KiB
VimL
238 lines
7.0 KiB
VimL
let s:save_cpo = &cpo
|
|
set cpo&vim
|
|
|
|
function! grammarous#info_win#action_return()
|
|
call grammarous#move_to_checked_buf(b:grammarous_preview_error.fromy+1, b:grammarous_preview_error.fromx+1)
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_fixit()
|
|
call grammarous#fixit(b:grammarous_preview_error)
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_remove_error()
|
|
let e = b:grammarous_preview_error
|
|
if !grammarous#move_to_checked_buf(
|
|
\ b:grammarous_preview_error.fromy+1,
|
|
\ b:grammarous_preview_error.fromx+1 )
|
|
return
|
|
endif
|
|
|
|
call grammarous#remove_error(e, b:grammarous_result)
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_disable_rule()
|
|
let e = b:grammarous_preview_error
|
|
if !grammarous#move_to_checked_buf(
|
|
\ b:grammarous_preview_error.fromy+1,
|
|
\ b:grammarous_preview_error.fromx+1 )
|
|
return
|
|
endif
|
|
|
|
call grammarous#disable_rule(e.ruleId, b:grammarous_result)
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_next_error()
|
|
if !grammarous#move_to_checked_buf(
|
|
\ b:grammarous_preview_error.fromy+1,
|
|
\ b:grammarous_preview_error.fromx+1 )
|
|
return
|
|
endif
|
|
|
|
if !grammarous#move_to_next_error(getpos('.')[1 : 2], b:grammarous_result)
|
|
wincmd p
|
|
endif
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_previous_error()
|
|
if !grammarous#move_to_checked_buf(
|
|
\ b:grammarous_preview_error.fromy+1,
|
|
\ b:grammarous_preview_error.fromx+1 )
|
|
return
|
|
endif
|
|
|
|
if !grammarous#move_to_previous_error(getpos('.')[1 : 2], b:grammarous_result)
|
|
wincmd p
|
|
endif
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_help()
|
|
echo join([
|
|
\ '| Mappings | Description |',
|
|
\ '| -------- |:---------------------------------------------- |',
|
|
\ '| q | Quit the info window |',
|
|
\ '| <CR> | Move to the location of the error |',
|
|
\ '| f | Fix the error automatically |',
|
|
\ '| r | Remove the error without fix |',
|
|
\ '| R | Disable the grammar rule in the checked buffer |',
|
|
\ '| n | Move to the next error |',
|
|
\ '| p | Move to the previous error |',
|
|
\ ], "\n")
|
|
endfunction
|
|
|
|
function! s:get_info_buffer(e)
|
|
let lines =
|
|
\ [
|
|
\ 'Error: ' . a:e.category,
|
|
\ ' ' . a:e.msg,
|
|
\ '',
|
|
\ ]
|
|
if a:e.replacements !=# ''
|
|
let lines +=
|
|
\ [
|
|
\ 'Corrections:',
|
|
\ ' ' . join(split(a:e.replacements, '#', 1), '; '),
|
|
\ '',
|
|
\ ]
|
|
endif
|
|
let lines +=
|
|
\ [
|
|
\ 'Context:',
|
|
\ ' ' . a:e.context,
|
|
\ '',
|
|
\ "Press '?' in this window to show help",
|
|
\ ]
|
|
return lines
|
|
endfunction
|
|
|
|
function! grammarous#info_win#action_quit()
|
|
let s:do_not_preview = 1
|
|
let preview_bufnr = bufnr('%')
|
|
|
|
quit!
|
|
|
|
" Consider the case where :quit! does not navigate to the buffer
|
|
" where :GrammarousCheck checked.
|
|
for bufnr in tabpagebuflist()
|
|
let b = getbufvar(bufnr, 'grammarous_preview_bufnr', -1)
|
|
if b != preview_bufnr
|
|
continue
|
|
endif
|
|
|
|
let winnr = bufwinnr(bufnr)
|
|
if winnr == -1
|
|
continue
|
|
endif
|
|
|
|
execute winnr . 'wincmd w'
|
|
unlet b:grammarous_preview_bufnr
|
|
return
|
|
endfor
|
|
" Reach here when the original buffer was already closed
|
|
endfunction
|
|
|
|
function! grammarous#info_win#update(e)
|
|
let b:grammarous_preview_error = a:e
|
|
silent normal! gg"_dG
|
|
silent %delete _
|
|
call setline(1, s:get_info_buffer(a:e))
|
|
execute 1
|
|
setlocal modified
|
|
|
|
return bufnr('%')
|
|
endfunction
|
|
|
|
function! grammarous#info_win#open(e, bufnr)
|
|
execute g:grammarous#info_win_direction g:grammarous#info_window_height . 'new' '[Grammarous]'
|
|
" why need this, the statusline is not update when open info win first
|
|
" time
|
|
doautocmd WinEnter
|
|
let b:grammarous_preview_original_bufnr = a:bufnr
|
|
let b:grammarous_preview_error = a:e
|
|
call setline(1, s:get_info_buffer(a:e))
|
|
execute 1
|
|
syntax match GrammarousInfoSection "\%(Context\|Correction\):"
|
|
syntax match GrammarousInfoError "Error:.*$"
|
|
syntax match GrammarousInfoHelp "^Press '?' in this window to show help$"
|
|
execute 'syntax match GrammarousError "' . escape(grammarous#generate_highlight_pattern(a:e), '"') . '"'
|
|
setlocal nonumber
|
|
setlocal bufhidden=hide
|
|
setlocal buftype=nofile
|
|
setlocal readonly
|
|
setl winfixwidth
|
|
setl winfixheight
|
|
setlocal nolist
|
|
setlocal nobuflisted
|
|
setlocal noswapfile
|
|
setlocal nospell
|
|
setlocal nomodeline
|
|
setlocal nofoldenable
|
|
setlocal noreadonly
|
|
setlocal foldcolumn=0
|
|
setlocal nomodified
|
|
nnoremap <silent><buffer>q :<C-u>call grammarous#info_win#action_quit()<CR>
|
|
nnoremap <silent><buffer><CR> :<C-u>call grammarous#info_win#action_return()<CR>
|
|
nnoremap <buffer>f :<C-u>call grammarous#info_win#action_fixit()<CR>
|
|
nnoremap <silent><buffer>r :<C-u>call grammarous#info_win#action_remove_error()<CR>
|
|
nnoremap <silent><buffer>R :<C-u>call grammarous#info_win#action_disable_rule()<CR>
|
|
nnoremap <silent><buffer>n :<C-u>call grammarous#info_win#action_next_error()<CR>
|
|
nnoremap <silent><buffer>p :<C-u>call grammarous#info_win#action_previous_error()<CR>
|
|
nnoremap <silent><buffer>? :<C-u>call grammarous#info_win#action_help()<CR>
|
|
return bufnr('%')
|
|
endfunction
|
|
|
|
function! s:lookup_preview_bufnr()
|
|
for b in tabpagebuflist()
|
|
let the_buf = getbufvar(b, 'grammarous_preview_bufnr', -1)
|
|
if the_buf != -1
|
|
return the_buf
|
|
endif
|
|
endfor
|
|
return -1
|
|
endfunction
|
|
|
|
function! grammarous#info_win#close()
|
|
let cur_win = winnr()
|
|
if exists('b:grammarous_preview_bufnr')
|
|
let prev_win = bufwinnr(b:grammarous_preview_bufnr)
|
|
else
|
|
let the_buf = s:lookup_preview_bufnr()
|
|
if the_buf == -1
|
|
return 0
|
|
endif
|
|
let prev_win = bufwinnr(the_buf)
|
|
endif
|
|
|
|
if prev_win == -1
|
|
return 0
|
|
end
|
|
|
|
execute prev_win . 'wincmd w'
|
|
wincmd c
|
|
execute cur_win . 'wincmd w'
|
|
|
|
return 1
|
|
endfunction
|
|
|
|
function! s:do_auto_preview()
|
|
let mode = mode()
|
|
if mode ==? 'v' || mode ==# "\<C-v>"
|
|
return
|
|
endif
|
|
|
|
if exists('s:do_not_preview')
|
|
unlet s:do_not_preview
|
|
return
|
|
endif
|
|
|
|
if !exists('b:grammarous_result') || empty(b:grammarous_result)
|
|
autocmd! plugin-grammarous-auto-preview
|
|
return
|
|
endif
|
|
|
|
call grammarous#create_update_info_window_of(b:grammarous_result)
|
|
endfunction
|
|
|
|
function! grammarous#info_win#start_auto_preview()
|
|
augroup plugin-grammarous-auto-preview
|
|
autocmd!
|
|
autocmd CursorMoved <buffer> call <SID>do_auto_preview()
|
|
augroup END
|
|
endfunction
|
|
|
|
function! grammarous#info_win#stop_auto_preview()
|
|
silent! autocmd! plugin-grammarous-auto-preview
|
|
endfunction
|
|
|
|
let &cpo = s:save_cpo
|
|
unlet s:save_cpo
|