繁体   English   中英

如何配置emacs以正确注释PHP模式中的代码?

[英]How to configure emacs to properly comment code in php-mode?

我有emacs 23.3.1,在Windows上运行。

php-mode 1.5来自http://php-mode.sourceforge.net/ ,修改时间:2008-11-04

认为这曾经有用,但是现在,当我尝试使用comment-region注释掉一段代码时,这是一个在`newcomment.el'中的交互式编译Lisp函数,我的结果很差。

例:

之前:

在此输入图像描述

后:

在此输入图像描述

您可以看到注释块中的每一行都有单行注释开始序列//和多行注释结束序列*/

这不是一个大问题,虽然它很难看。 当我尝试取消注释块时出现问题。 我收到一个错误,“找不到评论结束”。 换句话说, comment-regionCu comment-region不可逆。

我会看看我是否可以解决这个问题,但有没有我在php模式中缺少的设置?

谁知道?


更多

我没有在php-mode-hook函数中添加任何内容来更改comment-startcomment-end变量。 当我调试comment-region我可以看到它们被设置为不匹配的//*/某种方式。 这解释了评论区域的奇怪结果。 我不相信这是我的代码确实设置那样的变量。

我尝试在我的钩子中显式设置它们//和(空字符串)。 在这种情况下, comment-region看起来更漂亮,但仍然没有取消评论。 我也尝试了匹配的/**/ ,但结果相同。 取消注释不成功; 错误是can't find comment end.

更多2

我认为我的语法表是正确的。 它显示了这个:

在此输入图像描述

......对我来说似乎是对的。

这解决了我:

(setq comment-use-syntax t)

我把它放在我的php模式钩子里。

不确定这是否必要,但我也包含了修改语法表的语句。 整个钩子看起来像这样:

(defun cheeso-php-mode-fn ()
  "Function to run when php-mode is initialized for a buffer."
  (require 'flymake)
  (flymake-mode 1)

  (setq c-default-style "bsd"
      c-basic-offset 2)

  ;; not sure if necessary or not.
  (modify-syntax-entry ?/ ". 124b" php-mode-syntax-table)
  (modify-syntax-entry ?* ". 23" php-mode-syntax-table)
  (modify-syntax-entry ?\n "> b"  php-mode-syntax-table)
  (modify-syntax-entry ?\^m "> b" php-mode-syntax-table)

  (setq comment-multi-line nil ;; maybe
        comment-start "// "
        comment-end ""
        comment-style 'indent
        comment-use-syntax t))

comment-use-syntax的帮助声明说主要模式应该设置它。 在我编辑的php缓冲区中,变量设置为nil。 我猜它是由php-mode设置的; 无论如何,它不是由我设定的。 将其设置为t并确保语法表具有适当的值就可以了。

我应该说我只在PHP中使用C风格的评论; 我不使用#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM