首页 文章

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

提问于
浏览
0

仅供参考,我是.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

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

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

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

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

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

相关问题