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

ant*_*009 5 emacs

GNU Emacs 24.3.1
Run Code Online (Sandbox Code Playgroud)

你好,

我正在使用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)))
Run Code Online (Sandbox Code Playgroud)

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

这可能吗?

非常感谢任何建议,

its*_*eyd 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)
Run Code Online (Sandbox Code Playgroud)

这种方式的工作方式是每次在java-mode缓冲区中键入一个字符时,Emacs都会

  • 检查是否该字符是{或;,如果是那样的话
  • 跑newline-and-indent.

  • 我从来不知道后自我插入钩子.我相信将来会有用! (2认同)