每次推入时,让emacs做C-x h C-M- \

时间:2014-07-04 01:14:12

标签: emacs elisp

每次推入时,如何让emacs做C-x h C-M- \?令我很恼火的是,emacs不会自动缩进。

1 个答案:

答案 0 :(得分:1)

如果您确实确定这是您想要的,那么这样的事情应该有效:

(defun my-newline-and-reindent-buffer ()
  (interactive)
  (newline)
  (save-excursion
    (mark-whole-buffer)
    (indent-region (region-beginning) (region-end)))
  (indent-for-tab-command))

(global-set-key (kbd "RET") 'my-newline-and-reindent-buffer)

我仍然认为这太过分了:

  • 您最终会修改您不会故意更改的代码格式,从而导致包含语义和样式更改的提交。
  • 您几乎肯定会在较大的缓冲区上遇到性能问题。
  • 大部分时间(基本上,每次第一次之后)这将产生相同的效果newline-and-indent,但效率要低得多。
  • 某些主要模式可能无法正常使用它。我特别想到了Python代码,其中Emacs并不一定知道代码的缩进级别应该是什么。其他模式有一些片状的缩进支持。