@@ -2,6 +2,7 @@ import { default_extensions, complete_keymap } from '@nextjournal/clojure-mode';
2
2
import { extension as eval_ext , cursor_node_string , top_level_string } from '@nextjournal/clojure-mode/extensions/eval-region' ;
3
3
import { EditorView , drawSelection , keymap } from '@codemirror/view' ;
4
4
import { EditorState } from '@codemirror/state' ;
5
+ import { history , historyKeymap } from '@codemirror/commands' ;
5
6
import { syntaxHighlighting , defaultHighlightStyle , foldGutter } from '@codemirror/language' ;
6
7
import { compileStringEx } from 'squint-cljs' ;
7
8
@@ -89,10 +90,11 @@ let squintExtension = ( opts ) => {
89
90
} ] ) }
90
91
91
92
92
- let extensions = [ theme , foldGutter ( ) ,
93
+ let extensions = [ history ( ) , theme , foldGutter ( ) ,
93
94
syntaxHighlighting ( defaultHighlightStyle ) ,
94
95
drawSelection ( ) ,
95
96
keymap . of ( complete_keymap ) ,
97
+ keymap . of ( historyKeymap ) ,
96
98
...default_extensions ,
97
99
eval_ext ( { modifier : "Meta" } ) ,
98
100
squintExtension ( { modifier : "Meta" } )
@@ -120,6 +122,8 @@ let doc = `(comment
120
122
(+ 1 2 3))
121
123
` ;
122
124
125
+ // doc = `(do #_#_1 (+ 1 2 3) )`
126
+
123
127
evalCode ( doc ) ;
124
128
125
129
let state = EditorState . create ( { doc : doc ,
@@ -129,6 +133,7 @@ let editorElt = document.querySelector('#editor');
129
133
let editor = new EditorView ( { state : state ,
130
134
parent : editorElt ,
131
135
extensions : extensions } )
136
+ globalThis . editor = editor ;
132
137
133
138
let keys = { "ArrowUp" : "↑" ,
134
139
"ArrowDown" : "↓" ,
0 commit comments