Describe gina#command#grep Before all let Path = vital#gina#import('System.Filepath') let slit1 = Slit(tempname(), 1) call slit1.write('A/foo.txt', ['a', 'b', 'c', 'd', 'e']) call slit1.write('B/foo.txt', ['A', 'B', 'C', 'D', 'E']) call slit1.write('C/foo.txt', ['aa', 'bb', 'cc', 'dd', 'ee']) call slit1.write('D/foo.txt', ['--color-text']) call slit1.execute('add .') call slit1.execute('commit --quiet -am "First"') End After all %bwipeout! End Before %bwipeout! End Describe Use cases It might be called with {pattern} execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync grep a Assert Equals(winnr('$'), 1) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname)) Assert Equals(getline(1, '$'), [ \ 'A/foo.txt:1:a', \ 'C/foo.txt:1:aa', \]) Assert Equals(gina#action#candidates(1, line('$')), [ \ { \ '__lnum': 1, \ 'word': 'a', \ 'col': 1, \ 'residual': [], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'A/foo.txt:1:a' \ }, \ { \ '__lnum': 2, \ 'word': 'aa', \ 'col': 1, \ 'residual': [], \ 'path': 'C/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'C/foo.txt:1:aa', \ }, \]) End It might be called with -e --color-text execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync grep -e --color-text Assert Equals(winnr('$'), 1) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname)) Assert Equals(getline(1, '$'), [ \ "D/foo.txt\e[36m:\e[m1\e[36m:\e[m\e[1;31m--color-text\e[m", \]) Assert Equals(gina#action#candidates(1, line('$')), [ \ { \ '__lnum': 1, \ 'word': '--color-text', \ 'col': 1, \ 'residual': [], \ 'path': 'D/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': "D/foo.txt\e[36m:\e[m1\e[36m:\e[m\e[1;31m--color-text\e[m", \ }, \]) End It might be called with -e{pattern} --or -e{pattern} execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync grep -ea --or -eb Assert Equals(winnr('$'), 1) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname)) Assert Equals(getline(1, '$'), [ \ 'A/foo.txt:1:a', \ 'A/foo.txt:2:b', \ 'C/foo.txt:1:aa', \ 'C/foo.txt:2:bb', \]) Assert Equals(gina#action#candidates(1, line('$')), [ \ { \ '__lnum': 1, \ 'word': 'a', \ 'col': 1, \ 'residual': [], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'A/foo.txt:1:a' \ }, \ { \ '__lnum': 2, \ 'word': 'b', \ 'col': 1, \ 'residual': [], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 2, \ 'abbr': 'A/foo.txt:2:b' \ }, \ { \ '__lnum': 3, \ 'word': 'aa', \ 'col': 1, \ 'residual': [], \ 'path': 'C/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'C/foo.txt:1:aa' \ }, \ { \ '__lnum': 4, \ 'word': 'bb', \ 'col': 1, \ 'residual': [], \ 'path': 'C/foo.txt', \ 'rev': '', \ 'line': 2, \ 'abbr': 'C/foo.txt:2:bb' \ }, \]) End It might be called with -e {pattern} --or -e {pattern} execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync grep -ea --or -eb Assert Equals(winnr('$'), 1) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:grep', slit1.refname)) Assert Equals(getline(1, '$'), [ \ 'A/foo.txt:1:a', \ 'A/foo.txt:2:b', \ 'C/foo.txt:1:aa', \ 'C/foo.txt:2:bb', \]) Assert Equals(gina#action#candidates(1, line('$')), [ \ { \ '__lnum': 1, \ 'word': 'a', \ 'col': 1, \ 'residual': [], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'A/foo.txt:1:a' \ }, \ { \ '__lnum': 2, \ 'word': 'b', \ 'col': 1, \ 'residual': [], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 2, \ 'abbr': 'A/foo.txt:2:b' \ }, \ { \ '__lnum': 3, \ 'word': 'aa', \ 'col': 1, \ 'residual': [], \ 'path': 'C/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'C/foo.txt:1:aa' \ }, \ { \ '__lnum': 4, \ 'word': 'bb', \ 'col': 1, \ 'residual': [], \ 'path': 'C/foo.txt', \ 'rev': '', \ 'line': 2, \ 'abbr': 'C/foo.txt:2:bb' \ }, \]) End It might be called with {pattern} -- A/*.txt execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync grep a -- A/*.txt Assert Equals(winnr('$'), 1) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:grep:--', slit1.refname)) Assert Equals(getline(1, '$'), [ \ 'A/foo.txt:1:a', \]) Assert Equals(gina#action#candidates(1, line('$')), [ \ { \ '__lnum': 1, \ 'word': 'a', \ 'col': 1, \ 'residual': ['A/*.txt'], \ 'path': 'A/foo.txt', \ 'rev': '', \ 'line': 1, \ 'abbr': 'A/foo.txt:1:a' \ }, \]) End End Describe #_is_column_supported() It returns 1 for version 3.0, 3.0.0, ... Assert True(gina#command#grep#_is_column_supported('3.0')) Assert True(gina#command#grep#_is_column_supported('3.0.0')) Assert True(gina#command#grep#_is_column_supported('4.0')) Assert True(gina#command#grep#_is_column_supported('5')) End It returns 1 for version 2.20, 2.20.0, ... Assert True(gina#command#grep#_is_column_supported('2.20')) Assert True(gina#command#grep#_is_column_supported('2.20.0')) Assert True(gina#command#grep#_is_column_supported('2.3')) End It returns 1 for version 2.19, 2.19.1, ... Assert True(gina#command#grep#_is_column_supported('2.19')) Assert True(gina#command#grep#_is_column_supported('2.19.1')) Assert True(gina#command#grep#_is_column_supported('2.190')) End It returns 0 for version 2.18, 2.0, ... Assert False(gina#command#grep#_is_column_supported('2.18')) Assert False(gina#command#grep#_is_column_supported('2.18.1')) Assert False(gina#command#grep#_is_column_supported('2.0')) Assert False(gina#command#grep#_is_column_supported('1.0')) Assert False(gina#command#grep#_is_column_supported('0.1')) End End End