进展
目前实现了:
-
注释块(连续多行的注释)编辑
把整个注释块提取到临时 buffer 编辑,使得可以专心输入内容,不必操心注释符号
注释块必须是左侧没有代码:
;; comment1 ;; comment2 ;; comment3
暂不能处理左侧有代码的情况:
(fn1) ;; comment1 (fn2) ;; comment2 (fn3) ;; comment3
因为注释块被提取到另外一个 buffer 编辑的时候,必然出现增加/删除行的情况。如果编辑完成返回,对应关系不好处理。也许需要有个 narrow-to-rectangle 函数把左侧锁定住,我在讨论 关于规律性代码的输入技巧 的时候就开始有打算要实现,起了个头,但没有完成。
目前的做法是,用正则删除左边的空白(所以必须要求是空白),返回时再补全。
-
注释块中的代码块编辑
把代码提取到指定模式的 buffer 中编辑
代码块可以由以下形式包裹:
```lang code ```
和
,---lang | code `---
允许添加自定义包裹正则表达式。
-
{,doc}string 内容编辑
把 string 内容提取到临时 buffer 编辑,并进行引号转义处理,免去手动输入。
-
{,doc}string 中的代码块编辑
类似 2,增加了引号转义处理。
支持的语言:
- lisp
- c
- python/ruby (单引号的 doc string 转义没有实现)
允许自行添加其它语言支持:
(defcustom -comment-regexp-alist
'((emacs-lisp-mode . (";+"))
(c-mode . ("//+" "\\*+"))
(c++-mode . c-mode)
(python-mode . ("#+"))
(ruby-mode . ("#+")))
"Alist of comment regexp."
:group 'commentdown
:type 'alist)
包名暂定 commentdown,并不是很满意。