emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r111025: Add desktop support for rest


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111025: Add desktop support for restoring vc-dir buffers (bug#10606)
Date: Wed, 28 Nov 2012 20:16:51 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111025
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Wed 2012-11-28 20:16:51 -0500
message:
  Add desktop support for restoring vc-dir buffers (bug#10606)
  
  * lisp/vc/vc-dir.el (vc-dir-mode): Autoload it (for desktop restore).
  Set buffer-local value of desktop-save-buffer.
  (vc-dir-desktop-buffer-misc-data, vc-dir-restore-desktop-buffer):
  New functions.
  (desktop-buffer-mode-handlers): Add vc-dir-mode entry.
  
  * lisp/desktop.el (desktop-save-buffer-p): Treat vc-dir like dired.
modified:
  lisp/ChangeLog
  lisp/desktop.el
  lisp/vc/vc-dir.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-11-29 01:13:33 +0000
+++ b/lisp/ChangeLog    2012-11-29 01:16:51 +0000
@@ -1,5 +1,13 @@
 2012-11-29  Glenn Morris  <address@hidden>
 
+       Add desktop support for restoring vc-dir buffers.  (Bug#10606)
+       * vc/vc-dir.el (vc-dir-mode): Autoload it (for desktop restore).
+       Set buffer-local value of desktop-save-buffer.
+       (vc-dir-desktop-buffer-misc-data, vc-dir-restore-desktop-buffer):
+       New functions.
+       (desktop-buffer-mode-handlers): Add vc-dir-mode entry.
+       * desktop.el (desktop-save-buffer-p): Treat vc-dir like dired.
+
        * files.el (inhibit-local-variables-ignore-case): New.  (Bug#10610)
        (inhibit-local-variables-p): Use inhibit-local-variables-ignore-case.
        Doc fix.

=== modified file 'lisp/desktop.el'
--- a/lisp/desktop.el   2012-09-25 04:13:02 +0000
+++ b/lisp/desktop.el   2012-11-29 01:16:51 +0000
@@ -825,7 +825,7 @@
          (or (and filename
                  (stringp desktop-files-not-to-save)
                   (not (string-match desktop-files-not-to-save filename)))
-             (and (eq mode 'dired-mode)
+             (and (memq mode '(dired-mode vc-dir-mode))
                   (with-current-buffer bufname
                     (not (setq dired-skip
                                (string-match desktop-files-not-to-save

=== modified file 'lisp/vc/vc-dir.el'
--- a/lisp/vc/vc-dir.el 2012-08-13 21:31:56 +0000
+++ b/lisp/vc/vc-dir.el 2012-11-29 01:16:51 +0000
@@ -930,6 +930,8 @@
 
 (defvar use-vc-backend)  ;; dynamically bound
 
+;; Autoload cookie needed by desktop.el.
+;;;###autoload
 (define-derived-mode vc-dir-mode special-mode "VC dir"
   "Major mode for VC directory buffers.
 Marking/Unmarking key bindings and actions:
@@ -967,6 +969,8 @@
 
 \\{vc-dir-mode-map}"
   (set (make-local-variable 'vc-dir-backend) use-vc-backend)
+  (set (make-local-variable 'desktop-save-buffer)
+       'vc-dir-desktop-buffer-misc-data)
   (setq buffer-read-only t)
   (when (boundp 'tool-bar-map)
     (set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map))
@@ -1288,6 +1292,31 @@
   "Default absence of extra information returned for a file."
   nil)
 
+
+;;; Support for desktop.el (adapted from what dired.el does).
+
+(declare-function desktop-file-name "desktop" (filename dirname))
+
+(defun vc-dir-desktop-buffer-misc-data (dirname)
+  "Auxiliary information to be saved in desktop file."
+  (cons (desktop-file-name default-directory dirname) vc-dir-backend))
+
+(defun vc-dir-restore-desktop-buffer (_filename _buffername misc-data)
+  "Restore a `vc-dir' buffer specified in a desktop file."
+  (let ((dir (car misc-data))
+       (backend (cdr misc-data)))
+    (if (file-directory-p dir)
+       (progn
+         (vc-dir dir backend)
+         (current-buffer))
+      (message "Desktop: Directory %s no longer exists." dir)
+      (when desktop-missing-file-warning (sit-for 1))
+      nil)))
+
+(add-to-list 'desktop-buffer-mode-handlers
+            '(vc-dir-mode . vc-dir-restore-desktop-buffer))
+
+
 (provide 'vc-dir)
 
 ;;; vc-dir.el ends here


reply via email to

[Prev in Thread] Current Thread [Next in Thread]