diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000..54322f9e2a --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +/node_modules +/demo +/doc +/test +/index.html +/mode/*/*test.js +/mode/*/*.html +/mode/index.html +.* diff --git a/.travis.yml b/.travis.yml index 20fd86b6a5..52b8b81591 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ language: node_js node_js: - - 0.10 + - stable +sudo: false diff --git a/AUTHORS b/AUTHORS index 3299d4fd0c..c8e17d0778 100644 --- a/AUTHORS +++ b/AUTHORS @@ -59,6 +59,7 @@ AtomicPages LLC Atul Bhouraskar Aurelian Oancea Bastian Müller +belhaj Bem Jones-Bey benbro Beni Cherniavsky-Paskin @@ -215,6 +216,7 @@ Jason San Jose Jason Siefken Jaydeep Solanki Jean Boussier +Jeff Blaisdell jeffkenton Jeff Pickhardt jem (graphite) @@ -272,6 +274,7 @@ Lorenzo Stoakes Luciano Longo Luke Stagner lynschinzer +M1cha Madhura Jayaratne Maksim Lin Maksym Taran @@ -307,6 +310,7 @@ mauricio Maximilian Hils Maxim Kraev Max Kirsch +Max Schaefer Max Xiantu mbarkhau Metatheos @@ -327,6 +331,7 @@ Mike Kadin MinRK Miraculix87 misfo +mkaminsky11 mloginov Moritz Schwörer mps @@ -354,6 +359,7 @@ Nisarg Jhaveri nlwillia noragrossman Norman Rzepka +Oreoluwa Onatemowo pablo Page Panupong Pasupat @@ -387,6 +393,7 @@ Robert Crossfield Roberto Abdelkader Martínez Pérez robertop23 Robert Plummer +Rrandom Ruslan Osmanov Ryan Prior sabaca @@ -421,6 +428,7 @@ Stefan Borsje Steffen Beyer Steve O'Hara stoskov +Sungho Kim Taha Jahangir Takuji Shimokawa Tarmil diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1645548239..6d65e41129 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,8 @@ should be asked on the - Make sure all tests pass. Visit `test/index.html` in your browser to run them. - Submit a pull request -([how to create a pull request](https://help.github.com/articles/fork-a-repo)) +([how to create a pull request](https://help.github.com/articles/fork-a-repo)). + Don't put more than one feature/fix in a single pull request. By contributing code to CodeMirror you diff --git a/README.md b/README.md index 38156a7427..77824ebdbf 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,25 @@ [![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror) [Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?again)](https://marijnhaverbeke.nl/fund/) -CodeMirror is a JavaScript component that provides a code editor in -the browser. When a mode is available for the language you are coding -in, it will color your code, and optionally help with indentation. +CodeMirror is a versatile text editor implemented in JavaScript for +the browser. It is specialized for editing code, and comes with over +100 language modes and various addons that implement more advanced +editing functionality. -The project page is http://codemirror.net -The manual is at http://codemirror.net/doc/manual.html -The contributing guidelines are in [CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) +A rich programming API and a CSS theming system are available for +customizing CodeMirror to fit your application, and extending it with +new functionality. + +You can find more information (and the +[manual](http://codemirror.net/doc/manual.html)) on the [project +page](http://codemirror.net). For questions and discussion, use the +[discussion forum](http://discuss.codemirror.net/). + +See +[CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) +for contributing guidelines. + +The CodeMirror community aims to be welcoming to everybody. We use the +[Contributor Covenant +(1.1)](http://contributor-covenant.org/version/1/1/0/) as our code of +conduct. diff --git a/addon/hint/show-hint.js b/addon/hint/show-hint.js index d228fc8890..980da5235d 100644 --- a/addon/hint/show-hint.js +++ b/addon/hint/show-hint.js @@ -99,7 +99,6 @@ update: function(first) { if (this.tick == null) return; - if (this.data) CodeMirror.signal(this.data, "update"); if (!this.options.hint.async) { this.finishUpdate(this.options.hint(this.cm, this.options), first); } else { @@ -111,6 +110,8 @@ }, finishUpdate: function(data, first) { + if (this.data) CodeMirror.signal(this.data, "update"); + if (data && this.data && CodeMirror.cmpPos(data.from, this.data.from)) data = null; this.data = data; var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle); @@ -351,18 +352,20 @@ CodeMirror.registerHelper("hint", "fromList", function(cm, options) { var cur = cm.getCursor(), token = cm.getTokenAt(cur); + var to = CodeMirror.Pos(cur.line, token.end); + if (token.string && /\w/.test(token.string[token.string.length - 1])) { + var term = token.string, from = CodeMirror.Pos(cur.line, token.start); + } else { + var term = "", from = to; + } var found = []; for (var i = 0; i < options.words.length; i++) { var word = options.words[i]; - if (word.slice(0, token.string.length) == token.string) + if (word.slice(0, term.length) == term) found.push(word); } - if (found.length) return { - list: found, - from: CodeMirror.Pos(cur.line, token.start), - to: CodeMirror.Pos(cur.line, token.end) - }; + if (found.length) return {list: found, from: from, to: to}; }); CodeMirror.commands.autocomplete = CodeMirror.showHint; diff --git a/addon/search/search.js b/addon/search/search.js index 761cb9492e..ed3c477550 100644 --- a/addon/search/search.js +++ b/addon/search/search.js @@ -18,6 +18,7 @@ mod(CodeMirror); })(function(CodeMirror) { "use strict"; + function searchOverlay(query, caseInsensitive) { if (typeof query == "string") query = new RegExp(query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), caseInsensitive ? "gi" : "g"); @@ -42,24 +43,39 @@ this.posFrom = this.posTo = this.lastQuery = this.query = null; this.overlay = null; } + function getSearchState(cm) { return cm.state.search || (cm.state.search = new SearchState()); } + function queryCaseInsensitive(query) { return typeof query == "string" && query == query.toLowerCase(); } + function getSearchCursor(cm, query, pos) { // Heuristic: if the query string is all lowercase, do a case insensitive search. return cm.getSearchCursor(query, pos, queryCaseInsensitive(query)); } + + function persistentDialog(cm, text, deflt, f) { + cm.openDialog(text, f, { + value: deflt, + selectValueOnOpen: true, + closeOnEnter: false, + onClose: function() { clearSearch(cm); } + }); + } + function dialog(cm, text, shortText, deflt, f) { if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true}); else f(prompt(shortText, deflt)); } + function confirmDialog(cm, text, shortText, fs) { if (cm.openConfirm) cm.openConfirm(text, fs); else if (confirm(shortText)) fs[0](); } + function parseQuery(query) { var isRE = query.match(/^\/(.*)\/([a-z]*)$/); if (isRE) { @@ -70,28 +86,44 @@ query = /x^/; return query; } + var queryDialog = 'Search: (Use /re/ syntax for regexp search)'; - function doSearch(cm, rev) { + + function startSearch(cm, state, query) { + state.queryText = query; + state.query = parseQuery(query); + cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); + state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); + cm.addOverlay(state.overlay); + if (cm.showMatchesOnScrollbar) { + if (state.annotate) { state.annotate.clear(); state.annotate = null; } + state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query)); + } + } + + function doSearch(cm, rev, persistent) { var state = getSearchState(cm); if (state.query) return findNext(cm, rev); var q = cm.getSelection() || state.lastQuery; - dialog(cm, queryDialog, "Search for:", q, function(query) { - cm.operation(function() { - if (!query || state.query) return; - state.query = parseQuery(query); - cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); - state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); - cm.addOverlay(state.overlay); - if (cm.showMatchesOnScrollbar) { - if (state.annotate) { state.annotate.clear(); state.annotate = null; } - state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query)); - } - state.posFrom = state.posTo = cm.getCursor(); - findNext(cm, rev); + if (persistent && cm.openDialog) { + persistentDialog(cm, queryDialog, q, function(query, event) { + CodeMirror.e_stop(event); + if (!query) return; + if (query != state.queryText) startSearch(cm, state, query); + findNext(cm, event.shiftKey); }); - }); + } else { + dialog(cm, queryDialog, "Search for:", q, function(query) { + if (query && !state.query) cm.operation(function() { + startSearch(cm, state, query); + state.posFrom = state.posTo = cm.getCursor(); + findNext(cm, rev); + }); + }); + } } + function findNext(cm, rev) {cm.operation(function() { var state = getSearchState(cm); var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo); @@ -100,14 +132,15 @@ if (!cursor.find(rev)) return; } cm.setSelection(cursor.from(), cursor.to()); - cm.scrollIntoView({from: cursor.from(), to: cursor.to()}); + cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20); state.posFrom = cursor.from(); state.posTo = cursor.to(); });} + function clearSearch(cm) {cm.operation(function() { var state = getSearchState(cm); state.lastQuery = state.query; if (!state.query) return; - state.query = null; + state.query = state.queryText = null; cm.removeOverlay(state.overlay); if (state.annotate) { state.annotate.clear(); state.annotate = null; } });} @@ -116,6 +149,7 @@ 'Replace: (Use /re/ syntax for regexp search)'; var replacementQueryDialog = 'With: '; var doReplaceConfirm = "Replace? "; + function replace(cm, all) { if (cm.getOption("readOnly")) return; var query = cm.getSelection() || getSearchState(cm).lastQuery; @@ -159,6 +193,7 @@ } CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);}; + CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);}; CodeMirror.commands.findNext = doSearch; CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);}; CodeMirror.commands.clearSearch = clearSearch; diff --git a/addon/tern/tern.css b/addon/tern/tern.css index 76fba33d4a..c4b8a2f77e 100644 --- a/addon/tern/tern.css +++ b/addon/tern/tern.css @@ -1,6 +1,7 @@ .CodeMirror-Tern-completion { padding-left: 22px; position: relative; + line-height: 1.5; } .CodeMirror-Tern-completion:before { position: absolute; diff --git a/addon/tern/tern.js b/addon/tern/tern.js index dfb19b8451..42c3cdee24 100644 --- a/addon/tern/tern.js +++ b/addon/tern/tern.js @@ -216,7 +216,7 @@ var completion = data.completions[i], className = typeToIcon(completion.type); if (data.guess) className += " " + cls + "guess"; completions.push({text: completion.name + after, - displayText: completion.name, + displayText: completion.displayName || completion.name, className: className, data: completion}); } diff --git a/demo/search.html b/demo/search.html index 04ba7ac09a..21c34251e2 100644 --- a/demo/search.html +++ b/demo/search.html @@ -71,18 +71,20 @@

Search/Replace Demo

Demonstration of primitive search/replace functionality. The - keybindings (which can be overridden by custom keymaps) are:

+ keybindings (which can be configured with custom keymaps) are:

Ctrl-F / Cmd-F
Start searching
Ctrl-G / Cmd-G
Find next
Shift-Ctrl-G / Shift-Cmd-G
Find previous
Shift-Ctrl-F / Cmd-Option-F
Replace
Shift-Ctrl-R / Shift-Cmd-Option-F
Replace all
+
Alt-F
Persistent search (dialog doesn't autoclose, enter to find next, shift-enter to find previous)

Searching is enabled by including addon/search/search.js diff --git a/demo/theme.html b/demo/theme.html index a5599859ad..93d52510fb 100644 --- a/demo/theme.html +++ b/demo/theme.html @@ -13,11 +13,14 @@ + + + @@ -29,6 +32,7 @@ + @@ -38,6 +42,7 @@ + @@ -85,11 +90,14 @@

Theme Demo

+ + + @@ -101,6 +109,7 @@

Theme Demo

+ @@ -111,6 +120,7 @@

Theme Demo

+

@@ -123,14 +133,20 @@

Theme Demo

}); var input = document.getElementById("select"); function selectTheme() { - var theme = input.options[input.selectedIndex].innerHTML; + var theme = input.options[input.selectedIndex].textContent; editor.setOption("theme", theme); + location.hash = "#" + theme; } - var choice = document.location.search && - decodeURIComponent(document.location.search.slice(1)); + var choice = (location.hash && location.hash.slice(1)) || + (document.location.search && + decodeURIComponent(document.location.search.slice(1))); if (choice) { input.value = choice; editor.setOption("theme", choice); } + CodeMirror.on(window, "hashchange", function() { + var theme = location.hash.slice(1); + if (theme) { input.value = theme; selectTheme(); } + }); diff --git a/doc/compress.html b/doc/compress.html index ecbc406591..f64f4bbfaf 100644 --- a/doc/compress.html +++ b/doc/compress.html @@ -36,6 +36,7 @@

