如何在.emacs文件中为emacs 24.3.1定义自动缩进和自动配对?

时间:2016-03-05 21:40:31

标签: emacs dot-emacs

仅供参考,我是.emacs文件的新手。

我想将我的.emacs文件设置为自动缩进并自动配对某种方式,以便更快地编写代码。我已经找到了一些关于如何独立完成这些事情的信息,但我不知道如何将它全部放在一起用于我拥有的emacs版本。最后,我想设置这些特定于我编写的语言的定义。为了让我开始,我将以java为例。

显然自动配对“,(,'非常简单。我只想自动插入一个结束”,),并将光标放在中间。

对于{,我希望它自动插入两个换行符并关闭}将光标放在中间。

实施例

while (true) {
  <--- cursor would be here with auto-indent of 2 spaces
}

我也希望这适用于适当缩进的嵌套花括号。

实施例

while(true) {
  if (...) {

  }
}

以下是我目前在.emacs文件中的内容:

(defun java-autoindent ()
  (when (and (eq major-mode 'java-mode) (looking-back "[{;]"))
    (newline-and-indent)))
(add-hook 'post-self-insert-hook 'java-autoindent)

显然这只是插入一行和自动缩进,但我也希望关闭}包含在下面的行中。我也尝试过使用电对,但是没用。

我的愿望清单可能有点不切实际。我甚至不确定这是可能的,但我会对最接近的事情感到满意。 任何有助于我朝着正确方向前进的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

Emacs为您编码的每种语言定义模式。有些模式是从其他模式派生的,并且有一种名为prog-mode的模式,大多数编程模式都是从这种模式派生出来的。

语言的模式是定义缩进之类的东西,因为它们往往是特定于语言的。缩进的规则可能非常复杂,这就是人们经常使用具有与父类型相似的缩进样式的模式并从中派生出新模式的原因。

在emacs elisp手册中查看模式和派生模式。

关于添加匹配/结束分隔符,请看一下电子对模式(我认为它是在emacs 24.4中 - 我运行25并忘记它何时被引入)。

关于您输入某些代码,一些换行符以及将光标定位在特定位置的要求,您可能希望查看其中一个emacs&#39;模板解决方案yasnippet是一个受欢迎的选择,很容易在其中定义新模板。您还可以下载/安装许多现有的打包yasnippet模板。如果你不喜欢yasnippet,谷歌emacs模板,看看有几个框架quitre。