Hash: SHA1
AUX 50popwin-gentoo.el 336 RMD160 b74c230ee9f2aba500e24a572b85df5ed7b678d7 SHA1 e118efeca00d73ac7bf2dc4c7dbf1ab5e83b4922 SHA256 83b93e883091c14a5dacda9fad6352e2bf23377c52f498cb2e8acce21ac65bd8
+AUX popwin-0.3-emacs24.patch 5227 RMD160 62161470f2597921f3dd747ae255cdf6063bb8b5 SHA1 1511e8d88feadff4fc5aaddb75f4858fad077ed5 SHA256 abc32a358a5ddd382635384a339677c8ae87b089b37246e1bf90aed540aebe57
DIST popwin-0.3.tar.gz 10394 RMD160 53c7faa406c04f8b39bf2ad1a7318e8b69ba40e8 SHA1 c6c64aad328373883915eed7b7f26cc881efeafa SHA256 bdeea5f66cd8b0b842347ee1127fc18ec88eb7b6e1c2cc1eac7c8588bdcc50de
-EBUILD popwin-0.3.ebuild 590 RMD160 85b7336f19fde9a56f5de34724b43e40abc8128e SHA1 3d2ac49e83a79ed0077e85c4b59b013a44b1dcb8 SHA256 5a0651a609d10bd70cd1b2de00c28cbede750ca0ad6affdbd9c40b27e5f5f6c6
-MISC ChangeLog 582 RMD160 2e5af954679360965290cd0c9cc4c50561868125 SHA1 2df5b05b2a02c54662bcd1a3847a89704dcfd30a SHA256 a618ef3fc7918be0dde3b9ccee2a90b32944c48790b466317a734a99e662ca26
+EBUILD popwin-0.3-r1.ebuild 653 RMD160 66e27ad7e7c22a8895d6cac66ea44fde865ea603 SHA1 9cfbf0e3e3342f0bfb400323e83775cda925a16e SHA256 eb04944cfd3e3221a2b58083d81aa81d6c67f0795f2528030ff427206e9aafe1
+MISC ChangeLog 773 RMD160 dfdd02f433514a39797f2370f999d654c0a9219a SHA1 4e0e3387572dfcb569e6df256543d782d96fdf8e SHA256 61c92b65c2c55b9781aceb6fbc485b3d76ef16bb0bef83178388e02fc8bb3f6d
MISC metadata.xml 219 RMD160 41cade9174d0ed71f0dde58144f74c2012b6b210 SHA1 e65a33d1c83bed3c61fb637a64aee0b331f2635a SHA256 9761d87f8c96c0a11b7e70f79b5e9013081f5bda009290e02879c8501c3dc817
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
-iEYEARECAAYFAk6QGXUACgkQOeoy/oIi7uy/8gCfTghLVGjs5xNwiBvo0dGF6ayQ
-uWoAoMjHpm9ydAzMJf20gFnj/2gASahP
-=QC1f
+iEYEARECAAYFAk6hIp0ACgkQGpDnPLSHuMAn0ACfX61//RiDZhdQcva/+RElEVds
+M/kAnid3USyhJYpJlC69zVrDPjQ0hpM5
+=nEdC
-----END PGP SIGNATURE-----
--- /dev/null
+diff --git a/popwin.el b/popwin.el
+index 22f64f0..a5bafeb 100644
+--- a/popwin.el
++++ b/popwin.el
+@@ -4,7 +4,7 @@
+
+ ;; Author: Tomohiro Matsuyama <tomo@cx4a.org>
+ ;; Keywords: convenience
+-;; Version: 0.3
++;; Version: 0.4
+
+ ;; This program is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+@@ -69,7 +69,19 @@
+
+ \f
+
+-;;; Common API
++;;; Common
++
++(defmacro popwin:save-selected-window (&rest body)
++ "Evaluate BODY saving the selected window."
++ `(with-selected-window (selected-window) ,@body))
++
++(defun popwin:switch-to-buffer (buffer-or-name &optional norecord)
++ "Call `switch-to-buffer' forcing BUFFER-OF-NAME be displayed in
++the selected window."
++ (with-no-warnings
++ (if (>= emacs-major-version 24)
++ (switch-to-buffer buffer-or-name norecord t)
++ (switch-to-buffer buffer-or-name norecord))))
+
+ (defun popwin:last-selected-window ()
+ "Return currently selected window or lastly selected window if
+@@ -82,6 +94,12 @@ minibuffer window is selected."
+ "Return t if BUFFER might be thought of as a buried buffer."
+ (eq (car (last (buffer-list))) buffer))
+
++(defun popwin:called-interactively-p ()
++ (with-no-warnings
++ (if (>= emacs-major-version 23)
++ (called-interactively-p 'any)
++ (called-interactively-p))))
++
+ (defvar popwin:empty-buffer nil
+ "Marker buffer of indicating a window of the buffer is being a
+ popup window.")
+@@ -142,7 +160,7 @@ horizontal factor HFACTOR, and vertical factor VFACTOR."
+ (cdr node)
+ (popwin:adjust-window-edges window edges hfactor vfactor)
+ (with-selected-window window
+- (switch-to-buffer buffer t))
++ (popwin:switch-to-buffer buffer t))
+ (when selected
+ (select-window window)))
+ (destructuring-bind (dir edges . windows) node
+@@ -221,7 +239,8 @@ window-configuration."
+ (root-win (popwin:last-selected-window))
+ (hfactor 1)
+ (vfactor 1))
+- (delete-other-windows root-win)
++ (popwin:save-selected-window
++ (delete-other-windows root-win))
+ (let ((root-width (window-width root-win))
+ (root-height (window-height root-win)))
+ (when adjust
+@@ -238,7 +257,7 @@ window-configuration."
+ (popwin:create-popup-window-1 root-win size position)
+ ;; Mark popup-win being a popup window.
+ (with-selected-window popup-win
+- (switch-to-buffer (popwin:empty-buffer) t))
++ (popwin:switch-to-buffer (popwin:empty-buffer) t))
+ (popwin:replicate-window-config master-win root hfactor vfactor)
+ (list master-win popup-win)))))
+
+@@ -410,7 +429,7 @@ BUFFER."
+ popwin:selected-window (selected-window))
+ (popwin:start-close-popup-window-timer))))
+ (with-selected-window popwin:popup-window
+- (switch-to-buffer buffer))
++ (popwin:switch-to-buffer buffer))
+ (setq popwin:popup-buffer buffer
+ popwin:popup-window-stuck-p stick)
+ (if noselect
+@@ -438,6 +457,10 @@ be closed by `popwin:close-popup-window'."
+
+ ;;; Special Display
+
++(defmacro popwin:without-special-display (&rest body)
++ "Evaluate BODY without special displaying."
++ `(let (display-buffer-function special-display-function) ,@body))
++
+ (defcustom popwin:special-display-config
+ '(("*Help*")
+ ("*Completions*" :noselect t)
+@@ -481,13 +504,19 @@ buffers will be shown at the left of the frame with width 80."
+
+ (defun popwin:original-display-buffer (buffer &optional not-this-window)
+ "Call `display-buffer' for BUFFER without special displaying."
+- (let (display-buffer-function special-display-function)
+- ;; Close the popup window here so that the popup window won't to
+- ;; be splitted.
+- (when (and (eq (selected-window) popwin:popup-window)
+- (not (same-window-p (buffer-name buffer))))
+- (popwin:close-popup-window))
+- (display-buffer buffer not-this-window)))
++ (popwin:without-special-display
++ ;; Close the popup window here so that the popup window won't to
++ ;; be splitted.
++ (when (and (eq (selected-window) popwin:popup-window)
++ (not (same-window-p (buffer-name buffer))))
++ (popwin:close-popup-window))
++ (if (and (>= emacs-major-version 24)
++ (boundp 'action)
++ (boundp 'frame))
++ ;; Use variables ACTION and FRAME which are formal parameters
++ ;; of DISPLAY-BUFFER.
++ (display-buffer buffer action frame)
++ (display-buffer buffer not-this-window))))
+
+ (defun* popwin:display-buffer-1 (buffer-or-name &key default-config-keywords if-buffer-not-found if-config-not-found)
+ "Display BUFFER-OR-NAME, if possible, in a popup
+@@ -548,9 +577,9 @@ usual. This function can be used as a value of
+ (popwin:display-buffer-1
+ buffer-or-name
+ :if-config-not-found
+- (unless (interactive-p)
+- (lambda (buffer-or-name)
+- (popwin:original-display-buffer buffer-or-name not-this-window)))))
++ (unless (popwin:called-interactively-p)
++ (lambda (buffer)
++ (popwin:original-display-buffer buffer not-this-window)))))
+
+ (defun popwin:special-display-popup-window (buffer &rest ignore)
+ "The `special-display-function' with a popup window."