我在 Emacs 24 中使用 nrepl 作为 Clojure IDE。当我想在 Clojure 项目中编写一些代码时(在启动 Emacs 之后),我必须重复以下命令:
M-x cd
docs/clojurefiles/conways-game-of-life
M-x nrepl-jack-in
C-x 4 f src/conways_game_of_life/core.clj
我想将以上所有操作保存为命令并在“Mx”界面中调用它。按照这个说明,我记录了我的操作并将其保存为 ~/.emacs 文件中的“last-kbd-macro”:
F3
M-x cd
docs/clojurefiles/conways-game-of-life
M-x nrepl-jack-in
C-x 4 f src/conways_game_of_life/core.clj
F4
M-x name-last-kbd-macro<RET> start-conway-project
M-x insert-kbd-macro<RET> start-conway-project
现在将以下变量添加到我的 ~/.emacs 文件中:
(setq last-kbd-macro
[?\M-x ?c ?d return ?d ?o ?c ?s ?/ ?c ?l ?o ?j ?u ?r ?e ?f ?i ?l ?e ?s ?/ ?c ?o ?n ?w ?a ?y ?s ?- ?g ?a ?m ?e ?- ?o ?f ?- ?l ?i ?f ?e return ?\M-x ?n ?r ?e ?p ?l ?- ?j ?a ?c ?k ?- ?i ?n return ?\C-x ?4 ?f ?s ?r ?c ?/ ?c ?o ?n ?w ?a ?y ?s ?_ ?g ?a ?m ?e ?_ ?o ?f ?_ ?l ?i ?f ?e ?/ ?c ?o ?r ?e ?. ?c ?l ?j return])
并且在重启 Emacs 之后,我可以使用 F4 来调用这个宏。但是,我想要的是定义我自己的命令并在“Mx”中调用它。所以我将上面的定义修改为:
(setq start-conway-project
[?\M-x ?c ?d return ?d ?o ?c ?s ?/ ?c ?l ?o ?j ?u ?r ?e ?f ?i ?l ?e ?s ?/ ?c ?o ?n ?w ?a ?y ?s ?- ?g ?a ?m ?e ?- ?o ?f ?- ?l ?i ?f ?e return ?\M-x ?n ?r ?e ?p ?l ?- ?j ?a ?c ?k ?- ?i ?n return ?\C-x ?4 ?f ?s ?r ?c ?/ ?c ?o ?n ?w ?a ?y ?s ?_ ?g ?a ?m ?e ?_ ?o ?f ?_ ?l ?i ?f ?e ?/ ?c ?o ?r ?e ?. ?c ?l ?j return])
但是当我使用“Mx”并输入“start-conway-project”时,有一个“[no match]”标志,它不起作用。
将某些操作定义为命令(宏或其他内容)并使用“Mx”调用它的“emacs”方式是什么?谢谢!