[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 86de51b 51/62: Fixed bug with incremental nes
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode 86de51b 51/62: Fixed bug with incremental nesting stack |
Date: |
Tue, 20 Apr 2021 10:56:22 -0400 (EDT) |
branch: externals/phps-mode
commit 86de51bdb8d70e1d7583328bf47dab082a69a205
Author: Christian Johansson <christian@mediastrategi.se>
Commit: Christian Johansson <christian@mediastrategi.se>
Fixed bug with incremental nesting stack
---
admin/phps-mode-automation.el | 110 +++++++++++++-------------
phps-mode-lex-analyzer.el | 38 +++++++--
phps-mode-lexer.el | 15 ++--
phps-mode.el | 4 +-
test/phps-mode-test-integration.el | 153 +++----------------------------------
test/phps-mode-test-lexer.el | 48 ++++++------
6 files changed, 139 insertions(+), 229 deletions(-)
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index 7ee0096..39ce0ff 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -28,57 +28,65 @@
;;; Code:
(require 'phps-mode-automation-grammar)
-(require 'parser-generator-lr-export)
-
-(let ((php-yacc-url
"https://raw.githubusercontent.com/php/php-src/php-8.0.0/Zend/zend_language_parser.y")
- (php-yacc-file (expand-file-name "zend_language_parser.y")))
-
- ;; Download Yacc if not available
- (unless (file-exists-p php-yacc-file)
- (message "Downloading PHP 8.0 YACC grammar..")
- (url-copy-file php-yacc-url php-yacc-file t t)
- (message "Download of PHP 8.0 YACC grammar completed"))
-
- ;; Prepare export
- (parser-generator-set-grammar
- `(
- ,phps-mode-automation-grammar-non-terminals
- ,phps-mode-automation-grammar-terminals
- ,phps-mode-automation-grammar-productions
- ,phps-mode-automation-grammar-start
- )
- )
- (parser-generator-set-look-ahead-number
- phps-mode-automation-grammar-look-ahead-number
- )
- (setq
- parser-generator--e-identifier
- phps-mode-automation-grammar-e-identifier)
- (setq
- parser-generator--eof-identifier
- phps-mode-automation-grammar-eof-identifier)
- (setq
- parser-generator-lex-analyzer--function
- phps-mode-automation-grammar-lex-analyzer-function
- )
- (setq
- parser-generator-lex-analyzer--get-function
- phps-mode-automation-grammar-lex-analyzer-get-function)
- (setq
- parser-generator-lr--precedence-attribute
- phps-mode-automation-grammar-precendece-attribute)
- (setq
- parser-generator-lr--precedence-comparison-function
- phps-mode-automation-grammar-precedence-comparison-function)
- (parser-generator-process-grammar)
- (parser-generator-lr-generate-parser-tables)
-
- ;; Export
- (let ((export (parser-generator-lr-export-to-elisp "phps-mode-parser")))
- (message "export: %s" export)
- )
-
- (message "Automation completed"))
+
+(when (fboundp 'parser-generator-lr-export-to-elisp)
+
+ (let ((php-yacc-url
"https://raw.githubusercontent.com/php/php-src/php-8.0.0/Zend/zend_language_parser.y")
+ (php-yacc-file (expand-file-name "zend_language_parser.y")))
+
+ ;; Download Yacc if not available
+ (unless (file-exists-p php-yacc-file)
+ (message "Downloading PHP 8.0 YACC grammar..")
+ (url-copy-file php-yacc-url php-yacc-file t t)
+ (message "Download of PHP 8.0 YACC grammar completed"))
+
+ ;; Prepare export
+ (when (fboundp 'parser-generator-set-grammar)
+ (parser-generator-set-grammar
+ `(
+ ,phps-mode-automation-grammar-non-terminals
+ ,phps-mode-automation-grammar-terminals
+ ,phps-mode-automation-grammar-productions
+ ,phps-mode-automation-grammar-start
+ )
+ ))
+ (when (fboundp 'parser-generator-set-look-ahead-number)
+ (parser-generator-set-look-ahead-number
+ phps-mode-automation-grammar-look-ahead-number))
+ (when (boundp 'parser-generator--e-identifier)
+ (setq
+ parser-generator--e-identifier
+ phps-mode-automation-grammar-e-identifier))
+ (when (boundp 'parser-generator--eof-identifier)
+ (setq
+ parser-generator--eof-identifier
+ phps-mode-automation-grammar-eof-identifier))
+ (when (boundp 'parser-generator-lex-analyzer--function)
+ (setq
+ parser-generator-lex-analyzer--function
+ phps-mode-automation-grammar-lex-analyzer-function))
+ (when (boundp 'parser-generator-lex-analyzer--get-function)
+ (setq
+ parser-generator-lex-analyzer--get-function
+ phps-mode-automation-grammar-lex-analyzer-get-function))
+ (when (boundp 'parser-generator-lr--precedence-attribute)
+ (setq
+ parser-generator-lr--precedence-attribute
+ phps-mode-automation-grammar-precendece-attribute))
+ (when (boundp 'parser-generator-lr--precedence-comparison-function)
+ (setq
+ parser-generator-lr--precedence-comparison-function
+ phps-mode-automation-grammar-precedence-comparison-function))
+ (when (fboundp 'parser-generator-process-grammar)
+ (parser-generator-process-grammar))
+ (when (fboundp 'parser-generator-lr-generate-parser-tables)
+ (parser-generator-lr-generate-parser-tables))
+
+ ;; Export
+ (let ((export (parser-generator-lr-export-to-elisp "phps-mode-parser")))
+ (message "export: %s" export))
+
+ (message "Automation completed")))
(provide 'phps-mode-automation)
;;; phps-mode-automation.el ends here
diff --git a/phps-mode-lex-analyzer.el b/phps-mode-lex-analyzer.el
index ed66b6d..c340072 100644
--- a/phps-mode-lex-analyzer.el
+++ b/phps-mode-lex-analyzer.el
@@ -578,7 +578,11 @@
(defun phps-mode-lex-analyzer--move-states (start diff)
"Move lexer states after (or equal to) START with modification DIFF."
(when phps-mode-lex-analyzer--states
- (setq phps-mode-lex-analyzer--states
(phps-mode-lex-analyzer--get-moved-states phps-mode-lex-analyzer--states start
diff))))
+ (setq phps-mode-lex-analyzer--states
+ (phps-mode-lex-analyzer--get-moved-states
+ phps-mode-lex-analyzer--states
+ start
+ diff))))
(defun phps-mode-lex-analyzer--get-moved-states (states start diff)
"Return moved lexer STATES after (or equal to) START with modification DIFF."
@@ -591,16 +595,38 @@
(let ((state-start (nth 0 state-object))
(state-end (nth 1 state-object))
(state-symbol (nth 2 state-object))
- (state-stack (nth 3 state-object)))
+ (state-stack (nth 3 state-object))
+ (heredoc-label (nth 4 state-object))
+ (heredoc-label-stack (nth 5 state-object))
+ (nest-location-stack (nth 6 state-object)))
(if (>= state-start start)
(let ((new-state-start (+ state-start diff))
(new-state-end (+ state-end diff)))
- (push (list new-state-start new-state-end state-symbol
state-stack) new-states))
+ (push
+ (list
+ new-state-start
+ new-state-end
+ state-symbol
+ state-stack
+ heredoc-label
+ heredoc-label-stack
+ nest-location-stack)
+ new-states))
(if (> state-end start)
(let ((new-state-end (+ state-end diff)))
- (push (list state-start new-state-end state-symbol
state-stack) new-states))
- (push state-object new-states))))))
-
+ (push
+ (list
+ state-start
+ new-state-end
+ state-symbol
+ state-stack
+ heredoc-label
+ heredoc-label-stack
+ nest-location-stack)
+ new-states))
+ (push
+ state-object
+ new-states))))))
new-states))
(defun phps-mode-lex-analyzer--move-tokens (start diff)
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 2f2551c..46bbc73 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -221,7 +221,7 @@
"Entered nesting '%s'"
opening))
(push
- opening
+ `(,opening ,(point))
phps-mode-lexer--nest-location-stack))
(defun phps-mode-lexer--handle-newline ()
@@ -243,16 +243,21 @@
(when (and
opening
(or
- (and (string= opening "{")
+ (and (string= (car opening) "{")
(not (string= closing "}")))
- (and (string= opening "[")
+ (and (string= (car opening) "[")
(not (string= closing "]")))
- (and (string= opening "(")
+ (and (string= (car opening) "(")
(not (string= closing ")")))))
(signal
'phps-lexer-error
(list
- (format "Bad nesting '%s' vs '%s' at %d'" opening closing (point))
+ (format
+ "Bad nesting '%s' started at '%s' vs '%s' at %d'"
+ (car opening)
+ (car (cdr opening))
+ closing
+ (point))
(point))))
(phps-mode-debug-message
(message
diff --git a/phps-mode.el b/phps-mode.el
index cbab269..e401459 100644
--- a/phps-mode.el
+++ b/phps-mode.el
@@ -5,8 +5,8 @@
;; Author: Christian Johansson <christian@cvj.se>
;; Maintainer: Christian Johansson <christian@cvj.se>
;; Created: 3 Mar 2018
-;; Modified: 29 Jan 2021
-;; Version: 0.4.1
+;; Modified: 10 Mars 2021
+;; Version: 0.4.2
;; Keywords: tools, convenience
;; URL: https://github.com/cjohansson/emacs-phps-mode
diff --git a/test/phps-mode-test-integration.el
b/test/phps-mode-test-integration.el
index 0a8e90e..214882f 100644
--- a/test/phps-mode-test-integration.el
+++ b/test/phps-mode-test-integration.el
@@ -169,155 +169,26 @@
(goto-char 88)
(delete-char 1))
- )
-
-(defun phps-mode-test-integration--whitespace-modifications ()
- "Test white-space modifications functions."
-
- (phps-mode-test--with-buffer
- "<?php\n$var = 'abc';\n\n$var2 = '123';\n"
- "Add newline between two assignments and inspect moved tokens and states"
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
-
- ;; Initial state
-
- ;; Tokens
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_VARIABLE 7 . 11) ("=" 12 . 13)
(T_CONSTANT_ENCAPSED_STRING 14 . 19) (";" 19 . 20) (T_VARIABLE 22 . 27) ("=" 28
. 29) (T_CONSTANT_ENCAPSED_STRING 30 . 35) (";" 35 . 36))))
-
- ;; States
- (should (equal phps-mode-lex-analyzer--states
- '((35 36 1 nil) (30 35 1 nil) (28 29 1 nil) (22 27 1 nil)
(19 20 1 nil) (14 19 1 nil) (12 13 1 nil) (7 11 1 nil) (1 7 1 nil))))
-
- ;; Insert newline
- (goto-char 21)
- (newline)
-
- ;; Final state
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
- (phps-mode-lex-analyzer--process-changes)
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
-
- ;; Tokens
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_VARIABLE 7 . 11) ("=" 12 . 13)
(T_CONSTANT_ENCAPSED_STRING 14 . 19) (";" 19 . 20) (T_VARIABLE 23 . 28) ("=" 29
. 30) (T_CONSTANT_ENCAPSED_STRING 31 . 36) (";" 36 . 37))))
-
- ;; States
- (should (equal phps-mode-lex-analyzer--states
- '((36 37 1 nil) (31 36 1 nil) (29 30 1 nil) (23 28 1 nil)
(19 20 1 nil) (14 19 1 nil) (12 13 1 nil) (7 11 1 nil) (1 7 1 nil)))))
-
- (phps-mode-test--with-buffer
- "<?php\n$var = 'abc';\n\n$var2 = '123';\n"
- "Delete backward char between two assignments and inspect moved tokens and
states"
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
-
- ;; Initial state
-
- ;; Tokens
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_VARIABLE 7 . 11) ("=" 12 . 13)
(T_CONSTANT_ENCAPSED_STRING 14 . 19) (";" 19 . 20) (T_VARIABLE 22 . 27) ("=" 28
. 29) (T_CONSTANT_ENCAPSED_STRING 30 . 35) (";" 35 . 36))))
-
- ;; States
- (should (equal phps-mode-lex-analyzer--states
- '((35 36 1 nil) (30 35 1 nil) (28 29 1 nil) (22 27 1 nil)
(19 20 1 nil) (14 19 1 nil) (12 13 1 nil) (7 11 1 nil) (1 7 1 nil))))
-
- ;; Insert newline
- (goto-char 21)
- (delete-char 1)
-
- (phps-mode-lex-analyzer--process-changes)
-
- ;; Final state
- ;; (message "Modified buffer: '%s'" (buffer-substring-no-properties
(point-min) (point-max)))
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
-
- ;; Tokens
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_VARIABLE 7 . 11) ("=" 12 . 13)
(T_CONSTANT_ENCAPSED_STRING 14 . 19) (";" 19 . 20) (T_VARIABLE 21 . 26) ("=" 27
. 28) (T_CONSTANT_ENCAPSED_STRING 29 . 34) (";" 34 . 35))))
-
- ;; States
- (should (equal phps-mode-lex-analyzer--states
- '((34 35 1 nil) (29 34 1 nil) (27 28 1 nil) (21 26 1 nil)
(19 20 1 nil) (14 19 1 nil) (12 13 1 nil) (7 11 1 nil) (1 7 1 nil)))))
-
- (phps-mode-test--with-buffer
- "<?php\nif (true):\n $var = 'abc';\n $var2 = '123';\nendif;\n"
- "Add newline inside if body after two assignments and inspect moved tokens
and states"
-
- ;; Initial state
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 34) (";" 34 . 35) (T_VARIABLE 40 . 45) ("=" 46
. 47) (T_CONSTANT_ENCAPSED_STRING 48 . 53) (";" 53 . 54) (T_ENDIF 55 . 60) (";"
60 . 61))))
-
- (should (equal phps-mode-lex-analyzer--states
- '((60 61 1 nil) (55 60 1 nil) (53 54 1 nil) (48 53 1 nil)
(46 47 1 nil) (40 45 1 nil) (34 35 1 nil) (29 34 1 nil) (27 28 1 nil) (22 26 1
nil) (16 17 1 nil) (15 16 1 nil) (11 15 1 nil) (10 11 1 nil) (7 9 1 nil) (1 7 1
nil))))
-
- ;; Insert newline and then indent
- (goto-char 54)
- (newline-and-indent)
-
- (phps-mode-lex-analyzer--process-changes)
-
- ;; Final state
- ;; (message "Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "States: %s" phps-mode-lex-analyzer--states)
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 34) (";" 34 . 35) (T_VARIABLE 40 . 45) ("=" 46
. 47) (T_CONSTANT_ENCAPSED_STRING 48 . 53) (";" 53 . 54) (T_ENDIF 60 . 65) (";"
65 . 66))))
-
- (should (equal phps-mode-lex-analyzer--states
- '((65 66 1 nil) (60 65 1 nil) (53 54 1 nil) (48 53 1 nil)
(46 47 1 nil) (40 45 1 nil) (34 35 1 nil) (29 34 1 nil) (27 28 1 nil) (22 26 1
nil) (16 17 1 nil) (15 16 1 nil) (11 15 1 nil) (10 11 1 nil) (7 9 1 nil) (1 7 1
nil)))))
-
- (phps-mode-test--with-buffer
- "<?php\nif (true):\n $var = \"abc\nanother line here\nmore text
here\";\n $var2 = '123';\nendif;"
- "Add test for inserting newlines inside token"
-
- ;; (message "Before Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "Before States: %s" phps-mode-lex-analyzer--states)
-
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 67) (";" 67 . 68) (T_VARIABLE 73 . 78) ("=" 79
. 80) (T_CONSTANT_ENCAPSED_STRING 81 . 86) (";" 86 . 87) (T_ENDIF 88 . 93) (";"
93 . 94))))
- (should (equal phps-mode-lex-analyzer--states
- '((93 94 1 nil) (88 93 1 nil) (86 87 1 nil) (81 86 1 nil)
(79 80 1 nil) (73 78 1 nil) (67 68 1 nil) (29 67 1 nil) (27 28 1 nil) (22 26 1
nil) (16 17 1 nil) (15 16 1 nil) (11 15 1 nil) (10 11 1 nil) (7 9 1 nil) (1 7 1
nil))))
-
- ;; Insert newline and then indent
- (goto-char 51)
- (newline-and-indent)
-
- (phps-mode-lex-analyzer--process-changes)
-
- ;; (message "After Tokens %s" phps-mode-lex-analyzer--tokens)
- ;; (message "After States: %s" phps-mode-lex-analyzer--states)
- (should (equal phps-mode-lex-analyzer--tokens
- '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 76) (";" 76 . 77) (T_VARIABLE 82 . 87) ("=" 88
. 89) (T_CONSTANT_ENCAPSED_STRING 90 . 95) (";" 95 . 96) (T_ENDIF 97 . 102)
(";" 102 . 103))))
- (should (equal phps-mode-lex-analyzer--states
- '((102 103 1 nil) (97 102 1 nil) (95 96 1 nil) (90 95 1 nil)
(88 89 1 nil) (82 87 1 nil) (76 77 1 nil) (29 76 1 nil) (27 28 1 nil) (22 26 1
nil) (16 17 1 nil) (15 16 1 nil) (11 15 1 nil) (10 11 1 nil) (7 9 1 nil) (1 7 1
nil)))))
-
- (phps-mode-test--with-buffer
- "<?php\nfunction myFunctionA() {}\nfunction myFunctionB() {}\n"
- "White-space changes in imenu function-oriented file"
-
- (should (equal (phps-mode-lex-analyzer--get-imenu) '(("myFunctionA" . 16)
("myFunctionB" . 42))))
-
- (goto-char 32)
- (newline-and-indent)
-
- (phps-mode-lex-analyzer--process-changes)
+ (phps-mode-test--incremental-vs-intial-buffer
+ "<?php\n\nif (\n true\n && false\n) {\n echo 'My long string
here';\n if (\nfalse\n || true\n ) {\n echo 'Two lines
of'\n . 'strings here';\n }\n}"
+ "Integration-test 15 white-space changes to see if nesting is maintained."
+ (goto-char 80)
+ (execute-kbd-macro (kbd "<tab>")))
- (should (equal (phps-mode-lex-analyzer--get-imenu) '(("myFunctionA" . 16)
("myFunctionB" . 43)))))
+ (phps-mode-test--incremental-vs-intial-buffer
+ "<?php\n\nif (\n true\n && false\n) {\n echo 'My long string
here';\n if (\nfalse\n || true\n ) {\n echo 'Two lines
of'\n . 'strings here';\n }\n}"
+ "Integration-test 16 white-space changes to see if nesting is maintained."
+ (goto-char 80)
+ (execute-kbd-macro (kbd "<tab>"))
+ (goto-char 117)
+ (execute-kbd-macro (kbd "<return>")))
)
(defun phps-mode-test-integration ()
"Run test for integration."
;; (setq debug-on-error t)
- ;; (setq phps-mode-analyzer--process-on-indent-and-imenu t)
(phps-mode-test-integration--incremental-vs-initial-buffers)
- ;; (phps-mode-test-integration--whitespace-modifications)
)
(phps-mode-test-integration)
diff --git a/test/phps-mode-test-lexer.el b/test/phps-mode-test-lexer.el
index 8c6b635..2254bdc 100644
--- a/test/phps-mode-test-lexer.el
+++ b/test/phps-mode-test-lexer.el
@@ -604,53 +604,53 @@
(should
(equal
- '((68 76 1 '(1))
- (10 67 1 '(1))
- (1 9 1 '(1)))
+ '((68 76 1 '(1) nil nil nil)
+ (10 67 1 '(1) nil nil nil)
+ (1 9 1 '(1) nil nil nil))
(phps-mode-lex-analyzer--get-moved-states
- '((66 74 1 '(1))
- (8 65 1 '(1))
- (1 7 1 '(1)))
+ '((66 74 1 '(1) nil nil nil)
+ (8 65 1 '(1) nil nil nil)
+ (1 7 1 '(1) nil nil nil))
6
2)))
(should
(equal
- '((67 75 1 '(1))
- (9 66 1 '(1))
- (2 8 1 '(1)))
+ '((67 75 1 '(1) nil nil nil)
+ (9 66 1 '(1) nil nil nil)
+ (2 8 1 '(1) nil nil nil))
(phps-mode-lex-analyzer--get-moved-states
- '((66 74 1 '(1))
- (8 65 1 '(1))
- (1 7 1 '(1)))
+ '((66 74 1 '(1) nil nil nil)
+ (8 65 1 '(1) nil nil nil)
+ (1 7 1 '(1) nil nil nil))
0
1)))
(should
(equal
- '((66 74 1 '(1))
- (8 65 1 '(1))
- (1 7 1 '(1)))
+ '((66 74 1 '(1) nil nil nil)
+ (8 65 1 '(1) nil nil nil)
+ (1 7 1 '(1) nil nil nil))
(phps-mode-lex-analyzer--get-moved-states
- '((66 74 1 '(1))
- (8 65 1 '(1))
- (1 7 1 '(1)))
+ '((66 74 1 '(1) nil nil nil)
+ (8 65 1 '(1) nil nil nil)
+ (1 7 1 '(1) nil nil nil))
100
1)))
(should
(equal
- '((64 72 1 '(1))
- (6 63 1 '(1))
- (1 7 1 '(1)))
+ '((64 72 1 '(1) nil nil nil)
+ (6 63 1 '(1) nil nil nil)
+ (1 7 1 '(1) nil nil nil))
(phps-mode-lex-analyzer--get-moved-states
- '((66 74 1 '(1))
- (8 65 1 '(1))
- (3 9 1 '(1)))
+ '((66 74 1 '(1) nil nil nil)
+ (8 65 1 '(1) nil nil nil)
+ (3 9 1 '(1) nil nil nil))
3
-2))))
- [elpa] externals/phps-mode c1ab121 25/62: Work on making integration-tests pass, (continued)
- [elpa] externals/phps-mode c1ab121 25/62: Work on making integration-tests pass, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode ad4e825 20/62: Added some new lex analyzer tests for PHP 8.0 tokens, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a418e41 26/62: Integration-test now comparing nest-location-stack as well, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode f1b513c 27/62: Passed another integration test, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a900472 29/62: Passed bookkeeping tests, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 685375c 31/62: Passing all unit tests after updated lex-analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 050fe6a 36/62: Updated version and modified date, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode ec19574 43/62: More implementation of grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a99284a 39/62: Added TODO item, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 209055b 62/62: Updated date and version, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 86de51b 51/62: Fixed bug with incremental nesting stack,
Christian Johansson <=
- [elpa] externals/phps-mode a164e82 33/62: Updated README about PHP 8.0 lexer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 5a3bee3 40/62: More work on implementing PHP 8.0 grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a4b641d 56/62: Improved Make-script for compile and clean, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode d56472c 50/62: Added precedence attributes to grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode e92bed3 54/62: Started debugging failing indentation in some weird cases, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 3fb73ee 37/62: Added bookkeeping support of superglobals $argc, $argv and $http_response_header, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 2efba0b 38/62: Started on generated parser via emacs-parser-generator, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode fd971ee 48/62: Fixed missing lex-analyzer tokens, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 30e1317 59/62: Removed test-file from master branch, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode b04da34 60/62: Fixed tests, only clearing imenu when starting to process changes, if idle inteval is set to nil process changes directly, Christian Johansson, 2021/04/20