Emacs宏看起来会变成以下几行:
# abc def
进入:
# +-------------+
# | abc def |
# +-------------+
?宏根本不需要是通用的:它可以硬编码框规格(即评论前后的3个空格,框架字符(|
,+
,-
),以及假设评论是单行的。但是,它应该使用为当前模式设置的任何评论字符,并使框长度正确。
如果您知道现有的包裹可以做到这一点,我也很感激。
谢谢!
答案 0 :(得分:4)
这就是我想你想要的:
(defun box-comment-region (beg end)
"do some fancy commenting"
(interactive "r")
(save-restriction
(narrow-to-region beg end)
(comment-region beg end -1) ; first, uncomment
(string-rectangle (point-min)
(progn (goto-char (point-max)) (line-beginning-position))
" | ")
(goto-char (point-min))
(let ((max-len 0))
(while (< (point) (point-max))
(end-of-line)
(setq max-len (max max-len (current-column)))
(forward-line 1))
(previous-line)
(end-of-line)
(insert (make-string (- max-len (current-column)) ?\ ))
(goto-char (point-min))
(end-of-line)
(insert (make-string (- max-len (current-column)) ?\ ))
(end-of-line)
(let ((top (point)))
(goto-char (point-max))
(previous-line)
(end-of-line)
(string-rectangle top (point) " | "))
(let ((line-seg (concat " +" (make-string (- max-len 2) ?-) "+ \n")))
(goto-char (point-max))
(insert line-seg)
(goto-char (point-min))
(insert line-seg)))
(comment-region (point-min) (point-max))))
答案 1 :(得分:2)
newcomment
有一个名为comment-box
的函数,它生成一个由注释字符组成的框注释,即:
###########
# abc def #
###########
或
/***********/
/* abc def */
/***********/
取决于模式。它唯一的可配置性是用于盒子的字符数;例如,在Lisp模式中,您最终得到:
;;;;;;;;;;;;;
;; abc def ;;
;;;;;;;;;;;;;
comment-region-default
函数可以让您了解如何进行注释。 newcomment
的评论样式不够灵活,无法实现您想要的内容,因此我认为最简单的方法是简单地绘制框,然后添加常规(单行或多行,在有差异的语言中)注释使用现有的newcomment
机器到该地区。
答案 2 :(得分:1)
有一种称为图片模式的功能,它可能会做类似的事情。
M-x图片模式
答案 3 :(得分:1)
rebox2是最全面的emacs框图绘制扩展程序。
答案 4 :(得分:0)
功能
M-x comment-box
从Emacs 24.4开始,使用点和标记来做到这一点。