Skip to content

Commit

Permalink
Merge pull request #3182 from bhcleek/rename/redraw
Browse files Browse the repository at this point in the history
lsp: improve rename experience
  • Loading branch information
bhcleek authored Mar 21, 2021
2 parents a4769fd + ce69af4 commit 9943154
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion autoload/go/lsp.vim
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,8 @@ function! s:requestComplete(ok) abort dict
endif

if go#config#EchoCommandInfo()
" redraw to avoid messages piling up
redraw
let prefix = '[' . self.statustype . '] '
if a:ok
call go#util#EchoSuccess(prefix . "SUCCESS")
Expand Down Expand Up @@ -1562,12 +1564,19 @@ function! go#lsp#Rename(newName) abort
let l:resultHandler = go#promise#New(function('s:rename', [l:fname, l:line, l:col, a:newName], l:state), 10000, '')

let l:state.handleResult = l:resultHandler.wrapper
let l:state.error = l:resultHandler.wrapper
let l:state.handleError = function('s:handleRenameError', [], l:state)
call l:lsp.sendMessage(l:msg, l:state)

return l:resultHandler.await()
endfunction

function! s:rename(fname, line, col, newName, msg) abort
function! s:rename(fname, line, col, newName, msg) abort dict
if type(a:msg) is type('')
call self.handleError(a:msg)
return
endif

if a:msg is v:null
call go#util#EchoWarning('cannot rename the identifier at the requested position')
return
Expand All @@ -1582,12 +1591,18 @@ function! s:rename(fname, line, col, newName, msg) abort

let l:state.handleResult = l:resultHandler.wrapper
let l:state.error = l:resultHandler.wrapper
let l:state.handleError = function('s:handleRenameError', [], l:state)
call l:lsp.sendMessage(l:msg, l:state)

return l:resultHandler.await()
endfunction

function! s:handleRename(msg) abort dict
if type(a:msg) is type('')
call self.handleError(a:msg)
return
endif

if a:msg is v:null
return
endif
Expand Down Expand Up @@ -1781,6 +1796,10 @@ function! s:handleCodeActionError(filename, msg) abort dict
" TODO(bc): handle the error?
endfunction

function! s:handleRenameError(msg) abort dict
call go#util#EchoError(a:msg)
endfunction

function! s:textEditLess(left, right) abort
" TextEdits in a TextEdit[] never overlap and Vim's sort() is stable.
if a:left.range.start.line < a:right.range.start.line
Expand Down

0 comments on commit 9943154

Please sign in to comment.