首页 > 解决方案 > Emacs + cider:自动完成 defprotocol 方法。可能与否?

问题描述

是否可以在 Emacs 中自动完成 defprotocol 方法?

一个例子:

(defprotocol Foo
  (bar [this])
  (baz [this])

(deftype Qux [a b c]
  Foo
  (bar [this] a)
  (baz [this] b))

(bar (Qux. 1 2 3))
(baz (Qux. 1 2 3))

我正在寻找这样的东西(在伪代码中):

;; (1)
(`M-Tab` (Qux. 1 2 3)) 
;;
;; or (2):
(-> (Qux. 1 2 3) `M-Tab`)

触发带有bar&baz选项的下拉菜单。作为一种解决方法,我目前正在使用 (2),但它需要至少存在第一个字符(自动完成所有选项不起作用)。

有更好的方法吗?谢谢

标签: emacsclojureautocompletecider

解决方案


对我来说,当存在一个字符时,自动完成也适用于情况 (1)。它似乎并没有具体了解属于该协议的功能,CIDER 只知道范围内的功能。如果没有第一个字符,则完成点似乎不会切换。也许您可以尝试在 clojurians.slack.org 的 #cider 上提问?


推荐阅读