mypasshide.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Fri, 20 Nov 2020 17:24:58 +0200
changeset 1640 cbcc2ac8f3e3
child 1641 bbb65280822b
permissions -rw-r--r--
Implemented mypasshide-mode for hiding passwords from my .org files.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1640
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
(defvar mypasshide-prefix-re "^pass: *")
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
(defun mypasshide--toggle-display (overlay hide)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
  "Hide or reveal region. Signature follows convention for
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
`reveal-toggle-invisible' from `reveal' mode."
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
  (if hide
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
      (overlay-put overlay 'display (propertize "****" 'face 'warning))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
    (overlay-put overlay 'display nil)))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
(defun mypasshide--hide ()
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
  (save-excursion
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
    (goto-char (point-min))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
    (while (re-search-forward mypasshide-prefix-re nil t)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
      (let* ((beg (match-end 0))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
            (end (line-end-position))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
            (overlay (make-overlay beg end)))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
        (mypasshide--toggle-display overlay t)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
        (overlay-put overlay 'reveal-toggle-invisible #'mypasshide--toggle-display)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
        ))))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
(define-minor-mode mypasshide-mode
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
  "Hide passwords after `mypasshide-prefix-re' and activate
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
`reveal-mode'. Disabling is not implemented."
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
  :group 'reveal
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
  (if mypasshide-mode
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
      (progn
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
        (mypasshide--hide)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
        (reveal-mode))))
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
(provide 'mypasshide)
cbcc2ac8f3e3 Implemented mypasshide-mode for hiding passwords from my .org files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32