Update livepreview for new Ace.
This commit is contained in:
@@ -172,7 +172,8 @@ var previewSet = function( text ) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var languages = [ 'c_cpp', 'clojure', 'coffee', 'coldfusion',
|
// 'c', 'c++', 'cpp' are github specific and transformed to c_cpp for Ace.
|
||||||
|
var languages = [ 'c', 'c++', 'cpp', 'clojure', 'coffee', 'coldfusion',
|
||||||
'csharp', 'css', 'diff', 'golang', 'groovy', 'haxe', 'html',
|
'csharp', 'css', 'diff', 'golang', 'groovy', 'haxe', 'html',
|
||||||
'java', 'javascript', 'json', 'latex', 'less', 'liquid',
|
'java', 'javascript', 'json', 'latex', 'less', 'liquid',
|
||||||
'lua', 'markdown', 'ocaml', 'perl', 'pgsql', 'php', 'powershell',
|
'lua', 'markdown', 'ocaml', 'perl', 'pgsql', 'php', 'powershell',
|
||||||
@@ -205,9 +206,14 @@ function getLang( language ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function highlight( element, language ) {
|
function highlight( element, language ) {
|
||||||
var data = element.innerHTML;
|
// Highlighting requires .innerText not
|
||||||
|
// .innerHTML. It's the difference between
|
||||||
|
// '>' and '>'.
|
||||||
|
// Firefox does not support innerText.
|
||||||
|
var data = element.innerText || element.textContent;
|
||||||
var mode = getLang( language );
|
var mode = getLang( language );
|
||||||
var color = staticHighlight.render( data, mode, githubTheme );
|
// input, mode, theme, lineStart, disableGutter
|
||||||
|
var color = staticHighlight.render( data, mode, githubTheme, 1, true );
|
||||||
|
|
||||||
var newDiv = doc.createElement('div');
|
var newDiv = doc.createElement('div');
|
||||||
newDiv.innerHTML = color.html;
|
newDiv.innerHTML = color.html;
|
||||||
@@ -257,6 +263,23 @@ var makePreviewHtml = function () {
|
|||||||
// the syntax for code highlighting means all code, even one line, contains newlines.
|
// the syntax for code highlighting means all code, even one line, contains newlines.
|
||||||
if ( txt.length > 1 && codeHTML.match( /\n/ ) ) {
|
if ( txt.length > 1 && codeHTML.match( /\n/ ) ) {
|
||||||
var declaredLanguage = txt[ 1 ];
|
var declaredLanguage = txt[ 1 ];
|
||||||
|
var aceMode = declaredLanguage;
|
||||||
|
|
||||||
|
// GitHub supports 'c', 'c++', 'cpp'
|
||||||
|
// which must trigger the 'c_cpp' mode in Ace.
|
||||||
|
if ( declaredLanguage === 'cpp' ) {
|
||||||
|
aceMode = 'c_cpp';
|
||||||
|
}
|
||||||
|
|
||||||
|
// '`c++'.split( /\b/ )
|
||||||
|
// ["`", "c", "++"]
|
||||||
|
if ( declaredLanguage === 'c' ) {
|
||||||
|
aceMode = 'c_cpp';
|
||||||
|
if ( txt.length > 2 && txt[ 2 ].substring( 0, 2 ) === '++' ) {
|
||||||
|
declaredLanguage += '++';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// txt[0] must be '`'
|
// txt[0] must be '`'
|
||||||
// txt[0] = '`'; txt[1] = 'ruby'
|
// txt[0] = '`'; txt[1] = 'ruby'
|
||||||
if ( txt[ 0 ] !== '`' || $.inArray( declaredLanguage, languages ) === -1 ) {
|
if ( txt[ 0 ] !== '`' || $.inArray( declaredLanguage, languages ) === -1 ) {
|
||||||
@@ -268,7 +291,7 @@ var makePreviewHtml = function () {
|
|||||||
// length + 1 for the marker character.
|
// length + 1 for the marker character.
|
||||||
element.innerHTML = codeHTML.substring( declaredLanguage.length + 1 ).trim();
|
element.innerHTML = codeHTML.substring( declaredLanguage.length + 1 ).trim();
|
||||||
// highlight: element
|
// highlight: element
|
||||||
highlight( element, declaredLanguage );
|
highlight( element, aceMode );
|
||||||
} else {
|
} else {
|
||||||
// Highlighting is not for `code` inline syntax. For example `puts "string"`.
|
// Highlighting is not for `code` inline syntax. For example `puts "string"`.
|
||||||
skipped++;
|
skipped++;
|
||||||
|
|||||||
Reference in New Issue
Block a user