[Libreoffice-commits] core.git: 5 commits - basctl/source comphelper/qa comphelper/source helpcompiler/source include/comphelper include/svtools svtools/source

Stephan Bergmann sbergman at redhat.com
Mon Oct 28 05:48:41 PDT 2013


 basctl/source/basicide/baside2.hxx            |    1 
 basctl/source/basicide/baside2b.cxx           |   26 ---
 comphelper/qa/unit/syntaxhighlighttest.cxx    |   26 ---
 comphelper/source/misc/syntaxhighlight.cxx    |  225 ++++++++++++--------------
 helpcompiler/source/BasCodeTagger.cxx         |    7 
 include/comphelper/syntaxhighlight.hxx        |   86 +--------
 include/svtools/svmedit.hxx                   |    1 
 svtools/source/edit/editsyntaxhighlighter.cxx |    7 
 8 files changed, 137 insertions(+), 242 deletions(-)

New commits:
commit a2f9c446b79d50d808bdc6e3487d230459f81260
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 28 12:56:23 2013 +0100

    Some clean-up
    
    Change-Id: I8ef80b7ae952428a62cc1cea8b03219b77a83e99

diff --git a/comphelper/source/misc/syntaxhighlight.cxx b/comphelper/source/misc/syntaxhighlight.cxx
index bdf9d43..c9bac08 100644
--- a/comphelper/source/misc/syntaxhighlight.cxx
+++ b/comphelper/source/misc/syntaxhighlight.cxx
@@ -257,7 +257,6 @@ namespace
 
 class SyntaxHighlighter::Tokenizer
 {
-    HighlighterLanguage aLanguage;
     // Character information tables
     sal_uInt16 aCharTypeTab[256];
 
@@ -272,7 +271,9 @@ class SyntaxHighlighter::Tokenizer
     sal_uInt16 nKeyWordCount;
 
 public:
-    Tokenizer( HighlighterLanguage aLang = HIGHLIGHT_BASIC );
+    HighlighterLanguage const aLanguage;
+
+    Tokenizer( HighlighterLanguage aLang );
     ~Tokenizer( void );
 
     void getHighlightPortions( const OUString& rLine,
@@ -710,4 +711,9 @@ void SyntaxHighlighter::getHighlightPortions( const OUString& rLine,
     m_tokenizer->getHighlightPortions( rLine, portions );
 }
 
+HighlighterLanguage SyntaxHighlighter::GetLanguage()
+{
+    return m_tokenizer->aLanguage;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/comphelper/syntaxhighlight.hxx b/include/comphelper/syntaxhighlight.hxx
index ec0bf7c..081be1d 100644
--- a/include/comphelper/syntaxhighlight.hxx
+++ b/include/comphelper/syntaxhighlight.hxx
@@ -80,8 +80,9 @@ public:
     void getHighlightPortions( const OUString& rLine,
                                std::vector<HighlightPortion>& pPortions );
 
-    HighlighterLanguage GetLanguage() { return eLanguage;}
+    HighlighterLanguage GetLanguage();
 };
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 176ac1e61610579ba8ac202c16d7aa0c0991af89
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 28 12:51:52 2013 +0100

    Remove unnecessary SyntaxHighlighter::Tokenizer statefulness
    
    ...which reveals that SyntaxHighlighter::notifyChange does nothing, so remove it.
    
    Change-Id: I49834af29081ee703d9e62e182e3c1f8ce7e212e

diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index 1b3ad3f..d9316fe 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -1189,8 +1189,6 @@ void EditorWindow::ImpDoHighlight( sal_uLong nLine )
     if ( bDoSyntaxHighlight )
     {
         OUString aLine( pEditEngine->GetText( nLine ) );
-        aHighlighter.notifyChange( &aLine, 1 );
-
         bool const bWasModified = pEditEngine->IsModified();
         pEditEngine->RemoveAttribs( nLine, true );
         std::vector<HighlightPortion> aPortions;
@@ -1326,12 +1324,6 @@ void EditorWindow::ParagraphInsertedDeleted( sal_uLong nPara, bool bInserted )
                    GetOutputSizePixel().Height() - 2 * DWBORDER);
         rModulWindow.GetLineNumberWindow().SetPosSizePixel(Point(DWBORDER + 19, DWBORDER), aLnSz);
         rModulWindow.GetLineNumberWindow().Invalidate();
-
-        if ( bDoSyntaxHighlight )
-        {
-            OUString aDummy;
-            aHighlighter.notifyChange( &aDummy, 1 );
-        }
     }
 }
 
diff --git a/comphelper/source/misc/syntaxhighlight.cxx b/comphelper/source/misc/syntaxhighlight.cxx
index fa5afc1..bdf9d43 100644
--- a/comphelper/source/misc/syntaxhighlight.cxx
+++ b/comphelper/source/misc/syntaxhighlight.cxx
@@ -261,17 +261,11 @@ class SyntaxHighlighter::Tokenizer
     // Character information tables
     sal_uInt16 aCharTypeTab[256];
 
-    const sal_Unicode* mpStringBegin;
-    const sal_Unicode* mpActualPos;
-
-    sal_Unicode peekChar( void )    { return *mpActualPos; }
-    sal_Unicode getChar( void )     { return *mpActualPos++; }
-
     // Auxiliary function: testing of the character flags
     sal_Bool testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags );
 
     // Get new token, EmptyString == nothing more over there
