From 8eae7c898c67220c3054cc82b991cd63a4f974be Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Wed, 28 Jun 2023 12:52:28 -0700 Subject: [PATCH] Put each result under org heading when query for "all" content type in khoj.el - Add "all" as default content type when no content type retrieved from server --- src/interface/emacs/khoj.el | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/interface/emacs/khoj.el b/src/interface/emacs/khoj.el index f1f08261..57f177cd 100644 --- a/src/interface/emacs/khoj.el +++ b/src/interface/emacs/khoj.el @@ -598,9 +598,19 @@ CONFIG is json obtained from Khoj config API." "Convert JSON-RESPONSE, QUERY from API to text entries." (thread-last json-response ;; extract and render entries from API response - (mapcar (lambda (args) (format "%s\n\n" (cdr (assoc 'entry args))))) + (mapcar (lambda (json-response-item) + (thread-last + ;; Extract pdf entry from each item in json response + (cdr (assoc 'entry json-response-item)) + (format "%s\n\n") + ;; Standardize results to 2nd level heading for consistent rendering + (replace-regexp-in-string "^\*+" "") + ;; Standardize results to 2nd level heading for consistent rendering + (replace-regexp-in-string "^\#+" "") + ;; Format entries as org entry string + (format "** %s")))) ;; Set query as heading in rendered results buffer - (format "# Query: %s\n\n%s\n" query) + (format "* %s\n%s\n" query) ;; remove leading (, ) or SPC from extracted entries string (replace-regexp-in-string "^[\(\) ]" "") ;; remove trailing (, ) or SPC from extracted entries string @@ -651,9 +661,7 @@ CONFIG is json obtained from Khoj config API." Use QUERY, CONTENT-TYPE and (optional) RERANK as query params" (let ((rerank (or rerank "false")) (encoded-query (url-hexify-string query))) - (if content-type - (format "%s/api/search?q=%s&r=%s&n=%s&client=emacs" khoj-server-url encoded-query rerank khoj-results-count) - (format "%s/api/search?q=%s&t=%s&r=%s&n=%s&client=emacs&t=%s" khoj-server-url content-type encoded-query rerank khoj-results-count)))) + (format "%s/api/search?q=%s&t=%s&r=%s&n=%s&client=emacs" khoj-server-url encoded-query content-type rerank khoj-results-count))) (defun khoj--query-search-api-and-render-results (query-url content-type query buffer-name) "Query Khoj Search with QUERY-URL. @@ -676,7 +684,8 @@ Render results in BUFFER-NAME using QUERY, CONTENT-TYPE." ((equal content-type "ledger") (khoj--extract-entries-as-ledger json-response query)) ((equal content-type "image") (khoj--extract-entries-as-images json-response query)) (t (khoj--extract-entries json-response query)))) - (cond ((or (equal content-type "pdf") + (cond ((or (equal content-type "all") + (equal content-type "pdf") (equal content-type "org")) (progn (visual-line-mode) (org-mode) @@ -1005,7 +1014,7 @@ Paragraph only starts at first text after blank line." ;; set content type to: last used > based on current buffer > default type :init-value (lambda (obj) (oset obj value (format "--content-type=%s" (or khoj--content-type (khoj--buffer-name-to-content-type (buffer-name)))))) ;; dynamically set choices to content types enabled on khoj backend - :choices (or (ignore-errors (mapcar #'symbol-name (khoj--get-enabled-content-types))) '("org" "markdown" "pdf" "ledger" "music" "image"))) + :choices (or (ignore-errors (mapcar #'symbol-name (khoj--get-enabled-content-types))) '("all" "org" "markdown" "pdf" "ledger" "music" "image"))) (transient-define-suffix khoj--search-command (&optional args) (interactive (list (transient-args transient-current-command)))