Exemplo n.º 1
0
 void OnTextEditorEvent(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data)
 {
     if (@event == TextEditorUIContextListenerEvent.NewContent)
     {
         AddCodeMappings(uiContext, data as AvalonEditTextOutput);
     }
 }
Exemplo n.º 2
0
 public IconBarMargin(ITextEditorUIContext uiContext, ITextLineObjectManager textLineObjectManager, IImageManager imageManager, IThemeManager themeManager)
 {
     this.uiContext = uiContext;
     this.textLineObjectManager = textLineObjectManager;
     this.imageManager = imageManager;
     this.themeManager = themeManager;
 }
Exemplo n.º 3
0
 public IconBarMargin(ITextEditorUIContext uiContext, ITextLineObjectManager textLineObjectManager, IImageManager imageManager, IThemeManager themeManager)
 {
     this.uiContext             = uiContext;
     this.textLineObjectManager = textLineObjectManager;
     this.imageManager          = imageManager;
     this.themeManager          = themeManager;
 }
Exemplo n.º 4
0
        List <ILCodeBreakpoint> GetILCodeBreakpoints(ITextEditorUIContext uiContext, IList <SourceCodeMapping> mappings)
        {
            var list = new List <ILCodeBreakpoint>();

            if (mappings.Count == 0)
            {
                return(list);
            }
            var mapping = mappings[0];

            foreach (var ilbp in ILCodeBreakpoints)
            {
                TextPosition location, endLocation;
                if (!ilbp.GetLocation(uiContext, out location, out endLocation))
                {
                    continue;
                }
                if (location != mapping.StartPosition || endLocation != mapping.EndPosition)
                {
                    continue;
                }

                list.Add(ilbp);
            }

            return(list);
        }
 public void RaiseAddedEvent(ITextEditorUIContext uiContext)
 {
     if (uiContext == null)
         throw new ArgumentNullException();
     foreach (var info in listeners.ToArray())
         info.Execute(TextEditorUIContextListenerEvent.Added, uiContext, null);
 }
Exemplo n.º 6
0
        public void Toggle(ITextEditorUIContext uiContext, int line, int column = 0)
        {
            var bps   = uiContext.GetCodeMappings().Find(line, column);
            var ilbps = GetILCodeBreakpoints(uiContext, bps);

            if (ilbps.Count > 0)
            {
                if (IsEnabled(ilbps))
                {
                    foreach (var ilbp in ilbps)
                    {
                        Remove(ilbp);
                    }
                }
                else
                {
                    foreach (var bpm in ilbps)
                    {
                        bpm.IsEnabled = true;
                    }
                }
            }
            else if (bps.Count > 0)
            {
                foreach (var bp in bps)
                {
                    var md     = bp.Mapping.Method;
                    var serMod = serializedDnModuleCreator.Create(md.Module);
                    var key    = new SerializedDnToken(serMod, md.MDToken);
                    Add(new ILCodeBreakpoint(key, bp.ILRange.From));
                }
                uiContext.ScrollAndMoveCaretTo(bps[0].StartPosition.Line, bps[0].StartPosition.Column);
            }
        }
Exemplo n.º 7
0
 void OnTextEditorUIContextEvent(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data)
 {
     if (NewMethodInfoAvailable != null)
     {
         NewMethodInfoAvailable(this, EventArgs.Empty);
     }
 }
Exemplo n.º 8
0
 BamlTabSaver(IFileTab tab, BamlResourceElementNode bamlNode, ITextEditorUIContext uiContext, IMessageBoxManager messageBoxManager)
 {
     this.tab               = tab;
     this.bamlNode          = bamlNode;
     this.uiContext         = uiContext;
     this.messageBoxManager = messageBoxManager;
 }
Exemplo n.º 9
0
 public static CodeMappings TryGetCodeMappings(this ITextEditorUIContext self)
 {
     if (self == null)
     {
         return(null);
     }
     return((CodeMappings)self.GetOutputData(CodeMappingsLoader.CodeMappingsKey));
 }
