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); }
bool ProcessKey( KeyDescriptor descriptor, out KeyActions keyAction) { keyAction = KeyActions.None; return(descriptor.KeyChar == '-'); }
public void AddKeyframe(KeyActions ka, Key k, long time) { var kf = new KeyframeK(ka, k, time, this); addKeyframe(kf); //return kf; }
public void PostProcessKeyEvent(KeyActions ka, Gdk.Key key, char keyChar, Gdk.ModifierType modifier) { if ((ka & KeyActions.Complete) != 0) { CompleteWord(ref ka, key, keyChar, modifier); } }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { MonoDevelop.Ide.Gui.Content.IEditableTextBuffer buf = window.CompletionWidget as MonoDevelop.Ide.Gui.Content.IEditableTextBuffer; if (buf != null) { using (var undo = buf.OpenUndoGroup()) { int deleteStartOffset = window.CodeCompletionContext.TriggerOffset; if (text.StartsWith(docTypeStart)) { int start = window.CodeCompletionContext.TriggerOffset - docTypeStart.Length; if (start >= 0) { string readback = buf.GetText(start, window.CodeCompletionContext.TriggerOffset); if (string.Compare(readback, docTypeStart, StringComparison.OrdinalIgnoreCase) == 0) { deleteStartOffset -= docTypeStart.Length; } } } buf.DeleteText(deleteStartOffset, buf.CursorPosition - deleteStartOffset); buf.InsertText(buf.CursorPosition, text); } } }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { // insert add/remove event handler code after +=/-= editor.Replace(initialOffset, editor.Caret.Offset - initialOffset, this.DisplayText + (AddSemicolon ? ";" : "")); // Search opening bracket of member int pos = callingMember != null?editor.Document.LocationToOffset(callingMember.BodyRegion.Start.Line, callingMember.BodyRegion.Start.Column) : initialOffset; while (pos < editor.Document.Length && editor.Document.GetCharAt(pos) != '{') { pos++; } // Search closing bracket of member pos = editor.Document.GetMatchingBracketOffset(pos) + 1; pos = Math.Max(0, Math.Min(pos, editor.Document.Length - 1)); // Insert new event handler after closing bracket string indent = editor.Document.GetLine(callingMember.Location.Line).GetIndentation(editor.Document); StringBuilder sb = new StringBuilder(); sb.Append(editor.EolMarker); sb.Append(editor.EolMarker); sb.Append(indent); if (callingMember.IsStatic) { sb.Append("static "); } sb.Append("void "); int pos2 = sb.Length; sb.Append(this.DisplayText); sb.Append(' '); sb.Append(this.parameterList); sb.Append(editor.EolMarker); sb.Append(indent); sb.Append("{"); sb.Append(editor.EolMarker); sb.Append(indent); sb.Append(TextEditorProperties.IndentString); int cursorPos = pos + sb.Length; sb.Append(editor.EolMarker); sb.Append(indent); sb.Append("}"); editor.Insert(pos, sb.ToString()); editor.Caret.Offset = cursorPos; // start text link mode after insert List <TextLink> links = new List <TextLink> (); TextLink link = new TextLink("name"); link.AddLink(new Segment(0, this.DisplayText.Length)); link.AddLink(new Segment(pos - initialOffset + pos2, this.DisplayText.Length)); links.Add(link); CompletionTextLinkMode tle = new CompletionTextLinkMode(editor.Parent, initialOffset, links); tle.TriggerCodeCompletion = false; tle.SetCaretPosition = true; tle.SelectPrimaryLink = true; tle.OldMode = editor.CurrentMode; tle.StartMode(); editor.CurrentMode = tle; }
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); if (ext.Project != null) { generator.PolicyParent = ext.Project.Policies; } var builder = engine.MDRefactoringCtx.CreateTypeSystemAstBuilder(); string sb = BaseExportCodeGenerator.GenerateMemberCode(engine.MDRefactoringCtx, builder, member); sb = sb.TrimEnd(); 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) { targetCaretPosition += declarationBegin; selectionEndPosition += declarationBegin; editor.Caret.Offset = selectionEndPosition; editor.SetSelection(targetCaretPosition, selectionEndPosition); } }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var document = IdeApp.Workbench.ActiveDocument; var editor = document?.Editor; if (editor == null || completionService == null) { base.InsertCompletionText(window, ref ka, descriptor); return; } var completionChange = completionService.GetChangeAsync(doc, CompletionItem, null, default(CancellationToken)).WaitAndGetResult(default(CancellationToken)); var currentBuffer = editor.GetPlatformTextBuffer(); var textChange = completionChange.TextChange; var triggerSnapshotSpan = new SnapshotSpan(triggerSnapshot, new Span(textChange.Span.Start, textChange.Span.Length)); var mappedSpan = triggerSnapshotSpan.TranslateTo(triggerSnapshot.TextBuffer.CurrentSnapshot, SpanTrackingMode.EdgeInclusive); triggerSnapshot.TextBuffer.Replace(mappedSpan, completionChange.TextChange.NewText); // editor.ReplaceText (mappedSpan.Start, mappedSpan.Length, completionChange.TextChange.NewText); if (completionChange.NewPosition.HasValue) { editor.CaretOffset = completionChange.NewPosition.Value; } if (CompletionItem.Rules.FormatOnCommit) { var endOffset = mappedSpan.Start + completionChange.TextChange.NewText.Length; Format(editor, document, mappedSpan.Start, endOffset); } }
public void DoAction(KeyActions ka, Key k) { if (k == Key.None) { return; } //Console.WriteLine(k); VirtualKeyCode code = (VirtualKeyCode)KeyInterop.VirtualKeyFromKey(k); switch (ka) { case KeyActions.DOWN: ks.KeyDown(code); break; case KeyActions.UP: ks.KeyUp(code); break; case KeyActions.PRESS: ks.KeyDown(code); ks.KeyUp(code); break; } }
private void Awake() { _keyActions = new KeyActions(); ChangeCursorState(CursorLockMode.Locked); Cursor.visible = false; }
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); }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { if (completionItem?.textEdit?.range != null) { var range = completionItem.textEdit.range; int insertStartOffset = editor.LocationToOffset(range.start.line + 1, range.start.character + 1); int charactersToReplace = editor.CaretOffset - insertStartOffset; editor.ReplaceText(insertStartOffset, charactersToReplace, CompletionText); int caretOffset = completionItem.insertText.IndexOf("{{"); if (caretOffset >= 0) { int selectionLength = completionItem.insertText.IndexOf("}}", caretOffset) - caretOffset - 2; caretOffset += insertStartOffset; editor.CaretOffset = caretOffset; if (selectionLength > 0) { editor.SetSelection(editor.CaretOffset, editor.CaretOffset + selectionLength); } } } else { base.InsertCompletionText(window, ref ka, descriptor); } }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { Initialize(); using (var undo = doc.Editor.OpenUndoGroup()) { string text = insertNamespace ? type.Namespace + "." + type.Name : type.Name; if (text != GetCurrentWord(window)) { if (window.WasShiftPressed && generateUsing) { text = type.Namespace + "." + text; } window.CompletionWidget.SetCompletionText(window.CodeCompletionContext, GetCurrentWord(window), text); } if (!window.WasShiftPressed && generateUsing) { var generator = CodeGenerator.CreateGenerator(doc); if (generator != null) { generator.AddGlobalNamespaceImport(doc, type.Namespace); // reparse doc.UpdateParseDocument(); } } } ka |= KeyActions.Ignore; }
public void PostProcessKeyEvent(Gdk.Key key, char keyChar, Gdk.ModifierType modifier) { KeyActions ka = KeyActions.None; bool keyHandled = false; foreach (var handler in CompletionDataList.KeyHandler) { if (handler.PostProcessKey(this, key, keyChar, modifier, out ka)) { keyHandled = true; break; } } if (!keyHandled) { ka = PostProcessKey(key, keyChar, modifier); } if ((ka & KeyActions.Complete) != 0) { CompleteWord(ref ka, key, keyChar, modifier); } if ((ka & KeyActions.CloseWindow) != 0) { CompletionWindowManager.HideWindow(); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { // insert add/remove event handler code after +=/-= editor.Replace (initialOffset, editor.Caret.Offset - initialOffset, this.DisplayText + (AddSemicolon ? ";" : "")); // Search opening bracket of member int pos = callingMember != null ? editor.Document.LocationToOffset (callingMember.BodyRegion.BeginLine, callingMember.BodyRegion.BeginColumn) : initialOffset; while (pos < editor.Document.TextLength && editor.Document.GetCharAt (pos) != '{') { pos++; } // Search closing bracket of member pos = editor.Document.GetMatchingBracketOffset (pos) + 1; pos = Math.Max (0, Math.Min (pos, editor.Document.TextLength - 1)); // Insert new event handler after closing bracket var line = callingMember != null ? editor.Document.GetLine (callingMember.Region.BeginLine) : editor.Document.GetLineByOffset (initialOffset); string indent = line.GetIndentation (editor.Document); StringBuilder sb = new StringBuilder (); sb.Append (editor.EolMarker); sb.Append (editor.EolMarker); sb.Append (indent); if (callingMember != null && callingMember.IsStatic) sb.Append ("static "); sb.Append ("void "); int pos2 = sb.Length; sb.Append (this.DisplayText); sb.Append (' '); sb.Append (this.parameterList); sb.Append (editor.EolMarker); sb.Append (indent); sb.Append ("{"); sb.Append (editor.EolMarker); sb.Append (indent); sb.Append (editor.Options.IndentationString); int cursorPos = pos + sb.Length; sb.Append (editor.EolMarker); sb.Append (indent); sb.Append ("}"); editor.Insert (pos, sb.ToString ()); editor.Caret.Offset = cursorPos; // start text link mode after insert List<TextLink> links = new List<TextLink> (); TextLink link = new TextLink ("name"); link.AddLink (new TextSegment (0, this.DisplayText.Length)); link.AddLink (new TextSegment (pos - initialOffset + pos2, this.DisplayText.Length)); links.Add (link); var tle = new TextLinkEditMode (editor.Parent, initialOffset, links); tle.TextLinkMode = TextLinkMode.EditIdentifier; tle.SetCaretPosition = true; tle.SelectPrimaryLink = true; tle.OldMode = editor.CurrentMode; tle.StartMode (); editor.CurrentMode = tle; }
public void PostProcessKeyEvent(KeyDescriptor descriptor) { if (this.CompletionDataList == null) { return; } KeyActions ka = KeyActions.None; bool keyHandled = false; if (CompletionDataList != null) { foreach (var handler in CompletionDataList.KeyHandler) { if (handler.PostProcessKey(facade, descriptor, out ka)) { keyHandled = true; break; } } } if (!keyHandled) { ka = PostProcessKey(descriptor); } if ((ka & KeyActions.Complete) != 0) { CompleteWord(ref ka, descriptor); } UpdateLastWordChar(); if ((ka & KeyActions.CloseWindow) != 0) { CompletionWindowManager.HideWindow(); OnWindowClosed(EventArgs.Empty); } }
public async Task PostProcessKeyEvent(KeyDescriptor descriptor) { KeyActions ka = KeyActions.None; bool keyHandled = false; if (CompletionDataList != null) { foreach (var handler in CompletionDataList.KeyHandler) { if (handler.PostProcessKey(this, descriptor, out ka)) { keyHandled = true; break; } } } if (!keyHandled) { ka = PostProcessKey(descriptor); } if ((ka & KeyActions.Complete) != 0) { var res = await CompleteWord(ka, descriptor); ka = res.Item1; } if ((ka & KeyActions.CloseWindow) != 0) { CompletionWindowManager.HideWindow(); OnWindowClosed(EventArgs.Empty); } }
public void PostProcessKeyEvent(KeyActions ka) { if ((ka & KeyActions.Complete) != 0) { CompleteWord(); } }
public bool PostProcessKey( CompletionListWindow listWindow, KeyDescriptor descriptor, out KeyActions keyAction) { return(ProcessKey(descriptor, out keyAction)); }
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); if (ext.Project != null) generator.PolicyParent = ext.Project.Policies; var builder = engine.MDRefactoringCtx.CreateTypeSystemAstBuilder (); string sb = BaseExportCodeGenerator.GenerateMemberCode (engine.MDRefactoringCtx, builder, member); sb = sb.TrimEnd (); 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) { targetCaretPosition += declarationBegin; selectionEndPosition += declarationBegin; editor.Caret.Offset = selectionEndPosition; editor.SetSelection (targetCaretPosition, selectionEndPosition); } }
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); }
public virtual void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { if (CompletionText == GetCurrentWord(window)) { return; } window.CompletionWidget.SetCompletionText(window.CodeCompletionContext, GetCurrentWord(window), CompletionText); }
public static void PostProcessKeyEvent(KeyActions ka) { if (wnd == null) { return; } wnd.PostProcessKeyEvent(ka); }
public static void PostProcessKeyEvent(KeyActions ka, Gdk.Key key, char keyChar, Gdk.ModifierType modifier) { if (wnd == null) { return; } wnd.PostProcessKeyEvent(ka, key, keyChar, modifier); }
public static bool GetKeyUp(int player, KeyActions action) { if (Input.GetKeyUp(playerKeys[player][(int)action])) { return(true); } return(false); }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { if (this.CompletionText == "sizeof" || this.CompletionText == "nameof" || this.CompletionText == "typeof") { string partialWord = GetCurrentWord(window, descriptor); int skipChars = 0; bool runCompletionCompletionCommand = false; var method = Symbol as IMethodSymbol; bool addParens = IdeApp.Preferences.AddParenthesesAfterCompletion; bool addOpeningOnly = IdeApp.Preferences.AddOpeningOnly; var Editor = ext.Editor; var Policy = ext.FormattingPolicy; string insertionText = this.CompletionText; if (addParens && !IsBracketAlreadyInserted(ext)) { var line = Editor.GetLine(Editor.CaretLine); //var start = window.CodeCompletionContext.TriggerOffset + partialWord.Length + 2; //var end = line.Offset + line.Length; //string textToEnd = start < end ? Editor.GetTextBetween (start, end) : ""; bool addSpace = Policy.SpaceAfterMethodCallName && MonoDevelop.Ide.Editor.DefaultSourceEditorOptions.Instance.OnTheFlyFormatting; var keys = new [] { SpecialKey.Return, SpecialKey.Tab, SpecialKey.Space }; if (keys.Contains(descriptor.SpecialKey) || descriptor.KeyChar == ' ') { if (addOpeningOnly) { insertionText += addSpace ? " (|" : "(|"; } else { insertionText += addSpace ? " (|)" : "(|)"; } } ka |= KeyActions.Ignore; } window.CompletionWidget.SetCompletionText(window.CodeCompletionContext, partialWord, insertionText); int offset = Editor.CaretOffset; for (int i = skipChars - 1; i-- > 0;) { Editor.StartSession(new SkipCharSession(Editor.GetCharAt(offset))); offset++; } if (runCompletionCompletionCommand && IdeApp.Workbench != null) { Application.Invoke(delegate { ext.RunCompletionCommand(); }); } } else { base.InsertCompletionText(window, ref ka, descriptor); } }
public async Task TestVSTS611923() { await TestCompletion(@"using $", (doc, list) => { var item = (RoslynCompletionData)list.FirstOrDefault(d => d.CompletionText == "System"); KeyActions actions = KeyActions.Complete; item.InsertCompletionText(doc.Editor, doc, ref actions, KeyDescriptor.Return); Assert.AreEqual("using System", doc.Editor.Text); }); }
public void CycleKeyActions() { ka++; if ((int)ka >= Enum.GetNames(typeof(KeyActions)).Length) { ka = (KeyActions)1; } updateKA(ka); }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Ide.Editor.Extension.KeyDescriptor descriptor) { base.InsertCompletionText (window, ref ka, descriptor); factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent (); if (this.CompletionText.Contains ("\n")) { factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent (factory.Ext.Editor.GetLine (factory.Ext.Editor.CaretLine).NextLine.Offset); } }
internal KeyframeK(KeyActions ka, Key k, long timestamp, Recording parent) : base(timestamp, parent, KFType.KEY) { this.k = k; this.ka = ka; //Info = k.ToString(); //Description = isDown ? "DOWN" : "UP"; init(); }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, Ide.Editor.Extension.KeyDescriptor descriptor) { base.InsertCompletionText(window, ref ka, descriptor); factory.Ext.Editor.GetContent <CSharpTextEditorIndentation> ().DoReSmartIndent(); if (this.CompletionText.Contains("\n")) { factory.Ext.Editor.GetContent <CSharpTextEditorIndentation> ().DoReSmartIndent(factory.Ext.Editor.GetLine(factory.Ext.Editor.CaretLine).NextLine.Offset); } }
public IKeyboardSimulator KeyPress(VirtualKeyCode keyCode) { KeyActions.Add(new KeyActionChange(keyCode, KeyAction.Press)); if (keyCode == VirtualKeyCode.CAPITAL) { isCapsLockOn = !isCapsLockOn; } return(this); }
public override void InsertCompletionText(CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { if (codeTemplate != null) { codeTemplate.Insert(textEditorExtension.Editor, textEditorExtension.DocumentContext); } else { base.InsertCompletionText(window, ref ka, descriptor); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var editor = factory.Ext.Editor; var offset = window.CodeCompletionContext.TriggerOffset; using (var undo = editor.OpenUndoGroup ()) { base.InsertCompletionText (window, ref ka, descriptor); var span = nodeToCast.Span; var type = SafeMinimalDisplayString (targetType, semanticModel, nodeToCast.SpanStart, Ambience.LabelFormat); editor.ReplaceText (span.Start, span.Length, "((" + type + ")" + nodeToCast + ")"); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { IEditableTextBuffer buf = window.CompletionWidget as IEditableTextBuffer; if (buf != null) { using (var undo = buf.OpenUndoGroup ()) { buf.InsertText (buf.CursorPosition, element); // Move caret into the middle of the tags buf.CursorPosition = window.CodeCompletionContext.TriggerOffset + cursorOffset; buf.Select (buf.CursorPosition, buf.CursorPosition); } } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var buf = window.CompletionWidget; if (buf != null) { //completion context gets nulled from window as soon as we alter the buffer var codeCompletionContext = window.CodeCompletionContext; buf.Replace (buf.CaretOffset, 0, element); // Move caret into the middle of the tags buf.CaretOffset = codeCompletionContext.TriggerOffset + cursorOffset; } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { 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.ParsedDocument.GetTypeResolveContext (ext.Compilation, editor.Caret.Location)).GetDefinition (); if (ext.Project != null) generator.PolicyParent = ext.Project.Policies; var result = generator.CreateMemberImplementation (resolvedType, type, member, isExplicit); string sb = result.Code.TrimStart (); int trimStart = result.Code.Length - sb.Length; sb = sb.TrimEnd (); var lastRegion = result.BodyRegions.LastOrDefault (); var region = lastRegion == null? null : new CodeGeneratorBodyRegion (lastRegion.StartOffset - trimStart, lastRegion.EndOffset - trimStart); int targetCaretPosition; int selectionEndPosition = -1; if (region != null && region.IsValid) { targetCaretPosition = declarationBegin + region.StartOffset; if (region.Length > 0) { if (GenerateBody) { selectionEndPosition = declarationBegin + region.EndOffset; } else { //FIXME: if there are multiple regions, remove all of them sb = sb.Substring (0, region.StartOffset) + sb.Substring (region.EndOffset); } } } else { targetCaretPosition = declarationBegin + sb.Length; } editor.Replace (declarationBegin, editor.Caret.Offset - declarationBegin, sb); if (selectionEndPosition > 0) { editor.Caret.Offset = selectionEndPosition; editor.SetSelection (targetCaretPosition, selectionEndPosition); } else { editor.Caret.Offset = targetCaretPosition; } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { //insert the method name var buf = window.CompletionWidget; if (buf != null) { buf.Replace (window.CodeCompletionContext.TriggerOffset, buf.CaretOffset - window.CodeCompletionContext.TriggerOffset, methodInfo.Name); } //generate the codebehind method // TODO: Roslyn port. // if (codeBehindClassLocation != null && project != null) // BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClassLocation, methodInfo, false); // else // BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClass.Locations.First (), methodInfo, false); }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var buf = window.CompletionWidget; if (buf != null) { int deleteStartOffset = window.CodeCompletionContext.TriggerOffset; if (text.StartsWith (docTypeStart)) { int start = window.CodeCompletionContext.TriggerOffset - docTypeStart.Length; if (start >= 0) { string readback = buf.GetText (start, window.CodeCompletionContext.TriggerOffset); if (string.Compare (readback, docTypeStart, StringComparison.OrdinalIgnoreCase) == 0) deleteStartOffset -= docTypeStart.Length; } } buf.Replace (deleteStartOffset, buf.CaretOffset - deleteStartOffset, text); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { //insert the method name MonoDevelop.Ide.Gui.Content.IEditableTextBuffer buf = window.CompletionWidget as MonoDevelop.Ide.Gui.Content.IEditableTextBuffer; if (buf != null) { using (var undo = buf.OpenUndoGroup ()) { buf.DeleteText (window.CodeCompletionContext.TriggerOffset, buf.CursorPosition - window.CodeCompletionContext.TriggerOffset); buf.InsertText (buf.CursorPosition, methodInfo.Name); } } //generate the codebehind method if (codeBehindClassPart != null && project != null) BindingService.AddMemberToClass (project, codeBehindClass.GetDefinition (), codeBehindClassPart, methodInfo, false); else BindingService.AddMemberToClass (project, codeBehindClass.GetDefinition (), codeBehindClass.GetDefinition ().Parts.First (), methodInfo, false); }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { CodeGenerator generator = CodeGenerator.CreateGenerator (editor.Document.MimeType, editor.Options.TabsToSpaces, editor.Options.TabSize, editor.EolMarker); bool isExplicit = false; if (member.DeclaringType.ClassType == ClassType.Interface) { foreach (var m in type.Members) { if (m.Name == member.Name && m.ReturnType.ToInvariantString () != member.ReturnType.ToInvariantString ()) { isExplicit = true; break; } } } var result = generator.CreateMemberImplementation (type, member, isExplicit); string sb = result.Code.TrimStart (); int trimStart = result.Code.Length - sb.Length; sb = sb.TrimEnd (); var lastRegion = result.BodyRegions.LastOrDefault (); var region = lastRegion == null? null : new CodeGeneratorBodyRegion (lastRegion.StartOffset - trimStart, lastRegion.EndOffset - trimStart); int targetCaretPosition; int selectionEndPosition = -1; if (region != null && region.IsValid) { targetCaretPosition = declarationBegin + region.StartOffset; if (region.Length > 0) { if (GenerateBody) { selectionEndPosition = declarationBegin + region.EndOffset; } else { //FIXME: if there are multiple regions, remove all of them sb = sb.Substring (0, region.StartOffset) + sb.Substring (region.EndOffset); } } } else { targetCaretPosition = declarationBegin + sb.Length; } editor.Replace (declarationBegin, editor.Caret.Offset - declarationBegin, sb); if (selectionEndPosition > 0) { editor.Caret.Offset = selectionEndPosition; editor.SetSelection (targetCaretPosition, selectionEndPosition); } else { editor.Caret.Offset = targetCaretPosition; } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { MonoDevelop.Ide.Gui.Content.IEditableTextBuffer buf = window.CompletionWidget as MonoDevelop.Ide.Gui.Content.IEditableTextBuffer; if (buf != null) { using (var undo = buf.OpenUndoGroup ()) { int deleteStartOffset = window.CodeCompletionContext.TriggerOffset; if (text.StartsWith (docTypeStart)) { int start = window.CodeCompletionContext.TriggerOffset - docTypeStart.Length; if (start >= 0) { string readback = buf.GetText (start, window.CodeCompletionContext.TriggerOffset); if (string.Compare (readback, docTypeStart, StringComparison.OrdinalIgnoreCase) == 0) deleteStartOffset -= docTypeStart.Length; } } buf.DeleteText (deleteStartOffset, buf.CursorPosition - deleteStartOffset); buf.InsertText (buf.CursorPosition, text); } } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { var editor = ext.Editor; 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 result = CSharpCodeGenerator.CreatePartialMemberImplementation (ext.DocumentContext, ext.Editor, currentType, currentType.Locations.First (), Symbol, isExplicit, factory.SemanticModel); string sb = result.Code.TrimStart (); int trimStart = result.Code.Length - sb.Length; sb = sb.TrimEnd (); var lastRegion = result.BodyRegions.LastOrDefault (); var region = lastRegion == null? null : new CodeGeneratorBodyRegion (lastRegion.StartOffset - trimStart, lastRegion.EndOffset - trimStart); int targetCaretPosition; int selectionEndPosition = -1; if (region != null && region.IsValid) { targetCaretPosition = declarationBegin + region.EndOffset; } else { targetCaretPosition = declarationBegin + sb.Length; } editor.ReplaceText (declarationBegin, editor.CaretOffset - declarationBegin, sb); if (selectionEndPosition > 0) { editor.CaretOffset = selectionEndPosition; editor.SetSelection (targetCaretPosition, selectionEndPosition); } else { editor.CaretOffset = targetCaretPosition; } OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length); editor.CaretLine--; }
public static void PostProcessKeyEvent (KeyActions ka, Gdk.Key key, char keyChar, Gdk.ModifierType modifier) { if (wnd == null) return; wnd.PostProcessKeyEvent (ka, key, keyChar, modifier); }
public bool PreProcessKey(CompletionListWindow listWindow, Gdk.Key key, char keyChar, Gdk.ModifierType modifier, out KeyActions keyAction) { keyAction = KeyActions.None; return false; }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { if (XmlEditorOptions.AutoInsertFragments && dataType == DataType.XmlAttribute) { //This temporary variable is needed because //base.InsertCompletionText sets window.CompletionWidget to null var completionWidget = window.CompletionWidget; base.InsertCompletionText (window, ref ka, descriptor); if (completionWidget is ITextEditorImpl) { ((ITextEditorImpl)completionWidget).StartSession (new SkipCharSession ('"')); } //Even if we are on UI thread call Application.Invoke to postpone calling command //otherwise code calling InsertCompletionText will close completion window created by this command Application.Invoke ((s,e) => IdeApp.CommandService.DispatchCommand (TextEditorCommands.ShowCompletionWindow)); ka &= ~KeyActions.CloseWindow; } else { base.InsertCompletionText (window, ref ka, descriptor); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { if (kind == SyntaxKind.SizeOfKeyword || kind == SyntaxKind.NameOfKeyword || kind == SyntaxKind.TypeOfKeyword) { string partialWord = GetCurrentWord (window, descriptor); int skipChars = 0; bool runCompletionCompletionCommand = false; var method = Symbol as IMethodSymbol; bool addParens = IdeApp.Preferences.AddParenthesesAfterCompletion; bool addOpeningOnly = IdeApp.Preferences.AddOpeningOnly; var Editor = ext.Editor; var Policy = ext.FormattingPolicy; string insertionText = this.CompletionText; if (addParens && !IsBracketAlreadyInserted (ext)) { var line = Editor.GetLine (Editor.CaretLine); //var start = window.CodeCompletionContext.TriggerOffset + partialWord.Length + 2; //var end = line.Offset + line.Length; //string textToEnd = start < end ? Editor.GetTextBetween (start, end) : ""; bool addSpace = Policy.SpaceAfterMethodCallName && MonoDevelop.Ide.Editor.DefaultSourceEditorOptions.Instance.OnTheFlyFormatting; var keys = new [] { SpecialKey.Return, SpecialKey.Tab, SpecialKey.Space }; if (keys.Contains (descriptor.SpecialKey) || descriptor.KeyChar == ' ') { if (addOpeningOnly) { insertionText += addSpace ? " (|" : "(|"; } else { insertionText += addSpace ? " (|)" : "(|)"; } } ka |= KeyActions.Ignore; } window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, partialWord, insertionText); int offset = Editor.CaretOffset; for (int i = skipChars - 1; i-- > 0;) { Editor.StartSession (new SkipCharSession (Editor.GetCharAt (offset))); offset++; } if (runCompletionCompletionCommand && IdeApp.Workbench != null) { Application.Invoke (delegate { ext.RunCompletionCommand (); }); } } else { base.InsertCompletionText (window, ref ka, descriptor); } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { Initialize (); var doc = completionExt.DocumentContext; var offset = completionExt.CurrentCompletionContext.TriggerOffset; base.InsertCompletionText (window, ref ka, descriptor); using (var undo = completionExt.Editor.OpenUndoGroup ()) { if (!window.WasShiftPressed && generateUsing) { AddGlobalNamespaceImport (completionExt.Editor, doc, type.ContainingNamespace.ToDisplayString (SymbolDisplayFormat.CSharpErrorMessageFormat)); } else { doc.AnalysisDocument.GetSemanticModelAsync ().ContinueWith (t => { Runtime.RunInMainThread (delegate { completionExt.Editor.InsertText (offset, type.ContainingNamespace.ToMinimalDisplayString (t.Result, offset, SymbolDisplayFormat.CSharpErrorMessageFormat) + "."); }); }); } } ka |= KeyActions.Ignore; }
public static bool PreProcessKeyEvent (Gdk.Key key, char keyChar, Gdk.ModifierType modifier, out KeyActions ka) { if (wnd == null /*|| !wnd.Visible*/) { ka = KeyActions.None; return false; } return wnd.PreProcessKeyEvent (key, keyChar, modifier, out ka); }
public static void PostProcessKeyEvent (KeyActions ka) { if (wnd == null) return; wnd.PostProcessKeyEvent (ka); }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { string partialWord = GetCurrentWord (window, descriptor); int skipChars = 0; bool runParameterCompletionCommand = false; bool runCompletionCompletionCommand = false; var method = Symbol as IMethodSymbol; bool addParens = IdeApp.Preferences.AddParenthesesAfterCompletion; bool addOpeningOnly = IdeApp.Preferences.AddOpeningOnly; var Editor = ext.Editor; var Policy = ext.FormattingPolicy; string insertionText = this.GetInsertionText(); if (addParens && !IsDelegateExpected && method != null && !HasNonMethodMembersWithSameName (window, Symbol) && !IsBracketAlreadyInserted (ext, method)) { var line = Editor.GetLine (Editor.CaretLine); //var start = window.CodeCompletionContext.TriggerOffset + partialWord.Length + 2; //var end = line.Offset + line.Length; //string textToEnd = start < end ? Editor.GetTextBetween (start, end) : ""; bool addSpace = Policy.SpaceAfterMethodCallName && MonoDevelop.Ide.Editor.DefaultSourceEditorOptions.Instance.OnTheFlyFormatting; int exprStart = window.CodeCompletionContext.TriggerOffset - 1; while (exprStart > line.Offset) { char ch = Editor.GetCharAt (exprStart); if (ch != '.' && ch != '_' && !char.IsLetterOrDigit (ch)) break; exprStart--; } bool insertSemicolon = InsertSemicolon(ext, exprStart); if (Symbol is IMethodSymbol && ((IMethodSymbol)Symbol).MethodKind == MethodKind.Constructor) insertSemicolon = false; //int pos; var keys = new [] { SpecialKey.Return, SpecialKey.Tab, SpecialKey.Space }; if (keys.Contains (descriptor.SpecialKey) || descriptor.KeyChar == '.') { if (HasAnyOverloadWithParameters (method)) { if (addOpeningOnly) { insertionText += RequireGenerics (method) ? "<|" : (addSpace ? " (|" : "(|"); skipChars = 0; } else { if (descriptor.KeyChar == '.') { if (RequireGenerics (method)) { insertionText += addSpace ? "<> ()" : "<>()"; } else { insertionText += addSpace ? " ()" : "()"; } skipChars = 0; } else { if (insertSemicolon) { if (RequireGenerics (method)) { insertionText += addSpace ? "<|> ();" : "<|>();"; skipChars = addSpace ? 5 : 4; } else { insertionText += addSpace ? " (|);" : "(|);"; skipChars = 2; } } else { if (RequireGenerics (method)) { insertionText += addSpace ? "<|> ()" : "<|>()"; skipChars = addSpace ? 4 : 3; } else { insertionText += addSpace ? " (|)" : "(|)"; skipChars = 1; } } } } runParameterCompletionCommand = true; } else { if (addOpeningOnly) { insertionText += RequireGenerics (method) ? "<|" : (addSpace ? " (|" : "(|"); skipChars = 0; } else { if (descriptor.KeyChar == '.') { if (RequireGenerics (method)) { insertionText += addSpace ? "<> ()" : "<>()"; } else { insertionText += addSpace ? " ()" : "()"; } skipChars = 0; } else { if (insertSemicolon) { if (RequireGenerics (method)) { insertionText += addSpace ? "<|> ();" : "<|>();"; } else { insertionText += addSpace ? " ();|" : "();|"; } } else { if (RequireGenerics (method)) { insertionText += addSpace ? "<|> ()" : "<|>()"; } else { insertionText += addSpace ? " ()|" : "()|"; } } } } } } if (descriptor.KeyChar == ';') { insertionText += addSpace ? " ()" : "()"; } ka |= KeyActions.Ignore; } if ((DisplayFlags & DisplayFlags.NamedArgument) == DisplayFlags.NamedArgument && IdeApp.Preferences.AddParenthesesAfterCompletion && (descriptor.SpecialKey == SpecialKey.Tab || descriptor.SpecialKey == SpecialKey.Return || descriptor.SpecialKey == SpecialKey.Space)) { if (true/*Policy.AroundAssignmentParentheses */) insertionText += " "; insertionText += "="; if (/*Policy.AroundAssignmentParentheses && */descriptor.SpecialKey != SpecialKey.Space) insertionText += " "; runCompletionCompletionCommand = true; } window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, partialWord, insertionText); int offset = Editor.CaretOffset; for (int i = skipChars; i --> 0;) { Editor.StartSession (new SkipCharSession (Editor.GetCharAt (offset + i))); } if (runParameterCompletionCommand && IdeApp.Workbench != null) { Application.Invoke (delegate { ext.RunParameterCompletionCommand (); }); } if (runCompletionCompletionCommand && IdeApp.Workbench != null) { Application.Invoke (delegate { ext.RunCompletionCommand (); }); } }
public bool PostProcessKey(CompletionListWindow listWindow, Gdk.Key key, char keyChar, Gdk.ModifierType modifier, out KeyActions keyAction) { if (key == Gdk.Key.Return) keyAction = KeyActions.Complete; else if (key == Gdk.Key.BackSpace) { keyAction = KeyActions.None; return false; } else if (!D_Parser.Parser.Lexer.IsIdentifierPart(keyChar)) keyAction = KeyActions.CloseWindow; else keyAction = KeyActions.None; listWindow.PostProcessKey(key, keyChar, modifier); return true; }
public bool ProcessKey (CompletionListWindow window, Gdk.Key key, char keyChar, Gdk.ModifierType modifier, out KeyActions keyAction) { if (keyChar != '!') { keyAction = KeyActions.None; return false; } keyAction = KeyActions.CloseWindow; CodeCompletionContext ctx = window.CodeCompletionContext; int offset = ctx.TriggerOffset; while (offset > 0) { char ch = window.CompletionWidget.GetChar (offset - 1); if (ch != '.') break; offset--; while (offset > 0) { ch = window.CompletionWidget.GetChar (offset - 1); if (ch != '_' && !Char.IsLetterOrDigit (ch)) break; offset--; } } keyAction = KeyActions.CloseWindow | KeyActions.Ignore | KeyActions.Complete; window.CompletionWidget.Replace (offset, 0, "!"); ctx.TriggerOffset++; ctx.TriggerLineOffset++; return true; }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { Initialize (); string text = insertNamespace ? type.Namespace + "." + type.Name : type.Name; if (text != GetCurrentWord (window)) { if (window.WasShiftPressed && generateUsing) text = type.Namespace + "." + text; window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, GetCurrentWord (window), text); } if (!window.WasShiftPressed && generateUsing) { var generator = CodeGenerator.CreateGenerator (doc); if (generator != null) { generator.AddGlobalNamespaceImport (doc, type.Namespace); // reparse doc.UpdateParseDocument (); } } }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor) { // insert add/remove event handler code after +=/-= var editor = factory.Ext.Editor; bool AddSemicolon = true; var position = window.CodeCompletionContext.TriggerOffset; editor.ReplaceText (position, editor.CaretOffset - position, this.DisplayText + (AddSemicolon ? ";" : "")); var document = IdeApp.Workbench.ActiveDocument; var parsedDocument = document.UpdateParseDocument ().Result; var semanticModel = parsedDocument.GetAst<SemanticModel> (); var declaringType = semanticModel.GetEnclosingSymbol<INamedTypeSymbol> (position, default(CancellationToken)); var enclosingSymbol = semanticModel.GetEnclosingSymbol<ISymbol> (position, default(CancellationToken)); var insertionPoints = InsertionPointService.GetInsertionPoints ( document.Editor, parsedDocument, declaringType, editor.CaretOffset ); var options = new InsertionModeOptions ( GettextCatalog.GetString ("Create new method"), insertionPoints, point => { if (!point.Success) return; var indent = "\t"; var sb = new StringBuilder (); if (enclosingSymbol != null && enclosingSymbol.IsStatic) sb.Append ("static "); sb.Append ("void "); int pos2 = sb.Length; sb.Append (this.DisplayText); sb.Append (' '); sb.Append("("); var delegateMethod = delegateType.GetDelegateInvokeMethod(); for (int k = 0; k < delegateMethod.Parameters.Length; k++) { if (k > 0) { sb.Append(", "); } sb.Append (RoslynCompletionData.SafeMinimalDisplayString (delegateMethod.Parameters [k], semanticModel, position, MonoDevelop.Ide.TypeSystem.Ambience.LabelFormat)); } sb.Append(")"); sb.Append (editor.EolMarker); sb.Append (indent); sb.Append ("{"); sb.Append (editor.EolMarker); sb.Append (indent); sb.Append (editor.Options.GetIndentationString ()); //int cursorPos = pos + sb.Length; sb.Append (editor.EolMarker); sb.Append (indent); sb.Append ("}"); point.InsertionPoint.Insert (document.Editor, document, sb.ToString ()); // // start text link mode after insert // var links = new List<TextLink> (); // var link = new TextLink ("name"); // // link.AddLink (new TextSegment (initialOffset, this.DisplayText.Length)); // link.AddLink (new TextSegment (initialOffset + pos + pos2, this.DisplayText.Length)); // links.Add (link); // editor.StartTextLinkMode (new TextLinkModeOptions (links)); } ); editor.StartInsertionMode (options); }
// public override TooltipInformation CreateTooltipInformation (bool smartWrap) // { // var sig = new SignatureMarkupCreator (ext.Editor, ext.DocumentContext, ext.Editor.CaretOffset); // sig.BreakLineAfterReturnType = smartWrap; // return sig.GetKeywordTooltip (title, null); // } public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { var currentWord = GetCurrentWord (window); var text = CompletionText; if (descriptor.KeyChar == '>' && text.EndsWith (">", StringComparison.Ordinal)) text = text.Substring (0, text.Length - 1); if (text.StartsWith ("<", StringComparison.Ordinal)) text = text.Substring (1); window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, currentWord, text); }
public bool PostProcessKey (CompletionListWindow listWindow, KeyDescriptor descriptor, out KeyActions keyAction) { keyAction = KeyActions.None; if (descriptor.KeyChar == '.') { return true; } return false; }
public bool PreProcessKey(CompletionListWindow listWindow, Gdk.Key key, char keyChar, Gdk.ModifierType modifier, out KeyActions keyAction) { keyAction = KeyActions.None; if (keyChar == '_') { listWindow.PreProcessKey(key, keyChar, modifier); return true; } return false; }
public virtual void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Gdk.Key closeChar, char keyChar, Gdk.ModifierType modifier) { var currentWord = GetCurrentWord (window); window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, currentWord, CompletionText); }
public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor) { Initialize (); var doc = ext.DocumentContext; using (var undo = ext.Editor.OpenUndoGroup ()) { string text = insertNamespace ? type.ContainingNamespace.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + "." + type.Name : type.Name; if (text != GetCurrentWord (window)) { if (window.WasShiftPressed && generateUsing) text = type.ContainingNamespace.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + "." + text; window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, GetCurrentWord (window), text); } if (!window.WasShiftPressed && generateUsing) { AddGlobalNamespaceImport (ext.Editor, doc, type.ContainingNamespace.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat)); } } ka |= KeyActions.Ignore; }