branch: externals/matlab-mode
commit 80d5d42f352efd54e917745da0e282a63e17a225
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>
matlab-ts-mode: add spacing around name = value elements
This is consistent with other indent engine, e.g. clang-format for default
name = value arguments,
places one space to the left and right of the '=', e.g.
void func(int a = 1, int b = 2);
---
doc/matlab-code-indent.org | 30 ++++++++++++++++++++++
matlab-ts-mode--ei.el | 12 ---------
.../electric_indent_keyword_fcns_expected.m | 4 +--
.../electric_indent_keyword_fcns_expected_msgs.m | 4 +--
.../electric_indent_method_attributes_expected.m | 2 +-
...ectric_indent_method_attributes_expected_msgs.m | 2 +-
.../electric_indent_name_value_args_expected.m | 2 +-
...electric_indent_name_value_args_expected_msgs.m | 2 +-
..._indent_prop_attribute_id_cell_value_expected.m | 2 +-
...nt_prop_attribute_id_cell_value_expected_msgs.m | 2 +-
.../electric_indent_prop_attribute_id_string.m | 2 +-
...tric_indent_prop_attribute_id_string_expected.m | 2 +-
...indent_prop_attribute_id_string_expected_msgs.m | 2 +-
.../electric_indent_prop_attribute_id_string.m | 2 +-
...ic_indent_prop_attribute_id_string_expected.txt | 28 ++++++++++----------
15 files changed, 58 insertions(+), 40 deletions(-)
diff --git a/doc/matlab-code-indent.org b/doc/matlab-code-indent.org
index 77443e4b75..4745420bb1 100644
--- a/doc/matlab-code-indent.org
+++ b/doc/matlab-code-indent.org
@@ -247,6 +247,36 @@ directives.
end
#+end_src
+ Example 3 (name = value non-positional arguments):
+
+ #+begin_src matlab
+ r = myFunction(Name1=3+3 * 4,Name2=7-1 / 2)
+
+ function result = myFunction(NameValueArgs)
+ arguments
+ NameValueArgs.Name1
+ NameValueArgs.Name2
+ end
+
+ result = NameValueArgs.Name1* NameValueArgs.Name2;
+ end
+ #+end_src
+
+ Indents to:
+
+ #+begin_src matlab
+ r = myFunction(Name1 = 3 + 3 * 4, Name2 = 7 - 1 / 2)
+
+ function result = myFunction(NameValueArgs)
+ arguments
+ NameValueArgs.Name1
+ NameValueArgs.Name2
+ end
+
+ result = NameValueArgs.Name1 * NameValueArgs.Name2;
+ end
+ #+end_src
+
6. *Function call formats*
- On a single line:
diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index 9739acbe6b..31d86a4f79 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -137,11 +137,6 @@
(,(rx bos (or "," ";" "command_argument" "command_name" "enum-id") eos)
"." 1)
- ;; Case arguments name=value syntax, the "=" node is converted to "n=v"
- ;; TopTester: electric_indent_name_value_args.m
- ("." ,(rx bos "n=v" eos)
0)
- (,(rx bos "n=v" eos) "."
0)
-
(,matlab-ts-mode--ei-0-after-re "."
0)
(,(rx bos "]" eos) ,(rx bos (or "," ";") eos)
0)
@@ -240,13 +235,6 @@ be unary-op even though the node type is \"+\"."
(setq node parent
node-type parent-type))
- ;; Case: name=value argument pair
- ((and (string= node-type "=")
- (or (string= parent-type "arguments")
- (string= parent-type "attribute")))
- ;; arguments name=value
- (setq node-type "n=v"))
-
;; Case: prop-id, prop-class-id, enum-id
((string= node-type "identifier")
(cond ((string= parent-type "property") ;; propertyWithOutDot?
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
index 7325617f11..62c9200584 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
@@ -8,7 +8,7 @@ classdef electric_indent_keyword_fcns < handle
normalprop = 1;
end
- properties (Access='public')
+ properties (Access = 'public')
% See if we can create properties using keywords
%properties = 1;
%methods = 1;
@@ -17,7 +17,7 @@ classdef electric_indent_keyword_fcns < handle
prop = 1;
end
- events (Access='private')
+ events (Access = 'private')
%properties
%events
%methods
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
index e7c577aba7..9f4d9e8ea7 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
@@ -8,7 +8,7 @@ classdef electric_indent_keyword_fcns < handle % <{Matched
rule: (matlab-ts-mod
normalprop = 1; % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
- properties (Access='public') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ properties (Access = 'public') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
% See if we can create properties using keywords % <{Matched rule:
((parent-is
"\\`\\(?:arguments_statement\\|e\\(?:numeration\\|vents\\)\\|f\\(?:or_statement\\|unction_definition\\)\\|if_statement\\|methods\\|properties\\|while_statement\\)\\'")
parent 4)}>
%properties = 1; % <{Matched rule:
(matlab-ts-mode--i-block-comment-end-matcher
matlab-ts-mode--i-block-comment-end-anchor 0)}>
%methods = 1; % <{Matched rule:
(matlab-ts-mode--i-block-comment-end-matcher
matlab-ts-mode--i-block-comment-end-anchor 0)}>
@@ -17,7 +17,7 @@ classdef electric_indent_keyword_fcns < handle % <{Matched
rule: (matlab-ts-mod
prop = 1; % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
- events (Access='private') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ events (Access = 'private') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
%properties % <{Matched rule: ((parent-is
"\\`\\(?:arguments_statement\\|e\\(?:numeration\\|vents\\)\\|f\\(?:or_statement\\|unction_definition\\)\\|if_statement\\|methods\\|properties\\|while_statement\\)\\'")
parent 4)}>
%events % <{Matched rule:
(matlab-ts-mode--i-block-comment-end-matcher
matlab-ts-mode--i-block-comment-end-anchor 0)}>
%methods % <{Matched rule:
(matlab-ts-mode--i-block-comment-end-matcher
matlab-ts-mode--i-block-comment-end-anchor 0)}>
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected.m
index cf5168349e..96e354ae63 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected.m
@@ -3,7 +3,7 @@
% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in
error nodes
classdef electric_indent_method_attributes
- methods (Access=private, Static)
+ methods (Access = private, Static)
function b = foo(a)
b = 2 * a;
end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected_msgs.m
index 0b4dbbdd96..582a2b5917 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected_msgs.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_method_attributes_expected_msgs.m
@@ -3,7 +3,7 @@
% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in
error nodes % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
classdef electric_indent_method_attributes % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
- methods (Access=private, Static) % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ methods (Access = private, Static) % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
function b = foo(a) % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
b = 2 * a; % <{Matched rule: ((parent-is
"\\`function_definition\\'") parent
matlab-ts-mode--set-function-indent-level-for-gp)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected.m
index c3d28d609d..83bb8c8900 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected.m
@@ -1,6 +1,6 @@
% -*- matlab-ts -*-
-r = myFunction(Name1=3, Name2=7)
+r = myFunction(Name1 = 3, Name2 = 7)
function result = myFunction(NameValueArgs)
arguments
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected_msgs.m
index 96a79c4287..32ef2a4be6 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected_msgs.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_name_value_args_expected_msgs.m
@@ -1,6 +1,6 @@
% -*- matlab-ts -*- % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
-r = myFunction(Name1=3, Name2=7) % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
+r = myFunction(Name1 = 3, Name2 = 7) % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
function result = myFunction(NameValueArgs) % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
arguments % <{Matched rule: ((parent-is "\\`function_definition\\'")
parent matlab-ts-mode--set-function-indent-level-for-gp)}>
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected.m
index f45329ce37..11dd0254d9 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected.m
@@ -3,7 +3,7 @@
% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in
error nodes
classdef electric_indent_prop_attribute_id_cell_value
- properties (SetAccess='private', GetAccess={?foo.barj.zoo, ?foo.bar.goo})
+ properties (SetAccess = 'private', GetAccess = {?foo.barj.zoo,
?foo.bar.goo})
ConnectionHandle
end
end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected_msgs.m
index 465aca1e17..bc2dd94c3b 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected_msgs.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_cell_value_expected_msgs.m
@@ -3,7 +3,7 @@
% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in
error nodes % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
classdef electric_indent_prop_attribute_id_cell_value % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
- properties (SetAccess='private', GetAccess={?foo.barj.zoo, ?foo.bar.goo})
% <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ properties (SetAccess = 'private', GetAccess = {?foo.barj.zoo,
?foo.bar.goo}) % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
ConnectionHandle % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
index eb478822ba..8fd405ce44 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
@@ -1,7 +1,7 @@
% -*- matlab-ts -*-
classdef electric_indent_prop_attribute_id_string
- properties (SetAccess='protected')
+ properties (SetAccess = 'protected')
p1 char
prop2 logical
end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.m
index eb478822ba..8fd405ce44 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.m
@@ -1,7 +1,7 @@
% -*- matlab-ts -*-
classdef electric_indent_prop_attribute_id_string
- properties (SetAccess='protected')
+ properties (SetAccess = 'protected')
p1 char
prop2 logical
end
diff --git
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected_msgs.m
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected_msgs.m
index 17feb8cfaa..43863e52a2 100644
---
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected_msgs.m
+++
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected_msgs.m
@@ -1,7 +1,7 @@
% -*- matlab-ts -*- % <{Matched rule: (matlab-ts-mode--i-top-level
matlab-ts-mode--column-0 0)}>
classdef electric_indent_prop_attribute_id_string % <{Matched rule:
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
- properties (SetAccess='protected') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
+ properties (SetAccess = 'protected') % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
p1 char % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
prop2 logical % <{Matched rule: ((node-is
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
parent 4)}>
end % <{Matched rule: ((node-is
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'")
parent 0)}>
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
index eb478822ba..8fd405ce44 100644
---
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string.m
@@ -1,7 +1,7 @@
% -*- matlab-ts -*-
classdef electric_indent_prop_attribute_id_string
- properties (SetAccess='protected')
+ properties (SetAccess = 'protected')
p1 char
prop2 logical
end
diff --git
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.txt
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.txt
index 602aa83b23..883d54cf4e 100644
---
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.txt
+++
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_prop_attribute_id_string_expected.txt
@@ -1,15 +1,15 @@
# -*- t-utils-ts-parse-tree -*-
-(source_file<1,164> (comment[1,20]@{% -*- matlab-ts -*-}@) \n[20,22]
- (class_definition<22,163> classdef[22,30] name:
(identifier[31,71]@{electric_indent_prop_attribute_id_string}@) \n[71,72]
- (properties<76,159> properties[76,86]
- (attributes<87,110> ([87,88]
- (attribute<88,109> (identifier[88,97]@{SetAccess}@) =[97,98]
- (string<98,109> '[98,99] (string_content[99,108]@{protected}@)
'[108,109]))
- )[109,110])
- \n[110,111]
- (property<119,129> name: (identifier[119,121]@{p1}@)
(identifier[125,129]@{char}@))
- \n[129,130]
- (property<138,151> name: (identifier[138,143]@{prop2}@)
(identifier[144,151]@{logical}@))
- \n[151,152] end[156,159])
- \n[159,160] end[160,163])
- \n[163,164])
+(source_file<1,166> (comment[1,20]@{% -*- matlab-ts -*-}@) \n[20,22]
+ (class_definition<22,165> classdef[22,30] name:
(identifier[31,71]@{electric_indent_prop_attribute_id_string}@) \n[71,72]
+ (properties<76,161> properties[76,86]
+ (attributes<87,112> ([87,88]
+ (attribute<88,111> (identifier[88,97]@{SetAccess}@) =[98,99]
+ (string<100,111> '[100,101] (string_content[101,110]@{protected}@)
'[110,111]))
+ )[111,112])
+ \n[112,113]
+ (property<121,131> name: (identifier[121,123]@{p1}@)
(identifier[127,131]@{char}@))
+ \n[131,132]
+ (property<140,153> name: (identifier[140,145]@{prop2}@)
(identifier[146,153]@{logical}@))
+ \n[153,154] end[158,161])
+ \n[161,162] end[162,165])
+ \n[165,166])