emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 03/18: Fix #45: Change default value of ggtags-auto-jump-to-match


From: Leo Liu
Subject: [elpa] 03/18: Fix #45: Change default value of ggtags-auto-jump-to-match
Date: Sat, 05 Apr 2014 01:25:13 +0000

leoliu pushed a commit to branch master
in repository elpa.

commit a5b483a7e3ce830c14f1e119f7c7338eb7329ecb
Author: Leo Liu <address@hidden>
Date:   Tue Apr 1 07:56:17 2014 +0800

    Fix #45: Change default value of ggtags-auto-jump-to-match
    
    Fix ggtags-global-filter not to show the point-max of *ggtags-global*
    buffer or users will see the scrolling text.
    
    Do not auto jump to history if users have manually jumped to an error
    i.e. compilation-current-error is non-nil.
---
 ggtags.el |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/ggtags.el b/ggtags.el
index d00cc08..1668697 100644
--- a/ggtags.el
+++ b/ggtags.el
@@ -151,7 +151,7 @@ directory local variables is not enabled by default per
   :type '(repeat string)
   :group 'ggtags)
 
-(defcustom ggtags-auto-jump-to-match 'first
+(defcustom ggtags-auto-jump-to-match 'history
   "Strategy on how to jump to match: nil, first or history.
 
     nil: never automatically jump to any match;
@@ -1275,12 +1275,15 @@ commands `next-error' and `previous-error'.
 
 (defvar-local ggtags-global-output-lines 0)
 
-(defun ggtags-global--display-buffer (&optional buffer)
-  (let ((buffer (or buffer (current-buffer))))
-    (unless (get-buffer-window buffer)
-      (let* ((split-window-preferred-function ggtags-split-window-function)
-             (w (display-buffer buffer '(nil (allow-no-window . t)))))
-        (and w (compilation-set-window-height w))))))
+(defun ggtags-global--display-buffer (&optional buffer desired-point)
+  (pcase (let ((buffer (or buffer (current-buffer)))
+               (split-window-preferred-function ggtags-split-window-function))
+           (and (not (get-buffer-window buffer))
+                (display-buffer buffer '(nil (allow-no-window . t)))))
+    ((and (pred windowp) w)
+     (with-selected-window w
+       (compilation-set-window-height w)
+       (and desired-point (goto-char desired-point))))))
 
 (defun ggtags-global-filter ()
   "Called from `compilation-filter-hook' (which see)."
@@ -1303,10 +1306,11 @@ commands `next-error' and `previous-error'.
                         (point)))
   ;; If the number of output lines is small
   ;; `ggtags-global-handle-exit' takes care of displaying the buffer.
-  (when (and (> ggtags-global-output-lines 20) ggtags-navigation-mode)
-    (ggtags-global--display-buffer))
+  (when (and (> ggtags-global-output-lines 30) ggtags-navigation-mode)
+    (ggtags-global--display-buffer nil (or compilation-current-error 
(point-min))))
   (when (and (eq ggtags-auto-jump-to-match 'history)
              (numberp ggtags-auto-jump-to-match-target)
+             (not compilation-current-error)
              ;; `ggtags-global-output-lines' is imprecise but is
              ;; greater than (line-number-at-pos (point-max)) so use
              ;; it as first approximation.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]