Exemplo n.º 10
0
 void OnTextEditorUIContextEvent(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data)
 {
     if (@event == TextEditorUIContextListenerEvent.NewContent)
     {
         Remove(uiContext);
         UpdateStackFrameLines(uiContext, false);
     }
 }
Exemplo n.º 11
0
 NodeTabSaver(IMessageBoxManager messageBoxManager, IFileTab tab, IFileTreeNodeDecompiler fileTreeNodeDecompiler, ILanguage language, ITextEditorUIContext uiContext, IFileTreeNodeData[] nodes)
 {
     this.messageBoxManager = messageBoxManager;
     this.tab = tab;
     this.fileTreeNodeDecompiler = fileTreeNodeDecompiler;
     this.language = language;
     this.uiContext = uiContext;
     this.nodes = nodes;
 }
Exemplo n.º 12
0
		public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService) {
			var marker = CreateMarkerInternal(markerService, uiContext);
			var cm = uiContext.GetCodeMappings();
			marker.ZOrder = ZOrder;
			marker.IsVisible = b => cm.TryGetMapping(SerializedDnToken) != null;
			marker.TextMarkerObject = this;
			Initialize(uiContext, markerService, marker);
			return marker;
		}
Exemplo n.º 13
0
 NodeTabSaver(IMessageBoxManager messageBoxManager, IFileTab tab, IFileTreeNodeDecompiler fileTreeNodeDecompiler, ILanguage language, ITextEditorUIContext uiContext, IFileTreeNodeData[] nodes)
 {
     this.messageBoxManager = messageBoxManager;
     this.tab = tab;
     this.fileTreeNodeDecompiler = fileTreeNodeDecompiler;
     this.language  = language;
     this.uiContext = uiContext;
     this.nodes     = nodes;
 }
Exemplo n.º 14
0
        void AddCodeMappings(ITextEditorUIContext uiContext, AvalonEditTextOutput output)
        {
            if (output == null)
            {
                return;
            }
            var cm = new CodeMappings(output.DebuggerMemberMappings, serializedDnModuleCreator);

            uiContext.AddOutputData(CodeMappingsKey, cm);
        }
Exemplo n.º 15
0
        void AddCodeMappings(ITextEditorUIContext uiContext, AvalonEditTextOutput output)
        {
            if (output == null)
            {
                return;
            }
            var cm = new CodeMappings(output.DebuggerMemberMappings);

            uiContext.AddOutputData(CodeMappingsConstants.CodeMappingsKey, cm);
        }
Exemplo n.º 16
0
 static IEnumerable <CodeReference> FindInstructions(ITextEditorUIContext uiContext)
 {
     foreach (var r in uiContext.GetSelectedCodeReferences())
     {
         if (r.IsLocalTarget && r.Reference is InstructionReference)
         {
             yield return(r);
         }
     }
 }
Exemplo n.º 17
0
        public int GetLineNumber(ITextEditorUIContext uiContext)
        {
            TextPosition location, endLocation;

            if (GetLocation(uiContext, out location, out endLocation))
            {
                return(location.Line);
            }
            return(-1);
        }
Exemplo n.º 18
0
        public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService)
        {
            var marker = CreateMarkerInternal(markerService, uiContext);
            var cm     = uiContext.GetCodeMappings();

            marker.ZOrder           = ZOrder;
            marker.IsVisible        = b => cm.TryGetMapping(SerializedDnToken) != null;
            marker.TextMarkerObject = this;
            Initialize(uiContext, markerService, marker);
            return(marker);
        }
