               (const :tag "Debu9" 15)
               (const :tag "Reset" :reset))
   :set 'log4cl-set-menu-levels
-  :group 'log4cl)
-
+  :group 'log4cl
+  :require 'log4cl)
+
+(defcustom log4cl-fast-level-selection-single-key nil
+  "Non-nil means fast level selection exits after first change.
+When nil, you have to press q to exit it.  This variable can also
+have the value `expert'.  In this case, the window displaying the
+levels menu is not even shown"
+  :group 'log4cl
+  :type '(choice
+	  (const :tag "No" nil)
+	  (const :tag "Yes" t)
+	  (const :tag "Expert" expert))
+  :require 'log4cl)
 
 (defun log4cl-make-levels-menu (info-symbol &optional nodisplay noinherit)
   "Create a levels menu for logger specified in the value of the INFO-SYMBOL"

      (add-text-properties 0 (length text) (first args) text)
      text)))

(defun log4cl-fast-level-selection (&optional arg)
  "Set log level interactively"
  (interactive)

  ;; (figure out the list of things to display)
  (let ((log4cl-root-logger nil)
        (log4cl-package-logger nil)
        (log4cl-file-logger nil)

                                   (log4cl-logger-inherited-level info)))))))


(defun log4cl-layout-columns (table nsubcol width maxcol col-pad)
  "Given a table like ((aa bbb ccc) (aaaa bbbb ccc)) calculate how many columns we can
  lay it down with in a given width, so each element aligns below the other"
  (let* ((cw '())
