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

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

[nongnu] elpa/drupal-mode 135c5f669e 197/308: Add interface with gtags v


From: ELPA Syncer
Subject: [nongnu] elpa/drupal-mode 135c5f669e 197/308: Add interface with gtags via `ggtags.el'
Date: Tue, 25 Jan 2022 10:59:47 -0500 (EST)

branch: elpa/drupal-mode
commit 135c5f669e9ac8bc11ae8e21f18b0133f79dafc7
Author: joddie <jonxfield@gmail.com>
Commit: joddie <jonxfield@gmail.com>

    Add interface with gtags via `ggtags.el'
---
 drupal-mode.el   |  1 +
 drupal/ggtags.el | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/drupal-mode.el b/drupal-mode.el
index c8cb7a8037..298734179a 100644
--- a/drupal-mode.el
+++ b/drupal-mode.el
@@ -774,6 +774,7 @@ mode-hook."
 (eval-after-load 'autoinsert '(require 'drupal/autoinsert))
 (eval-after-load 'etags '(require 'drupal/etags))
 (eval-after-load 'gtags '(require 'drupal/gtags))
+(eval-after-load 'ggtags '(require 'drupal/ggtags))
 (eval-after-load 'ispell '(require 'drupal/ispell))
 (eval-after-load 'flymake-phpcs '(require 'drupal/flymake-phpcs))
 (eval-after-load 'flycheck '(require 'drupal/flycheck))
diff --git a/drupal/ggtags.el b/drupal/ggtags.el
new file mode 100644
index 0000000000..bbb0c34ffc
--- /dev/null
+++ b/drupal/ggtags.el
@@ -0,0 +1,62 @@
+;;; drupal/ggtags.el --- Drupal-mode support for ggtags.el
+
+;; Copyright (C) 2012, 2013, 2014 Arne Jørgensen
+
+;; Author: Arne Jørgensen <arne@arnested.dk>
+
+;; This file is part of Drupal mode.
+
+;; Drupal mode is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+
+;; Drupal mode is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Drupal mode.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Enable drupal-mode support for gtags.
+
+;;; Code:
+
+(require 'ggtags)
+
+(defvar drupal/ggtags-global-command (executable-find "global")
+  "Name of the GNU GLOBAL `global' executable.
+Include path to the executable if it is not in your $PATH.")
+
+(defun drupal/ggtags-enable ()
+  "Setup rootdir for gtags."
+  (let ((dir (locate-dominating-file (or buffer-file-name default-directory) 
"GTAGS")))
+    (when dir
+      (ggtags-mode 1)
+      ;; Connect `drupal-symbol-collection' to `ggtags-mode'
+      ;; completion
+      (setq drupal-symbol-collection
+            (lambda () (all-completions "" ggtags-completion-table)))
+      (setq drupal-get-function-args #'drupal/ggtags-get-function-args))))
+
+(defun drupal/ggtags-get-function-args (symbol &optional version)
+  "Get function arguments from GNU GLOBAL."
+  (when (and (boundp 'ggtags-project-root)
+             (file-exists-p (expand-file-name "GTAGS" ggtags-project-root)))
+    (with-temp-buffer
+      (ignore-errors
+        (call-process drupal/ggtags-global-command nil t nil "-x" symbol)
+        (goto-char (point-min))
+        (search-forward-regexp "[^(]*(\\(.*\\))[^)]*" nil t)
+        (match-string-no-properties 1)))))
+
+(add-hook 'drupal-mode-hook #'drupal/ggtags-enable)
+
+
+
+(provide 'drupal/ggtags)
+
+;;; drupal/ggtags.el ends here



reply via email to

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