diff --git a/IPython/frontend/html/notebook/static/js/notebookmain.js b/IPython/frontend/html/notebook/static/js/notebookmain.js index 37950b919..45e9c1f86 100644 --- a/IPython/frontend/html/notebook/static/js/notebookmain.js +++ b/IPython/frontend/html/notebook/static/js/notebookmain.js @@ -42,7 +42,6 @@ $(document).ready(function () { var baseProjectUrl = $('body').data('baseProjectUrl') IPython.page = new IPython.Page(); - IPython.markdown_converter = new Markdown.Converter(); IPython.layout_manager = new IPython.LayoutManager(); IPython.pager = new IPython.Pager('div#pager', 'div#pager_splitter'); IPython.quick_help = new IPython.QuickHelp('span#quick_help_area'); @@ -94,6 +93,23 @@ $(document).ready(function () { $([IPython.events]).on('notebook_loaded.Notebook', first_load); IPython.notebook.load_notebook($('body').data('notebookId')); + + if (marked) { + marked.setOptions({ + gfm : true, + tables: true, + langPrefix: "language-", + highlight: function(code, lang) { + var highlighted; + if (lang) { + highlighted = hljs.highlight(lang, code, false); + } else { + highlighted = hljs.highlightAuto(code); + } + return highlighted.value; + } + }) + } }); diff --git a/IPython/frontend/html/notebook/static/js/textcell.js b/IPython/frontend/html/notebook/static/js/textcell.js index 1473e3116..4d98a8949 100644 --- a/IPython/frontend/html/notebook/static/js/textcell.js +++ b/IPython/frontend/html/notebook/static/js/textcell.js @@ -298,7 +298,7 @@ var IPython = (function (IPython) { MarkdownCell.options_default = { cm_config: { - mode: 'markdown' + mode: 'gfm' }, placeholder: "Type *Markdown* and LaTeX: $\\alpha^2$" } @@ -315,9 +315,9 @@ var IPython = (function (IPython) { if (this.rendered === false) { var text = this.get_text(); if (text === "") { text = this.placeholder; } - text = IPython.mathjaxutils.remove_math(text) - var html = IPython.markdown_converter.makeHtml(text); - html = IPython.mathjaxutils.replace_math(html) + text = IPython.mathjaxutils.remove_math(text); + var html = marked.parser(marked.lexer(text)); + html = IPython.mathjaxutils.replace_math(html); try { this.set_rendered(html); } catch (e) { @@ -329,18 +329,6 @@ var IPython = (function (IPython) { } this.element.find('div.text_cell_input').hide(); this.element.find("div.text_cell_render").show(); - var code_snippets = this.element.find("pre > code"); - code_snippets.replaceWith(function () { - var code = $(this).html(); - /* Substitute br for newlines and   for spaces - before highlighting, since prettify doesn't - preserve those on all browsers */ - code = code.replace(/(\r\n|\n|\r)/gm, "
"); - code = code.replace(/ /gm, ' '); - code = prettyPrintOne(code); - - return '' + code + ''; - }); this.typeset() this.rendered = true; } diff --git a/IPython/frontend/html/notebook/static/less/highlight.less b/IPython/frontend/html/notebook/static/less/highlight.less new file mode 100644 index 000000000..aff553ca5 --- /dev/null +++ b/IPython/frontend/html/notebook/static/less/highlight.less @@ -0,0 +1,157 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev +Adapted from GitHub theme + +*/ + +pre code { + display: block; + padding: 0.5em; +} + +.highlight-base, +pre code, +pre .subst, +pre .tag .title, +pre .lisp .title, +pre .clojure .built_in, +pre .nginx .title { + color: black; +} + +.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 { + color: #BA2121; +} + +.highlight-comment, +pre .comment, +pre .annotation, +pre .template_comment, +pre .diff .header, +pre .chunk, +pre .markdown .blockquote { + 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 { + 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-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 { + color: #008000; + font-weight: bold; +} + +.highlight-builtin, +pre .built_in { + color: #008000; +} + +pre .markdown .emphasis { + font-style: italic; +} + +pre .nginx .built_in { + font-weight: normal; +} + +pre .coffeescript .javascript, +pre .javascript .xml, +pre .tex .formula, +pre .xml .javascript, +pre .xml .vbscript, +pre .xml .css, +pre .xml .cdata { + opacity: 0.5; +} + +/* apply the same style to codemirror */ + +.cm-s-ipython span.cm-variable { .highlight-base()} +.cm-s-ipython span.cm-keyword { .highlight-keyword() } +.cm-s-ipython span.cm-number { .highlight-number() } +.cm-s-ipython span.cm-comment { .highlight-comment() } +.cm-s-ipython span.cm-string { .highlight-string()} +.cm-s-ipython span.cm-builtin { .highlight-builtin() } +.cm-s-ipython span.cm-error { color: #f00; } +.cm-s-ipython span.cm-operator {color: #AA22FF; font-weight: bold;} +.cm-s-ipython span.cm-meta {color: #AA22FF;} diff --git a/IPython/frontend/html/notebook/static/less/notebook.less b/IPython/frontend/html/notebook/static/less/notebook.less index 0c93134ca..82d837d96 100644 --- a/IPython/frontend/html/notebook/static/less/notebook.less +++ b/IPython/frontend/html/notebook/static/less/notebook.less @@ -5,7 +5,7 @@ */ @import "variables.less"; - +@import "highlight.less"; body { background-color:@notebook_background; diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook.html index 18aca0983..5f9626881 100644 --- a/IPython/frontend/html/notebook/templates/notebook.html +++ b/IPython/frontend/html/notebook/templates/notebook.html @@ -12,9 +12,6 @@ window.mathjax_url = "{{mathjax_url}}"; - - - @@ -198,6 +195,7 @@ class="notebook_app" + @@ -205,10 +203,11 @@ class="notebook_app" + - + + -