[prev in list] [next in list] [prev in thread] [next in thread]
List: lyx-cvs
Subject: [LyX/master] Introduce isNumberChar(char_type) function
From: Kornel Benko <kornel () lyx ! org>
Date: 2022-05-29 9:36:24
Message-ID: 20220529093624.208C6280238 () lyx ! lyx ! org
[Download RAW message or body]
commit 82af8778f1b7f73e6f33a9c6d57da061f567457f
Author: Kornel Benko <kornel@lyx.org>
Date: Sun May 29 12:06:18 2022 +0200
Introduce isNumberChar(char_type) function
In FindAdv we use Qt to interpret regular expressions.
Regex uses for instance '\w', '\d' etc.
'\d' finds not just '0-9' but also e.g. '߂' (Nko Digit Two: U+07c2)
'\w' includes also such numbers.
ATM, only FindAdv uses this function.
---
src/lyxfind.cpp | 12 +++---------
src/support/lstrings.cpp | 4 ++++
src/support/textutils.h | 3 +++
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 025b2bc..594e2aa 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -4833,7 +4833,7 @@ static int findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, Ma
static bool isWordChar(char_type c)
{
- return isLetterChar(c) || isDigitASCII(c);
+ return isLetterChar(c) || isNumberChar(c);
}
/// Perform a FindAdv operation.
@@ -4888,15 +4888,9 @@ bool findAdv(BufferView * bv, FindAndReplaceOptions & opt)
it != it_end; ++it)
md2.push_back(*it);
docstring inp = asString(md2);
- LYXERR0("Got \"" << inp << "\"");
- char_type prev = inp[0];
for (len = 0; (unsigned) len < inp.size() && len + cur.pos() <= cur.lastpos(); len++) {
- char_type c = inp[len];
- if (isLetterChar(c))
- continue;
- if (isDigitASCII(c))
- continue;
- break;
+ if (!isWordChar(inp[len]))
+ break;
}
// len == 0 means previous char was a word separator
// len == 1 search starts with a word separator
diff --git a/src/support/lstrings.cpp b/src/support/lstrings.cpp
index b9c23f5..6a8e90e 100644
--- a/src/support/lstrings.cpp
+++ b/src/support/lstrings.cpp
@@ -189,6 +189,10 @@ bool isDigitASCII(char_type c)
return '0' <= c && c <= '9';
}
+bool isNumberChar(char_type c)
+{
+ return ucs4_to_qchar(c).isNumber();
+}
bool isAlnumASCII(char_type c)
{
diff --git a/src/support/textutils.h b/src/support/textutils.h
index 3c29c92..64498fa 100644
--- a/src/support/textutils.h
+++ b/src/support/textutils.h
@@ -55,6 +55,9 @@ bool isEuropeanNumberTerminator(char_type c);
/// return whether \p c is a digit in the ASCII range
bool isDigitASCII(char_type c);
+/// return whether \p c is a digit (not just 0-9)
+bool isNumberChar(char_type c);
+
/// return whether \p c is alpha or a digit in the ASCII range
bool isAlnumASCII(char_type c);
--
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic