emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/ebdb 55a8c97 085/350: Split ebdb-db-disable into intera


From: Eric Abrahamsen
Subject: [elpa] externals/ebdb 55a8c97 085/350: Split ebdb-db-disable into interactive/non-interactive functions
Date: Mon, 14 Aug 2017 11:46:10 -0400 (EDT)

branch: externals/ebdb
commit 55a8c97afb2a62d01e16874812ca8eda9d332e97
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>

    Split ebdb-db-disable into interactive/non-interactive functions
    
    * ebdb.el (ebdb-db-disable): Change function to method, remove
      interactive elements.
    * ebdb-com.el (ebdb-disable-database): New function providing
      interactive elements of above. Provide keybindings, etc.
---
 ebdb-com.el | 22 ++++++++++++++++++++++
 ebdb.el     | 30 +++++++++---------------------
 2 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/ebdb-com.el b/ebdb-com.el
index f2017ac..76d3b89 100644
--- a/ebdb-com.el
+++ b/ebdb-com.el
@@ -298,6 +298,7 @@ With ARG a negative number do not append."
     (define-key km (kbd "d m")          'ebdb-move-records)
     (define-key km (kbd "d e")          'ebdb-customize-database)
     (define-key km (kbd "d r")          'ebdb-reload-database)
+    (define-key km (kbd "d d")          'ebdb-disable-database)
     (define-key km (kbd "f")          'ebdb-format-to-tmp-buffer)
     (define-key km (kbd "C-k")       'ebdb-delete-field-or-record)
     (define-key km (kbd "i")          'ebdb-insert-field)
@@ -954,6 +955,7 @@ displayed records."
      "--"
      ["Edit database" ebdb-customize-database t]
      ["Reload database" ebdb-reload-database t]
+     ["Disable database" ebdb-disable-database t]
      "--"
      ["Save EBDB" ebdb-save t]
      ["Revert EBDB" revert-buffer t])
@@ -1381,6 +1383,26 @@ With prefix N move backwards N (sub)fields."
    (ebdb-redisplay-records rec-uuids 'reformat)
    (message "Reloading %s... done" db-str)))
 
+(defun ebdb-disable-database (db)
+  "Disable database DB.
+
+This will unload (and undisplay) all of DB's records.  DB will
+remain disabled until it is manually re-enabled, and then
+reloaded with `ebdb-reload-database'."
+  (interactive (list (ebdb-prompt-for-db)))
+  (if (ebdb-db-dirty db)
+      (message "Database %s has unsaved changes, you should save it first."
+              (ebdb-string db))
+    (let ((recs (seq-filter (lambda (r)
+                             ;; Only disappear records that belong to
+                             ;; no other database.
+                             (= 1 (length
+                                   (slot-value (ebdb-record-cache r) 
'database))))
+                           (slot-value db 'records))))
+      (ebdb-redisplay-records recs 'remove)
+      (ebdb-db-disable db)
+      (message "Database %s is disabled." (ebdb-string db)))))
+
 
 ;; clean-up functions
 
diff --git a/ebdb.el b/ebdb.el
index 66b8ffc..10c8f38 100644
--- a/ebdb.el
+++ b/ebdb.el
@@ -2751,8 +2751,9 @@ executable.  When a symbol, assume an Elisp function."
     :type boolean
     :custom boolean
     :documentation
-    "Set to t to temporarily disable this database.  Records will
-    not be loaded from or saved to it.")
+    "When t, records will not be loaded from or saved to this
+    database.  Use `ebdb-disable-database' to disable the
+    database immediately.")
    (record-class
     :initarg :record-class
     ;; I don't think I can actually set this to `ebdb-record': the
@@ -2935,8 +2936,7 @@ that doesn't belong to a different database."
     ;; databases.
     (if (= 1 (length (slot-value (ebdb-record-cache r) 'database)))
        (ebdb-delete-record r db t)
-      (object-remove-from-list (ebdb-record-cache r) 'database db)))
-  (setq ebdb-db-list (cl-remove db ebdb-db-list)))
+      (object-remove-from-list (ebdb-record-cache r) 'database db))))
 
 (defun ebdb-db-reload (db)
   (ebdb-db-unload db)
@@ -3054,23 +3054,11 @@ the persistent save, or allow them to propagate."
 (cl-defmethod ebdb-string ((db ebdb-db))
   (format "Database: %s" (slot-value db 'file)))
 
-(defun ebdb-db-disable (db)
-  (interactive (list (ebdb-prompt-for-db)))
-  (if (ebdb-db-dirty db)
-      (message "Database %s has unsaved changes, you should save it first."
-              (ebdb-string db))
-    (let ((recs (seq-filter (lambda (r)
-                             ;; Only disappear records that belong to
-                             ;; no other database.
-                             (= 1 (length
-                                   (slot-value (ebdb-record-cache r) 
'database))))
-                           (slot-value db 'records))))
-     (setf (slot-value db 'disabled) t)
-     (setf (slot-value db 'dirty) t)
-     (ebdb-db-save db)
-     (ebdb-redisplay-records recs 'remove)
-     (ebdb-db-unload db)
-     (message "Database %s is disabled." (ebdb-string db)))))
+(cl-defmethod ebdb-db-disable ((db ebdb-db))
+  (setf (slot-value db 'disabled) t
+       (slot-value db 'dirty) t)
+  (ebdb-db-save db)
+  (ebdb-db-unload db))
 
 (cl-defmethod ebdb-db-customize ((db ebdb-db))
   (eieio-customize-object db))



reply via email to

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