|
Scintilla Usage Notes |
The key idea is to use the SCN_CHARADDED notification to add indentation after a newline.
The lParam on the notification is a pointer to a SCNotification structure whose ch member specifies the character added. If a newline was added, the previous line can be retrieved and the same indentation can be added to the new line.
Here is the relevant portion of code from SciTE: (SciTE.cxx SciTEWindow::CharAdded)
if (ch == '\r' || ch == '\n') {
|
Scintilla Usage Notes |
The key idea is to use the SCN_CHARADDED notification to add indentation after a newline.
The lParam on the notification is a pointer to a SCNotification structure whose ch member specifies the character added. If a newline was added, the previous line can be retrieved and the same indentation can be added to the new line.
Here is the relevant portion of code from SciTE: (SciTE.cxx SciTEWindow::CharAdded)
if (ch == '\r' || ch == '\n') {Of course, fancier handling could be implemented. For example, if the previous line was the start of a control construct, the next line could be automatically indented one tab further. (Assuming that is your indenting style.)
Syntax styling is handled by the SCN_STYLENEEDED notification. Scintilla keeps track of the end of the styled text - this is retrieved with SCI_GETENDSTYLED. In response to the SCN_STYLENEEDED notification, you should apply styles to the text from ENDSTYLED to the position specified by the notification.
Here is the relevant portion of code from SciTE: (SciTE.cxx)
void SciTEWindow::Notify(SCNotification *notification) {