感謝 @tigersoldier 的勞動,lsp-mode lsp-ui現在支持hierarchical document symbols了。
- lsp-mode Support hierarchical document symbols by tigersoldier · Pull Request #421 · emacs-lsp/lsp-mode · GitHub 在原來返回的
SymbolInformation[]
外也支持DocumentSymbol[]
- lsp-ui https://github.com/emacs-lsp/lsp-ui/pull/179 我一開始有點苛責因爲覺得文本介面畫樹可以遞迴傳遞狀態不用mutable state,但這個樹形態有點特殊,我的elisp也不好改不出來,就這樣接受吧~
對應https://microsoft.github.io/language-server-protocol/specification#document-symbols-request-leftwards_arrow_with_hook中的result: DocumentSymbol[]
language client需要告知server:
textDocument.documentSymbol.hierarchicalDocumentSymbolSupport: true
tigersoldier的typescript例子:https://user-images.githubusercontent.com/226229/45445833-2ce3dd00-b680-11e8-8bd2-dde03c4f25da.png
我剛剛給ccls加了支持: