[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elisa 86f4ea0afb 74/98: Fix parsing info manuals with i
From: |
ELPA Syncer |
Subject: |
[elpa] externals/elisa 86f4ea0afb 74/98: Fix parsing info manuals with infinite loop |
Date: |
Wed, 17 Jul 2024 18:58:06 -0400 (EDT) |
branch: externals/elisa
commit 86f4ea0afb4f12cca7b5b8ff0d14e70607005029
Author: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Commit: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Fix parsing info manuals with infinite loop
For example info-stnd. See #11
---
elisa.el | 75 ++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 40 insertions(+), 35 deletions(-)
diff --git a/elisa.el b/elisa.el
index 2f7b6258e3..5499f20809 100644
--- a/elisa.el
+++ b/elisa.el
@@ -414,49 +414,54 @@ FOREIGN KEY(collection_id) REFERENCES collections(rowid)
collection-name))))))
(kind-id (caar (sqlite-select
elisa-db "select rowid from kinds where name =
'info';")))
- (continue t))
+ (continue t)
+ (parsed-nodes nil))
(while continue
(let* ((node-name (concat "(" (file-name-sans-extension
(file-name-nondirectory
Info-current-file))
") "
Info-current-node))
(chunks (elisa-split-semantically)))
- (mapc
- (lambda (text)
- (let* ((hash (secure-hash 'sha256 text))
- (embedding (llm-embedding elisa-embeddings-provider text))
- (rowid
- (if-let ((rowid (caar (sqlite-select
- elisa-db
- (format "select rowid from data
where kind_id = %s and collection_id = %s and path = '%s' and hash = '%s';"
- kind-id collection-id
- (elisa-sqlite-escape
node-name) hash)))))
- nil
+ (if (not (cl-find node-name parsed-nodes :test 'string-equal))
+ (progn
+ (mapc
+ (lambda (text)
+ (let* ((hash (secure-hash 'sha256 text))
+ (embedding (llm-embedding elisa-embeddings-provider
text))
+ (rowid
+ (if-let ((rowid (caar (sqlite-select
+ elisa-db
+ (format "select rowid from
data where kind_id = %s and collection_id = %s and path = '%s' and hash = '%s';"
+ kind-id
collection-id
+
(elisa-sqlite-escape node-name) hash)))))
+ nil
+ (sqlite-execute
+ elisa-db
+ (format
+ "insert into data(kind_id, collection_id,
path, hash, data) values (%s, %s, '%s', '%s', '%s');"
+ kind-id collection-id
+ (elisa-sqlite-escape node-name) hash
(elisa-sqlite-escape text)))
+ (caar (sqlite-select
+ elisa-db
+ (format "select rowid from data where
kind_id = %s and collection_id = %s and path = '%s' and hash = '%s';"
+ kind-id collection-id
+ (elisa-sqlite-escape node-name)
hash))))))
+ (when rowid
(sqlite-execute
elisa-db
- (format
- "insert into data(kind_id, collection_id, path,
hash, data) values (%s, %s, '%s', '%s', '%s');"
- kind-id collection-id
- (elisa-sqlite-escape node-name) hash
(elisa-sqlite-escape text)))
- (caar (sqlite-select
- elisa-db
- (format "select rowid from data where kind_id =
%s and collection_id = %s and path = '%s' and hash = '%s';"
- kind-id collection-id
- (elisa-sqlite-escape node-name)
hash))))))
- (when rowid
- (sqlite-execute
- elisa-db
- (format "insert into data_embeddings(rowid, embedding)
values (%s, %s);"
- rowid (elisa-vector-to-sqlite embedding)))
- (sqlite-execute
- elisa-db
- (format "insert into data_fts(rowid, data) values (%s,
'%s');"
- rowid (elisa-sqlite-escape text))))))
- chunks)
- (condition-case nil
- (funcall-interactively #'Info-forward-node)
- (error
- (setq continue nil)))))))))
+ (format "insert into data_embeddings(rowid,
embedding) values (%s, %s);"
+ rowid (elisa-vector-to-sqlite embedding)))
+ (sqlite-execute
+ elisa-db
+ (format "insert into data_fts(rowid, data) values
(%s, '%s');"
+ rowid (elisa-sqlite-escape text))))))
+ chunks)
+ (push node-name parsed-nodes)
+ (condition-case nil
+ (funcall-interactively #'Info-forward-node)
+ (error
+ (setq continue nil))))
+ (setq continue nil))))))))
(defun elisa--find-similar (text collections)
"Find similar to TEXT results in COLLECTIONS.
- [elpa] externals/elisa 1f5393d37e 22/98: Warn user instead of network call during package loading, (continued)
- [elpa] externals/elisa 1f5393d37e 22/98: Warn user instead of network call during package loading, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 80401a0b52 30/98: Search for gzipped builtin manuals, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa c59d491e18 35/98: Add prompt rewriting with ellama-chain, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 3874a7007c 36/98: Improve semantic split api, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa f2bf34b201 39/98: Improve sqlite escape function, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 45b854ba2d 46/98: Fix linter warning, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa d58e172912 48/98: Make web search async, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa f312d189f2 51/98: Fix one word lines in webpage quotes parsed asyncronously, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 0fc73b4b9a 69/98: Add instruction to elisa-chat, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 4710f87851 72/98: Refactor parsing info manuals, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 86f4ea0afb 74/98: Fix parsing info manuals with infinite loop,
ELPA Syncer <=
- [elpa] externals/elisa 9c7004e15c 77/98: Add functionality to parse web pages and add them to collections, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 4063c45908 78/98: Add custom variables documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 0c432dd1c8 81/98: Add commands to documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 29c17f86a7 83/98: Update package description, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa cb69d24b0d 88/98: Improve documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 8d0ad42134 90/98: Small documentation markup fixes, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 55200f8d8b 89/98: Fix readme markup for github rendering, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 21048a5033 91/98: Add melpa stable badge, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa fe93e52d2a 95/98: Review fixes, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 56bc22a8c3 96/98: Improve package documentation, ELPA Syncer, 2024/07/17