F3YDOIDPLXNLK3EB7ZYKUT3DMUS22Q5XMNW6FUK634U6MG7NEDNQC
TKD5SKHDLNUHHGHB5AMUSV4RHAGOS7T6BHZS7LGQATC2YQITHY7AC
GMJOEWFE6ZBKB5T2Y3AMDKIAJEN7WA7SSHJNZZXQ7TJXDCQYCSGQC
6YROGOP46IA33F6PD5AJHEARZE6FZTMD4DN3JOLHB26NX5IXVEOQC
5EV4H3NSVUXJ72JH2JPETFV2BRDVKHKNES7L6UAQKYIXLKKXHA6AC
NDXB7GUWDCC5TDDOL2HUAP7RP2RY64ZLGQWETLL47ZHONE3HEQHQC
X2B22MKU4FWW7EEON4IAZJU53PWNNPAKMMLX62EM5DVBLGMUIC5QC
R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC
HQQKG6VLRZOSH5CSKECCQ5C7E37Q5SDDZN3U3E4MTSU67RCQQ2CAC
7TQAF4BYIK75EEYCCK7VEUSZHNCWMWIA3HZGQKIILYESUZ5ZZRVQC
O5GJ6PNNBYHH4X3DU4XOB7IDJ4QEW5KXFETIDUJESBUKJYXBSYYAC
6KWWBTHIBL5OC34J2QFGMVZHPMIGFHVICSABW2UP34OJO67J7EGQC
MAI7M665OPEDNICH67IUYSIVLRDL4JPC5BO2EWG2JVQTXATU72MAC
Y6O2RFHV5UGHFS3ZZEH5HPKN5I7SV74GEV47MTI4WGJPAINJMBZAC
ZXQ2MMPAOIA4TN3TWMFPXZUL7NUE3EWXLV2JHBQXEINE7WCKFSIQC
AZS44H5MHGCREAQDHLCKHLN7CATGCGO2V4SZ6ZNLXEGYGIFUKDMQC
6C3UZDESM2HPFIHAW5YIPUV6VXO4YV5DIEY574HUGP2DGOQNUVOAC
R5HNWYMH47LWVHS5VVXNR6TCBDXDURVXZ6RCUNFTTTMIXF275ULQC
JIBCE66ZTWM5WEHEHNKKTRWBJQSQWBDDWPMOJIJR5Q676OSHYCNAC
BF7TW3EKRIDYC6J2Q2J4YOBAVQF55Y3H6KGZIHNXMH4N72MR6GXQC
OEJIDMZ2F2WEV7N7PSLMJL3RG55ZHI552AQJUTCG27XRT4VZTRUAC
OELP2MAL5RGZ3AZ42V6H7RLGX52JLNHGUD7GV6YIVZ3ACOK5SFSQC
manifest_navigator_candidates_by_contents = function()
local filter = Manifest_navigator.filter:lower()
if filter == '' then
return Manifest
end
local result = {}
-- We can only search definitions that have source code
for def in pairs(Definitions) do
local contents = Definitions[def].data
for _,line in ipairs(contents) do
if line:lower():find(filter) then
table.insert(result, def)
break
end
end
end
return result
end
manifest_navigator_candidates_by_name = function()
local filter = Manifest_navigator.filter:lower()
if filter == '' then
return Manifest
end
local result = {}
for _,def in ipairs(Manifest) do
if def:lower():find(filter) then
table.insert(result, def)
end
end
return result
end
-- draw a border around the current viewport
table.insert(Surface, {type='rectangle', drawmode='fill', x=saved_viewport.x, y=saved_viewport.y, w=saved_viewport.w, h=saved_viewport.h, r=0,g=0,b=0,a=0.2})
-- Things go very bad if the canvas gets too large.
-- Even though it's in memory, LÖVE seems to use memory in the graphics card to write graphics to it.
-- If the canvas is too big to fit in graphics card memory, you get an unrecoverable error.
-- So I try to keep it from getting too large. But with a hard-coded constant because
-- I don't know how to measure how much graphics memory a computer has.
-- It might not protect older computers.
-- This is the place to experiment with if you run into an error about SDL limits and contacting Kartik.
local w = math.min(16000, Global_viewport.w)
local h = math.min(16000, Global_viewport.h)
-- keep fields sync'd with definition of Manifest_navigator
Manifest_navigator = {
show = false,
filter_full_text = false,
for_delete = false,
reload = false,
num_lines = nil,
index = 1,
filter = '',
bottom_y = nil,
}
Manifest_navigator.candidates = Manifest
Manifest_navigator.num_lines = num_lines_for_manifest_navigator(Manifest_navigator.candidates)
end
if Manifest_navigator.filter_full_text then
return manifest_navigator_candidates_by_contents()
else
return manifest_navigator_candidates_by_name()
end
show = false, -- display navigator on screen
filter_full_text = false, -- if true, show matching definition contents rather than names
for_delete = false, -- if true, delete selected definition from navigator on enter
}
reload = false, -- if true, refresh manifest to display on next keystroke
num_lines = nil, -- number of screen lines of space to devote to the navigator
index = 1, -- where the cursor is right now. Modified on arrow keys, reset on any non-arrow keystroke.
filter = '', -- prefix being typed into the command palette
add_hotkey_to_menu('ctrl+f: find')
add_hotkey_to_menu('ctrl+left ctrl+right: prev/next word')
end
Manifest_navigator.show = true
initialize_manifest_navigator()
elseif chord == 'C-s' then
Manifest_navigator.show = true
Manifest_navigator.filter_full_text = true
end