From 322d9649879577ab2b3a03fdbb1e33321603f9b3 Mon Sep 17 00:00:00 2001 From: Lexikos Date: Fri, 5 Sep 2008 22:46:00 +0100 Subject: [PATCH 1/2] Implement AutoHotKey debugger support Original notes: https://www.autohotkey.com/docs/v2/AHKL_DBGPClients.htm Original source link: https://www.autohotkey.com/download/tools/XDebugClient_src.zip --- xdc.suo | Bin 64000 -> 0 bytes xdc/Forms/AboutForm.cs | 2 +- xdc/Forms/CallstackForm.cs | 6 +- xdc/Forms/PropertyForm.cs | 2 +- xdc/Forms/SourceFileForm.cs | 17 +- xdc/Forms/StatusForm.cs | 2 +- xdc/GUI/DebugNode.cs | 2 +- xdc/GUI/FileLoader/FileLoaderFactory.cs | 2 +- xdc/GUI/FileLoader/IFileLoader.cs | 2 +- xdc/GUI/FileLoader/RewriteFileLoader.cs | 4 +- xdc/GUI/FileLoader/SourceFileLoader.cs | 2 +- xdc/GUI/FileManager.cs | 2 +- xdc/MainForm.cs | 23 +- xdc/Program.cs | 2 +- xdc/Properties/AssemblyInfo.cs | 2 +- xdc/Properties/Resources.Designer.cs | 44 +- xdc/Properties/Resources.resx | 9 +- xdc/Syntax/AHK-Mode.xshd | 658 ++++++++++++++++++++++++ xdc/Syntax/AhkSyntaxModeProvider.cs | 38 ++ xdc/Syntax/SyntaxModes.xml | 3 + xdc/XDebug/ActiveMark.cs | 2 +- xdc/XDebug/Breakpoint.cs | 2 +- xdc/XDebug/BreakpointManager.cs | 2 +- xdc/XDebug/Client.cs | 35 +- xdc/XDebug/Command.cs | 2 +- xdc/XDebug/Location.cs | 2 +- xdc/XDebug/Property.cs | 7 +- xdc/XDebug/Response.cs | 2 +- xdc/XDebug/StackEntry.cs | 2 +- xdc/XDebug/XDebugEventArgs.cs | 2 +- xdc/xdc.csproj | 14 +- xdc/xdc.csproj.user | 1 + 32 files changed, 815 insertions(+), 80 deletions(-) delete mode 100644 xdc.suo create mode 100644 xdc/Syntax/AHK-Mode.xshd create mode 100644 xdc/Syntax/AhkSyntaxModeProvider.cs create mode 100644 xdc/Syntax/SyntaxModes.xml diff --git a/xdc.suo b/xdc.suo deleted file mode 100644 index 209e7b6bc3f9b9d5a4e17f8af45f432b8c5f8e49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64000 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 - * $Id$ + * $Id: AboutForm.cs 19 2007-04-30 07:44:15Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/Forms/CallstackForm.cs b/xdc/Forms/CallstackForm.cs index 61dcec6..1392c41 100644 --- a/xdc/Forms/CallstackForm.cs +++ b/xdc/Forms/CallstackForm.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: CallstackForm.cs 14 2007-04-29 17:32:40Z mathieuk $ * * This file is part of XDebugClient. * @@ -48,8 +48,8 @@ public void setCallstack(List stack) treeView1.Nodes.Clear(); foreach (StackEntry entry in stack) - { - treeView1.Nodes.Add(entry.location + "() at " + entry.fileName + ":" + entry.lineNumber); + { // Lexikos: Removed "()" before "at" since it doesn't always apply in AHK. + treeView1.Nodes.Add(entry.location + " at " + entry.fileName + ":" + entry.lineNumber); } } diff --git a/xdc/Forms/PropertyForm.cs b/xdc/Forms/PropertyForm.cs index 167e7f9..b56420a 100644 --- a/xdc/Forms/PropertyForm.cs +++ b/xdc/Forms/PropertyForm.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: PropertyForm.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/Forms/SourceFileForm.cs b/xdc/Forms/SourceFileForm.cs index 2af6827..159189e 100644 --- a/xdc/Forms/SourceFileForm.cs +++ b/xdc/Forms/SourceFileForm.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: SourceFileForm.cs 20 2007-04-30 07:47:59Z mathieuk $ * * This file is part of XDebugClient. * @@ -62,6 +62,12 @@ public SourceFileForm(xdc.XDebug.Client xdebugClient, string filename) this.textEditor.Document.BookmarkManager.Added += new ICSharpCode.TextEditor.Document.BookmarkEventHandler(OnBookmarkAdded); } + // Lexikos: AutoHotkey syntax highlighting. + static SourceFileForm() + { + HighlightingManager.Manager.AddSyntaxModeFileProvider(new Syntax.AhkSyntaxModeProvider()); + } + public void LoadFile(string filename) { this.textEditor.LoadFile(filename); @@ -88,6 +94,12 @@ public ICSharpCode.TextEditor.Document.BookmarkManager getBookmarkManager() return this.textEditor.Document.BookmarkManager; } + // Lexikos + public ICSharpCode.TextEditor.Document.IDocument getDocument() + { + return this.textEditor.Document; + } + private void setLineColor(int lineNumber, Color color) { IDocument d = this.textEditor.Document; @@ -239,7 +251,8 @@ public void LoadSourceAsFile(string sourceCode) { this.textEditor.BeginUpdate(); - this.textEditor.Document.HighlightingStrategy = ICSharpCode.TextEditor.Document.HighlightingStrategyFactory.CreateHighlightingStrategy("PHP"); + // Lexikos: Use AHK syntax highlighting. + this.textEditor.Document.HighlightingStrategy = ICSharpCode.TextEditor.Document.HighlightingStrategyFactory.CreateHighlightingStrategy("AHK"); this.textEditor.Text = sourceCode; diff --git a/xdc/Forms/StatusForm.cs b/xdc/Forms/StatusForm.cs index d3765aa..368379a 100644 --- a/xdc/Forms/StatusForm.cs +++ b/xdc/Forms/StatusForm.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: StatusForm.cs 14 2007-04-29 17:32:40Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/GUI/DebugNode.cs b/xdc/GUI/DebugNode.cs index bb60747..bb92822 100644 --- a/xdc/GUI/DebugNode.cs +++ b/xdc/GUI/DebugNode.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: DebugNode.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/GUI/FileLoader/FileLoaderFactory.cs b/xdc/GUI/FileLoader/FileLoaderFactory.cs index c3ecd9d..24c95d5 100644 --- a/xdc/GUI/FileLoader/FileLoaderFactory.cs +++ b/xdc/GUI/FileLoader/FileLoaderFactory.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: FileLoaderFactory.cs 9 2007-04-29 13:36:27Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/GUI/FileLoader/IFileLoader.cs b/xdc/GUI/FileLoader/IFileLoader.cs index deeb8b3..97dfd2c 100644 --- a/xdc/GUI/FileLoader/IFileLoader.cs +++ b/xdc/GUI/FileLoader/IFileLoader.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: IFileLoader.cs 19 2007-04-30 07:44:15Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/GUI/FileLoader/RewriteFileLoader.cs b/xdc/GUI/FileLoader/RewriteFileLoader.cs index 661b789..844d6f5 100644 --- a/xdc/GUI/FileLoader/RewriteFileLoader.cs +++ b/xdc/GUI/FileLoader/RewriteFileLoader.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: RewriteFileLoader.cs 19 2007-04-30 07:44:15Z mathieuk $ * * This file is part of XDebugClient. * @@ -133,7 +133,7 @@ public DirectoryRewrite DetermineRewriteRule(string filename) /* This should have a way to also detect filename[1].php, filename[2].php for * the FTP service. */ - fileDialog.Filter = "PHP file|" + sourceFilename; + fileDialog.Filter = "Source file|" + sourceFilename; // Lexikos: Changed "PHP" to "Source" if (fileDialog.ShowDialog() == DialogResult.OK) { diff --git a/xdc/GUI/FileLoader/SourceFileLoader.cs b/xdc/GUI/FileLoader/SourceFileLoader.cs index 36421f4..ab5073f 100644 --- a/xdc/GUI/FileLoader/SourceFileLoader.cs +++ b/xdc/GUI/FileLoader/SourceFileLoader.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: SourceFileLoader.cs 19 2007-04-30 07:44:15Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/GUI/FileManager.cs b/xdc/GUI/FileManager.cs index 0fdf586..b825617 100644 --- a/xdc/GUI/FileManager.cs +++ b/xdc/GUI/FileManager.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: FileManager.cs 14 2007-04-29 17:32:40Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/MainForm.cs b/xdc/MainForm.cs index 34bd5d8..a4119fb 100644 --- a/xdc/MainForm.cs +++ b/xdc/MainForm.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: MainForm.cs 19 2007-04-30 07:44:15Z mathieuk $ * * This file is part of XDebugClient. * @@ -147,6 +147,9 @@ private void StopDebuggingSession() this.ToggleMenuItems(false); _statusFrm.WriteStatusLine("(!) Debugging session terminated."); + + // Lexikos: Begin listening automatically. + startListeningToolStripMenuItem_Click(this, null); } private void WriteDebugLine(string line) @@ -169,7 +172,8 @@ private void SetActiveFileAndLine(Location location) if (_CurrentLocation.line != -1) { xdc.Forms.SourceFileForm previousFile = _fileMgr.getFormByRemoteFilename(_CurrentLocation.filename); - previousFile.RemoveActiveMark(); + if (previousFile != null) // Lexikos: Check for null! + previousFile.RemoveActiveMark(); } _CurrentLocation.line = location.line; @@ -478,6 +482,18 @@ private void SourceFileForm_FileClosed(object sender, FormClosedEventArgs e) string localFilename = _fileMgr.GetLocalFilename(f.getFilename()); _fileMgr.Remove(localFilename); + + // Lexikos~ + ICSharpCode.TextEditor.Document.IDocument document = f.getDocument(); + // Remove this file's breakpoints from _breakpointMgr since otherwise + // a) the file text is kept in memory, and + // b) if the file is reopened, it has invisible breakpoints. + _breakpointMgr.Breakpoints.RemoveAll( + delegate(Breakpoint breakpoint) + { + return breakpoint.Document == document; + }); + // ~L closeToolStripMenuItem.Enabled = _fileMgr.HasOpenFiles; @@ -498,6 +514,9 @@ private void MainForm_Load(object sender, EventArgs e) { _callstackFrm.Show(this.dockPanel, DockState.DockBottom); _statusFrm.Show(_callstackFrm.Pane, _callstackFrm); + + // Lexikos: Continue listening automatically. + startListeningToolStripMenuItem_Click(this, null); } private void runToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/xdc/Program.cs b/xdc/Program.cs index e77c2bd..9502527 100644 --- a/xdc/Program.cs +++ b/xdc/Program.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Program.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/Properties/AssemblyInfo.cs b/xdc/Properties/AssemblyInfo.cs index 83019f8..4f35d94 100644 --- a/xdc/Properties/AssemblyInfo.cs +++ b/xdc/Properties/AssemblyInfo.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: AssemblyInfo.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/Properties/Resources.Designer.cs b/xdc/Properties/Resources.Designer.cs index 085fa5d..ebc89dd 100644 --- a/xdc/Properties/Resources.Designer.cs +++ b/xdc/Properties/Resources.Designer.cs @@ -1,17 +1,17 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.42 +// Runtime Version:2.0.50727.1434 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ -namespace xdc.Properties -{ - - +namespace xdc.Properties { + using System; + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,48 +22,40 @@ namespace xdc.Properties [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("xdc.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } diff --git a/xdc/Properties/Resources.resx b/xdc/Properties/Resources.resx index ffecec8..5ea0895 100644 --- a/xdc/Properties/Resources.resx +++ b/xdc/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + diff --git a/xdc/Syntax/AHK-Mode.xshd b/xdc/Syntax/AHK-Mode.xshd new file mode 100644 index 0000000..98174d5 --- /dev/null +++ b/xdc/Syntax/AHK-Mode.xshd @@ -0,0 +1,658 @@ + + + + + + + + + + + + + &<>~!@%^*()-+=|\/{}[]:;"' , .? + + ; + + + /* + */ + + + " + " + + + % + + + + % + % + + ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <>~!@%^*()-+=|\#/{}[]:;"' , .? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xdc/Syntax/AhkSyntaxModeProvider.cs b/xdc/Syntax/AhkSyntaxModeProvider.cs new file mode 100644 index 0000000..3089bb4 --- /dev/null +++ b/xdc/Syntax/AhkSyntaxModeProvider.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Text; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; +using System.IO; +using System.Xml; + +namespace xdc.Syntax +{ + public class AhkSyntaxModeProvider : ISyntaxModeFileProvider + { + List syntaxModes; + + public AhkSyntaxModeProvider() + { + Stream stream = typeof(AhkSyntaxModeProvider).Assembly.GetManifestResourceStream("xdc.Syntax.SyntaxModes.xml"); + if (stream != null) + syntaxModes = SyntaxMode.GetSyntaxModes(stream); + else + syntaxModes = new List(); + } + + public XmlTextReader GetSyntaxModeFile(SyntaxMode syntaxMode) + { + return new XmlTextReader(typeof(AhkSyntaxModeProvider).Assembly.GetManifestResourceStream("xdc.Syntax." + syntaxMode.FileName)); + } + + public ICollection SyntaxModes + { + get { return syntaxModes; } + } + + public void UpdateSyntaxModeList() + { + } + } +} diff --git a/xdc/Syntax/SyntaxModes.xml b/xdc/Syntax/SyntaxModes.xml new file mode 100644 index 0000000..018dfa2 --- /dev/null +++ b/xdc/Syntax/SyntaxModes.xml @@ -0,0 +1,3 @@ + + + diff --git a/xdc/XDebug/ActiveMark.cs b/xdc/XDebug/ActiveMark.cs index 7e23a63..6bd84bd 100644 --- a/xdc/XDebug/ActiveMark.cs +++ b/xdc/XDebug/ActiveMark.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: ActiveMark.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/Breakpoint.cs b/xdc/XDebug/Breakpoint.cs index 876ad01..0c64053 100644 --- a/xdc/XDebug/Breakpoint.cs +++ b/xdc/XDebug/Breakpoint.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Breakpoint.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/BreakpointManager.cs b/xdc/XDebug/BreakpointManager.cs index f059e03..3ddf852 100644 --- a/xdc/XDebug/BreakpointManager.cs +++ b/xdc/XDebug/BreakpointManager.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: BreakpointManager.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/Client.cs b/xdc/XDebug/Client.cs index 2af9b13..5cabd60 100644 --- a/xdc/XDebug/Client.cs +++ b/xdc/XDebug/Client.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Client.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * @@ -38,7 +38,7 @@ public enum XDebugErrorType { FatalError, Warning } public class Client { const string supportedProtocolVersion = "1.0"; - const string supportedLanguage = "php"; + const string supportedLanguage = "ahk1"; // Lexikos: Changed from "php" const string FatalErrorExceptionName = "Fatal error"; const string NoticeExceptionName = "Notice"; @@ -584,21 +584,22 @@ private bool handleInitMessage(XDebug.Response initMessage) } } - if (d.Attributes["language"] != null) - { - string remoteLanguage = d.Attributes["language"].Value; - - if (remoteLanguage.ToLower() != supportedLanguage) - { - throw new Exception( - String.Format( - "Expected language '{0}' but got '{1}' which is not supported.", - supportedLanguage, - remoteLanguage - ) - ); - } - } + // Lexikos: Don't bail out; may as well try to support whatever language. + //if (d.Attributes["language"] != null) + //{ + // string remoteLanguage = d.Attributes["language"].Value; + + // if (remoteLanguage.ToLower() != supportedLanguage) + // { + // throw new Exception( + // String.Format( + // "Expected language '{0}' but got '{1}' which is not supported.", + // supportedLanguage, + // remoteLanguage + // ) + // ); + // } + //} if (d.Attributes["fileuri"] != null) { diff --git a/xdc/XDebug/Command.cs b/xdc/XDebug/Command.cs index 0605c8c..ea8ffa6 100644 --- a/xdc/XDebug/Command.cs +++ b/xdc/XDebug/Command.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Command.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/Location.cs b/xdc/XDebug/Location.cs index 600ced2..bd20166 100644 --- a/xdc/XDebug/Location.cs +++ b/xdc/XDebug/Location.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Location.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/Property.cs b/xdc/XDebug/Property.cs index fb64821..ce4828f 100644 --- a/xdc/XDebug/Property.cs +++ b/xdc/XDebug/Property.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Property.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * @@ -76,6 +76,11 @@ static public Property Parse(XmlNode firstProperty) decoder.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0); string result = new String(decoded_char); + // Lexikos: For now, it is not helpful to view past the end of a string. + // Until a binary/hex view is implemented, truncate the value at \0. + if (result.IndexOf('\0') != -1) + result = result.Substring(0, result.IndexOf('\0')); + rootProperty.Value = result; } } diff --git a/xdc/XDebug/Response.cs b/xdc/XDebug/Response.cs index 6cd3a53..74ec1d5 100644 --- a/xdc/XDebug/Response.cs +++ b/xdc/XDebug/Response.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: Response.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/StackEntry.cs b/xdc/XDebug/StackEntry.cs index 2c87bc4..87a6410 100644 --- a/xdc/XDebug/StackEntry.cs +++ b/xdc/XDebug/StackEntry.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: StackEntry.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/XDebug/XDebugEventArgs.cs b/xdc/XDebug/XDebugEventArgs.cs index e09dbab..a0805b1 100644 --- a/xdc/XDebug/XDebugEventArgs.cs +++ b/xdc/XDebug/XDebugEventArgs.cs @@ -1,6 +1,6 @@ /* * Copyright (C), 2007, Mathieu Kooiman < xdc@scriptorama.nl> - * $Id$ + * $Id: XDebugEventArgs.cs 10 2007-04-29 13:39:20Z mathieuk $ * * This file is part of XDebugClient. * diff --git a/xdc/xdc.csproj b/xdc/xdc.csproj index 62d7210..902950f 100644 --- a/xdc/xdc.csproj +++ b/xdc/xdc.csproj @@ -25,7 +25,7 @@ 3658B8999E253B8717E6256486EC4C1E7E6F8B81 xdc_TemporaryKey.pfx true - true + false true @@ -54,11 +54,11 @@ False - ..\..\..\..\..\Bureaublad\TreeHeum\Waa\TreeViewAdv\Aga.Controls\bin\Release\Aga.Controls.dll + bin\Aga.Controls.dll False - ..\..\..\..\..\..\..\program files\SharpDevelop\2.0\bin\ICSharpCode.TextEditor.dll + bin\ICSharpCode.TextEditor.dll @@ -70,7 +70,7 @@ False - ..\..\..\..\..\Bureaublad\TreeHeum\WeifenLuo.WinFormsUI.Docking.dll + bin\WeifenLuo.WinFormsUI.Docking.dll @@ -103,6 +103,7 @@ + @@ -161,13 +162,13 @@ True Resources.resx + True - SettingsSingleFileGenerator Settings.Designer.cs - + True Settings.settings @@ -194,6 +195,7 @@ Always + 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 GG4Nk7D0_1N literal 0 HcmV?d00001