重新定义C-x C-e以评估自定义语言表达

时间:2014-06-24 22:04:02

标签: emacs elisp

我已经为我的语言定义了一种主要模式。 我试图重新定义C-x C-e,这样当我进入主要模式时,它会使用" my"来评估表达式。定制翻译。

假设我的解释器只是一个可以像这样调用的命令行程序:

$my-interpreter <some expression>

我想,我需要做的就是进行系统调用,在点&#34;之前传递表达式&#34;作为参数并打印echo区域中的返回值。 这有多难,对吧?

问题:我不知道从哪里开始! 有任何提示吗?

感谢。

1 个答案:

答案 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;请参阅EmacsWikithis post from Mastering Emacs以获得灵感。