diff --git a/doc/site/style.css b/doc/site/style.css
index 4e79b5fb..1167340a 100644
--- a/doc/site/style.css
+++ b/doc/site/style.css
@@ -497,11 +497,13 @@ img {
.rotating-logo {
-webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
-webkit-transition: all 0.5s ease-out;
transition: all 0.5s ease-out;
}
.rotating-logo:hover {
-webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
-webkit-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}
\ No newline at end of file
diff --git a/index.html b/index.html
index f2a26c2c..da795d5f 100644
--- a/index.html
+++ b/index.html
@@ -780,9 +780,9 @@ if (match) {
Application Craft
-
- Wolf CMS
+
+ StackEdit
@@ -841,7 +841,7 @@ if (match) {
+ left: 19px; top: 6px;width: 60px;height: 60px;background-size: 60px;position: relative;">
Inkling Habitat
@@ -1037,7 +1037,7 @@ if (match) {
iKnode
- sT
SourceTalk
@@ -1075,15 +1075,15 @@ if (match) {
ogEditor
- allong.es
+ allong.es
Try allong.es
- NapCat
+ NapCat
NapCat
- CorsLit
+ CorsLit
CorsLit
@@ -1092,9 +1092,26 @@ if (match) {
OJjs
- Codechat
+ Codechat
Codechat
+
+
+ Wolf CMS
+
+
+
+ Scriptie-Talkie
+
+
+ md
+ browserify-markdown-editor
+
+
+
+ BakeMyCss
+
Sky Edit
diff --git a/lib/ace/mode/csharp.js b/lib/ace/mode/csharp.js
index 66644b45..0ef0101c 100644
--- a/lib/ace/mode/csharp.js
+++ b/lib/ace/mode/csharp.js
@@ -7,7 +7,7 @@ var Tokenizer = require("../tokenizer").Tokenizer;
var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules;
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
-var CStyleFoldMode = require("./folding/cstyle").FoldMode;
+var CStyleFoldMode = require("./folding/csharp").FoldMode;
var Mode = function() {
var highlighter = new CSharpHighlightRules();
diff --git a/lib/ace/mode/csharp_highlight_rules.js b/lib/ace/mode/csharp_highlight_rules.js
index c18be8ea..89cbc2d5 100644
--- a/lib/ace/mode/csharp_highlight_rules.js
+++ b/lib/ace/mode/csharp_highlight_rules.js
@@ -56,6 +56,9 @@ var CSharpHighlightRules = function() {
}, {
token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
+ }, {
+ token : "keyword",
+ regex : "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"
}, {
token : "punctuation.operator",
regex : "\\?|\\:|\\,|\\;|\\."
diff --git a/lib/ace/mode/folding/csharp.js b/lib/ace/mode/folding/csharp.js
new file mode 100644
index 00000000..c4507534
--- /dev/null
+++ b/lib/ace/mode/folding/csharp.js
@@ -0,0 +1,138 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+"use strict";
+
+var oop = require("../../lib/oop");
+var Range = require("../../range").Range;
+var CFoldMode = require("./cstyle").FoldMode;
+
+var FoldMode = exports.FoldMode = function(commentRegex) {
+ if (commentRegex) {
+ this.foldingStartMarker = new RegExp(
+ this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
+ );
+ this.foldingStopMarker = new RegExp(
+ this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
+ );
+ }
+};
+oop.inherits(FoldMode, CFoldMode);
+
+(function() {
+ this.usingRe = /^\s*using \S/;
+
+ this.getFoldWidgetRangeBase = this.getFoldWidgetRange;
+ this.getFoldWidgetBase = this.getFoldWidget;
+
+ this.getFoldWidget = function(session, foldStyle, row) {
+ var fw = this.getFoldWidgetBase(session, foldStyle, row);
+ if (!fw) {
+ var line = session.getLine(row);
+ if (/^\s*#region\b/.test(line))
+ return "start";
+ var usingRe = this.usingRe;
+ if (usingRe.test(line)) {
+ var prev = session.getLine(row - 1);
+ var next = session.getLine(row + 1);
+ if (!usingRe.test(prev) && usingRe.test(next))
+ return "start"
+ }
+ }
+ return fw;
+ };
+
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
+ var range = this.getFoldWidgetRangeBase(session, foldStyle, row);
+ if (range)
+ return range;
+
+ var line = session.getLine(row);
+ if (this.usingRe.test(line))
+ return this.getUsingStatementBlock(session, line, row);
+
+ if (/^\s*#region\b/.test(line))
+ return this.getRegionBlock(session, line, row);
+ };
+
+ this.getUsingStatementBlock = function(session, line, row) {
+ var startColumn = line.match(this.usingRe)[0].length - 1;
+ var maxRow = session.getLength();
+ var startRow = row;
+ var endRow = row;
+
+ while (++row < maxRow) {
+ line = session.getLine(row);
+ if (/^\s*$/.test(line))
+ continue;
+ if (!this.usingRe.test(line))
+ break;
+
+ endRow = row;
+ }
+
+ if (endRow > startRow) {
+ var endColumn = session.getLine(endRow).length;
+ return new Range(startRow, startColumn, endRow, endColumn);
+ }
+ };
+
+ this.getRegionBlock = function(session, line, row) {
+ var startColumn = line.search(/\s*$/);
+ var maxRow = session.getLength();
+ var startRow = row;
+
+ var re = /^\s*#(end)?region\b/
+ var depth = 1
+ while (++row < maxRow) {
+ line = session.getLine(row);
+ var m = re.exec(line);
+ if (!m)
+ continue;
+ if (m[1])
+ depth--;
+ else
+ depth++;
+
+ if (!depth)
+ break;
+ }
+
+ var endRow = row;
+ if (endRow > startRow) {
+ var endColumn = line.search(/\S/);
+ return new Range(startRow, startColumn, endRow, endColumn);
+ }
+ };
+
+}).call(FoldMode.prototype);
+
+});
diff --git a/lib/ace/mode/folding/ini.js b/lib/ace/mode/folding/ini.js
new file mode 100644
index 00000000..ef4eaa0b
--- /dev/null
+++ b/lib/ace/mode/folding/ini.js
@@ -0,0 +1,80 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+"use strict";
+
+var oop = require("../../lib/oop");
+var Range = require("../../range").Range;
+var BaseFoldMode = require("./fold_mode").FoldMode;
+
+var FoldMode = exports.FoldMode = function() {
+};
+oop.inherits(FoldMode, BaseFoldMode);
+
+(function() {
+
+ this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/;
+
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
+ var re = this.foldingStartMarker;
+ var line = session.getLine(row);
+
+ var m = line.match(re);
+
+ if (!m) return;
+
+ var startName = m[1] + ".";
+
+ var startColumn = line.length;
+ var maxRow = session.getLength();
+ var startRow = row;
+ var endRow = row;
+
+ while (++row < maxRow) {
+ line = session.getLine(row);
+ if (/^\s*$/.test(line))
+ continue;
+ m = line.match(re);
+ if (m && m[1].lastIndexOf(startName, 0) !== 0)
+ break;
+
+ endRow = row;
+ }
+
+ if (endRow > startRow) {
+ var endColumn = session.getLine(endRow).length;
+ return new Range(startRow, startColumn, endRow, endColumn);
+ }
+ };
+
+}).call(FoldMode.prototype);
+
+});
diff --git a/lib/ace/mode/ini.js b/lib/ace/mode/ini.js
index cd21990a..8e660061 100644
--- a/lib/ace/mode/ini.js
+++ b/lib/ace/mode/ini.js
@@ -26,17 +26,8 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- *
- * Contributor(s):
- *
- *
- *
* ***** END LICENSE BLOCK ***** */
-/*
- THIS FILE WAS AUTOGENERATED BY mode.tmpl.js
-*/
-
define(function(require, exports, module) {
"use strict";
@@ -45,7 +36,7 @@ var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer;
var IniHighlightRules = require("./ini_highlight_rules").IniHighlightRules;
// TODO: pick appropriate fold mode
-var FoldMode = require("./folding/cstyle").FoldMode;
+var FoldMode = require("./folding/ini").FoldMode;
var Mode = function() {
var highlighter = new IniHighlightRules();
diff --git a/lib/ace/mode/ini_highlight_rules.js b/lib/ace/mode/ini_highlight_rules.js
index b4c152a4..8ce3d949 100644
--- a/lib/ace/mode/ini_highlight_rules.js
+++ b/lib/ace/mode/ini_highlight_rules.js
@@ -29,10 +29,6 @@
* ***** END LICENSE BLOCK ***** */
/* This file was autogenerated from tool\tm bundles\ini.tmbundle\Syntaxes\Ini.plist (uuid: ) */
-/****************************************************************************************
- * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. *
- * fileTypes *
- ****************************************************************************************/
define(function(require, exports, module) {
"use strict";
@@ -40,56 +36,74 @@ define(function(require, exports, module) {
var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var IniHighlightRules = function() {
- // regexp must not have capturing parentheses. Use (?:) instead.
- // regexps are ordered -> the first match is used
+var escapeRe = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})";
- this.$rules = { start:
- [ { token: 'punctuation.definition.comment.ini',
- regex: '#.*',
- push_:
- [ { token: 'comment.line.number-sign.ini',
- regex: '$',
- next: 'pop' },
- { defaultToken: 'comment.line.number-sign.ini' } ] },
- { token: 'punctuation.definition.comment.ini',
- regex: ';.*',
- push_:
- [ { token: 'comment.line.semicolon.ini', regex: '$', next: 'pop' },
- { defaultToken: 'comment.line.semicolon.ini' } ] },
- { token:
- [ 'keyword.other.definition.ini',
- 'text',
- 'punctuation.separator.key-value.ini' ],
- regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' },
- { token:
- [ 'punctuation.definition.entity.ini',
- 'constant.section.group-title.ini',
- 'punctuation.definition.entity.ini' ],
- regex: '^(\\[)(.*?)(\\])' },
- { token: 'punctuation.definition.string.begin.ini',
- regex: '\'',
- push:
- [ { token: 'punctuation.definition.string.end.ini',
- regex: '\'',
- next: 'pop' },
- { token: 'constant.character.escape.ini', regex: '\\\\.' },
- { defaultToken: 'string.quoted.single.ini' } ] },
- { token: 'punctuation.definition.string.begin.ini',
- regex: '"',
- push:
- [ { token: 'punctuation.definition.string.end.ini',
+var IniHighlightRules = function() {
+ this.$rules = {
+ start: [{
+ token: 'punctuation.definition.comment.ini',
+ regex: '#.*',
+ push_: [{
+ token: 'comment.line.number-sign.ini',
+ regex: '$|^',
+ next: 'pop'
+ }, {
+ defaultToken: 'comment.line.number-sign.ini'
+ }]
+ }, {
+ token: 'punctuation.definition.comment.ini',
+ regex: ';.*',
+ push_: [{
+ token: 'comment.line.semicolon.ini',
+ regex: '$|^',
+ next: 'pop'
+ }, {
+ defaultToken: 'comment.line.semicolon.ini'
+ }]
+ }, {
+ token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'],
+ regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)'
+ }, {
+ token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'],
+ regex: '^(\\[)(.*?)(\\])'
+ }, {
+ token: 'punctuation.definition.string.begin.ini',
+ regex: "'",
+ push: [{
+ token: 'punctuation.definition.string.end.ini',
+ regex: "'",
+ next: 'pop'
+ }, {
+ token: "constant.language.escape",
+ regex: escapeRe
+ }, {
+ defaultToken: 'string.quoted.single.ini'
+ }]
+ }, {
+ token: 'punctuation.definition.string.begin.ini',
+ regex: '"',
+ push: [{
+ token: "constant.language.escape",
+ regex: escapeRe
+ }, {
+ token: 'punctuation.definition.string.end.ini',
regex: '"',
- next: 'pop' },
- { defaultToken: 'string.quoted.double.ini' } ] } ] }
-
+ next: 'pop'
+ }, {
+ defaultToken: 'string.quoted.double.ini'
+ }]
+ }]
+ };
+
this.normalizeRules();
};
-IniHighlightRules.metaData = { fileTypes: [ 'ini', 'conf' ],
- keyEquivalent: '^~I',
- name: 'Ini',
- scopeName: 'source.ini' }
+IniHighlightRules.metaData = {
+ fileTypes: ['ini', 'conf'],
+ keyEquivalent: '^~I',
+ name: 'Ini',
+ scopeName: 'source.ini'
+};
oop.inherits(IniHighlightRules, TextHighlightRules);
diff --git a/lib/ace/mode/toml.js b/lib/ace/mode/toml.js
index bd47182f..dab36136 100644
--- a/lib/ace/mode/toml.js
+++ b/lib/ace/mode/toml.js
@@ -40,8 +40,7 @@ var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer;
var TomlHighlightRules = require("./toml_highlight_rules").TomlHighlightRules;
-// TODO: pick appropriate fold mode
-var FoldMode = require("./folding/cstyle").FoldMode;
+var FoldMode = require("./folding/ini").FoldMode;
var Mode = function() {
var highlighter = new TomlHighlightRules();
diff --git a/lib/ace/mouse/default_gutter_handler.js b/lib/ace/mouse/default_gutter_handler.js
index 9437d2e4..1ad8119c 100644
--- a/lib/ace/mouse/default_gutter_handler.js
+++ b/lib/ace/mouse/default_gutter_handler.js
@@ -113,11 +113,12 @@ function GutterHandler(mouseHandler) {
var rect = editor.renderer.$gutter.getBoundingClientRect();
tooltip.style.left = e.x + 15 + "px";
if (e.y + 3 * editor.renderer.lineHeight + 15 < rect.bottom) {
- tooltip.style.bottom = "";
+ tooltip.style.bottom = "";
tooltip.style.top = e.y + 15 + "px";
} else {
- tooltip.style.top = "";
- tooltip.style.bottom = rect.bottom - e.y + 5 + "px";
+ tooltip.style.top = "";
+ var innerHeight = window.innerHeight || document.documentElement.clientHeight;
+ tooltip.style.bottom = innerHeight - e.y + 5 + "px";
}
}