帮你精通Emacs:召唤神龙 交互函数的4类37种表达

工作很无聊,生活亦复如是;学编程枯燥,学 elisp 燥上加燥,然而“想象力”是一切的解药。当你身疲意懒之时,深呼吸,按键 M-x 召唤我们的神龙。

我们在编辑器中写一条一条的函数,就如“张僧繇”于壁上画龙,函数内的 interactive 就是催动神龙从“静态”入“动态“的点睛一笔。画龙点上“interative”之须臾,一条条“函数”,霎时雷电破壁,腾云穿天而去。

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

一、静态的字符串却表达动态的属性

交互函数的“点睛之笔”在于其内部的 interactive, 模板结构为:

(defun interactive-function (args)
  "documentation..."
  (interactive ...)
  body...)

再往下读 interactive 后面的字符串,确是一头雾水,比如:

(interactive "BAppend to buffer: 
r")

读手册 “21.2.2 Code Characters for interactive”,获悉 B 代表 buffer-name, 而尾部的 r 代表 region, 中间的 是分隔符,换言之,这串描述字符的本质属性是 list:

> "BAppend to buffer: 
r".split('
')
[ 'BAppend to buffer: ', 'r' ]

然而,文档中轻描淡写一句 B 代表 buffer-name;

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

B的含义描述

虽然得知其内涵,但无论是字幕 B 还是命名 buffer-name 都是静态的名词,怎么会有读取buffer,read-buffer 的含义呢?

再一探,才恍然大悟,原来 B 就是 动态的函数 read-buffer,上面的一串字符 "BAppend to buffer: r" 表达的具象含义是动态的函数组,扩展为:

(interactive
 (list (read-buffer
        "Append to buffer: "
        ....
       (region-beginning)
       (region-end)))

于是茅塞顿开,静态的字符 B 就是动态的函数 read-buffer, 而 r 则对应 (region-beginning) (region-end)。

回头看文档中对 code-character B的描述:

- 'B'

A buffer name. The buffer need not exist. By default, uses the name of a recently used buffer other than the current buffer. Completion, Default, Prompt.

以静态的文字阐述静态的字符,却绝口不提加上一句 B 对应的是 read-buffer 函数,着实让人遗憾。

二、分类总结 code-character

填补文档的缺憾,以 Emacs 的操作对象分类,将 code 与 function 一一对应。

一、文本对象

文本对象包括:point, mark, region, varable, character, string,number,以及文本编辑的补全 completion:

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

二、Buffer 与 File

包括 buffer mini-buffer file directory 等:

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

三、命令

没有对应操作 windows & Frame 的 code, 此处归类 Commands:

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

四、最高频的 prefix-numeric-value:

同时也将 read-coding-system 归类到此处:

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

三、总结

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

我们在编辑器中写的一条条函数就是挥毫作于画壁上的一条条神龙。
interactive 是画龙点睛的一笔,而 character-code 则是我们指挥若定,输入其“眼耳口”中的咒符。

帮你精通Emacs:召唤神龙 交互函数的4类37种表达

展开阅读全文

页面更新:2024-03-10

标签:神龙   函数   指挥若定   壁上   字符串   静态   字符   含义   属性   文本   对象   编辑   代表   文档   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top