예제 #1
0
		ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
		{
			if (disableDefinitionView)
				return null;
			IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
			if (window == null) return null;
			ITextEditorProvider provider = window.ActiveViewContent as ITextEditorProvider;
			if (provider == null) return null;
			ITextEditor editor = provider.TextEditor;
			
			// e might be null when this is a manually triggered update
			// don't resolve when an unrelated file was changed
			if (e != null && editor.FileName != e.FileName) return null;
			
			IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(editor.FileName);
			if (expressionFinder == null) return null;
			ITextEditorCaret caret = editor.Caret;
			string content = (e == null) ? editor.Document.Text : e.Content.Text;
			if (caret.Offset > content.Length) {
				LoggingService.Debug("caret.Offset = " + caret.Offset + ", content.Length=" + content.Length);
				return null;
			}
			try {
				ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
				if (expr.Expression == null) return null;
				return ParserService.Resolve(expr, caret.Line, caret.Column, editor.FileName, content);
			} catch (Exception ex) {
				disableDefinitionView = true;
				ctl.Visibility = Visibility.Collapsed;
				MessageService.ShowException(ex, "Error resolving at " + caret.Line + "/" + caret.Column
				                             + ". DefinitionViewPad is disabled until you restart SharpDevelop.");
				return null;
			}
		}
예제 #2
0
        ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
        {
            if (disableDefinitionView)
            {
                return(null);
            }
            IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;

            if (window == null)
            {
                return(null);
            }
            ITextEditorControlProvider provider = window.ActiveViewContent as ITextEditorControlProvider;

            if (provider == null)
            {
                return(null);
            }
            TextEditorControl ctl = provider.TextEditorControl;

            // e might be null when this is a manually triggered update
            string fileName = (e == null) ? ctl.FileName : e.FileName;

            if (ctl.FileName != fileName)
            {
                return(null);
            }
            IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName);

            if (expressionFinder == null)
            {
                return(null);
            }
            Caret  caret   = ctl.ActiveTextAreaControl.Caret;
            string content = (e == null) ? ctl.Text : e.Content;

            if (caret.Offset > content.Length)
            {
                LoggingService.Debug("caret.Offset = " + caret.Offset + ", content.Length=" + content.Length);
                return(null);
            }
            try {
                ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
                if (expr.Expression == null)
                {
                    return(null);
                }
                return(ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content));
            } catch (Exception ex) {
                disableDefinitionView = true;
                this.Control.Visible  = false;
                MessageService.ShowError(ex, "Error resolving at " + (caret.Line + 1) + "/" + (caret.Column + 1)
                                         + ". DefinitionViewPad is disabled until you restart SharpDevelop.");
                return(null);
            }
        }
예제 #3
0
        ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
        {
            if (disableDefinitionView)
            {
                return(null);
            }
            IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;

            if (window == null)
            {
                return(null);
            }
            ITextEditorProvider provider = window.ActiveViewContent as ITextEditorProvider;

            if (provider == null)
            {
                return(null);
            }
            ITextEditor editor = provider.TextEditor;

            // e might be null when this is a manually triggered update
            // don't resolve when an unrelated file was changed
            if (e != null && editor.FileName != e.FileName)
            {
                return(null);
            }

            IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(editor.FileName);

            if (expressionFinder == null)
            {
                return(null);
            }
            ITextEditorCaret caret   = editor.Caret;
            string           content = (e == null) ? editor.Document.Text : e.Content.Text;

            if (caret.Offset > content.Length)
            {
                LoggingService.Debug("caret.Offset = " + caret.Offset + ", content.Length=" + content.Length);
                return(null);
            }
            try {
                ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
                if (expr.Expression == null)
                {
                    return(null);
                }
                return(ParserService.Resolve(expr, caret.Line, caret.Column, editor.FileName, content));
            } catch (Exception ex) {
                disableDefinitionView = true;
                ctl.Visibility        = Visibility.Collapsed;
                MessageService.ShowException(ex, "Error resolving at " + caret.Line + "/" + caret.Column
                                             + ". DefinitionViewPad is disabled until you restart SharpDevelop.");
                return(null);
            }
        }
예제 #4
0
		void UpdateTick(object sender, ParserUpdateStepEventArgs e)
		{
			if (!this.IsVisible) return;
			LoggingService.Debug("DefinitionViewPad.Update");
			ResolveResult res = ResolveAtCaret(e);
			if (res == null) return;
			FilePosition pos = res.GetDefinitionPosition();
			if (pos.IsEmpty) return;
			WorkbenchSingleton.SafeThreadAsyncCall(OpenFile, pos);
		}
