[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
scratch/sqlite 2c046ba: Use tabulated-list-mode for multisession-edit-mo
From: |
Lars Ingebrigtsen |
Subject: |
scratch/sqlite 2c046ba: Use tabulated-list-mode for multisession-edit-mode |
Date: |
Tue, 14 Dec 2021 03:51:23 -0500 (EST) |
branch: scratch/sqlite
commit 2c046baf41280a77df51f5191c86b07466cc1eda
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Use tabulated-list-mode for multisession-edit-mode
---
lisp/emacs-lisp/multisession.el | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/lisp/emacs-lisp/multisession.el b/lisp/emacs-lisp/multisession.el
index b8f899f..5e5cae4 100644
--- a/lisp/emacs-lisp/multisession.el
+++ b/lisp/emacs-lisp/multisession.el
@@ -27,6 +27,7 @@
(require 'eieio)
(require 'sqlite)
(require 'url)
+(require 'tabulated-list)
(defcustom multisession-storage 'files
"Storage method for multisession variables.
@@ -315,13 +316,20 @@ DOC should be a doc string, and ARGS are keywords as
applicable to
;; Mode for editing.
(defvar-keymap multisession-edit-mode-map
+ :parent tabulated-list-mode-map
"d" #'multisession-delete-value)
(define-derived-mode multisession-edit-mode special-mode "Multisession"
"This mode lists all elements in the \"multisession\" database."
:interactive nil
(buffer-disable-undo)
- (setq-local buffer-read-only t))
+ (setq-local buffer-read-only t
+ truncate-lines t)
+ (setq tabulated-list-format
+ `[("Package" 10)
+ ("Key" 30)
+ ("Value" 30)])
+ (setq revert-buffer-function #'multisession-edit-mode--revert))
;;;###autoload
(defun list-multisession-values ()
@@ -329,15 +337,22 @@ DOC should be a doc string, and ARGS are keywords as
applicable to
(interactive)
(multisession--ensure-db)
(pop-to-buffer (get-buffer-create "*Multisession*"))
+ (multisession-edit-mode)
+ (multisession-edit-mode--revert)
+ (goto-char (point-min)))
+
+(defun multisession-edit-mode--revert (&rest _)
(let ((inhibit-read-only t))
(erase-buffer)
- (cl-loop for (package key value)
- in (multisession--backend-values multisession-storage)
- do (insert (propertize (format "%s %s %s\n"
- package key value)
- 'multisession--id (list package key))))
- (goto-char (point-min)))
- (multisession-edit-mode))
+ (tabulated-list-init-header)
+ (setq tabulated-list-entries
+ (mapcar (lambda (elem)
+ (list
+ (cons (car elem) (cadr elem))
+ (vector (car elem) (cadr elem)
+ (format "%s" (caddr elem)))))
+ (multisession--backend-values multisession-storage)))
+ (tabulated-list-print t)))
(defun multisession-delete-value (id)
"Delete the value at point."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- scratch/sqlite 2c046ba: Use tabulated-list-mode for multisession-edit-mode,
Lars Ingebrigtsen <=