LINUX.ORG.RU

Textadept 8.0 — Lua редактор текста для программистов

 , ,


1

3

Первого мая вышла восьмая версия этого, написанного по большей части на Lua редактора текста для программистов. Главным нововведением этой версии стал переход на lua 5.3, однако поскольку последний (и первый) раз здесь рассказывалось о версии 6.4 этого редактора, думаю стоит немного рассказать о самом продукте, и изменениях, произошедших с ним за последние два года. Предшественником его была авторская сборка scite — scite-st. Одним из её нововведений стала поддержка лексеров языков программирования, используемых для подсветки синтаксиса, написанных на lua (она доступна в виде отдельной библиотеки). Однако, спустя некоторое время, автор сборки Митчел Форал, нашёл, что в скайте слишком много захордкодено на языке С, и он недостаточно «программируем» на lua. Это сподвигло его на написание своего рода аналога Emacs, где роль лиспа играет язык lua, а на С помимо, собственно, Scintilla написан самый минимум. Восьмая версия этого программного продукта выглядит достаточно приятной и удобной для повседневного применения, это как минимум — полноценная замена скайта. В частности, появились привычные вкладки-табы для нескольких открытых текстов. Важное нововведение по сравнению со скайтом — возможность запуска в терминале, специально для этого была написана библиотека Scinterm — curses оболочка над Scintilla. Редактор также поддерживает деление экрана на неограниченное количество частей, подсветку более 80 языков программирования, автозавершение кода и может полностью управляться с клавиатуры.

>>> Подробности

Но зачем? Sublime Text же.

anonymous ()
Ответ на: комментарий от anonymous

Про зачем

Ну, как минимум для мигрантов из офтопика, привыкших к виндовой сборке SciTE-ru, кое-что заимствовавшей у Митчелла. Попробую на досуге слепить Textadept-ru, куда добавлю поддержку русских неюникодных кодировок (пока нет) и всякие «удобности». Давно смотрел в ту сторону, но шестая версия выглядела как продукт для суровых имаксеров (а им «чужого» точно не надо), а тут уже всё не так сурово.

Из мелочей понравилось укрупнение заголовков в мардаун-подобной разметке.

be_nt_all ()

Я его юзал. Мне нравилось. Пока на Vim не перелез.

DeadEye ★★★★★ ()

Ещё один редактор? Ну серьёзно, ни один из появившихся после вима и емакса редакторов никаких киллер-фич не предлагает и ничем лучше них не становится. Может пора уже перестать или хотя бы придумывать что-то отличное от предшественников?

vurdalak ★★★★★ ()
Ответ на: комментарий от DeadEye

А чем он хуже вима? А то я как-то собирался перелезть в обратном направлении.

unsigned ★★★ ()
Ответ на: комментарий от vurdalak

Это и есть нормально сделанный emacs. Не очень доделанный только.

unsigned ★★★ ()
Ответ на: комментарий от unsigned

А жаббер/браузер/психоаналитик/игори под него есть?

buddhist ★★★★★ ()
Ответ на: комментарий от vurdalak

Компактный, быстрый, не варит кофе, написан на языке программирования. Емнип, управление там сделано для людей.

unsigned ★★★ ()
Ответ на: комментарий от unsigned

Просто для него плагинов мало. Самая главная няшка там - Lua, ради которого и стоит попробовать. Правда, я не хотел себе еще один Awesome, только редактор, и слез на Vim.

DeadEye ★★★★★ ()

по сравнению с емакс/вим — неюзабельно, имхо

Bad_ptr ★★★ ()
Ответ на: комментарий от buddhist

Не знаю. Пишут что он суперрасширяемый, но я туда не погружался.

unsigned ★★★ ()
Ответ на: комментарий от unsigned

Компактный

Пофигу или вим.

быстрый

Они все быстрые.

не варит кофе

Странно считать отсутствие фич преимуществом. Если это не влияет на скорость, то не пофиг ли?

написан на языке программирования

А на чём ещё можно написать? O_o

vurdalak ★★★★★ ()
Ответ на: комментарий от DeadEye

На луа писать — себя не уважать. Говорю как тот, кто уже года 3 кушает кактус и пишет моды для майнтеста. Луа это язык, в котором нет ничего, даже базовых и очевидных вещей.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Юзеры Awesome едят и ничего. Хотя тот же r3lgar матерился. Ну и да, в Lua нет os.setenv().

