[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - editeng/source sw/source

László Németh laszlo.nemeth at collabora.com
Mon Jun 8 03:21:54 PDT 2015


 editeng/source/misc/svxacorr.cxx |    9 +++++++--
 sw/source/core/edit/acorrect.cxx |    5 ++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

New commits:
commit 15c04e1f567e50aff850a65996c65e6465497710
Author: László Németh <laszlo.nemeth at collabora.com>
Date:   Sun May 31 15:35:03 2015 +0200

    AutoCorrect: fix not immediately replacement of Emoji :short_names:
    
    Cherry-picked from 86782d5dfc0163159369677b0ac172ed2125b221
    and cd2ba3124602ad9ee8f5927c385936cc5319808d.
    
    [86782d5dfc0163159369677b0ac172ed2125b221:
    
    AutoCorrect: direct replacement of keywords surrounded by colons
    
    Replacing immediately (without pressing space or enter) and
    inside words, too. For example, fixing tdf#55292 – complete input
    method for n-dash, m-dash – is possible now by  :--: -> n-dash,
    :---: -> m-dash AutoCorrect replacements.]
    
    cd2ba3124602ad9ee8f5927c385936cc5319808d:
    
    unbreak calc again, a fix for the previous commit by Markus Mohrhard]
    
    Change-Id: Id7d9411599bec620fa91c246b531d26150f20c6a
    Reviewed-on: https://gerrit.libreoffice.org/16002
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 48d12f9..10426e1 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -2825,12 +2825,17 @@ const SvxAutocorrWord* SvxAutocorrWordList::WordMatches(const SvxAutocorrWord *p
     sal_Int32 right_wildcard = rChk.endsWith( ".*" ) ? 2 : 0; // "word.*" pattern?
     sal_Int32 nSttWdPos = nEndPos;
 
-    if ( nEndPos >= rChk.getLength() - left_wildcard - right_wildcard )
+    // direct replacement of keywords surrounded by colons (for example, ":name:")
+    bool bColonNameColon = rTxt.getLength() > nEndPos &&
+        rTxt[nEndPos] == ':' && rChk[0] == ':' && rChk.endsWith(":");
+    if ( nEndPos + (bColonNameColon ? 1 : 0) >= rChk.getLength() - left_wildcard - right_wildcard )
     {
 
         bool bWasWordDelim = false;
         sal_Int32 nCalcStt = nEndPos - rChk.getLength() + left_wildcard;
-        if( !right_wildcard && ( !nCalcStt || nCalcStt == rStt || left_wildcard ||
+        if (bColonNameColon)
+            nCalcStt++;
+        if( !right_wildcard && ( !nCalcStt || nCalcStt == rStt || left_wildcard || bColonNameColon ||
               ( nCalcStt < rStt &&
                 IsWordDelim( rTxt[ nCalcStt - 1 ] ))) )
         {
diff --git a/sw/source/core/edit/acorrect.cxx b/sw/source/core/edit/acorrect.cxx
index d3281eb..82255be 100644
--- a/sw/source/core/edit/acorrect.cxx
+++ b/sw/source/core/edit/acorrect.cxx
@@ -326,8 +326,11 @@ bool SwAutoCorrDoc::ChgAutoCorrWord( sal_Int32& rSttPos, sal_Int32 nEndPos,
     SwDoc* pDoc = rEditSh.GetDoc();
     if( pFnd )
     {
+        // replace also last colon of keywords surrounded by colons (for example, ":name:")
+        bool replaceLastChar = pFnd->GetShort()[0] == ':' && pFnd->GetShort().endsWith(":");
+
         const SwNodeIndex& rNd = rCrsr.GetPoint()->nNode;
-        SwPaM aPam( rNd, rSttPos, rNd, nEndPos );
+        SwPaM aPam( rNd, rSttPos, rNd, nEndPos + (replaceLastChar ? 1 : 0) );
 
         if( pFnd->IsTextOnly() )
         {


More information about the Libreoffice-commits mailing list