- 浏览: 236985 次
文章分类
最新评论
-
sunyukun8888:
多谢啦!
重新整理后的Oracle OAF学习笔记——离线版本 -
singlespider:
很不错啊,谢楼主
重新整理后的Oracle OAF学习笔记——离线版本 -
000fuli:
000fuli 写道请问各位学长:你们可以下载吗?能下载的烦请 ...
重新整理后的Oracle OAF学习笔记——离线版本 -
000fuli:
请问各位学长:你们可以下载吗?能下载的烦请发一份到fuli.w ...
重新整理后的Oracle OAF学习笔记——离线版本 -
goodscript:
确实是不错的好文章!
重新整理后的Oracle OAF学习笔记——离线版本
部分与缓冲区有关的函数
查找更多信息
可以通过C-h f查看函数的说明,C-h v查看变量的说明,这些说明就是Emacs Lisp代码中的文档字符串。
在20或更高版本以后,可以用describe-function(C-h f)将告诉你函数定义的位置。在文件名上按回车(这个操作是help-follow函数调用)将打开函数定义。
etags:在代码中如果想要查看函数源文件,可以使用find-tags函数跳转到源文件上去。find-tags可以处理多种语法,不限于 Lisp和C,也可以工作于非编程语言如Texinfo文档。在Texinfo文档里调用find-tags将跳转到对应的文件节点。
find-tags函数依赖于标签表'tags tables',它记录了函数、变量和其它信息的位置。
使用M-.调用find-tags函数,然后在提示符后要查找的函数名,比如mark-whole-buffer。Emacs将转到显示该函数源码缓冲区。
符号表'tags table'通常是一个名为TAGS的文件。Emacs源码的TAGS存储在/usr/local/share/emacs目录中。但可以通过M-x visit-tags-table命令指定一个符号表。
通过etags命令可以创建符号表。使用M-x cd命令或C-x d(dired)切换到要建立符号表的目录,然后运行编译命令执行etags *.el命令。例:
M-x compile RET etags *.el RET
文件中的代码通常称为库。通过C-h p可以查看Emacs Lisp的标准库。
简化版的beginning-of-buffer函数定义
beginning-of-buffer命令将把光标移动到缓冲区起始位置,并把mark设置在前一个位置。通常被绑定到M-<上。
简化版本的函数具有与标准库版本类似的功能,但不包含完整的功能。
设想一下该函数的定义应包括:包含能让用户交互的表达式,比如按M-x beginning-of-buffer或按键C-<;必须包含能在原位置设置mark的代码;必须包含让光标移动到缓冲区起始位置的代码。
简化版本的代码:
(defun simplified-beginning-of-buffer ()
"Move point to the beginning of the buffer;
leave mark at previous position."
(interactive)
(push-mark)
(goto-char (point-min)))
与其它函数一样,这个函数也包含了defun需要的五个部分:
1. 函数名,这里使用的:simplified-beginning-of-buffer。
2. 参数列表:这里是一个空列表()。
3. 文档字符串。
4. 交互表达式。
5. 函数体。
这个函数定义中,参数列表为空,意味着函数不需要任何参数。(查看完整函数定义时,我们可以看到它可能传递了可选的参数)。
interactive语句告诉Emacs函数允许交互。这个例子中interactive没有参数,因此调用simplified-beginning-of-buffer时也不需要参数。
函数体由两行代码组成:
(push-mark)
(goto-char (point-min))
(push-mark)执行时将在当前光标所在位置设置mark,之前的mark被保存到mark ring上。
(goto-char (point-min))将光标转移到缓冲区起始位置。
在阅读这些代码遇到陌生的函数时,比如goto-char,可以使用describe-function命令,按C-h f然后输入函数名。describe-function将在一个*Help*窗口打印出函数的帮助文档。
调用describe-function时,如果光标停留在函数名上,describe-function默认将把光标所在位置的函数名作为参数。
end-of-buffer的函数定义与beginning-of-buffer类似,只是用(goto-char (point-max))替换(goto-char (point-min))。
mark-whole-buffer的定义
mark-whole-buffer函数标把整个缓冲区标记为区域。把point设置在缓冲区开始位置,mark设置在缓冲区结束位置。通常被绑定到C-x h上。
mark-whole-buffer预览
在Emacs 20中,完整的函数代码如下:
(defun mark-whole-buffer ()
"Put point at beginning and mark at end of buffer."
(interactive)
(push-mark (point))
(push-mark (point-max))
(goto-char (point-min)))
与函数定义模板类似:
(defun name-of-function (argument-list)
"documentation..."
(interactive-expression...)
body...)
mark-whole-buffer的函数体
mark-whole-buffer的函数体仅有3行:
(push-mark (point))
(push-mark (point-max))
(goto-char (point-min))
第一行(push-mark (point))与simplified-beginning-of-bufer函数相同,那里写的是(push-mark。两种写法都是告诉解释器在当前光标所在位置设置mark。
下一行(push-mark (point-max))在缓冲区结尾设置mark。设置这个mark后,前一行设置的mark将进入mark ring。这意味着你可以通过按两次C-u C-<SPC>重新回到那个位置。
在Emacs 21里,(push-mark (point-max))看起来更复杂:
(push-mark (point-max) nil t)
这个函数增加了两上参数,第二个参数为nil。这告诉函数,在设置mark后,需要显示消息:'Mark set'。第三个参数t,它告诉push-mark如果当Transient Mark mode是开启状态,则应该将mark设置为活动状态。Transient Mark mode将高亮显示当前活动的区域,它默认是关闭的。
最后一行(goto-char (point-min))与beginning-of-buffer完全一样。这个语句将光标移动到缓冲区开始位置。运行的结果:point被设置到缓冲区开始位置,mark被设置为缓冲区结束位置。整个缓冲区被标记为区域(region)。
append-to-buffer的定义
append-to-buffer函数从当前缓冲区中拷贝选中区域到指定的缓冲区中。
append-to-buffer函数预览
append-to-buffer命令使用insert-buffer-substring函数来拷贝区域。insert-buffer-substring函数将缓冲区的一部分作为字符串(substring)插入到另一个缓冲区。完整的函数代码如下:
(defun append-to-buffer (buffer start end)
"Append to specified buffer the text of the region.
It is inserted into that buffer before its point.
When calling from a program, give three arguments:
a buffer or the name of one, and two character numbers
specifying the portion of the current buffer to be copied."
(interactive "BAppend to buffer: \nr")
(let ((oldbuf (current-buffer)))
(save-excursion
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end))))
append-to-buffer函数中的交互表达式
append-to-buffer函数需要与用户交互,因此函数使用了interactive表达式。
(interactive "BAppend to buffer: \nr")
这个语句有一个双引号包含的字符串,该字符串被\n分隔为两部分。
第一部分BAppend to bufefer:这里的B告诉Emacs传递一个缓冲区给函数。Emacs将在回显区用B后面的字符串(Append to buffer:)提示用户输入缓冲区名称。然后Emacs将该缓冲区到参数buffer上。
\n分隔了交互表达式中的字符串。\n后的r告诉Emacs将point和mark的值分别绑定到参数buffer后面的两个参数上。
append-to-buffer的函数体
函数体是以let开头的。定义了局部变量,在函数中let将(current-buffer)的返回值绑定到oldbuf上。这个变量用于跟踪当前工作的缓冲区。
单独来看let语句:
(defun append-to-buffer (buffer start end)
"documentation..."
(interactive "BAppend to buffer: \nr")
(let ((variable value))
body...)
let语句包含三个元素:
1. 符号let。
2. 变量列表,列表中的元素是只含有两个元素的列表。
3. let语句体。
append-to-buffer中的save-excursion
let语句的body部分是一个save-excursion语句。它用于在执行完代码后恢复point,mark和buffer的值。
使用save-excursion函数处理过程与下面的模板类似:
(save-excursion
first-expression-in-body
second-expression-in-body
...
last-expression-in-body)
在函数定义中,save-excursion只包含了两个语句:
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end)
save-excursion依次执行这两条语句,save-excursion函数执行的最后一条语句被作为该次函数调用的返回值。
save-excursion的body部分的第一条语句set-buffer函数用于改变当前缓冲区到append-to-buffer函数调用时第一个参数所指定的缓冲区。(set-buffer变不改当前屏幕显示的内容,只在Lisp程序内部改变当前处理的缓冲区)。第二条语句执行了函数的主要工作。
(get-buffer-create buffer)语句根据名称获取缓冲区,如果缓冲区不存在,就创建一个同名的缓冲区。这意味着可以用append-to-buffer将文本放到一个之前不存在的缓冲区上。
get-buffer-create也使set-buffer可以从错误中恢复:set-buffer需要一个缓冲区才能工作;如果传递给它的缓冲区不存在,Emacs将报错。get-buffer-create将在缓冲区不存在时创建一个,因此set-buffer将总能获取到一个缓冲区。
最后一行append-to-buffer执行追加文本的工作:
(insert-buffer-substring oldbuf start end)
insert-buffer-substring函数从指定的缓冲区中拷贝字符串到当前缓冲区。在这里,传递给inset-buffer- substring的参数值是由let绑定的,并被命名为oldbuf,它是开始执行append-to-buffer时的当前缓冲区(执行命令时屏幕上显示的缓冲区)。
在insert-buffer-substring执行完后,save-excursion将恢复原缓冲区,append-to-buffer工作完成。
append-to-buffer的函数体工作骨架:
(let (bind-oldbuf-to-value-of-current-buffer)
(save-excursion ; Keep track of buffer.
change-buffer
insert-substring-from-oldbuf-into-buffer)
change-back-to-original-buffer-when-finished
let-the-local-meaning-of-oldbuf-disappear-when-finished
总结append-to-buffer的工作方式:它保存当前缓冲区到变量oldbuf。获取或者新建一个缓冲区并让Emacs切换到那个缓冲区(非屏幕上显示的缓冲区)。使用oldbuf变量从旧缓冲区中获取文本区域插入到新缓冲区;然后使用save-excursion函数回到最初的缓冲区。
查看append-to-buffer代码,探究了复杂的函数。它展示了如何使用let和save-excursion,如何从另一个缓冲区回到原来的缓冲区。许多函数定义中以这种方式使用了let、save-excursion和set-buffer。
回顾
* describe-function
* describe-variable
打印函数或变量文档字符串。通常被绑定到C-h f和C-h v。
* find-tag
查找包含函数或变量的源码,并在缓冲区打开,并定位到对应的位置。通常绑定到M-.上。
* save-excursion
保存当前的point和mark,在传递给save-excursion的参数执行完后恢复这两个值。它也会记录下当前的缓冲区并重新回到这个缓冲区。
* push-mark
在某个位置设置mark并将之前的mark保存到mark ring里面去。mark是缓冲区中的一个位置,不管缓冲区中的文本添加或者删除,它都将保持它的相对位置。
* goto-char
设置point到参数指定的位置,参数可以是数字、mark或者返回位置数据的表达式,例如:(point-min).
* insert-buffer-substring
从传递给它的第一个参数(缓冲区)对应的缓冲区拷贝区域中的文本到当前缓冲区。
* mark-whole-buffer
把整个缓冲区标记为一个区域。通常绑定到C-x h上。
* get-buffer-create
* get-buffer
按名称查找缓冲区,如果缓冲区不存在就创建一个。get-buffer函数在查找不到缓冲区后将返回nil。
查找更多信息
可以通过C-h f查看函数的说明,C-h v查看变量的说明,这些说明就是Emacs Lisp代码中的文档字符串。
在20或更高版本以后,可以用describe-function(C-h f)将告诉你函数定义的位置。在文件名上按回车(这个操作是help-follow函数调用)将打开函数定义。
etags:在代码中如果想要查看函数源文件,可以使用find-tags函数跳转到源文件上去。find-tags可以处理多种语法,不限于 Lisp和C,也可以工作于非编程语言如Texinfo文档。在Texinfo文档里调用find-tags将跳转到对应的文件节点。
find-tags函数依赖于标签表'tags tables',它记录了函数、变量和其它信息的位置。
使用M-.调用find-tags函数,然后在提示符后要查找的函数名,比如mark-whole-buffer。Emacs将转到显示该函数源码缓冲区。
符号表'tags table'通常是一个名为TAGS的文件。Emacs源码的TAGS存储在/usr/local/share/emacs目录中。但可以通过M-x visit-tags-table命令指定一个符号表。
通过etags命令可以创建符号表。使用M-x cd命令或C-x d(dired)切换到要建立符号表的目录,然后运行编译命令执行etags *.el命令。例:
M-x compile RET etags *.el RET
文件中的代码通常称为库。通过C-h p可以查看Emacs Lisp的标准库。
简化版的beginning-of-buffer函数定义
beginning-of-buffer命令将把光标移动到缓冲区起始位置,并把mark设置在前一个位置。通常被绑定到M-<上。
简化版本的函数具有与标准库版本类似的功能,但不包含完整的功能。
设想一下该函数的定义应包括:包含能让用户交互的表达式,比如按M-x beginning-of-buffer或按键C-<;必须包含能在原位置设置mark的代码;必须包含让光标移动到缓冲区起始位置的代码。
简化版本的代码:
(defun simplified-beginning-of-buffer ()
"Move point to the beginning of the buffer;
leave mark at previous position."
(interactive)
(push-mark)
(goto-char (point-min)))
与其它函数一样,这个函数也包含了defun需要的五个部分:
1. 函数名,这里使用的:simplified-beginning-of-buffer。
2. 参数列表:这里是一个空列表()。
3. 文档字符串。
4. 交互表达式。
5. 函数体。
这个函数定义中,参数列表为空,意味着函数不需要任何参数。(查看完整函数定义时,我们可以看到它可能传递了可选的参数)。
interactive语句告诉Emacs函数允许交互。这个例子中interactive没有参数,因此调用simplified-beginning-of-buffer时也不需要参数。
函数体由两行代码组成:
(push-mark)
(goto-char (point-min))
(push-mark)执行时将在当前光标所在位置设置mark,之前的mark被保存到mark ring上。
(goto-char (point-min))将光标转移到缓冲区起始位置。
在阅读这些代码遇到陌生的函数时,比如goto-char,可以使用describe-function命令,按C-h f然后输入函数名。describe-function将在一个*Help*窗口打印出函数的帮助文档。
调用describe-function时,如果光标停留在函数名上,describe-function默认将把光标所在位置的函数名作为参数。
end-of-buffer的函数定义与beginning-of-buffer类似,只是用(goto-char (point-max))替换(goto-char (point-min))。
mark-whole-buffer的定义
mark-whole-buffer函数标把整个缓冲区标记为区域。把point设置在缓冲区开始位置,mark设置在缓冲区结束位置。通常被绑定到C-x h上。
mark-whole-buffer预览
在Emacs 20中,完整的函数代码如下:
(defun mark-whole-buffer ()
"Put point at beginning and mark at end of buffer."
(interactive)
(push-mark (point))
(push-mark (point-max))
(goto-char (point-min)))
与函数定义模板类似:
(defun name-of-function (argument-list)
"documentation..."
(interactive-expression...)
body...)
mark-whole-buffer的函数体
mark-whole-buffer的函数体仅有3行:
(push-mark (point))
(push-mark (point-max))
(goto-char (point-min))
第一行(push-mark (point))与simplified-beginning-of-bufer函数相同,那里写的是(push-mark。两种写法都是告诉解释器在当前光标所在位置设置mark。
下一行(push-mark (point-max))在缓冲区结尾设置mark。设置这个mark后,前一行设置的mark将进入mark ring。这意味着你可以通过按两次C-u C-<SPC>重新回到那个位置。
在Emacs 21里,(push-mark (point-max))看起来更复杂:
(push-mark (point-max) nil t)
这个函数增加了两上参数,第二个参数为nil。这告诉函数,在设置mark后,需要显示消息:'Mark set'。第三个参数t,它告诉push-mark如果当Transient Mark mode是开启状态,则应该将mark设置为活动状态。Transient Mark mode将高亮显示当前活动的区域,它默认是关闭的。
最后一行(goto-char (point-min))与beginning-of-buffer完全一样。这个语句将光标移动到缓冲区开始位置。运行的结果:point被设置到缓冲区开始位置,mark被设置为缓冲区结束位置。整个缓冲区被标记为区域(region)。
append-to-buffer的定义
append-to-buffer函数从当前缓冲区中拷贝选中区域到指定的缓冲区中。
append-to-buffer函数预览
append-to-buffer命令使用insert-buffer-substring函数来拷贝区域。insert-buffer-substring函数将缓冲区的一部分作为字符串(substring)插入到另一个缓冲区。完整的函数代码如下:
(defun append-to-buffer (buffer start end)
"Append to specified buffer the text of the region.
It is inserted into that buffer before its point.
When calling from a program, give three arguments:
a buffer or the name of one, and two character numbers
specifying the portion of the current buffer to be copied."
(interactive "BAppend to buffer: \nr")
(let ((oldbuf (current-buffer)))
(save-excursion
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end))))
append-to-buffer函数中的交互表达式
append-to-buffer函数需要与用户交互,因此函数使用了interactive表达式。
(interactive "BAppend to buffer: \nr")
这个语句有一个双引号包含的字符串,该字符串被\n分隔为两部分。
第一部分BAppend to bufefer:这里的B告诉Emacs传递一个缓冲区给函数。Emacs将在回显区用B后面的字符串(Append to buffer:)提示用户输入缓冲区名称。然后Emacs将该缓冲区到参数buffer上。
\n分隔了交互表达式中的字符串。\n后的r告诉Emacs将point和mark的值分别绑定到参数buffer后面的两个参数上。
append-to-buffer的函数体
函数体是以let开头的。定义了局部变量,在函数中let将(current-buffer)的返回值绑定到oldbuf上。这个变量用于跟踪当前工作的缓冲区。
单独来看let语句:
(defun append-to-buffer (buffer start end)
"documentation..."
(interactive "BAppend to buffer: \nr")
(let ((variable value))
body...)
let语句包含三个元素:
1. 符号let。
2. 变量列表,列表中的元素是只含有两个元素的列表。
3. let语句体。
append-to-buffer中的save-excursion
let语句的body部分是一个save-excursion语句。它用于在执行完代码后恢复point,mark和buffer的值。
使用save-excursion函数处理过程与下面的模板类似:
(save-excursion
first-expression-in-body
second-expression-in-body
...
last-expression-in-body)
在函数定义中,save-excursion只包含了两个语句:
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end)
save-excursion依次执行这两条语句,save-excursion函数执行的最后一条语句被作为该次函数调用的返回值。
save-excursion的body部分的第一条语句set-buffer函数用于改变当前缓冲区到append-to-buffer函数调用时第一个参数所指定的缓冲区。(set-buffer变不改当前屏幕显示的内容,只在Lisp程序内部改变当前处理的缓冲区)。第二条语句执行了函数的主要工作。
(get-buffer-create buffer)语句根据名称获取缓冲区,如果缓冲区不存在,就创建一个同名的缓冲区。这意味着可以用append-to-buffer将文本放到一个之前不存在的缓冲区上。
get-buffer-create也使set-buffer可以从错误中恢复:set-buffer需要一个缓冲区才能工作;如果传递给它的缓冲区不存在,Emacs将报错。get-buffer-create将在缓冲区不存在时创建一个,因此set-buffer将总能获取到一个缓冲区。
最后一行append-to-buffer执行追加文本的工作:
(insert-buffer-substring oldbuf start end)
insert-buffer-substring函数从指定的缓冲区中拷贝字符串到当前缓冲区。在这里,传递给inset-buffer- substring的参数值是由let绑定的,并被命名为oldbuf,它是开始执行append-to-buffer时的当前缓冲区(执行命令时屏幕上显示的缓冲区)。
在insert-buffer-substring执行完后,save-excursion将恢复原缓冲区,append-to-buffer工作完成。
append-to-buffer的函数体工作骨架:
(let (bind-oldbuf-to-value-of-current-buffer)
(save-excursion ; Keep track of buffer.
change-buffer
insert-substring-from-oldbuf-into-buffer)
change-back-to-original-buffer-when-finished
let-the-local-meaning-of-oldbuf-disappear-when-finished
总结append-to-buffer的工作方式:它保存当前缓冲区到变量oldbuf。获取或者新建一个缓冲区并让Emacs切换到那个缓冲区(非屏幕上显示的缓冲区)。使用oldbuf变量从旧缓冲区中获取文本区域插入到新缓冲区;然后使用save-excursion函数回到最初的缓冲区。
查看append-to-buffer代码,探究了复杂的函数。它展示了如何使用let和save-excursion,如何从另一个缓冲区回到原来的缓冲区。许多函数定义中以这种方式使用了let、save-excursion和set-buffer。
回顾
* describe-function
* describe-variable
打印函数或变量文档字符串。通常被绑定到C-h f和C-h v。
* find-tag
查找包含函数或变量的源码,并在缓冲区打开,并定位到对应的位置。通常绑定到M-.上。
* save-excursion
保存当前的point和mark,在传递给save-excursion的参数执行完后恢复这两个值。它也会记录下当前的缓冲区并重新回到这个缓冲区。
* push-mark
在某个位置设置mark并将之前的mark保存到mark ring里面去。mark是缓冲区中的一个位置,不管缓冲区中的文本添加或者删除,它都将保持它的相对位置。
* goto-char
设置point到参数指定的位置,参数可以是数字、mark或者返回位置数据的表达式,例如:(point-min).
* insert-buffer-substring
从传递给它的第一个参数(缓冲区)对应的缓冲区拷贝区域中的文本到当前缓冲区。
* mark-whole-buffer
把整个缓冲区标记为一个区域。通常绑定到C-x h上。
* get-buffer-create
* get-buffer
按名称查找缓冲区,如果缓冲区不存在就创建一个。get-buffer函数在查找不到缓冲区后将返回nil。
发表评论
-
emacs中使用semantic实现c代码自动完成功能
2008-11-25 16:29 9852环境: windows xp emacs 23 自已编译的cv ... -
Emacs Lisp中的hash table
2008-03-10 16:30 2307(defun zj-hash-test () "h ... -
Emacs Lisp与Shell的交互
2008-03-10 16:27 4569一直以来对于w3m、tramp、dired等与shell关系 ... -
Programming in Emacs Lisp笔记(十八) 终结
2007-07-20 11:34 2723笔记连载完毕。感谢大家的支持! 离线版本可以从这里下载。 -
Programming in Emacs Lisp笔记(十七) 调试
2007-07-20 11:11 5459调试 GNU Emacs中有两个高度器,debug和edeb ... -
Programming in Emacs Lisp笔记(十六).emacs文件
2007-07-20 11:10 6539.emacs文件 Emacs的缺省 ... -
Programming in Emacs Lisp笔记(十五)准备图表
2007-07-19 16:36 2420准备图表 我们的目标 ... -
Programming in Emacs Lisp笔记(十四)统计defun中的单词数量
2007-07-19 16:36 2882统计defun中的单词数量 我们的下一个计划是统计函数定义中 ... -
Programming in Emacs Lisp笔记(十三)计数:重复和正则表达式
2007-07-19 16:28 2668计数:重复和正则表达 ... -
Programming in Emacs Lisp笔记(十二)正则表达式查询
2007-07-19 16:26 4572正则表达式查询 在Emacs中正则表达式查询使用得很广泛。在 ... -
Programming in Emacs Lisp笔记(十一)循环和递归
2007-07-04 18:18 3596循环和递归 Emacs Lisp有 ... -
Programming in Emacs Lisp笔记(十)Yanking Text Back
2007-07-04 17:59 2980Yanking Text Back 当使用'kill'命令剪 ... -
Programming in Emacs Lisp笔记的离线版本(2007年7月20日更新,完整版)
2007-07-03 15:45 5247使用muse生成了这个笔记的html版本。里面有带链接的索引, ... -
Programming in Emacs Lisp笔记(九)List的实现
2007-07-03 14:20 2219List的实现 Lisp中list使 ... -
Programming in Emacs Lisp笔记(八)剪切和存储文本
2007-07-02 12:04 2725剪切和存储文本 当使用'kill'命令剪切文本时,Emacs ... -
Programming in Emacs Lisp笔记(七)基础函数:car, cdr, cons
2007-06-29 10:09 3819基础函数:car, cdr, cons Lisp中car,c ... -
Programming in Emacs Lisp笔记(六) Narrowing and Widening
2007-06-28 10:41 2336Narrowing and Widening Narrowi ... -
Programming in Emacs Lisp笔记(五)一些更复杂的函数
2007-06-27 13:04 2726一些更复杂的函数 copy-to-buffer的函数定义 ... -
Programming in Emacs Lisp笔记(三)编写函数
2007-06-25 15:01 4172编写函数 关于基本函数 ... -
Programming in Emacs Lisp笔记(二)实践
2007-06-25 15:01 2435实践 执行代码 通过C-x C-e执行代码 缓冲区名称 b ...
相关推荐
Programming in Emacs Lisp英文版
- **标题**:“An Introduction to Programming in Emacs Lisp”(Emacs Lisp编程入门) - **描述**:该资源是基于Emacs官方文档的重编版本,旨在提供更易阅读的字体样式。 #### 知识点详解 ##### 1. Emacs Lisp...
4. **与缓冲区相关的几个函数(A Few Buffer–Related Functions)**:探讨了与缓冲区管理相关的几个常用函数,如移动光标、搜索文本等。 5. **几个更复杂的函数(A Few More Complex Functions)**:介绍了几个涉及...
### Robert Chassell:An Introduction to Programming in Emacs Lisp #### 知识点概览 - **Lisp Lists**: 介绍Lisp列表的概念及其在Emacs Lisp中的应用。 - **Lisp Atoms**: 解释Lisp原子的基本概念以及它们在...
An Introduction to Programming in Emacs Lisp [3.10].chm
Programming in Emacs Lisp: An Introduction (美)Robert J.Chassell 著 毛文涛、吕芳 译 洪峰 审校 本书的作者罗伯特·卡塞尔是自由软件基金会的合创人之一,也是理查德·斯托曼博士青年时期结交的挚友,他...
### Emacs Lisp 函数手册知识点概览 #### 一、引言 Emacs Lisp(简称Elisp)是Emacs文本编辑器内置的一种高级编程语言。它不仅支持编辑文档时的脚本化操作,还具备完整的编程功能,使得用户可以扩展Emacs的功能。本...
四、Emacs Lisp在Emacs中的应用 1. 自定义键绑定:通过Elisp,用户可以将特定的操作绑定到键盘快捷键上,如`(global-set-key (kbd "C-c a") 'your-function)`。 2. 定制模式:Emacs支持各种语言的编辑模式,这些模式...
本书不仅详细介绍了Emacs Lisp编程的基础知识,如变量的定义、函数的创建、数据类型的处理等,还深入讲解了如何通过Emacs Lisp来扩展和定制Emacs编辑器的功能,实现个性化的编辑体验。此外,书中还包含了大量实用的...
这使得开发者可以在一个统一的环境中进行日常的开发工作,包括查看和编辑存储在GitHub上的Emacs Lisp项目,以及与团队成员共享和讨论代码。 总的来说,"Atom-language-emacs-lisp.zip"提供的内容对于在Atom中使用...
GNU emacs Lisp manual This is a very interesting text, useful to write and program in several languages. Emacs is a editor made in Lisp, a artificial intelligence language.
Elisp语法简洁,与传统的Lisp语言相似,主要由括号对构成,支持函数式编程和动态类型。 二、Emacs Lisp基本语法 1. 表达式和求值:在Elisp中,一切皆为表达式。每个表达式都有一个值,且程序的执行由表达式的求...
### GNU Emacs Lisp 参考手册知识点总结 #### 1. 引言 GNU Emacs Lisp 参考手册为Emacs版本22.1提供了详细的指导,该版本为修订版2.9,发布于2007年4月。该手册由Bil Lewis、Dan LaLiberte、Richard Stallman以及...
本书的英文版原名是《Programming in Emacs Lisp: An Introduction》,由自由软件基金会出版,享有复制与分发的权限。机械工业出版社在2001年5月出版了中文版,ISBN为7-111-08862-6。书籍的定价为38.00元,并承诺如...
GNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvuGNU EMACS lisp编程入门.djvu