]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Reference window is always opened in a vertically split window
authorYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 16 Jan 2022 17:31:06 +0000 (09:31 -0800)
committerYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 16 Jan 2022 17:31:06 +0000 (09:31 -0800)
autoload/handlers.vim
autoload/lspserver.vim

index 7065300b42434ebe11a0f28e97d188f8d1869b5e..45c073823e89d9ae8b4079bac2c450608818b43f 100644 (file)
@@ -105,14 +105,14 @@ enddef
 def s:processDefDeclReply(lspserver: dict<any>, req: dict<any>, reply: dict<any>): void
   if reply.result->empty()
     util.WarnMsg("Error: definition is not found")
-    if !lspserver.peekDefDeclRef
+    if !lspserver.peekSymbol
       # pop the tag stack
       var tagstack: dict<any> = gettagstack()
       if tagstack.length > 0
         settagstack(winnr(), {curidx: tagstack.length}, 't')
       endif
     endif
-    lspserver.peekDefDeclRef = false
+    lspserver.peekSymbol = false
     return
   endif
 
@@ -123,7 +123,7 @@ def s:processDefDeclReply(lspserver: dict<any>, req: dict<any>, reply: dict<any>
     location = reply.result
   endif
   var fname = util.LspUriToFile(location.uri)
-  if lspserver.peekDefDeclRef
+  if lspserver.peekSymbol
     # open the definition/declaration in the preview window and highlight the
     # matching symbol
     exe 'pedit ' .. fname
@@ -171,7 +171,7 @@ def s:processDefDeclReply(lspserver: dict<any>, req: dict<any>, reply: dict<any>
                        location.range.start.character + 1)
   endif
   redraw!
-  lspserver.peekDefDeclRef = false
+  lspserver.peekSymbol = false
 enddef
 
 # process the 'textDocument/signatureHelp' reply from the LSP server
@@ -422,7 +422,7 @@ enddef
 def s:processReferencesReply(lspserver: dict<any>, req: dict<any>, reply: dict<any>): void
   if reply.result->empty()
     util.WarnMsg('Error: No references found')
-    lspserver.peekDefDeclRef = false
+    lspserver.peekSymbol = false
     return
   endif
 
@@ -447,15 +447,21 @@ def s:processReferencesReply(lspserver: dict<any>, req: dict<any>, reply: dict<a
   endfor
 
   var save_winid = win_getid()
-  if lspserver.peekDefDeclRef
+  if lspserver.peekSymbol
     silent! pedit
     wincmd P
   endif
   setloclist(0, [], ' ', {title: 'Symbol Reference', items: qflist})
-  :belowright vert lopen
-  :30wincmd |
+  var mods: string = ''
+  if lspserver.peekSymbol
+    # When peeking the references, open the location list in a vertically
+    # split window to the right and make the location list window 30% of the
+    # source window width
+    mods = 'belowright vert :' .. (winwidth(0) * 30) / 100
+  endif
+  exe mods .. 'lopen'
   save_winid->win_gotoid()
-  lspserver.peekDefDeclRef = false
+  lspserver.peekSymbol = false
 enddef
 
 # process the 'textDocument/documentHighlight' reply from the LSP server
index 250cd13541abcfb1cba080904faff8500dee435f..59cb5bcc9fac391a2b5b75cd2a06562d1245f491 100644 (file)
@@ -424,7 +424,7 @@ def s:gotoDefinition(lspserver: dict<any>, peek: bool): void
   if !peek
     util.PushCursorToTagStack()
   endif
-  lspserver.peekDefDeclRef = peek
+  lspserver.peekSymbol = peek
   var req = lspserver.createRequest('textDocument/definition')
   # interface DefinitionParams
   #   interface TextDocumentPositionParams
@@ -445,7 +445,7 @@ def s:gotoDeclaration(lspserver: dict<any>, peek: bool): void
   if !peek
     util.PushCursorToTagStack()
   endif
-  lspserver.peekDefDeclRef = peek
+  lspserver.peekSymbol = peek
   var req = lspserver.createRequest('textDocument/declaration')
 
   # interface DeclarationParams
@@ -468,7 +468,7 @@ def s:gotoTypeDef(lspserver: dict<any>, peek: bool): void
   if !peek
     util.PushCursorToTagStack()
   endif
-  lspserver.peekDefDeclRef = peek
+  lspserver.peekSymbol = peek
   var req = lspserver.createRequest('textDocument/typeDefinition')
 
   # interface TypeDefinitionParams
@@ -491,7 +491,7 @@ def s:gotoImplementation(lspserver: dict<any>, peek: bool): void
   if !peek
     util.PushCursorToTagStack()
   endif
-  lspserver.peekDefDeclRef = peek
+  lspserver.peekSymbol = peek
   var req = lspserver.createRequest('textDocument/implementation')
 
   # interface ImplementationParams
@@ -568,7 +568,7 @@ def s:showReferences(lspserver: dict<any>, peek: bool): void
   req.params->extend(s:getLspTextDocPosition())
   req.params->extend({context: {includeDeclaration: true}})
 
-  lspserver.peekDefDeclRef = peek
+  lspserver.peekSymbol = peek
   lspserver.sendMessage(req)
 enddef
 
@@ -853,7 +853,7 @@ export def NewLspServer(path: string, args: list<string>): dict<any>
     diagsMap: {},
     workspaceSymbolPopup: 0,
     workspaceSymbolQuery: '',
-    peekDefDeclRef: false
+    peekSymbol: false
   }
   # Add the LSP server functions
   lspserver->extend({