Skip to content

Easily connect CIDER to nREPL servers running in Docker containers

License

Notifications You must be signed in to change notification settings

eploko/docker-nrepl.el

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

docker-nrepl

A simple Emacs package to connect to nREPL servers running inside Docker containers.

Features

  • Interactively select Docker containers from the running containers list
  • Remembers the last container selected for quick reconnection
  • Associates specific containers with projects
  • Integrates with vertico and marginalia if available
  • Persists container selections between Emacs sessions

Installation

Manual installation

  1. Save docker-nrepl.el to your Emacs load path
  2. Add to your init file:
(require 'docker-nrepl)
(docker-nrepl-setup)

With use-package

(use-package docker-nrepl
  :straight (:host github :repo "eploko/docker-nrepl.el")
  ;; or... 
  ;; :load-path "/path/to/docker-nrepl.el"
  :after cider
  :config
  (docker-nrepl-setup))

With straight.el and use-package

(use-package docker-nrepl
  :straight (:host github :repo "eploko/docker-nrepl.el")
  :after cider
  :config
  (docker-nrepl-setup))

Usage

Basic usage

  1. Start your nREPL server in a Docker container (listening on port 7888 internally)
  2. Press C-c M-c to connect (the same keybinding as cider-connect)
    • First time: You'll be prompted to select a container
    • Subsequent times: Automatically connects to the last container used
  3. To force selection of a different container, use C-u C-c M-c

Project association

You can associate specific Docker containers with projects:

  1. M-x docker-nrepl-set-project-container to associate the current project with a container
  2. Use C-u p C-c (via project prefix map) to connect to the project's container

Customization

The package can be customized through the following variables:

;; Default internal port for nREPL (default: 7888)
(setq docker-nrepl-internal-port 7888)

;; File to store docker-nrepl data between Emacs sessions
(setq docker-nrepl-data-file (expand-file-name "docker-nrepl-data.el" user-emacs-directory))

;; Whether to bind the default keys
(setq docker-nrepl-bind-keys t)

Customize these before calling docker-nrepl-setup.

Integration with other packages

Vertico

Works out of the box with Vertico - gives you a nice completion interface for container selection.

Marginalia

If Marginalia is loaded, container annotations will be shown in the completion buffer, including:

  • Container ID
  • Image name
  • Container status

Commands

Command Description
docker-nrepl-connect Connect to nREPL in a Docker container
docker-nrepl-select-container Select a Docker container interactively
docker-nrepl-set-project-container Associate current project with a container
docker-nrepl-connect-project Connect to the container for current project
docker-nrepl-save-data Save container and project associations
docker-nrepl-load-data Load container and project associations

Requirements

  • Emacs 27.1 or later
  • CIDER 1.0 or later
  • Docker command-line tool available in your PATH

About

Easily connect CIDER to nREPL servers running in Docker containers

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors