Skip to content

Commit 951e1bc

Browse files
author
Sven Heyll
committed
Fix hoogle lookup from local servers
Use a better way to check if the hoogle process is alive: Instead of checking if the corresponding buffer-name is an alive process, store the process handle in a global variable and check that. The problem is that when using 'hoogle-lookup-from-local' without any hoogle server running, a new local hoogle server is started, but the code fails to recognize that server is running and instead repeatedly reports that the server is not running offering to start it.
1 parent 083c113 commit 951e1bc

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

haskell-mode.el

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -859,27 +859,33 @@ is asked to show extra info for the items matching QUERY.."
859859
(defvar hoogle-server-process-name "emacs-local-hoogle")
860860
(defvar hoogle-server-buffer-name (format "*%s*" hoogle-server-process-name))
861861
(defvar hoogle-port-number 49513 "Port number.")
862+
(defvar hoogle-server-process nil "The process handle of the local hoogle server.")
862863

863864
(defun hoogle-start-server ()
864865
"Start hoogle local server."
865866
(interactive)
866-
(unless (hoogle-server-live-p)
867-
(start-process
868-
hoogle-server-process-name
869-
(get-buffer-create hoogle-server-buffer-name) "/bin/sh" "-c"
870-
(format "hoogle server -p %i" hoogle-port-number))))
867+
(if (executable-find "hoogle")
868+
(unless (hoogle-server-live-p)
869+
(set 'hoogle-server-process
870+
(start-process
871+
hoogle-server-process-name
872+
(get-buffer-create hoogle-server-buffer-name)
873+
"/bin/sh" "-c"
874+
(format "hoogle server -p %i" hoogle-port-number))))
875+
(error "hoogle executable not found")))
871876

872877
(defun hoogle-server-live-p ()
873-
"Whether hoogle server is live or not."
878+
"Whether the hoogle server process is live."
874879
(condition-case _err
875-
(process-live-p (get-buffer-create hoogle-server-buffer-name))
880+
(process-live-p hoogle-server-process)
876881
(error nil)))
877882

878883
(defun hoogle-kill-server ()
879-
"Kill hoogle server if it is live."
884+
"Kill the hoogle server if it is live."
880885
(interactive)
881886
(when (hoogle-server-live-p)
882-
(kill-process (get-buffer-create hoogle-server-buffer-name))))
887+
(kill-process (get-buffer-create hoogle-server-buffer-name))
888+
(set 'hoogle-server-process nil)))
883889

884890
;;;###autoload
885891
(defun hoogle-lookup-from-local ()
@@ -890,10 +896,8 @@ is asked to show extra info for the items matching QUERY.."
890896
hoogle-port-number
891897
(read-string "hoogle: " (haskell-ident-at-point))))
892898
(when (y-or-n-p
893-
"hoogle server not found, start hoogle server?")
894-
(if (executable-find "hoogle")
895-
(hoogle-start-server)
896-
(error "hoogle is not installed")))))
899+
"hoogle server not running, start hoogle server?")
900+
(hoogle-start-server))))
897901

898902
;;;###autoload
899903
(defcustom haskell-hayoo-url "http://hayoo.fh-wedel.de/?query=%s"

0 commit comments

Comments
 (0)