我知道 TAB 想在 Emacs 中变得聪明。然而,它对我的口味还不够聪明。而且因为它是“智能”的,所以扩展起来似乎很复杂。
我希望 Clojure 模式下的 TAB 完全按照它的行为行事,除非我在位于第defn, defmacro
0 列的 a 等的第一个括号中。
当它在那里时,我希望它改为从hs-minor-mode调用hs-toggle-hiding。
但是,我越来越疯狂地试图让它发挥作用。
我首先尝试修改分配给 TAB 的快捷方式,以便仅在 Clojure 模式下时,它会首先调用我的函数,然后调用indent-for-tab-command但更改 TAB 快捷方式似乎非常复杂。并且由于 Emacs 已经计划了模式可以在 lisp-indent-function 中注册其 TAB 函数的情况,我希望修改clojure-indent-function,它说:
(defun clojure-indent-function (indent-point state)
"This function is the normal value of the variable `lisp-indent-function'.
然而,这个函数显然只在光标位于函数内部时才被调用。当光标位于“(defn ...”) 的第一个 '(' 上时不会。
hs-toggle-hiding
在 Clojure 模式下并在括号上指向第 0 列时,如何让 TAB 调用?
我不希望这影响 org-mode 或任何其他模式。只是 Clojure 模式。