Mercurial > emacs
annotate lisp/desktop.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 6c9f59d296d3 |
children | 417b1e4d63cd |
rev | line source |
---|---|
3404 | 1 ;;; desktop.el --- save partial status of Emacs when killed |
2 | |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64674
diff
changeset
|
3 ;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003, |
107543 | 4 ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
5 ;; Free Software Foundation, Inc. | |
3404 | 6 |
7 ;; Author: Morten Welinder <terra@diku.dk> | |
27577 | 8 ;; Keywords: convenience |
5314 | 9 ;; Favourite-brand-of-beer: None, I hate beer. |
3404 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94425
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
3404 | 14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94425
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94425
diff
changeset
|
16 ;; (at your option) any later version. |
3404 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94425
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
3404 | 25 |
26 ;;; Commentary: | |
27 | |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
28 ;; Save the Desktop, i.e., |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
29 ;; - some global variables |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
30 ;; - 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
|
31 ;; - the major mode |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
32 ;; - the default directory |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
33 ;; - the point |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
34 ;; - the mark & mark-active |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
35 ;; - buffer-read-only |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
36 ;; - some local variables |
3404 | 37 |
52674 | 38 ;; To use this, use customize to turn on desktop-save-mode or add the |
39 ;; 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
|
40 ;; |
52674 | 41 ;; (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
|
42 ;; |
52674 | 43 ;; For further usage information, look at the section |
102698 | 44 ;; (info "(emacs)Saving Emacs Sessions") in the GNU Emacs Manual. |
3404 | 45 |
52674 | 46 ;; When the desktop module is loaded, the function `desktop-kill' is |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
47 ;; added to the `kill-emacs-hook'. This function is responsible for |
52674 | 48 ;; saving the desktop when Emacs is killed. Furthermore an anonymous |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
49 ;; function is added to the `after-init-hook'. This function is |
52674 | 50 ;; 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
|
51 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
52 ;; Special handling. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
53 ;; ----------------- |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
54 ;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers' |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
55 ;; are supplied to handle special major and minor modes respectively. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
56 ;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
57 ;; to restore a desktop buffer. Elements must have the form |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
58 ;; |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
59 ;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
60 ;; |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
61 ;; Functions listed are called by `desktop-create-buffer' when `desktop-read' |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
62 ;; evaluates the desktop file. Buffers with a major mode not specified here, |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
63 ;; are restored by the default handler `desktop-restore-file-buffer'. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
64 ;; `desktop-minor-mode-handlers' is an alist of functions to restore |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
65 ;; non-standard minor modes. Elements must have the form |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
66 ;; |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
67 ;; (MINOR-MODE . RESTORE-FUNCTION). |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
68 ;; |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
69 ;; Functions are called by `desktop-create-buffer' to restore minor modes. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
70 ;; Minor modes not specified here, are restored by the standard minor mode |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
71 ;; function. If you write a module that defines a major or minor mode that |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
72 ;; needs a special handler, then place code like |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
73 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
74 ;; (defun foo-restore-desktop-buffer |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
75 ;; ... |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
76 ;; (add-to-list 'desktop-buffer-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
77 ;; '(foo-mode . foo-restore-desktop-buffer)) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
78 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
79 ;; or |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
80 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
81 ;; (defun bar-desktop-restore |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
82 ;; ... |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
83 ;; (add-to-list 'desktop-minor-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
84 ;; '(bar-mode . bar-desktop-restore)) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
85 |
94425
780f88412851
(desktop-minor-mode-table): Add `savehist-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents:
94026
diff
changeset
|
86 ;; in the module itself, and make sure that the mode function is |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
87 ;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
88 ;; `desktop-minor-mode-handlers' for more info. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
89 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
90 ;; Minor modes. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
91 ;; ------------ |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
92 ;; Conventional minor modes (see node "Minor Mode Conventions" in the elisp |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
93 ;; manual) are handled in the following way: |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
94 ;; When `desktop-save' saves the state of a buffer to the desktop file, it |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
95 ;; saves as `desktop-minor-modes' the list of names of those variables in |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
96 ;; `minor-mode-alist' that have a non-nil value. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
97 ;; When `desktop-create' restores the buffer, each of the symbols in |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
98 ;; `desktop-minor-modes' is called as function with parameter 1. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
99 ;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers' |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
100 ;; are used to handle non-conventional minor modes. `desktop-save' uses |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
101 ;; `desktop-minor-mode-table' to map minor mode variables to minor mode |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
102 ;; functions before writing `desktop-minor-modes'. If a minor mode has a |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
103 ;; variable name that is different form its function name, an entry |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
104 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
105 ;; (NAME RESTORE-FUNCTION) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
106 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
107 ;; should be added to `desktop-minor-mode-table'. If a minor mode should not |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
108 ;; be restored, RESTORE-FUNCTION should be set to nil. `desktop-create' uses |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
109 ;; `desktop-minor-mode-handlers' to lookup minor modes that needs a restore |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
110 ;; function different from the usual minor mode function. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
111 ;; --------------------------------------------------------------------------- |
28719
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
112 |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
113 ;; 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
|
114 ;; 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
|
115 ;; 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
|
116 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
117 ;; 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
|
118 ;; `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
|
119 ;; 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
|
120 |
7240
195e64dad1eb
(desktop-files-not-to-save): New variable to exclude certain files -- magic
Karl Heuer <kwzh@gnu.org>
parents:
7200
diff
changeset
|
121 ;; 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
|
122 ;; 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
|
123 ;; 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
|
124 ;; 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
|
125 ;; 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
|
126 ;; 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
|
127 ;; 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
|
128 ;; --------------------------------------------------------------------------- |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
129 ;; TODO: |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
130 ;; |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
131 ;; Save window configuration. |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
132 ;; Recognize more minor modes. |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
133 ;; Save mark rings. |
3404 | 134 |
135 ;;; Code: | |
136 | |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
137 (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
|
138 "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
|
139 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
|
140 backward compatibility.") |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
141 |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
142 ;; ---------------------------------------------------------------------------- |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
143 ;; 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
|
144 ;; ---------------------------------------------------------------------------- |
17411
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
145 |
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
146 (defgroup desktop nil |
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
147 "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
|
148 :group 'frames) |
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
149 |
52674 | 150 ;;;###autoload |
151 (define-minor-mode desktop-save-mode | |
152 "Toggle desktop saving mode. | |
153 With numeric ARG, turn desktop saving on if ARG is positive, off | |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
154 otherwise. If desktop saving is turned on, the state of Emacs is |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
155 saved from one session to another. See variable `desktop-save' |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
156 and function `desktop-read' for details." |
52674 | 157 :global t |
158 :group 'desktop) | |
159 | |
160 ;; Maintained for backward compatibility | |
64674
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
161 (define-obsolete-variable-alias 'desktop-enable |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
162 'desktop-save-mode "22.1") |
20526
ec0a8ccddd6c
(desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18581
diff
changeset
|
163 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
164 (defun desktop-save-mode-off () |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
165 "Disable `desktop-save-mode'. Provided for use in hooks." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
166 (desktop-save-mode 0)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
167 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
168 (defcustom desktop-save 'ask-if-new |
100171 | 169 "Specifies whether the desktop should be saved when it is killed. |
52674 | 170 A desktop is killed when the user changes desktop or quits Emacs. |
171 Possible values are: | |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
172 t -- always save. |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
173 ask -- always ask. |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
174 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
|
175 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
|
176 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
|
177 nil -- never save. |
52674 | 178 The desktop is never saved when `desktop-save-mode' is nil. |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
179 The variables `desktop-dirname' and `desktop-base-file-name' |
52674 | 180 determine where the desktop is saved." |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
181 :type |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
182 '(choice |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
183 (const :tag "Always save" t) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
184 (const :tag "Always ask" ask) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
185 (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
|
186 (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
|
187 (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
|
188 (const :tag "Never save" nil)) |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
189 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
190 :version "22.1") |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
191 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
192 (defcustom desktop-load-locked-desktop 'ask |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
193 "Specifies whether the desktop should be loaded if locked. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
194 Possible values are: |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
195 t -- load anyway. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
196 nil -- don't load. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
197 ask -- ask the user. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
198 If the value is nil, or `ask' and the user chooses not to load the desktop, |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
199 the normal hook `desktop-not-loaded-hook' is run." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
200 :type |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
201 '(choice |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
202 (const :tag "Load anyway" t) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
203 (const :tag "Don't load" nil) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
204 (const :tag "Ask the user" ask)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
205 :group 'desktop |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
206 :version "22.2") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
207 |
94026
85846e73fafe
Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents:
92944
diff
changeset
|
208 (define-obsolete-variable-alias 'desktop-basefilename |
85846e73fafe
Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents:
92944
diff
changeset
|
209 'desktop-base-file-name "22.1") |
85846e73fafe
Move non-autoloaded define-obsolete-variable-alias calls for
Glenn Morris <rgm@gnu.org>
parents:
92944
diff
changeset
|
210 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
211 (defcustom desktop-base-file-name |
16037
a1e88c05b53c
(desktop-basefilename): Use convert-standard-filename.
Richard M. Stallman <rms@gnu.org>
parents:
14756
diff
changeset
|
212 (convert-standard-filename ".emacs.desktop") |
52674 | 213 "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
|
214 :type 'file |
ec0a8ccddd6c
(desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18581
diff
changeset
|
215 :group 'desktop) |
3404 | 216 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
217 (defcustom desktop-base-lock-name |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
218 (convert-standard-filename ".emacs.desktop.lock") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
219 "Name of lock file for Emacs desktop, excluding the directory part." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
220 :type 'file |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
221 :group 'desktop |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
222 :version "22.2") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
223 |
105031
7700dc1d76fd
(desktop-path): Check user-emacs-directory.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
103978
diff
changeset
|
224 (defcustom desktop-path (list "." user-emacs-directory "~") |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
225 "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
|
226 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
|
227 :type '(repeat directory) |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
228 :group 'desktop |
110225
941667e2cb4c
* desktop.el (desktop-path): Bump :version after 2009-09-15 change.
Glenn Morris <rgm@gnu.org>
parents:
108932
diff
changeset
|
229 :version "23.2") ; user-emacs-directory added |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
230 |
17411
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
231 (defcustom desktop-missing-file-warning nil |
70653
019755175634
(desktop-missing-file-warning): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents:
70644
diff
changeset
|
232 "If non-nil, offer to recreate the buffer of a deleted file. |
55155
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
233 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
|
234 `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
|
235 |
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
236 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
|
237 :type 'boolean |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
238 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
239 :version "22.1") |
3404 | 240 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
241 (defcustom desktop-no-desktop-file-hook nil |
52674 | 242 "Normal hook run when `desktop-read' can't find a desktop file. |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
243 Run in the directory in which the desktop file was sought. |
61236
65075d5373df
(desktop-no-desktop-file-hook, desktop-after-read-hook): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
59996
diff
changeset
|
244 May be used to show a dired buffer." |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
245 :type 'hook |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
246 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
247 :version "22.1") |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
248 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
249 (defcustom desktop-not-loaded-hook nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
250 "Normal hook run when the user declines to re-use a desktop file. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
251 Run in the directory in which the desktop file was found. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
252 May be used to deal with accidental multiple Emacs jobs." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
253 :type 'hook |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
254 :group 'desktop |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
255 :options '(desktop-save-mode-off save-buffers-kill-emacs) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
256 :version "22.2") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
257 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
258 (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
|
259 "Normal hook run after a successful `desktop-read'. |
61236
65075d5373df
(desktop-no-desktop-file-hook, desktop-after-read-hook): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents:
59996
diff
changeset
|
260 May be used to show a buffer list." |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
261 :type 'hook |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
262 :group 'desktop |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
263 :options '(list-buffers) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
264 :version "22.1") |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
265 |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
266 (defcustom desktop-save-hook nil |
52674 | 267 "Normal hook run before the desktop is saved in a desktop file. |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
268 Run with the desktop buffer current with only the header present. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
269 May be used to add to the desktop code or to truncate history lists, |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
270 for example." |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
271 :type 'hook |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
272 :group 'desktop) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
273 |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
274 (defcustom desktop-globals-to-save |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
275 '(desktop-missing-file-warning |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
276 tags-file-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
277 tags-table-list |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
278 search-ring |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
279 regexp-search-ring |
103723
a18909b5a393
* desktop.el (desktop-globals-to-save): Add file-name-history (Bug#2750).
Chong Yidong <cyd@stupidchicken.com>
parents:
102698
diff
changeset
|
280 register-alist |
a18909b5a393
* desktop.el (desktop-globals-to-save): Add file-name-history (Bug#2750).
Chong Yidong <cyd@stupidchicken.com>
parents:
102698
diff
changeset
|
281 file-name-history) |
52674 | 282 "List of global variables saved by `desktop-save'. |
283 An element may be variable name (a symbol) or a cons cell of the form | |
284 \(VAR . MAX-SIZE), which means to truncate VAR's value to at most | |
285 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
|
286 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
|
287 :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
|
288 :group 'desktop) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
289 |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
290 (defcustom desktop-globals-to-clear |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
291 '(kill-ring |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
292 kill-ring-yank-pointer |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
293 search-ring |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
294 search-ring-yank-pointer |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
295 regexp-search-ring |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
296 regexp-search-ring-yank-pointer) |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
297 "List of global variables that `desktop-clear' will clear. |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
298 An element may be variable name (a symbol) or a cons cell of the form |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
299 \(VAR . FORM). Symbols are set to nil and for cons cells VAR is set |
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
300 to the value obtained by evaluating FORM." |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
301 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp))) |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
302 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
303 :version "22.1") |
3404 | 304 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
305 (defcustom desktop-clear-preserve-buffers |
108932 | 306 '("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*" |
307 "\\*Warnings\\*") | |
100171 | 308 "List of buffers that `desktop-clear' should not delete. |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
309 Each element is a regular expression. Buffers with a name matched by any of |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
310 these won't be deleted." |
108932 | 311 :version "23.3" ; added Warnings - bug#6336 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
312 :type '(repeat string) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
313 :group 'desktop) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
314 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
315 ;;;###autoload |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
316 (defcustom desktop-locals-to-save |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
317 '(desktop-locals-to-save ; Itself! Think it over. |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
318 truncate-lines |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
319 case-fold-search |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
320 case-replace |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
321 fill-column |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
322 overwrite-mode |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
323 change-log-default-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
324 line-number-mode |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
325 column-number-mode |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
326 size-indication-mode |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
327 buffer-file-coding-system |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
328 indent-tabs-mode |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
329 tab-width |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
330 indicate-buffer-boundaries |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
331 indicate-empty-lines |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
332 show-trailing-whitespace) |
10595 | 333 "List of local variables to save for each buffer. |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
334 The variables are saved only when they really are local. Conventional minor |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
335 modes are restored automatically; they should not be listed here." |
52674 | 336 :type '(repeat symbol) |
337 :group 'desktop) | |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
338 |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
339 (defcustom desktop-buffers-not-to-save nil |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
340 "Regexp identifying buffers that are to be excluded from saving." |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
341 :type '(choice (const :tag "None" nil) |
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
342 regexp) |
103978
53e741f0367a
(desktop-buffers-not-to-save): Set :version tag.
Glenn Morris <rgm@gnu.org>
parents:
103958
diff
changeset
|
343 :version "23.2" ; set to nil |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
344 :group 'desktop) |
3404 | 345 |
52674 | 346 ;; 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
|
347 (defcustom desktop-files-not-to-save |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
348 "\\(^/[^/:]*:\\|(ftp)$\\)" |
17411
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
349 "Regexp identifying files whose buffers are to be excluded from saving." |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
350 :type '(choice (const :tag "None" nil) |
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
351 regexp) |
17411
f0ff96a35eb8
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
17204
diff
changeset
|
352 :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
|
353 |
66278
8926d6f2f267
(desktop-buffers-not-to-save): Remove TAGS from the default value.
Juri Linkov <juri@jurta.org>
parents:
66037
diff
changeset
|
354 ;; We skip TAGS files to save time (tags-file-name is saved instead). |
8926d6f2f267
(desktop-buffers-not-to-save): Remove TAGS from the default value.
Juri Linkov <juri@jurta.org>
parents:
66037
diff
changeset
|
355 (defcustom desktop-modes-not-to-save |
8926d6f2f267
(desktop-buffers-not-to-save): Remove TAGS from the default value.
Juri Linkov <juri@jurta.org>
parents:
66037
diff
changeset
|
356 '(tags-table-mode) |
32366
40d8b29df57e
(desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30853
diff
changeset
|
357 "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
|
358 :type '(repeat symbol) |
40d8b29df57e
(desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30853
diff
changeset
|
359 :group 'desktop) |
40d8b29df57e
(desktop-modes-not-to-save): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30853
diff
changeset
|
360 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
361 (defcustom desktop-file-name-format 'absolute |
100171 | 362 "Format in which desktop file names should be saved. |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
363 Possible values are: |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
364 absolute -- Absolute file name. |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
365 tilde -- Relative to ~. |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
366 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
|
367 :type '(choice (const absolute) (const tilde) (const local)) |
58140
b72ba185298b
(desktop-buffer-mode-handlers, desktop-after-read-hook,
Lars Hansen <larsh@soem.dk>
parents:
57038
diff
changeset
|
368 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
369 :version "22.1") |
14755
3d473ed8c718
Global vars mam, fn, bn renamed.
Richard M. Stallman <rms@gnu.org>
parents:
14754
diff
changeset
|
370 |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
371 (defcustom desktop-restore-eager t |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
372 "Number of buffers to restore immediately. |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
373 Remaining buffers are restored lazily (when Emacs is idle). |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
374 If value is t, all buffers are restored immediately." |
59436
1b7f2dc9f5f6
(desktop-restore-eager): Fix typo in type.
David Kastrup <dak@gnu.org>
parents:
59412
diff
changeset
|
375 :type '(choice (const t) integer) |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
376 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
377 :version "22.1") |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
378 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
379 (defcustom desktop-lazy-verbose t |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
380 "Verbose reporting of lazily created buffers." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
381 :type 'boolean |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
382 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
383 :version "22.1") |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
384 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
385 (defcustom desktop-lazy-idle-delay 5 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
386 "Idle delay before starting to create buffers. |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
387 See `desktop-restore-eager'." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
388 :type 'integer |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
389 :group 'desktop |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
390 :version "22.1") |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
391 |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
392 ;;;###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
|
393 (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
|
394 "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
|
395 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
|
396 |
64674
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
397 If the value is a function, it is called by `desktop-save' with argument |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
398 DESKTOP-DIRNAME to obtain auxiliary information to save in the desktop |
55155
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
399 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
|
400 |
52674 | 401 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
|
402 \"(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
|
403 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
404 Later, when `desktop-read' evaluates the desktop file, auxiliary information |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
405 is passed as the argument DESKTOP-BUFFER-MISC to functions in |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
406 `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
|
407 (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
|
408 (make-obsolete-variable 'desktop-buffer-modes-to-save |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
409 'desktop-save-buffer "22.1") |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
410 (make-obsolete-variable 'desktop-buffer-misc-functions |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
411 'desktop-save-buffer "22.1") |
32447
cfae1c82d702
Added extensible special buffer support to desktop.el. See the
John Wiegley <johnw@newartisans.com>
parents:
32366
diff
changeset
|
412 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
413 ;;;###autoload |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
414 (defvar desktop-buffer-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
415 nil |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
416 "Alist of major mode specific functions to restore a desktop buffer. |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
417 Functions listed are called by `desktop-create-buffer' when `desktop-read' |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
418 evaluates the desktop file. List elements must have the form |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
419 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
420 (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
421 |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
422 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
|
423 handler `desktop-restore-file-buffer'. |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
424 |
55413
f30ad6214291
(desktop-buffer-mode-handlers): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents:
55179
diff
changeset
|
425 Handlers are called with argument list |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
426 |
55418
b92f1b7ca228
(desktop-buffer-mode-handlers): Fix docstring.
Lars Hansen <larsh@soem.dk>
parents:
55413
diff
changeset
|
427 (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
|
428 |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
429 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
|
430 |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
431 desktop-file-version |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
432 desktop-buffer-major-mode |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
433 desktop-buffer-minor-modes |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
434 desktop-buffer-point |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
435 desktop-buffer-mark |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
436 desktop-buffer-read-only |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
437 desktop-buffer-locals |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
438 |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
439 If a handler returns a buffer, then the saved mode settings |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
440 and variable values for that buffer are copied into it. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
441 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
442 Modules that define a major mode that needs a special handler should contain |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
443 code like |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
444 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
445 (defun foo-restore-desktop-buffer |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
446 ... |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
447 (add-to-list 'desktop-buffer-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
448 '(foo-mode . foo-restore-desktop-buffer)) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
449 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
450 Furthermore the major mode function must be autoloaded.") |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
451 |
64963
527df96e5eda
Put autoload cookie at risky-local-variable declarations.
Andreas Schwab <schwab@suse.de>
parents:
64893
diff
changeset
|
452 ;;;###autoload |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
453 (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
|
454 (make-obsolete-variable 'desktop-buffer-handlers |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
455 'desktop-buffer-mode-handlers "22.1") |
32447
cfae1c82d702
Added extensible special buffer support to desktop.el. See the
John Wiegley <johnw@newartisans.com>
parents:
32366
diff
changeset
|
456 |
28719
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
457 (defcustom desktop-minor-mode-table |
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
458 '((auto-fill-function auto-fill-mode) |
67560
2d2062823ea5
(desktop-minor-mode-table): Add vc-dired-mode with nil.
Juri Linkov <juri@jurta.org>
parents:
66278
diff
changeset
|
459 (vc-mode nil) |
85771
a7aa5ee6bc3a
Revert bad erc-track change; ignore erc-track-minor-mode properly in desktop
Michael Olson <mwolson@gnu.org>
parents:
85697
diff
changeset
|
460 (vc-dired-mode nil) |
94425
780f88412851
(desktop-minor-mode-table): Add `savehist-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents:
94026
diff
changeset
|
461 (erc-track-minor-mode nil) |
780f88412851
(desktop-minor-mode-table): Add `savehist-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents:
94026
diff
changeset
|
462 (savehist-mode nil)) |
28719
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
463 "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
|
464 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
|
465 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
|
466 mode is active. RESTORE-FUNCTION is the function to activate the minor mode. |
77991
a5fe5ff427e0
(desktop-minor-mode-table): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
77115
diff
changeset
|
467 RESTORE-FUNCTION nil means don't try to restore the minor mode. |
28719
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
468 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
|
469 and the name of the minor mode function are different have to be added to |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
470 this table. See also `desktop-minor-mode-handlers'." |
28719
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
471 :type 'sexp |
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
472 :group 'desktop) |
f56c181fb849
(desktop-save): Save list of minor modes.
Gerd Moellmann <gerd@gnu.org>
parents:
27577
diff
changeset
|
473 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
474 ;;;###autoload |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
475 (defvar desktop-minor-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
476 nil |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
477 "Alist of functions to restore non-standard minor modes. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
478 Functions are called by `desktop-create-buffer' to restore minor modes. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
479 List elements must have the form |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
480 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
481 (MINOR-MODE . RESTORE-FUNCTION). |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
482 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
483 Minor modes not specified here, are restored by the standard minor mode |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
484 function. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
485 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
486 Handlers are called with argument list |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
487 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
488 (DESKTOP-BUFFER-LOCALS) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
489 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
490 Furthermore, they may use the following variables: |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
491 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
492 desktop-file-version |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
493 desktop-buffer-file-name |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
494 desktop-buffer-name |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
495 desktop-buffer-major-mode |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
496 desktop-buffer-minor-modes |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
497 desktop-buffer-point |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
498 desktop-buffer-mark |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
499 desktop-buffer-read-only |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
500 desktop-buffer-misc |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
501 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
502 When a handler is called, the buffer has been created and the major mode has |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
503 been set, but local variables listed in desktop-buffer-locals has not yet been |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
504 created and set. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
505 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
506 Modules that define a minor mode that needs a special handler should contain |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
507 code like |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
508 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
509 (defun foo-desktop-restore |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
510 ... |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
511 (add-to-list 'desktop-minor-mode-handlers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
512 '(foo-mode . foo-desktop-restore)) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
513 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
514 Furthermore the minor mode function must be autoloaded. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
515 |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
516 See also `desktop-minor-mode-table'.") |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
517 |
64963
527df96e5eda
Put autoload cookie at risky-local-variable declarations.
Andreas Schwab <schwab@suse.de>
parents:
64893
diff
changeset
|
518 ;;;###autoload |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
519 (put 'desktop-minor-mode-handlers 'risky-local-variable t) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
520 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
521 ;; ---------------------------------------------------------------------------- |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
522 (defvar desktop-dirname nil |
52674 | 523 "The directory in which the desktop file should be saved.") |
3404 | 524 |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
525 (defun desktop-full-file-name (&optional dirname) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
526 "Return the full name of the desktop file in DIRNAME. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
527 DIRNAME omitted or nil means use `desktop-dirname'." |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
528 (expand-file-name desktop-base-file-name (or dirname desktop-dirname))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
529 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
530 (defun desktop-full-lock-name (&optional dirname) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
531 "Return the full name of the desktop lock file in DIRNAME. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
532 DIRNAME omitted or nil means use `desktop-dirname'." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
533 (expand-file-name desktop-base-lock-name (or dirname desktop-dirname))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
534 |
3404 | 535 (defconst desktop-header |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
536 ";; -------------------------------------------------------------------------- |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
537 ;; Desktop File for Emacs |
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
538 ;; -------------------------------------------------------------------------- |
3404 | 539 " "*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
|
540 |
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
541 (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
|
542 "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
|
543 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
544 ;; ---------------------------------------------------------------------------- |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
545 ;; Desktop file conflict detection |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
546 (defvar desktop-file-modtime nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
547 "When the desktop file was last modified to the knowledge of this Emacs. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
548 Used to detect desktop file conflicts.") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
549 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
550 (defun desktop-owner (&optional dirname) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
551 "Return the PID of the Emacs process that owns the desktop file in DIRNAME. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
552 Return nil if no desktop file found or no Emacs process is using it. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
553 DIRNAME omitted or nil means use `desktop-dirname'." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
554 (let (owner) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
555 (and (file-exists-p (desktop-full-lock-name dirname)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
556 (condition-case nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
557 (with-temp-buffer |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
558 (insert-file-contents-literally (desktop-full-lock-name dirname)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
559 (goto-char (point-min)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
560 (setq owner (read (current-buffer))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
561 (integerp owner)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
562 (error nil)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
563 owner))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
564 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
565 (defun desktop-claim-lock (&optional dirname) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
566 "Record this Emacs process as the owner of the desktop file in DIRNAME. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
567 DIRNAME omitted or nil means use `desktop-dirname'." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
568 (write-region (number-to-string (emacs-pid)) nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
569 (desktop-full-lock-name dirname))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
570 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
571 (defun desktop-release-lock (&optional dirname) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
572 "Remove the lock file for the desktop in DIRNAME. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
573 DIRNAME omitted or nil means use `desktop-dirname'." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
574 (let ((file (desktop-full-lock-name dirname))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
575 (when (file-exists-p file) (delete-file file)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
576 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
577 ;; ---------------------------------------------------------------------------- |
54206
ecf0e7a0567a
(desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
52996
diff
changeset
|
578 (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
|
579 "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
|
580 (let ((here (nthcdr (1- n) list))) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
581 (when (consp here) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
582 (setcdr here nil)))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
583 |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
584 ;; ---------------------------------------------------------------------------- |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
585 ;;;###autoload |
18581
45f27efe77c7
(desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18527
diff
changeset
|
586 (defun desktop-clear () |
45f27efe77c7
(desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18527
diff
changeset
|
587 "Empty the Desktop. |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
588 This kills all buffers except for internal ones and those with names matched by |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
589 a regular expression in the list `desktop-clear-preserve-buffers'. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
590 Furthermore, it clears the variables listed in `desktop-globals-to-clear'." |
3404 | 591 (interactive) |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
592 (desktop-lazy-abort) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
593 (dolist (var desktop-globals-to-clear) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
594 (if (symbolp var) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
595 (eval `(setq-default ,var nil)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
596 (eval `(setq-default ,(car var) ,(cdr var))))) |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
597 (let ((buffers (buffer-list)) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
598 (preserve-regexp (concat "^\\(" |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
599 (mapconcat (lambda (regexp) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
600 (concat "\\(" regexp "\\)")) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
601 desktop-clear-preserve-buffers |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
602 "\\|") |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
603 "\\)$"))) |
18581
45f27efe77c7
(desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18527
diff
changeset
|
604 (while buffers |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
605 (let ((bufname (buffer-name (car buffers)))) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
606 (or |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
607 (null bufname) |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
608 (string-match preserve-regexp bufname) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
609 ;; Don't kill buffers made for internal purposes. |
64519
a9ca2e64f9c1
(desktop-enable, desktop-basefilename): Declare with
Juanma Barranquero <lekktu@gmail.com>
parents:
64490
diff
changeset
|
610 (and (not (equal bufname "")) (eq (aref bufname 0) ?\s)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
611 (kill-buffer (car buffers)))) |
18581
45f27efe77c7
(desktop-clear-preserve-buffers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18527
diff
changeset
|
612 (setq buffers (cdr buffers)))) |
5314 | 613 (delete-other-windows)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
614 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
615 ;; ---------------------------------------------------------------------------- |
5788
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
616 (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
|
617 |
3404 | 618 (defun desktop-kill () |
52674 | 619 "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
|
620 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
|
621 is nil, ask the user where to save the desktop." |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
622 (when (and desktop-save-mode |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
623 (let ((exists (file-exists-p (desktop-full-file-name)))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
624 (or (eq desktop-save t) |
108132
5e9162ac53b2
desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
Jan D. <jan.h.d@swipnet.se>
parents:
107543
diff
changeset
|
625 (and exists (eq desktop-save 'if-exists)) |
5e9162ac53b2
desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
Jan D. <jan.h.d@swipnet.se>
parents:
107543
diff
changeset
|
626 ;; If it exists, but we aren't using it, we are going |
5e9162ac53b2
desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
Jan D. <jan.h.d@swipnet.se>
parents:
107543
diff
changeset
|
627 ;; to ask for a new directory below. |
5e9162ac53b2
desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
Jan D. <jan.h.d@swipnet.se>
parents:
107543
diff
changeset
|
628 (and exists desktop-dirname (eq desktop-save 'ask-if-new)) |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
629 (and |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
630 (or (memq desktop-save '(ask ask-if-new)) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
631 (and exists (eq desktop-save 'ask-if-exists))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
632 (y-or-n-p "Save desktop? "))))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
633 (unless desktop-dirname |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
634 (setq desktop-dirname |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
635 (file-name-as-directory |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
636 (expand-file-name |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
637 (read-directory-name "Directory for desktop file: " nil nil t))))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
638 (condition-case err |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
639 (desktop-save desktop-dirname t) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
640 (file-error |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
641 (unless (yes-or-no-p "Error while saving the desktop. Ignore? ") |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
642 (signal (car err) (cdr err)))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
643 ;; If we own it, we don't anymore. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
644 (when (eq (emacs-pid) (desktop-owner)) (desktop-release-lock))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
645 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
646 ;; ---------------------------------------------------------------------------- |
14754
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
647 (defun desktop-list* (&rest args) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
648 (if (null (cdr args)) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
649 (car args) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
650 (setq args (nreverse args)) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
651 (let ((value (cons (nth 1 args) (car args)))) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
652 (setq args (cdr (cdr args))) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
653 (while args |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
654 (setq value (cons (car args) value)) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
655 (setq args (cdr args))) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
656 value))) |
9955249f9b0f
(desktop-list*): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14172
diff
changeset
|
657 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
658 ;; ---------------------------------------------------------------------------- |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
659 (defun desktop-buffer-info (buffer) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
660 (set-buffer buffer) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
661 (list |
91841
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
662 ;; base name of the buffer; replaces the buffer name if managed by uniquify |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
663 (and (fboundp 'uniquify-buffer-base-name) (uniquify-buffer-base-name)) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
664 ;; basic information |
78110
33c9a00ace1e
(desktop-buffer-info, desktop-save): Use `desktop-dirname' instead of `dirname'.
Juanma Barranquero <lekktu@gmail.com>
parents:
78046
diff
changeset
|
665 (desktop-file-name (buffer-file-name) desktop-dirname) |
91841
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
666 (buffer-name) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
667 major-mode |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
668 ;; minor modes |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
669 (let (ret) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
670 (mapc |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
671 #'(lambda (minor-mode) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
672 (and (boundp minor-mode) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
673 (symbol-value minor-mode) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
674 (let* ((special (assq minor-mode desktop-minor-mode-table)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
675 (value (cond (special (cadr special)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
676 ((functionp minor-mode) minor-mode)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
677 (when value (add-to-list 'ret value))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
678 (mapcar #'car minor-mode-alist)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
679 ret) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
680 ;; point and mark, and read-only status |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
681 (point) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
682 (list (mark t) mark-active) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
683 buffer-read-only |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
684 ;; auxiliary information |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
685 (when (functionp desktop-save-buffer) |
78110
33c9a00ace1e
(desktop-buffer-info, desktop-save): Use `desktop-dirname' instead of `dirname'.
Juanma Barranquero <lekktu@gmail.com>
parents:
78046
diff
changeset
|
686 (funcall desktop-save-buffer desktop-dirname)) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
687 ;; local variables |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
688 (let ((locals desktop-locals-to-save) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
689 (loclist (buffer-local-variables)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
690 (ll)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
691 (while locals |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
692 (let ((here (assq (car locals) loclist))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
693 (if here |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
694 (setq ll (cons here ll)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
695 (when (member (car locals) loclist) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
696 (setq ll (cons (car locals) ll))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
697 (setq locals (cdr locals))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
698 ll))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
699 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
700 ;; ---------------------------------------------------------------------------- |
54206
ecf0e7a0567a
(desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
52996
diff
changeset
|
701 (defun desktop-internal-v2s (value) |
10595 | 702 "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE. |
703 TXT is a string that when read and evaluated yields value. | |
704 QUOTE may be `may' (value may be quoted), | |
705 `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
|
706 (cond |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
707 ((or (numberp value) (null value) (eq t value) (keywordp value)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
708 (cons 'may (prin1-to-string value))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
709 ((stringp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
710 (let ((copy (copy-sequence value))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
711 (set-text-properties 0 (length copy) nil copy) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
712 ;; Get rid of text properties because we cannot read them |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
713 (cons 'may (prin1-to-string copy)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
714 ((symbolp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
715 (cons 'must (prin1-to-string value))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
716 ((vectorp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
717 (let* ((special nil) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
718 (pass1 (mapcar |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
719 (lambda (el) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
720 (let ((res (desktop-internal-v2s el))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
721 (if (null (car res)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
722 (setq special t)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
723 res)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
724 value))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
725 (if special |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
726 (cons nil (concat "(vector " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
727 (mapconcat (lambda (el) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
728 (if (eq (car el) 'must) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
729 (concat "'" (cdr el)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
730 (cdr el))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
731 pass1 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
732 " ") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
733 ")")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
734 (cons 'may (concat "[" (mapconcat 'cdr pass1 " ") "]"))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
735 ((consp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
736 (let ((p value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
737 newlist |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
738 use-list* |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
739 anynil) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
740 (while (consp p) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
741 (let ((q.txt (desktop-internal-v2s (car p)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
742 (or anynil (setq anynil (null (car q.txt)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
743 (setq newlist (cons q.txt newlist))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
744 (setq p (cdr p))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
745 (if p |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
746 (let ((last (desktop-internal-v2s p))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
747 (or anynil (setq anynil (null (car last)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
748 (or anynil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
749 (setq newlist (cons '(must . ".") newlist))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
750 (setq use-list* t) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
751 (setq newlist (cons last newlist)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
752 (setq newlist (nreverse newlist)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
753 (if anynil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
754 (cons nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
755 (concat (if use-list* "(desktop-list* " "(list ") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
756 (mapconcat (lambda (el) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
757 (if (eq (car el) 'must) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
758 (concat "'" (cdr el)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
759 (cdr el))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
760 newlist |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
761 " ") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
762 ")")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
763 (cons 'must |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
764 (concat "(" (mapconcat 'cdr newlist " ") ")"))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
765 ((subrp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
766 (cons nil (concat "(symbol-function '" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
767 (substring (prin1-to-string value) 7 -1) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
768 ")"))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
769 ((markerp value) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
770 (let ((pos (prin1-to-string (marker-position value))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
771 (buf (prin1-to-string (buffer-name (marker-buffer value))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
772 (cons nil (concat "(let ((mk (make-marker)))" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
773 " (add-hook 'desktop-delay-hook" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
774 " (list 'lambda '() (list 'set-marker mk " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
775 pos " (get-buffer " buf ")))) mk)")))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
776 (t ; save as text |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
777 (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
|
778 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
779 ;; ---------------------------------------------------------------------------- |
54206
ecf0e7a0567a
(desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
52996
diff
changeset
|
780 (defun desktop-value-to-string (value) |
10595 | 781 "Convert VALUE to a string that when read evaluates to the same value. |
782 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
|
783 (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
|
784 (float-output-format nil) |
54206
ecf0e7a0567a
(desktop-file-version, desktop-after-read-hook): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents:
52996
diff
changeset
|
785 (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
|
786 (quote (car quote.txt)) |
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
787 (txt (cdr quote.txt))) |
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
788 (if (eq quote 'must) |
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
789 (concat "'" txt) |
913f27480fad
(desktop-internal-v2s): Allow saving of markers and subrs.
Richard M. Stallman <rms@gnu.org>
parents:
5465
diff
changeset
|
790 txt))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
791 |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
792 ;; ---------------------------------------------------------------------------- |
13154
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
793 (defun desktop-outvar (varspec) |
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
794 "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
|
795 The argument VARSPEC may be the variable name VAR (a symbol), |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
796 or a cons cell of the form (VAR . MAX-SIZE), |
13154
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
797 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
|
798 \(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
|
799 (let (var size) |
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
800 (if (consp varspec) |
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
801 (setq var (car varspec) size (cdr varspec)) |
f86e18ff3736
(desktop-outvar): Support truncation.
Richard M. Stallman <rms@gnu.org>
parents:
11224
diff
changeset
|
802 (setq var varspec)) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
803 (when (boundp var) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
804 (when (and (integerp size) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
805 (> size 0) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
806 (listp (eval var))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
807 (desktop-truncate (eval var) size)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
808 (insert "(setq " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
809 (symbol-name var) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
810 " " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
811 (desktop-value-to-string (symbol-value var)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
812 ")\n")))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
813 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
814 ;; ---------------------------------------------------------------------------- |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
815 (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
|
816 "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
|
817 FILENAME is the visited file name, BUFNAME is the buffer name, and |
68775
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
818 MODE is the major mode. |
01a75c5115e7
(desktop-outvar): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
68651
diff
changeset
|
819 \n\(fn FILENAME BUFNAME MODE)" |
107543 | 820 (let ((case-fold-search nil) |
821 dired-skip) | |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
822 (and (not (and (stringp desktop-buffers-not-to-save) |
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
823 (not filename) |
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
824 (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
|
825 (not (memq mode desktop-modes-not-to-save)) |
107543 | 826 ;; FIXME this is broken if desktop-files-not-to-save is 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
|
827 (or (and filename |
103958
f261612c30a6
(desktop-buffers-not-to-save): Default value is nil. Accept nil in
Eli Zaretskii <eliz@gnu.org>
parents:
103872
diff
changeset
|
828 (stringp desktop-files-not-to-save) |
55155
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
829 (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
|
830 (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
|
831 (with-current-buffer bufname |
107543 | 832 (not (setq dired-skip |
833 (string-match desktop-files-not-to-save | |
834 default-directory))))) | |
55155
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
835 (and (null filename) |
107543 | 836 (null dired-skip) ; bug#5755 |
55155
519f44af960a
(desktop-buffer-misc-data-function): Rename to desktop-save-buffer and change docstring.
Lars Hansen <larsh@soem.dk>
parents:
55059
diff
changeset
|
837 (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
|
838 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
839 ;; ---------------------------------------------------------------------------- |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
840 (defun desktop-file-name (filename dirname) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
841 "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
|
842 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
|
843 (cond |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
844 ((not filename) nil) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
845 ((eq desktop-file-name-format 'tilde) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
846 (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
|
847 (cond |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
848 ((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
|
849 ((string= "./" relative-name) "~/") |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
850 ((string= "." relative-name) "~") |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
851 (t (concat "~/" relative-name))))) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
852 ((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
|
853 (t (expand-file-name filename)))) |
48143
8c7919f99581
(desktop-relative-file-names): New variable.
Juanma Barranquero <lekktu@gmail.com>
parents:
43831
diff
changeset
|
854 |
90951 | 855 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
856 ;; ---------------------------------------------------------------------------- |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
857 ;;;###autoload |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
858 (defun desktop-save (dirname &optional release) |
52674 | 859 "Save the desktop in a desktop file. |
860 Parameter DIRNAME specifies where to save the desktop file. | |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
861 Optional parameter RELEASE says whether we're done with this desktop. |
52674 | 862 See also `desktop-base-file-name'." |
3404 | 863 (interactive "DDirectory to save desktop file in: ") |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
864 (setq desktop-dirname (file-name-as-directory (expand-file-name dirname))) |
3404 | 865 (save-excursion |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
866 (let ((eager desktop-restore-eager) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
867 (new-modtime (nth 5 (file-attributes (desktop-full-file-name))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
868 (when |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
869 (or (not new-modtime) ; nothing to overwrite |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
870 (equal desktop-file-modtime new-modtime) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
871 (yes-or-no-p (if desktop-file-modtime |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
872 (if (> (float-time new-modtime) (float-time desktop-file-modtime)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
873 "Desktop file is more recent than the one loaded. Save anyway? " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
874 "Desktop file isn't the one loaded. Overwrite it? ") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
875 "Current desktop was not loaded from a file. Overwrite this desktop file? ")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
876 (unless release (error "Desktop file conflict"))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
877 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
878 ;; If we're done with it, release the lock. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
879 ;; Otherwise, claim it if it's unclaimed or if we created it. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
880 (if release |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
881 (desktop-release-lock) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
882 (unless (and new-modtime (desktop-owner)) (desktop-claim-lock))) |
3404 | 883 |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
884 (with-temp-buffer |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
885 (insert |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
886 ";; -*- mode: emacs-lisp; coding: emacs-mule; -*-\n" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
887 desktop-header |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
888 ";; Created " (current-time-string) "\n" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
889 ";; Desktop file format version " desktop-file-version "\n" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
890 ";; Emacs version " emacs-version "\n") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
891 (save-excursion (run-hooks 'desktop-save-hook)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
892 (goto-char (point-max)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
893 (insert "\n;; Global section:\n") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
894 (mapc (function desktop-outvar) desktop-globals-to-save) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
895 (when (memq 'kill-ring desktop-globals-to-save) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
896 (insert |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
897 "(setq kill-ring-yank-pointer (nthcdr " |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
898 (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
899 " kill-ring))\n")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
900 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
901 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
902 (dolist (l (mapcar 'desktop-buffer-info (buffer-list))) |
91841
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
903 (let ((base (pop l))) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
904 (when (apply 'desktop-save-buffer-p l) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
905 (insert "(" |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
906 (if (or (not (integerp eager)) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
907 (if (zerop eager) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
908 nil |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
909 (setq eager (1- eager)))) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
910 "desktop-create-buffer" |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
911 "desktop-append-buffer-args") |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
912 " " |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
913 desktop-file-version) |
92328
04dddf68dfc0
(desktop-save): Save the buffer name if the uniquified base name is empty.
Juanma Barranquero <lekktu@gmail.com>
parents:
91841
diff
changeset
|
914 ;; If there's a non-empty base name, we save it instead of the buffer name |
04dddf68dfc0
(desktop-save): Save the buffer name if the uniquified base name is empty.
Juanma Barranquero <lekktu@gmail.com>
parents:
91841
diff
changeset
|
915 (when (and base (not (string= base ""))) |
04dddf68dfc0
(desktop-save): Save the buffer name if the uniquified base name is empty.
Juanma Barranquero <lekktu@gmail.com>
parents:
91841
diff
changeset
|
916 (setcar (nthcdr 1 l) base)) |
91841
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
917 (dolist (e l) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
918 (insert "\n " (desktop-value-to-string e))) |
93224b3daf2a
(uniquify-managed): Don't defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
91810
diff
changeset
|
919 (insert ")\n\n")))) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
920 |
78110
33c9a00ace1e
(desktop-buffer-info, desktop-save): Use `desktop-dirname' instead of `dirname'.
Juanma Barranquero <lekktu@gmail.com>
parents:
78046
diff
changeset
|
921 (setq default-directory desktop-dirname) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
922 (let ((coding-system-for-write 'emacs-mule)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
923 (write-region (point-min) (point-max) (desktop-full-file-name) nil 'nomessage)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
924 ;; We remember when it was modified (which is presumably just now). |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
925 (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name))))))))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
926 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
927 ;; ---------------------------------------------------------------------------- |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
928 ;;;###autoload |
3404 | 929 (defun desktop-remove () |
52674 | 930 "Delete desktop file in `desktop-dirname'. |
931 This function also sets `desktop-dirname' to nil." | |
3404 | 932 (interactive) |
52674 | 933 (when desktop-dirname |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
934 (let ((filename (desktop-full-file-name))) |
52674 | 935 (setq desktop-dirname nil) |
936 (when (file-exists-p filename) | |
937 (delete-file filename))))) | |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
938 |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
939 (defvar desktop-buffer-args-list nil |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
940 "List of args for `desktop-create-buffer'.") |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
941 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
942 (defvar desktop-lazy-timer nil) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
943 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
944 ;; ---------------------------------------------------------------------------- |
21303
346595905ae4
(desktop-load-default): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
20772
diff
changeset
|
945 ;;;###autoload |
52674 | 946 (defun desktop-read (&optional dirname) |
947 "Read and process the desktop file in directory DIRNAME. | |
948 Look for a desktop file in DIRNAME, or if DIRNAME is omitted, look in | |
949 directories listed in `desktop-path'. If a desktop file is found, it | |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
950 is processed and `desktop-after-read-hook' is run. If no desktop file |
52674 | 951 is found, clear the desktop and run `desktop-no-desktop-file-hook'. |
952 This function is a no-op when Emacs is running in batch mode. | |
953 It returns t if a desktop file was loaded, nil otherwise." | |
954 (interactive) | |
955 (unless noninteractive | |
956 (setq desktop-dirname | |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
957 (file-name-as-directory |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
958 (expand-file-name |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
959 (or |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
960 ;; If DIRNAME is specified, use it. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
961 (and (< 0 (length dirname)) dirname) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
962 ;; Otherwise search desktop file in desktop-path. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
963 (let ((dirs desktop-path)) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
964 (while (and dirs |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
965 (not (file-exists-p |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
966 (desktop-full-file-name (car dirs))))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
967 (setq dirs (cdr dirs))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
968 (and dirs (car dirs))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
969 ;; If not found and `desktop-path' is non-nil, use its first element. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
970 (and desktop-path (car desktop-path)) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
971 ;; Default: Home directory. |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
972 "~")))) |
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
973 (if (file-exists-p (desktop-full-file-name)) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
974 ;; Desktop file found, but is it already in use? |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
975 (let ((desktop-first-buffer nil) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
976 (desktop-buffer-ok-count 0) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
977 (desktop-buffer-fail-count 0) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
978 (owner (desktop-owner)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
979 ;; Avoid desktop saving during evaluation of desktop buffer. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
980 (desktop-save nil)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
981 (if (and owner |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
982 (memq desktop-load-locked-desktop '(nil ask)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
983 (or (null desktop-load-locked-desktop) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
984 (not (y-or-n-p (format "Warning: desktop file appears to be in use by PID %s.\n\ |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
985 Using it may cause conflicts. Use it anyway? " owner))))) |
92364
4cf1d5a7cc52
(desktop-read): Set `desktop-dirname' to nil before running
Juanma Barranquero <lekktu@gmail.com>
parents:
92328
diff
changeset
|
986 (let ((default-directory desktop-dirname)) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
987 (setq desktop-dirname nil) |
92364
4cf1d5a7cc52
(desktop-read): Set `desktop-dirname' to nil before running
Juanma Barranquero <lekktu@gmail.com>
parents:
92328
diff
changeset
|
988 (run-hooks 'desktop-not-loaded-hook) |
4cf1d5a7cc52
(desktop-read): Set `desktop-dirname' to nil before running
Juanma Barranquero <lekktu@gmail.com>
parents:
92328
diff
changeset
|
989 (unless desktop-dirname |
4cf1d5a7cc52
(desktop-read): Set `desktop-dirname' to nil before running
Juanma Barranquero <lekktu@gmail.com>
parents:
92328
diff
changeset
|
990 (message "Desktop file in use; not loaded."))) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
991 (desktop-lazy-abort) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
992 ;; Evaluate desktop buffer and remember when it was modified. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
993 (load (desktop-full-file-name) t t t) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
994 (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
995 ;; If it wasn't already, mark it as in-use, to bother other |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
996 ;; desktop instances. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
997 (unless owner |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
998 (condition-case nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
999 (desktop-claim-lock) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1000 (file-error (message "Couldn't record use of desktop file") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1001 (sit-for 1)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1002 |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1003 ;; `desktop-create-buffer' puts buffers at end of the buffer list. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1004 ;; We want buffers existing prior to evaluating the desktop (and |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1005 ;; not reused) to be placed at the end of the buffer list, so we |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1006 ;; move them here. |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1007 (mapc 'bury-buffer |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1008 (nreverse (cdr (memq desktop-first-buffer (nreverse (buffer-list)))))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1009 (switch-to-buffer (car (buffer-list))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1010 (run-hooks 'desktop-delay-hook) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1011 (setq desktop-delay-hook nil) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1012 (run-hooks 'desktop-after-read-hook) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1013 (message "Desktop: %d buffer%s restored%s%s." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1014 desktop-buffer-ok-count |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1015 (if (= 1 desktop-buffer-ok-count) "" "s") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1016 (if (< 0 desktop-buffer-fail-count) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1017 (format ", %d failed to restore" desktop-buffer-fail-count) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1018 "") |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1019 (if desktop-buffer-args-list |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1020 (format ", %d to restore lazily" |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1021 (length desktop-buffer-args-list)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1022 "")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1023 t)) |
52674 | 1024 ;; No desktop file found. |
1025 (desktop-clear) | |
1026 (let ((default-directory desktop-dirname)) | |
1027 (run-hooks 'desktop-no-desktop-file-hook)) | |
1028 (message "No desktop file.") | |
1029 nil))) | |
1030 | |
1031 ;; ---------------------------------------------------------------------------- | |
1032 ;; Maintained for backward compatibility | |
1033 ;;;###autoload | |
3404 | 1034 (defun desktop-load-default () |
10595 | 1035 "Load the `default' start-up library manually. |
52674 | 1036 Also inhibit further loading of it." |
64674
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1037 (unless inhibit-default-init ; safety check |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1038 (load "default" t t) |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1039 (setq inhibit-default-init t))) |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1040 (make-obsolete 'desktop-load-default |
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1041 'desktop-save-mode "22.1") |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1042 |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1043 ;; ---------------------------------------------------------------------------- |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1044 ;;;###autoload |
52674 | 1045 (defun desktop-change-dir (dirname) |
1046 "Change to desktop saved in DIRNAME. | |
1047 Kill the desktop as specified by variables `desktop-save-mode' and | |
1048 `desktop-save', then clear the desktop and load the desktop file in | |
1049 directory DIRNAME." | |
1050 (interactive "DChange to directory: ") | |
1051 (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
|
1052 (desktop-kill) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1053 (desktop-clear) |
52674 | 1054 (desktop-read dirname)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59487
diff
changeset
|
1055 |
52674 | 1056 ;; ---------------------------------------------------------------------------- |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1057 ;;;###autoload |
52674 | 1058 (defun desktop-save-in-desktop-dir () |
1059 "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
|
1060 (interactive) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1061 (if desktop-dirname |
64674
b110ecf69f54
(desktop-save-buffer): Fix typos in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
64566
diff
changeset
|
1062 (desktop-save desktop-dirname) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1063 (call-interactively 'desktop-save)) |
100906
43e72c1cf36e
* desktop.el (desktop-save-in-desktop-dir): Use `abbreviate-file-name'
Juanma Barranquero <lekktu@gmail.com>
parents:
100171
diff
changeset
|
1064 (message "Desktop saved in %s" (abbreviate-file-name desktop-dirname))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1065 |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1066 ;; ---------------------------------------------------------------------------- |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1067 ;;;###autoload |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1068 (defun desktop-revert () |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1069 "Revert to the last loaded desktop." |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1070 (interactive) |
52674 | 1071 (unless desktop-dirname |
1072 (error "Unknown desktop directory")) | |
71453
bef13fc7f695
(desktop-full-file-name): New function.
Lars Hansen <larsh@soem.dk>
parents:
70653
diff
changeset
|
1073 (unless (file-exists-p (desktop-full-file-name)) |
52674 | 1074 (error "No desktop file found")) |
1075 (desktop-clear) | |
1076 (desktop-read desktop-dirname)) | |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1077 |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1078 (defvar desktop-buffer-major-mode) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1079 (defvar desktop-buffer-locals) |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
1080 ;; ---------------------------------------------------------------------------- |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1081 (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
|
1082 desktop-buffer-name |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1083 desktop-buffer-misc) |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1084 "Restore a file buffer." |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1085 (when desktop-buffer-file-name |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1086 (if (or (file-exists-p desktop-buffer-file-name) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1087 (let ((msg (format "Desktop: File \"%s\" no longer exists." |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1088 desktop-buffer-file-name))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1089 (if desktop-missing-file-warning |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1090 (y-or-n-p (concat msg " Re-create buffer? ")) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1091 (message "%s" msg) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1092 nil))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1093 (let* ((auto-insert nil) ; Disable auto insertion |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1094 (coding-system-for-read |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1095 (or coding-system-for-read |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1096 (cdr (assq 'buffer-file-coding-system |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1097 desktop-buffer-locals)))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1098 (buf (find-file-noselect desktop-buffer-file-name))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1099 (condition-case nil |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1100 (switch-to-buffer buf) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1101 (error (pop-to-buffer buf))) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1102 (and (not (eq major-mode desktop-buffer-major-mode)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1103 (functionp desktop-buffer-major-mode) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1104 (funcall desktop-buffer-major-mode)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1105 buf) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1106 nil))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1107 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1108 (defun desktop-load-file (function) |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1109 "Load the file where auto loaded FUNCTION is defined." |
66037
89bec3b605ff
(desktop-load-file): Do nothing when FUNCTION is nil.
Lars Hansen <larsh@soem.dk>
parents:
65582
diff
changeset
|
1110 (when function |
68344
ffdb60daf52a
(desktop-load-file): Check for `fboundp' before calling `symbol-function'.
Juri Linkov <juri@jurta.org>
parents:
67560
diff
changeset
|
1111 (let ((fcell (and (fboundp function) (symbol-function function)))) |
66037
89bec3b605ff
(desktop-load-file): Do nothing when FUNCTION is nil.
Lars Hansen <larsh@soem.dk>
parents:
65582
diff
changeset
|
1112 (when (and (listp fcell) |
89bec3b605ff
(desktop-load-file): Do nothing when FUNCTION is nil.
Lars Hansen <larsh@soem.dk>
parents:
65582
diff
changeset
|
1113 (eq 'autoload (car fcell))) |
89bec3b605ff
(desktop-load-file): Do nothing when FUNCTION is nil.
Lars Hansen <larsh@soem.dk>
parents:
65582
diff
changeset
|
1114 (load (cadr fcell)))))) |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1115 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
1116 ;; ---------------------------------------------------------------------------- |
55179 | 1117 ;; Create a buffer, load its file, set its mode, ...; |
1118 ;; called from Desktop file only. | |
40210
01666fd1b210
(desktop-last-buffer): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
38798
diff
changeset
|
1119 |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1120 ;; Just to silence the byte compiler. |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1121 |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1122 (defvar desktop-first-buffer) ; Dynamically bound in `desktop-read' |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1123 |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1124 ;; Bound locally in `desktop-read'. |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1125 (defvar desktop-buffer-ok-count) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1126 (defvar desktop-buffer-fail-count) |
40210
01666fd1b210
(desktop-last-buffer): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
38798
diff
changeset
|
1127 |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1128 (defun desktop-create-buffer |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1129 (desktop-file-version |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1130 desktop-buffer-file-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1131 desktop-buffer-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1132 desktop-buffer-major-mode |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1133 desktop-buffer-minor-modes |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1134 desktop-buffer-point |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1135 desktop-buffer-mark |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1136 desktop-buffer-read-only |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1137 desktop-buffer-misc |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1138 &optional |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1139 desktop-buffer-locals) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1140 ;; 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
|
1141 ;; 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
|
1142 (save-current-buffer |
64893
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1143 ;; Give major mode module a chance to add a handler. |
2c0fe8b09aaa
(desktop-buffer-mode-handlers): Make
Lars Hansen <larsh@soem.dk>
parents:
64762
diff
changeset
|
1144 (desktop-load-file desktop-buffer-major-mode) |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1145 (let ((buffer-list (buffer-list)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1146 (result |
92944
6dea71380597
(desktop-create-buffer): Don't catch errors if debug-on-error is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92364
diff
changeset
|
1147 (condition-case-no-debug err |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1148 (funcall (or (cdr (assq desktop-buffer-major-mode |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1149 desktop-buffer-mode-handlers)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1150 'desktop-restore-file-buffer) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1151 desktop-buffer-file-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1152 desktop-buffer-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1153 desktop-buffer-misc) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1154 (error |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1155 (message "Desktop: Can't load buffer %s: %s" |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1156 desktop-buffer-name |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1157 (error-message-string err)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1158 (when desktop-missing-file-warning (sit-for 1)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1159 nil)))) |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1160 (if (bufferp result) |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1161 (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
|
1162 (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
|
1163 (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
|
1164 ;; 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
|
1165 ;; 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
|
1166 (unless (< desktop-file-version 206) |
58537
619031e477a8
(desktop-read): Replace mapcar with mapc.
Lars Hansen <larsh@soem.dk>
parents:
58180
diff
changeset
|
1167 (mapc 'bury-buffer buffer-list) |
51107
0c33d2fd9ae4
(desktop-save): Ensure parameter is expanded and ends with a slash before
Juanma Barranquero <lekktu@gmail.com>
parents:
50642
diff
changeset
|
1168 (when result (bury-buffer result))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1169 (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
|
1170 (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
|
1171 (setq desktop-first-buffer result)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1172 (set-buffer result) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1173 (unless (equal (buffer-name) desktop-buffer-name) |
79237
80e25357226e
(uniquify-managed): Pacify byte compiler.
Juanma Barranquero <lekktu@gmail.com>
parents:
78236
diff
changeset
|
1174 (rename-buffer desktop-buffer-name t)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1175 ;; minor modes |
57038
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1176 (cond ((equal '(t) desktop-buffer-minor-modes) ; backwards compatible |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1177 (auto-fill-mode 1)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1178 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1179 (auto-fill-mode 0)) |
791b0637af6d
(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
Lars Hansen <larsh@soem.dk>
parents:
55871
diff
changeset
|
1180 (t |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1181 (dolist (minor-mode desktop-buffer-minor-modes) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1182 ;; Give minor mode module a chance to add a handler. |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1183 (desktop-load-file minor-mode) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1184 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1185 (if handler |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1186 (funcall handler desktop-buffer-locals) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1187 (when (functionp minor-mode) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1188 (funcall minor-mode 1))))))) |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1189 ;; Even though point and mark are non-nil when written by |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1190 ;; `desktop-save', they may be modified by handlers wanting to set |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1191 ;; point or mark themselves. |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1192 (when desktop-buffer-point |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1193 (goto-char |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1194 (condition-case err |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1195 ;; Evaluate point. Thus point can be something like |
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1196 ;; '(search-forward ... |
55059
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1197 (eval desktop-buffer-point) |
fa9573e2db2a
(desktop-buffer-mode-handlers): New variabel. Alist
Lars Hansen <larsh@soem.dk>
parents:
54206
diff
changeset
|
1198 (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
|
1199 (when desktop-buffer-mark |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1200 (if (consp desktop-buffer-mark) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1201 (progn |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1202 (set-mark (car desktop-buffer-mark)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1203 (setq mark-active (car (cdr desktop-buffer-mark)))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1204 (set-mark desktop-buffer-mark))) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1205 ;; Never override file system if the file really is read-only marked. |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1206 (when desktop-buffer-read-only (setq buffer-read-only desktop-buffer-read-only)) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1207 (while desktop-buffer-locals |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1208 (let ((this (car desktop-buffer-locals))) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1209 (if (consp this) |
78046
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1210 ;; an entry of this form `(symbol . value)' |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1211 (progn |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1212 (make-local-variable (car this)) |
c395c022a035
(desktop-read): Run `desktop-not-loaded-hook' in the directory where the desktop
Juanma Barranquero <lekktu@gmail.com>
parents:
77991
diff
changeset
|
1213 (set (car this) (cdr this))) |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1214 ;; an entry of the form `symbol' |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1215 (make-local-variable this) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1216 (makunbound this))) |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1217 (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
|
1218 |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1219 ;; ---------------------------------------------------------------------------- |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
1220 ;; 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
|
1221 (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
|
1222 desktop-buffer-major-mode |
14756
aabf776c3b6a
Global var `misc' renamed.
Richard M. Stallman <rms@gnu.org>
parents:
14755
diff
changeset
|
1223 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
|
1224 (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
|
1225 desktop-buffer-major-mode (cdr mim) pt mk ro |
aabf776c3b6a
Global var `misc' renamed.
Richard M. Stallman <rms@gnu.org>
parents:
14755
diff
changeset
|
1226 desktop-buffer-misc |
5465
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
1227 (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
|
1228 (cons 'fill-column fc) |
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
1229 (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
|
1230 (cons 'case-replace cr) |
9fcfca1caec7
(desktop-buffer-mh): New function for mh mail system.
Richard M. Stallman <rms@gnu.org>
parents:
5314
diff
changeset
|
1231 (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
|
1232 |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1233 (defun desktop-append-buffer-args (&rest args) |
64490
e22e42dbaf76
(desktop-enable, desktop-buffer-modes-to-save, (desktop-buffer-misc-functions,
Juanma Barranquero <lekktu@gmail.com>
parents:
64254
diff
changeset
|
1234 "Append ARGS at end of `desktop-buffer-args-list'. |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1235 ARGS must be an argument list for `desktop-create-buffer'." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1236 (setq desktop-buffer-args-list (nconc desktop-buffer-args-list (list args))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1237 (unless desktop-lazy-timer |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1238 (setq desktop-lazy-timer |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1239 (run-with-idle-timer desktop-lazy-idle-delay t 'desktop-idle-create-buffers)))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1240 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1241 (defun desktop-lazy-create-buffer () |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1242 "Pop args from `desktop-buffer-args-list', create buffer and bury it." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1243 (when desktop-buffer-args-list |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1244 (let* ((remaining (length desktop-buffer-args-list)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1245 (args (pop desktop-buffer-args-list)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1246 (buffer-name (nth 2 args)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1247 (msg (format "Desktop lazily opening %s (%s remaining)..." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1248 buffer-name remaining))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1249 (when desktop-lazy-verbose |
65582
4d1085b02d64
Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents:
64963
diff
changeset
|
1250 (message "%s" msg)) |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1251 (let ((desktop-first-buffer nil) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1252 (desktop-buffer-ok-count 0) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1253 (desktop-buffer-fail-count 0)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1254 (apply 'desktop-create-buffer args) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1255 (run-hooks 'desktop-delay-hook) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1256 (setq desktop-delay-hook nil) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1257 (bury-buffer (get-buffer buffer-name)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1258 (when desktop-lazy-verbose |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1259 (message "%s%s" msg (if (> desktop-buffer-ok-count 0) "done" "failed"))))))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1260 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1261 (defun desktop-idle-create-buffers () |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1262 "Create buffers until the user does something, then stop. |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1263 If there are no buffers left to create, kill the timer." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1264 (let ((repeat 1)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1265 (while (and repeat desktop-buffer-args-list) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1266 (save-window-excursion |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1267 (desktop-lazy-create-buffer)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1268 (setq repeat (sit-for 0.2)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1269 (unless desktop-buffer-args-list |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1270 (cancel-timer desktop-lazy-timer) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1271 (setq desktop-lazy-timer nil) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1272 (message "Lazy desktop load complete") |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1273 (sit-for 3) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1274 (message ""))))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1275 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1276 (defun desktop-lazy-complete () |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1277 "Run the desktop load to completion." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1278 (interactive) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1279 (let ((desktop-lazy-verbose t)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1280 (while desktop-buffer-args-list |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1281 (save-window-excursion |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1282 (desktop-lazy-create-buffer))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1283 (message "Lazy desktop load complete"))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1284 |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1285 (defun desktop-lazy-abort () |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1286 "Abort lazy loading of the desktop." |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1287 (interactive) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1288 (when desktop-lazy-timer |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1289 (cancel-timer desktop-lazy-timer) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1290 (setq desktop-lazy-timer nil)) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1291 (when desktop-buffer-args-list |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1292 (setq desktop-buffer-args-list nil) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105031
diff
changeset
|
1293 (when (called-interactively-p 'interactive) |
59412
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1294 (message "Lazy desktop load aborted")))) |
0ddd142616f1
(desktop-restore-eager, desktop-lazy-verbose, desktop-lazy-idle-delay):
Lars Hansen <larsh@soem.dk>
parents:
58537
diff
changeset
|
1295 |
4830
a61307ac474e
Internal clean-up. Save information about current
Richard M. Stallman <rms@gnu.org>
parents:
3405
diff
changeset
|
1296 ;; ---------------------------------------------------------------------------- |
52674 | 1297 ;; 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
|
1298 ;; 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
|
1299 ;; after finishing loading the init file. |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1300 ;; 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
|
1301 ;; 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
|
1302 (add-hook |
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1303 'after-init-hook |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1304 (lambda () |
50507
110c0e29159c
Handle multiple desktop files in different dirs.
Richard M. Stallman <rms@gnu.org>
parents:
48143
diff
changeset
|
1305 (let ((key "--no-desktop")) |
61638
ef63bf685348
Make "--no-desktop" turn off `desktop-save-mode'.
Lars Hansen <larsh@soem.dk>
parents:
61236
diff
changeset
|
1306 (when (member key command-line-args) |
ef63bf685348
Make "--no-desktop" turn off `desktop-save-mode'.
Lars Hansen <larsh@soem.dk>
parents:
61236
diff
changeset
|
1307 (setq command-line-args (delete key command-line-args)) |
ef63bf685348
Make "--no-desktop" turn off `desktop-save-mode'.
Lars Hansen <larsh@soem.dk>
parents:
61236
diff
changeset
|
1308 (setq desktop-save-mode nil))) |
91810
81c282959319
(after-init-hook): Set inhibit-startup-screen to t
Juri Linkov <juri@jurta.org>
parents:
91327
diff
changeset
|
1309 (when desktop-save-mode |
81c282959319
(after-init-hook): Set inhibit-startup-screen to t
Juri Linkov <juri@jurta.org>
parents:
91327
diff
changeset
|
1310 (desktop-read) |
81c282959319
(after-init-hook): Set inhibit-startup-screen to t
Juri Linkov <juri@jurta.org>
parents:
91327
diff
changeset
|
1311 (setq inhibit-startup-screen t)))) |
20526
ec0a8ccddd6c
(desktop-enable): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18581
diff
changeset
|
1312 |
3405 | 1313 (provide 'desktop) |
3404 | 1314 |
77115
7596f1771948
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76978
diff
changeset
|
1315 ;; 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
|
1316 ;;; desktop.el ends here |