LINUX.ORG.RU

Выпуск редактора CudaText 1.130.0

 , , ,


2

1

CudaText — это свободный, кросс-платформенный редактор кода, написанный на Lazarus. Редактор поддерживает расширения на Python, и имеет несколько особенностей, позаимствованных из Sublime Text. На Wiki-странице проекта https://wiki.freepascal.org/CudaText#Advantages_over_Sublime_Text_3 перечисляются преимущества над Sublime Text.

Редактор подойдет продвинутым пользователям и программистам (доступно больше 200 синтаксических лексеров). Некоторые возможности IDE доступны в виде плагинов. Репозитории проекта находятся на GitHub. Для запуска в Linux есть сборки на GTK2 и Qt5. CudaText отличается относительно быстрым запуском (около 0.3 секунды на CPU Core i3).

Изменения, сделанные за последние 6 месяцев:

  • Автодополнение для HTML теперь использует более полные списки тегов и свойств тегов. Также эта функция позволяет дополнять HTML сущности, которые начинаются со значка «&».
  • Автодополнение для CSS также переработано, чтобы использовать более полные списки.
  • Проведена работа по стабилизации и вычищению недочетов в Undo/Redo-системе.
  • Во много раз ускорена правка с мульти-каретками. Например, для такого случая: файл в 60 Кбайт и лексер T-SQL, когда мы имеем 100-200 кареток по всему файлу от диалога Поиск.
  • В code-tree для лексера CSS добавлена раскраска цветовых атрибутов.
  • Добавлена многопоточность для отрисовки мини-карты. Это позволило ускорить рендеринг с миникартой где-то в 2 раза.
  • Добавлена многопоточность для загрузки лексеров, что сделало быстрый старт CudaText еще быстрее на 15%.
  • Code-tree helpers для некоторых лексеров (Markdown, MediaWiki, reST) переписаны на Паскале и встроены в программу (дает более быструю работу code-tree).
  • Вкладки в многострочном режиме теперь умеют прокручиваться вверх-вниз.
  • Возможность, подсмотренная в Sublime Text 4: затемнение неактивных редакторов в группах вкладок. Сделана опция «dim_unfocused» для этого.
  • Автодополнение файловых имен для «file:///dir/name» нотации файловых имен.
  • Покраска цветовых токенов в HTML (#rgb, #hsl) теперь может красить фон текстового фрагмента.
  • Можно сделать авто-создание сверток (fold ranges) многострочных комментариев. Это работает для всех лексеров. Раньше работало лишь при подстройке самих лексеров и не так удобно.
  • Добавлен инкрементальный поиск в диалоге поиска, а также опция-кнопка «Hi», то есть «подсветка всех».

В набор плагинов были добавлены следующие модули:

  • Runner - Запускатель процессов. Поддерживает билд-системы от Sublime Text после незначительных подстроек. То есть это второй плагин для запуска внешних процессов, но уже построенный на другом принципе.

  • FTP - Была добавлена поддержка SFTP-соединений через файлы приватного ключа.

  • Terminal Plus - Второй плагин для эмуляции терминала. Дает гораздо больше функций и поддерживает раскраску текста в Linux.

  • Console Auto-Completion - Авто-дополнение в панели «Консоль». Делает это средствами самого Python, без библиотеки Jedi.

  • Tab Group Resizer - Дает команды для максимизации и минимизации выбранной группы вкладок.

>>> Сайт программы

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

А почему выбран FPC/Lazarus? Почему не Cpp/Qt?

Потому что я паскалист, ранее писал на Делфе. Не надо мне С++, я очень не люблю его.

Биндинги к Qt4 заброшены

они нормально работают.

к Qt5 в состоянии вечной альфы

нет, они стабильны. У проги есть Qt5 сборка.

Нет пока что GTK3.

То сегфолтится рандомно, собирается только если без изменений раз 5 введешь команду сборки

У меня такое было когда памяти не хватает. В VM надо дать больше.

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

В смысле? Там ж просто бинарники распаковываются. Они там не те же самые?

На fosshub те же самые что и в AUR.

Это осложняет опакечивание на основе собранных бинарников :( Т.к. ссылок на новые версии нет.

А кто делает опакечивание? я и ребята из AUR. Для AUR ссылки есть.

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

А кто делает опакечивание? я и ребята из AUR. Для AUR ссылки есть.

В aur для бинарных сборок прямая ссылка на оф. сайт.

В этом то и проблема, что пакетным менеджером сложно скачать. Взял ссылку для бинарника из aur, ведущую на оф. сайт. Но, как сказал выше, из-за отсутствия libQt5Pas.so.1 не запустилась. Я хоть и на генту, но мысль о том, чтобы держать на компе рантйам fpc+lazarus в 1 гб бросает меня в пучину отчаяния! Много же, когда сама прога на 20 мб.

Gtk2 пока из генту ещё не убрали, но процесс идёт и новые пакеты на нём не приветствуются.

Именно поэтому double-commander поставляется в gentoo guru бинарным, устанавливаясь в свой каталог в opt.

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

они нормально работают.

В отличии от Qt4, который уже выпилен отовсюду.

нет, они стабильны. У проги есть Qt5 сборка.

ХЗ, у меня именно на Qt5 начинает нещадно тормозить на открытии окон, остальные работают норм. Double Commander, кстати, аналогично.

У меня такое было когда памяти не хватает. В VM надо дать больше.

VM - это что-то паскалевское? Куда смотреть? Так-то у меня 16 Гб мозгов, не должно быть причиной проблем.

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

Это возвращает меня к сборке из исходников в рамках системы, т.к. gentoo - source based дистрибутив и всё что не ставится сразу бинарным от поставщика софта (в большинстве случаев), должно быть собрано :(

Возможно проблема в лицензировании, что ограничивает совместную поставку.

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

В отличии от Qt4, который уже выпилен отовсюду.

Как это ни странно, в Fedora 33 ещё есть (сам удивился). Вот в Manjaro программу с Qt4 уже толком не соберёшь…

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

В отличии от Qt4, который уже выпилен отовсюду.

поэтому сборки проги на Qt4 и нет. только Qt5.

ХЗ, у меня именно на Qt5 начинает нещадно тормозить на открытии окон, остальные работают норм. Double Commander, кстати, аналогично.

Вполне может быть и утечками. и багом. и в libqt5pas и в Лазарус. Это не мне надо пенять. А на форум Лаза. Но конечно как-то пруфы им дать. Хотя бы с Doublecmd показать что делаете то то и он тормозит так то.

У меня такое было когда памяти не хватает. В VM надо дать больше. VM - это что-то паскалевское? Куда смотреть?

Наверно я попутал, не памяти в Витруалке не хватает а диска не хватает. Это было давно.

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

Окей, как-нибудь попробую им написать. Вам не пенял, просто пояснил на примере, в чем с моей т. з. недостатки выбранного стека. Qt5 уже долго существует, а до сих пор не вылизаны биндинги, а кроме него все остальное либо еще не существует и не известно когда будет, либо протухло. Такая вот многотулкитная поддержка Лазарусом на деле ничего не значит. А за прогу спасибо, пользуюсь часто.

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

Искал-искал как его собрать в пакет хотя бы приблизительно - так и не нашел.

Если «как собрать в пакет» - то файлы Баша в папке setup.

Посмотрел.
Мне страшно это запускать на живой машине.
За столько лет cmake или хотя бы Makefile - никак?

TI_Eugene ()

README на гитхабе - образец «как не надо писать README».
Ни что это всё значит, ни требований к сборке, ни как собрать - нифига.
Пойди туда не знаю куда и подумай зачем сюда пришел.
Я и гитхаб нашел минут через 15 поисков.

Нет, софтина классная, несомненно (наверное).
Но инфраструктура - просто ппц.
Не то чтобы не привлекает, а где-то даже отпугивает.

Ну возьми вечерок с ящиком пива, нарисуй нормальное README, помедитируй с man cmake - глядишь и люди потянутся.
Но мы пойдем своим путем. Как завещал Сусанин.

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

Если «как собрать в пакет» - то файлы Баша в папке setup.

bash-5.0$ ./z_linux_x32_qt5.sh 
rm: невозможно удалить '/mnt/shares/home/eugene/cudatext_build/cudatext-linux-qt5-i386-*.xz': Нет такого файла или каталога
./unix_common.sh: строка 21: cd: builds/linux-x32-qt5: Нет такого файла или каталога
tar: cudatext: Функция stat завершилась с ошибкой: Нет такого файла или каталога
tar: Завершение работы с состоянием неисправности из-за возникших ошибок

PS. мне вот эти rm нравятся очень в таких батниках

TI_Eugene ()
Последнее исправление: TI_Eugene (всего исправлений: 1)
Ответ на: комментарий от Alexey_Tor_

это работа плагинов. не редактора. пока таких плагинов нету.

Рефакторинг удобен в частности для поиска строк где используется переменная, функция, …
Сказал об этом потому, что рефакторинг удобен не только для изменения кода.

Без рефакторинга редактор - редактор текста, с рефакторингом - редактор кода.

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

Рефакторинг удобен в частности для поиска строк где используется переменная,

Вот и нет. это уже «find usages». Такая команда есть в плагине Python Intellisense. Повторю- это работа для плагинов.

Редактор он сам по себе мальчик. Свой собственный.

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

В lazarus, а тем более в delphi, полно готовых компонентов полезных для написания в том числе и для текстового редактора. И сабж не единственный пример существующих в настоящее время редакторов написанных на диалектах object pascal.

Пишут на том, на чём удобно самому разработчику.

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

Уже намного лучше. Еще бы (в issues не пишу, ибо):

  • все-таки в ридми надо указать BuildRequires. Не «Based on» (это для сборки не говорит ни о чем), а «Build requires». И не «ATSynEdit editor control», а «ATSynEditControl» (или где он там фиг найдешь сразу).
  • описанный в вики процесс сборки выглядит феерично. Можно как-то чтобы без IDE, без доступа к интернетам во время сборки и просто руками? Вот берем эти и эти сырцы и такие-то библиотеки и вот так их собираем одной командой. И не в вики, а прям рядом с сырцами, на гитхабе (где ему и место).

И да - ссылку на гитхаб в саму новость бы.

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

все-таки в ридми надо указать BuildRequires.

Приписал ссылки на все requires packages.

Можно как-то чтобы без IDE, без доступа к интернетам во время сборки и просто руками

Наверно нет, можно только утилитой cudatext_up.

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

Вот поэтому меня отсутствие в бинарной сборке libQt5Pas и беспокоит - в double-commander она включена в архив.

Вот положу я ее в архив. а что юзеру с ней делать? в Линукс нельзя же заюзать .so прямо и каталога программы. там пути какие-то надо делать.

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

в Линукс нельзя же заюзать .so прямо и каталога программы.

Можно. По крайней мере при опакечивании ментейнерами это не проблема - создаётся wrapper для запуска приложения из командной строки, который указывает на исполняемый файл в /opt/cudatext , добавляя LD_LIBRARY_PATH.

То есть будет приятно, если она там окажется.

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

Ну здрасти.

       ld.so распознаёт определённые строки согласно спецификации rpath (DT_RPATH или DT_RUNPATH); эти строки заменяются на

       $ORIGIN (или ${ORIGIN})
              Она  раскрывается  в  каталог,  содержащий  программу  или  общий  объект.  Таким  образом,  приложение,  расположенное  в  somedir/app может компилироваться с

                  gcc -Wl,-rpath,'$ORIGIN/../lib'

              для того, чтобы оно могло найти связанный общий объект в somedir/lib и не важно где  в  иерархии  каталогов  будет  находиться  somedir.  Это облегчает  создание  приложений  «под ключ», которые вместо установки в специальные каталоги, можно просто распаковать в любой каталог, и они всё равно найдут свои общие объекты.
wandrien ()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от grem

Можно. По крайней мере при опакечивании ментейнерами это не проблема - создаётся wrapper для запуска приложения из командной строки, который указывает на исполняемый файл в /opt/cudatext , добавляя LD_LIBRARY_PATH.

вы знаете,я начал колупаться с этим, с libqt5pas, нашел ее в инете, потом нашел в Убунту, потом куда-то закачал, что бы мой скрипт потом ее оттеда скачал. потом правил скрипт, потом стал думать как либу запаковать в пакет Куды. потом мне надоело….. не стоит оно того. для чего, для тех кто делает пакеты? ну нафиг. кто делает пакет тот и найдет либу. и потом. никто пока не делает пакет.

Alexey_Tor_ ()