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