annotate lisp/desktop.el @ 56811:694cd033cd0d

Make "GNU GENERAL PUBLIC LICENSE" an appendix. Rearrange order of nodes and sections such that both "GNU GENERAL PUBLIC LICENSE" and "GNU Free Documentation License" appear at the end, as appropriate for appendices. (Acknowledgments): Use `@unnumberedsec'.
author Luc Teirlinck <teirllm@auburn.edu>
date Fri, 27 Aug 2004 23:36:38 +0000
parents 27173676bedf
children 791b0637af6d 4c90ffeb71c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; desktop.el --- save partial status of Emacs when killed
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
38592
27468a9cf559 (desktop-save): Add `-*- coding: emacs-mule -*-' to
Gerd Moellmann <gerd@gnu.org>
parents: 32447
diff changeset
3 ;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001
27468a9cf559 (desktop-save): Add `-*- coding: emacs-mule -*-' to
Gerd Moellmann <gerd@gnu.org>
parents: 32447
diff changeset
4 ;; Free Software Foundation, Inc.
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Author: Morten Welinder <terra@diku.dk>
51468
2c411b58af59 Add new maintainer.
Juanma Barranquero <lekktu@gmail.com>
parents: 51441
diff changeset
7 ;; Maintainter: Lars Hansen <larsh@math.ku.dk>
27577
beed019fbf10 Fix keywords comment.
Dave Love <fx@gnu.org>
parents: 23699
diff changeset
8 ;; Keywords: convenience
5314
e65e125e5334 Add keywords.
Richard M. Stallman <rms@gnu.org>
parents: 4830
diff changeset
9 ;; Favourite-brand-of-beer: None, I hate beer.
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; any later version.
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
26 ;; Boston, MA 02111-1307, USA.
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;;; Commentary:
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
30 ;; Save the Desktop, i.e.,
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
31 ;; - some global variables
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
32 ;; - the list of buffers with associated files. For each buffer also
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
33 ;; - the major mode
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
34 ;; - the default directory
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
35 ;; - the point
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
36 ;; - the mark & mark-active
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
37 ;; - buffer-read-only
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
38 ;; - some local variables
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
40 ;; To use this, use customize to turn on desktop-save-mode or add the
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
41 ;; following line somewhere in your .emacs file:
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
42 ;;
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
43 ;; (desktop-save-mode 1)
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
44 ;;
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
45 ;; For further usage information, look at the section
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
46 ;; "Saving Emacs Sessions" in the GNU Emacs Manual.
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
48 ;; When the desktop module is loaded, the function `desktop-kill' is
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
49 ;; added to the `kill-emacs-hook'. This function is responsible for
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
50 ;; saving the desktop when Emacs is killed. Furthermore an anonymous
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
51 ;; function is added to the `after-init-hook'. This function is
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
52 ;; responsible for loading the desktop when Emacs is started.
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
53
28719
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
54 ;; Some words on minor modes: Most minor modes are controlled by
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
55 ;; buffer-local variables, which have a standard save / restore
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
56 ;; mechanism. To handle all minor modes, we take the following
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
57 ;; approach: (1) check whether the variable name from
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
58 ;; `minor-mode-alist' is also a function; and (2) use translation
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
59 ;; table `desktop-minor-mode-table' in the case where the two names
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
60 ;; are not the same.
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
61
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
62 ;; By the way: don't use desktop.el to customize Emacs -- the file .emacs
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
63 ;; in your home directory is used for that. Saving global default values
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
64 ;; for buffers is an example of misuse.
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
65
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
66 ;; PLEASE NOTE: The kill ring can be saved as specified by the variable
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
67 ;; `desktop-globals-to-save' (by default it isn't). This may result in saving
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
68 ;; things you did not mean to keep. Use M-x desktop-clear RET.
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
69
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
70 ;; Thanks to hetrick@phys.uva.nl (Jim Hetrick) for useful ideas.
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
71 ;; avk@rtsg.mot.com (Andrew V. Klein) for a dired tip.
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
72 ;; chris@tecc.co.uk (Chris Boucher) for a mark tip.
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
73 ;; f89-kam@nada.kth.se (Klas Mellbourn) for a mh-e tip.
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
74 ;; kifer@sbkifer.cs.sunysb.edu (M. Kifer) for a bug hunt.
11224
f7f101a90cd4 (desktop-save): Use dired-directory as name
Richard M. Stallman <rms@gnu.org>
parents: 10777
diff changeset
75 ;; treese@lcs.mit.edu (Win Treese) for ange-ftp tips.
14172
da563949c7d7 (desktop-read): Do nothing in batch mode.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
76 ;; pot@cnuce.cnr.it (Francesco Potorti`) for misc. tips.
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
77 ;; ---------------------------------------------------------------------------
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
78 ;; TODO:
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
79 ;;
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
80 ;; Save window configuration.
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
81 ;; Recognize more minor modes.
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
82 ;; Save mark rings.
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;;; Code:
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
86 (defvar desktop-file-version "206"
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
87 "Version number of desktop file format.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
88 Written into the desktop file and used at desktop read to provide
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
89 backward compatibility.")
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
90
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
91 ;; ----------------------------------------------------------------------------
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
92 ;; USER OPTIONS -- settings you might want to play with.
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
93 ;; ----------------------------------------------------------------------------
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
94
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
95 (defgroup desktop nil
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
96 "Save status of Emacs when you exit."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
97 :group 'frames)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
98
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
99 ;;;###autoload
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
100 (define-minor-mode desktop-save-mode
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
101 "Toggle desktop saving mode.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
102 With numeric ARG, turn desktop saving on if ARG is positive, off
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
103 otherwise. See variable `desktop-save' for a description of when the
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
104 desktop is saved."
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
105 :global t
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
106 :group 'desktop)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
107
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
108 ;; Maintained for backward compatibility
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
109 (defvaralias 'desktop-enable 'desktop-save-mode)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
110 (make-obsolete-variable 'desktop-enable 'desktop-save-mode)
20526
ec0a8ccddd6c (desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18581
diff changeset
111
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
112 (defcustom desktop-save 'ask-if-new
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
113 "*Specifies whether the desktop should be saved when it is killed.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
114 A desktop is killed when the user changes desktop or quits Emacs.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
115 Possible values are:
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
116 t -- always save.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
117 ask -- always ask.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
118 ask-if-new -- ask if no desktop file exists, otherwise just save.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
119 ask-if-exists -- ask if desktop file exists, otherwise don't save.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
120 if-exists -- save if desktop file exists, otherwise don't save.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
121 nil -- never save.
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
122 The desktop is never saved when `desktop-save-mode' is nil.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
123 The variables `desktop-directory' and `desktop-base-file-name'
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
124 determine where the desktop is saved."
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
125 :type '(choice
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
126 (const :tag "Always save" t)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
127 (const :tag "Always ask" ask)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
128 (const :tag "Ask if desktop file is new, else do save" ask-if-new)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
129 (const :tag "Ask if desktop file exists, else don't save" ask-if-exists)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
130 (const :tag "Save if desktop file exists, else don't" if-exists)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
131 (const :tag "Never save" nil))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
132 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
133
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
134 (defcustom desktop-base-file-name
16037
a1e88c05b53c (desktop-basefilename): Use convert-standard-filename.
Richard M. Stallman <rms@gnu.org>
parents: 14756
diff changeset
135 (convert-standard-filename ".emacs.desktop")
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
136 "Name of file for Emacs desktop, excluding the directory part."
20526
ec0a8ccddd6c (desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18581
diff changeset
137 :type 'file
ec0a8ccddd6c (desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18581
diff changeset
138 :group 'desktop)
50583
aea857f85930 (desktop-base-file-name): Renamed from desktop-basefilename. Add defvaralias.
Richard M. Stallman <rms@gnu.org>
parents: 50532
diff changeset
139 (defvaralias 'desktop-basefilename 'desktop-base-file-name)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
141 (defcustom desktop-path '("." "~")
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
142 "List of directories to search for the desktop file.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
143 The base name of the file is specified in `desktop-base-file-name'."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
144 :type '(repeat directory)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
145 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
146
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
147 (defcustom desktop-missing-file-warning nil
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
148 "*If non-nil then `desktop-read' asks if a non-existent file should be recreated.
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
149 Also pause for a moment to display message about errors signaled in
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
150 `desktop-buffer-mode-handlers'.
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
151
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
152 If nil, just print error messages in the message buffer."
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
153 :type 'boolean
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
154 :group 'desktop)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
156 (defcustom desktop-no-desktop-file-hook nil
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
157 "Normal hook run when `desktop-read' can't find a desktop file.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
158 May e.g. be used to show a dired buffer."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
159 :type 'hook
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
160 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
161
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
162 (defcustom desktop-after-read-hook nil
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
163 "Normal hook run after a successful `desktop-read'.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
164 May e.g. be used to show a buffer list."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
165 :type 'hook
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
166 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
167
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
168 (defcustom desktop-save-hook nil
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
169 "Normal hook run before the desktop is saved in a desktop file.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
170 This is useful for truncating history lists, for example."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
171 :type 'hook
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
172 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
173
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
174 (defcustom desktop-globals-to-save '(
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
175 desktop-missing-file-warning
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
176 tags-file-name
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
177 tags-table-list
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
178 search-ring
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
179 regexp-search-ring
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
180 register-alist)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
181 "List of global variables saved by `desktop-save'.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
182 An element may be variable name (a symbol) or a cons cell of the form
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
183 \(VAR . MAX-SIZE), which means to truncate VAR's value to at most
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
184 MAX-SIZE elements (if the value is a list) before saving the value.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
185 Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
186 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
187 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
188
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
189 (defcustom desktop-globals-to-clear '(
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
190 kill-ring
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
191 kill-ring-yank-pointer
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
192 search-ring
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
193 search-ring-yank-pointer
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
194 regexp-search-ring
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
195 regexp-search-ring-yank-pointer)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
196 "List of global variables to clear by `desktop-clear'.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
197 An element may be variable name (a symbol) or a cons cell of the form
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
198 \(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
199 to the value obtained by evaluateing FORM."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
200 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
201 :group 'desktop)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
203 (defcustom desktop-clear-preserve-buffers-regexp
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
204 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
205 "Regexp identifying buffers that `desktop-clear' should not delete."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
206 :type 'regexp
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
207 :group 'desktop)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
208
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
209 ;; Maintained for backward compatibility
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
210 (defcustom desktop-clear-preserve-buffers nil
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
211 "*List of buffer names that `desktop-clear' should not delete.
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
212 This variable is maintained for backward compatibility only."
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
213 :type '(repeat string)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
214 :group 'desktop)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
215 (make-obsolete-variable 'desktop-clear-preserve-buffers
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
216 'desktop-clear-preserve-buffers-regexp)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
217
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
218 (defcustom desktop-locals-to-save '(
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
219 desktop-locals-to-save ; Itself! Think it over.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
220 truncate-lines
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
221 case-fold-search
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
222 case-replace
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
223 fill-column
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
224 overwrite-mode
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
225 change-log-default-name
52996
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
226 line-number-mode
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
227 buffer-file-coding-system)
10595
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
228 "List of local variables to save for each buffer.
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
229 The variables are saved only when they really are local."
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
230 :type '(repeat symbol)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
231 :group 'desktop)
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
232 (make-variable-buffer-local 'desktop-locals-to-save)
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
233
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
234 ;; We skip .log files because they are normally temporary.
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13154
diff changeset
235 ;; (ftp) files because they require passwords and whatnot.
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
236 ;; TAGS files to save time (tags-file-name is saved instead).
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
237 (defcustom desktop-buffers-not-to-save
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
238 "\\(^nn\\.a[0-9]+\\|\\.log\\|(ftp)\\|^tags\\|^TAGS\\)$"
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
239 "Regexp identifying buffers that are to be excluded from saving."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
240 :type 'regexp
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
241 :group 'desktop)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
243 ;; Skip tramp and ange-ftp files
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
244 (defcustom desktop-files-not-to-save
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
245 "^/[^/:]*:"
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
246 "Regexp identifying files whose buffers are to be excluded from saving."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
247 :type 'regexp
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
248 :group 'desktop)
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
249
32366
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
250 (defcustom desktop-modes-not-to-save nil
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
251 "List of major modes whose buffers should not be saved."
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
252 :type '(repeat symbol)
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
253 :group 'desktop)
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
254
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
255 (defcustom desktop-file-name-format 'absolute
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
256 "*Format in which desktop file names should be saved.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
257 Possible values are:
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
258 absolute -- Absolute file name.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
259 tilde -- Relative to ~.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
260 local -- Relative to directory of desktop file."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
261 :type '(choice (const absolute) (const tilde) (const local))
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
262 :group 'desktop)
14755
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
263
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
264 ;;;###autoload
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
265 (defvar desktop-save-buffer nil
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
266 "When non-nil, save buffer status in desktop file.
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
267 This variable becomes buffer local when set.
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
268
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
269 If the value is a function, it called by `desktop-save' with argument
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
270 DESKTOP-DIRNAME to obtain auxiliary information to saved in the desktop
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
271 file along with the state of the buffer for which it was called.
32447
cfae1c82d702 Added extensible special buffer support to desktop.el. See the
John Wiegley <johnw@newartisans.com>
parents: 32366
diff changeset
272
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
273 When file names are returned, they should be formatted using the call
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
274 \"(desktop-file-name FILE-NAME DESKTOP-DIRNAME)\".
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
275
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
276 Later, when `desktop-read' calls a function in `desktop-buffer-mode-handlers'
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
277 to restore the buffer, the auxiliary information is passed as the argument
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
278 DESKTOP-BUFFER-MISC.")
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
279 (make-variable-buffer-local 'desktop-save-buffer)
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
280 (make-obsolete-variable 'desktop-buffer-modes-to-save
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
281 'desktop-save-buffer)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
282 (make-obsolete-variable 'desktop-buffer-misc-functions
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
283 'desktop-save-buffer)
32447
cfae1c82d702 Added extensible special buffer support to desktop.el. See the
John Wiegley <johnw@newartisans.com>
parents: 32366
diff changeset
284
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
285 (defcustom desktop-buffer-mode-handlers '(
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
286 (dired-mode . dired-restore-desktop-buffer)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
287 (rmail-mode . rmail-restore-desktop-buffer)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
288 (mh-folder-mode . mh-restore-desktop-buffer)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
289 (Info-mode . Info-restore-desktop-buffer))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
290 "Alist of major mode specific functions to restore a desktop buffer.
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
291 Functions are called by `desktop-read'. List elements must have the form
55413
f30ad6214291 (desktop-buffer-mode-handlers): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents: 55179
diff changeset
292 \(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
293
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
294 Buffers with a major mode not specified here, are restored by the default
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
295 handler `desktop-restore-file-buffer'.
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
296
55413
f30ad6214291 (desktop-buffer-mode-handlers): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents: 55179
diff changeset
297 Handlers are called with argument list
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
298
55418
b92f1b7ca228 (desktop-buffer-mode-handlers): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents: 55413
diff changeset
299 (DESKTOP-BUFFER-FILE-NAME DESKTOP-BUFFER-NAME DESKTOP-BUFFER-MISC)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
300
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
301 Furthermore, they may use the following variables:
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
302
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
303 desktop-file-version
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
304 desktop-buffer-major-mode
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
305 desktop-buffer-minor-modes
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
306 desktop-buffer-point
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
307 desktop-buffer-mark
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
308 desktop-buffer-read-only
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
309 desktop-buffer-locals
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
310
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
311 If a handler returns a buffer, then the saved mode settings
43831
7837693f5bac (desktop-buffer-handlers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41150
diff changeset
312 and variable values for that buffer are copied into it."
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
313 :type 'alist
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17204
diff changeset
314 :group 'desktop)
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
315
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
316 (put 'desktop-buffer-mode-handlers 'risky-local-variable t)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
317 (make-obsolete-variable 'desktop-buffer-handlers
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
318 'desktop-buffer-mode-handlers)
32447
cfae1c82d702 Added extensible special buffer support to desktop.el. See the
John Wiegley <johnw@newartisans.com>
parents: 32366
diff changeset
319
28719
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
320 (defcustom desktop-minor-mode-table
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
321 '((auto-fill-function auto-fill-mode)
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
322 (vc-mode nil))
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
323 "Table mapping minor mode variables to minor mode functions.
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
324 Each entry has the form (NAME RESTORE-FUNCTION).
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
325 NAME is the name of the buffer-local variable indicating that the minor
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
326 mode is active. RESTORE-FUNCTION is the function to activate the minor mode.
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
327 called. RESTORE-FUNCTION nil means don't try to restore the minor mode.
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
328 Only minor modes for which the name of the buffer-local variable
55871
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
329 and the name of the minor mode function are different have to be added to
28719
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
330 this table."
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
331 :type 'sexp
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
332 :group 'desktop)
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
333
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
334 ;; ----------------------------------------------------------------------------
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
335 (defvar desktop-dirname nil
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
336 "The directory in which the desktop file should be saved.")
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (defconst desktop-header
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
339 ";; --------------------------------------------------------------------------
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
340 ;; Desktop File for Emacs
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
341 ;; --------------------------------------------------------------------------
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 " "*Header to place in Desktop file.")
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
343
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
344 (defvar desktop-delay-hook nil
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
345 "Hooks run after all buffers are loaded; intended for internal use.")
20526
ec0a8ccddd6c (desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18581
diff changeset
346
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
347 ;; ----------------------------------------------------------------------------
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
348 (defun desktop-truncate (list n)
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
349 "Truncate LIST to at most N elements destructively."
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
350 (let ((here (nthcdr (1- n) list)))
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
351 (if (consp here)
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
352 (setcdr here nil))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
353
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
354 ;; ----------------------------------------------------------------------------
18581
45f27efe77c7 (desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18527
diff changeset
355 (defun desktop-clear ()
45f27efe77c7 (desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18527
diff changeset
356 "Empty the Desktop.
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
357 This kills all buffers except for internal ones and those matching
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
358 `desktop-clear-preserve-buffers-regexp' or listed in
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
359 `desktop-clear-preserve-buffers'. Furthermore, it clears the
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
360 variables listed in `desktop-globals-to-clear'."
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (interactive)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
362 (dolist (var desktop-globals-to-clear)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
363 (if (symbolp var)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
364 (eval `(setq-default ,var nil))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
365 (eval `(setq-default ,(car var) ,(cdr var)))))
18581
45f27efe77c7 (desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18527
diff changeset
366 (let ((buffers (buffer-list)))
45f27efe77c7 (desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18527
diff changeset
367 (while buffers
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
368 (let ((bufname (buffer-name (car buffers))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
369 (or
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
370 (null bufname)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
371 (string-match desktop-clear-preserve-buffers-regexp bufname)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
372 (member bufname desktop-clear-preserve-buffers)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
373 ;; Don't kill buffers made for internal purposes.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
374 (and (not (equal bufname "")) (eq (aref bufname 0) ?\ ))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
375 (kill-buffer (car buffers))))
18581
45f27efe77c7 (desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18527
diff changeset
376 (setq buffers (cdr buffers))))
5314
e65e125e5334 Add keywords.
Richard M. Stallman <rms@gnu.org>
parents: 4830
diff changeset
377 (delete-other-windows))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
378
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
379 ;; ----------------------------------------------------------------------------
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
380 (add-hook 'kill-emacs-hook 'desktop-kill)
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
381
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (defun desktop-kill ()
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
383 "If `desktop-save-mode' is non-nil, do what `desktop-save' says to do.
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
384 If the desktop should be saved and `desktop-dirname'
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
385 is nil, ask the user where to save the desktop."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
386 (when
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
387 (and
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
388 desktop-save-mode
51441
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
389 (let ((exists (file-exists-p (expand-file-name desktop-base-file-name desktop-dirname))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
390 (or
52217
2261bea7f3b6 Commentary change.
Alex Schroeder <alex@gnu.org>
parents: 51894
diff changeset
391 (eq desktop-save t)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
392 (and exists (memq desktop-save '(ask-if-new if-exists)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
393 (and
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
394 (or
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
395 (memq desktop-save '(ask ask-if-new))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
396 (and exists (eq desktop-save 'ask-if-exists)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
397 (y-or-n-p "Save desktop? ")))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
398 (unless desktop-dirname
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
399 (setq desktop-dirname
51441
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
400 (file-name-as-directory
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
401 (expand-file-name
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
402 (call-interactively
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
403 (lambda (dir) (interactive "DDirectory for desktop file: ") dir))))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
404 (condition-case err
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
405 (desktop-save desktop-dirname)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
406 (file-error
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
407 (unless (yes-or-no-p "Error while saving the desktop. Ignore? ")
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
408 (signal (car err) (cdr err)))))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
409
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
410 ;; ----------------------------------------------------------------------------
14754
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
411 (defun desktop-list* (&rest args)
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
412 (if (null (cdr args))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
413 (car args)
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
414 (setq args (nreverse args))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
415 (let ((value (cons (nth 1 args) (car args))))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
416 (setq args (cdr (cdr args)))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
417 (while args
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
418 (setq value (cons (car args) value))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
419 (setq args (cdr args)))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
420 value)))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
421
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
422 ;; ----------------------------------------------------------------------------
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
423 (defun desktop-internal-v2s (value)
10595
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
424 "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE.
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
425 TXT is a string that when read and evaluated yields value.
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
426 QUOTE may be `may' (value may be quoted),
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
427 `must' (values must be quoted), or nil (value may not be quoted)."
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
428 (cond
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
429 ((or (numberp value) (null value) (eq t value))
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
430 (cons 'may (prin1-to-string value)))
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
431 ((stringp value)
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
432 (let ((copy (copy-sequence value)))
10777
9f4a9820fea1 (desktop-internal-v2s): Don't use format to eliminate text properties.
Richard M. Stallman <rms@gnu.org>
parents: 10595
diff changeset
433 (set-text-properties 0 (length copy) nil copy)
9f4a9820fea1 (desktop-internal-v2s): Don't use format to eliminate text properties.
Richard M. Stallman <rms@gnu.org>
parents: 10595
diff changeset
434 ;; Get rid of text properties because we cannot read them
9f4a9820fea1 (desktop-internal-v2s): Don't use format to eliminate text properties.
Richard M. Stallman <rms@gnu.org>
parents: 10595
diff changeset
435 (cons 'may (prin1-to-string copy))))
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
436 ((symbolp value)
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
437 (cons 'must (prin1-to-string value)))
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
438 ((vectorp value)
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
439 (let* ((special nil)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
440 (pass1 (mapcar
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
441 (lambda (el)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
442 (let ((res (desktop-internal-v2s el)))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
443 (if (null (car res))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
444 (setq special t))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
445 res))
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
446 value)))
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
447 (if special
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
448 (cons nil (concat "(vector "
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
449 (mapconcat (lambda (el)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
450 (if (eq (car el) 'must)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
451 (concat "'" (cdr el))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
452 (cdr el)))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
453 pass1
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
454 " ")
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
455 ")"))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
456 (cons 'may (concat "[" (mapconcat 'cdr pass1 " ") "]")))))
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
457 ((consp value)
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
458 (let ((p value)
7200
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
459 newlist
14754
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
460 use-list*
7200
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
461 anynil)
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
462 (while (consp p)
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
463 (let ((q.txt (desktop-internal-v2s (car p))))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
464 (or anynil (setq anynil (null (car q.txt))))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
465 (setq newlist (cons q.txt newlist)))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
466 (setq p (cdr p)))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
467 (if p
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
468 (let ((last (desktop-internal-v2s p))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
469 (el (car newlist)))
14754
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
470 (or anynil (setq anynil (null (car last))))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
471 (or anynil
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
472 (setq newlist (cons '(must . ".") newlist)))
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
473 (setq use-list* t)
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
474 (setq newlist (cons last newlist))))
7200
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
475 (setq newlist (nreverse newlist))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
476 (if anynil
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
477 (cons nil
14754
9955249f9b0f (desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14172
diff changeset
478 (concat (if use-list* "(desktop-list* " "(list ")
7200
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
479 (mapconcat (lambda (el)
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
480 (if (eq (car el) 'must)
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
481 (concat "'" (cdr el))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
482 (cdr el)))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
483 newlist
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
484 " ")
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
485 ")"))
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
486 (cons 'must
eabd5e6e95de (desktop-internal-v2s): Default case fixed to return correct quote flag.
Richard M. Stallman <rms@gnu.org>
parents: 7091
diff changeset
487 (concat "(" (mapconcat 'cdr newlist " ") ")")))))
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
488 ((subrp value)
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
489 (cons nil (concat "(symbol-function '"
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
490 (substring (prin1-to-string value) 7 -1)
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
491 ")")))
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
492 ((markerp value)
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
493 (let ((pos (prin1-to-string (marker-position value)))
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
494 (buf (prin1-to-string (buffer-name (marker-buffer value)))))
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
495 (cons nil (concat "(let ((mk (make-marker)))"
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
496 " (add-hook 'desktop-delay-hook"
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
497 " (list 'lambda '() (list 'set-marker mk "
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
498 pos " (get-buffer " buf ")))) mk)"))))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
499 (t ; save as text
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
500 (cons 'may "\"Unprintable entity\""))))
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
501
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
502 ;; ----------------------------------------------------------------------------
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
503 (defun desktop-value-to-string (value)
10595
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
504 "Convert VALUE to a string that when read evaluates to the same value.
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
505 Not all types of values are supported."
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
506 (let* ((print-escape-newlines t)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
507 (float-output-format nil)
54206
ecf0e7a0567a (desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 52996
diff changeset
508 (quote.txt (desktop-internal-v2s value))
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
509 (quote (car quote.txt))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
510 (txt (cdr quote.txt)))
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
511 (if (eq quote 'must)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
512 (concat "'" txt)
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
513 txt)))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
514
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
515 ;; ----------------------------------------------------------------------------
13154
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
516 (defun desktop-outvar (varspec)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
517 "Output a setq statement for variable VAR to the desktop file.
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
518 The argument VARSPEC may be the variable name VAR (a symbol),
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
519 or a cons cell of the form (VAR . MAX-SIZE),
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
520 which means to truncate VAR's value to at most MAX-SIZE elements
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
521 \(if the value is a list) before saving the value."
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
522 (let (var size)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
523 (if (consp varspec)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
524 (setq var (car varspec) size (cdr varspec))
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
525 (setq var varspec))
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
526 (if (boundp var)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
527 (progn
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
528 (if (and (integerp size)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
529 (> size 0)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
530 (listp (eval var)))
28719
f56c181fb849 (desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents: 27577
diff changeset
531 (desktop-truncate (eval var) size))
13154
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
532 (insert "(setq "
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
533 (symbol-name var)
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
534 " "
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
535 (desktop-value-to-string (symbol-value var))
f86e18ff3736 (desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents: 11224
diff changeset
536 ")\n")))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
537
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
538 ;; ----------------------------------------------------------------------------
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
539 (defun desktop-save-buffer-p (filename bufname mode &rest dummy)
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
540 "Return t if buffer should have its state saved in the desktop file.
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
541 FILENAME is the visited file name, BUFNAME is the buffer name, and
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 MODE is the major mode."
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
543 (let ((case-fold-search nil))
32366
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
544 (and (not (string-match desktop-buffers-not-to-save bufname))
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
545 (not (memq mode desktop-modes-not-to-save))
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
546 (or (and filename
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
547 (not (string-match desktop-files-not-to-save filename)))
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
548 (and (eq mode 'dired-mode)
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
549 (with-current-buffer bufname
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
550 (not (string-match desktop-files-not-to-save
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
551 default-directory))))
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
552 (and (null filename)
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
553 (with-current-buffer bufname desktop-save-buffer))))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
554
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
555 ;; ----------------------------------------------------------------------------
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
556 (defun desktop-file-name (filename dirname)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
557 "Convert FILENAME to format specified in `desktop-file-name-format'.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
558 DIRNAME must be the directory in which the desktop file will be saved."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
559 (cond
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
560 ((not filename) nil)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
561 ((eq desktop-file-name-format 'tilde)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
562 (let ((relative-name (file-relative-name (expand-file-name filename) "~")))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
563 (cond
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
564 ((file-name-absolute-p relative-name) relative-name)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
565 ((string= "./" relative-name) "~/")
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
566 ((string= "." relative-name) "~")
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
567 (t (concat "~/" relative-name)))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
568 ((eq desktop-file-name-format 'local) (file-relative-name filename dirname))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
569 (t (expand-file-name filename))))
48143
8c7919f99581 (desktop-relative-file-names): New variable.
Juanma Barranquero <lekktu@gmail.com>
parents: 43831
diff changeset
570
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
571 ;; ----------------------------------------------------------------------------
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (defun desktop-save (dirname)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
573 "Save the desktop in a desktop file.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
574 Parameter DIRNAME specifies where to save the desktop file.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
575 See also `desktop-base-file-name'."
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (interactive "DDirectory to save desktop file in: ")
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
577 (run-hooks 'desktop-save-hook)
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
578 (setq dirname (file-name-as-directory (expand-file-name dirname)))
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (save-excursion
51441
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
580 (let ((filename (expand-file-name desktop-base-file-name dirname))
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
581 (info
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
582 (mapcar
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
583 (function
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
584 (lambda (b)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
585 (set-buffer b)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
586 (list
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
587 (desktop-file-name (buffer-file-name) dirname)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
588 (buffer-name)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
589 major-mode
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
590 ;; minor modes
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
591 (let (ret)
55871
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
592 (mapc
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
593 #'(lambda (minor-mode)
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
594 (and
55871
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
595 (boundp minor-mode)
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
596 (symbol-value minor-mode)
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
597 (let ((special (assq minor-mode desktop-minor-mode-table)))
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
598 (when (or special (functionp minor-mode))
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
599 (setq ret
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
600 (cons
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
601 (if special (cadr special) minor-mode)
27173676bedf (desktop-save): Don't save minor modes without a known mode initialization function.
Lars Hansen <larsh@soem.dk>
parents: 55418
diff changeset
602 ret))))))
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
603 (mapcar #'car minor-mode-alist))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
604 ret)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
605 (point)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
606 (list (mark t) mark-active)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
607 buffer-read-only
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
608 ;; Auxiliary information
55155
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
609 (when (functionp desktop-save-buffer)
519f44af960a (desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents: 55059
diff changeset
610 (funcall desktop-save-buffer dirname))
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
611 (let ((locals desktop-locals-to-save)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
612 (loclist (buffer-local-variables))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
613 (ll))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
614 (while locals
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
615 (let ((here (assq (car locals) loclist)))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
616 (if here
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
617 (setq ll (cons here ll))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
618 (when (member (car locals) loclist)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
619 (setq ll (cons (car locals) ll)))))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
620 (setq locals (cdr locals)))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
621 ll))))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
622 (buffer-list)))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
623 (buf (get-buffer-create "*desktop*")))
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (set-buffer buf)
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 (erase-buffer)
7240
195e64dad1eb (desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents: 7200
diff changeset
626
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
627 (insert
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
628 ";; -*- coding: emacs-mule; -*-\n"
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
629 desktop-header
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
630 ";; Created " (current-time-string) "\n"
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
631 ";; Desktop file format version " desktop-file-version "\n"
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
632 ";; Emacs version " emacs-version "\n\n"
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
633 ";; Global section:\n")
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (mapcar (function desktop-outvar) desktop-globals-to-save)
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (if (memq 'kill-ring desktop-globals-to-save)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
636 (insert
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
637 "(setq kill-ring-yank-pointer (nthcdr "
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
638 (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
639 " kill-ring))\n"))
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
641 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
5788
913f27480fad (desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents: 5465
diff changeset
642 (mapcar
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
643 (function
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
644 (lambda (l)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
645 (if (apply 'desktop-save-buffer-p l)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
646 (progn
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
647 (insert "(desktop-create-buffer " desktop-file-version)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
648 (mapcar
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
649 (function
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
650 (lambda (e)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
651 (insert "\n " (desktop-value-to-string e))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
652 l)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
653 (insert ")\n\n")))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
654 info)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (setq default-directory dirname)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
656 (when (file-exists-p filename) (delete-file filename))
38618
c41fb9fae096 (desktop-save): Bind coding-system-for-write to
Gerd Moellmann <gerd@gnu.org>
parents: 38592
diff changeset
657 (let ((coding-system-for-write 'emacs-mule))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
658 (write-region (point-min) (point-max) filename nil 'nomessage))))
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (setq desktop-dirname dirname))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
660
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
661 ;; ----------------------------------------------------------------------------
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (defun desktop-remove ()
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
663 "Delete desktop file in `desktop-dirname'.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
664 This function also sets `desktop-dirname' to nil."
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (interactive)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
666 (when desktop-dirname
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
667 (let ((filename (expand-file-name desktop-base-file-name desktop-dirname)))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
668 (setq desktop-dirname nil)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
669 (when (file-exists-p filename)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
670 (delete-file filename)))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
671
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
672 ;; ----------------------------------------------------------------------------
21303
346595905ae4 (desktop-load-default): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 20772
diff changeset
673 ;;;###autoload
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
674 (defun desktop-read (&optional dirname)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
675 "Read and process the desktop file in directory DIRNAME.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
676 Look for a desktop file in DIRNAME, or if DIRNAME is omitted, look in
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
677 directories listed in `desktop-path'. If a desktop file is found, it
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
678 is processed and `desktop-after-read-hook' is run. If no desktop file
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
679 is found, clear the desktop and run `desktop-no-desktop-file-hook'.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
680 This function is a no-op when Emacs is running in batch mode.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
681 It returns t if a desktop file was loaded, nil otherwise."
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
682 (interactive)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
683 (unless noninteractive
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
684 (setq desktop-dirname
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
685 (file-name-as-directory
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
686 (expand-file-name
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
687 (or
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
688 ;; If DIRNAME is specified, use it.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
689 (and (< 0 (length dirname)) dirname)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
690 ;; Otherwise search desktop file in desktop-path.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
691 (let ((dirs desktop-path))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
692 (while
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
693 (and
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
694 dirs
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
695 (not
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
696 (file-exists-p (expand-file-name desktop-base-file-name (car dirs)))))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
697 (setq dirs (cdr dirs)))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
698 (and dirs (car dirs)))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
699 ;; If not found and `desktop-path' is non-nil, use its first element.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
700 (and desktop-path (car desktop-path))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
701 ;; Default: Home directory.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
702 "~"))))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
703 (if (file-exists-p (expand-file-name desktop-base-file-name desktop-dirname))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
704 ;; Desktop file found, process it.
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
705 (let ((desktop-first-buffer nil)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
706 (desktop-buffer-ok-count 0)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
707 (desktop-buffer-fail-count 0))
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
708 ;; Evaluate desktop buffer.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
709 (load (expand-file-name desktop-base-file-name desktop-dirname) t t t)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
710 ;; `desktop-create-buffer' puts buffers at end of the buffer list.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
711 ;; We want buffers existing prior to evaluating the desktop (and not reused)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
712 ;; to be placed at the end of the buffer list, so we move them here.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
713 (mapcar 'bury-buffer
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
714 (nreverse (cdr (memq desktop-first-buffer (nreverse (buffer-list))))))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
715 (switch-to-buffer (car (buffer-list)))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
716 (run-hooks 'desktop-delay-hook)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
717 (setq desktop-delay-hook nil)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
718 (run-hooks 'desktop-after-read-hook)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
719 (message "Desktop: %d buffer%s restored%s."
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
720 desktop-buffer-ok-count
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
721 (if (= 1 desktop-buffer-ok-count) "" "s")
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
722 (if (< 0 desktop-buffer-fail-count)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
723 (format ", %d failed to restore" desktop-buffer-fail-count)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
724 ""))
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
725 t)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
726 ;; No desktop file found.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
727 (desktop-clear)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
728 (let ((default-directory desktop-dirname))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
729 (run-hooks 'desktop-no-desktop-file-hook))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
730 (message "No desktop file.")
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
731 nil)))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
732
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
733 ;; ----------------------------------------------------------------------------
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
734 ;; Maintained for backward compatibility
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
735 ;;;###autoload
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 (defun desktop-load-default ()
10595
06fa5b312280 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 9776
diff changeset
737 "Load the `default' start-up library manually.
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
738 Also inhibit further loading of it."
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
739 (if (not inhibit-default-init) ; safety check
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (progn
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (load "default" t t)
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (setq inhibit-default-init t))))
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
743 (make-obsolete 'desktop-load-default 'desktop-save-mode)
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
744
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
745 ;; ----------------------------------------------------------------------------
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
746 ;;;###autoload
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
747 (defun desktop-change-dir (dirname)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
748 "Change to desktop saved in DIRNAME.
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
749 Kill the desktop as specified by variables `desktop-save-mode' and
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
750 `desktop-save', then clear the desktop and load the desktop file in
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
751 directory DIRNAME."
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
752 (interactive "DChange to directory: ")
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
753 (setq dirname (file-name-as-directory (expand-file-name dirname desktop-dirname)))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
754 (desktop-kill)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
755 (desktop-clear)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
756 (desktop-read dirname))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
757
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
758 ;; ----------------------------------------------------------------------------
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
759 ;;;###autoload
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
760 (defun desktop-save-in-desktop-dir ()
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
761 "Save the desktop in directory `desktop-dirname'."
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
762 (interactive)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
763 (if desktop-dirname
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
764 (desktop-save desktop-dirname)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
765 (call-interactively 'desktop-save))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
766 (message "Desktop saved in %s" desktop-dirname))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
767
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
768 ;; ----------------------------------------------------------------------------
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
769 ;;;###autoload
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
770 (defun desktop-revert ()
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
771 "Revert to the last loaded desktop."
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
772 (interactive)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
773 (unless desktop-dirname
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
774 (error "Unknown desktop directory"))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
775 (unless (file-exists-p (expand-file-name desktop-base-file-name desktop-dirname))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
776 (error "No desktop file found"))
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
777 (desktop-clear)
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
778 (desktop-read desktop-dirname))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
779
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
780 ;; ----------------------------------------------------------------------------
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
781 (defun desktop-restore-file-buffer (desktop-buffer-file-name
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
782 desktop-buffer-name
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
783 desktop-buffer-misc)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
784 "Restore a file buffer."
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
785 (eval-when-compile ; Just to silence the byte compiler
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
786 (defvar desktop-buffer-major-mode)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
787 (defvar desktop-buffer-locals))
14755
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
788 (if desktop-buffer-file-name
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
789 (if (or (file-exists-p desktop-buffer-file-name)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
790 (let ((msg (format "Desktop: File \"%s\" no longer exists."
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
791 desktop-buffer-file-name)))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
792 (if desktop-missing-file-warning
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
793 (y-or-n-p (concat msg " Re-create? "))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
794 (message msg)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
795 nil)))
52996
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
796 (let* ((auto-insert nil) ; Disable auto insertion
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
797 (coding-system-for-read
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
798 (or coding-system-for-read
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
799 (cdr (assq 'buffer-file-coding-system
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
800 desktop-buffer-locals))))
c9843219861e (desktop-locals-to-save): Add buffer-file-coding-system.
Lars Hansen <larsh@soem.dk>
parents: 52674
diff changeset
801 (buf (find-file-noselect desktop-buffer-file-name)))
32366
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
802 (condition-case nil
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
803 (switch-to-buffer buf)
43831
7837693f5bac (desktop-buffer-handlers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41150
diff changeset
804 (error (pop-to-buffer buf)))
50532
4737239e4dad (desktop-buffer-file): Restore major-mode if it is different from the normal
Juanma Barranquero <lekktu@gmail.com>
parents: 50507
diff changeset
805 (and (not (eq major-mode desktop-buffer-major-mode))
4737239e4dad (desktop-buffer-file): Restore major-mode if it is different from the normal
Juanma Barranquero <lekktu@gmail.com>
parents: 50507
diff changeset
806 (functionp desktop-buffer-major-mode)
4737239e4dad (desktop-buffer-file): Restore major-mode if it is different from the normal
Juanma Barranquero <lekktu@gmail.com>
parents: 50507
diff changeset
807 (funcall desktop-buffer-major-mode))
43831
7837693f5bac (desktop-buffer-handlers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41150
diff changeset
808 buf)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
809 nil)))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
810
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
811 ;; ----------------------------------------------------------------------------
55179
28874a527b36 Fix comment.
Juri Linkov <juri@jurta.org>
parents: 55155
diff changeset
812 ;; Create a buffer, load its file, set its mode, ...;
28874a527b36 Fix comment.
Juri Linkov <juri@jurta.org>
parents: 55155
diff changeset
813 ;; called from Desktop file only.
40210
01666fd1b210 (desktop-last-buffer): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 38798
diff changeset
814
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
815 (eval-when-compile ; Just to silence the byte compiler
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
816 (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
817 )
40210
01666fd1b210 (desktop-last-buffer): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 38798
diff changeset
818
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
819 (defun desktop-create-buffer (
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
820 desktop-file-version
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
821 desktop-buffer-file-name
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
822 desktop-buffer-name
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
823 desktop-buffer-major-mode
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
824 desktop-buffer-minor-modes
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
825 desktop-buffer-point
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
826 desktop-buffer-mark
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
827 desktop-buffer-read-only
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
828 desktop-buffer-misc
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
829 &optional
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
830 desktop-buffer-locals)
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
831 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
832 (eval-when-compile
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
833 (defvar desktop-buffer-ok-count)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
834 (defvar desktop-buffer-fail-count))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
835 ;; To make desktop files with relative file names possible, we cannot
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
836 ;; allow `default-directory' to change. Therefore we save current buffer.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
837 (save-current-buffer
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
838 (let (
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
839 (buffer-list (buffer-list))
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
840 (result
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
841 (condition-case err
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
842 (funcall (or (cdr (assq desktop-buffer-major-mode desktop-buffer-mode-handlers))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
843 'desktop-restore-file-buffer)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
844 desktop-buffer-file-name
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
845 desktop-buffer-name
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
846 desktop-buffer-misc)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
847 (error
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
848 (message "Desktop: Can't load buffer %s: %s"
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
849 desktop-buffer-name (error-message-string err))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
850 (when desktop-missing-file-warning (sit-for 1))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
851 nil)))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
852 )
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
853 (if (bufferp result)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
854 (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
855 (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
856 (setq result nil))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
857 (unless (bufferp result) (setq result nil))
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
858 ;; Restore buffer list order with new buffer at end. Don't change
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
859 ;; the order for old desktop files (old desktop module behaviour).
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
860 (unless (< desktop-file-version 206)
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
861 (mapcar 'bury-buffer buffer-list)
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
862 (when result (bury-buffer result)))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
863 (when result
51107
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
864 (unless (or desktop-first-buffer (< desktop-file-version 206))
0c33d2fd9ae4 (desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents: 50642
diff changeset
865 (setq desktop-first-buffer result))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
866 (set-buffer result)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
867 (unless (equal (buffer-name) desktop-buffer-name)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
868 (rename-buffer desktop-buffer-name))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
869 ;; minor modes
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
870 (cond (
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
871 ;; backwards compatible
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
872 (equal '(t) desktop-buffer-minor-modes)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
873 (auto-fill-mode 1))(
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
874 (equal '(nil) desktop-buffer-minor-modes)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
875 (auto-fill-mode 0))(
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
876 t
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
877 (mapcar
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
878 #'(lambda (minor-mode)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
879 (when (functionp minor-mode) (funcall minor-mode 1)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
880 desktop-buffer-minor-modes)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
881 ;; Even though point and mark are non-nil when written by `desktop-save'
51441
b9a57b098ab3 (desktop-create-buffer): Undo last change.
Juanma Barranquero <lekktu@gmail.com>
parents: 51378
diff changeset
882 ;; they may be modified by handlers wanting to set point or mark themselves.
55059
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
883 (when desktop-buffer-point
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
884 (goto-char
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
885 (condition-case err
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
886 ;; Evaluate point. Thus point can be something like '(search-forward ...
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
887 (eval desktop-buffer-point)
fa9573e2db2a (desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents: 54206
diff changeset
888 (error (message "%s" (error-message-string err)) 1))))
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
889 (when desktop-buffer-mark
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
890 (if (consp desktop-buffer-mark)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
891 (progn
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
892 (set-mark (car desktop-buffer-mark))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
893 (setq mark-active (car (cdr desktop-buffer-mark))))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
894 (set-mark desktop-buffer-mark)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
895 ;; Never override file system if the file really is read-only marked.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
896 (if desktop-buffer-read-only (setq buffer-read-only desktop-buffer-read-only))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
897 (while desktop-buffer-locals
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
898 (let ((this (car desktop-buffer-locals)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
899 (if (consp this)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
900 ;; an entry of this form `(symbol . value)'
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
901 (progn
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
902 (make-local-variable (car this))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
903 (set (car this) (cdr this)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
904 ;; an entry of the form `symbol'
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
905 (make-local-variable this)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
906 (makunbound this)))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
907 (setq desktop-buffer-locals (cdr desktop-buffer-locals)))))))
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
908
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
909 ;; ----------------------------------------------------------------------------
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
910 ;; Backward compatibility -- update parameters to 205 standards.
14755
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
911 (defun desktop-buffer (desktop-buffer-file-name desktop-buffer-name
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
912 desktop-buffer-major-mode
14756
aabf776c3b6a Global var `misc' renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14755
diff changeset
913 mim pt mk ro tl fc cfs cr desktop-buffer-misc)
14755
3d473ed8c718 Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14754
diff changeset
914 (desktop-create-buffer 205 desktop-buffer-file-name desktop-buffer-name
14756
aabf776c3b6a Global var `misc' renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14755
diff changeset
915 desktop-buffer-major-mode (cdr mim) pt mk ro
aabf776c3b6a Global var `misc' renamed.
Richard M. Stallman <rms@gnu.org>
parents: 14755
diff changeset
916 desktop-buffer-misc
5465
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
917 (list (cons 'truncate-lines tl)
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
918 (cons 'fill-column fc)
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
919 (cons 'case-fold-search cfs)
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
920 (cons 'case-replace cr)
9fcfca1caec7 (desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents: 5314
diff changeset
921 (cons 'overwrite-mode (car mim)))))
50532
4737239e4dad (desktop-buffer-file): Restore major-mode if it is different from the normal
Juanma Barranquero <lekktu@gmail.com>
parents: 50507
diff changeset
922
4830
a61307ac474e Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents: 3405
diff changeset
923 ;; ----------------------------------------------------------------------------
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
924 ;; When `desktop-save-mode' is non-nil and "--no-desktop" is not specified on the
50507
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
925 ;; command line, we do the rest of what it takes to use desktop, but do it
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
926 ;; after finishing loading the init file.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
927 ;; We cannot use `command-switch-alist' to process "--no-desktop" because these
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
928 ;; functions are processed after `after-init-hook'.
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
929 (add-hook
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
930 'after-init-hook
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
931 '(lambda ()
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
932 (let ((key "--no-desktop"))
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
933 (if (member key command-line-args)
110c0e29159c Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents: 48143
diff changeset
934 (delete key command-line-args)
52674
7490e5357dba A lot of comments updated.
Lars Hansen <larsh@soem.dk>
parents: 52457
diff changeset
935 (when desktop-save-mode (desktop-read))))))
20526
ec0a8ccddd6c (desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18581
diff changeset
936
3405
b48f023e8e29 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3404
diff changeset
937 (provide 'desktop)
3404
777e0d4f775a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52379
diff changeset
939 ;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
32366
40d8b29df57e (desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30853
diff changeset
940 ;;; desktop.el ends here