From 24bac5d317757ae3cb0f390869fceef58cae5fa8 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 21 Jun 2026 21:57:14 +0530 Subject: Add rails open spec cmd + code-ruby mode --- autoload/languages/ruby.kak | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 autoload/languages/ruby.kak (limited to 'autoload/languages/ruby.kak') 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' -docstring 'Ruby' +} + +hook global BufSetOption filetype=(?:ruby) %{ + map global code-ruby t ': rails-edit-test' -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 + } +} + -- cgit v1.3.1