* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch @ 2020-11-08 1:44 Jose A. Ortega Ruiz 2020-11-08 2:23 ` Eric Abrahamsen 0 siblings, 1 reply; 12+ messages in thread From: Jose A. Ortega Ruiz @ 2020-11-08 1:44 UTC (permalink / raw) To: 44509 Hi, I've been trying the recently added gnus-search with an nnimap local server (dovecot) that i index with notmuch. More concretely: - dovecot is saving my incoming email in maildirs located at ~/var/mail. - notmuch is indexing ~/var/mail. that's working well: i can use notmuch without problems. - gnus has a secondary method for accessing dovecot using nnimap, but i would like searches on its groups to be performed using notmuch, not the built-in imap search. so i add a secondary method that looks like this: (nnimap "" (nnimap-address "localhost") (nnimap-expunge immediately) (gnus-search-engine gnus-search-notmuch (remove-prefix "/home/jao/var/mail/"))) - if i now query any of my nnimap groups with a query that gives me back one or more results, i get an error with a backtrace that looks like this one ("nnimap:feeds.emacs" is the group name in this concrete case): --8<---------------cut here---------------start------------->8--- gnus-compress-sequence((nil)) nnselect-compress-artlist([["nnimap:feeds.emacs" nil 100]]) nnselect-request-group("nnselect-87lffe8d08.fsf" "nnselect-ephemeral" t ("nnselect:nnselect-87lffe8d08.fsf" 3 nil nil (nnselect "nnselect-ephemeral" (nnselect-address "nnselect")) ((quit-config #<buffer *Group*> . group) (nnselect-specs (nnselect-function . gnus-search-run-query) (nnselect-args (search-query-spec (query . "Maxim") (raw)) (search-group-spec ("nnimap:" "nnimap:feeds/emacs")))) (nnselect-artlist)))) gnus-request-group("nnselect:nnselect-87lffe8d08.fsf" t nil ("nnselect:nnselect-87lffe8d08.fsf" 3 nil nil (nnselect "nnselect-ephemeral" (nnselect-address "nnselect")) ((quit-config #<buffer *Group*> . group) (nnselect-specs (nnselect-function . gnus-search-run-query) (nnselect-args (search-query-spec (query . "Maxim") (raw)) (search-group-spec ("nnimap:" "nnimap:feeds/emacs")))) (nnselect-artlist)))) gnus-select-newsgroup("nnselect:nnselect-87lffe8d08.fsf" t nil) gnus-summary-read-group-1("nnselect:nnselect-87lffe8d08.fsf" t t nil nil nil) gnus-summary-read-group("nnselect:nnselect-87lffe8d08.fsf" t t nil nil nil nil) gnus-group-read-group(t t "nnselect:nnselect-87lffe8d08.fsf" nil) gnus-group-read-ephemeral-group("nnselect-87lffe8d08.fsf" (nnselect "nnselect") nil (#<buffer *Group*> . group) nil nil ((nnselect-specs (nnselect-function . gnus-search-run-query) (nnselect-args (search-query-spec (query . "Maxim") (raw)) (search-group-spec ("nnimap:" "nnimap:feeds/emacs")))) (nnselect-artlist))) gnus-group-read-ephemeral-search-group(nil) funcall-interactively(gnus-group-read-ephemeral-search-group nil) call-interactively(gnus-group-read-ephemeral-search-group nil nil) command-execute(gnus-group-read-ephemeral-search-group) --8<---------------cut here---------------end--------------->8--- Maybe this trick of using notmuch on imap groups is not really supposed to work? If i used the default gnus-search-imap engine, queries work fine, but notmuch is so much faster that it'd be nice to use its engine instead. Thanks! In GNU Emacs 28.0.50 (build 19, x86_64-pc-linux-gnu, cairo version 1.16.0) of 2020-11-06 built on osgiliath Repository revision: 093a6bec52d21aba6b3b1318a6d7bafc2c870f25 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12009000 System Description: Debian GNU/Linux bullseye/sid Configured using: 'configure --prefix=/usr/local/stow/emacs --with-x-toolkit=no --with-imagemagick' Configured features: XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB OLDXMENU X11 XDBE XIM MODULES THREADS JSON PDUMPER LCMS2 Important settings: value of $LANG: en_GB.UTF-8 locale-coding-system: utf-8-unix Major mode: Group Minor modes in effect: semantic-minor-modes-format: ((:eval (if (or semantic-highlight-edits-mode semantic-show-unmatched-syntax-mode) S))) gnus-agent-group-mode: t circe-lagmon-mode: t gnus-topic-mode: t telega-mode-line-mode: t ednc-mode: t global-diff-hl-mode: t eshell-syntax-highlighting-global-mode: t pdf-occur-global-minor-mode: t gnus-undo-mode: t winner-mode: t modern-fringes-mode: t show-paren-mode: t persistent-scratch-autosave-mode: t global-so-long-mode: t display-battery-mode: t global-company-mode: t ivy-rich-mode: t counsel-mode: t ivy-mode: t savehist-mode: t recentf-mode: t save-place-mode: t global-magit-file-mode: t magit-auto-revert-mode: t global-auto-revert-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t Load-path shadows: ~/lib/elisp/telega hides /home/jao/.emacs.d/elpa.28/telega-20201101.1649/telega /home/jao/.emacs.d/elpa.28/circe-20201101.1515/shorten hides /home/jao/.emacs.d/elpa.28/tracking-20201101.1045/shorten /home/jao/.emacs.d/elpa.28/circe-20201101.1515/tracking hides /home/jao/.emacs.d/elpa.28/tracking-20201101.1045/tracking /home/jao/lib/elisp/jao/bmk/dot-emacs hides /home/jao/.emacs.d/elpa.28/tuareg-20200518.1820/dot-emacs /home/jao/.emacs.d/elpa.28/org-20201102/org-num hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-num /home/jao/.emacs.d/elpa.28/org-20201102/ob-R hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-R /home/jao/.emacs.d/elpa.28/org-20201102/ob-dot hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-dot /home/jao/.emacs.d/elpa.28/org-20201102/org-feed hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-feed /home/jao/.emacs.d/elpa.28/org-20201102/ob-clojure hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-clojure /home/jao/.emacs.d/elpa.28/org-20201102/ob-sql hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-sql /home/jao/.emacs.d/elpa.28/org-20201102/ob-latex hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-latex /home/jao/.emacs.d/elpa.28/org-20201102/org-colview hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-colview /home/jao/.emacs.d/elpa.28/org-20201102/ol-gnus hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-gnus /home/jao/.emacs.d/elpa.28/org-20201102/ob-ref hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ref /home/jao/.emacs.d/elpa.28/org-20201102/org-archive hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-archive /home/jao/.emacs.d/elpa.28/org-20201102/ob-forth hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-forth /home/jao/.emacs.d/elpa.28/org-20201102/ob-hledger hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-hledger /home/jao/.emacs.d/elpa.28/org-20201102/org-entities hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-entities /home/jao/.emacs.d/elpa.28/org-20201102/org-attach hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-attach /home/jao/.emacs.d/elpa.28/org-20201102/ox-odt hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-odt /home/jao/.emacs.d/elpa.28/org-20201102/ob-table hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-table /home/jao/.emacs.d/elpa.28/org-20201102/ox hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox /home/jao/.emacs.d/elpa.28/org-20201102/ob-eval hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-eval /home/jao/.emacs.d/elpa.28/org-20201102/ol-bbdb hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-bbdb /home/jao/.emacs.d/elpa.28/org-20201102/ob-ledger hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ledger /home/jao/.emacs.d/elpa.28/org-20201102/ox-org hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-org /home/jao/.emacs.d/elpa.28/org-20201102/ob-exp hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-exp /home/jao/.emacs.d/elpa.28/org-20201102/ob-lisp hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-lisp /home/jao/.emacs.d/elpa.28/org-20201102/ob-sqlite hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-sqlite /home/jao/.emacs.d/elpa.28/org-20201102/ob-ebnf hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ebnf /home/jao/.emacs.d/elpa.28/org-20201102/ol-eshell hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-eshell /home/jao/.emacs.d/elpa.28/org-20201102/ob-screen hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-screen /home/jao/.emacs.d/elpa.28/org-20201102/ob-mscgen hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-mscgen /home/jao/.emacs.d/elpa.28/org-20201102/ob-lob hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-lob /home/jao/.emacs.d/elpa.28/org-20201102/ob-matlab hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-matlab /home/jao/.emacs.d/elpa.28/org-20201102/org-protocol hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-protocol /home/jao/.emacs.d/elpa.28/org-20201102/ob-makefile hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-makefile /home/jao/.emacs.d/elpa.28/org-20201102/ob-awk hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-awk /home/jao/.emacs.d/elpa.28/org-20201102/ob-scheme hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-scheme /home/jao/.emacs.d/elpa.28/org-20201102/org-clock hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-clock /home/jao/.emacs.d/elpa.28/org-20201102/ol-info hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-info /home/jao/.emacs.d/elpa.28/org-20201102/ob hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob /home/jao/.emacs.d/elpa.28/org-20201102/ob-shen hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-shen /home/jao/.emacs.d/elpa.28/org-20201102/ox-ascii hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-ascii /home/jao/.emacs.d/elpa.28/org-20201102/ob-C hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-C /home/jao/.emacs.d/elpa.28/org-20201102/ob-core hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-core /home/jao/.emacs.d/elpa.28/org-20201102/org-duration hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-duration /home/jao/.emacs.d/elpa.28/org-20201102/ob-processing hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-processing /home/jao/.emacs.d/elpa.28/org-20201102/org-datetree hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-datetree /home/jao/.emacs.d/elpa.28/org-20201102/ob-haskell hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-haskell /home/jao/.emacs.d/elpa.28/org-20201102/org-element hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-element /home/jao/.emacs.d/elpa.28/org-20201102/org-crypt hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-crypt /home/jao/.emacs.d/elpa.28/org-20201102/org-pcomplete hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-pcomplete /home/jao/.emacs.d/elpa.28/org-20201102/ob-abc hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-abc /home/jao/.emacs.d/elpa.28/org-20201102/ob-tangle hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-tangle /home/jao/.emacs.d/elpa.28/org-20201102/ox-beamer hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-beamer /home/jao/.emacs.d/elpa.28/org-20201102/org-keys hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-keys /home/jao/.emacs.d/elpa.28/org-20201102/ol-eww hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-eww /home/jao/.emacs.d/elpa.28/org-20201102/ob-ruby hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ruby /home/jao/.emacs.d/elpa.28/org-20201102/ob-java hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-java /home/jao/.emacs.d/elpa.28/org-20201102/org-attach-git hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-attach-git /home/jao/.emacs.d/elpa.28/org-20201102/ob-gnuplot hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-gnuplot /home/jao/.emacs.d/elpa.28/org-20201102/org-ctags hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-ctags /home/jao/.emacs.d/elpa.28/org-20201102/ob-picolisp hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-picolisp /home/jao/.emacs.d/elpa.28/org-20201102/ob-perl hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-perl /home/jao/.emacs.d/elpa.28/org-20201102/ol-bibtex hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-bibtex /home/jao/.emacs.d/elpa.28/org-20201102/org-capture hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-capture /home/jao/.emacs.d/elpa.28/org-20201102/ob-python hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-python /home/jao/.emacs.d/elpa.28/org-20201102/org-list hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-list /home/jao/.emacs.d/elpa.28/org-20201102/ol-mhe hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-mhe /home/jao/.emacs.d/elpa.28/org-20201102/ox-html hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-html /home/jao/.emacs.d/elpa.28/org-20201102/ox-latex hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-latex /home/jao/.emacs.d/elpa.28/org-20201102/ob-stan hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-stan /home/jao/.emacs.d/elpa.28/org-20201102/ob-coq hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-coq /home/jao/.emacs.d/elpa.28/org-20201102/ob-js hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-js /home/jao/.emacs.d/elpa.28/org-20201102/ob-css hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-css /home/jao/.emacs.d/elpa.28/org-20201102/ob-sed hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-sed /home/jao/.emacs.d/elpa.28/org-20201102/ol-docview hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-docview /home/jao/.emacs.d/elpa.28/org-20201102/ox-md hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-md /home/jao/.emacs.d/elpa.28/org-20201102/ob-ocaml hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ocaml /home/jao/.emacs.d/elpa.28/org-20201102/ob-ditaa hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-ditaa /home/jao/.emacs.d/elpa.28/org-20201102/org-tempo hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-tempo /home/jao/.emacs.d/elpa.28/org-20201102/org-table hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-table /home/jao/.emacs.d/elpa.28/org-20201102/org-agenda hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-agenda /home/jao/.emacs.d/elpa.28/org-20201102/org-indent hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-indent /home/jao/.emacs.d/elpa.28/org-20201102/ol-rmail hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-rmail /home/jao/.emacs.d/elpa.28/org-20201102/org-id hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-id /home/jao/.emacs.d/elpa.28/org-20201102/ox-texinfo hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-texinfo /home/jao/.emacs.d/elpa.28/org-20201102/ob-org hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-org /home/jao/.emacs.d/elpa.28/org-20201102/org-src hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-src /home/jao/.emacs.d/elpa.28/org-20201102/ob-J hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-J /home/jao/.emacs.d/elpa.28/org-20201102/ox-icalendar hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-icalendar /home/jao/.emacs.d/elpa.28/org-20201102/ob-lilypond hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-lilypond /home/jao/.emacs.d/elpa.28/org-20201102/org-timer hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-timer /home/jao/.emacs.d/elpa.28/org-20201102/ob-sass hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-sass /home/jao/.emacs.d/elpa.28/org-20201102/ol hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol /home/jao/.emacs.d/elpa.28/org-20201102/org-inlinetask hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-inlinetask /home/jao/.emacs.d/elpa.28/org-20201102/ox-publish hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-publish /home/jao/.emacs.d/elpa.28/org-20201102/ob-asymptote hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-asymptote /home/jao/.emacs.d/elpa.28/org-20201102/ob-maxima hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-maxima /home/jao/.emacs.d/elpa.28/org-20201102/org-lint hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-lint /home/jao/.emacs.d/elpa.28/org-20201102/ob-fortran hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-fortran /home/jao/.emacs.d/elpa.28/org-20201102/org hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org /home/jao/.emacs.d/elpa.28/org-20201102/org-faces hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-faces /home/jao/.emacs.d/elpa.28/org-20201102/ob-plantuml hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-plantuml /home/jao/.emacs.d/elpa.28/org-20201102/org-install hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-install /home/jao/.emacs.d/elpa.28/org-20201102/org-macs hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-macs /home/jao/.emacs.d/elpa.28/org-20201102/org-mouse hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-mouse /home/jao/.emacs.d/elpa.28/org-20201102/org-habit hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-habit /home/jao/.emacs.d/elpa.28/org-20201102/ox-man hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ox-man /home/jao/.emacs.d/elpa.28/org-20201102/ol-w3m hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-w3m /home/jao/.emacs.d/elpa.28/org-20201102/ob-octave hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-octave /home/jao/.emacs.d/elpa.28/org-20201102/org-footnote hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-footnote /home/jao/.emacs.d/elpa.28/org-20201102/ol-irc hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ol-irc /home/jao/.emacs.d/elpa.28/org-20201102/ob-calc hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-calc /home/jao/.emacs.d/elpa.28/org-20201102/ob-comint hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-comint /home/jao/.emacs.d/elpa.28/org-20201102/ob-groovy hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-groovy /home/jao/.emacs.d/elpa.28/org-20201102/org-compat hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-compat /home/jao/.emacs.d/elpa.28/org-20201102/ob-lua hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-lua /home/jao/.emacs.d/elpa.28/org-20201102/org-mobile hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-mobile /home/jao/.emacs.d/elpa.28/org-20201102/ob-eshell hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-eshell /home/jao/.emacs.d/elpa.28/org-20201102/org-macro hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-macro /home/jao/.emacs.d/elpa.28/org-20201102/org-plot hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-plot /home/jao/.emacs.d/elpa.28/org-20201102/org-goto hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-goto /home/jao/.emacs.d/elpa.28/org-20201102/ob-vala hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-vala /home/jao/.emacs.d/elpa.28/org-20201102/ob-emacs-lisp hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-emacs-lisp /home/jao/.emacs.d/elpa.28/org-20201102/ob-shell hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-shell /home/jao/.emacs.d/elpa.28/org-20201102/org-version hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-version /home/jao/.emacs.d/elpa.28/org-20201102/org-loaddefs hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/org-loaddefs /home/jao/.emacs.d/elpa.28/org-20201102/ob-io hides /usr/local/stow/emacs/share/emacs/28.0.50/lisp/org/ob-io Features: (shadow gnus-fun bbdb-pgp mailalias bbdb-message flow-fill ffap magit-extras url-cache lui-track circe-display-images circe-color-nicks circe-lagmon circe lui-irc-colors irc lcs lui-format circe-compat bash-completion em-unix em-script em-prompt em-ls em-hist em-pred em-glob em-dirs esh-var em-cmpl em-basic em-banner em-alias gnus-cite qp mm-archive mail-extr gnus-bcklg nnmaildir gnus-async gnus-dup gnus-ml gnus-topic utf-7 bbdb-gnus gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-cache gnus-msg nndraft nnmh gnus-demon nntp cal-move help-fns radix-tree cl-print debug backtrace quail counsel-spotify counsel-spotify-messages counsel-spotify-notifications counsel-spotify-backends counsel-spotify-search ucs-normalize calc-bin calc-misc calc-menu calc-aent w3m-cookie w3m-form w3m-symbol w3m-filter w3m-search w3m-bookmark w3m-tabmenu w3m-session view cal-iso emojify apropos tar-mode arc-mode archive-mode ht twittering-mode slack slack-company slack-unread slack-websocket slack-thread-event slack-room-event slack-star-event slack-reaction-event slack-reply-event slack-typing slack-slash-commands slack-message-event slack-event slack-dialog-edit-element-buffer slack-dialog-buffer slack-dialog slack-stars-buffer slack-search-result-buffer slack-thread-message-compose-buffer slack-file-list-buffer slack-file-info-buffer slack-all-threads-buffer slack-message-buffer slack-user-profile-buffer slack-pinned-items-buffer slack-pinned-item slack-thread-message-buffer slack-room-info-buffer slack-room-buffer slack-message-share-buffer slack-message-edit-buffer slack-room-message-compose-buffer slack-message-compose-buffer slack-message-attachment-preview-buffer slack-action slack-star slack-reminder slack-search slack-message-reaction slack-message-editor slack-message-sender slack-message-notification slack-buffer slack-message-formatter slack-thread slack-im slack-channel slack-group slack-conversations slack-create-message slack-attachment slack-selectable slack-bot-message slack-user-message slack-file slack-message slack-message-faces slack-unescape slack-block slack-mrkdwn slack-usergroup slack-reaction slack-modeline slack-room slack-counts slack-user slack-bot slack-dnd-status slack-emoji slack-image slack-request slack-log request lui tracking shorten flyspell ispell slack-team slack-team-ws slack-util websocket bindat copyright sh-script executable sgml-mode paredit vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs mule-util ace-window avy jao-patches bml-logs bml bml-misc bml-whizzml bml-clojure bml-clj-tests bml-python info-look bml-skels bml-utils whizzml-skeletons skeleton whizzml-mode exwm-systemtray xcb-systemtray xcb-xembed exwm-edit jao-afio exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug kana kanji-mode jao-emms-random-album ivy-emms jao-emms-lyrics jao-lyrics network-stream jao-emms-info-track jao-emms jao-osd emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-volume emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd emms-playing-time emms-lyrics emms-url emms-streams emms-show-all emms-tag-editor emms-mark emms-mode-line emms-cache emms-info-exiftool emms-info-tinytag emms-info-metaflac emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-info emms-later-do emms-playlist-mode emms-player-vlc emms-player-mpv emms-player-mplayer emms-player-simple emms-source-playlist emms-source-file locate emms-setup emms emms-compat spotify telega-obsolete telega telega-tdlib-events telega-modes telega-webpage telega-root telega-chat telega-company telega-user telega-notifications telega-msg telega-tme telega-sticker telega-i18n telega-vvnote telega-media telega-voip telega-ffplay telega-info telega-sort telega-filter telega-ins telega-folders telega-inline telega-tdlib telega-util rainbow-identifiers telega-server telega-core cursor-sensor telega-customize emacsbug jao-ednc jao-minibuffer ednc jao-proton-utils enwc enwc-backend bluetooth github-review deferred a gitconfig-mode conf-mode git-timemachine diff-hl vc-dir ewoc json-mode json-reformat json-snatcher js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs merlin-company merlin-cap merlin utop utop-minor-mode tuareg tuareg-opam flymake-proc flymake caml-help caml-types caml-emacs find-file alchemist alchemist-macroexpand alchemist-company alchemist-help alchemist-complete alchemist-refcard alchemist-phoenix alchemist-compile alchemist-iex alchemist-message alchemist-hooks alchemist-hex alchemist-mix alchemist-info alchemist-goto alchemist-scope alchemist-eval alchemist-interact alchemist-server alchemist-execute alchemist-report alchemist-test-mode alchemist-project alchemist-file alchemist-key alchemist-utils elixir-mode elixir-format pkg-info epl elixir-smie erlang virtualenvwrapper gud ediprolog sesman vc vc-dispatcher clojure-mode lisp-mnt geiser edit-list debbugs soap-client warnings rng-xsd xsd-regexp flycheck eshell-autojump eshell-up git-ps1-mode em-term eshell-syntax-highlighting vterm face-remap vterm-module term ehelp jao-doc-view saveplace-pdf-view pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch pdf-misc pdf-tools pdf-view magit-bookmark bookmark pdf-cache pdf-info tq pdf-util bbdb-mua bbdb-anniv bbdb-com jao-frm visual-fill-column counsel-notmuch notmuch hl-line notmuch-tree notmuch-jump notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser notmuch-wash coolj notmuch-query goto-addr notmuch-tag notmuch-lib notmuch-compat display-fill-column-indicator orgit-forge forge-list forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub let-alist forge-notify forge-revnote forge-pullreq forge-issue forge-topic bug-reference forge-post forge-repo forge forge-core forge-db closql emacsql-sqlite emacsql emacsql-compiler url-http url-auth url-gw nsm cdlatex texmathp disp-table w3m w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon w3m-image tab-line w3m-proc w3m-util bibtex bbdb bbdb-site timezone smtpmail sendmail randomsig gnutls markdown-toc s markdown-mode thingatpt org-static-blog htmlize jao-org-utils ol-info ol-docview doc-view image-mode exif ol-bbdb ol-eshell esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util ol-w3m ol-gnus nnselect gnus-search eieio-opt speedbar ezimage dframe gnus-icalendar org-capture gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr kinsoku svg dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win icalendar org-agenda org-refile gnus nnheader epresent ob-shell ob-scheme ob-python python tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time iso8601 ls-lisp ob-org ob-ocaml ob-makefile ob-haskell ob-gnuplot ob-clojure ob-calc calc-store calc-trail calc-ext calc calc-loaddefs calc-macs ob-prolog prolog smie align ob-elixir org-tempo tempo ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-element avl-tree org-fragtog winner bm modern-fringes jao-notify paren iscroll inform find-dired dired-x jka-compr company-oddmuse company-keywords company-etags etags fileloop generator company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-capf company-cmake company-semantic company-template company-bbdb persistent-scratch so-long epa-file battery cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs vc-git appt diary-lib diary-loaddefs company-quickhelp pos-tip company-math math-symbol-lists company pcase alert log4e notifications gntp ivy-rich wgrep-ag wgrep grep diminish counsel xdg xref project compile swiper ivy flx delsel ivy-faces ivy-overlay colir autoinsert time jao-greenish-theme jao-themes cl memory-usage jao-sleep dbus xml undo-fu-session savehist recentf tree-widget saveplace gnu-elpa-keyring-update poly-org orgit magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff diff-mode magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process magit-mode git-commit transient magit-git magit-section magit-utils crm log-edit message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa epg epg-config gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async shell server dash org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete pcomplete comint ansi-color org-list org-faces org-entities time-date noutline outline org-version ob-emacs-lisp org-table ol org-keys org-loaddefs find-func cal-menu calendar cal-loaddefs polymode derived poly-lock polymode-base polymode-weave polymode-export polymode-compat polymode-methods polymode-core polymode-classes eieio-custom eieio-base color paradox paradox-menu paradox-commit-list hydra ring lv cus-edit pp cus-start cus-load wid-edit paradox-execute paradox-github paradox-core spinner cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core literate-elisp ob-core org-compat advice ob-eval org-macs format-spec finder-inf tex-site gh-common marshal eieio-compat rx edmacro kmacro w3m-load info package easymenu browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo x multi-tty make-network-process emacs) Memory information: ((conses 16 3337525 350243) (symbols 48 95123 8) (strings 32 552087 43578) (string-bytes 1 18251913) (vectors 16 280839) (vector-slots 8 8179302 322493) (floats 8 3268 3751) (intervals 56 120431 16846) (buffers 992 183)) -- No amount of belief makes something a fact. -James Randi -- A man has to live with himself, and he should see to it that he always has good company. -Charles Evans Hughes, jurist (1862-1948) -- Experience is not what happens to you; it is what you do with what happens to you. - Aldous Huxley ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-08 1:44 bug#44509: 28.0.50; Error querying with new gnus-search and notmuch Jose A. Ortega Ruiz @ 2020-11-08 2:23 ` Eric Abrahamsen 2020-11-08 2:49 ` Jose A. Ortega Ruiz 0 siblings, 1 reply; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-08 2:23 UTC (permalink / raw) To: Jose A. Ortega Ruiz; +Cc: 44509 "Jose A. Ortega Ruiz" <mail@jao.io> writes: > Hi, > > I've been trying the recently added gnus-search with an nnimap local > server (dovecot) that i index with notmuch. More concretely: I'm curious if this used to work before gnus-search? My understanding is that it never should have worked: notmuch returns search results as filenames on your local system, while dovecot wants search results returned as its own internal message UIDs. If this worked before gnus-search, I would very much like to know that, and to know *how* it worked, given that it's two systems that aren't meant to talk to one another. Thanks, Eric ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-08 2:23 ` Eric Abrahamsen @ 2020-11-08 2:49 ` Jose A. Ortega Ruiz 2020-11-08 4:53 ` Eric Abrahamsen 0 siblings, 1 reply; 12+ messages in thread From: Jose A. Ortega Ruiz @ 2020-11-08 2:49 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: 44509 On Sat, Nov 07 2020, Eric Abrahamsen wrote: > "Jose A. Ortega Ruiz" <mail@jao.io> writes: > >> Hi, >> >> I've been trying the recently added gnus-search with an nnimap local >> server (dovecot) that i index with notmuch. More concretely: > > I'm curious if this used to work before gnus-search? My understanding is > that it never should have worked: notmuch returns search results as > filenames on your local system, while dovecot wants search results > returned as its own internal message UIDs. > > If this worked before gnus-search, I would very much like to know that, > and to know *how* it worked, given that it's two systems that aren't > meant to talk to one another. I would have sworn it worked, but now you make me doubt it. I think the gist might be that I am telling dovecot to store its mails in maildirs, and there the filenames are essentially the maildir followed by the message id. But if that doesn't make sense, i might be misremembering. I'll have to go back to a previous commit, recompile and check again. Cheers, jao -- Journalist: "Who owns the patent on this vaccine?" Jonas Salk: "Well, the people, I would say. There is no patent. Could you patent the sun?" -Jonas Salk, medical researcher and developer of polio vaccine (1914-1995) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-08 2:49 ` Jose A. Ortega Ruiz @ 2020-11-08 4:53 ` Eric Abrahamsen 2020-11-08 7:09 ` Jose A. Ortega Ruiz 0 siblings, 1 reply; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-08 4:53 UTC (permalink / raw) To: Jose A. Ortega Ruiz; +Cc: 44509 On 11/08/20 02:49 AM, Jose A. Ortega Ruiz wrote: > On Sat, Nov 07 2020, Eric Abrahamsen wrote: > >> "Jose A. Ortega Ruiz" <mail@jao.io> writes: >> >>> Hi, >>> >>> I've been trying the recently added gnus-search with an nnimap local >>> server (dovecot) that i index with notmuch. More concretely: >> >> I'm curious if this used to work before gnus-search? My understanding is >> that it never should have worked: notmuch returns search results as >> filenames on your local system, while dovecot wants search results >> returned as its own internal message UIDs. >> >> If this worked before gnus-search, I would very much like to know that, >> and to know *how* it worked, given that it's two systems that aren't >> meant to talk to one another. > > I would have sworn it worked, but now you make me doubt it. I think the > gist might be that I am telling dovecot to store its mails in maildirs, > and there the filenames are essentially the maildir followed by the > message id. > > But if that doesn't make sense, i might be misremembering. I'll have to > go back to a previous commit, recompile and check again. It's something that's come up on gnus.general several times over the years, but I think no one's ever sat down and tried to figure out exactly how/if it's supposed to work. Thinking about it logically, I just don't see how it could. On my filesystem (in the maildir maintained by Dovecot), your message has the filename: 1604808232.M340024P65055.slip,S=3293,W=3369:2,a And that's how notmuch will return it. If I search for the same message via Dovecot's internal search, the UUID is 1116. Is there anything to go from one to the other? In a few days I can try to set this up and see if there's a way to make it work. (BTW have you turned on full text search in your local Dovecot? That makes imap searches "fast enough" for me, though I doubt they're as fast as notmuch.) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-08 4:53 ` Eric Abrahamsen @ 2020-11-08 7:09 ` Jose A. Ortega Ruiz 2020-11-11 5:10 ` Jose A. Ortega Ruiz 0 siblings, 1 reply; 12+ messages in thread From: Jose A. Ortega Ruiz @ 2020-11-08 7:09 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: 44509 On Sat, Nov 07 2020, Eric Abrahamsen wrote: > It's something that's come up on gnus.general several times over the > years, but I think no one's ever sat down and tried to figure out > exactly how/if it's supposed to work. Thinking about it logically, I > just don't see how it could. On my filesystem (in the maildir maintained > by Dovecot), your message has the filename: > > 1604808232.M340024P65055.slip,S=3293,W=3369:2,a > > And that's how notmuch will return it. If I search for the same message > via Dovecot's internal search, the UUID is 1116. Is there anything to go > from one to the other? Not to my knowledge. What you say makes sense and i must be misremembering... i have a helper function that knows how to find in gnus a message shown by notmuch, and i use that sometimes to search using notmuch (counsel-notmuch, actually) while keeping gnus as my main interface. > In a few days I can try to set this up and see if there's a way to make > it work. That'd be really great. I'm unfortunately not familiar with nnir/search, or i'd would have dived a bit into it by now, but i'd be happy to try and test whatever you come up with. That said, it's possible to tell notmuch to return message ids instead of filenames. For instance, one of the results of the query notmuch search --format=sexp messages from:Eric to:jao looks like: ((:thread "000000000002e056" :timestamp 1604811194 :date_relative "Today 04:53" :matched 2 :total 5 :authors "Eric Abrahamsen| Jose A. Ortega Ruiz, help-debbugs@gnu.org" :subject "bug#44509: 28.0.50; Error querying with new gnus-search and notmuch" :query ("id:87361kd1sg.fsf@ericabrahamsen.net id:874km0bgat.fsf@ericabrahamsen.net" "id:87imag7kkh.fsf@gnus.jao.io id:handler.44509.B.160479992727359.ack@debbugs.gnu.org id:87v9eg7ec3.fsf@gnus.jao.io") :tags ("inbox" "replied" "unread")) and those values for :query seem to be the ids of this thread. notmuch-search.el has actually a function notmuch-query-get-message-ids that directly returns them, and also this one: (defun notmuch-query-get-threads (search-terms) "Return a list of threads of messages matching SEARCH-TERMS. where possibly that list contains info from both the path and message id. > (BTW have you turned on full text search in your local Dovecot? That > makes imap searches "fast enough" for me, though I doubt they're as > fast as notmuch.) No... i once read that the fastest way was via xapian (if i'm recalling correctly), but then i saw it's a java thing and lost steam :) Another reason is that notmuch knows how to index usenet messages just fine, and i use leafnode to fetch my news to a local server, so i can play the trick of for instance symlinking leafnode's gwene/gmane message folders in my ~/var/mail and have a single index for all my mail and news. The same function that brings me from notmuch message buffers to gnus nnimap groups nows how to bring me to nntp groups to. Cheers, jao -- I don't necessarily agree with everything I say. -Marshall McLuhan (1911-1980) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-08 7:09 ` Jose A. Ortega Ruiz @ 2020-11-11 5:10 ` Jose A. Ortega Ruiz [not found] ` <uMxcF8JPFQWri9-dIaeTgjGDP3ACtDZ1GqktYJqUzsD2Yh3axLc8KfS50JxW0gyoZYNJsPwSC_j0rx-q8W9AVw==@protonmail.internalid> 2020-11-11 17:51 ` Eric Abrahamsen 0 siblings, 2 replies; 12+ messages in thread From: Jose A. Ortega Ruiz @ 2020-11-11 5:10 UTC (permalink / raw) To: 44509 Hi again, Eric. I was looking at the notmuch engine code and wondering why it wasn't working for me in a leafnode directory, which puts its messages in a nnmail-compatible format (as far as i can tell). And i discovered what looks like a possible bug in gnus-search-indexed (or a misunderstanding on my side). Concretely, on line 1363 of gnus-search, when implementing gnus-search-indexed-parsed output, we're constructing a groups regexp that looks like: (group-regexp (when groups (regexp-opt (mapcar (lambda (x) (gnus-group-real-name x)) groups)))) and then matching the returned list of files on that regexp (line 1377): (string-match-p group-regexp f-name))) But gnus-group-real-name is giving me back a dot-separated path for nested folders (e.g. gmane.bugs.gnus), while the file paths in the results are using slashes (gmane/bugs/gnus/234 etc.), so the match test always fails and no results are returned. If i simply redefine group-regexp using: (replace-regexp-in-string "\\." "/" (gnus-group-real-name x))) searches work fine for me. I can do that with an around advice, so that my tricks work in this case, but i was wondering if it's an oversight. On other news, i was trying to find a way in Gnus to go from Message-ID to article no. for IMAP groups or nnmaildirs (which would make using notmuch with dovecot really trivial), but without luck: anyone knows of an easy way? Cheers, jao -- As I grow to understand life less and less, I learn to live it more and more. -Jules Renard, writer (1864-1910) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <uMxcF8JPFQWri9-dIaeTgjGDP3ACtDZ1GqktYJqUzsD2Yh3axLc8KfS50JxW0gyoZYNJsPwSC_j0rx-q8W9AVw==@protonmail.internalid>]
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 5:10 ` Jose A. Ortega Ruiz [not found] ` <uMxcF8JPFQWri9-dIaeTgjGDP3ACtDZ1GqktYJqUzsD2Yh3axLc8KfS50JxW0gyoZYNJsPwSC_j0rx-q8W9AVw==@protonmail.internalid> @ 2020-11-11 17:51 ` Eric Abrahamsen 2020-11-11 17:56 ` Eric Abrahamsen 2020-11-11 18:29 ` jao 1 sibling, 2 replies; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-11 17:51 UTC (permalink / raw) To: Jose A. Ortega Ruiz; +Cc: 44509 "Jose A. Ortega Ruiz" <jao@gnu.org> writes: > Hi again, Eric. > > I was looking at the notmuch engine code and wondering why it wasn't > working for me in a leafnode directory, which puts its messages in a > nnmail-compatible format (as far as i can tell). And i discovered what > looks like a possible bug in gnus-search-indexed (or a misunderstanding > on my side). Concretely, on line 1363 of gnus-search, when implementing > gnus-search-indexed-parsed output, we're constructing a groups regexp > that looks like: > > (group-regexp (when groups > (regexp-opt > (mapcar > (lambda (x) (gnus-group-real-name x)) > groups)))) > > and then matching the returned list of files on that regexp (line 1377): > > (string-match-p group-regexp f-name))) > > But gnus-group-real-name is giving me back a dot-separated path for > nested folders (e.g. gmane.bugs.gnus), while the file paths in the > results are using slashes (gmane/bugs/gnus/234 etc.), so the match > test always fails and no results are returned. > > If i simply redefine group-regexp using: > > (replace-regexp-in-string "\\." "/" (gnus-group-real-name x))) This code that comes straight from the old nnir.el, and has always looked a bit fragile to me. The problem is that it really just expects each message to be in a regular file, with groups as folders. So you're using notmuch as a search engine for a local leafnode nntp server, and indexing its message store directly? Is there any leafnode setting that could influence how it stores its messages? Can it be convinced to store them in hierarchical folders? I suppose I could change the group-regexp to munge periods, but that could cause breakage in other cases, and I would be hesitant to do that. Otherwise, all the indexed search engines have a `gnus-search-indexed-extract' method that's used to actually return the file name from the results buffer. Each one's got something slightly different. It would be very easy to create a new notmuch search engine subclass that only overrides this method. To wit: (defclass gnus-search-leafnode-notmuch (gnus-search-notmuch)) (cl-defmethod gnus-search-indexed-extract ((_engine gnus-search-leafnode-notmuch)) (let ((results-string (buffer-substring-no-properties (line-beginning-position) (line-end-position)))) (prog1 (list (replace-regexp-in-string "periods" "forward slashes" results-string) 100) (forward-line)))) The `replace-regexp-in-string' changes the periods into forward slashes. Then in your Gnus config: '(nntp "your-local-leafnode" (gnus-search-engine gnus-search-leafnode-notmuch)) This is what I would do (I haven't tested the above, it might require some tweaking). It takes advantage of all the benefits of the generic-method approach, and lets you change behavior without messing with the rest of the gnus-search code. You might also find it helpful to tweak a few other slots or methods for this engine in particular. > On other news, i was trying to find a way in Gnus to go from Message-ID > to article no. for IMAP groups or nnmaildirs (which would make using > notmuch with dovecot really trivial), but without luck: anyone knows of > an easy way? Come to think of it, nnimap can already accept article numbers as message-ids. So if notmuch returns its results as message-ids, it should work transparently. The problem is that while the mechanism is there, it works by searching each message-id and getting the proper article number that way. My guess is that you'd be negating most of the speed advantage of using notmuch like this, and you'd still be better off using dovecot's own full-text indexing. You don't have to use xapian! https://doc.dovecot.org/configuration_manual/fts/ BUT, if you really wanted to do this, it would be relatively easy to check for "--output=messages" in 'switches, and use that instead of "--output=files". Eric ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 17:51 ` Eric Abrahamsen @ 2020-11-11 17:56 ` Eric Abrahamsen 2020-11-11 18:29 ` jao 1 sibling, 0 replies; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-11 17:56 UTC (permalink / raw) To: Jose A. Ortega Ruiz; +Cc: 44509 Eric Abrahamsen <eric@ericabrahamsen.net> writes: > "Jose A. Ortega Ruiz" <jao@gnu.org> writes: > >> Hi again, Eric. >> >> I was looking at the notmuch engine code and wondering why it wasn't >> working for me in a leafnode directory, which puts its messages in a >> nnmail-compatible format (as far as i can tell). And i discovered what >> looks like a possible bug in gnus-search-indexed (or a misunderstanding >> on my side). Concretely, on line 1363 of gnus-search, when implementing >> gnus-search-indexed-parsed output, we're constructing a groups regexp >> that looks like: >> >> (group-regexp (when groups >> (regexp-opt >> (mapcar >> (lambda (x) (gnus-group-real-name x)) >> groups)))) >> >> and then matching the returned list of files on that regexp (line 1377): >> >> (string-match-p group-regexp f-name))) >> >> But gnus-group-real-name is giving me back a dot-separated path for >> nested folders (e.g. gmane.bugs.gnus), while the file paths in the >> results are using slashes (gmane/bugs/gnus/234 etc.), so the match >> test always fails and no results are returned. >> >> If i simply redefine group-regexp using: >> >> (replace-regexp-in-string "\\." "/" (gnus-group-real-name x))) > > This code that comes straight from the old nnir.el, and has always > looked a bit fragile to me. The problem is that it really just expects > each message to be in a regular file, with groups as folders. > > So you're using notmuch as a search engine for a local leafnode nntp > server, and indexing its message store directly? > > Is there any leafnode setting that could influence how it stores its > messages? Can it be convinced to store them in hierarchical folders? > > I suppose I could change the group-regexp to munge periods, but that > could cause breakage in other cases, and I would be hesitant to do that. > > Otherwise, all the indexed search engines have a > `gnus-search-indexed-extract' method that's used to actually return the > file name from the results buffer. Each one's got something slightly > different. It would be very easy to create a new notmuch search engine > subclass that only overrides this method. To wit: > > (defclass gnus-search-leafnode-notmuch (gnus-search-notmuch)) Sorry, this would need to be: (defclass gnus-search-leafnode-notmuch (gnus-search-notmuch) nil) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 17:51 ` Eric Abrahamsen 2020-11-11 17:56 ` Eric Abrahamsen @ 2020-11-11 18:29 ` jao 2020-11-11 19:11 ` Eric Abrahamsen 1 sibling, 1 reply; 12+ messages in thread From: jao @ 2020-11-11 18:29 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: 44509 On Wed, Nov 11 2020, Eric Abrahamsen wrote: [...] > This code that comes straight from the old nnir.el, and has always > looked a bit fragile to me. The problem is that it really just expects > each message to be in a regular file, with groups as folders. > > So you're using notmuch as a search engine for a local leafnode nntp > server, and indexing its message store directly? Yes. > Is there any leafnode setting that could influence how it stores its > messages? Can it be convinced to store them in hierarchical folders? It is exactly what it is doing. Leafnode messages in the nntp group gmane.emacs.bugs are stored in /prefix/gmane/emac/bugs/<article no.> exactly as nnmail would do. And the result of the search by notmuch is displaying those paths correctly. The problem is that, in the code i mentioned, when that output is processed, the code is expecting to see in the results list gmane.emacs.bugs instead of pathnames. So i don't understand how that code has ever worked, even on the old nnir. > I suppose I could change the group-regexp to munge periods, but that > could cause breakage in other cases, and I would be hesitant to do that. In may case, the problem is the other way around: the regexp should accept /, but is only accepting periods (because it's constructed directly from the group name, which, for nntp at least, contains periods, not slashes). > Otherwise, all the indexed search engines have a > `gnus-search-indexed-extract' method that's used to actually return the > file name from the results buffer. See above. It's really very easy for me to fix this with an around method like this one: (cl-defmethod gnus-search-indexed-parse-output :around ((e gnus-search-notmuch) s q groups) (let ((gs (mapcar (lambda (g) (replace-regexp-in-string "\\." "/" g)) groups))) (cl-call-next-method e s q gs))) because the problem in my case is the group name, not the search results. Note that, for cases (if any) where the group names already look like "gmane/emacs/bug" (which i suspect is what nnml and nnmaildir are doing and that's why it works), that's a no-op. So yes, for me it's a solved problem, even without defining a new engine. >> On other news, i was trying to find a way in Gnus to go from Message-ID >> to article no. for IMAP groups or nnmaildirs (which would make using >> notmuch with dovecot really trivial), but without luck: anyone knows of >> an easy way? > > Come to think of it, nnimap can already accept article numbers > as message-ids. So if notmuch returns its results as message-ids, it > should work transparently. Yes, i thought that at first. i got stuck when i discovered that nnselect apparently only accepts article numbers to build its groups. i guess one could extend nnselect to also accept message ids, and that that would be useful also in other contexts. > The problem is that while the mechanism is there, it works by searching > each message-id and getting the proper article number that way. My guess > is that you'd be negating most of the speed advantage of using notmuch > like this, and you'd still be better off using dovecot's own full-text > indexing. You don't have to use xapian! > > https://doc.dovecot.org/configuration_manual/fts/ Ah, thanks for that, i'll definitely take a look. The nice thing about using notmuch would be that is one less moving piece to maintain, and that then one could move very, very transparently between notmuch's emacs interface and gnus, using the same message files and indexes. > BUT, if you really wanted to do this, it would be relatively easy to > check for "--output=messages" in 'switches, and use that instead of > "--output=files". Yes, it's trivial to get a vector of results of the form [group message-id score] ... a full engine like that is just a few lines: (require 'notmuch-query) (defclass jao-gnus-notmuch (gnus-search-notmuch) ()) (cl-defmethod gnus-search-run-search ((engine jao-gnus-notmuch) srv query groups) (let ((qstring (gnus-search-make-query-string engine query)) (res)) (dolist (group groups) (let* ((folder (format "folder:%s" (replace-regexp-in-string "\\." "/" group))) (ids (notmuch-query-get-message-ids qstring folder))) (dolist (id ids) (push (vector (gnus-group-full-name group srv) id 100) res)))) res)) That's all (well, obviating thread seaches, but those are not hard either). Except that it doesn't work because nnselect wants [group article-no score]. If you tell me how to obtain article-no from message-id, i'm done :) Thanks, jao -- I don't necessarily agree with everything I say. -Marshall McLuhan (1911-1980) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 18:29 ` jao @ 2020-11-11 19:11 ` Eric Abrahamsen 2020-11-11 21:50 ` jao 0 siblings, 1 reply; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-11 19:11 UTC (permalink / raw) To: jao; +Cc: 44509 jao <jao@gnu.org> writes: > On Wed, Nov 11 2020, Eric Abrahamsen wrote: > > [...] > >> This code that comes straight from the old nnir.el, and has always >> looked a bit fragile to me. The problem is that it really just expects >> each message to be in a regular file, with groups as folders. >> >> So you're using notmuch as a search engine for a local leafnode nntp >> server, and indexing its message store directly? > > Yes. > >> Is there any leafnode setting that could influence how it stores its >> messages? Can it be convinced to store them in hierarchical folders? > > It is exactly what it is doing. Leafnode messages in the nntp group > gmane.emacs.bugs are stored in /prefix/gmane/emac/bugs/<article no.> > exactly as nnmail would do. And the result of the search by notmuch is > displaying those paths correctly. The problem is that, in the code i > mentioned, when that output is processed, the code is expecting to see > in the results list gmane.emacs.bugs instead of pathnames. So i don't > understand how that code has ever worked, even on the old nnir. I see, I had your problem backwards. My guess is that no one has tried to do this before, so the issue has never come up. BTW, while there's no longer a "gmane" search engine, it would be nice to provide an engine for searching other nntp servers. In your case you're running it locally, but do you know if a remote leafnode server handles any sort of search functionality? (I might as well google this myself.) >> I suppose I could change the group-regexp to munge periods, but that >> could cause breakage in other cases, and I would be hesitant to do that. > > In may case, the problem is the other way around: the regexp should > accept /, but is only accepting periods (because it's constructed > directly from the group name, which, for nntp at least, contains > periods, not slashes). > >> Otherwise, all the indexed search engines have a >> `gnus-search-indexed-extract' method that's used to actually return the >> file name from the results buffer. > > See above. It's really very easy for me to fix this with an around > method like this one: > > (cl-defmethod gnus-search-indexed-parse-output :around ((e gnus-search-notmuch) s q groups) > (let ((gs (mapcar (lambda (g) (replace-regexp-in-string "\\." "/" g)) > groups))) > (cl-call-next-method e s q gs))) > > because the problem in my case is the group name, not the search > results. Note that, for cases (if any) where the group names already > look like "gmane/emacs/bug" (which i suspect is what nnml and nnmaildir > are doing and that's why it works), that's a no-op. > > So yes, for me it's a solved problem, even without defining a new > engine. Okay! Glad that's sorted. You might still want a new engine, if you have other notmuch engines that shouldn't inherit this behavior. >>> On other news, i was trying to find a way in Gnus to go from Message-ID >>> to article no. for IMAP groups or nnmaildirs (which would make using >>> notmuch with dovecot really trivial), but without luck: anyone knows of >>> an easy way? >> >> Come to think of it, nnimap can already accept article numbers >> as message-ids. So if notmuch returns its results as message-ids, it >> should work transparently. > > Yes, i thought that at first. i got stuck when i discovered that > nnselect apparently only accepts article numbers to build its groups. i > guess one could extend nnselect to also accept message ids, and that > that would be useful also in other contexts. It looks like nnselect can accept message-ids when requesting individual articles, but not when categorizing groups/articles, nor when requesting headers. My guess is that might be quite a bit of work to implement, particularly since the id->number routine will be different for each backend. You can see that happening in `nnselect-request-article'. >> The problem is that while the mechanism is there, it works by searching >> each message-id and getting the proper article number that way. My guess >> is that you'd be negating most of the speed advantage of using notmuch >> like this, and you'd still be better off using dovecot's own full-text >> indexing. You don't have to use xapian! >> >> https://doc.dovecot.org/configuration_manual/fts/ > > Ah, thanks for that, i'll definitely take a look. The nice thing about > using notmuch would be that is one less moving piece to maintain, and > that then one could move very, very transparently between notmuch's > emacs interface and gnus, using the same message files and indexes. > >> BUT, if you really wanted to do this, it would be relatively easy to >> check for "--output=messages" in 'switches, and use that instead of >> "--output=files". > > Yes, it's trivial to get a vector of results of the form > [group message-id score] ... a full engine like that is just a few > lines: > > (require 'notmuch-query) > > (defclass jao-gnus-notmuch (gnus-search-notmuch) ()) > > (cl-defmethod gnus-search-run-search ((engine jao-gnus-notmuch) srv query groups) > (let ((qstring (gnus-search-make-query-string engine query)) > (res)) > (dolist (group groups) > (let* ((folder (format "folder:%s" > (replace-regexp-in-string "\\." "/" group))) > (ids (notmuch-query-get-message-ids qstring folder))) > (dolist (id ids) > (push (vector (gnus-group-full-name group srv) id 100) res)))) > res)) Hmm, I guess it wouldn't be useful for me to implement this in the general case, since the ids aren't going to be accepted by nnselect. > That's all (well, obviating thread seaches, but those are not hard > either). Except that it doesn't work because nnselect wants > [group article-no score]. If you tell me how to obtain article-no from > message-id, i'm done :) For nnimap, it's `nnimap-find-article-by-message-id'. Eric ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 19:11 ` Eric Abrahamsen @ 2020-11-11 21:50 ` jao 2020-11-12 0:29 ` Eric Abrahamsen 0 siblings, 1 reply; 12+ messages in thread From: jao @ 2020-11-11 21:50 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: 44509 On Wed, Nov 11 2020, Eric Abrahamsen wrote: [...] > I see, I had your problem backwards. My guess is that no one has tried > to do this before, so the issue has never come up. > > BTW, while there's no longer a "gmane" search engine, it would be nice > to provide an engine for searching other nntp servers. In your case > you're running it locally, but do you know if a remote leafnode server > handles any sort of search functionality? (I might as well google this > myself.) No, i don't think leafnode does anything of the sort (it's old, from simpler times, and kind of opinionated on a minimal feature set). [...] > Okay! Glad that's sorted. You might still want a new engine, if you have > other notmuch engines that shouldn't inherit this behavior. Yes, and it's just adding a single line to the above code, so pretty cheap. [...] > Hmm, I guess it wouldn't be useful for me to implement this in the > general case, since the ids aren't going to be accepted by nnselect. > >> That's all (well, obviating thread seaches, but those are not hard >> either). Except that it doesn't work because nnselect wants >> [group article-no score]. If you tell me how to obtain article-no from >> message-id, i'm done :) > > For nnimap, it's `nnimap-find-article-by-message-id'. Well, that function is contacting back the imap server and asking for a (simple) search, so it's going to be very roundabout even if it finally works (i cannot manage to make it work for me, although i'm surely doing something wrong and its implementation not trivial). fst-xapian doesn't look that bad, after all (actually, i was confusing it with solr or elastic which need independent servers and are too heavyweight for me.) :) Thanks, jao ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#44509: 28.0.50; Error querying with new gnus-search and notmuch 2020-11-11 21:50 ` jao @ 2020-11-12 0:29 ` Eric Abrahamsen 0 siblings, 0 replies; 12+ messages in thread From: Eric Abrahamsen @ 2020-11-12 0:29 UTC (permalink / raw) To: jao; +Cc: 44509 jao <jao@gnu.org> writes: > On Wed, Nov 11 2020, Eric Abrahamsen wrote: > > [...] > >> I see, I had your problem backwards. My guess is that no one has tried >> to do this before, so the issue has never come up. >> >> BTW, while there's no longer a "gmane" search engine, it would be nice >> to provide an engine for searching other nntp servers. In your case >> you're running it locally, but do you know if a remote leafnode server >> handles any sort of search functionality? (I might as well google this >> myself.) > > No, i don't think leafnode does anything of the sort (it's old, from > simpler times, and kind of opinionated on a minimal feature set). That's what my googling indicated, too :) [...] >> For nnimap, it's `nnimap-find-article-by-message-id'. > > Well, that function is contacting back the imap server and asking for a > (simple) search, so it's going to be very roundabout even if it finally > works (i cannot manage to make it work for me, although i'm surely doing > something wrong and its implementation not trivial). Right, that's what I meant by the search probably negating any speedups you'd get from using notmuch. > fst-xapian doesn't look that bad, after all (actually, i was confusing > it with solr or elastic which need independent servers and are too > heavyweight for me.) :) I think it's great! You make sure a package is installed, then add a single line to your dovecot config, then never think about it again. Eric ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2020-11-12 0:29 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-11-08 1:44 bug#44509: 28.0.50; Error querying with new gnus-search and notmuch Jose A. Ortega Ruiz 2020-11-08 2:23 ` Eric Abrahamsen 2020-11-08 2:49 ` Jose A. Ortega Ruiz 2020-11-08 4:53 ` Eric Abrahamsen 2020-11-08 7:09 ` Jose A. Ortega Ruiz 2020-11-11 5:10 ` Jose A. Ortega Ruiz [not found] ` <uMxcF8JPFQWri9-dIaeTgjGDP3ACtDZ1GqktYJqUzsD2Yh3axLc8KfS50JxW0gyoZYNJsPwSC_j0rx-q8W9AVw==@protonmail.internalid> 2020-11-11 17:51 ` Eric Abrahamsen 2020-11-11 17:56 ` Eric Abrahamsen 2020-11-11 18:29 ` jao 2020-11-11 19:11 ` Eric Abrahamsen 2020-11-11 21:50 ` jao 2020-11-12 0:29 ` Eric Abrahamsen
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).