async Task <string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return, bool isDelegateExpected = false)
        {
            var s = await Setup(input);

            var             ext     = s.Item1;
            TestViewContent content = s.Item2;

            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
            var model = await ext.DocumentContext.AnalysisDocument.GetSemanticModelAsync();

            DefaultSourceEditorOptions.Instance.AutoInsertMatchingBracket = true;

            var t = model.Compilation.GetTypeByMetadataName(type);

            var method = member != null?model.LookupSymbols(s.Item1.Editor.CaretOffset).OfType <IMethodSymbol> ().First(m => m.Name == member) : t.GetMembers().OfType <IMethodSymbol> ().First(m => m.MethodKind == MethodKind.Constructor);

            var factory = new RoslynCodeCompletionFactory(ext, model);
            var data    = new RoslynSymbolCompletionData(null, factory, method);

            data.IsDelegateExpected = isDelegateExpected;
            KeyActions ka = KeyActions.Process;

            data.InsertCompletionText(listWindow, ref ka, KeyDescriptor.FromGtk(key, (char)key, Gdk.ModifierType.None));

            return(widget.CompletedWord);
        }
        async Task <string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return)
        {
            var s = await Setup(input);

            var             ext     = s.Item1;
            TestViewContent content = s.Item2;

            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
            var sm = ext.DocumentContext.ParsedDocument.GetAst <SemanticModel> ();

            var t           = sm.Compilation.GetTypeByMetadataName(type);
            var foundMember = t.GetMembers().First(m => m.Name == member);
            var factory     = new RoslynCodeCompletionFactory(ext, sm);
            var data        = new RoslynSymbolCompletionData(null, factory, foundMember);

            data.DisplayFlags |= DisplayFlags.NamedArgument;
            KeyActions ka = KeyActions.Process;

            data.InsertCompletionText(listWindow, ref ka, KeyDescriptor.FromGtk(key, (char)key, Gdk.ModifierType.None));

            return(widget.CompletedWord);
        }
        async Task <string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return, bool isDelegateExpected = false)
        {
            var s = await Setup(input);

            var             ext     = s.Item1;
            TestViewContent content = s.Item2;

            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
            var model = ext.DocumentContext.ParsedDocument.GetAst <SemanticModel> ();

            Ide.IdeApp.Preferences.AddParenthesesAfterCompletion.Set(true);
            Ide.IdeApp.Preferences.AddOpeningOnly.Set(false);

            var t      = model.Compilation.GetTypeByMetadataName(type);
            var method = member != null?t.GetMembers().First(m => m.Name == member) : t.GetMembers().OfType <IMethodSymbol> ().First(m => m.MethodKind == MethodKind.Constructor);

            var factory = new RoslynCodeCompletionFactory(ext, model);
            var data    = new RoslynSymbolCompletionData(null, factory, method);

            data.IsDelegateExpected = isDelegateExpected;
            KeyActions ka = KeyActions.Process;

            data.InsertCompletionText(listWindow, ref ka, KeyDescriptor.FromGtk(key, (char)key, Gdk.ModifierType.None));

            return(widget.CompletedWord);
        }
