LINUX.ORG.RU

Текстовый редатор unDE

 


4

2

Здравствуйте!

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

На экране видим часть кода на D, реализующего миникарту в правом верхнем углу.

Подсветка синтаксиса осуществляется согласно syntax-файлам vim'а. Это позволяет поддерживать нам широкую базу синтаксисов.. Широкую да не очень.. Регулярные выражения vim'а сильно отличаются от регулярных выражений D, поэтому заточить его под напичканный какими-то хитрющими выражениями синтакс-файл Perl'а мне не очень удалось (просто я не очень старался). В Bash-е из-за того что я не осилил многострочность регулярных выражений имя функции будет подсвечено только если фигурная скобка указана на той же строке, что и имя функции. А так Java, C, C++, PHP, JavaScript, HTML вполне себе подсвечиваются.

Но подсветка синтаксиса - это так результат предпоследней недели работы.

На самом же деле основной возможностью-убийцей редактора является несомненно его система отмен. В редакторе 4 вида отмен:

1) Файловая система отмен - ту что мы видим в большинстве редакторов.

2) Глобальная система отмен - это когда вы только что из-за одной переменной начали тотальный рефакторинг кода во всех файлах и вам надо отменить все недавние изменения во всех файлах.

3) Проектная система отмена - что-то среднее между 1 и 2. Отмены ограничиваются одним проектом.

4) Локальная система отмен - это когда вы точно помните что вот в этой функции был нужный код. Выделяете функцию - нажимаете (Ctrl+Z, в будущем Ctrl+Shift+Z) и вуаля - вы видите предыдущую версию фрагмента файла, а остальная часть файла остаётся нетронутой.

Редактор вдохновлён Vim'ом, но основным режимом всё же является не командный режим, а режим вставки. А так многие горячие клавиши перекликаются с Vim'ом, например: Ctrl+V - визуальный режим. Есть желание сделать командный режим по клавише Caps Lock, чтобы не зажимать Ctrl, но пока не доходят руки.

Справа вверху находится миникарта. Это замена полосы прокрутки. А что отмечают на картах? Места боевой славы, конечно! Поэтому зелёным на карте отмечены недавние правки, жёлтым - дневной давности, оранжевым - недельной, ну а серым - месячной.

Локальные метки (те что задаются Ctrl+M <маленькая_латинская_буква>) также отмечены на миникарте (на скриншоте 2).

Чуть ниже миникарты - находится так называемый «карман», замена буферу обмена. В кармане отображено 4 места (хотя положить туда можно и больше) и управляется он всего двумя сочетаниями клавиш:

Ctrl+X - скопировать выделенное в карман, второе нажатие - удалить выделенное (фактически двойное нажатие - вырезать), третье нажатие (нажатие без выделения) - выложить из кармана.

Суть в том что кладётся всё в конец кармана, а выкладывается из начала, таким образом последовательное нажатие Ctrl-X позволяет круговым образом подставить любой фрагмент из кармана.

Ctrl+C - копировать из кармана.

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

Основная фишка - т.н. «псевдо-директории» - фиолетовые элементы. Когда в директории больше 10 файлов над ней появляется уровень псевдо-директорий, страницы директории по 10 элементов. Если элементов больше 100 - то 2 уровня псевдо-директорий и т.д.

И что ещё важно - при нажатии на любую директорию (псевдо или нет) в ней автоматически выбирается последний редактированный в ней файл как бы глубоко он не располагался. Если надо открыть саму директорию - надо кликнуть просто второй раз.

И это надо сказать удобно. И теперь я думаю как бы мне переделать мой ZUI-файловый менеджер объединив в нём преимущества ZUI-интерфейса и преимущества такой панели табов.