Exemplo n.º 19
0
			public override bool IsVisible(ITextEditorUIContext uiContext) {
				TextPosition location, endLocation;
				var cm = uiContext.GetCodeMappings();
				var mm = cm.TryGetMapping(SerializedDnToken);
				if (mm == null)
					return false;
				if (!mm.GetInstructionByTokenAndOffset(ILOffset, out location, out endLocation))
					return false;

				return true;
			}
 public void RaiseAddedEvent(ITextEditorUIContext uiContext)
 {
     if (uiContext == null)
     {
         throw new ArgumentNullException();
     }
     foreach (var info in listeners.ToArray())
     {
         info.Execute(TextEditorUIContextListenerEvent.Added, uiContext, null);
     }
 }
 public void RaiseNewContentEvent(ITextEditorUIContext uiContext, ITextOutput output, TextEditorUIContextListener listener, double order)
 {
     if (uiContext == null)
         throw new ArgumentNullException();
     if (output == null)
         throw new ArgumentNullException();
     var infos = new List<ListenerInfo>(listeners);
     infos.Add(new ListenerInfo(listener, order));
     Sort(infos);
     foreach (var info in infos)
         info.Execute(TextEditorUIContextListenerEvent.NewContent, uiContext, output);
 }
Exemplo n.º 22
0
		protected override void Initialize(ITextEditorUIContext uiContext, ITextMarkerService markerService, ITextMarker marker) {
			marker.HighlightingColor = () => {
				switch (type) {
				case StackFrameLineType.CurrentStatement:
					return DebuggerColors.StackFrameCurrentHighlightingColor;
				case StackFrameLineType.SelectedReturnStatement:
					return DebuggerColors.StackFrameSelectedHighlightingColor;
				case StackFrameLineType.ReturnStatement:
					return DebuggerColors.StackFrameReturnHighlightingColor;
				default:
					throw new InvalidOperationException();
				}
			};
		}
Exemplo n.º 23
0
 static object GetReference(IMenuItemContext context, out ITextEditorUIContext uiContext)
 {
     uiContext = null;
     if (context.CreatorObject.Guid != new Guid(MenuConstants.GUIDOBJ_TEXTEDITORCONTROL_GUID))
     {
         return(null);
     }
     uiContext = context.Find <ITextEditorUIContext>();
     if (uiContext == null)
     {
         return(null);
     }
     return(context.Find <CodeReference>());
 }
Exemplo n.º 24
0
		public static bool MoveCaretTo(ITextEditorUIContext uiContext, SerializedDnToken key, uint ilOffset) {
			if (uiContext == null)
				return false;

			CodeMappings cm;
			if (!VerifyAndGetCurrentDebuggedMethod(uiContext, key, out cm))
				return false;

			TextPosition location, endLocation;
			if (!cm.TryGetMapping(key).GetInstructionByTokenAndOffset(ilOffset, out location, out endLocation))
				return false;

			uiContext.ScrollAndMoveCaretTo(location.Line, location.Column);
			return true;
		}
Exemplo n.º 25
0
 void Remove(ITextEditorUIContext uiContext)
 {
     if (uiContext == null)
     {
         return;
     }
     for (int i = stackFrameLines.Count - 1; i >= 0; i--)
     {
         if (stackFrameLines[i].TextView == uiContext)
         {
             textLineObjectManager.Remove(stackFrameLines[i]);
             stackFrameLines.RemoveAt(i);
         }
     }
 }
Exemplo n.º 26
0
        ITextMarker CreateMarkerInternal(ITextMarkerService markerService, ITextEditorUIContext uiContext)
        {
            TextPosition location, endLocation;

            if (!GetLocation(uiContext, out location, out endLocation))
            {
                throw new InvalidOperationException();
            }

            var line        = markerService.TextView.Document.GetLineByNumber(location.Line);
            var endLine     = markerService.TextView.Document.GetLineByNumber(endLocation.Line);
            int startOffset = line.Offset + location.Column - 1;
            int endOffset   = endLine.Offset + endLocation.Column - 1;

            return(markerService.Create(startOffset, endOffset - startOffset));
        }
