[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/gnus-search 9c57f16 15/30: Some refactoring of gnu
From: |
Eric Abrahamsen |
Subject: |
[Emacs-diffs] scratch/gnus-search 9c57f16 15/30: Some refactoring of gnus-search-run-query |
Date: |
Thu, 1 Jun 2017 03:50:22 -0400 (EDT) |
branch: scratch/gnus-search
commit 9c57f16b442939e35e59ad68266439c39070fb15
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>
Some refactoring of gnus-search-run-query
* lisp/gnus/gnus-search.el (gnus-search-run-query): Move results
sorting here.
(gnus-search-run-search): No need to sort here. Also, loop
accept-process-output on process-live-p, apparently it doesn't
necessarily get *all* the output.
Other formatting and variable naming fixes.
---
lisp/gnus/gnus-search.el | 57 +++++++++++++++++++++++-------------------------
1 file changed, 27 insertions(+), 30 deletions(-)
diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el
index e8a7eee..877ff11 100644
--- a/lisp/gnus/gnus-search.el
+++ b/lisp/gnus/gnus-search.el
@@ -1049,18 +1049,18 @@ quirks.")
;;; Transforming and running search queries.
-(cl-defgeneric gnus-search-run-search (backend server query groups)
- "Run QUERY in GROUPS against SERVER, using search BACKEND.
+(cl-defgeneric gnus-search-run-search (engine server query groups)
+ "Run QUERY in GROUPS against SERVER, using search ENGINE.
Should return results as a vector of vectors.")
-(cl-defgeneric gnus-search-transform (backend expression)
- "Transform sexp EXPRESSION into a string search query usable by BACKEND.
+(cl-defgeneric gnus-search-transform (engine expression)
+ "Transform sexp EXPRESSION into a string search query usable by ENGINE.
Responsible for handling and, or, and parenthetical expressions.")
-(cl-defgeneric gnus-search-transform-expression (backend expression)
- "Transform a basic EXPRESSION into a string usable by BACKEND.")
+(cl-defgeneric gnus-search-transform-expression (engine expression)
+ "Transform a basic EXPRESSION into a string usable by ENGINE.")
(cl-defgeneric gnus-search-make-query-string (engine query-spec)
"Extract the actual query string to use from QUERY-SPEC.")
@@ -1077,14 +1077,14 @@ Responsible for handling and, or, and parenthetical
expressions.")
(alist-get 'query query-spec)))
(cl-defmethod gnus-search-transform ((engine gnus-search-engine)
- (query list))
+ (query list))
(let (clauses)
- (mapc
- (lambda (item)
- (when-let ((expr (gnus-search-transform-expression engine item)))
- (push expr clauses)))
- query)
- (mapconcat #'identity (reverse clauses) " ")))
+ (mapc
+ (lambda (item)
+ (when-let ((expr (gnus-search-transform-expression engine item)))
+ (push expr clauses)))
+ query)
+ (mapconcat #'identity (reverse clauses) " ")))
;; Most search engines just pass through plain strings.
(cl-defmethod gnus-search-transform-expression ((_ gnus-search-engine)
@@ -1399,32 +1399,24 @@ Returns a vector of [group name, file name, score]
vectors."
(program (slot-value engine 'program))
(buffer (slot-value engine 'proc-buffer))
(cp-list (gnus-search-indexed-search-command
- proc exitstatus artlist)
engine qstring query groups))
+ proc exitstatus)
(set-buffer buffer)
(erase-buffer)
(if groups
(message "Doing %s query on %s..." program groups)
(message "Doing %s query..." program))
- (setq proc (apply #'start-process "search" buffer program cp-list))
-
- (accept-process-output proc)
+ (setq proc (apply #'start-process (format "search-%s" server)
+ buffer program cp-list))
+ (while (process-live-p proc)
+ (accept-process-output proc))
(setq exitstatus (process-exit-status proc))
(if (zerop exitstatus)
;; The search results have been put into the current buffer;
- ;; `massage-output' finds them there.
- (progn
- (setq artlist (gnus-search-indexed-massage-output
- engine server groups))
-
- ;; Sort by score
-
- (apply #'vector
- (sort artlist
- (function (lambda (x y)
- (> (nnselect-artitem-rsv x)
- (nnselect-artitem-rsv y)))))))
+ ;; `massage-output' finds them there and returns the article
+ ;; list.
+ (gnus-search-indexed-massage-output engine server groups)
(nnheader-report 'search "%s error: %s" program exitstatus)
;; Failure reason is in this buffer, show it if the user
;; wants it.
@@ -2075,7 +2067,12 @@ Assume \"size\" key is equal to \"larger\"."
search-engine server prepared-query groups)
results))))
(alist-get 'search-group-spec specs))
- results))
+ ;; Sort by score. Couldn't we also then sort by date or
+ ;; something?
+ (sort results
+ (function (lambda (x y)
+ (> (nnselect-artitem-rsv x)
+ (nnselect-artitem-rsv y)))))))
(defun gnus-search-prepare-query (query-spec)
"Accept a search query in raw format, and prepare it.
- [Emacs-diffs] scratch/gnus-search 5e80a4d 06/30: Create general gnus-search-indexed-massage-output method, (continued)
- [Emacs-diffs] scratch/gnus-search 5e80a4d 06/30: Create general gnus-search-indexed-massage-output method, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search ede46af 12/30: Avoid circular import, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 9e61dd3 16/30: Find-grep can only search on plain strings, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search cc541ba 14/30: Missing a base implementation of transform-expression for strings, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 31514a0 04/30: Add function gnus-search-prepare-query, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 32a328f 17/30: Fix for parsing delimited strings, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search b086d9a 07/30: Handle regexp and wildcard search terms, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search a4fe929 18/30: Notmuch query transformation improvements, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 2ae2549 24/30: Fix bum namazu search command, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 37e044f 19/30: Don't do any sorting at all in gnus-search, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 9c57f16 15/30: Some refactoring of gnus-search-run-query,
Eric Abrahamsen <=
- [Emacs-diffs] scratch/gnus-search 09aff52 26/30: Do result limiting in the indexed engine process, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 371748d 22/30: Switch base massage-output method for indexed search engines, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 6a4dc13 09/30: WIP on documentation, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 79b5546 25/30: Add gnus-search-grep abstract engine, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 9eebc88 21/30: More comments, small improvements, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search e39079c 08/30: Remove Hyrex search engine, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search fcf327b 10/30: Add Mairix search engine, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 7f21251 29/30: Don't parse the address: key, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 64bf8de 27/30: Messed up rebase, Eric Abrahamsen, 2017/06/01
- [Emacs-diffs] scratch/gnus-search 8ea8644 23/30: Refactor parsing of indexed search engine output, Eric Abrahamsen, 2017/06/01