       (ad-deactivate 'get-mru-window)
       (ad-deactivate 'delete-window)
       (ad-deactivate 'delete-other-windows)
-      ;; (ad-deactivate 'balance-windows)
+      (ad-deactivate 'balance-windows)
       (ad-deactivate 'mwheel-scroll)
       (ad-deactivate 'select-window)
       (ad-deactivate 'kill-buffer)
       (ad-deactivate 'gdb)
+      (define-key lisp-interaction-mode-map (kbd "C-x k") nil)
 
       (smartwin-hide))))
 

                   name)))
           (buffer-list)))))

 (defun smartwin--make-normal-buffer-list ()
  "Return list of normal buffers that not shown."
  (let ((visible-buffers (ido-get-buffers-in-frames 'current)))
    (delq nil

  "When a bffer should be shown in smart window, show it in smart window."
  (let ((buffer-or-name (ad-get-arg 0)))
    (if (smartwin--match-buffer buffer-or-name)
        (let ((scratch-buffer (get-buffer "*scratch*"))
              (cur-buffer (current-buffer)))
          ;; not show smart window when start up
          (if (not (and (eq cur-buffer scratch-buffer)
                        (eq cur-buffer (get-buffer buffer-or-name))
                        (not (buffer-modified-p (get-buffer "*scratch*")))))
              (let ((smart-win (smartwin--get-or-create-smart-window)))
                (with-selected-window smart-win ad-do-it)
                (select-window smart-win))))
      (let ((window (selected-window)))
        (if (smartwin--smart-window-p window)
            (switch-to-buffer-other-window buffer-or-name)
