bool DoCaseCompletion(ITextEditor editor) { ITextEditorCaret caret = editor.Caret; var r = new NRefactoryResolver(LanguageProperties.CSharp); if (r.Initialize(ParserService.GetParseInformation(editor.Document.Text, ProjectContent), caret.Line, caret.Column)) { NRefactory.Ast.INode currentMember = r.ParseCurrentMember(editor.Document.Text); if (currentMember != null) { var ccsf = new CaseCompletionSwitchFinder(caret.Line, caret.Column); currentMember.AcceptVisitor(ccsf, null); if (ccsf.BestStatement != null) { r.RunLookupTableVisitor(currentMember); ResolveResult rr = r.ResolveInternal(ccsf.BestStatement.SwitchExpression, ExpressionContext.Default); if (rr != null && rr.ResolvedType != null) { return(ProvideContextCompletion(editor, rr.ResolvedType, ' ')); } } } } return(false); }
ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e) { if (disableDefinitionView) { return(null); } IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; if (window == null) { return(null); } ITextEditorProvider provider = window.ActiveViewContent as ITextEditorProvider; if (provider == null) { return(null); } ITextEditor editor = provider.TextEditor; // e might be null when this is a manually triggered update // don't resolve when an unrelated file was changed if (e != null && editor.FileName != e.FileName) { return(null); } IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(editor.FileName); if (expressionFinder == null) { return(null); } ITextEditorCaret caret = editor.Caret; string content = (e == null) ? editor.Document.Text : e.Content.Text; if (caret.Offset > content.Length) { LoggingService.Debug("caret.Offset = " + caret.Offset + ", content.Length=" + content.Length); return(null); } try { ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset); if (expr.Expression == null) { return(null); } return(ParserService.Resolve(expr, caret.Line, caret.Column, editor.FileName, content)); } catch (Exception ex) { disableDefinitionView = true; ctl.Visibility = Visibility.Collapsed; MessageService.ShowException(ex, "Error resolving at " + caret.Line + "/" + caret.Column + ". DefinitionViewPad is disabled until you restart SharpDevelop."); return(null); } }