Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: mcedit (midnight comander, встроенный редактор): внешний форматер  (Прочитано 21260 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« : 08-11-2017 22:17 » 

Прикипел я к этому редактору за 19 лет пользования. Любители vim и emacs, а уж тем более всяких там IDE, могут считать меня ретроградом и дальше не читать.

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

Сперва хорошо бы подчистить за криворукими не очень аккуратными, убрать концевые пробелы, заменить табуляции на пробелы, убрать виндовые "\r". Чего еще? Хочу двигать отступы (обычно делается Tab и Shift-Tab при выделении). Взад и вперед. Пока хватит, но идеи приветствуются. Может есть готовый внешний форматер, чтоб за не очень аккуратными и остальное убрать?

В кратце: https://www.systutorials.com/docs/linux/man/1-mcedit/#lbAH
Еще короче: можно повесить на комбинацию клавиш shell скрипт, в котором иметь доступ ко всему файлу или к выделению, как к отдельному файлу. После успешного выполнения скрипта редактор вставит содержимое файла назад в текст.

(немного скриптов и настроек)
Код: (Perl) ~/bin/mc_macros__spaces.pl
#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

my $shift = 0;

if (@ARGV) {
    $shift = eval { int(shift) } // 0;
}

while (<>) {
    if (m/^(\s*)(\S.*?)(\s*)$/) {
        my $indent = $1;
        my $line = $2;

        for (my $p = 0; $p < length($indent); $p++) {
            my $c = substr($indent, $p, 1);

            if ($c eq "\t") {
                my $add = 8 - $p % 8;
                substr($indent, $p, 1) = ' ' x $add;
                $p += $add - 1;
            }
        }

        if ($shift) {
            if ($shift < 0) {
                substr($indent, 0, -$shift) = '';
            }
            else {
                $indent .= ' ' x $shift;
            }
        }

        say $indent, $line;
    }
    else {
        say '';
    }
}

Код: (Bash) ~/.local/share/mc/mcedit/macros.d/macro.0.sh
a       spaces clean up
        TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/up.XXXXXX` || exit 1
        mc_macros__spaces.pl < %b > $TMPFILE
        cat $TMPFILE > %b
        rm -f $TMPFILE

Код: (Bash) ~/.local/share/mc/mcedit/macros.d/macro.1.sh
a       indent up
        TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/up.XXXXXX` || exit 1
        mc_macros__spaces.pl +4 < %b > $TMPFILE
        cat $TMPFILE > %b
        rm -f $TMPFILE

Код: (Bash) ~/.local/share/mc/mcedit/macros.d/macro.2.sh
a       indent down
        TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/up.XXXXXX` || exit 1
        mc_macros__spaces.pl -4 < %b > $TMPFILE
        cat $TMPFILE > %b
        rm -f $TMPFILE

Код: (Text)  ~/.local/share/mc/mc.macros
[editor]
ctrl-alt-A=MarkAll:-1;
ctrl-alt-C=ExecuteScript:0;
ctrl-alt-U=ExecuteScript:1;
ctrl-alt-D=ExecuteScript:2;
« Последнее редактирование: 08-11-2017 22:18 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 08-11-2017 22:18 » 

а разве mc не умер?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 08-11-2017 22:19 » 

С чего бы ему умереть? Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-11-2017 10:40 » 

Странно, сейчас найти не могу, но пробегал инфа, что он больше не будет релизиться..
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 09-11-2017 12:23 » 

Цитата
25 мая 2015
На днях один из ведущих разработчиков midnight commander в конференции для разработчиков написал следующее
Цитата
   andrew_b: Я позакрывал энное количество тикетов, и, видимо, на этом всё.
    Всему приходит конец. Это были не самые плохие 5 лет в моей жизни. mc сейчас как чемодан без ручки: и бросить жалко, и нести тяжело и неудобно.
    Мне всё это надоело, «я устал, я ухожу».
https://geektimes.ru/post/250964/

А между тем...

Цитата
Последняя версия        4.8.19 (4 марта 2017)
https://ru.wikipedia.org/wiki/Midnight_Commander

Цитата
Coming soon: 4.8.20
https://midnight-commander.org/

И да, в TODO еще полно задач: https://midnight-commander.org/milestone/Future%20Releases

Если кто-то устал, не значит что все пропало. Улыбаюсь
Да же если разработка остановится совсем, продуктом можно продолжать пользоваться.


Еще нашел старую статью, как самому сделать плагин gitfs для mc.
https://habrahabr.ru/post/86756/

« Последнее редактирование: 09-11-2017 12:32 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 09-11-2017 19:35 » 

Я в Linux пользуюсь nano.  Улыбаюсь
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 09-11-2017 22:40 » 

Еще улучшения.
Совершенно не понимаю, кто и зачем придумал работать на синем фоне. Не, во времена Norton и Volkov это было пофиг, т.к. о подсветке синтаксиса даже не задумывались. Сейчас это некомфортно, лучше черный фон. И так, рецепт черной раскраски всего mc и mcedit в частности. Для разных версий skin может различаться (в новых версиях больше настроек). У меня mc-4.7.

(настройки)
Код: (Text) ~/.mc/ini
[Midnight-Commander]
skin=black

Редактировать свой ini из mc никак нельзя: выходя он его перезаписывает. Редактировать или другим редактором, или копию и потом ее скопировать в ini.

Код: (INI) ~/.mc/skins/black.ini
[skin]
    description=black editor skin

[Lines]
    lefttop=
    righttop=
    centertop=
    centerbottom=
    leftbottom=
    rightbottom=
    leftmiddle=
    rightmiddle=
    centermiddle=
    horiz=
    vert=
    thinhoriz=
    thinvert=

[core]
    _default_=lightgray;black
    selected=black;brown
    marked=black;green
    markselect=white;brightgreen
    gauge=blue;black
    input=white;black
    reverse=black;lightgray

[dialog]
    _default_=black;lightgray
    dfocus=black;cyan
    dhotnormal=blue;lightgray
    dhotfocus=blue;cyan

[error]
    _default_=white;red
    errdhotnormal=yellow;red
    errdhotfocus=yellow;lightgray


[filehighlight]
    directory=white;
    executable=brightgreen;
    symlink=lightgray;
    stalelink=brightred;
    device=brightmagenta;
    special=black;
    core=red;
    temp=gray;
    archive=brightmagenta;
    doc=brown;
    source=cyan;
    media=green;
    graph=brightcyan;
    database=brightred;

[menu]
    _default_=black;yellow
    menuhot=red;yellow
    menusel=yellow;black
    menuhotsel=red;black

[buttonbar]
    hotkey=brightred;black
    button=yellow;black

[help]
    _default_=black;lightgray
    helpitalic=red;lightgray
    helpbold=blue;lightgray
    helplink=black;cyan
    helpslink=yellow;blue

[editor]
    _default_=lightgray;black
    editbold=black;yellow
    editmarked=black;green
    editwhitespace=brightblue;black
    linestate=white;red
    bookmark=white;red
    bookmarkfound=black;green

[viewer]
    viewunderline=brightred;blue

[widget-common]
    sort-sign-up=
    sort-sign-down=

[widget-panel]
    hiddenfiles-sign-show  =
    hiddenfiles-sign-hide  =
    history-prev-item-sign =
    history-next-item-sign =
    history-show-list-sign =

[widget-scollbar]
    first-vert-char=
    last-vert-char=
    first-horiz-char=«
    last-horiz-char=»
    current-char=
    background-char=

Локаль желательна с суффиксом ".UTF-8" и терминал с поддержкой юникода. Кто бы мне сказал в 98-м, когда Linux нужно было вручную локализовывать, что в терминале без проблем будут отображаться иероглифы и прочая нечисть!
« Последнее редактирование: 09-11-2017 22:42 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 10-11-2017 04:55 » 

RXL, а я пробовал в редакторе делать чёрный фон (в студии, в креаторе) - не могу на чёрном, глаза выпучиваются о_О   Белый фон рулит Краснею
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 10-11-2017 10:07 » 

На черном цвета лучше видны. В консоли набор небольшой, всего 16 штук.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 10-11-2017 10:21 » new

Полностью поддерживаю Алексея++. Не могу работать на чёрном фоне ни в редакторах, ни в CAD. Жёлтый на синем довольно не плохо, вспоминаются время BP и BC. Из 16 цветов, наверное, лучшее сочетание. Сейчас работаю чёрным по белому. Иногда задумываюсь, что на станках "серые" мониторы лучше показывают, чем цветные.

Проблема в редакторах в основном в том, что цветное выделение слов, функций, аргументов, констант и множества ещё чего начинает плохо соотносится с цветом фона. А так, классика BC 3.1 весьма проработана.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 10-11-2017 10:54 » 

Aether, "желтый на синем" не входит в понятие "подсветка синтаксиса". И про станки тоже речи нет. Не надо размазывать тему. Речь только о работе с исходниками. И цветовое убожество BC лучше не вспоминать. Каким дальтоником надо быть, чтобы считать cyan подходящим фоном. Странные разработчики BC Улыбаюсь
« Последнее редактирование: 10-11-2017 10:58 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 10-11-2017 11:14 » 

И цветовое убожество BC лучше не вспоминать.
Недостатки BC только в одном: в палитре DOS можно найти лишь около четырёх удачных сочетаний цветов шрифта с данным фоном, остальные идут в диссонанс. Было бы лучше использовать для подсветки не только цвета, но и разные шрифты. Однако, это требует наличие нормального графического интерфейса.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 10-11-2017 11:33 » 

Терминалы могут поддерживать до 256 цветов. На практике пока не использовал. Сделал цветопробу.

Первые 16 цветов не привожу, они совпадают со стандартной палитрой.
Далее идет набор по 6 бит на компоненту: 6 х 6 х 6 = 216 цветов.
Далее 24 света серой шкалы.

черный и серый фон

черный и белый фон


Почитать по теме: https://habrahabr.ru/post/161999/

PS: современные терминалы могут поддерживать и RGB 16М, но putty поддерживает только 256 цветов.

* term256_on_grey.png (118.79 Кб - загружено 2350 раз.)
* term256_on_white.png (118.65 Кб - загружено 2688 раз.)
« Последнее редактирование: 10-11-2017 11:59 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 10-11-2017 11:39 » 

Недостатки BC только в одном: в палитре DOS можно найти лишь около четырёх удачных сочетаний цветов шрифта с данным фоном, остальные идут в диссонанс.

А на черном фоне все остальные 15 цветов не теряются. Чего не скажешь о белом фоне, а уж тем более о синем.

Добавлено через 19 минут и 8 секунд:
Кстати, в mc-4.8.19 вижу уже готовые темные "скины". Вполне съедобны.
« Последнее редактирование: 10-11-2017 11:58 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 10-11-2017 13:28 » 

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

На чёрном фоне тёмные цвета выглядят также плохо, как светлые на белом. Однажды, когда я учился, одному студенту дали задание построить модель какой-то опоры. Он её разрисовал: зелёным, фиолетовым, жёлтым... Показал преподавателю, а тот, после паузы: "Слушай, ты случаем не цыган?" Улыбаюсь Я к чему: везде нужно знать меру.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 10-11-2017 13:54 » 

Во втором предложении первого поста есть ответ по текущей теме. Любители кликать могут и дальше кликать, а мы будем стучать по кнопкам.

На черном отлично видны все базовые 15.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 10-11-2017 16:26 » 

На вкус и цвет все фломастеры, как известно, разные Улыбаюсь Потому спорить о том какие сочетания цветов лучше, вещь бесперспективная и бесполезная. Ибо на вкус и цвет...
Еще несколько лет назад, когда я активно работал и кодил, у меня все что можно было в темных фонах, по возможности - черных. А потом, на каком-то этапе, я вдруг почувствовал (ну прям, как Алексей++), что глазки-то у меня "выпучиваются". С тех самых пор все фоны в редакторах были исключительно светлыми, причем не белыми (по той же причине "выпучивания"), а слегка сероватыми. С тех давних пор у меня остался только TotalCommander в темной теме...
А в работе я в 99% случаев использовал IDE Eclipse, ну, просто в силу того, что это "родная" IDE для разработки в QNX. И, да, там по умолчанию светлый фон и приятная расцветка синтаксиса, в том числе и разные шрифты. Просто радость для глазок. Что само по себе, наверное, очень немаловажно.
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 10-11-2017 17:42 » 

На вкус и цвет. Но я говорю про "консоль" или "окно терминала". Классика фона: черный.
А чтобы глаза не уставали нужен умеренный световой фон в комнате, отсутствие бликов от экрана, отсутствие засветки лампами "в глаз". Короче, что было комфортно своим глазам.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 10-11-2017 18:31 » 

Классика - это белая бумага и чёрные или синие, иногда красные, чернила. На западе для черчения используют и синий фон с белыми чернилами. Я полагаю, была попытка растянуть на заре мониторостроения ресурс люминофора или что-то вроде, таким образом, первым был вывод с чёрным фоном. Затем, потихоньку, в эре DOS пошёл синий фон. Мне конечно намного более нравится белый фон, но тут каждому ближе своё.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 10-11-2017 21:39 » 

Aether, любишь же ты рассказывать про метрическую резьбу в кулинарном чате...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #20 : 11-11-2017 05:13 » 

Ну раз пошли такие пироги. Если совсем вспоминать классику. То это черный фон и зеленные буквы Улыбаюсь. В свое время я долго работал в такой палитре Улыбаюсь У монитора просто не было других цветов.
Полностью поддерживаю Михалыча, насчет того, что у всех тапочки разные. 
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 11-11-2017 08:48 » 

или зеленые или желтые
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 11-11-2017 09:43 » 

Не желтый — оранжевый. Я до сих пор терминал так настраиваю.


* orange_terminal.png (6.19 Кб - загружено 1712 раз.)
« Последнее редактирование: 11-11-2017 09:54 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 11-11-2017 15:33 » 

Вот с сайтов с такой, чёрной, палитрой я ухожу, даже их не читая.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 11-11-2017 22:51 » 

Мне тоже не нравятся вырвиглазные сайты. Но при чем тут они?

Я надеялся, что у нас кто-нибудь еще использует mc и mcedit, что инфа кому-нибудь пригодится.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #25 : 11-11-2017 23:04 » 

Мне тоже не нравятся вырвиглазные сайты. Но при чем тут они?
Я уже стал переживать! Мало ли?  Я шокирован! Грядёт модернизация.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines