[英]Redefining ENTER key in Emacs
我不知道elisp,但我正在尝试做类似以下的事情:
(add-hook
'scala-mode-hook
(lambda ()
(define-key scala-mode-map (kbd "RET") (lambda ()
(scala-newline)
(scala-indent-line)))))
目标是每次按ENTER键时调用这两个函数。 我该怎么做呢?
我在很多模式中基本上都是这样做的,所以我把它们压在一起:
(mapcar (lambda (hooksym)
(add-hook hooksym
(lambda ()
(local-set-key (kbd "C-m") 'newline-and-indent)
)))
'(
clojure-mode-hook
emacs-lisp-mode-hook
erlang-mode-hook
java-mode-hook
js-mode-hook
lisp-interaction-mode-hook
lisp-mode-hook
makefile-mode-hook
nxml-mode-hook
python-mode-hook
ruby-mode-hook
scheme-mode-hook
sh-mode-hook
))
只是在某处粘贴scala-mode-hook
,它也适合你:)
您需要在define-key
的lambda
之后使用(interactive)
表单。
编辑:
要清楚,内部形式应如下所示:
(lambda ()
(interactive)
(scala-newline)
(scala-indent-line))
例如,在挂钩中,您可以使用local-set-key
(add-hook 'scala-mode-hook
(lambda ()
(local-set-key [return]
(lambda ()
(scala-newline)
(scala-indent-line)))))
虽然,也许更容易使用像标准换行和缩进的东西?
(add-hook 'scala-mode-hook
(lambda ()
(local-set-key [return] 'newline-and-indent)))
只需输入Cj,它就会调用newline-and-indent
命令并完全按照你的要求执行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.