private void FillDictWithDataFrom(Dictionary <string, CompletionCodeContainerData> dict, string str)
    {
        string[] lines = str.Split('\n');
        for (int i = 0; i < lines.Length; i++)
        {
            string[] split = lines[i].Split('@');
            if (split.Length < 3)
            {
                continue;
            }

            string display = split[0];
            string insert  = split[1];
            if (split.Length == 3)
            {
                int commentIndex = split[2].IndexOf("//");
                int minusIndex   = split[2].IndexOf("---");
                if ((minusIndex > 10 || minusIndex == -1) && (commentIndex > 10 || commentIndex == -1))
                {
                    dict[display] = new CompletionCodeContainerData(display, insert, split[2]);
                }
            }
            else
            {
                StringBuilder sb = new StringBuilder(split[3]);
                i++;
                for (; i < lines.Length; i++)
                {
                    if (lines[i].Contains('@'))
                    {
                        sb.AppendLine(lines[i].Replace("@", ""));
                        break;
                    }
                    else
                    {
                        sb.AppendLine(lines[i]);
                    }
                }
                dict[display] = new CompletionCodeContainerData(display, insert, sb.ToString());
            }
        }
    }
    public List <Completion> GetCompletionListForFile(string file, ITextBuffer textBuffer)
    {
        FileCompletionData fileCompletionData = null;

        if (!fileData.TryGetValue(file, out fileCompletionData))
        {
            fileCompletionData = new FileCompletionData();
            fileCompletionData.lastUpdateTime = new TimeSpan(0, 0, 0, 0, 0);
            fileData[file] = fileCompletionData;
        }

        if ((DateTime.Now.TimeOfDay - fileCompletionData.lastUpdateTime).TotalSeconds > 60.0)
        {
            fileCompletionData.lastUpdateTime = DateTime.Now.TimeOfDay;
            fileCompletionData.completionList = new List <Completion>(GlobalCompletionList);
            string text           = textBuffer.CurrentSnapshot.GetText();
            var    lines          = text.Split('\n');
            var    completionDict = new Dictionary <string, CompletionCodeContainerData>();
            var    splitters      = new char[] { ' ', '.', '\t', '\\', '/', ':', ',', '*', '+', '-', '!', '(', ')', '{', '}', '%', '&', '|', '"', ';', '\r' };
            for (int i = 0; i < lines.Length; i++)
            {
                var split = lines[i].Split(splitters);
                foreach (var s in split)
                {
                    if (string.IsNullOrEmpty(s) || s.Length < 2)
                    {
                        continue;
                    }

                    completionDict[s] = new CompletionCodeContainerData(s, s, "Example: " + lines[i].Replace("\t", ""));
                    openedFilesKeywords.Add(s);
                }
            }

            fileCompletionData.completionList.AddRange(GenerateCompletionListFromDict(completionDict, true));
            ClearDuplicatesFromCompletionList(ref fileCompletionData.completionList);
            fileCompletionData.completionList.Sort(CompletionSort);
        }
        return(fileCompletionData.completionList);
    }