more langs

This commit is contained in:
Claude 2012-04-19 20:32:56 +02:00
parent 888553a502
commit 49be347f8c
5 changed files with 156 additions and 7 deletions

View File

@ -78,7 +78,14 @@ $config['codemirror_languages'] = array(
) , ) ,
) , ) ,
) , ) ,
'bash' => 'Bash', 'bash' => array(
'mode' => 'text/x-sh',
'js' => array(
array(
'codemirror/mode/shell/shell.js'
) ,
) ,
) ,
'c' => array( 'c' => array(
'mode' => 'text/x-csrc', 'mode' => 'text/x-csrc',
'js' => array( 'js' => array(
@ -95,10 +102,38 @@ $config['codemirror_languages'] = array(
) , ) ,
) , ) ,
) , ) ,
'diff' => 'Diff', 'diff' => array(
'latex' => 'LaTeX', 'mode' => 'diff',
'sql' => 'SQL', 'js' => array(
'xml' => 'XML', array(
'codemirror/mode/diff/diff.js'
) ,
) ,
) ,
'latex' => array(
'mode' => 'stex',
'js' => array(
array(
'codemirror/mode/stex/stex.js'
) ,
) ,
) ,
'sql' => array(
'mode' => 'mysql',
'js' => array(
array(
'codemirror/mode/mysql/mysql.js'
) ,
) ,
) ,
'xml' => array(
'mode' => 'xml',
'js' => array(
array(
'codemirror/mode/xml/xml.js'
) ,
) ,
) ,
'text' => 'Plain Text', 'text' => 'Plain Text',
'abap' => 'ABAP', 'abap' => 'ABAP',
'actionscript' => 'Actionscript', 'actionscript' => 'Actionscript',
@ -169,7 +204,14 @@ $config['codemirror_languages'] = array(
'matlab' => 'Matlab', 'matlab' => 'Matlab',
'mirc' => 'mIRC', 'mirc' => 'mIRC',
'mpasm' => 'MPASM', 'mpasm' => 'MPASM',
'mysql' => 'MySQL', 'mysql' => array(
'mode' => 'mysql',
'js' => array(
array(
'codemirror/mode/mysql/mysql.js'
) ,
) ,
) ,
'nsis' => 'NSIS', 'nsis' => 'NSIS',
'objc' => 'Objective C', 'objc' => 'Objective C',
'ocaml' => 'ocaml', 'ocaml' => 'ocaml',

View File

@ -53,7 +53,7 @@ $config['geshi_languages'] = array(
'groovy' => 'Groovy', 'groovy' => 'Groovy',
'haskell' => 'Haskell', 'haskell' => 'Haskell',
'idl' => 'Unoidl', 'idl' => 'Unoidl',
'ini' => 'INI', 'ini' => 'ini',
'inno' => 'Inno Script', 'inno' => 'Inno Script',
'io' => 'Io', 'io' => 'Io',
'java' => 'Java', 'java' => 'Java',

View File

@ -22,6 +22,7 @@ $this->carabiner->css('reset.css');
$this->carabiner->css('fonts.css'); $this->carabiner->css('fonts.css');
$this->carabiner->css('main.css'); $this->carabiner->css('main.css');
$this->carabiner->css('codemirror.css'); $this->carabiner->css('codemirror.css');
$this->carabiner->css('diff.css');
$this->carabiner->display('css'); $this->carabiner->display('css');

View File

@ -0,0 +1,103 @@
CodeMirror.defineMode('shell', function(config) {
var atoms = ['true','false'],
keywords = ['if','then','do','else','elif','while','until','for','in','esac','fi','fin','fil','done','exit','set','unset','export','function'],
commands = ['ab','awk','bash','beep','cat','cc','cd','chown','chmod','chroot','clear','cp','curl','cut','diff','echo','find','gawk','gcc','get','git','grep','kill','killall','ls','make','mkdir','openssl','mv','nc','node','npm','ping','ps','restart','rm','rmdir','sed','service','sh','shopt','shred','source','sort','sleep','ssh','start','stop','su','sudo','tee','telnet','top','touch','vi','vim','wall','wc','wget','who','write','yes','zsh'];
function tokenBase(stream, state) {
var sol = stream.sol();
var ch = stream.next();
if (ch === '\'' || ch === '"' || ch === '`') {
state.tokens.unshift(tokenString(ch));
return tokenize(stream, state);
}
if (ch === '#') {
if (sol && stream.eat('!')) {
stream.skipToEnd();
return 'meta'; // 'comment'?
}
stream.skipToEnd();
return 'comment';
}
if (ch === '$') {
state.tokens.unshift(tokenDollar);
return tokenize(stream, state);
}
if (ch === '+' || ch === '=') {
return 'operator';
}
if (ch === '-') {
stream.eat('-');
stream.eatWhile(/\w/);
return 'attribute';
}
if (/\d/.test(ch)) {
stream.eatWhile(/\d/);
if(!/\w/.test(stream.peek())) {
return 'number';
}
}
stream.eatWhile(/\w/);
var cur = stream.current();
if (stream.peek() === '=' && /\w+/.test(cur)) return 'def';
if (atoms.indexOf(cur) !== -1) return 'atom';
if (commands.indexOf(cur) !== -1) return 'builtin';
if (keywords.indexOf(cur) !== -1) return 'keyword';
return 'word';
}
function tokenString(quote) {
return function(stream, state) {
var next, end = false, escaped = false;
while ((next = stream.next()) != null) {
if (next === quote && !escaped) {
end = true;
break;
}
if (next === '$' && !escaped && quote !== '\'') {
escaped = true;
stream.backUp(1);
state.tokens.unshift(tokenDollar);
break;
}
escaped = !escaped && next === '\\';
}
if (end || !escaped) {
state.tokens.shift();
}
return (quote === '`' || quote === ')' ? 'quote' : 'string');
};
};
var tokenDollar = function(stream, state) {
if (state.tokens.length > 1) stream.eat('$');
var ch = stream.next(), hungry = /\w/;
if (ch === '{') hungry = /[^}]/;
if (ch === '(') {
state.tokens[0] = tokenString(')');
return tokenize(stream, state);
}
if (!/\d/.test(ch)) {
stream.eatWhile(hungry);
stream.eat('}');
}
state.tokens.shift();
return 'def';
};
function tokenize(stream, state) {
return (state.tokens[0] || tokenBase) (stream, state);
};
return {
startState: function() {return {tokens:[]}},
token: function(stream, state) {
if (stream.eatSpace()) return null;
return tokenize(stream, state);
}
};
});
CodeMirror.defineMIME('text/x-sh', 'shell');

View File

@ -0,0 +1,3 @@
span.cm-rangeinfo {color: #a0b;}
span.cm-minus {color: red;}
span.cm-plus {color: #2b2;}