Script compression helper

Version: + + + +

A mode for Brainfuck

+ +

MIME types defined: text/x-brainfuck

+ diff --git a/mode/clike/clike.js b/mode/clike/clike.js index f1a7e7a957..e13b79c14c 100644 --- a/mode/clike/clike.js +++ b/mode/clike/clike.js @@ -588,4 +588,17 @@ CodeMirror.defineMode("clike", function(config, parserConfig) { modeProps: {fold: "brace"} }); + def("text/x-squirrel", { + name: "clike", + keywords: words("base break clone continue const default delete enum extends function in class" + + " foreach local resume return this throw typeof yield constructor instanceof static"), + types: words(cTypes), + blockKeywords: words("case catch class else for foreach if switch try while"), + defKeywords: words("function local class"), + typeFirstDefinitions: true, + atoms: words("true false null"), + hooks: {"#": cppHook}, + modeProps: {fold: ["brace", "include"]} + }); + }); diff --git a/mode/clike/index.html b/mode/clike/index.html index 8b386d22e0..226c6ce846 100644 --- a/mode/clike/index.html +++ b/mode/clike/index.html @@ -247,5 +247,6 @@

Scala example

(Java), text/x-csharp (C#), text/x-objectivec (Objective-C), text/x-scala (Scala), text/x-vertex - and x-shader/x-fragment (shader programs).

+ and x-shader/x-fragment (shader programs), + text/x-squirrel (Squirrel).

diff --git a/mode/css/css.js b/mode/css/css.js index 1e6d2ddbc7..63698c15c9 100644 --- a/mode/css/css.js +++ b/mode/css/css.js @@ -273,6 +273,8 @@ CodeMirror.defineMode("css", function(config, parserConfig) { override = "string-2"; else if (valueKeywords.hasOwnProperty(word)) override = "atom"; + else if (colorKeywords.hasOwnProperty(word)) + override = "keyword"; else override = "error"; } diff --git a/mode/erlang/erlang.js b/mode/erlang/erlang.js index fbca292f03..5aed76a526 100644 --- a/mode/erlang/erlang.js +++ b/mode/erlang/erlang.js @@ -220,8 +220,6 @@ CodeMirror.defineMode("erlang", function(cmCfg) { }else{ return rval(state,stream,"function"); } - }else if (is_member(w,operatorAtomWords)) { - return rval(state,stream,"operator"); }else if (lookahead(stream) == ":") { if (w == "erlang") { return rval(state,stream,"builtin"); @@ -230,8 +228,6 @@ CodeMirror.defineMode("erlang", function(cmCfg) { } }else if (is_member(w,["true","false"])) { return rval(state,stream,"boolean"); - }else if (is_member(w,["true","false"])) { - return rval(state,stream,"boolean"); }else{ return rval(state,stream,"atom"); } diff --git a/mode/gfm/gfm.js b/mode/gfm/gfm.js index 80a8e2c84d..94ff920bfb 100644 --- a/mode/gfm/gfm.js +++ b/mode/gfm/gfm.js @@ -116,8 +116,9 @@ CodeMirror.defineMode("gfm", function(config, modeConfig) { markdownConfig[attr] = modeConfig[attr]; } markdownConfig.name = "markdown"; - CodeMirror.defineMIME("gfmBase", markdownConfig); - return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay); + return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); + }, "markdown"); + CodeMirror.defineMIME("text/x-gfm", "gfm"); }); diff --git a/mode/index.html b/mode/index.html index 8c6d0a435e..ca1703aff9 100644 --- a/mode/index.html +++ b/mode/index.html @@ -33,6 +33,7 @@

