Как стать автором
Обновить

Комментарии 14

Не понял пару вещей.
У вас данные по спану хранятся отдельно(может для этого у вас и используется спан список) и если скролить то они берутся из этого хранилища или каждый раз вычисляются, если даже ничего не введено(тогда какие функции у спан списка)?
Если проскролить на одну строчку, то спан будет вычисляться только для новой строки или для всего что на экране?
У меня каждый раз вычисляются, так как я опасаюсь, что в каком-нибудь 3000+ строк кода файле будет их так много, что выскочит OOM. Но честно говоря я не пробовал, и в принципе попробовать стоит.

Но спаны, которые уже размещены и которые в области видимости я не перевставляю в EditText.
Мне кажется можно попробовать хранить посчитанные спаны в бд, например, или в LRU каком-нибудь.
Можно, но мне кажется, все же узким место будем в любом случае UI thread и метод setSpan, так что не уверен что пользователь вообще заметит прирост перформанса. Но я все равно попробую, спасибо за мысль.
вы бы не могли оформить свое решение в форме опен сорс библиотеки? мне было бы интересно попробовать
сам использовал для посветки кода CodeMirror вместе с WebView
У этой бы опен сорс библиотеки нашлось бы 3 пользователя за 3 года )). Мало кто будет писать IDE для андроид.

По поводу CodeMirror. И как? Должно же просто дико тормозить, в javascript же вообще нет потоков и выполняется ( на сколько я знаю) на 1ом ядре все.
отличный вам пример использования GitHub Android клиент. Там CodeMirror как раз используется для подсветки кода. Правда немного устаревшей версии, попробую позже обновить.

То есть, здесь не только об IDE на андроид речь идет, всякие GitHub, Gitlab клиенты и другие приложения, отображающие код — потенциальные пользователи :)

Ничего вам не могу сказать о потоках в javascript, не осведомлен. простое отображение кода без редактирования работает довольно шустро.
Плюс с приходом полноценного Chromium движка для Android WebView уверен подобные вещи значительно ускорятся.
Так это вообще совсем другое дело. Просто подкрасить текст это совсем несложно. Другое дело, когда одна измененная буква требует перестройки AST и соответственно раскраски.
согласен. сам вот все хочу как то попробовать это реализовать.
В любом случае, думаю ваш опыт был бы полезен сообществу :)
нет ) просто планировал как нибудь реализовать редактирование кода, так что ваша статья мне в помощь )
Зачем для подсветки AST, если в большинстве случаев справится и конечный автомат с магазинной памятью?
AST нужно не только для подсветки
Я понимаю, что у AST есть и другие задачи, но для подсветки-то зачем его использовать?

Допустим, мы показываем исходный текст на Java. В тексте есть строки с escape-последовательностями, которые хорошо бы выделять цветом/стилем. Чем вам тут поможет AST? Будете хранить один строковый литерал в виде целого поддерева или всё же обработаете все escape-последовательности ещё в лексере?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации