File: chrome_wm.lua

package info (click to toggle)
luakit 1%3A2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,844 kB
  • sloc: ansic: 12,519; makefile: 140; ruby: 79; sh: 48
file content (29 lines) | stat: -rw-r--r-- 859 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- Add custom luakit:// scheme rendering functions.
-- @submodule chrome
-- @copyright 2017 Aidan Holm <aidanholm@gmail.com>

local ui = ipc_channel("chrome_wm")

local _M = {}

local pending = {}
local next_id = 0

ui:add_signal("function-return", function (_, _, id, ok, ret)
    local callbacks = assert(pending[id])
    pending[id] = nil
    (callbacks[ok and "resolve" or "reject"])(ret)
end)

ui:add_signal("register-function", function (_, _, page_name, func_name)
    local pattern = "^luakit://" .. page_name .. "/?(.*)"
    luakit.register_function(pattern, func_name, function (page, resolve, reject, ...)
        pending[next_id] = { resolve = resolve, reject = reject }
        ui:emit_signal("function-call", page.id, page_name, func_name, next_id, {...})
        next_id = next_id + 1
    end)
end)

return _M

-- vim: et:sw=4:ts=8:sts=4:tw=80