[Libreoffice-commits] core.git: editeng/source sw/source
László Németh
laszlo.nemeth at collabora.com
Sun May 24 20:23:18 PDT 2015
editeng/source/misc/svxacorr.cxx | 8 ++++++--
sw/source/core/edit/acorrect.cxx | 5 ++++-
2 files changed, 10 insertions(+), 3 deletions(-)
New commits:
commit 86782d5dfc0163159369677b0ac172ed2125b221
Author: László Németh <laszlo.nemeth at collabora.com>
Date: Mon May 25 04:30:16 2015 +0200
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.
Change-Id: I54462d7482838523a47b844da6a84f08a1518b07
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 48d12f9..77816d9 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -2825,12 +2825,16 @@ 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[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