Exemplo n.º 27
0
            public override bool IsVisible(ITextEditorUIContext uiContext)
            {
                TextPosition location, endLocation;
                var          cm = uiContext.GetCodeMappings();
                var          mm = cm.TryGetMapping(SerializedDnToken);

                if (mm == null)
                {
                    return(false);
                }
                if (!mm.GetInstructionByTokenAndOffset(ILOffset, out location, out endLocation))
                {
                    return(false);
                }

                return(true);
            }
Exemplo n.º 28
0
		public bool GetLocation(ITextEditorUIContext uiContext, out TextPosition location, out TextPosition endLocation) {
			var cm = uiContext.GetCodeMappings();
			var mapping = cm.TryGetMapping(methodKey);
			if (mapping == null) {
				location = endLocation = new TextPosition();
				return false;
			}

			bool isMatch;
			var map = mapping.GetInstructionByOffset(ilOffset, out isMatch);
			if (map == null) {
				location = endLocation = new TextPosition();
				return false;
			}

			location = map.StartPosition;
			endLocation = map.EndPosition;
			return true;
		}
Exemplo n.º 29
0
        protected override void Initialize(ITextEditorUIContext uiContext, ITextMarkerService markerService, ITextMarker marker)
        {
            marker.HighlightingColor = () => {
                switch (type)
                {
                case StackFrameLineType.CurrentStatement:
                    return(DebuggerColors.StackFrameCurrentHighlightingColor);

                case StackFrameLineType.SelectedReturnStatement:
                    return(DebuggerColors.StackFrameSelectedHighlightingColor);

                case StackFrameLineType.ReturnStatement:
                    return(DebuggerColors.StackFrameReturnHighlightingColor);

                default:
                    throw new InvalidOperationException();
                }
            };
        }
Exemplo n.º 30
0
        internal static IList <SourceCodeMapping> GetMappings(ITextEditorUIContext uiContext, int line, int col)
        {
            if (uiContext == null)
            {
                return(null);
            }
            var cm   = uiContext.GetCodeMappings();
            var list = cm.Find(line, col);

            if (list.Count == 0)
            {
                return(null);
            }
            if (!(list[0].StartPosition.Line <= line && line <= list[0].EndPosition.Line))
            {
                return(null);
            }
            return(list);
        }
        public void RaiseNewContentEvent(ITextEditorUIContext uiContext, ITextOutput output, TextEditorUIContextListener listener, double order)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException();
            }
            if (output == null)
            {
                throw new ArgumentNullException();
            }
            var infos = new List <ListenerInfo>(listeners);

            infos.Add(new ListenerInfo(listener, order));
            Sort(infos);
            foreach (var info in infos)
            {
                info.Execute(TextEditorUIContextListenerEvent.NewContent, uiContext, output);
            }
        }
Exemplo n.º 32
0
        public static void Execute(ITextEditorUIContext uiContext, Lazy <IMethodAnnotations> methodAnnotations)
        {
            if (!CanExecute(uiContext))
            {
                return;
            }

            var copier = new InstructionILBytesCopier();
            var text   = copier.Copy(FindInstructions(uiContext), methodAnnotations);

            if (text.Length > 0)
            {
                Clipboard.SetText(text);
                if (copier.FoundUnknownBytes)
                {
                    Shared.App.MsgBox.Instance.ShowIgnorableMessage(new Guid("141A1744-13CD-4835-A804-08D93D8E0D2B"),
                                                                    dnSpy_AsmEditor_Resources.UnknownBytesMsg,
                                                                    MsgBoxButton.OK);
                }
            }
        }
Exemplo n.º 33
0
        public bool GetLocation(ITextEditorUIContext uiContext, out TextPosition location, out TextPosition endLocation)
        {
            var cm      = uiContext.GetCodeMappings();
            var mapping = cm.TryGetMapping(methodKey);

            if (mapping == null)
            {
                location = endLocation = new TextPosition();
                return(false);
            }

            bool isMatch;
            var  map = mapping.GetInstructionByOffset(ilOffset, out isMatch);

            if (map == null)
            {
                location = endLocation = new TextPosition();
                return(false);
            }

            location    = map.StartPosition;
            endLocation = map.EndPosition;
            return(true);
        }