예제 #5
0
		void UpdateTick(ParserUpdateStepEventArgs e)
		{
			if (!ctl.IsVisible) return;
			LoggingService.Debug("DefinitionViewPad.Update");
			
			ResolveResult res = ResolveAtCaret(e);
			if (res == null) return;
			FilePosition pos = res.GetDefinitionPosition();
			if (pos.IsEmpty) return;
			OpenFile(pos);
		}
예제 #6
0
        void OnUpdateStep(object sender, ParserUpdateStepEventArgs e)
        {
            if (FileUtility.IsEqualFileName(e.FileName, this.TextEditor.FileName))
            {
                ParseInformation parseInfo = e.ParseInformation;
//				if (parseInfo == null && this.storedParseInformation)
//					parseInfo = ParserService.GetParseInformation(this.TextEditor.FileName);
//				if (parseInfo != null) {
//					ICompilationUnit cu = parseInfo.MostRecentCompilationUnit;
//				}
                WorkbenchSingleton.SafeThreadAsyncCall(MarkOutstanding);
            }
        }
예제 #7
0
        private ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
        {
            IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;

            if (window == null)
            {
                return(null);
            }
            ITextEditorControlProvider provider = window.ActiveViewContent as ITextEditorControlProvider;

            if (provider == null)
            {
                return(null);
            }
            TextEditorControl ctl = provider.TextEditorControl;

            // e might be null when this is a manually triggered update
            string fileName = (e == null) ? ctl.FileName : e.FileName;

            if (ctl.FileName != fileName)
            {
                return(null);
            }
            IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName);

            if (expressionFinder == null)
            {
                return(null);
            }
            Caret            caret   = ctl.ActiveTextAreaControl.Caret;
            string           content = (e == null) ? ctl.Text : e.Content;
            ExpressionResult expr    = expressionFinder.FindFullExpression(content, caret.Offset);

            if (expr.Expression == null)
            {
                return(null);
            }

            // save the current position
            if (this.lastPoint != null && this.lastPoint == caret.Position)
            {
                return(null);
            }
            this.lastPoint = caret.Position;
            this.AddToStringCollection(string.Format(CultureInfo.InvariantCulture, "!{0}", expr.Expression));

            return(ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content));
        }
예제 #8
0
		ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
		{
			IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
			if (window == null) return null;
			ITextEditorControlProvider provider = window.ActiveViewContent as ITextEditorControlProvider;
			if (provider == null) return null;
			TextEditorControl ctl = provider.TextEditorControl;
			
			// e might be null when this is a manually triggered update
			string fileName = (e == null) ? ctl.FileName : e.FileName;
			if (ctl.FileName != fileName) return null;
			IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName);
			if (expressionFinder == null) return null;
			Caret caret = ctl.ActiveTextAreaControl.Caret;
			string content = (e == null) ? ctl.Text : e.Content;
			ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
			if (expr.Expression == null) return null;
			return ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content);
		}
예제 #9
0
        void UpdateTick(object sender, ParserUpdateStepEventArgs e)
        {
            if (!this.IsVisible)
            {
                return;
            }
            LoggingService.Debug("DefinitionViewPad.Update");
            ResolveResult res = ResolveAtCaret(e);

            if (res == null)
            {
                return;
            }
            FilePosition pos = res.GetDefinitionPosition();

            if (pos.IsEmpty)
            {
                return;
            }
            WorkbenchSingleton.SafeThreadAsyncCall(OpenFile, pos);
        }
예제 #10
0
        void UpdateTick(ParserUpdateStepEventArgs e)
        {
            if (!this.IsVisible)
            {
                return;
            }
            LoggingService.Debug("DefinitionViewPad.Update");

            ResolveResult res = ResolveAtCaret(e);

            if (res == null)
            {
                return;
            }
            FilePosition pos = res.GetDefinitionPosition();

            if (pos.IsEmpty)
            {
                return;
            }
            OpenFile(pos);
        }
