Skip to content

Commit

Permalink
feat: parse and display colorized bracket pairs
Browse files Browse the repository at this point in the history
  • Loading branch information
sebthom committed Jan 29, 2024
1 parent 8a3ca98 commit 1d2beb8
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public final class LanguageConfigurationMessages extends NLS {
public static String LanguageConfigurationInfoWidget_blockCommentsEnd;
public static String LanguageConfigurationInfoWidget_blockCommentsStart;
public static String LanguageConfigurationInfoWidget_brackets_title;
public static String LanguageConfigurationInfoWidget_colorizedBracketPairs_title;
public static String LanguageConfigurationInfoWidget_comments_title;
public static String LanguageConfigurationInfoWidget_end;
public static String LanguageConfigurationInfoWidget_folding_title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ LanguageConfigurationInfoWidget_autoCloseBefore_title=Auto Close Before
LanguageConfigurationInfoWidget_blockCommentsEnd=Block Comment End:
LanguageConfigurationInfoWidget_blockCommentsStart=Block Comment Start:
LanguageConfigurationInfoWidget_brackets_title=Brackets
LanguageConfigurationInfoWidget_colorizedBracketPairs_title=Colorized Bracket Pairs
LanguageConfigurationInfoWidget_comments_title=Comments
LanguageConfigurationInfoWidget_end=End:
LanguageConfigurationInfoWidget_folding_title=Folding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,11 @@ private static String removeTrailingCommas(String jsonString) {
langCfg.surroundingPairs.removeIf(Objects::isNull);
}

if (castNullable(langCfg.colorizedBracketPairs) == null) {
langCfg.colorizedBracketPairs = Collections.emptyList();
} else {
langCfg.colorizedBracketPairs.removeIf(Objects::isNull);
}
return langCfg;
}

Expand Down Expand Up @@ -420,7 +425,15 @@ public List<AutoClosingPair> getSurroundingPairs() {
return surroundingPairs;
}

// TODO private @Nullable List<CharacterPair> getColorizedBracketPairs();
private List<CharacterPair> colorizedBracketPairs = lazyNonNull();

/**
* Defines a list of bracket pairs that are colorized depending on their nesting level.
* If not set, the configured brackets will be used.
*/
public List<CharacterPair> getColorizedBracketPairs() {
return colorizedBracketPairs;
}

private @Nullable String autoCloseBefore;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ public class LanguageConfigurationInfoWidget extends Composite {
LanguageConfigurationInfoWidget_folding_title,
LanguageConfigurationInfoWidget_wordPattern_title,
LanguageConfigurationInfoWidget_onEnterRules_title,
LanguageConfigurationInfoWidget_indentationRules_title
LanguageConfigurationInfoWidget_indentationRules_title,
LanguageConfigurationInfoWidget_colorizedBracketPairs_title,
};

private Text lineCommentText;
Expand Down Expand Up @@ -81,6 +82,8 @@ public class LanguageConfigurationInfoWidget extends Composite {
private Text indentationIndentNextLinePattern;
private Text indentationUnIndentedLinePattern;

private CharacterPairsTableWidget colorizedBracketPairsTable;

public LanguageConfigurationInfoWidget(final Composite parent, final int style) {
super(parent, style);
super.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).spacing(-1, 0).equalWidth(false).create());
Expand Down Expand Up @@ -139,6 +142,7 @@ private void createUI(final Composite parent) {
createStackLayer.apply(this::createWordPatternInfo),
createStackLayer.apply(this::createOnEnterRulesInfo),
createStackLayer.apply(this::createIndentationRulesInfo),
createStackLayer.apply(this::createColorizedBracketPairsInfo),
};

tableViewer.addSelectionChangedListener(event -> {
Expand Down Expand Up @@ -168,6 +172,7 @@ public void refresh(@Nullable final LanguageConfiguration configuration) {
indentationIncreaseIndentPattern.setText("");
indentationIndentNextLinePattern.setText("");
indentationUnIndentedLinePattern.setText("");
colorizedBracketPairsTable.setInput(null);

if (configuration == null)
return;
Expand Down Expand Up @@ -214,6 +219,8 @@ public void refresh(@Nullable final LanguageConfiguration configuration) {
indentationIndentNextLinePattern.setText(Objects.toString(indentationRules.indentNextLinePattern, ""));
indentationUnIndentedLinePattern.setText(Objects.toString(indentationRules.unIndentedLinePattern, ""));
}

colorizedBracketPairsTable.setInput(configuration.getColorizedBracketPairs());
}

private void createCommentsInfo(final Composite parent) {
Expand Down Expand Up @@ -261,6 +268,10 @@ private void createIndentationRulesInfo(final Composite parent) {
indentationUnIndentedLinePattern = createText(parent, LanguageConfigurationInfoWidget_indentationRules_unIndentedLinePattern);
}

private void createColorizedBracketPairsInfo(final Composite parent) {
colorizedBracketPairsTable = new CharacterPairsTableWidget(parent);
}

private Text createText(final Composite parent, final String s) {
final var label = new Label(parent, SWT.NONE);
label.setText(s);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,24 @@ public FileVisitResult visitFile(final Path file, final @Nullable BasicFileAttri
assertTrue(count.intValue() > 10, "Only " + count.intValue() + " language configurations found, expected more than 10!");
}

@Test
void testParseColorizedBracketsPair() throws Exception {
final var languageConfiguration = LanguageConfiguration.load(new StringReader("""
{
"colorizedBracketPairs": [
["(",")"],
["[","]"],
["{","}"],
["<",">"]
],
}"""));
assertNotNull(languageConfiguration);

assertEquals(4, languageConfiguration.getColorizedBracketPairs().size());
assertEquals("(", languageConfiguration.getColorizedBracketPairs().get(0).open);
assertEquals(")", languageConfiguration.getColorizedBracketPairs().get(0).close);
}

@Test
void testIndentationRules() throws Exception {
final var languageConfiguration = LanguageConfiguration.load(new StringReader("""
Expand Down

0 comments on commit 1d2beb8

Please sign in to comment.