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

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

[elpa] externals/elisa 0e32d7bb5c 63/98: Add async directory parsing


From: ELPA Syncer
Subject: [elpa] externals/elisa 0e32d7bb5c 63/98: Add async directory parsing
Date: Wed, 17 Jul 2024 18:58:05 -0400 (EDT)

branch: externals/elisa
commit 0e32d7bb5c348769d6bc51478183eb21134ffd8e
Author: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Commit: Sergey Kostyaev <kostyaev.sergey2@wb.ru>

    Add async directory parsing
---
 elisa.el | 61 +++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 35 insertions(+), 26 deletions(-)

diff --git a/elisa.el b/elisa.el
index d70085a728..d3e00f8a3c 100644
--- a/elisa.el
+++ b/elisa.el
@@ -789,6 +789,14 @@ When FORCE parse even if already parsed."
            (elisa-parse-file collection-id file))
          files)))
 
+;;;###autoload
+(defun elisa-async-parse-directory (dir)
+  "Parse DIR as new collection asyncronously."
+  (interactive "DSelect directory: ")
+  (elisa--async-do (lambda ()
+                    (elisa-parse-directory
+                     (expand-file-name dir)))))
+
 (defun elisa-search-duckduckgo (prompt)
   "Search duckduckgo for PROMPT and return list of urls."
   (let* ((url (format "https://duckduckgo.com/html/?q=%s"; (url-hexify-string 
prompt)))
@@ -1069,32 +1077,33 @@ WHERE d.rowid in %s;"
 (defun elisa--async-do (func &optional on-done)
   "Do FUNC asyncronously.
 Call ON-DONE callback with result as an argument after FUNC evaluation done."
-  (async-start `(lambda ()
-                 ,(async-inject-variables "elisa-embeddings-provider")
-                 ,(async-inject-variables "elisa-db-directory")
-                 ,(async-inject-variables "elisa-find-executable")
-                 ,(async-inject-variables "elisa-tar-executable")
-                 ,(async-inject-variables "elisa-prompt-rewriting-enabled")
-                 ,(async-inject-variables "elisa-rewrite-prompt-template")
-                 ,(async-inject-variables "elisa-semantic-split-function")
-                 ,(async-inject-variables "elisa-webpage-extraction-function")
-                 ,(async-inject-variables "elisa-web-search-function")
-                 ,(async-inject-variables "elisa-searxng-url")
-                 ,(async-inject-variables "elisa-web-pages-limit")
-                 ,(async-inject-variables "elisa-breakpoint-threshold-amount")
-                 ,(async-inject-variables "elisa-pandoc-executable")
-                 ,(async-inject-variables "ellama-long-lines-length")
-                 ,(async-inject-variables "elisa-reranker-enabled")
-                 ,(async-inject-variables "load-path")
-                 (require 'elisa)
-                 (,func))
-              (lambda (res)
-                (sqlite-close elisa-db)
-                (elisa--reopen-db)
-                (when on-done
-                  (funcall on-done res))
-                (message "%.25s done."
-                         func))))
+  (let ((command real-this-command))
+    (async-start `(lambda ()
+                   ,(async-inject-variables "elisa-embeddings-provider")
+                   ,(async-inject-variables "elisa-db-directory")
+                   ,(async-inject-variables "elisa-find-executable")
+                   ,(async-inject-variables "elisa-tar-executable")
+                   ,(async-inject-variables "elisa-prompt-rewriting-enabled")
+                   ,(async-inject-variables "elisa-rewrite-prompt-template")
+                   ,(async-inject-variables "elisa-semantic-split-function")
+                   ,(async-inject-variables 
"elisa-webpage-extraction-function")
+                   ,(async-inject-variables "elisa-web-search-function")
+                   ,(async-inject-variables "elisa-searxng-url")
+                   ,(async-inject-variables "elisa-web-pages-limit")
+                   ,(async-inject-variables 
"elisa-breakpoint-threshold-amount")
+                   ,(async-inject-variables "elisa-pandoc-executable")
+                   ,(async-inject-variables "ellama-long-lines-length")
+                   ,(async-inject-variables "elisa-reranker-enabled")
+                   ,(async-inject-variables "load-path")
+                   (require 'elisa)
+                   (,func))
+                (lambda (res)
+                  (sqlite-close elisa-db)
+                  (elisa--reopen-db)
+                  (when on-done
+                    (funcall on-done res))
+                  (message "%.40s done."
+                           (or command func))))))
 
 (defun elisa-extact-webpage-chunks (url)
   "Extract semantic chunks for webpage fetched from URL."



reply via email to

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