From: Christoph <cschol2112@gmail.com>
To: emacs-devel@gnu.org
Subject: Removing mode-specific window restore code
Date: Sun, 31 Aug 2014 12:45:04 -0600 [thread overview]
Message-ID: <CAOrdkqPRzmfNXzaQxVTY03kgHvGdizQwZ9dS-S=WU8DS872uuQ@mail.gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 4019 bytes --]
Some modes have their own quit function, which buries/kill buffer and often
times also restores the window configuration from its own internally stored
variables or runs specific cleanup code.
Previous discussion here:
https://lists.gnu.org/archive/html/emacs-devel/2011-10/msg00915.html
First, I would like to try to remove the mode-specific window restore code
and let `quit-window' handle this.
One low-hanging example (unless I am missing anything) is in ibuffer.el.
Using `quit-window' also allows to kill the buffer with `C-u q', which is
new behavior for `ibuffer', but align with other modes.
Next, I would like to look at modes that do "other stuff" in their
respective `quit' function. This goes back to the `quit-window-hook'
discussion in the above mentioned thread. This also includes modes that
just plainly call `bury-buffer' without restoring window configuration
instead of `quit-window' upon quitting the mode.
Should I open bug reports for each instance to track the review or post
patches here?
ibuffer patch, comments welcome:
=== modified file 'lisp/ibuffer.el'
--- lisp/ibuffer.el 2014-08-08 14:35:40 +0000
+++ lisp/ibuffer.el 2014-08-31 17:26:11 +0000
@@ -540,7 +540,7 @@
(define-key map (kbd "/ X") 'ibuffer-delete-saved-filter-groups)
(define-key map (kbd "/ \\") 'ibuffer-clear-filter-groups)
- (define-key map (kbd "q") 'ibuffer-quit)
+ (define-key map (kbd "q") 'quit-window)
(define-key map (kbd "h") 'describe-mode)
(define-key map (kbd "?") 'describe-mode)
@@ -878,12 +878,6 @@
(define-key map [down-mouse-3] 'ibuffer-mouse-popup-menu)
map))
-(defvar ibuffer-restore-window-config-on-quit nil
- "If non-nil, restore previous window configuration upon exiting
`ibuffer'.")
-
-(defvar ibuffer-prev-window-config nil
- "Window configuration before starting Ibuffer.")
-
(defvar ibuffer-did-modification nil)
(defvar ibuffer-compiled-formats nil)
@@ -2298,18 +2292,6 @@
(goto-char (point-min))
(forward-line orig))))
-(defun ibuffer-quit ()
- "Quit this `ibuffer' session.
-Try to restore the previous window configuration if
-`ibuffer-restore-window-config-on-quit' is non-nil."
- (interactive)
- (if ibuffer-restore-window-config-on-quit
- (progn
- (bury-buffer)
- (unless (= (count-windows) 1)
- (set-window-configuration ibuffer-prev-window-config)))
- (bury-buffer)))
-
;;;###autoload
(defun ibuffer-list-buffers (&optional files-only)
"Display a list of buffers, in another window.
@@ -2350,7 +2332,6 @@
(interactive "P")
(when ibuffer-use-other-window
(setq other-window-p t))
- (setq ibuffer-prev-window-config (current-window-configuration))
(let ((buf (get-buffer-create (or name "*Ibuffer*"))))
(if other-window-p
(funcall (if noselect (lambda (buf) (display-buffer buf t))
#'pop-to-buffer) buf)
@@ -2362,8 +2343,7 @@
(select-window (get-buffer-window buf 0))
(or (derived-mode-p 'ibuffer-mode)
(ibuffer-mode))
- (setq ibuffer-restore-window-config-on-quit other-window-p)
- (when shrink
+ (when shrink
(setq ibuffer-shrink-to-minimum-size shrink))
(when qualifiers
(require 'ibuf-ext)
@@ -2501,7 +2481,6 @@
'\\[ibuffer-switch-format]' - Change the current display format.
'\\[forward-line]' - Move point to the next line.
'\\[previous-line]' - Move point to the previous line.
- '\\[ibuffer-quit]' - Bury the Ibuffer buffer.
'\\[describe-mode]' - This help.
'\\[ibuffer-diff-with-file]' - View the differences between this buffer
and its associated file.
@@ -2616,7 +2595,6 @@
(set (make-local-variable 'ibuffer-cached-eliding-string) nil)
(set (make-local-variable 'ibuffer-cached-elide-long-columns) nil)
(set (make-local-variable 'ibuffer-current-format) nil)
- (set (make-local-variable 'ibuffer-restore-window-config-on-quit) nil)
(set (make-local-variable 'ibuffer-did-modification) nil)
(set (make-local-variable 'ibuffer-tmp-hide-regexps) nil)
(set (make-local-variable 'ibuffer-tmp-show-regexps) nil)
[-- Attachment #2: Type: text/html, Size: 6286 bytes --]
next reply other threads:[~2014-08-31 18:45 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-31 18:45 Christoph [this message]
2014-08-31 20:05 ` Removing mode-specific window restore code Stefan Monnier
2014-08-31 20:49 ` Christoph
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOrdkqPRzmfNXzaQxVTY03kgHvGdizQwZ9dS-S=WU8DS872uuQ@mail.gmail.com' \
--to=cschol2112@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.