| Newsgroups |
gmane.comp.gnome.mono.patches |
| Message-ID |
<0000014196f3744c-01f0f2b6-9c66-4d11-89c0-4738db83e07b-000000@email.amazonses.com> |
Branch: refs/heads/master
Home: https://github.com/mono/monodevelop
Compare: https://github.com/mono/monodevelop/compare/64c238e72e7e...770903378793
Commit: 770903378793d81a4e6f80ddcbf634ab105aa54b
Author: Mike Krüger <[email protected]> (mkrueger)
Date: 2013-10-08 07:22:35 GMT
URL: https://github.com/mono/monodevelop/commit/770903378793d81a4e6f80ddcbf634ab105aa54b
[CSharpBinding] Polished up protocol completion data.
Changed paths:
M main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs
M main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/MonoCSharpCompletionEngine.cs
M main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs
M main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringContext.cs
Modified: main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs
===================================================================
@@ -202,7 +202,7 @@ internal static string GenerateMemberCode (MDRefactoringContext ctx, TypeSystemA
GenerateExportAttribute (ctx, member)
}
});
- return method.ToString ();
+ return method.ToString (ctx.FormattingOptions);
}
var property = builder.ConvertEntity (member) as PropertyDeclaration;
if (property == null)
@@ -237,7 +237,7 @@ internal static string GenerateMemberCode (MDRefactoringContext ctx, TypeSystemA
}
});
}
- return property.ToString ();
+ return property.ToString (ctx.FormattingOptions);
}
}
Modified: main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/MonoCSharpCompletionEngine.cs
===================================================================
@@ -29,16 +29,33 @@
using MonoDevelop.CodeGeneration;
using ICSharpCode.NRefactory.TypeSystem;
using System.Linq;
+using MonoDevelop.CSharp.Refactoring.CodeActions;
+using ICSharpCode.NRefactory.Editor;
namespace MonoDevelop.CSharp.Completion
{
class MonoCSharpCompletionEngine : CSharpCompletionEngine
{
- CSharpCompletionTextEditorExtension ext;
+ readonly CSharpCompletionTextEditorExtension ext;
+ readonly MDRefactoringContext mdRefactoringCtx;
+
+ public CSharpCompletionTextEditorExtension Ext {
+ get {
+ return ext;
+ }
+ }
+
+ public MDRefactoringContext MDRefactoringCtx {
+ get {
+ return mdRefactoringCtx;
+ }
+ }
public MonoCSharpCompletionEngine (CSharpCompletionTextEditorExtension ext, ICSharpCode.NRefactory.Editor.IDocument document, ICompletionContextProvider completionContextProvider, ICompletionDataFactory factory, ICSharpCode.NRefactory.TypeSystem.IProjectContent content, ICSharpCode.NRefactory.CSharp.TypeSystem.CSharpTypeResolveContext ctx) : base (document, completionContextProvider, factory, content, ctx)
{
this.ext = ext;
+ this.mdRefactoringCtx = MDRefactoringContext.Create (ext.Document, ext.Document.Editor.Caret.Location);
+
}
protected override void AddVirtuals (List<IMember> alreadyInserted, CompletionDataWrapper col, string modifiers, IType curType, int declarationBegin)
@@ -48,7 +65,7 @@ protected override void AddVirtuals (List<IMember> alreadyInserted, CompletionDa
if (alreadyInserted.Contains (member))
continue;
alreadyInserted.Add (member);
- var data = new ProtocolCompletionData (ext, declarationBegin, this.currentType, member);
+ var data = new ProtocolCompletionData (this, declarationBegin, member);
col.Add (data);
}
}
Modified: main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs
===================================================================
@@ -27,31 +27,27 @@
using ICSharpCode.NRefactory.TypeSystem;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.TypeSystem;
-using System.Linq;
using MonoDevelop.CodeGeneration;
-using MonoDevelop.CSharp.Refactoring.CodeActions;
namespace MonoDevelop.CSharp.Completion
{
- public class ProtocolCompletionData : CompletionData
+ class ProtocolCompletionData : CompletionData
{
- CSharpCompletionTextEditorExtension ext;
- IMember member;
- static Ambience ambience = new CSharpAmbience ();
- int declarationBegin;
- IUnresolvedTypeDefinition type;
+ readonly MonoCSharpCompletionEngine engine;
+ readonly IMember member;
+ readonly static Ambience ambience = new CSharpAmbience ();
+ readonly int declarationBegin;
public bool GenerateBody { get; set; }
public override TooltipInformation CreateTooltipInformation (bool smartWrap)
{
- return MemberCompletionData.CreateTooltipInformation (ext, null, member, smartWrap);
+ return MemberCompletionData.CreateTooltipInformation (engine.Ext, null, member, smartWrap);
}
- public ProtocolCompletionData (CSharpCompletionTextEditorExtension ext, int declarationBegin, IUnresolvedTypeDefinition type, IMember member) : base (null)
+ public ProtocolCompletionData (MonoCSharpCompletionEngine engine, int declarationBegin, IMember member) : base (null)
{
- this.ext = ext;
- this.type = type;
+ this.engine = engine;
this.member = member;
this.declarationBegin = declarationBegin;
@@ -63,38 +59,29 @@ public ProtocolCompletionData (CSharpCompletionTextEditorExtension ext, int decl
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier)
{
+ var ext = engine.Ext;
var editor = ext.TextEditorData;
var generator = CodeGenerator.CreateGenerator (ext.Document);
- bool isExplicit = false;
- if (member.DeclaringTypeDefinition.Kind == TypeKind.Interface) {
- foreach (var m in type.Members) {
- if (m.Name == member.Name && !m.ReturnType.Equals (member.ReturnType)) {
- isExplicit = true;
- break;
- }
- }
- }
- var resolvedType = type.Resolve (ext.Project).GetDefinition ();
if (ext.Project != null)
generator.PolicyParent = ext.Project.Policies;
- var ctx = MDRefactoringContext.Create (ext.Document, ext.Document.Editor.Caret.Location);
- if (ctx == null)
- return;
- var builder = ctx.CreateTypeSystemAstBuilder ();
+ var builder = engine.MDRefactoringCtx.CreateTypeSystemAstBuilder ();
- string sb = BaseExportCodeGenerator.GenerateMemberCode (ctx, builder, member);
+ string sb = BaseExportCodeGenerator.GenerateMemberCode (engine.MDRefactoringCtx, builder, member);
sb = sb.TrimEnd ();
- // var lastRegion = result.BodyRegions.LastOrDefault ();
- //targetCaretPosition = declarationBegin + sb.Length;
+ string indent = editor.GetIndentationString (editor.Caret.Location);
+ sb = sb.Replace (editor.EolMarker, editor.EolMarker + indent);
+
+ int targetCaretPosition = sb.LastIndexOf ("throw", StringComparison.Ordinal);
+ int selectionEndPosition = sb.LastIndexOf (";", StringComparison.Ordinal);
editor.Replace (declarationBegin, editor.Caret.Offset - declarationBegin, sb);
- /* if (selectionEndPosition > 0) {
+ if (selectionEndPosition > 0) {
+ targetCaretPosition += declarationBegin;
+ selectionEndPosition += declarationBegin;
editor.Caret.Offset = selectionEndPosition;
editor.SetSelection (targetCaretPosition, selectionEndPosition);
- } else {
- editor.Caret.Offset = targetCaretPosition;
- }*/
+ }
}
}
}
Modified: main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringContext.cs
===================================================================
@@ -173,6 +173,12 @@ internal void SetLocation (TextLocation loc)
readonly CSharpFormattingOptions formattingOptions;
+ public CSharpFormattingOptions FormattingOptions {
+ get {
+ return formattingOptions;
+ }
+ }
+
public Script StartScript ()
{
return new MDRefactoringScript (this, formattingOptions);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches