<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[206015] trunk/Source/WebInspectorUI</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/206015">206015</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2016-09-16 01:47:08 -0700 (Fri, 16 Sep 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Web Inspector: Include JavaScript completion for ES6 keywords and global variables
https://bugs.webkit.org/show_bug.cgi?id=162027
Reviewed by Brian Burg.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
Include ES6 keywords and provide them when they may be available.
* UserInterface/Views/ConsolePrompt.js:
(WebInspector.ConsolePrompt):
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.set mimeType):
For editors that might want to provide completion for global variables
use the mode with options way of setting the mode for CodeMirror. The
only mode that cares about "globalVars" are the JavaScript variants.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersCodeMirrorCompletionControllerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorCompletionController.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsConsolePromptjs">trunk/Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsTextEditorjs">trunk/Source/WebInspectorUI/UserInterface/Views/TextEditor.js</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (206014 => 206015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2016-09-16 08:24:18 UTC (rev 206014)
+++ trunk/Source/WebInspectorUI/ChangeLog        2016-09-16 08:47:08 UTC (rev 206015)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-09-16 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Include JavaScript completion for ES6 keywords and global variables
+ https://bugs.webkit.org/show_bug.cgi?id=162027
+
+ Reviewed by Brian Burg.
+
+ * UserInterface/Controllers/CodeMirrorCompletionController.js:
+ (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
+ Include ES6 keywords and provide them when they may be available.
+
+ * UserInterface/Views/ConsolePrompt.js:
+ (WebInspector.ConsolePrompt):
+ * UserInterface/Views/TextEditor.js:
+ (WebInspector.TextEditor.prototype.set mimeType):
+ For editors that might want to provide completion for global variables
+ use the mode with options way of setting the mode for CodeMirror. The
+ only mode that cares about "globalVars" are the JavaScript variants.
+
</ins><span class="cx"> 2016-09-15 Devin Rousso <dcrousso+webkit@gmail.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: support drag and drop of CSS classes and ids onto DOM nodes
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersCodeMirrorCompletionControllerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorCompletionController.js (206014 => 206015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorCompletionController.js        2016-09-16 08:24:18 UTC (rev 206014)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorCompletionController.js        2016-09-16 08:47:08 UTC (rev 206015)
</span><span class="lines">@@ -597,13 +597,21 @@
</span><span class="cx"> var insideParenthesis = localState.lexical.type === ")";
</span><span class="cx"> var insideBrackets = localState.lexical.type === "]";
</span><span class="cx">
</span><del>- var allKeywords = ["break", "case", "catch", "const", "continue", "debugger", "default", "delete", "do", "else", "false", "finally", "for", "function", "if", "in",
- "Infinity", "instanceof", "NaN", "new", "null", "return", "switch", "this", "throw", "true", "try", "typeof", "undefined", "var", "void", "while", "with"];
</del><ins>+ // FIXME: Include module keywords if we know this is a module environment.
+ // var moduleKeywords = ["default", "export", "import"];
+
+ var allKeywords = [
+ "break", "case", "catch", "class", "const", "continue", "debugger", "default",
+ "delete", "do", "else", "extends", "false", "finally", "for", "function",
+ "if", "in", "Infinity", "instanceof", "let", "NaN", "new", "null", "of",
+ "return", "static", "super", "switch", "this", "throw", "true", "try",
+ "typeof", "undefined", "var", "void", "while", "with", "yield"
+ ];
</ins><span class="cx"> var valueKeywords = ["false", "Infinity", "NaN", "null", "this", "true", "undefined"];
</span><span class="cx">
</span><span class="cx"> var allowedKeywordsInsideBlocks = allKeywords.keySet();
</span><span class="cx"> var allowedKeywordsWhenDeclaringVariable = valueKeywords.keySet();
</span><del>- var allowedKeywordsInsideParenthesis = valueKeywords.concat(["function"]).keySet();
</del><ins>+ var allowedKeywordsInsideParenthesis = valueKeywords.concat(["class", "function"]).keySet();
</ins><span class="cx"> var allowedKeywordsInsideBrackets = allowedKeywordsInsideParenthesis;
</span><span class="cx"> var allowedKeywordsOnlyInsideSwitch = ["case", "default"].keySet();
</span><span class="cx">
</span><span class="lines">@@ -667,11 +675,11 @@
</span><span class="cx">
</span><span class="cx"> case "(":
</span><span class="cx"> matchVariables();
</span><del>- matchKeywords(["catch", "else", "for", "function", "if", "return", "switch", "throw", "while", "with"]);
</del><ins>+ matchKeywords(["catch", "else", "for", "function", "if", "return", "switch", "throw", "while", "with", "yield"]);
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case "{":
</span><del>- matchKeywords(["do", "else", "finally", "return", "try"]);
</del><ins>+ matchKeywords(["do", "else", "finally", "return", "try", "yield"]);
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case ":":
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsConsolePromptjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js (206014 => 206015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js        2016-09-16 08:24:18 UTC (rev 206014)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js        2016-09-16 08:47:08 UTC (rev 206015)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> this._codeMirror = WebInspector.CodeMirrorEditor.create(this.element, {
</span><span class="cx"> lineWrapping: true,
</span><del>- mode: mimeType,
</del><ins>+ mode: {name: mimeType, globalVars: true},
</ins><span class="cx"> indentWithTabs: true,
</span><span class="cx"> indentUnit: 4,
</span><span class="cx"> matchBrackets: true
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsTextEditorjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TextEditor.js (206014 => 206015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/TextEditor.js        2016-09-16 08:24:18 UTC (rev 206014)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TextEditor.js        2016-09-16 08:47:08 UTC (rev 206015)
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx"> newMIMEType = parseMIMEType(newMIMEType).type;
</span><span class="cx">
</span><span class="cx"> this._mimeType = newMIMEType;
</span><del>- this._codeMirror.setOption("mode", newMIMEType);
</del><ins>+ this._codeMirror.setOption("mode", {name: newMIMEType, globalVars: true});
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> get executionLineNumber()
</span></span></pre>
</div>
</div>
</body>
</html>