void ShowDocs(string text, Node matched_node, string url)
 {
     foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
         if (content.ContentName == GettextCatalog.GetString ("Documentation")) {
             ((HelpViewer)content).Render (text, matched_node, url);
             content.WorkbenchWindow.SelectWindow ();
             return;
         }
     }
     HelpViewer new_content = new HelpViewer ();
     new_content.Render (text, matched_node, url);
     WorkbenchSingleton.Workbench.ShowView (new_content, true);
 }
        bool MonodocResolver()
        {
            TextIter insertIter = buf.GetIterAtMark (buf.InsertMark);
            TextIter triggerIter = TextIter.Zero;
            try {
                do {
                    switch (insertIter.Char[0]) {
                    case ' ':
                    case '\t':
                    case '\r':
                    case '\n':
                    case '.':
                    case '(':
                    case '[':
                        triggerIter = insertIter;
                        break;
                    }
                    if (!triggerIter.Equals (TextIter.Zero))
                        break;
                    insertIter.ForwardChar ();
                } while (insertIter.LineOffset != 0);
                triggerIter.ForwardChar ();
            } catch {
                return false;
            }
            insertIter = triggerIter;
            string fileName = ParentEditor.DisplayBinding.ContentName;
            IExpressionFinder expressionFinder = GetParserContext ().GetExpressionFinder(fileName);
            string expression    = expressionFinder == null ? TextUtilities.GetExpressionBeforeOffset(this, insertIter.Offset) : expressionFinder.FindExpression(buf.GetText(buf.StartIter, insertIter, true), insertIter.Offset - 2);
            if (expression == null) return false;
            Console.WriteLine ("Expression: {" + expression + "}");
            string type = GetParserContext ().MonodocResolver (expression, insertIter.Line + 1, insertIter.LineOffset + 1, fileName, buf.Text);
            if (type == null || type.Length == 0)
                return false;

            foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
                if (content.ContentName == GettextCatalog.GetString ("Documentation")) {
                    ((HelpViewer)content).LoadUrl (type);
                    content.WorkbenchWindow.SelectWindow ();
                    return true;
                }
            }
            HelpViewer new_content = new HelpViewer ();
            new_content.LoadUrl (type);
            WorkbenchSingleton.Workbench.ShowView (new_content, true);

            return true;
        }