使用Ace编辑器,工作正常,除了:和行的开头和结尾,如果文档中至少有一行不适合屏幕,则水平滚动不完整。对于行开头处的插入符号,一旦视图被h滚动,当插入符号位于行开头时它将不会完全向后滚动,因此不会显示插入符号。烦人。对于行尾的插入符号也是如此(虽然看起来它根本不滚动,而不是不正确,所以可能是不同的错误。有人知道如何解决吗?哪些版本会受到影响?
(哦,对,忘了提及:天沟已启用。)
(编辑II:使用谷歌浏览器18.0.1025.162)
(E#3:忘记提及:使用Shift +滚轮我可以手动修复它,向左滚动。(E4:......这只是一个线索;不是解决方案。一个人不应该做任何事情无关的手动鼠标。))
(编辑#N:设法隐藏装订线:“editor_loaded.renderer.setShowGutter(false);”。问题仍然存在。)
答案 0 :(得分:1)
嗯,按照要求(由'WarFox'),这就是我在0.2.0版本中绕过滚动问题所做的,直接来自本地回购。 HTH,YMMV。当然,无法保证修改此版本或任何版本。 this.scrollCursorIntoView的代码被修改为:
this.scrollCursorIntoView = function() {
var log = function (s) {
// console.log("### scrollCursorIntoView ###: " + s);
};
// log("(scrollCursorIntoView...)");
function loge(expr) {
var value = eval(expr);
log("" + expr + " => " + value);
}
// the editor is not visible
if (this.$size.scrollerHeight === 0)
return;
var pos = this.$cursorLayer.getPixelPosition();
var left = pos.left + this.$padding;
log("left = " + left);
var top = pos.top;
log("top = " + top);
if (this.scrollTop > top) {
this.scrollToY(top);
}
if (this.scrollTop + this.$size.scrollerHeight < top + this.lineHeight) {
this.scrollToY(top + this.lineHeight - this.$size.scrollerHeight);
}
var scrollLeft = this.scroller.scrollLeft;
var left_ = left - this.characterWidth;
log("(scrollLeft > left): " + scrollLeft + " > " + left);
log("(scrollLeft > left_): " + scrollLeft + " > " + left_);
if (scrollLeft > left_) {
this.scrollToX(left_);
} else {
log("NOT (scrollLeft > left): " + scrollLeft + " > " + left);
log("NOT (scrollLeft > left_): " + scrollLeft + " > " + left_);
}
loge("scrollLeft");
log("scrollLeft = " + scrollLeft);
log("this.$size.scrollerWidth = " + this.$size.scrollerWidth);
log("left = " + left);
log("this.characterWidth = " + this.characterWidth);
var right_side_scroll_yes = scrollLeft + this.$size.scrollerWidth < left + this.characterWidth;
if (right_side_scroll_yes) {
log("(right side scroll...)");
//loge("this.layerConfig.width");
if (left > this.layerConfig.width) {
log("right #1");
log("this.layerConfig.width = " + this.layerConfig.width);
this.$desiredScrollLeft = left + 2 * this.characterWidth;
this.scrollToX(this.$desiredScrollLeft);
} else {
log("right #2");
var tmp = Math.round(left + this.characterWidth - this.$size.scrollerWidth);
loge("tmp");
this.scrollToX(tmp);
}
} else {
log("NOT (right_side_scroll_yes): " + scrollLeft + " > " + left);
}
};
显然,除了调试之外,没有必要进行日志记录调用。