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 } }