LINUX.ORG.RU

Форк Midnight Commander c поддержкой панельных плагинов

 , , , ,


4

2

https://www.opennet.ru/opennews/art.shtml?num=66018.

Выпущен консольный файловый менеджер Midnight Commander 6.0.3 (mc6), представляющий собой форк GNU Midnight Commander 4.8.33, расширенный поддержкой панельных плагинов и поставляемый со встроенным PTY-терминалом mcterm. Интегрированный в mc6 фреймворк панельных плагинов позволяет отображать в панелях не только файловые системы, но и контейнеры, Git-репозитории, базы данных и объекты удалённых хранилищ. Код проекта написан на языке Си и распространяется под лицензией GPLv3+. Готовые пакеты подготовлены для Debian и Ubuntu, Fedora и RHEL, а также Arch Linux в форматах DEB, RPM и pkg.tar.zst. Для Gentoo дополнительно предоставлен ebuild для установки через локальный overlay.

В состав выпуска вошли плагины для работы с архивами, FTP/SFTP/FTPS, Samba, Git, Docker, Kubernetes, MongoDB и S3-совместимыми хранилищами. Плагины поддерживают стандартные файловые операции, а переработанная поддержка архивов на базе libarchive заметно (в десятки или сотни раз) ускоряет обработку больших архивов.

Во встроенный текстовый редактор mcedit добавлены возможность сворачивания блоков кода, браузер истории Undo/Redo, средства управление макросами и поддержка сохранения файлов через sudo. В разы улучшена производительность при работе с очень длинными строками.

Просмотрщик mcview получил древовидное представление JSON, YAML и XML, интерактивную фильтрацию содержимого, базовую поддержку отображения разметки Markdown и режим воспроизведения файлов с ANSI-последовательностями.

В состав включён встроенный PTY-терминал mcterm с собственным эмулятором терминала, предназначенный для замены традиционного subshell-механизма.

★★★★★

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

Не глядя на заголовок, отличишь, где кто?

Конечно. По меню же понятно, особенно по LCtrl. :)

dataman ★★★★★
() автор топика

@angel_il, ещё хотелось бы, чтобы в новом панельном фильтре по Alt-Shift-S, он не сбрасывался при переходе по каталогам. Может быть с дополнительной опцией такого поведения.

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

Аналогично с ‘user menu’. В mc настраиваю прямым редактированием файла. В фар тоже настраивал прямым редактированием файла, хотя это и хуже чем в mc. Но инструментом в фар вообще отвратительно.

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

Ну смотреть, вроде-бы неплохо. А как реально пользоваться…

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

Я видел, конечно, но больше бы пригодилось рисование таблиц в Markdown.
Сразу вспомнились «резиновые таблицы» в W&D и Лексиконе. Для Фара, кажется, тоже был/есть подобный плагин.

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

Сразу вспомнились «резиновые таблицы» в W&D и Лексиконе.

у меня резиновые как в wd )

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

Нейросеточка трудится не покладая виртуальных рук.

сложно представить современную разработку без нейросетей. Только трудится всегда человек а нейросеть может быть хорошим инструментом и делать эффективнее разработчика. Не так ли?

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

но больше бы пригодилось рисование таблиц в Markdown.

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

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

нет такого что линия идет строго сверху вниз, текст то не выровнен и четкой границы нет

Ну почему же?
Вот ЛОРовский пример:

|    Heading Centered    | Heading Left Aligned   |  Heading Centered  |   Heading Right Aligned |
|------------------------|:-----------------------|:------------------:|------------------------:|
| Cell text left aligned | Cell text left aligned | Cell text centered | Cell text right aligned |
| cell 21                | cell 22                |      cell 22       |                 cell 22 |

Даёт:

Heading CenteredHeading Left AlignedHeading CenteredHeading Right Aligned
Cell text left alignedCell text left alignedCell text centeredCell text right aligned
cell 21cell 22cell 22cell 22
dataman ★★★★★
() автор топика
Ответ на: комментарий от angel_il

Не так ли?

Только вот первый вопрос в том, насколько эффективен код, которого чуть ли не в каждом коммите появляются десятки и сотни строк (а нейрорслоп там таки проскакивает), а второй вопрос – кто этот нейрослоп потом будет разгребать, когда запал иссякнет.

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

(а нейрорслоп там таки проскакивает)

не думаю. код то пишу я, что там нейрослопного?

потом будет разгребать, когда запал

