Измените желоб Ajax.org Cloud9 Editor (Ace Editor)

У меня есть редактор Ace Editor, встроенный в мой веб-сайт, в котором я разрешаю пользователям вводить его. В настоящее время встроенная функция автоматически показывает номер строки для каждой строки, вставленной следующим образом:

Номер строки вставляется автоматически

Есть ли способ вручную установить содержимое в желобе и прочитать значение в нем позже?
Например: вместо того, чтобы устанавливать его на 1,2,3... Я бы хотел, чтобы это выглядело как

A abc
B def

А затем, когда я получаю доступ к строке, содержащей abc, я хотел бы прочитать значение в желобе той строки, которая равна A.

Обновлять:

Чтобы настроить желоб для Ace Editor, вам придется переопределить функцию обновления:

ace.require("ace/layer/my_gutter")
//...

define('ace/layer/my_gutter', ['require', 'exports', 'ace/lib/dom'], function(require, exports, module) {

    var dom = require("ace/lib/dom"); 
    require("ace/layer/gutter").Gutter.prototype.update = update = 
        function(config) { 
            //...
        }; 
});

Функция довольно длинная и сложная для этого небольшого изменения, которое мне нужно. Итак, я не пошел с ним.

Я нашел другой редактор, CodeMirror, в котором это сделать проще, и переключился на CodeMirror.


person jianweichuah    schedule 03.02.2015    source источник


Ответы (1)


Вы можете установить собственный рендерер для желоба с помощью

editor.session.gutterRenderer =  {
    getWidth: function(session, lastLineNumber, config) {
        return lastLineNumber.toString().length * config.characterWidth;
    },
    getText: function(session, row) {
        return String.fromCharCode(row + 65);
    }
};
person a user    schedule 09.02.2015
comment
Ух ты! Я не знал, что смогу это сделать. Сейчас я использую CodeMirror, но я думаю, что это должно сработать. Спасибо! - person jianweichuah; 09.02.2015
comment
Как я мог найти это, не глядя на исходный код? Существуют ли какие-либо скрытые документы, более информативные, чем официальный сайт? - person Kyle S.; 03.06.2016
comment
Спасибо!!! Мне это нужно, потому что у меня есть стек элементов редактора, некоторые редактируемые, некоторые нет, и мне нужно сохранять номера строк одинаковой ширины, когда редактируемые элементы растут. - person cayhorstmann; 19.12.2018