diff --git a/lib/extensions/racket.el b/lib/extensions/racket.el new file mode 100644 index 0000000..dbcce68 --- /dev/null +++ b/lib/extensions/racket.el @@ -0,0 +1,28 @@ +;;; RacketExtension --- Enables Racket development on FG42 +;;; Commentary: +;; In order to user racket extension `racket' itself should +;; be available on the path provided by `exec-path'. +;;; Code: + +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/racket/init) + +;; Dependencies ---------------------------------- +(depends-on 'racket-mode) +(depends-on 'paredit) +(depends-on 'flycheck) +(depends-on 'clojure-mode-extra-font-locking) +(depends-on 'rainbow-delimiters) + +(defun racket-doc () + "Something fun.") + +;; Extension ------------------------------------- +(extension racket + :version "2.32" + :on-initialize extensions/racket-initialize + :docs "lib/extensions/racket/readme.org") + +(provide 'extensions/racket) +;;; racket.el ends here diff --git a/lib/extensions/racket/init.el b/lib/extensions/racket/init.el new file mode 100644 index 0000000..166a364 --- /dev/null +++ b/lib/extensions/racket/init.el @@ -0,0 +1,27 @@ +;;; RacketExtension --- Enables Racket development on FG42 +;;; Commentary: +;;; Code: + +;;;###autoload +(defun extensions/racket-initialize () + "Initialize the racket extension." + (ability racket-editor ('flycheck) + (require 'racket-mode) + + (add-to-list 'auto-mode-alist '("\\.rkts$" . racket-mode)) + (add-to-list 'auto-mode-alist '("\\.rkt$" . racket-mode)) + (add-to-list 'auto-mode-alist '("\\.rktl$" . racket-mode)) + (add-to-list 'auto-mode-alist '("\\.rktd$" . racket-mode)) + + (add-hook 'racket-mode-hook #'racket-unicode-input-method-enable) + (add-hook 'racket-repl-mode-hook #'racket-unicode-input-method-enable) + (add-hook 'racket-mode-hook #'paredit-mode) + (add-hook 'racket-mode-hook #'rainbow-delimiters-mode) + (setq tmp-directory (concat (getenv "HOME") "/.tmp"))) + + (with-ability parinfer () + (add-hook 'racket-mode-hook #'parinfer-mode))) + + +(provide 'extensions/racket/init) +;;; init.el ends here