async void UpdateTick(ParseInformationEventArgs e)
        {
            bool isActive = ctl.IsVisible && !SD.ParserService.LoadSolutionProjectsThread.IsRunning;

            timer.IsEnabled = isActive;
            if (!isActive)
            {
                return;
            }
            LoggingService.Debug("DefinitionViewPad.Update");

            ResolveResult res = await ResolveAtCaretAsync(e);

            if (res == null)
            {
                return;
            }
            var pos = res.GetDefinitionRegion();

            if (pos.IsEmpty)
            {
                return;                          // TODO : try to decompile?
            }
            OpenFile(pos);
        }
Example #2
0
        private void ProcessMemberResults(ResolveResult resolveResult)
        {
            //TODO: why does FindReferencesInFile not return the definition for a field?
            // add it here instead for now.
            var definition = resolveResult.GetDefinitionRegion();

            ProcessRegion(definition);
        }
Example #3
0
 public override bool CanExecute(ResolveResult symbol)
 {
     if (symbol == null)
     {
         return(false);
     }
     return(!symbol.GetDefinitionRegion().IsEmpty);
 }
Example #4
0
		public bool IsValid(object parameter, Condition condition)
		{
			ResolveResult resolveResult = GetResolveResult(parameter);
			if ((resolveResult != null) && !resolveResult.IsError) {
				// Check if project-only entities should be valid
				var defRegion = resolveResult.GetDefinitionRegion();
				if ((condition.Properties["projectonly"] == "true") && (resolveResult.GetDefinitionRegion().IsEmpty))
					return false;
				
				// Check type of symbol
				string typesList = condition.Properties["type"];
				if (typesList != null) {
					foreach (string type in typesList.Split(',')) {
						switch (type.Trim()) {
							case "*":
								// Wildcard -> allow any type
								return true;
							case "member":
								// Allow members
								if (resolveResult is MemberResolveResult)
									return true;
								break;
							case "type":
								// Allow types
								if (resolveResult is TypeResolveResult)
									return true;
								break;
							case "namespace":
								// Allow namespaces
								if (resolveResult is NamespaceResolveResult)
									return true;
								break;
							case "local":
								// Allow locals
								if (resolveResult is LocalResolveResult)
									return true;
								break;
						}
					}
				}
			}
			
			return false;
		}
        public GotoDefinitionResponse GetGotoDefinitionResponse(GotoDefinitionRequest request)
        {
            var res = _bufferParser.ParsedContent(request.Buffer, request.FileName);

            var loc = new TextLocation(request.Line, request.Column);

            ResolveResult resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc);
            var           response      = new GotoDefinitionResponse();

            if (resolveResult != null)
            {
                var region = resolveResult.GetDefinitionRegion();
                response.FileName = region.FileName == null ? null : region.FileName.ApplyPathReplacementsForClient();
                response.Line     = region.BeginLine;
                response.Column   = region.BeginColumn;
            }

            return(response);
        }
Example #6
0
        public override void Run(ResolveResult symbol)
        {
            if (symbol == null)
            {
                return;
            }

            var trr = symbol as TypeResolveResult;
            var def = symbol.Type.GetDefinition();

            if (trr != null && def != null && def.Parts.Count > 1)
            {
                ShowPopupWithPartialClasses(def);
                return;
            }

            DomRegion pos = symbol.GetDefinitionRegion();

            if (string.IsNullOrEmpty(pos.FileName))
            {
                IEntity entity = GetSymbol(symbol) as IEntity;
                if (entity != null)
                {
                    NavigationService.NavigateTo(entity);
                }
            }
            else
            {
                try {
                    if (pos.Begin.IsEmpty)
                    {
                        FileService.OpenFile(pos.FileName);
                    }
                    else
                    {
                        FileService.JumpToFilePosition(pos.FileName, pos.BeginLine, pos.BeginColumn);
                    }
                } catch (Exception ex) {
                    MessageService.ShowException(ex, "Error jumping to '" + pos.FileName + "'.");
                }
            }
        }