aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2023-10-26 14:48:39 +1100
committerNeil <nyamatongwe@gmail.com>2023-10-26 14:48:39 +1100
commitd6d33d9460fb5fba165cbbd743b501324baa7516 (patch)
treee5ac09d5a24c3d91819899ee4d9b589ecd04a92c /src/Document.cxx
parent624100e7bccb2f8cc740bf9306f6eb2768fdb51d (diff)
downloadscintilla-mirror-d6d33d9460fb5fba165cbbd743b501324baa7516.tar.gz
Add LineStartPosition to replace common idiom LineStart(LineFromPosition(x)) as
this shortens code. LineStartPosition is also noexcept which allows callers to be noexcept.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index afe6717a1..2c04bbaae 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -453,8 +453,8 @@ Range Document::LineRange(Sci::Line line) const noexcept {
return {cb.LineStart(line), cb.LineStart(line + 1)};
}
-bool Document::IsLineStartPosition(Sci::Position position) const {
- return LineStart(LineFromPosition(position)) == position;
+bool Document::IsLineStartPosition(Sci::Position position) const noexcept {
+ return LineStartPosition(position) == position;
}
Sci_Position SCI_METHOD Document::LineEnd(Sci_Position line) const {
@@ -477,6 +477,10 @@ Sci::Line Document::SciLineFromPosition(Sci::Position pos) const noexcept {
return cb.LineFromPosition(pos);
}
+Sci::Position Document::LineStartPosition(Sci::Position position) const noexcept {
+ return cb.LineStart(cb.LineFromPosition(position));
+}
+
Sci::Position Document::LineEndPosition(Sci::Position position) const noexcept {
return cb.LineEnd(cb.LineFromPosition(position));
}
@@ -767,7 +771,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position
} else {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
- const Sci::Position posStartLine = cb.LineStart(cb.LineFromPosition(pos));
+ const Sci::Position posStartLine = LineStartPosition(pos);
if (pos == posStartLine)
return pos;
@@ -850,7 +854,7 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const noexc
} else {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
- const Sci::Position posStartLine = cb.LineStart(cb.LineFromPosition(pos));
+ const Sci::Position posStartLine = LineStartPosition(pos);
// See http://msdn.microsoft.com/en-us/library/cc194792%28v=MSDN.10%29.aspx
// http://msdn.microsoft.com/en-us/library/cc194790.aspx
if ((pos - 1) <= posStartLine) {
@@ -3079,7 +3083,7 @@ public:
#endif
-std::regex_constants::match_flag_type MatchFlags(const Document *doc, Sci::Position startPos, Sci::Position endPos) {
+std::regex_constants::match_flag_type MatchFlags(const Document *doc, Sci::Position startPos, Sci::Position endPos) noexcept {
std::regex_constants::match_flag_type flagsMatch = std::regex_constants::match_default;
if (!doc->IsLineStartPosition(startPos))
flagsMatch |= std::regex_constants::match_not_bol;