diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-08-04 20:20:06 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-08-04 20:20:06 +1000 |
| commit | 65dcd8dea610fb337ffda92072d9ec5c177ecdca (patch) | |
| tree | 257ca8cc0eb207c3ee9bace13a303aecbaaaeb36 | |
| parent | 69eec334911fa654cd9df01bff75750b0b154567 (diff) | |
| parent | ba672623bcf1e50bc7c733fd6399a44c7822db64 (diff) | |
Merge remote-tracking branch 'eraserhd/clojure-insert-ns'
| -rw-r--r-- | rc/filetype/clojure.kak | 20 |
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>' + } +} + } |
