From 561a4265163eee7bdcd7ce5a7cdb57d22876c51b Mon Sep 17 00:00:00 2001 From: Choonster Date: Fri, 15 Jun 2012 03:38:50 +1000 Subject: [PATCH 1/5] Added LuaPage mode/highlighter to Ace. Added LuaPage mode and example doc to kitchen sink demo. --- demo/kitchen-sink/demo.js | 3 ++ demo/kitchen-sink/docs/luapage.lp | 67 +++++++++++++++++++++++++ lib/ace/mode/luapage.js | 22 ++++++++ lib/ace/mode/luapage_highlight_rules.js | 40 +++++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 demo/kitchen-sink/docs/luapage.lp create mode 100644 lib/ace/mode/luapage.js create mode 100644 lib/ace/mode/luapage_highlight_rules.js diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index e73c796b..8660d7d5 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -109,6 +109,8 @@ var modesByName = { less: ["LESS" , "less"], liquid: ["Liquid" , "liquid"], lua: ["Lua" , "lua"], + luapage: ["LuaPage" , "lp"], + // LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua documentation: http://keplerproject.github.com/cgilua/manual.html#templates markdown: ["Markdown" , "md|markdown"], ocaml: ["OCaml" , "ml|mli"], perl: ["Perl" , "pl|pm"], @@ -186,6 +188,7 @@ var docs = { "docs/ocaml.ml": "OCaml", "docs/OpenSCAD.scad": "OpenSCAD", "docs/lua.lua": "Lua", + "docs/luapage.lp": "LuaPage", // index.lp from the Kepler Project's LuaDoc HTML doclet. http://keplerproject.github.com/luadoc/ "docs/liquid.liquid": "Liquid", "docs/java.java": "Java", "docs/clojure.clj": "Clojure", diff --git a/demo/kitchen-sink/docs/luapage.lp b/demo/kitchen-sink/docs/luapage.lp new file mode 100644 index 00000000..27514494 --- /dev/null +++ b/demo/kitchen-sink/docs/luapage.lp @@ -0,0 +1,67 @@ + + + + Reference + " type="text/css" /> + + + + +
+ +
+ +
+
+
+ +
+ + + +
+ + +<%if not options.nomodules and #doc.modules > 0 then%> +

Modules

+ + +<%for _, modulename in ipairs(doc.modules) do%> + + + + +<%end%> +
<%=modulename%><%=doc.modules[modulename].summary%>
+<%end%> + + + +<%if not options.nofiles and #doc.files > 0 then%> +

Files

+ + +<%for _, filepath in ipairs(doc.files) do%> + + + + +<%end%> +
<%=filepath%>
+<%end%> + +
+ +
+ +
+

Valid XHTML 1.0!

+
+ +
+ + diff --git a/lib/ace/mode/luapage.js b/lib/ace/mode/luapage.js new file mode 100644 index 00000000..03ee19d1 --- /dev/null +++ b/lib/ace/mode/luapage.js @@ -0,0 +1,22 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var LuaMode = require("./lua").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules; + +var Mode = function() { + var highlighter = new LuaPageHighlightRules(); + + this.$tokenizer = new Tokenizer(new LuaPageHighlightRules().getRules()); + this.$embeds = highlighter.getEmbeds(); + this.createModeDelegates({ + "lua-": LuaMode + }); +}; +oop.inherits(Mode, HtmlMode); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/lib/ace/mode/luapage_highlight_rules.js b/lib/ace/mode/luapage_highlight_rules.js new file mode 100644 index 00000000..8a2dedba --- /dev/null +++ b/lib/ace/mode/luapage_highlight_rules.js @@ -0,0 +1,40 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; + +var LuaPageHighlightRules = function() { + this.$rules = new HtmlHighlightRules().getRules(); + + for (var i in this.$rules){ // Thanks to Harutyun Amirjanyan for this fix. + this.$rules[i].unshift({ + token: "keyword", + regex: "<\\%\\=?", + next: "lua-start" + }, { + token: "keyword", + regex: "<\\?lua\\=?", + next: "lua-start" + }); + } + this.embedRules(LuaHighlightRules, "lua-", [ + { + token: "keyword", + regex: "\\%>", + next: "start" + }, + { + token: "keyword", + regex: "\\?>", + next: "start" + } + ]); +}; + +oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); + +exports.LuaPageHighlightRules = LuaPageHighlightRules; + +}); \ No newline at end of file From a091a627a09d5530747576869fefe797816ec4b6 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 17 Jun 2012 16:37:38 +0400 Subject: [PATCH 2/5] small cleanup --- demo/kitchen-sink/demo.js | 5 ++--- demo/kitchen-sink/docs/luapage.lp | 4 ++++ lib/ace/mode/luapage_highlight_rules.js | 28 +++++++++++++------------ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index 8660d7d5..7e5b0f1e 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -109,8 +109,7 @@ var modesByName = { less: ["LESS" , "less"], liquid: ["Liquid" , "liquid"], lua: ["Lua" , "lua"], - luapage: ["LuaPage" , "lp"], - // LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua documentation: http://keplerproject.github.com/cgilua/manual.html#templates + luapage: ["LuaPage" , "lp"], // http://keplerproject.github.com/cgilua/manual.html#templates markdown: ["Markdown" , "md|markdown"], ocaml: ["OCaml" , "ml|mli"], perl: ["Perl" , "pl|pm"], @@ -188,7 +187,7 @@ var docs = { "docs/ocaml.ml": "OCaml", "docs/OpenSCAD.scad": "OpenSCAD", "docs/lua.lua": "Lua", - "docs/luapage.lp": "LuaPage", // index.lp from the Kepler Project's LuaDoc HTML doclet. http://keplerproject.github.com/luadoc/ + "docs/luapage.lp": "LuaPage", "docs/liquid.liquid": "Liquid", "docs/java.java": "Java", "docs/clojure.clj": "Clojure", diff --git a/demo/kitchen-sink/docs/luapage.lp b/demo/kitchen-sink/docs/luapage.lp index 27514494..f70c992b 100644 --- a/demo/kitchen-sink/docs/luapage.lp +++ b/demo/kitchen-sink/docs/luapage.lp @@ -1,6 +1,10 @@  +<% --[[-- + index.lp from the Kepler Project's LuaDoc HTML doclet. + http://keplerproject.github.com/luadoc/ +--]] %> Reference " type="text/css" /> diff --git a/lib/ace/mode/luapage_highlight_rules.js b/lib/ace/mode/luapage_highlight_rules.js index 8a2dedba..d79581c3 100644 --- a/lib/ace/mode/luapage_highlight_rules.js +++ b/lib/ace/mode/luapage_highlight_rules.js @@ -1,4 +1,6 @@ -define(function(require, exports, module) { +// LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua +// documentation: http://keplerproject.github.com/cgilua/manual.html#templates +define(function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); @@ -8,7 +10,7 @@ var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; var LuaPageHighlightRules = function() { this.$rules = new HtmlHighlightRules().getRules(); - for (var i in this.$rules){ // Thanks to Harutyun Amirjanyan for this fix. + for (var i in this.$rules) { this.$rules[i].unshift({ token: "keyword", regex: "<\\%\\=?", @@ -20,17 +22,17 @@ var LuaPageHighlightRules = function() { }); } this.embedRules(LuaHighlightRules, "lua-", [ - { - token: "keyword", - regex: "\\%>", - next: "start" - }, - { - token: "keyword", - regex: "\\?>", - next: "start" - } - ]); + { + token: "keyword", + regex: "\\%>", + next: "start" + }, + { + token: "keyword", + regex: "\\?>", + next: "start" + } + ]); }; oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); From 434abc76451237dac98b3f1e7fb8d6b296ed1160 Mon Sep 17 00:00:00 2001 From: bootstraponline Date: Sun, 17 Jun 2012 18:46:49 -0600 Subject: [PATCH 3/5] Add GitHub theme option to kitchen sink. --- kitchen-sink.html | 1 + 1 file changed, 1 insertion(+) diff --git a/kitchen-sink.html b/kitchen-sink.html index 55b43635..6712e59d 100644 --- a/kitchen-sink.html +++ b/kitchen-sink.html @@ -67,6 +67,7 @@ + From 1f518476358ba2f7d74a30f701a6bad893b10efa Mon Sep 17 00:00:00 2001 From: Vlad Zinculescu Date: Mon, 18 Jun 2012 12:15:24 +0200 Subject: [PATCH 4/5] added info icon for dark theme --- lib/ace/css/editor.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index c1cd0f0c..f8faa206 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -53,6 +53,9 @@ background-repeat: no-repeat; background-position: 2px center; } +.ace_dark .ace_gutter-cell.ace_info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII="); +} .ace_editor .ace_sb { position: absolute; From acdff2a468b28e196ccacc7836ec5cbe4d2c5a1d Mon Sep 17 00:00:00 2001 From: Vlad Zinculescu Date: Mon, 18 Jun 2012 16:59:10 +0200 Subject: [PATCH 5/5] fold icons for dark themes. fixed fold icon position when active but not hovered --- lib/ace/css/editor.css | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index f8faa206..0a668fff 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -50,7 +50,6 @@ .ace_gutter-cell.ace_info { background-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7"); - background-repeat: no-repeat; background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { @@ -249,9 +248,11 @@ background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82"); background-repeat: no-repeat; - background-position: center 5px; + background-position: center 4px; border-radius: 3px; + + border: 1px solid transparent; } .ace_fold-widget.end { @@ -265,11 +266,8 @@ .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); - -moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7); -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); - -webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7); -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); - box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); background-position: center 4px; } @@ -277,14 +275,34 @@ .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); - -moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255); -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); - -webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255); -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); - box-shadow:inset 0 1px 1px rgba(255, 255, 255); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } - +/** + * Dark version for fold widgets + */ +.ace_dark .ace_fold-widget { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); +} +.ace_dark .ace_fold-widget.end { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget.closed { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget:hover { + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.1); +} +.ace_dark .ace_fold-widget:active { + -moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); + -webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); +} + + + .ace_fold-widget.invalid { background-color: #FFB4B4; border-color: #DE5555;