示例#4
0
        public async Task TestBug60365()
        {
            var text   = "@c$";
            int endPos = text.IndexOf('$');

            if (endPos >= 0)
            {
                text = text.Substring(0, endPos) + text.Substring(endPos + 1);
            }

            using (var testCase = await SetupTestCase(text, Math.Max(0, endPos))) {
                var doc = testCase.Document;
                var ext = doc.GetContent <CSharpCompletionTextEditorExtension> ();

                var listWindow = new CompletionListWindow();
                var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);
                listWindow.CompletionWidget      = widget;
                listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;


                Assert.AreEqual("@class", ext.Editor.Text);

                var list = await ext.HandleCodeCompletionAsync(widget.CurrentCodeCompletionContext, new CompletionTriggerInfo (CompletionTriggerReason.CharTyped, 'c'));

                var ka = KeyActions.Complete;
                list.First(d => d.CompletionText == "class").InsertCompletionText(listWindow, ref ka, KeyDescriptor.Tab);

                await doc.DocumentContext.UpdateParseDocument();
            }
        }
        public async Task TestBug60365()
        {
            var             tww     = new TestWorkbenchWindow();
            TestViewContent content = new TestViewContent();

            tww.ViewContent       = content;
            content.ContentName   = "/a.cs";
            content.Data.MimeType = "text/x-csharp";

            var doc = new MonoDevelop.Ide.Gui.Document(tww);

            var text   = "@c$";
            int endPos = text.IndexOf('$');

            if (endPos >= 0)
            {
                text = text.Substring(0, endPos) + text.Substring(endPos + 1);
            }

            content.Text           = text;
            content.CursorPosition = System.Math.Max(0, endPos);

            var project = MonoDevelop.Projects.Services.ProjectService.CreateProject("C#");

            project.Name     = "test";
            project.FileName = "test.csproj";
            project.Files.Add(new ProjectFile(content.ContentName, BuildAction.Compile));

            var solution = new MonoDevelop.Projects.Solution();

            solution.AddConfiguration("", true);
            solution.DefaultSolutionFolder.AddItem(project);
            using (var monitor = new ProgressMonitor())
                await TypeSystemService.Load(solution, monitor);
            content.Project = project;
            doc.SetProject(project);

            var ext = new CSharpCompletionTextEditorExtension();

            ext.Initialize(doc.Editor, doc);
            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;

            var list = await ext.HandleCodeCompletionAsync(widget.CurrentCodeCompletionContext, new CompletionTriggerInfo (CompletionTriggerReason.CharTyped, 'c'));

            var ka = KeyActions.Complete;

            list.First(d => d.CompletionText == "class").InsertCompletionText(listWindow, ref ka, KeyDescriptor.Tab);

            Assert.AreEqual("@class", content.Text);

            content.Contents.Add(ext);

            await doc.UpdateParseDocument();

            TypeSystemService.Unload(solution);
        }
 static void ContinueSimulation(CompletionListWindow listWindow, ICompletionDataList list, ref TestCompletionWidget testCompletionWidget, string simulatedInput)
 {
     listWindow.ResetState();
     listWindow.CodeCompletionContext = new CodeCompletionContext();
     listWindow.CompletionDataList    = list;
     listWindow.CompletionWidget      = testCompletionWidget = new TestCompletionWidget();
     listWindow.FilterWords();
     listWindow.ResetSizes();
     listWindow.UpdateWordSelection();
     SimulateInput(listWindow, simulatedInput);
     listWindow.CompleteWord();
 }
        static async Task <TestCompletionWidget> ContinueSimulation(CompletionListWindow listWindow, ICompletionDataList list, string simulatedInput)
        {
            TestCompletionWidget testCompletionWidget;

            listWindow.ResetState();
            listWindow.CodeCompletionContext = new CodeCompletionContext();
            listWindow.CompletionDataList    = list;
            listWindow.CompletionWidget      = testCompletionWidget = new TestCompletionWidget();
            listWindow.List.FilterWords();
            listWindow.ResetSizes();
            listWindow.UpdateWordSelection();
            await SimulateInput(listWindow, simulatedInput);

            await listWindow.CompleteWord();

            return(testCompletionWidget);
        }
        string Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return)
        {
            TestViewContent content;
            var             ext = Setup(input, out content);

            ListWindow.ClearHistory();
            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Document);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
            var t           = ext.Document.Compilation.FindType(new FullTypeName(type));
            var foundMember = t.GetMembers(m => m.Name == member).First();
            var data        = new MemberCompletionData(ext, foundMember, OutputFlags.ClassBrowserEntries);

            data.DisplayFlags |= ICSharpCode.NRefactory.Completion.DisplayFlags.NamedArgument;
            KeyActions ka = KeyActions.Process;

            data.InsertCompletionText(listWindow, ref ka, key, (char)key, Gdk.ModifierType.None, true, false);
            return(widget.CompletedWord);
        }
