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 == '' thenreturn Manifestendlocal result = {}-- We can only search definitions that have source codefor def in pairs(Definitions) dolocal contents = Definitions[def].datafor _,line in ipairs(contents) doif line:lower():find(filter) thentable.insert(result, def)breakendendendreturn resultend
manifest_navigator_candidates_by_name = function()local filter = Manifest_navigator.filter:lower()if filter == '' thenreturn Manifestendlocal result = {}for _,def in ipairs(Manifest) doif def:lower():find(filter) thentable.insert(result, def)endendreturn resultend
-- draw a border around the current viewporttable.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_navigatorManifest_navigator = {show = false,filter_full_text = false,for_delete = false,reload = false,num_lines = nil,index = 1,filter = '',bottom_y = nil,}Manifest_navigator.candidates = ManifestManifest_navigator.num_lines = num_lines_for_manifest_navigator(Manifest_navigator.candidates)end
if Manifest_navigator.filter_full_text thenreturn manifest_navigator_candidates_by_contents()elsereturn manifest_navigator_candidates_by_name()end
show = false, -- display navigator on screenfilter_full_text = false, -- if true, show matching definition contents rather than namesfor_delete = false, -- if true, delete selected definition from navigator on enter}reload = false, -- if true, refresh manifest to display on next keystrokenum_lines = nil, -- number of screen lines of space to devote to the navigatorindex = 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')
endManifest_navigator.show = trueinitialize_manifest_navigator()elseif chord == 'C-s' thenManifest_navigator.show = trueManifest_navigator.filter_full_text = true
end