在许多语言中,行注释以单个符号开头,例如Python中的#和R。
我发现在Emacs中,在编写这样的行注释时,我必须重复两次注释符号以进行正确的缩进。
请参阅以下示例:
(setq x-select-enable-clipboard t)
;using a single comment symbol indents wrongly
;; repeating the comment symbol indents fine
(setq-default c-basic-offset 4)
单身;在行的开头无法得到正确的缩进。如何获得正确的设置?谢谢!
修改
我自己找到了解决方案。在ESS的文件中:
评论也由ESS专门处理,使用借来的想法 来自Emacs-Lisp压痕风格。默认情况下,评论开始 '###'与行的开头对齐。评论 以'##'开头,与当前缩进级别对齐 对于包含评论的块。最后,评论以 '#'与右侧的列对齐(默认情况下为第40列, 但是这个值是由变量comment-column,)控制的 在包含注释的行上的表达式后,如果它扩展 超出缩进列。您关闭默认行为 将行(setq ess-fancy-comments nil)添加到.emacs文件中。
所以我把它放在我的.emacs中:
(setq ess-fancy-comments nil) ; this is for ESS
我认为对于Python模式,它有一个类似的变量。
答案 0 :(得分:10)
您的示例使用Emacs Lisp,在此语言中,标准约定是单个;
向右缩进,而两个;;
缩进,代码将在此处缩进。我强烈建议你坚持这个约定,否则你的代码将会脱颖而出。三个;;;
向左缩进。四个;;;;
缩进,用于主要部分。 (见https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html)
对于Ruby,就我所知,注释总是缩进为代码。
答案 1 :(得分:2)
主要模式应该妥善处理。如果没有,请考虑向维护人员提交增强请求或错误报告。当然,"正确"可能是旁观者的眼睛。但是,您可以尝试将您的偏好设为已知。并检查主模式代码是否已经有用户选项。
除此之外,作为变量 comment-indent-function
的值的函数控制着它。通常,这是由主模式设置的。您可以将其设置为您想要的任何功能(例如,在模式挂钩上,以便您的定义覆盖主模式代码提供的定义)。
它不接受任何参数,并返回您希望注释缩进的列。
以下是将注释缩进到第0列的代码,例如:
(defun foo () (setq comment-indent-function (lambda () 0)))
(add-hook 'SOME-MODE-HOOK 'foo 'APPEND)
例如,对于Emacs-Lisp模式,您可以使用(add-hook 'emacs-lisp-mode-hook 'foo 'APPEND)
。