예제 #11
0
        void UpdateTick(ParserUpdateStepEventArgs e)
        {
            this.dynamicHelpTerms.Clear();
            ResolveResult res = ResolveAtCaret(e);

            if (res == null)
            {
                return;
            }

            if (res != null && res.ResolvedType != null)
            {
                this.AddToStringCollection(res.ResolvedType.FullyQualifiedName);
            }

            MemberResolveResult      member = res as MemberResolveResult;
            NamespaceResolveResult   nspace = res as NamespaceResolveResult;
            MethodGroupResolveResult method = res as MethodGroupResolveResult;
            TypeResolveResult        types  = res as TypeResolveResult;

            if (member != null && member.ResolvedMember != null)
            {
                this.AddToStringCollection(0, member.ResolvedMember.FullyQualifiedName);
            }
            if (nspace != null)
            {
                this.AddToStringCollection(0, nspace.Name);
            }
            if (method != null && method.ContainingType != null)
            {
                this.AddToStringCollection(0, method.ContainingType.FullyQualifiedName);
            }
            if (types != null && types.ResolvedClass != null)
            {
                this.AddToStringCollection(0, types.ResolvedClass.FullyQualifiedName);
            }

            BuildDynamicHelpList();
        }
예제 #12
0
        ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
        {
            IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;

            if (window == null)
            {
                return(null);
            }
            ITextEditorControlProvider provider = window.ActiveViewContent as ITextEditorControlProvider;

            if (provider == null)
            {
                return(null);
            }
            TextEditorControl ctl = provider.TextEditorControl;

            // e might be null when this is a manually triggered update
            string fileName = (e == null) ? ctl.FileName : e.FileName;

            if (ctl.FileName != fileName)
            {
                return(null);
            }
            IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName);

            if (expressionFinder == null)
            {
                return(null);
            }
            Caret            caret   = ctl.ActiveTextAreaControl.Caret;
            string           content = (e == null) ? ctl.Text : e.Content;
            ExpressionResult expr    = expressionFinder.FindFullExpression(content, caret.Offset);

            if (expr.Expression == null)
            {
                return(null);
            }
            return(ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content));
        }
 void OnUpdateStep(object sender, ParserUpdateStepEventArgs e)
 {
     if (FileUtility.IsEqualFileName(e.FileName, this.TextEditor.FileName))
     {
         ParseInformation parseInfo = e.ParseInformation;
         if (parseInfo == null && this.declarations == null)
         {
             parseInfo = ParserService.GetParseInformation(this.TextEditor.FileName);
         }
         if (parseInfo != null)
         {
             ICompilationUnit cu    = parseInfo.MostRecentCompilationUnit;
             CompileUnit      booCu = cu.Tag as CompileUnit;
             if (booCu != null)
             {
                 FindAssignmentsVisitor visitor = new FindAssignmentsVisitor();
                 booCu.Accept(visitor);
                 this.declarations = visitor.declarations;                         // volatile access!
             }
         }
         WorkbenchSingleton.SafeThreadAsyncCall(MarkOutstanding);
     }
 }
예제 #14
0
 void OnParserUpdateStep(object sender, ParserUpdateStepEventArgs e)
 {
     WorkbenchSingleton.SafeThreadAsyncCall(UpdateTick, e);
 }
		void OnParserUpdateStep(object sender, ParserUpdateStepEventArgs e)
		{
			WorkbenchSingleton.SafeThreadAsyncCall(UpdateTick, e);
		}
		ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
		{
			if (disableDefinitionView)
				return null;
			IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
			if (window == null) return null;
			ITextEditorControlProvider provider = window.ActiveViewContent as ITextEditorControlProvider;
			if (provider == null) return null;
			TextEditorControl ctl = provider.TextEditorControl;
			
			// e might be null when this is a manually triggered update
			string fileName = (e == null) ? ctl.FileName : e.FileName;
			if (ctl.FileName != fileName) return null;
			IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName);
			if (expressionFinder == null) return null;
			Caret caret = ctl.ActiveTextAreaControl.Caret;
			string content = (e == null) ? ctl.Text : e.Content;
			if (caret.Offset > content.Length) {
				LoggingService.Debug("caret.Offset = " + caret.Offset + ", content.Length=" + content.Length);
				return null;
			}
			try {
				ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
				if (expr.Expression == null) return null;
				return ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content);
			} catch (Exception ex) {
				disableDefinitionView = true;
				this.Control.Visible = false;
				MessageService.ShowError(ex, "Error resolving at " + (caret.Line + 1) + "/" + (caret.Column + 1)
				                         + ". DefinitionViewPad is disabled until you restart SharpDevelop.");
				return null;
			}
		}
예제 #17
0
		void OnParserUpdateStep(object sender, ParserUpdateStepEventArgs e)
		{
			UpdateTick(e);
		}
예제 #18
0
 void OnParserUpdateStep(object sender, ParserUpdateStepEventArgs e)
 {
     UpdateTick(e);
 }