init
This commit is contained in:
753
public/tinymce/plugins/codemirror/CodeMirror/mode/less/index.html
vendored
Normal file
753
public/tinymce/plugins/codemirror/CodeMirror/mode/less/index.html
vendored
Normal file
@ -0,0 +1,753 @@
|
||||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: LESS mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<link rel="stylesheet" href="../../theme/lesser-dark.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="../../addon/edit/matchbrackets.js"></script>
|
||||
<script src="less.js"></script>
|
||||
<style>.CodeMirror {background: #f8f8f8; border: 1px solid #ddd; font-size:12px; height: 400px}</style>
|
||||
<div id=nav>
|
||||
<a href="http://codemirror.net"><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/marijnh/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">LESS</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>LESS mode</h2>
|
||||
<form><textarea id="code" name="code">@media screen and (device-aspect-ratio: 16/9) { … }
|
||||
@media screen and (device-aspect-ratio: 32/18) { … }
|
||||
@media screen and (device-aspect-ratio: 1280/720) { … }
|
||||
@media screen and (device-aspect-ratio: 2560/1440) { … }
|
||||
|
||||
html:lang(fr-be)
|
||||
html:lang(de)
|
||||
:lang(fr-be) > q
|
||||
:lang(de) > q
|
||||
|
||||
tr:nth-child(2n+1) /* represents every odd row of an HTML table */
|
||||
tr:nth-child(odd) /* same */
|
||||
tr:nth-child(2n+0) /* represents every even row of an HTML table */
|
||||
tr:nth-child(even) /* same */
|
||||
|
||||
/* Alternate paragraph colours in CSS */
|
||||
p:nth-child(4n+1) { color: navy; }
|
||||
p:nth-child(4n+2) { color: green; }
|
||||
p:nth-child(4n+3) { color: maroon; }
|
||||
p:nth-child(4n+4) { color: purple; }
|
||||
|
||||
:nth-child(10n-1) /* represents the 9th, 19th, 29th, etc, element */
|
||||
:nth-child(10n+9) /* Same */
|
||||
:nth-child(10n+-1) /* Syntactically invalid, and would be ignored */
|
||||
|
||||
:nth-child( 3n + 1 )
|
||||
:nth-child( +3n - 2 )
|
||||
:nth-child( -n+ 6)
|
||||
:nth-child( +6 )
|
||||
|
||||
html|tr:nth-child(-n+6) /* represents the 6 first rows of XHTML tables */
|
||||
|
||||
img:nth-of-type(2n+1) { float: right; }
|
||||
img:nth-of-type(2n) { float: left; }
|
||||
|
||||
body > h2:nth-of-type(n+2):nth-last-of-type(n+2)
|
||||
body > h2:not(:first-of-type):not(:last-of-type)
|
||||
|
||||
html|*:not(:link):not(:visited)
|
||||
*|*:not(:hover)
|
||||
p::first-line { text-transform: uppercase }
|
||||
|
||||
p { color: red; font-size: 12pt }
|
||||
p::first-letter { color: green; font-size: 200% }
|
||||
p::first-line { color: blue }
|
||||
|
||||
p { line-height: 1.1 }
|
||||
p::first-letter { font-size: 3em; font-weight: normal }
|
||||
span { font-weight: bold }
|
||||
|
||||
* /* a=0 b=0 c=0 -> specificity = 0 */
|
||||
LI /* a=0 b=0 c=1 -> specificity = 1 */
|
||||
UL LI /* a=0 b=0 c=2 -> specificity = 2 */
|
||||
UL OL+LI /* a=0 b=0 c=3 -> specificity = 3 */
|
||||
H1 + *[REL=up] /* a=0 b=1 c=1 -> specificity = 11 */
|
||||
UL OL LI.red /* a=0 b=1 c=3 -> specificity = 13 */
|
||||
LI.red.level /* a=0 b=2 c=1 -> specificity = 21 */
|
||||
#x34y /* a=1 b=0 c=0 -> specificity = 100 */
|
||||
#s12:not(FOO) /* a=1 b=0 c=1 -> specificity = 101 */
|
||||
|
||||
@namespace foo url(http://www.example.com);
|
||||
foo|h1 { color: blue } /* first rule */
|
||||
foo|* { color: yellow } /* second rule */
|
||||
|h1 { color: red } /* ...*/
|
||||
*|h1 { color: green }
|
||||
h1 { color: green }
|
||||
|
||||
span[hello="Ocean"][goodbye="Land"]
|
||||
|
||||
a[rel~="copyright"] { ... }
|
||||
a[href="http://www.w3.org/"] { ... }
|
||||
|
||||
DIALOGUE[character=romeo]
|
||||
DIALOGUE[character=juliet]
|
||||
|
||||
[att^=val]
|
||||
[att$=val]
|
||||
[att*=val]
|
||||
|
||||
@namespace foo "http://www.example.com";
|
||||
[foo|att=val] { color: blue }
|
||||
[*|att] { color: yellow }
|
||||
[|att] { color: green }
|
||||
[att] { color: green }
|
||||
|
||||
|
||||
*:target { color : red }
|
||||
*:target::before { content : url(target.png) }
|
||||
|
||||
E[foo]{
|
||||
padding:65px;
|
||||
}
|
||||
E[foo] ~ F{
|
||||
padding:65px;
|
||||
}
|
||||
E#myid{
|
||||
padding:65px;
|
||||
}
|
||||
input[type="search"]::-webkit-search-decoration,
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
.btn {
|
||||
// reset here as of 2.0.3 due to Recess property order
|
||||
border-color: #ccc;
|
||||
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
|
||||
}
|
||||
fieldset span button, fieldset span input[type="file"] {
|
||||
font-size:12px;
|
||||
font-family:Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.el tr:nth-child(even):last-child td:first-child{
|
||||
-moz-border-radius-bottomleft:3px;
|
||||
-webkit-border-bottom-left-radius:3px;
|
||||
border-bottom-left-radius:3px;
|
||||
}
|
||||
|
||||
/* Some LESS code */
|
||||
|
||||
button {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border: 0;
|
||||
margin: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
button.icon-plus { background: url(http://dahlström.net/tmp/sharp-icons/svg-icon-target.svg#plus) no-repeat; }
|
||||
button.icon-chart { background: url(http://dahlström.net/tmp/sharp-icons/svg-icon-target.svg#chart) no-repeat; }
|
||||
|
||||
button:hover { background-color: #999; }
|
||||
button:active { background-color: #666; }
|
||||
|
||||
@test_a: #eeeQQQ;//this is not a valid hex value and thus parsed as an element id
|
||||
@test_b: #eeeFFF //this is a valid hex value but the declaration doesn't end with a semicolon and thus parsed as an element id
|
||||
|
||||
#eee aaa .box
|
||||
{
|
||||
#test bbb {
|
||||
width: 500px;
|
||||
height: 250px;
|
||||
background-image: url(dir/output/sheep.png), url( betweengrassandsky.png );
|
||||
background-position: center bottom, left top;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
@base: #f938ab;
|
||||
|
||||
.box-shadow(@style, @c) when (iscolor(@c)) {
|
||||
box-shadow: @style @c;
|
||||
-webkit-box-shadow: @style @c;
|
||||
-moz-box-shadow: @style @c;
|
||||
}
|
||||
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
|
||||
.box-shadow(@style, rgba(0, 0, 0, @alpha));
|
||||
}
|
||||
|
||||
@color: #4D926F;
|
||||
|
||||
#header {
|
||||
color: @color;
|
||||
color: #000000;
|
||||
}
|
||||
h2 {
|
||||
color: @color;
|
||||
}
|
||||
|
||||
.rounded-corners (@radius: 5px) {
|
||||
border-radius: @radius;
|
||||
-webkit-border-radius: @radius;
|
||||
-moz-border-radius: @radius;
|
||||
}
|
||||
|
||||
#header {
|
||||
.rounded-corners;
|
||||
}
|
||||
#footer {
|
||||
.rounded-corners(10px);
|
||||
}
|
||||
|
||||
.box-shadow (@x: 0, @y: 0, @blur: 1px, @alpha) {
|
||||
@val: @x @y @blur rgba(0, 0, 0, @alpha);
|
||||
|
||||
box-shadow: @val;
|
||||
-webkit-box-shadow: @val;
|
||||
-moz-box-shadow: @val;
|
||||
}
|
||||
.box { @base: #f938ab;
|
||||
color: saturate(@base, 5%);
|
||||
border-color: lighten(@base, 30%);
|
||||
div { .box-shadow(0, 0, 5px, 0.4) }
|
||||
}
|
||||
|
||||
@import url("something.css");
|
||||
|
||||
@light-blue: hsl(190, 50%, 65%);
|
||||
@light-yellow: desaturate(#fefec8, 10%);
|
||||
@dark-yellow: desaturate(darken(@light-yellow, 10%), 40%);
|
||||
@darkest: hsl(20, 0%, 15%);
|
||||
@dark: hsl(190, 20%, 30%);
|
||||
@medium: hsl(10, 60%, 30%);
|
||||
@light: hsl(90, 40%, 20%);
|
||||
@lightest: hsl(90, 20%, 90%);
|
||||
@highlight: hsl(80, 50%, 90%);
|
||||
@blue: hsl(210, 60%, 20%);
|
||||
@alpha-blue: hsla(210, 60%, 40%, 0.5);
|
||||
|
||||
.box-shadow (@x, @y, @blur, @alpha) {
|
||||
@value: @x @y @blur rgba(0, 0, 0, @alpha);
|
||||
box-shadow: @value;
|
||||
-moz-box-shadow: @value;
|
||||
-webkit-box-shadow: @value;
|
||||
}
|
||||
.border-radius (@radius) {
|
||||
border-radius: @radius;
|
||||
-moz-border-radius: @radius;
|
||||
-webkit-border-radius: @radius;
|
||||
}
|
||||
|
||||
.border-radius (@radius, bottom) {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
-moz-border-top-right-radius: 0;
|
||||
-moz-border-top-left-radius: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
}
|
||||
.border-radius (@radius, right) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
-moz-border-bottom-left-radius: 0;
|
||||
-moz-border-top-left-radius: 0;
|
||||
-webkit-border-bottom-left-radius: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
}
|
||||
.box-shadow-inset (@x, @y, @blur, @color) {
|
||||
box-shadow: @x @y @blur @color inset;
|
||||
-moz-box-shadow: @x @y @blur @color inset;
|
||||
-webkit-box-shadow: @x @y @blur @color inset;
|
||||
}
|
||||
.code () {
|
||||
font-family: 'Bitstream Vera Sans Mono',
|
||||
'DejaVu Sans Mono',
|
||||
'Monaco',
|
||||
Courier,
|
||||
monospace !important;
|
||||
}
|
||||
.wrap () {
|
||||
text-wrap: wrap;
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||
white-space: -pre-wrap; /* Opera 4-6 */
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
}
|
||||
|
||||
html { margin: 0 }
|
||||
body {
|
||||
background-color: @darkest;
|
||||
margin: 0 auto;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 100%;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
nav, header, footer, section, article {
|
||||
display: block;
|
||||
}
|
||||
a {
|
||||
color: #b83000;
|
||||
}
|
||||
h1 a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1, h2, h3, h4 {
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
ul, li {
|
||||
list-style-type: none;
|
||||
}
|
||||
code { .code; }
|
||||
code {
|
||||
.string, .regexp { color: @dark }
|
||||
.keyword { font-weight: bold }
|
||||
.comment { color: rgba(0, 0, 0, 0.5) }
|
||||
.number { color: @blue }
|
||||
.class, .special { color: rgba(0, 50, 100, 0.8) }
|
||||
}
|
||||
pre {
|
||||
padding: 0 30px;
|
||||
.wrap;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
}
|
||||
body > footer {
|
||||
text-align: left;
|
||||
margin-left: 10px;
|
||||
font-style: italic;
|
||||
font-size: 18px;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#logo {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
display: block;
|
||||
width: 199px;
|
||||
height: 81px;
|
||||
background: url(/images/logo.png) no-repeat;
|
||||
}
|
||||
nav {
|
||||
margin-left: 15px;
|
||||
}
|
||||
nav a, #dropdown li {
|
||||
display: inline-block;
|
||||
color: white;
|
||||
line-height: 42px;
|
||||
margin: 0;
|
||||
padding: 0px 15px;
|
||||
text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.5);
|
||||
text-decoration: none;
|
||||
border: 2px solid transparent;
|
||||
border-width: 0 2px;
|
||||
&:hover {
|
||||
.dark-red;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
.dark-red {
|
||||
@red: @medium;
|
||||
border: 2px solid darken(@red, 25%);
|
||||
border-left-color: darken(@red, 15%);
|
||||
border-right-color: darken(@red, 15%);
|
||||
border-bottom: 0;
|
||||
border-top: 0;
|
||||
background-color: darken(@red, 10%);
|
||||
}
|
||||
|
||||
.content {
|
||||
margin: 0 auto;
|
||||
width: 980px;
|
||||
}
|
||||
|
||||
#menu {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
z-index: 3;
|
||||
clear: both;
|
||||
display: block;
|
||||
background-color: @blue;
|
||||
height: 42px;
|
||||
border-top: 2px solid lighten(@alpha-blue, 20%);
|
||||
border-bottom: 2px solid darken(@alpha-blue, 25%);
|
||||
.box-shadow(0, 1px, 8px, 0.6);
|
||||
-moz-box-shadow: 0 0 0 #000; // Because firefox sucks.
|
||||
|
||||
&.docked {
|
||||
background-color: hsla(210, 60%, 40%, 0.4);
|
||||
}
|
||||
&:hover {
|
||||
background-color: @blue;
|
||||
}
|
||||
|
||||
#dropdown {
|
||||
margin: 0 0 0 117px;
|
||||
padding: 0;
|
||||
padding-top: 5px;
|
||||
display: none;
|
||||
width: 190px;
|
||||
border-top: 2px solid @medium;
|
||||
color: @highlight;
|
||||
border: 2px solid darken(@medium, 25%);
|
||||
border-left-color: darken(@medium, 15%);
|
||||
border-right-color: darken(@medium, 15%);
|
||||
border-top-width: 0;
|
||||
background-color: darken(@medium, 10%);
|
||||
ul {
|
||||
padding: 0px;
|
||||
}
|
||||
li {
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
text-align: left;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
a {
|
||||
display: block;
|
||||
padding: 0px 15px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
&:hover {
|
||||
background-color: darken(@medium, 15%);
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.border-radius(5px, bottom);
|
||||
.box-shadow(0, 6px, 8px, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
#main {
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
background-color: @light-blue;
|
||||
border-top: 8px solid darken(@light-blue, 5%);
|
||||
|
||||
#intro {
|
||||
background-color: lighten(@light-blue, 25%);
|
||||
float: left;
|
||||
margin-top: -8px;
|
||||
margin-right: 5px;
|
||||
|
||||
height: 380px;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
font-family: 'Droid Serif', 'Georgia';
|
||||
width: 395px;
|
||||
padding: 45px 20px 23px 30px;
|
||||
border: 2px dashed darken(@light-blue, 10%);
|
||||
.box-shadow(1px, 0px, 6px, 0.5);
|
||||
border-bottom: 0;
|
||||
border-top: 0;
|
||||
#download { color: transparent; border: 0; float: left; display: inline-block; margin: 15px 0 15px -5px; }
|
||||
#download img { display: inline-block}
|
||||
#download-info {
|
||||
code {
|
||||
font-size: 13px;
|
||||
}
|
||||
color: @blue + #333; display: inline; float: left; margin: 36px 0 0 15px }
|
||||
}
|
||||
h2 {
|
||||
span {
|
||||
color: @medium;
|
||||
}
|
||||
color: @blue;
|
||||
margin: 20px 0;
|
||||
font-size: 24px;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
h3 {
|
||||
color: @blue;
|
||||
line-height: 1.4em;
|
||||
margin: 30px 0 15px 0;
|
||||
font-size: 1em;
|
||||
text-shadow: 0px 0px 0px @lightest;
|
||||
span { color: @medium }
|
||||
}
|
||||
#example {
|
||||
p {
|
||||
font-size: 18px;
|
||||
color: @blue;
|
||||
font-weight: bold;
|
||||
text-shadow: 0px 1px 1px @lightest;
|
||||
}
|
||||
pre {
|
||||
margin: 0;
|
||||
text-shadow: 0 -1px 1px @darkest;
|
||||
margin-top: 20px;
|
||||
background-color: desaturate(@darkest, 8%);
|
||||
border: 0;
|
||||
width: 450px;
|
||||
color: lighten(@lightest, 2%);
|
||||
background-repeat: repeat;
|
||||
padding: 15px;
|
||||
border: 1px dashed @lightest;
|
||||
line-height: 15px;
|
||||
.box-shadow(0, 0px, 15px, 0.5);
|
||||
.code;
|
||||
.border-radius(2px);
|
||||
code .attribute { color: hsl(40, 50%, 70%) }
|
||||
code .variable { color: hsl(120, 10%, 50%) }
|
||||
code .element { color: hsl(170, 20%, 50%) }
|
||||
|
||||
code .string, .regexp { color: hsl(75, 50%, 65%) }
|
||||
code .class { color: hsl(40, 40%, 60%); font-weight: normal }
|
||||
code .id { color: hsl(50, 40%, 60%); font-weight: normal }
|
||||
code .comment { color: rgba(255, 255, 255, 0.2) }
|
||||
code .number, .color { color: hsl(10, 40%, 50%) }
|
||||
code .class, code .mixin, .special { color: hsl(190, 20%, 50%) }
|
||||
#time { color: #aaa }
|
||||
}
|
||||
float: right;
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
margin-top: 15px;
|
||||
padding: 0;
|
||||
width: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.page {
|
||||
.content {
|
||||
width: 870px;
|
||||
padding: 45px;
|
||||
}
|
||||
margin: 0 auto;
|
||||
font-family: 'Georgia', serif;
|
||||
font-size: 18px;
|
||||
line-height: 26px;
|
||||
padding: 0 60px;
|
||||
code {
|
||||
font-size: 16px;
|
||||
}
|
||||
pre {
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 15px;
|
||||
margin: 15px 0;
|
||||
}
|
||||
h1 {
|
||||
text-align: left;
|
||||
font-size: 40px;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 35px;
|
||||
}
|
||||
p + h1 { margin-top: 60px }
|
||||
h2, h3 {
|
||||
margin: 30px 0 15px 0;
|
||||
}
|
||||
p + h2, pre + h2, code + h2 {
|
||||
border-top: 6px solid rgba(255, 255, 255, 0.1);
|
||||
padding-top: 30px;
|
||||
}
|
||||
h3 {
|
||||
margin: 15px 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#docs {
|
||||
@bg: lighten(@light-blue, 5%);
|
||||
border-top: 2px solid lighten(@bg, 5%);
|
||||
color: @blue;
|
||||
background-color: @light-blue;
|
||||
.box-shadow(0, -2px, 5px, 0.2);
|
||||
|
||||
h1 {
|
||||
font-family: 'Droid Serif', 'Georgia', serif;
|
||||
padding-top: 30px;
|
||||
padding-left: 45px;
|
||||
font-size: 44px;
|
||||
text-align: left;
|
||||
margin: 30px 0 !important;
|
||||
text-shadow: 0px 1px 1px @lightest;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
clear: both;
|
||||
border-color: transparent;
|
||||
background-color: lighten(@light-blue, 25%);
|
||||
.box-shadow(0, 5px, 5px, 0.4);
|
||||
}
|
||||
pre {
|
||||
@background: lighten(@bg, 30%);
|
||||
color: lighten(@blue, 10%);
|
||||
background-color: @background;
|
||||
border-color: lighten(@light-blue, 25%);
|
||||
border-width: 2px;
|
||||
code .attribute { color: hsl(40, 50%, 30%) }
|
||||
code .variable { color: hsl(120, 10%, 30%) }
|
||||
code .element { color: hsl(170, 20%, 30%) }
|
||||
|
||||
code .string, .regexp { color: hsl(75, 50%, 35%) }
|
||||
code .class { color: hsl(40, 40%, 30%); font-weight: normal }
|
||||
code .id { color: hsl(50, 40%, 30%); font-weight: normal }
|
||||
code .comment { color: rgba(0, 0, 0, 0.4) }
|
||||
code .number, .color { color: hsl(10, 40%, 30%) }
|
||||
code .class, code .mixin, .special { color: hsl(190, 20%, 30%) }
|
||||
}
|
||||
pre code { font-size: 15px }
|
||||
p + h2, pre + h2, code + h2 { border-top-color: rgba(0, 0, 0, 0.1) }
|
||||
}
|
||||
|
||||
td {
|
||||
padding-right: 30px;
|
||||
}
|
||||
#synopsis {
|
||||
.box-shadow(0, 5px, 5px, 0.2);
|
||||
}
|
||||
#synopsis, #about {
|
||||
h2 {
|
||||
font-size: 30px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
h1 + h2 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
h3 { font-size: 22px }
|
||||
|
||||
.code-example {
|
||||
border-spacing: 0;
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 0;
|
||||
pre { border: 0; margin: 0 }
|
||||
td {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
background-color: desaturate(darken(@darkest, 5%), 20%);
|
||||
vertical-align: top;
|
||||
padding: 0;
|
||||
}
|
||||
tr { padding: 0 }
|
||||
}
|
||||
.css-output {
|
||||
td {
|
||||
border-left: 0;
|
||||
}
|
||||
}
|
||||
.less-example {
|
||||
//border-right: 1px dotted rgba(255, 255, 255, 0.5) !important;
|
||||
}
|
||||
.css-output, .less-example {
|
||||
width: 390px;
|
||||
}
|
||||
pre {
|
||||
padding: 20px;
|
||||
line-height: 20px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
#about, #synopsis, #guide {
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: @light-yellow;
|
||||
border-bottom: 1px dashed rgba(255, 255, 255, 0.2);
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dashed @light-yellow;
|
||||
}
|
||||
}
|
||||
@bg: desaturate(darken(@darkest, 5%), 20%);
|
||||
text-shadow: 0 -1px 1px lighten(@bg, 5%);
|
||||
color: @highlight;
|
||||
background-color: @bg;
|
||||
.content {
|
||||
background-color: desaturate(@darkest, 20%);
|
||||
clear: both;
|
||||
.box-shadow(0, 5px, 5px, 0.4);
|
||||
}
|
||||
h1, h2, h3 {
|
||||
color: @dark-yellow;
|
||||
}
|
||||
pre {
|
||||
code .attribute { color: hsl(40, 50%, 70%) }
|
||||
code .variable { color: hsl(120, 10%, 50%) }
|
||||
code .element { color: hsl(170, 20%, 50%) }
|
||||
|
||||
code .string, .regexp { color: hsl(75, 50%, 65%) }
|
||||
code .class { color: hsl(40, 40%, 60%); font-weight: normal }
|
||||
code .id { color: hsl(50, 40%, 60%); font-weight: normal }
|
||||
code .comment { color: rgba(255, 255, 255, 0.2) }
|
||||
code .number, .color { color: hsl(10, 40%, 50%) }
|
||||
code .class, code .mixin, .special { color: hsl(190, 20%, 50%) }
|
||||
background-color: @bg;
|
||||
border-color: darken(@light-yellow, 5%);
|
||||
}
|
||||
code {
|
||||
color: darken(@dark-yellow, 5%);
|
||||
.string, .regexp { color: desaturate(@light-blue, 15%) }
|
||||
.keyword { color: hsl(40, 40%, 60%); font-weight: normal }
|
||||
.comment { color: rgba(255, 255, 255, 0.2) }
|
||||
.number { color: lighten(@blue, 10%) }
|
||||
.class, .special { color: hsl(190, 20%, 50%) }
|
||||
}
|
||||
}
|
||||
#guide {
|
||||
background-color: @darkest;
|
||||
.content {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#about {
|
||||
background-color: @darkest !important;
|
||||
.content {
|
||||
background-color: desaturate(lighten(@darkest, 3%), 5%);
|
||||
}
|
||||
}
|
||||
#synopsis {
|
||||
background-color: desaturate(lighten(@darkest, 3%), 5%) !important;
|
||||
.content {
|
||||
background-color: desaturate(lighten(@darkest, 3%), 5%);
|
||||
}
|
||||
pre {}
|
||||
}
|
||||
#synopsis, #guide {
|
||||
.content {
|
||||
.box-shadow(0, 0px, 0px, 0.0);
|
||||
}
|
||||
}
|
||||
#about footer {
|
||||
margin-top: 30px;
|
||||
padding-top: 30px;
|
||||
border-top: 6px solid rgba(0, 0, 0, 0.1);
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
#copy { font-size: 12px }
|
||||
text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.02);
|
||||
}
|
||||
</textarea></form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
theme: "lesser-dark",
|
||||
lineNumbers : true,
|
||||
matchBrackets : true
|
||||
});
|
||||
</script>
|
||||
|
||||
<p><strong>MIME types defined:</strong> <code>text/x-less</code>, <code>text/css</code> (if not previously defined).</p>
|
||||
</article>
|
347
public/tinymce/plugins/codemirror/CodeMirror/mode/less/less.js
vendored
Normal file
347
public/tinymce/plugins/codemirror/CodeMirror/mode/less/less.js
vendored
Normal file
@ -0,0 +1,347 @@
|
||||
/*
|
||||
LESS mode - http://www.lesscss.org/
|
||||
Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
|
||||
Report bugs/issues here: https://github.com/marijnh/CodeMirror/issues
|
||||
GitHub: @peterkroon
|
||||
*/
|
||||
|
||||
CodeMirror.defineMode("less", function(config) {
|
||||
var indentUnit = config.indentUnit, type;
|
||||
function ret(style, tp) {type = tp; return style;}
|
||||
|
||||
var selectors = /(^\:root$|^\:nth\-child$|^\:nth\-last\-child$|^\:nth\-of\-type$|^\:nth\-last\-of\-type$|^\:first\-child$|^\:last\-child$|^\:first\-of\-type$|^\:last\-of\-type$|^\:only\-child$|^\:only\-of\-type$|^\:empty$|^\:link|^\:visited$|^\:active$|^\:hover$|^\:focus$|^\:target$|^\:lang$|^\:enabled^\:disabled$|^\:checked$|^\:first\-line$|^\:first\-letter$|^\:before$|^\:after$|^\:not$|^\:required$|^\:invalid$)/;
|
||||
|
||||
function tokenBase(stream, state) {
|
||||
var ch = stream.next();
|
||||
|
||||
if (ch == "@") {stream.eatWhile(/[\w\-]/); return ret("meta", stream.current());}
|
||||
else if (ch == "/" && stream.eat("*")) {
|
||||
state.tokenize = tokenCComment;
|
||||
return tokenCComment(stream, state);
|
||||
} else if (ch == "<" && stream.eat("!")) {
|
||||
state.tokenize = tokenSGMLComment;
|
||||
return tokenSGMLComment(stream, state);
|
||||
} else if (ch == "=") ret(null, "compare");
|
||||
else if (ch == "|" && stream.eat("=")) return ret(null, "compare");
|
||||
else if (ch == "\"" || ch == "'") {
|
||||
state.tokenize = tokenString(ch);
|
||||
return state.tokenize(stream, state);
|
||||
} else if (ch == "/") { // e.g.: .png will not be parsed as a class
|
||||
if(stream.eat("/")){
|
||||
state.tokenize = tokenSComment;
|
||||
return tokenSComment(stream, state);
|
||||
} else {
|
||||
if(type == "string" || type == "(") return ret("string", "string");
|
||||
if(state.stack[state.stack.length-1] !== undefined) return ret(null, ch);
|
||||
stream.eatWhile(/[\a-zA-Z0-9\-_.\s]/);
|
||||
if( /\/|\)|#/.test(stream.peek() || (stream.eatSpace() && stream.peek() === ")")) || stream.eol() )return ret("string", "string"); // let url(/images/logo.png) without quotes return as string
|
||||
}
|
||||
} else if (ch == "!") {
|
||||
stream.match(/^\s*\w*/);
|
||||
return ret("keyword", "important");
|
||||
} else if (/\d/.test(ch)) {
|
||||
stream.eatWhile(/[\w.%]/);
|
||||
return ret("number", "unit");
|
||||
} else if (/[,+<>*\/]/.test(ch)) {
|
||||
if(stream.peek() == "=" || type == "a")return ret("string", "string");
|
||||
if(ch === ",")return ret(null, ch);
|
||||
return ret(null, "select-op");
|
||||
} else if (/[;{}:\[\]()~\|]/.test(ch)) {
|
||||
if(ch == ":"){
|
||||
stream.eatWhile(/[a-z\\\-]/);
|
||||
if( selectors.test(stream.current()) ){
|
||||
return ret("tag", "tag");
|
||||
} else if(stream.peek() == ":"){//::-webkit-search-decoration
|
||||
stream.next();
|
||||
stream.eatWhile(/[a-z\\\-]/);
|
||||
if(stream.current().match(/\:\:\-(o|ms|moz|webkit)\-/))return ret("string", "string");
|
||||
if( selectors.test(stream.current().substring(1)) )return ret("tag", "tag");
|
||||
return ret(null, ch);
|
||||
} else {
|
||||
return ret(null, ch);
|
||||
}
|
||||
} else if(ch == "~"){
|
||||
if(type == "r")return ret("string", "string");
|
||||
} else {
|
||||
return ret(null, ch);
|
||||
}
|
||||
} else if (ch == ".") {
|
||||
if(type == "(")return ret("string", "string"); // allow url(../image.png)
|
||||
stream.eatWhile(/[\a-zA-Z0-9\-_]/);
|
||||
if(stream.peek() === " ")stream.eatSpace();
|
||||
if(stream.peek() === ")" || type === ":")return ret("number", "unit");//rgba(0,0,0,.25);
|
||||
else if(stream.current().length >1){
|
||||
if(state.stack[state.stack.length-1] === "rule" && !stream.match(/^[{,+(]/, false)) return ret("number", "unit");
|
||||
}
|
||||
return ret("tag", "tag");
|
||||
} else if (ch == "#") {
|
||||
//we don't eat white-space, we want the hex color and or id only
|
||||
stream.eatWhile(/[A-Za-z0-9]/);
|
||||
//check if there is a proper hex color length e.g. #eee || #eeeEEE
|
||||
if(stream.current().length == 4 || stream.current().length == 7){
|
||||
if(stream.current().match(/[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}/,false) != null){//is there a valid hex color value present in the current stream
|
||||
//when not a valid hex value, parse as id
|
||||
if(stream.current().substring(1) != stream.current().match(/[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}/,false))return ret("atom", "tag");
|
||||
//eat white-space
|
||||
stream.eatSpace();
|
||||
//when hex value declaration doesn't end with [;,] but is does with a slash/cc comment treat it as an id, just like the other hex values that don't end with[;,]
|
||||
if( /[\/<>.(){!$%^&*_\-\\?=+\|#'~`]/.test(stream.peek()) ){
|
||||
if(type === "select-op")return ret("number", "unit"); else return ret("atom", "tag");
|
||||
}
|
||||
//#time { color: #aaa }
|
||||
else if(stream.peek() == "}" )return ret("number", "unit");
|
||||
//we have a valid hex color value, parse as id whenever an element/class is defined after the hex(id) value e.g. #eee aaa || #eee .aaa
|
||||
else if( /[a-zA-Z\\]/.test(stream.peek()) )return ret("atom", "tag");
|
||||
//when a hex value is on the end of a line, parse as id
|
||||
else if(stream.eol())return ret("atom", "tag");
|
||||
//default
|
||||
else return ret("number", "unit");
|
||||
} else {//when not a valid hexvalue in the current stream e.g. #footer
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
return ret("atom", stream.current());
|
||||
}
|
||||
} else {//when not a valid hexvalue length
|
||||
stream.eatWhile(/[\w\\\-]/);
|
||||
if(state.stack[state.stack.length-1] === "rule")return ret("atom", stream.current());return ret("atom", stream.current());
|
||||
return ret("atom", "tag");
|
||||
}
|
||||
} else if (ch == "&") {
|
||||
stream.eatWhile(/[\w\-]/);
|
||||
return ret(null, ch);
|
||||
} else {
|
||||
stream.eatWhile(/[\w\\\-_%.{]/);
|
||||
if(stream.current().match(/\\/) !== null){
|
||||
if(stream.current().charAt(stream.current().length-1) === "\\"){
|
||||
stream.eat(/\'|\"|\)|\(/);
|
||||
while(stream.eatWhile(/[\w\\\-_%.{]/)){
|
||||
stream.eat(/\'|\"|\)|\(/);
|
||||
}
|
||||
return ret("string", stream.current());
|
||||
}
|
||||
} //else if(type === "tag")return ret("tag", "tag");
|
||||
else if(type == "string"){
|
||||
if(state.stack[state.stack.length-1] === "{" && stream.peek() === ":")return ret("variable", "variable");
|
||||
if(stream.peek() === "/")stream.eatWhile(/[\w\\\-_%.{:\/]/);
|
||||
return ret(type, stream.current());
|
||||
} else if(stream.current().match(/(^http$|^https$)/) != null){
|
||||
stream.eatWhile(/[\w\\\-_%.{:\/]/);
|
||||
if(stream.peek() === "/")stream.eatWhile(/[\w\\\-_%.{:\/]/);
|
||||
return ret("string", "string");
|
||||
} else if(stream.peek() == "<" || stream.peek() == ">" || stream.peek() == "+"){
|
||||
if(type === "(" && (stream.current() === "n" || stream.current() === "-n"))return ret("string", stream.current());
|
||||
return ret("tag", "tag");
|
||||
} else if( /\(/.test(stream.peek()) ){
|
||||
if(stream.current() === "when")return ret("variable","variable");
|
||||
else if(state.stack[state.stack.length-1] === "@media" && stream.current() === "and")return ret("variable",stream.current());
|
||||
return ret(null, ch);
|
||||
} else if (stream.peek() == "/" && state.stack[state.stack.length-1] !== undefined){ // url(dir/center/image.png)
|
||||
if(stream.peek() === "/")stream.eatWhile(/[\w\\\-_%.{:\/]/);
|
||||
return ret("string", stream.current());
|
||||
} else if( stream.current().match(/\-\d|\-.\d/) ){ // match e.g.: -5px -0.4 etc... only colorize the minus sign
|
||||
//commment out these 2 comment if you want the minus sign to be parsed as null -500px
|
||||
//stream.backUp(stream.current().length-1);
|
||||
//return ret(null, ch);
|
||||
return ret("number", "unit");
|
||||
} else if( /\/|[\s\)]/.test(stream.peek() || stream.eol() || (stream.eatSpace() && stream.peek() == "/")) && stream.current().indexOf(".") !== -1){
|
||||
if(stream.current().substring(stream.current().length-1,stream.current().length) == "{"){
|
||||
stream.backUp(1);
|
||||
return ret("tag", "tag");
|
||||
}//end if
|
||||
stream.eatSpace();
|
||||
if( /[{<>.a-zA-Z\/]/.test(stream.peek()) || stream.eol() )return ret("tag", "tag"); // e.g. button.icon-plus
|
||||
return ret("string", "string"); // let url(/images/logo.png) without quotes return as string
|
||||
} else if( stream.eol() || stream.peek() == "[" || stream.peek() == "#" || type == "tag" ){
|
||||
|
||||
if(stream.current().substring(stream.current().length-1,stream.current().length) == "{")stream.backUp(1);
|
||||
else if(state.stack[state.stack.length-1] === "border-color" || state.stack[state.stack.length-1] === "background-position" || state.stack[state.stack.length-1] === "font-family")return ret(null, stream.current());
|
||||
else if(type === "tag")return ret("tag", "tag");
|
||||
else if((type === ":" || type === "unit") && state.stack[state.stack.length-1] === "rule")return ret(null, stream.current());
|
||||
else if(state.stack[state.stack.length-1] === "rule" && type === "tag")return ret("string", stream.current());
|
||||
else if(state.stack[state.stack.length-1] === ";" && type === ":")return ret(null, stream.current());
|
||||
//else if(state.stack[state.stack.length-1] === ";" || type === "")return ret("variable", stream.current());
|
||||
else if(stream.peek() === "#" && type !== undefined && type.match(/\+|,|tag|select\-op|}|{|;/g) === null)return ret("string", stream.current());
|
||||
else if(type === "variable")return ret(null, stream.current());
|
||||
else if(state.stack[state.stack.length-1] === "{" && type === "comment")return ret("variable", stream.current());
|
||||
else if(state.stack.length === 0 && (type === ";" || type === "comment"))return ret("tag", stream.current());
|
||||
else if((state.stack[state.stack.length-1] === "{" || type === ";") && state.stack[state.stack.length-1] !== "@media{")return ret("variable", stream.current());
|
||||
else if(state.stack[state.stack.length-2] === "{" && state.stack[state.stack.length-1] === ";")return ret("variable", stream.current());
|
||||
|
||||
return ret("tag", "tag");
|
||||
} else if(type == "compare" || type == "a" || type == "("){
|
||||
return ret("string", "string");
|
||||
} else if(type == "|" || stream.current() == "-" || type == "["){
|
||||
if (type == "|" && stream.match(/^[\]=~]/, false)) return ret("number", stream.current());
|
||||
else if(type == "|" )return ret("tag", "tag");
|
||||
else if(type == "["){
|
||||
stream.eatWhile(/\w\-/);
|
||||
return ret("number", stream.current());
|
||||
}
|
||||
return ret(null, ch);
|
||||
} else if((stream.peek() == ":") || ( stream.eatSpace() && stream.peek() == ":")) {
|
||||
stream.next();
|
||||
var t_v = stream.peek() == ":" ? true : false;
|
||||
if(!t_v){
|
||||
var old_pos = stream.pos;
|
||||
var sc = stream.current().length;
|
||||
stream.eatWhile(/[a-z\\\-]/);
|
||||
var new_pos = stream.pos;
|
||||
if(stream.current().substring(sc-1).match(selectors) != null){
|
||||
stream.backUp(new_pos-(old_pos-1));
|
||||
return ret("tag", "tag");
|
||||
} else stream.backUp(new_pos-(old_pos-1));
|
||||
} else {
|
||||
stream.backUp(1);
|
||||
}
|
||||
if(t_v)return ret("tag", "tag"); else return ret("variable", "variable");
|
||||
} else if(state.stack[state.stack.length-1] === "font-family" || state.stack[state.stack.length-1] === "background-position" || state.stack[state.stack.length-1] === "border-color"){
|
||||
return ret(null, null);
|
||||
} else {
|
||||
|
||||
if(state.stack[state.stack.length-1] === null && type === ":")return ret(null, stream.current());
|
||||
|
||||
//else if((type === ")" && state.stack[state.stack.length-1] === "rule") || (state.stack[state.stack.length-2] === "{" && state.stack[state.stack.length-1] === "rule" && type === "variable"))return ret(null, stream.current());
|
||||
|
||||
else if (/\^|\$/.test(stream.current()) && stream.match(/^[~=]/, false)) return ret("string", "string");//att^=val
|
||||
|
||||
else if(type === "unit" && state.stack[state.stack.length-1] === "rule")return ret(null, "unit");
|
||||
else if(type === "unit" && state.stack[state.stack.length-1] === ";")return ret(null, "unit");
|
||||
else if(type === ")" && state.stack[state.stack.length-1] === "rule")return ret(null, "unit");
|
||||
else if(type && type.match("@") !== null && state.stack[state.stack.length-1] === "rule")return ret(null, "unit");
|
||||
//else if(type === "unit" && state.stack[state.stack.length-1] === "rule")return ret(null, stream.current());
|
||||
|
||||
else if((type === ";" || type === "}" || type === ",") && state.stack[state.stack.length-1] === ";")return ret("tag", stream.current());
|
||||
else if((type === ";" && stream.peek() !== undefined && !stream.match(/^[{\.]/, false)) ||
|
||||
(type === ";" && stream.eatSpace() && !stream.match(/^[{\.]/))) return ret("variable", stream.current());
|
||||
else if((type === "@media" && state.stack[state.stack.length-1] === "@media") || type === "@namespace")return ret("tag", stream.current());
|
||||
|
||||
else if(type === "{" && state.stack[state.stack.length-1] === ";" && stream.peek() === "{")return ret("tag", "tag");
|
||||
else if((type === "{" || type === ":") && state.stack[state.stack.length-1] === ";")return ret(null, stream.current());
|
||||
else if((state.stack[state.stack.length-1] === "{" && stream.eatSpace() && !stream.match(/^[\.#]/)) || type === "select-op" || (state.stack[state.stack.length-1] === "rule" && type === ",") )return ret("tag", "tag");
|
||||
else if(type === "variable" && state.stack[state.stack.length-1] === "rule")return ret("tag", "tag");
|
||||
else if((stream.eatSpace() && stream.peek() === "{") || stream.eol() || stream.peek() === "{")return ret("tag", "tag");
|
||||
//this one messes up indentation
|
||||
//else if((type === "}" && stream.peek() !== ":") || (type === "}" && stream.eatSpace() && stream.peek() !== ":"))return(type, "tag");
|
||||
|
||||
else if(type === ")" && (stream.current() == "and" || stream.current() == "and "))return ret("variable", "variable");
|
||||
else if(type === ")" && (stream.current() == "when" || stream.current() == "when "))return ret("variable", "variable");
|
||||
else if(type === ")" || type === "comment" || type === "{")return ret("tag", "tag");
|
||||
else if(stream.sol())return ret("tag", "tag");
|
||||
else if((stream.eatSpace() && stream.peek() === "#") || stream.peek() === "#")return ret("tag", "tag");
|
||||
else if(state.stack.length === 0)return ret("tag", "tag");
|
||||
else if(type === ";" && stream.peek() !== undefined && stream.match(/^[\.|#]/g)) return ret("tag", "tag");
|
||||
|
||||
else if(type === ":"){stream.eatSpace();return ret(null, stream.current());}
|
||||
|
||||
else if(stream.current() === "and " || stream.current() === "and")return ret("variable", stream.current());
|
||||
else if(type === ";" && state.stack[state.stack.length-1] === "{")return ret("variable", stream.current());
|
||||
|
||||
else if(state.stack[state.stack.length-1] === "rule")return ret(null, stream.current());
|
||||
|
||||
return ret("tag", stream.current());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function tokenSComment(stream, state) { // SComment = Slash comment
|
||||
stream.skipToEnd();
|
||||
state.tokenize = tokenBase;
|
||||
return ret("comment", "comment");
|
||||
}
|
||||
|
||||
function tokenCComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while ((ch = stream.next()) != null) {
|
||||
if (maybeEnd && ch == "/") {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
maybeEnd = (ch == "*");
|
||||
}
|
||||
return ret("comment", "comment");
|
||||
}
|
||||
|
||||
function tokenSGMLComment(stream, state) {
|
||||
var dashes = 0, ch;
|
||||
while ((ch = stream.next()) != null) {
|
||||
if (dashes >= 2 && ch == ">") {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
dashes = (ch == "-") ? dashes + 1 : 0;
|
||||
}
|
||||
return ret("comment", "comment");
|
||||
}
|
||||
|
||||
function tokenString(quote) {
|
||||
return function(stream, state) {
|
||||
var escaped = false, ch;
|
||||
while ((ch = stream.next()) != null) {
|
||||
if (ch == quote && !escaped)
|
||||
break;
|
||||
escaped = !escaped && ch == "\\";
|
||||
}
|
||||
if (!escaped) state.tokenize = tokenBase;
|
||||
return ret("string", "string");
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
startState: function(base) {
|
||||
return {tokenize: tokenBase,
|
||||
baseIndent: base || 0,
|
||||
stack: []};
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
if (stream.eatSpace()) return null;
|
||||
var style = state.tokenize(stream, state);
|
||||
|
||||
var context = state.stack[state.stack.length-1];
|
||||
if (type == "hash" && context == "rule") style = "atom";
|
||||
else if (style == "variable") {
|
||||
if (context == "rule") style = null; //"tag"
|
||||
else if (!context || context == "@media{") {
|
||||
style = stream.current() == "when" ? "variable" :
|
||||
/[\s,|\s\)|\s]/.test(stream.peek()) ? "tag" : type;
|
||||
}
|
||||
}
|
||||
|
||||
if (context == "rule" && /^[\{\};]$/.test(type))
|
||||
state.stack.pop();
|
||||
if (type == "{") {
|
||||
if (context == "@media") state.stack[state.stack.length-1] = "@media{";
|
||||
else state.stack.push("{");
|
||||
}
|
||||
else if (type == "}") state.stack.pop();
|
||||
else if (type == "@media") state.stack.push("@media");
|
||||
else if (stream.current() === "font-family") state.stack[state.stack.length-1] = "font-family";
|
||||
else if (stream.current() === "background-position") state.stack[state.stack.length-1] = "background-position";
|
||||
else if (stream.current() === "border-color") state.stack[state.stack.length-1] = "border-color";
|
||||
else if (context == "{" && type != "comment" && type !== "tag") state.stack.push("rule");
|
||||
else if (stream.peek() === ":" && stream.current().match(/@|#/) === null) style = type;
|
||||
if(type === ";" && (state.stack[state.stack.length-1] == "font-family" || state.stack[state.stack.length-1] == "background-position" || state.stack[state.stack.length-1] == "border-color"))state.stack[state.stack.length-1] = stream.current();
|
||||
else if(type === "tag" && stream.peek() === ")" && stream.current().match(/\:/) === null){type = null; style = null;}
|
||||
// ????
|
||||
else if((type === "variable" && stream.peek() === ")") || (type === "variable" && stream.eatSpace() && stream.peek() === ")"))return ret(null,stream.current());
|
||||
return style;
|
||||
},
|
||||
|
||||
indent: function(state, textAfter) {
|
||||
var n = state.stack.length;
|
||||
if (/^\}/.test(textAfter))
|
||||
n -= state.stack[state.stack.length-1] === "rule" ? 2 : 1;
|
||||
else if (state.stack[state.stack.length-2] === "{")
|
||||
n -= state.stack[state.stack.length-1] === "rule" ? 1 : 0;
|
||||
return state.baseIndent + n * indentUnit;
|
||||
},
|
||||
|
||||
electricChars: "}",
|
||||
blockCommentStart: "/*",
|
||||
blockCommentEnd: "*/",
|
||||
lineComment: "//"
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-less", "less");
|
||||
if (!CodeMirror.mimeModes.hasOwnProperty("text/css"))
|
||||
CodeMirror.defineMIME("text/css", "less");
|
Reference in New Issue
Block a user