aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2007-04-11 02:28:26 +0000
committerStefan Monnier2007-04-11 02:28:26 +0000
commit341c2f07d4f50009670c397a4745bdc000864ddf (patch)
tree7ccc1fb4556258af858e27e23f34ea8594d8d886
parentc429815a6b9d271a57eed4956125f6bc89d1d72b (diff)
downloademacs-341c2f07d4f50009670c397a4745bdc000864ddf.tar.gz
emacs-341c2f07d4f50009670c397a4745bdc000864ddf.zip
(desktop-save, desktop-create-buffer): Replace mapcar with dolist.
(after-init-hook): Don't quote lambda. (desktop-first-buffer): Don't wrap it in eval-when-compile. (desktop-internal-v2s): Remove unused var `el'. (desktop-buffer-major-mode, desktop-buffer-locals): Move out of desktop-restore-file-buffer. (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of desktop-create-buffer.
-rw-r--r--lisp/ChangeLog24
-rw-r--r--lisp/desktop.el94
2 files changed, 64 insertions, 54 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 16acb6f40e0..eca3f6e1c34 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
12007-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar with
4 dolist.
5 (after-init-hook): Don't quote lambda.
6 (desktop-first-buffer): Don't wrap it in eval-when-compile.
7 (desktop-internal-v2s): Remove unused var `el'.
8 (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
9 desktop-restore-file-buffer.
10 (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
11 desktop-create-buffer.
12
12007-04-10 Chong Yidong <cyd@stupidchicken.com> 132007-04-10 Chong Yidong <cyd@stupidchicken.com>
2 14
3 * woman.el (woman-decode-buffer): Postphone macro-set check... 15 * woman.el (woman-decode-buffer): Postphone macro-set check...
@@ -25,8 +37,8 @@
25 37
26 * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move 38 * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
27 to bytecomp.el as byte-compile-char-before). 39 to bytecomp.el as byte-compile-char-before).
28 * emacs-lisp/bytecomp.el (byte-compile-char-before): New 40 * emacs-lisp/bytecomp.el (byte-compile-char-before):
29 function (modified replacement for byte-optimize-char-before in 41 New function (modified replacement for byte-optimize-char-before in
30 byte-opt.el). 42 byte-opt.el).
31 43
322007-04-09 Alan Mackenzie <acm@muc.de> 442007-04-09 Alan Mackenzie <acm@muc.de>
@@ -76,8 +88,8 @@
76 88
772007-04-08 Johan Bockg,Ae(Brd <bojohan+news@dd.chalmers.se> 892007-04-08 Johan Bockg,Ae(Brd <bojohan+news@dd.chalmers.se>
78 90
79 * term/xterm.el (terminal-init-xterm): Fix key definitions. Add 91 * term/xterm.el (terminal-init-xterm): Fix key definitions.
80 binding for C-M-SPC. 92 Add binding for C-M-SPC.
81 93
822007-04-08 Richard Stallman <rms@gnu.org> 942007-04-08 Richard Stallman <rms@gnu.org>
83 95
@@ -142,8 +154,8 @@
142 154
143 * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change. 155 * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
144 156
145 * desktop.el (desktop-create-buffer, desktop-save): Revert 157 * desktop.el (desktop-create-buffer, desktop-save):
146 2004-11-12 change. 158 Revert 2004-11-12 change for lack of copyright papers.
147 159
148 * dired-x.el (dired-guess-shell-case-fold-search): Delete var. 160 * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
149 (dired-guess-default): Respect case. 161 (dired-guess-default): Respect case.
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 7b5db86f3cf..92f6a448574 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -45,9 +45,9 @@
45;; "Saving Emacs Sessions" in the GNU Emacs Manual. 45;; "Saving Emacs Sessions" in the GNU Emacs Manual.
46 46
47;; When the desktop module is loaded, the function `desktop-kill' is 47;; When the desktop module is loaded, the function `desktop-kill' is
48;; added to the `kill-emacs-hook'. This function is responsible for 48;; added to the `kill-emacs-hook'. This function is responsible for
49;; saving the desktop when Emacs is killed. Furthermore an anonymous 49;; saving the desktop when Emacs is killed. Furthermore an anonymous
50;; function is added to the `after-init-hook'. This function is 50;; function is added to the `after-init-hook'. This function is
51;; responsible for loading the desktop when Emacs is started. 51;; responsible for loading the desktop when Emacs is started.
52 52
53;; Special handling. 53;; Special handling.
@@ -55,12 +55,12 @@
55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers' 55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers'
56;; are supplied to handle special major and minor modes respectively. 56;; are supplied to handle special major and minor modes respectively.
57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions 57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions
58;; to restore a desktop buffer. Elements must have the form 58;; to restore a desktop buffer. Elements must have the form
59;; 59;;
60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
61;; 61;;
62;; Functions listed are called by `desktop-create-buffer' when `desktop-read' 62;; Functions listed are called by `desktop-create-buffer' when `desktop-read'
63;; evaluates the desktop file. Buffers with a major mode not specified here, 63;; evaluates the desktop file. Buffers with a major mode not specified here,
64;; are restored by the default handler `desktop-restore-file-buffer'. 64;; are restored by the default handler `desktop-restore-file-buffer'.
65;; `desktop-minor-mode-handlers' is an alist of functions to restore 65;; `desktop-minor-mode-handlers' is an alist of functions to restore
66;; non-standard minor modes. Elements must have the form 66;; non-standard minor modes. Elements must have the form
@@ -85,7 +85,7 @@
85;; '(bar-mode . bar-desktop-restore)) 85;; '(bar-mode . bar-desktop-restore))
86 86
87;; in the module itself, and make shure that the mode function is 87;; in the module itself, and make shure that the mode function is
88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and 88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
89;; `desktop-minor-mode-handlers' for more info. 89;; `desktop-minor-mode-handlers' for more info.
90 90
91;; Minor modes. 91;; Minor modes.
@@ -100,7 +100,7 @@
100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers' 100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers'
101;; are used to handle non-conventional minor modes. `desktop-save' uses 101;; are used to handle non-conventional minor modes. `desktop-save' uses
102;; `desktop-minor-mode-table' to map minor mode variables to minor mode 102;; `desktop-minor-mode-table' to map minor mode variables to minor mode
103;; functions before writing `desktop-minor-modes'. If a minor mode has a 103;; functions before writing `desktop-minor-modes'. If a minor mode has a
104;; variable name that is different form its function name, an entry 104;; variable name that is different form its function name, an entry
105 105
106;; (NAME RESTORE-FUNCTION) 106;; (NAME RESTORE-FUNCTION)
@@ -619,8 +619,7 @@ QUOTE may be `may' (value may be quoted),
619 (setq newlist (cons q.txt newlist))) 619 (setq newlist (cons q.txt newlist)))
620 (setq p (cdr p))) 620 (setq p (cdr p)))
621 (if p 621 (if p
622 (let ((last (desktop-internal-v2s p)) 622 (let ((last (desktop-internal-v2s p)))
623 (el (car newlist)))
624 (or anynil (setq anynil (null (car last)))) 623 (or anynil (setq anynil (null (car last))))
625 (or anynil 624 (or anynil
626 (setq newlist (cons '(must . ".") newlist))) 625 (setq newlist (cons '(must . ".") newlist)))
@@ -782,7 +781,8 @@ See also `desktop-base-file-name'."
782 ";; Desktop file format version " desktop-file-version "\n" 781 ";; Desktop file format version " desktop-file-version "\n"
783 ";; Emacs version " emacs-version "\n\n" 782 ";; Emacs version " emacs-version "\n\n"
784 ";; Global section:\n") 783 ";; Global section:\n")
785 (mapcar (function desktop-outvar) desktop-globals-to-save) 784 (dolist (varspec desktop-globals-to-save)
785 (desktop-outvar varspec))
786 (if (memq 'kill-ring desktop-globals-to-save) 786 (if (memq 'kill-ring desktop-globals-to-save)
787 (insert 787 (insert
788 "(setq kill-ring-yank-pointer (nthcdr " 788 "(setq kill-ring-yank-pointer (nthcdr "
@@ -790,22 +790,20 @@ See also `desktop-base-file-name'."
790 " kill-ring))\n")) 790 " kill-ring))\n"))
791 791
792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") 792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
793 (mapcar #'(lambda (l) 793 (dolist (l info)
794 (when (apply 'desktop-save-buffer-p l) 794 (when (apply 'desktop-save-buffer-p l)
795 (insert "(" 795 (insert "("
796 (if (or (not (integerp eager)) 796 (if (or (not (integerp eager))
797 (unless (zerop eager) 797 (unless (zerop eager)
798 (setq eager (1- eager)) 798 (setq eager (1- eager))
799 t)) 799 t))
800 "desktop-create-buffer" 800 "desktop-create-buffer"
801 "desktop-append-buffer-args") 801 "desktop-append-buffer-args")
802 " " 802 " "
803 desktop-file-version) 803 desktop-file-version)
804 (mapcar #'(lambda (e) 804 (dolist (e l)
805 (insert "\n " (desktop-value-to-string e))) 805 (insert "\n " (desktop-value-to-string e)))
806 l) 806 (insert ")\n\n")))
807 (insert ")\n\n")))
808 info)
809 (setq default-directory dirname) 807 (setq default-directory dirname)
810 (let ((coding-system-for-write 'emacs-mule)) 808 (let ((coding-system-for-write 'emacs-mule))
811 (write-region (point-min) (point-max) filename nil 'nomessage))))) 809 (write-region (point-min) (point-max) filename nil 'nomessage)))))
@@ -941,14 +939,13 @@ directory DIRNAME."
941 (desktop-clear) 939 (desktop-clear)
942 (desktop-read desktop-dirname)) 940 (desktop-read desktop-dirname))
943 941
942(defvar desktop-buffer-major-mode)
943(defvar desktop-buffer-locals)
944;; ---------------------------------------------------------------------------- 944;; ----------------------------------------------------------------------------
945(defun desktop-restore-file-buffer (desktop-buffer-file-name 945(defun desktop-restore-file-buffer (desktop-buffer-file-name
946 desktop-buffer-name 946 desktop-buffer-name
947 desktop-buffer-misc) 947 desktop-buffer-misc)
948 "Restore a file buffer." 948 "Restore a file buffer."
949 (eval-when-compile ; Just to silence the byte compiler
950 (defvar desktop-buffer-major-mode)
951 (defvar desktop-buffer-locals))
952 (if desktop-buffer-file-name 949 (if desktop-buffer-file-name
953 (if (or (file-exists-p desktop-buffer-file-name) 950 (if (or (file-exists-p desktop-buffer-file-name)
954 (let ((msg (format "Desktop: File \"%s\" no longer exists." 951 (let ((msg (format "Desktop: File \"%s\" no longer exists."
@@ -985,8 +982,12 @@ directory DIRNAME."
985;; called from Desktop file only. 982;; called from Desktop file only.
986 983
987;; Just to silence the byte compiler. 984;; Just to silence the byte compiler.
988(eval-when-compile 985
989 (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read' 986(defvar desktop-first-buffer) ; Dynamically bound in `desktop-read'
987
988;; Bound locally in `desktop-read'.
989(defvar desktop-buffer-ok-count)
990(defvar desktop-buffer-fail-count)
990 991
991(defun desktop-create-buffer 992(defun desktop-create-buffer
992 (desktop-file-version 993 (desktop-file-version
@@ -1000,10 +1001,6 @@ directory DIRNAME."
1000 desktop-buffer-misc 1001 desktop-buffer-misc
1001 &optional 1002 &optional
1002 desktop-buffer-locals) 1003 desktop-buffer-locals)
1003 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
1004 (eval-when-compile
1005 (defvar desktop-buffer-ok-count)
1006 (defvar desktop-buffer-fail-count))
1007 ;; To make desktop files with relative file names possible, we cannot 1004 ;; To make desktop files with relative file names possible, we cannot
1008 ;; allow `default-directory' to change. Therefore we save current buffer. 1005 ;; allow `default-directory' to change. Therefore we save current buffer.
1009 (save-current-buffer 1006 (save-current-buffer
@@ -1045,21 +1042,22 @@ directory DIRNAME."
1045 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible 1042 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
1046 (auto-fill-mode 0)) 1043 (auto-fill-mode 0))
1047 (t 1044 (t
1048 (mapcar #'(lambda (minor-mode) 1045 (dolist (minor-mode desktop-buffer-minor-modes)
1049 ;; Give minor mode module a chance to add a handler. 1046 ;; Give minor mode module a chance to add a handler.
1050 (desktop-load-file minor-mode) 1047 (desktop-load-file minor-mode)
1051 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) 1048 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
1052 (if handler 1049 (if handler
1053 (funcall handler desktop-buffer-locals) 1050 (funcall handler desktop-buffer-locals)
1054 (when (functionp minor-mode) 1051 (when (functionp minor-mode)
1055 (funcall minor-mode 1))))) 1052 (funcall minor-mode 1)))))))
1056 desktop-buffer-minor-modes))) 1053 ;; Even though point and mark are non-nil when written by
1057 ;; Even though point and mark are non-nil when written by `desktop-save', 1054 ;; `desktop-save', they may be modified by handlers wanting to set
1058 ;; they may be modified by handlers wanting to set point or mark themselves. 1055 ;; point or mark themselves.
1059 (when desktop-buffer-point 1056 (when desktop-buffer-point
1060 (goto-char 1057 (goto-char
1061 (condition-case err 1058 (condition-case err
1062 ;; Evaluate point. Thus point can be something like '(search-forward ... 1059 ;; Evaluate point. Thus point can be something like
1060 ;; '(search-forward ...
1063 (eval desktop-buffer-point) 1061 (eval desktop-buffer-point)
1064 (error (message "%s" (error-message-string err)) 1)))) 1062 (error (message "%s" (error-message-string err)) 1))))
1065 (when desktop-buffer-mark 1063 (when desktop-buffer-mark
@@ -1167,7 +1165,7 @@ If there are no buffers left to create, kill the timer."
1167;; functions are processed after `after-init-hook'. 1165;; functions are processed after `after-init-hook'.
1168(add-hook 1166(add-hook
1169 'after-init-hook 1167 'after-init-hook
1170 '(lambda () 1168 (lambda ()
1171 (let ((key "--no-desktop")) 1169 (let ((key "--no-desktop"))
1172 (when (member key command-line-args) 1170 (when (member key command-line-args)
1173 (setq command-line-args (delete key command-line-args)) 1171 (setq command-line-args (delete key command-line-args))
@@ -1176,5 +1174,5 @@ If there are no buffers left to create, kill the timer."
1176 1174
1177(provide 'desktop) 1175(provide 'desktop)
1178 1176
1179;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9 1177;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
1180;;; desktop.el ends here 1178;;; desktop.el ends here