From 01ffff73dde637d817bae5bc456be2bb3ad40f3f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 25 May 2016 08:31:34 -0500 Subject: [PATCH 1/2] Unify the codemirror imports --- webpack.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index c1ccdbaae..712267d4d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -38,7 +38,9 @@ var commonConfig = { bootstrap: '$', bootstraptour: 'Tour', 'jquery-ui': '$', - typeahead: '$.typeahead' + typeahead: '$.typeahead', + 'codemirror/lib/codemirror': "commonjs codemirror/lib/codemirror", + 'codemirror/mode/meta': 'commonjs codemirror/mode/meta' } }; From 523756a4915548d33570d9166090afdb9124c579 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 25 May 2016 20:20:40 -0500 Subject: [PATCH 2/2] Fix handling of default cm modes --- .../static/notebook/js/codemirror-ipython.js | 41 +++++------ .../notebook/js/codemirror-ipythongfm.js | 69 +++++++++---------- webpack.config.js | 4 +- 3 files changed, 56 insertions(+), 58 deletions(-) diff --git a/notebook/static/notebook/js/codemirror-ipython.js b/notebook/static/notebook/js/codemirror-ipython.js index b58229a9b..6b1afa9c9 100644 --- a/notebook/static/notebook/js/codemirror-ipython.js +++ b/notebook/static/notebook/js/codemirror-ipython.js @@ -5,34 +5,35 @@ (function(mod) { if (typeof exports == "object" && typeof module == "object"){ // CommonJS - mod(require("codemirror/lib/codemirror"), - require("codemirror/mode/python/python") + mod(require("codemirror/lib/codemirror") ); } else if (typeof define == "function" && define.amd){ // AMD - define(["codemirror/lib/codemirror", - "codemirror/mode/python/python"], mod); + define(["codemirror/lib/codemirror"], mod); } else {// Plain browser env mod(CodeMirror); } })(function(CodeMirror) { "use strict"; - CodeMirror.defineMode("ipython", function(conf, parserConf) { - var pythonConf = {}; - for (var prop in parserConf) { - if (parserConf.hasOwnProperty(prop)) { - pythonConf[prop] = parserConf[prop]; + requirejs(['codemirror/mode/python/python'], function () { + CodeMirror.defineMode("ipython", function(conf, parserConf) { + var pythonConf = {}; + for (var prop in parserConf) { + if (parserConf.hasOwnProperty(prop)) { + pythonConf[prop] = parserConf[prop]; + } } - } - pythonConf.name = 'python'; - pythonConf.singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!\\?]"); - if (pythonConf.version === 3) { - pythonConf.identifiers = new RegExp("^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*"); - } else if (pythonConf.version === 2) { - pythonConf.identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - } - return CodeMirror.getMode(conf, pythonConf); - }, 'python'); + pythonConf.name = 'python'; + pythonConf.singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!\\?]"); + if (pythonConf.version === 3) { + pythonConf.identifiers = new RegExp("^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*"); + } else if (pythonConf.version === 2) { + pythonConf.identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); + } + return CodeMirror.getMode(conf, pythonConf); + }, 'python'); + + CodeMirror.defineMIME("text/x-ipython", "ipython"); - CodeMirror.defineMIME("text/x-ipython", "ipython"); + }); }) diff --git a/notebook/static/notebook/js/codemirror-ipythongfm.js b/notebook/static/notebook/js/codemirror-ipythongfm.js index 9a6bbc36b..293d17dca 100644 --- a/notebook/static/notebook/js/codemirror-ipythongfm.js +++ b/notebook/static/notebook/js/codemirror-ipythongfm.js @@ -10,15 +10,9 @@ (function(mod) { if (typeof exports == "object" && typeof module == "object"){ // CommonJS mod(require("codemirror/lib/codemirror") - ,require("codemirror/addon/mode/multiplex") - ,require("codemirror/mode/gfm/gfm") - ,require("codemirror/mode/stex/stex") ); } else if (typeof define == "function" && define.amd){ // AMD define(["codemirror/lib/codemirror" - ,"codemirror/addon/mode/multiplex" - ,"codemirror/mode/python/python" - ,"codemirror/mode/stex/stex" ], mod); } else {// Plain browser env mod(CodeMirror); @@ -26,37 +20,40 @@ })( function(CodeMirror){ "use strict"; - CodeMirror.defineMode("ipythongfm", function(config, parserConfig) { + requirejs(["codemirror/addon/mode/multiplex", "codemirror/mode/gfm/gfm", "codemirror/mode/stex/stex"], function () { - var gfm_mode = CodeMirror.getMode(config, "gfm"); - var tex_mode = CodeMirror.getMode(config, "stex"); + CodeMirror.defineMode("ipythongfm", function(config, parserConfig) { - return CodeMirror.multiplexingMode( - gfm_mode, - { - open: "$", close: "$", - mode: tex_mode, - delimStyle: "delimit" - }, - { - // not sure this works as $$ is interpreted at (opening $, closing $, as defined just above) - open: "$$", close: "$$", - mode: tex_mode, - delimStyle: "delimit" - }, - { - open: "\\(", close: "\\)", - mode: tex_mode, - delimStyle: "delimit" - }, - { - open: "\\[", close: "\\]", - mode: tex_mode, - delimStyle: "delimit" - } - // .. more multiplexed styles can follow here - ); - }, 'gfm'); + var gfm_mode = CodeMirror.getMode(config, "gfm"); + var tex_mode = CodeMirror.getMode(config, "stex"); + + return CodeMirror.multiplexingMode( + gfm_mode, + { + open: "$", close: "$", + mode: tex_mode, + delimStyle: "delimit" + }, + { + // not sure this works as $$ is interpreted at (opening $, closing $, as defined just above) + open: "$$", close: "$$", + mode: tex_mode, + delimStyle: "delimit" + }, + { + open: "\\(", close: "\\)", + mode: tex_mode, + delimStyle: "delimit" + }, + { + open: "\\[", close: "\\]", + mode: tex_mode, + delimStyle: "delimit" + } + // .. more multiplexed styles can follow here + ); + }, 'gfm'); - CodeMirror.defineMIME("text/x-ipythongfm", "ipythongfm"); + CodeMirror.defineMIME("text/x-ipythongfm", "ipythongfm"); + }); }) diff --git a/webpack.config.js b/webpack.config.js index 712267d4d..22025b380 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -39,8 +39,8 @@ var commonConfig = { bootstraptour: 'Tour', 'jquery-ui': '$', typeahead: '$.typeahead', - 'codemirror/lib/codemirror': "commonjs codemirror/lib/codemirror", - 'codemirror/mode/meta': 'commonjs codemirror/mode/meta' + 'codemirror/lib/codemirror': 'commonjs codemirror/lib/codemirror', + 'codemirror/mode/meta': 'commonjs codemirror/mode/meta', } };