]> code.delx.au - gnu-emacs/commitdiff
Derive secrets-mode from special-mode
authorMark Oteiza <mvoteiza@udel.edu>
Sat, 9 Jul 2016 01:10:32 +0000 (21:10 -0400)
committerMark Oteiza <mvoteiza@udel.edu>
Sat, 9 Jul 2016 01:10:32 +0000 (21:10 -0400)
* lisp/net/secrets.el: Remove top-level secrets-mode hack.
(secrets-mode-map): New variable.  Add key bindings to n and p for
navigating lines.
(secrets-mode): Derive from special-mode.  Remove keymap code and
initialization code.  Do not record undo information.  Make
secrets-show-collections the local revert-buffer-function.
(secrets-show-collections): Change signature to satisfy revert-buffer.

lisp/net/secrets.el

index 55d5f007ac59ed8907400274daaa8ae624d14591..82c886d6b3147289adfbcb07dbd713ce65f45258 100644 (file)
@@ -734,33 +734,30 @@ If there is no such item, or the item doesn't own this attribute, return nil."
 
 ;;; Visualization.
 
-(define-derived-mode secrets-mode nil "Secrets"
+(defvar secrets-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map (make-composed-keymap special-mode-map widget-keymap))
+    (define-key map "n" 'next-line)
+    (define-key map "p" 'previous-line)
+    (define-key map "z" 'kill-this-buffer)
+    map)
+  "Keymap used in `secrets-mode' buffers.")
+
+(define-derived-mode secrets-mode special-mode "Secrets"
   "Major mode for presenting password entries retrieved by Security Service.
 In this mode, widgets represent the search results.
 
 \\{secrets-mode-map}"
-  ;; Keymap.
-  (setq secrets-mode-map (copy-keymap special-mode-map))
-  (set-keymap-parent secrets-mode-map widget-keymap)
-  (define-key secrets-mode-map "z" 'kill-this-buffer)
-
+  (setq buffer-undo-list t)
+  (set (make-local-variable 'revert-buffer-function)
+       #'secrets-show-collections)
   ;; When we toggle, we must set temporary widgets.
   (set (make-local-variable 'tree-widget-after-toggle-functions)
-       '(secrets-tree-widget-after-toggle-function))
-
-  (when (not (called-interactively-p 'interactive))
-    ;; Initialize buffer.
-    (setq buffer-read-only t)
-    (let ((inhibit-read-only t))
-      (erase-buffer))))
+       '(secrets-tree-widget-after-toggle-function)))
 
 ;; It doesn't make sense to call it interactively.
 (put 'secrets-mode 'disabled t)
 
-;; The very first buffer created with `secrets-mode' does not have the
-;; keymap etc.  So we create a dummy buffer.  Stupid.
-(with-temp-buffer (secrets-mode))
-
 ;; We autoload `secrets-show-secrets' only on systems with D-Bus support.
 ;;;###autoload(when (featurep 'dbusbind)
 ;;;###autoload  (autoload 'secrets-show-secrets "secrets" nil t))
@@ -783,7 +780,7 @@ to their attributes."
       (secrets-mode)
       (secrets-show-collections))))
 
-(defun secrets-show-collections ()
+(defun secrets-show-collections (&optional _ignore _noconfirm)
   "Show all available collections."
   (let ((inhibit-read-only t)
        (alias (secrets-get-alias "default")))