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); }