BlockIndent — Смещение блока

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: BlockIndent — Смещение блока

Post by Aidar »

Latest post of the previous page:

01ssv wrote:Здравствуйте, подскажите как устанавливать плагин? Создал папку BlockIndent в папке Plugins поместил в нее файл BlockIndent.lua, но плагин не подхватывается, в списке плагинов в редакторе не вижу его.
Это не плагин, а макрос, заменяющий плагин.
01ssv
Posts: 50
Joined: Fri 29 May, 2009 04:01
Location: Барнаул

Re: BlockIndent — Смещение блока

Post by 01ssv »

Aidar wrote:Это не плагин, а макрос, заменяющий плагин.
В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: BlockIndent — Смещение блока

Post by Aidar »

01ssv wrote:В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?
Скопировать файл, приведённый по ссылке, в каталог %FarProfile%\Macros\scripts или любой его подкаталог.
01ssv
Posts: 50
Joined: Fri 29 May, 2009 04:01
Location: Барнаул

Re: BlockIndent — Смещение блока

Post 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' 
01ssv
Posts: 50
Joined: Fri 29 May, 2009 04:01
Location: Барнаул

Re: BlockIndent — Смещение блока

Post by 01ssv »

Теперь взял именно файл по ссылке и все заработало вроде как. Странно, конечно, что shift+tab сдвигает вправо
01ssv
Posts: 50
Joined: Fri 29 May, 2009 04:01
Location: Барнаул

Re: BlockIndent — Смещение блока

Post by 01ssv »

Переназначил сдвиг вправо на Tab сдвиг влево на ShiftTab (shiftBS у меня завешивал весь фар). Теперь проблема такая: если выделение занимает последнюю строку не целиком, а частично, то при нажатии Tab последняя строка удаляется
Attachments
bi.jpg
bi.jpg (3.93 KiB) Viewed 16703 times
indakote
Posts: 48
Joined: Mon 13 Oct, 2014 09:29

BlockIndent — Смещение блока

Post by indakote »

Есть баги:
Пишем 2 строки
ОСЬУЩЦ
счоцутьщку

Ставим курсор в конец строки, жмём CtrlShiftHome - выделили

Жмём Shift+Tab и одна строчка пропадает.

То же самое если выделить с начала а не конца строки но идентировать назад


По пробелу тоже не идентирует.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

BlockIndent — Смещение блока

Post by Shmuel »

1. Приложен патч.
2. Чтобы делал отступы с пробелами, нужно в двух последних макросах заменить NoMacro на Macro.
patch.1.7z
(364 Bytes) Downloaded 169 times
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

BlockIndent — Смещение блока

Post by siberia-man »

Есть еще один серьезный баг, на который натыкался пару раз. Если последняя непустая строка файла не содержит перевода строк и выделена, то сдвиг влево/вправо вешает FAR. Если запущен из под ConEmu, то последний не может рестартовать FAR командой Recreate active console. Если последнюю строку не выделять - работает. Task Manager показывает статус Running. Видимо при обработке таких строк где-то происходит зацикливание.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

BlockIndent — Смещение блока

Post by Shmuel »

Кумулятивный патч на оба бага (применять к оригинальному файлу).
patch.2.7z
(573 Bytes) Downloaded 195 times
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

BlockIndent — Смещение блока

Post by siberia-man »

О! Оперативно Вы. А я хотел свой вариант запостить.

Code: Select all

		line = line + 1
+		loop = ei.TotalLines >= line
	until not loop
При просмотре кода скрипта смутило, что в цикле until not loop нет кода, изменяющего переменную loop.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

BlockIndent — Смещение блока

Post by Shmuel »

siberia-man wrote: При просмотре кода скрипта смутило, что в цикле until not loop нет кода, изменяющего переменную loop.
Переменная loop - это не счётчик. Если нет блока, сдвигается только текущая строка, в этом случае loop==false.
А код, изменяющий эту переменную внутри цикла - есть, посмотрите внимательней. Есть break.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

BlockIndent — Смещение блока

Post 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
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

BlockIndent — Смещение блока

Post by Shmuel »

siberia-man wrote: В цикле есть две проверки loop, но нет кода присваивания другого значения.
Потому что по логике скрипта оно не нужно.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

BlockIndent — Смещение блока

Post 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";.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

BlockIndent — Смещение блока

Post by Shmuel »

siberia-man, отсюда и ниже смотрите обсуждение.
Post Reply

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