branch: elpa/drupal-mode
commit e96a1f70f4abc4f6c50eaf6655ed79077f4afdaf
Author: Arne Jørgensen <[email protected]>
Commit: Arne Jørgensen <[email protected]>
Added support for "Drush utilities for Emacs users".
---
README.md | 8 +++++++
drupal/emacs-drush.el | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++
drupal/etags.el | 1 +
drupal/gtags.el | 1 +
4 files changed, 76 insertions(+)
diff --git a/README.md b/README.md
index df31b68d2c..b27d1a9062 100644
--- a/README.md
+++ b/README.md
@@ -133,6 +133,14 @@ support in Emacs then Drupal mode will set `gtags-rootdir`
to your
DRUPAL_ROOT.
+### Drush utilities for Emacs users
+
+If
+[Drush utilities for Emacs users](http://drupal.org/project/emacs_drush)
+is installed Drupal mode will update existing tag files in your
+DRUPAL_ROOT after saving a buffer.
+
+
### ispell
If ispell.el is loaded in Emacs then Drupal mode will set the language
diff --git a/drupal/emacs-drush.el b/drupal/emacs-drush.el
new file mode 100644
index 0000000000..df7d808682
--- /dev/null
+++ b/drupal/emacs-drush.el
@@ -0,0 +1,66 @@
+;;; drupal/emacs-drush.el --- Drupal-mode support for Drush utilities for
Emacs users
+
+;; Copyright (C) 2012 Arne Jørgensen
+
+;; Author: Arne Jørgensen <[email protected]>
+
+;; 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:
+
+;; You need to install `Drush utilities for Emacs users'
+;; <http://drupal.org/project/emacs_drush> for this to work.
+
+;; If `Drush utilities for Emacs users' is installed it will run
+;; `drush etags' on `after-save-hook' if a TAGS file is present in
+;; DRUPAL_ROOT and it will run `drush gtags' on `after-save-hook' if a
+;; GTAGS file is present in DRUPAL_ROOT.
+
+;;; Code:
+
+(defcustom drupal/emacs-drush-update-tags-after-save
+ (and drupal-drush-program
+ (zerop (call-process drupal-drush-program nil nil nil "help" "etags")))
+ "Use `Drush utilities for Emacs users' to run etags/gtags after save.
+On `after-save-hook' run `drush etags' or `drush gtags'.
+
+Requires `Drush utilities for Emacs users' to be installed."
+ :type `(choice
+ (const :tag "Yes" t)
+ (const :tag "No" nil))
+ :link '(url-link :tag "Drush utilities for Emacs users"
"http://drupal.org/project/emacs_drush")
+ :group 'drupal)
+
+(defun drupal/emacs-drush-run-after-save ()
+ "Run drush etags/gtags on after-save-hook."
+ (when (and drupal/emacs-drush-update-tags-after-save
+ (boundp 'drupal-rootdir)
+ drupal-drush-program)
+ (when (file-exists-p (concat drupal-rootdir "TAGS"))
+ (call-process drupal-drush-program nil 0 nil "etags"))
+ (when (file-exists-p (concat drupal-rootdir "GTAGS"))
+ (call-process drupal-drush-program nil 0 nil "gtags"))))
+
+(defun drupal/emacs-drush-enable ()
+ (add-hook 'after-save-hook #'drupal/emacs-drush-run-after-save nil t))
+
+(add-hook 'drupal-mode-hook #'drupal/emacs-drush-enable)
+
+
+
+(provide 'drupal/emacs-drush)
+
+;;; drupal/emacs-drush.el ends here
diff --git a/drupal/etags.el b/drupal/etags.el
index 3df8b28439..306474b621 100644
--- a/drupal/etags.el
+++ b/drupal/etags.el
@@ -26,6 +26,7 @@
;;; Code:
(require 'etags)
+(require 'drupal/emacs-drush)
(defun drupal/etags-enable ()
"Setup TAGS file for etags if it exists in DRUPAL_ROOT."
diff --git a/drupal/gtags.el b/drupal/gtags.el
index 87da53f6ac..21ad5cb536 100644
--- a/drupal/gtags.el
+++ b/drupal/gtags.el
@@ -26,6 +26,7 @@
;;; Code:
(require 'gtags)
+(require 'drupal/emacs-drush)
(defun drupal/gtags-enable ()
"Setup rootdir for gtags to be DRUPAL_ROOT."