Developers working with Guile Scheme gain a promising new tool: Arei, an Asynchronous Reliable Extensible IDE. Designed primarily for integration with the guile-ares-rs nREPL server but compatible with any nREPL-compatible backend, Arei brings modern IDE-like functionality into the Emacs ecosystem for Scheme development.

Core Functionality & Developer Experience

Out-of-the-box, Arei provides essential features for productive Scheme coding:

  • Structured Editing: Navigate and manipulate s-expressions efficiently.
  • Evaluation: Evaluate code blocks or expressions directly within the editor context.
  • Completion: Intelligent code completion powered by the connected nREPL server.
  • Debugger Integration: Step through code execution and inspect state.
  • Value Inspection: Examine results and objects returned from evaluations.

A detailed demonstration and explanation of Arei's capabilities was presented at EmacsConf 2023. Developers are encouraged to watch the talk for a comprehensive overview.

Getting Started

Installation leverages the Guix package manager, though traditional Emacs/Guile package methods are also supported. Key setup steps involve:

  1. Launching the nREPL Server: Ensure guile-ares-rs and project dependencies are on the load path, then start the server:

    guile --listen
    

    (Note: Default port is used; adjust commands if using a custom port).

  2. Connecting from Emacs: With Arei installed and loaded (require 'arei), open a Scheme buffer and initiate the connection:

    • M-x sesman-start RET (or C-c C-s C-s)
    • Use C-u M-x sesman-start RET to specify a non-default server port.

Pro Tip: To prevent conflicts with geiser-mode for completion (CAPF), consider setting (setq geiser-mode-auto-p nil) in your Emacs configuration.

Current Limitations & Workarounds

While offering core REPL-powered development features, Arei currently lacks built-in documentation lookup. Developers can utilize Emacs' native help system (C-h S) for exploring documentation on many Guile and Scheme functions as a practical workaround.

Community & Contribution

Development is open and community-driven. Feedback is solicited on the rde-discuss channel, and patches should be submitted to the rde-devel mailing list in the format [PATCH emacs-arei 0/3] SUBJECT-HERE.

Arei represents a significant step forward for dedicated Guile Scheme tooling within Emacs, providing an asynchronous, REPL-driven workflow that aligns with modern development expectations. Its reliance on the nREPL protocol opens avenues for interoperability beyond its initial guile-ares-rs target.

Source: ~abcdw/emacs-arei (sourcehut)