如何在Emacs中将功能重新映射到另一个?

在咖啡模式中RET必须使用coffee-newline-and-indent才能正常工作.

我也使用邪恶模式来进行Vim仿真. evil-mode使用标准换行符和缩进符,因此对于某些vim命令(如o或O),缩进不正确.

将咖啡换行和缩进的换行和缩进重新绑定的最佳方法是什么?

我仍然是ELisp的新手,并试过下面的一行,但它不起作用.

(add-hook 'coffee-mode-hook
          (lambda () 
            (setq newline-and-indent '(funcall coffee-newline-and-indent))))

最佳答案 这是我的尝试.它应该工作,但我不喜欢它.

(add-hook
 'coffee-mode-hook 
 (lambda ()
   (defalias 
       'newline-and-indent 
       (lambda()
         (interactive)
         (if (eq major-mode 'coffee-mode)
             (coffee-newline-and-indent)
           (delete-horizontal-space t)
           (newline)
           (indent-according-to-mode))))))

我希望我能用更优雅的东西来复制源码
newline-and-indent,但make-variable-buffer-local对于这种情况不起作用,
我也无法获得符号函数的深层复制.
我很高兴看到更好的方法.

点赞