[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode a0d2abc2ee 009/212: More working on imenu gen
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode a0d2abc2ee 009/212: More working on imenu generation via parser SDT |
Date: |
Wed, 26 Jan 2022 01:50:12 -0500 (EST) |
branch: externals/phps-mode
commit a0d2abc2eecc4d793906d6663af13c22ca1b9f5a
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More working on imenu generation via parser SDT
---
phps-mode-ast.el | 14 +++++++++++---
test/phps-mode-test-ast.el | 44 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 66e7f44091..0efce743e1 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -85,7 +85,7 @@
(setq
phps-mode-ast--current-namespace
ast-object)
- ast-object))
+ nil))
phps-mode-parser--table-translations)
;; top_statement -> (T_NAMESPACE namespace_declaration_name "{"
top_statement_list "}")
@@ -229,9 +229,17 @@
(setq
phps-mode-ast--tree
nil)
- (let ((_translation (phps-mode-parser-translate)))
+ (let ((translation (phps-mode-parser-translate)))
- ;; (message "translation: %S" translation)
+ (message "translation: %S" translation)
+ (when translation
+ (if phps-mode-ast--tree
+ (setq
+ phps-mode-ast--tree
+ (append phps-mode-ast--tree translation))
+ (setq
+ phps-mode-ast--tree
+ translation)))
(when phps-mode-ast--current-namespace
(plist-put
diff --git a/test/phps-mode-test-ast.el b/test/phps-mode-test-ast.el
index 544cc8d5b8..05339ce8e9 100644
--- a/test/phps-mode-test-ast.el
+++ b/test/phps-mode-test-ast.el
@@ -82,6 +82,50 @@
"Run test for imenu generation."
(message "-- Running tests for imenu generation... --\n")
+ (phps-mode-test-ast--buffer-contents
+ "<?php\nclass myClass\n{\n\n public function myFunction1()\n {\n
echo \"my string with variable {$variable} inside it\";\n }\n\n public
function myFunction2()\n {\n }\n\n}"
+ "Imenu generated via parser SDT for simple class"
+ (lambda()
+ (phps-mode-ast-generate)
+ (message "\nAST:\n%S\n" phps-mode-ast--tree)
+ (message "imenu-index:\n%S\n" phps-mode-ast--imenu)
+ (should (equal
+ phps-mode-ast--imenu
+ '(("myClass" ("myFunction1" . 44) ("myFunction2" . 153)))))))
+
+ ;; (phps-mode-test-ast--buffer-contents
+ ;; "<?php\ninterface myInterface {\n public function myFunctionA() {}\n
protected function myFunctionB() {}\n}\n"
+ ;; "Imenu generated via parser SDT for interface"
+ ;; (lambda()
+ ;; (phps-mode-ast-generate)
+ ;; (message "\nAST:\n%S\n" phps-mode-ast--tree)
+ ;; (message "imenu-index:\n%S\n" phps-mode-ast--imenu)
+ ;; (should (equal
+ ;; phps-mode-ast--imenu
+ ;; '(("myInterface" . (("myFunctionA" . 51) ("myFunctionB" .
91))))))))
+
+ ;; (phps-mode-test-ast--buffer-contents
+ ;; "<?php\nfunction myFunctionA() {}\nfunction myFunctionB() {}\n$var =
function () {\n echo 'here';\n};"
+ ;; "Imenu generated via parser SDT for function-oriented file without
namespace"
+ ;; (lambda()
+ ;; (let ((parse (phps-mode-parser-parse)))
+ ;; (message "Left-to-right with left-most derivation:\n%S\n" parse)
+ ;; (dolist (production-number (reverse parse))
+ ;; (let ((production
+ ;; (phps-mode-parser--get-grammar-production-by-number
+ ;; production-number)))
+ ;; (message
+ ;; "%d: %S -> %S"
+ ;; production-number
+ ;; (car (car production))
+ ;; (car (cdr production))))))
+ ;; (phps-mode-ast-generate)
+ ;; ;; (message "\nAST:\n%S\n" phps-mode-ast--tree)
+ ;; ;; (message "imenu-index:\n%S\n" phps-mode-ast--imenu)
+ ;; (should (equal
+ ;; phps-mode-ast--imenu
+ ;; '(("myFunctionA" . 16) ("myFunctionB" . 42))))))
+
(phps-mode-test-ast--buffer-contents
"<?php\n\nnamespace MyNamespace;\n\nfunction aFunction() {\n /**\n *
With some contents\n */\n}\n\nclass MyClass\n{\n\n /**\n *\n
*/\n public function __construct()\n {\n if ($test) {\n }\n
}\n\n /**\n *\n */\n public function myFunction1()\n {\n
$this->addMessage(\"My random {$message} here\" . ($random > 1 ? \"A\" :
\"\") . \" was here.\");\n }\n \n /**\n *\n */\n public
function myFunction2()\n [...]
"Passed imenu-generation via parser AST for basic object oriented file"
- [elpa] externals/phps-mode updated (3734d56372 -> 5ae4886f14), Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 968f7b067c 012/212: Moved all imenu tests to AST tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 26b8d5cc97 020/212: Added bookkeeping support for super-globals, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 52b5692d91 017/212: Passed second test for bookkeeping via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8115521ef8 011/212: Imenu-generation via parser SDT passing more tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 040b2564b0 031/212: Some work on AST bookkeeping, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 16c15c9ef4 004/212: Added type check to imenu-index generation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 35c9b0fd1c 003/212: Imenu generated correctly for one case, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8652f7162e 014/212: Started on bookkeeping generation via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode a0d2abc2ee 009/212: More working on imenu generation via parser SDT,
Christian Johansson <=
- [elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $key => $value), Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d44e79ad03 028/212: More work on grammar SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f79b6118a4 087/212: Optimization of string indentation function, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode b94ee63396 089/212: More work on indentation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d8503c70bb 106/212: Passing indent tests for switch case, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 4f20de353e 109/212: Passed indent tests for PSR-2, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 6655248e86 105/212: Passing indent test for regular switch statement, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 4e5be4f8f8 112/212: More indentation work for mixed PHP/HTML content, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode ff62626f48 110/212: Passing indent test for square bracket array, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 50d006852c 129/212: Fixed issue with indent being dependent on position of point on current line, Christian Johansson, 2022/01/26