See GoLangMode if you’re looking for the programming language Go.


Once you install GNU Go, you will have access to gnugo.el. Use ‘M-x gnugo’ to play.

If you play on Windows with old versions of gnugo.el, you might be seeing lots of ^M. There is probably a solution involving coding systems, but at the moment this quick and dirty fix using search and replace works for me:

    (autoload 'gnugo "gnugo" "Play Go" t)
    (defadvice gnugo-insertion-filter (before gnugo-coding-system-fix activate)
      (setq string (replace-regexp-in-string "\r" "" string)))

The extra ^M is indeed due to the coding system being hardcoded in gnugo.el as latin-1-unix. Better to use the default input coding system. Whoever reading this with GNU Go write privs should delete the “set-process-coding-system” line (222) in gnugo.el. (Sorry about this over-specification bug. --ttn)

Standalone gnugo.el is developed apart from the GNU Go project, and is now part of GNU ELPA. The homepage is now:

EmacsLisp programmers are invited to check out the Commentary and send patches in the meantime. --ttn

There is a mirror of GnuGo2.2.9 (which appears to be the latest one) on the Wayback Machine, this seems to work with GNU Go 3.7.9 and Emacs (2007-01-30). Also available from here: Lisp:gnugo.el.


Here is a simple major mode to interact with MoGo: Lisp:mogo.el. It has been tested with GNU Emacs 22 and 21.

MoGo a new very strong Go program also using GTP, the protocol also used by GNU go. So, theoretically it shouldn’t be too hard to modiy Lisp:gnugo.el so it can also use MoGo as a backend, but I haven’t really looked into this.



A nice place to find info is the Go Wiki: