【问题标题】:Emacs indentation for switch...case statementsswitch...case 语句的 Emacs 缩进
【发布时间】:2011-08-27 06:58:26
【问题描述】:

Emacs 中的缩进总是有效的,但我遇到了一些关于 switch - case 语句的问题。

例如,

switch (x) {
case 'A':
case 'B':
    printf("hello");

printf(...);
printf(...);
break;
}

我希望它以这种方式显示:

switch (x) {
case 'A':
case 'B':
    printf("hello");

    printf(...);
    printf(...);
    break;
}

怎么做?

【问题讨论】:

  • 您应该提及您使用的模式。在c-modec++-modejava-modejavascript-mode 中为我工作。

标签: emacs switch-statement indentation


【解决方案1】:

终于想通了:

将光标放在case 关键字上。然后C-c C-o。然后应该说类似Syntactic symbol to change: case-label。点击RET。然后输入您希望 case 标签缩进的默认空格数。

【讨论】:

  • 但是case标签已经是需要的了——问题出在空行后面的语句上。
  • 哦,对了。哎呀。无论如何,案例标签真的不应该有这样的缩进吗?
  • 看起来像通常的 (GNU) 样式 - 所有标签(包括案例标签)都超出了 1 级。
【解决方案2】:

在缓冲区中:

`M-x c-set-style` RET `k&r` RET

在文件.emacs

(c-set-style "k&r")

【讨论】:

  • 还有M-x apropos c-style-alist 以获取其他选项。或者只是在c-set-style 交互式命令中查看它们的列表。
  • 它没有用。以下是我的配置:
    (defun c-like-style () (c-set-style "K&R") (setq tab-width tabwidth) (setq c-basic-offset tabwidth) (hs-次要模式 1) (local-set-key (kbd "RET") 'reindent-then-newline-and-indent) ; 使用 C-j (local-set-key (kbd "C-c .r") 'ecb-rebuild- methods-buffer) (local-set-key (kbd "C-c C-f") 'eassist-switch-h-cpp) (local-set-key [?\C-)] 'semantic-ia-fast-jump)) ( add-hook 'c-mode-hook 'c-like-style) (add-hook 'c++-mode-hook 'c-like-style) (add-hook 'java-mode-hook 'c-like-style) (add-hook 'jde-mode-hook 'c-like-style)
  • @user915203,该信息应包含在问题中,以及其他任何非默认信息(使用emacs -q 甚至emacs --no-site-init 来确认问题出在您的设置上,而不是与网站的安装)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2013-08-20
  • 2011-08-15
  • 1970-01-01
相关资源
最近更新 更多