emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ivy-hydra 742119a 181/395: counsel.el (counsel-tracker)


From: Basil L. Contovounesios
Subject: [elpa] externals/ivy-hydra 742119a 181/395: counsel.el (counsel-tracker): New command
Date: Thu, 25 Feb 2021 08:31:58 -0500 (EST)

branch: externals/ivy-hydra
commit 742119ad6fb7ba26e18df2c40a723f36b71287e8
Author: Oleh Krehel <ohwoeowho@gmail.com>
Commit: Oleh Krehel <ohwoeowho@gmail.com>

    counsel.el (counsel-tracker): New command
    
    Fixes #2484
---
 counsel.el | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/counsel.el b/counsel.el
index fc7290c..19926a2 100644
--- a/counsel.el
+++ b/counsel.el
@@ -2617,6 +2617,34 @@ INITIAL-INPUT can be given as the initial minibuffer 
input."
   :unwind-fn #'counsel-delete-process
   :exit-codes '(1 "Nothing found"))
 
+;;** `counsel-tracker'
+(defun counsel-tracker-function (input)
+  "Call the \"tracker\" shell command with INPUT."
+  (or
+   (ivy-more-chars)
+   (progn
+     (counsel--async-command
+      (format
+       "tracker sparql -q \"SELECT ?url WHERE { ?s a nfo:FileDataObject ; 
nie:url ?url . FILTER (STRSTARTS (?url, 'file://$HOME/')) . FILTER regex(?url, 
'%s') }\" | tail -n +2 | head -n -1"
+       (counsel--elisp-to-pcre (funcall ivy--regex-function input))))
+     '("" "working..."))))
+
+(defun counsel-tracker-transformer (str)
+  (if (string-match "file:///" str)
+      (decode-coding-string (url-unhex-string (substring str 9)) 'utf-8)
+    str))
+
+;;;###autoload
+(defun counsel-tracker ()
+  (interactive)
+  (ivy-read "Tracker: " 'counsel-tracker-function
+            :dynamic-collection t
+            :action (lambda (s) (find-file (counsel-tracker-transformer s)))
+            :caller 'counsel-tracker))
+
+(ivy-configure 'counsel-tracker
+  :display-transformer-fn #'counsel-tracker-transformer)
+
 ;;** `counsel-fzf'
 (defvar counsel-fzf-cmd "fzf -f \"%s\""
   "Command for `counsel-fzf'.")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]