@@ -769,102 +769,38 @@ endfunction
769
769
" ChooseGrepProgram {{{
770
770
function ! <sid> ChooseGrepProgram (... )
771
771
772
- let chooseVimgrep = 0
773
- let chooseFindstr = 0
774
- let chooseGrep = 0
775
- let chooseGitGrep = 0
776
- let chooseAckGrep = 0
777
- let chooseAck = 0
778
- let chooseAg = 0
779
- let choosePt = 0
772
+ let programNames = sort (keys (s: commandParamsDict ))
780
773
781
774
if a: 0 > 0
782
775
let grepChoiceStr = a: 1
783
776
else
784
777
let lst = [ " Select grep program: " ]
785
- let i = 1
786
- " vimgrep
787
- let chooseVimgrep = i
788
- call extend (lst, [ i ." . vimgrep" ])
789
- let i = i + 1
790
- " findstr
791
- if has (" win32" ) && executable (" findstr" )
792
- let chooseFindstr = i
793
- call extend (lst, [ i ." . findstr" ])
794
- let i = i + 1
795
- else
796
- let chooseFindstr = -1
797
- endif
798
- " grep
799
- if executable (" grep" )
800
- let chooseGrep = i
801
- call extend (lst, [ i ." . grep" ])
802
- let i = i + 1
803
- else
804
- let chooseGrep = -1
805
- endif
806
- " git grep
807
- if executable (" git" )
808
- let chooseGitGrep = i
809
- call extend (lst, [ i ." . git grep" ])
810
- let i = i + 1
811
- else
812
- let chooseGitGrep = -1
813
- endif
814
- " ack
815
- if executable (" ack-grep" )
816
- let chooseAckGrep = i
817
- call extend (lst, [ i ." . ack-grep" ])
818
- let i = i + 1
819
- elseif executable (" ack" )
820
- let chooseAck = i
821
- call extend (lst, [ i ." . ack" ])
822
- let i = i + 1
823
- else
824
- let chooseAck = -1
825
- endif
826
- " ag
827
- if executable (" ag" )
828
- let chooseAg = i
829
- call extend (lst, [ i ." . ag" ])
830
- let i = i + 1
831
- else
832
- let chooseAg = -1
833
- endif
834
- " pt
835
- if executable (" pt" )
836
- let choosePt = i
837
- call extend (lst, [ i ." . pt" ])
838
- let i = i + 1
839
- else
840
- let choosePt = -1
841
- endif
778
+ let numPrograms = len (programNames)
779
+ let programRemap = {}
780
+
781
+ let i = 0
782
+ let validProgramCounter = 0
783
+ while i < numPrograms
784
+ let program = programNames[i ]
785
+ if executable (program)
786
+ let validProgramCounter += 1
787
+ call extend (lst, [ validProgramCounter." . " . programNames[i ] ])
788
+ let programRemap[validProgramCounter] = i
789
+ endif
790
+ let i += 1
791
+ endwhile
842
792
843
793
let grepChoice = inputlist (lst)
844
794
845
795
if grepChoice == 0
846
796
return
847
- elseif grepChoice == chooseVimgrep
848
- let grepChoiceStr = " vimgrep"
849
- elseif grepChoice == chooseFindstr
850
- let grepChoiceStr = " findstr"
851
- elseif grepChoice == chooseGrep
852
- let grepChoiceStr = " grep"
853
- elseif grepChoice == chooseGitGrep
854
- let grepChoiceStr = " git grep"
855
- elseif grepChoice == chooseAckGrep
856
- let grepChoiceStr = " ack-grep"
857
- elseif grepChoice == chooseAck
858
- let grepChoiceStr = " ack"
859
- elseif grepChoice == chooseAg
860
- let grepChoiceStr = " ag"
861
- elseif grepChoice == choosePt
862
- let grepChoiceStr = " pt"
863
- else
797
+ elseif grepChoice > validProgramCounter
864
798
echo " "
865
- call s: Error (" Invalid GrepCommand choice" )
799
+ call s: Error (" Invalid GrepProgram choice" )
866
800
return
867
801
endif
802
+
803
+ let grepChoiceStr = programNames[programRemap[grepChoice]]
868
804
endif
869
805
let result = s: SetGrepCommand (grepChoiceStr)
870
806
@@ -888,27 +824,16 @@ function! s:SetGrepCommand(grepChoice)
888
824
let g: EasyGrepCommand = 0
889
825
else
890
826
let g: EasyGrepCommand = 1
891
- if a: grepChoice == # " findstr"
892
- set grepprg = findstr\ /n
893
- elseif a: grepChoice == # " grep"
894
- if has (" win32" )
895
- set grepprg = grep \ - n
896
- else
897
- set grepprg = grep \ - n \ $ * \ /dev/ null
898
- endif
899
- elseif a: grepChoice == # " git grep"
900
- set grepprg = git\ grep \ - n
901
- elseif a: grepChoice == # " ack-grep"
902
- set grepprg = ack- grep \ -- nogroup\ -- nocolor\ -- column\ -- with- filename
903
- elseif a: grepChoice == # " ack"
904
- set grepprg = ack\ -- nogroup\ -- nocolor\ -- column\ -- with- filename
905
- elseif a: grepChoice == # " ag"
906
- set grepprg = ag\ -- nogroup\ -- nocolor\ -- column
907
- elseif a: grepChoice == # " pt"
908
- set grepprg = pt \ -- nogroup\ -- nocolor
909
- else
827
+
828
+ if ! has_key (s: commandParamsDict , a: grepChoice )
910
829
return 0
911
830
endif
831
+
832
+ let args = " "
833
+ if len (s: commandParamsDict [a: grepChoice ][" req_str_programargs" ])
834
+ let args = ' \ ' .escape (s: commandParamsDict [a: grepChoice ][" req_str_programargs" ], ' ' )
835
+ endif
836
+ exe " set grepprg=" .a: grepChoice .args
912
837
endif
913
838
let s: LastSeenGrepprg = &grepprg
914
839
@@ -2386,15 +2311,28 @@ function! s:CommandHasLen(parameter)
2386
2311
return has_key (commandParams, a: parameter ) && len (commandParams[a: parameter ])
2387
2312
endfunction
2388
2313
" }}}
2314
+ " RegisterGrepProgram {{{
2315
+ function ! s: RegisterGrepProgram (programName, programSettingsDict)
2316
+ if ! exists (" s:commandParamsDict" )
2317
+ let s: commandParamsDict = {}
2318
+ endif
2319
+
2320
+ if has_key (s: commandParamsDict , a: programName )
2321
+ call s: Error (" Cannot register '" .a: programName ." ' because it is already registered" )
2322
+ return
2323
+ endif
2324
+
2325
+ let s: commandParamsDict [a: programName ] = a: programSettingsDict
2326
+ endfunction
2327
+ " }}}
2389
2328
" ConfigureGrepCommandParameters {{{
2390
2329
function ! s: ConfigureGrepCommandParameters ()
2391
2330
if exists (" s:commandParamsDict" )
2392
2331
return
2393
2332
endif
2394
2333
2395
- let s: commandParamsDict = {}
2396
-
2397
- let s: commandParamsDict [" vimgrep" ] = {
2334
+ call s: RegisterGrepProgram (" vimgrep" , {
2335
+ \ ' req_str_programargs' : ' ' ,
2398
2336
\ ' req_bool_supportsexclusions' : ' 1' ,
2399
2337
\ ' req_str_recurse' : ' ' ,
2400
2338
\ ' req_str_caseignore' : ' ' ,
@@ -2413,8 +2351,10 @@ function! s:ConfigureGrepCommandParameters()
2413
2351
\ ' opt_bool_isinherentlyrecursive' : ' 0' ,
2414
2352
\ ' opt_bool_isselffiltering' : ' 0' ,
2415
2353
\ ' opt_bool_replacewildcardwithcwd' : ' 0' ,
2416
- \ }
2417
- let s: commandParamsDict [" grep" ] = {
2354
+ \ })
2355
+
2356
+ call s: RegisterGrepProgram (" grep" , {
2357
+ \ ' req_str_programargs' : ' -n' ,
2418
2358
\ ' req_bool_supportsexclusions' : ' 1' ,
2419
2359
\ ' req_str_recurse' : ' -R' ,
2420
2360
\ ' req_str_caseignore' : ' -i' ,
@@ -2434,8 +2374,10 @@ function! s:ConfigureGrepCommandParameters()
2434
2374
\ ' opt_bool_isselffiltering' : ' 0' ,
2435
2375
\ ' opt_bool_replacewildcardwithcwd' : ' 0' ,
2436
2376
\ ' opt_bool_greprecursionwar' : ' 1' ,
2437
- \ }
2438
- let s: commandParamsDict [" git" ] = {
2377
+ \ })
2378
+
2379
+ call s: RegisterGrepProgram (" git" , {
2380
+ \ ' req_str_programargs' : ' grep -n' ,
2439
2381
\ ' req_bool_supportsexclusions' : ' 0' ,
2440
2382
\ ' req_str_recurse' : ' -R' ,
2441
2383
\ ' req_str_caseignore' : ' -i' ,
@@ -2454,8 +2396,10 @@ function! s:ConfigureGrepCommandParameters()
2454
2396
\ ' opt_bool_isinherentlyrecursive' : ' 0' ,
2455
2397
\ ' opt_bool_isselffiltering' : ' 0' ,
2456
2398
\ ' opt_bool_replacewildcardwithcwd' : ' 0' ,
2457
- \ }
2458
- let s: commandParamsDict [" ack" ] = {
2399
+ \ })
2400
+
2401
+ call s: RegisterGrepProgram (" ack" , {
2402
+ \ ' req_str_programargs' : ' --nogroup --nocolor --column --with-filename' ,
2459
2403
\ ' req_bool_supportsexclusions' : ' 1' ,
2460
2404
\ ' req_str_recurse' : ' ' ,
2461
2405
\ ' req_str_caseignore' : ' -i' ,
@@ -2474,9 +2418,12 @@ function! s:ConfigureGrepCommandParameters()
2474
2418
\ ' opt_bool_isinherentlyrecursive' : ' 1' ,
2475
2419
\ ' opt_bool_isselffiltering' : ' 1' ,
2476
2420
\ ' opt_bool_replacewildcardwithcwd' : ' 1' ,
2477
- \ }
2478
- let s: commandParamsDict [" ack-grep" ] = s: commandParamsDict [" ack" ]
2479
- let s: commandParamsDict [" ag" ] = {
2421
+ \ })
2422
+
2423
+ call s: RegisterGrepProgram (" ack-grep" , s: commandParamsDict [" ack" ])
2424
+
2425
+ call s: RegisterGrepProgram (" ag" , {
2426
+ \ ' req_str_programargs' : ' --nogroup --nocolor --column' ,
2480
2427
\ ' req_bool_supportsexclusions' : ' 1' ,
2481
2428
\ ' req_str_recurse' : ' ' ,
2482
2429
\ ' req_str_caseignore' : ' -i' ,
@@ -2495,8 +2442,10 @@ function! s:ConfigureGrepCommandParameters()
2495
2442
\ ' opt_bool_isinherentlyrecursive' : ' 1' ,
2496
2443
\ ' opt_bool_isselffiltering' : ' 1' ,
2497
2444
\ ' opt_bool_replacewildcardwithcwd' : ' 1' ,
2498
- \ }
2499
- let s: commandParamsDict [" pt" ] = {
2445
+ \ })
2446
+
2447
+ call s: RegisterGrepProgram (" pt" , {
2448
+ \ ' req_str_programargs' : ' --nogroup --nocolor' ,
2500
2449
\ ' req_bool_supportsexclusions' : ' 0' ,
2501
2450
\ ' req_str_recurse' : ' ' ,
2502
2451
\ ' req_str_caseignore' : ' -i' ,
@@ -2515,8 +2464,10 @@ function! s:ConfigureGrepCommandParameters()
2515
2464
\ ' opt_bool_isinherentlyrecursive' : ' 0' ,
2516
2465
\ ' opt_bool_isselffiltering' : ' 0' ,
2517
2466
\ ' opt_bool_replacewildcardwithcwd' : ' 0' ,
2518
- \ }
2519
- let s: commandParamsDict [" findstr" ] = {
2467
+ \ })
2468
+
2469
+ call s: RegisterGrepProgram (" findstr" , {
2470
+ \ ' req_str_programargs' : ' /n' ,
2520
2471
\ ' req_bool_supportsexclusions' : ' 0' ,
2521
2472
\ ' req_str_recurse' : ' /S' ,
2522
2473
\ ' req_str_caseignore' : ' /I' ,
@@ -2535,7 +2486,7 @@ function! s:ConfigureGrepCommandParameters()
2535
2486
\ ' opt_bool_isinherentlyrecursive' : ' 0' ,
2536
2487
\ ' opt_bool_isselffiltering' : ' 0' ,
2537
2488
\ ' opt_bool_replacewildcardwithcwd' : ' 0' ,
2538
- \ }
2489
+ \ })
2539
2490
endfunction
2540
2491
" }}}
2541
2492
" GetGrepCommandParameters {{{
0 commit comments