An integration between GNU Emacs and TMSU.
tmsu.el doesn't try to replicate the full functionality of TMSU.
Instead it focuses on enhancing the UX of the most common operations:
tag editing and querying. It's primarily intended to be used from
dired, though tmsu-edit can be used separately from it.
The two main commands are tmsu-dired-edit to interactively edit the
tag list of the currently selected file and tmsu-dired-query to
create a dired buffer with the TMSU query results. Both utilize the
Emacs completing-read-multiple interface and so greatly benefit from
packages such as vertico.
The queries can be stored for later recall either with the
native Emacs bookmarks or with org-mode links using
org-store-link.
The first type is supported out of the box. The second one needs to be loaded:
(require 'ol-tmsu)tmsu-dired-tags-add and tmsu-dired-tags-remove can be used to edit
tags of multiple files at a time. For convenience, the completion of
tmsu-dired-tags-remove offers the sum of tags of all the
marked files.
To install tmsu.el, you can use the following code:
(use-package tmsu
:ensure t
:after dired
:bind (:map dired-mode-map
(";" . tmsu-dired-edit)
("M-;" . tmsu-dired-query)
("C-M-;". tmsu-dired-overlay))
:config (require 'tmsu-dired))If you prefer to attach your TMSU tags to directories and not single
files (think: a directory with a set of movies with common tags), use
tmsu-dired-edit-directory instead of tmsu-dired-edit. See their
docstrings for the details.
For the org-mode links support, this is the suggested setup:
(use-package ol-tmsu
:ensure t
:after (:any org tmsu-dired)
:if (executable-find "tmsu"))Orderless compatibility
If you're using Orderless
with a style dispatcher using = as a suffix (which is the default
since early 2023 when orderless-affix-dispatch got added), you may
want to add the following snippet:
(defun call-without-orderless-dispatchers (orig &rest args)
"Use with `advice-add' (`:around') to ignore the dispatchers."
(let ((orderless-style-dispatchers nil))
(apply orig args)))
(advice-add 'tmsu-edit :around
#'call-without-orderless-dispatchers)
(advice-add 'tmsu-dired-query :around
#'call-without-orderless-dispatchers)This modification allows the completion suggestions for inputs like
tag= to show up immediately and not only after the next keypress
(that makes the input not end with = anymore).