DeadEye ★★★★★ ()
Ответ на: комментарий от DeadEye

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

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Пофигу или вим

У вима кодовая база огромная, монолитная и не особо читаемая.

Они все быстрые

emacs - ни разу не быстрый. Конечно, для редактора скорость сгодится, но для редактора позор так тормозить.

Странно считать отсутствие фич преимуществом

Отсутствие ненужных фич - определенно преимущество. Тарбол емакса - 50М, а реально полезные расширения всё равно надо доустанавливать откуда попало.

Если это не влияет на скорость

Расширяемость всегда идет в ущерб скорости.

А на чём ещё можно написать? O_o

Еще - на elisp, vimscript. Причем не только писать на них, но и поддерживать для них свою реализацию (обе тормоза по сравнению с luajit). А пользователям приходится учить новый ненужный и кривой язык.

Да, vim на си, но это тоже ужасно. У сабжа на си около 2000 строк, емнип, вполне читаемо. Логика на луа.

unsigned ★★★ ()
Ответ на: комментарий от vurdalak

А что бы ты предложил для такого применения вместо луа? На ум приходит только javascript, но лучше бы не приходил.

unsigned ★★★ ()
Ответ на: комментарий от vurdalak

Lua

Луа это язык, в котором нет ничего, даже базовых и очевидных вещей.

А вы точно умеете его готовить?

be_nt_all ()

Lua редактор текста для программистов

Чюрка нерусская ты после этого, дорогой топегстартер.

heilkitty ★★ ()
Ответ на: комментарий от unsigned

На ум приходит только javascript, но лучше бы не приходил.

Ну да, в lua взято многое из пресловутых Good Parts. И кое-что из лиспа просматривается Иерусалимский явно по SICP учился. При этом язык с человеческим лицом — простой, и на первый взгляд — непритязательный

be_nt_all ()
Ответ на: комментарий от heilkitty

for Grammar Nazi

Ну вообще-то это не я пояснение к заголовку дописывал, а модератор, но задумался, как это будет по-русски, и завис. Редактор текста для программистов на Lua? Да нет, редактор текстов для программистов на Lua называется ZeroBrane Studio, а это редактор текстов для программистов на чём-угодно, написанный на Lua. Как-то слово написанный совсем уж заголовок утяжелило бы, тем более там и Си-код есть, и главная фишка — в расширяемости посредством того-же самого Lua.

be_nt_all ()
Ответ на: Lua от be_nt_all

Ну расскажи, как проверить, находится ли элемент в таблице. Или как удалить элемент из неё по значению.

vurdalak ★★★★★ ()
Ответ на: комментарий от unsigned

Да любой язык, от лиспа до питона. При всем моём неосиляторстве емакса я считаю, что елисп это его большое преимущество.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Sets in Lua

Ну если хочешь использовать таблицу в режиме множества (Set) просто храни индексы, а не значения. Очевидное решение, к тому же описанное Иерусалимским в разделе 11.5 его книжки (не совсем уж кратком reference, а которая Programming in Lua).

be_nt_all ()
Ответ на: Sets in Lua от be_nt_all

Можно ли запихнуть таблицу в индекс другой таблицы?

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Можно ли запихнуть таблицу в индекс другой таблицы?

Гм. Я считал, что поиск по значению предполагает простые значения, а не произвольные таблицы. И что-то я не припоминаю аналогичные батарейки в качестве базовых элементов других языков. А так — сериализацией в текстовое представление, только.

be_nt_all ()
Ответ на: комментарий от be_nt_all

И что-то я не припоминаю аналогичные батарейки в качестве базовых элементов других языков.

В других языках есть contains и indexOf, а тип значения неважен. Но так как здесь нет подобного и предлагаются костыли, а костыли внезапно оказываются привязаны к типу значения...

А так — сериализацией в текстовое представление, только.

Ну вот я и говорю, базовые вещи надо велосипедить.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Вот! А был бы емакс на луа - ты бы его осилил =)

Елисп - хороший вариант разве что для 70х, когда других динамических языков не было. Питон жырноват для встраивания, и нет рабочего jit. Схема хуже читается, и тоже вряд ли догонит по скорости-компактности. Собственно, луа - это нормально сделанная схема ;)

unsigned ★★★ ()
Ответ на: комментарий от vurdalak

Минимализм

