diff --git a/IPython/html/static/base/js/utils.js b/IPython/html/static/base/js/utils.js
index ea9b842..2e6fcde 100644
--- a/IPython/html/static/base/js/utils.js
+++ b/IPython/html/static/base/js/utils.js
@@ -605,17 +605,6 @@ define([
msg += ajax_error_msg(jqXHR);
console.log(msg);
};
-
- // monkeypatch from CM4.7+... will be available soon, along with aliases!
- CodeMirror.findModeByName = CodeMirror.findModeByName || function(name) {
- name = name.toLowerCase();
- for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
- var info = CodeMirror.modeInfo[i];
- if (info.name.toLowerCase() == name) return info;
- if (info.alias) for (var j = 0; j < info.alias.length; j++)
- if (info.alias[j].toLowerCase() == name) return info;
- }
- };
var requireCodeMirrorMode = function (mode, callback, errback) {
/**
diff --git a/IPython/html/static/notebook/less/highlight-refs.less b/IPython/html/static/notebook/less/highlight-refs.less
new file mode 100644
index 0000000..a2c0ab6
--- /dev/null
+++ b/IPython/html/static/notebook/less/highlight-refs.less
@@ -0,0 +1,5 @@
+/* load the codemirror defaults as LESS so that highlight.less
+ can load default theme declarations by reference without pulling in the
+ nasty positioning
+*/
+@import (less) "../../components/codemirror/lib/codemirror.css";
diff --git a/IPython/html/static/notebook/less/highlight.less b/IPython/html/static/notebook/less/highlight.less
index 15a878c..d0b2bf2 100644
--- a/IPython/html/static/notebook/less/highlight.less
+++ b/IPython/html/static/notebook/less/highlight.less
@@ -5,160 +5,108 @@ Adapted from GitHub theme
*/
-pre code {
- display: block;
- padding: 0.5em;
+@import (reference) "highlight-refs.less";
+
+@highlight-base: #000;
+
+.highlight-base{
+ color: @highlight-base;
+}
+
+.highlight-variable{
+ .highlight-base();
+}
+
+.highlight-variable-2{
+ color: lighten(@highlight-base, 10%);
}
-.highlight-base,
-pre code,
-pre .subst,
-pre .tag .title,
-pre .lisp .title,
-pre .clojure .built_in,
-pre .nginx .title {
- color: black;
+.highlight-variable-3{
+ color: lighten(@highlight-base, 20%);
}
-.highlight-string,
-pre .string,
-pre .constant,
-pre .parent,
-pre .tag .value,
-pre .rules .value,
-pre .rules .value .number,
-pre .preprocessor,
-pre .ruby .symbol,
-pre .ruby .symbol .string,
-pre .aggregate,
-pre .template_tag,
-pre .django .variable,
-pre .smalltalk .class,
-pre .addition,
-pre .flow,
-pre .stream,
-pre .bash .variable,
-pre .apache .tag,
-pre .apache .cbracket,
-pre .tex .command,
-pre .tex .special,
-pre .erlang_repl .function_or_atom,
-pre .markdown .header {
+.highlight-string{
color: #BA2121;
}
-.highlight-comment,
-pre .comment,
-pre .annotation,
-pre .template_comment,
-pre .diff .header,
-pre .chunk,
-pre .markdown .blockquote {
+.highlight-comment{
color: #408080;
font-style: italic;
}
-.highlight-number,
-pre .number,
-pre .date,
-pre .regexp,
-pre .literal,
-pre .smalltalk .symbol,
-pre .smalltalk .char,
-pre .go .constant,
-pre .change,
-pre .markdown .bullet,
-pre .markdown .link_url {
+.highlight-number{
color: #080;
}
-pre .label,
-pre .javadoc,
-pre .ruby .string,
-pre .decorator,
-pre .filter .argument,
-pre .localvars,
-pre .array,
-pre .attr_selector,
-pre .important,
-pre .pseudo,
-pre .pi,
-pre .doctype,
-pre .deletion,
-pre .envvar,
-pre .shebang,
-pre .apache .sqbracket,
-pre .nginx .built_in,
-pre .tex .formula,
-pre .erlang_repl .reserved,
-pre .prompt,
-pre .markdown .link_label,
-pre .vhdl .attribute,
-pre .clojure .attribute,
-pre .coffeescript .property {
- color: #88F
+.highlight-atom{
+ color: #88F;
}
-.highlight-keyword,
-pre .keyword,
-pre .id,
-pre .phpdoc,
-pre .aggregate,
-pre .css .tag,
-pre .javadoctag,
-pre .phpdoc,
-pre .yardoctag,
-pre .smalltalk .class,
-pre .winutils,
-pre .bash .variable,
-pre .apache .tag,
-pre .go .typename,
-pre .tex .command,
-pre .markdown .strong,
-pre .request,
-pre .status {
+.highlight-keyword{
color: #008000;
font-weight: bold;
}
-.highlight-builtin,
-pre .built_in {
+.highlight-builtin{
color: #008000;
}
-pre .markdown .emphasis {
- font-style: italic;
+.highlight-error{
+ color: #f00;
}
-pre .nginx .built_in {
- font-weight: normal;
+.highlight-operator{
+ color: #AA22FF;
+ font-weight: bold;
}
-pre .coffeescript .javascript,
-pre .javascript .xml,
-pre .tex .formula,
-pre .xml .javascript,
-pre .xml .vbscript,
-pre .xml .css,
-pre .xml .cdata {
- opacity: 0.5;
+.highlight-meta{
+ color: #AA22FF;
}
+/* previously not defined, copying from default codemirror */
+.highlight-def{ .cm-s-default.cm-def() }
+.highlight-punctuation{ .cm-s-default.cm-punctuation() }
+.highlight-property{ .cm-s-default.cm-property() }
+.highlight-string-2{ .cm-s-default.cm-string-2() }
+.highlight-qualifier{ .cm-s-default.cm-qualifier() }
+.highlight-bracket{ .cm-s-default.cm-bracket() }
+.highlight-tag{ .cm-s-default.cm-tag() }
+.highlight-attribute{ .cm-s-default.cm-attribute() }
+.highlight-header{ .cm-s-default.cm-header() }
+.highlight-quote{ .cm-s-default.cm-quote() }
+.highlight-link{ .cm-s-default.cm-link() }
+
+
/* apply the same style to codemirror */
-.cm-s-ipython {
- span.cm-variable { .highlight-base()}
- span.cm-keyword { .highlight-keyword() }
- span.cm-number { .highlight-number() }
- span.cm-comment { .highlight-comment() }
- span.cm-string { .highlight-string()}
- span.cm-builtin { .highlight-builtin() }
- span.cm-error { color: #f00; }
- span.cm-operator {color: #AA22FF; font-weight: bold;}
- span.cm-meta {color: #AA22FF;}
-
- span.cm-tab {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
- background-position: right;
- background-repeat: no-repeat;
- }
+.cm-s-ipython span {
+ &.cm-keyword { .highlight-keyword() }
+ &.cm-atom { .highlight-atom() }
+ &.cm-number { .highlight-number() }
+ &.cm-def { .highlight-def() }
+ &.cm-variable { .highlight-variable() }
+ &.cm-punctuation { .highlight-punctuation() }
+ &.cm-property { .highlight-property() }
+ &.cm-operator { .highlight-operator() }
+ &.cm-variable-2 { .highlight-variable-2() }
+ &.cm-variable-3 { .highlight-variable-3() }
+ &.cm-comment { .highlight-comment() }
+ &.cm-string { .highlight-string() }
+ &.cm-string-2 { .highlight-string-2() }
+ &.cm-meta { .highlight-meta() }
+ &.cm-qualifier { .highlight-qualifier() }
+ &.cm-builtin { .highlight-builtin() }
+ &.cm-bracket { .highlight-bracket() }
+ &.cm-tag { .highlight-tag() }
+ &.cm-attribute { .highlight-attribute() }
+ &.cm-header { .highlight-header() }
+ &.cm-quote { .highlight-quote() }
+ &.cm-link { .highlight-link() }
+ &.cm-error { .highlight-error() }
+
+ &.cm-tab {
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
+ background-position: right;
+ background-repeat: no-repeat;
+ }
}
diff --git a/IPython/html/tests/base/highlight.js b/IPython/html/tests/base/highlight.js
index d48cb43..3270598 100644
--- a/IPython/html/tests/base/highlight.js
+++ b/IPython/html/tests/base/highlight.js
@@ -31,7 +31,7 @@ casper.notebook_test(function () {
{from: ["../"], error: true},
{from: ["//"], error: true},
].map(function (mode) {
- [mode.to].concat(mode.from || []).map(function(from){
+ mode.from.concat(mode.to || []).map(function(from){
casper.evaluate(function(from, expected, error_expected){
IPython.utils.requireCodeMirrorMode(from, function(observed){
window.callPhantom({