- 论坛徽章:
- 0
|
浏览邮件列表的时候经常看到有人发表这样的小框,很漂亮:
,----[ foo bar ]
| text in the box
| looks beautiful
`----
也想自己弄一个,于是写了段 elisp 小代码,用来在 Emacs 里面把选中的区域加上边框,elisp 代码如下:
([color="#afeeee"]defun [color="#7fffd4"]kid-box-region (begin end title)
(interactive [color="#87cefa"]"r\nsBox Title: ")
([color="#afeeee"]let ((old-buffer (current-buffer)))
(switch-to-buffer (get-buffer-create [color="#87cefa"]"*kid-box-region-output*"))
[color="#add8e6"];; [color="#add8e6"]删除以前的内容,为防止误删东西,把他放在 kill-ring 里面
(kill-region (point-min) (point-max))
(insert-buffer-substring old-buffer begin end)
(goto-char (point-min))
(insert [color="#87cefa"]",----------[ " title [color="#87cefa"]" ]\n")
(replace-regexp [color="#87cefa"]"^" [color="#87cefa"]"| ")
(goto-char (point-max))
[color="#add8e6"];; [color="#add8e6"]检查最后是否有换行
([color="#afeeee"]if (search-backward-regexp [color="#87cefa"]"^| $" (point-min) t)
(delete-char 2)
(insert [color="#87cefa"]"\n"))
(insert [color="#87cefa"]"`----------\n")))
处理之后会变成这样,因为 lisp 缩进很多,为了变漂亮一点,我决定多加几个“-”:
,----------[ kid-box-region ]
| ([color="#afeeee"]defun [color="#7fffd4"]kid-box-region (begin end title)
| (interactive [color="#87cefa"]"r\nsBox Title: ")
| ([color="#afeeee"]let ((old-buffer (current-buffer)))
| (switch-to-buffer (get-buffer-create [color="#87cefa"]"*kid-box-region-output*"))
| [color="#add8e6"];; [color="#add8e6"]删除以前的内容,为防止误删东西,把他放在 kill-ring 里面
| (kill-region (point-min) (point-max))
| (insert-buffer-substring old-buffer begin end)
| (goto-char (point-min))
| (insert [color="#87cefa"]",----------[ " title [color="#87cefa"]" ]\n")
| (replace-regexp [color="#87cefa"]"^" [color="#87cefa"]"| ")
| (goto-char (point-max))
| [color="#add8e6"];; [color="#add8e6"]检查最后是否有换行
| ([color="#afeeee"]if (search-backward-regexp [color="#87cefa"]"^| $" (point-min) t)
| (delete-char 2)
| (insert [color="#87cefa"]"\n"))
| (insert [color="#87cefa"]"`----------\n")))
`----------这下我也可以有漂亮的 box 了! :)
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18458/showart_108112.html |
|