diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 8 | ||||
| -rw-r--r-- | src/Document.h | 2 | ||||
| -rw-r--r-- | src/Editor.cxx | 6 | ||||
| -rw-r--r-- | src/PerLine.cxx | 25 | ||||
| -rw-r--r-- | src/PerLine.h | 3 | 
5 files changed, 44 insertions, 0 deletions
| diff --git a/src/Document.cxx b/src/Document.cxx index 6b93a30af..263e83d7a 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -369,6 +369,14 @@ Sci::Line Document::LineFromHandle(int markerHandle) const {  	return Markers()->LineFromHandle(markerHandle);  } +int Document::MarkerNumberFromLine(Sci::Line line, int which) const { +	return Markers()->NumberFromLine(line, which); +} + +int Document::MarkerHandleFromLine(Sci::Line line, int which) const { +	return Markers()->HandleFromLine(line, which); +} +  Sci_Position SCI_METHOD Document::LineStart(Sci_Position line) const {  	return cb.LineStart(line);  } diff --git a/src/Document.h b/src/Document.h index c96fe9ee7..1f03dda1d 100644 --- a/src/Document.h +++ b/src/Document.h @@ -403,6 +403,8 @@ public:  	void DeleteMarkFromHandle(int markerHandle);  	void DeleteAllMarks(int markerNum);  	Sci::Line LineFromHandle(int markerHandle) const; +	int MarkerNumberFromLine(Sci::Line line, int which) const; +	int MarkerHandleFromLine(Sci::Line line, int which) const;  	Sci_Position SCI_METHOD LineStart(Sci_Position line) const override;  	bool IsLineStartPosition(Sci::Position position) const;  	Sci_Position SCI_METHOD LineEnd(Sci_Position line) const override; diff --git a/src/Editor.cxx b/src/Editor.cxx index efb360331..b7636adb2 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6412,6 +6412,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		pdoc->DeleteMarkFromHandle(static_cast<int>(wParam));  		break; +	case SCI_MARKERHANDLEFROMLINE: +		return pdoc->MarkerHandleFromLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); + +	case SCI_MARKERNUMBERFROMLINE: +		return pdoc->MarkerNumberFromLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam)); +  	case SCI_GETVIEWWS:  		return vs.viewWhitespace; diff --git a/src/PerLine.cxx b/src/PerLine.cxx index 017eb77b8..31da695ad 100644 --- a/src/PerLine.cxx +++ b/src/PerLine.cxx @@ -55,6 +55,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; @@ -116,6 +125,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]) diff --git a/src/PerLine.h b/src/PerLine.h index 94dc17a20..3da02b5e5 100644 --- a/src/PerLine.h +++ b/src/PerLine.h @@ -41,6 +41,7 @@ public:  	void RemoveHandle(int handle);  	bool RemoveNumber(int markerNum, bool all);  	void CombineWith(MarkerHandleSet *other); +	MarkerHandleNumber const *GetMarkerHandleNumber(int which) const noexcept;  };  class LineMarkers : public PerLine { @@ -67,6 +68,8 @@ public:  	bool DeleteMark(Sci::Line line, int markerNum, bool all);  	void DeleteMarkFromHandle(int markerHandle);  	Sci::Line LineFromHandle(int markerHandle); +	int HandleFromLine(Sci::Line line, int which) const; +	int NumberFromLine(Sci::Line line, int which) const;  };  class LineLevels : public PerLine { | 
