Desktop Save Mode 用于在不同会话间保存 Emacs 的状态。使用该模式的用户级命令已在《GNU Emacs 手册》中说明(see Saving Emacs Sessions in the GNU Emacs Manual)。缓冲区关联文件的模式无需额外配置即可使用该功能。
若要使未关联文件的缓冲区也保存状态,其主模式需将缓冲区局部变量 desktop-save-buffer 绑定为非 nil 值。
若该缓冲区局部变量非 nil,则在桌面保存时会将缓冲区状态写入桌面文件。若其值为函数,则在桌面保存时以 desktop-dirname 为参数调用该函数,并将返回值与对应缓冲区状态一同保存至桌面文件。当辅助信息中包含文件名时,应通过如下调用格式化:
(desktop-file-name file-name desktop-dirname)
若要恢复未关联文件的缓冲区,主模式需定义对应的恢复函数,并将该函数加入关联列表 desktop-buffer-mode-handlers。
元素格式如下的关联列表:
(major-mode . restore-buffer-function)
函数 restore-buffer-function 将以如下参数列表调用:
(buffer-file-name buffer-name desktop-buffer-misc)
并返回恢复后的缓冲区。其中 desktop-buffer-misc 为可选绑定至 desktop-save-buffer 的函数所返回的值。