2
0
Fork
You've already forked rmoo
0
A major mode for interacting with MOOs. http://ggxx.sdf1.org/rmoo/
  • Emacs Lisp 85.6%
  • Shell 13%
  • Makefile 1.4%
Find a file
2025年09月09日 02:01:37 -07:00
coldc-mode.el Add missing key mappings to ColdC mode. 2022年11月17日 02:44:18 -06:00
configure.in Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
cow.wav Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
cow5.au Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
CREDITS.txt Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
elisp-comp Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
emacspeak-rmoo.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
install-sh Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
LICENSE Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
Makefile.am Replaced rmoo-code-mode' with moocode-mode'. 2012年08月11日 15:37:06 -04:00
missing Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
mkinstalldirs Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
moocode-mode.el Update moocode-mode for ToastStunt types and builtins. 2022年12月17日 05:39:24 -06:00
prefix.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
README.md Update docs 2025年09月09日 02:01:37 -07:00
rmoo-autoload.el Initial commit. Original code. 2010年09月12日 13:04:36 -04:00
rmoo-display-jtext.el Use set-face-underline instead of set-face-underline-p 2025年07月18日 10:21:48 -07:00
rmoo-extras.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-list.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-local-edit.el Fix a ColdC check. 2022年12月16日 12:42:08 -06:00
rmoo-mail.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-mcp.el Add custom settings to the 'rmoo' group so they show up in M-x customize-group. Also make the local echo color a customizable option. 2018年11月14日 20:08:44 -06:00
rmoo-menus.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-objects.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-rmail.el Replace the README with something more informative. Move all original notes and version control changes into CREDITS.txt 2018年11月13日 16:15:19 -06:00
rmoo-scratch.el Don't insert a period when there's no scratch buffer command. 2022年12月17日 02:20:52 -06:00
rmoo.el Try not specifying a version for xterm-color 2025年08月23日 03:20:20 -07:00

RMOO 1.3

The following documents how to get RMOO up and running for the complete beginner. If you're unfamiliar with Emacs, the conventions used may be a bit odd. Here's a quick rundown of how commands are presented:

When prefixed with a C-, that means hold down CTRL and the letter following C-. e.g. C-w means hold down CTRL while pressing w.

When prefixed with an M-, that means your meta key. Typically this is your Windows or Option key. e.g. M-x means to hold down meta while pressing x. (This will often be followed by a full string. M-x allows you to run commands by typing them in.)

Installation

Emacs 30+

  1. Add a use-package expression like the following to your init.el.
