On Thu, Dec 14 2023, Rudolf Adamkovič wrote: > Fellow hackers, > > So, I have always wondered why Notmuch uses the strangest buffer titles > ever, and yesterday I decided to take a look under the hood... I found > that the code in 'notmuch-search-buffer-title' defines and uses a pair > of variables, named 'longest' and 'longest-length', but never sets the > latter, which causes the strange buffer titles I observe. Please see > the attached patch with a fix. > > P.S. I could not make the test suite work, not in the time I had for the > fix, so ... see the test in the commit message. :) > > Rudy > From c0cb08a843b5c904642da639f94c4a5e43d1ef14 Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com> > Date: Wed, 13 Dec 2023 22:39:02 +0100 > Subject: [PATCH] emacs: Fix saved-search buffer titles > > REPRODUCTION STEPS: > > (let ((notmuch-saved-searches > (list (list :name "Emacs List" > :query "query:lists-emacs") > (list :name "All Lists" > :query "query:lists")))) > (notmuch-search-buffer-title "query:lists-emacs" )) > > ACTUAL: > > "*notmuch-saved-search-[ All Lists ]-emacs*" > > EXPECTED: > > "*notmuch-saved-search-Emacs List*" > --- > emacs/notmuch.el | 25 ++++++++++++++----------- > 1 file changed, 14 insertions(+), 11 deletions(-) > > diff --git a/emacs/notmuch.el b/emacs/notmuch.el > index 6eef4af1..1ac145f0 100644 > --- a/emacs/notmuch.el > +++ b/emacs/notmuch.el > @@ -964,17 +964,20 @@ unthreaded) and whether it's SAVED (t or nil)." > (defun notmuch-search-buffer-title (query &optional type) > "Returns the title for a buffer with notmuch search results." > (let* ((saved-search > - (let (longest > - (longest-length 0)) > - (cl-loop for tuple in notmuch-saved-searches > - if (let ((quoted-query > - (regexp-quote > - (notmuch-saved-search-get tuple :query)))) > - (and (string-match (concat "^" quoted-query) query) > - (> (length (match-string 0 query)) > - longest-length))) > - do (setq longest tuple)) > - longest)) > + (cl-loop with match > + with match-length = 0 > + for candidate in notmuch-saved-searches > + for length = (let* ((query* (notmuch-saved-search-get > + candidate > + :query)) > + (regexp (concat "^" > + (regexp-quote query*)))) > + (and (string-match regexp query) > + (length (match-string 0 query)))) > + if (and length (> length match-length)) > + do (setq match candidate > + match-length length) > + finally return match)) The code looks good to me (and I could understand everything there after couple of views into Info node ‘(cl)Loop Facility’.) Tomi > (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))) > -- > 2.39.3 (Apple Git-145) > > -- > "The introduction of suitable abstractions is our only mental aid to > organize and master complexity." > --- Edsger Wybe Dijkstra, 1930-2002 > > Rudolf Adamkovič <salutis@me.com> [he/him] > Studenohorská 25 > 84103 Bratislava > Slovakia > _______________________________________________ > notmuch mailing list -- notmuch@notmuchmail.org > To unsubscribe send an email to notmuch-leave@notmuchmail.org _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org