mirror of https://github.com/buggins/dlangide.git
fix #246 - autoindent issues
This commit is contained in:
parent
5183d59682
commit
77adfc73c1
2
dub.json
2
dub.json
|
@ -12,7 +12,7 @@
|
||||||
"stringImportPaths": ["views", "views/res", "views/res/i18n", "views/res/mdpi", "views/res/hdpi"],
|
"stringImportPaths": ["views", "views/res", "views/res/i18n", "views/res/mdpi", "views/res/hdpi"],
|
||||||
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dlangui": "==0.9.107",
|
"dlangui": "==0.9.108",
|
||||||
"dcd": "~>0.9.1"
|
"dcd": "~>0.9.1"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -653,11 +653,15 @@ class SimpleDSyntaxSupport : SyntaxSupport {
|
||||||
dstring lineText = _content.line(line);
|
dstring lineText = _content.line(line);
|
||||||
TextLineMeasure lineMeasurement = _content.measureLine(line);
|
TextLineMeasure lineMeasurement = _content.measureLine(line);
|
||||||
TextLineMeasure prevLineMeasurement = _content.measureLine(prevLine);
|
TextLineMeasure prevLineMeasurement = _content.measureLine(prevLine);
|
||||||
|
bool prevLineSpaceOnly = false;
|
||||||
|
if (prevLineMeasurement.empty && prevLineMeasurement.len) {
|
||||||
|
prevLineSpaceOnly = true;
|
||||||
|
}
|
||||||
while (prevLineMeasurement.empty && prevLine > 0) {
|
while (prevLineMeasurement.empty && prevLine > 0) {
|
||||||
prevLine--;
|
prevLine--;
|
||||||
prevLineMeasurement = _content.measureLine(prevLine);
|
prevLineMeasurement = _content.measureLine(prevLine);
|
||||||
}
|
}
|
||||||
if (lineMeasurement.firstNonSpaceX >= 0 && lineMeasurement.firstNonSpaceX < prevLineMeasurement.firstNonSpaceX) {
|
if (lineMeasurement.firstNonSpaceX >= 0 && lineMeasurement.firstNonSpaceX <= prevLineMeasurement.firstNonSpaceX) {
|
||||||
dstring prevLineText = _content.line(prevLine);
|
dstring prevLineText = _content.line(prevLine);
|
||||||
TokenPropString prevLineTokenProps = _content.lineTokenProps(prevLine);
|
TokenPropString prevLineTokenProps = _content.lineTokenProps(prevLine);
|
||||||
dchar lastOpChar = 0;
|
dchar lastOpChar = 0;
|
||||||
|
@ -674,7 +678,16 @@ class SimpleDSyntaxSupport : SyntaxSupport {
|
||||||
if (lastOpChar == '{')
|
if (lastOpChar == '{')
|
||||||
spacex = _content.nextTab(spacex);
|
spacex = _content.nextTab(spacex);
|
||||||
dstring txt = _content.fillSpace(spacex);
|
dstring txt = _content.fillSpace(spacex);
|
||||||
EditOperation op2 = new EditOperation(EditAction.Replace, TextRange(TextPosition(line, 0), TextPosition(line, lineMeasurement.firstNonSpace >= 0 ? lineMeasurement.firstNonSpace : 0)), [txt]);
|
dstring[] newContent;
|
||||||
|
auto startPos = TextPosition(line, 0);
|
||||||
|
auto endPos = TextPosition(line, lineMeasurement.firstNonSpace >= 0 ? lineMeasurement.firstNonSpace : 0);
|
||||||
|
if (prevLineSpaceOnly) {
|
||||||
|
// clear spaces from previous line
|
||||||
|
startPos.line--;
|
||||||
|
newContent ~= ""d;
|
||||||
|
}
|
||||||
|
newContent ~= txt;
|
||||||
|
EditOperation op2 = new EditOperation(EditAction.Replace, TextRange(startPos, endPos), newContent);
|
||||||
_opInProgress = true;
|
_opInProgress = true;
|
||||||
_content.performOperation(op2, source);
|
_content.performOperation(op2, source);
|
||||||
_opInProgress = false;
|
_opInProgress = false;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
v0.7.61
|
v0.7.62
|
Loading…
Reference in New Issue