插入分号或大括号后自动缩进

时间:2014-05-14 07:22:02

标签: emacs

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)))

退货按预期工作。但是,大括号和分号只返回而不输入;{

这可能吗?

非常感谢任何建议,

1 个答案:

答案 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