1

我正在使用带有 php-mode.el 的 Emacs:http: //php-mode.sourceforge.net/php-mode.el.html

我的 .emacs 文件中有以下几行:

(load-file "~/.emacs.d/php-mode.el")
(require 'php-mode)
(setq c-default-style "linux" c-basic-offset 4)

它在大多数情况下工作得非常好。问题在于,对于某些代码,Emacs 显示的代码与其他编辑器不同。例如,我在 Emacs 中有以下代码:

public function showStuff($items, $Stuff) {
    $restrict = true;
    $stuff  = false;
    $moreStuff = true;

    if (($restrict && $stuff >= $moreStuff) 
        || ( $moreStuff > 10)) {
        return true;
    }           
    return false;
}

但是在 Eclipse/Sublime Text/Text Wrangler 中查看相同的文件看起来像:

public function showStuff($items, $Stuff) {
    $restrict = true;
    $stuff  = false;
    $moreStuff = true;

    if (($restrict && $stuff >= $moreStuff) 
    || ( $moreStuff > 10)) {
    return true;
    }           
    return false;
}

谁能评论我为什么看到这些结果和可能的解决方案?

谢谢。

4

2 回答 2

6

由于您似乎想使用空格而不是制表符,我认为这基本上是以下内容的副本:

我找不到这个:如何在 EMACS 中使用 4 SPACES 而不是 TAB?

或者,如果您只想对 PHP 文件使用此功能,那么您可以使用:

(add-hook 'php-mode-hook 'my-php-mode-hook)
(defun my-php-mode-hook ()
  "My PHP mode configuration."
  (setq indent-tabs-mode nil
        tab-width 4
        c-basic-offset 4))

在此之前,代码在 Emacs 中看起来正确,将制表符转换为空格:

  • C-xh
  • M-x untabify RET

我还要看看:
http ://www.emacswiki.org/emacs/CategoryIndentation

(或者至少要注意它——在 Emacs 中缩进可能比预期的要复杂,而且那里有很多很好的信息。)

于 2012-09-05T00:11:58.377 回答
1

我认为问题只是您的 Eclipse/Foo/Bar 编辑器没有以标准方式显示文件中的 TAB(TAB 通常被定义为跨越 8 列)。混合使用空格和制表符不是问题(如果您只使用制表符进行缩进,则会出现类似的问题),文件中似乎没有任何真正需要修复的内容。解决这个问题的最好方法可能是:

  1. 向这些编辑器报告问题(这可能是一个较小的配置问题)。
  2. 在您的 .emacs 中添加 (setq indent-tabs-mode nil) 以便 Emacs 更喜欢在任何地方使用空格来避免这些问题(但它不会阻止您插入自己的 TAB 并且它不会神奇地更改 TAB已经在那里)。
于 2012-09-04T18:15:35.023 回答