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',
|
||||
'java', 'javascript', 'json', 'latex', 'less', 'liquid',
|
||||
'lua', 'markdown', 'ocaml', 'perl', 'pgsql', 'php', 'powershell',
|
||||
@@ -205,9 +206,14 @@ function getLang( 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 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');
|
||||
newDiv.innerHTML = color.html;
|
||||
@@ -257,6 +263,23 @@ var makePreviewHtml = function () {
|
||||
// the syntax for code highlighting means all code, even one line, contains newlines.
|
||||
if ( txt.length > 1 && codeHTML.match( /\n/ ) ) {
|
||||
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] = '`'; txt[1] = 'ruby'
|
||||
if ( txt[ 0 ] !== '`' || $.inArray( declaredLanguage, languages ) === -1 ) {
|
||||
@@ -268,7 +291,7 @@ var makePreviewHtml = function () {
|
||||
// length + 1 for the marker character.
|
||||
element.innerHTML = codeHTML.substring( declaredLanguage.length + 1 ).trim();
|
||||
// highlight: element
|
||||
highlight( element, declaredLanguage );
|
||||
highlight( element, aceMode );
|
||||
} else {
|
||||
// Highlighting is not for `code` inline syntax. For example `puts "string"`.
|
||||
skipped++;
|
||||
|
||||
Reference in New Issue
Block a user