生成盒子状的注释块?

有时候想用注释 Outline 一段代码,想用醒目的格式把它和普通的注释区分开,可惜 M-x comment-box 给出的结果不好看(1、长度不固定不好看;2、成堆的 # 显得太密集):

###################################
# Single Leading Underscore: _var #
###################################

我希望这样的格式,希望有工具生成这样的注释:

#*----------------------------------------------------------#
#*    Single Leading Underscore: _var                       #
#*----------------------------------------------------------#

我知道大家有没有过类似的需要?以及是怎么处理的?

Update:上面的注释以 Python 为例

1 个赞

我用outshine做outline,outshine会把标题注释高亮放大,还可以折叠,很方便。

如果是解释性的注释,一般会有很多行(我的注释比较啰嗦),这时候什么都不做也能很好地区分 — 一大块注释本身就很醒目了

P.S. 我觉得 flyspell.el 里的注释块就很漂亮。

ultisnips, yasnippet 就是干这个的,照着现有的抄一个。

以前给别人写过这样的代码,自己倒没用过,供参考。

(defun box-comment (start end)
  (interactive "r")
  (let* ((content (buffer-substring start end))
	 (mode major-mode)
	 (stripe (make-string fill-column ?*))
	 (comment (with-temp-buffer
		    (funcall mode)
		    (insert stripe "\n")
		    (insert content)
		    (goto-char (point-max))
		    (insert stripe)
		    (center-region (point-min) (point-max))
		    (comment-region (point-min) (point-max))
		    (buffer-substring (point-min) (point-max)))))
    (delete-region start end)
    (insert comment)))