all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Leo Liu <sdl.web@gmail.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 13594@debbugs.gnu.org
Subject: bug#13594: Planning Emacs-24.4
Date: Mon, 18 Nov 2013 16:41:46 +0800	[thread overview]
Message-ID: <m1r4aedrud.fsf@gmail.com> (raw)
In-Reply-To: <jwveh6e21qo.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Sun, 17 Nov 2013 15:53:27 -0500")

[-- Attachment #1: Type: text/plain, Size: 107 bytes --]

Implemented as requested. I have also briefly tested with ggtags and it
worked. Comments welcome. Thanks.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 13594.diff --]
[-- Type: text/x-patch, Size: 4924 bytes --]

=== modified file 'lisp/progmodes/compile.el'
--- lisp/progmodes/compile.el	2013-10-23 16:25:56 +0000
+++ lisp/progmodes/compile.el	2013-11-18 08:37:19 +0000
@@ -1632,7 +1632,7 @@
       (set-buffer-modified-p nil))
     ;; Pop up the compilation buffer.
     ;; http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01638.html
-    (setq outwin (display-buffer outbuf))
+    (setq outwin (display-buffer outbuf '(ignore (may-fail . t))))
     (with-current-buffer outbuf
       (let ((process-environment
 	     (append
@@ -1654,7 +1654,8 @@
 	     (list command mode name-function highlight-regexp))
 	(set (make-local-variable 'revert-buffer-function)
 	     'compilation-revert-buffer)
-	(set-window-start outwin (point-min))
+	(when (windowp outwin)
+	  (set-window-start outwin (point-min)))
 
 	;; Position point as the user will see it.
 	(let ((desired-visible-point
@@ -1663,15 +1664,16 @@
 		   (point-max)
 		 ;; Normally put it at the top.
 		 (point-min))))
-	  (if (eq outwin (selected-window))
-	      (goto-char desired-visible-point)
+	  (goto-char desired-visible-point)
+	  (when (eq outwin (selected-window))
 	    (set-window-point outwin desired-visible-point)))
 
 	;; The setup function is called before compilation-set-window-height
 	;; so it can set the compilation-window-height buffer locally.
 	(if compilation-process-setup-function
 	    (funcall compilation-process-setup-function))
-	(compilation-set-window-height outwin)
+	(when (windowp outwin)
+	  (compilation-set-window-height outwin))
 	;; Start the compilation.
 	(if (fboundp 'start-process)
 	    (let ((proc
@@ -2513,14 +2515,17 @@
                 ;; the error location if the two buffers are in two
                 ;; different frames.  So don't do it if it's not necessary.
                 pre-existing
-	      (display-buffer (marker-buffer msg))))
+	      (display-buffer (marker-buffer msg) '(ignore (may-fail . t)))))
 	 (highlight-regexp (with-current-buffer (marker-buffer msg)
 			     ;; also do this while we change buffer
-			     (compilation-set-window w msg)
+			     (goto-char (marker-position msg))
+			     (when (windowp w)
+			       (compilation-set-window w msg))
 			     compilation-highlight-regexp)))
     ;; Ideally, the window-size should be passed to `display-buffer'
     ;; so it's only used when creating a new window.
-    (unless pre-existing (compilation-set-window-height w))
+    (when (and (not pre-existing) (windowp w))
+      (compilation-set-window-height w))
 
     (if from-compilation-buffer
         ;; If the compilation buffer window was selected,
@@ -2631,9 +2636,12 @@
     (while (null buffer)    ;Repeat until the user selects an existing file.
       ;; The file doesn't exist.  Ask the user where to find it.
       (save-excursion            ;This save-excursion is probably not right.
-        (let ((pop-up-windows t))
-          (compilation-set-window (display-buffer (marker-buffer marker))
-                                  marker)
+        (let ((w (let ((pop-up-windows t))
+		   (display-buffer (marker-buffer marker)
+				   '(ignore (may-fail . t))))))
+          (with-current-buffer (marker-buffer marker)
+	    (goto-char marker)
+	    (and (windowp w) (compilation-set-window w marker)))
           (let* ((name (read-file-name
                         (format "Find this %s in (default %s): "
                                 compilation-error filename)

=== modified file 'lisp/window.el'
--- lisp/window.el	2013-11-12 07:25:14 +0000
+++ lisp/window.el	2013-11-18 08:37:19 +0000
@@ -5355,7 +5355,10 @@
  ACTION is a cons cell (FUNCTION . ALIST), where FUNCTION is a
   function or a list of functions.  Each such function should
   accept two arguments: a buffer to display and an alist of the
-  same form as ALIST.  See `display-buffer' for details.
+  same form as ALIST.  If (may-fail . t) is in ALIST, the caller
+  is prepared to handle non-window return value and FUNCTION can
+  safely return t to suppress displaying the window.  See
+  `display-buffer' for details.
 
 `display-buffer' scans this alist until it either finds a
 matching regular expression or the function specified by a
@@ -5439,9 +5442,12 @@
 ALIST is an arbitrary association list (alist).
 
 Each such FUNCTION should accept two arguments: the buffer to
-display and an alist.  Based on those arguments, it should either
-display the buffer and return the window, or return nil if unable
-to display the buffer.
+display and an alist.  Based on those arguments, it should
+display the buffer and return the window.  It may return nil if
+unable to display the buffer (which is rare and most callers
+don't check this value).  If the caller is prepared to handle
+non-window return value it should pass (may-fail . t) as an
+element of the ALIST.
 
 The `display-buffer' function builds a function list and an alist
 by combining the functions and alists specified in


  reply	other threads:[~2013-11-18  8:41 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-16 17:21 Planning Emacs-24.4 Stefan Monnier
2013-11-16 18:56 ` Bastien
2013-11-17  5:13 ` Leo Liu
2013-11-17 20:53   ` bug#13594: " Stefan Monnier
2013-11-18  8:41     ` Leo Liu [this message]
2013-11-18  9:53       ` Leo Liu
2013-11-18 10:00         ` Andreas Schwab
2013-11-18 10:17           ` Leo Liu
2013-11-18 10:26             ` Andreas Schwab
2013-11-18 10:35               ` Leo Liu
2013-11-18 10:38                 ` Andreas Schwab
2013-11-18 11:09                   ` Leo Liu
2013-11-18 11:25                     ` Andreas Schwab
2013-11-18 11:59                       ` Leo Liu
2013-11-18 10:46       ` martin rudalics
2013-01-31 10:43         ` bug#13594: 24.2.92; [PATCH] compilation-start doesn't consider nil OUTWIN Leo Liu
2013-01-31 12:35           ` Leo Liu
2013-01-31 15:14           ` Stefan Monnier
2013-01-31 15:21             ` Leo Liu
2013-02-05 10:58             ` Leo Liu
2013-02-05 11:57               ` Leo Liu
2013-02-05 23:25               ` Juri Linkov
2013-02-06  1:19                 ` Leo Liu
2013-02-06 10:12                   ` Juri Linkov
2013-02-06 15:35                     ` Stefan Monnier
2013-02-06 23:40                       ` Juri Linkov
2013-02-07 13:36                         ` Stefan Monnier
2013-02-08  8:10                           ` Juri Linkov
2013-02-08 14:36                             ` Stefan Monnier
2013-02-09  9:22                               ` martin rudalics
2013-02-10 10:01                                 ` Juri Linkov
2013-02-10 17:32                                   ` martin rudalics
2013-02-11  9:28                                     ` Juri Linkov
2013-02-11 17:31                                       ` martin rudalics
2013-02-11 17:55                                         ` Leo Liu
2013-02-14  8:22                                           ` Leo Liu
2013-02-14 14:15                                             ` Stefan Monnier
2013-03-19 15:39                                               ` Leo Liu
2013-03-20  3:12                                                 ` Stefan Monnier
2013-03-20  4:37                                                   ` Leo Liu
2013-03-20 12:51                                                     ` Stefan Monnier
2013-11-17  5:18                                                       ` Leo Liu
2013-11-17  9:48                                                         ` martin rudalics
2013-02-08  9:59                           ` martin rudalics
2013-11-18 11:16           ` bug#13594: Planning Emacs-24.4 Leo Liu
2013-11-18 13:19             ` martin rudalics
2013-11-18 14:56               ` Leo Liu
2013-11-18 15:20                 ` martin rudalics
2013-11-18 15:48                   ` Leo Liu
2013-11-19  0:33                     ` Stefan Monnier
2013-11-19  0:54                       ` Juri Linkov
2013-11-19  3:38                         ` Stefan Monnier
2013-11-19  2:42                       ` Leo Liu
2013-11-19  7:42                         ` martin rudalics
2013-11-20  2:51                           ` Leo Liu
2013-11-20  7:33                             ` martin rudalics
2013-11-19  0:31               ` Stefan Monnier
2013-11-19  7:42                 ` martin rudalics
2013-11-20  0:55                   ` Juri Linkov
2013-11-20  3:26                     ` Stefan Monnier
2013-11-21  0:30                       ` Juri Linkov
2013-12-02  5:33                         ` Leo Liu
2013-12-03  1:19                           ` Juri Linkov
2013-12-03  3:23                             ` Leo Liu
2013-12-03  7:56                             ` martin rudalics
2013-11-20  7:34                     ` martin rudalics
2013-11-18 13:55         ` Stefan Monnier
2013-11-18 15:32           ` martin rudalics
2013-11-19 13:44 ` Darren Hoo
2013-11-19 16:20   ` Eli Zaretskii
2013-11-20  6:58     ` Darren Hoo
2013-11-20 17:47       ` Eli Zaretskii
2013-11-23  3:12 ` Glenn Morris

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=m1r4aedrud.fsf@gmail.com \
    --to=sdl.web@gmail.com \
    --cc=13594@debbugs.gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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.