aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Oteiza2016-07-08 21:10:32 -0400
committerMark Oteiza2016-07-08 21:10:32 -0400
commit7095596ac3ece75b7fb98be7a47e4715a54842c2 (patch)
tree0874266b248fbdcfbd3674aa183fc0daf9fc1033
parentbdda4855c635ecf4135e23321bdba023e9ae65c9 (diff)
downloademacs-7095596ac3ece75b7fb98be7a47e4715a54842c2.tar.gz
emacs-7095596ac3ece75b7fb98be7a47e4715a54842c2.zip
Derive secrets-mode from special-mode
* 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.
-rw-r--r--lisp/net/secrets.el33
1 files changed, 15 insertions, 18 deletions
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 55d5f007ac5..82c886d6b31 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -734,33 +734,30 @@ If there is no such item, or the item doesn't own this attribute, return nil."
734 734
735;;; Visualization. 735;;; Visualization.
736 736
737(define-derived-mode secrets-mode nil "Secrets" 737(defvar secrets-mode-map
738 (let ((map (make-sparse-keymap)))
739 (set-keymap-parent map (make-composed-keymap special-mode-map widget-keymap))
740 (define-key map "n" 'next-line)
741 (define-key map "p" 'previous-line)
742 (define-key map "z" 'kill-this-buffer)
743 map)
744 "Keymap used in `secrets-mode' buffers.")
745
746(define-derived-mode secrets-mode special-mode "Secrets"
738 "Major mode for presenting password entries retrieved by Security Service. 747 "Major mode for presenting password entries retrieved by Security Service.
739In this mode, widgets represent the search results. 748In this mode, widgets represent the search results.
740 749
741\\{secrets-mode-map}" 750\\{secrets-mode-map}"
742 ;; Keymap. 751 (setq buffer-undo-list t)
743 (setq secrets-mode-map (copy-keymap special-mode-map)) 752 (set (make-local-variable 'revert-buffer-function)
744 (set-keymap-parent secrets-mode-map widget-keymap) 753 #'secrets-show-collections)
745 (define-key secrets-mode-map "z" 'kill-this-buffer)
746
747 ;; When we toggle, we must set temporary widgets. 754 ;; When we toggle, we must set temporary widgets.
748 (set (make-local-variable 'tree-widget-after-toggle-functions) 755 (set (make-local-variable 'tree-widget-after-toggle-functions)
749 '(secrets-tree-widget-after-toggle-function)) 756 '(secrets-tree-widget-after-toggle-function)))
750
751 (when (not (called-interactively-p 'interactive))
752 ;; Initialize buffer.
753 (setq buffer-read-only t)
754 (let ((inhibit-read-only t))
755 (erase-buffer))))
756 757
757;; It doesn't make sense to call it interactively. 758;; It doesn't make sense to call it interactively.
758(put 'secrets-mode 'disabled t) 759(put 'secrets-mode 'disabled t)
759 760
760;; The very first buffer created with `secrets-mode' does not have the
761;; keymap etc. So we create a dummy buffer. Stupid.
762(with-temp-buffer (secrets-mode))
763
764;; We autoload `secrets-show-secrets' only on systems with D-Bus support. 761;; We autoload `secrets-show-secrets' only on systems with D-Bus support.
765;;;###autoload(when (featurep 'dbusbind) 762;;;###autoload(when (featurep 'dbusbind)
766;;;###autoload (autoload 'secrets-show-secrets "secrets" nil t)) 763;;;###autoload (autoload 'secrets-show-secrets "secrets" nil t))
@@ -783,7 +780,7 @@ to their attributes."
783 (secrets-mode) 780 (secrets-mode)
784 (secrets-show-collections)))) 781 (secrets-show-collections))))
785 782
786(defun secrets-show-collections () 783(defun secrets-show-collections (&optional _ignore _noconfirm)
787 "Show all available collections." 784 "Show all available collections."
788 (let ((inhibit-read-only t) 785 (let ((inhibit-read-only t)
789 (alias (secrets-get-alias "default"))) 786 (alias (secrets-get-alias "default")))