9 changed files with 568 additions and 5 deletions
@ -0,0 +1,434 @@ |
|||||||
|
.CodeMirror { |
||||||
|
font-family: monospace; |
||||||
|
height: 300px; |
||||||
|
color: #000; |
||||||
|
direction: ltr; |
||||||
|
position: relative; |
||||||
|
overflow: hidden; |
||||||
|
background: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-lines { |
||||||
|
padding: 4px 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror pre.CodeMirror-line, |
||||||
|
.CodeMirror pre.CodeMirror-line-like { |
||||||
|
padding: 0 4px; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-filler, |
||||||
|
.CodeMirror-scrollbar-filler { |
||||||
|
background-color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutters { |
||||||
|
border-right: 1px solid #ddd; |
||||||
|
background-color: #f7f7f7; |
||||||
|
white-space: nowrap; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-linenumber { |
||||||
|
padding: 0 3px 0 5px; |
||||||
|
min-width: 20px; |
||||||
|
text-align: right; |
||||||
|
color: #999; |
||||||
|
white-space: nowrap; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-guttermarker { |
||||||
|
color: #000; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-guttermarker-subtle { |
||||||
|
color: #999; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-cursor { |
||||||
|
border-left: 1px solid #000; |
||||||
|
border-right: none; |
||||||
|
width: 0; |
||||||
|
} |
||||||
|
|
||||||
|
div.CodeMirror-secondarycursor { |
||||||
|
border-left: 1px solid silver; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-fat-cursor .CodeMirror-cursor { |
||||||
|
width: auto; |
||||||
|
border: 0 !important; |
||||||
|
background: #7e7; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-fat-cursor div.CodeMirror-cursors { |
||||||
|
z-index: 1; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-fat-cursor .CodeMirror-line::selection, |
||||||
|
.cm-fat-cursor .CodeMirror-line > span::selection, |
||||||
|
.cm-fat-cursor .CodeMirror-line > span > span::selection { |
||||||
|
background: transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-fat-cursor .CodeMirror-line::-moz-selection, |
||||||
|
.cm-fat-cursor .CodeMirror-line > span::-moz-selection, |
||||||
|
.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { |
||||||
|
background: transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-fat-cursor { |
||||||
|
caret-color: transparent; |
||||||
|
} |
||||||
|
|
||||||
|
@-moz-keyframes blink { |
||||||
|
50% { |
||||||
|
background-color: transparent; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@-webkit-keyframes blink { |
||||||
|
50% { |
||||||
|
background-color: transparent; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes blink { |
||||||
|
50% { |
||||||
|
background-color: transparent; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.cm-tab { |
||||||
|
display: inline-block; |
||||||
|
text-decoration: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-rulers { |
||||||
|
position: absolute; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
top: -50px; |
||||||
|
bottom: 0; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-ruler { |
||||||
|
border-left: 1px solid #ccc; |
||||||
|
top: 0; |
||||||
|
bottom: 0; |
||||||
|
position: absolute; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-header { |
||||||
|
color: #00f; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-quote { |
||||||
|
color: #090; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-negative { |
||||||
|
color: #d44; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-positive { |
||||||
|
color: #292; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-header, |
||||||
|
.cm-strong { |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-em { |
||||||
|
font-style: italic; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-link { |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-strikethrough { |
||||||
|
text-decoration: line-through; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-keyword { |
||||||
|
color: #708; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-atom { |
||||||
|
color: #219; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-number { |
||||||
|
color: #164; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-def { |
||||||
|
color: #00f; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-variable-2 { |
||||||
|
color: #05a; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-type, |
||||||
|
.cm-s-default .cm-variable-3 { |
||||||
|
color: #085; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-comment { |
||||||
|
color: #a50; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-string { |
||||||
|
color: #a11; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-string-2 { |
||||||
|
color: #f50; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-meta, |
||||||
|
.cm-s-default .cm-qualifier { |
||||||
|
color: #555; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-builtin { |
||||||
|
color: #30a; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-bracket { |
||||||
|
color: #997; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-tag { |
||||||
|
color: #170; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-attribute, |
||||||
|
.cm-s-default .cm-link { |
||||||
|
color: #00c; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-hr { |
||||||
|
color: #999; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-s-default .cm-error, |
||||||
|
.cm-invalidchar { |
||||||
|
color: red; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-composing { |
||||||
|
border-bottom: 2px solid; |
||||||
|
} |
||||||
|
|
||||||
|
div.CodeMirror span.CodeMirror-matchingbracket { |
||||||
|
color: #0b0; |
||||||
|
} |
||||||
|
|
||||||
|
div.CodeMirror span.CodeMirror-nonmatchingbracket { |
||||||
|
color: #a22; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-matchingtag { |
||||||
|
background: rgba(255, 150, 0, 0.3); |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-activeline-background { |
||||||
|
background: #e8f2ff; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-scroll { |
||||||
|
overflow: scroll !important; |
||||||
|
margin-bottom: -50px; |
||||||
|
margin-right: -50px; |
||||||
|
padding-bottom: 50px; |
||||||
|
height: 100%; |
||||||
|
outline: 0; |
||||||
|
position: relative; |
||||||
|
z-index: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-sizer { |
||||||
|
position: relative; |
||||||
|
border-right: 50px solid transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-filler, |
||||||
|
.CodeMirror-hscrollbar, |
||||||
|
.CodeMirror-scrollbar-filler, |
||||||
|
.CodeMirror-vscrollbar { |
||||||
|
position: absolute; |
||||||
|
z-index: 6; |
||||||
|
display: none; |
||||||
|
outline: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-vscrollbar { |
||||||
|
right: 0; |
||||||
|
top: 0; |
||||||
|
overflow-x: hidden; |
||||||
|
overflow-y: scroll; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-hscrollbar { |
||||||
|
bottom: 0; |
||||||
|
left: 0; |
||||||
|
overflow-y: hidden; |
||||||
|
overflow-x: scroll; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-scrollbar-filler { |
||||||
|
right: 0; |
||||||
|
bottom: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-filler { |
||||||
|
left: 0; |
||||||
|
bottom: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutters { |
||||||
|
position: absolute; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
min-height: 100%; |
||||||
|
z-index: 3; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter { |
||||||
|
white-space: normal; |
||||||
|
height: 100%; |
||||||
|
display: inline-block; |
||||||
|
vertical-align: top; |
||||||
|
margin-bottom: -50px; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-wrapper { |
||||||
|
position: absolute; |
||||||
|
z-index: 4; |
||||||
|
background: transparent !important; |
||||||
|
border: none !important; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-background { |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
bottom: 0; |
||||||
|
z-index: 4; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-elt { |
||||||
|
position: absolute; |
||||||
|
cursor: default; |
||||||
|
z-index: 4; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-gutter-wrapper ::selection, |
||||||
|
.CodeMirror-gutter-wrapper ::-moz-selection { |
||||||
|
background-color: transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-lines { |
||||||
|
cursor: text; |
||||||
|
min-height: 1px; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror pre.CodeMirror-line, |
||||||
|
.CodeMirror pre.CodeMirror-line-like { |
||||||
|
border-radius: 0; |
||||||
|
border-width: 0; |
||||||
|
background: transparent; |
||||||
|
font-family: inherit; |
||||||
|
font-size: inherit; |
||||||
|
margin: 0; |
||||||
|
white-space: pre; |
||||||
|
word-wrap: normal; |
||||||
|
line-height: inherit; |
||||||
|
color: inherit; |
||||||
|
z-index: 2; |
||||||
|
position: relative; |
||||||
|
overflow: visible; |
||||||
|
-webkit-tap-highlight-color: transparent; |
||||||
|
-webkit-font-variant-ligatures: contextual; |
||||||
|
font-variant-ligatures: contextual; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-wrap pre.CodeMirror-line, |
||||||
|
.CodeMirror-wrap pre.CodeMirror-line-like { |
||||||
|
word-wrap: break-word; |
||||||
|
white-space: pre-wrap; |
||||||
|
word-break: normal; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-linebackground { |
||||||
|
position: absolute; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
top: 0; |
||||||
|
bottom: 0; |
||||||
|
z-index: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-linewidget { |
||||||
|
position: relative; |
||||||
|
z-index: 2; |
||||||
|
padding: 0.1px; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-rtl pre { |
||||||
|
direction: rtl; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-code { |
||||||
|
outline: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-selected { |
||||||
|
background: #d9d9d9; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-focused .CodeMirror-selected { |
||||||
|
background: #d7d4f0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-crosshair { |
||||||
|
cursor: crosshair; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-line::selection, |
||||||
|
.CodeMirror-line > span::selection, |
||||||
|
.CodeMirror-line > span > span::selection { |
||||||
|
background: #d7d4f0; |
||||||
|
} |
||||||
|
|
||||||
|
.CodeMirror-line::-moz-selection, |
||||||
|
.CodeMirror-line > span::-moz-selection, |
||||||
|
.CodeMirror-line > span > span::-moz-selection { |
||||||
|
background: #d7d4f0; |
||||||
|
} |
||||||
|
|
||||||
|
.cm-searching { |
||||||
|
background-color: #ffa; |
||||||
|
background-color: rgba(255, 255, 0, 0.4); |
||||||
|
} |
||||||
|
|
||||||
|
.cm-force-border { |
||||||
|
padding-right: 0.1px; |
||||||
|
} |
||||||
|
|
||||||
|
@media print { |
||||||
|
.CodeMirror div.CodeMirror-cursors { |
||||||
|
visibility: hidden; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.cm-tab-wrap-hack:after { |
||||||
|
content: ''; |
||||||
|
} |
||||||
|
|
||||||
|
span.CodeMirror-selectedtext { |
||||||
|
background: transparent; |
||||||
|
} |
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,125 @@ |
|||||||
|
(function (e) { |
||||||
|
if (typeof exports === "object" && typeof module === "object") { |
||||||
|
e(require("../../lib/codemirror")); |
||||||
|
} else if (typeof define === "function" && define.amd) { |
||||||
|
define(["../../lib/codemirror"], e); |
||||||
|
} else { |
||||||
|
e(CodeMirror); |
||||||
|
} |
||||||
|
})(function (x) { |
||||||
|
"use strict"; |
||||||
|
|
||||||
|
function k(e) { |
||||||
|
return new RegExp("^((" + e.join(")|(") + "))\\b"); |
||||||
|
} |
||||||
|
|
||||||
|
var _ = k(["and", "or", "not", "is"]), |
||||||
|
v = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in"], |
||||||
|
z = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"]; |
||||||
|
|
||||||
|
function w(e) { |
||||||
|
return e.scopes[e.scopes.length - 1]; |
||||||
|
} |
||||||
|
|
||||||
|
x.registerHelper("hintWords", "python", v.concat(z)); |
||||||
|
x.defineMode("python", function (t, l) { |
||||||
|
var s = "error", |
||||||
|
o = l.delimiters || l.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.\\]/, |
||||||
|
a = [l.singleOperators, l.doubleOperators, l.doubleDelimiters, l.tripleDelimiters, l.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/]; |
||||||
|
|
||||||
|
for (var e = 0; e < a.length; e++) { |
||||||
|
if (!a[e]) a.splice(e--, 1); |
||||||
|
} |
||||||
|
|
||||||
|
var c, u, f = l.hangingIndent || t.indentUnit, n = v, r = z; |
||||||
|
var p = (l.extra_keywords && (n = n.concat(l.extra_keywords)),
|
||||||
|
l.extra_builtins && (r = r.concat(l.extra_builtins)),
|
||||||
|
!(l.version && Number(l.version) < 3)); |
||||||
|
var d = p ? ( |
||||||
|
c = l.identifiers || /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/, |
||||||
|
n = n.concat(["nonlocal", "False", "True", "None", "async", "await"]), |
||||||
|
r = r.concat(["ascii", "bytes", "exec", "print"]), |
||||||
|
new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i") |
||||||
|
) : ( |
||||||
|
c = l.identifiers || /^[_A-Za-z][_A-Za-z0-9]*/, |
||||||
|
n = n.concat(["exec", "print"]), |
||||||
|
r = r.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", "file", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange", "False", "True", "None"]), |
||||||
|
new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i") |
||||||
|
); |
||||||
|
var kRegExp = k(n), m = k(r); |
||||||
|
|
||||||
|
function i(e, t) { |
||||||
|
var n, r = e.sol() && "\\" !== t.lastToken; |
||||||
|
if (r) { |
||||||
|
t.indent = e.indentation(); |
||||||
|
} |
||||||
|
if (r && "py" === w(t).type) { |
||||||
|
r = w(t).offset; |
||||||
|
return e.eatSpace() ? (r < (n = e.indentation()) ? b(t) : (n < r && y(e, t) && "#" !== e.peek() && (t.errorToken = true), null)) : (n = h(e, t), r > 0 && y(e, t) && (n += " " + s), n); |
||||||
|
} |
||||||
|
return h(e, t); |
||||||
|
} |
||||||
|
|
||||||
|
function h(e, t, n) { |
||||||
|
if (e.eatSpace()) return null; |
||||||
|
if (!n && e.match(/^#.*/)) return "comment"; |
||||||
|
if (e.match(/^[0-9\.]/, false)) { |
||||||
|
var r = false; |
||||||
|
if (e.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i) && (r = true), e.match(/^[\d_]+\.\d*/)) { |
||||||
|
return e.eat(/J/i), "number"; |
||||||
|
} |
||||||
|
} |
||||||
|
if (e.match(u)) return s; |
||||||
|
if (e.match(a)) return "operator"; |
||||||
|
if (e.match(o)) return "punctuation"; |
||||||
|
return e.match(c) ? ("def" === t.lastToken || "class" === t.lastToken ? "def" : "variable") : null; |
||||||
|
} |
||||||
|
|
||||||
|
function b(e) { |
||||||
|
while ("py" !== w(e).type) { |
||||||
|
e.scopes.pop(); |
||||||
|
} |
||||||
|
e.scopes.push({ offset: w(e).offset + t.indentUnit, type: "py", align: null }); |
||||||
|
} |
||||||
|
|
||||||
|
function y(e, t) { |
||||||
|
for (var n = e.indentation(); 1 < t.scopes.length && w(t).offset > n;) { |
||||||
|
if ("py" !== w(t).type) return true; |
||||||
|
t.scopes.pop(); |
||||||
|
} |
||||||
|
return w(t).offset !== n; |
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
startState: function (e) { |
||||||
|
return { |
||||||
|
tokenize: i, |
||||||
|
scopes: [{ offset: e || 0, type: "py", align: null }], |
||||||
|
indent: e || 0, |
||||||
|
lastToken: null, |
||||||
|
lambda: false, |
||||||
|
dedent: 0 |
||||||
|
}; |
||||||
|
}, |
||||||
|
token: function (e, t) { |
||||||
|
var n = t.errorToken, r = g(e, t); |
||||||
|
return n && (t.errorToken = false), r && "comment" !== r && (t.lastToken = "keyword" === r || "punctuation" === r ? e.current() : r), "punctuation" === r && (r = null), e.eol() && t.lambda && (t.lambda = false), n ? r + " " + s : r; |
||||||
|
}, |
||||||
|
indent: function (e, t) { |
||||||
|
if (e.tokenize !== i) return e.tokenize.isString ? x.Pass : 0; |
||||||
|
var n = w(e); |
||||||
|
return n.type === t.charAt(0) || "py" === n.type && !e.dedent && /^(else:|elif |except |finally:)/.test(t) ? n.align - 1 : n.offset; |
||||||
|
}, |
||||||
|
electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/, |
||||||
|
closeBrackets: { triples: "'\"" }, |
||||||
|
lineComment: "#", |
||||||
|
fold: "indent" |
||||||
|
}; |
||||||
|
}); |
||||||
|
|
||||||
|
x.defineMIME("text/x-python", "python"); |
||||||
|
x.defineMIME("text/x-cython", { |
||||||
|
name: "python", |
||||||
|
extra_keywords: "by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE".split(" ") |
||||||
|
}); |
||||||
|
}); |
||||||
Loading…
Reference in new issue