branch: externals/matlab-mode
commit 7b51492ce95bab783576007b673d6fc07c824642
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>

    matlab-ts-view-parse-errors: show error line content with pointer
---
 matlab-ts-mode.el                                    | 20 ++++++++++++++++++--
 .../view_parse_errors_simple_expected.txt            |  4 ++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index e938dfabe0..9c4c2bd01e 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -3579,13 +3579,29 @@ provided."
                         (goto-char end-point)
                         (1+ (current-column)))))
         (push (format
-               "%s:%d:%d: error: parse error from line %d:%d to line %d:%d 
(point %d to %d)\n"
+               "%s:%d:%d: error: parse error from line %d:%d to line %d:%d 
(point %d to %d)
+%5d | %s
+      | %s^
+"
                buf-name
                start-line start-col
                start-line start-col
                end-line end-col
                start-point
-               end-point)
+               end-point
+               start-line
+               ;; error line
+               (buffer-substring (save-excursion
+                                   (goto-char start-point)
+                                   (line-beginning-position))
+                                 (save-excursion
+                                   (goto-char start-point)
+                                   (line-end-position)))
+               ;; space padding for the pointer (^)
+               (save-excursion
+                 (goto-char start-point)
+                 (let ((n-spaces (- start-point (line-beginning-position))))
+                   (make-string n-spaces ? ))))
               result-list)))
     (let ((errs (mapconcat #'identity (reverse result-list))))
       (if (string= errs "")
diff --git 
a/tests/test-matlab-ts-mode-view-parse-errors-files/view_parse_errors_simple_expected.txt
 
b/tests/test-matlab-ts-mode-view-parse-errors-files/view_parse_errors_simple_expected.txt
index d7a5daba87..0fc36ad30c 100644
--- 
a/tests/test-matlab-ts-mode-view-parse-errors-files/view_parse_errors_simple_expected.txt
+++ 
b/tests/test-matlab-ts-mode-view-parse-errors-files/view_parse_errors_simple_expected.txt
@@ -2,4 +2,8 @@ test-matlab-ts-mode-view-parse-errors-action-fun result:
 ---
 Tree-sitter parse errors.
 view_parse_errors_simple.m:3:3: error: parse error from line 3:3 to line 3:4 
(point 24 to 25)
+    3 | a = = 2000;
+      |   ^
 view_parse_errors_simple.m:5:3: error: parse error from line 5:3 to line 5:6 
(point 37 to 40)
+    5 | b = *= 2;
+      |   ^

Reply via email to