【问题标题】:How to make emacs to not format close brackets (keep it's indent)如何使emacs不格式化右括号(保持缩进)
【发布时间】:2012-10-27 03:55:04
【问题描述】:

比如我写的时候

fixlocale() {
    export LANG='en_US.UTF-8';
    export LC_CTYPE='en_US.UTF-8';
}

并添加右括号它没有缩进但我不喜欢它,我想缩进右括号:

fixlocale() {
    export LANG='en_US.UTF-8';
    export LC_CTYPE='en_US.UTF-8';
    }

不仅在 bash 中,我也想在 C、C++ 中的任何地方缩进右括号。如何告诉 emacs 缩进右括号以及代码。

【问题讨论】:

  • (c-set-offset 'substatement-close '+),这对你有用吗?我现在没有机会尝试,我只是把它扔在那里。

标签: emacs formatting elisp code-formatting


【解决方案1】:

在 C 中让这个工作我做了

(c-set-offset 'substatement-open '+)
(c-set-offset 'defun-open '+)

这告诉它缩进语句,例如 if、while、for....,第二个告诉它缩进函数定义(不确定你是想要语句还是函数,所以我都给了)。

【讨论】:

  • @Ash 似乎找不到在 bash 中执行此操作的方法。大括号似乎在 emacs 中没有语法上下文(对于 shell 脚本),并且设置为默认缩进(至少对于函数,对于语句 sh-indent-after-open 似乎适用于其他一些东西)。
【解决方案2】:

在默认开启的 Shell 脚本模式下,最后一个分号的 C-j 将按要求换行和缩进。

如果已经在该行并且缩进错误,则命令 `electric-brace' 可能会执行此操作。它很容易实现:基本上是 (insert "}") 后跟 (indent-relative)

【讨论】:

  • (indent-according-to-mode) 会将右大括号缩进第 0 列。
  • 确实,这是一种特质。它的行为应该与缩进相关。更正了我的答案,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
相关资源
最近更新 更多