Emacs 中给文本加引号的插件
来源:互联网 发布:手机绘图软件 戒指 编辑:程序博客网 时间:2024/06/05 12:50
前几天 @刘鑫-MarchLiu 在微博上发布了一个给给文本加引号的插件:http://weibo.com/1729408273/eDcC8e8w6aD。不过用起来有点小问题:
- 两头都只能插入一个字符,因此不能用于添加 XML 标签;
- 光标控制上有个 bug,每次执行后光标会往左移动一个字符。
我自己刚刚也实现了一下,不过我的实现灵活性比较差(前后的符号必须由用户手工输入,不能以参数形式传递):
(defun wrap-thing (thing) "Wrap the thing at point.THING is a symbol which specifies the kind of syntactic entity you want.Possibilities include `region', `symbol', `list', `sexp', `defun', `filename',`url', `email', `word', `sentence', `whitespace', `line', `page' and so on." (interactive) (let ((range (if (eq thing 'region) (cons (region-beginning) (region-end)) (bounds-of-thing-at-point thing))) (wrapper (cons (read-string "Left: ") (read-string "Right: ")))) (save-excursion (goto-char (cdr range)) (insert (cdr wrapper)) (goto-char (car range)) (insert (car wrapper)))))(defmacro make-wrap-for (&rest things) "A tool for define wrap-region, wrap-word etc." (let ((exp '())) (dolist (e things) (push `(defun ,(intern (concat "wrap-" (symbol-name e))) () (interactive) (wrap-thing (quote ,e))) exp)) (push 'progn exp)))(make-wrap-for region symbol list sexp defun filename url email word sentence whitespace lint page)(global-set-key (kbd "C-.") 'wrap-region
把上面的代码放到你的 .emacs 文件中,就能用 C-. 来调用了。如果有需要,你还可以再将 wrap-word、wrap-sentence 等绑定到其他键。
2011-08-23
今天重新实现了 make-wrap-for 这个宏,虽然物理行数还多了一行,但我觉得这个实现更优雅:
(defmacro make-wrap-for (&rest things) "A tool for define wrap-region, wrap-word etc." `(progn ,@(mapcar (lambda (e) `(defun ,(intern (concat "wrap-" (symbol-name e))) () (interactive) (wrap-thing ',e))) things)))
为方便其他朋友提问和指正,转载是请保持文章完整性,并以超链接形式注明原始作者“redraiment”和主站点地址,谢谢。
我的邮箱,欢迎来信(redraiment@gmail.com)
我的CSDN博客(梦婷轩):http://blog.csdn.net/redraiment
我的百度空间(梦婷轩):http://hi.baidu.com/redraiment
- Emacs 中给文本加引号的插件
- php从文本中给链接加标签的方法
- 正则表达式给查找到的内容加引号
- grep中加单引号与不加引号的区别
- js对象中属性名加引号和不加引号的区别
- js中函数调用,加括号和不加括号,加引号和不加引号的区别
- 给文本加边框
- 给文本加边框
- 给力的文本编辑器——emacs
- 给力的文本编辑器——emacs
- 如何在SQL语句中加引号的问题
- JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)
- emacs的插件列表...(不断添加中)
- emacs的文本操作
- javascript中setInterval和setTimeout第一个参数加与不加引号的区别
- JavaScript中,对象需不需要加引号?
- php中Json字符串key加引号
- UEditor文本浏览器,解决引号加斜杠问题
- JOJ 1089 & ZOJ 1060 & poj 1094 Sorting It All Out (邻接表的栈拓扑排序模板)
- Unix常用命令
- [suDLS.mel]3Delight渲染shave自动化工具
- 计算细胞数(tyvj1127)
- 非归档模式备份练习
- Emacs 中给文本加引号的插件
- 前台js如何调用后台的方法的返回值
- 据官方统计,2010年金融业和IT业人均工资居个行业之首,属高收
- 总结:ofstream和ifstream用法
- 自己写的文本转网页格式的DLL(附源码)
- 归档模式练习
- WTL之父Nenad Stefanovic访谈录
- openacs资料
- 软件构建中的设计