diff --git a/Emacs.md b/Emacs.md index 981469a..ba841d9 100644 --- a/Emacs.md +++ b/Emacs.md @@ -129,7 +129,7 @@ Use [lsp-imenu.el](https://github.com/emacs-lsp/lsp-mode/blob/master/lsp-imenu.e For a symbol named `Name::FooBar`, all of `FooBar`, `foo bar`, `nafoba` find them, but with different priorities. -### ccls cross-reference extension +### Cross reference extensions Aside from definitions/references/workspace symbol, ccls provides some LSP extensions that find base/derived classes/methods, vars of a type, callers of a function. You may call: ```elisp @@ -168,11 +168,17 @@ Recommended helpers: (lsp-ui-peek-find-custom 'base "$ccls/inheritance" `(:levels ,levels))) (defun ccls/derived (levels) (lsp-ui-peek-find-custom 'derived "$ccls/inheritance" `(:levels ,levels :derived t))) -(defun ccls/member () +(defun ccls/member (kind) (interactive) - (lsp-ui-peek-find-custom 'member "$ccls/member")) + (lsp-ui-peek-find-custom 'member "$ccls/member" `(:kind ,kind))) -;; ccls/vars ccls/base ccls/derived have a parameter while others are interactive. +;; ccls/vars ccls/base ccls/derived ccls/members have a parameter while others are interactive. +;; (ccls/base 1) +;; (ccls/derived 1) +;; (ccls/member 2) => 2 (Type) => nested classes / types in a namespace +;; (ccls/member 3) => 3 (Func) => member functions / functions in a namespace +;; (ccls/member 0) => member variables / variables in a namespace +;; (ccls/vars 3) => field or local variable ``` Hierarchies provide a flattened xref interface: diff --git a/LanguageClient-neovim.md b/LanguageClient-neovim.md index d745b2d..2a5706a 100644 --- a/LanguageClient-neovim.md +++ b/LanguageClient-neovim.md @@ -70,7 +70,7 @@ nn xl :call LanguageClient#findLocations({'method':'$ccls/navigate','di ![](https://ptpb.pw/89Y2.gif) -### Custom cross references +### Cross reference extensions ```vim " bases @@ -88,6 +88,11 @@ nn xc :call LanguageClient#findLocations({'method':'$ccls/call'}) nn xC :call LanguageClient#findLocations({'method':'$ccls/call','callee':v:true}) " $ccls/member +" nested classes / types in a namespace +nn xs :call LanguageClient#findLocations({'method':'$ccls/member','kind':2}) +" member functions / functions in a namespace +nn xf :call LanguageClient#findLocations({'method':'$ccls/member','kind':3}) +" member variables / variables in a namespace nn xm :call LanguageClient#findLocations({'method':'$ccls/member'}) nn xx x