public void InitializeOpenedInsightWindow(ITextEditor editor, IInsightWindow insightWindow)
        {
            EventHandler<TextChangeEventArgs> on_document_changed = delegate{
                // whenever the document is changed, recalculate EndOffset
                var remaining_doc = editor.Document.CreateReader(insightWindow.StartOffset, editor.Document.TextLength - insightWindow.StartOffset);
                var lexer = new BVE5RouteFileLexer(remaining_doc);
                var line = editor.Document.GetLineForOffset(insightWindow.StartOffset);
                lexer.SetInitialLocation(line.LineNumber, insightWindow.StartOffset - editor.Document.PositionToOffset(line.LineNumber, 1));
                Token token;

                lexer.Advance();
                while((token = lexer.Current) != null && token.Kind != TokenKind.EOF){
                    if(token.Literal == ")"){
                        MarkInsightWindowEndOffset(insightWindow, editor, token.StartLoc);
                        break;
                    }else if(token.Literal == ";"){
                        MarkInsightWindowEndOffset(insightWindow, editor, token.StartLoc);
                        break;
                    }
                    lexer.Advance();
                }
            };

            insightWindow.DocumentChanged += on_document_changed;
            insightWindow.SelectedItemChanged += delegate { HighlightParameter(insightWindow, highlighted_parameter); };
            on_document_changed(null, null);
        }