Ezbl NEWS – History of Ezbl changes.
This file is about changes in Ezbl.
If you change the size of the window containing a browser window, Ezbl will automatically resize the xwidget to fit the new size.
Ezbl is now able to honor cookie PUT and GET requests from Uzbl, using Uzbl’s (relatively) new “talk_to_socket” system. This means that it is not having to spawn a Python process for each and every cookie on every page you visit, but is talking over a UNIX domain socket (which is fast).
This, combined with the new event system has enabled the following:
Ezbl is now 100% Emacs Lisp, and does not need to launch external processes (aside from Uzbl, of course :). This is largely achieved through the new event-manager system, which lets Uzbl notify Ezbl of changes and events over Standard Output, making for a very quick communication.
This is largely related to the event and cookie handlers, but it bears repeating. In a few tests of loading yahoo.com, Ezbl would take about 30 seconds to finish loading the page. That time has now shrunk to just over 2.5 seconds. By using the event manager to let Uzbl notify us of changes, rather than querying and polling, the amount of dead-time has decreased dramatically. One commit in particular (d99f336) is responsible for the majority of this speedup.
Uzbl uses a special kind of socket type (SOCK_SEQPACKET) for its cookie handlers, and Emacs doesn’t support such sockets (before 23.2, which I helped to add), so you will need to build a custom version of Emacs, available here:
Note that you need the “xembed” branch of that repository.
ezbl-inst is now defined by a defstruct from the CL (Common Lisp) package. This cut down on a lot of the boring and redundant checking and verifying code.
Also note that in an effort to save those precious electrons, all occurrences of `ezbl-instance’ have been replaced with `ezbl-inst’.
In order to better align with the Emacs convention of getting fake namespaces with variable prefixes, the function and variable names have been changed to adhere to a more “least-to-most specific” pattern. That is, what used to be `ezbl-get-inst’ is now `ezbl-inst-get’, so that it shows up next to `ezbl-inst-p’ when sorted alphabetically. This is mostly a cosmetic change, so a simple find and replace will fix any compatibility issues.
It was one of the biggest culprits in slowing down the operation of Ezbl, since it has to repeatedly scan for matching regular expressions. Variables are now handled by keeping a hashtable of the variable names
This marks the first release that is actually somewhat usable for regular browsing, as Ezbl can be launched without manually running Elisp.
Commands such as `ezbl-command-uri’ or `ezbl-command-back’ are now interactive, and so can be invoked through “M-x” or bound to keys.
They are invoked with the “inst” argument set to `nil’, which causes them to look in the current buffer for an `ezbl-instance’ variable. This means that they will work as expected in Ezbl display buffers.
Ezbl display buffers are now read-only and are have the major mode `ezbl-mode’.
The interactive Ezbl commands now have default key bindings, making navigation much easier.
The mode-line now looks more like the regular Emacs default, with the page name in bold and the URI separated from the page name by spaces. Also, display of the major mode now works properly.
Emacs can now implement handlers for cookies, history, downloads, and so on. Currently, the handlers are unused.
The display and output buffers are now called ”ezbl-display-1234” and ”ezbl-output-1234”, respectively, for a Uzbl process with the pid “1234”. This may be more cumbersome when attempting to select a particular display buffer by name, but other selection methods could be used. This decision may be revisited.
Since there is really no string identifier which will persist for the duration of an instance, abandon the “name” field altogether. The process id is used to distinguish instances instead.
The user will not need to look at the output buffer (which captures the stdout of the Uzbl process), so hide it from display. This also disables undo recording of the buffer, which should save some memory.
The mode line is modified to display the current page title and URI. This display is updated whenever Emacs decides to recompute the mode line (which seems to be fairly often).
They now contain the arguments passed to the Uzbl command line, the process object, the pid, and the output and display buffers.
Rather than manually accessing the fields of the instance alist, a family of functions has been created to handle getting and setting the values of the instance.
If the argument provided is an integer, checks `ezbl-instances’ for an instance with a matching pid.
Add the `ezbl-open’ function to create a buffer, embed a Uzbl window, and switch to it.
Just barely supports embedding a Uzbl window in a buffer, not much else for now.