mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +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`
|
:index:`notmuch-search-oldest-first`
|
||||||
Display the oldest threads at the top of the buffer
|
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:
|
||||||
|
|
||||||
notmuch-show
|
notmuch-show
|
||||||
|
|
|
@ -486,11 +486,14 @@ diagonal."
|
||||||
(defun notmuch-hello-widget-search (widget &rest _ignore)
|
(defun notmuch-hello-widget-search (widget &rest _ignore)
|
||||||
(cl-case (widget-get widget :notmuch-search-type)
|
(cl-case (widget-get widget :notmuch-search-type)
|
||||||
(tree
|
(tree
|
||||||
(notmuch-tree (widget-get widget :notmuch-search-terms)
|
(let ((n (notmuch-search-format-buffer-name (widget-value widget) "tree" t)))
|
||||||
nil nil nil nil nil nil
|
(notmuch-tree (widget-get widget :notmuch-search-terms)
|
||||||
(widget-get widget :notmuch-search-oldest-first)))
|
nil nil n nil nil nil
|
||||||
|
(widget-get widget :notmuch-search-oldest-first))))
|
||||||
(unthreaded
|
(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
|
(t
|
||||||
(notmuch-search (widget-get widget :notmuch-search-terms)
|
(notmuch-search (widget-get widget :notmuch-search-terms)
|
||||||
(widget-get widget :notmuch-search-oldest-first)))))
|
(widget-get widget :notmuch-search-oldest-first)))))
|
||||||
|
|
|
@ -1191,11 +1191,11 @@ The arguments are:
|
||||||
(setq query (notmuch-read-query (concat "Notmuch "
|
(setq query (notmuch-read-query (concat "Notmuch "
|
||||||
(if unthreaded "unthreaded " "tree ")
|
(if unthreaded "unthreaded " "tree ")
|
||||||
"view search: "))))
|
"view search: "))))
|
||||||
(let ((buffer (get-buffer-create (generate-new-buffer-name
|
(let* ((name
|
||||||
(or buffer-name
|
(or buffer-name
|
||||||
(concat "*notmuch-"
|
(notmuch-search-buffer-title query
|
||||||
(if unthreaded "unthreaded-" "tree-")
|
(if unthreaded "unthreaded" "tree"))))
|
||||||
query "*")))))
|
(buffer (get-buffer-create (generate-new-buffer-name name)))
|
||||||
(inhibit-read-only t))
|
(inhibit-read-only t))
|
||||||
(pop-to-buffer-same-window buffer))
|
(pop-to-buffer-same-window buffer))
|
||||||
;; Don't track undo information for this 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-get-tags-region (point-min) (point-max)) "Tag all")))
|
||||||
(notmuch-search-tag tag-changes (point-min) (point-max) t))
|
(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."
|
"Returns the title for a buffer with notmuch search results."
|
||||||
(let* ((saved-search
|
(let* ((saved-search
|
||||||
(let (longest
|
(let (longest
|
||||||
|
@ -930,19 +962,20 @@ See `notmuch-tag' for information on the format of TAG-CHANGES."
|
||||||
do (setq longest tuple))
|
do (setq longest tuple))
|
||||||
longest))
|
longest))
|
||||||
(saved-search-name (notmuch-saved-search-get saved-search :name))
|
(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)))
|
(saved-search-query (notmuch-saved-search-get saved-search :query)))
|
||||||
(cond ((and saved-search (equal saved-search-query query))
|
(cond ((and saved-search (equal saved-search-query query))
|
||||||
;; Query is the same as saved search (ignoring case)
|
;; 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
|
(saved-search
|
||||||
(concat "*notmuch-search-"
|
(let ((query (replace-regexp-in-string
|
||||||
(replace-regexp-in-string
|
(concat "^" (regexp-quote saved-search-query))
|
||||||
(concat "^" (regexp-quote saved-search-query))
|
(concat "[ " saved-search-name " ]")
|
||||||
(concat "[ " saved-search-name " ]")
|
query)))
|
||||||
query)
|
(notmuch-search-format-buffer-name query saved-search-type t)))
|
||||||
"*"))
|
(t (notmuch-search-format-buffer-name query type nil)))))
|
||||||
(t
|
|
||||||
(concat "*notmuch-search-" query "*")))))
|
|
||||||
|
|
||||||
(defun notmuch-read-query (prompt)
|
(defun notmuch-read-query (prompt)
|
||||||
"Read a notmuch-query from the minibuffer with completion.
|
"Read a notmuch-query from the minibuffer with completion.
|
||||||
|
|
Loading…
Reference in a new issue