mylisp/mypasshide.el
changeset 1666 06937ff1ec5f
parent 1644 83380a5779c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mylisp/mypasshide.el	Sat Jan 02 00:33:04 2021 +0200
@@ -0,0 +1,33 @@
+
+(defvar mypasshide-prefix-re "^pass: *")
+
+(defun mypasshide--toggle-display (overlay hide)
+  "Hide or reveal region. Signature follows convention for
+`reveal-toggle-invisible' from `reveal' mode."
+  (if hide
+      (overlay-put overlay 'display (propertize "****" 'face 'warning))
+    (overlay-put overlay 'display nil)))
+
+(defun mypasshide--hide ()
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward mypasshide-prefix-re nil t)
+      (let* ((beg (match-end 0))
+             (end (line-end-position))
+             (overlay (make-overlay beg end)))
+        (mypasshide--toggle-display overlay t)
+        (overlay-put overlay 'reveal-toggle-invisible #'mypasshide--toggle-display)
+        ))))
+
+;;;###autoload
+(define-minor-mode mypasshide-mode
+  "Hide passwords after `mypasshide-prefix-re' and activate
+`reveal-mode'. Disabling is not implemented."
+  :group 'reveal
+  (if mypasshide-mode
+      (progn
+        (mypasshide--hide)
+        (reveal-mode))))
+
+(provide 'mypasshide)
+