Так проект прошёл важную веху - наконец-то он разрабатывается сам в себе (а не в vim'е запущенном в себе).

Спасибо за внимание. Больше букв нету. Исходники в репозитории проекта. Сайт: http://unde.su

>>> Просмотр (1360x768, 65 Kb)

★★★★

Проверено: JB ()

Отвечу сразу почему это не релиз.

Потому что на релиз запланировано ещё IDE для языка D. И документация всего кода в стиле грамотного программирования. А теперь ещё и переписывание файлового менеджера.

Что касается IDE, то принципиальная возможность того чего я задумал уже исследована. Я внесу в компилятор патч, чтобы он мог останавливаться после компиляции и принимать команды о языке и его конструкциях. В том числе так будет реализована очень мощная система автодополнений, которая даже будет автодополнять функции, которые пишутся в стиле «abc».toStringz() вместо toStringz(«abc»). Такого на сколько мне известно ещё нет ни в одной IDE для D.

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

Классно.

Потому что на релиз запланировано ещё IDE для языка D

А вот тут вопрос. Почему разработчики опять и снова пытаются решить фатальный недостаток? Ведь есть же уже такой проект от соотечественника:

https://github.com/buggins/dlangide

Почему бы не влится в разработку этой IDE, сделать её лучше?

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

Потому, что IDE для unDE лишь один из инструментов, а далее пойдёт редактор изображений, офисный пакет и т.д..

И как объединить всё это в едином интерфейсе кроме как создать новый проект у меня нет идей.

unDEFER ★★★★ ()

Голосом узбека-гастарбайтера: «Ну ощще маладес, вах, прям щекалад!»

А так Java, C, C++, PHP, JavaScript, HTML вполне себе подсвечиваются.

А мой... Мой питончик?

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

Подсвечивает, но не всё гладко, надо дорабатывать..

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

Подсвечивает, но не всё гладко, надо дорабатывать..

А Golang?

SuoiCat ()

Когда стабильный релиз предвидится?

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

А Golang?

На первом попавшемся файле ошибок подсветки не нашёл.

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

Когда стабильный релиз предвидится?

В течении ещё полугода. Идём по плану.

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

Нет, я вам не Попов.

Я сроки реальные называю и пока названные сроки выполняю.

И можете проверить код - весь мой, не смена label'ов известных проектов.

unDEFER ★★★★ ()

На моей слаке только собирать?

Только dub запустить?

Для начинающих смотреть на D, наверно, не мешало бы инструкций по сборке добавить, ИМХО.

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

Для начинающих смотреть на D, наверно, не мешало бы инструкций по сборке добавить, ИМХО.

Не мешало бы, не мешало бы и инструкций как пользоваться редактором, но всё это будет с релизом.

А так не знаю найдёт ли он шрифты на Slackware..

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

После сборки и запуска:

Open Database. If it takes long, try `./unde --force_recover`
Segmentation fault

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

Я заметил, что многие задумки вашего проекта реализованы в Emacs'е. Вы знакомы с Emacs'ом?

BceM_IIpuBeT ★★ ()

На счет вашей синхронизации: т.е. в теории — это запихивание всех файлов под VCS и что-то типа автоматического сохранения файлов?

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

Я наслышан о Emacs, но мне ближе vim.

И до сих пор ума не приложу если он - такая ОС, то где там запрятан хотя бы редактор изображений?

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

На счет вашей синхронизации:

Вы частично правы, но я в толк не могу взять что вы можете знать о моей синхронизации? О какой именно синхронизации идёт речь?

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

Ну, вот с ней такая беда, почему-то он с ней компилируется, хоть и падает. Нужна bdb 5.3

unDEFER ★★★★ ()

А что это за клавиатура в правом нижнем углу? Зачем и как используется?

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

Это т.н. панель клавиш. На ней отображаются все горячие клавиши (со справкой что кнопка делает если подвести курсор), кроме того можно нажать действие прямо мышкой.

В общем смесь панели инструментов и виртуальной клавиатуры.

unDEFER ★★★★ ()

Офигеть маргинальщина. А в планах у тебя сделать DE? Офигеть. За упоротость плюс. Я в свое время не решился сделать такой шаг и начать пилить самостийный редактор. Хорошо что вовремя подоспел Micro.

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

Хорошо, тогда к вашему вопросу:

на практике это запихивание всех файлов в БД, да с контролем версий и благодаря журналированию получается то самое автосохранение файлов.

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

Офигеть маргинальщина. А в планах у тебя сделать DE?

В планах довести до состояния, чтобы это не меня одного заинтересовало. Один не потяну.

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

Видим тролящий тебя школота. Потому что был бы не школотой, то не преминул бы указать тебе что редактор изображений в имаксе таки есть. Ну по крайней мере аскии арт там точно можно рисовать )))

mos ★★★★★ ()

может, разработка проекта продвинулась бы больше за 8 лет с момента начала, если бы это было реализовано не с нуля на достаточно низкоуровневом ЯП, а в виде плагинов для существующих программ: xmonad, awesome как основа de; emacs, nvim как основа редактора и т.д.

чтобы в итоге с нуля пришлось писать только те компоненты рабочего окружения, которые нельзя собрать таким образом. ну и какое-то подобие своего демона настроек, наподобие как xsettingsd, xfsettings, gnome-settings-daemon

actionless ★★★★★ ()

Очень интересно, потыкаю обязательно, может попробую помочь с разработкой, с D знаком, ничего пока не писал на нём.

DELIRIUM ★★★★★ ()

С D даже не знаком, но сам редактор выглядит довольно интересно. Особенно понравилась идея с подсветкой давности изменений на миникарте.

А что обозначает колонка с жёлтыми числами?

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

А что обозначает колонка с жёлтыми числами?

Ждал этот вопрос.

Колонка - нумерация строк в листе внутреннего дерева. Не по порядку, потому что там также хранятся не актуальные строки из истории.

В общем так - разработческие логи. Вряд ли эта колонка доживёт до релиза. Но обе колонки убираются одним махом мышки. Это во wrap-режиме, а не во wrap - их просто не видно.

