1.7 KiB
what if ... a web browser, but tabs were more like emacs buffers?
buffer attributes:
- url
- viewport (this is a departure from the emacs buffer)
commands
A command is a description of a function that may be invoked interactively, and the parameters it expects.
(define-command "visit-location"
visit-location
{:url Type.Url input-from-minibuffer})
;; hit "g" and then enter the location in the minibuffer
(bind-key "g" (command "visit-location"))
;; hit "h" to go straight to your home page
(bind-key "h" (command "visit-location")
{:url (Type.Url "https://home.example.com")})
;; left mouse click on minibuffer hit "h" to go straight to your home page
(bind-event Dunlin.minibuffer :button-1-click (command "visit-location"))
when it is run from the command prompt, each parameter is prompted, with appropriate defaults.
when it is bound to a key chord/sequence, the binding may specify where it gets its parameters from - otherise
visit-location visit-location-in-new-buffer run-command back switch-to-buffer save-file save-link
objects/data types
buffer Buffer.find ;; by name, title, url Buffer.by_name (maybe?)
buffer has-a webview but it is not shown by default. Later we may add some kind of webview reuse so that invisible and old buffers don't need to have a webview until needed.
frame Frame.the-frame frame.set-buffer (buffer) frame.get-buffer => buffer frame.commander - text entry widget frame.actions - container of toolbar buttons
location (url) document document element(?) webview lua's standard types
getting started
gtk stuffz for frame/commander/initial buffer command parser hooked to commander visit-location command