mirror of https://github.com/odrling/Aegisub
Fixes and improvements to syntax highlighter
Originally committed to SVN as r678.
This commit is contained in:
parent
4c792dc6ba
commit
aafeba93f3
|
@ -144,8 +144,9 @@ void OptionsManager::LoadDefaults() {
|
||||||
SetColour(_T("Syntax Highlight Brackets"),wxColour(20,50,255));
|
SetColour(_T("Syntax Highlight Brackets"),wxColour(20,50,255));
|
||||||
SetColour(_T("Syntax Highlight Slashes"),wxColour(255,0,200));
|
SetColour(_T("Syntax Highlight Slashes"),wxColour(255,0,200));
|
||||||
SetColour(_T("Syntax Highlight Tags"),wxColour(90,90,90));
|
SetColour(_T("Syntax Highlight Tags"),wxColour(90,90,90));
|
||||||
SetColour(_T("Syntax Highlight Numbers"),wxColour(0,90,0));
|
SetColour(_T("Syntax Highlight Parameters"),wxColour(40,90,40));
|
||||||
SetColour(_T("Syntax Highlight Error"),wxColour(200,0,0));
|
SetColour(_T("Syntax Highlight Error"),wxColour(200,0,0));
|
||||||
|
SetColour(_T("Syntax Highlight Error Background"),wxColour(255,200,200));
|
||||||
SetColour(_T("Syntax Highlight Line Break"),wxColour(160,160,160));
|
SetColour(_T("Syntax Highlight Line Break"),wxColour(160,160,160));
|
||||||
SetColour(_T("Edit Box Need Enter Background"),wxColour(192,192,255));
|
SetColour(_T("Edit Box Need Enter Background"),wxColour(192,192,255));
|
||||||
#if defined(__WINDOWS__)
|
#if defined(__WINDOWS__)
|
||||||
|
|
|
@ -98,11 +98,12 @@ SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxStri
|
||||||
StyleSetFont(4,font);
|
StyleSetFont(4,font);
|
||||||
StyleSetSize(4,size);
|
StyleSetSize(4,size);
|
||||||
StyleSetForeground(4,Options.AsColour(_T("Syntax Highlight Error")));
|
StyleSetForeground(4,Options.AsColour(_T("Syntax Highlight Error")));
|
||||||
|
StyleSetBackground(4,Options.AsColour(_T("Syntax Highlight Error Background")));
|
||||||
|
|
||||||
// Tag Number Parameters style
|
// Tag Parameters style
|
||||||
StyleSetFont(5,font);
|
StyleSetFont(5,font);
|
||||||
StyleSetSize(5,size);
|
StyleSetSize(5,size);
|
||||||
StyleSetForeground(5,Options.AsColour(_T("Syntax Highlight Numbers")));
|
StyleSetForeground(5,Options.AsColour(_T("Syntax Highlight Parameters")));
|
||||||
|
|
||||||
// Line breaks style
|
// Line breaks style
|
||||||
StyleSetFont(6,font);
|
StyleSetFont(6,font);
|
||||||
|
@ -152,6 +153,7 @@ void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
int depth = 0;
|
int depth = 0;
|
||||||
int curStyle = 0;
|
int curStyle = 0;
|
||||||
int curPos = 0;
|
int curPos = 0;
|
||||||
|
bool numMode = false;
|
||||||
wxChar curChar = 0;
|
wxChar curChar = 0;
|
||||||
wxChar prevChar = 0;
|
wxChar prevChar = 0;
|
||||||
wxChar nextChar = 0;
|
wxChar nextChar = 0;
|
||||||
|
@ -170,6 +172,7 @@ void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
curPos += ran;
|
curPos += ran;
|
||||||
ran = 0;
|
ran = 0;
|
||||||
curStyle = 4;
|
curStyle = 4;
|
||||||
|
numMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start override block
|
// Start override block
|
||||||
|
@ -180,6 +183,7 @@ void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
depth++;
|
depth++;
|
||||||
if (depth == 1) curStyle = 1;
|
if (depth == 1) curStyle = 1;
|
||||||
else curStyle = 4;
|
else curStyle = 4;
|
||||||
|
numMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// End override block
|
// End override block
|
||||||
|
@ -190,10 +194,14 @@ void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
depth--;
|
depth--;
|
||||||
if (depth == 0) curStyle = 1;
|
if (depth == 0) curStyle = 1;
|
||||||
else curStyle = 4;
|
else curStyle = 4;
|
||||||
|
numMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Outside
|
// Outside
|
||||||
else if (depth == 0) {
|
else if (depth == 0) {
|
||||||
|
// Reset number mode
|
||||||
|
numMode = false;
|
||||||
|
|
||||||
// Is \n, \N or \h?
|
// Is \n, \N or \h?
|
||||||
if (curChar == _T('\\') && (nextChar == 'n' || nextChar == 'N' || nextChar == 'h')) {
|
if (curChar == _T('\\') && (nextChar == 'n' || nextChar == 'N' || nextChar == 'h')) {
|
||||||
SetUnicodeStyling(curPos,ran,curStyle);
|
SetUnicodeStyling(curPos,ran,curStyle);
|
||||||
|
@ -221,25 +229,39 @@ void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
curPos += ran;
|
curPos += ran;
|
||||||
ran = 0;
|
ran = 0;
|
||||||
curStyle = 2;
|
curStyle = 2;
|
||||||
|
numMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Number
|
else {
|
||||||
else if ((curChar >= '0' && curChar <= '9') || curChar == '.' || curChar == '&' || curChar == '+' || curChar == '-' || (curChar == 'H' && prevChar == '&')) {
|
// Number
|
||||||
if (curStyle != 5) {
|
if (prevChar != _T('\\') && (numMode || (curChar >= '0' && curChar <= '9') || curChar == '.' || curChar == '&' || curChar == '+' || curChar == '-' || (curChar == 'H' && prevChar == '&'))) {
|
||||||
|
if (curStyle != 5) {
|
||||||
|
SetUnicodeStyling(curPos,ran,curStyle);
|
||||||
|
curPos += ran;
|
||||||
|
ran = 0;
|
||||||
|
curStyle = 5;
|
||||||
|
numMode = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tag name
|
||||||
|
else if (curStyle != 3) {
|
||||||
SetUnicodeStyling(curPos,ran,curStyle);
|
SetUnicodeStyling(curPos,ran,curStyle);
|
||||||
curPos += ran;
|
curPos += ran;
|
||||||
ran = 0;
|
ran = 0;
|
||||||
curStyle = 5;
|
curStyle = 3;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tag name
|
// Set parameter if it's \fn or \r
|
||||||
else if (curStyle != 3) {
|
int tagLen = 0;
|
||||||
SetUnicodeStyling(curPos,ran,curStyle);
|
if (text.Mid(curPos,2) == _T("fn")) tagLen = 2;
|
||||||
curPos += ran;
|
else if (text.Mid(curPos,1) == _T("r")) tagLen = 1;
|
||||||
ran = 0;
|
if (tagLen) {
|
||||||
curStyle = 3;
|
numMode = true;
|
||||||
|
ran = tagLen-1;
|
||||||
|
i+=ran;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue