(require 'gnus-sum)
(require 'message)
(require 'gnus-util)
-(eval-and-compile
+(eval-when-compile
(require 'cl))
(nnoo-declare nnir)
(unless (string-match prefix dirnam)
(nnheader-report 'nnir "Dir name %s doesn't contain prefix %s"
dirnam prefix))
- (setq group (substitute ?. ?/ (replace-match "" t t dirnam)))
+ (setq group (gnus-replace-in-string
+ (replace-match "" t t dirnam) "/" "."))
(push (vector (nnir-group-full-name group server)
(string-to-number artno)
(string-to-number score))
artlist))
(message "Massaging waissearch output...done")
(apply 'vector
- (sort* artlist
- (function (lambda (x y)
- (> (nnir-artitem-rsv x)
- (nnir-artitem-rsv y)))))))))
+ (sort artlist
+ (function (lambda (x y)
+ (> (nnir-artitem-rsv x)
+ (nnir-artitem-rsv y)))))))))
;; IMAP interface.
;; todo:
;; Sort by score
(apply 'vector
- (sort* artlist
- (function (lambda (x y)
- (> (nnir-artitem-rsv x)
- (nnir-artitem-rsv y)))))))))
+ (sort artlist
+ (function (lambda (x y)
+ (> (nnir-artitem-rsv x)
+ (nnir-artitem-rsv y)))))))))
;; Swish-E interface.
(defun nnir-run-swish-e (query server &optional group)
;; eliminate all ".", "/", "\" from beginning. Always matches.
(string-match "^[./\\]*\\(.*\\)$" dirnam)
;; "/" -> "."
- (setq group (substitute ?. ?/ (match-string 1 dirnam)))
+ (setq group (gnus-replace-in-string (match-string 1 dirnam) "/" "."))
;; Windows "\\" -> "."
- (setq group (substitute ?. ?\\ group))
+ (setq group (gnus-replace-in-string group "\\\\" "."))
(push (vector (nnir-group-full-name group server)
(string-to-number artno)
;; Sort by score
(apply 'vector
- (sort* artlist
- (function (lambda (x y)
- (> (nnir-artitem-rsv x)
- (nnir-artitem-rsv y)))))))))
+ (sort artlist
+ (function (lambda (x y)
+ (> (nnir-artitem-rsv x)
+ (nnir-artitem-rsv y)))))))))
;; HyREX interface
(defun nnir-run-hyrex (query server &optional group)
score (match-string 3))
(when (string-match prefix dirnam)
(setq dirnam (replace-match "" t t dirnam)))
- (push (vector (nnir-group-full-name (substitute ?. ?/ dirnam) server)
+ (push (vector (nnir-group-full-name
+ (gnus-replace-in-string dirnam "/" ".") server)
(string-to-number artno)
(string-to-number score))
artlist))
(message "Massaging hyrex-search output...done.")
(apply 'vector
- (sort* artlist
- (function (lambda (x y)
- (if (string-lessp (nnir-artitem-group x)
- (nnir-artitem-group y))
- t
- (< (nnir-artitem-number x)
- (nnir-artitem-number y)))))))
+ (sort artlist
+ (function (lambda (x y)
+ (if (string-lessp (nnir-artitem-group x)
+ (nnir-artitem-group y))
+ t
+ (< (nnir-artitem-number x)
+ (nnir-artitem-number y)))))))
)))
;; Namazu interface
;; sort artlist by score
(apply 'vector
- (sort* artlist
- (function (lambda (x y)
- (> (nnir-artitem-rsv x)
- (nnir-artitem-rsv y)))))))))
+ (sort artlist
+ (function (lambda (x y)
+ (> (nnir-artitem-rsv x)
+ (nnir-artitem-rsv y)))))))))
(defun nnir-run-find-grep (query server &optional group)
"Run find and grep to obtain matching articles."
"."
;; Try accessing the group literally as well as
;; interpreting dots as directory separators so the
- ;; engine works with plain nnml as well as the Gnus
- ;; Cache.
- (find-if 'file-directory-p
- (let ((group (gnus-group-real-name group)))
- (list group (gnus-replace-in-string group "\\." "/" t)))))))
+ ;; engine works with plain nnml as well as the Gnus Cache.
+ (let ((group (gnus-group-real-name group)))
+ ;; Replace cl-func find-if.
+ (if (file-directory-p group)
+ group
+ (if (file-directory-p
+ (setq group (gnus-replace-in-string group "\\." "/" t)))
+ group))))))
(unless group
(error "Cannot locate directory for group"))
(save-excursion
(art (string-to-number (car (last path)))))
(while (string= "." (car path))
(setq path (cdr path)))
- (let ((group (mapconcat 'identity (subseq path 0 -1) ".")))
+ (let ((group (mapconcat 'identity
+ ;; Replace cl-func: (subseq path 0 -1)
+ (let ((end (1- (length path)))
+ res)
+ (while (>= (setq end (1- end)) 0)
+ (push (pop path) res))
+ (nreverse res))
+ ".")))
(push (vector (nnir-group-full-name group server) art 0)
artlist))
(forward-line 1)))