rmoo.el

Table of Contents

1. About

https://codeberg.org/ggxx/rmoo

  • This fork was created to make rmoo.el compatible with the latest Emacs releases circa 2025.
    • Just one function name had to be changed to fix things.
  • This fork also declares its dependency on xterm-color in the standard way.
  • When installed via use-package, all dependencies should be automatically downloaded.

2. Installation

2.1. Emacs 30+

(use-package rmoo
  :vc (:url "https://codeberg.org/ggxx/rmoo" :branch "master")
  :demand t
  :bind (("C-c C-r" . rmoo))
  :init
  ;; rmoo uses plural hooks, so I can't use use-package's :hook which assumes singular.
  (add-hook 'rmoo-interactive-mode-hooks #'goto-address-mode)
  (add-hook 'rmoo-interactive-mode-hooks (lambda () (electric-pair-mode -1)))
  :config
  (require 'rmoo-autoload)
  (require 'moocode-mode)
  (require 'coldc-mode)
  (add-to-list 'auto-mode-alist '("\\.moo$" . moocode-mode)))

I'm also a fan of adding olivetti-mode into the mix.

(use-package olivetti
  :ensure t
  :config
  (setq-default olivetti-body-width 0.75))

;; This is optional, but I think it looks nice.
(add-hook 'rmoo-interactive-mode-hooks #'olivetti-mode)

2.2. Older Emacs

  1. git clone https://codeberg.org/ggxx/rmoo.git ~/.emacs.d/rmoo
  2. git clone https://github.com/atomontage/xterm-color.git ~/.emacs.d/xterm-color
  3. Add the following to your configuration file:
(add-to-list 'load-path "~/.emacs.d/xterm-color")
(add-to-list 'load-path "~/.emacs.d/rmoo")
(require 'rmoo-autoload)
(require 'moocode-mode)
(require 'coldc-mode)
(global-set-key (kbd "C-c C-r") 'rmoo)
(add-to-list 'auto-mode-alist '("\\.moo$" . moocode-mode))
(add-hook
 'rmoo-interactive-mode-hooks
 (lambda ()
   (linum-mode -1)                  ;; ... no line numbers
   (goto-address-mode t)))          ;; ... clickable links

3. Fun

3.1. Desktop Notifications

If you would like to receive desktop notifications when people message you on LamdaMOO, and you have Emacs 30+, this Elisp is for you.

  1. Download rmoo-notifications.v2.el, and put it in the same directory as your init.el.
  2. Load it into Emacs.
  3. Set my/rmoo-users to your username.
  4. Add #'my/rmoo-notify to 'rmoo-handle-text-hooks.

Below is an example of something you could add to the :config section of the use-package for rmoo.

(load (locate-user-emacs-file "rmoo-notifications.v2.el")) ; Put this in the same directory as your init.el.
(setq my/rmoo-users '("ggxx"))                             ; Replace "ggxx" with your own username.
(add-hook 'rmoo-handle-text-hooks #'my/rmoo-notify)

3.2. Emacspeak

If you have Emacspeak installed, rmoo.el should automatically detect it and enable support. I have not tested this myself, but it looks promising.

(defun rmoo-setup ()
  (mapcar 'load-library rmoo-libraries)
  (if (string= window-system "x")
      (mapcar 'load-library rmoo-x-libraries))
  (if (featurep 'emacspeak)
      (load-library "emacspeak-rmoo"))
  (setq rmoo-setup-done t))

4. Lineage

Created: 2025-09-07 Sun 17:30

Validate