И как этот Contains реализуется? В наиболее общем случае, я так понимаю — простымпоследовательным поиском. Если тебя такое устраивает (свят-свят-свят), напиши функцию, или там, метод объекта, если тебе это действительно надо. Если нет, нужен более сложный объект. Пиши сам, или ищи подходящую библиотечку. Всё что надо, чтобы реализовать любую, достаточно сложную структуру данных, в Lua есть. Прочитать PiL совсем недолго — книжка маленькая и без воды. Как я уже писал — про структуры данных — это 11 глава.

Просто, видишь ли, идея Lua (и Textadept, кстати, во многом, тоже) — минимализм. Ты вникаешь в задачу, и пишешь то, что нужно для её реализации, понимая цену (по крайней мере порядок цены) того или иного действия. Необходимые средства абстракции присутствуют — прототипное наследование объектов и переопределение операций (всё через метатаблицы, механизм максимально открытый программисту, всё так же в духе Lua).

be_nt_all ()

Уважающий себя прогер будет писать на Lua только от безысходности.

tailgunner ★★★★★ ()
Ответ на: комментарий от unsigned

А был бы емакс на луа - ты бы его осилил =)

Я про пользовательскую часть. Мне его интерфейс и хоткеи не понравились.

Елисп - хороший вариант разве что для 70х, когда других динамических языков не было.

Почему? Лисп пока что остаётся самым универсальным и понятным языком. У него только один недостаток — батарейки.

vurdalak ★★★★★ ()
Ответ на: Минимализм от be_nt_all

Если тебя такое устраивает (свят-свят-свят), напиши функцию, или там, метод объекта, если тебе это действительно надо.

Я об этом и говорю. То, что в остальных языках из коробки, на луа я должен писать сам. Зачем мне это надо, если проще взять готовое?

vurdalak ★★★★★ ()
Ответ на: комментарий от BruteForce

Я его временно забросил. Слишком тормозной. Будет новая версия с новым сетевым протоколом — потыкаю, но пока они захлёбываются в количестве кода и бюрократии.

vurdalak ★★★★★ ()

Можно список отличий от SciTE? (на сайте не нашел). В терминале я и так vim могу запустить. Табы и подсветка и так в SciTE есть.

anonymous_sama ★★★★★ ()
Последнее исправление: anonymous_sama (всего исправлений: 2)
Ответ на: комментарий от anonymous_sama

Нет ничего, что захордкодено. Вся логика на Lua, в том числе лексеры, которые в классическом скайте зашиты (некоторая расширяемость через настройки есть, но достаточно ограниченная). Соответственно более мощный и стройный Lua API.

be_nt_all ()
Ответ на: комментарий от vurdalak

Ну так бери готовые библиотеки для Lua и не ной

annulen ★★★★★ ()
Ответ на: комментарий от annulen

Например? Какая библиотека позволяет проверять нахождение элемента в таблице?

vurdalak ★★★★★ ()
Ответ на: комментарий от anonymous_sama

Ну что, к этому могу добавить несколько чисто пользовательских вещей, кое-что уже так или иначе описывал выше.

Возможность показывать несколько текстов одновременно, разделяя экран.

Поддержка из коробки markdown (причём в «полувизивиговом» режиме, во всяком случае заголовки укрупнены, а курсив наклонён, мелочь, а приятно, опять же это открывает возможность делать интересные расширения).

Поиск и замена из всплывающей нижней панели (как в виндовой сборке scite-ru, ну или kate каком нибудь).

Есть поддержка multiple selection, и множественного ввода (привет, sublime)

Мееханизм сниппетов с макроподстановками

Ну что ещё... По CtrlE вызывается командная строка lua, позволяющая продвинуто рулить редактором.

be_nt_all ()
Ответ на: комментарий от annulen

Однако, ничего похожего на CPAN, справедливости ради, в мире Lua нет.

be_nt_all ()
Ответ на: комментарий от be_nt_all

Есть luarocks и luadist, хотя по масштабу с CPAN, конечно, тягаться сложно

annulen ★★★★★ ()
Ответ на: комментарий от vurdalak

Мне его интерфейс и хоткеи не понравились.

Да ну, емакс не за это выбирают. Мне тоже не понравились, но окончательно отвратил язык расширений. Ну и еще политика партии.

unsigned ★★★ ()
Ответ на: for Grammar Nazi от be_nt_all

Текстовый редактор, написанный на Lua. Длиннее, зато libastral.so линковать не нужно.

heilkitty ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.