public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context) { ArrayList result = new ArrayList(); if (!Initialize(parseInfo, caretLine, caretColumn)) { return(null); } if (context == ExpressionContext.Importable) { pc.AddNamespaceContents(result, "", pc.Language, true); CtrlSpaceResolveHelper.AddUsing(result, pc.DefaultImports, pc); return(result); } CtrlSpaceResolveHelper.AddContentsFromCalling(result, callingClass, callingMember); AddImportedNamespaceContents(result); if (BooProject.BooCompilerPC != null) { if (context == ExpressionFinder.BooAttributeContext.Instance) { foreach (object o in BooProject.BooCompilerPC.GetNamespaceContents("Boo.Lang")) { IClass c = o as IClass; if (c != null && c.Name.EndsWith("Attribute") && !c.IsAbstract) { result.Add(GetPrimitiveClass(BooProject.BooCompilerPC, c.FullyQualifiedName, c.Name.Substring(0, c.Name.Length - 9).ToLowerInvariant())); } } } else { foreach (object o in BooProject.BooCompilerPC.GetNamespaceContents("Boo.Lang")) { IClass c = o as IClass; if (c != null && c.Name.EndsWith("Macro") && !c.IsAbstract) { result.Add(GetPrimitiveClass(BooProject.BooCompilerPC, c.FullyQualifiedName, c.Name.Substring(0, c.Name.Length - 5).ToLowerInvariant())); } } } } List <string> knownVariableNames = new List <string>(); foreach (object o in result) { IMember m = o as IMember; if (m != null) { knownVariableNames.Add(m.Name); } } VariableListLookupVisitor vllv = new VariableListLookupVisitor(knownVariableNames, this); vllv.Visit(GetCurrentBooMethod()); foreach (KeyValuePair <string, IReturnType> entry in vllv.Results) { result.Add(new DefaultField.LocalVariableField(entry.Value, entry.Key, DomRegion.Empty, callingClass)); } return(result); }
public List<ICompletionEntry> CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context) { List<ICompletionEntry> result = new List<ICompletionEntry>(); if (!Initialize(parseInfo, caretLine, caretColumn)) return null; if (context == ExpressionContext.Importable) { pc.AddNamespaceContents(result, "", pc.Language, true); CtrlSpaceResolveHelper.AddUsing(result, pc.DefaultImports, pc); return result; } CtrlSpaceResolveHelper.AddContentsFromCalling(result, callingClass, callingMember); AddImportedNamespaceContents(result); if (BooProject.BooCompilerPC != null) { if (context == ExpressionFinder.BooAttributeContext.Instance) { foreach (object o in BooProject.BooCompilerPC.GetNamespaceContents("Boo.Lang")) { IClass c = o as IClass; if (c != null && c.Name.EndsWith("Attribute") && !c.IsAbstract) { result.Add(GetPrimitiveClass(BooProject.BooCompilerPC, c.FullyQualifiedName, c.Name.Substring(0, c.Name.Length - 9).ToLowerInvariant())); } } } else { foreach (object o in BooProject.BooCompilerPC.GetNamespaceContents("Boo.Lang")) { IClass c = o as IClass; if (c != null && c.Name.EndsWith("Macro") && !c.IsAbstract) { result.Add(GetPrimitiveClass(BooProject.BooCompilerPC, c.FullyQualifiedName, c.Name.Substring(0, c.Name.Length - 5).ToLowerInvariant())); } } } } List<string> knownVariableNames = new List<string>(); foreach (object o in result) { IMember m = o as IMember; if (m != null) { knownVariableNames.Add(m.Name); } } VariableListLookupVisitor vllv = new VariableListLookupVisitor(knownVariableNames, this); vllv.Visit(GetCurrentBooMethod()); foreach (KeyValuePair<string, IReturnType> entry in vllv.Results) { result.Add(new DefaultField.LocalVariableField(entry.Value, entry.Key, DomRegion.Empty, callingClass)); } return result; }