]> code.delx.au - gnu-emacs-elpa/commitdiff
Merge branch 'master' of github.com:leoliu/ggtags
authorLeo Liu <sdl.web@gmail.com>
Mon, 14 Dec 2015 21:51:24 +0000 (05:51 +0800)
committerLeo Liu <sdl.web@gmail.com>
Mon, 14 Dec 2015 21:51:24 +0000 (05:51 +0800)
1  2 
packages/ggtags/README.rst
packages/ggtags/ggtags.el

index 08640b4d857b9c59e4ba40561ccc9f959542a99d,eda042724f24c1c4ca366f3acdba7ef2657a524a..eda042724f24c1c4ca366f3acdba7ef2657a524a
@@@ -4,7 -4,7 +4,7 @@@
  
  This package is part of `GNU ELPA <http://elpa.gnu.org>`_ (``M-x
  list-packages``) and is also available on `MELPA
- <http://melpa.milkbox.net/#/ggtags>`_.
+ <https://melpa.org/#/ggtags>`_.
  
  The goal is to make working with GNU Global in Emacs as effortlessly
  and intuitively as possible and to integrate tightly with standard
@@@ -61,10 -61,11 +61,11 @@@ Install Global and plugin
       ./configure --prefix=<PREFIX> --with-exuberant-ctags=/usr/local/bin/ctags
       make && make install
  
-    The executable ``ctags`` is unfortunately named because ``emacs`` also
-    includes a command of the same name. So make sure it is from
-    http://ctags.sourceforge.net. See ``plugin-factory/README`` in GNU
-    Global source for further information.
+    The executable ``ctags`` is unfortunately named because ``emacs``
+    also includes a command of the same name. So make sure it is from
+    http://ctags.sourceforge.net. See ``plugin-factory/PLUGIN_HOWTO``
+    (``plugin-factory/README`` for Global < 6.5) in GNU Global
+    source for further information.
  
  2. Install ``pygments`` plugin
  
@@@ -222,7 -223,7 +223,7 @@@ turned on to facilitate locating the ri
  Miscellaneous commands
  ++++++++++++++++++++++
  
- Commands are avaiable from the ``Ggtags`` menu in ``ggtags-mode``.
+ Commands are available from the ``Ggtags`` menu in ``ggtags-mode``.
  
  ggtags-prev-mark
  
@@@ -271,7 -272,7 +272,7 @@@ ggtags-explain-tag
  ggtags-browse-file-as-hypertext
  
     Use ``htags`` to generate HTML of the source tree. This allows
-    browsing the porject in a browser with cross-references.
+    browsing the project in a browser with cross-references.
  
  Integration with other packages
  +++++++++++++++++++++++++++++++
  NEWS
  ~~~~
  
+ [2015-12-15 Tue] 0.8.11
+ +++++++++++++++++++++++
+ #. ``ggtags-highlight-tag-delay`` is renamed to
+    ``ggtags-highlight-tag``.
+ #. Tag highlighting can be disabled by setting
+    ``ggtags-highlight-tag`` to nil.
  [2015-06-12 Fri] 0.8.10
  +++++++++++++++++++++++
  
index 52b96cf26e1c5d4cb4ae1f144b670f5cbe5153ec,08fb4c8d6ee40631afd1d45943777ce4b1413105..08fb4c8d6ee40631afd1d45943777ce4b1413105
@@@ -3,7 -3,7 +3,7 @@@
  ;; Copyright (C) 2013-2015  Free Software Foundation, Inc.
  
  ;; Author: Leo Liu <sdl.web@gmail.com>
- ;; Version: 0.8.10
+ ;; Version: 0.8.11
  ;; Keywords: tools, convenience
  ;; Created: 2013-01-29
  ;; URL: https://github.com/leoliu/ggtags
  ;;
  ;; All commands are available from the `Ggtags' menu in `ggtags-mode'.
  
- ;;; NEWS 0.8.10 (2015-06-12):
+ ;;; NEWS 0.8.11 (2015-12-15):
  
