branch: externals/matlab-mode
commit 8aad06e7311db138ad5fee4cddb5d73a56f1071b
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>
matlab-ts-mode: add matlab-ts-mode-variable-override-builtin-face
---
matlab-ts-mode.el | 32 +++++++++++++++-
.../font_lock_builtins.m | 1 -
.../font_lock_builtins_expected.txt | 3 +-
...ont_lock_fcn_name_value_properties_expected.txt | 2 +-
.../font_lock_keywords_expected.txt | 6 +--
.../font_lock_operators_expected.txt | 2 +-
.../font_lock_variable.m | 43 ++++++++++++++++++++--
.../font_lock_variable_expected.txt | 43 ++++++++++++++++++++--
tests/test-matlab-ts-mode-font-lock.el | 1 +
9 files changed, 118 insertions(+), 15 deletions(-)
diff --git a/matlab-ts-mode.el b/matlab-ts-mode.el
index c9c0fb8921..4ffe2f7eec 100644
--- a/matlab-ts-mode.el
+++ b/matlab-ts-mode.el
@@ -123,6 +123,14 @@ Guidelines:
:slant italic))
"*Face used for classdef abstract method function signature declarations.")
+(defface matlab-ts-mode-variable-override-builtin-face
+ '((t :inherit font-lock-variable-name-face
+ :underline t))
+ "*Face used for variable overriding a builtin.
+For example, it is valid to override the disp command:
+ disp = 1:10;
+and then trying to use disp to display results will not work.")
+
(defcustom matlab-ts-mode-font-lock-level 3
"*Level of font lock for MATLAB code.
The \"Standard\" level plus either MLint flycheck or the MATLAB Language
@@ -639,6 +647,13 @@ than the FILED-EXPRESSION-NODE start-point and end-point."
(let ((command (treesit-node-text command-node)))
(gethash command matlab-ts-mode--builtins-ht)))
+(defun matlab-ts-mode--is-variable-overriding-builtin (variable-node)
+ "Is VARIABLE-NODE overriding a builtin?
+Example, disp variable is overriding the disp builtin functin:
+ disp = 1:10;"
+ (let ((variable (treesit-node-text variable-node)))
+ (gethash variable matlab-ts-mode--builtins-ht)))
+
(defvar matlab-ts-mode--font-lock-settings
(treesit-font-lock-rules
@@ -761,10 +776,25 @@ than the FILED-EXPRESSION-NODE start-point and end-point."
;; See: tests/test-matlab-ts-mode-font-lock-files/font_lock_variable.m
:language 'matlab
:feature 'variable
- '((assignment left: (identifier) @font-lock-variable-name-face)
+ '(((assignment left: (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ (:pred matlab-ts-mode--is-variable-overriding-builtin
+ @matlab-ts-mode-variable-override-builtin-face)))
+ (assignment left: (identifier) @font-lock-variable-name-face)
+ (multioutput_variable (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ (:pred matlab-ts-mode--is-variable-overriding-builtin
+ @matlab-ts-mode-variable-override-builtin-face))
(multioutput_variable (identifier) @font-lock-variable-name-face)
+ (global_operator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ (:pred matlab-ts-mode--is-variable-overriding-builtin
+ @matlab-ts-mode-variable-override-builtin-face))
(global_operator (identifier) @font-lock-variable-name-face)
+ (persistent_operator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ (:pred matlab-ts-mode--is-variable-overriding-builtin
+ @matlab-ts-mode-variable-override-builtin-face))
(persistent_operator (identifier) @font-lock-variable-name-face)
+ (for_statement (iterator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ (:pred
matlab-ts-mode--is-variable-overriding-builtin
+
@matlab-ts-mode-variable-override-builtin-face)))
(for_statement (iterator (identifier) @font-lock-variable-name-face)))
;; F-Rule: command dual arguments
diff --git a/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins.m
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins.m
index 73048c9175..2acbf18570 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins.m
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins.m
@@ -4,4 +4,3 @@ function varargout = font_lock_builtins(vararin)
disp(nargin)
varargout = varargin
end
-
diff --git
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins_expected.txt
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins_expected.txt
index d1bb83793c..67baf31062 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins_expected.txt
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_builtins_expected.txt
@@ -2,6 +2,5 @@ c ccc ccccccccc ccc
kkkkkkkk vvvvvvvvv o ffffffffffffffffffbvvvvvvvb
BBBBBB
BBBBbBBBBBBb
- vvvvvvvvv o BBBBBBBB
+ VVVVVVVVV o BBBBBBBB
kkk
-
diff --git
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_fcn_name_value_properties_expected.txt
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_fcn_name_value_properties_expected.txt
index b01f55ba94..43e6abf947 100644
---
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_fcn_name_value_properties_expected.txt
+++
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_fcn_name_value_properties_expected.txt
@@ -1,6 +1,6 @@
c ccc ccccccccc ccc
vvvvvvv o SsssssssSD
-vvvvv o bSsssssEESD SsssssEESbD
+VVVVV o bSsssssEESD SsssssEESbD
BBBBBBBBBBbBBBBBD dddddddD PPPPPPPPPP o SEESbD
diff --git
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_keywords_expected.txt
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_keywords_expected.txt
index 3929cb1411..4580b24d6c 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_keywords_expected.txt
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_keywords_expected.txt
@@ -23,14 +23,14 @@ kkkkkkkk ffffffffffffffffff o ffffff
BBBBBBBbddb
kkk
- v o nD
+ V o nD
kkk v o nDdd
kk BBBbdD nb
kkkkkkkk
kkkkkk BBBbdD nb
kkkkkkkk
kkkk
- v o B o nD
+ V o B o nD
kkk
BBBBbbSsssssssss ss s ss s s S BBBBBBBbdbbb
kkk
@@ -45,7 +45,7 @@ kkkkkkkk ffffffffffffffffff o ffffff
v o nnnD
v o nnnD
v o BBBBBbnDdbD
- kkkkkk v o nDd
+ kkkkkk V o nDd
dbBb o BBBbBBBbBBBbBBBBbdbbbbD
kkk
diff --git
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_operators_expected.txt
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_operators_expected.txt
index 7e76c7411b..9e80dc7e3d 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_operators_expected.txt
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_operators_expected.txt
@@ -16,7 +16,7 @@ v o bn nD n nb o n
v o doo
v o do
-v o n oo n
+V o n oo n
v o n oo n
diff --git a/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable.m
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable.m
index dfa22be18c..676fd99f43 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable.m
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable.m
@@ -1,17 +1,54 @@
% -*- matlab-ts -*-
function font_lock_variable
- global bar bar2
- persistent foo1;
+ % ((assignment left: (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ % (:pred matlab-ts-mode--is-variable-overriding-builtin
+ % @matlab-ts-mode-variable-override-builtin-face)))
+ disp = 10;
+ % (assignment left: (identifier) @font-lock-variable-name-face)
foo2 = 'a'
+ % (multioutput_variable (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ % (:pred matlab-ts-mode--is-variable-overriding-builtin
+ % @matlab-ts-mode-variable-override-builtin-face))
+ [disp, plot] = fcn1();
+
+ % (multioutput_variable (identifier) @font-lock-variable-name-face)
+ [a, b] = fcn1();
+
+ % (global_operator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ % (:pred matlab-ts-mode--is-variable-overriding-builtin
+ % @matlab-ts-mode-variable-override-builtin-face))
+ global disp plot
+
+ % (global_operator (identifier) @font-lock-variable-name-face)
+ global bar1 bar2
+
+ % (persistent_operator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ % (:pred matlab-ts-mode--is-variable-overriding-builtin
+ % @matlab-ts-mode-variable-override-builtin-face))
+ persistent plot;
+
+ % (persistent_operator (identifier) @font-lock-variable-name-face)
+ persistent foo1;
+
total = 0;
+
+ % (for_statement (iterator (identifier)
@matlab-ts-mode-variable-override-builtin-face
+ % (:pred
matlab-ts-mode--is-variable-overriding-builtin
+ %
@matlab-ts-mode-variable-override-builtin-face)))
+ for plot = 1:10
+ total = total + plot;
+ end
+
+
+ % (for_statement (iterator (identifier) @font-lock-variable-name-face))
for idx = 1:10
total = total + idx;
end
- [a, b] = fcn1();
+
end
function [a, b] = fcn1
diff --git
a/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable_expected.txt
b/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable_expected.txt
index f625bc1a39..4bf41c482d 100644
--- a/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable_expected.txt
+++ b/tests/test-matlab-ts-mode-font-lock-files/font_lock_variable_expected.txt
@@ -1,17 +1,54 @@
c ccc ccccccccc ccc
kkkkkkkk ffffffffffffffffff
- kkkkkk vvv vvvv
- kkkkkkkkkk vvvvD
+ c cccccccccccc ccccc cccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccc cccccccccccccccccccccccccccccccccccccccccccccc
+ c ccccccccccccccccccccccccccccccccccccccccccccccccc
+ VVVV o nnD
+ c ccccccccccc ccccc cccccccccccc cccccccccccccccccccccccccccccc
vvvv o SsS
+ c ccccccccccccccccccccc cccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccc cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccccccccccccccccccccccccccccccccccccccccccccc
+ bVVVVD VVVVb o ddddbbD
+
+ c ccccccccccccccccccccc cccccccccccc cccccccccccccccccccccccccccccc
+ bvD vb o ddddbbD
+
+ c cccccccccccccccc cccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccc cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccccccccccccccccccccccccccccccccccccccccccccc
+ kkkkkk VVVV VVVV
+
+ c cccccccccccccccc cccccccccccc cccccccccccccccccccccccccccccc
+ kkkkkk vvvv vvvv
+
+ c cccccccccccccccccccc cccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccc cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccccccccccccccccccccccccccccccccccccccccccccc
+ kkkkkkkkkk VVVVD
+
+ c cccccccccccccccccccc cccccccccccc cccccccccccccccccccccccccccccc
+ kkkkkkkkkk vvvvD
+
vvvvv o nD
+
+ c cccccccccccccc ccccccccc cccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c cccccc
cccccccccccccccccccccccccccccccccccccccccccccc
+ c
ccccccccccccccccccccccccccccccccccccccccccccccccc
+ kkk VVVV o nDnn
+ vvvvv o ddddd o BBBBD
+ kkk
+
+
+ c cccccccccccccc ccccccccc cccccccccccc ccccccccccccccccccccccccccccccc
kkk vvv o nDnn
vvvvv o ddddd o dddD
kkk
- bvD vb o ddddbbD
+
kkk
kkkkkkkk bvD vb o ffff
diff --git a/tests/test-matlab-ts-mode-font-lock.el
b/tests/test-matlab-ts-mode-font-lock.el
index 143d4a8e53..08ded74ae6 100644
--- a/tests/test-matlab-ts-mode-font-lock.el
+++ b/tests/test-matlab-ts-mode-font-lock.el
@@ -87,6 +87,7 @@ after validating it, rename it to
("S" . matlab-ts-mode-string-delimiter-face)
("t" . font-lock-type-face)
("v" . font-lock-variable-name-face)
+ ("V" . matlab-ts-mode-variable-override-builtin-face)
("w" . font-lock-warning-face)
))
(test-buf-setup (lambda () (matlab-sections-minor-mode -1))))