Load CodeMirror once globally

Jonathan Frederic 11 years ago
parent 84ce0cee2c
commit 8c8c95ceca

@ -2,5 +2,5 @@
"browserify": true,
"node": true,
"jquery": true,
"predef": [ "requirejs", "define", "Promise"]
"predef": [ "requirejs", "define", "Promise", "CodeMirror"]
}

@ -2,7 +2,6 @@
// Distributed under the terms of the Modified BSD License.
"use strict";
var CodeMirror = require('codemirror/lib/codemirror');
/**
* A wrapper around bootstrap modal for easier use

@ -25,7 +25,32 @@ module.exports = new Promise(function(resolve, reject) {
reject(new Error('jQueryUI not injected into jQuery prototype'));
}
resolve();
requirejs([
'codemirror/lib/codemirror',
'codemirror/mode/meta',
'codemirror/addon/comment/comment',
'codemirror/addon/dialog/dialog',
'codemirror/addon/edit/closebrackets',
'codemirror/addon/edit/matchbrackets',
'codemirror/addon/search/searchcursor',
'codemirror/addon/search/search',
'codemirror/keymap/emacs',
'codemirror/keymap/sublime',
'codemirror/keymap/vim',
'codemirror/mode/python/python',
'codemirror/addon/runmode/runmode',
'codemirror/mode/gfm/gfm',
'notebook/js/codemirror-ipython',
'notebook/js/codemirror-ipythongfm'
], function(CodeMirror) {
window.CodeMirror = CodeMirror;
console.log('CodeMirror loaded and available in global namespace');
resolve();
}, function(err) {
console.error('could not load CodeMirror and/or it\'s plugins');
reject(err);
});
}, function(err) {
console.error('could not load jqueryui and/or bootstrap');
reject(err);

@ -622,32 +622,30 @@
mode.mode || mode.name;
requirejs(['codemirror/lib/codemirror', 'codemirror/mode/meta'], function(CodeMirror) {
// simplest, cheapest check by mode name: mode may also have config
if (CodeMirror.modes.hasOwnProperty(modename)) {
// return the full mode object, if it has a name
callback(mode.name ? mode : modename);
return;
}
// simplest, cheapest check by mode name: mode may also have config
if (CodeMirror.modes.hasOwnProperty(modename)) {
// return the full mode object, if it has a name
callback(mode.name ? mode : modename);
return;
}
// *somehow* get back a CM.modeInfo-like object that has .mode and
// .mime
var info = (mode && mode.mode && mode.mime && mode) ||
CodeMirror.findModeByName(modename) ||
CodeMirror.findModeByExtension(modename.split(".").slice(-1)) ||
CodeMirror.findModeByMIME(modename) ||
{mode: modename, mime: modename};
requirejs([
// might want to use CodeMirror.modeURL here
['codemirror/mode', info.mode, info.mode].join('/'),
], function() {
// return the original mode, as from a kernelspec on first load
// or the mimetype, as for most highlighting
callback(mode.name ? mode : info.mime);
}, errback
);
});
// *somehow* get back a CM.modeInfo-like object that has .mode and
// .mime
var info = (mode && mode.mode && mode.mime && mode) ||
CodeMirror.findModeByName(modename) ||
CodeMirror.findModeByExtension(modename.split(".").slice(-1)) ||
CodeMirror.findModeByMIME(modename) ||
{mode: modename, mime: modename};
requirejs([
// might want to use CodeMirror.modeURL here
['codemirror/mode', info.mode, info.mode].join('/'),
], function() {
// return the original mode, as from a kernelspec on first load
// or the mimetype, as for most highlighting
callback(mode.name ? mode : info.mime);
}, errback
);
};
/** Error type for wrapped XHR errors. */

