Hi all, There have been a number of requests through the years of this project for a way to change the order of buffers within a window. We have had at least a couple of patches submitted to implement this, but there has always been a large, but perhaps subtle, problem with the design that needed to be addressed before committing to adding the feature. Indeed calling it a "feature" is a little misleading because when you think about its implications, it really goes to the core design of the UI. I've just completed an implementation of buffer-moving that addresses the big problem, and it is available in the branch 'buffer-ordering' of our main git repo:
git://repo.or.cz/conkeror.git The big problem that needed to be addressed was a question of the coherency of the UI when you introduce the concept that buffers have spatial relationships to each other. Heretofore, the primary order of buffers within a window has been their temporal relationship, order by access time. Although buffers do have a certain spatial order which can be visualized by tabs or in the read-buffer completions list, this was really more of a side-effect than an intentional design. Tabs have been considered as something of an unwanted stepchild because of the logical contradictions they raise with the emacs-based paradigm of the rest of the UI. To understand the conflict, it is useful to consider the 'bury-buffer' command, which like its emacs analog, banishes a buffer to the end of the access-time list. If we now decide once and for all that buffers do indeed have a spatial ordering that is to be considered as primary, what becomes of bury-buffer? Does bury-buffer now become the unwanted stepchild, a relic with no practical purpose in a space-oriented UI? In a spatially oriented UI, bury-buffer must have a spatial meaning in addition to its temporal one, but *where* is "buried"? The way out of the problem is to consider the default ordering of new buffers. The end of the buffer-list is the natural place for buried buffers to go, but if new buffers are also created in that position, we find ourselves with an illogical UI. So here is the idea that I've implemented in the buffer-ordering branch: * When you open an url or a webjump in a new buffer, the new buffer opens at the front of the list. (on the left side, in terms of tabs) * When you follow a link or other DOM object in a new buffer, the buffer containing that link or object is called the "opener", and the new buffer is created to the immediate right of its opener. I have been especially mindful in developing this that there is no "one size fits all" when it comes to buffer ordering. Different people may have different preferences, so I've left room for making the ordering configurable, once we have a better idea of what users' needs are. I think that's about all. Please try the branch, and share your comments and ideas. -- John Foerch _______________________________________________ Conkeror mailing list [email protected] https://www.mozdev.org/mailman/listinfo/conkeror
