@@ -157,6 +157,7 @@ local default_restricted_rg = {
157
157
" -n" ,
158
158
" --no-heading" ,
159
159
" --color=always" ,
160
+ " -H" ,
160
161
" -S" ,
161
162
}
162
163
-- "rg --column -n --no-heading --color=always -S -uu"
@@ -166,6 +167,7 @@ local default_unrestricted_rg = {
166
167
" -n" ,
167
168
" --no-heading" ,
168
169
" --color=always" ,
170
+ " -H" ,
169
171
" -S" ,
170
172
" -uu" ,
171
173
}
@@ -191,20 +193,59 @@ local default_unrestricted_grep = {
191
193
}
192
194
193
195
--- @param query string
194
- --- @param unrestricted boolean
196
+ --- @param context PipelineContext
197
+ --- @param opts { unrestricted : boolean ?, buffer : boolean ?}
195
198
--- @return string[] | nil
196
- local function live_grep_provider (query , unrestricted )
199
+ local function live_grep_provider (query , context , opts )
197
200
local parsed_query = utils .parse_flag_query (query or " " )
198
201
local content = parsed_query [1 ]
199
202
local option = parsed_query [2 ]
200
203
201
204
local args = nil
202
205
if vim .fn .executable (" rg" ) > 0 then
203
- args = unrestricted and vim .deepcopy (default_unrestricted_rg )
204
- or vim .deepcopy (default_restricted_rg )
206
+ if type (opts ) == " table" and opts .unrestricted then
207
+ args = vim .deepcopy (default_unrestricted_rg )
208
+ elseif type (opts ) == " table" and opts .buffer then
209
+ args = vim .deepcopy (default_unrestricted_rg )
210
+ local current_bufpath = utils .is_buf_valid (context .bufnr )
211
+ and path .reduce (vim .api .nvim_buf_get_name (context .bufnr ))
212
+ or nil
213
+ if
214
+ type (current_bufpath ) ~= " string"
215
+ or string.len (current_bufpath ) == 0
216
+ then
217
+ log .echo (
218
+ LogLevels .INFO ,
219
+ " invalid buffer (%s)." ,
220
+ vim .inspect (context .bufnr )
221
+ )
222
+ return nil
223
+ end
224
+ else
225
+ args = vim .deepcopy (default_restricted_rg )
226
+ end
205
227
elseif vim .fn .executable (" grep" ) > 0 or vim .fn .executable (" ggrep" ) > 0 then
206
- args = unrestricted and vim .deepcopy (default_unrestricted_grep )
207
- or vim .deepcopy (default_restricted_grep )
228
+ if type (opts ) == " table" and opts .unrestricted then
229
+ args = vim .deepcopy (default_unrestricted_grep )
230
+ elseif type (opts ) == " table" and opts .buffer then
231
+ args = vim .deepcopy (default_unrestricted_grep )
232
+ local current_bufpath = utils .is_buf_valid (context .bufnr )
233
+ and path .reduce (vim .api .nvim_buf_get_name (context .bufnr ))
234
+ or nil
235
+ if
236
+ type (current_bufpath ) ~= " string"
237
+ or string.len (current_bufpath ) == 0
238
+ then
239
+ log .echo (
240
+ LogLevels .INFO ,
241
+ " invalid buffer (%s)." ,
242
+ vim .inspect (context .bufnr )
243
+ )
244
+ return nil
245
+ end
246
+ else
247
+ args = vim .deepcopy (default_restricted_grep )
248
+ end
208
249
else
209
250
log .echo (LogLevels .INFO , " no rg/grep command found." )
210
251
return nil
@@ -217,8 +258,15 @@ local function live_grep_provider(query, unrestricted)
217
258
end
218
259
end
219
260
end
220
- table.insert (args , " --" )
221
- table.insert (args , content )
261
+ if type (opts ) == " table" and opts .buffer then
262
+ local current_bufpath =
263
+ path .reduce (vim .api .nvim_buf_get_name (context .bufnr ))
264
+ table.insert (args , content )
265
+ table.insert (args , current_bufpath )
266
+ else
267
+ -- table.insert(args, "--")
268
+ table.insert (args , content )
269
+ end
222
270
return args
223
271
end
224
272
@@ -1859,6 +1907,16 @@ local Defaults = {
1859
1907
},
1860
1908
default_provider = " unrestricted_mode" ,
1861
1909
},
1910
+ {
1911
+ name = " FzfxLiveGrepB" ,
1912
+ feed = CommandFeedEnum .ARGS ,
1913
+ opts = {
1914
+ bang = true ,
1915
+ nargs = " *" ,
1916
+ desc = " Live grep on current buffer" ,
1917
+ },
1918
+ default_provider = " buffer_mode" ,
1919
+ },
1862
1920
-- visual
1863
1921
{
1864
1922
name = " FzfxLiveGrepV" ,
@@ -1880,6 +1938,16 @@ local Defaults = {
1880
1938
},
1881
1939
default_provider = " unrestricted_mode" ,
1882
1940
},
1941
+ {
1942
+ name = " FzfxLiveGrepBV" ,
1943
+ feed = CommandFeedEnum .VISUAL ,
1944
+ opts = {
1945
+ bang = true ,
1946
+ range = true ,
1947
+ desc = " Live grep on current buffer by visual select" ,
1948
+ },
1949
+ default_provider = " buffer_mode" ,
1950
+ },
1883
1951
-- cword
1884
1952
{
1885
1953
name = " FzfxLiveGrepW" ,
@@ -1899,6 +1967,15 @@ local Defaults = {
1899
1967
},
1900
1968
default_provider = " unrestricted_mode" ,
1901
1969
},
1970
+ {
1971
+ name = " FzfxLiveGrepBW" ,
1972
+ feed = CommandFeedEnum .CWORD ,
1973
+ opts = {
1974
+ bang = true ,
1975
+ desc = " Live grep on current buffer by cursor word" ,
1976
+ },
1977
+ default_provider = " buffer_mode" ,
1978
+ },
1902
1979
-- put
1903
1980
{
1904
1981
name = " FzfxLiveGrepP" ,
@@ -1918,12 +1995,21 @@ local Defaults = {
1918
1995
},
1919
1996
default_provider = " unrestricted_mode" ,
1920
1997
},
1998
+ {
1999
+ name = " FzfxLiveGrepBP" ,
2000
+ feed = CommandFeedEnum .PUT ,
2001
+ opts = {
2002
+ bang = true ,
2003
+ desc = " Live grep on current buffer by yank text" ,
2004
+ },
2005
+ default_provider = " buffer_mode" ,
2006
+ },
1921
2007
},
1922
2008
providers = {
1923
2009
restricted_mode = {
1924
2010
key = " ctrl-r" ,
1925
- provider = function (query )
1926
- return live_grep_provider (query , false )
2011
+ provider = function (query , context )
2012
+ return live_grep_provider (query , context , {} )
1927
2013
end ,
1928
2014
provider_type = ProviderTypeEnum .COMMAND_LIST ,
1929
2015
line_opts = {
@@ -1934,8 +2020,24 @@ local Defaults = {
1934
2020
},
1935
2021
unrestricted_mode = {
1936
2022
key = " ctrl-u" ,
1937
- provider = function (query )
1938
- return live_grep_provider (query , true )
2023
+ provider = function (query , context )
2024
+ return live_grep_provider (
2025
+ query ,
2026
+ context ,
2027
+ { unrestricted = true }
2028
+ )
2029
+ end ,
2030
+ provider_type = ProviderTypeEnum .COMMAND_LIST ,
2031
+ line_opts = {
2032
+ prepend_icon_by_ft = true ,
2033
+ prepend_icon_path_delimiter = " :" ,
2034
+ prepend_icon_path_position = 1 ,
2035
+ },
2036
+ },
2037
+ buffer_mode = {
2038
+ key = " ctrl-o" ,
2039
+ provider = function (query , context )
2040
+ return live_grep_provider (query , context , { buffer = true })
1939
2041
end ,
1940
2042
provider_type = ProviderTypeEnum .COMMAND_LIST ,
1941
2043
line_opts = {
@@ -1954,6 +2056,10 @@ local Defaults = {
1954
2056
previewer = file_previewer_grep ,
1955
2057
previewer_type = PreviewerTypeEnum .COMMAND_LIST ,
1956
2058
},
2059
+ buffer_mode = {
2060
+ previewer = file_previewer_grep ,
2061
+ previewer_type = PreviewerTypeEnum .COMMAND_LIST ,
2062
+ },
1957
2063
},
1958
2064
actions = {
1959
2065
[" esc" ] = require (" fzfx.actions" ).nop ,
0 commit comments