Skip to content

Commit 5c1b602

Browse files
committed
Basic combination of strikethrough with emphasis.
1 parent 5390999 commit 5c1b602

File tree

5 files changed

+156
-45
lines changed

5 files changed

+156
-45
lines changed

Tests/MarkdownTests.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,15 @@ public void NestedWithIncreasingLevel()
205205
}
206206

207207

208+
[TestMethod()]
209+
public void NestedWithStrikethrough()
210+
{
211+
DoTest("~~*Some test*~~", ("~~*Some test*~~", ClassificationEnum.StrikethroughEmphasisMinor));
212+
DoTest("~~**Some test**~~", ("~~**Some test**~~", ClassificationEnum.StrikethroughEmphasisMajor));
213+
DoTest("~~***Some test***~~", ("~~***Some test***~~", ClassificationEnum.StrikethroughEmphasisHuge));
214+
}
215+
216+
208217
[TestMethod()]
209218
public void MultipleEquallyNested()
210219
{
@@ -231,7 +240,7 @@ public void MultipleEquallyNested()
231240
DoTest("***this *is* some ___nested___ test **yet** and __again__***",
232241
("***this *is* some ___nested___ test **yet** and __again__***", ClassificationEnum.EmphasisHuge));
233242

234-
// Not actually nested.
243+
// Not actually nested at the start.
235244
DoTest("*this *is* some ___not nested___ test __beware__*",
236245
("*this *is*", ClassificationEnum.EmphasisMinor),
237246
("___not nested___", ClassificationEnum.EmphasisHuge),
@@ -260,7 +269,7 @@ public void MultipleEquallyNested()
260269
DoTest("___this _is_ some ***nested*** test __yet__ and **again**___",
261270
("___this _is_ some ***nested*** test __yet__ and **again**___", ClassificationEnum.EmphasisHuge));
262271

263-
// Not actually nested.
272+
// Not actually nested at the start.
264273
DoTest("_this _is_ some ***not nested*** test **beware**_",
265274
("_this _is_", ClassificationEnum.EmphasisMinor),
266275
("***not nested***", ClassificationEnum.EmphasisHuge),

VSDoxyHighlighter/ClassificationFormatDefinitions.cs

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,81 @@ public override void Reinitialize()
265265
}
266266

267267

268+
[Export(typeof(EditorFormatDefinition))]
269+
[ClassificationType(ClassificationTypeNames = ClassificationIDs.ID_strikethroughEmphasisMinor)]
270+
[Name(ClassificationIDs.ID_strikethroughEmphasisMinor)]
271+
[UserVisible(true)]
272+
[Order(After = ClassificationDefinitionBase.cPriority)]
273+
internal sealed class StrikethroughEmphasisMinorFormat : ClassificationDefinitionBase
274+
{
275+
[ImportingConstructor]
276+
public StrikethroughEmphasisMinorFormat(DefaultColors defaultColors)
277+
: base(defaultColors, ClassificationIDs.ID_strikethroughEmphasisMinor, "VSDoxyHighlighter - Strikethrough + emphasis (minor)")
278+
{
279+
}
280+
281+
public override void Reinitialize()
282+
{
283+
base.Reinitialize();
284+
285+
TextDecorations = new TextDecorationCollection {
286+
new TextDecoration(
287+
TextDecorationLocation.Strikethrough, null, 0.0, TextDecorationUnit.FontRecommended, TextDecorationUnit.FontRecommended)
288+
};
289+
}
290+
}
291+
292+
293+
[Export(typeof(EditorFormatDefinition))]
294+
[ClassificationType(ClassificationTypeNames = ClassificationIDs.ID_strikethroughEmphasisMajor)]
295+
[Name(ClassificationIDs.ID_strikethroughEmphasisMajor)]
296+
[UserVisible(true)]
297+
[Order(After = ClassificationDefinitionBase.cPriority)]
298+
internal sealed class StrikethroughEmphasisMajorFormat : ClassificationDefinitionBase
299+
{
300+
[ImportingConstructor]
301+
public StrikethroughEmphasisMajorFormat(DefaultColors defaultColors)
302+
: base(defaultColors, ClassificationIDs.ID_strikethroughEmphasisMajor, "VSDoxyHighlighter - Strikethrough + emphasis (major)")
303+
{
304+
}
305+
306+
public override void Reinitialize()
307+
{
308+
base.Reinitialize();
309+
310+
TextDecorations = new TextDecorationCollection {
311+
new TextDecoration(
312+
TextDecorationLocation.Strikethrough, null, 0.0, TextDecorationUnit.FontRecommended, TextDecorationUnit.FontRecommended)
313+
};
314+
}
315+
}
316+
317+
318+
[Export(typeof(EditorFormatDefinition))]
319+
[ClassificationType(ClassificationTypeNames = ClassificationIDs.ID_strikethroughEmphasisHuge)]
320+
[Name(ClassificationIDs.ID_strikethroughEmphasisHuge)]
321+
[UserVisible(true)]
322+
[Order(After = ClassificationDefinitionBase.cPriority)]
323+
internal sealed class StrikethroughEmphasisHugeFormat : ClassificationDefinitionBase
324+
{
325+
[ImportingConstructor]
326+
public StrikethroughEmphasisHugeFormat(DefaultColors defaultColors)
327+
: base(defaultColors, ClassificationIDs.ID_strikethroughEmphasisHuge, "VSDoxyHighlighter - Strikethrough + emphasis (huge)")
328+
{
329+
}
330+
331+
public override void Reinitialize()
332+
{
333+
base.Reinitialize();
334+
335+
TextDecorations = new TextDecorationCollection {
336+
new TextDecoration(
337+
TextDecorationLocation.Strikethrough, null, 0.0, TextDecorationUnit.FontRecommended, TextDecorationUnit.FontRecommended)
338+
};
339+
}
340+
}
341+
342+
268343
[Export(typeof(EditorFormatDefinition))]
269344
[ClassificationType(ClassificationTypeNames = ClassificationIDs.ID_generic1)]
270345
[Name(ClassificationIDs.ID_generic1)]
@@ -394,6 +469,18 @@ internal static class CommentClassificationDefinitions
394469
[Name(ClassificationIDs.ID_strikethrough)]
395470
private static ClassificationTypeDefinition typeDefinitionForStrikethrough;
396471

472+
[Export(typeof(ClassificationTypeDefinition))]
473+
[Name(ClassificationIDs.ID_strikethroughEmphasisMinor)]
474+
private static ClassificationTypeDefinition typeDefinitionForStrikethroughEmphasisMinor;
475+
476+
[Export(typeof(ClassificationTypeDefinition))]
477+
[Name(ClassificationIDs.ID_strikethroughEmphasisMajor)]
478+
private static ClassificationTypeDefinition typeDefinitionForStrikethroughEmphasisMajor;
479+
480+
[Export(typeof(ClassificationTypeDefinition))]
481+
[Name(ClassificationIDs.ID_strikethroughEmphasisHuge)]
482+
private static ClassificationTypeDefinition typeDefinitionForStrikethroughEmphasisHuge;
483+
397484
[Export(typeof(ClassificationTypeDefinition))]
398485
[Name(ClassificationIDs.ID_inlineCode)]
399486
private static ClassificationTypeDefinition typeDefinitionForInlineCode;

VSDoxyHighlighter/CommentClassifier.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ public enum ClassificationEnum : uint
4747
// More classifications that are used by default.
4848
ParameterClamped = 16,
4949
EmphasisHuge = 17, // Bold + italic
50+
StrikethroughEmphasisMinor = 18, // Italic + strikethrough
51+
StrikethroughEmphasisMajor = 19, // Bold + strikethrough
52+
StrikethroughEmphasisHuge = 20, // Bold + italic + strikethrough
5053
}
5154

5255

@@ -72,6 +75,9 @@ public static class ClassificationIDs
7275
public const string ID_emphasisMajor = "VSDoxyHighlighter_EmphasisMajor";
7376
public const string ID_emphasisHuge = "VSDoxyHighlighter_EmphasisHuge";
7477
public const string ID_strikethrough = "VSDoxyHighlighter_Strikethrough";
78+
public const string ID_strikethroughEmphasisMinor = "VSDoxyHighlighter_StrikethroughEmphasisMinor";
79+
public const string ID_strikethroughEmphasisMajor = "VSDoxyHighlighter_StrikethroughEmphasisMajor";
80+
public const string ID_strikethroughEmphasisHuge = "VSDoxyHighlighter_StrikethroughEmphasisHuge";
7581
public const string ID_inlineCode = "VSDoxyHighlighter_InlineCode";
7682
public const string ID_generic1 = "VSDoxyHighlighter_Generic1";
7783
public const string ID_generic2 = "VSDoxyHighlighter_Generic2";
@@ -92,6 +98,9 @@ public static class ClassificationIDs
9298
{ClassificationEnum.EmphasisMajor, ID_emphasisMajor},
9399
{ClassificationEnum.EmphasisHuge, ID_emphasisHuge},
94100
{ClassificationEnum.Strikethrough, ID_strikethrough},
101+
{ClassificationEnum.StrikethroughEmphasisMinor, ID_strikethroughEmphasisMinor},
102+
{ClassificationEnum.StrikethroughEmphasisMajor, ID_strikethroughEmphasisMajor},
103+
{ClassificationEnum.StrikethroughEmphasisHuge, ID_strikethroughEmphasisHuge},
95104
{ClassificationEnum.InlineCode, ID_inlineCode},
96105
{ClassificationEnum.Generic1, ID_generic1},
97106
{ClassificationEnum.Generic2, ID_generic2},

0 commit comments

Comments
 (0)