2.5.1 缓冲区变量

缓冲区(buffer)是一个 lisp 对象。这个对象中包含了将要被编辑的文本。绝大多数的缓冲区中的内容来自硬盘中的文件,因此可以被编辑。不过也有一些缓冲区另有他用。绝大多数的缓冲区对用户而言都是可见的,因此有时它们可以放在一个窗口中。不过这并不是必要的,缓冲区不需要一定被用户看到。每个缓冲区都有一个特定的位置,这个位置称为编辑点(point);大多数的编辑命令,都是作用在当前缓冲区编辑点的附近的。不管任何时候,有且只有一个缓冲区称为当前缓冲区。

缓冲区的内容大多情况看起来都很像一个字符串,不过,这些字符串和 Emacs Lisp 中的字符串的用法可不一样。而且不同的缓冲区中,允许的操作也是可能不同的。举个例子,你可以像很高效地在当前缓冲区中插入文字,修改缓冲区的内容。当你插入一个字符串后,Emacs 会将其作为自字符串和原字符串拼接,并返回一整个新的字符串作为结果,展示在缓冲区内。

Emacs 中有很多标准函数,用来修改,测试当前缓冲区内的字符。本文档中有一整章的篇幅来描述这些函数。(详情查阅 文本章)

每个缓冲区变量都有几个关联的数据结构:

  • 一个局部语法表

  • 一个局部的按键映射

  • 一个缓冲区局部变量绑定的列表

  • 重载

  • 缓冲区中的文本的文本属性

局部按键绑定和局部变量绑定列表中包含许多个性化的,对全局变量的重写。这些变量一般用来自定义不同缓冲区中的不同表现。也就是说,通过重载这些变量,来修改程序(Emcas)的行为,而不需要触及程序的源码。

此外,缓冲区也可以是间接的。这意味着,这个缓冲区和另一个缓冲区共享文本,但是以不同的方式显示这些文本。详情查阅 简介缓冲区章节。

缓冲区没有读取语法,它们以哈希表示打印,其中包含这个缓冲区的名称。

(current-buffer)
    => #<buffer objects.texi>

最后更新于