mylisp/mypasshide.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sat, 02 Jan 2021 00:33:04 +0200
changeset 1666 06937ff1ec5f
parent 1644 mypasshide.el@83380a5779c6
permissions -rw-r--r--
Moved my elisp modes to dedicated directory to not mixt with init.el.


(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)