 command invocation has an annotate options (\"--annotate 3\"."
   :type 'boolean
   :group 'rdebug)
+
+(defvar rdebug-many-windows-layout-function
+  'rdebug-many-windows-layout-standard
+  "*A function that performs the window layout of `rdebug'.
+
+This is only used in `rdebug-many-windows' mode. This should be
+bound to a function that performs the actual window layout. The
+function should takes two arguments, the first is the source
+buffer and the second the name of the script to debug.
+
+Rdebug provides three different layout functions:
+* `rdebug-many-windows-layout-standard'
+* `rdebug-many-windows-layout-conservative'
+* `rdebug-many-windows-layout-stack-of-secondary-windows'")
 
 (defcustom rdebug-restore-original-window-configuration :many
   "*Control if the original window layout is restored when the debugger exits.


(defun rdebug-process-sentinel (process event)
  "Restore the original window configuration when the debugger process exits."
  (gud-sentinel process event)
  (rdebug-debug-enter "rdebug-process-sentinel"
    (rdebug-debug-message "status=%S event=%S state=%S"
                          (process-status process)
                          event
                          rdebug-window-configuration-state)
    ;; When the debugger process exited, when the comint buffer has no
    ;; buffer process (nil). When the debugger processes is replaced
    ;; with another process we should not restore the window

  (define-key map "B" 'rdebug-display-breakpoints-buffer)
  (define-key map "C" 'rdebug-display-cmd-buffer)
  (define-key map "D" 'rdebug-display-display-buffer)
  (define-key map "O" 'rdebug-display-output-buffer)
  (define-key map "V" 'rdebug-display-variables-buffer)
  (define-key map "S" 'rdebug-display-stack-buffer)
  (define-key map "?" 'rdebug-display-secondary-window-help-buffer))
