siam-farmer/.dir-locals.el

48 lines
1.9 KiB
EmacsLisp

;;; Directory Local Variables -*- no-byte-compile: t -*-
((clojure-mode
. ((cider-clojure-cli-parameters . "-M:common:dev")
(cider-inject-dependencies-at-jack-in . nil)))
(nil
. ((eval
. (progn
(let ((root (locate-dominating-file default-directory ".dir-locals.el")))
(unless (fboundp 'clj-watch)
(load (expand-file-name "watch.el" root)))
(unless (fboundp 'clj-game-throw-last-error)
(load (expand-file-name "cider-error.el" root))))
(defun clj-game-run-main ()
"Send (future (-main)) to the REPL."
(interactive)
(cider-interactive-eval "(future (-main))"))
(defun clj-game-clear-error ()
"Resume the game loop after an error froze it."
(interactive)
(cider-interactive-eval "(engine/clear-error!)"))
(defun clj-game-reload-config ()
"Re-read config-path and re-init the running game's state from it."
(interactive)
(cider-interactive-eval "(engine/reload-config!)"))
(unless (boundp 'clj-game-mode-map)
(defvar clj-game-mode-map
(let ((m (make-sparse-keymap)))
(define-key m (kbd "C-c g w") #'clj-watch)
(define-key m (kbd "C-c g r") #'clj-game-run-main)
(define-key m (kbd "C-c g e") #'clj-game-clear-error)
(define-key m (kbd "C-c g c") #'clj-game-reload-config)
;; (define-key m (kbd "C-c g s") #'clj-game-reload-config)
(define-key m (kbd "C-c g x") #'clj-game-throw-last-error)
m)))
(unless (fboundp 'clj-game-mode)
(define-minor-mode clj-game-mode
"Project keybindings for a clojure/raylib game."
:lighter " Game"
:keymap clj-game-mode-map))
(clj-game-mode 1)))))))