Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs')
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs40
1 files changed, 22 insertions, 18 deletions
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs
index 12fcc3a87d..13234fff9e 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/AbstractGenerateAction.cs
@@ -31,18 +31,22 @@ using Gtk;
using System.Collections.Generic;
using MonoDevelop.Refactoring;
using MonoDevelop.Ide;
-using ICSharpCode.NRefactory.TypeSystem;
using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Components;
+using Microsoft.CodeAnalysis;
+using MonoDevelop.Ide.Editor;
+using MonoDevelop.Core.Text;
+using MonoDevelop.CSharp.Completion;
+using MonoDevelop.CSharp.Formatting;
namespace MonoDevelop.CodeGeneration
{
- public abstract class AbstractGenerateAction : IGenerateAction
+ abstract class AbstractGenerateAction : IGenerateAction
{
readonly TreeStore store = new TreeStore (typeof(bool), typeof(Xwt.Drawing.Image), typeof(string), typeof(object));
readonly CodeGenerationOptions options;
- public CodeGenerationOptions Options {
+ internal CodeGenerationOptions Options {
get {
return options;
}
@@ -76,23 +80,18 @@ namespace MonoDevelop.CodeGeneration
column.Expand = true;
treeView.AppendColumn (column);
- Ambience ambience = AmbienceService.GetAmbienceForFile (options.Document.FileName);
foreach (object obj in GetValidMembers ()) {
- var member = obj as IEntity;
+ var member = obj as ISymbol;
if (member != null) {
- Store.AppendValues (false, ImageService.GetIcon (member.GetStockIcon (), IconSize.Menu), ambience.GetString (member, OutputFlags.ClassBrowserEntries), member);
+ Store.AppendValues (false, ImageService.GetIcon (member.GetStockIcon (), IconSize.Menu), member.ToDisplayString (Ambience.LabelFormat), member);
continue;
}
- var tuple = obj as Tuple<IMember, bool>;
+ var tuple = obj as Tuple<ISymbol, bool>;
if (tuple != null) {
- Store.AppendValues (false, ImageService.GetIcon (tuple.Item1.GetStockIcon (), IconSize.Menu), ambience.GetString (tuple.Item1, OutputFlags.ClassBrowserEntries), tuple);
+ Store.AppendValues (false, ImageService.GetIcon (tuple.Item1.GetStockIcon (), IconSize.Menu), tuple.Item1.ToDisplayString (Ambience.LabelFormat), tuple);
continue;
}
-
- var variable = obj as IVariable;
- if (variable != null)
- Store.AppendValues (false, ImageService.GetIcon (variable.GetStockIcon (), IconSize.Menu), variable.Name, variable);
}
treeView.Model = store;
@@ -118,10 +117,9 @@ namespace MonoDevelop.CodeGeneration
static string AddIndent (string text, string indent)
{
- var doc = new Mono.TextEditor.TextDocument ();
- doc.Text = text;
+ var doc = TextEditorFactory.CreateNewReadonlyDocument (new StringTextSource (text), "");
var result = new StringBuilder ();
- foreach (var line in doc.Lines) {
+ foreach (var line in doc.GetLines ()) {
result.Append (indent);
result.Append (doc.GetTextAt (line.SegmentIncludingDelimiter));
}
@@ -141,7 +139,7 @@ namespace MonoDevelop.CodeGeneration
} while (store.IterNext (ref iter));
var output = new StringBuilder ();
- string indent = RefactoringOptions.GetIndent (options.Document, (IEntity)options.EnclosingMember ?? options.EnclosingType) + "\t";
+ string indent = options.Editor.GetVirtualIndentationString (options.Editor.CaretLine);
foreach (string nodeText in GenerateCode (includedMembers)) {
if (output.Length > 0) {
output.AppendLine ();
@@ -151,8 +149,14 @@ namespace MonoDevelop.CodeGeneration
}
if (output.Length > 0) {
- var data = options.Document.Editor;
- data.InsertAtCaret (output.ToString ().TrimStart ());
+ var data = options.Editor;
+ data.EnsureCaretIsNotVirtual ();
+ int offset = data.CaretOffset;
+ var text = output.ToString ().TrimStart ();
+ using (var undo = data.OpenUndoGroup ()) {
+ data.InsertAtCaret (text);
+ OnTheFlyFormatter.Format (data, options.DocumentContext, offset, offset + text.Length);
+ }
}
}
}