From fd5a6ade03e1475819ed2d6d519b1b3915fecbfa Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 24 Oct 2014 16:40:53 +0400 Subject: [PATCH 1/4] fix #2183 scrollPastEnd breaks vScrollBarAlwaysVisible=false option --- lib/ace/virtual_renderer.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 87c3fa90..820b054d 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -958,23 +958,24 @@ var VirtualRenderer = function(container, theme) { this.scrollBarH.setVisible(horizScroll); } - if (!this.$maxLines && this.$scrollPastEnd) { - maxHeight += (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd; - } - - var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || - size.scrollerHeight - maxHeight < 0); - var vScrollChanged = this.$vScroll !== vScroll; - if (vScrollChanged) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } + var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd + ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd + : 0; + maxHeight += scrollPastEnd; this.session.setScrollTop(Math.max(-this.scrollMargin.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + this.scrollMargin.bottom))); this.session.setScrollLeft(Math.max(-this.scrollMargin.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + this.scrollMargin.right))); + + var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || + size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop); + var vScrollChanged = this.$vScroll !== vScroll; + if (vScrollChanged) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); From 58d166d647a54d4515c88fc67fef0c611e92d5a6 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 25 Oct 2014 02:06:36 +0400 Subject: [PATCH 2/4] do not add extra semicolon in built files --- Makefile.dryice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.dryice.js b/Makefile.dryice.js index a6082558..a40549ef 100755 --- a/Makefile.dryice.js +++ b/Makefile.dryice.js @@ -502,7 +502,7 @@ function exportAce(ns, modules, requireBase, extModules) { if (typeof modules == "string") modules = [modules]; - return (text + ";" + template + return (text.replace(/;\s*$/, "") + ";" + template .toString() .replace(/MODULES/g, JSON.stringify(modules)) .replace(/REQUIRE_NS/g, requireBase) From 1a70ef15e25df24c9f352cbebae99650989dd9e4 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 25 Oct 2014 03:25:44 +0400 Subject: [PATCH 3/4] fix #2190 autocomplete doesn't show tooltip when list initially appears --- lib/ace/autocomplete.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ace/autocomplete.js b/lib/ace/autocomplete.js index 3bb035aa..2544c858 100644 --- a/lib/ace/autocomplete.js +++ b/lib/ace/autocomplete.js @@ -67,6 +67,7 @@ var Autocomplete = function() { e.stop(); }.bind(this)); this.popup.focus = this.editor.focus.bind(this.editor); + this.popup.on("show", this.tooltipTimer.bind(null, null)); this.popup.on("select", this.tooltipTimer.bind(null, null)); this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); return this.popup; From 3ef6bc2097b21f33fded9213fb6e1f32f91bf88a Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 27 Oct 2014 21:35:51 +0400 Subject: [PATCH 4/4] do not show error for empty json files --- lib/ace/mode/json_worker.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ace/mode/json_worker.js b/lib/ace/mode/json_worker.js index 9c233d77..57fa1c10 100644 --- a/lib/ace/mode/json_worker.js +++ b/lib/ace/mode/json_worker.js @@ -48,7 +48,8 @@ oop.inherits(JsonWorker, Mirror); var value = this.doc.getValue(); try { - var result = parse(value); + if (value) + parse(value); } catch (e) { var pos = this.doc.indexToPosition(e.at-1); this.sender.emit("error", {