mylisp/mypasshide.el
changeset 1666 06937ff1ec5f
parent 1644 83380a5779c6
equal deleted inserted replaced
1665:3685e2321a9b 1666:06937ff1ec5f
       
     1 
       
     2 (defvar mypasshide-prefix-re "^pass: *")
       
     3 
       
     4 (defun mypasshide--toggle-display (overlay hide)
       
     5   "Hide or reveal region. Signature follows convention for
       
     6 `reveal-toggle-invisible' from `reveal' mode."
       
     7   (if hide
       
     8       (overlay-put overlay 'display (propertize "****" 'face 'warning))
       
     9     (overlay-put overlay 'display nil)))
       
    10 
       
    11 (defun mypasshide--hide ()
       
    12   (save-excursion
       
    13     (goto-char (point-min))
       
    14     (while (re-search-forward mypasshide-prefix-re nil t)
       
    15       (let* ((beg (match-end 0))
       
    16              (end (line-end-position))
       
    17              (overlay (make-overlay beg end)))
       
    18         (mypasshide--toggle-display overlay t)
       
    19         (overlay-put overlay 'reveal-toggle-invisible #'mypasshide--toggle-display)
       
    20         ))))
       
    21 
       
    22 ;;;###autoload
       
    23 (define-minor-mode mypasshide-mode
       
    24   "Hide passwords after `mypasshide-prefix-re' and activate
       
    25 `reveal-mode'. Disabling is not implemented."
       
    26   :group 'reveal
       
    27   (if mypasshide-mode
       
    28       (progn
       
    29         (mypasshide--hide)
       
    30         (reveal-mode))))
       
    31 
       
    32 (provide 'mypasshide)
       
    33