示例#9
0
        async Task <string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return)
        {
            string result = null;

            await Setup(input, async testCase => {
                var ext        = testCase.Content.GetContent <CSharpCompletionTextEditorExtension> ();
                var listWindow = new CompletionListWindow();
                var widget     = new TestCompletionWidget(ext.Editor, ext.DocumentContext);
                listWindow.CompletionWidget      = widget;
                listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
                var sm = await ext.DocumentContext.AnalysisDocument.GetSemanticModelAsync();

                var t              = sm.Compilation.GetTypeByMetadataName(type);
                var foundMember    = t.GetMembers().First(m => m.Name == member);
                var data           = new CompletionData(foundMember.Name);
                data.DisplayFlags |= DisplayFlags.NamedArgument;
                KeyActions ka      = KeyActions.Process;
                data.InsertCompletionText(listWindow, ref ka, KeyDescriptor.FromGtk(key, (char)key, Gdk.ModifierType.None));
                result = widget.CompletedWord;
            });

            return(result);
        }
        string Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return, bool isDelegateExpected = false)
        {
            TestViewContent content;
            var             ext = Setup(input, out content);

            ListWindow.ClearHistory();
            var listWindow = new CompletionListWindow();
            var widget     = new TestCompletionWidget(ext.Document);

            listWindow.CompletionWidget      = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;

            var t      = ext.Document.Compilation.FindType(new FullTypeName(type));
            var method = member != null?t.GetMembers(m => m.Name == member).First() : t.GetConstructors().First();

            var data = new MemberCompletionData(ext, method, OutputFlags.ClassBrowserEntries);

            data.IsDelegateExpected = isDelegateExpected;
            KeyActions ka = KeyActions.Process;

            data.InsertCompletionText(listWindow, ref ka, key, (char)key, Gdk.ModifierType.None, true, false);
            return(widget.CompletedWord);
        }
		async Task<string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return, bool isDelegateExpected = false)
		{
			var s = await Setup (input);
			var ext = s.Item1;
			TestViewContent content = s.Item2;

			var listWindow = new CompletionListWindow ();
			var widget = new TestCompletionWidget (ext.Editor, ext.DocumentContext);
			listWindow.CompletionWidget = widget;
			listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
			var model = ext.DocumentContext.ParsedDocument.GetAst<SemanticModel> ();
			Ide.IdeApp.Preferences.AddParenthesesAfterCompletion.Set (true);
			Ide.IdeApp.Preferences.AddOpeningOnly.Set (false);

			var t = model.Compilation.GetTypeByMetadataName (type); 
			var method = member != null ? t.GetMembers().First (m => m.Name == member) : t.GetMembers ().OfType<IMethodSymbol> ().First (m => m.MethodKind == MethodKind.Constructor);
			var factory = new RoslynCodeCompletionFactory (ext, model);
			var data = new RoslynSymbolCompletionData (null, factory, method);
			data.IsDelegateExpected = isDelegateExpected;
			KeyActions ka = KeyActions.Process;
			data.InsertCompletionText (listWindow, ref ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None)); 

			return widget.CompletedWord;
		}
		static void ContinueSimulation (CompletionListWindow listWindow, ICompletionDataList list, ref TestCompletionWidget testCompletionWidget, string simulatedInput)
		{
			listWindow.ResetState ();
			listWindow.CodeCompletionContext = new CodeCompletionContext ();
			listWindow.CompletionDataList = list;
			listWindow.CompletionWidget = testCompletionWidget = new TestCompletionWidget ();
			listWindow.List.FilterWords ();
			listWindow.ResetSizes ();
			listWindow.UpdateWordSelection ();
			SimulateInput (listWindow, simulatedInput);
			listWindow.CompleteWord ();
		}
		async Task<string> Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return)
		{
			var s = await Setup (input);
			var ext = s.Item1;
			TestViewContent content = s.Item2;

			var listWindow = new CompletionListWindow ();
			var widget = new TestCompletionWidget (ext.Editor, ext.DocumentContext);
			listWindow.CompletionWidget = widget;
			listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
			var sm = ext.DocumentContext.ParsedDocument.GetAst<SemanticModel> ();

			var t = sm.Compilation.GetTypeByMetadataName (type); 
			var foundMember = t.GetMembers().First (m => m.Name == member);
			var factory = new RoslynCodeCompletionFactory (ext, sm);
			var data = new RoslynSymbolCompletionData (null, factory, foundMember);
			data.DisplayFlags |= DisplayFlags.NamedArgument;
			KeyActions ka = KeyActions.Process;
			data.InsertCompletionText (listWindow, ref ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None)); 

			return widget.CompletedWord;
		}
        string Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return)
        {
            TestViewContent content;
            var ext = Setup (input, out content);

            ListWindow.ClearHistory ();
            var listWindow = new CompletionListWindow ();
            var widget = new TestCompletionWidget (ext.Document);
            listWindow.CompletionWidget = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;
            var t = ext.Document.Compilation.FindType (new FullTypeName (type));
            var foundMember = t.GetMembers (m => m.Name == member).First ();
            var data = new MemberCompletionData (ext, foundMember, OutputFlags.ClassBrowserEntries);
            data.DisplayFlags |= ICSharpCode.NRefactory.Completion.DisplayFlags.NamedArgument;
            KeyActions ka = KeyActions.Process;
            data.InsertCompletionText (listWindow, ref ka, key, (char)key, Gdk.ModifierType.None, true, false);
            return widget.CompletedWord;
        }
        string Test(string input, string type, string member, Gdk.Key key = Gdk.Key.Return, bool isDelegateExpected = false)
        {
            TestViewContent content;
            var ext = Setup (input, out content);

            ListWindow.ClearHistory ();
            var listWindow = new CompletionListWindow ();
            var widget = new TestCompletionWidget (ext.Document);
            listWindow.CompletionWidget = widget;
            listWindow.CodeCompletionContext = widget.CurrentCodeCompletionContext;

            var t = ext.Document.Compilation.FindType (new FullTypeName (type));
            var method = member != null ? t.GetMembers (m => m.Name == member).First () : t.GetConstructors ().First ();
            var data = new MemberCompletionData (ext, method, OutputFlags.ClassBrowserEntries);
            data.IsDelegateExpected = isDelegateExpected;
            KeyActions ka = KeyActions.Process;
            data.InsertCompletionText (listWindow, ref ka, key, (char)key, Gdk.ModifierType.None, true, false);
            return widget.CompletedWord;
        }