Browse Source

Re-enabled PasteAsComment + PasteAsString

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
0ffbacf0d4
  1. 55
      src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs

55
src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs

@ -2,10 +2,15 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.IO; using System.IO;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.CSharp;
namespace ICSharpCode.SharpDevelop.Editor.Commands namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
@ -47,9 +52,6 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
protected override void Run(ITextEditor editor, string clipboardText) protected override void Run(ITextEditor editor, string clipboardText)
{ {
#warning Reimplement PasteAsCommentCommand
throw new NotImplementedException();
/*
string indentation = GetIndentation(editor.Document, editor.Caret.Line); string indentation = GetIndentation(editor.Document, editor.Caret.Line);
IAmbience ambience = AmbienceService.GetCurrentAmbience(); IAmbience ambience = AmbienceService.GetCurrentAmbience();
int maxLineLength = editor.Options.VerticalRulerColumn - VisualIndentationLength(editor, indentation); int maxLineLength = editor.Options.VerticalRulerColumn - VisualIndentationLength(editor, indentation);
@ -63,10 +65,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
} }
IDocument document = editor.Document; IDocument document = editor.Document;
int insertionPos = document.GetLineByNumber(editor.Caret.Line).Offset + indentation.Length; int insertionPos = document.GetLineByNumber(editor.Caret.Line).Offset + indentation.Length;
document.Insert(insertionPos, insertedText.ToString());*/ document.Insert(insertionPos, insertedText.ToString());
} }
/*
void AppendTextLine(string indentation, IAmbience ambience, int maxLineLength, StringWriter insertedText, string line) void AppendTextLine(string indentation, IAmbience ambience, int maxLineLength, StringWriter insertedText, string line)
{ {
const int minimumLineLength = 10; const int minimumLineLength = 10;
@ -106,7 +107,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
length += 1; length += 1;
} }
return length; return length;
}*/ }
} }
/// <summary> /// <summary>
@ -121,32 +122,44 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
protected override void Run(ITextEditor editor, string clipboardText) protected override void Run(ITextEditor editor, string clipboardText)
{ {
#warning Reimplement PasteAsStringCommand // TODO: reimplement as C#-specific refactoring with NR5;
throw new NotImplementedException(); // because CodeDom introduces redundant parentheses
/* CodeDomProvider codeDomProvider = null;
CodeGenerator codeGenerator = ParserService.CurrentProjectContent.Language.CodeGenerator; IProject project = ProjectService.CurrentProject;
if (codeGenerator == null) if (project != null)
codeGenerator = LanguageProperties.CSharp.CodeGenerator; codeDomProvider = project.CreateCodeDomProvider();
Expression expression = null; if (codeDomProvider == null)
codeDomProvider = new CSharpCodeProvider();
CodeExpression expression = null;
using (StringReader reader = new StringReader(clipboardText)) { using (StringReader reader = new StringReader(clipboardText)) {
string line; string line;
while ((line = reader.ReadLine()) != null) { while ((line = reader.ReadLine()) != null) {
Expression newExpr = new PrimitiveExpression(line); CodeExpression newExpr = new CodePrimitiveExpression(line);
if (expression == null) { if (expression == null) {
expression = newExpr; expression = newExpr;
} else { } else {
expression = expression expression = new CodeBinaryOperatorExpression(
.Operator(BinaryOperatorType.Concat, expression,
ExpressionBuilder.Identifier("Environment").Member("NewLine")) CodeBinaryOperatorType.Add,
.Operator(BinaryOperatorType.Concat, new CodePropertyReferenceExpression(
newExpr); new CodeTypeReferenceExpression("Environment"),
"NewLine"
));
expression = new CodeBinaryOperatorExpression(
expression, CodeBinaryOperatorType.Add, newExpr);
} }
} }
} }
if (expression == null) if (expression == null)
return; return;
string indentation = GetIndentation(editor.Document, editor.Caret.Line); string indentation = GetIndentation(editor.Document, editor.Caret.Line);
editor.Document.Insert(editor.Caret.Offset, codeGenerator.GenerateCode(expression, indentation).Trim());*/ CodeGeneratorOptions options = new CodeGeneratorOptions();
options.IndentString = editor.Options.IndentationString;
StringWriter writer = new StringWriter();
codeDomProvider.GenerateCodeFromExpression(expression, writer, options);
editor.Document.Insert(editor.Caret.Offset, writer.ToString().Trim());
} }
} }
} }

Loading…
Cancel
Save