diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-04-11 02:28:26 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-04-11 02:28:26 +0000 |
commit | 341c2f07d4f50009670c397a4745bdc000864ddf (patch) | |
tree | 7ccc1fb4556258af858e27e23f34ea8594d8d886 /lisp/desktop.el | |
parent | c429815a6b9d271a57eed4956125f6bc89d1d72b (diff) | |
download | emacs-341c2f07d4f50009670c397a4745bdc000864ddf.tar.gz |
(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.
Diffstat (limited to 'lisp/desktop.el')
-rw-r--r-- | lisp/desktop.el | 94 |
1 files changed, 46 insertions, 48 deletions
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 @@ ;; "Saving Emacs Sessions" in the GNU Emacs Manual. ;; When the desktop module is loaded, the function `desktop-kill' is -;; added to the `kill-emacs-hook'. This function is responsible for +;; added to the `kill-emacs-hook'. This function is responsible for ;; saving the desktop when Emacs is killed. Furthermore an anonymous -;; function is added to the `after-init-hook'. This function is +;; function is added to the `after-init-hook'. This function is ;; responsible for loading the desktop when Emacs is started. ;; Special handling. @@ -55,12 +55,12 @@ ;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers' ;; are supplied to handle special major and minor modes respectively. ;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions -;; to restore a desktop buffer. Elements must have the form +;; to restore a desktop buffer. Elements must have the form ;; ;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). ;; ;; Functions listed are called by `desktop-create-buffer' when `desktop-read' -;; evaluates the desktop file. Buffers with a major mode not specified here, +;; evaluates the desktop file. Buffers with a major mode not specified here, ;; are restored by the default handler `desktop-restore-file-buffer'. ;; `desktop-minor-mode-handlers' is an alist of functions to restore ;; non-standard minor modes. Elements must have the form @@ -85,7 +85,7 @@ ;; '(bar-mode . bar-desktop-restore)) ;; in the module itself, and make shure that the mode function is -;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and +;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and ;; `desktop-minor-mode-handlers' for more info. ;; Minor modes. @@ -100,7 +100,7 @@ ;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers' ;; are used to handle non-conventional minor modes. `desktop-save' uses ;; `desktop-minor-mode-table' to map minor mode variables to minor mode -;; functions before writing `desktop-minor-modes'. If a minor mode has a +;; functions before writing `desktop-minor-modes'. If a minor mode has a ;; variable name that is different form its function name, an entry ;; (NAME RESTORE-FUNCTION) @@ -619,8 +619,7 @@ QUOTE may be `may' (value may be quoted), (setq newlist (cons q.txt newlist))) (setq p (cdr p))) (if p - (let ((last (desktop-internal-v2s p)) - (el (car newlist))) + (let ((last (desktop-internal-v2s p))) (or anynil (setq anynil (null (car last)))) (or anynil (setq newlist (cons '(must . ".") newlist))) @@ -782,7 +781,8 @@ See also `desktop-base-file-name'." ";; Desktop file format version " desktop-file-version "\n" ";; Emacs version " emacs-version "\n\n" ";; Global section:\n") - (mapcar (function desktop-outvar) desktop-globals-to-save) + (dolist (varspec desktop-globals-to-save) + (desktop-outvar varspec)) (if (memq 'kill-ring desktop-globals-to-save) (insert "(setq kill-ring-yank-pointer (nthcdr " @@ -790,22 +790,20 @@ See also `desktop-base-file-name'." " kill-ring))\n")) (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") - (mapcar #'(lambda (l) - (when (apply 'desktop-save-buffer-p l) - (insert "(" - (if (or (not (integerp eager)) - (unless (zerop eager) - (setq eager (1- eager)) - t)) - "desktop-create-buffer" - "desktop-append-buffer-args") - " " - desktop-file-version) - (mapcar #'(lambda (e) - (insert "\n " (desktop-value-to-string e))) - l) - (insert ")\n\n"))) - info) + (dolist (l info) + (when (apply 'desktop-save-buffer-p l) + (insert "(" + (if (or (not (integerp eager)) + (unless (zerop eager) + (setq eager (1- eager)) + t)) + "desktop-create-buffer" + "desktop-append-buffer-args") + " " + desktop-file-version) + (dolist (e l) + (insert "\n " (desktop-value-to-string e))) + (insert ")\n\n"))) (setq default-directory dirname) (let ((coding-system-for-write 'emacs-mule)) (write-region (point-min) (point-max) filename nil 'nomessage))))) @@ -941,14 +939,13 @@ directory DIRNAME." (desktop-clear) (desktop-read desktop-dirname)) +(defvar desktop-buffer-major-mode) +(defvar desktop-buffer-locals) ;; ---------------------------------------------------------------------------- (defun desktop-restore-file-buffer (desktop-buffer-file-name desktop-buffer-name desktop-buffer-misc) "Restore a file buffer." - (eval-when-compile ; Just to silence the byte compiler - (defvar desktop-buffer-major-mode) - (defvar desktop-buffer-locals)) (if desktop-buffer-file-name (if (or (file-exists-p desktop-buffer-file-name) (let ((msg (format "Desktop: File \"%s\" no longer exists." @@ -985,8 +982,12 @@ directory DIRNAME." ;; called from Desktop file only. ;; Just to silence the byte compiler. -(eval-when-compile - (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read' + +(defvar desktop-first-buffer) ; Dynamically bound in `desktop-read' + +;; Bound locally in `desktop-read'. +(defvar desktop-buffer-ok-count) +(defvar desktop-buffer-fail-count) (defun desktop-create-buffer (desktop-file-version @@ -1000,10 +1001,6 @@ directory DIRNAME." desktop-buffer-misc &optional desktop-buffer-locals) - ;; Just to silence the byte compiler. Bound locally in `desktop-read'. - (eval-when-compile - (defvar desktop-buffer-ok-count) - (defvar desktop-buffer-fail-count)) ;; To make desktop files with relative file names possible, we cannot ;; allow `default-directory' to change. Therefore we save current buffer. (save-current-buffer @@ -1045,21 +1042,22 @@ directory DIRNAME." ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible (auto-fill-mode 0)) (t - (mapcar #'(lambda (minor-mode) - ;; Give minor mode module a chance to add a handler. - (desktop-load-file minor-mode) - (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) - (if handler - (funcall handler desktop-buffer-locals) - (when (functionp minor-mode) - (funcall minor-mode 1))))) - desktop-buffer-minor-modes))) - ;; Even though point and mark are non-nil when written by `desktop-save', - ;; they may be modified by handlers wanting to set point or mark themselves. + (dolist (minor-mode desktop-buffer-minor-modes) + ;; Give minor mode module a chance to add a handler. + (desktop-load-file minor-mode) + (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) + (if handler + (funcall handler desktop-buffer-locals) + (when (functionp minor-mode) + (funcall minor-mode 1))))))) + ;; Even though point and mark are non-nil when written by + ;; `desktop-save', they may be modified by handlers wanting to set + ;; point or mark themselves. (when desktop-buffer-point (goto-char (condition-case err - ;; Evaluate point. Thus point can be something like '(search-forward ... + ;; Evaluate point. Thus point can be something like + ;; '(search-forward ... (eval desktop-buffer-point) (error (message "%s" (error-message-string err)) 1)))) (when desktop-buffer-mark @@ -1167,7 +1165,7 @@ If there are no buffers left to create, kill the timer." ;; functions are processed after `after-init-hook'. (add-hook 'after-init-hook - '(lambda () + (lambda () (let ((key "--no-desktop")) (when (member key command-line-args) (setq command-line-args (delete key command-line-args)) @@ -1176,5 +1174,5 @@ If there are no buffers left to create, kill the timer." (provide 'desktop) -;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9 +;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9 ;;; desktop.el ends here |