unDEFER ★★★★ ()

1) В чём отличие от любого другого редактора?

2) Почему такой ШГ?

3) Почему большую часть экрана занимает какая-то ерунда?

RazrFalcon ★★★★★ ()

Очень интересные концепции. Честно, вряд ли буду пользоваться, но за «системы отмен», «псевно-директории», панель клавиш - спасибо.

(PS. Не смотрел на http://langserver.org/ для раскраски синтаксиса?)

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

за «системы отмен», «псевно-директории», панель клавиш - спасибо.

Пожалуйста!

(PS. Не смотрел на http://langserver.org/ для раскраски синтаксиса?)

Честно, не смотрел. Там ведь не только подсветка синтаксиса. Да, стоит подумать чтобы подключить такую систему.

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

1) В чём отличие от любого другого редактора?

Написал же отличия. У меня ещё поправка раскладки клавиатуры возможна, когда неправильно печатать начал :-)

2) Почему такой ШГ?

Прекрасный моноширинный шрифт. По-программистски.

3) Почему большую часть экрана занимает какая-то ерунда?

Угу, по-сравнению с другими современными интерфейсами:

http://unde.sourceforge.net/ru/ch02.html

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

unDEFER ★★★★ ()

это или произведёт революцию, или никто не оценит :)

в любом случае, это круто :)

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

Написал же отличия.

Хде?

Если вы про отмену, то всё, кроме 4-го пункта, есть в QtC (и в любой IDE).

Всё остальное тоже, в той или иной мере есть в других редакторах.

Главная задача редактора, о ужас, - отображение текста. У вас же такой ШГ, что сразу в утиль.

Прекрасный моноширинный шрифт.

Я про сглаживание, а не про начертание. У вас ШГ космический. Если вы этого не замечаете - мне вас очень жаль.

Угу, по-сравнению с другими современными интерфейсами:

Почему вы сравниваете свою поделку с офисными пакетами? Сравнивайте с теми же vim/emacs/sublime/kate. Их можно настроить так, что 100% будет текст.

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

Если вы про отмену, то всё, кроме 4-го пункта, есть в QtC (и в любой IDE).

А как там это реализовано? У меня вот для глобальной отмены и файловой два разных сочетания клавиш: Ctrl+u и Ctrl+z. А там?

У вас же такой ШГ, что сразу в утиль.

ШГ понятие относительное и настраиваемое.

Почему вы сравниваете свою поделку с офисными пакетами? Сравнивайте с теми же vim/emacs/sublime/kate. Их можно настроить так, что 100% будет текст.

Потому что место оставлено не просто так, а для инструментов. Да и кто сказал что в будущем правая панель тоже не станет убираемой?

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

¿Ты же вроде казах, но не в курсе, что узбеки не говорят «вах», как и любые другие носители тюркских языков.

Bruce_Lee ★★ ()

Выглядит отлично, надо будет попробовать, спасибо.

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

А как там это реализовано?

То есть вы даже аналоги не изучали? В QtC сразу во всех файлах отмену сделать нельзя, хз почему. Только по отдельности, и только в открытых (sublime сам открывает файлы, в которых были изменения). Видимо проще снова рефакторинг сделать. Про другие не знаю.

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

ШГ понятие относительное

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

и настраиваемое

У вас есть эти настройки?

Да и кто сказал что в будущем правая панель тоже не станет убираемой?

Не знаю. Я не ванга.

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

То есть вы даже аналоги не изучали?

Изучал, ничего подобного не видел, поэтому и спрашиваю.

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

А какие проблемы? Сперва откатяться эти самые изменения после глобальной замены, а потом и глобальная замена. Иначе надо глобальную замену обратно производить просто. Но к слову замены у меня пока вообще нет, только поиск.

У вас есть эти настройки?

Есть библиотечка, в ней 3 функции для рендеринга буковок. Не знаю может быть что-то будет лучше.

unDEFER ★★★★ ()

Всё это конечно здорово, но:

1. Свой текстовый редактор писал почти каждый программист.

2. Все эти редакторы, разрабатываемые в одиночку, подходят лишь их авторам (концептуально, по необходимым и достаточным функциям).

3. Планы по захвату вселенной — это не очень смешно. Это серьёзно.

Я бы посоветовал направить энергию в какое-то другое русло. А если уж так необходима IDE для D, лучше реализовать идеи в виде плагина для Vim/Emacs/NetBeans/Idea/Eclipse. Тогда усилия не пропадут даром в очередном неизвестном маргинальном проектике.

env ★★☆ ()

Поглядел скриншот, прочел описание, сходил по ссылке на офсайт и почитал там статьи. Могу сказать, что концепция очень толковая и интересная. Автору всех благ и успехов.

Редактор обязательно попробую.

На capslock переключение режимов вешать не советовал бы, так как у некоторых любителей vim и emacs на эту клавишу вынесены ctrl, esc либо сразу обе.

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