Language modes

  • APL
  • ASN.1
  • Asterisk dialplan
  • +
  • Brainfuck
  • C, C++, C#
  • Clojure
  • CMake
  • @@ -119,6 +120,7 @@

    Language modes

  • Stylus
  • SQL (several dialects)
  • SPARQL
  • +
  • Squirrel
  • Swift
  • sTeX, LaTeX
  • Tcl
  • @@ -136,6 +138,7 @@

    Language modes

  • VBScript
  • Velocity
  • Verilog/SystemVerilog
  • +
  • VHDL
  • XML/HTML
  • XQuery
  • YAML
  • diff --git a/mode/markdown/markdown.js b/mode/markdown/markdown.js index bef37b8ab6..87c3ad30ad 100644 --- a/mode/markdown/markdown.js +++ b/mode/markdown/markdown.js @@ -202,7 +202,8 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { function htmlBlock(stream, state) { var style = htmlMode.token(stream, state.htmlState); - if ((htmlFound && state.htmlState.tagStart === null && !state.htmlState.context) || + if ((htmlFound && state.htmlState.tagStart === null && + (!state.htmlState.context && state.htmlState.tokenize.isInText)) || (state.md_inside && stream.current().indexOf(">") > -1)) { state.f = inlineNormal; state.block = blockNormal; @@ -446,12 +447,11 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { return type + linkemail; } - if (ch === '<' && stream.match(/^\w/, false)) { - if (stream.string.indexOf(">") != -1) { - var atts = stream.string.substring(1,stream.string.indexOf(">")); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) { - state.md_inside = true; - } + if (ch === '<' && stream.match(/^(!--|\w)/, false)) { + var end = stream.string.indexOf(">", stream.pos); + if (end != -1) { + var atts = stream.string.substring(stream.start, end); + if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; } stream.backUp(1); state.htmlState = CodeMirror.startState(htmlMode); diff --git a/mode/meta.js b/mode/meta.js index bb30c80f54..bc9f121d04 100644 --- a/mode/meta.js +++ b/mode/meta.js @@ -14,8 +14,9 @@ CodeMirror.modeInfo = [ {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]}, - {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn, asn1"]}, + {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, + {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, @@ -116,6 +117,7 @@ {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, + {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, {name: "MariaDB", mime: "text/x-mariadb", mode: "sql"}, {name: "sTeX", mime: "text/x-stex", mode: "stex"}, diff --git a/mode/ruby/ruby.js b/mode/ruby/ruby.js index eab9d9da7f..771f855abf 100644 --- a/mode/ruby/ruby.js +++ b/mode/ruby/ruby.js @@ -37,7 +37,6 @@ CodeMirror.defineMode("ruby", function(config) { } function tokenBase(stream, state) { - curPunc = null; if (stream.sol() && stream.match("=begin") && stream.eol()) { state.tokenize.push(readBlockComment); return "comment"; @@ -232,6 +231,7 @@ CodeMirror.defineMode("ruby", function(config) { }, token: function(stream, state) { + curPunc = null; if (stream.sol()) state.indented = stream.indentation(); var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; var thisTok = curPunc; diff --git a/mode/rust/rust.js b/mode/rust/rust.js index 2bffa9a6aa..4970b2f7cb 100644 --- a/mode/rust/rust.js +++ b/mode/rust/rust.js @@ -26,7 +26,7 @@ CodeMirror.defineMode("rust", function() { }; var typeKeywords = function() { var keywords = {"fn": "fn", "block": "fn", "obj": "obj"}; - var atoms = "bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char".split(" "); + var atoms = "bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 str char isize usize".split(" "); for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = "atom"; return keywords; }(); diff --git a/mode/vhdl/index.html b/mode/vhdl/index.html new file mode 100644 index 0000000000..3051bc37e5 --- /dev/null +++ b/mode/vhdl/index.html @@ -0,0 +1,95 @@ + + +CodeMirror: VHDL mode + + + + + + + + + + +
    +

    VHDL mode

    + +
    + + + +

    +Syntax highlighting and indentation for the VHDL language. +

    Configuration options:

    + +

    + +

    MIME types defined: text/x-vhdl.

    +
    diff --git a/mode/vhdl/vhdl.js b/mode/vhdl/vhdl.js new file mode 100644 index 0000000000..470cf2be8a --- /dev/null +++ b/mode/vhdl/vhdl.js @@ -0,0 +1,189 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Originall written by Alf Nielsen, re-written by Michael Zhou +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function words(str) { + var obj = {}, words = str.split(","); + for (var i = 0; i < words.length; ++i) { + var allCaps = words[i].toUpperCase(); + var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); + obj[words[i]] = true; + obj[allCaps] = true; + obj[firstCap] = true; + } + return obj; +} + +function metaHook(stream) { + stream.eatWhile(/[\w\$_]/); + return "meta"; +} + +CodeMirror.defineMode("vhdl", function(config, parserConfig) { + var indentUnit = config.indentUnit, + atoms = parserConfig.atoms || words("null"), + hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, + multiLineStrings = parserConfig.multiLineStrings; + + var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + + "body,buffer,bus,case,component,configuration,constant,disconnent,downto,else,elsif,end,end block,end case," + + "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + + "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + + "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + + "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + + "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); + + var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); + + var isOperatorChar = /[&|~>', function(cm, vim, helpers){ }); var moveTillCharacterSandbox = - 'The quick brown fox \n' - 'jumped over the lazy dog.' + 'The quick brown fox \n'; testVim('moveTillCharacter', function(cm, vim, helpers){ cm.setCursor(0, 0); // Search for the 'q'. @@ -3176,9 +3174,6 @@ testVim('searchForPipe', function(cm, vim, helpers){ var scrollMotionSandbox = - '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' - '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' - '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'; testVim('scrollMotion', function(cm, vim, helpers){ var prevCursor, prevScrollInfo; @@ -3397,6 +3392,14 @@ testVim('ex_sort_decimal_mixed_reverse', function(cm, vim, helpers) { helpers.doEx('sort! d'); eq('a3\nb2\nc1\nz\ny', cm.getValue()); }, { value: 'a3\nz\nc1\ny\nb2'}); +testVim('ex_sort_patterns_not_supported', function(cm, vim, helpers) { + var notified = false; + cm.openNotification = helpers.fakeOpenNotification(function(text) { + notified = /patterns not supported/.test(text); + }); + helpers.doEx('sort /abc/'); + is(notified, 'No notification.'); +}); // test for :global command testVim('ex_global', function(cm, vim, helpers) { cm.setCursor(0, 0); diff --git a/theme/3024-day.css b/theme/3024-day.css index 359281621b..1eb109e438 100644 --- a/theme/3024-day.css +++ b/theme/3024-day.css @@ -10,8 +10,9 @@ .cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;} .cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;} -.cm-s-3024-day.CodeMirror ::selection { background: #d6d5d4; } -.cm-s-3024-day.CodeMirror ::-moz-selection { background: #d9d9d9; } + +.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; } +.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; } .cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;} .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } diff --git a/theme/3024-night.css b/theme/3024-night.css index ccab9d50bf..36bb8b4eea 100644 --- a/theme/3024-night.css +++ b/theme/3024-night.css @@ -10,8 +10,8 @@ .cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;} .cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;} -.cm-s-3024-night.CodeMirror ::selection { background: rgba(58, 52, 50, .99); } -.cm-s-3024-night.CodeMirror ::-moz-selection { background: rgba(58, 52, 50, .99); } +.cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night .CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); } +.cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night .CodeMirror-line > span::-moz-selection, .cm-s-3024-night .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); } .cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;} .cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } .cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } diff --git a/theme/ambiance.css b/theme/ambiance.css index 3ab9b25483..0e68f75e4c 100644 --- a/theme/ambiance.css +++ b/theme/ambiance.css @@ -33,8 +33,8 @@ .cm-s-ambiance .CodeMirror-selected { background: rgba(255, 255, 255, 0.15); } .cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } -.cm-s-ambiance.CodeMirror ::selection { background: rgba(255, 255, 255, 0.10); } -.cm-s-ambiance.CodeMirror ::-moz-selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line > span::selection, .cm-s-ambiance .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance .CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } /* Editor styling */ diff --git a/theme/base16-dark.css b/theme/base16-dark.css index b009d2b9d6..fb79fae2b9 100644 --- a/theme/base16-dark.css +++ b/theme/base16-dark.css @@ -10,8 +10,8 @@ .cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;} .cm-s-base16-dark div.CodeMirror-selected {background: #303030 !important;} -.cm-s-base16-dark.CodeMirror ::selection { background: rgba(48, 48, 48, .99); } -.cm-s-base16-dark.CodeMirror ::-moz-selection { background: rgba(48, 48, 48, .99); } +.cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark .CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line > span > span::selection { background: rgba(48, 48, 48, .99); } +.cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(48, 48, 48, .99); } .cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;} .cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } diff --git a/theme/base16-light.css b/theme/base16-light.css index 15df6d3807..46508e02c6 100644 --- a/theme/base16-light.css +++ b/theme/base16-light.css @@ -10,8 +10,8 @@ .cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;} .cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;} -.cm-s-base16-light.CodeMirror ::selection { background: #e0e0e0; } -.cm-s-base16-light.CodeMirror ::-moz-selection { background: #e0e0e0; } +.cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; } +.cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;} .cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } diff --git a/theme/blackboard.css b/theme/blackboard.css index 02289b630b..6de11dd20a 100644 --- a/theme/blackboard.css +++ b/theme/blackboard.css @@ -2,8 +2,8 @@ .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } .cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; } -.cm-s-blackboard.CodeMirror ::selection { background: rgba(37, 59, 118, .99); } -.cm-s-blackboard.CodeMirror ::-moz-selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); } .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } .cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } .cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } diff --git a/theme/cobalt.css b/theme/cobalt.css index 3915589494..b6eebcfcff 100644 --- a/theme/cobalt.css +++ b/theme/cobalt.css @@ -1,7 +1,7 @@ .cm-s-cobalt.CodeMirror { background: #002240; color: white; } .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } -.cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } -.cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } diff --git a/theme/dracula.css b/theme/dracula.css new file mode 100644 index 0000000000..5badef282e --- /dev/null +++ b/theme/dracula.css @@ -0,0 +1,87 @@ +/* + + Name: dracula + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme) + +*/ + + +.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters { + background-color: #282a36 !important; + color: #f8f8f2 !important; + border: none; +} +.cm-s-dracula .CodeMirror-gutters{ + color: #282a36; +} +.cm-s-dracula .CodeMirror-cursor { + border-left: solid thin #f8f8f0 !important; +} +.cm-s-dracula .CodeMirror-linenumber { + color: #6D8A88; +} +.cm-s-dracula.CodeMirror-focused .CodeMirror-selected { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-dracula span.cm-comment { + color: #6272a4; +} +.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { + color: #f1fa8c; +} +.cm-s-dracula span.cm-number { + color: #bd93f9; +} +.cm-s-dracula span.cm-variable { + color: #50fa7b; +} +.cm-s-dracula span.cm-variable-2 { + color: white; +} +.cm-s-dracula span.cm-def { + color: #ffb86c; +} +.cm-s-dracula span.cm-keyword { + color: #ff79c6; +} +.cm-s-dracula span.cm-operator { + color: #ff79c6; +} +.cm-s-dracula span.cm-keyword { + color: #ff79c6; +} +.cm-s-dracula span.cm-atom { + color: #bd93f9; +} +.cm-s-dracula span.cm-meta { + color: #f8f8f2; +} +.cm-s-dracula span.cm-tag { + color: #ff79c6; +} +.cm-s-dracula span.cm-attribute { + color: #50fa7b; +} +.cm-s-dracula span.cm-qualifier { + color: #50fa7b; +} +.cm-s-dracula span.cm-property { + color: #66d9ef; +} +.cm-s-dracula span.cm-builtin { + color: #50fa7b; +} +.cm-s-dracula span.cm-variable-3 { + color: #50fa7b; +} + +.cm-s-dracula .CodeMirror-activeline-background {background: rgba(255,255,255,0.1) !important;} +.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} \ No newline at end of file diff --git a/theme/erlang-dark.css b/theme/erlang-dark.css index e20bf1259b..48552f862f 100644 --- a/theme/erlang-dark.css +++ b/theme/erlang-dark.css @@ -1,7 +1,7 @@ .cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; } -.cm-s-erlang-dark.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } -.cm-s-erlang-dark.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } +.cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark .CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } +.cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } .cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } diff --git a/theme/icecoder.css b/theme/icecoder.css new file mode 100644 index 0000000000..5ec374342a --- /dev/null +++ b/theme/icecoder.css @@ -0,0 +1,42 @@ +/* +ICEcoder default theme by Matt Pass, used in code editor available at https://icecoder.net +*/ + +.cm-s-icecoder {color: #666; background: #141612} + +.cm-s-icecoder span.cm-keyword {color: #eee; font-weight:bold} /* off-white 1 */ +.cm-s-icecoder span.cm-atom {color: #e1c76e} /* yellow */ +.cm-s-icecoder span.cm-number {color: #6cb5d9} /* blue */ +.cm-s-icecoder span.cm-def {color: #b9ca4a} /* green */ + +.cm-s-icecoder span.cm-variable {color: #6cb5d9} /* blue */ +.cm-s-icecoder span.cm-variable-2 {color: #cc1e5c} /* pink */ +.cm-s-icecoder span.cm-variable-3 {color: #f9602c} /* orange */ + +.cm-s-icecoder span.cm-property {color: #eee} /* off-white 1 */ +.cm-s-icecoder span.cm-operator {color: #9179bb} /* purple */ +.cm-s-icecoder span.cm-comment {color: #97a3aa} /* grey-blue */ + +.cm-s-icecoder span.cm-string {color: #b9ca4a} /* green */ +.cm-s-icecoder span.cm-string-2 {color: #6cb5d9} /* blue */ + +.cm-s-icecoder span.cm-meta {color: #555} /* grey */ + +.cm-s-icecoder span.cm-qualifier {color: #555} /* grey */ +.cm-s-icecoder span.cm-builtin {color: #214e7b} /* bright blue */ +.cm-s-icecoder span.cm-bracket {color: #cc7} /* grey-yellow */ + +.cm-s-icecoder span.cm-tag {color: #e8e8e8} /* off-white 2 */ +.cm-s-icecoder span.cm-attribute {color: #099} /* teal */ + +.cm-s-icecoder span.cm-header {color: #6a0d6a} /* purple-pink */ +.cm-s-icecoder span.cm-quote {color: #186718} /* dark green */ +.cm-s-icecoder span.cm-hr {color: #888} /* mid-grey */ +.cm-s-icecoder span.cm-link {color: #e1c76e} /* yellow */ +.cm-s-icecoder span.cm-error {color: #d00} /* red */ + +.cm-s-icecoder .CodeMirror-cursor {border-left: 1px solid white !important} +.cm-s-icecoder .CodeMirror-selected {color: #fff !important; background: #037 !important} +.cm-s-icecoder .CodeMirror-gutters {background: #141612; min-width: 41px; border-right: 0} +.cm-s-icecoder .CodeMirror-linenumber {color: #555; cursor: default} +.cm-s-icecoder .CodeMirror-matchingbracket {border: 1px solid grey; color: black !important} diff --git a/theme/lesser-dark.css b/theme/lesser-dark.css index 88dff92191..0573c06692 100644 --- a/theme/lesser-dark.css +++ b/theme/lesser-dark.css @@ -7,8 +7,8 @@ Ported to CodeMirror by Peter Kroon } .cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } .cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/ -.cm-s-lesser-dark.CodeMirror ::selection { background: rgba(69, 68, 59, .99); } -.cm-s-lesser-dark.CodeMirror ::-moz-selection { background: rgba(69, 68, 59, .99); } +.cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); } +.cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; } .cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ diff --git a/theme/material.css b/theme/material.css new file mode 100644 index 0000000000..85e1f185d5 --- /dev/null +++ b/theme/material.css @@ -0,0 +1,105 @@ +/* + + Name: material + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original material color scheme by Mattia Astorino (https://github.com/equinusocio/material-theme) + +*/ + +.cm-s-material { + background-color: #263238; + color: rgba(233, 237, 237, 1); +} +.cm-s-material .CodeMirror-gutters { + background: #263238; + color: rgb(83,127,126); + border: none; +} +.cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { + color: rgb(83,127,126); +} +.cm-s-material .CodeMirror-cursor { + border-left: 1px solid #f8f8f0 !important; +} +.cm-s-material .CodeMirror-selected { + background: rgba(255, 255, 255, 0.15); +} +.cm-s-material.CodeMirror-focused .CodeMirror-selected { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line > span::selection, .cm-s-material .CodeMirror-line > span > span::selection { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { + background: rgba(255, 255, 255, 0.10); +} + +.CodeMirror-activeline-background { + background: rgba(0, 0, 0, 0) !important; +} +.cm-s-material span.cm-keyword { + color: rgba(199, 146, 234, 1); +} +.cm-s-material span.cm-operator { + color: rgba(233, 237, 237, 1); +} +.cm-s-material span.cm-variable-2 { + color: #80CBC4; +} +.cm-s-material span.cm-variable-3 { + color: #82B1FF; +} +.cm-s-material span.cm-builtin { + color: #DECB6B; +} +.cm-s-material span.cm-atom { + color: #F77669; +} +.cm-s-material span.cm-number { + color: #F77669; +} +.cm-s-material span.cm-def { + color: rgba(233, 237, 237, 1); +} +.cm-s-material span.cm-error { + color: rgba(255, 255, 255, 1.0); + background-color: #EC5F67; +} +.cm-s-material span.cm-string { + color: #C3E88D; +} +.cm-s-material span.cm-string-2 { + color: #80CBC4; +} +.cm-s-material span.cm-comment { + color: #546E7A; +} +.cm-s-material span.cm-variable { + color: #82B1FF; +} +.cm-s-material span.cm-tag { + color: #80CBC4; +} +.cm-s-material span.cm-meta{ + color: #80CBC4; +} +.cm-s-material span.cm-attribute { + color: #FFCB6B; +} +.cm-s-material span.cm-property { + color: #80CBAE; +} +.cm-s-material span.cm-qualifier { + color: #DECB6B; +} +.cm-s-material span.cm-variable-3{ + color: #DECB6B; +} +.cm-s-material span.cm-tag { + color: rgba(255, 83, 112, 1); +} +.cm-s-material .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} \ No newline at end of file diff --git a/theme/mbo.css b/theme/mbo.css index e39879522e..cc9032e0ed 100644 --- a/theme/mbo.css +++ b/theme/mbo.css @@ -6,8 +6,8 @@ .cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;} .cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;} -.cm-s-mbo.CodeMirror ::selection { background: rgba(113, 108, 98, .99); } -.cm-s-mbo.CodeMirror ::-moz-selection { background: rgba(113, 108, 98, .99); } +.cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line > span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection { background: rgba(113, 108, 98, .99); } +.cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line > span::-moz-selection, .cm-s-mbo .CodeMirror-line > span > span::-moz-selection { background: rgba(113, 108, 98, .99); } .cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;} .cm-s-mbo .CodeMirror-guttermarker { color: white; } .cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } diff --git a/theme/mdn-like.css b/theme/mdn-like.css index 9c73dc2f0c..771d4471e5 100644 --- a/theme/mdn-like.css +++ b/theme/mdn-like.css @@ -9,8 +9,8 @@ */ .cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; } .cm-s-mdn-like .CodeMirror-selected { background: #cfc !important; } -.cm-s-mdn-like.CodeMirror ::selection { background: #cfc; } -.cm-s-mdn-like.CodeMirror ::-moz-selection { background: #cfc; } +.cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; } +.cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } .cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; } diff --git a/theme/midnight.css b/theme/midnight.css index 296af4f7d2..9e9825b3f8 100644 --- a/theme/midnight.css +++ b/theme/midnight.css @@ -15,8 +15,8 @@ .cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} .cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;} -.cm-s-midnight.CodeMirror ::selection { background: rgba(49, 77, 103, .99); } -.cm-s-midnight.CodeMirror ::-moz-selection { background: rgba(49, 77, 103, .99); } +.cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); } +.cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;} .cm-s-midnight .CodeMirror-guttermarker { color: white; } .cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } diff --git a/theme/monokai.css b/theme/monokai.css index cea775f67f..e11e80cace 100644 --- a/theme/monokai.css +++ b/theme/monokai.css @@ -2,8 +2,8 @@ .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} -.cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); } -.cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); } +.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); } +.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); } .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} .cm-s-monokai .CodeMirror-guttermarker { color: white; } .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } diff --git a/theme/night.css b/theme/night.css index 6b2ac6c7cf..6fbbcaa202 100644 --- a/theme/night.css +++ b/theme/night.css @@ -2,8 +2,8 @@ .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-night div.CodeMirror-selected { background: #447 !important; } -.cm-s-night.CodeMirror ::selection { background: rgba(68, 68, 119, .99); } -.cm-s-night.CodeMirror ::-moz-selection { background: rgba(68, 68, 119, .99); } +.cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); } +.cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); } .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-night .CodeMirror-guttermarker { color: white; } .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } diff --git a/theme/paraiso-dark.css b/theme/paraiso-dark.css index af914b60bf..2b6a797d0d 100644 --- a/theme/paraiso-dark.css +++ b/theme/paraiso-dark.css @@ -10,8 +10,8 @@ .cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;} .cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;} -.cm-s-paraiso-dark.CodeMirror ::selection { background: rgba(65, 50, 63, .99); } -.cm-s-paraiso-dark.CodeMirror ::-moz-selection { background: rgba(65, 50, 63, .99); } +.cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark .CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::selection { background: rgba(65, 50, 63, .99); } +.cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(65, 50, 63, .99); } .cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;} .cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } .cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } diff --git a/theme/paraiso-light.css b/theme/paraiso-light.css index e198066faa..01d2e11f54 100644 --- a/theme/paraiso-light.css +++ b/theme/paraiso-light.css @@ -10,8 +10,8 @@ .cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;} .cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;} -.cm-s-paraiso-light.CodeMirror ::selection { background: #b9b6b0; } -.cm-s-paraiso-light.CodeMirror ::-moz-selection { background: #b9b6b0; } +.cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; } +.cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;} .cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } .cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } diff --git a/theme/pastel-on-dark.css b/theme/pastel-on-dark.css index 0d06f63284..1c7f84c45b 100644 --- a/theme/pastel-on-dark.css +++ b/theme/pastel-on-dark.css @@ -14,8 +14,8 @@ font-size: 14px; } .cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2) !important; } -.cm-s-pastel-on-dark.CodeMirror ::selection { background: rgba(221,240,255,0.2); } -.cm-s-pastel-on-dark.CodeMirror ::-moz-selection { background: rgba(221,240,255,0.2); } +.cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); } +.cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-gutters { background: #34302f; diff --git a/theme/rubyblue.css b/theme/rubyblue.css index d2fc0ecdbc..064f192f78 100644 --- a/theme/rubyblue.css +++ b/theme/rubyblue.css @@ -1,7 +1,7 @@ .cm-s-rubyblue.CodeMirror { background: #112435; color: white; } .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } -.cm-s-rubyblue.CodeMirror ::selection { background: rgba(56, 86, 111, 0.99); } -.cm-s-rubyblue.CodeMirror ::-moz-selection { background: rgba(56, 86, 111, 0.99); } +.cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); } +.cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); } .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } diff --git a/theme/seti.css b/theme/seti.css new file mode 100644 index 0000000000..ea27d5eee7 --- /dev/null +++ b/theme/seti.css @@ -0,0 +1,88 @@ +/* + + Name: seti + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax) + +*/ + + +.cm-s-seti.CodeMirror { + background-color: #151718 !important; + color: #CFD2D1 !important; + border: none; +} +.cm-s-seti .CodeMirror-gutters{ + color: #404b53; + background-color: #0E1112; + border: none; +} +.cm-s-seti .CodeMirror-cursor { + border-left: solid thin #f8f8f0 !important; +} +.cm-s-seti .CodeMirror-linenumber { + color: #6D8A88; +} +.cm-s-seti.CodeMirror-focused .CodeMirror-selected { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line > span::selection, .cm-s-seti .CodeMirror-line > span > span::selection { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line > span::-moz-selection, .cm-s-seti .CodeMirror-line > span > span::-moz-selection { + background: rgba(255, 255, 255, 0.10); +} +.cm-s-seti span.cm-comment { + color: #41535b; +} +.cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { + color: #55b5db; +} +.cm-s-seti span.cm-number { + color: #cd3f45; +} +.cm-s-seti span.cm-variable { + color: #55b5db; +} +.cm-s-seti span.cm-variable-2 { + color: #a074c4; +} +.cm-s-seti span.cm-def { + color: #55b5db; +} +.cm-s-seti span.cm-keyword { + color: #ff79c6; +} +.cm-s-seti span.cm-operator { + color: #9fca56; +} +.cm-s-seti span.cm-keyword { + color: #e6cd69; +} +.cm-s-seti span.cm-atom { + color: #cd3f45; +} +.cm-s-seti span.cm-meta { + color: #55b5db; +} +.cm-s-seti span.cm-tag { + color: #55b5db; +} +.cm-s-seti span.cm-attribute { + color: #9fca56; +} +.cm-s-seti span.cm-qualifier { + color: #9fca56; +} +.cm-s-seti span.cm-property { + color: #a074c4; +} +.cm-s-seti span.cm-variable-3 { + color: #9fca56; +} +.cm-s-seti span.cm-builtin { + color: #9fca56; +} +.cm-s-seti .CodeMirror-activeline-background {background: #101213 !important;} +.cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} \ No newline at end of file diff --git a/theme/solarized.css b/theme/solarized.css index 1f1dedac10..18ed6de63f 100644 --- a/theme/solarized.css +++ b/theme/solarized.css @@ -96,11 +96,11 @@ http://ethanschoonover.com/solarized/img/solarized-palette.png .cm-s-solarized.cm-s-dark .CodeMirror-selected { background: #073642; } .cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); } -.cm-s-solarized.cm-s-dark.CodeMirror ::-moz-selection { background: rgba(7, 54, 66, 0.99); } +.cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark .CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); } .cm-s-solarized.cm-s-light .CodeMirror-selected { background: #eee8d5; } -.cm-s-solarized.cm-s-light.CodeMirror ::selection { background: #eee8d5; } -.cm-s-solarized.cm-s-lightCodeMirror ::-moz-selection { background: #eee8d5; } +.cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light .CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line > span > span::selection { background: #eee8d5; } +.cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-ligh .CodeMirror-line > span::-moz-selection, .cm-s-ligh .CodeMirror-line > span > span::-moz-selection { background: #eee8d5; } /* Editor styling */ diff --git a/theme/the-matrix.css b/theme/the-matrix.css index f29b22b0da..ec6046ad96 100644 --- a/theme/the-matrix.css +++ b/theme/the-matrix.css @@ -1,7 +1,7 @@ .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; } -.cm-s-the-matrix.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); } -.cm-s-the-matrix.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } diff --git a/theme/tomorrow-night-eighties.css b/theme/tomorrow-night-eighties.css index 5fca3cafbf..a8ee8f5d97 100644 --- a/theme/tomorrow-night-eighties.css +++ b/theme/tomorrow-night-eighties.css @@ -10,8 +10,8 @@ .cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;} .cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;} -.cm-s-tomorrow-night-eighties.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); } -.cm-s-tomorrow-night-eighties.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-tomorrow-night-eighties .CodeMirror-line::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;} .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } diff --git a/theme/twilight.css b/theme/twilight.css index 889a83d799..360d44afc9 100644 --- a/theme/twilight.css +++ b/theme/twilight.css @@ -1,7 +1,7 @@ .cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ .cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/ -.cm-s-twilight.CodeMirror ::selection { background: rgba(50, 50, 50, 0.99); } -.cm-s-twilight.CodeMirror ::-moz-selection { background: rgba(50, 50, 50, 0.99); } +.cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line > span::selection, .cm-s-twilight .CodeMirror-line > span > span::selection { background: rgba(50, 50, 50, 0.99); } +.cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight .CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line > span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); } .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } .cm-s-twilight .CodeMirror-guttermarker { color: white; } diff --git a/theme/vibrant-ink.css b/theme/vibrant-ink.css index 8ea535973c..8d3e99d386 100644 --- a/theme/vibrant-ink.css +++ b/theme/vibrant-ink.css @@ -2,8 +2,8 @@ .cm-s-vibrant-ink.CodeMirror { background: black; color: white; } .cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; } -.cm-s-vibrant-ink.CodeMirror ::selection { background: rgba(53, 73, 60, 0.99); } -.cm-s-vibrant-ink.CodeMirror ::-moz-selection { background: rgba(53, 73, 60, 0.99); } +.cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink .CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::selection { background: rgba(53, 73, 60, 0.99); } +.cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::-moz-selection { background: rgba(53, 73, 60, 0.99); } .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } diff --git a/theme/xq-dark.css b/theme/xq-dark.css index d537993e89..5cdfe8f03a 100644 --- a/theme/xq-dark.css +++ b/theme/xq-dark.css @@ -22,8 +22,8 @@ THE SOFTWARE. */ .cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-xq-dark .CodeMirror-selected { background: #27007A !important; } -.cm-s-xq-dark.CodeMirror ::selection { background: rgba(39, 0, 122, 0.99); } -.cm-s-xq-dark.CodeMirror ::-moz-selection { background: rgba(39, 0, 122, 0.99); } +.cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line > span::selection, .cm-s-xq-dark .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); } +.cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); } .cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; } .cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; } diff --git a/theme/yeti.css b/theme/yeti.css new file mode 100644 index 0000000000..dce32588cd --- /dev/null +++ b/theme/yeti.css @@ -0,0 +1,86 @@ +/* + + Name: yeti + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax) + +*/ + + +.cm-s-yeti.CodeMirror { + background-color: #ECEAE8 !important; + color: #d1c9c0 !important; + border: none; +} + +.cm-s-yeti .CodeMirror-gutters{ + color: #adaba6; + background-color: #E5E1DB; + border: none; +} +.cm-s-yeti .CodeMirror-cursor { + border-left: solid thin #d1c9c0 !important; +} +.cm-s-yeti .CodeMirror-linenumber { + color: #adaba6; +} +.cm-s-yeti.CodeMirror-focused .CodeMirror-selected { + background: #DCD8D2; +} +.cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { + background: #DCD8D2; +} +.cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { + background: #DCD8D2; +} +.cm-s-yeti span.cm-comment { + color: #d4c8be; +} +.cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { + color: #96c0d8; +} +.cm-s-yeti span.cm-number { + color: #a074c4; +} +.cm-s-yeti span.cm-variable { + color: #55b5db; +} +.cm-s-yeti span.cm-variable-2 { + color: #a074c4; +} +.cm-s-yeti span.cm-def { + color: #55b5db; +} +.cm-s-yeti span.cm-operator { + color: #9fb96e; +} +.cm-s-yeti span.cm-keyword { + color: #9fb96e; +} +.cm-s-yeti span.cm-atom { + color:##a074c4; +} +.cm-s-yeti span.cm-meta { + color: #96c0d8; +} +.cm-s-yeti span.cm-tag { + color: #96c0d8; +} +.cm-s-yeti span.cm-attribute { + color: #9fb96e; +} +.cm-s-yeti span.cm-qualifier { + color: #96c0d8; +} +.cm-s-yeti span.cm-property { + color: #a074c4; +} +.cm-s-yeti span.cm-builtin { + color: #a074c4; +} +.cm-s-yeti span.cm-variable-3 { + color: #96c0d8; +} +.cm-s-yeti .CodeMirror-activeline-background {background: #E7E4E0 !important;} +.cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline;} \ No newline at end of file