gcv / julia-snail

An Emacs development environment for Julia
GNU General Public License v3.0
231 stars 21 forks source link

Hangs with newer versions of Eat #130

Closed berquist closed 8 months ago

berquist commented 9 months ago

Something in https://codeberg.org/akib/emacs-eat/commit/baf0bb7e5f28b10eb94cf1e0634c295002ac92e9 causes Snail to hang on initialization (no happy hacking message) even though julia> appears after starting the server. Sending C-g is required, but then the connection is broken.

berquist commented 9 months ago

Also, the public API, specifically eat-term-send-string, isn't working, which may or may not be related. The above commit is before the API changes, and I think the only hard requirement is the variable rename from eat--terminal to eat-terminal.

diff --git a/julia-snail.el b/julia-snail.el
index 73dbb76..45014ad 100644
--- a/julia-snail.el
+++ b/julia-snail.el
@@ -66,10 +66,9 @@

 (when (locate-library "eat")
   (require 'eat))
-(declare-function eat--send-string "eat.el")
+(declare-function eat-term-send-string "eat.el")
 (declare-function eat-self-input "eat.el")
-(declare-function eat-term-parameter "eat.el")
-(defvar eat--terminal)
+(defvar eat-terminal)

 ^L;;; --- customizations
@@ -876,8 +875,7 @@ returns \"/home/username/file.jl\"."
   (cond
    ;; Eat
    ((eq 'eat-mode major-mode)
-    ;; TODO: This needs to use a public API (https://codeberg.org/akib/emacs-eat/issues/73).
-    (eat--send-string (eat-term-parameter eat--terminal 'eat--process) str))
+    (eat-term-send-string eat-terminal str))
    ;; vterm
    ((eq 'vterm-mode major-mode)
     (vterm-send-string str))
@@ -889,7 +887,7 @@ returns \"/home/username/file.jl\"."
   (cond
    ;; Eat
    ((eq 'eat-mode major-mode)
-    (eat--send-string (eat-term-parameter eat--terminal 'eat--process) "\n"))
+    (eat-term-send-string eat-terminal "\n"))
    ;; vterm
    ((eq 'vterm-mode major-mode)
     (vterm-send-return))
gcv commented 8 months ago

Thanks for your changes, I'll incorporate them.

After some debugging, I opened this ticket with Eat: https://codeberg.org/akib/emacs-eat/issues/100

I might have resort to making some low-level Eat calls to get Snail back in working order in the meanwhile.

gcv commented 8 months ago

I pushed a change that uses low-level Eat calls to restore old behavior (249dd96cd112f4a2f9a15555aeed5a315cee8cb5). It should be in Melpa in the next 2 hours. Please take a look and let me know if it works for you.

berquist commented 8 months ago

Yes, this works now, thank you. I had tried the half-solution with eat-terminal but still using the private API and it was still hanging. I was missing (eat--process-input-queue (current-buffer)).

gcv commented 8 months ago

Heads up: there have been some upstream changes to Eat as a result of my ticket. I just pushed a change to Snail that should maintain compatibility with both the released version of Eat and the new changes. Please reopen this ticket if you notice anything breaking as you update packages in the next couple of weeks.