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.elements or
text-nodes), 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:
contentbuffer CSS attribute, which is the ID of the buffer being displayed.maincontent 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.buffermain descendant. It may have multiple content descendants, the ones without main CSS class display child buffers.vertical-child-containerbuffer 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.minibufferbuffer elements).selectableverticalbuffer elements, which are displayed side-by-side.horizontalbuffer 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)