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.nem...@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 <c...@libreoffice.org> Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@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() ) {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits