branch: externals/phps-mode
commit 34f36e6b43a9a78fd5338632b2f88e76bcb394e9
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    Passing basic test narrow-to-defun, end-of-defun, beginning-of-defun
---
 phps-mode-lex-analyzer.el           | 19 ++++++-------------
 test/phps-mode-test-lex-analyzer.el | 21 +++++++++++++++++++--
 2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/phps-mode-lex-analyzer.el b/phps-mode-lex-analyzer.el
index d594334b0c..634af06d69 100644
--- a/phps-mode-lex-analyzer.el
+++ b/phps-mode-lex-analyzer.el
@@ -1516,6 +1516,7 @@ of performed operations.  Optionally do it 
FORCE-SYNCHRONOUS."
         (index 0)
         (found-index t))
     (save-excursion
+      (move-end-of-line nil)
       (while (and found-index (< index iterations))
         (if
             (search-backward-regexp
@@ -1541,16 +1542,13 @@ of performed operations.  Optionally do it 
FORCE-SYNCHRONOUS."
       (when (phps-mode-lex-analyzer--beginning-of-defun)
         (let ((beginning (point))
               (bracket-level 0)
-              (found-initial-bracket)
-              (next-bracket (search-forward-regexp "[{}\"']" nil t)))
-          (message "beginning: %S" beginning)
+              (found-initial-bracket))
           (while (and
-                  next-bracket
                   (or
                    (not found-initial-bracket)
-                   (not (= bracket-level 0))))
+                   (not (= bracket-level 0)))
+                  (search-forward-regexp "[{}\"']" nil t))
             (let ((match-string (match-string 0)))
-              (message "match-string: %S" match-string)
               (cond
                ((string= match-string "{")
                 (unless found-initial-bracket
@@ -1559,17 +1557,12 @@ of performed operations.  Optionally do it 
FORCE-SYNCHRONOUS."
                ((string= match-string "}")
                 (setq bracket-level (1- bracket-level)))
                ((string= match-string "\"")
+                
                 ;; TODO Handle double quoted string here
                 )
                ((string= match-string "'")
                 ;; TODO Handle single-quoted string here
-                )))
-            (unless (and
-                     found-initial-bracket
-                     (= bracket-level 0))
-              (setq
-               next-bracket
-               (search-forward-regexp "[{}\"']" nil t))))
+                ))))
           (when (and
                  (= bracket-level 0)
                  found-initial-bracket)
diff --git a/test/phps-mode-test-lex-analyzer.el 
b/test/phps-mode-test-lex-analyzer.el
index 946903be63..bff8959257 100644
--- a/test/phps-mode-test-lex-analyzer.el
+++ b/test/phps-mode-test-lex-analyzer.el
@@ -157,12 +157,29 @@
 
   (phps-mode-test--with-buffer
    "<?php\nfunction test($a) {\n    return $a + 1;\n}\necho 'here';\n"
-   "Test beginning-of-defun and end-of-defun"
+   "Test `beginning-of-defun', `end-of-defun' and `narrow-to-defun' basic 
example"
    (goto-char 27)
    (should (equal (phps-mode-lex-analyzer--beginning-of-defun) t))
    (should (equal (point) 7))
    (should (equal (phps-mode-lex-analyzer--end-of-defun) t))
-   (should (equal (point) 47)))
+   (should (equal (point) 47))
+   (goto-char 27)
+   (narrow-to-defun)
+   (should (equal (point-min) 7))
+   (should (equal (point-max) 48)))
+
+  (phps-mode-test--with-buffer
+   "<?php\nfunction test2($a) {\n    echo 'was there }';\n    echo \"was here 
\\\\\"}\\\\\" or there\";\n    return $a + 1;\n}"
+   "Test `beginning-of-defun', `end-of-defun' and `narrow-to-defun' advanced 
example"
+   (goto-char 41)
+   (should (equal (phps-mode-lex-analyzer--beginning-of-defun) t))
+   (should (equal (point) 7))
+   (should (equal (phps-mode-lex-analyzer--end-of-defun) t))
+   (should (equal (point) 108))
+   (goto-char 65)
+   (narrow-to-defun)
+   (should (equal (point-min) 7))
+   (should (equal (point-max) 108)))
 
   )
 

Reply via email to