diff options
| author | Neil <nyamatongwe@gmail.com> | 2013-09-05 16:09:11 +1000 | 
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2013-09-05 16:09:11 +1000 | 
| commit | 55a841ef116ce538fc4d14bb78beb0484be604be (patch) | |
| tree | db95107bf9d477c4e1389610a8d083bf825bb75f | |
| parent | fcdcca1964e0600fac55266ad31c36b03972f7de (diff) | |
| download | scintilla-mirror-55a841ef116ce538fc4d14bb78beb0484be604be.tar.gz | |
Bug [#1520]. Make SCI_GETSTYLEFROMSUBSTYLE work for secondary styles.
| -rw-r--r-- | lexers/LexCPP.cxx | 4 | ||||
| -rw-r--r-- | test/simpleTests.py | 23 | 
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): | 
