Emacs 工作原理

来源:互联网 发布:vb vc 编辑:程序博客网 时间:2024/06/07 06:22

最近发现越来越离不开Emacs了,情急之下为了让它更好的为我服务,就自己学习了Emacs lisp 编程,还挺有收获

 

一:几个相关的基本概念

1.原子是:多字符、单字符(如+号),双引号之间的字符串,或者数字。

2.Lisp程序是由表达式组成(一对括号和里面的内容就是一个表达式),表达式是列表或者单个原子。

3,一个表达式的第一个元素一般是一个函数,在Emacs中也就是一个命令,函数调用,直接(函数名 “...参数列表..") ,无参数时,参数为空。

4.单引号,”'” 被称作一个引用(quote),当单引号位于一个列表之前时,它告诉lisp不熬对这个列表做任何操作,而仅仅是按其原样。

5,可以在Emacs中的“scratch” 缓冲区中练习lisp语法,执行命令用C-x  C-e 或者,C-j,区别自己试试就知道了。如在(buffer-size)后执行C-j,将返回当前缓冲区的字符数。

6.当对一个函数(一般一对括号扩住的内容可以看做一个函数如(+ 2 2) ) 求值时总是返回一个值(除非得到一个错误消息)

.Lisp总是最先处理最内部括号中的内容,其返回值供外边一层用

 

二:Emacs的工作方式

每当在Emacs Lisp中发出一个编辑命令时,比如一个移动光标命令,就是对一个表达式求值,这个表达式的第一个元素就是一个函数。这就是Emacs的工作方式。

(当你击键时,你是让Lisp解释器对一个表达式求值,于是就得到了结果,即使你是键入的普通的文本,也是对Emacs Lisp求值,这个函数仅仅插入你输入的字符,比如你按了C-f 键,就是调用了forward-char 函数,这个函数让光标向前一个单词)

 

下面对(switch-to-buffer  (other-buffer)进行示例说明

1.符号switch-to-buffer 是这个列表的第一个元素,因此lisp解释器将对它视作一个函数,并执行这个命令。

2.但在这样做之前,解释器发现other-buffer在一个括号内,因此先处理这个列表。

3.other-buffe是这个列表的第一个元素,因此lisp解释器调用这个函数,它返回另外一个缓冲区。

4.下一步,解释器运行switch-to-buffer 函数,将另外这个缓冲区作为一个参量传给它,这后面一个缓冲区就是Emacs要切换到的缓冲区

  

最近我会把我学到的一些Emacs Lisp编程知识,分享出来,欢迎大家一块讨论,欢迎转载(不断更新中...................)

 

 http://blog.csdn.net/zhuyingqingfen/article/details/8057958

 

 

原创粉丝点击