Exemplo n.º 34
0
        public static bool MoveCaretTo(ITextEditorUIContext uiContext, SerializedDnToken key, uint ilOffset)
        {
            if (uiContext == null)
            {
                return(false);
            }

            CodeMappings cm;

            if (!VerifyAndGetCurrentDebuggedMethod(uiContext, key, out cm))
            {
                return(false);
            }

            TextPosition location, endLocation;

            if (!cm.TryGetMapping(key).GetInstructionByTokenAndOffset(ilOffset, out location, out endLocation))
            {
                return(false);
            }

            uiContext.ScrollAndMoveCaretTo(location.Line, location.Column);
            return(true);
        }
Exemplo n.º 35
0
		public static bool VerifyAndGetCurrentDebuggedMethod(ITextEditorUIContext uiContext, SerializedDnToken serToken, out CodeMappings codeMappings) {
			codeMappings = uiContext.GetCodeMappings();
			return codeMappings.TryGetMapping(serToken) != null;
		}
Exemplo n.º 36
0
 public override bool IsVisible(ITextEditorUIContext uiContext)
 {
     return(this.uiContext == uiContext);
 }
Exemplo n.º 37
0
 public StackFrameLine(StackFrameLineType type, ITextEditorUIContext uiContext, SerializedDnToken methodKey, uint ilOffset)
     : base(methodKey, ilOffset)
 {
     this.type      = type;
     this.uiContext = uiContext;
 }
Exemplo n.º 38
0
		/// <summary>
		/// Should be called each time the IL offset has been updated
		/// </summary>
		bool UpdateStackFrameLines(ITextEditorUIContext uiContext, bool moveCaret = false) {
			if (uiContext == null)
				return false;
			Remove(uiContext);
			bool movedCaret = false;
			var cm = uiContext.TryGetCodeMappings();
			bool updateReturnStatements = cm != null && theDebugger.ProcessState == DebuggerProcessState.Stopped;
			if (updateReturnStatements) {
				int frameNo = -1;
				bool tooManyFrames;
				foreach (var frame in GetFrames(MAX_STACKFRAME_LINES, out tooManyFrames)) {
					frameNo++;
					if (!frame.IsILFrame)
						continue;
					var ip = frame.ILFrameIP;
					if (!ip.IsExact && !ip.IsApproximate && !ip.IsProlog && !ip.IsEpilog)
						continue;
					uint token = frame.Token;
					if (token == 0)
						continue;
					var serAsm = frame.SerializedDnModule;
					if (serAsm == null)
						continue;

					StackFrameLineType type;
					if (frameNo == 0)
						type = StackFrameLineType.CurrentStatement;
					else
						type = currentState.FrameNumber == frameNo ? StackFrameLineType.SelectedReturnStatement : StackFrameLineType.ReturnStatement;
					var key = new SerializedDnToken(serAsm.Value, token);
					uint offset = frame.GetILOffset(moduleLoader.Value);
					MethodDef methodDef;
					TextPosition location, endLocation;
					var mm = cm.TryGetMapping(key);
					if (mm != null && mm.GetInstructionByTokenAndOffset(offset, out methodDef, out location, out endLocation)) {
						var rs = new StackFrameLine(type, uiContext, key, offset);
						stackFrameLines.Add(rs);
						textLineObjectManager.Add(rs);

						if (moveCaret && frameNo == currentState.FrameNumber) {
							uiContext.ScrollAndMoveCaretTo(location.Line, location.Column);
							movedCaret = true;
						}
					}
				}
			}
			return movedCaret;
		}
Exemplo n.º 39
0
			protected override void Initialize(ITextEditorUIContext uiContext, ITextMarkerService markerService, ITextMarker marker) {
				marker.HighlightingColor = () => ilbp.IsEnabled ? DebuggerColors.CodeBreakpointHighlightingColor : DebuggerColors.CodeBreakpointDisabledHighlightingColor;
			}
