本节介绍用于创建缓冲区的两个原语函数。
get-buffer-create 在未找到指定名称的现有缓冲区时会创建一个新缓冲区;
generate-new-buffer 则始终创建新缓冲区并为其分配唯一名称。
两个函数均接受可选参数 inhibit-buffer-hooks。
若该参数非 nil,则它们创建的缓冲区不会运行钩子
kill-buffer-hook、kill-buffer-query-functions
(see 杀死缓冲区)以及 buffer-list-update-hook
(see 缓冲区列表)。这可以避免那些从不展示给用户或传递给其他程序的
内部或临时缓冲区出现性能下降。
其他可用于创建缓冲区的函数包括
with-output-to-temp-buffer(see 临时显示)
和 create-file-buffer(see 访问文件)。
启动子进程同样可以创建缓冲区(see 进程)。
该函数返回名为 buffer-or-name 的缓冲区。 返回的缓冲区不会成为当前缓冲区——此函数不会改变当前缓冲区。
buffer-or-name 必须是字符串或已存在的缓冲区。
若为字符串且同名的活动缓冲区已存在,get-buffer-create
会返回该缓冲区。若不存在,则创建新缓冲区。
若 buffer-or-name 是缓冲区而非字符串,则直接返回该对象,即使它已失效。
(get-buffer-create "foo")
⇒ #<buffer foo>
新建缓冲区的主模式会被设为基本模式。
(变量 major-mode 的默认值在更上层处理;参见 Emacs 如何选择主模式。)
若缓冲区名称以空格开头,则初始会禁用撤销信息记录(see 撤销)。
该函数返回一个新建的空缓冲区,但不会将其设为当前缓冲区。
缓冲区名称通过将 name 传入函数 generate-new-buffer-name
生成(see 缓冲区名称)。因此,若不存在名为 name 的缓冲区,
则直接使用该名称;若名称已被占用,则在 name 后追加形如
‘<n>’ 的后缀,其中 n 为整数。
若 name 不是字符串,会抛出错误。
(generate-new-buffer "bar")
⇒ #<buffer bar>
(generate-new-buffer "bar")
⇒ #<buffer bar<2>>
(generate-new-buffer "bar")
⇒ #<buffer bar<3>>
新建缓冲区的主模式设为基本模式。变量 major-mode 的默认值在更上层处理。
See Emacs 如何选择主模式。