emacs中使用elisp在代码块两端插入指定信息

Grey

全部学习汇总: https://github.com/GreyZhang/editors_skills

emacs中使用elisp在代码块两端插入指定信息

概述

前面用过的插入只是处理当前光标所在位置,这一次看得这个插入可以实现对一个区块两端 做信息的插入。可以用来插入诸如括号、python注释等信息。

示范代码解读

先看一下李杀的示范代码:

(defun wrap-markup-region ()
  "Insert a markup <b></b> around a region."
  (interactive)
  (let ((p1 (region-beginning))
        (p2 (region-end)))
    (goto-char p2)
    (insert "</b>")
    (goto-char p1)
    (insert "<b>")))

  • 这段代码的功能是在一个区块两端插入一对网页标识符,后面插入</b>,前面插入<b>。
  • 函数无传入参数、是一个交互式命令,使用了之前熟悉的insert,引入了3个新函数。
  • region-beginning的功能:

938_emacs中使用elisp在代码块两端插入指定信息_emacs

  • region-end的功能:

938_emacs中使用elisp在代码块两端插入指定信息_emacs_02

  • goto-char的功能:

938_emacs中使用elisp在代码块两端插入指定信息_it技术_03

  • 内容解读:
     

首先判断标记的文本区块的开始点,标记为p1,判断区块的结束点标记为p2。然后跳转 到结束点,插入</b>,跳转到开始点,插入<b>。

  • 需要注意的一个点:这个如果要生效,首先得选中一个区块。

代码改进思考

  • 针对我自己的应用,我觉得比较有尝试价值的地方是给一个新创建的头文件增加一个

include-sandwitch的保护是很方便的。但是现在的尝试可能得临时搁浅,暂时还不清楚 如何去识别文件名称,获取当前buffer对应的文件名。如果这部分搞定,再加一个字符串 的简单处理应该很容易实现这样的功能。

小结

这的确也是一个很有用的功能,处理的内容很多是接近常用的脚本的。但是,我觉得处理 的思路比直接用脚本处理文本或者字符串好一些。在emacs lisp当中,这种处理很多是类 似现实操作思考的描述,更加符合我们的思考。如果熟悉了,想来做一些文本类的功能处 理是十分方便的。