aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-30 09:24:20 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-31 13:25:43 +0530
commitf69a19a4bd00ad92843b903db3d5967d11095edd (patch)
tree3459238e342f04346039286b8301578c6fdaae08
parent406432cd53c168390221ae37a41724eda5b867c9 (diff)
downloadkakoune-config-f69a19a4bd00ad92843b903db3d5967d11095edd.tar.gz
kakoune-config-f69a19a4bd00ad92843b903db3d5967d11095edd.zip
Dumb snippets
-rw-r--r--autoload/git.kak4
-rw-r--r--autoload/lsp-config.kak17
-rw-r--r--autoload/snippets/+default.kak13
-rw-r--r--autoload/snippets/kakoune.kak20
-rw-r--r--autoload/snippets/ruby.kak13
-rw-r--r--autoload/snippets/typescript.kak65
-rw-r--r--autoload/surround.kak27
-rw-r--r--autoload/window.kak12
8 files changed, 105 insertions, 66 deletions
diff --git a/autoload/git.kak b/autoload/git.kak
index 76485ab..2befa83 100644
--- a/autoload/git.kak
+++ b/autoload/git.kak
@@ -1,6 +1,8 @@
define-command gitui -params .. %{
terminal-singleton git \
- env "GIT_EDITOR=kak -c %val{session}" 'EDITOR=kcr edit' 'VISUAL=kcr edit' \
+ env "GIT_EDITOR=kak -c %val{session}" \
+ 'EDITOR=kcr edit' \
+ 'VISUAL=kcr edit' \
gitu %arg{@}
}
diff --git a/autoload/lsp-config.kak b/autoload/lsp-config.kak
index 22ed178..c9af393 100644
--- a/autoload/lsp-config.kak
+++ b/autoload/lsp-config.kak
@@ -9,18 +9,18 @@ lsp-enable
lsp-inlay-diagnostics-enable global
-map global user l ':enter-user-mode lsp<ret>' -docstring 'LSP mode'
+map global user l ': enter-user-mode lsp<ret>' -docstring 'LSP mode'
# map global user t ':enter-user-mode tree-sitter<ret>' -docstring 'Treesitter mode'
map global object f '<a-semicolon>lsp-object Function Method<ret>' -docstring 'LSP function or method'
map global object t '<a-semicolon>lsp-object Class Interface Struct<ret>' -docstring 'LSP class interface or struct'
map global object d '<a-semicolon>lsp-diagnostic-object --include-warnings<ret>' -docstring 'LSP errors and warnings'
-map global insert <c-n> '<a-;>:lsp-snippets-select-next-placeholders<ret>' -docstring 'Select next snippet placeholder'
+map global insert <c-n> '<a-;>: lsp-snippets-select-next-placeholders<ret>' -docstring 'Select next snippet placeholder'
hook global InsertCompletionShow .* %{
- unmap global insert <c-n> '<a-;>:lsp-snippets-select-next-placeholders<ret>'
+ unmap global insert <c-n> '<a-;>: lsp-snippets-select-next-placeholders<ret>'
}
hook global InsertCompletionHide .* %{
- map global insert <c-n> '<a-;>:lsp-snippets-select-next-placeholders<ret>' -docstring 'Select next snippet placeholder'
+ map global insert <c-n> '<a-;>: lsp-snippets-select-next-placeholders<ret>' -docstring 'Select next snippet placeholder'
}
hook global BufSetOption filetype=(?:javascript|typescript) %{
@@ -39,6 +39,15 @@ hook global BufSetOption filetype=(?:javascript|typescript) %{
}
}
+remove-hooks global lsp-filetype-c-family
+hook global BufSetOption filetype=(?:c|cpp|objc) %{
+ set-option buffer lsp_servers %{
+ [clangd]
+ args = ["--log=error"]
+ root_globs = ["compile_commands.json", ".clangd", ".git"]
+ }
+}
+
hook global BufSetOption filetype=ruby %{
set-option buffer lsp_servers %{
[ruby-lsp]
diff --git a/autoload/snippets/+default.kak b/autoload/snippets/+default.kak
new file mode 100644
index 0000000..3dc871b
--- /dev/null
+++ b/autoload/snippets/+default.kak
@@ -0,0 +1,13 @@
+declare-option -hidden str-list snippet_list
+
+map global normal <c-p> ': snippets-insert<ret>'
+
+define-command snippets-insert %{
+ prompt -menu \
+ -shell-script-candidates 'echo "$kak_opt_snippet_list"' \
+ 'Snippet: ' 'evaluate-commands %val{text}'
+}
+
+define-command define-snippet -params 2 %{
+ set-option -add %arg{1} snippet_list %sh{ echo -e "$2\n" }
+}
diff --git a/autoload/snippets/kakoune.kak b/autoload/snippets/kakoune.kak
new file mode 100644
index 0000000..d6ed073
--- /dev/null
+++ b/autoload/snippets/kakoune.kak
@@ -0,0 +1,20 @@
+hook global BufSetOption filetype=(?:kak) %{
+ define-snippet buffer snip-kak-define
+ define-snippet buffer snip-kak-hook
+}
+
+define-command snip-kak-define %{
+ prompt 'Command: ' %{
+ set-register c %val{text}
+ execute-keys '<esc>,idefine-command <c-r>c %{<ret>'
+ execute-keys '}'
+ }
+}
+
+define-command snip-kak-hook %{
+ prompt 'Event: ' %{
+ set-register c %val{text}
+ execute-keys '<esc>,ihook global <c-r>c .* %{<ret>'
+ execute-keys '}'
+ }
+}
diff --git a/autoload/snippets/ruby.kak b/autoload/snippets/ruby.kak
new file mode 100644
index 0000000..4f851c2
--- /dev/null
+++ b/autoload/snippets/ruby.kak
@@ -0,0 +1,13 @@
+hook global BufSetOption filetype=(?:ruby) %{
+ define-snippet buffer snip-rails-class
+}
+
+define-command snip-rails-class %{
+ eval %sh{
+ class_name=$(basename "$kak_bufname" .rb | sed -e 's/[^A-Za-z0-9]\(\w\)/\U\1/g' -e 's/^\w/\U\0/g')
+ echo "set-register c $class_name"
+ }
+ execute-keys '<esc>,i# frozen_string_literal: true<ret><ret>'
+ execute-keys 'class <c-r>c<ret>'
+ execute-keys 'end'
+}
diff --git a/autoload/snippets/typescript.kak b/autoload/snippets/typescript.kak
index 86f46e7..f2d3e8f 100644
--- a/autoload/snippets/typescript.kak
+++ b/autoload/snippets/typescript.kak
@@ -1,42 +1,27 @@
-# declare-option -hidden str-list snippet_list
+hook global BufSetOption filetype=(?:javascript|typescript|jsx|tsx) %{
+ define-snippet buffer snip-react-component
+ define-snippet buffer snip-react-usestate
+}
-# define-command snippets-insert %{
-# evaluate-commands %sh{
-# cmds="echo $(echo "$kak_opt_snippet_list" | sed 's/=.*//')"
-# # TODO: Fix this shit
-# echo "prompt -menu -shell-script-candidates '$cmd' 'Snippet: ' 'evaluate-commands %val{text}'"
-# }
-# }
+define-command snip-react-usestate %{
+ prompt 'Name: ' %{
+ set-register n %val{text}
+ prompt 'Initial value: ' %{
+ set-register v %val{text}
+ evaluate-commands %sh{
+ st=$(echo "$kak_reg_n" | sed 's/^[A-Z]/\L\0/')
+ setst="set$(echo "$kak_reg_n" | sed 's/^[a-z]/\U\0/')"
+ echo "execute-keys '<esc>,iconst [$st, $setst] = useState($kak_reg_v);<esc>'"
+ }
+ }
+ }
+}
-# map global normal <c-p> ':snippets-insert<ret>'
-
-# define-command define-snippet -params 3 %{
-# set-option -add %arg{1} snippet_list %sh{ echo -e "$2=$3\n" }
-# }
-
-# define-snippet global "React component" snip-react-component
-# define-snippet global "React useState" snip-react-usestate
-
-# # hook global BufSetOption filetype=(?:javascript|typescript) %{
-# # define-snippet buffer "React component" snip-react-component
-# # define-snippet buffer "React useState" snip-react-usestate
-# # }
-
-# define-command snip-react-usestate %{
-# prompt 'Name: ' %{
-# evaluate-commands %sh{
-# echo "info %{$kak_text}"
-# st=$(echo "$kak_text" | sed 's/^[A-Z]/\L\0/')
-# setst="set$(echo "$kak_text" | sed 's/^[a-z]/\U\0/')"
-# echo "execute-keys '<esc>,iconst [$st, $setst] = useState();<esc>'"
-# }
-# }
-# }
-
-# define-command snip-react-component %{
-# prompt 'Component name: ' %{
-# execute-keys "<esc>,iconst %val{text} = ({ children }: React.PropsWithChildren) => {<ret>"
-# execute-keys " return <lt>div><lt>/div>;"
-# execute-keys "<ret>}<esc>"
-# }
-# }
+define-command snip-react-component %{
+ prompt 'Component name: ' %{
+ execute-keys "<esc>,itype %val{text}Prop = {<ret>}<ret><ret>"
+ execute-keys "<esc>,iexport const %val{text} = ({ }: %val{text}Prop) => {<ret>"
+ execute-keys " return <lt>div><lt>/div>;"
+ execute-keys "<ret>};<esc>kwlt;"
+ }
+}
diff --git a/autoload/surround.kak b/autoload/surround.kak
index 9409935..2df301c 100644
--- a/autoload/surround.kak
+++ b/autoload/surround.kak
@@ -1,24 +1,19 @@
# declare-user-mode surround
# declare-user-mode surround-append
# declare-user-mode surround-delete
-# map global user s ': enter-user-mode surround<ret>'
+# map global user k ': enter-user-mode surround<ret>'
# map global surround a ': enter-user-mode surround-append<ret>'
# map global surround d ': enter-user-mode surround-delete<ret>'
-# define-command define-surround -params 3 %{
-# evaluate-commands %sh{
-# echo "map global surround-append %{${1}} %{i${2}<esc>a${3}}"
-# echo "map global surround-delete %{${1}} %{<a-a>${2}<a-S>d,}"
-# }
+# define-command define-surround -params 4 -docstring ': <trigger> <surrounddesc> <start> <end>' %{
+# map global surround-append %arg{1} %sh{ echo "i${3}<esc>a${4}" }
+# map global surround-delete %arg{1} %sh{ echo "<a-a>${2}<a-S>d," }
# }
-# hook global KakBegin .* %{
-# define-surround ( ( )
-# define-surround [ [ ]
-# # define-surround < < >
-# # define-surround '{' '{' '}'
-# # define-surround '<' '<' '>'
-# # define-surround '`' '`' '`'
-# define-surround '"' '"' '"'
-# # define-surround "'" "'" "'"
-# }
+# define-surround '(' '(' '(' ')'
+# define-surround '[' '[' '[' ']'
+# define-surround '{' '{' '{' '}'
+# define-surround '`' '`' '`' '`'
+# define-surround '"' '"' '"' '"'
+# define-surround "'" "'" "'" "'"
+# define-surround t "c<lt>div,<lt>/div<gt><ret>" "<lt>div<gt>" "<lt>/div<gt>"
diff --git a/autoload/window.kak b/autoload/window.kak
index f5f1d95..acf9157 100644
--- a/autoload/window.kak
+++ b/autoload/window.kak
@@ -3,24 +3,26 @@ map global normal <c-w> ':enter-user-mode win<ret>' -docstring 'Window mode'
map global win q ': quit<ret>' -docstring 'Quit'
map global win <c-q> ': quit<ret>' -docstring 'Quit'
-map global win v ': tmux-terminal-horizontal kak -c %val{session}<ret>' -docstring 'Split vertical'
-map global win s ': tmux-terminal-vertical kak -c %val{session}<ret>' -docstring 'Split horizontal'
+map global win s ': tmux-terminal-horizontal kak -c %val{session}<ret>' -docstring 'Split vertical'
+map global win v ': tmux-terminal-vertical kak -c %val{session}<ret>' -docstring 'Split horizontal'
map global win z ': wq<ret>'
define-command terminal-singleton -params 2.. -docstring 'terminal-singleton <name> <command> [args...]' %{
eval %sh{
name="$1"; shift 1;
+
open-term-win() {
- printf "terminal -n '$name' env"
+ printf "tmux-repl-impl new-window -n '$name' env"
printf " 'KAKOUNE_SESSION=$kak_session' 'KAKOUNE_CLIENT=$kak_client'"
for arg in "$@"; do
- printf ' "%s"' "$(echo "$arg" | sed 's/["]/\\"/g')"
+ printf ' "%s"' "$(echo "$arg" | sed 's|["]|\\"|g')"
done
}
+
focus-term-win() {
tmux select-window -t "$name" >/dev/null 2>&1
}
- (focus-term-win || open-term-win "$@")
+ focus-term-win || open-term-win "$@"
}
}