зачем кому то разгребать?

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

А то в mcedit + tree-sitter кто-то навайбкодил PR в MC. :)

я смотрел и пробовал tree-sitter но это слишком «дорого» для mc, он ведь работает на любом железе а там одни правила на сотни мегабайт.

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

когда запал иссякнет.

андрей, я не знаю. но я пишу так чтобы было не сложно поддерживать было.

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

а API mcedit позволяет раскраску

нет, прямого доступа к лексемам abi не дает, поэтому из плагина или скрипта нельзя красить внутри редактора.

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

а API mcedit позволяет раскраску?

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

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

но есть контроль над контентом, можно манипулировать содержимым

По номеру строки можно?
Я в Far давно добавлял:

svs 2012-05-10 12:06:11+04:00 - build 2663
1. Mantis#0002059: Макрофункции для обращения к строкам редактора по индексу
   (from DAtaMan)

   1. Небольшая оптимизация Editor::GetStringByNumber

   2. Добавлены макрокоманды:

     N=Editor.DelLine([Line])
     S=Editor.GetStr([Line])
     N=Editor.InsStr([S[,Line]])
     N=Editor.SetStr([S[,Line]])

     если Line не задана, то функции работают с текущей строкой.

   Тестовый макрос - удаление пустых строк:

     $If(Selected)
       %StartLine=Editor.Sel(0, 0);
       %EndLine=Editor.Sel(0, 2);
     $Else
       %StartLine=1;
       %EndLine=Editor.Lines;
     $End

     %Count=%EndLine-%StartLine+1;
     %i=%StartLine;
     Editor.Undo(0);
     $Rep(%Count)
       $If(Len(Trim(Editor.GetStr(%i)))==0)
         Editor.DelLine(%i);
       $Else
         %i=%i+1;
       $End
     $End
     Editor.Undo(1);
dataman ★★★★★
() автор топика

Вставил в mcterm «Новость» из системного буфера обмена.
Вставилось «Нооть».

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

а вставка череш shift-правая кнопка мыши?

Это у меня вообще не работает. Может быть дело в моём WezTerm.
Хотя в xterm+bash временами тоже не весь алфавит вставляется.

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

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

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

Я xterm и bash не пользуюсь, так что у меня их дефолтные девуановсие (== дебиановские?) настройки, если это поможет.
Да, с cat alphabet_ru.txt в mcterm всё нормально.

Для удобства: абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ. :)

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

Конфликт расширенного кодирования клавиш (CSI u)

В WezTerm по умолчанию включена экспериментальная поддержка enable_csi_u_key_encoding. Иногда при переключенной русской раскладке комбинация вставки (например, Shift + Insert или Ctrl + Shift + V) из-за этого режима отправляет некорректные escape-последовательности вместо текста.Как исправить: Добавьте в файл конфигурации wezterm.lua:

config.enable_csi_u_key_encoding = false
angel_il ★★★★★
()
Ответ на: комментарий от angel_il

В WezTerm по умолчанию включена экспериментальная поддержка enable_csi_u_key_encoding

Наоборот — отключена. https://wezterm.org/config/lua/config/enable_csi_u_key_encoding.html:

The default for this option is false.

Но я пробовал и так и сяк — повторяется. И, как я выше написал, и в xterm+bash тоже.
Сейчас проверил в Konsole+sh — тоже повторяется. Так что дело явно не в WezTerm. :)

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

Может быть лучше не в плагине, а в диалог «Appearance…» добавить кнопку [Edit]?

чуть

Какое гигантское преувеличение! :)
Спасибо!

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

опция показа и скрытия переводов строки, как во многих других редакторах

https://github.com/blue-panels/mc6/pull/223

Как-то странно работает: если [ ] Show control characters, то в конце строк добавляется пробел и пустое место, а курсор не двигается к последнему символу в строке по End.

dataman ★★★★★
() автор топика

Попробовал перенести дефолтное меню mc из Debian. В нём есть пункты для сжатия текущего каталога в архив, при выборе которых предлагается ввести имя архива без расширения или использовать имя каталога. Читается оно с помощью «read».

Так вот, это выглядит немного странно, потому что курсор находится на строке с крутилкой и путём, но ввод отрабатывает штатно.

https://i.ibb.co/fY32V2Kg/image.png

