GNU Emacs Lisp编程入门

GNU Emacs Lisp编程入门
作 者: Robert Chassell 毛文涛 吕芳
出版社: 机械工业出版社
丛编项: GNU技术文档精粹
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Lisp
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《GNU Emacs Lisp编程入门》作者简介

内容简介

本书的作者罗伯特·卡塞尔是自由软件基金会的合创人之一,也是理查德·斯托曼博士青年时期结交的挚友,他精通GNU Emacs Lisp的每一个方面。本书是一本GNU EmacsLisp的编程入门,全书循序渐进地介绍了GNU EmacsLisp编程的各种基础知识和方法,文笔流畅、讲解透彻,对GNU Emacs用户提高对它的理解和运用帮助极大。GNU Emacs长期以来一直是自由软件基金会的旗舰产品,它是由理查德·斯托曼博十为GNU工程开发的第一个自由软件。在所有目前已开发的GNU软件中,GNU Emacs的作用和地位是非常突出的,几乎所有其他的自由软件基金会的工具都是用GNU Emacs编写的。从编程实践上看,GNU Emacs最为突出的特点是理查德·斯托曼在创造GNU Emacs编辑器时非常巧妙地揉和了用Lisp语言和C语言编写的代码。本书的作者罗伯特·卡塞尔是自由软件基金会的合创人之一,他精通GNU Emacs Lisp的每个方面。本书循序渐进地介绍了GNU Emacs Lisp编程的各种基础知识和方法,文笔流畅、讲解透彻,是GNU Emacs用户理解和运用GNU Emacs Lisp编程的最佳入门教程。

图书目录

致中国读者

译者序

前言

第1章 列表处理 1

1.1 Lisp列表 1

1.1.1 Lisp原子 1

1.1.2 列表中的空格 2

1.1.3 GNU Emacs帮助你输入列表 3

1.2 运行一个程序 3

1.3 产生错误消息 4

1.4 符号名和函数定义 5

1.5 Lisp解释器 5

1.6 求值 6

1.7 变量 7

1.8 参量 8

1.8.1 参量的数据类型 9

1.8.2 作为变量和列表的值的参量 10

1.8.3 数目可变的参量 10

1.8.4 用一个错误类型的数据对象作为

参量 10

1.8.5 message函数 11

1.9 给一个变量赋值 12

1.9.1 使用set函数 13

1.9.2 使用setq函数 13

1.9.3 计数 14

1.10 小结 15

1.11 练习 15

第2章 求值实践 16

2.1 缓冲区名 16

2.2 获得缓冲区 17

2.3 切换缓冲区 18

2.4 缓冲区大小和位点的定位 19

2.5 练习 20

第3章 如何编写函数定义 21

3.1 defun特殊表 21

3.2 安装函数定义 23

3.3 使函数成为交互函数 24

3.4 interactive函数的不同选项 25

3.5 永久地安装代码 26

3.6 let函数 27

3.6.1 let表达式的各个部分 27

3.6.2 let表达式例子 28

3.6.3 let语句中的未初始化变量 29

3.7 if特殊表 29

3.8 if-then-else表达式 31

3.9 Lisp中的真与假 32

3.10 save-excursion函数 33

3.11 回顾 35

3.12 练习 37

第4章 与缓冲区有关的函数 38

4.1 查找更多的信息 38

4.2 简化的beginning-of-buffer

函数定义 38

4.3 make-whole-buffer函数的定义 40

4.4 append-to-buffer函数的定义 41

4.4.1 append-to-buffer函数的交互

表达式 42

4.4.2 append-to-buffer函数体 42

4.4.3 append-to-buffer函数中

的save-excursion 43

4.5 回顾 45

4.6 练习 46

第5章 更复杂的函数 47

5.1 copy-to-buffer函数的定义 47

5.2 insert-buffer函数的定义 48

5.2.1 insert-buffer函数中的交互

表达式 48

5.2.2 insert-buffer函数体 49

5.2.3 用if表达式(而不是or表达式)

编写的insert-buffer函数 49

5.2.4 函数体中的or表达式 50

5.2.5 insert-buffer函数中的let

表达式 51

5.3 beginning-of-buffer函数的完

整定义 52

5.3.1 可选参量 52

5.3.2 带参量的beginning-of-buffer

函数 53

5.3.3 完整的beginning-of-buffer

函数 55

5.4 回顾 56