@ -3,18 +3,7 @@
"use strict";
var CodeMirror = require('codemirror/lib/codemirror');
var utils = require('base/js/utils');
require('codemirror/mode/meta');
require('codemirror/addon/comment/comment');
require('codemirror/addon/dialog/dialog');
require('codemirror/addon/edit/closebrackets');
require('codemirror/addon/edit/matchbrackets');
require('codemirror/addon/search/searchcursor');
require('codemirror/addon/search/search');
require('codemirror/keymap/emacs');
require('codemirror/keymap/sublime');
require('codemirror/keymap/vim');
var Editor = function(selector, options) {
var that = this;

@ -5,9 +5,6 @@
var IPython = require('base/js/namespace');
var utils = require('base/js/utils');
var dialog = require('base/js/dialog');
var CodeMirror = require('codemirror/lib/codemirror');
require('codemirror/mode/meta');
requirejs(['bootstrap'], function() {});
var MenuBar = function (selector, options) {
/**

@ -11,10 +11,6 @@
"use strict";
var utils = require('base/js/utils');
var CodeMirror = require('codemirror/lib/codemirror');
var cm_match = require('codemirror/addon/edit/matchbrackets');
var cm_closeb = require('codemirror/addon/edit/closebrackets');
var cm_comment = require('codemirror/addon/comment/comment');
var overlayHack = CodeMirror.scrollbarModel.native.prototype.overlayHack;

@ -17,9 +17,6 @@
var outputarea = require('notebook/js/outputarea');
var completer = require('notebook/js/completer');
var celltoolbar = require('notebook/js/celltoolbar');
var CodeMirror = require('codemirror/lib/codemirror');
var cmpython = require('codemirror/mode/python/python');
var cmip = require('notebook/js/codemirror-ipython');
var Cell = cell.Cell;

@ -4,7 +4,6 @@
var utils = require('base/js/utils');
var keyboard = require('base/js/keyboard');
var CodeMirror = require('codemirror/lib/codemirror');
require('notebook/js/contexthint');
// easier key mapping

@ -3,7 +3,6 @@
// highly adapted for codemiror jshint
"use strict";
var CodeMirror = require('codemirror/lib/codemirror');
var forEach = function(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);

@ -3,8 +3,7 @@
"use strict";
// Contents must be loaded at runtime.
requirejs(['contents'], function(contents_service) {
require('base/js/globals').then(function() {
require('base/js/globals').then(function() {
var IPython = require('base/js/namespace');
var notebook = require('notebook/js/notebook');
var configmod = require('services/config');
@ -21,15 +20,11 @@ requirejs(['contents'], function(contents_service) {
var actions = require('notebook/js/actions');
var keyboardmanager = require('notebook/js/keyboardmanager');
var kernelselector = require('notebook/js/kernelselector');
var CodeMirror = require('codemirror/lib/codemirror');
var about = require('notebook/js/about');
var typeahead = require('typeahead');
var searchandreplace = 'notebook/js/searchandreplace';
// only loaded, not used, please keep sure this is loaded last
requirejs(['custom/custom'], function() {});
// compat with old IPython, remove for IPython > 3.0
window.CodeMirror = CodeMirror;
requirejs(['contents', 'custom/custom'], function(contents_service) {
var common_options = {
ws_url : utils.get_body_data("wsUrl"),
@ -42,8 +37,8 @@ requirejs(['contents'], function(contents_service) {
config_section.load();
var common_config = new configmod.ConfigSection('common', common_options);
common_config.load();
var page = new page.Page();
var pager = new pager.Pager('div#pager', {
page = new page.Page();
pager = new pager.Pager('div#pager', {
events: events});
var acts = new actions.init();
var keyboard_manager = new keyboardmanager.KeyboardManager({
@ -57,7 +52,7 @@ requirejs(['contents'], function(contents_service) {
base_url: common_options.base_url,
common_config: common_config
});
var notebook = new notebook.Notebook('div#notebook', $.extend({
notebook = new notebook.Notebook('div#notebook', $.extend({
events: events,
keyboard_manager: keyboard_manager,
save_widget: save_widget,
@ -75,7 +70,7 @@ requirejs(['contents'], function(contents_service) {
notebook: notebook});
keyboard_manager.set_notebook(notebook);
keyboard_manager.set_quickhelp(quick_help);
var menubar = new menubar.MenuBar('#menubar', $.extend({
menubar = new menubar.MenuBar('#menubar', $.extend({
notebook: notebook,
contents: contents,
events: events,
@ -141,7 +136,7 @@ requirejs(['contents'], function(contents_service) {
utils.load_extensions_from_config(config_section);
utils.load_extensions_from_config(common_config);
notebook.load_notebook(common_options.notebook_path);
}).catch(function(err) {
console.error('Could not load globals', err);
});
}).catch(function(err) {
console.error('Could not load globals', err);
});

@ -7,7 +7,6 @@
var utils = require('base/js/utils');
var tour = require('notebook/js/tour');
var moment = require('moment');
requirejs(['bootstrap'], function() {});
var MenuBar = function (selector, options) {
/**

@ -17,8 +17,6 @@
var session = require('services/sessions/session');
var celltoolbar = require('notebook/js/celltoolbar');
var marked = require('marked');
var CodeMirror = require('codemirror/lib/codemirror');
var runMode = require('codemirror/addon/runmode/runmode');
var mathjaxutils = require('notebook/js/mathjaxutils');
var keyboard = require('base/js/keyboard');
var tooltip = require('notebook/js/tooltip');

@ -9,9 +9,6 @@
var mathjaxutils = require('notebook/js/mathjaxutils');
var celltoolbar = require('notebook/js/celltoolbar');
var marked = require('marked');
var CodeMirror = require('codemirror/lib/codemirror');
var gfm = require('codemirror/mode/gfm/gfm');
var ipgfm = require('notebook/js/codemirror-ipythongfm');
var Cell = cell.Cell;

@ -7,8 +7,8 @@ require('base/js/globals').then(function() {
var page = require('base/js/page');
var configmod = require('services/config');
var terminado = require('terminal/js/terminado');
requirejs(['custom/custom'], function() {});
requirejs(['custom/custom'], function() {
page = new page.Page();
var common_config = new configmod.ConfigSection('common',
@ -53,6 +53,8 @@ require('base/js/globals').then(function() {
// Expose terminal for fiddling with in the browser
window.terminal = terminal;
});
}).catch(function(err) {
console.error('Could not load globals', err);
});

@ -3,8 +3,7 @@
"use strict";
// Contents must be loaded at runtime.
requirejs(['contents'], function(contents_service) {
require('base/js/globals').then(function() {
require('base/js/globals').then(function() {
var IPython = require('base/js/namespace');
var dialog = require('base/js/dialog');
var events = require('base/js/events');
@ -17,7 +16,7 @@ requirejs(['contents'], function(contents_service) {
var terminallist = require('tree/js/terminallist');
var newnotebook = require('tree/js/newnotebook');
var loginwidget = require('auth/js/loginwidget');
requirejs(['custom/custom'], function() {});
requirejs(['contents', 'custom/custom'], function(contents_service) {
IPython.NotebookList = notebooklist.NotebookList;
@ -156,7 +155,7 @@ requirejs(['contents'], function(contents_service) {
if (window.location.hash) {
$("#tabs").find("a[href=" + window.location.hash + "]").click();
}
}).catch(function(err) {
console.error('Could not load globals', err);
});
}).catch(function(err) {
console.error('Could not load globals', err);
});

Loading…
Cancel
Save