nettoyage
parent
fb1403b302
commit
89087b9902
@ -1,151 +0,0 @@
|
||||
(function () {
|
||||
// Minimal event-handling wrapper.
|
||||
function stopEvent() {
|
||||
if (this.preventDefault) {this.preventDefault(); this.stopPropagation();}
|
||||
else {this.returnValue = false; this.cancelBubble = true;}
|
||||
}
|
||||
function addStop(event) {
|
||||
if (!event.stop) event.stop = stopEvent;
|
||||
return event;
|
||||
}
|
||||
function connect(node, type, handler) {
|
||||
function wrapHandler(event) {handler(addStop(event || window.event));}
|
||||
if (typeof node.addEventListener == "function")
|
||||
node.addEventListener(type, wrapHandler, false);
|
||||
else
|
||||
node.attachEvent("on" + type, wrapHandler);
|
||||
}
|
||||
|
||||
function forEach(arr, f) {
|
||||
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
|
||||
}
|
||||
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
theme: "night",
|
||||
onKeyEvent: function(i, e) {
|
||||
// Hook into ctrl-space
|
||||
if (e.keyCode == 32 && (e.ctrlKey || e.metaKey) && !e.altKey) {
|
||||
e.stop();
|
||||
return startComplete();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function startComplete() {
|
||||
// We want a single cursor position.
|
||||
if (editor.somethingSelected()) return;
|
||||
// Find the token at the cursor
|
||||
var cur = editor.getCursor(false), token = editor.getTokenAt(cur), tprop = token;
|
||||
// If it's not a 'word-style' token, ignore the token.
|
||||
if (!/^[\w$_]*$/.test(token.string)) {
|
||||
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
|
||||
className: token.string == "." ? "js-property" : null};
|
||||
}
|
||||
// If it is a property, find out what it is a property of.
|
||||
while (tprop.className == "js-property") {
|
||||
tprop = editor.getTokenAt({line: cur.line, ch: tprop.start});
|
||||
if (tprop.string != ".") return;
|
||||
tprop = editor.getTokenAt({line: cur.line, ch: tprop.start});
|
||||
if (!context) var context = [];
|
||||
context.push(tprop);
|
||||
}
|
||||
var completions = getCompletions(token, context);
|
||||
if (!completions.length) return;
|
||||
function insert(str) {
|
||||
editor.replaceRange(str, {line: cur.line, ch: token.start}, {line: cur.line, ch: token.end});
|
||||
}
|
||||
// When there is only one completion, use it directly.
|
||||
if (completions.length == 1) {insert(completions[0]); return true;}
|
||||
|
||||
// Build the select widget
|
||||
var complete = document.createElement("div");
|
||||
complete.className = "completions";
|
||||
var sel = complete.appendChild(document.createElement("select"));
|
||||
sel.multiple = true;
|
||||
for (var i = 0; i < completions.length; ++i) {
|
||||
var opt = sel.appendChild(document.createElement("option"));
|
||||
opt.appendChild(document.createTextNode(completions[i]));
|
||||
}
|
||||
sel.firstChild.selected = true;
|
||||
sel.size = Math.min(10, completions.length);
|
||||
var pos = editor.cursorCoords();
|
||||
complete.style.left = pos.x + "px";
|
||||
complete.style.top = pos.yBot + "px";
|
||||
document.body.appendChild(complete);
|
||||
// Hack to hide the scrollbar.
|
||||
if (completions.length <= 10)
|
||||
complete.style.width = (sel.clientWidth - 1) + "px";
|
||||
|
||||
var done = false;
|
||||
function close() {
|
||||
if (done) return;
|
||||
done = true;
|
||||
complete.parentNode.removeChild(complete);
|
||||
}
|
||||
function pick() {
|
||||
insert(sel.options[sel.selectedIndex].value);
|
||||
close();
|
||||
setTimeout(function(){editor.focus();}, 50);
|
||||
}
|
||||
connect(sel, "blur", close);
|
||||
connect(sel, "keydown", function(event) {
|
||||
var code = event.keyCode;
|
||||
// Enter and space
|
||||
if (code == 13 || code == 32) {event.stop(); pick();}
|
||||
// Escape
|
||||
else if (code == 27) {event.stop(); close(); editor.focus();}
|
||||
else if (code != 38 && code != 40) {close(); editor.focus(); setTimeout(startComplete, 50);}
|
||||
});
|
||||
connect(sel, "dblclick", pick);
|
||||
|
||||
sel.focus();
|
||||
// Opera sometimes ignores focusing a freshly created node
|
||||
if (window.opera) setTimeout(function(){if (!done) sel.focus();}, 100);
|
||||
return true;
|
||||
}
|
||||
|
||||
var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " +
|
||||
"toUpperCase toLowerCase split concat match replace search").split(" ");
|
||||
var arrayProps = ("length concat join splice push pop shift unshift slice reverse sort indexOf " +
|
||||
"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");
|
||||
var funcProps = "prototype apply call bind".split(" ");
|
||||
var keywords = ("break case catch continue debugger default delete do else false finally for function " +
|
||||
"if in instanceof new null return switch throw true try typeof var void while with").split(" ");
|
||||
|
||||
function getCompletions(token, context) {
|
||||
var found = [], start = token.string;
|
||||
function maybeAdd(str) {
|
||||
if (str.indexOf(start) == 0) found.push(str);
|
||||
}
|
||||
function gatherCompletions(obj) {
|
||||
if (typeof obj == "string") forEach(stringProps, maybeAdd);
|
||||
else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
|
||||
else if (obj instanceof Function) forEach(funcProps, maybeAdd);
|
||||
for (var name in obj) maybeAdd(name);
|
||||
}
|
||||
|
||||
if (context) {
|
||||
// If this is a property, see if it belongs to some object we can
|
||||
// find in the current environment.
|
||||
var obj = context.pop(), base;
|
||||
if (obj.className == "js-variable")
|
||||
base = window[obj.string];
|
||||
else if (obj.className == "js-string")
|
||||
base = "";
|
||||
else if (obj.className == "js-atom")
|
||||
base = 1;
|
||||
while (base != null && context.length)
|
||||
base = base[context.pop().string];
|
||||
if (base != null) gatherCompletions(base);
|
||||
}
|
||||
else {
|
||||
// If not, just look in the window object and any local scope
|
||||
// (reading into JS mode internals to get at the local variables)
|
||||
for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);
|
||||
gatherCompletions(window);
|
||||
forEach(keywords, maybeAdd);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
})();
|
@ -1,7 +0,0 @@
|
||||
span.c-like-keyword {color: #90b;}
|
||||
span.c-like-number {color: #291;}
|
||||
span.c-like-comment {color: #a70;}
|
||||
span.c-like-string {color: #a22;}
|
||||
span.c-like-preprocessor {color: #049;}
|
||||
span.c-like-var {color: #22b;}
|
||||
span.c-like-annotation {color: #666;}
|
@ -1,3 +0,0 @@
|
||||
.cm-s-default span.cm-rangeinfo {color: #a0b;}
|
||||
.cm-s-default span.cm-minus {color: #a22;}
|
||||
.cm-s-default span.cm-plus {color: #2b2;}
|
@ -1,63 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CodeMirror 2: Oracle PL/SQL mode</title>
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="plsql.js"></script>
|
||||
<link rel="stylesheet" href="../../theme/default.css">
|
||||
<link rel="stylesheet" href="../../css/docs.css">
|
||||
<style>.CodeMirror {border: 2px inset #dee;}</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>CodeMirror 2: Oracle PL/SQL mode</h1>
|
||||
|
||||
<form><textarea id="code" name="code">
|
||||
-- Oracle PL/SQL Code Demo
|
||||
/*
|
||||
based on c-like mode, adapted to PL/SQL by Peter Raganitsch ( http://www.oracle-and-apex.com/ )
|
||||
April 2011
|
||||
*/
|
||||
DECLARE
|
||||
vIdx NUMBER;
|
||||
vString VARCHAR2(100);
|
||||
cText CONSTANT VARCHAR2(100) := 'That''s it! Have fun with CodeMirror 2';
|
||||
BEGIN
|
||||
vIdx := 0;
|
||||
--
|
||||
FOR rDATA IN
|
||||
( SELECT *
|
||||
FROM EMP
|
||||
ORDER BY EMPNO
|
||||
)
|
||||
LOOP
|
||||
vIdx := vIdx + 1;
|
||||
vString := rDATA.EMPNO || ' - ' || rDATA.ENAME;
|
||||
--
|
||||
UPDATE EMP
|
||||
SET SAL = SAL * 101/100
|
||||
WHERE EMPNO = rDATA.EMPNO
|
||||
;
|
||||
END LOOP;
|
||||
--
|
||||
SYS.DBMS_OUTPUT.Put_Line (cText);
|
||||
END;
|
||||
--
|
||||
</textarea></form>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
matchBrackets: true,
|
||||
indentUnit: 4,
|
||||
mode: "text/x-plsql"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>
|
||||
Simple mode that handles Oracle PL/SQL language (and Oracle SQL, of course).
|
||||
</p>
|
||||
|
||||
<p><strong>MIME type defined:</strong> <code>text/x-plsql</code>
|
||||
(PLSQL code)
|
||||
</html>
|
@ -1,217 +0,0 @@
|
||||
CodeMirror.defineMode("plsql", function(config, parserConfig) {
|
||||
var indentUnit = config.indentUnit,
|
||||
keywords = parserConfig.keywords,
|
||||
functions = parserConfig.functions,
|
||||
types = parserConfig.types,
|
||||
sqlplus = parserConfig.sqlplus,
|
||||
multiLineStrings = parserConfig.multiLineStrings;
|
||||
var isOperatorChar = /[+\-*&%=<>!?:\/|]/;
|
||||
function chain(stream, state, f) {
|
||||
state.tokenize = f;
|
||||
return f(stream, state);
|
||||
}
|
||||
|
||||
var type;
|
||||
function ret(tp, style) {
|
||||
type = tp;
|
||||
return style;
|
||||
}
|
||||
|
||||
function tokenBase(stream, state) {
|
||||
var ch = stream.next();
|
||||
// start of string?
|
||||
if (ch == '"' || ch == "'")
|
||||
return chain(stream, state, tokenString(ch));
|
||||
// is it one of the special signs []{}().,;? Seperator?
|
||||
else if (/[\[\]{}\(\),;\.]/.test(ch))
|
||||
return ret(ch);
|
||||
// start of a number value?
|
||||
else if (/\d/.test(ch)) {
|
||||
stream.eatWhile(/[\w\.]/);
|
||||
return ret("number", "number");
|
||||
}
|
||||
// multi line comment or simple operator?
|
||||
else if (ch == "/") {
|
||||
if (stream.eat("*")) {
|
||||
return chain(stream, state, tokenComment);
|
||||
}
|
||||
else {
|
||||
stream.eatWhile(isOperatorChar);
|
||||
return ret("operator", "operator");
|
||||
}
|
||||
}
|
||||
// single line comment or simple operator?
|
||||
else if (ch == "-") {
|
||||
if (stream.eat("-")) {
|
||||
stream.skipToEnd();
|
||||
return ret("comment", "comment");
|
||||
}
|
||||
else {
|
||||
stream.eatWhile(isOperatorChar);
|
||||
return ret("operator", "operator");
|
||||
}
|
||||
}
|
||||
// pl/sql variable?
|
||||
else if (ch == "@" || ch == "$") {
|
||||
stream.eatWhile(/[\w\d\$_]/);
|
||||
return ret("word", "variable");
|
||||
}
|
||||
// is it a operator?
|
||||
else if (isOperatorChar.test(ch)) {
|
||||
stream.eatWhile(isOperatorChar);
|
||||
return ret("operator", "operator");
|
||||
}
|
||||
else {
|
||||
// get the whole word
|
||||
stream.eatWhile(/[\w\$_]/);
|
||||
// is it one of the listed keywords?
|
||||
if (keywords && keywords.propertyIsEnumerable(stream.current().toLowerCase())) return ret("keyword", "keyword");
|
||||
// is it one of the listed functions?
|
||||
if (functions && functions.propertyIsEnumerable(stream.current().toLowerCase())) return ret("keyword", "builtin");
|
||||
// is it one of the listed types?
|
||||
if (types && types.propertyIsEnumerable(stream.current().toLowerCase())) return ret("keyword", "variable-2");
|
||||
// is it one of the listed sqlplus keywords?
|
||||
if (sqlplus && sqlplus.propertyIsEnumerable(stream.current().toLowerCase())) return ret("keyword", "variable-3");
|
||||
// default: just a "word"
|
||||
return ret("word", "plsql-word");
|
||||
}
|
||||
}
|
||||
|
||||
function tokenString(quote) {
|
||||
return function(stream, state) {
|
||||
var escaped = false, next, end = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next == quote && !escaped) {end = true; break;}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
if (end || !(escaped || multiLineStrings))
|
||||
state.tokenize = tokenBase;
|
||||
return ret("string", "plsql-string");
|
||||
};
|
||||
}
|
||||
|
||||
function tokenComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while (ch = stream.next()) {
|
||||
if (ch == "/" && maybeEnd) {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
maybeEnd = (ch == "*");
|
||||
}
|
||||
return ret("comment", "plsql-comment");
|
||||
}
|
||||
|
||||
// Interface
|
||||
|
||||
return {
|
||||
startState: function(basecolumn) {
|
||||
return {
|
||||
tokenize: tokenBase,
|
||||
startOfLine: true
|
||||
};
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
if (stream.eatSpace()) return null;
|
||||
var style = state.tokenize(stream, state);
|
||||
return style;
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
(function() {
|
||||
function keywords(str) {
|
||||
var obj = {}, words = str.split(" ");
|
||||
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
||||
return obj;
|
||||
}
|
||||
var cKeywords = "abort accept access add all alter and any array arraylen as asc assert assign at attributes audit " +
|
||||
"authorization avg " +
|
||||
"base_table begin between binary_integer body boolean by " +
|
||||
"case cast char char_base check close cluster clusters colauth column comment commit compress connect " +
|
||||
"connected constant constraint crash create current currval cursor " +
|
||||
"data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete " +
|
||||
"desc digits dispose distinct do drop " +
|
||||
"else elsif enable end entry escape exception exception_init exchange exclusive exists exit external " +
|
||||
"fast fetch file for force form from function " +
|
||||
"generic goto grant group " +
|
||||
"having " +
|
||||
"identified if immediate in increment index indexes indicator initial initrans insert interface intersect " +
|
||||
"into is " +
|
||||
"key " +
|
||||
"level library like limited local lock log logging long loop " +
|
||||
"master maxextents maxtrans member minextents minus mislabel mode modify multiset " +
|
||||
"new next no noaudit nocompress nologging noparallel not nowait number_base " +
|
||||
"object of off offline on online only open option or order out " +
|
||||
"package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior " +
|
||||
"private privileges procedure public " +
|
||||
"raise range raw read rebuild record ref references refresh release rename replace resource restrict return " +
|
||||
"returning reverse revoke rollback row rowid rowlabel rownum rows run " +
|
||||
"savepoint schema segment select separate session set share snapshot some space split sql start statement " +
|
||||
"storage subtype successful synonym " +
|
||||
"tabauth table tables tablespace task terminate then to trigger truncate type " +
|
||||
"union unique unlimited unrecoverable unusable update use using " +
|
||||
"validate value values variable view views " +
|
||||
"when whenever where while with work";
|
||||
|
||||
var cFunctions = "abs acos add_months ascii asin atan atan2 average " +
|
||||
"bfilename " +
|
||||
"ceil chartorowid chr concat convert cos cosh count " +
|
||||
"decode deref dual dump dup_val_on_index " +
|
||||
"empty error exp " +
|
||||
"false floor found " +
|
||||
"glb greatest " +
|
||||
"hextoraw " +
|
||||
"initcap instr instrb isopen " +
|
||||
"last_day least lenght lenghtb ln lower lpad ltrim lub " +
|
||||
"make_ref max min mod months_between " +
|
||||
"new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower " +
|
||||
"nls_sort nls_upper nlssort no_data_found notfound null nvl " +
|
||||
"others " +
|
||||
"power " +
|
||||
"rawtohex reftohex round rowcount rowidtochar rpad rtrim " +
|
||||
"sign sin sinh soundex sqlcode sqlerrm sqrt stddev substr substrb sum sysdate " +
|
||||
"tan tanh to_char to_date to_label to_multi_byte to_number to_single_byte translate true trunc " +
|
||||
"uid upper user userenv " +
|
||||
"variance vsize";
|
||||
|
||||
var cTypes = "bfile blob " +
|
||||
"character clob " +
|
||||
"dec " +
|
||||
"float " +
|
||||
"int integer " +
|
||||
"mlslabel " +
|
||||
"natural naturaln nchar nclob number numeric nvarchar2 " +
|
||||
"real rowtype " +
|
||||
"signtype smallint string " +
|
||||
"varchar varchar2";
|
||||
|
||||
var cSqlplus = "appinfo arraysize autocommit autoprint autorecovery autotrace " +
|
||||
"blockterminator break btitle " +
|
||||
"cmdsep colsep compatibility compute concat copycommit copytypecheck " +
|
||||
"define describe " +
|
||||
"echo editfile embedded escape exec execute " +
|
||||
"feedback flagger flush " +
|
||||
"heading headsep " +
|
||||
"instance " +
|
||||
"linesize lno loboffset logsource long longchunksize " +
|
||||
"markup " +
|
||||
"native newpage numformat numwidth " +
|
||||
"pagesize pause pno " +
|
||||
"recsep recsepchar release repfooter repheader " +
|
||||
"serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber " +
|
||||
"sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix " +
|
||||
"tab term termout time timing trimout trimspool ttitle " +
|
||||
"underline " +
|
||||
"verify version " +
|
||||
"wrap";
|
||||
|
||||
CodeMirror.defineMIME("text/x-plsql", {
|
||||
name: "plsql",
|
||||
keywords: keywords(cKeywords),
|
||||
functions: keywords(cFunctions),
|
||||
types: keywords(cTypes),
|
||||
sqlplus: keywords(cSqlplus)
|
||||
});
|
||||
}());
|
@ -1,21 +0,0 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2010 Timothy Farrell
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -1,75 +0,0 @@
|
||||
.cm-s-default span.cm-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-interpreted {
|
||||
color: #33cc66;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-inline {
|
||||
color: #3399cc;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-role {
|
||||
color: #666699;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-list {
|
||||
color: #cc0099;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-body {
|
||||
color: #6699cc;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-verbatim {
|
||||
color: #3366ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-comment {
|
||||
color: #aa7700;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-directive {
|
||||
font-weight: bold;
|
||||
color: #3399ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-hyperlink {
|
||||
font-weight: bold;
|
||||
color: #3366ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-footnote {
|
||||
font-weight: bold;
|
||||
color: #3333ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-citation {
|
||||
font-weight: bold;
|
||||
color: #3300ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-replacement {
|
||||
color: #9933cc;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-section {
|
||||
font-weight: bold;
|
||||
color: #cc0099;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-directive-marker {
|
||||
font-weight: bold;
|
||||
color: #3399ff;
|
||||
}
|
||||
|
||||
.cm-s-default span.cm-verbatim-marker {
|
||||
font-weight: bold;
|
||||
color: #9900ff;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
.cm-s-default span.cm-keyword {color: #708;}
|
||||
.cm-s-default span.cm-atom {color: #219;}
|
||||
.cm-s-default span.cm-number {color: #164;}
|
||||
.cm-s-default span.cm-def {color: #00f;}
|
||||
.cm-s-default span.cm-variable {color: black;}
|
||||
.cm-s-default span.cm-variable-2 {color: #05a;}
|
||||
.cm-s-default span.cm-variable-3 {color: #0a5;}
|
||||
.cm-s-default span.cm-property {color: black;}
|
||||
.cm-s-default span.cm-operator {color: black;}
|
||||
.cm-s-default span.cm-comment {color: #a50;}
|
||||
.cm-s-default span.cm-string {color: #a11;}
|
||||
.cm-s-default span.cm-meta {color: #555;}
|
||||
.cm-s-default span.cm-error {color: #f00;}
|
||||
.cm-s-default span.cm-qualifier {color: #555;}
|
||||
.cm-s-default span.cm-builtin {color: #30a;}
|
||||
.cm-s-default span.cm-bracket {color: #cc7;}
|
||||
.cm-s-default span.cm-tag {color: #170;}
|
||||
.cm-s-default span.cm-attribute {color: #00c;}
|
Loading…
Reference in New Issue