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({