Page 3 of 4
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 05:16
by Aidar
Latest post of the previous page:
01ssv wrote:Здравствуйте, подскажите как устанавливать плагин? Создал папку BlockIndent в папке Plugins поместил в нее файл BlockIndent.lua, но плагин не подхватывается, в списке плагинов в редакторе не вижу его.
Это не плагин, а макрос, заменяющий плагин.
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 05:53
by 01ssv
Aidar wrote:Это не плагин, а макрос, заменяющий плагин.
В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 07:35
by Aidar
01ssv wrote:В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?
Скопировать файл, приведённый по ссылке, в каталог
%FarProfile%\Macros\scripts
или любой его подкаталог.
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 08:26
by 01ssv
С макросами разобрался благодаря теме,
http://forum.farmanager.com/viewtopic.php?f=57&t=8010
Спасибо за наводку, однако, теперь ошибку выдает уже макрос:
Code: Select all
...\Far3\Profile\Macros\scripts\BlockIndent.lua:32: '=' expected near 'local'
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 09:01
by 01ssv
Теперь взял именно файл по ссылке и все заработало вроде как. Странно, конечно, что shift+tab сдвигает вправо
Re: BlockIndent — Смещение блока
Posted: Fri 14 Mar, 2014 09:25
by 01ssv
Переназначил сдвиг вправо на Tab сдвиг влево на ShiftTab (shiftBS у меня завешивал весь фар). Теперь проблема такая: если выделение занимает последнюю строку не целиком, а частично, то при нажатии Tab последняя строка удаляется
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 03:06
by indakote
Есть баги:
Пишем 2 строки
ОСЬУЩЦ
счоцутьщку
Ставим курсор в конец строки, жмём CtrlShiftHome - выделили
Жмём Shift+Tab и одна строчка пропадает.
То же самое если выделить с начала а не конца строки но идентировать назад
По пробелу тоже не идентирует.
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 08:43
by Shmuel
1. Приложен патч.
2. Чтобы делал отступы с пробелами, нужно в двух последних макросах заменить
NoMacro на
Macro.
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 09:26
by siberia-man
Есть еще один серьезный баг, на который натыкался пару раз. Если последняя непустая строка файла не содержит перевода строк и выделена, то сдвиг влево/вправо вешает FAR. Если запущен из под ConEmu, то последний не может рестартовать FAR командой Recreate active console. Если последнюю строку не выделять - работает. Task Manager показывает статус Running. Видимо при обработке таких строк где-то происходит зацикливание.
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 09:56
by Shmuel
Кумулятивный патч на оба бага (применять к оригинальному файлу).
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 10:19
by siberia-man
О! Оперативно Вы. А я хотел свой вариант запостить.
Code: Select all
line = line + 1
+ loop = ei.TotalLines >= line
until not loop
При просмотре кода скрипта смутило, что в цикле until not loop нет кода, изменяющего переменную loop.
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 10:26
by Shmuel
siberia-man wrote: При просмотре кода скрипта смутило, что в цикле until not loop нет кода, изменяющего переменную loop.
Переменная loop - это не счётчик. Если нет блока, сдвигается только текущая строка, в этом случае loop==false.
А код, изменяющий эту переменную внутри цикла - есть, посмотрите внимательней. Есть break.
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 11:03
by siberia-man
Я не утверждал, что это счетчик. Это скорее флаговая переменная.
В цикле есть две проверки loop, но нет кода присваивания другого значения.
Code: Select all
wget -qO - http://evil-programmers.googlecode.com/svn/trunk/BlockIndent/BlockIndent.lua | grep -i -e repeat -e until -e loop
local loop = false
loop = true;
repeat
if not s or (loop and ((s.SelStart == 0) or (s.SelEnd ~= -1 and s.SelStart > s.SelEnd))) then
until not loop
BlockIndent — Смещение блока
Posted: Thu 06 Nov, 2014 11:06
by Shmuel
siberia-man wrote: В цикле есть две проверки loop, но нет кода присваивания другого значения.
Потому что по логике скрипта оно не нужно.
BlockIndent — Смещение блока
Posted: Tue 27 Oct, 2015 09:47
by siberia-man
С последней версией FAR 3 beta 4444 стала появляться ошибка
Code: Select all
г=========================== LuaMacro ============================¬
¦ C:\PROGS\etc\Far3\Profile\Macros\scripts\Editor.BlockIndent.lua ¦
¦ Invalid macro flag: DisableOutput ¦
¦-----------------------------------------------------------------¦
¦ { OK } [ Edit ] ¦
L=================================================================-
Судя по документации флаг DisableOutput был удален в билде 3209, но, например, билд 4400 этот флаг ошибкой не считал (игнорировал с 3436). Видимо 4444 стал более строг и стал сообщать о неверных флагах.
Решается удалением все строк
flags = "DisableOutput";.
BlockIndent — Смещение блока
Posted: Tue 27 Oct, 2015 09:53
by Shmuel
siberia-man,
отсюда и ниже смотрите обсуждение.