search: show snippets for all matches within a file

This commit is contained in:
Kartik K. Agaram 2022-08-29 16:27:33 -07:00
parent 04a3448696
commit ead10db8a1

View File

@ -835,15 +835,18 @@ function search_in_file(filename)
if contents == nil then
error('no contents in '..filename)
end
local index = contents:find(Display_settings.search_all_term)
local index = contents:find(Display_settings.search_all_term, 1, --[[literal pattern]] true)
if index then
local id = id_for_search_all_pane(Display_settings.search_all_term)
local snippet = contents:sub(math.max(1, index-100), math.min(#contents, index+100))
local outfilename = Directory..id
local success, errmsg = love.filesystem.append(outfilename, '[['..filename..']]\t')
if not success then error(errmsg) end
local success, errmsg = love.filesystem.append(outfilename, '...'..snippet..'...\n\n')
local success, errmsg = love.filesystem.append(outfilename, '[['..filename..']]\n')
if not success then error(errmsg) end
while index do
local snippet = contents:sub(math.max(1, index-100), math.min(#contents, index+100))
local success, errmsg = love.filesystem.append(outfilename, '...'..snippet..'...\n\n')
if not success then error(errmsg) end
index = contents:find(Display_settings.search_all_term, index+1, --[[literal pattern]] true)
end
load_from_disk(Cache[id])
Display_settings.search_all_pane.lines = Cache[id].lines
Text.redraw_all(Display_settings.search_all_pane)