aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lexers/LexCPP.cxx4
-rw-r--r--test/simpleTests.py23
2 files changed, 22 insertions, 5 deletions
diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx
index 5340271d5..70af0343f 100644
--- a/lexers/LexCPP.cxx
+++ b/lexers/LexCPP.cxx
@@ -388,7 +388,9 @@ public:
return subStyles.Length(styleBase);
}
int SCI_METHOD StyleFromSubStyle(int subStyle) {
- return subStyles.BaseStyle(subStyle);
+ int styleBase = subStyles.BaseStyle(MaskActive(subStyle));
+ int active = subStyle & activeFlag;
+ return styleBase | active;
}
void SCI_METHOD FreeSubStyles() {
subStyles.Free();
diff --git a/test/simpleTests.py b/test/simpleTests.py
index 5967e0eda..496488157 100644
--- a/test/simpleTests.py
+++ b/test/simpleTests.py
@@ -1629,6 +1629,9 @@ class TestLexer(unittest.TestCase):
self.assertNotEquals(wordSet, b"")
class TestSubStyles(unittest.TestCase):
+ ''' These tests include knowledge of the current implementation in the cpp lexer
+ and may have to change when that implementation changes.
+ Currently supports subStyles for IDENTIFIER 11 and COMMENTDOCKEYWORD 17 '''
def setUp(self):
self.xite = Xite.xiteFrame
self.ed = self.xite.ed
@@ -1638,18 +1641,19 @@ class TestSubStyles(unittest.TestCase):
def testInfo(self):
self.ed.Lexer = self.ed.SCLEX_CPP
bases = self.ed.GetSubStyleBases()
- self.assertEquals(bases, b"\x0b\x11") # IDENTIFIER 11, COMMENTDOCKEYWORD 17
+ self.assertEquals(bases, b"\x0b\x11") # 11, 17
self.assertEquals(self.ed.DistanceToSecondaryStyles(), 0x40)
def testAllocate(self):
+ firstSubStyle = 0x80 # Current implementation
self.ed.Lexer = self.ed.SCLEX_CPP
- self.assertEquals(self.ed.GetStyleFromSubStyle(0x80), 0x80)
+ self.assertEquals(self.ed.GetStyleFromSubStyle(firstSubStyle), firstSubStyle)
self.assertEquals(self.ed.GetSubStylesStart(self.ed.SCE_C_IDENTIFIER), 0)
self.assertEquals(self.ed.GetSubStylesLength(self.ed.SCE_C_IDENTIFIER), 0)
numSubStyles = 5
subs = self.ed.AllocateSubStyles(self.ed.SCE_C_IDENTIFIER, numSubStyles)
- self.assertEquals(subs, 0x80)
- self.assertEquals(self.ed.GetSubStylesStart(self.ed.SCE_C_IDENTIFIER), 0x80)
+ self.assertEquals(subs, firstSubStyle)
+ self.assertEquals(self.ed.GetSubStylesStart(self.ed.SCE_C_IDENTIFIER), firstSubStyle)
self.assertEquals(self.ed.GetSubStylesLength(self.ed.SCE_C_IDENTIFIER), numSubStyles)
self.assertEquals(self.ed.GetStyleFromSubStyle(subs), self.ed.SCE_C_IDENTIFIER)
self.assertEquals(self.ed.GetStyleFromSubStyle(subs+numSubStyles-1), self.ed.SCE_C_IDENTIFIER)
@@ -1660,6 +1664,17 @@ class TestSubStyles(unittest.TestCase):
self.assertEquals(self.ed.GetSubStylesStart(self.ed.SCE_C_IDENTIFIER), 0)
self.assertEquals(self.ed.GetSubStylesLength(self.ed.SCE_C_IDENTIFIER), 0)
+ def testInactive(self):
+ firstSubStyle = 0x80 # Current implementation
+ inactiveDistance = self.ed.DistanceToSecondaryStyles()
+ self.ed.Lexer = self.ed.SCLEX_CPP
+ numSubStyles = 5
+ subs = self.ed.AllocateSubStyles(self.ed.SCE_C_IDENTIFIER, numSubStyles)
+ self.assertEquals(subs, firstSubStyle)
+ self.assertEquals(self.ed.GetStyleFromSubStyle(subs), self.ed.SCE_C_IDENTIFIER)
+ self.assertEquals(self.ed.GetStyleFromSubStyle(subs+inactiveDistance), self.ed.SCE_C_IDENTIFIER+inactiveDistance)
+ self.ed.FreeSubStyles()
+
class TestAutoComplete(unittest.TestCase):
def setUp(self):