bool ShowListWindow(char firstChar, ICompletionDataProvider provider, ICompletionWidget completionWidget, ICodeCompletionContext completionContext, CompletionDelegate closedDelegate) { if (mutableProvider != null) { mutableProvider.CompletionDataChanging -= OnCompletionDataChanging; mutableProvider.CompletionDataChanged -= OnCompletionDataChanged; } this.provider = provider; this.completionContext = completionContext; this.closedDelegate = closedDelegate; mutableProvider = provider as IMutableCompletionDataProvider; if (mutableProvider != null) { mutableProvider.CompletionDataChanging += OnCompletionDataChanging; mutableProvider.CompletionDataChanged += OnCompletionDataChanged; if (mutableProvider.IsChanging) { OnCompletionDataChanging(null, null); } } this.completionWidget = completionWidget; this.firstChar = firstChar; return(FillList()); }
public override ICompletionDataProvider HandleCodeCompletion( ICodeCompletionContext completionContext, char completionChar) { TextEditor editor = IdeApp.Workbench.ActiveDocument.TextEditor; int line, column; editor.GetLineColumnFromPosition(editor.CursorPosition, out line, out column); string currentLine = editor.GetLineText(line); string currentDocsExtension = Path.GetExtension(IdeApp.Workbench.ActiveDocument.FileName); string currentLanguage = GetLanguageFromExtension(currentDocsExtension); if (tags.Count == 0 || !CurrentLanguagesTagsLoaded.Equals(currentLanguage)) { LoadTags(); CurrentLanguagesTagsLoaded = currentLanguage; } CTagsCompletionDataProvider provider = new CTagsCompletionDataProvider(); // TODO: check specializations foreach (Tag tag in tags) { provider.AddCompletionData(new CTagsCompletionData(tag, "md-class")); } return(provider); }
public override ICompletionDataProvider HandleCodeCompletion ( ICodeCompletionContext completionContext, char completionChar) { TextEditor editor = IdeApp.Workbench.ActiveDocument.TextEditor; int line, column; editor.GetLineColumnFromPosition (editor.CursorPosition, out line, out column); string currentLine = editor.GetLineText (line); string currentDocsExtension = Path.GetExtension (IdeApp.Workbench.ActiveDocument.FileName); string currentLanguage = GetLanguageFromExtension (currentDocsExtension); if (tags.Count == 0 || !CurrentLanguagesTagsLoaded.Equals (currentLanguage)) { LoadTags (); CurrentLanguagesTagsLoaded = currentLanguage; } CTagsCompletionDataProvider provider = new CTagsCompletionDataProvider (); // TODO: check specializations foreach (Tag tag in tags) { provider.AddCompletionData (new CTagsCompletionData (tag, "md-class")); } return provider; }
public static void ShowWindow (char firstChar, ICompletionDataProvider provider, ICompletionWidget completionWidget, ICodeCompletionContext completionContext, CompletionDelegate closedDelegate) { try { if (!wnd.ShowListWindow (firstChar, provider, completionWidget, completionContext, closedDelegate)) { provider.Dispose (); return; } // makes control-space in midle of words to work string text = wnd.completionWidget.GetCompletionText (completionContext); if (text.Length == 0) { text = provider.DefaultCompletionString; if (text != null && text.Length > 0) wnd.SelectEntry (text); return; } wnd.PartialWord = text; //if there is only one matching result we take it by default if (wnd.IsUniqueMatch && !wnd.IsChanging) { wnd.UpdateWord (); wnd.Hide (); } } catch (Exception ex) { Console.WriteLine (ex); } }
public override ICompletionDataProvider HandleCodeCompletion( ICodeCompletionContext completionContext, char completionChar) { string lineText = Editor.GetLineText(completionContext.TriggerLine + 1); if (lineText.EndsWith("::")) { // remove the trailing '::' lineText = lineText.Substring(0, lineText.Length - 2); int nameStart = lineText.LastIndexOfAny(allowedCharsMinusColon); nameStart++; string itemName = lineText.Substring(nameStart).Trim(); if (string.IsNullOrEmpty(itemName)) { return(null); } return(GetMembersOfItem(itemName)); } return(null); }
public override ICompletionDataProvider CodeCompletionCommand( ICodeCompletionContext completionContext) { int pos = completionContext.TriggerOffset; int line, column; Editor.GetLineColumnFromPosition(Editor.CursorPosition, out line, out column); string lineText = Editor.GetLineText(line); if (!lineText.Contains(".") && !lineText.Contains("::") && !lineText.Contains("->")) { return(GlobalComplete()); } return(HandleCodeCompletion(completionContext, Editor.GetText(pos - 1, pos)[0])); }
// Returns the index of the parameter where the cursor is currently positioned. // -1 means the cursor is outside the method parameter list // 0 means no parameter entered // > 0 is the index of the parameter (1-based) public int GetCurrentParameterIndex(ICodeCompletionContext ctx) { int cursor = editor.CursorPosition; int i = ctx.TriggerOffset; if (editor.GetCharAt(i) == ')') { return(-1); } if (i > cursor) { return(-1); } else if (i == cursor) { return(0); } int parameterIndex = 1; while (i++ < cursor) { char ch = editor.GetCharAt(i); if (ch == ',') { parameterIndex++; } else if (ch == ')') { return(-1); } } return(parameterIndex); }
public override IParameterDataProvider HandleParameterCompletion( ICodeCompletionContext completionContext, char completionChar) { if (completionChar != '(') { return(null); } CProject project = Document.Project as CProject; if (project == null) { return(null); } ProjectInformation info = ProjectInformationManager.Instance.Get(project); int line, column; Editor.GetLineColumnFromPosition(Editor.CursorPosition, out line, out column); int position = Editor.GetPositionFromLineColumn(line, 1); string lineText = Editor.GetText(position, Editor.CursorPosition - 1).TrimEnd(); int nameStart = lineText.LastIndexOfAny(allowedChars); nameStart++; string functionName = lineText.Substring(nameStart).Trim(); if (string.IsNullOrEmpty(functionName)) { return(null); } return(new ParameterDataProvider(Document, info, functionName)); }
public static void ShowWindow(char firstChar, ICompletionDataProvider provider, ICompletionWidget completionWidget, ICodeCompletionContext completionContext, CompletionDelegate closedDelegate) { try { if (!wnd.ShowListWindow(firstChar, provider, completionWidget, completionContext, closedDelegate)) { provider.Dispose(); return; } // makes control-space in midle of words to work string text = wnd.completionWidget.GetCompletionText(completionContext); if (text.Length == 0) { text = provider.DefaultCompletionString; if (text != null && text.Length > 0) { wnd.SelectEntry(text); } return; } wnd.PartialWord = text; //if there is only one matching result we take it by default if (wnd.IsUniqueMatch && !wnd.IsChanging) { wnd.UpdateWord(); wnd.Hide(); } } catch (Exception ex) { Console.WriteLine(ex); } }
bool ShowListWindow (char firstChar, ICompletionDataProvider provider, ICompletionWidget completionWidget, ICodeCompletionContext completionContext, CompletionDelegate closedDelegate) { if (mutableProvider != null) { mutableProvider.CompletionDataChanging -= OnCompletionDataChanging; mutableProvider.CompletionDataChanged -= OnCompletionDataChanged; } this.provider = provider; this.completionContext = completionContext; this.closedDelegate = closedDelegate; mutableProvider = provider as IMutableCompletionDataProvider; if (mutableProvider != null) { mutableProvider.CompletionDataChanging += OnCompletionDataChanging; mutableProvider.CompletionDataChanged += OnCompletionDataChanged; if (mutableProvider.IsChanging) OnCompletionDataChanging (null, null); } this.completionWidget = completionWidget; this.firstChar = firstChar; return FillList (); }
public override ICompletionDataProvider HandleCodeCompletion ( ICodeCompletionContext completionContext, char completionChar) { string lineText = Editor.GetLineText (completionContext.TriggerLine + 1); if (lineText.EndsWith ("::")) { // remove the trailing '::' lineText = lineText.Substring (0, lineText.Length - 2); int nameStart = lineText.LastIndexOfAny (allowedCharsMinusColon); nameStart++; string itemName = lineText.Substring (nameStart).Trim (); if (string.IsNullOrEmpty (itemName)) return null; return GetMembersOfItem (itemName); } return null; }
public override IParameterDataProvider HandleParameterCompletion ( ICodeCompletionContext completionContext, char completionChar) { if (completionChar != '(') return null; CProject project = Document.Project as CProject; if (project == null) return null; ProjectInformation info = ProjectInformationManager.Instance.Get (project); int line, column; Editor.GetLineColumnFromPosition (Editor.CursorPosition, out line, out column); int position = Editor.GetPositionFromLineColumn (line, 1); string lineText = Editor.GetText (position, Editor.CursorPosition - 1).TrimEnd (); int nameStart = lineText.LastIndexOfAny (allowedChars); nameStart++; string functionName = lineText.Substring (nameStart).Trim (); if (string.IsNullOrEmpty (functionName)) return null; return new ParameterDataProvider (Document, info, functionName); }
public override ICompletionDataProvider CodeCompletionCommand ( ICodeCompletionContext completionContext) { int pos = completionContext.TriggerOffset; int line, column; Editor.GetLineColumnFromPosition (Editor.CursorPosition, out line, out column); string lineText = Editor.GetLineText (line); if (!lineText.Contains (".") && !lineText.Contains ("::") && !lineText.Contains ("->")) return GlobalComplete (); return HandleCodeCompletion (completionContext, Editor.GetText (pos - 1, pos)[0]); }