From 93d4ce1e19dd390cbf6b8e0e49e0f7eface5f279 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Mon, 11 Jul 2011 21:40:16 -0700 Subject: [PATCH] * mh-compat.el (mh-pop-to-buffer-same-window): Add compatibility function to call switch-to-buffer on systems that lack pop-to-buffer-same-window. * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder) (mh-make-folder): Call mh-pop-to-buffer-same-window instead of switch-to-buffer. The previous change which used pop-to-buffer produced the wrong behavior. --- lisp/mh-e/ChangeLog | 10 ++++++++++ lisp/mh-e/mh-compat.el | 32 ++++++++++++++++++++++---------- lisp/mh-e/mh-folder.el | 8 ++++---- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index d6ee6329ae7..1ee4867fde6 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,3 +1,13 @@ +2011-07-12 Bill Wohler + + * mh-compat.el (mh-pop-to-buffer-same-window): Add compatibility + function to call switch-to-buffer on systems that lack + pop-to-buffer-same-window. + * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder) + (mh-make-folder): Call mh-pop-to-buffer-same-window instead of + switch-to-buffer. The previous change which used pop-to-buffer + produced the wrong behavior. + 2011-07-12 Henrique Martins (tiny change) * mh-xface.el (mh-picon-get-image): Remove quote from block diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el index ae2cbff408f..16dfe05b094 100644 --- a/lisp/mh-e/mh-compat.el +++ b/lisp/mh-e/mh-compat.el @@ -122,16 +122,6 @@ introduced in Emacs 22." "XEmacs does not have `font-lock-add-keywords'. This function returns nil on that system.") -(defun-mh mh-window-full-height-p - window-full-height-p (&optional WINDOW) - "Return non-nil if WINDOW is not the result of a vertical split. -This function is defined in XEmacs as it lacks -`window-full-height-p'. The values of the functions -`window-height' and `frame-height' are compared instead. The -argument WINDOW is ignored." - (= (1+ (window-height)) - (frame-height))) - (defun-mh mh-image-load-path-for-library image-load-path-for-library (library image &optional path no-error) "Return a suitable search path for images used by LIBRARY. @@ -261,6 +251,18 @@ The argument STRING is ignored." (buffer-substring-no-properties (match-beginning num) (match-end num))) +(defun-mh mh-pop-to-buffer-same-window + pop-to-buffer-same-window (&optional buffer-or-name norecord label) + "Pop to buffer specified by BUFFER-OR-NAME in the selected window. +Another window will be used only if the buffer can't be shown in +the selected window, usually because it is dedicated to another +buffer. Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are +as for `pop-to-buffer'. This macro is used by Emacs versions that +lack the `pop-to-buffer-same-window' function, introduced in +Emacs 24. The function `switch-to-buffer' is used instead and +LABEL is ignored." + (switch-to-buffer buffer-or-name norecord)) + (defun-mh mh-replace-regexp-in-string replace-regexp-in-string (regexp rep string &optional fixedcase literal subexp start) "Replace REGEXP with REP everywhere in STRING and return result. @@ -312,6 +314,16 @@ The arguments RETURN-TO and EXIT-ACTION are ignored." (if exit-action nil) (view-mode 1)) +(defun-mh mh-window-full-height-p + window-full-height-p (&optional WINDOW) + "Return non-nil if WINDOW is not the result of a vertical split. +This function is defined in XEmacs as it lacks +`window-full-height-p'. The values of the functions +`window-height' and `frame-height' are compared instead. The +argument WINDOW is ignored." + (= (1+ (window-height)) + (frame-height))) + (defmacro mh-write-file-functions () "Return `write-file-functions' if it exists. Otherwise return `local-write-file-hooks'. diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el index 2248221664b..1d9a79d0deb 100644 --- a/lisp/mh-e/mh-folder.el +++ b/lisp/mh-e/mh-folder.el @@ -795,7 +795,7 @@ instead." (setq threading-needed-flag mh-show-threads-flag) (setq mh-previous-window-config config)) ((not (eq (current-buffer) (get-buffer folder))) - (pop-to-buffer folder) + (mh-pop-to-buffer-same-window folder) (setq mh-previous-window-config config)))) (mh-get-new-mail file) (when (and threading-needed-flag @@ -855,7 +855,7 @@ From a program, edit MESSAGE; nil means edit current message." ;; Just show the edit buffer... (delete-other-windows) - (pop-to-buffer edit-buffer))) + (mh-pop-to-buffer-same-window edit-buffer))) ;;;###mh-autoload (defun mh-next-button (&optional backward-flag) @@ -1705,7 +1705,7 @@ DONT-EXEC-PENDING is non-nil." (unless dont-exec-pending (mh-process-or-undo-commands folder) (mh-reset-threads-and-narrowing)) - (pop-to-buffer folder))) + (mh-pop-to-buffer-same-window folder))) (mh-regenerate-headers range) (if (zerop (buffer-size)) (if (equal range "all") @@ -1786,7 +1786,7 @@ Also removes all content from the folder buffer." (defun mh-make-folder (name) "Create a new mail folder called NAME. Make it the current folder." - (pop-to-buffer name) + (mh-pop-to-buffer-same-window name) (setq buffer-read-only nil) (erase-buffer) (if mh-adaptive-cmd-note-flag -- 2.39.2