Skip to content

Commit 024534c

Browse files
committed
overlays: Refactor the user-facing functions and their UX
1 parent 90d6638 commit 024534c

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

tmsu-dired-overlay.el

+33-28
Original file line numberDiff line numberDiff line change
@@ -118,38 +118,43 @@ is ignored."
118118
(buffer-string)))
119119
(push ov tmsu-dired-overlay-overlays))))
120120

121-
;;;###autoload
122-
(defun tmsu-dired-overlay-create-overlays (tags &optional no-replace)
121+
(defun tmsu-dired-overlay-create-overlays (&optional tags)
123122
"Add overlays with the values of TAGS to all `dired' files.
124123
125-
Unless NO-REPLACE is passed (\\[universal-argument]), the
126-
previous such overlays are removed first."
127-
(interactive "i\nP")
128-
(unless (tmsu-database-p)
129-
(error "No TMSU database"))
130-
(setq tags (or tags (completing-read-multiple
131-
"TMSU tags to display: " (tmsu-get-tags)
132-
nil nil nil 'tmsu-query-history)))
133-
(unless no-replace
134-
(tmsu-dired-overlay-delete-overlays (dired-subdir-min)
135-
(dired-subdir-max)))
136-
(when tags
137-
(save-excursion
138-
(goto-char (dired-subdir-min))
139-
(let ((max (1- (dired-subdir-max)))
140-
(file-tags-alist (tmsu-get-tags-for-files
141-
(directory-files (dired-current-directory) t)
142-
tags)))
143-
(while (< (point) max)
144-
(when-let ((file (dired-get-filename nil t)))
145-
(tmsu-dired-overlay-create-overlay-at-point
146-
tags (assoc file file-tags-alist)))
147-
(forward-line 1))))
148-
(add-function :before (local 'revert-buffer-function)
149-
#'tmsu-dired-overlay-delete-all-overlays)))
124+
If TAGS is nil, show all the tags with no filtering."
125+
(save-excursion
126+
(goto-char (dired-subdir-min))
127+
(let ((max (1- (dired-subdir-max)))
128+
(file-tags-alist (tmsu-get-tags-for-files
129+
(directory-files (dired-current-directory) t)
130+
tags)))
131+
(while (< (point) max)
132+
(when-let ((file (dired-get-filename nil t)))
133+
(tmsu-dired-overlay-create-overlay-at-point
134+
tags (assoc file file-tags-alist)))
135+
(forward-line 1))))
136+
(add-function :before (local 'revert-buffer-function)
137+
#'tmsu-dired-overlay-delete-all-overlays))
150138

151139
;;;###autoload
152-
(defalias 'tmsu-dired-overlay 'tmsu-dired-overlay-create-overlays)
140+
(defun tmsu-dired-overlay (&optional only-remove)
141+
"Interactively add/replace overlays with tag values to `dired'.
142+
143+
When ONLY-REMOVE (\\[universal-argument]) is passed, don't ask
144+
for tags and only remove the tag overlays within the current
145+
subdir instead.
146+
147+
Selecting an empty list of tags displays all the tags."
148+
(interactive "P")
149+
(unless (tmsu-database-p)
150+
(error "No TMSU database"))
151+
(if only-remove
152+
(tmsu-dired-overlay-delete-overlays)
153+
(let ((tags (completing-read-multiple
154+
"TMSU tags to display: " (tmsu-get-tags)
155+
nil nil nil 'tmsu-query-history)))
156+
(tmsu-dired-overlay-delete-overlays)
157+
(tmsu-dired-overlay-create-overlays tags))))
153158

154159
(provide 'tmsu-dired-overlay)
155160
;;; tmsu-dired-overlay.el ends here

0 commit comments

Comments
 (0)