aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/Scintilla.h1
-rw-r--r--include/Scintilla.iface3
-rw-r--r--src/Document.cxx9
-rw-r--r--src/Document.h1
-rw-r--r--src/Editor.cxx4
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);