在Emacs中php模式下为switch语句缩进2个空格

在Emacs中php模式下为switch语句缩进2个空格,emacs,switch-statement,elisp,Emacs,Switch Statement,Elisp,我为php模式设置了2个空格(使用c-basic-offset),但switch语句保留了4个空格 function foo($items) { foreach($item in $items) { switch($item) { case 1: return 10; case 2: return 20; } } } 如果c-basic-offset为2,如何将swich语句更改为2个空格?

我为php模式设置了2个空格(使用
c-basic-offset
),但switch语句保留了4个空格

function foo($items) {
  foreach($item in $items) {
    switch($item) {
        case 1:
            return 10;
        case 2:
            return 20;
    }
  }
}

如果
c-basic-offset
为2,如何将swich语句更改为2个空格?

您可以自定义
案例标签
偏移:

(add-hook 'php-mode-hook 
  (lambda () (c-set-offset 'case-label 0)))

有关更多信息,请查看
php mode.el中的编码样式定义(查找
c-add-style
调用)。

在@tungd的帮助下,我有了可以工作的代码:

(c-set-offset 'case-label 2)
(c-set-offset 'statement-case-intro 2)

我无法重现这种行为。您使用的是
php模式
还是
php+-mode
php模式编码风格的值是多少?我使用php模式(from)。无论var的值是什么,缩进都是相同的。如果我设置
(c-set-offset'case label 2)
它对case有效,但对内部的块无效。