diff --git a/Common/Product/SharedProject/CommonProjectNode.cs b/Common/Product/SharedProject/CommonProjectNode.cs
index facb6260e..3ffbed354 100644
--- a/Common/Product/SharedProject/CommonProjectNode.cs
+++ b/Common/Product/SharedProject/CommonProjectNode.cs
@@ -1549,7 +1549,7 @@ protected override ConfigProvider CreateConfigProvider() {
/// Returns resolved value of the current working directory property.
///
public string GetWorkingDirectory() {
- string workDir = CommonUtils.UnquotePath(GetProjectProperty(CommonConstants.WorkingDirectory, resetCache: false));
+ var workDir = CommonUtils.UnquotePath(GetProjectProperty(CommonConstants.WorkingDirectory, resetCache: false));
return CommonUtils.GetAbsoluteDirectoryPath(ProjectHome, workDir);
}
diff --git a/Common/Product/SharedProject/CommonUtils.cs b/Common/Product/SharedProject/CommonUtils.cs
index 997a6b791..2af4cdbde 100644
--- a/Common/Product/SharedProject/CommonUtils.cs
+++ b/Common/Product/SharedProject/CommonUtils.cs
@@ -46,7 +46,6 @@ internal static Uri MakeUri(string path, bool isDirectory, UriKind kind, string
}
return new Uri(path, kind);
-
} catch (UriFormatException ex) {
throw new ArgumentException("Path was invalid", throwParameterName, ex);
} catch (ArgumentException ex) {
@@ -62,6 +61,13 @@ public static string NormalizePath(string path) {
return null;
}
+ const string MdhaPrefix = "mdha:";
+
+ // webkit debugger prepends with 'mdha'
+ if (path.StartsWith(MdhaPrefix, StringComparison.OrdinalIgnoreCase)) {
+ path = path.Substring(MdhaPrefix.Length);
+ }
+
var uri = MakeUri(path, false, UriKind.RelativeOrAbsolute);
if (uri.IsAbsoluteUri) {
if (uri.IsFile) {
diff --git a/Common/Product/SharedProject/ProjectNode.cs b/Common/Product/SharedProject/ProjectNode.cs
index 738d03052..fa5addc06 100644
--- a/Common/Product/SharedProject/ProjectNode.cs
+++ b/Common/Product/SharedProject/ProjectNode.cs
@@ -4496,7 +4496,6 @@ public virtual int IsDocumentInProject(string mkDoc, out int found, VSDOCUMENTPR
}
return VSConstants.S_OK;
-
}
protected virtual bool IncludeNonMemberItemInProject(HierarchyNode node) {
diff --git a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs
index da4304a5d..7d7b5c991 100644
--- a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs
+++ b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs
@@ -85,11 +85,6 @@ public sealed class AD7Engine : IDebugEngine2, IDebugEngineLaunch2, IDebugProgra
///
public const string WaitOnNormalExitSetting = "WAIT_ON_NORMAL_EXIT";
- ///
- /// Specifies if the output should be redirected to the visual studio output window.
- ///
- public const string RedirectOutputSetting = "REDIRECT_OUTPUT";
-
///
/// Specifies options which should be passed to the Node runtime before the script. If
/// the interpreter options should include a semicolon then it should be escaped as a double
@@ -517,11 +512,6 @@ int IDebugEngineLaunch2.LaunchSuspended(string pszServer, IDebugPort2 port, stri
debugOptions |= NodeDebugOptions.WaitOnNormalExit;
}
break;
- case RedirectOutputSetting:
- if (Boolean.TryParse(setting[1], out value) && value) {
- debugOptions |= NodeDebugOptions.RedirectOutput;
- }
- break;
case DirMappingSetting:
string[] dirs = setting[1].Split('|');
if (dirs.Length == 2) {
@@ -565,9 +555,10 @@ int IDebugEngineLaunch2.LaunchSuspended(string pszServer, IDebugPort2 port, stri
AttachEvents(_process);
- var adProcessId = new AD_PROCESS_ID();
- adProcessId.ProcessIdType = (uint)enum_AD_PROCESS_ID.AD_PROCESS_ID_SYSTEM;
- adProcessId.dwProcessId = (uint)_process.Id;
+ var adProcessId = new AD_PROCESS_ID() {
+ ProcessIdType = (uint)enum_AD_PROCESS_ID.AD_PROCESS_ID_SYSTEM,
+ dwProcessId = (uint)_process.Id
+ };
EngineUtils.RequireOk(port.GetProcess(adProcessId, out process));
LiveLogger.WriteLine("AD7Engine LaunchSuspended returning S_OK");
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeConstants.cs b/Nodejs/Product/Nodejs/Debugger/NodeConstants.cs
index e1ba0984a..a67019214 100644
--- a/Nodejs/Product/Nodejs/Debugger/NodeConstants.cs
+++ b/Nodejs/Product/Nodejs/Debugger/NodeConstants.cs
@@ -15,7 +15,7 @@
//*********************************************************//
namespace Microsoft.NodejsTools.Debugger {
- sealed class NodeConstants {
+ internal sealed class NodeConstants {
public const string ScriptWrapBegin = "(function (exports, require, module, __filename, __dirname) { ";
public const string ScriptWrapEnd = "\n});";
}
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeDebugOptions.cs b/Nodejs/Product/Nodejs/Debugger/NodeDebugOptions.cs
index 7af3abe32..a4d475c8d 100644
--- a/Nodejs/Product/Nodejs/Debugger/NodeDebugOptions.cs
+++ b/Nodejs/Product/Nodejs/Debugger/NodeDebugOptions.cs
@@ -18,7 +18,7 @@
namespace Microsoft.NodejsTools.Debugger {
[Flags]
- enum NodeDebugOptions {
+ internal enum NodeDebugOptions {
None,
///
/// Passing this flag to the debugger will cause it to wait for input on an abnormal (non-zero)
@@ -29,15 +29,5 @@ enum NodeDebugOptions {
/// Passing this flag to the debugger will cause it to wait for input on a normal (zero) exit code.
///
WaitOnNormalExit = 0x02,
- ///
- /// Passing this flag will cause output to standard out to be redirected via the debugger
- /// so it can be outputted in the Visual Studio debug output window.
- ///
- RedirectOutput = 0x04,
-
- ///
- /// Set if you do not want to create a window
- ///
- CreateNoWindow = 0x40
}
}
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeDebugger.cs b/Nodejs/Product/Nodejs/Debugger/NodeDebugger.cs
index 29cb27bd2..c98c680e4 100644
--- a/Nodejs/Product/Nodejs/Debugger/NodeDebugger.cs
+++ b/Nodejs/Product/Nodejs/Debugger/NodeDebugger.cs
@@ -36,8 +36,8 @@ namespace Microsoft.NodejsTools.Debugger {
///
/// Handles all interactions with a Node process which is being debugged.
///
- sealed class NodeDebugger : IDisposable {
- public readonly int MainThreadId = 1;
+ internal sealed class NodeDebugger : IDisposable {
+ public const int MainThreadId = 1;
private readonly Dictionary _breakpointBindings = new Dictionary();
private readonly IDebuggerClient _client;
private readonly IDebuggerConnection _connection;
@@ -76,6 +76,13 @@ private NodeDebugger() {
_fileNameMapper = new LocalFileNameMapper();
}
+ public NodeDebugger(Uri debuggerEndpointUri, int id)
+ : this() {
+ _debuggerEndpointUri = debuggerEndpointUri;
+ _id = id;
+ _attached = true;
+ }
+
public NodeDebugger(
string exe,
string script,
@@ -87,28 +94,71 @@ public NodeDebugger(
bool createNodeWindow = true)
: this() {
// Select debugger port for a local connection
- ushort debuggerPortOrDefault = NodejsConstants.DefaultDebuggerPort;
- if (debuggerPort != null) {
- debuggerPortOrDefault = debuggerPort.Value;
- } else {
- List activeConnections =
- (from listener in IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners()
- select listener.Port).ToList();
- if (activeConnections.Contains(debuggerPortOrDefault)) {
- debuggerPortOrDefault = (ushort)Enumerable.Range(new Random().Next(5859, 6000), 60000).Except(activeConnections).First();
- }
+ var debuggerPortOrDefault = debuggerPort ?? GetDebuggerPort();
+ _debuggerEndpointUri = new UriBuilder { Scheme = "tcp", Host = "localhost", Port = debuggerPortOrDefault }.Uri;
+
+ _process = StartNodeProcessWithDebug(exe, script, dir, env, interpreterOptions, debugOptions, debuggerPortOrDefault, createNodeWindow);
+ }
+
+ private static ushort GetDebuggerPort() {
+ var debuggerPortOrDefault = NodejsConstants.DefaultDebuggerPort;
+
+ var activeConnections = (from listener in IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners()
+ select listener.Port).ToList();
+
+ if (activeConnections.Contains(debuggerPortOrDefault)) {
+ debuggerPortOrDefault = (ushort)Enumerable.Range(new Random().Next(5859, 6000), 60000).Except(activeConnections).First();
}
- _debuggerEndpointUri = new UriBuilder { Scheme = "tcp", Host = "localhost", Port = debuggerPortOrDefault }.Uri;
+ return debuggerPortOrDefault;
+ }
+
+ public static NodeProcess StartNodeProcessWithDebug(
+ string exe,
+ string script,
+ string dir,
+ string env,
+ string interpreterOptions,
+ NodeDebugOptions debugOptions,
+ ushort? debuggerPort = null,
+ bool createNodeWindow = true) {
+ // Select debugger port for a local connection
+ var debuggerPortOrDefault = debuggerPort ?? GetDebuggerPort();
+
+ // Node usage: node [options] [ -e script | script.js ] [arguments]
+ var allArgs = $"--debug-brk={debuggerPortOrDefault} --nolazy {interpreterOptions} \"{CommonUtils.UnquotePath(script)}\""; /* unquote the path so we can safely add quotes */
+
+ return StartNodeProcess(exe, dir, env, debugOptions, debuggerPortOrDefault, allArgs, createNodeWindow);
+ }
+
+ public static NodeProcess StartNodeProcessWithInspect(
+ string exe,
+ string script,
+ string dir,
+ string env,
+ string interpreterOptions,
+ NodeDebugOptions debugOptions,
+ ushort? debuggerPort = null,
+ bool createNodeWindow = true) {
+ // Select debugger port for a local connection
+ var debuggerPortOrDefault = debuggerPort ?? GetDebuggerPort();
// Node usage: node [options] [ -e script | script.js ] [arguments]
- string allArgs = string.Format(CultureInfo.InvariantCulture,
- "--debug-brk={0} --nolazy {1} {2}",
- debuggerPortOrDefault,
- interpreterOptions,
- script
- );
+ var allArgs = $"--inspect={debuggerPortOrDefault} --debug-brk --nolazy {interpreterOptions} \"{CommonUtils.UnquotePath(script)}\""; /* unquote the path so we can safely add quotes */
+ return StartNodeProcess(exe, dir, env, debugOptions, debuggerPortOrDefault, allArgs, createNodeWindow);
+ }
+
+ // starts the nodeprocess in debug mode without hooking up our debugger, this way we can attach the WebKit debugger as a next step.
+ private static NodeProcess StartNodeProcess(
+ string exe,
+ string dir,
+ string env,
+ NodeDebugOptions
+ debugOptions,
+ ushort debuggerPortOrDefault,
+ string allArgs,
+ bool createNodeWindow) {
var psi = new ProcessStartInfo(exe, allArgs) {
CreateNoWindow = !createNodeWindow,
WorkingDirectory = dir,
@@ -116,42 +166,30 @@ public NodeDebugger(
};
if (env != null) {
- string[] envValues = env.Split('\0');
- foreach (string curValue in envValues) {
- string[] nameValue = curValue.Split(new[] { '=' }, 2);
- if (nameValue.Length == 2 && !String.IsNullOrWhiteSpace(nameValue[0])) {
+ var envValues = env.Split('\0');
+ foreach (var curValue in envValues) {
+ var nameValue = curValue.Split(new[] { '=' }, 2);
+ if (nameValue.Length == 2 && !string.IsNullOrWhiteSpace(nameValue[0])) {
psi.EnvironmentVariables[nameValue[0]] = nameValue[1];
}
}
}
- _process = new NodeProcess(
+ return new NodeProcess(
psi,
- debugOptions.HasFlag(NodeDebugOptions.WaitOnAbnormalExit),
- debugOptions.HasFlag(NodeDebugOptions.WaitOnNormalExit),
- true);
- }
-
- public NodeDebugger(Uri debuggerEndpointUri, int id)
- : this() {
- _debuggerEndpointUri = debuggerEndpointUri;
- _id = id;
- _attached = true;
+ waitOnAbnormal: debugOptions.HasFlag(NodeDebugOptions.WaitOnAbnormalExit),
+ waitOnNormal: debugOptions.HasFlag(NodeDebugOptions.WaitOnNormalExit),
+ enableRaisingEvents: true,
+ debuggerPort: debuggerPortOrDefault);
}
#region Public Process API
- public int Id {
- get { return _id != null ? _id.Value : _process.Id; }
- }
+ public int Id => _id != null ? _id.Value : _process.Id;
- private NodeThread MainThread {
- get { return _threads[MainThreadId]; }
- }
+ private NodeThread MainThread => _threads[MainThreadId];
- public bool HasExited {
- get { return !_connection.Connected; }
- }
+ public bool HasExited => !_connection.Connected;
///
/// Gets or sets a value indicating whether executed remote debugging process.
@@ -236,7 +274,7 @@ public async Task BreakAllAsync() {
// We need to get the backtrace before we break, so we request the backtrace
// and follow up with firing the appropriate event for the break
tokenSource = new CancellationTokenSource(_timeout);
- bool running = await PerformBacktraceAsync(tokenSource.Token).ConfigureAwait(false);
+ var running = await PerformBacktraceAsync(tokenSource.Token).ConfigureAwait(false);
Debug.Assert(!running);
// Fallback to firing step complete event
@@ -424,16 +462,12 @@ public void ClearExceptionTreatment() {
///
/// Gets a next command identifier.
///
- private int CommandId {
- get { return Interlocked.Increment(ref _commandId); }
- }
+ private int CommandId => Interlocked.Increment(ref _commandId);
///
/// Gets a source mapper.
///
- public SourceMapper SourceMapper {
- get { return _sourceMapper; }
- }
+ public SourceMapper SourceMapper => _sourceMapper;
///
/// Gets or sets a file name mapper.
@@ -650,7 +684,7 @@ private async Task ProcessBreakpointBreakAsync(
}
SetBreakpointCommand result = await SetBreakpointAsync(breakpoint, cancellationToken: cancellationToken).ConfigureAwait(false);
-
+
// Treat rebound breakpoint binding as fully bound
NodeBreakpointBinding reboundbreakpointBinding = CreateBreakpointBinding(breakpoint, result.BreakpointId, result.ScriptId, breakpoint.GetPosition(SourceMapper).FileName, result.Line, result.Column, true);
HandleBindBreakpointSuccess(reboundbreakpointBinding, breakpoint);
@@ -712,7 +746,7 @@ private void OnExceptionEvent(object sender, ExceptionEventArgs args) {
var lookupCommand = new LookupCommand(CommandId, _resultFactory, new[] { exception.ErrorNumber.Value });
string errorCodeFromLookup = null;
-
+
if (await TrySendRequestAsync(lookupCommand).ConfigureAwait(false)) {
errorCodeFromLookup = lookupCommand.Results[errorNumber][0].StringValue;
_errorCodes[errorNumber] = errorCodeFromLookup;
@@ -1049,7 +1083,7 @@ internal async Task UpdateBreakpointBindingAsync(
internal async Task GetBreakpointHitCountAsync(int breakpointId, CancellationToken cancellationToken = new CancellationToken()) {
var listBreakpointsCommand = new ListBreakpointsCommand(CommandId);
-
+
int hitCount;
if (await TrySendRequestAsync(listBreakpointsCommand, cancellationToken).ConfigureAwait(false) &&
listBreakpointsCommand.Breakpoints.TryGetValue(breakpointId, out hitCount)) {
@@ -1160,7 +1194,7 @@ internal async Task SetVariableValueAsync(
return false;
}
}
-
+
#endregion
#region Debugging Events
@@ -1211,7 +1245,7 @@ private bool GetOrAddModule(NodeModule module, out NodeModule value, NodeStackFr
javaScriptFileName = FileNameMapper.GetLocalFileName(javaScriptFileName);
// Try to get mapping for JS file
- if(stackFrame != null) {
+ if (stackFrame != null) {
line = stackFrame.Line;
column = stackFrame.Column;
}
@@ -1255,8 +1289,6 @@ public NodeModule GetModuleForFilePath(string filePath) {
internal void Close() {
}
-
-
#region IDisposable
public void Dispose() {
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeEvaluationResult.cs b/Nodejs/Product/Nodejs/Debugger/NodeEvaluationResult.cs
index ffb69e6d6..359d7275c 100644
--- a/Nodejs/Product/Nodejs/Debugger/NodeEvaluationResult.cs
+++ b/Nodejs/Product/Nodejs/Debugger/NodeEvaluationResult.cs
@@ -24,7 +24,7 @@ namespace Microsoft.NodejsTools.Debugger {
///
/// Represents the result of an evaluation of an expression against a given stack frame.
///
- class NodeEvaluationResult {
+ internal class NodeEvaluationResult {
private readonly Regex _stringLengthExpression = new Regex(@"\.\.\. \(length: ([0-9]+)\)$", RegexOptions.Compiled);
///
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeEventEventArgs.cs b/Nodejs/Product/Nodejs/Debugger/NodeEventEventArgs.cs
deleted file mode 100644
index 933cc41e9..000000000
--- a/Nodejs/Product/Nodejs/Debugger/NodeEventEventArgs.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-//*********************************************************//
-// Copyright (c) Microsoft. All rights reserved.
-//
-// Apache 2.0 License
-//
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-// implied. See the License for the specific language governing
-// permissions and limitations under the License.
-//
-//*********************************************************//
-
-using System;
-using System.Collections.Generic;
-
-namespace Microsoft.NodejsTools.Debugger {
- sealed class NodeEventEventArgs : EventArgs {
- public readonly Dictionary Data;
-
- public NodeEventEventArgs(Dictionary data) {
- Data = data;
- }
- }
-}
\ No newline at end of file
diff --git a/Nodejs/Product/Nodejs/Debugger/NodeProcess.cs b/Nodejs/Product/Nodejs/Debugger/NodeProcess.cs
index 935af5b88..885bbb0a4 100644
--- a/Nodejs/Product/Nodejs/Debugger/NodeProcess.cs
+++ b/Nodejs/Product/Nodejs/Debugger/NodeProcess.cs
@@ -29,13 +29,17 @@ namespace Microsoft.NodejsTools.Debugger {
sealed class NodeProcess : IDisposable {
private readonly ProcessStartInfo _psi;
private readonly bool _waitOnAbnormal, _waitOnNormal, _enableRaisingEvents;
- private Process _process, _pressAnyKeyProcess;
+ private Process _process;
+ private Process _pressAnyKeyProcess;
- public NodeProcess(ProcessStartInfo psi, bool waitOnAbnormal, bool waitOnNormal, bool enableRaisingEvents) {
+ public ushort DebuggerPort { get; }
+
+ public NodeProcess(ProcessStartInfo psi, bool waitOnAbnormal, bool waitOnNormal, bool enableRaisingEvents, ushort debuggerPort = 0) {
_psi = psi;
_waitOnAbnormal = waitOnAbnormal;
_waitOnNormal = waitOnNormal;
_enableRaisingEvents = enableRaisingEvents;
+ DebuggerPort = debuggerPort;
}
public static NodeProcess Start(ProcessStartInfo psi, bool waitOnAbnormal, bool waitOnNormal) {
diff --git a/Nodejs/Product/Nodejs/Logging/LiveLogger.cs b/Nodejs/Product/Nodejs/Logging/LiveLogger.cs
index 745820dc3..42fb0c4f4 100644
--- a/Nodejs/Product/Nodejs/Logging/LiveLogger.cs
+++ b/Nodejs/Product/Nodejs/Logging/LiveLogger.cs
@@ -14,11 +14,11 @@
//
//*********************************************************//
-using Microsoft.NodejsTools.Options;
-using Microsoft.VisualStudioTools.Project;
using System;
using System.Diagnostics;
using System.Globalization;
+using Microsoft.NodejsTools.Options;
+using Microsoft.VisualStudioTools.Project;
namespace Microsoft.NodejsTools.Logging {
diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj
index d364a2828..efb0b3f83 100644
--- a/Nodejs/Product/Nodejs/Nodejs.csproj
+++ b/Nodejs/Product/Nodejs/Nodejs.csproj
@@ -1,4 +1,4 @@
-
+
@@ -404,7 +404,6 @@
-
@@ -890,7 +889,6 @@
SalsaLsIntellisenseOptionsControl.cs
-
NewFileNameForm.cs
@@ -915,7 +913,6 @@
-
NodejsGeneralPropertyPageControl.cs
@@ -940,7 +937,6 @@
-
NodejsGeneralOptionsControl.cs
@@ -950,6 +946,7 @@
PublicResXFileCodeGenerator
NodejsGeneralOptionsControl.cs
+ Designer
@@ -965,7 +962,6 @@
-
NodejsNpmOptionsControl.cs
@@ -990,7 +986,6 @@
-
diff --git a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.Designer.cs b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.Designer.cs
index 9521934a3..830624ea1 100644
--- a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.Designer.cs
+++ b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.Designer.cs
@@ -24,45 +24,22 @@ protected override void Dispose(bool disposing) {
///
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NodejsGeneralOptionsControl));
- this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
- this._surveyNewsCheckLabel = new System.Windows.Forms.Label();
- this._surveyNewsCheckCombo = new System.Windows.Forms.ComboBox();
this._topOptionsPanel = new System.Windows.Forms.Panel();
this._checkForLongPaths = new System.Windows.Forms.CheckBox();
this._editAndContinue = new System.Windows.Forms.CheckBox();
this._waitOnNormalExit = new System.Windows.Forms.CheckBox();
this._waitOnAbnormalExit = new System.Windows.Forms.CheckBox();
- this.tableLayoutPanel3.SuspendLayout();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this._surveyNewsCheckLabel = new System.Windows.Forms.Label();
+ this._surveyNewsCheckCombo = new System.Windows.Forms.ComboBox();
+ this._webkitDebugger = new System.Windows.Forms.CheckBox();
this._topOptionsPanel.SuspendLayout();
+ this.tableLayoutPanel3.SuspendLayout();
this.SuspendLayout();
//
- // tableLayoutPanel3
- //
- resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
- this.tableLayoutPanel3.Controls.Add(this._surveyNewsCheckLabel, 0, 7);
- this.tableLayoutPanel3.Controls.Add(this._surveyNewsCheckCombo, 1, 7);
- this.tableLayoutPanel3.Name = "tableLayoutPanel3";
- //
- // _surveyNewsCheckLabel
- //
- resources.ApplyResources(this._surveyNewsCheckLabel, "_surveyNewsCheckLabel");
- this._surveyNewsCheckLabel.Name = "_surveyNewsCheckLabel";
- //
- // _surveyNewsCheckCombo
- //
- resources.ApplyResources(this._surveyNewsCheckCombo, "_surveyNewsCheckCombo");
- this._surveyNewsCheckCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this._surveyNewsCheckCombo.DropDownWidth = 172;
- this._surveyNewsCheckCombo.FormattingEnabled = true;
- this._surveyNewsCheckCombo.Items.AddRange(new object[] {
- resources.GetString("_surveyNewsCheckCombo.Items"),
- resources.GetString("_surveyNewsCheckCombo.Items1"),
- resources.GetString("_surveyNewsCheckCombo.Items2"),
- resources.GetString("_surveyNewsCheckCombo.Items3")});
- this._surveyNewsCheckCombo.Name = "_surveyNewsCheckCombo";
- //
// _topOptionsPanel
//
+ this._topOptionsPanel.Controls.Add(this._webkitDebugger);
this._topOptionsPanel.Controls.Add(this._checkForLongPaths);
this._topOptionsPanel.Controls.Add(this._editAndContinue);
this._topOptionsPanel.Controls.Add(this._waitOnNormalExit);
@@ -94,6 +71,37 @@ private void InitializeComponent() {
this._waitOnAbnormalExit.Name = "_waitOnAbnormalExit";
this._waitOnAbnormalExit.UseVisualStyleBackColor = true;
//
+ // tableLayoutPanel3
+ //
+ resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
+ this.tableLayoutPanel3.Controls.Add(this._surveyNewsCheckLabel, 0, 7);
+ this.tableLayoutPanel3.Controls.Add(this._surveyNewsCheckCombo, 1, 7);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ //
+ // _surveyNewsCheckLabel
+ //
+ resources.ApplyResources(this._surveyNewsCheckLabel, "_surveyNewsCheckLabel");
+ this._surveyNewsCheckLabel.Name = "_surveyNewsCheckLabel";
+ //
+ // _surveyNewsCheckCombo
+ //
+ resources.ApplyResources(this._surveyNewsCheckCombo, "_surveyNewsCheckCombo");
+ this._surveyNewsCheckCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this._surveyNewsCheckCombo.DropDownWidth = 172;
+ this._surveyNewsCheckCombo.FormattingEnabled = true;
+ this._surveyNewsCheckCombo.Items.AddRange(new object[] {
+ resources.GetString("_surveyNewsCheckCombo.Items"),
+ resources.GetString("_surveyNewsCheckCombo.Items1"),
+ resources.GetString("_surveyNewsCheckCombo.Items2"),
+ resources.GetString("_surveyNewsCheckCombo.Items3")});
+ this._surveyNewsCheckCombo.Name = "_surveyNewsCheckCombo";
+ //
+ // _webkitDebugger
+ //
+ resources.ApplyResources(this._webkitDebugger, "_webkitDebugger");
+ this._webkitDebugger.Name = "_webkitDebugger";
+ this._webkitDebugger.UseVisualStyleBackColor = true;
+ //
// NodejsGeneralOptionsControl
//
resources.ApplyResources(this, "$this");
@@ -101,24 +109,24 @@ private void InitializeComponent() {
this.Controls.Add(this.tableLayoutPanel3);
this.Controls.Add(this._topOptionsPanel);
this.Name = "NodejsGeneralOptionsControl";
- this.tableLayoutPanel3.ResumeLayout(false);
- this.tableLayoutPanel3.PerformLayout();
this._topOptionsPanel.ResumeLayout(false);
this._topOptionsPanel.PerformLayout();
+ this.tableLayoutPanel3.ResumeLayout(false);
+ this.tableLayoutPanel3.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
- private System.Windows.Forms.Label _surveyNewsCheckLabel;
- private System.Windows.Forms.ComboBox _surveyNewsCheckCombo;
private System.Windows.Forms.Panel _topOptionsPanel;
private System.Windows.Forms.CheckBox _waitOnNormalExit;
private System.Windows.Forms.CheckBox _waitOnAbnormalExit;
private System.Windows.Forms.CheckBox _editAndContinue;
private System.Windows.Forms.CheckBox _checkForLongPaths;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.Label _surveyNewsCheckLabel;
+ private System.Windows.Forms.ComboBox _surveyNewsCheckCombo;
+ private System.Windows.Forms.CheckBox _webkitDebugger;
}
}
diff --git a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs
index 2cc6ec645..646d543bc 100644
--- a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs
+++ b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs
@@ -66,6 +66,11 @@ internal void SyncControlWithPageSettings(NodejsGeneralOptionsPage page) {
_waitOnNormalExit.Checked = page.WaitOnNormalExit;
_editAndContinue.Checked = page.EditAndContinue;
_checkForLongPaths.Checked = page.CheckForLongPaths;
+ _webkitDebugger.Checked = page.UseWebKitDebugger;
+
+#if !DEV15
+ _webkitDebugger.Enabled = false;
+#endif
}
internal void SyncPageWithControlSettings(NodejsGeneralOptionsPage page) {
@@ -74,6 +79,7 @@ internal void SyncPageWithControlSettings(NodejsGeneralOptionsPage page) {
page.WaitOnNormalExit = _waitOnNormalExit.Checked;
page.EditAndContinue = _editAndContinue.Checked;
page.CheckForLongPaths = _checkForLongPaths.Checked;
+ page.UseWebKitDebugger = _webkitDebugger.Checked;
}
}
}
\ No newline at end of file
diff --git a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs.resx b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs.resx
index 53571274f..edd97a0b1 100644
--- a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs.resx
+++ b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.cs.resx
@@ -208,7 +208,7 @@
Fill
- 0, 97
+ 0, 120
3, 4, 3, 4
@@ -217,7 +217,7 @@
9
- 381, 193
+ 381, 170
0
@@ -237,6 +237,33 @@
<?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_surveyNewsCheckLabel" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="_surveyNewsCheckCombo" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings>
+
+ True
+
+
+ 4, 96
+
+
+ 96, 17
+
+
+ 5
+
+
+ Use the new NodeJs debugger protocol (experimental since v6.8)
+
+
+ _webkitDebugger
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _topOptionsPanel
+
+
+ 0
+
True
@@ -262,7 +289,7 @@
_topOptionsPanel
- 0
+ 1
True
@@ -289,7 +316,7 @@
_topOptionsPanel
- 1
+ 2
True
@@ -316,7 +343,7 @@
_topOptionsPanel
- 2
+ 3
True
@@ -343,7 +370,7 @@
_topOptionsPanel
- 3
+ 4
Top
@@ -352,7 +379,7 @@
0, 0
- 381, 97
+ 381, 120
1
diff --git a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.de.resx b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.de.resx
index ab3d538b1..37e5e6f42 100644
--- a/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.de.resx
+++ b/Nodejs/Product/Nodejs/Options/NodejsGeneralOptionsControl.de.resx
@@ -1,4 +1,4 @@
-
+