1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 546981: Treat pragma region like pragma mark in outline view

Treats #pragma region and #pragma endregion similarly to how
#pragma mark is treated in outline view. With
region and endregion they are always surrounded by
divider lines if there is text after region/endregion, else just
a divider line is inserted.

Change-Id: Idb8bebe94363731e59412a7f31af3b54d53a2c8e
This commit is contained in:
Jonah Graham 2021-07-11 16:04:51 -04:00
parent b6a8f778f9
commit b2c33dfb13
5 changed files with 48 additions and 4 deletions

View file

@ -188,6 +188,35 @@ public class CModelElementsTests extends BaseTestCase {
assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
}
{
// region no name
IPragma pragma = (IPragma) pragmas.get(line++);
assertEquals("region", pragma.getElementName());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
}
{
IPragma pragma = (IPragma) pragmas.get(line++);
assertEquals("region named", pragma.getElementName());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
assertEquals("named", pragma.getPragmaMarkInfo().get().getMarkName());
}
{
IPragma pragma = (IPragma) pragmas.get(line++);
assertEquals("endregion", pragma.getElementName());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
}
{
IPragma pragma = (IPragma) pragmas.get(line++);
assertEquals("endregion endnamed", pragma.getElementName());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
assertEquals("endnamed", pragma.getPragmaMarkInfo().get().getMarkName());
}
{
IPragma pragma = (IPragma) pragmas.get(line++);
assertEquals("ms_struct on", pragma.getElementName());

View file

@ -152,6 +152,9 @@ namespace {
#pragma mark neither
#pragma mark -// blank1
#pragma mark // blank2
#pragma region // no name
#pragma region named
#pragma endregion // no name
#pragma endregion endnamed
#pragma ms_struct on
_Pragma("once")

View file

@ -56,6 +56,18 @@ public class Pragma extends SourceManipulation implements IPragma {
markName = restOfLine.trim();
}
break;
case "region": //$NON-NLS-1$
case "endregion": { //$NON-NLS-1$
if (restOfLine.isEmpty()) {
dividerBeforeMark = true;
dividerAfterMark = false;
} else {
dividerBeforeMark = true;
dividerAfterMark = true;
markName = restOfLine;
}
}
break;
default:
return null;
}

View file

@ -78,8 +78,8 @@ MacroGroupingAction_tooltip= Group macro definitions
MacroGroupingAction_description= Group macro definitions
HidePragmaMarks_label=Hide Dividers
HidePragmaMarks_tooltip=Hide Dividers (#pragma mark)
HidePragmaMarks_description=Hide Dividers (#pragma mark)
HidePragmaMarks_tooltip=Hide Dividers (#pragma mark or #pragma region/endregion)
HidePragmaMarks_description=Hide Dividers (#pragma mark or #pragma region/endregion)
COutlineInformationControl_viewMenu_sort_label=Sort

View file

@ -188,7 +188,7 @@ AppearancePreferencePage_outlineGroupNamespaces_label= Group namespaces in the O
AppearancePreferencePage_note=Note:
AppearancePreferencePage_preferenceOnlyForNewViews=These two preferences do not affect open views
AppearancePreferencePage_outlineGroupMacros_label=Group macro definitions in the Outline view
AppearancePreferencePage_HidePragmaMarks_label=Hide Dividers (#pragma mark) in the Outline view
AppearancePreferencePage_HidePragmaMarks_label=Hide Dividers (#pragma mark or #pragma region/endregion) in the Outline view
AppearancePreferencePage_showSourceRootsAtTopOfProject_label=Show source roots at top of project
#Build Logging