我已经为我的语言定义了一种主要模式。 我试图重新定义C-x C-e,这样当我进入主要模式时,它会使用" my"来评估表达式。定制翻译。
假设我的解释器只是一个可以像这样调用的命令行程序:
$my-interpreter <some expression>
我想,我需要做的就是进行系统调用,在点&#34;之前传递表达式&#34;作为参数并打印echo区域中的返回值。 这有多难,对吧?
问题:我不知道从哪里开始! 有任何提示吗?
感谢。
答案 0 :(得分:2)
您可以查看shell-command
及其亲属以及thing-at-point
。这是一个非常简单的例子,它使用&#34;解释器&#34; (只是shell echo
命令)在点上回显单词:
(defun my-interpreter ()
(interactive)
(let ((arg (thing-at-point 'word)))
(when arg
(shell-command (concat "echo " arg)))))
(编辑以回应评论。)
如果您已为主要模式定义了键盘映射,则可以通过调用define-key
在主要模式下绑定C-x C-e
。否则,您可以将其与(local-set-key (kbd "C-x C-e") 'my-interpreter)
本地绑定。
我想到你可能有兴趣构建像REPL这样的交互式功能。为此,您可以考虑comint-mode
;请参阅EmacsWiki和this post from Mastering Emacs以获得灵感。