# HG changeset patch # User Lars Hansen # Date 1083952933 0 # Node ID 029817c8eef35b987fdfacd9482bdb0fb1e012f0 # Parent f30ad6214291d301cb7fea1b58a0ff3e1237f5ef (Desktop Save Mode): Add. (Modes): Add menu entry Desktop Save Mode. diff -r f30ad6214291 -r 029817c8eef3 lispref/modes.texi --- a/lispref/modes.texi Fri May 07 17:58:24 2004 +0000 +++ b/lispref/modes.texi Fri May 07 18:02:13 2004 +0000 @@ -26,6 +26,8 @@ * Imenu:: How a mode can provide a menu of definitions in the buffer. * Font Lock Mode:: How modes can highlight text according to syntax. +* Desktop Save Mode:: How modes can have buffer state saved between + Emacs sessions. * Hooks:: How to use hooks; how to write code that provides hooks. @end menu @@ -2426,6 +2428,59 @@ @end defvar +@node Desktop Save Mode +@section Desktop Save Mode +@cindex desktop save mode + +@dfn{Desktop Save Mode} is a feature to save the state of Emacs from +one session to another. The user-level commands for using Desktop +Save Mode are described in the GNU Emacs Manual (@pxref{Saving Emacs +Sessions,,, emacs, the GNU Emacs Manual}). Modes whose buffers visit +a file, don't have to do anything to use this feature. + +For buffers not visiting a file to have their state saved, the major +mode must bind the buffer local variable @code{desktop-save-buffer} to +a non-nil value. + +@defvar desktop-save-buffer +If this buffer-local variable is non-@code{nil}, the buffer will have +its state saved in the desktop file at desktop save. If the value is +a function, it is called at desktop save with argument +@var{desktop-dirname}, and its value is saved in the desktop file along +with the state of the buffer for which it was called. When file names +are returned as part of the auxiliary information, they should be +formatted using the call + +@example +(desktop-file-name @var{file-name} @var{desktop-dirname}) +@end example + +@end defvar + +For buffers not visiting a file to be restored, the major mode must +define a function to do the job, and that function must be listed in +the alist @code{desktop-buffer-mode-handlers}. + +@defvar desktop-buffer-mode-handlers +Alist with elements + +@example +(@var{major-mode} . @var{restore-buffer-function}) +@end example + +The function @var{restore-buffer-function} will be called with +argument list + +@example +(@var{buffer-file-name} @var{buffer-name} @var{desktop-buffer-misc}) +@end example + +and it should return the restored buffer. +Here @var{desktop-buffer-misc} is the value returned by the function +optionally bound to @code{desktop-save-buffer}. + +@end defvar + @node Hooks @section Hooks @cindex hooks