From 12d79f35076046a750857fb614e7ae9284d7ade2 Mon Sep 17 00:00:00 2001 From: Thomas Fini Hansen Date: Thu, 9 Jul 2015 12:58:34 +0200 Subject: [PATCH 01/16] Also load gtags.el with helm-gtags. --- drupal-mode.el | 1 + 1 file changed, 1 insertion(+) diff --git a/drupal-mode.el b/drupal-mode.el index f6c9476..d9d9ce9 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -872,6 +872,7 @@ mode-hook." (eval-after-load 'eldoc '(require 'drupal/eldoc)) (eval-after-load 'etags '(require 'drupal/etags)) (eval-after-load 'gtags '(require 'drupal/gtags)) +(eval-after-load 'helm-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)) From b62d89c177c15d7b1e6761a3e484d1361974773e Mon Sep 17 00:00:00 2001 From: Thomas Fini Hansen Date: Thu, 9 Jul 2015 20:31:05 +0200 Subject: [PATCH 02/16] Fix up for latest flycheck. --- drupal/flycheck.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drupal/flycheck.el b/drupal/flycheck.el index 1f1df69..a56a898 100644 --- a/drupal/flycheck.el +++ b/drupal/flycheck.el @@ -74,7 +74,7 @@ See URL `http://pear.php.net/package/PHP_CodeSniffer/'." ;; Add our checker as next-checker to checkers of all supported modes. (let ((modes (append drupal-css-modes drupal-js-modes drupal-info-modes))) (dolist (checker (flycheck-defined-checkers)) - (dolist (mode (flycheck-checker-modes checker)) + (dolist (mode (flycheck-checker-get checker 'modes)) (if (memq mode modes) (flycheck-add-next-checker checker 'drupal-phpcs))))) From bdf3709e105d0c97e4b516f52d96c9eb70b665de Mon Sep 17 00:00:00 2001 From: joddie Date: Fri, 27 Feb 2015 15:19:15 -0800 Subject: [PATCH 03/16] Fix bug in drupal/etags-get-function-args With eldoc enabled, this function could move point unexpectedly to the end of line when point was on the *definition* of anything listed in the TAGS file. (This is due to the `find-tag-noselect`, which can return the already-open buffer for a given tag's file, if one exists). Adding a `save-excursion` around the `with-current-buffer` fixes this bug. --- drupal/etags.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drupal/etags.el b/drupal/etags.el index 6c23a7e..d502b45 100644 --- a/drupal/etags.el +++ b/drupal/etags.el @@ -47,12 +47,13 @@ "Get function arguments from etags TAGS." (when (and (boundp 'drupal/etags-rootdir) (file-exists-p (concat drupal/etags-rootdir "TAGS"))) - (with-current-buffer (find-tag-noselect symbol nil nil) - (goto-char (point-min)) - (when (re-search-forward - (format "function\\s-+%s\\s-*(\\([^{]*\\))" symbol) - nil t) - (match-string-no-properties 1))))) + (save-excursion + (with-current-buffer (find-tag-noselect symbol nil nil) + (goto-char (point-min)) + (when (re-search-forward + (format "function\\s-+%s\\s-*(\\([^{]*\\))" symbol) + nil t) + (match-string-no-properties 1)))))) (add-hook 'drupal-mode-hook #'drupal/etags-enable) From 5ad113d48f611eb3dded50406a62f72fd9bfda4f Mon Sep 17 00:00:00 2001 From: joddie Date: Tue, 25 Aug 2015 13:48:20 -0700 Subject: [PATCH 04/16] Add `drupal-drush-sql-cli` command --- drupal-mode.el | 53 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/drupal-mode.el b/drupal-mode.el index f6c9476..70e22a9 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -36,6 +36,8 @@ (require 'cl) (require 'php-mode) (require 'format-spec) +(require 'json) +(require 'sql) ;; Silence byte compiler. (defvar css-indent-level) @@ -239,7 +241,8 @@ get better filling in Doxygen comments." (?f . drupal-insert-function) (?m . drupal-module-name) (?e . drupal-drush-php-eval) - (?t . drupal-wrap-string-in-t-function)) + (?t . drupal-wrap-string-in-t-function) + (?s . drupal-drush-sql-cli)) "Map of mnemonic keys and functions for keyboard shortcuts. See `drupal-mode-map'.") @@ -428,6 +431,10 @@ of the project)." [menu-bar drupal cache-clear] '(menu-item "Clear all caches" drupal-drush-cache-clear :enable (and drupal-rootdir drupal-drush-program))) +(define-key drupal-mode-map + [menu-bar drupal sql-cli] + '(menu-item "Open SQL shell" drupal-drush-sql-cli + :enable (and drupal-rootdir drupal-drush-program))) (define-key drupal-mode-map [menu-bar drupal drupal-project drupal-project-bugs] @@ -519,6 +526,50 @@ buffer." (search-forward-regexp "\\(\"\\|'\\)") (insert ")"))))) +(defun drupal-drush-sql-cli () + "Run a SQL shell using \"drush sql-cli\" in a SQL-mode comint buffer." + (interactive) + (require 'sql) + (require 'json) + (let* ((json-object-type 'plist) + (config + (json-read-from-string + (with-temp-buffer + (call-process drupal-drush-program nil t nil + "sql-conf" "--format=json") + (buffer-string))))) + (when (not config) + (error "No Drupal SQL configuration found.")) + (destructuring-bind (&key database driver &allow-other-keys) config + (let ((sql-interactive-product + (drupal--db-driver-to-sql-product driver)) + (start-buffer (current-buffer)) + (sqli-buffer + (make-comint (format "SQL (%s)" database) + drupal-drush-program nil "sql-cli"))) + (with-current-buffer sqli-buffer + (sql-interactive-mode) + (set (make-local-variable 'sql-buffer) + (buffer-name (current-buffer))) + + ;; Set `sql-buffer' in the start buffer + (with-current-buffer start-buffer + (when (derived-mode-p 'sql-mode) + (setq sql-buffer (buffer-name sqli-buffer)) + (run-hooks 'sql-set-sqli-hook))) + + ;; All done. + (run-hooks 'sql-login-hook) + (pop-to-buffer sqli-buffer)))))) + +(defun drupal--db-driver-to-sql-product (driver) + "Translate a Drupal DB driver name into a sql-mode symbol." + (let ((driver (intern driver))) + (cond + ((eq driver 'pgsql) 'postgres) + ((assq driver sql-product-alist) driver) + (t 'ansi)))) + (defvar drupal-form-id-history nil From 72c533c619f273d9539bfb925334088dab12bf1f Mon Sep 17 00:00:00 2001 From: joddie Date: Tue, 25 Aug 2015 14:08:56 -0700 Subject: [PATCH 05/16] Remove redundant `require` calls --- drupal-mode.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/drupal-mode.el b/drupal-mode.el index 70e22a9..6d3c1ed 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -529,8 +529,6 @@ buffer." (defun drupal-drush-sql-cli () "Run a SQL shell using \"drush sql-cli\" in a SQL-mode comint buffer." (interactive) - (require 'sql) - (require 'json) (let* ((json-object-type 'plist) (config (json-read-from-string From 0cd241275621e28ec45b25b1ec0e64737ff250c8 Mon Sep 17 00:00:00 2001 From: joddie Date: Tue, 25 Aug 2015 14:24:40 -0700 Subject: [PATCH 06/16] Avoid "no tags containing" error in hook skeleton The hook implementation skeleton funcalls `drupal-get-function-args` to check whether the new function implementation already exists elsewhere in the project. When the value of this variable is `drupal/etags-get-function-args`, it throws an error for non-existent function names, making it impossible to insert a new implementation. Adding `ignore-errors` around the call fixes this. --- drupal-mode.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drupal-mode.el b/drupal-mode.el index f6c9476..63d3273 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -556,7 +556,8 @@ buffer." (user-error "%s already exists in file." (replace-regexp-in-string "^hook" (drupal-module-name) v2))) ;; User error if the hook is already inserted elsewhere. (when (and drupal-get-function-args - (funcall drupal-get-function-args (replace-regexp-in-string "^hook" (drupal-module-name) v2))) + (ignore-errors + (funcall drupal-get-function-args (replace-regexp-in-string "^hook" (drupal-module-name) v2)))) (user-error "%s already exists elsewhere." (replace-regexp-in-string "^hook" (drupal-module-name) v2))) (drupal-ensure-newline) "/**\n" From de52d2757ce62d529316924e846b2b32da53dd26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Sun, 30 Aug 2015 21:14:46 +0200 Subject: [PATCH 07/16] Added Travis CU config. Based on http://rejeep.github.io/emacs/testing/evm/2013/12/07/evm-updates.html --- .travis.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..ded215a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: emacs-lisp +before_install: + - curl -fsSkL https://gist.github.com/rejeep/7736123/raw | sh + - export PATH="/home/travis/.cask/bin:$PATH" + - export PATH="/home/travis/.evm/bin:$PATH" + - evm install $EVM_EMACS --use + - cask +env: + - EVM_EMACS=emacs-23.4-bin + - EVM_EMACS=emacs-24.1-bin + - EVM_EMACS=emacs-24.2-bin + - EVM_EMACS=emacs-24.3-bin +script: + - emacs --version + - make test From d88b39e8f5f8b1763e78c73fcdb07e490b1dd999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Sun, 30 Aug 2015 21:37:33 +0200 Subject: [PATCH 08/16] Fixed travis.yml --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ded215a..f7f5349 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,16 @@ language: emacs-lisp before_install: - - curl -fsSkL https://gist.github.com/rejeep/7736123/raw | sh + - curl -fsSkL https://gist.githubusercontent.com/rejeep/7736123/raw | sh - export PATH="/home/travis/.cask/bin:$PATH" - export PATH="/home/travis/.evm/bin:$PATH" - evm install $EVM_EMACS --use - cask env: - - EVM_EMACS=emacs-23.4-bin - EVM_EMACS=emacs-24.1-bin - EVM_EMACS=emacs-24.2-bin - - EVM_EMACS=emacs-24.3-bin + - EVM_EMACS=emacs-24.4-bin + - EVM_EMACS=emacs-24.5-bin + - EVM_EMACS=emacs-git-snapshot script: - emacs --version - make test From b4a66092bddc471884b2746d69fd7e8853b4b79f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Sun, 30 Aug 2015 21:43:15 +0200 Subject: [PATCH 09/16] Removed git snapshot from travis ci. It is slow and requires another version of makeinfo. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f7f5349..88b3b49 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ env: - EVM_EMACS=emacs-24.2-bin - EVM_EMACS=emacs-24.4-bin - EVM_EMACS=emacs-24.5-bin - - EVM_EMACS=emacs-git-snapshot script: - emacs --version - make test From e47d7697e691d5fdbf184e03df9a0304a0db6e01 Mon Sep 17 00:00:00 2001 From: Thomas Fini Hansen Date: Sat, 27 Feb 2016 20:17:34 +0100 Subject: [PATCH 10/16] Fix drupal-phpcs checker predicate Apparently, checking for drupal-mode works now. --- drupal/flycheck.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drupal/flycheck.el b/drupal/flycheck.el index a56a898..7b3ba4a 100644 --- a/drupal/flycheck.el +++ b/drupal/flycheck.el @@ -64,10 +64,8 @@ See URL `http://pear.php.net/package/PHP_CodeSniffer/'." (warning line-start (file-name) ":" line ":" column ": warning - " (message) line-end)) - ;; We'd prefer to just check drupal-mode, but flycheck global mode - ;; finds the checker before we get a chance to set drupal-mode. :predicate (lambda () - (apply 'derived-mode-p (append drupal-css-modes drupal-js-modes drupal-info-modes)))) + (and drupal-mode drupal/phpcs-standard))) ;; Append our custom checker. (add-to-list 'flycheck-checkers 'drupal-phpcs t) From 1545d07f0d3149008b25e58c345f8291b9f89796 Mon Sep 17 00:00:00 2001 From: Thomas Fini Hansen Date: Sat, 27 Feb 2016 20:23:36 +0100 Subject: [PATCH 11/16] Use drupal/phpcs-standard in drupal-phpcs checker --- drupal/flycheck.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drupal/flycheck.el b/drupal/flycheck.el index 7b3ba4a..1eb3675 100644 --- a/drupal/flycheck.el +++ b/drupal/flycheck.el @@ -50,7 +50,7 @@ checker runs those. See URL `http://pear.php.net/package/PHP_CodeSniffer/'." :command ("phpcs" "--report=emacs" - (option "--standard=" flycheck-phpcs-standard concat) + (option "--standard=" drupal/phpcs-standard concat) source-inplace) ;; Though phpcs supports Checkstyle output which we could feed to ;; `flycheck-parse-checkstyle', we are still using error patterns here, From 0a23dc084a41c650cfecb4908a02f0f06fd81eee Mon Sep 17 00:00:00 2001 From: Thomas Fini Hansen Date: Tue, 15 Mar 2016 08:58:16 +0100 Subject: [PATCH 12/16] Add autoinsert template for .api.php files --- drupal/autoinsert.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drupal/autoinsert.el b/drupal/autoinsert.el index 1aa29d8..cffea48 100644 --- a/drupal/autoinsert.el +++ b/drupal/autoinsert.el @@ -30,6 +30,7 @@ (define-auto-insert '("\\.module" . "Drupal module file") 'drupal/autoinsert-insert-module-skeleton) (define-auto-insert '("\\.install" . "Drupal install file") 'drupal/autoinsert-insert-install-skeleton) (define-auto-insert '("\\.test" . "Drupal test file") 'drupal/autoinsert-insert-test-skeleton) +(define-auto-insert '("\\.api.php" . "Drupal API file") 'drupal/autoinsert-insert-api-skeleton) (define-skeleton drupal/autoinsert-insert-info-skeleton "Drupal info file skeleton." @@ -95,6 +96,27 @@ @ - "\n" "}\n") +(define-skeleton drupal/autoinsert-insert-api-skeleton + "Drupal api.php file skeleton." + nil + " Date: Sun, 20 Mar 2016 20:05:58 +0100 Subject: [PATCH 13/16] Better gtags-helm support. Closes #67. --- drupal-mode.el | 2 +- drupal/helm-gtags.el | 63 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 drupal/helm-gtags.el diff --git a/drupal-mode.el b/drupal-mode.el index 8509f13..0b7faa8 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -922,7 +922,7 @@ mode-hook." (eval-after-load 'eldoc '(require 'drupal/eldoc)) (eval-after-load 'etags '(require 'drupal/etags)) (eval-after-load 'gtags '(require 'drupal/gtags)) -(eval-after-load 'helm-gtags '(require 'drupal/gtags)) +(eval-after-load 'helm-gtags '(require 'drupal/helm-gtags)) (eval-after-load 'ggtags '(require 'drupal/ggtags)) (eval-after-load 'ispell '(require 'drupal/ispell)) (eval-after-load 'flymake-phpcs '(require 'drupal/flymake-phpcs)) diff --git a/drupal/helm-gtags.el b/drupal/helm-gtags.el new file mode 100644 index 0000000..8f74bd0 --- /dev/null +++ b/drupal/helm-gtags.el @@ -0,0 +1,63 @@ +;;; drupal/helm-gtags.el --- Drupal-mode support for helm-gtags + +;; Copyright (C) 2012, 2013, 2014, 2015, 2016 Arne Jørgensen + +;; Author: Arne Jørgensen + +;; 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 . + +;;; Commentary: + +;; Enable drupal-mode support for helm-gtags. + +;;; Code: + +(require 'helm-gtags) + +(defvar drupal/helm-gtags-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/helm-gtags-enable () + "Setup rootdir for helm-gtags." + (let ((dir (locate-dominating-file (or buffer-file-name default-directory) "GTAGS"))) + (when dir + (set (make-local-variable 'helm-gtags--tag-location) dir) + + ;; Set `drupal-symbol-collection' to a call to + ;; `gtags-completing-gtags' so that inserting hooks will do + ;; completion based on gtags. + (setq drupal-symbol-collection #'(lambda() (helm-gtags--complete 'tag "" nil t))) + (setq drupal-get-function-args #'drupal/helm-gtags-get-function-args) + (helm-gtags-mode 1)))) + +(defun drupal/helm-gtags-get-function-args (symbol &optional version) + "Get function arguments from GNU GLOBAL." + (when (file-exists-p (concat helm-gtags--tag-location "GTAGS")) + (with-temp-buffer + (ignore-errors + (call-process drupal/helm-gtags-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/helm-gtags-enable) + + + +(provide 'drupal/helm-gtags) + +;;; drupal/helm-gtags.el ends here From 9ee19e25a8825fcd3bcbf9f49cc0534bf3981f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Mon, 21 Mar 2016 10:05:04 +0100 Subject: [PATCH 14/16] Add autoinsert skeleton for Variable module support --- drupal/autoinsert.el | 49 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/drupal/autoinsert.el b/drupal/autoinsert.el index cffea48..3a32ada 100644 --- a/drupal/autoinsert.el +++ b/drupal/autoinsert.el @@ -1,6 +1,6 @@ ;;; drupal/autoinsert.el --- Drupal-mode support for `auto-insert-mode' -;; Copyright (C) 2012, 2013, 2014 Arne Jørgensen +;; Copyright (C) 2012, 2013, 2014, 2015, 2016 Arne Jørgensen ;; Author: Arne Jørgensen ;; Keywords: @@ -31,6 +31,7 @@ (define-auto-insert '("\\.install" . "Drupal install file") 'drupal/autoinsert-insert-install-skeleton) (define-auto-insert '("\\.test" . "Drupal test file") 'drupal/autoinsert-insert-test-skeleton) (define-auto-insert '("\\.api.php" . "Drupal API file") 'drupal/autoinsert-insert-api-skeleton) +(define-auto-insert '("\\.variable.inc" . "Drupal variable module support file") 'drupal/autoinsert-insert-variable-module-skeleton) (define-skeleton drupal/autoinsert-insert-info-skeleton "Drupal info file skeleton." @@ -117,6 +118,52 @@ " * @} End of \"addtogroup hooks\".\n" " */\n") +(define-skeleton drupal/autoinsert-insert-variable-module-skeleton + "Drupal variable module support file." + nil + " 'string',\n" + " 'title' => t('Some variable title', array(), $options),\n" + " 'default' => 'uid',\n" + " 'description' => t('Some variable description', array(), $options),\n" + " 'group' => '" (drupal-module-name) "',\n" + " );\n" + "\n" + " return $variables;\n" + "}\n" + "\n" + "/**\n" + " * Implements hook_variable_group_info().\n" + " */\n" + "function " (drupal-module-name) "_variable_group_info() {\n" + " $groups['" (drupal-module-name) "'] = array(\n" + " 'title' => t('Some group title'),\n" + " 'description' => t('Some group description.'),\n" + " );\n" + "\n" + " return $groups;\n" + "}\n" + "\n" + "/**\n" + " * @} End of \"addtogroup variables\".\n" + " */\n") + (provide 'drupal/autoinsert) From c3f2427b4ac084d905682096bcf8e68273d8b5da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Wed, 20 Apr 2016 21:40:38 +0200 Subject: [PATCH 15/16] Fix phpcs output parsing Fixes #71. --- drupal/phpcs.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drupal/phpcs.el b/drupal/phpcs.el index 723f9fa..4dd4cbb 100644 --- a/drupal/phpcs.el +++ b/drupal/phpcs.el @@ -1,6 +1,6 @@ ;;; drupal/phpcs.el --- Drupal-mode common support for flymake-phpcs and flycheck -;; Copyright (C) 2012, 2013 Arne Jørgensen +;; Copyright (C) 2012, 2013, 2016 Arne Jørgensen ;; Author: Arne Jørgensen @@ -34,7 +34,7 @@ ;; command. Check for both. (call-process (or (and (boundp 'flymake-phpcs-command) (executable-find flymake-phpcs-command)) (executable-find "phpcs")) nil (list t nil) nil "-i"))))) (when (string-match - "\\(Drupal[^, + "\\(Drupal[^ , ]*\\)" standards) (match-string-no-properties 1 standards)))) From f604acedb1b7225a672e444534c76231c1775efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Wed, 20 Apr 2016 21:58:22 +0200 Subject: [PATCH 16/16] Bump version to 0.7.0 --- drupal-mode.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drupal-mode.el b/drupal-mode.el index 0b7faa8..0458356 100644 --- a/drupal-mode.el +++ b/drupal-mode.el @@ -1,11 +1,11 @@ ;;; drupal-mode.el --- Advanced minor mode for Drupal development -;; Copyright (C) 2012, 2013, 2014, 2015 Arne Jørgensen +;; Copyright (C) 2012, 2013, 2014, 2015, 2016 Arne Jørgensen ;; Author: Arne Jørgensen ;; URL: https://github.com/arnested/drupal-mode ;; Created: January 17, 2012 -;; Version: 0.6.1 +;; Version: 0.7.0 ;; Package-Requires: ((php-mode "1.5.0")) ;; Keywords: programming, php, drupal