Режим сохранения рабочего стола — это функция сохранения состояния Emacs из одной сессии в другую. Пользовательские команды для использования Режима сохранения рабочего стола описаны в Руководстве GNU Emacs (см. Сохранение сессий Emacs в Руководстве GNU Emacs). Режимы, буферы которых открывают файл, не обязаны ничего делать для использования этой функции.
Чтобы буферы, не открывающие файл, сохранили свое состояние, основной режим должен привязать локальную переменную буфера 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.