~abcdw/emacs-arei

Asynchronous Reliable Extensible IDE for Guile Scheme
Enhance arei-ui-show-result doc string.
Sort bencode dicts before send

clone

read-only
https://git.sr.ht/~abcdw/emacs-arei
read/write
git@git.sr.ht:~abcdw/emacs-arei

You can also use your local clone with git send-email.

1. Introduction

Asynchronous Reliable Extensible IDE for Guile Scheme. It's based on nREPL protocol, intended for use with guile-ares-rs, but can be used as an nREPL client with other servers as well.

At the moment Arei provides the following functionality out of the box:

  • Asynchronous interruptible module-aware evaluation.
  • Multiple return values and queueing of evaluation.
  • Evaluation in progress indicator.
  • Restartable continuations (both delimited and undelimited).
  • Proper stdout, stderr and stdin handling.
  • Exception and Backtrace pretty-printing.
  • Evaluation result tooltips.
  • Module-aware completion via CAPF (See Emacs Completion Explained).
  • Function signatures via ElDoc.
  • Go to definition via Xref. Go to module.
  • Session management and buffer-project association via Sesman.

Watch a talk from EmacsConf 2023 with more detailed explanation and demo of provided functionality.

2. Usage

  1. Install Arei (Guile Scheme IDE for Emacs).
  2. Install Guile Ares RS (an nREPL-compatible RPC server for guile).

The easiest way is to create an environment with guix package manager, the usual approaches for installing emacs and guile packages will work too.

Run nREPL-compatible RPC server (make sure that guile-ares-rs and all your project sources and dependencies are on load path):

guix shell guile-next guile-ares-rs -- \ # line is optional, sets needed load paths
guile -c '((@ (ares server) run-nrepl-server))'

Run Emacs with Arei package installed (available).

guix shell emacs emacs-arei -- \ # line is optional, it provides Emacs and Arei
emacs

Tip: If you have geiser intalled and want to prevent it from interfering into completion (CAPF), you can set (setq geiser-mode-auto-p nil) in init.el or some other place.

Make sure Arei package is loaded (require 'arei), open Scheme buffer and connect to RPC server M-x sesman-start RET (C-c C-s C-s), if your server is run on a different port, use universal argument (prefix): C-u M-x sesman-start RET.

Tip: There is no documentation functionality in Arei and Ares RS at the moment, but you can lookup documentation for most of the Guile and Scheme functions using C-h S.

Enjoy your meal!

3. Contributing

Send patches to rde-devel mailing list in format: [PATCH emacs-arei 0/3] SUBJECT-HERE.

Send feedback to rde-discuss.

4. What people say

Created: 2024-09-20 Fri 07:48

Validate