summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2019-08-04 20:20:06 +1000
committerMaxime Coste <mawww@kakoune.org>2019-08-04 20:20:06 +1000
commit65dcd8dea610fb337ffda92072d9ec5c177ecdca (patch)
tree257ca8cc0eb207c3ee9bace13a303aecbaaaeb36
parent69eec334911fa654cd9df01bff75750b0b154567 (diff)
parentba672623bcf1e50bc7c733fd6399a44c7822db64 (diff)
Merge remote-tracking branch 'eraserhd/clojure-insert-ns'
-rw-r--r--rc/filetype/clojure.kak20
1 files changed, 20 insertions, 0 deletions
diff --git a/rc/filetype/clojure.kak b/rc/filetype/clojure.kak
index 8f2cc488..3db3e429 100644
--- a/rc/filetype/clojure.kak
+++ b/rc/filetype/clojure.kak
@@ -26,6 +26,11 @@ hook -group clojure-highlight global WinSetOption filetype=clojure %{
hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/clojure }
}
+hook -group clojure-insert global BufNewFile .*[.](clj|cljc|cljs|cljx) %{
+ require-module clojure
+ clojure-insert-ns
+}
+
provide-module clojure %{
require-module lisp
@@ -212,4 +217,19 @@ define-command -hidden clojure-indent-on-new-line %{
}
}
+declare-option -docstring %{top-level directories which can contain clojure files
+e.g. '(src|test|dev)'} regex clojure_source_directories '(src|test|dev)'
+
+define-command -docstring %{clojure-insert-ns: Insert namespace directive at top of Clojure source file} \
+ clojure-insert-ns %{
+ evaluate-commands -draft %{
+ execute-keys -save-regs '' 'gk\O' "%val{bufname}" '<esc>giZ'
+ try %{ execute-keys 'z<a-l>s\.clj[csx]?$<ret><a-d>' }
+ try %{ execute-keys 'z<a-l>s^' "%opt{clojure_source_directories}" '/<ret><a-d>' }
+ try %{ execute-keys 'z<a-l>s/<ret>r.' }
+ try %{ execute-keys 'z<a-l>s_<ret>r-' }
+ execute-keys 'z<a-l>\c(ns <c-r>")<ret><esc>'
+ }
+}
+
}