我喜欢任何评论都出现在自己的路线上。我不喜欢在代码所在的同一行上发表评论。在某些语言中,您可以编写注释块,例如:
/**
* I am a comment block. This comment block will be automatically expanded by the
* IDE such that it can contain all of the text in this block.
**/
我喜欢那样。我喜欢评论块如何在我添加更多文本时不断获得更多行。我喜欢如果我在块中的某个任意点插入文本,后续文本将向下移动,以便没有文本超出某个点到右边。我用Python。 Python没有多行块注释。我想你能得到的最接近的是:
# I am a comment block. This comment block will NOT be automatically expanded by
# the IDE, because it does not recognize these two comment lines as being joined.
我也使用emacs。我只是想知道是否有人有一些聪明的解决方案,以便他们可以打开一个评论块,然后开始输入。当注释行的宽度太大时,不必担心必须按返回跳转到下一行。当您希望在注释块中插入时,无需重新整理注释。有什么想法吗?
总结:我正在寻找一种在emacs中进行多行连续注释(对于Python)的方法,而不必手动格式化注释块本身的文本。
谢谢
答案 0 :(得分:4)
auto-fill-mode
似乎做你想做的事。当行的长度超过fill-column
的值时,它会断开该行并插入新的注释行。
虽然它不是完全自动的,如果插入文本之间,则必须按 M-q 才能重新填充。
[编辑:这是一种智能化“空间”命令的方法。每次按 SPC 时,您的注释块都将重新填充:
(defun refill-when-in-comment ()
(interactive)
(let ((curr-face (get-char-property (point) 'face)))
(if (member "comment" (split-string (prin1-to-string curr-face) "-"))
(fill-paragraph t)
)
)
)
(defun smart-space (arg)
(interactive "P")
(refill-when-in-comment)
(self-insert-command (prefix-numeric-value arg))
)
(global-set-key " " 'smart-space)
这对你有用吗?
答案 1 :(得分:2)
这有点不正统,但您不仅限于使用字符串作为文档字符串的注释。将它们作为第一项的唯一神奇之处在于它们将被分配给对象__doc__
方法。它可以在任何地方使用,并且不会影响效率
>>> import dis
>>> def test():
... """This is a standard doc string"""
... a = 3 # This will get compiled
... """This is a non standard doc string and will not get compiled"""
...
>>> dis.dis(test)
3 0 LOAD_CONST 1 (3)
3 STORE_FAST 0 (a)
4 6 LOAD_CONST 2 (None)
9 RETURN_VALUE
您可以看到生成的代码不会引用任何两个字符串。
我只提到这一点,因为doc字符串似乎具有您要求的所有功能。虽然我个人没有看到它的问题,但它有点不标准。多行评论会很好。