aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/PerLine.cxx
diff options
context:
space:
mode:
authorIain Clarke <unknown>2020-04-08 09:27:43 +1000
committerIain Clarke <unknown>2020-04-08 09:27:43 +1000
commit48e716a6bc32736c1035f3f9edc78eba2987fc39 (patch)
treedfdc40802f7869684697a0d257b3e6ceb1692b7c /src/PerLine.cxx
parent2ebe1a97728f3d29671b3312e395bf0fb880caa6 (diff)
downloadscintilla-mirror-48e716a6bc32736c1035f3f9edc78eba2987fc39.tar.gz
Backport: Feature [feature-requests:1344]. Add methods for iterating through the marker
handles and marker numbers on a line. Backport of changeset 8129:665c31051e3c.
Diffstat (limited to 'src/PerLine.cxx')
-rw-r--r--src/PerLine.cxx25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/PerLine.cxx b/src/PerLine.cxx
index 33e6aabf1..53e0827c4 100644
--- a/src/PerLine.cxx
+++ b/src/PerLine.cxx
@@ -54,6 +54,15 @@ bool MarkerHandleSet::Contains(int handle) const noexcept {
return false;
}
+MarkerHandleNumber const *MarkerHandleSet::GetMarkerHandleNumber(int which) const noexcept {
+ for (const MarkerHandleNumber &mhn : mhList) {
+ if (which == 0)
+ return &mhn;
+ which--;
+ }
+ return nullptr;
+}
+
bool MarkerHandleSet::InsertHandle(int handle, int markerNum) {
mhList.push_front(MarkerHandleNumber(handle, markerNum));
return true;
@@ -115,6 +124,22 @@ Sci::Line LineMarkers::LineFromHandle(int markerHandle) {
return -1;
}
+int LineMarkers::HandleFromLine(Sci::Line line, int which) const {
+ if (markers.Length() && (line >= 0) && (line < markers.Length()) && markers[line]) {
+ MarkerHandleNumber const *pnmh = markers[line]->GetMarkerHandleNumber(which);
+ return pnmh ? pnmh->handle : -1;
+ }
+ return -1;
+}
+
+int LineMarkers::NumberFromLine(Sci::Line line, int which) const {
+ if (markers.Length() && (line >= 0) && (line < markers.Length()) && markers[line]) {
+ MarkerHandleNumber const *pnmh = markers[line]->GetMarkerHandleNumber(which);
+ return pnmh ? pnmh->number : -1;
+ }
+ return -1;
+}
+
void LineMarkers::MergeMarkers(Sci::Line line) {
if (markers[line + 1]) {
if (!markers[line])