如何在Emacs中设置PHP的初始缩进级别?

5

通常我在<?php后只缩进一层,但使用php-mode在Emacs中找不到设置选项。

具体来说,Emacs的行为如下:

<?php
echo "Hello.";

if (something)
    do_something();

这是我的常规编码方式:

<?php
    echo "Hello.";

    if (something)
        do_something();

Emacs版本23(直接从CVS获取),php-mode 1.5.0。


你正在使用哪个版本的emacs和php-mode? - drudru
Emacs 23 CVS(昨晚的最新版本),php-mode 1.5.0。 - Alex Suraci
3个回答

2

我想我找到了一个解决方案:

(c-set-offset 'topmost-intro 4)
(c-set-offset 'cpp-macro -4)

看起来工作正常。topmost-intro设置了所有内容,据我所知cpp-macro仅设置了<?php标记。

感谢Cheeso提供的提示,让我找到了答案。


1

我没有php-mode,但在c-modes中,M-x c-set-offset可以帮助你。它允许你自定义语法元素的偏移量,并显示当前行使用的元素。


几乎通过将topmost-intro设置为4来解决了问题,但不幸的是,它会缩进所有超过4个空格的内容,包括<?php - Alex Suraci
啊 - 你可能需要在不同的语法元素中使用 M-x c-set-offset,以获取所需的其他设置。 - Cheeso
嗯,有什么办法可以得到光标下项目的语法元素吗? - Alex Suraci
在cc-mode、csharp-mode和java-mode中,我使用M-x c-set-offset。 - Cheeso
@Alex:在源代码中任何位置输入“M-x c-set-offset”都可以设置光标下的语法元素。在您的情况下,您需要更改“topmost-intro”。 - viam0Zah

0

php-mode 源于 c-mode,因此我认为你所需要的是:

(setq-default indent-tabs-mode nil)
(setq standard-indent 2)
(setq default-tab-width 2)
(add-hook 'c-mode-common-hook
  #'(lambda ()
    (setq c-basic-offset tab-width)))

如果这不是你想要的,也许你正在寻找tab-stop-list


1
不,我认为那样行不通。那只是设置了制表符的设置,我没有看到任何关于初始缩进级别的内容。(我在Emacs中运行它,除了我的制表符宽度之外,没有任何变化。) - Alex Suraci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接