e2wm

Homepage: https://github.com/kiwanami/emacs-window-manager

Updated:

Summary

Simple window manager for emacs

Commentary

This is an demonstration implementation of introducing window management to Emacs.
* Management of list of editable buffers
* Assignment of windows for pop-up buffers
* Switching window layout like the perspective in eclipse
* Plug-in extension

The current implementation has following perspectives:
* code      : main coding layout
* two       : side by side layout
* doc       : reading documentation layout
* dashboard : showing plug-ins like dashboard in Mac OSX
* array     : selecting buffers like expose in Mac OSX

Installation:

(1) Put e2wm.el and window-layout.el in load-path.
(2) Put the following code in your .emacs file,
   (require 'e2wm)
(3) M-x e2wm:start-management to start e2wm.
To stop e2wm, M-x e2wm:stop-management or [C-c ; Q].


Customization

* Layout recipe (`e2wm:c-PST-NAME-recipe'):

Layout recipe RECIPE (e.g., `e2wm:c-code-recipe') is a recursive
tree-like structure defined as follows:

(SPLIT-TYPE [SPLIT-OPTION]
            WINDOW-or-RECIPE    ; left or upper side
            WINDOW-or-RECIPE)   ; right or lower side

WINDOW is a name (symbol) of the window. This is used in the
`:name' property of the window information list (winfo, see the
next section).

Split types (SPLIT-TYPE):

  - : split vertically
  | : split horizontally

Split option list SPLIT-OPTION is a plist with the following
properties. (the prefix 'left' can be replaced by 'right', 'upper'
and 'lower'.):

  :left-size        : (column or row number) window size
  :left-max-size    : (column or row number) if window size is larger
                    : than this value, the window is shrunken.
  :left-size-ratio  : (0.0 - 1.0) window size ratio. the size of
                    : the other side is the rest.

Note:
The split option can be omitted.
The size parameters, :size, :max-size and :size-ratio, are mutually
exclusive.  The size of a window is related with one of the other
side window. So, if both side windows set size parameters, the
window size may not be adjusted as you write.

* Window information  (`e2wm:c-PST-NAME-winfo'):

Window information (e.g., `e2wm:c-code-winfo') is a list of window
options (plist).  Besides the options defined in window-layout.el,
`:name' (mandatory), `:buffer', `:default-hide' and `:fix-size',
e2wm has additional options.

  :name      [*] : the window name.
  :buffer        : A buffer name or a buffer object to show the window.
                 : If nil or omitted, the current buffer remains.
  :default-hide  : If t, the window is hided initially.
                 : (type: t or nil, default: nil)
  :fix-size      : If t, when the windows are laid out again, the
                 : window size is remained.
                 : (type: t or nil, default: nil)
  :plugin        : Plug-in name.
                 : (type: symbol)
  :plugin-args   : Arguments for the plug-in.  See each plug-in
                 : documentation for use of this option.
                 : (type: any lisp objecct)

Development memo:

See readme for further documentation.

** Side effects

* advice
 - bufferç³»
    switch-to-buffer, pop-to-buffer
 - window-configurationç³»
    current-window-configuration
    window-configuration-frame
    compare-window-configurations
    set-window-configuration
    window-configuration-p
* hook
    kill-buffer-hook
    window-configuration-change-hook
    completion-setup-hook
    after-save-hook
* override variable
    special-display-function

** Local words
pst     : Perspective
e2wm:c- : Configuration variables
e2wm:$  : Structure functions

** Source code layout

Configurations  / e2wm:c-
Fundamental functions
Buffer history management / e2wm:history-
Framework for perspectives / e2wm:pst-
Framework for perspective set / e2wm:pstset-
Advices and hooks (switch-to-buffer, pop-to-buffer and so on)
Framework for plug-ins / e2wm:plugin-
Menu definition / e2wm:menu-
Plug-in definitions / e2wm:def-plugin-
Perspective definitions / e2wm:dp-
  code  / e2wm:dp-code-
  doc   / e2wm:dp-doc-
  two   / e2wm:dp-two-
  dashboard / e2wm:dp-dashboard-
  array / e2wm:dp-array-
Start-up and exit e2wm

Dependencies

Reverse dependencies