- ;; - Tags update on save is configurable by `ggtags-update-on-save'.
- ;; - New command `ggtags-explain-tags' to explain how each file is
- ;;   indexed in current project.
- ;; - New user option `ggtags-sort-by-nearness' that sorts matched tags
- ;;   by nearness to current directory.
+ ;; - `ggtags-highlight-tag-delay' is renamed to `ggtags-highlight-tag'
+ ;; - Tag highlighting can be disabled by setting
+ ;;   `ggtags-highlight-tag' to nil.
  ;;
  ;; See full NEWS on https://github.com/leoliu/ggtags#news
  
@@@ -331,13 -329,17 +329,17 @@@ Nil means using the value of `completin
                   function)
    :group 'ggtags)
  
- (defcustom ggtags-highlight-tag-delay 0.25
-   "Time in seconds before highlighting tag at point."
+ (define-obsolete-variable-alias 'ggtags-highlight-tag-delay 'ggtags-highlight-tag
+   "0.8.11")
+ (defcustom ggtags-highlight-tag 0.25
+   "If non-nil time in seconds before highlighting tag at point.
+ Set to `nil' to disable tag highlighting."
    :set (lambda (sym value)
-          (when (bound-and-true-p ggtags-highlight-tag-timer)
-            (timer-set-idle-time ggtags-highlight-tag-timer value t))
+          (when (fboundp 'ggtags-setup-highlight-tag-at-point)
+            (ggtags-setup-highlight-tag-at-point value))
           (set-default sym value))
-   :type 'number
+   :type '(choice (const :tag "Disable" nil) number)
    :group 'ggtags)
  
  (defcustom ggtags-bounds-of-tag-function (lambda ()
@@@ -647,7 -649,7 +649,7 @@@ When called with a prefix \\[universal-
                            (ggtags-ensure-localname
                             (directory-file-name (ggtags-current-project-root)))))
              (process-environment
-              (append (let ((process-environment process-environment))
+              (append (let ((process-environment (copy-sequence process-environment)))
                         (and ,gtagsroot (setenv "GTAGSROOT" ,gtagsroot))
                         (mapcar #'substitute-env-vars ggtags-process-environment))
                       process-environment
@@@ -703,7 -705,7 +705,7 @@@ If file gtags.files exists in ROOT, it 
  files to index, which can be used to speed gtags up in large
  source trees. See Info node `(global)gtags' for details."
    (interactive "DRoot directory: ")
-   (let ((process-environment process-environment))
+   (let ((process-environment (copy-sequence process-environment)))
      (when (zerop (length root)) (error "No root directory provided"))
      (setenv "GTAGSROOT" (ggtags-ensure-localname
                           (expand-file-name
@@@ -929,7 -931,8 +931,8 @@@ blocking emacs.
    (let* ((default-directory (or directory (ggtags-current-project-root)))
           (split-window-preferred-function ggtags-split-window-function)
           (env ggtags-process-environment))
-     (unless (markerp ggtags-global-start-marker)
+     (unless (and (markerp ggtags-global-start-marker)
+                  (marker-position ggtags-global-start-marker))
        (setq ggtags-global-start-marker (point-marker)))
      ;; Record the file name for `ggtags-navigation-start-file'.
      (setq ggtags-global-start-file buffer-file-name)
@@@ -1622,19 -1625,23 +1625,23 @@@ commands `next-error' and `previous-err
                  ggtags-auto-jump-to-match-target))
      (ggtags-forward-to-line ggtags-auto-jump-to-match-target)
      (setq-local ggtags-auto-jump-to-match-target nil)
-     ;;
-     ;; Can't call `compile-goto-error' here becuase
+     (ggtags-delay-finish-functions
+       (with-display-buffer-no-window
+         (condition-case nil
+             (let ((compilation-auto-jump-to-first-error t))
+               (compilation-auto-jump (current-buffer) (point)))
+           (error (message "\
+ ggtags: history match invalid, jump to first match instead")
+                  (first-error)))))
      ;; `compilation-filter' restores point and as a result commands
      ;; dependent on point such as `ggtags-navigation-next-file' and
      ;; `ggtags-navigation-previous-file' fail to work.
-     (run-with-idle-timer 0 nil (lambda (buf pt)
-                                  (and (buffer-live-p buf)
-                                       (with-current-buffer buf
-                                         (ggtags-delay-finish-functions
-                                           (let ((compilation-auto-jump-to-first-error t))
-                                             (with-display-buffer-no-window
-                                               (compilation-auto-jump buf pt)))))))
-                          (current-buffer) (point)))
+     (run-with-idle-timer
+      0 nil
+      (lambda (buf pt)
+        (and (buffer-live-p buf)
+             (with-current-buffer buf (goto-char pt))))
+      (current-buffer) (point)))
    (make-local-variable 'ggtags-global-large-output)
    (when (> ggtags-global-output-lines ggtags-global-large-output)
      (cl-incf ggtags-global-large-output 500)
@@@ -2022,6 -2029,7 +2029,7 @@@ When finished invoke CALLBACK in BUFFE
                              (delay-mode-hooks (funcall mode))
                              (setq font-lock-mode t)
                              (funcall font-lock-function font-lock-mode)
+                             (setq jit-lock-mode nil)
                              (current-buffer))))
                (with-current-buffer (prepare-buffer)
                  (let ((inhibit-read-only t))
@@@ -2198,10 -2206,7 +2206,7 @@@ to nil disables displaying this informa
  ;;;###autoload
  (define-minor-mode ggtags-mode nil
    :lighter (:eval (if ggtags-navigation-mode "" " GG"))
-   (unless (timerp ggtags-highlight-tag-timer)
-     (setq ggtags-highlight-tag-timer
-           (run-with-idle-timer
-            ggtags-highlight-tag-delay t #'ggtags-highlight-tag-at-point)))
+   (ggtags-setup-highlight-tag-at-point ggtags-highlight-tag)
    (if ggtags-mode
        (progn
          (add-hook 'after-save-hook 'ggtags-after-save-function nil t)
      (remove-function (local 'eldoc-documentation-function) 'ggtags-eldoc-function)
      (setq mode-line-buffer-identification
            (delq 'ggtags-mode-line-project-name mode-line-buffer-identification))
-     (and (overlayp ggtags-highlight-tag-overlay)
-          (delete-overlay ggtags-highlight-tag-overlay))
-     (setq ggtags-highlight-tag-overlay nil)))
+     (ggtags-cancel-highlight-tag-at-point 'keep-timer)))
  
  (defvar ggtags-highlight-tag-map
    (let ((map (make-sparse-keymap)))
  (put 'ggtags-active-tag 'help-echo
       "S-mouse-1 for definitions\nS-mouse-3 for references")
  
+ (defun ggtags-setup-highlight-tag-at-point (flag)
+   (cond ((null flag) (ggtags-cancel-highlight-tag-at-point))
+         ((not (timerp ggtags-highlight-tag-timer))
+          (setq ggtags-highlight-tag-timer
+                (run-with-idle-timer flag t #'ggtags-highlight-tag-at-point)))
+         (t (timer-set-idle-time ggtags-highlight-tag-timer flag t))))
+ (defun ggtags-cancel-highlight-tag-at-point (&optional keep-timer)
+   (when (and (not keep-timer)
+              (timerp ggtags-highlight-tag-timer))
+     (cancel-timer ggtags-highlight-tag-timer)
+     (setq ggtags-highlight-tag-timer nil))
+   (when ggtags-highlight-tag-overlay
+     (delete-overlay ggtags-highlight-tag-overlay)
+     (setq ggtags-highlight-tag-overlay nil)))
  (defun ggtags-highlight-tag-at-point ()
    (when (and ggtags-mode ggtags-project-root (ggtags-find-project))
      (unless (overlayp ggtags-highlight-tag-overlay)