From 82eb4bfd0d6b7277bd76f4cfc026af97e68820b6 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Sun, 26 Mar 2023 10:12:06 +0700 Subject: [PATCH] Setup Khoj server on opening khoj from with Emacs - Create helper methods to check, stop, restart, setup khoj server - (Ask to) setup khoj server on calling khoj main entrypoint function --- src/interface/emacs/khoj.el | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/interface/emacs/khoj.el b/src/interface/emacs/khoj.el index 6ca5f853..fca6be40 100644 --- a/src/interface/emacs/khoj.el +++ b/src/interface/emacs/khoj.el @@ -65,6 +65,11 @@ :group 'khoj :type 'string) +(defcustom is-khoj-server-local t + "Is Khoj server on local machine?." + :group 'khoj + :type 'boolean) + (defcustom khoj-image-width 156 "Width of rendered images returned by Khoj." :group 'khoj @@ -254,6 +259,39 @@ for example), set this to the full interpreter path." (message "khoj.el: Failed to start Khoj server. Please start it manually by running `khoj' on terminal.\n%s" (buffer-string)) (message "khoj.el: Khoj server running at: %s" khoj-server-url)))) +(defun khoj--server-running? () + "Check if the khoj server is running." + (or + ;; check for when server process handled from within emacs + (and khoj--server-process + (not (null (process-live-p khoj--server-process)))) + ;; else general check via ping to khoj-server-url + (ignore-errors + (not (null (khoj--get-enabled-content-types) t))))) + +(defun khoj--server-stop () + "Stop the khoj server." + (when (khoj--server-running?) + (message "khoj.el: Stopping server...") + (kill-process khoj--server-process) + (message "khoj.el: Stopped server."))) + +(defun khoj--server-restart () + "Restart the khoj server." + (khoj--server-stop) + (khoj--server-start)) + +(defun khoj--server-setup () + "Install and start the khoj server, if required." + ;; Install khoj server, if not available but expected on local machine + (when (and is-khoj-server-local + (or (not (executable-find khoj-server-command)) + (not (khoj--server-get-version)))) + (khoj--server-install-upgrade)) + ;; Start khoj server if not running at expected URL + (when (not (khoj--server-running?)) + (khoj--server-start))) + ;; ----------------------------------------------- ;; Extract and Render Entries of each Content Type @@ -781,6 +819,10 @@ Paragraph only starts at first text after blank line." (defun khoj () "Natural, Incremental Search for your personal notes, transactions and images." (interactive) + ;; Setup khoj server if not running before executing user commands + (when (and (not (khoj--server-running?)) + (y-or-n-p "Could not connect to Khoj server. Should I install and start it?")) + (khoj--server-setup)) (khoj-menu)) (provide 'khoj)