(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)) :current (fn [] (let [k (next buffers)] (. buffers k))) :find (fn [term] (. buffers term)) })