Skip to content

Commit 551941b

Browse files
predragnikolicrchl
andauthored
Allow empty string for workspace symbol request (#2071)
Co-authored-by: Rafal Chlodnicki <[email protected]>
1 parent cdbd794 commit 551941b

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

Main.sublime-menu

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
"caption": "LSP: Goto Symbol…",
4545
"command": "lsp_document_symbols"
4646
},
47+
{
48+
"caption": "LSP: Goto Symbol In Project…",
49+
"command": "lsp_workspace_symbols"
50+
},
4751
{
4852
"caption": "LSP: Goto Definition…",
4953
"command": "lsp_symbol_definition"

plugin/core/protocol.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5889,8 +5889,8 @@ def willSaveWaitUntil(cls, params: Mapping[str, Any], view: sublime.View) -> 'Re
58895889
return Request("textDocument/willSaveWaitUntil", params, view)
58905890

58915891
@classmethod
5892-
def documentSymbols(cls, params: Mapping[str, Any], view: sublime.View) -> 'Request':
5893-
return Request("textDocument/documentSymbol", params, view)
5892+
def documentSymbols(cls, params: DocumentSymbolParams, view: sublime.View) -> 'Request':
5893+
return Request("textDocument/documentSymbol", params, view, progress=True)
58945894

58955895
@classmethod
58965896
def documentHighlight(cls, params: Mapping[str, Any], view: sublime.View) -> 'Request':
@@ -5928,6 +5928,10 @@ def inlayHint(cls, params: InlayHintParams, view: sublime.View) -> 'Request':
59285928
def resolveInlayHint(cls, params: InlayHint, view: sublime.View) -> 'Request':
59295929
return Request('inlayHint/resolve', params, view)
59305930

5931+
@classmethod
5932+
def workspaceSymbol(cls, params: WorkspaceSymbolParams) -> 'Request':
5933+
return Request("workspace/symbol", params, None, progress=True)
5934+
59315935
@classmethod
59325936
def shutdown(cls) -> 'Request':
59335937
return Request("shutdown")

plugin/symbols.py

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,8 @@ def run(self, edit: sublime.Edit, event: Optional[Dict[str, Any]] = None) -> Non
100100
self.view.settings().set(SUPPRESS_INPUT_SETTING_KEY, True)
101101
session = self.best_session(self.capability)
102102
if session:
103-
params = {"textDocument": text_document_identifier(self.view)}
104103
session.send_request(
105-
Request("textDocument/documentSymbol", params, self.view, progress=True),
104+
Request.documentSymbols({"textDocument": text_document_identifier(self.view)}, self.view),
106105
lambda response: sublime.set_timeout(lambda: self.handle_response(response)),
107106
lambda error: sublime.set_timeout(lambda: self.handle_response_error(error)))
108107

@@ -221,11 +220,8 @@ class SymbolQueryInput(sublime_plugin.TextInputHandler):
221220
def want_event(self) -> bool:
222221
return False
223222

224-
def validate(self, txt: str) -> bool:
225-
return txt != ""
226-
227223
def placeholder(self) -> str:
228-
return "Symbol"
224+
return "Enter symbol name"
229225

230226

231227
class LspWorkspaceSymbolsCommand(LspTextCommand):
@@ -235,15 +231,14 @@ class LspWorkspaceSymbolsCommand(LspTextCommand):
235231
def input(self, _args: Any) -> sublime_plugin.TextInputHandler:
236232
return SymbolQueryInput()
237233

238-
def run(self, edit: sublime.Edit, symbol_query_input: str) -> None:
239-
if symbol_query_input:
240-
session = self.best_session(self.capability)
241-
if session:
242-
params = {"query": symbol_query_input}
243-
request = Request("workspace/symbol", params, None, progress=True)
244-
self.weaksession = weakref.ref(session)
245-
session.send_request(request, lambda r: self._handle_response(
246-
symbol_query_input, r), self._handle_error)
234+
def run(self, edit: sublime.Edit, symbol_query_input: str, event: Optional[Any] = None) -> None:
235+
session = self.best_session(self.capability)
236+
if session:
237+
self.weaksession = weakref.ref(session)
238+
session.send_request(
239+
Request.workspaceSymbol({"query": symbol_query_input}),
240+
lambda r: self._handle_response(symbol_query_input, r),
241+
self._handle_error)
247242

248243
def _open_file(self, symbols: List[SymbolInformation], index: int) -> None:
249244
if index != -1:
@@ -260,7 +255,7 @@ def _handle_response(self, query: str, response: Union[List[SymbolInformation],
260255
list(map(symbol_information_to_quick_panel_item, matches)),
261256
lambda i: self._open_file(matches, i))
262257
else:
263-
sublime.message_dialog("No matches found for query string: '{}'".format(query))
258+
sublime.message_dialog("No matches found for query: '{}'".format(query))
264259

265260
def _handle_error(self, error: Dict[str, Any]) -> None:
266261
reason = error.get("message", "none provided by server :(")

0 commit comments

Comments
 (0)