Skip to content

Commit 22616ac

Browse files
committed
Give edn-mode its own keymap with data-appropriate bindings
EDN files are pure data, so code-oriented refactoring commands (threading, let manipulation, arity, ns operations, if/when cycling) don't apply. The new edn-mode-map inherits from prog-mode-map directly and only exposes: alignment (C-c C-a), keyword-string toggle (C-:), collection conversion, and #_ toggle.
1 parent c815d35 commit 22616ac

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

clojure-mode.el

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3458,6 +3458,35 @@ With universal argument \\[universal-argument], act on the \"top-level\" form."
34583458
34593459
\\{joker-mode-map}")
34603460

3461+
(defvar edn-mode-map
3462+
(let ((map (make-sparse-keymap))
3463+
(prefix (make-sparse-keymap)))
3464+
(set-keymap-parent map prog-mode-map)
3465+
;; Keep data-appropriate bindings from clojure-mode-map.
3466+
(define-key map (kbd "C-:") #'clojure-toggle-keyword-string)
3467+
(define-key map (kbd "C-c C-a") #'clojure-align)
3468+
;; Only expose data-appropriate refactoring commands:
3469+
;; collection conversion and #_ toggle.
3470+
(define-key prefix (kbd "C-(") #'clojure-convert-collection-to-list)
3471+
(define-key prefix (kbd "(") #'clojure-convert-collection-to-list)
3472+
(define-key prefix (kbd "C-'") #'clojure-convert-collection-to-quoted-list)
3473+
(define-key prefix (kbd "'") #'clojure-convert-collection-to-quoted-list)
3474+
(define-key prefix (kbd "C-{") #'clojure-convert-collection-to-map)
3475+
(define-key prefix (kbd "{") #'clojure-convert-collection-to-map)
3476+
(define-key prefix (kbd "C-[") #'clojure-convert-collection-to-vector)
3477+
(define-key prefix (kbd "[") #'clojure-convert-collection-to-vector)
3478+
(define-key prefix (kbd "C-#") #'clojure-convert-collection-to-set)
3479+
(define-key prefix (kbd "#") #'clojure-convert-collection-to-set)
3480+
(define-key prefix (kbd "-") #'clojure-toggle-ignore)
3481+
(define-key prefix (kbd "C--") #'clojure-toggle-ignore)
3482+
(define-key prefix (kbd "_") #'clojure-toggle-ignore-surrounding-form)
3483+
(define-key prefix (kbd "C-_") #'clojure-toggle-ignore-surrounding-form)
3484+
(define-key map clojure-refactor-map-prefix prefix)
3485+
map)
3486+
"Keymap for EDN mode.
3487+
Only exposes data-appropriate commands: alignment, keyword-string
3488+
toggle, collection conversion, and #_ toggle.")
3489+
34613490
;;;###autoload
34623491
(define-derived-mode edn-mode clojure-mode "EDN"
34633492
"Major mode for editing EDN data files.

0 commit comments

Comments
 (0)