private void RemoveVariable(Declaration target) { Selection selection; var declarationText = target.Context.GetText(); var multipleDeclarations = target.HasMultipleDeclarationsInStatement(); var variableStmtContext = target.GetVariableStmtContext(); if (!multipleDeclarations) { declarationText = variableStmtContext.GetText(); selection = target.GetVariableStmtContextSelection(); } else { selection = new Selection(target.Context.Start.Line, target.Context.Start.Column, target.Context.Stop.Line, target.Context.Stop.Column); } var oldLines = _editor.GetLines(selection); var newLines = oldLines.Replace(" _" + Environment.NewLine, string.Empty) .Remove(selection.StartColumn, declarationText.Length); if (multipleDeclarations) { selection = target.GetVariableStmtContextSelection(); newLines = RemoveExtraComma(_editor.GetLines(selection).Replace(oldLines, newLines), target.CountOfDeclarationsInStatement(), target.IndexOfVariableDeclarationInStatement()); } var adjustedLines = newLines.Split(new[] {Environment.NewLine}, StringSplitOptions.None) .Select(s => s.EndsWith(" _") ? s.Remove(s.Length - 2) : s) .Where(s => s.Trim() != string.Empty) .ToList(); _editor.DeleteLines(selection); if (adjustedLines.Any()) { _editor.InsertLines(selection.StartLine, string.Join(string.Empty, adjustedLines)); } }
private void RemoveField(Declaration target) { Selection selection; var declarationText = target.Context.GetText(); var multipleDeclarations = target.HasMultipleDeclarationsInStatement(); var variableStmtContext = target.GetVariableStmtContext(); if (!multipleDeclarations) { declarationText = variableStmtContext.GetText(); selection = target.GetVariableStmtContextSelection(); } else { selection = new Selection(target.Context.Start.Line, target.Context.Start.Column, target.Context.Stop.Line, target.Context.Stop.Column); } var oldLines = _editor.GetLines(selection); var newLines = oldLines.Replace(" _" + Environment.NewLine, string.Empty) .Remove(selection.StartColumn, declarationText.Length); if (multipleDeclarations) { selection = target.GetVariableStmtContextSelection(); newLines = RemoveExtraComma(_editor.GetLines(selection).Replace(oldLines, newLines), target.CountOfDeclarationsInStatement(), target.IndexOfVariableDeclarationInStatement()); } newLines = newLines.Replace(" _" + Environment.NewLine, string.Empty); _editor.DeleteLines(selection); if (newLines.Trim() != string.Empty) { _editor.InsertLines(selection.StartLine, newLines); } }
private void RemoveVariable(Declaration target) { Selection selection; var declarationText = target.Context.GetText(); var multipleDeclarations = target.HasMultipleDeclarationsInStatement(); var variableStmtContext = target.GetVariableStmtContext(); if (!multipleDeclarations) { declarationText = variableStmtContext.GetText(); selection = target.GetVariableStmtContextSelection(); } else { selection = new Selection(target.Context.Start.Line, target.Context.Start.Column, target.Context.Stop.Line, target.Context.Stop.Column); } var oldLines = _editor.GetLines(selection); var newLines = oldLines.Replace(" _" + Environment.NewLine, string.Empty) .Remove(selection.StartColumn, declarationText.Length); if (multipleDeclarations) { selection = target.GetVariableStmtContextSelection(); newLines = RemoveExtraComma(_editor.GetLines(selection).Replace(oldLines, newLines), target.CountOfDeclarationsInStatement(), target.IndexOfVariableDeclarationInStatement()); } var newLinesWithoutExcessSpaces = newLines.Split(new[] { Environment.NewLine }, StringSplitOptions.None); for (var i = 0; i < newLinesWithoutExcessSpaces.Length; i++) { newLinesWithoutExcessSpaces[i] = newLinesWithoutExcessSpaces[i].RemoveExtraSpacesLeavingIndentation(); } for (var i = newLinesWithoutExcessSpaces.Length - 1; i >= 0; i--) { if (newLinesWithoutExcessSpaces[i].Trim() == string.Empty) { continue; } if (newLinesWithoutExcessSpaces[i].EndsWith(" _")) { newLinesWithoutExcessSpaces[i] = newLinesWithoutExcessSpaces[i].Remove(newLinesWithoutExcessSpaces[i].Length - 2); } break; } _editor.DeleteLines(selection); _editor.InsertLines(selection.StartLine, string.Join(Environment.NewLine, newLinesWithoutExcessSpaces)); }