mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
emacs: customizable names for search buffers
Customizable names for buffers presenting search results, via two custom variables (notmuch-search-buffer-name-format and notmuch-saved-search-buffer-name-format), defaulting to values currently used for plain searches and including too tree and unthreaded search buffers. Amended by db: spelling fix.
This commit is contained in:
parent
21cce961b9
commit
15207652a1
4 changed files with 65 additions and 19 deletions
|
@ -175,6 +175,16 @@ variables.
|
|||
:index:`notmuch-search-oldest-first`
|
||||
Display the oldest threads at the top of the buffer
|
||||
|
||||
It is also possible to customize how the name of buffers containing
|
||||
search results is formatted using the following variables:
|
||||
|
||||
:index:`notmuch-search-buffer-name-format`
|
||||
|docstring::notmuch-search-buffer-name-format|
|
||||
|
||||
:index:`notmuch-saved-search-buffer-name-format`
|
||||
|docstring::notmuch-saved-search-buffer-name-format|
|
||||
|
||||
|
||||
.. _notmuch-show:
|
||||
|
||||
notmuch-show
|
||||
|
|
|
@ -486,11 +486,14 @@ diagonal."
|
|||
(defun notmuch-hello-widget-search (widget &rest _ignore)
|
||||
(cl-case (widget-get widget :notmuch-search-type)
|
||||
(tree
|
||||
(notmuch-tree (widget-get widget :notmuch-search-terms)
|
||||
nil nil nil nil nil nil
|
||||
(widget-get widget :notmuch-search-oldest-first)))
|
||||
(let ((n (notmuch-search-format-buffer-name (widget-value widget) "tree" t)))
|
||||
(notmuch-tree (widget-get widget :notmuch-search-terms)
|
||||
nil nil n nil nil nil
|
||||
(widget-get widget :notmuch-search-oldest-first))))
|
||||
(unthreaded
|
||||
(notmuch-unthreaded (widget-get widget :notmuch-search-terms)))
|
||||
(let ((n (notmuch-search-format-buffer-name (widget-value widget)
|
||||
"unthreaded" t)))
|
||||
(notmuch-unthreaded (widget-get widget :notmuch-search-terms) nil nil n)))
|
||||
(t
|
||||
(notmuch-search (widget-get widget :notmuch-search-terms)
|
||||
(widget-get widget :notmuch-search-oldest-first)))))
|
||||
|
|
|
@ -1191,11 +1191,11 @@ The arguments are:
|
|||
(setq query (notmuch-read-query (concat "Notmuch "
|
||||
(if unthreaded "unthreaded " "tree ")
|
||||
"view search: "))))
|
||||
(let ((buffer (get-buffer-create (generate-new-buffer-name
|
||||
(or buffer-name
|
||||
(concat "*notmuch-"
|
||||
(if unthreaded "unthreaded-" "tree-")
|
||||
query "*")))))
|
||||
(let* ((name
|
||||
(or buffer-name
|
||||
(notmuch-search-buffer-title query
|
||||
(if unthreaded "unthreaded" "tree"))))
|
||||
(buffer (get-buffer-create (generate-new-buffer-name name)))
|
||||
(inhibit-read-only t))
|
||||
(pop-to-buffer-same-window buffer))
|
||||
;; Don't track undo information for this buffer
|
||||
|
|
|
@ -915,7 +915,39 @@ See `notmuch-tag' for information on the format of TAG-CHANGES."
|
|||
(notmuch-search-get-tags-region (point-min) (point-max)) "Tag all")))
|
||||
(notmuch-search-tag tag-changes (point-min) (point-max) t))
|
||||
|
||||
(defun notmuch-search-buffer-title (query)
|
||||
(defcustom notmuch-search-buffer-name-format "*notmuch-%t-%s*"
|
||||
"Format for the name of search results buffers.
|
||||
|
||||
In this spec, %s will be replaced by a description of the search
|
||||
query and %t by its type (search, tree or unthreaded). The
|
||||
buffer name is formatted using `format-spec': see its docstring
|
||||
for additional parameters for the s and t format specifiers.
|
||||
|
||||
See also `notmuch-saved-search-buffer-name-format'"
|
||||
:type 'string
|
||||
:group 'notmuch-search)
|
||||
|
||||
(defcustom notmuch-saved-search-buffer-name-format "*notmuch-saved-%t-%s*"
|
||||
"Format for the name of search results buffers for saved searches.
|
||||
|
||||
In this spec, %s will be replaced by the saved search name and %t
|
||||
by its type (search, tree or unthreaded). The buffer name is
|
||||
formatted using `format-spec': see its docstring for additional
|
||||
parameters for the s and t format specifiers.
|
||||
|
||||
See also `notmuch-search-buffer-name-format'"
|
||||
:type 'string
|
||||
:group 'notmuch-search)
|
||||
|
||||
(defun notmuch-search-format-buffer-name (query type saved)
|
||||
"Compose a buffer name for the given QUERY, TYPE (search, tree,
|
||||
unthreaded) and whether it's SAVED (t or nil)."
|
||||
(let ((fmt (if saved
|
||||
notmuch-saved-search-buffer-name-format
|
||||
notmuch-search-buffer-name-format)))
|
||||
(format-spec fmt `((?t . ,(or type "search")) (?s . ,query)))))
|
||||
|
||||
(defun notmuch-search-buffer-title (query &optional type)
|
||||
"Returns the title for a buffer with notmuch search results."
|
||||
(let* ((saved-search
|
||||
(let (longest
|
||||
|
@ -930,19 +962,20 @@ See `notmuch-tag' for information on the format of TAG-CHANGES."
|
|||
do (setq longest tuple))
|
||||
longest))
|
||||
(saved-search-name (notmuch-saved-search-get saved-search :name))
|
||||
(saved-search-type (notmuch-saved-search-get saved-search :search-type))
|
||||
(saved-search-query (notmuch-saved-search-get saved-search :query)))
|
||||
(cond ((and saved-search (equal saved-search-query query))
|
||||
;; Query is the same as saved search (ignoring case)
|
||||
(concat "*notmuch-saved-search-" saved-search-name "*"))
|
||||
(notmuch-search-format-buffer-name saved-search-name
|
||||
saved-search-type
|
||||
t))
|
||||
(saved-search
|
||||
(concat "*notmuch-search-"
|
||||
(replace-regexp-in-string
|
||||
(concat "^" (regexp-quote saved-search-query))
|
||||
(concat "[ " saved-search-name " ]")
|
||||
query)
|
||||
"*"))
|
||||
(t
|
||||
(concat "*notmuch-search-" query "*")))))
|
||||
(let ((query (replace-regexp-in-string
|
||||
(concat "^" (regexp-quote saved-search-query))
|
||||
(concat "[ " saved-search-name " ]")
|
||||
query)))
|
||||
(notmuch-search-format-buffer-name query saved-search-type t)))
|
||||
(t (notmuch-search-format-buffer-name query type nil)))))
|
||||
|
||||
(defun notmuch-read-query (prompt)
|
||||
"Read a notmuch-query from the minibuffer with completion.
|
||||
|
|
Loading…
Reference in a new issue