swank-clojure icon indicating copy to clipboard operation
swank-clojure copied to clipboard

[Severe] Windows: Swank freezes on any GUI-related user input.

Open rbennekop opened this issue 14 years ago • 2 comments

On my system (Windows XP SP3, 32 Bit, JRE 1.6.0_18, JDK 1.6.0_12) this can be reproduced as follows:

  1. Install Clojure Box 1.1.0 (January 5, 2010)

  2. Start the Slime REPL and enter this line: (. javax.swing.JOptionPane (showMessageDialog nil "snafu"))

    Result: The Slime REPL stalls and doesn't return a result.

  3. Visit the inferior-lisp REPL buffer and place your cursor at the command line. Press 'return'.

    Result: The Slime thread continues and displays the messagebox. The Slime REPL returns.

Other failing examples: (clojure.contrib.javadoc.browse/browse-url "http://clojure.org")

    ; Incanter
    (require '(incanter charts))

When the above lines are entered directly into the inferior-lisp buffer they get executed promptly and without errors.

There are two related threads (1, 2) on the mailing list.

I haven't noticed any such problems on my Mac and Linux boxes. On Windows, I keep some Elisp around to swiftly revive a stuck Slime session:

    (defun slime-poke-clojure ()
     (interactive)
     (slime-send-to-process "\n"))

    (defun slime-send-to-process (command)
     (interactive)
     (let ((slime (slime-inferior-process)))
       (if slime (comint-redirect-send-command-to-process
                  command (process-buffer slime) slime nil t)
         (message "No Slime process running."))))

rbennekop avatar Mar 06 '10 08:03 rbennekop

Same bug here, too.

While playing around with Labrepl I've just noticed that the problem disappears when the Clojure process is started traditionally from the Windows command prompt and subsequently connected to by slime-connect.

Ergo: Emacs' comint mechanism seems to be flawed.

kaysarraute avatar Mar 29 '10 18:03 kaysarraute

I had to spend some time on Windows lately and came up with the following hack: http://gist.github.com/360973 It re-routes the shell command created by swank-clojure-cmd to start Clojure/Swank inside a Windows terminal instead of an Emacs comint buffer. Requires Ruby.

nonsequitur avatar Apr 09 '10 07:04 nonsequitur