Exemplo n.º 40
0
		void OnTextEditorUIContextEvent(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data) {
			if (@event == TextEditorUIContextListenerEvent.NewContent) {
				Remove(uiContext);
				UpdateStackFrameLines(uiContext, false);
			}
		}
Exemplo n.º 41
0
		void Remove(ITextEditorUIContext uiContext) {
			if (uiContext == null)
				return;
			for (int i = stackFrameLines.Count - 1; i >= 0; i--) {
				if (stackFrameLines[i].TextView == uiContext) {
					textLineObjectManager.Remove(stackFrameLines[i]);
					stackFrameLines.RemoveAt(i);
				}
			}
		}
Exemplo n.º 42
0
		BamlTabSaver(IFileTab tab, BamlResourceElementNode bamlNode, ITextEditorUIContext uiContext, IMessageBoxManager messageBoxManager) {
			this.tab = tab;
			this.bamlNode = bamlNode;
			this.uiContext = uiContext;
			this.messageBoxManager = messageBoxManager;
		}
Exemplo n.º 43
0
 public IconBarCommandContext(ITextEditorUIContext uiContext, int line)
 {
     this.UIContext = uiContext;
     this.Line = line;
 }
Exemplo n.º 44
0
 void AddCodeMappings(ITextEditorUIContext uiContext, AvalonEditTextOutput output)
 {
     if (output == null)
         return;
     var cm = new CodeMappings(output.DebuggerMemberMappings);
     uiContext.AddOutputData(CodeMappingsConstants.CodeMappingsKey, cm);
 }
Exemplo n.º 45
0
 protected override void Initialize(ITextEditorUIContext uiContext, ITextMarkerService markerService, ITextMarker marker)
 {
     marker.HighlightingColor = () => ilbp.IsEnabled ? DebuggerColors.CodeBreakpointHighlightingColor : DebuggerColors.CodeBreakpointDisabledHighlightingColor;
 }
Exemplo n.º 46
0
		public override bool IsVisible(ITextEditorUIContext uiContext) {
			return this.uiContext == uiContext;
		}
Exemplo n.º 47
0
 List <ILCodeBreakpoint> GetILCodeBreakpoints(ITextEditorUIContext uiContext, int line, int column)
 {
     return(GetILCodeBreakpoints(uiContext, uiContext.GetCodeMappings().Find(line, column)));
 }
Exemplo n.º 48
0
		void AddCodeMappings(ITextEditorUIContext uiContext, AvalonEditTextOutput output) {
			if (output == null)
				return;
			var cm = new CodeMappings(output.DebuggerMemberMappings, serializedDnModuleCreator);
			uiContext.AddOutputData(CodeMappingsKey, cm);
		}
 public void Execute(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data)
 {
     Listener(@event, uiContext, data);
 }
Exemplo n.º 50
0
		public StackFrameLine(StackFrameLineType type, ITextEditorUIContext uiContext, SerializedDnToken methodKey, uint ilOffset)
			: base(methodKey, ilOffset) {
			this.type = type;
			this.uiContext = uiContext;
		}
Exemplo n.º 51
0
 void OnTextEditorEvent(TextEditorUIContextListenerEvent @event, ITextEditorUIContext uiContext, object data)
 {
     if (@event == TextEditorUIContextListenerEvent.NewContent)
         AddCodeMappings(uiContext, data as AvalonEditTextOutput);
 }
Exemplo n.º 52
0
		internal static IList<SourceCodeMapping> GetMappings(ITextEditorUIContext uiContext, int line, int col) {
			if (uiContext == null)
				return null;
			var cm = uiContext.GetCodeMappings();
			var list = cm.Find(line, col);
			if (list.Count == 0)
				return null;
			if (!(list[0].StartPosition.Line <= line && line <= list[0].EndPosition.Line))
				return null;
			return list;
		}
