diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-06-21 21:57:14 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-06-21 21:57:14 +0530 |
| commit | 24bac5d317757ae3cb0f390869fceef58cae5fa8 (patch) | |
| tree | 7b1449a566d89136b9238bdc92c8647afd73368b /autoload/languages/ruby.kak | |
| parent | ed0e8f48b59607c138f8d9a6ecdbf7dd5c011c95 (diff) | |
| download | kakoune-config-24bac5d317757ae3cb0f390869fceef58cae5fa8.tar.gz kakoune-config-24bac5d317757ae3cb0f390869fceef58cae5fa8.zip | |
Add rails open spec cmd + code-ruby mode
Diffstat (limited to 'autoload/languages/ruby.kak')
| -rw-r--r-- | autoload/languages/ruby.kak | 33 |
1 files changed, 33 insertions, 0 deletions
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 + } +} + |
