Clojure/Script mode for CodeMirror 6

Enable a decent Clojure/Script editor experience in the browser.
Built for and by Nextjournal.

๐Ÿคนโ€โ™€๏ธ Try it for yourself

Try evaluating any of these forms with Alt + โŽ !

In-browser eval is powered by Sci.

  • โšก๏ธ
    Lightning-fast with lezer incremental parsing
    Copy clojure/core.clj into ๐Ÿ‘ˆ to try!
  • ๐Ÿฅค
    Slurping & ๐Ÿคฎ Barfing
    forward Ctrl + โ† / โ†’ or Mod + โ‡ง + j / k
    backward Ctrl + Alt + โ† / โ†’
  • ๐Ÿ’—
    Semantic Selections
    Expand / Contract Alt + โ†‘ / โ†“ or Mod + 1 / 2
  • ๐Ÿง™
    Evaluation
    At Cursor Mod + โŽ
    Top-level form Mod + โ‡ง + โŽ
    Cell Alt + โŽ
  • ๐Ÿงน
    Autoformatting

    following Tonskyโ€™s Better Clojure Formatting

๐ŸŽน Keybindings

๐Ÿ“ฆ Use it in your clojure project

{:deps {nextjournal/clojure-mode {:git/url "https://github.com/nextjournal/clojure-mode"
                                  :sha "SHA"}}}
        

๐Ÿ“ฆ Use it from NPM

import { default_extensions, complete_keymap } from '@nextjournal/clojure-mode'
import { EditorView, drawSelection, keymap } from  '@codemirror/view'
import { EditorState } from  '@codemirror/state'

let extensions = [keymap.of(complete_keymap),
                  ...default_extensions]

let state = EditorState.create({doc: "... some clojure code...",
                                extensions: extensions })

let editorElt = document.querySelector('#editor')
let editor = new EditorView({state: state,
                             parent: editorElt,
                             extensions: extensions})

        

๐Ÿ› Embed it in Markdown

ยฉ 2020 Nextjournal GmbH