summaryrefslogtreecommitdiff
path: root/linguistic/workben/sprophelp.cxx
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2022-12-30 10:26:07 +0100
committerLászló Németh <nemeth@numbertext.org>2022-12-30 11:03:39 +0000
commit57d79744c77eef96b4c2bd3b16e0a04317ffcf9e (patch)
tree7945482864b5be38eb2b88ba2c3fd38a1c21e293 /linguistic/workben/sprophelp.cxx
parentb22bbfa25ab1f0b9cfa1dedc85b8f9874f0a5e5b (diff)
tdf#136306 offapi linguistic: add options to disable rule-based compounding
Add two new spell checking options to disable rule-based closed and hyphenated compound word recognition with Hunspell dictionaries: com::sun::star::linguistic2::XLinguProperties::IsSpellClosedCompound com::sun::star::linguistic2::XLinguProperties::IsSpellHyphenatedCompound For professional proofreaders, it can be more important to avoid of the mistakes of the rule-based compound word recognition, than to speed up proofreading. Disabling the following two new options will report all rule-based closed compound words (default in Dutch, German, Hungarian etc. dictionaries) and rule-based hyphenated compound words (all languages with BREAK usage in their Hunspell dictionaries): - "Accept possible closed compound words" - "Accept possible hyphenated compound words" For example, disabling the second one, dictionary word "scot-free" will be still correct word in English spell checking, but not the previously accepted compound "arbitrary-word-with-hyphen". Note: the second option works with the update to Hunspell 1.7.2. Change-Id: Id879610927d5e8269fda5ad207c1c2fe1f57a0b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144875 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'linguistic/workben/sprophelp.cxx')
-rw-r--r--linguistic/workben/sprophelp.cxx35
1 files changed, 34 insertions, 1 deletions
diff --git a/linguistic/workben/sprophelp.cxx b/linguistic/workben/sprophelp.cxx
index 41542fec155f..9da626319a72 100644
--- a/linguistic/workben/sprophelp.cxx
+++ b/linguistic/workben/sprophelp.cxx
@@ -167,7 +167,9 @@ static const char *aSP[] =
UPN_IS_USE_DICTIONARY_LIST,
UPN_IS_SPELL_UPPER_CASE,
UPN_IS_SPELL_WITH_DIGITS,
- UPN_IS_SPELL_CAPITALIZATION
+ UPN_IS_SPELL_CAPITALIZATION,
+ UPN_IS_SPELL_CLOSED_COMPOUND,
+ UPN_IS_SPELL_HYPHENATED_COMPOUND
};
@@ -216,6 +218,16 @@ PropertyHelper_Spell::PropertyHelper_Spell(
pbVal = &bIsSpellCapitalization;
pbResVal = &bResIsSpellCapitalization;
}
+ else if (OUString( UPN_IS_SPELL_CLOSED_COMPOUND ) == pPropName[i])
+ {
+ pbVal = &bIsSpellClosedCompound;
+ pbResVal = &bResIsSpellClosedCompound;
+ }
+ else if (OUString( UPN_IS_SPELL_HYPHENATED_COMPOUND ) == pPropName[i])
+ {
+ pbVal = &bIsSpellHyphenatedCompound;
+ pbResVal = &bResIsSpellHyphenatedCompound;
+ }
if (pbVal && pbResVal)
{
@@ -240,6 +252,8 @@ void PropertyHelper_Spell::SetDefault()
bResIsSpellUpperCase = bIsSpellUpperCase = sal_False;
bResIsSpellWithDigits = bIsSpellWithDigits = sal_False;
bResIsSpellCapitalization = bIsSpellCapitalization = sal_True;
+ bResIsSpellClosedCompound = bIsSpellClosedCompound = sal_True;
+ bResIsSpellHyphenatedCompound = bIsSpellHyphenatedCompound = sal_True;
}
@@ -296,6 +310,21 @@ void SAL_CALL
bSWWA = !bSCWA; // sal_True->sal_False change?
break;
}
+ case UPH_IS_SPELL_CLOSED_COMPOUND :
+ {
+ pbVal = &bIsSpellClosedCompound;
+ bSCWA = sal_False == *pbVal; // sal_False->sal_True change?
+ bSWWA = !bSCWA; // sal_True->sal_False change?
+ break;
+ }
+ case UPH_IS_SPELL_HYPHENATED_COMPOUND :
+ {
+ pbVal = &bIsSpellHyphenatedCompound;
+ bSCWA = sal_False == *pbVal; // sal_False->sal_True change?
+ bSWWA = !bSCWA; // sal_True->sal_False change?
+ break;
+ }
+
default:
OSL_FAIL( "unknown property" );
}
@@ -325,6 +354,8 @@ void PropertyHelper_Spell::SetTmpPropVals( const PropertyValues &rPropVals )
bResIsSpellUpperCase = bIsSpellUpperCase;
bResIsSpellWithDigits = bIsSpellWithDigits;
bResIsSpellCapitalization = bIsSpellCapitalization;
+ bResIsSpellClosedCompound = bIsSpellClosedCompound;
+ bResIsSpellHyphenatedCompound = bIsSpellHyphenatedCompound;
sal_Int32 nLen = rPropVals.getLength();
if (nLen)
@@ -341,6 +372,8 @@ void PropertyHelper_Spell::SetTmpPropVals( const PropertyValues &rPropVals )
case UPH_IS_SPELL_UPPER_CASE : pbResVal = &bResIsSpellUpperCase; break;
case UPH_IS_SPELL_WITH_DIGITS : pbResVal = &bResIsSpellWithDigits; break;
case UPH_IS_SPELL_CAPITALIZATION : pbResVal = &bResIsSpellCapitalization; break;
+ case UPH_IS_SPELL_CLOSED_COMPOUND : pbResVal = &bResIsSpellClosedCompound; break;
+ case UPH_IS_SPELL_HYPHENATED_COMPOUND : pbResVal = &bResIsSpellHyphenatedCompound; break;
default:
OSL_FAIL( "unknown property" );
}