-    sal_Bool getNextToken( /*out*/TokenTypes& reType,
+    sal_Bool getNextToken( const sal_Unicode*& pos, /*out*/TokenTypes& reType,
         /*out*/const sal_Unicode*& rpStartPos, /*out*/const sal_Unicode*& rpEndPos );
 
     const char** ppListKeyWords;
@@ -281,7 +275,6 @@ public:
     Tokenizer( HighlighterLanguage aLang = HIGHLIGHT_BASIC );
     ~Tokenizer( void );
 
-    sal_uInt16 parseLine( const OUString* aSource );
     void getHighlightPortions( const OUString& rLine,
                                /*out*/std::vector<HighlightPortion>& portions );
     void setKeyWords( const char** ppKeyWords, sal_uInt16 nCount );
@@ -309,25 +302,25 @@ void SyntaxHighlighter::Tokenizer::setKeyWords( const char** ppKeyWords, sal_uIn
     nKeyWordCount = nCount;
 }
 
-sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
+sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( const sal_Unicode*& pos, /*out*/TokenTypes& reType,
     /*out*/const sal_Unicode*& rpStartPos, /*out*/const sal_Unicode*& rpEndPos )
 {
     reType = TT_UNKNOWN;
 
-    rpStartPos = mpActualPos;
+    rpStartPos = pos;
 
-    sal_Unicode c = peekChar();
+    sal_Unicode c = *pos;
     if( c == 0 )
         return sal_False;
 
-    getChar();
+    ++pos;
 
     //*** Go through all possibilities ***
     // Space?
     if ( (testCharFlags( c, CHAR_SPACE ) == sal_True) )
     {
-        while( testCharFlags( peekChar(), CHAR_SPACE ) == sal_True )
-            getChar();
+        while( testCharFlags( *pos, CHAR_SPACE ) == sal_True )
+            ++pos;
 
         reType = TT_WHITESPACE;
     }
@@ -339,10 +332,10 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
         do
         {
             // Naechstes Zeichen holen
-            c = peekChar();
+            c = *pos;
             bIdentifierChar = testCharFlags( c, CHAR_IN_IDENTIFIER );
             if( bIdentifierChar )
-                getChar();
+                ++pos;
         }
         while( bIdentifierChar );
 
@@ -351,7 +344,7 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
         // Keyword table
         if (ppListKeyWords != NULL)
         {
-            int nCount = mpActualPos - rpStartPos;
+            int nCount = pos - rpStartPos;
 
             // No keyword if string contains char > 255
             bool bCanBeKeyword = true;
@@ -377,11 +370,11 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
                     if (aByteStr.equalsL(RTL_CONSTASCII_STRINGPARAM("rem")))
                     {
                         // Remove all characters until end of line or EOF
-                        sal_Unicode cPeek = peekChar();
+                        sal_Unicode cPeek = *pos;
                         while( cPeek != 0 && testCharFlags( cPeek, CHAR_EOL ) == sal_False )
                         {
-                            c = getChar();
-                            cPeek = peekChar();
+                            c = *pos++;
+                            cPeek = *pos;
                         }
 
                         reType = TT_COMMENT;
@@ -404,10 +397,10 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
                 do
                 {
                     // Get next character
-                    c = peekChar();
+                    c = *pos;
                     bIdentifierChar = isAlpha(c);
                     if( bIdentifierChar )
-                        getChar();
+                        ++pos;
                 }
                 while( bIdentifierChar );
             }
@@ -415,28 +408,28 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
         }
         else if (c=='-')
         {
-            sal_Unicode cPeekNext = peekChar();
+            sal_Unicode cPeekNext = *pos;
             if (cPeekNext=='-')
             {
                 // Remove all characters until end of line or EOF
                 while( cPeekNext != 0 && testCharFlags( cPeekNext, CHAR_EOL ) == sal_False )
                 {
-                    getChar();
-                    cPeekNext = peekChar();
+                    ++pos;
+                    cPeekNext = *pos;
                 }
                 reType = TT_COMMENT;
             }
         }
        else if (c=='/')
        {
-           sal_Unicode cPeekNext = peekChar();
+           sal_Unicode cPeekNext = *pos;
            if (cPeekNext=='/')
            {
                // Remove all characters until end of line or EOF
                while( cPeekNext != 0 && testCharFlags( cPeekNext, CHAR_EOL ) == sal_False )
                {
-                   getChar();
-                   cPeekNext = peekChar();
+                   ++pos;
+                   cPeekNext = *pos;
                }
                reType = TT_COMMENT;
            }
@@ -448,11 +441,11 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
             {
                 // Skip all characters until end of input or end of line:
                 for (;;) {
-                    c = peekChar();
+                    c = *pos;
                     if (c == 0 || testCharFlags(c, CHAR_EOL)) {
                         break;
                     }
-                    getChar();
+                    ++pos;
                 }
 
                 reType = TT_COMMENT;
@@ -469,7 +462,7 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
     }
 
     // Object separator? Must be handled before Number
-    else if( c == '.' && ( peekChar() < '0' || peekChar() > '9' ) )
+    else if( c == '.' && ( *pos < '0' || *pos > '9' ) )
     {
         reType = TT_OPERATOR;
     }
@@ -486,26 +479,26 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
         if( c == '&' )
         {
             // Octal?
-            if( peekChar() == 'o' || peekChar() == 'O' )
+            if( *pos == 'o' || *pos == 'O' )
             {
                 // remove o
-                getChar();
+                ++pos;
                 nRadix = 8;     // Octal base
 
                 // Read all numbers
-                while( testCharFlags( peekChar(), CHAR_IN_OCT_NUMBER ) )
-                    c = getChar();
+                while( testCharFlags( *pos, CHAR_IN_OCT_NUMBER ) )
+                    c = *pos++;
             }
             // Hexadecimal?
-            else if( peekChar() == 'h' || peekChar() == 'H' )
+            else if( *pos == 'h' || *pos == 'H' )
             {
                 // remove x
-                getChar();
+                ++pos;
                 nRadix = 16;     // Hexadecimal base
 
                 // Read all numbers
-                while( testCharFlags( peekChar(), CHAR_IN_HEX_NUMBER ) )
-                    c = getChar();
+                while( testCharFlags( *pos, CHAR_IN_HEX_NUMBER ) )
+                    c = *pos++;
             }
             else
             {
@@ -520,12 +513,12 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
             sal_Bool bAfterExpChar = sal_False;
 
             // Read all numbers
-            while( testCharFlags( peekChar(), CHAR_IN_NUMBER ) ||
-                    (bAfterExpChar && peekChar() == '+' ) ||
-                    (bAfterExpChar && peekChar() == '-' ) )
+            while( testCharFlags( *pos, CHAR_IN_NUMBER ) ||
+                    (bAfterExpChar && *pos == '+' ) ||
+                    (bAfterExpChar && *pos == '-' ) )
                     // After exponent +/- are OK, too
             {
-                c = getChar();
+                c = *pos++;
                 bAfterExpChar = ( c == 'e' || c == 'E' );
             }
         }
@@ -540,16 +533,16 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
             cEndString = ']';
 
         // Read all characters
-        while( peekChar() != cEndString )
+        while( *pos != cEndString )
         {
-            // Detect EOF before getChar(), so we do not loose EOF
-            if( peekChar() == 0 )
+            // Detect EOF before reading next char, so we do not loose EOF
+            if( *pos == 0 )
             {
                 // ERROR: unterminated string literal
                 reType = TT_ERROR;
                 break;
             }
-            c = getChar();
+            c = *pos++;
             if( testCharFlags( c, CHAR_EOL ) == sal_True )
             {
                 // ERROR: unterminated string literal
@@ -560,7 +553,7 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
 
         if( reType != TT_ERROR )
         {
-            getChar();
+            ++pos;
             if( cEndString == ']' )
                 reType = TT_IDENTIFIER;
             else
@@ -572,9 +565,9 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
     else if( testCharFlags( c, CHAR_EOL ) == sal_True )
     {
         // If another EOL character comes, read it
-        sal_Unicode cNext = peekChar();
+        sal_Unicode cNext = *pos;
         if( cNext != c && testCharFlags( cNext, CHAR_EOL ) == sal_True )
-            getChar();
+            ++pos;
 
         reType = TT_EOL;
     }
@@ -582,7 +575,7 @@ sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
     // All other will remain TT_UNKNOWN
 
     // Save end position
-    rpEndPos = mpActualPos;
+    rpEndPos = pos;
     return sal_True;
 }
 
@@ -670,29 +663,11 @@ SyntaxHighlighter::Tokenizer::~Tokenizer( void )
 {
 }
 
-sal_uInt16 SyntaxHighlighter::Tokenizer::parseLine( const OUString* aSource )
-{
-    // Set the position to the beginning of the source string
-    mpStringBegin = mpActualPos = aSource->getStr();
-
-    // Variables for the out parameter
-    TokenTypes eType;
-    const sal_Unicode* pStartPos;
-    const sal_Unicode* pEndPos;
-
-    // Loop over all the tokens
-    sal_uInt16 nTokenCount = 0;
-    while( getNextToken( eType, pStartPos, pEndPos ) )
-        nTokenCount++;
-
-    return nTokenCount;
-}
-
 void SyntaxHighlighter::Tokenizer::getHighlightPortions( const OUString& rLine,
                                                  /*out*/std::vector<HighlightPortion>& portions  )
 {
     // Set the position to the beginning of the source string
-    mpStringBegin = mpActualPos = rLine.getStr();
+    const sal_Unicode* pos = rLine.getStr();
 
     // Variables for the out parameter
     TokenTypes eType;
@@ -700,11 +675,11 @@ void SyntaxHighlighter::Tokenizer::getHighlightPortions( const OUString& rLine,
     const sal_Unicode* pEndPos;
 
     // Loop over all the tokens
-    while( getNextToken( eType, pStartPos, pEndPos ) )
+    while( getNextToken( pos, eType, pStartPos, pEndPos ) )
     {
         portions.push_back(
             HighlightPortion(
-                pStartPos - mpStringBegin, pEndPos - mpStringBegin, eType));
+                pStartPos - rLine.getStr(), pEndPos - rLine.getStr(), eType));
     }
 }
 
@@ -729,13 +704,6 @@ SyntaxHighlighter::SyntaxHighlighter(HighlighterLanguage language):
 
 SyntaxHighlighter::~SyntaxHighlighter() {}
 
-void SyntaxHighlighter::notifyChange(
-    const OUString* pChangedLines, sal_uInt32 nArrayLength)
-{
-    for( sal_uInt32 i=0 ; i < nArrayLength ; i++ )
-        m_tokenizer->parseLine(&pChangedLines[i]);
-}
-
 void SyntaxHighlighter::getHighlightPortions( const OUString& rLine,
                                               /*out*/std::vector<HighlightPortion>& portions )
 {
diff --git a/helpcompiler/source/BasCodeTagger.cxx b/helpcompiler/source/BasCodeTagger.cxx
index a01c6b6..fcbe8e4 100644
--- a/helpcompiler/source/BasCodeTagger.cxx
+++ b/helpcompiler/source/BasCodeTagger.cxx
@@ -149,7 +149,6 @@ void BasicCodeTagger::tagParagraph( xmlNodePtr paragraph )
     OUString strLine( reinterpret_cast<const sal_Char*>(codeSnippet),
                                 strlen(reinterpret_cast<const char*>(codeSnippet)),
                                 RTL_TEXTENCODING_UTF8 );
-    m_Highlighter.notifyChange ( &strLine, 1 );
     std::vector<HighlightPortion> portions;
     m_Highlighter.getHighlightPortions( strLine, portions );
     for (std::vector<HighlightPortion>::iterator i(portions.begin());
diff --git a/include/comphelper/syntaxhighlight.hxx b/include/comphelper/syntaxhighlight.hxx
index 8a57822..ec0bf7c 100644
--- a/include/comphelper/syntaxhighlight.hxx
+++ b/include/comphelper/syntaxhighlight.hxx
@@ -66,11 +66,6 @@ enum HighlighterLanguage
     HIGHLIGHT_SQL
 };
 
-//*** SyntaxHighlighter Class ***
-// Concept: the Highlighter will be notified of all changes in the source
-// (notifyChange) and returns the caller the range of lines, which based on the
-// changes, need to be highlighted again. For this the Highlighter marks all
-// lines internally whether or not C comments begin or end.
 class COMPHELPER_DLLPUBLIC SyntaxHighlighter: private boost::noncopyable
 {
     class Tokenizer;
@@ -82,8 +77,6 @@ public:
     SyntaxHighlighter(HighlighterLanguage language);
     ~SyntaxHighlighter();
 
-    void notifyChange(const OUString* pChangedLines, sal_uInt32 nArrayLength);
-
     void getHighlightPortions( const OUString& rLine,
                                std::vector<HighlightPortion>& pPortions );
 
diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx
index d679408..6834396 100644
--- a/svtools/source/edit/editsyntaxhighlighter.cxx
+++ b/svtools/source/edit/editsyntaxhighlighter.cxx
@@ -170,8 +170,6 @@ void MultiLineEditSyntaxHighlight::UpdateData()
     for (unsigned int nLine=0; nLine < GetTextEngine()->GetParagraphCount(); nLine++)
     {
         OUString aLine( GetTextEngine()->GetText( nLine ) );
-        aHighlighter.notifyChange( &aLine, 1 );
-
         GetTextEngine()->RemoveAttribs( nLine, sal_True );
         std::vector<HighlightPortion> aPortions;
         aHighlighter.getHighlightPortions( aLine, aPortions );
commit c99267b326afcfd4002dc5ee33f5076a466c0cab
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 28 12:30:28 2013 +0100

    Fold SyntaxHighlighter::initialize into ctor
    
    ...which reveals that m_pKeyWords, m_nKeyWordCount members are unused.
    
    Change-Id: I55020e892d463f2e40d5bcf71efba92778b317c1

diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index 0a52760..1b3ad3f 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -233,6 +233,7 @@ EditorWindow::EditorWindow (Window* pParent, ModulWindow* pModulWindow) :
     pEditEngine(0),
     rModulWindow(*pModulWindow),
     nCurTextWidth(0),
+    aHighlighter(HIGHLIGHT_BASIC),
     bHighlightning(false),
     bDoSyntaxHighlight(true),
     bDelayHighlight(true),
@@ -962,8 +963,6 @@ void EditorWindow::CreateEditEngine()
     aSyntaxIdleTimer.SetTimeout( 200 );
     aSyntaxIdleTimer.SetTimeoutHdl( LINK( this, EditorWindow, SyntaxTimerHdl ) );
 
-    aHighlighter.initialize( HIGHLIGHT_BASIC );
-
     bool bWasDoSyntaxHighlight = bDoSyntaxHighlight;
     bDoSyntaxHighlight = false; // too slow for large texts...
     OUString aOUSource(rModulWindow.GetModule());
@@ -1311,7 +1310,6 @@ void EditorWindow::ParagraphInsertedDeleted( sal_uLong nPara, bool bInserted )
         rModulWindow.GetBreakPoints().reset();
         rModulWindow.GetBreakPointWindow().Invalidate();
         rModulWindow.GetLineNumberWindow().Invalidate();
-        aHighlighter.initialize( HIGHLIGHT_BASIC );
     }
     else
     {
diff --git a/comphelper/qa/unit/syntaxhighlighttest.cxx b/comphelper/qa/unit/syntaxhighlighttest.cxx
index af834a6..cf13cbb 100644
--- a/comphelper/qa/unit/syntaxhighlighttest.cxx
+++ b/comphelper/qa/unit/syntaxhighlighttest.cxx
@@ -38,11 +38,9 @@ public:
 };
 
 void SyntaxHighlightTest::testBasicString() {
-    SyntaxHighlighter h;
-    h.initialize(HIGHLIGHT_BASIC);
     OUString s("\"foo\"");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(s, ps);
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -51,11 +49,9 @@ void SyntaxHighlightTest::testBasicString() {
 }
 
 void SyntaxHighlightTest::testBasicComment() {
-    SyntaxHighlighter h;
-    h.initialize(HIGHLIGHT_BASIC);
     OUString s("' foo");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(s, ps);
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -64,11 +60,9 @@ void SyntaxHighlightTest::testBasicComment() {
 }
 
 void SyntaxHighlightTest::testBasicCommentNewline() {
-    SyntaxHighlighter h;
-    h.initialize(HIGHLIGHT_BASIC);
     OUString s("' foo\n");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(s, ps);
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(2), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -80,11 +74,9 @@ void SyntaxHighlightTest::testBasicCommentNewline() {
 }
 
 void SyntaxHighlightTest::testBasicEmptyComment() {
-    SyntaxHighlighter h;
-    h.initialize(HIGHLIGHT_BASIC);
     OUString s("'");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(s, ps);
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -93,11 +85,9 @@ void SyntaxHighlightTest::testBasicEmptyComment() {
 }
 
 void SyntaxHighlightTest::testBasicEmptyCommentNewline() {
-    SyntaxHighlighter h;
-    h.initialize(HIGHLIGHT_BASIC);
     OUString s("'\n");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(s, ps);
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(2), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -112,11 +102,9 @@ void SyntaxHighlightTest::testBasic()
 {
     OUString aBasicString("        if Mid(sText,iRun,1 )<> \" \" then Mid( sText ,iRun, 1, Chr( 1 + Asc( Mid(sText,iRun,1 )) ) '");
 
-    SyntaxHighlighter aHighlighter;
-    aHighlighter.initialize( HIGHLIGHT_BASIC );
-
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( aBasicString, aPortions );
+    SyntaxHighlighter(HIGHLIGHT_BASIC).getHighlightPortions(
+        aBasicString, aPortions );
 
     sal_Int32 prevEnd = 0;
     for(std::vector<HighlightPortion>::const_iterator itr =
diff --git a/comphelper/source/misc/syntaxhighlight.cxx b/comphelper/source/misc/syntaxhighlight.cxx
index b886fea..fa5afc1 100644
--- a/comphelper/source/misc/syntaxhighlight.cxx
+++ b/comphelper/source/misc/syntaxhighlight.cxx
@@ -17,6 +17,9 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include "sal/config.h"
+
+#include <cassert>
 
 #include <unicode/uchar.h>
 #include <comphelper/syntaxhighlight.hxx>
@@ -706,22 +709,9 @@ void SyntaxHighlighter::Tokenizer::getHighlightPortions( const OUString& rLine,
 }
 
 
-SyntaxHighlighter::SyntaxHighlighter()
+SyntaxHighlighter::SyntaxHighlighter(HighlighterLanguage language):
+    eLanguage(language), m_tokenizer(new SyntaxHighlighter::Tokenizer(language))
 {
-    m_pKeyWords = NULL;
-    m_nKeyWordCount = 0;
-}
-
-SyntaxHighlighter::~SyntaxHighlighter()
-{
-    delete m_pKeyWords;
-}
-
-void SyntaxHighlighter::initialize( HighlighterLanguage eLanguage_ )
-{
-    eLanguage = eLanguage_;
-    m_tokenizer.reset(new SyntaxHighlighter::Tokenizer(eLanguage));
-
     switch (eLanguage)
     {
         case HIGHLIGHT_BASIC:
@@ -733,10 +723,12 @@ void SyntaxHighlighter::initialize( HighlighterLanguage eLanguage_ )
                                             sizeof( strListSqlKeyWords ) / sizeof( char* ));
             break;
         default:
-            m_tokenizer->setKeyWords( NULL, 0 );
+            assert(false); // this cannot happen
     }
 }
 
+SyntaxHighlighter::~SyntaxHighlighter() {}
+
 void SyntaxHighlighter::notifyChange(
     const OUString* pChangedLines, sal_uInt32 nArrayLength)
 {
diff --git a/helpcompiler/source/BasCodeTagger.cxx b/helpcompiler/source/BasCodeTagger.cxx
index 782bcdc..a01c6b6 100644
--- a/helpcompiler/source/BasCodeTagger.cxx
+++ b/helpcompiler/source/BasCodeTagger.cxx
@@ -55,13 +55,13 @@ xmlNodePtr LibXmlTreeWalker::currentNode()
 
 //======================================================
 
-BasicCodeTagger::BasicCodeTagger( xmlDocPtr rootDoc )
+BasicCodeTagger::BasicCodeTagger( xmlDocPtr rootDoc ):
+    m_Highlighter(HIGHLIGHT_BASIC)
 {
       if ( rootDoc == NULL )
           throw NULL_DOCUMENT;
       m_pDocument = rootDoc;
     m_pXmlTreeWalker = NULL;
-    m_Highlighter.initialize( HIGHLIGHT_BASIC );
     m_bTaggingCompleted = false;
 
 }
diff --git a/include/comphelper/syntaxhighlight.hxx b/include/comphelper/syntaxhighlight.hxx
index 43c42d0..8a57822 100644
--- a/include/comphelper/syntaxhighlight.hxx
+++ b/include/comphelper/syntaxhighlight.hxx
@@ -21,6 +21,7 @@
 
 #include <vector>
 
+#include <boost/noncopyable.hpp>
 #include <boost/scoped_ptr.hpp>
 #include <rtl/ustring.hxx>
 
@@ -70,24 +71,16 @@ enum HighlighterLanguage
 // (notifyChange) and returns the caller the range of lines, which based on the
 // changes, need to be highlighted again. For this the Highlighter marks all
 // lines internally whether or not C comments begin or end.
-class COMPHELPER_DLLPUBLIC SyntaxHighlighter
+class COMPHELPER_DLLPUBLIC SyntaxHighlighter: private boost::noncopyable
 {
     class Tokenizer;
 
     HighlighterLanguage eLanguage;
     boost::scoped_ptr<Tokenizer> m_tokenizer;
-    char* m_pKeyWords;
-    sal_uInt16 m_nKeyWordCount;
-
-//  void initializeKeyWords( HighlighterLanguage eLanguage );
 
 public:
-    SyntaxHighlighter( void );
-    ~SyntaxHighlighter( void );
-
-    // (Re-)initialize Highlighter. The line-table will be completely erased,
-    // meaning that on completion an empty Source is assumed.
-    void initialize( HighlighterLanguage eLanguage_ );
+    SyntaxHighlighter(HighlighterLanguage language);
+    ~SyntaxHighlighter();
 
     void notifyChange(const OUString* pChangedLines, sal_uInt32 nArrayLength);
 
diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx
index d84fc15..d679408 100644
--- a/svtools/source/edit/editsyntaxhighlighter.cxx
+++ b/svtools/source/edit/editsyntaxhighlighter.cxx
@@ -26,10 +26,9 @@
 
 
 MultiLineEditSyntaxHighlight::MultiLineEditSyntaxHighlight( Window* pParent, WinBits nWinStyle,
-    HighlighterLanguage aLanguage): MultiLineEdit(pParent,nWinStyle), mbDoBracketHilight(true)
+    HighlighterLanguage aLanguage): MultiLineEdit(pParent,nWinStyle), mbDoBracketHilight(true), aHighlighter(aLanguage)
 {
     EnableUpdateData(300);
-    aHighlighter.initialize( aLanguage );
 }
 
 extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeMultiLineEditSyntaxHighlight(Window *pParent, VclBuilder::stringmap &)
commit 6aa24e7565dfa5feafd12cd0ec12312df044916e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 28 12:09:28 2013 +0100

    Move implementation details to syntaxhighlight.cxx
    
    (and clean up a little)
    
    Change-Id: I6e660708d8ca1509b89b306cd428dc38c8b03f2c

diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
index 85a1d88..68b937e 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -56,6 +56,7 @@ class SvxSearchItem;
 #include "com/sun/star/reflection/XIdlClass.hpp"
 #include <comphelper/namedvaluecollection.hxx>
 #include <comphelper/processfactory.hxx>
+#include <comphelper/syntaxhighlight.hxx>
 #include <comphelper/configurationhelper.hxx>
 #include "com/sun/star/reflection/XIdlReflection.hpp"
 
diff --git a/comphelper/source/misc/syntaxhighlight.cxx b/comphelper/source/misc/syntaxhighlight.cxx
index fd8ee26..b886fea 100644
--- a/comphelper/source/misc/syntaxhighlight.cxx
+++ b/comphelper/source/misc/syntaxhighlight.cxx
@@ -22,6 +22,18 @@
 #include <comphelper/syntaxhighlight.hxx>
 #include <comphelper/string.hxx>
 
+// Flags for character properties
+#define CHAR_START_IDENTIFIER   0x0001
+#define CHAR_IN_IDENTIFIER      0x0002
+#define CHAR_START_NUMBER       0x0004
+#define CHAR_IN_NUMBER          0x0008
+#define CHAR_IN_HEX_NUMBER      0x0010
+#define CHAR_IN_OCT_NUMBER      0x0020
+#define CHAR_START_STRING       0x0040
+#define CHAR_OPERATOR           0x0080
+#define CHAR_SPACE              0x0100
+#define CHAR_EOL                0x0200
+
 // ##########################################################################
 // ATTENTION: all these words need to be in lower case
 // ##########################################################################
@@ -232,7 +244,7 @@ extern "C" int compare_strings( const void *arg1, const void *arg2 )
 
 namespace
 {
-    static bool isAlpha(sal_Unicode c)
+    bool isAlpha(sal_Unicode c)
     {
         if (comphelper::string::isalphaAscii(c))
             return true;
@@ -240,8 +252,40 @@ namespace
     }
 }
 
+class SyntaxHighlighter::Tokenizer
+{
+    HighlighterLanguage aLanguage;
+    // Character information tables
+    sal_uInt16 aCharTypeTab[256];
+
+    const sal_Unicode* mpStringBegin;
+    const sal_Unicode* mpActualPos;
+
+    sal_Unicode peekChar( void )    { return *mpActualPos; }
+    sal_Unicode getChar( void )     { return *mpActualPos++; }
+
+    // Auxiliary function: testing of the character flags
+    sal_Bool testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags );
+
+    // Get new token, EmptyString == nothing more over there
+    sal_Bool getNextToken( /*out*/TokenTypes& reType,
+        /*out*/const sal_Unicode*& rpStartPos, /*out*/const sal_Unicode*& rpEndPos );
+
+    const char** ppListKeyWords;
+    sal_uInt16 nKeyWordCount;
+
+public:
+    Tokenizer( HighlighterLanguage aLang = HIGHLIGHT_BASIC );
+    ~Tokenizer( void );
+
+    sal_uInt16 parseLine( const OUString* aSource );
+    void getHighlightPortions( const OUString& rLine,
+                               /*out*/std::vector<HighlightPortion>& portions );
+    void setKeyWords( const char** ppKeyWords, sal_uInt16 nCount );
+};
+
 // Helper function: test character flag
-sal_Bool SimpleTokenizer_Impl::testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags )
+sal_Bool SyntaxHighlighter::Tokenizer::testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags )
 {
     bool bRet = false;
     if( c != 0 && c <= 255 )
@@ -256,13 +300,13 @@ sal_Bool SimpleTokenizer_Impl::testCharFlags( sal_Unicode c, sal_uInt16 nTestFla
     return bRet;
 }
 
-void SimpleTokenizer_Impl::setKeyWords( const char** ppKeyWords, sal_uInt16 nCount )
+void SyntaxHighlighter::Tokenizer::setKeyWords( const char** ppKeyWords, sal_uInt16 nCount )
 {
     ppListKeyWords = ppKeyWords;
     nKeyWordCount = nCount;
 }
 
-sal_Bool SimpleTokenizer_Impl::getNextToken( /*out*/TokenTypes& reType,
+sal_Bool SyntaxHighlighter::Tokenizer::getNextToken( /*out*/TokenTypes& reType,
     /*out*/const sal_Unicode*& rpStartPos, /*out*/const sal_Unicode*& rpEndPos )
 {
     reType = TT_UNKNOWN;
@@ -539,7 +583,7 @@ sal_Bool SimpleTokenizer_Impl::getNextToken( /*out*/TokenTypes& reType,
     return sal_True;
 }
 
-SimpleTokenizer_Impl::SimpleTokenizer_Impl( HighlighterLanguage aLang ): aLanguage(aLang)
+SyntaxHighlighter::Tokenizer::Tokenizer( HighlighterLanguage aLang ): aLanguage(aLang)
 {
     memset( aCharTypeTab, 0, sizeof( aCharTypeTab ) );
 
@@ -619,19 +663,11 @@ SimpleTokenizer_Impl::SimpleTokenizer_Impl( HighlighterLanguage aLang ): aLangua
     ppListKeyWords = NULL;
 }
 
-SimpleTokenizer_Impl::~SimpleTokenizer_Impl( void )
-{
-}
-
-SimpleTokenizer_Impl* getSimpleTokenizer( void )
+SyntaxHighlighter::Tokenizer::~Tokenizer( void )
 {
-    static SimpleTokenizer_Impl* pSimpleTokenizer = NULL;
-    if( !pSimpleTokenizer )
-        pSimpleTokenizer = new SimpleTokenizer_Impl();
-    return pSimpleTokenizer;
 }
 
-sal_uInt16 SimpleTokenizer_Impl::parseLine( const OUString* aSource )
+sal_uInt16 SyntaxHighlighter::Tokenizer::parseLine( const OUString* aSource )
 {
     // Set the position to the beginning of the source string
     mpStringBegin = mpActualPos = aSource->getStr();
@@ -649,7 +685,7 @@ sal_uInt16 SimpleTokenizer_Impl::parseLine( const OUString* aSource )
     return nTokenCount;
 }
 
-void SimpleTokenizer_Impl::getHighlightPortions( const OUString& rLine,
+void SyntaxHighlighter::Tokenizer::getHighlightPortions( const OUString& rLine,
                                                  /*out*/std::vector<HighlightPortion>& portions  )
 {
     // Set the position to the beginning of the source string
@@ -672,35 +708,32 @@ void SimpleTokenizer_Impl::getHighlightPortions( const OUString& rLine,
 
 SyntaxHighlighter::SyntaxHighlighter()
 {
-    m_pSimpleTokenizer = 0;
     m_pKeyWords = NULL;
     m_nKeyWordCount = 0;
 }
 
 SyntaxHighlighter::~SyntaxHighlighter()
 {
-    delete m_pSimpleTokenizer;
     delete m_pKeyWords;
 }
 
 void SyntaxHighlighter::initialize( HighlighterLanguage eLanguage_ )
 {
     eLanguage = eLanguage_;
-    delete m_pSimpleTokenizer;
-    m_pSimpleTokenizer = new SimpleTokenizer_Impl(eLanguage);
+    m_tokenizer.reset(new SyntaxHighlighter::Tokenizer(eLanguage));
 
     switch (eLanguage)
     {
         case HIGHLIGHT_BASIC:
-            m_pSimpleTokenizer->setKeyWords( strListBasicKeyWords,
+            m_tokenizer->setKeyWords( strListBasicKeyWords,
                                             sizeof( strListBasicKeyWords ) / sizeof( char* ));
             break;
         case HIGHLIGHT_SQL:
-            m_pSimpleTokenizer->setKeyWords( strListSqlKeyWords,
+            m_tokenizer->setKeyWords( strListSqlKeyWords,
                                             sizeof( strListSqlKeyWords ) / sizeof( char* ));
             break;
         default:
-            m_pSimpleTokenizer->setKeyWords( NULL, 0 );
+            m_tokenizer->setKeyWords( NULL, 0 );
     }
 }
 
@@ -708,13 +741,13 @@ void SyntaxHighlighter::notifyChange(
     const OUString* pChangedLines, sal_uInt32 nArrayLength)
 {
     for( sal_uInt32 i=0 ; i < nArrayLength ; i++ )
-        m_pSimpleTokenizer->parseLine(&pChangedLines[i]);
+        m_tokenizer->parseLine(&pChangedLines[i]);
 }
 
 void SyntaxHighlighter::getHighlightPortions( const OUString& rLine,
                                               /*out*/std::vector<HighlightPortion>& portions )
 {
-    m_pSimpleTokenizer->getHighlightPortions( rLine, portions );
+    m_tokenizer->getHighlightPortions( rLine, portions );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/comphelper/syntaxhighlight.hxx b/include/comphelper/syntaxhighlight.hxx
index cbeb95e..43c42d0 100644
--- a/include/comphelper/syntaxhighlight.hxx
+++ b/include/comphelper/syntaxhighlight.hxx
@@ -20,6 +20,8 @@
 #define INCLUDED_COMPHELPER_SYNTAXHIGHLIGHT_HXX
 
 #include <vector>
+
+#include <boost/scoped_ptr.hpp>
 #include <rtl/ustring.hxx>
 
 #include <comphelper/comphelperdllapi.h>
@@ -55,22 +57,6 @@ struct HighlightPortion {
     {}
 };
 
-/////////////////////////////////////////////////////////////////////////
-// Auxiliary class to support JavaScript modules, next to find functions which
-// will later will be used for syntax highlighting
-
-// Flags for character properties
-#define CHAR_START_IDENTIFIER   0x0001
-#define CHAR_IN_IDENTIFIER      0x0002
-#define CHAR_START_NUMBER       0x0004
-#define CHAR_IN_NUMBER          0x0008
-#define CHAR_IN_HEX_NUMBER      0x0010
-#define CHAR_IN_OCT_NUMBER      0x0020
-#define CHAR_START_STRING       0x0040
-#define CHAR_OPERATOR           0x0080
-#define CHAR_SPACE              0x0100
-#define CHAR_EOL                0x0200
-
 // Language mode of the Highlighter (possibly to be refined later with keyword
 // lists, C comment flags)
 enum HighlighterLanguage
@@ -79,39 +65,6 @@ enum HighlighterLanguage
     HIGHLIGHT_SQL
 };
 
-class SimpleTokenizer_Impl
-{
-    HighlighterLanguage aLanguage;
-    // Character information tables
-    sal_uInt16 aCharTypeTab[256];
-
-    const sal_Unicode* mpStringBegin;
-    const sal_Unicode* mpActualPos;
-
-    sal_Unicode peekChar( void )    { return *mpActualPos; }
-    sal_Unicode getChar( void )     { return *mpActualPos++; }
-
-    // Auxiliary function: testing of the character flags
-    sal_Bool testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags );
-
-    // Get new token, EmptyString == nothing more over there
-    sal_Bool getNextToken( /*out*/TokenTypes& reType,
-        /*out*/const sal_Unicode*& rpStartPos, /*out*/const sal_Unicode*& rpEndPos );
-
-    const char** ppListKeyWords;
-    sal_uInt16 nKeyWordCount;
-
-public:
-    SimpleTokenizer_Impl( HighlighterLanguage aLang = HIGHLIGHT_BASIC );
-    ~SimpleTokenizer_Impl( void );
-
-    sal_uInt16 parseLine( const OUString* aSource );
-    void getHighlightPortions( const OUString& rLine,
-                               /*out*/std::vector<HighlightPortion>& portions );
-    void setKeyWords( const char** ppKeyWords, sal_uInt16 nCount );
-};
-
-
 //*** SyntaxHighlighter Class ***
 // Concept: the Highlighter will be notified of all changes in the source
 // (notifyChange) and returns the caller the range of lines, which based on the
@@ -119,8 +72,10 @@ public:
 // lines internally whether or not C comments begin or end.
 class COMPHELPER_DLLPUBLIC SyntaxHighlighter
 {
+    class Tokenizer;
+
     HighlighterLanguage eLanguage;
-    SimpleTokenizer_Impl* m_pSimpleTokenizer;
+    boost::scoped_ptr<Tokenizer> m_tokenizer;
     char* m_pKeyWords;
     sal_uInt16 m_nKeyWordCount;
 
diff --git a/include/svtools/svmedit.hxx b/include/svtools/svmedit.hxx
index 6999db8..64d81bd 100644
--- a/include/svtools/svmedit.hxx
+++ b/include/svtools/svmedit.hxx
@@ -23,7 +23,6 @@
 #include <vcl/svapp.hxx>
 #include <vcl/vclmedit.hxx>
 
-#include <comphelper/syntaxhighlight.hxx>
 #include <svtools/svtdllapi.h>
 #include <svtools/colorcfg.hxx>
 
commit f5e8be8bb1681f0e2494337bc769b33332ef3fff
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 28 11:38:36 2013 +0100

    Remove unused SimpleTokenizer_Impl::nLine/nCol
    
    ...which are never read; remove thereby unused parameters from functions.
    
    Change-Id: I644d2dc1b2d13ae2f932d04243521eef97e67e3e

diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index 485d696..0a52760 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -599,7 +599,7 @@ void EditorWindow::HandleAutoCorrect()
     const OUString& sActSubName = GetActualSubName( nLine ); // the actual procedure
 
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+    aHighlighter.getHighlightPortions( aLine, aPortions );
 
     if( aPortions.empty() )
         return;
@@ -674,7 +674,7 @@ TextSelection EditorWindow::GetLastHighlightPortionTextSelection()
     sal_uInt16 nIndex = GetEditView()->GetSelection().GetStart().GetIndex();
     OUString aLine( pEditEngine->GetText( nLine ) ); // the line being modified
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+    aHighlighter.getHighlightPortions( aLine, aPortions );
 
     assert(!aPortions.empty());
     HighlightPortion& r = aPortions.back();
@@ -722,7 +722,7 @@ void EditorWindow::HandleAutoCloseDoubleQuotes()
     OUString aLine( pEditEngine->GetText( nLine ) ); // the line being modified
 
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+    aHighlighter.getHighlightPortions( aLine, aPortions );
 
     if( aPortions.empty() )
         return;
@@ -743,7 +743,7 @@ void EditorWindow::HandleProcedureCompletion()
     OUString aLine( pEditEngine->GetText( nLine ) );
 
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+    aHighlighter.getHighlightPortions( aLine, aPortions );
 
     if( aPortions.empty() )
         return;
@@ -793,7 +793,7 @@ void EditorWindow::HandleProcedureCompletion()
         {//searching forward for end token, or another sub/function definition
             OUString aCurrLine = pEditEngine->GetText( i );
             std::vector<HighlightPortion> aCurrPortions;
-            aHighlighter.getHighlightPortions( i, aCurrLine, aCurrPortions );
+            aHighlighter.getHighlightPortions( aCurrLine, aCurrPortions );
 
             if( aCurrPortions.size() >= 3 )
             {//at least 3 tokens: (sub|function) whitespace idetifier ....
@@ -827,7 +827,7 @@ void EditorWindow::HandleCodeCompletion()
 
     std::vector<HighlightPortion> aPortions;
     aLine = aLine.copy(0, aSel.GetEnd().GetIndex());
-    aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+    aHighlighter.getHighlightPortions( aLine, aPortions );
     if( !aPortions.empty() )
     {//use the syntax highlighter to grab out nested reflection calls, eg. aVar.aMethod("aa").aOtherMethod ..
         for( std::vector<HighlightPortion>::reverse_iterator i(
@@ -1190,12 +1190,12 @@ void EditorWindow::ImpDoHighlight( sal_uLong nLine )
     if ( bDoSyntaxHighlight )
     {
         OUString aLine( pEditEngine->GetText( nLine ) );
-        aHighlighter.notifyChange( nLine, 0, &aLine, 1 );
+        aHighlighter.notifyChange( &aLine, 1 );
 
         bool const bWasModified = pEditEngine->IsModified();
         pEditEngine->RemoveAttribs( nLine, true );
         std::vector<HighlightPortion> aPortions;
-        aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+        aHighlighter.getHighlightPortions( aLine, aPortions );
 
         for (std::vector<HighlightPortion>::iterator i(aPortions.begin());
              i != aPortions.end(); ++i)
@@ -1332,7 +1332,7 @@ void EditorWindow::ParagraphInsertedDeleted( sal_uLong nPara, bool bInserted )
         if ( bDoSyntaxHighlight )
         {
             OUString aDummy;
-            aHighlighter.notifyChange( nPara, bInserted ? 1 : (-1), &aDummy, 1 );
+            aHighlighter.notifyChange( &aDummy, 1 );
         }
     }
 }
diff --git a/comphelper/qa/unit/syntaxhighlighttest.cxx b/comphelper/qa/unit/syntaxhighlighttest.cxx
index 294db3e..af834a6 100644
--- a/comphelper/qa/unit/syntaxhighlighttest.cxx
+++ b/comphelper/qa/unit/syntaxhighlighttest.cxx
@@ -42,7 +42,7 @@ void SyntaxHighlightTest::testBasicString() {
     h.initialize(HIGHLIGHT_BASIC);
     OUString s("\"foo\"");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(0, s, ps);
+    h.getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -55,7 +55,7 @@ void SyntaxHighlightTest::testBasicComment() {
     h.initialize(HIGHLIGHT_BASIC);
     OUString s("' foo");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(0, s, ps);
+    h.getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -68,7 +68,7 @@ void SyntaxHighlightTest::testBasicCommentNewline() {
     h.initialize(HIGHLIGHT_BASIC);
     OUString s("' foo\n");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(0, s, ps);
+    h.getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(2), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -84,7 +84,7 @@ void SyntaxHighlightTest::testBasicEmptyComment() {
     h.initialize(HIGHLIGHT_BASIC);
     OUString s("'");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(0, s, ps);
+    h.getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(1), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -97,7 +97,7 @@ void SyntaxHighlightTest::testBasicEmptyCommentNewline() {
     h.initialize(HIGHLIGHT_BASIC);
     OUString s("'\n");
     std::vector<HighlightPortion> ps;
-    h.getHighlightPortions(0, s, ps);
+    h.getHighlightPortions(s, ps);
     CPPUNIT_ASSERT_EQUAL(
         static_cast<std::vector<HighlightPortion>::size_type>(2), ps.size());
     CPPUNIT_ASSERT_EQUAL(0, ps[0].nBegin);
@@ -116,7 +116,7 @@ void SyntaxHighlightTest::testBasic()
     aHighlighter.initialize( HIGHLIGHT_BASIC );
 
     std::vector<HighlightPortion> aPortions;
-    aHighlighter.getHighlightPortions( 0, aBasicString, aPortions );
+    aHighlighter.getHighlightPortions( aBasicString, aPortions );
 
     sal_Int32 prevEnd = 0;
     for(std::vector<HighlightPortion>::const_iterator itr =
diff --git a/comphelper/source/misc/syntaxhighlight.cxx b/comphelper/source/misc/syntaxhighlight.cxx
index ca3207d..fd8ee26 100644
--- a/comphelper/source/misc/syntaxhighlight.cxx
+++ b/comphelper/source/misc/syntaxhighlight.cxx
@@ -529,10 +529,6 @@ sal_Bool SimpleTokenizer_Impl::getNextToken( /*out*/TokenTypes& reType,
         if( cNext != c && testCharFlags( cNext, CHAR_EOL ) == sal_True )
             getChar();
 
-        // Set position data at the line start
-        nCol = 0;
-        nLine++;
-
         reType = TT_EOL;
     }
 
@@ -635,15 +631,11 @@ SimpleTokenizer_Impl* getSimpleTokenizer( void )
     return pSimpleTokenizer;
 }
 
-sal_uInt16 SimpleTokenizer_Impl::parseLine( sal_uInt32 nParseLine, const OUString* aSource )
+sal_uInt16 SimpleTokenizer_Impl::parseLine( const OUString* aSource )
 {
     // Set the position to the beginning of the source string
     mpStringBegin = mpActualPos = aSource->getStr();
 
-    // Initialize row and column
-    nLine = nParseLine;
-    nCol = 0L;
-
     // Variables for the out parameter
     TokenTypes eType;
     const sal_Unicode* pStartPos;
@@ -657,16 +649,12 @@ sal_uInt16 SimpleTokenizer_Impl::parseLine( sal_uInt32 nParseLine, const OUStrin
     return nTokenCount;
 }
 
-void SimpleTokenizer_Impl::getHighlightPortions( sal_uInt32 nParseLine, const OUString& rLine,
+void SimpleTokenizer_Impl::getHighlightPortions( const OUString& rLine,
                                                  /*out*/std::vector<HighlightPortion>& portions  )
 {
     // Set the position to the beginning of the source string
     mpStringBegin = mpActualPos = rLine.getStr();
 
-    // Initialize row and column
-    nLine = nParseLine;
-    nCol = 0L;
-
     // Variables for the out parameter
     TokenTypes eType;
     const sal_Unicode* pStartPos;
@@ -716,19 +704,17 @@ void SyntaxHighlighter::initialize( HighlighterLanguage eLanguage_ )
     }
 }
 
-void SyntaxHighlighter::notifyChange( sal_uInt32 nLine, sal_Int32 nLineCountDifference,
-                                const OUString* pChangedLines, sal_uInt32 nArrayLength)
+void SyntaxHighlighter::notifyChange(
+    const OUString* pChangedLines, sal_uInt32 nArrayLength)
 {
-    (void)nLineCountDifference;
-
     for( sal_uInt32 i=0 ; i < nArrayLength ; i++ )
-        m_pSimpleTokenizer->parseLine(nLine+i, &pChangedLines[i]);
+        m_pSimpleTokenizer->parseLine(&pChangedLines[i]);
 }
 
-void SyntaxHighlighter::getHighlightPortions( sal_uInt32 nLine, const OUString& rLine,
+void SyntaxHighlighter::getHighlightPortions( const OUString& rLine,
                                               /*out*/std::vector<HighlightPortion>& portions )
 {
-    m_pSimpleTokenizer->getHighlightPortions( nLine, rLine, portions );
+    m_pSimpleTokenizer->getHighlightPortions( rLine, portions );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/helpcompiler/source/BasCodeTagger.cxx b/helpcompiler/source/BasCodeTagger.cxx
index 6e698f5..782bcdc 100644
--- a/helpcompiler/source/BasCodeTagger.cxx
+++ b/helpcompiler/source/BasCodeTagger.cxx
@@ -149,9 +149,9 @@ void BasicCodeTagger::tagParagraph( xmlNodePtr paragraph )
     OUString strLine( reinterpret_cast<const sal_Char*>(codeSnippet),
                                 strlen(reinterpret_cast<const char*>(codeSnippet)),
                                 RTL_TEXTENCODING_UTF8 );
-    m_Highlighter.notifyChange ( 0, 0, &strLine, 1 );
+    m_Highlighter.notifyChange ( &strLine, 1 );
     std::vector<HighlightPortion> portions;
-    m_Highlighter.getHighlightPortions( 0, strLine, portions );
+    m_Highlighter.getHighlightPortions( strLine, portions );
     for (std::vector<HighlightPortion>::iterator i(portions.begin());
          i != portions.end(); ++i)
     {
diff --git a/include/comphelper/syntaxhighlight.hxx b/include/comphelper/syntaxhighlight.hxx
index dc1631a..cbeb95e 100644
--- a/include/comphelper/syntaxhighlight.hxx
+++ b/include/comphelper/syntaxhighlight.hxx
@@ -88,12 +88,8 @@ class SimpleTokenizer_Impl
     const sal_Unicode* mpStringBegin;
     const sal_Unicode* mpActualPos;
 
-    // Lines and columns
-    sal_uInt32 nLine;
-    sal_uInt32 nCol;
-
     sal_Unicode peekChar( void )    { return *mpActualPos; }
-    sal_Unicode getChar( void )     { nCol++; return *mpActualPos++; }
+    sal_Unicode getChar( void )     { return *mpActualPos++; }
 
     // Auxiliary function: testing of the character flags
     sal_Bool testCharFlags( sal_Unicode c, sal_uInt16 nTestFlags );
@@ -109,8 +105,8 @@ public:
     SimpleTokenizer_Impl( HighlighterLanguage aLang = HIGHLIGHT_BASIC );
     ~SimpleTokenizer_Impl( void );
 
-    sal_uInt16 parseLine( sal_uInt32 nLine, const OUString* aSource );
-    void getHighlightPortions( sal_uInt32 nParseLine, const OUString& rLine,
+    sal_uInt16 parseLine( const OUString* aSource );
+    void getHighlightPortions( const OUString& rLine,
                                /*out*/std::vector<HighlightPortion>& portions );
     void setKeyWords( const char** ppKeyWords, sal_uInt16 nCount );
 };
@@ -136,13 +132,11 @@ public:
 
     // (Re-)initialize Highlighter. The line-table will be completely erased,
     // meaning that on completion an empty Source is assumed.
-    // notifyChange() can only be given line 0
     void initialize( HighlighterLanguage eLanguage_ );
 
-    void notifyChange( sal_uInt32 nLine, sal_Int32 nLineCountDifference,
-                                const OUString* pChangedLines, sal_uInt32 nArrayLength);
+    void notifyChange(const OUString* pChangedLines, sal_uInt32 nArrayLength);
 
-    void getHighlightPortions( sal_uInt32 nLine, const OUString& rLine,
+    void getHighlightPortions( const OUString& rLine,
                                std::vector<HighlightPortion>& pPortions );
 
     HighlighterLanguage GetLanguage() { return eLanguage;}
diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx
index ba1aca2..d84fc15 100644
--- a/svtools/source/edit/editsyntaxhighlighter.cxx
+++ b/svtools/source/edit/editsyntaxhighlighter.cxx
@@ -171,11 +171,11 @@ void MultiLineEditSyntaxHighlight::UpdateData()
     for (unsigned int nLine=0; nLine < GetTextEngine()->GetParagraphCount(); nLine++)
     {
         OUString aLine( GetTextEngine()->GetText( nLine ) );
-        aHighlighter.notifyChange( nLine, 0, &aLine, 1 );
+        aHighlighter.notifyChange( &aLine, 1 );
 
         GetTextEngine()->RemoveAttribs( nLine, sal_True );
         std::vector<HighlightPortion> aPortions;
-        aHighlighter.getHighlightPortions( nLine, aLine, aPortions );
+        aHighlighter.getHighlightPortions( aLine, aPortions );
         for (std::vector<HighlightPortion>::iterator i(aPortions.begin());
              i != aPortions.end(); ++i)
         {


More information about the Libreoffice-commits mailing list