5.5 &optional参量练习 57

第6章 变窄和增宽 58

6.1 save-restriction特殊表 58

6.2 what-line函数 59

6.3 练习:变窄 60

第7章 基本函数:car. cdr. cons 61

7.1 car和cdr函数 61

7.2 cons函数 63

7.3 nthcdr函数 64

7.4 setcar函数 65

7.5 setcdr函数 66

7.6 练习 67

第8章 剪切和存储文本 68

8.1 zap-to-char函数 69

8.1.1 interactive表达式 69

8.1.2 zap-to-char函数体 70

8.1.3 search-forward函数 70

8.1.4 progn函数 71

8.1.5 总结zap-to-char函数 71

8.1.6 第18版中zap-to-char函数的

实现方法 72

8.1.7 progn表达式主体 73

8.2 kill-region函数 74

8.3 delete-region函数:接触C 75

8.4 用defvar初始化变量 76

8.5 copy-region-as-kill函数 77

8.6 回顾 82

8.7 查找练习 83

第9章 列表是如何实现的 85

第10章 找回文本 88

10.1 kill环总览 88

10.2 kill-ring-yank-pointer变量 88

10.3 练习:使用yank函数和nthcdr函数 89

第11章 循环和递归 90

11.1 while 90

11.1.1 while循环和列表 91

11.1.2 一个例子:print-elements

-of-list 92

11.1.3 使用增量计数器的循环 93

11.1.4 使用减量计数器的循环 96

11.2 递归 98

11.2.1 使用列表的递归函数 99

11.2.2 用递归算法代替计数器 100

11.2.3 使用cond的递归例子 102

11.3 有关循环表达式的练习 102

第12章 正则表达式查询 104

12.1 查询sentence-end的正则表达式 104

12.2 re-search-forward函数 105

12.3 forward-sentence函数 106

12.4 forward-paragraph:函数的金矿 109

12.5 创建自己的“TAGS”文件 115

12.6 回顾 116

12.7 练习:使用re-search-forward 117

第13章 计数:重复和正则表达式 118

13.1 count-words-region函数 118

13.2 用递归的方法实现单词计数 123

13.3 练习:统计标点符号的数量 127

第14章 统计函数定义中的单词数 128

14.1 计数什么? 128

14.2 单词或者符号是由什么构成的? 129

14.3 count-words-in-defun函数 130

14.4 在一个文件中统计几个函数定

义的单词数 132

14.5 查找文件 133

14.6 lengths-list-file函数详解 134

14.7 在不同文件中统计几个函数定义

的单词数 135

14.8 在不同文件中递归地统计单词数 137

14.9 为图形显示准备数据 138

14.9.1 对列表排序 138

14.9.2 制作一个文件列表 139

第15章 准备柱型图 144

15.1 graph-body-print函数 148

15.2 recursive-graph-body-print

函数 150

15.3 需要打印的坐标轴 151

15.4 练习 151

第16章 配置你的“.emacs”文件 152

16.1 全站点的初始化文件 152

16.2 为一项任务设置变量 153

16.3 开始改变“.emacs”文件 153

16.4 文本和自动填充模式 154

16.5 邮件别名 156

16.6 缩排模式 156

16.7 一些绑定键 156

16.8 加载文件 157

16.9 自动加载 158

16.10 一个简单的功能扩充:

line-to-top-of-window 159

16.11 键图 161

16.12 X11的颜色 162

16.13 V19中的小技巧 163

16.14 修改模式行 163

第17章 调试 165

17.1 debug 165

17.2 debug-on-entry 166

17.3 debug-on-quit和(debug) 168

17.4 源代码级调试器edebug 168

17.5 调试练习 170

第18章 结论 171

附录A the-the函数 173

附录B kill环的处理 175

B.1 rotate-yank-pointer函数 175

B.2 yank函数 180

B.3 yank-pop函数 182

附录C 带坐标轴的图 184

C.1 print-graph函数的变量列表 185

C.2 print-Y-axis函数 185

C.2.1 题外话:计算余数 186

C.2.2 构造一个Y轴元素 188

C.2.3 创建Y坐标轴 189

C.2.4 print-Y-axis函数的最后形式 190

C.3 print-X-axis函数 190

C.4 打印整个图形 194

C.4.1 测试print-graph函数 197

C.4.2 绘制函数中单词和符号数的图形 198

C.4.3 打印出来的图形 202