问题 如何使switch语句中的case在Emacs中缩进


如何使Emacs缩进这样的案例

switch ($foo) {
    case "foo":
        $foo .= " bar";
        break
    case "bar":
        $foo .= " baz";
        break
    default:
        $foo .= " undefined";
}

代替

switch ($foo) {
case "foo":
    $foo .= " bar";
    break
case "bar":
    $foo .= " baz";
    break
default:
    $foo .= " undefined";
}

8260
2018-01-24 10:50


起源



答案:


你需要在.emacs中添加这样的东西(作为一般设置或你关心的特定编程模式):

;; set this in all c-based programming modes
(add-hook 'c-mode-common-hook
          (lambda ()
             (c-set-offset 'case-label '+)))

要将此添加到另一个模式,请使用上面相同的模式,并在钩子中替换相关的模式名称,例如: <mode-name>-hook


16
2018-01-24 17:48



c-set-offset 一定会 C-c C-o 如果您需要动态调整特定文件的内容。 - pmr
谢谢。我把4作为偏移量,它适用于php模式和C模式。你知道如何为JavaScript设置它吗? - jcubic
@jcubic - 你用的是什么javascript模式? - jtahlborn
默认一个 emacswiki.org/emacs/JavaScriptMode - jcubic
@jcubic - 所以你可以使用 js-mode-hook 根据我上面添加的说明。 - jtahlborn


答案:


你需要在.emacs中添加这样的东西(作为一般设置或你关心的特定编程模式):

;; set this in all c-based programming modes
(add-hook 'c-mode-common-hook
          (lambda ()
             (c-set-offset 'case-label '+)))

要将此添加到另一个模式,请使用上面相同的模式,并在钩子中替换相关的模式名称,例如: <mode-name>-hook


16
2018-01-24 17:48



c-set-offset 一定会 C-c C-o 如果您需要动态调整特定文件的内容。 - pmr
谢谢。我把4作为偏移量,它适用于php模式和C模式。你知道如何为JavaScript设置它吗? - jcubic
@jcubic - 你用的是什么javascript模式? - jtahlborn
默认一个 emacswiki.org/emacs/JavaScriptMode - jcubic
@jcubic - 所以你可以使用 js-mode-hook 根据我上面添加的说明。 - jtahlborn