diff options
| -rw-r--r-- | autoload/files.kak | 16 | ||||
| -rw-r--r-- | autoload/grep.kak | 4 | ||||
| -rw-r--r-- | autoload/languages/ruby.kak | 33 |
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 + } +} + |
