如何善用注释/文档中的代码?

进展

目前实现了:

  1. 注释块(连续多行的注释)编辑

    把整个注释块提取到临时 buffer 编辑,使得可以专心输入内容,不必操心注释符号

    注释块必须是左侧没有代码:

          ;; comment1
          ;; comment2
          ;; comment3
    

    暂不能处理左侧有代码的情况:

    (fn1) ;; comment1
    (fn2) ;; comment2
    (fn3) ;; comment3
    

    因为注释块被提取到另外一个 buffer 编辑的时候,必然出现增加/删除行的情况。如果编辑完成返回,对应关系不好处理。也许需要有个 narrow-to-rectangle 函数把左侧锁定住,我在讨论 关于规律性代码的输入技巧 的时候就开始有打算要实现,起了个头,但没有完成。

    目前的做法是,用正则删除左边的空白(所以必须要求是空白),返回时再补全。

  2. 注释块中的代码块编辑

    把代码提取到指定模式的 buffer 中编辑

    代码块可以由以下形式包裹:

        ```lang
        code
        ```
    

        ,---lang
        | code
        `---
    

    允许添加自定义包裹正则表达式。

  3. {,doc}string 内容编辑

    把 string 内容提取到临时 buffer 编辑,并进行引号转义处理,免去手动输入。

  4. {,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,并不是很满意。

3 个赞