(use-package rmoo
 :vc (:url "https://github.com/g-gundam/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)))

Emacs Before Version 30

  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

World Management

Adding World

To add a world, type: M-x rmoo-worlds-add-new-moo (or press C-c C-w C-a)

You will then be prompted for the following:

  • World Name - The name of the MOO you're connecting to. e.g. Miriani
  • Site - The address of the MOO you're connecting to. e.g. toastsoft.net
  • Port - The port of the MOO you're connecting to. e.g. 1443
  • TLS/SSL - If the MOO you're connecting to supports secure connections over TLS / SSL, say yes here.
  • Log File Path - The path of the file where all of the MOO's output will be saved.

Once the world is added, you'll probably want to save it for future connections. To save your world file, type: M-x rmoo-worlds-save-worlds-to-file (or C-c C-w C-s)

Connecting and Disconnecting

To connect to a world, type M-x rmoo (or C-c C-r)

To disconnect from a world, type M-x rmoo-quit (or C-c C-q)

Editing Code

First, enable local editing inside your MOO: @edit-option +local

Once you @edit a verb, the screen will split in half with your verb code on one side and the MOO output on the other. For basic commands to use to manipulate windows, see the Window Management section below. Here are some commands that will come in handy in the editor:

Command Effect
C-c s Send your code to the MOO.
C-c c Send your code to the MOO and close the editor pane.
C-j Add a newline and indent.
C-c C-c Comment out the selection.
C-c C-u Uncomment the selection.
C-c ] Kill editor buffer and close the frame.

Commands and Keybindings

Command Keybinding Effect
rmoo C-c C-r Open the world list to select a world to connect to.
rmoo-quit C-c C-q Disconnect from the current world.
rmoo-scratch C-c C-s Open a scratch buffer. Anything you enter in this buffer will get sent directly to the MOO. This is useful for pasting in long scripts or using the @paste command. Like the code editor, you can send with C-c s
rmoo-@paste-kill C-c C-p @paste whatever is in the 'kill ring'.
rmoo-set-linelength C-c C-l Automatically set @linelength based on the size of your Emacs window.
rmoo-clear-input M-backspace Delete the contents of the command line and, if scrolled up, jump back to the command line.
rmoo-jump-to-last-input M-space Jump to the spot in the buffer where you last sent a command.
rmoo-up-command Up Arrow Recall command history. Can also be summoned with Esc-p
rmoo-down-command Down Arrow Same as up arrow, only opposite direction. Can also be summoned with Esc-n
rmoo-extras-get-verb C-c C-v Prompts for a verb name to edit in the local editor.
rmoo-extras-get-prop C-c C-p Prompts for a property name to edit in the local editor.

Miscellaneous Settings

These are some settings you can put in your Emacs init file to enhance your rmoo experience. RMOO-specific settings can be configured from within Emacs by typing M-x customize-group, rmoo.

Setting Effect
(setq write-region-inhibit-fsync t) Disable fsync, which vastly speeds up writing to log files at the expense of safety in the event of a crash.
(evil-set-initial-state 'rmoo-interactive-mode 'insert) Start MOOcode mode in insert mode when using evil.
(evil-set-initial-state 'rmoo-scratch-mode 'insert) Start MOO scratch buffers in insert mode.
(setq rmoo-connect-function 'socks-open-network-stream) Use a SOCKS proxy for connecting to MOOs.
(setq rmoo-mcp-record-unknown t) Create a buffer to record unrecognizable MCP data instead of just ignoring it.
(setq rmoo-input-history-size 50) Set the number of lines of input history that RMOO will remember.
(setq rmoo-worlds-max-worlds 100) The maximum number of MOO worlds that can exist.
(setq rmoo-send-always-goto-end t) When true, RMOO will always jump to the end of the buffer after sending a line.
(setq rmoo-send-require-last-line t) When true, RMOO will only send lines on the last line of the buffer.
(setq rmoo-clear-local f) When false, RMOO will not clear any existing command history when reconnecting from an existing buffer.
(setq rmoo-convert-utf-to-ascii t) When true, common UTF characters will be converted to their ASCII equivalents.

Window Management

Command Effect
C-x o Switches between open panes.
C-x 0 Close the current pane.
C-x b Display a list of buffers to open in current pane. This is useful when editing multiple verbs.
C-x 3 Split the screen vertically. Typically followed by C-x b to open a buffer.
C-x 2 Split the screen horizontally.
C-x k Select a buffer to close entirely.

Changelog

Version 1.3 (In Progress)

  • Add UTF-8 support.
  • Add M-space to jump to your last command in the buffer.
  • Add an option to retain command history across connections in the same buffer.
  • Fix an issue where reconnecting from an existing buffer would duplicate the contents of that buffer, eventually leading to a crash after several reconnections.
  • Add minimal support for ColdC worlds. (At the moment, this only affects which mode LambdaMOO-style local editing will invoke.)
  • Update moocode-mode to add new types and built-in functions from ToastStunt.
  • Convert common UTF characters to ASCII when sending commands.

Version 1.2 (November 13, 2018)

  • Add 256-color ANSI support.
  • Add support for SSL/TLS connections.
  • Prevent backspace from deleting the prompt.
  • Add logging capabilities.
  • Add a scratch buffer, allowing you to execute arbitrary commands from a separate buffer. Useful for pasting @dump output, @paste, etc.
  • Add a new keybinding to automatically set @linelength based on window size with C-c C-l
  • Added more documentation.
  • Replaced MCP 1.0 support with MCP 2.1 support. Implemented packages include:
    • mcp-negotiate
    • dns-org-mud-moo-simpleedit
    • dns-com-awns-status
    • dns-com-vmoo-client
  • Made settings visible by adding an 'rmoo' group to M-x customize-group.

Earlier Versions

  • See CREDITS.txt for original changelogs and version control notes.

Authors

Ron Tapia <tapia@nmia.com>, Matthew Campbell <mattcampbell@pobox.com>, Todd Sundsted, lisdude <lisdude@lisdude.com>