Cljbang is a Clojure-like language that compiles to Emacs Lisp and runs inside Emacs, allowing users to write Emacs Lisp code using Clojure syntax.

Stars

94

7-day growth

No data

Forks

1

Open issues

0

License

MIT

Last updated

2026-07-22

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

Enables Clojure developers to leverage Emacs's extensibility with familiar syntax while maintaining near-native performance and seamless interop with Emacs Lisp.

Who it is for

  • Emacs users who prefer Clojure syntax
  • Developers writing Emacs packages or configurations
  • Clojurists wanting to use Emacs as their editor
  • Elisp developers seeking a more modern syntax

Use cases

  • Write Emacs configuration files in Clojure-like syntax
  • Develop Emacs packages with Clojure-style functions and macros
  • Quickly prototype Emacs Lisp code using Clojure's threading macros and destructuring
  • Interop between Clojure and Emacs Lisp for mixed-language projects

Strengths

  • Fast compilation and caching (warm cache load ~1.9ms vs 1.0ms for plain elisp)
  • Bidirectional interop: functions defined in cljbang are callable from Elisp and vice versa
  • Supports many Clojure core functions, macros with syntax-quote, destructuring, and namespace management
  • Includes integration with clj-kondo for linting and Emacs mode for inline evaluation

Considerations

  • Not a full Clojure implementation: lacks protocols, multimethods, and some reader forms
  • Collection operations (map, filter, assoc) are slower due to wrapper overhead and copy-on-write
  • Requires understanding Emacs Lisp semantics (e.g., division, truthiness) due to direct interop

README quick start

Installation

Description

A Clojure-like language that runs as Emacs Lisp.