diff --git a/PSReadLine/Cmdlets.cs b/PSReadLine/Cmdlets.cs
index 70de1a71..73ed7009 100644
--- a/PSReadLine/Cmdlets.cs
+++ b/PSReadLine/Cmdlets.cs
@@ -84,6 +84,7 @@ public class PSConsoleReadLineOptions
public const ConsoleColor DefaultMemberColor = ConsoleColor.Gray;
public const ConsoleColor DefaultEmphasisColor = ConsoleColor.Cyan;
public const ConsoleColor DefaultErrorColor = ConsoleColor.Red;
+ public const ConsoleColor DefaultAttributeColor = ConsoleColor.Gray;
// Use dark black by default for the suggestion text.
// Find the most suitable color using https://stackoverflow.com/a/33206814
@@ -457,6 +458,24 @@ public object PredictionColor
set => _predictionColor = VTColorUtils.AsEscapeSequence(value);
}
+ public object AttributeColor
+ {
+ get => _attributeColor;
+ set => _attributeColor = VTColorUtils.AsEscapeSequence(value);
+ }
+
+ public object CommandArgumentColor
+ {
+ get => _commandArgumentColor;
+ set => _commandArgumentColor = VTColorUtils.AsEscapeSequence(value);
+ }
+
+ public object LoopLabelColor
+ {
+ get => _loopLabelColor;
+ set => _loopLabelColor = VTColorUtils.AsEscapeSequence(value);
+ }
+
internal string _defaultTokenColor;
internal string _commentColor;
internal string _keywordColor;
@@ -472,24 +491,30 @@ public object PredictionColor
internal string _errorColor;
internal string _selectionColor;
internal string _predictionColor;
+ internal string _attributeColor;
+ internal string _commandArgumentColor;
+ internal string _loopLabelColor;
internal void ResetColors()
{
var fg = Console.ForegroundColor;
- DefaultTokenColor = fg;
- CommentColor = DefaultCommentColor;
- KeywordColor = DefaultKeywordColor;
- StringColor = DefaultStringColor;
- OperatorColor = DefaultOperatorColor;
- VariableColor = DefaultVariableColor;
- CommandColor = DefaultCommandColor;
- ParameterColor = DefaultParameterColor;
- TypeColor = DefaultTypeColor;
- NumberColor = DefaultNumberColor;
- MemberColor = DefaultNumberColor;
- EmphasisColor = DefaultEmphasisColor;
- ErrorColor = DefaultErrorColor;
- PredictionColor = DefaultPredictionColor;
+ DefaultTokenColor = fg;
+ CommentColor = DefaultCommentColor;
+ KeywordColor = DefaultKeywordColor;
+ StringColor = DefaultStringColor;
+ OperatorColor = DefaultOperatorColor;
+ VariableColor = DefaultVariableColor;
+ CommandColor = DefaultCommandColor;
+ ParameterColor = DefaultParameterColor;
+ TypeColor = DefaultTypeColor;
+ NumberColor = DefaultNumberColor;
+ MemberColor = DefaultNumberColor;
+ EmphasisColor = DefaultEmphasisColor;
+ ErrorColor = DefaultErrorColor;
+ PredictionColor = DefaultPredictionColor;
+ AttributeColor = DefaultAttributeColor;
+ CommandArgumentColor = fg;
+ LoopLabelColor = fg;
var bg = Console.BackgroundColor;
if (fg == VTColorUtils.UnknownColor || bg == VTColorUtils.UnknownColor)
@@ -527,6 +552,9 @@ internal void SetColor(string property, object value)
{"Member", (o, v) => o.MemberColor = v},
{"Selection", (o, v) => o.SelectionColor = v},
{"Prediction", (o, v) => o.PredictionColor = v},
+ {"Attribute", (o, v) => o.AttributeColor = v},
+ {"CommandArgument", (o, v) => o.CommandArgumentColor = v},
+ {"LoopLabel", (o, v) => o.LoopLabelColor = v},
};
Interlocked.CompareExchange(ref ColorSetters, setters, null);
diff --git a/PSReadLine/PSReadLine.format.ps1xml b/PSReadLine/PSReadLine.format.ps1xml
index 9b239328..d1cd46d7 100644
--- a/PSReadLine/PSReadLine.format.ps1xml
+++ b/PSReadLine/PSReadLine.format.ps1xml
@@ -161,10 +161,18 @@ $d = [Microsoft.PowerShell.KeyHandler]::GetGroupingDescription($_.Group)
PredictionSource
+
+
+ [Microsoft.PowerShell.VTColorUtils]::FormatColor($_.AttributeColor)
+
[Microsoft.PowerShell.VTColorUtils]::FormatColor($_.CommandColor)
+
+
+ [Microsoft.PowerShell.VTColorUtils]::FormatColor($_.CommandArgumentColor)
+
[Microsoft.PowerShell.VTColorUtils]::FormatColor($_.CommentColor)
@@ -189,6 +197,10 @@ $d = [Microsoft.PowerShell.KeyHandler]::GetGroupingDescription($_.Group)
[Microsoft.PowerShell.VTColorUtils]::FormatColor($_.KeywordColor)
+
+
+ [Microsoft.PowerShell.VTColorUtils]::FormatColor($_.LoopLabelColor)
+
[Microsoft.PowerShell.VTColorUtils]::FormatColor($_.MemberColor)
diff --git a/PSReadLine/Render.cs b/PSReadLine/Render.cs
index 970e3f77..108b2e03 100644
--- a/PSReadLine/Render.cs
+++ b/PSReadLine/Render.cs
@@ -952,6 +952,9 @@ private string GetTokenColor(Token token)
case TokenKind.Number:
return _options._numberColor;
+
+ case TokenKind.Label:
+ return _options._loopLabelColor;
}
if ((token.TokenFlags & TokenFlags.Keyword) != 0)
@@ -964,6 +967,11 @@ private string GetTokenColor(Token token)
return _options._operatorColor;
}
+ if ((token.TokenFlags & TokenFlags.AttributeName) != 0)
+ {
+ return _options._attributeColor;
+ }
+
if ((token.TokenFlags & TokenFlags.TypeName) != 0)
{
return _options._typeColor;
@@ -974,6 +982,11 @@ private string GetTokenColor(Token token)
return _options._memberColor;
}
+ if ((token.Kind == TokenKind.Identifier || token.Kind == TokenKind.Generic) && token.TokenFlags == TokenFlags.None)
+ {
+ return _options._commandArgumentColor;
+ }
+
return _options._defaultTokenColor;
}
diff --git a/test/HistoryTest.cs b/test/HistoryTest.cs
index 8b071ea1..65dbd5bb 100644
--- a/test/HistoryTest.cs
+++ b/test/HistoryTest.cs
@@ -781,14 +781,14 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "aa",
+ TokenClassification.CommandArgument, "aa",
NextLine,
statusColors, "bck-i-search: a_")),
'b', CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "ab",
- TokenClassification.None, 'b',
+ TokenClassification.CommandArgument, 'b',
NextLine,
statusColors, "bck-i-search: ab_")),
'c', CheckThat(() => AssertScreenIs(2,
@@ -806,21 +806,21 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "aa",
+ TokenClassification.CommandArgument, "aa",
NextLine,
statusColors, "bck-i-search: a_")),
_.Ctrl_r, CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bb",
+ TokenClassification.CommandArgument, "bb",
NextLine,
statusColors, "bck-i-search: a_")),
_.Ctrl_r, CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_"))));
@@ -833,7 +833,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_")),
'b',
@@ -841,7 +841,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "ab",
- TokenClassification.None, 'c',
+ TokenClassification.CommandArgument, 'c',
NextLine,
statusColors, "bck-i-search: ab_"))));
@@ -853,14 +853,14 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_")),
_.Ctrl_g,
CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
- TokenClassification.None, "zed",
+ TokenClassification.CommandArgument, "zed",
NextLine))));
// Test that a random function terminates the search and has an
@@ -872,7 +872,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_")),
_.Alt_d, "zed"));
@@ -886,7 +886,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_")),
_.Escape, "y"));
@@ -900,7 +900,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "ab",
- TokenClassification.None, 'b',
+ TokenClassification.CommandArgument, 'b',
NextLine,
statusColors, "bck-i-search: ab_")),
_.Backspace,
@@ -908,7 +908,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "aa",
+ TokenClassification.CommandArgument, "aa",
NextLine,
statusColors, "bck-i-search: a_"))));
@@ -919,7 +919,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bc",
+ TokenClassification.CommandArgument, "bc",
NextLine,
statusColors, "bck-i-search: a_")),
_.Ctrl_r,
@@ -927,14 +927,14 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bzz",
+ TokenClassification.CommandArgument, "bzz",
NextLine,
statusColors, "bck-i-search: a_")),
_.Ctrl_r,
CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
- TokenClassification.None, "abzz",
+ TokenClassification.CommandArgument, "abzz",
NextLine,
statusColors, "failed-bck-i-search: a_")),
_.Ctrl_s,
@@ -942,7 +942,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, 'a',
- TokenClassification.None, "bzz",
+ TokenClassification.CommandArgument, "bzz",
NextLine,
statusColors, "fwd-i-search: a_")),
_.Ctrl_g));
@@ -952,7 +952,8 @@ public void InteractiveHistorySearch()
Test("echo aa1", Keys(_.Ctrl_r, "zz", _.Backspace, _.Backspace, "a1",
CheckThat(() => AssertScreenIs(2,
TokenClassification.Command, "echo",
- TokenClassification.None, " a",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "a",
emphasisColors, "a1",
NextLine,
statusColors, "bck-i-search: a1_"))
@@ -967,7 +968,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "aa",
- TokenClassification.None, "2",
+ TokenClassification.CommandArgument, "2",
NextLine,
statusColors, "bck-i-search: aa_")),
_.Ctrl_r,
@@ -975,7 +976,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "aa",
- TokenClassification.None, "1",
+ TokenClassification.CommandArgument, "1",
NextLine,
statusColors, "bck-i-search: aa_")),
_.Backspace,
@@ -983,7 +984,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "a",
- TokenClassification.None, "a2",
+ TokenClassification.CommandArgument, "a2",
NextLine,
statusColors, "bck-i-search: a_")),
'a', _.Ctrl_r,
@@ -991,7 +992,7 @@ public void InteractiveHistorySearch()
TokenClassification.Command, "echo",
TokenClassification.None, " ",
emphasisColors, "aa",
- TokenClassification.None, "1",
+ TokenClassification.CommandArgument, "1",
NextLine,
statusColors, "bck-i-search: aa_")),
_.Backspace));
diff --git a/test/KillYankTest.cs b/test/KillYankTest.cs
index 72677d51..cd098418 100644
--- a/test/KillYankTest.cs
+++ b/test/KillYankTest.cs
@@ -392,6 +392,7 @@ public void SelectBackwardWord()
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "echo",
TokenClassification.None, " ",
+ TokenClassification.CommandArgument,
Selected("foo "), "bar")),
_.Delete));
}
@@ -406,7 +407,9 @@ public void SelectNextWord()
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, Selected("foo"),
TokenClassification.None, Selected(" "),
- TokenClassification.None, "echo bar")),
+ TokenClassification.CommandArgument,"echo",
+ TokenClassification.None," ",
+ TokenClassification.CommandArgument, "bar")),
_.Delete));
}
@@ -419,7 +422,10 @@ public void SelectForwardWord()
"foo echo bar", _.Home, _.Alt_F,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, Selected("foo"),
- TokenClassification.None, " echo bar")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "echo",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "bar")),
_.Delete));
}
@@ -432,7 +438,10 @@ public void SelectShellForwardWord()
"a\\b\\c echo bar", _.Home, _.Ctrl_z,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, Selected("a\\b\\c"),
- TokenClassification.None, " echo bar")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "echo",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "bar")),
_.Delete));
}
@@ -445,7 +454,9 @@ public void SelectShellNextWord()
"a\\b\\c echo bar", _.Home, _.Ctrl_z,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, Selected("a\\b\\c "),
- TokenClassification.None, "echo bar")),
+ TokenClassification.CommandArgument, "echo",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "bar")),
_.Delete));
}
@@ -458,7 +469,9 @@ public void SelectShellBackwardWord()
"echo bar 'a b c'", _.Ctrl_z,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "echo",
- TokenClassification.None, " bar ",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "bar",
+ TokenClassification.None, " ",
TokenClassification.String, Selected("'a b c'"))),
_.Delete));
}
diff --git a/test/RenderTest.cs b/test/RenderTest.cs
index 1ef7b263..23d8274b 100644
--- a/test/RenderTest.cs
+++ b/test/RenderTest.cs
@@ -61,6 +61,34 @@ public void Render()
InputAcceptedNow
));
+ Test("", Keys(
+ "[AllowNull()]$R=ls C:\\;:Label while($true){break Label}",
+ _.Home,
+ CheckThat(() =>
+ AssertScreenIs(1,
+ TokenClassification.None, "[",
+ TokenClassification.Attribute, "AllowNull",
+ TokenClassification.None, "()]",
+ TokenClassification.Variable, "$R",
+ TokenClassification.Operator, "=",
+ TokenClassification.Command, "ls",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "C:\\",
+ TokenClassification.None, ";",
+ TokenClassification.LoopLabel, ":Label",
+ TokenClassification.None, " ",
+ TokenClassification.Keyword, "while",
+ TokenClassification.None, "(",
+ TokenClassification.Variable, "$true",
+ TokenClassification.None, "){",
+ TokenClassification.Keyword, "break",
+ TokenClassification.None, " ",
+ TokenClassification.Member, "Label",
+ TokenClassification.None, "}")),
+ _.Ctrl_c,
+ InputAcceptedNow
+ ));
+
// This tests for priority to highlight a command regardless of token kind and nested tokens potential to bleed the parent token color to the next token
Test("", Keys(
". -abc def;. abc$name -def",
@@ -69,7 +97,9 @@ public void Render()
AssertScreenIs(1,
TokenClassification.None, ". ",
TokenClassification.Command, "-abc",
- TokenClassification.None, " def;. ",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "def",
+ TokenClassification.None, ";. ",
TokenClassification.Command, "abc",
TokenClassification.Variable, "$name",
TokenClassification.None, " ",
@@ -86,7 +116,8 @@ public void Render()
AssertScreenIs(1,
TokenClassification.None, ". ",
TokenClassification.Command, "++",
- TokenClassification.None, " abc",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "abc",
TokenClassification.Variable, "$name",
TokenClassification.None, " ",
TokenClassification.Parameter, "-def")),
@@ -103,7 +134,8 @@ public void Render()
TokenClassification.Keyword, "process",
TokenClassification.None, " ",
TokenClassification.Variable, "$abc",
- TokenClassification.None, "\\name | def")),
+ TokenClassification.CommandArgument, "\\name",
+ TokenClassification.None, " | def")),
_.Ctrl_c,
InputAcceptedNow
));
@@ -113,7 +145,9 @@ public void Render()
CheckThat(() =>
AssertScreenIs(1,
TokenClassification.Keyword, "process",
- TokenClassification.None, " out put")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "out",
+ TokenClassification.None, " put")),
_.Ctrl_c,
InputAcceptedNow
));
diff --git a/test/SuggestionTest.cs b/test/SuggestionTest.cs
index 95070bee..de757764 100644
--- a/test/SuggestionTest.cs
+++ b/test/SuggestionTest.cs
@@ -146,7 +146,11 @@ public void AcceptNextSuggestionWordCanAcceptMoreThanOneWords()
_.Alt_3, _.Ctrl_f,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "abc",
- TokenClassification.None, " def ghi ",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "def",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "ghi",
+ TokenClassification.None, " ",
TokenClassification.Prediction, "jkl")),
_.Ctrl_z, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, 'a',
@@ -154,7 +158,11 @@ public void AcceptNextSuggestionWordCanAcceptMoreThanOneWords()
_.Alt_3, _.Alt_f,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "abc",
- TokenClassification.None, " def ghi ",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "def",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "ghi",
+ TokenClassification.None, " ",
TokenClassification.Prediction, "jkl")),
_.Ctrl_z, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, 'a',
@@ -162,7 +170,12 @@ public void AcceptNextSuggestionWordCanAcceptMoreThanOneWords()
_.Alt_8, _.Alt_f,
CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "abc",
- TokenClassification.None, " def ghi jkl"))
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "def",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "ghi",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "jkl"))
));
}
@@ -179,11 +192,13 @@ public void AcceptSuggestionWithSelection()
TokenClassification.Prediction, " diff")),
_.RightArrow, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " diff")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "diff")),
_.Ctrl_z, CheckThat(() => AssertCursorLeftIs(3)),
_.Ctrl_f, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " diff",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "diff",
TokenClassification.Prediction, " --cached")),
// Perform visual selection and then accept suggestion.
@@ -199,7 +214,8 @@ public void AcceptSuggestionWithSelection()
}),
_.RightArrow, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " diff")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "diff")),
// Perform visual selection and then accept next suggestion word.
_.Ctrl_z, CheckThat(() => AssertScreenIs(1,
@@ -214,7 +230,8 @@ public void AcceptSuggestionWithSelection()
}),
_.Ctrl_f, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " diff",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "diff",
TokenClassification.Prediction, " --cached"))
));
}
@@ -270,15 +287,20 @@ public void HistoryEditsCanUndoProperly()
Test("git checkout ", Keys(
"git ch", CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " ch",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "ch",
TokenClassification.Prediction, "eckout -b branch origin/bbbb")),
_.Ctrl_f, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " checkout ",
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "checkout",
+ TokenClassification.None, " ",
TokenClassification.Prediction, "-b branch origin/bbbb")),
_.Enter, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " checkout "))
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "checkout",
+ TokenClassification.None, " "))
));
// Get the last command line from history, and revert the line.
@@ -286,7 +308,9 @@ public void HistoryEditsCanUndoProperly()
Test("", Keys(
_.UpArrow, CheckThat(() => AssertScreenIs(1,
TokenClassification.Command, "git",
- TokenClassification.None, " checkout ")),
+ TokenClassification.None, " ",
+ TokenClassification.CommandArgument, "checkout",
+ TokenClassification.None, " ")),
_.Escape));
}
diff --git a/test/UnitTestReadLine.cs b/test/UnitTestReadLine.cs
index 8abbef29..32f5b814 100644
--- a/test/UnitTestReadLine.cs
+++ b/test/UnitTestReadLine.cs
@@ -51,6 +51,9 @@ public enum TokenClassification
Member,
Selection,
Prediction,
+ Attribute,
+ CommandArgument,
+ LoopLabel,
}
public abstract partial class ReadLine
@@ -90,36 +93,42 @@ private enum KeyMode
// so the tests aren't sensitive to tweaks to the default colors.
internal static readonly ConsoleColor[] Colors = new []
{
- /*None*/ ConsoleColor.DarkRed,
- /*Comment*/ ConsoleColor.Blue,
- /*Keyword*/ ConsoleColor.Cyan,
- /*String*/ ConsoleColor.Gray,
- /*Operator*/ ConsoleColor.Green,
- /*Variable*/ ConsoleColor.Magenta,
- /*Command*/ ConsoleColor.Red,
- /*Parameter*/ ConsoleColor.White,
- /*Type*/ ConsoleColor.Yellow,
- /*Number*/ ConsoleColor.DarkBlue,
- /*Member*/ ConsoleColor.DarkMagenta,
- /*Selection*/ ConsoleColor.Black,
- /*Prediction*/ConsoleColor.DarkGreen,
+ /*None*/ ConsoleColor.DarkRed,
+ /*Comment*/ ConsoleColor.Blue,
+ /*Keyword*/ ConsoleColor.Cyan,
+ /*String*/ ConsoleColor.Gray,
+ /*Operator*/ ConsoleColor.Green,
+ /*Variable*/ ConsoleColor.Magenta,
+ /*Command*/ ConsoleColor.Red,
+ /*Parameter*/ ConsoleColor.White,
+ /*Type*/ ConsoleColor.Yellow,
+ /*Number*/ ConsoleColor.DarkBlue,
+ /*Member*/ ConsoleColor.DarkMagenta,
+ /*Selection*/ ConsoleColor.Black,
+ /*Prediction*/ ConsoleColor.DarkGreen,
+ /*Attribute*/ ConsoleColor.DarkCyan,
+ /*CommandArgument*/ConsoleColor.DarkYellow,
+ /*LoopLabel*/ ConsoleColor.DarkGray,
};
internal static readonly ConsoleColor[] BackgroundColors = new[]
{
- /*None*/ ConsoleColor.DarkGray,
- /*Comment*/ ConsoleColor.DarkBlue,
- /*Keyword*/ ConsoleColor.DarkCyan,
- /*String*/ ConsoleColor.DarkGray,
- /*Operator*/ ConsoleColor.DarkGreen,
- /*Variable*/ ConsoleColor.DarkMagenta,
- /*Command*/ ConsoleColor.DarkRed,
- /*Parameter*/ ConsoleColor.DarkYellow,
- /*Type*/ ConsoleColor.Black,
- /*Number*/ ConsoleColor.Gray,
- /*Member*/ ConsoleColor.Yellow,
- /*Selection*/ ConsoleColor.Gray,
- /*Prediction*/ConsoleColor.Cyan,
+ /*None*/ ConsoleColor.DarkGray,
+ /*Comment*/ ConsoleColor.DarkBlue,
+ /*Keyword*/ ConsoleColor.DarkCyan,
+ /*String*/ ConsoleColor.DarkGray,
+ /*Operator*/ ConsoleColor.DarkGreen,
+ /*Variable*/ ConsoleColor.DarkMagenta,
+ /*Command*/ ConsoleColor.DarkRed,
+ /*Parameter*/ ConsoleColor.DarkYellow,
+ /*Type*/ ConsoleColor.Black,
+ /*Number*/ ConsoleColor.Gray,
+ /*Member*/ ConsoleColor.Yellow,
+ /*Selection*/ ConsoleColor.Gray,
+ /*Prediction*/ ConsoleColor.Cyan,
+ /*Attribute*/ ConsoleColor.White,
+ /*CommandArgument*/ConsoleColor.Red,
+ /*LoopLabel*/ ConsoleColor.Magenta,
};
class KeyHandler
@@ -509,7 +518,8 @@ private void TestSetup(KeyMode keyMode, params KeyHandler[] keyHandlers)
var tokenTypes = new[]
{
"Default", "Comment", "Keyword", "String", "Operator", "Variable",
- "Command", "Parameter", "Type", "Number", "Member", "Selection", "Prediction"
+ "Command", "Parameter", "Type", "Number", "Member", "Selection",
+ "Prediction","Attribute","CommandArgument","LoopLabel"
};
var colors = new Hashtable();
for (var i = 0; i < tokenTypes.Length; i++)