:setlocal nomodifiable
enddef
+# Create a new window containing the buffer 'bname' or if the window is
+# already present then jump to it.
+def OpenScratchWindow(bname: string)
+ var wid = bufwinid(bname)
+ if wid != -1
+ wid->win_gotoid()
+ :setlocal modifiable
+ :silent! :%d _
+ else
+ exe $':new {bname}'
+ :setlocal buftype=nofile
+ :setlocal bufhidden=wipe
+ :setlocal noswapfile
+ :setlocal nonumber nornu
+ :setlocal fdc=0 signcolumn=no
+ endif
+enddef
+
# Show the status of the LSP server for the current buffer
export def ShowServer(arg: string)
var lspserver: dict<any> = buf.CurbufGetServerChecked()
return
endif
+ var windowName: string = ''
+ var lines: list<string> = []
if arg == '' || arg ==? 'status'
+ windowName = $'LangServer-Status'
var msg = $"LSP server '{lspserver.name}' is "
if lspserver.running
msg ..= 'running'
else
msg ..= 'not running'
endif
- :echomsg msg
+ lines->add(msg)
elseif arg ==? 'capabilities'
- lspserver.showCapabilities()
+ windowName = $'LangServer-Capabilities'
+ lines->extend(lspserver.getCapabilities())
elseif arg ==? 'initializeRequest'
- lspserver.showInitializeRequest()
+ windowName = $'LangServer-InitializeRequest'
+ lines->extend(lspserver.getInitializeRequest())
elseif arg ==? 'messages'
- lspserver.showMessages()
+ windowName = $'LangServer-Messages'
+ lines->extend(lspserver.getMessages())
else
util.ErrMsg($'Error: Unsupported argument "{arg}"')
+ return
+ endif
+
+ if lines->len() > 1
+ OpenScratchWindow(windowName)
+ setline(1, lines)
+ :setlocal nomodified
+ :setlocal nomodifiable
+ else
+ :echomsg lines[0]
endif
enddef
lspserver.rpc_a('workspace/executeCommand', params, WorkspaceExecuteReply)
enddef
-# Create a new window containing the buffer 'bname' or if the window is
-# already present then jump to it.
-def OpenScratchWindow(bname: string)
- var wid = bufwinid(bname)
- if wid != -1
- wid->win_gotoid()
- :setlocal modifiable
- :silent! :%d _
- else
- exe $':new {bname}'
- :setlocal buftype=nofile
- :setlocal bufhidden=wipe
- :setlocal noswapfile
- :setlocal nonumber nornu
- :setlocal fdc=0 signcolumn=no
- endif
-enddef
-
# Display the LSP server capabilities (received during the initialization
# stage).
-def ShowCapabilities(lspserver: dict<any>)
- OpenScratchWindow($'LangServer-{lspserver.name}-Capabilities')
+def GetCapabilities(lspserver: dict<any>): list<string>
var l = []
var heading = $"'{lspserver.path}' Language Server Capabilities"
var underlines = repeat('=', heading->len())
for k in lspserver.caps->keys()->sort()
l->add($'{k}: {lspserver.caps[k]->string()}')
endfor
- setline(1, l)
- :setlocal nomodified
- :setlocal nomodifiable
+ return l
enddef
# Display the LSP server initialize request and result
-def ShowInitializeRequest(lspserver: dict<any>)
- OpenScratchWindow($'LangServer-{lspserver.name}-Initialize-Request')
+def GetInitializeRequest(lspserver: dict<any>): list<string>
var l = []
var heading = $"'{lspserver.path}' Language Server Initialize Requst"
var underlines = repeat('=', heading->len())
l->add($'{k}: {lspserver.rpcInitializeRequest[k]->string()}')
endfor
endif
- setline(1, l)
- :setlocal nomodified
- :setlocal nomodifiable
+ return l
enddef
# Display the log messages received from the LSP server (window/logMessage)
-def ShowMessages(lspserver: dict<any>)
+def GetMessages(lspserver: dict<any>): list<string>
if lspserver.messages->empty()
- util.WarnMsg($'No messages received from "{lspserver.name}" server')
- return
+ return [$'No messages received from "{lspserver.name}" server']
endif
- OpenScratchWindow($'LangServer-{lspserver.name}-Messages')
- setline(1, lspserver.messages)
- :setlocal nomodified
- :setlocal nomodifiable
+
+ var l = []
+ var heading = $"'{lspserver.path}' Language Server Messages"
+ var underlines = repeat('=', heading->len())
+ l->extend(lspserver.messages)
+ return l
enddef
# Send a 'textDocument/definition' request to the LSP server to get the
foldRange: function(FoldRange, [lspserver]),
executeCommand: function(ExecuteCommand, [lspserver]),
workspaceConfigGet: function(WorkspaceConfigGet, [lspserver]),
- showCapabilities: function(ShowCapabilities, [lspserver]),
- showInitializeRequest: function(ShowInitializeRequest, [lspserver]),
- showMessages: function(ShowMessages, [lspserver])
+ getCapabilities: function(GetCapabilities, [lspserver]),
+ getInitializeRequest: function(GetInitializeRequest, [lspserver]),
+ getMessages: function(GetMessages, [lspserver])
})
return lspserver