5

正如您在以下屏幕截图中看到的:

截屏

Ace 编辑器的左侧有一个“排水沟”,其中包含行号。我想检测对此排水沟的点击并为断点插入一个标记,如以下来自 chrome 开发工具的屏幕截图所示截屏

我看过 Ace 编辑器 API,但不知道该怎么做,有人能告诉我最好的方法吗?

谢谢

4

1 回答 1

10

请参阅此线程https://groups.google.com/d/msg/ace-discuss/sfGv4tRWZdY/ca1LuolbLnAJ

你可以使用这个功能

editor.on("guttermousedown", function(e) {
    var 目标 = e.domEvent.target;
    if (target.className.indexOf("ace_gutter-cell") == -1)
        返回;
    if (!editor.isFocused())
        返回;
    if (e.clientX > 25 + target.getBoundingClientRect().left)
        返回;

    var row = e.getDocumentPosition().row;
    e.editor.session.setBreakpoint(row);
    e.stop();
})

并且不要忘记为断点添加一些样式,例如

.ace_gutter-cell.ace_breakpoint{
    边框半径:20px 0px 0px 20px;
    box-shadow: 0px 0px 1px 1px 红色插图;
}

断点经常被切换。要实现此行为,请使用

...

var breakpoints = e.editor.session.getBreakpoints(row, 0);
var row = e.getDocumentPosition().row;
if(typeof breakpoints[row] === typeof undefined)
    e.editor.session.setBreakpoint(row);
else
    e.editor.session.clearBreakpoint(row);

...

请注意 的奇怪用法EditSession.getBreakpoints(),它不返回文档建议的行号数组,而是返回与行号对应的索引的数组。

于 2013-06-02T09:06:44.243 回答