Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/cm/htmlembedded.js

Issue 2166603002: DevTools: roll CodeMirror (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: roll CodeMirror 5.17.1 Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 // Distributed under an MIT license: http://codemirror.net/LICENSE 2 // Distributed under an MIT license: http://codemirror.net/LICENSE
lushnikov 2016/07/20 01:40:13 let's move this mode into cm_modes in the follow-u
3 3
4 (function(mod) { 4 (function(mod) {
5 if (typeof exports == "object" && typeof module == "object") // CommonJS 5 if (typeof exports == "object" && typeof module == "object") // CommonJS
6 mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); 6 mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
7 require("../../addon/mode/multiplex"));
7 else if (typeof define == "function" && define.amd) // AMD 8 else if (typeof define == "function" && define.amd) // AMD
8 define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); 9 define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
10 "../../addon/mode/multiplex"], mod);
9 else // Plain browser env 11 else // Plain browser env
10 mod(CodeMirror); 12 mod(CodeMirror);
11 })(function(CodeMirror) { 13 })(function(CodeMirror) {
12 "use strict"; 14 "use strict";
13 15
14 CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { 16 CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
17 return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), {
lushnikov 2016/07/20 01:40:13 don't we have to add this mode?
einbinder 2016/07/21 20:35:50 Done.
18 open: parserConfig.open || parserConfig.scriptStartRegex || "<%",
19 close: parserConfig.close || parserConfig.scriptEndRegex || "%>",
20 mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec)
21 });
22 }, "htmlmixed");
15 23
16 //config settings 24 CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingMod eSpec:"javascript"});
17 var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i, 25 CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingMo deSpec:"text/x-csharp"});
18 scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i; 26 CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingMod eSpec:"text/x-java"});
19 27 CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingMod eSpec:"ruby"});
20 //inner modes
21 var scriptingMode, htmlMixedMode;
22
23 //tokenizer when in html mode
24 function htmlDispatch(stream, state) {
25 if (stream.match(scriptStartRegex, false)) {
26 state.token=scriptingDispatch;
27 return scriptingMode.token(stream, state.scriptState);
28 }
29 else
30 return htmlMixedMode.token(stream, state.htmlState);
31 }
32
33 //tokenizer when in scripting mode
34 function scriptingDispatch(stream, state) {
35 if (stream.match(scriptEndRegex, false)) {
36 state.token=htmlDispatch;
37 return htmlMixedMode.token(stream, state.htmlState);
38 }
39 else
40 return scriptingMode.token(stream, state.scriptState);
41 }
42
43
44 return {
45 startState: function() {
46 scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.s criptingModeSpec);
47 htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed");
48 return {
49 token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch,
50 htmlState : CodeMirror.startState(htmlMixedMode),
51 scriptState : CodeMirror.startState(scriptingMode)
52 };
53 },
54
55 token: function(stream, state) {
56 return state.token(stream, state);
57 },
58
59 indent: function(state, textAfter) {
60 if (state.token == htmlDispatch)
61 return htmlMixedMode.indent(state.htmlState, textAfter);
62 else if (scriptingMode.indent)
63 return scriptingMode.indent(state.scriptState, textAfter);
64 },
65
66 copyState: function(state) {
67 return {
68 token : state.token,
69 htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState),
70 scriptState : CodeMirror.copyState(scriptingMode, state.scriptState)
71 };
72 },
73
74 innerMode: function(state) {
75 if (state.token == scriptingDispatch) return {state: state.scriptState, mo de: scriptingMode};
76 else return {state: state.htmlState, mode: htmlMixedMode};
77 }
78 };
79 }, "htmlmixed");
80
81 CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingMode Spec:"javascript"});
82 CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingMod eSpec:"text/x-csharp"});
83 CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingMode Spec:"text/x-java"});
84 CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingMode Spec:"ruby"});
85
86 }); 28 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698