Exemplo n.º 53
0
 static List<IIconBarObject> GetIconBarObjects(IList<IIconBarObject> objects, ITextEditorUIContext uiContext, int line)
 {
     var list = new List<IIconBarObject>();
     foreach (var obj in objects) {
         if (obj.GetLineNumber(uiContext) != line)
             continue;
         if (obj.ImageReference == null)
             continue;
         list.Add(obj);
     }
     list.Sort((a, b) => b.ZOrder.CompareTo(a.ZOrder));
     return list;
 }
Exemplo n.º 54
0
 public static bool CanExecute(ITextEditorUIContext uiContext)
 {
     return(uiContext != null &&
            FindInstructions(uiContext).Any());
 }
Exemplo n.º 55
0
 public void Toggle(ITextEditorUIContext uiContext, int line, int column = 0)
 {
     var bps = uiContext.GetCodeMappings().Find(line, column);
     var ilbps = GetILCodeBreakpoints(uiContext, bps);
     if (ilbps.Count > 0) {
         if (IsEnabled(ilbps)) {
             foreach (var ilbp in ilbps)
                 Remove(ilbp);
         }
         else {
             foreach (var bpm in ilbps)
                 bpm.IsEnabled = true;
         }
     }
     else if (bps.Count > 0) {
         foreach (var bp in bps) {
             var md = bp.Mapping.Method;
             var serMod = serializedDnModuleCreator.Create(md.Module);
             var key = new SerializedDnToken(serMod, md.MDToken);
             Add(new ILCodeBreakpoint(key, bp.ILRange.From));
         }
         uiContext.ScrollAndMoveCaretTo(bps[0].StartPosition.Line, bps[0].StartPosition.Column);
     }
 }
Exemplo n.º 56
0
		public static bool CanExecute(ITextEditorUIContext uiContext) {
			return uiContext != null &&
				FindInstructions(uiContext).Any();
		}
Exemplo n.º 57
0
		static IEnumerable<CodeReference> FindInstructions(ITextEditorUIContext uiContext) {
			foreach (var r in uiContext.GetSelectedCodeReferences()) {
				if (r.IsLocalTarget && r.Reference is InstructionReference)
					yield return r;
			}
		}
Exemplo n.º 58
0
 List<ILCodeBreakpoint> GetILCodeBreakpoints(ITextEditorUIContext uiContext, int line, int column)
 {
     return GetILCodeBreakpoints(uiContext, uiContext.GetCodeMappings().Find(line, column));
 }
Exemplo n.º 59
0
		public static void Execute(ITextEditorUIContext uiContext, Lazy<IMethodAnnotations> methodAnnotations) {
			if (!CanExecute(uiContext))
				return;

			var copier = new InstructionILBytesCopier();
			var text = copier.Copy(FindInstructions(uiContext), methodAnnotations);
			if (text.Length > 0) {
				try {
					Clipboard.SetText(text);
				}
				catch (ExternalException) { }
				if (copier.FoundUnknownBytes) {
					Shared.App.MsgBox.Instance.ShowIgnorableMessage(new Guid("141A1744-13CD-4835-A804-08D93D8E0D2B"),
						dnSpy_AsmEditor_Resources.UnknownBytesMsg,
						MsgBoxButton.OK);
				}
			}
		}
Exemplo n.º 60
0
        List<ILCodeBreakpoint> GetILCodeBreakpoints(ITextEditorUIContext uiContext, IList<SourceCodeMapping> mappings)
        {
            var list = new List<ILCodeBreakpoint>();
            if (mappings.Count == 0)
                return list;
            var mapping = mappings[0];
            foreach (var ilbp in ILCodeBreakpoints) {
                TextPosition location, endLocation;
                if (!ilbp.GetLocation(uiContext, out location, out endLocation))
                    continue;
                if (location != mapping.StartPosition || endLocation != mapping.EndPosition)
                    continue;

                list.Add(ilbp);
            }

            return list;
        }