GNU Emacs 24.3.1
您好,
我正在使用emacs在Java中进行一些编码。为了使我的编码更容易,我想在每次插入分号或大括号时自动缩进{
;; Auto indent for java mode
(add-hook 'java-mode-hook '(lambda ()
(local-set-key (kbd "RET") 'newline-and-indent)))
(add-hook 'java-mode-hook '(lambda ()
(local-set-key (kbd "{") 'newline-and-indent)))
(add-hook 'java-mode-hook '(lambda ()
(local-set-key (kbd ";") 'newline-and-indent)))
退货按预期工作。但是,大括号和分号只返回而不输入;
或{
。
这可能吗?
非常感谢任何建议,
答案 0 :(得分:8)
这是可能的。这是一种方法(用此替换对add-hook
的第二次和第三次调用):
(defun java-autoindent ()
(when (and (eq major-mode 'java-mode) (looking-back "[{;]"))
(newline-and-indent)))
(add-hook 'post-self-insert-hook 'java-autoindent)
这种方式的工作方式是每次在java-mode
缓冲区中键入字符时,Emacs都将
{
还是;
,如果是这样的话newline-and-indent
。