aboutsummaryrefslogtreecommitdiff
path: root/autoload/snippets.kak
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/snippets.kak')
-rw-r--r--autoload/snippets.kak22
1 files changed, 22 insertions, 0 deletions
diff --git a/autoload/snippets.kak b/autoload/snippets.kak
new file mode 100644
index 0000000..7c4bb5a
--- /dev/null
+++ b/autoload/snippets.kak
@@ -0,0 +1,22 @@
+map global normal <c-p> ': snippets-insert<ret>'
+
+declare-option str snippets_dir "%val{config}/snippets"
+
+define-command snippets-insert -docstring 'Snippets' %{
+ prompt -menu "Snippets: " -init "%opt{filetype}/" \
+ -shell-script-candidates %{ fd --type file --base-directory "$kak_opt_snippets_dir" } \
+ %{
+ evaluate-commands %sh{
+ case "$kak_text" in
+ *.snip.kak) cat "$kak_opt_snippets_dir/$kak_text" ;;
+ *) echo "insert-text-snippet %{$kak_text}" ;;
+ esac
+ }
+ }
+}
+
+define-command -hidden insert-text-snippet -params 1 %{
+ execute-keys ",|cat ""%opt{snippets_dir}/%arg{1}""<ret>"
+ execute-keys -save-regs '' "s[$]\d+<ret>"
+ execute-keys "%sh{echo $((kak_selection_count + 1))}n"
+}