Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы
Posted: Sat 16 Jul, 2016 15:26
by IgorZ
Данный скрипт выполняет три функции:
Отрисовывает вертикальную линию в редакторе в указанной колонке (предполагается, что так будет отмечаться правая граница текста, но возможно использование в любых вообразимых целях). Линия может быть перемещена влево-вправо клавишами AltShiftLeft / AltShiftRight и возвращена на исходную позицию AltShiftHome. Позиция линии запоминается для каждого открытого файла до перезагрузки макросов.
Для каждого впервые открытого файла устанавливается кодовая страница.
Для каждого открытого файла запоминается цветовая схема плагина FarColorer. Хранится до перезагрузки макросов.
Позицию вертикальной линии, кодовую страницу и цветовую схему можно задавать по умолчанию для произвольной файловой маски в стиле Far (некоторые примеры есть в файле скрипта). Маски задаются таблицей и перебираются последовательно до нахождения первой подходящей. Для каждого параметра перебор делается независимо, поэтому позиция линии, цветовая схема и кодовая страница по умолчанию могут быть взяты от разных файловых масок.
Основой послужил скрипт авторства Shmuel. Исходная тема.
AltShiftLeft - сдвиг линии на позицию влево;
AltShiftRight - сдвиг линии на позицию вправо;
AltShiftHome - возврат линии на позицию по умолчанию;
F3 - в меню выбора типов FarColorer просмотр имени цветовой схемы с возможностью копирования в буфер обмена. Имя схемы (регистрозависимо!) требуется для указания в настройках скрипта.
Версия 1.0.0 - Исходный скрипт авторства Shmuel.
Версия 1.1.0 - При перемещении границы в заголовке редактора выводится новая позиция. Добавлено кнопкосочетание AltShiftHome для возврата на изначальную позицию.
Версия 1.2.0 - Позиция линии запоминается для каждого файла отдельно. При перезагрузке макросов информация сбрасывается. Теперь можно задавать для разных масок файлов свои начальные позиции для линии.Маски перебираются по очереди до первой подходящей.
Версия 1.2.1 - Рефакторинг. Уточнение работы таймера.
Версия 1.3.0 - Установка цветовой схемы FarColorer по маске файла.
Версия 1.3.1 - Предыдущий вариант установки цветовой схемы иногда сбоил. Переделано.
Версия 1.3.2 - Исправление ошибок.
Версия 1.4.0 - Добавлено хранение текущей кодовой страницы для каждого файла. Цветовая схема теперь также сохраняется текущая для каждого файла. Переделана работа с FarColorer. Маски теперь перебираются для каждого параметра независимо.
Версия 1.5.0 - Позицию линии можно задавать в процентах от ширины экрана ("90%"). Текущей кодовая страница для файла снова хранится Far-ом. Рефакторинг.
Отображение правой фиксированной границы в редакторе
Вопрос следующий: есть ли возможность во внутреннем редакторе показать правую фиксированную границу (скажем, 80 символов)? То есть нужна вертикальная линия определённого цвета, отличного от цвета основного фона, шириной в один символ, расположенная в определённой колонке.
Покопался в документации к Far Colorer... ничего похожего не нашёл. Возможно плохо искал.
-- Settings
local FileMask = "*"
local Color = 0xF0
local Pos = 80
-- End of settings
local F = far.Flags
local colorFlags = F.ECF_TABMARKFIRST + F.ECF_TABMARKCURRENT + F.ECF_AUTODELETE
Event {
description="Add right border line";
group="EditorEvent";
filemask=FileMask;
action=function(EditorId, Event, Param)
if Event==F.EE_REDRAW then
local Info = editor.GetInfo(EditorId)
local l1 = Info.TopScreenLine
local l2 = math.min(l1+Info.WindowSizeY-1, Info.TotalLines)
for line=l1,l2 do
local p = editor.TabToReal(EditorId,line,Pos)
editor.AddColor(EditorId,line,p,p,colorFlags,Color,100)
end
end
end
}
Macro {
description="Move border line";
area="Editor"; key="AltShiftLeft AltShiftRight";
filemask=FileMask;
action=function()
if akey(1)=="AltShiftLeft" then Pos=math.max(1,Pos-1) else Pos=Pos+1 end
end;
}
Отображение правой фиксированной границы в редакторе
Posted: Sat 16 Jul, 2016 17:48
by brigadir
@Shmuel Огромное спасибо! Легко и просто! То что надо! Спасибо!
Отображение правой фиксированной границы в редакторе
Отображение правой фиксированной границы в редакторе
Posted: Sat 16 Jul, 2016 18:13
by brigadir
@Shmuel Теперь всё работает! Ещё раз большое спасибо за помощь!
Отображение правой фиксированной границы в редакторе
Posted: Tue 18 Oct, 2016 06:02
by IgorZ
Понадобилось на ходу временно менять позицию правой границы. В результате слегка доработал данный скрипт. Теперь при перемещении границы в течение секунды (настраивается) после последнего нажатия клавиши перемещения границы в заголовке редактора выводится новая позиция. Также добавлено кнопкосочетание AltShiftHome для возврата на изначальную позицию.
local k = akey(1):sub(9)if k=="Home"then Pos=StartPos elseif k=="Left"then Pos=math.max(1,Pos-1)else Pos=Pos+1end
ifnot EdTitle then EdTitle = editor.GetTitle() Timer = far.Timer(Period,OnTimer)end
Editor.SetTitle("VLine at : "..Pos.." ") LastTime = Far.UpTime
end;
}
Отображение правой фиксированной границы в редакторе
Posted: Wed 08 Nov, 2017 07:46
by IgorZ
Ещё раз доработал скрипт. Два изменения:
Позиция линии запоминается для каждого файла отдельно. При перезагрузке макросов информация сбрасывается.
Теперь можно задавать для разных масок файлов свои начальные позиции для линии. К примеру, в выложенном варианте для файлов с расширениями .sql и .pc линия по умолчанию будет в 81-й позиции, а для остальных - в 151-й. Маски перебираются по очереди, как записаны в файле, до первой подходящей.
Отображение правой фиксированной границы в редакторе
Posted: Sat 26 Jun, 2021 00:26
by AlexL
Скачал, положил в "Addons\Macros\scripts\", а при открытии C-файла вертикальной полосы нет. Даже в FAR 5820 (в котором Visualizer и CCAssistant еще работали). Где я ошибся?
Отображение правой фиксированной границы в редакторе
Posted: Sat 26 Jun, 2021 01:05
by HaRT
!
Message from: HaRT
AlexL wrote: ↑Sat 26 Jun, 2021 00:26
положил в "Addons\Macros\scripts\"
Неправильно. Идите читать Far FAQ (ссылка вверху страницы). И за нарушение правил форума бан на неделю.
Отображение правой фиксированной границы в редакторе
Posted: Tue 06 Jul, 2021 08:50
by John Doe
@IgorZ
Оформите шапку?
Отображение правой фиксированной границы в редакторе
Posted: Thu 08 Jul, 2021 17:14
by AlexL
Предлагаю так:
local Period = 1000 -- длительность отображения в заголовке текущей позиции линии в миллисекундах local MoveableMargin = true -- Можно ли двигать правую границу по <Alt><Shift><Left> и т.д. Может мешать выделению вертикальных блоков.
-- End of settings
if MoveableMargin then
Macro { -- передвинуть линию влево/вправо/на исходную позицию
description="Move border line"; area="Editor";
key="AltShiftLeft AltShiftRight AltShiftHome"; action=OnKey;
} end
(Три новых строки выделены цветом.)
Менять переменную "MoveableMargin" легче, чем комментировать всё макро. Да и текстовое объяснение не помешает.
Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы
Posted: Fri 09 Jul, 2021 06:28
by IgorZ
John Doe wrote: ↑Tue 06 Jul, 2021 08:50
@IgorZ
Оформите шапку?
Сделал. Заодно причесал все наработки и выложил свежую версию.
Много доработок по сравнению с последней выложенной, подробности в истории версий в заглавном посте темы.
AlexL wrote:Предлагаю так ... Может мешать выделению вертикальных блоков.
Кроме AltShiftСтрелки для выделения вертикальных блоков можно использовать AltCtrlСтрелки и просто AltСтрелки, так что не вижу необходимости в данной модификации. Кроме того, замечательный модуль rebind авторства JohnDoe позволяет переназначать клавици макросам и даже вообще отключать их, совсем не вмешиваясь в исходный код. Рекомендую. Для большего удобства пользования rebind можете использовать мой LuaManager (да, это самореклама ).
Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы
Posted: Fri 09 Jul, 2021 07:25
by John Doe
IgorZ wrote: ↑Sat 16 Jul, 2016 15:26
Для каждого открытого файла запоминается кодовая страница.
А разве фар сам не запоминает?
Отображение и запоминание вертикальной границы в редакторе, кодовой страницы и цветовой схемы
Posted: Fri 09 Jul, 2021 09:51
by buniak_a_h
John Doe wrote: ↑Fri 09 Jul, 2021 07:25
А разве фар сам не запоминает?
1. Вроде, запоминает …
2. На самом деле полезность скрипта сильно ослабляется (даже обнуляется) фразой "до перезагрузки макросов". Но запоминать в базе такие параметры для каждого файла очень накладно. Логично было бы привязать к расширению (к маске). Ну и запоминать в db (с предоставлением сервиса по удалению и, возможно, редактированию запомненного).