コード例 #1
0
        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);
        }
コード例 #2
0
		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;
		}