private static bool scanCommentedLine(IVsTextLines textLines, int lineNumber, string text, int offset, ref List <string> issueKeys)
        {
            MatchCollection matches = JiraIssueUtils.ISSUE_REGEX.Matches(text);

            SortedDictionary <string, JiraProject> projects =
                JiraServerCache.Instance.getProjects(AtlassianPanel.Instance.Jira.CurrentlySelectedServerOrDefault);

            int countOrg = issueKeys.Count;

            for (int j = 0; j < matches.Count; ++j)
            {
                if (!projects.ContainsKey(matches[j].Groups[2].Value))
                {
                    continue;
                }

                issueKeys.Add(matches[j].Value);

                int index = matches[j].Index + offset;
                AbstractMarkerClientEventSink textMarkerClientEventSink = new TextMarkerClientEventSink(matches[j].Value);
                addMarker(textLines, lineNumber, index, index + matches[j].Length, JiraLinkTextMarkerType.Id, textMarkerClientEventSink);
            }

            return(issueKeys.Count - countOrg > 0);
        }
        private static void addMarker(IVsTextLines textLines, int line, int start, int end)
        {
            TextMarkerClientEventSink clientEventSinkBackground = new TextMarkerClientEventSink();
            TextMarkerClientEventSink clientEventSinkMargin = new TextMarkerClientEventSink();

            IVsTextLineMarker[] markers = new IVsTextLineMarker[1];

            int hr = textLines.CreateLineMarker(JiraLinkBackgroundMarkerType.Id, line, start, line, end, clientEventSinkBackground, markers);
            if (!ErrorHandler.Succeeded(hr)) return;
            clientEventSinkBackground.BackgroundMarker = markers[0];

            hr = textLines.CreateLineMarker(JiraLinkMarginMarkerType.Id, line, start, line, end, clientEventSinkMargin, markers);

            if (!ErrorHandler.Succeeded(hr)) return;
            clientEventSinkMargin.MarginMarker = markers[0];
        }
        private static void addMarker(IVsTextLines textLines, int line, int start, int end)
        {
            TextMarkerClientEventSink clientEventSinkBackground = new TextMarkerClientEventSink();
            TextMarkerClientEventSink clientEventSinkMargin     = new TextMarkerClientEventSink();

            IVsTextLineMarker[] markers = new IVsTextLineMarker[1];

            int hr = textLines.CreateLineMarker(JiraLinkBackgroundMarkerType.Id, line, start, line, end, clientEventSinkBackground, markers);

            if (!ErrorHandler.Succeeded(hr))
            {
                return;
            }
            clientEventSinkBackground.BackgroundMarker = markers[0];

            hr = textLines.CreateLineMarker(JiraLinkMarginMarkerType.Id, line, start, line, end, clientEventSinkMargin, markers);

            if (!ErrorHandler.Succeeded(hr))
            {
                return;
            }
            clientEventSinkMargin.MarginMarker = markers[0];
        }