Skip to content

Commit a7b9654

Browse files
committed
Add preliminary support for jank
This creates a new derived mode for the clojure dialect jank https://jank-lang.org/ See issue #23 for future work and jank-lang/jank#24 for the expressed desire to support nested c++
1 parent 5e7506e commit a7b9654

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

clojure-ts-mode.el

+13-1
Original file line numberDiff line numberDiff line change
@@ -870,6 +870,11 @@ forms like deftype, defrecord, reify, proxy, etc."
870870
(set-keymap-parent map clojure-ts-mode-map)
871871
map))
872872

873+
(defvar clojure-jank-ts-mode-map
874+
(let ((map (make-sparse-keymap)))
875+
(set-keymap-parent map clojure-ts-mode-map)
876+
map))
877+
873878
(defun clojure-ts-mode-display-version ()
874879
"Display the current `clojure-mode-version' in the minibuffer."
875880
(interactive)
@@ -965,9 +970,16 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE."
965970
966971
\\{clojure-dart-ts-mode-map}")
967972

973+
;;;###autoload
974+
(define-derived-mode clojure-jank-ts-mode clojure-ts-mode "Jank[TS]"
975+
"Major mode for editing Jank code.
976+
977+
\\{clojure-jank-ts-mode-map}")
978+
968979
(defun clojure-ts--register-novel-modes ()
969980
"Set up Clojure modes not present in progenitor clojure-mode.el."
970-
(add-to-list 'auto-mode-alist '("\\.cljd\\'" . clojure-dart-ts-mode)))
981+
(add-to-list 'auto-mode-alist '("\\.cljd\\'" . clojure-dart-ts-mode))
982+
(add-to-list 'auto-mode-alist '("\\.jank\\'" . clojure-jank-ts-mode)))
971983

972984
;; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present
973985
(if (require 'clojure-mode nil 'noerror)

test/native.jank

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(defn create-vertex-shader! []
2+
(native/raw "__value = make_box(glCreateShader(GL_VERTEX_SHADER));"))
3+
4+
(defn set-shader-source! [shader source]
5+
(native/raw "auto const shader(detail::to_int(~{ shader }));
6+
auto const &source(detail::to_string(~{ source }));
7+
__value = make_box(glShaderSource(shader, 1, &source.data, nullptr));"))
8+
9+
(defn compile-shader! [shader]
10+
(native/raw "__value = make_box(glCompileShader(detail::to_int(~{ shader })));"))

0 commit comments

Comments
 (0)