branch: elpa/php-mode
commit 95834aa2bdb60f1222d46fba8bc7732c85781242
Merge: 09855bdbd6 edc3d97c9a
Author: USAMI Kenta <[email protected]>
Commit: GitHub <[email protected]>

    Merge pull request #819 from emacs-php/refactor/magical-constants
    
    Move php-magical-constants to php-keywords.el
---
 lisp/php-keywords.el | 29 +++++++++++++++++++----------
 lisp/php.el          |  9 +--------
 2 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/lisp/php-keywords.el b/lisp/php-keywords.el
index 1a37ef1be1..ca307b7c7e 100644
--- a/lisp/php-keywords.el
+++ b/lisp/php-keywords.el
@@ -53,12 +53,13 @@
 ;; of scope, and deliberately not duplicated here:
 ;;
 ;;   - built-in function names -- see lisp/php-defs.el;
-;;   - the magic constants (`__LINE__' and friends), which are written
-;;     upper-case and matched case-sensitively -- php.el owns that list
-;;     as `php-magical-constants', and both major modes build their
-;;     font-lock rule from it directly;
 ;;   - predefined runtime constants such as `PHP_EOL' or `PHP_INT_MAX',
 ;;     which are library symbols rather than language keywords.
+;;
+;; `php-magical-constants' is the one exception to the naming convention
+;; above.  It is a long-standing public symbol that php.el used to own,
+;; and both major modes build their font-lock rule straight from it, so
+;; it keeps its name; php.el requires this file and re-exports it.
 
 ;;; Code:
 
@@ -226,21 +227,29 @@ Match against buffer text with `case-fold-search' bound 
to non-nil.")
 ;; PHP language constants; stored lower-case here, same convention as
 ;; every other list in this file).
 ;;
-;; The magic constants (`__CLASS__', `__LINE__', ...) are intentionally
-;; NOT mirrored here.  They are not part of php-cc-mode.el's 367-609
-;; c-lang-defconst block either: both major modes fontify them straight
-;; from php.el's `php-magical-constants', which stays the single source
-;; of truth for that list.
+;; The magic constants (`__CLASS__', `__LINE__', ...) are not part of
+;; php-cc-mode.el's 367-609 c-lang-defconst block: both major modes
+;; fontify them straight from `php-magical-constants', which php.el used
+;; to define and which now sits below, next to the rest of the
+;; vocabulary.
 (defconst php-keywords--constants
   '("true" "false" "null")
   "PHP literal keywords `true', `false' and `null' (case-insensitive).
 The upper-case magic constants (`__LINE__' and friends) are matched
-case-sensitively and live in php.el's `php-magical-constants'.")
+case-sensitively; see `php-magical-constants'.")
 
 (defconst php-keywords--constants-re
   (regexp-opt php-keywords--constants 'symbols)
   "`regexp-opt' of `php-keywords--constants', symbol-bounded.
 Match against buffer text with `case-fold-search' bound to non-nil.")
 
+(defconst php-magical-constants
+  '("__CLASS__" "__DIR__" "__FILE__" "__FUNCTION__" "__LINE__"
+    "__METHOD__" "__NAMESPACE__" "__TRAIT__")
+  "Magical keyword that is expanded at compile time.
+
+These are different from \"constants\" in strict terms.
+see https://www.php.net/manual/language.constants.predefined.php";)
+
 (provide 'php-keywords)
 ;;; php-keywords.el ends here
diff --git a/lisp/php.el b/lisp/php.el
index b02fb41a85..26bbd4b724 100644
--- a/lisp/php.el
+++ b/lisp/php.el
@@ -39,6 +39,7 @@
 (require 'cc-engine)
 (require 'flymake)
 (require 'php-core)
+(require 'php-keywords)
 (require 'php-project)
 (require 'rx)
 
@@ -244,14 +245,6 @@ out and get `php-default-major-mode' instead."
   :type 'face)
 
 ;;; PHP Keywords
-(defconst php-magical-constants
-  '("__CLASS__" "__DIR__" "__FILE__" "__FUNCTION__" "__LINE__"
-    "__METHOD__" "__NAMESPACE__" "__TRAIT__")
-  "Magical keyword that is expanded at compile time.
-
-These are different from \"constants\" in strict terms.
-see https://www.php.net/manual/language.constants.predefined.php";)
-
 (defconst php-re-token-symbols
   (eval-when-compile
     (regexp-opt (list "&" "&=" "array(" "(array)" "&&" "||" "(bool)" 
"(boolean)" "break;" "?>" "%>"

Reply via email to