aboutsummaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-06-21 21:57:14 +0530
committerAkshay Nair <phenax5@gmail.com>2026-06-21 21:57:14 +0530
commit24bac5d317757ae3cb0f390869fceef58cae5fa8 (patch)
tree7b1449a566d89136b9238bdc92c8647afd73368b /autoload
parented0e8f48b59607c138f8d9a6ecdbf7dd5c011c95 (diff)
downloadkakoune-config-24bac5d317757ae3cb0f390869fceef58cae5fa8.tar.gz
kakoune-config-24bac5d317757ae3cb0f390869fceef58cae5fa8.zip
Add rails open spec cmd + code-ruby mode
Diffstat (limited to 'autoload')
-rw-r--r--autoload/files.kak16
-rw-r--r--autoload/grep.kak4
-rw-r--r--autoload/languages/ruby.kak33
3 files changed, 48 insertions, 5 deletions
diff --git a/autoload/files.kak b/autoload/files.kak
index 121460d..f7af2f0 100644
--- a/autoload/files.kak
+++ b/autoload/files.kak
@@ -7,12 +7,22 @@ def file-manager -params .. %{
}
def findfzf -params .. %{
- terminal-singleton fzf sh -c 'kcr edit $(fd -t f --hidden --color=never -E .git | fzf --prompt='':find '' --multi --min-height=100 --preview=''bat --color=always {}'' $@)' findfzf-cmd %arg{@}
+ terminal-singleton fzf sh -c \
+ 'kcr edit $(fd -t f --hidden --color=never -E .git | \
+ fzf --prompt='':find '' --multi --min-height=100 \
+ --preview=''bat --color=always {}'' \
+ --bind ''ctrl-o:execute(kcr edit {})'' \
+ $@)' findfzf-cmd %arg{@}
}
def findfzf-filtered -params 1 %{
terminal-singleton fzf sh -c \
- 'kcr edit $(fd -t f --hidden --color=never -E .git | grep -E ''''$1'''' | fzf --prompt='':find# '' --multi --min-height=100 --preview=''bat --color=always {}'')' findfzf-cmd %arg{1}
+ 'export pat=$1; kcr edit $(fd -t f --hidden --color=never -E .git | \
+ grep -E ''''$pat'''' | \
+ fzf --prompt='':find# '' --multi --min-height=100 \
+ --preview=''bat --color=always {}'' \
+ --info-command ''printf $pat'' \
+ )' findfzf-cmd %arg{1}
}
declare-user-mode file
@@ -33,7 +43,7 @@ map global buffer s ': write<ret>' -docstring 'Save'
def buffers-show %{
info -title 'buffers' -markup %sh{
- echo "$kak_quoted_buflist" | xargs -n1 | while IFS= read buf; do
+ echo "$kak_quoted_buflist" | xargs -n1 | grep -v -E '^([*]debug[*])$' | while IFS= read buf; do
if [ -z "$buf" ]; then echo "{comment}<scratch>{Normal}"
elif [ "$buf" == "$kak_bufname" ]; then echo "{keyword}$buf{Normal}"
else echo "{Default}$buf{Normal}"
diff --git a/autoload/grep.kak b/autoload/grep.kak
index 4caee4e..c753ab2 100644
--- a/autoload/grep.kak
+++ b/autoload/grep.kak
@@ -11,10 +11,10 @@ define-command grep-write %{
}
hook global -always BufOpenFifo '\*grep\*' %{
- map global file ] ': grep-next-match<ret>'
map global file [ ': grep-previous-match<ret>'
+ map global file ] ': grep-next-match<ret>'
}
hook global -always BufOpenFifo '\*make\*' %{
- map global file ] ': make-next-error<ret>'
map global file [ ': make-previous-error<ret>'
+ map global file ] ': make-next-error<ret>'
}
diff --git a/autoload/languages/ruby.kak b/autoload/languages/ruby.kak
new file mode 100644
index 0000000..b4e08f4
--- /dev/null
+++ b/autoload/languages/ruby.kak
@@ -0,0 +1,33 @@
+hook global KakBegin .* %{
+ declare-user-mode code-ruby
+ map global code r ': enter-user-mode code-ruby<ret>' -docstring 'Ruby'
+}
+
+hook global BufSetOption filetype=(?:ruby) %{
+ map global code-ruby t ': rails-edit-test<ret>' -docstring 'Open relevant spec file'
+}
+
+define-command rails-edit-test %{
+ evaluate-commands %sh{
+ open_spec_matching() {
+ in_pattern="$1"
+ out_pattern="$2"
+ pattern=$(sed -E "s#.*/app/${in_pattern}[.]rb#${out_pattern}#" <<< "$kak_buffile");
+ if [ ! -z "$pattern" ] && [ ! "$kak_buffile" = "$pattern" ]; then
+ echo "findfzf-filtered 'spec/.*$pattern.*'"
+ else
+ echo "info 'unrecognized file'"
+ fi
+ }
+
+ case "$kak_buffile" in
+ *_controller.rb) open_spec_matching '.*/(\w+)_controller' 'requests/.*\1' ;;
+ *)
+ open_spec_matching \
+ '(queries|interactors|domain|mailers|dashboards|presenters|validators|models|lib).*/((\w+/)?\w+)' \
+ '\1.*\2'
+ ;;
+ esac
+ }
+}
+