I am developing a game with the love2d lua API and with emacs as IDE.

In order to easily test the game from emacs, I wrote following functions :

    (defgroup love nil
  "The customization group for LÖVE."
  :prefix "love-"
  :group 'lua)

(defcustom love-exe (or (executable-find "love")
  "Path to LÖVE executable for playtesting."
  :type 'string
  :group 'love)

(defun love/start ()
  "Run LÖVE externally for the sake of playtesting."
  (if (buffer-live-p "*love*")
      (kill-buffer "*love*"))
  (start-process "löve" "*love*" love-exe (file-name-directory (buffer-file-name))))

(defun love/kill ()
  "Kill LÖVE process."
  (if (get-process "löve")
      (kill-process "löve")
    (message "No running löve process")))

The above code is able to launch the love2d GUI however, I cannot catch the console message like those written to stdout from within the game. They do not show up on the process buffer, although I disabled buffering on stdout.

I also checked that issuing the same command from a mingw64 shell does no more display the messages sent to stdout.

I was advised there to use another version of the executable, which is lovec.exe whose only difference is that the GUI process is attached to a console. When I run this executable within a mingw64 shell, I can indeed see the console messages.

However, if I replace in the above lisp functions love.exe by lovec.exe, I can also see the console messages in the process buffer but, the GUI does no more show up although that the process is still alive.

Perhaps I miss something about starting a process attached to a console from emacs. How would you do that ?



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.