Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by IgorZ »

Данный скрипт выполняет три функции:
  1. Отрисовывает вертикальную линию в редакторе в указанной колонке (предполагается, что так будет отмечаться правая граница текста, но возможно использование в любых вообразимых целях). Линия может быть перемещена влево-вправо клавишами AltShiftLeft / AltShiftRight и возвращена на исходную позицию AltShiftHome. Позиция линии запоминается для каждого открытого файла до перезагрузки макросов.
  2. Для каждого впервые открытого файла устанавливается кодовая страница.
  3. Для каждого открытого файла запоминается цветовая схема плагина FarColorer. Хранится до перезагрузки макросов.
Позицию вертикальной линии, кодовую страницу и цветовую схему можно задавать по умолчанию для произвольной файловой маски в стиле Far (некоторые примеры есть в файле скрипта). Маски задаются таблицей и перебираются последовательно до нахождения первой подходящей. Для каждого параметра перебор делается независимо, поэтому позиция линии, цветовая схема и кодовая страница по умолчанию могут быть взяты от разных файловых масок.

Основой послужил скрипт авторства Shmuel. Исходная тема.




Attachments
vertical_line.1.5.0.7z
(4.05 KiB) Downloaded 133 times
Last edited by IgorZ on Mon 22 Nov, 2021 09:18, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by buniak_a_h »

Latest post of the previous page:

John Doe wrote: Fri 09 Jul, 2021 07:25 А разве фар сам не запоминает?
1. Вроде, запоминает …
2. На самом деле полезность скрипта сильно ослабляется (даже обнуляется) фразой "до перезагрузки макросов". Но запоминать в базе такие параметры для каждого файла очень накладно. Логично было бы привязать к расширению (к маске). Ну и запоминать в db (с предоставлением сервиса по удалению и, возможно, редактированию запомненного).
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by IgorZ »

