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

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

[elpa] externals/phps-mode 3740660 095/405: Get point-data now collects


From: Stefan Monnier
Subject: [elpa] externals/phps-mode 3740660 095/405: Get point-data now collects information about square brackets
Date: Sat, 13 Jul 2019 09:59:51 -0400 (EDT)

branch: externals/phps-mode
commit 37406602856c1528c174dac5b79016424a10b8e9
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>

    Get point-data now collects information about square brackets
---
 phps-functions.el      | 42 +++++++++++++++++++++++++-----------------
 phps-test-functions.el |  7 +++++++
 2 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/phps-functions.el b/phps-functions.el
index 22e42ee..227d0f4 100644
--- a/phps-functions.el
+++ b/phps-functions.el
@@ -43,6 +43,7 @@
   "Start of buffer changes, nil if none.")
 
 ;; NOTE Also format white-space inside the line, i.e. after function 
declarations?
+
 ;; TODO Support inline function indentations
 ;; TODO Support indentation for multi-line scalar assignments
 ;; TODO Add support for automatic parenthesis, bracket, square-bracket, 
single-quote and double-quote encapsulations
@@ -203,13 +204,15 @@
       (let ((line-beginning (point))
             (line-end (line-end-position))
             (start-in-scripting nil)
-            (start-brace-level 0)
-            (start-parenthesis-level 0)
+            (start-curly-bracket-level 0)
+            (start-round-bracket-level 0)
+            (start-square-bracket-level 0)
             (start-inline-function-level 0)
             (start-token-number nil)
             (end-in-scripting nil)
-            (end-brace-level 0)
-            (end-parenthesis-level 0)
+            (end-curly-bracket-level 0)
+            (end-round-bracket-level 0)
+            (end-square-bracket-level 0)
             (end-inline-function-level 0)
             (end-token-number nil)
             (line-in-doc-comment nil)
@@ -240,14 +243,17 @@
                   ('T_OPEN_TAG (setq start-in-scripting t))
                   ('T_OPEN_TAG_WITH_ECHO (setq start-in-scripting t))
                   ('T_CLOSE_TAG (setq start-in-scripting nil))
-                  ('T_CURLY_OPEN (setq start-brace-level (+ start-brace-level 
1)))
-                  ('T_DOLLAR_OPEN_CURLY_BRACES (setq start-brace-level (+ 
start-brace-level 1)))
-                  ("}" (setq start-brace-level (- start-brace-level 1)))
-                  ("{" (setq start-brace-level (+ start-brace-level 1)))
-                  ("(" (setq start-parenthesis-level (+ 
start-parenthesis-level 1)))
-                  (")" (setq start-parenthesis-level (- 
start-parenthesis-level 1)))
+                  ('T_CURLY_OPEN (setq start-curly-bracket-level (+ 
start-curly-bracket-level 1)))
+                  ('T_DOLLAR_OPEN_CURLY_BRACES (setq start-curly-bracket-level 
(+ start-curly-bracket-level 1)))
+                  ("{" (setq start-curly-bracket-level (+ 
start-curly-bracket-level 1)))
+                  ("}" (setq start-curly-bracket-level (- 
start-curly-bracket-level 1)))
+                  ("[" (setq start-square-bracket-level (+ 
start-square-bracket-level 1)))
+                  ("]" (setq start-square-bracket-level (- 
start-square-bracket-level 1)))
+                  ("(" (setq start-round-bracket-level (+ 
start-round-bracket-level 1)))
+                  (")" (setq start-round-bracket-level (- 
start-round-bracket-level 1)))
                   (_)))
 
+              ;; Are we at the final line and inside a doc-comment that ends 
after it?
               (when (and (< token-start line-beginning)
                          (>= token-end line-end)
                          (eq token 'T_DOC_COMMENT))
@@ -262,19 +268,21 @@
                   ('T_OPEN_TAG (setq end-in-scripting t))
                   ('T_OPEN_TAG_WITH_ECHO (setq end-in-scripting t))
                   ('T_CLOSE_TAG (setq end-in-scripting nil))
-                  ('T_CURLY_OPEN (setq end-brace-level (+ end-brace-level 1)))
-                  ('T_DOLLAR_OPEN_CURLY_BRACES (setq end-brace-level (+ 
end-brace-level 1)))
-                  ("}" (setq end-brace-level (- end-brace-level 1)))
-                  ("{" (setq end-brace-level (+ end-brace-level 1)))
-                  ("(" (setq end-parenthesis-level (+ end-parenthesis-level 
1)))
-                  (")" (setq end-parenthesis-level (- end-parenthesis-level 
1)))
+                  ('T_CURLY_OPEN (setq end-curly-bracket-level (+ 
end-curly-bracket-level 1)))
+                  ('T_DOLLAR_OPEN_CURLY_BRACES (setq end-curly-bracket-level 
(+ end-curly-bracket-level 1)))
+                  ("{" (setq end-curly-bracket-level (+ 
end-curly-bracket-level 1)))
+                  ("}" (setq end-curly-bracket-level (- 
end-curly-bracket-level 1)))
+                  ("[" (setq end-square-bracket-level (+ 
end-square-bracket-level 1)))
+                  ("]" (setq end-square-bracket-level (- 
end-square-bracket-level 1)))
+                  ("(" (setq end-round-bracket-level (+ 
end-round-bracket-level 1)))
+                  (")" (setq end-round-bracket-level (- 
end-round-bracket-level 1)))
                   (_)))
               
               )))
         (when (not found-line-tokens)
           (setq start-token-number nil)
           (setq end-token-number nil))
-        (let ((data (list (list start-in-scripting start-brace-level 
start-parenthesis-level start-inline-function-level start-token-number 
line-in-doc-comment) (list end-in-scripting end-brace-level 
end-parenthesis-level end-inline-function-level end-token-number 
line-in-doc-comment))))
+        (let ((data (list (list start-in-scripting start-curly-bracket-level 
start-round-bracket-level start-square-bracket-level 
start-inline-function-level start-token-number line-in-doc-comment) (list 
end-in-scripting end-curly-bracket-level end-round-bracket-level 
end-square-bracket-level end-inline-function-level end-token-number 
line-in-doc-comment))))
           ;; (message "data: %s" data)
           data)))))
 
diff --git a/phps-test-functions.el b/phps-test-functions.el
index ed538cc..fefb864 100644
--- a/phps-test-functions.el
+++ b/phps-test-functions.el
@@ -42,6 +42,8 @@
 (autoload 'phps-mode/get-point-data "phps-functions")
 (autoload 'should "ert")
 
+;; TODO Add unit tests for HEREDOC, NOWDOC as well
+
 (defun phps-mode/test-indent-line ()
   "Test for indentation."
 
@@ -165,6 +167,7 @@
    "<?php\nif (myRandomCondition()):\necho 'Something here';\n    else:\n    
echo 'Something else here';\nendif;\n"
    (goto-char 60)
    (phps-mode/indent-line)
+   (message "Tokens %s" phps-mode/lexer-tokens)
    (let ((buffer-contents (buffer-substring-no-properties (point-min) 
(point-max))))
      (should (equal buffer-contents "<?php\nif (myRandomCondition()):\necho 
'Something here';\nelse:\n    echo 'Something else here';\nendif;\n"))))
 
@@ -226,6 +229,10 @@
 
   )
 
+;; TODO Support all control structures
+;; if, else, elseif, else if, while, do-while, for, foreach, break, switch, 
declare, return, require, include, require_once, include_once, goto
+
+
 (defun phps-mode/test-functions--get-point-data ()
   "Return information about point in tokens."
 



reply via email to

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