From f69a19a4bd00ad92843b903db3d5967d11095edd Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Thu, 30 Oct 2025 09:24:20 +0530 Subject: Dumb snippets --- autoload/git.kak | 4 ++- autoload/lsp-config.kak | 17 ++++++++--- autoload/snippets/+default.kak | 13 ++++++++ autoload/snippets/kakoune.kak | 20 +++++++++++++ autoload/snippets/ruby.kak | 13 ++++++++ autoload/snippets/typescript.kak | 65 ++++++++++++++++------------------------ autoload/surround.kak | 27 +++++++---------- autoload/window.kak | 12 ++++---- 8 files changed, 105 insertions(+), 66 deletions(-) create mode 100644 autoload/snippets/+default.kak create mode 100644 autoload/snippets/kakoune.kak create mode 100644 autoload/snippets/ruby.kak 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' -docstring 'LSP mode' +map global user l ': enter-user-mode lsp' -docstring 'LSP mode' # map global user t ':enter-user-mode tree-sitter' -docstring 'Treesitter mode' map global object f 'lsp-object Function Method' -docstring 'LSP function or method' map global object t 'lsp-object Class Interface Struct' -docstring 'LSP class interface or struct' map global object d 'lsp-diagnostic-object --include-warnings' -docstring 'LSP errors and warnings' -map global insert ':lsp-snippets-select-next-placeholders' -docstring 'Select next snippet placeholder' +map global insert ': lsp-snippets-select-next-placeholders' -docstring 'Select next snippet placeholder' hook global InsertCompletionShow .* %{ - unmap global insert ':lsp-snippets-select-next-placeholders' + unmap global insert ': lsp-snippets-select-next-placeholders' } hook global InsertCompletionHide .* %{ - map global insert ':lsp-snippets-select-next-placeholders' -docstring 'Select next snippet placeholder' + map global insert ': lsp-snippets-select-next-placeholders' -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 ': snippets-insert' + +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 ',idefine-command c %{' + execute-keys '}' + } +} + +define-command snip-kak-hook %{ + prompt 'Event: ' %{ + set-register c %val{text} + execute-keys ',ihook global c .* %{' + 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 ',i# frozen_string_literal: true' + execute-keys 'class c' + 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 ',iconst [$st, $setst] = useState($kak_reg_v);'" + } + } + } +} -# map global normal ':snippets-insert' - -# 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 ',iconst [$st, $setst] = useState();'" -# } -# } -# } - -# define-command snip-react-component %{ -# prompt 'Component name: ' %{ -# execute-keys ",iconst %val{text} = ({ children }: React.PropsWithChildren) => {" -# execute-keys " return div>/div>;" -# execute-keys "}" -# } -# } +define-command snip-react-component %{ + prompt 'Component name: ' %{ + execute-keys ",itype %val{text}Prop = {}" + execute-keys ",iexport const %val{text} = ({ }: %val{text}Prop) => {" + execute-keys " return div>/div>;" + execute-keys "};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' +# map global user k ': enter-user-mode surround' # map global surround a ': enter-user-mode surround-append' # map global surround d ': enter-user-mode surround-delete' -# define-command define-surround -params 3 %{ -# evaluate-commands %sh{ -# echo "map global surround-append %{${1}} %{i${2}a${3}}" -# echo "map global surround-delete %{${1}} %{${2}d,}" -# } +# define-command define-surround -params 4 -docstring ': ' %{ +# map global surround-append %arg{1} %sh{ echo "i${3}a${4}" } +# map global surround-delete %arg{1} %sh{ echo "${2}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 "cdiv,/div" "div" "/div" 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 ':enter-user-mode win' -docstring 'Window mode' map global win q ': quit' -docstring 'Quit' map global win ': quit' -docstring 'Quit' -map global win v ': tmux-terminal-horizontal kak -c %val{session}' -docstring 'Split vertical' -map global win s ': tmux-terminal-vertical kak -c %val{session}' -docstring 'Split horizontal' +map global win s ': tmux-terminal-horizontal kak -c %val{session}' -docstring 'Split vertical' +map global win v ': tmux-terminal-vertical kak -c %val{session}' -docstring 'Split horizontal' map global win z ': wq' define-command terminal-singleton -params 2.. -docstring 'terminal-singleton [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 "$@" } } -- cgit v1.3.1