Neomacs manage windows using frame-root buffers -- the window tree in Neomacs is itself a buffer! Selecting windows are implemented by moving focus in the frame-root buffer. Creating and removing windows are implemented by editing the frame-root buffer. This is one of the many nice things about computing environment inside a structural editor, which wouldn't be possible in, say, a text editor.
Selecting a different window:
C-x o
): other-window
()
prev-other-window
()
Deleting windows:
C-x 0
): close-window
(&optional (buffer (current-buffer)))
C-x 1
): delete-other-windows
(&optional (buffer (current-buffer)))
Splitting windows:
C-x 3
): split-window-right
(&optional (buffer (replacement-buffer)))
C-x 2
): split-window-below
(&optional (buffer (replacement-buffer)))
Neomacs frames display a small buffer at the bottom to display messages.
message
(control-string &rest format-arguments)
*Messages*
buffer.element
s or
text-node
s), which are displayed and logged. FORMAT-ARGUMENTS must
be nil in this case.*message-log-max*
*Messages*
buffer.*Messages*
buffer.Frame-root buffers are buffers with frame-root-mode
enabled and manages Neomacs windows, which in turn displays other buffers. frame-root-mode
expect buffer content to follow certain conventions:
content
buffer
CSS attribute, which is the ID of the buffer being displayed.main
content
CSS class. It marks the corresponding buffer as the main buffer for the containing window. A buffer
or minibuffer
element must have exactly one descendant with this class.buffer
main
descendant. It may have multiple content
descendants, the ones without main
CSS class display child buffers.vertical-child-container
buffer
element and must contain main
element. Including an vertical-child-container
element in a buffer
element allows it to support displaying vertically-split child buffers (i.e. on the left or right side), which are inserted as children of the vertical-child-container
element.minibuffer
buffer
elements).selectable
vertical
buffer
elements, which are displayed side-by-side.horizontal
buffer
or minibuffer
elements, which are displayed row-by-row.Besides content
elements that display buffer contents, buffer
and minibuffer
elements can have other children, which are rendered normally by the frame-root buffer. These elements are used to draw window decorations like header lines.
window-decoration-aux
(buffer)
div
with buffer
or minibuffer
CSS class, which
contains a single descendant with both main
and content
CSS
class. This descendant must have a buffer
CSS attribute with the
id
of BUFFER as its value.content
CSS
class.update-window-decoration-field
(buffer name text)
window-decoration
(object)