From 045a50426b56dddde2ff26234933fd53b466278e Mon Sep 17 00:00:00 2001 From: jao Date: Mon, 7 Dec 2020 11:53:15 +0000 Subject: jao-counsel-recoll --- doc/jao-counsel-recoll.el | 60 +++++++++++++++++++++++++++++++++++++++++++++++ doc/jao-recoll.el | 3 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 doc/jao-counsel-recoll.el (limited to 'doc') diff --git a/doc/jao-counsel-recoll.el b/doc/jao-counsel-recoll.el new file mode 100644 index 0000000..adae881 --- /dev/null +++ b/doc/jao-counsel-recoll.el @@ -0,0 +1,60 @@ +;;; jao-counsel-recoll.el --- counsel and recoll -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 jao + +;; Author: jao +;; Keywords: docs + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; Helpers for using recoll with counsel + +;;; Code: + +(require 'jao-recoll) +(require 'counsel) +(require 'ivy) + +(defvar jao-counsel-recoll--history nil) +(defun jao-counsel-recoll--function (str) + (let ((xs (counsel-recoll-function str))) + (cl-remove-if-not (lambda (x) (string-prefix-p "file://" x)) xs))) + +;;;###autoload +(defun jao-counsel-recoll (&optional initial-input) + (interactive) + (counsel-require-program "recoll") + (ivy-read "recoll: " 'jao-counsel-recoll--function + :initial-input initial-input + :dynamic-collection t + :history 'jao-counsel-recoll--history + :action (lambda (x) + (when (string-match "file://\\(.*\\)\\'" x) + (let ((file-name (match-string 1 x))) + (if (string-match "pdf$" x) + (jao-open-doc file-name) + (find-file file-name))))) + :unwind #'counsel-delete-process + :caller 'jao-counsel-recoll)) + +(defun jao-counsel-recoll--recoll (_s) (jao-recoll ivy-text)) + +(ivy-set-actions 'jao-counsel-recoll + '(("x" jao-counsel-recoll--recoll "List in buffer"))) + + +(provide 'jao-counsel-recoll) +;;; jao-counsel-recoll.el ends here diff --git a/doc/jao-recoll.el b/doc/jao-recoll.el index f40747f..eb73d62 100644 --- a/doc/jao-recoll.el +++ b/doc/jao-recoll.el @@ -1,6 +1,6 @@ ;; jao-recoll.el -- Displaying recoll queries -;; Copyright (c) 2017 Jose Antonio Ortega Ruiz +;; Copyright (c) 2017, 2020 Jose Antonio Ortega Ruiz ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -38,6 +38,7 @@ (defvar jao-recoll-flags "-A") +;;;###autoload (defun jao-recoll (keywords) "Performs a query using recoll and shows the results in a buffer using org mode." -- cgit v1.2.3