lots of dependent changes here, unfortunately - get rid of Buffer.current (it's per-frame now) - in define-command, functions providing default parameter values now accept frame as parameter - in keymaps, parameter values are functions that accept frame as parameter
38 lines
1.5 KiB
Fennel
38 lines
1.5 KiB
Fennel
(local { : Gtk : Gdk : WebKit2 : cairo } (require :lgi))
|
|
(local { : view } (require :fennel))
|
|
|
|
(fn new-buffer [name keymap]
|
|
(let [props {}
|
|
widget (WebKit2.WebView {
|
|
;; :on_decide_policy
|
|
;; (fn [self decision dtype]
|
|
;; (if (and
|
|
;; (WebKit2.ResponsePolicyDecision:is_type_of decision)
|
|
;; (not (decision:is_mime_type_supported)))
|
|
;; (do
|
|
;; (download decision.request.uri decision.response.http_headers)
|
|
;; (decision:ignore)
|
|
;; true)
|
|
;; false))
|
|
:on_notify
|
|
(fn [self pspec]
|
|
(when (not (= pspec.name :parent))
|
|
(let [val (. self pspec.name)]
|
|
(tset props pspec.name val)
|
|
;(listeners:notify pspec.name val)
|
|
)))
|
|
})]
|
|
{:webview widget
|
|
:name name
|
|
:visit (fn [self u] (widget:load_uri u))
|
|
:properties props}))
|
|
|
|
(let [buffers {}]
|
|
{
|
|
:new (fn [name]
|
|
(let [b (new-buffer name)]
|
|
(tset buffers name b)
|
|
b))
|
|
:find (fn [term] (. buffers term))
|
|
})
|