aboutsummaryrefslogtreecommitdiffstats
path: root/dispass.el
diff options
context:
space:
mode:
Diffstat (limited to 'dispass.el')
-rw-r--r--dispass.el18
1 files changed, 18 insertions, 0 deletions
diff --git a/dispass.el b/dispass.el
index 66588f2..b93654f 100644
--- a/dispass.el
+++ b/dispass.el
@@ -121,6 +121,7 @@
(set-keymap-parent map tabulated-list-mode-map)
(define-key map "c" 'dispass-create)
(define-key map "a" 'dispass-add-label)
+ (define-key map "d" 'dispass-remove-label)
map))
(defun dispass-process-sentinel (proc status)
@@ -203,6 +204,23 @@ an eye out for LABEL."
(when (eq major-mode 'dispass-labels-mode)
(revert-buffer)))
+(defun dispass-remove-label (&optional label)
+ (interactive)
+ (let* ((labels-mode-p (eq major-mode 'dispass-labels-mode))
+ (label (or label (when labels-mode-p (tabulated-list-get-id)))))
+ (unless label
+ (error
+ "LABEL required or must be called from `dispass-labels-mode'."))
+
+ (with-temp-buffer
+ (insert-file-contents dispass-file)
+ (re-search-forward (concat "^" label))
+ (kill-whole-line)
+ (write-file dispass-file))
+
+ (when labels-mode-p
+ (revert-buffer))))
+
(defun dispass-from-button (button)
"Call dispass with information from BUTTON."
(dispass (button-get button 'dispass-label)