emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master f6bb2cc: Introduce `xref-etags-mode'


From: Dmitry Gutov
Subject: [Emacs-diffs] master f6bb2cc: Introduce `xref-etags-mode'
Date: Mon, 23 Feb 2015 02:00:24 +0000

branch: master
commit f6bb2ccb9b4b3c50049512d2d0664b44fc7bcc70
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    Introduce `xref-etags-mode'
    
    Fixes: debbugs:19466
    
    * lisp/progmodes/xref.el (xref-etags-mode--saved): New variable.
    (xref-etags-mode): New minor mode.
---
 lisp/ChangeLog         |    6 ++++++
 lisp/progmodes/xref.el |   23 +++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b4c6d0b..ced342b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-23  Dmitry Gutov  <address@hidden>
+
+       Introduce `xref-etags-mode'.
+       * progmodes/xref.el (xref-etags-mode--saved): New variable.
+       (xref-etags-mode): New minor mode.  (Bug#19466)
+
 2015-02-22  Lars Magne Ingebrigtsen  <address@hidden>
 
        * dom.el (dom-previous-sibling): New function.
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 55405b6..fe72b3f 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -628,6 +628,29 @@ The argument has the same meaning as in `apropos'."
 ;;;###autoload (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
 
 
+;;; Helper functions
+
+(defvar xref-etags-mode--saved nil)
+
+(define-minor-mode xref-etags-mode
+  "Minor mode to make xref use etags again.
+
+Certain major modes install their own mechanisms for listing
+identifiers and navigation.  Turn this on to undo those settings
+and just use etags."
+  :lighter ""
+  (if xref-etags-mode
+      (progn
+        (setq xref-etags-mode--saved
+              (cons xref-find-function
+                    xref-identifier-completion-table-function))
+        (kill-local-variable 'xref-find-function)
+        (kill-local-variable 'xref-identifier-completion-table-function))
+    (setq-local xref-find-function (car xref-etags-mode--saved))
+    (setq-local xref-identifier-completion-table-function
+                (cdr xref-etags-mode--saved))))
+
+
 (provide 'xref)
 
 ;;; xref.el ends here



reply via email to

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