From 1e3e6f6b2c4315b1fc4d61364d13ee8a3b08c4e1 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 25 Sep 2015 04:52:48 +0330 Subject: [PATCH] clojure extension added --- fg42-config.el | 3 +- lib/extensions/clojure.el | 21 ++++++++++++ lib/extensions/clojure/init.el | 62 ++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 lib/extensions/clojure.el create mode 100644 lib/extensions/clojure/init.el diff --git a/fg42-config.el b/fg42-config.el index 15c99d8..da20757 100644 --- a/fg42-config.el +++ b/fg42-config.el @@ -1,5 +1,5 @@ (add-to-list 'load-path (concat (getenv "FG42_HOME") "/lib")) -;(toggle-debug-on-error) +(toggle-debug-on-error) (require 'fg42) ;; Load the default theme @@ -15,6 +15,7 @@ 'editor-theme 'javascript 'php + 'clojure 'python 'ruby) diff --git a/lib/extensions/clojure.el b/lib/extensions/clojure.el new file mode 100644 index 0000000..df36ac6 --- /dev/null +++ b/lib/extensions/clojure.el @@ -0,0 +1,21 @@ +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/clojure/init) + +;; Dependencies ---------------------------------- +(depends-on 'clojure-mode) +(depends-on 'cider) +(depends-on 'hl-sexp) +(depends-on 'paredit) +(depends-on 'flycheck) +(depends-on 'flycheck-clojure) +(depends-on 'clj-refactor) +(depends-on 'let-alist) +(depends-on 'flycheck-clojure) + +;; Extension ------------------------------------- +(extension clojure + :version "2.31" + :on-initialize extensions/clojure-initialize) + +(provide 'extensions/clojure) diff --git a/lib/extensions/clojure/init.el b/lib/extensions/clojure/init.el new file mode 100644 index 0000000..0c22a96 --- /dev/null +++ b/lib/extensions/clojure/init.el @@ -0,0 +1,62 @@ +;;;###autoload +(defun extensions/clojure-initialize () + ; Clojure development initialization + (ability clojure-editor ('flycheck) + (setq tmp-directory "~/.tmp") + (setq cider-repl-history-file tmp-directory) + + ;; nice pretty printing + (setq cider-repl-use-pretty-printing t) + + ;; nicer font lock in REPL + (setq cider-repl-use-clojure-font-lock t) + + ;; result prefix for the REPL + (setq cider-repl-result-prefix ";; => ") + + ;; never ending REPL history + (setq cider-repl-wrap-history t) + + ;; looong history + (setq cider-repl-history-size 3000) + + ;; eldoc for clojure + (add-hook 'cider-mode-hook #'eldoc-mode) + + ;; error buffer not popping up + (setq cider-show-error-buffer nil) + (require 'hl-sexp) + + ;; Paredit + (require 'paredit) + (add-hook 'clojure-mode-hook #'paredit-mode) + (add-hook 'cider-repl-mode-hook #'paredit-mode) + + (add-hook 'clojure-mode-hook #'hl-sexp-mode)) + + (ability clojure-completion ('code-completion) + ;; company mode for completion + (add-hook 'cider-repl-mode-hook #'company-mode) + (add-hook 'cider-mode-hook #'company-mode)) + + (ability clojure-refactore () + + (add-hook 'clojure-mode-hook + (lambda () + (clj-refactor-mode 1) + ;; insert keybinding setup here + (cljr-add-keybindings-with-prefix "C-c RET"))) + + (add-hook 'clojure-mode-hook #'yas-minor-mode) + + ;; no auto sort + (setq cljr-auto-sort-ns nil) + + ;; do not prefer prefixes when using clean-ns + (setq cljr-favor-prefix-notation nil)) + + (ability clojure-check ('flycheck) + (eval-after-load 'flycheck '(flycheck-clojure-setup)) + (add-hook 'after-init-hook #'global-flycheck-mode))) + +(provide 'extensions/clojure/init)