[Compress the current subdirectory (tar.gz)]
hotkey=3
command=Pwd=`basename %d /`\necho -n "Name of the compressed file (without extension) [$Pwd]: "\nread tar\n[ "$tar"x = x ] && tar="$Pwd"\ncd .. && \\\ntar
cf - "$Pwd" | gzip -f9 > "$tar.tar.gz" && \\\necho "../$tar.tar.gz created."
view=false
silent=false

Не уверен, что это баг или недоработка.

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

Но я пробовал и так и сяк — повторяется. И, как я выше написал, и в xterm+bash тоже.

Сейчас проверил в Konsole+sh — тоже повторяется. Так что дело явно не в WezTerm. :)

согласен

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

Может быть лучше не в плагине, а в диалог «Appearance…» добавить кнопку [Edit]?

у меня есть штатная возможность дать плагину объявить себя в определенном меню, но плагин не может себя внедрять в произвольный диалог. А если мы диалогу говорим, что вот на этой кнопке будет такой то плагин, то мы внедряем зависимость в ядре от плагина, а это архитектурно неправильно. Ядро не должно и не может знать о плагинах, но можно просто перенести пункт меню «Skin editor…» в «Options», под пунктом «Appearance»

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

Как-то странно работает: если [ ] Show control characters, то в конце строк добавляется пробел и пустое место, а курсор не двигается к последнему символу в строке по End.

это гляну, там ко идее 1 строчка кода.

angel_il ★★★★★
()

В промпте fish shell ещё один небольшой визуальный баг вылез.

У меня строка приглашения начинается с зелёного текста, без подчеркивания. Если посмотреть этот промпт через mcterm - зелёный текст почему-то получает подчеркивание.

Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от angel_il

В MC идут по пятам. :)
«Full support edit CRLF(win) files in editor- #5151 »:

This is opencode AI-driven improvement in editor for support edition of Win (CRLF) files (and with mixed line ends).

Current version of editor didn’t support CRLF (win) files (show only ^M at line ends), adding any new line in such file was difficult, because it add all lines in LF (unix) mode. Now it automatically detect current line-end-style in file and can add new lines with right EOL (U - \n, W - \r\n, M - \r).

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

Ядро не должно и не может знать о плагинах

Тогда тем более перенести бы редактор скинов в ядро. ;)

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

Тогда тем более перенести бы редактор скинов в ядро. ;)

эта штука не настолько полезная чтобы ей работать на роутере или еще чем то одноплатном.

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

там идея немного другая, патч позволяет редактировать виндовые файлы с сохранением формата, я такое пробовал делать но там есть некоторые моменты которые не до конца решаемы, например курсор может попасть между \r и \n. У меня просто скрываются управляющие символы чтобы не мешались а в патче попытка сделать возможность редактировать и не портить «чужой» формат, тоже Ок, но патч чуть более многословный. У меня основная правка это пара строк кода + обвязка для меню и хоткея.

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

Зато будет работать у собирающих mc6 без плагинов. Думаю, такие будут.

по идее можно просто выпустить как отдельную утилиту. )

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

ещё хотелось бы, чтобы в новом панельном фильтре по Alt-Shift-S, он не сбрасывался при переходе по каталогам. Может быть с дополнительной опцией такого поведения.

Добавка: он ещё сбрасывается при вызове редактора, вьюера, менюшек, помощи… Чего не хотелось бы.

Может быть с дополнительной опцией такого поведения.

А если фиксировать его по Ctrl-L?

dataman ★★★★★
() автор топика
Ответ на: комментарий от Ja-Ja-Hey-Ho

Fish-4.0.6.

Как воспроизвести:

  1. Создать нового пользователя для теста, далее выполнять все команды под ним;
  2. fish - запускаем Fish с дефолтным конфигом;
  3. mc - запускаем MC6.

Результат: Первое слово в промпте начинает отображаться с подчёркиванием.

Демонстрация:

  1. Дефолтный промпт Fish: https://i.ibb.co/qYD1pbLR/mc6-fish-default-no-bug.png
  2. Промпт Fish после запуска через mcterm: https://i.ibb.co/8nkJdpSw/mc6-fish-default-mcterm-bug.png

Пока писал инструкцию как воспроизвести - нашёл ещё 1 баг.

MC6 падает с SIGFPE, если запущен на очень маленьком терминале: 9 строк, 60 колонок.

Ja-Ja-Hey-Ho ★★★★★
()

А есть какое-нибудь решение, чтобы ставить и запускать mc6, не удаляя ванильный mc? Судя по комментариям выше, я не одинок в этом вопросе.

hobbit ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.