diku-dk / futhark-mode

Emacs major mode for editing Futhark programs
ISC License
9 stars 1 forks source link

comint-simple-send: Wrong type argument: stringp, nil #3

Open Munksgaard opened 4 years ago

Munksgaard commented 4 years ago

I'm getting the error comint-simple-send: Wrong type argument: stringp, nil when trying to C-c C-l a Futhark file. This is with version 0.2 in emacs 25.2.2.

athas commented 4 years ago

Do you have a stack trace?

Munksgaard commented 4 years ago
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  comint-send-string(#<process futhark> ":load skifte-punkt.fut\n")
  comint-simple-send(#<process futhark> ":load skifte-punkt.fut")
  apply(comint-simple-send (#<process futhark> ":load skifte-punkt.fut"))
  futhark-comint-load-file("skifte-punkt.fut")
  eval((futhark-comint-load-file "skifte-punkt.fut") nil)
  eval-expression((futhark-comint-load-file "skifte-punkt.fut") nil)
  funcall-interactively(eval-expression (futhark-comint-load-file "skifte-punkt.fut") nil)
  call-interactively(eval-expression nil nil)
  command-execute(eval-expression)
athas commented 4 years ago

Version 0.2 doesn't mean much. Are you using the newest version? Have you saved the file? I really don't see what futhark-mode.el could be doing wrong. Is the *futhark* process already running?

Wait, Emacs 25.2.2? Why so old?

Munksgaard commented 4 years ago

Version 0.2 doesn't mean much. Are you using the newest version? Have you saved the file? I really don't see what futhark-mode.el could be doing wrong. Is the *futhark* process already running?

Apparently I'm running 20200123.931 from melpa, which I'm guessing is the latest version. 0.2 was just from the source file.

I'm thinking that my problems are due to some interaction problems between futhark-mode and interactive-haskell-mode: If I start a new Emacs process, open a .fut file and C-c C-l, there is no error, but if I first open a haskell file in the futhark project, run interactive-haskell-mode and C-c C-z, I get the error above. interactive-haskell-mode seems to create a buffer named *futhark*, same as the one created by futhark-mode. Perhaps that could be the cause of the problem?

Wait, Emacs 25.2.2? Why so old?

Blame your favorite combination of Ubuntu and Science IT.

athas commented 4 years ago

Yes, interactive-haskell-mode is the problem. futhark-mode expects that any *futhark* buffer belongs to it.

Munksgaard commented 4 years ago

I see that the futhark process and buffer names are hard-coded in futhark-comint.el. Perhaps we should be a bit more clever about this. I see that interactive-haskell-mode smartly creates a new buffer *futhark <0>* when it is run after running futhark-comint-load-file, although it does kill the old futhark process,