Latest post of the previous page:
Скрипт обновился согласно изменений в LuaFAR APIBlockIndent — Смещение блока
Re: BlockIndent — Смещение блока
Здравствуйте, подскажите как устанавливать плагин? Создал папку BlockIndent в папке Plugins поместил в нее файл BlockIndent.lua, но плагин не подхватывается, в списке плагинов в редакторе не вижу его.
- Aidar
- Posts: 541
- Joined: Mon 09 Mar, 2009 22:43
- Location: Kazan
- Has thanked: 8 times
- Been thanked: 7 times
- Contact:
Re: BlockIndent — Смещение блока
Это не плагин, а макрос, заменяющий плагин.01ssv wrote:Здравствуйте, подскажите как устанавливать плагин? Создал папку BlockIndent в папке Plugins поместил в нее файл BlockIndent.lua, но плагин не подхватывается, в списке плагинов в редакторе не вижу его.
Re: BlockIndent — Смещение блока
В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?Aidar wrote:Это не плагин, а макрос, заменяющий плагин.
- Aidar
- Posts: 541
- Joined: Mon 09 Mar, 2009 22:43
- Location: Kazan
- Has thanked: 8 times
- Been thanked: 7 times
- Contact:
Re: BlockIndent — Смещение блока
Скопировать файл, приведённый по ссылке, в каталог01ssv wrote:В документации вижу описание импорта макросов из файлов *.farconfig, а здесь мне как нужно импортировать? Возможно, где то есть готовое описание?
%FarProfile%\Macros\scripts
или любой его подкаталог.Re: BlockIndent — Смещение блока
С макросами разобрался благодаря теме, 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 — Смещение блока
Теперь взял именно файл по ссылке и все заработало вроде как. Странно, конечно, что shift+tab сдвигает вправо
Re: BlockIndent — Смещение блока
Переназначил сдвиг вправо на Tab сдвиг влево на ShiftTab (shiftBS у меня завешивал весь фар). Теперь проблема такая: если выделение занимает последнюю строку не целиком, а частично, то при нажатии Tab последняя строка удаляется
- Attachments
-
- bi.jpg (3.93 KiB) Viewed 16720 times
BlockIndent — Смещение блока
Есть баги:
Пишем 2 строки
ОСЬУЩЦ
счоцутьщку
Ставим курсор в конец строки, жмём CtrlShiftHome - выделили
Жмём Shift+Tab и одна строчка пропадает.
То же самое если выделить с начала а не конца строки но идентировать назад
По пробелу тоже не идентирует.
Пишем 2 строки
ОСЬУЩЦ
счоцутьщку
Ставим курсор в конец строки, жмём CtrlShiftHome - выделили
Жмём Shift+Tab и одна строчка пропадает.
То же самое если выделить с начала а не конца строки но идентировать назад
По пробелу тоже не идентирует.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
BlockIndent — Смещение блока
Есть еще один серьезный баг, на который натыкался пару раз. Если последняя непустая строка файла не содержит перевода строк и выделена, то сдвиг влево/вправо вешает FAR. Если запущен из под ConEmu, то последний не может рестартовать FAR командой Recreate active console. Если последнюю строку не выделять - работает. Task Manager показывает статус Running. Видимо при обработке таких строк где-то происходит зацикливание.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
BlockIndent — Смещение блока
О! Оперативно Вы. А я хотел свой вариант запостить.
При просмотре кода скрипта смутило, что в цикле until not loop нет кода, изменяющего переменную loop.
Code: Select all
line = line + 1
+ loop = ei.TotalLines >= line
until not loop
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
BlockIndent — Смещение блока
Переменная loop - это не счётчик. Если нет блока, сдвигается только текущая строка, в этом случае loop==false.
А код, изменяющий эту переменную внутри цикла - есть, посмотрите внимательней. Есть break.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
BlockIndent — Смещение блока
Я не утверждал, что это счетчик. Это скорее флаговая переменная.
В цикле есть две проверки loop, но нет кода присваивания другого значения.
В цикле есть две проверки 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