From d37020870600d6c842f9a75ebd3986df6010c25c Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 2 Aug 2025 21:54:15 +0530 Subject: Add hints extra for opening links (number keys only) --- lua/null-browser/extras/hints.lua | 65 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 lua/null-browser/extras/hints.lua (limited to 'lua') diff --git a/lua/null-browser/extras/hints.lua b/lua/null-browser/extras/hints.lua new file mode 100644 index 0000000..f2ee21b --- /dev/null +++ b/lua/null-browser/extras/hints.lua @@ -0,0 +1,65 @@ +local hints = { + config = { + mode = 'f', + }, +} + +local js_setup_code = '' + +function hints.init(on_ready) + hints.load_finder_js(function() + web.keymap.set(hints.config.mode, '', function() + hints.stop() + end) + + web.event.add_listener('KeyPressed', { + callback = function(event) + if web.keymap.get_mode() == hints.config.mode then + hints.filter_key(event.key) + end + end, + }) + + if type(on_ready) == 'function' then on_ready() end + end) +end + +function hints.start(selector, new_view) + local open_in_new_view = new_view and 'true' or 'false' + web.view.run_js( + js_setup_code .. + ";_nullbrowser.finder.start('" .. + selector .. + "', " .. + open_in_new_view .. + ")" + ) + web.schedule(function() + -- Trigger f mode after tick to avoid the trigger key (f) to get captured in event + web.keymap.set_mode(hints.config.mode) + end) +end + +function hints.filter_key(key) + web.view.run_js("_nullbrowser.finder.filterOutByKey('" .. key .. "')") +end + +function hints.stop() + web.keymap.set_mode('n') + web.view.run_js('_nullbrowser.finder.stop()') +end + +function hints.load_finder_js(on_ready) + web.uv.fs_open('./assets/javascript/finder.js', 'r', 438, function(err, file) + if err then return end + if not file then return {} end + local stat = assert(web.uv.fs_fstat(file)) + local js = assert(web.uv.fs_read(file, stat.size)) + assert(web.uv.fs_close(file)) + js_setup_code = js + + on_ready() + end) +end + +return hints -- cgit v1.3.1