emacs-diffs
[Top][All Lists]
Advanced

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

scratch/sqlite 811c371 2/4: Use strings for package/key


From: Lars Ingebrigtsen
Subject: scratch/sqlite 811c371 2/4: Use strings for package/key
Date: Tue, 14 Dec 2021 20:25:49 -0500 (EST)

branch: scratch/sqlite
commit 811c37189b087c05e18c386e20d168eb575aa215
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Use strings for package/key
---
 lisp/emacs-lisp/multisession.el | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/lisp/emacs-lisp/multisession.el b/lisp/emacs-lisp/multisession.el
index 7eda012..df7a905 100644
--- a/lisp/emacs-lisp/multisession.el
+++ b/lisp/emacs-lisp/multisession.el
@@ -51,8 +51,13 @@ Valid methods are `sqlite' and `files'."
 DOC should be a doc string, and ARGS are keywords as applicable to
 `make-multisession'."
   (declare (indent defun))
+  (unless (plist-get args :package)
+    (setq args (nconc (list :package
+                            (replace-regexp-in-string "-.*" ""
+                                                      (symbol-name name)))
+                      args)))
   `(defvar ,name
-     (make-multisession :key ',name
+     (make-multisession :key ,(symbol-name name)
                         :initial-value ,initial-value
                         ,@args)
      ,@(list doc)))
@@ -73,11 +78,10 @@ DOC should be a doc string, and ARGS are keywords as 
applicable to
 
 (cl-defun make-multisession (&key key initial-value package synchronized)
   "Create a multisession object."
+  (unless package
+    (error "No package for the multisession object"))
   (unless key
     (error "No key for the multisession object"))
-  (unless package
-    (setq package (intern (replace-regexp-in-string "-.*" ""
-                                                    (symbol-name key)))))
   (multisession--create
    :key key
    :synchronized synchronized
@@ -141,8 +145,8 @@ DOC should be a doc string, and ARGS are keywords as 
applicable to
 
 (cl-defmethod multisession-backend-value ((_type (eql sqlite)) object)
   (multisession--ensure-db)
-  (let ((id (list (symbol-name (multisession--package object))
-                  (symbol-name (multisession--key object)))))
+  (let ((id (list (multisession--package object)
+                  (multisession--key object))))
     (cond
      ;; We have no value yet; check the database.
      ((eq (multisession--cached-value object) multisession--unbound)
@@ -194,8 +198,8 @@ DOC should be a doc string, and ARGS are keywords as 
applicable to
 (defun multisession--set-value-sqlite (object value)
   (multisession--ensure-db)
   (with-sqlite-transaction multisession--db
-    (let ((id (list (symbol-name (multisession--package object))
-                    (symbol-name (multisession--key object))))
+    (let ((id (list (multisession--package object)
+                    (multisession--key object)))
           (pvalue
            (let ((print-length nil)
                  (print-circle t)
@@ -242,11 +246,9 @@ DOC should be a doc string, and ARGS are keywords as 
applicable to
 (defun multisession--object-file-name (object)
   (expand-file-name
    (concat "files/"
-           (multisession--encode-file-name
-            (symbol-name (multisession--package object)))
+           (multisession--encode-file-name (multisession--package object))
            "/"
-           (multisession--encode-file-name
-            (symbol-name (multisession--key object)))
+           (multisession--encode-file-name (multisession--key object))
            ".value")
    multisession-directory))
 
@@ -312,8 +314,8 @@ DOC should be a doc string, and ARGS are keywords as 
applicable to
 
 (cl-defmethod multisession--backend-delete ((_type (eql files)) id)
   (let ((file (multisession--object-file-name
-               (make-multisession :package (intern (car id))
-                                  :key (intern (cadr id))))))
+               (make-multisession :package (car id)
+                                  :key (cadr id)))))
     (when (file-exists-p file)
       (delete-file file))))
 



reply via email to

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