;; 补全时 tab插入公共前缀
(defun wk/lsp-bridge-tab()
"ss"
(interactive)
(if (lsp-bridge-completion-ui-visible-p)
(acm-insert-common)
(indent-for-tab-command))
)
(define-key global-map (kbd "<tab>") 'wk/lsp-bridge-tab)
在没有激活lsp时我让tab绑定这个(indent-for-tab-command)
,但是明显时不太对的,最起码我eshell里面的tab补全被干掉了,。,
绑定到 lsp-bridge-mode-map 就可以了
(define-key global-map (kbd "<tab>") 'indent-for-tab-command)
(define-key acm-mode-map (kbd "<tab>") 'acm-insert-common)
不需要写函数的
有时候绑定到acm-mode-map 也没用,这种情况下我是直接写个函数去 add-advice ,如果有lsp-bridge 弹窗就调用lsp-bridge的函数,否则就调用原来的函数
原来的函数是啥,我现在就是这个问题,在不同的majormode里绑定的不一样,所以我改了绑定之后不知道怎么调用原来绑定的东西。
不要用key binding,用 advice-add :around 可以拿到原来的函数。
C-h k TAB 可以查看原来的函数
下面是我的其中一处配置, 仅供参考
(defun my/+org/return ()
(when (and lsp-bridge-mode (or (acm-frame-visible-p acm-frame) (acm-frame-visible-p acm-doc-frame)))
(acm-complete)
t))
(advice-add #'+org/return :before-until #'my/+org/return)