Browse Source

fix #526: InsertWithCursor broken in Create Enum refactoring - Enum member is added properly

pull/505/merge
Siegfried Pammer 11 years ago
parent
commit
96fdb81cfb
  1. 22
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs

22
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs

@ -173,19 +173,31 @@ namespace CSharpBinding.Refactoring
args.InsertionPoint.LineBefore == NewLineInsertion.None && nodes.Count > 1) { args.InsertionPoint.LineBefore == NewLineInsertion.None && nodes.Count > 1) {
args.InsertionPoint.LineAfter = NewLineInsertion.BlankLine; args.InsertionPoint.LineAfter = NewLineInsertion.BlankLine;
} }
var insertionPoint = args.InsertionPoint;
if (nodes.All(n => n is EnumMemberDeclaration)) {
insertionPoint.LineAfter = NewLineInsertion.Eol;
insertionPoint.LineBefore = NewLineInsertion.None;
}
int offset = currentScript.GetCurrentOffset(args.InsertionPoint.Location); int offset = currentScript.GetCurrentOffset(insertionPoint.Location);
int indentLevel = currentScript.GetIndentLevelAt(Math.Max(0, offset - 1)); int indentLevel = currentScript.GetIndentLevelAt(Math.Max(0, offset - 1));
foreach (var node in nodes.Reverse()) { foreach (var node in nodes.Reverse()) {
var output = currentScript.OutputNode(indentLevel, node); var output = currentScript.OutputNode(indentLevel, node);
var text = output.Text; var text = output.Text;
var insertionPoint = args.InsertionPoint;
if (node is EnumMemberDeclaration) { if (node is EnumMemberDeclaration) {
insertionPoint.LineAfter = NewLineInsertion.Eol; if (insertionPoint != layer.InsertionPoints.Last()) {
insertionPoint.LineBefore = NewLineInsertion.None;
if (args.InsertionPoint != layer.InsertionPoints.Last()) {
text += ","; text += ",";
} else {
var parentEnum = currentScript.context.RootNode.GetNodeAt(insertionPoint.Location, n => (n is TypeDeclaration) && ((TypeDeclaration)n).ClassType == ClassType.Enum) as TypeDeclaration;
if (parentEnum != null) {
var lastMember = parentEnum.Members.LastOrDefault();
if (lastMember != null) {
var segment = currentScript.GetSegment(lastMember);
currentScript.InsertText(segment.EndOffset, ",");
}
}
} }
} }
int delta = insertionPoint.Insert(target, text); int delta = insertionPoint.Insert(target, text);

Loading…
Cancel
Save