John Doe wrote:А разве фар сам не запоминает?
Так-то запоминает. Но сначала появилась идея для различных групп файлов устанавливать разные кодовые страницы по умолчанию, а затем понял, что, допустим, те же .bat-файлы у меня лично на работе встречаются и в той, и в другой кодировке (исторически сложилось), так что надо иметь возможность менять кодировку, если она отлична от умолчательной, и сохранять её. В общем, я добавил сохранение и для кодировки. Если сохранение убрать, то при каждом открытии назначается кодировка по умолчанию, согласно маске, а это не есть гут. Возможно, можно было и обойти это, но сейчас (и уже долго так :( ) нет времени сидеть и думать: работает, и ладно. Возникнут проблемы - придётся решать, а пока пусть будет, как есть.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by IgorZ »

buniak_a_h wrote:Логично было бы привязать к расширению (к маске). Ну и запоминать в db (с предоставлением сервиса по удалению и, возможно, редактированию запомненного).
Ну так и привязано к маске. Таблица Masksв файле скрипта. Есть желание - добавляйте, хоть для каждого файла, если понадобится, отдельную маску. Например, {fm="C:\autoexec.bat",cp=1251,cs=default,rc=73},.
А запоминать параметры в БД - замысел на будущее такой у меня имеется, когда со свободным временем будет попроще. И настройки в диалоге, и локализация, и справка... Всё, как в других моих скиптах. В перспективе. А пока - так.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by buniak_a_h »

IgorZ wrote: Fri 09 Jul, 2021 10:19 надо иметь возможность менять кодировку, если она отлична от умолчательной, и сохранять её
Так ФАР сохраняет кодировку именно файла, а не согласно маске! Т.е надо один раз открыть файл, поменять кодировку на ту, что нужна именно для этого конкретного файла - и всё! В следующий раз файл откроется в той же кодировке!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by John Doe »

IgorZ wrote: Fri 09 Jul, 2021 10:19 Но сначала появилась идея для различных групп файлов устанавливать разные кодовые страницы по умолчанию
Это лучше делать не безусловно, а только если файла ещё нет в истории, тогда не придётся запоминать (можно будет положиться на фар)
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by John Doe »

John Doe wrote: Fri 09 Jul, 2021 11:18 Ну так и привязано к маске.
Раз уж скрипт ориентируется на колорер, то можно привязываться к его типам.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by HaRT »

buniak_a_h wrote: Fri 09 Jul, 2021 09:51 Но запоминать в базе такие параметры для каждого файла очень накладно.
Позицию в редакторе и кодировку Фару запоминать не накладно, а тут вдруг накладно?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by John Doe »

Фар работает через SQLite, а мы (без дополнительных средств) черт знает как.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by buniak_a_h »

John Doe wrote: Fri 09 Jul, 2021 11:47 Фар работает через SQLite, а мы (без дополнительных средств) черт знает как.
А mf.mload/mf.msave разве не через SQLite работают? Точнее, SettingsControl …
%FarHome%Encyclopedia\FarEncyclopedia.ru\html\service_functions\settingscontrol.html wrote:Функция SettingsControl позволяет управлять загрузкой настроек из базы данных плагина или Far Manager, а также сохранением настроек в базу данных плагина.
Last edited by buniak_a_h on Fri 09 Jul, 2021 15:07, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by John Doe »

buniak_a_h wrote: Fri 09 Jul, 2021 15:04 А mf.mload/mf.msave разве не через SQLite работают? Точнее, SettingsControl …
Важно не только через что в конечном счёте оно работает, но и "как".

Например если использовать mf.msave для сохранения таблицей, то получим огромный расход памяти.
А если сохранять отдельными ключами, то можем получить тормоза, поскольку mf.mload/mf.msave это "надстройка над надстройкой", и однозначно будет проигрывать по производительности прямому sql-запросу.
Впрочем, возможно производительность тут не критична, ведь мы загружаем/сохраняем лишь один файл за раз.

И т.п.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by citRiks »

чтбы не было сюрпризов, я бы еще посоветовал везде сделать так:
fn = string.lower(fn)
PS
как и везде, где строковая переменная используется как ключ таблицы
Last edited by citRiks on Fri 09 Jul, 2021 22:31, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by HaRT »

citRiks wrote: Fri 09 Jul, 2021 22:24 чтбы не было сюрпризов, я бы еще посоветовал везде сделать так:
fn = string.lower(fn)
Чтобы было ещё меньше сюрпризов, надо также учитывать, не включена ли для директории чувствительность к регистру имён файлов.
Фар есть инструмент, а не нянька. © 2009 DrKnS
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by IgorZ »

buniak_a_h wrote: Fri 09 Jul, 2021 10:32
IgorZ wrote: Fri 09 Jul, 2021 10:19 надо иметь возможность менять кодировку, если она отлична от умолчательной, и сохранять её
Так ФАР сохраняет кодировку именно файла, а не согласно маске! Т.е надо один раз открыть файл, поменять кодировку на ту, что нужна именно для этого конкретного файла - и всё! В следующий раз файл откроется в той же кодировке!
А мне надо, чтоб по маске. Чтоб все *.sql по умолчанию открывались в кодировке DOS (ибо так настроен сервер), а все *.lua - в UTF8. Но при этом, чтоб можно было для конкретного файла установить другую кодировку, поскольку он - исключение из общего правила. И, как я уже писал, если не сохранять кодировку вручную, то аналогичный встроенный механизм Far перекрывается установкой по маске. При этом для каждого открытого файла УЖЕ хранится информация (по правой колонке и по цветовой схеме), то есть дополнительные накладные расходы по хранению кодовой страницы стремятся к нулю. Впрочем, посмотрю на предложение John Doe, возможно, переделаю так.
John Doe wrote: Fri 09 Jul, 2021 11:18
IgorZ wrote: Fri 09 Jul, 2021 10:19 Но сначала появилась идея для различных групп файлов устанавливать разные кодовые страницы по умолчанию
Это лучше делать не безусловно, а только если файла ещё нет в истории, тогда не придётся запоминать (можно будет положиться на фар)
Идея имеет право на жизнь, но надо проверить, что выгоднее. Запишу себе, спасибо.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by buniak_a_h »

IgorZ wrote: Mon 12 Jul, 2021 07:39 А мне надо, чтоб по маске. Чтоб все *.sql по умолчанию открывались в кодировке DOS (ибо так настроен сервер), а все *.lua - в UTF8. Но при этом, чтоб можно было для конкретного файла установить другую кодировку, поскольку он - исключение из общего правила.
Понял Вас. Я для этого сделал скрипт. Наверно, тут таких много :-)
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by Wave »

А брать границу из плагина [ESC] сильно сложно? Мне только этой фичи не хватает, чтобы отказаться от плагина Visualiser, который всё равно сломался с добавлением прозрачности в работу ФАРа с цветами.

Хотя… Дошло, что в крайнем случае я могу продублировать в самом макросе все варианты границ из конфигов [ESC]. Правда, кое-где они там указаны в процентах, да и вообще довольно дурная работа, но может сработать.
Пользуюсь ФАРом больше 20 лет © собирательный.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы

Post by IgorZ »

Пока появилось время, реализую задумки.

Версия 1.5.0 -
  • Позицию линии можно задавать в процентах от ширины экрана ("90%"). Раз уж [ESC] позволяет хранить в процентах, стоит добавить для удобства. Задаётся как показано, строкой.
  • Текущей кодовая страница для файла снова хранится Far-ом. По итогам раздумий пришёл к выводу, что тут я перемудрил в прошлой версии.
  • Рефакторинг.
Post Reply

Return to “Полезные макросы и скрипты”