diff options
-rw-r--r-- | include/Scintilla.h | 1 | ||||
-rw-r--r-- | include/Scintilla.iface | 3 | ||||
-rw-r--r-- | src/Document.cxx | 9 | ||||
-rw-r--r-- | src/Document.h | 1 | ||||
-rw-r--r-- | src/Editor.cxx | 4 |
5 files changed, 18 insertions, 0 deletions
diff --git a/include/Scintilla.h b/include/Scintilla.h index 4f646cc98..e9dbd653c 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -137,6 +137,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCI_MARKERNEXT 2047 #define SCI_MARKERPREVIOUS 2048 #define SCI_MARKERDEFINEPIXMAP 2049 +#define SCI_MARKERADDSET 2466 #define SC_MARGIN_SYMBOL 0 #define SC_MARGIN_NUMBER 1 #define SCI_SETMARGINTYPEN 2240 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index b02a4a7c4..0678d23ec 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -313,6 +313,9 @@ fun int MarkerPrevious=2048(int lineStart, int markerMask) # Define a marker from a pixmap. fun void MarkerDefinePixmap=2049(int markerNumber, string pixmap) +# Add a set of markers to a line. +fun void MarkerAddSet=2466(int line, int set) + enu MarginType=SC_MARGIN_ val SC_MARGIN_SYMBOL=0 val SC_MARGIN_NUMBER=1 diff --git a/src/Document.cxx b/src/Document.cxx index 27260d6d4..8b506fbfd 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -108,6 +108,15 @@ int Document::AddMark(int line, int markerNum) { return prev; } +void Document::AddMarkSet(int line, int valueSet) { + unsigned int m = valueSet; + for (int i = 0; m; i++, m >>= 1) + if (m & 1) + cb.AddMark(line, i); + DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line); + NotifyModified(mh); +} + void Document::DeleteMark(int line, int markerNum) { cb.DeleteMark(line, markerNum); DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line); diff --git a/src/Document.h b/src/Document.h index cf5187ae2..5a85abe5d 100644 --- a/src/Document.h +++ b/src/Document.h @@ -176,6 +176,7 @@ public: char StyleAt(int position) { return cb.StyleAt(position); } int GetMark(int line) { return cb.GetMark(line); } int AddMark(int line, int markerNum); + void AddMarkSet(int line, int valueSet); void DeleteMark(int line, int markerNum); void DeleteMarkFromHandle(int markerHandle); void DeleteAllMarks(int markerNum); diff --git a/src/Editor.cxx b/src/Editor.cxx index 8ebdbd9ae..07c52bc01 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6530,6 +6530,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { int markerID = pdoc->AddMark(wParam, lParam); return markerID; } + case SCI_MARKERADDSET: + if (lParam != 0) + pdoc->AddMarkSet(wParam, lParam); + break; case SCI_MARKERDELETE: pdoc->DeleteMark(wParam, lParam); |