Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Doxygen样式注释的Emacs C模式缩进问题_Emacs - Fatal编程技术网

带有Doxygen样式注释的Emacs C模式缩进问题

带有Doxygen样式注释的Emacs C模式缩进问题,emacs,Emacs,我对c模式下带有emacs缩进功能的doxygen样式多行注释有问题。根据doxygen手册,接受以下表格 /********************************************//** * ... text ***********************************************/ 我试图在emacs中使用此格式,但当我在“*”行上签入时。。。文本“the*”在第一行末尾的/**下方结束,如下所示: /*******************

我对c模式下带有emacs缩进功能的doxygen样式多行注释有问题。根据doxygen手册,接受以下表格

 /********************************************//**
 *  ... text
 ***********************************************/
我试图在emacs中使用此格式,但当我在“*”行上签入时。。。文本“the*”在第一行末尾的/**下方结束,如下所示:

 /********************************************//**
                                                *  ... text
 ***********************************************/

有没有关于如何解决这个问题的建议?仍在学习emacs的所有细节。

您使用的是哪个版本的emacs?我的emacs 22有这个问题,但在另一台装有emacs 23的机器上没有。这可能是由于一些电压痕造成的。尝试M-x描述键RET RET和M-x描述模式,找到一个开始搜索线索的好地方。还有,但我没有亲自测试。

您使用的是哪个版本的emacs?我的emacs 22有这个问题,但在另一台装有emacs 23的机器上没有。这可能是由于一些电压痕造成的。尝试M-x描述键RET RET和M-x描述模式,找到一个开始搜索线索的好地方。还有,但我没有亲自测试过。

它缩进的原因是默认情况下,多行注释与前一行注释的开头对齐。在本例中,包含注释的开头在第47列

现在,如何修复它。下面是我如何解决这个问题的,解决方案就在最后

首先,有一节,特别是关于。一个有用的键是C-C-s,它告诉您缩进使用的语法。在这种情况下,它是c 61-c是目前最重要的部分

要以交互方式对其进行自定义,可以在点位于要修复其缩进的线上时键入C-C-o。系统将提示您选择要自定义默认为c的语法项(在本例中为b/c,这是当前语法),然后提示您选择要将语法项更改为默认值的是c-lineup-c-comments

现在我们可以看看这个函数,看看我们如何定制它来满足您的需求。M-x查找函数c-lineup-c-comments

这就是它变得更加困难的地方。您可以自定义cc模式处理注释缩进的方式,但在这种情况下,您希望它做的是识别您所处的c注释前面紧跟着另一个c注释,并且该注释就是您要对齐缩进的注释

你是怎么做到的?我能想到的最简单的方法是“c-lineup-c-comments”来识别这个特殊情况,并将其第一个参数的值更改为您想要的值。我的有限测试表明,这适用于您的示例:

(defadvice c-lineup-C-comments (before c-lineup-C-comments-handle-doxygen activate)
  (let ((langelm (ad-get-arg 0)))
    (save-excursion
      (save-match-data 
        (goto-char (1+ (c-langelem-pos langelem)))
        (if (progn
              (beginning-of-line)
              ;; only when the langelm is of form (c . something)
              ;; and we're at a doxygen comment line
              (and (eq 'c (car langelm))
                   (looking-at "^\\(\\s-*\\)/\\*+//\\*\\*$")))
            ;; set the goal position to what we want
            (ad-set-arg 0 (cons 'c (match-end 1))))))))

这个建议的最终结果应该是传递到c-lineup-c-comments的参数应该从c转换而来。61至c。17或类似的内容,基本上是愚弄例程,使其与行开头的注释对齐,而不是与当前修改的注释对齐。

它缩进的原因是默认情况下,多行注释与前一行注释的开头对齐。在本例中,包含注释的开头在第47列

现在,如何修复它。下面是我如何解决这个问题的,解决方案就在最后

首先,有一节,特别是关于。一个有用的键是C-C-s,它告诉您缩进使用的语法。在这种情况下,它是c 61-c是目前最重要的部分

要以交互方式对其进行自定义,可以在点位于要修复其缩进的线上时键入C-C-o。系统将提示您选择要自定义默认为c的语法项(在本例中为b/c,这是当前语法),然后提示您选择要将语法项更改为默认值的是c-lineup-c-comments

现在我们可以看看这个函数,看看我们如何定制它来满足您的需求。M-x查找函数c-lineup-c-comments

这就是它变得更加困难的地方。您可以自定义cc模式处理注释缩进的方式,但在这种情况下,您希望它做的是识别您所处的c注释前面紧跟着另一个c注释,并且该注释就是您要对齐缩进的注释

你是怎么做到的?我能想到的最简单的方法是“c-lineup-c-comments”来识别这个特殊情况,并将其第一个参数的值更改为您想要的值。我的有限测试表明,这适用于您的示例:

(defadvice c-lineup-C-comments (before c-lineup-C-comments-handle-doxygen activate)
  (let ((langelm (ad-get-arg 0)))
    (save-excursion
      (save-match-data 
        (goto-char (1+ (c-langelem-pos langelem)))
        (if (progn
              (beginning-of-line)
              ;; only when the langelm is of form (c . something)
              ;; and we're at a doxygen comment line
              (and (eq 'c (car langelm))
                   (looking-at "^\\(\\s-*\\)/\\*+//\\*\\*$")))
            ;; set the goal position to what we want
            (ad-set-arg 0 (cons 'c (match-end 1))))))))

这个建议的最终结果应该是传递到c-lineup-c-comments的参数应该从c转换而来。61至c。17或类似的东西,实质上是愚弄例程,使其在行的开头与注释对齐,而不是与您当前正在修改的注释对齐。

是否可以完全禁用块注释的缩进?@fakedrake您可能可以通过自定义各种注释样式来实现这一点
变量。查看上面答案中cc模式手动链接的自定义部分。是否可以完全禁用块注释的缩进?@fakedrake您可能可以通过自定义各种注释样式变量来实现。查看上述答案中cc模式手动链接的自定义部分。