Emacs 为内联(行尾)注释设置间距

Posted

技术标签:

【中文标题】Emacs 为内联(行尾)注释设置间距【英文标题】:Emacs set spacing for inline (end of line) comments 【发布时间】:2013-02-17 20:50:00 【问题描述】:

在 Python 的 PEP 8 样式指南中,建议内联 cmets 由 two spaces 分隔行的其余部分。但是,Emacs 中的默认设置是运行 comment-dwimindent-for-comment 在行尾和注释之间只放置一个空格。有没有办法改变 emacs 中的这种默认行为?

我正在运行 Emacs 23.3.1

【问题讨论】:

【参考方案1】:

这应该做你想做的:

   (add-hook 'python-mode-hook
      (lambda () (set (make-local-variable 'comment-inline-offset) 2)))

【讨论】:

【参考方案2】:

您可以通过C-h v RET comment-inline-offset查看emacs的文档,然后您将找到@And所说的答案。

这是一个简化版:

(add-hook 'python-mode-hook
  (lambda () (setq-local comment-inline-offset 2)))

【讨论】:

【参考方案3】:

尝试将comment-start 设置为" # "(前一个空格,后一个空格)。

M-x set-variable comment-start " # "

【讨论】:

这个 somewhat 工作,但有两个问题:首先,它改变了所有行的注释语法(所以当我注释掉一行时,它们会得到额外的空格,使它们与文本的其余部分不对齐)。其次,如果我再次在带有内联注释的行上运行comment-dwim,它会将内联注释重新对齐,使其只有一个空格。 是的,我明白了。昨晚我开始挖掘源代码,试图找到第一个空格插入的位置,但时间用完了。【参考方案4】:

我认为这可能会满足您的需求:

(defun my-comment-indent ()
  (interactive)
  (end-of-line)
  (let ((comment-column (+ 2 (current-column))))
    (comment-indent)))

【讨论】:

以上是关于Emacs 为内联(行尾)注释设置间距的主要内容,如果未能解决你的问题,请参考以下文章

在 Emacs 的 C/C++ 模式下,将 #if 0...#endif 块中的代码面更改为注释面

Spring安全注释预期为内联常量

从 ;; 更改 emacs 注释标记到 //

在 Vim 中对齐行尾注释?

Emacs评论/取消评论当前行[重复]

如何在 tuareg-mode emacs 中指定注释文件的自定义路径?