SimpleIndent

Здесь можно обсудить ваш любимый плагин.

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by t-rex » Sun 15 Apr, 2007 17:48

CyberShadow wrote:Наверное что-то такое уже есть, я просто не могу найти. Просто надо чтоб при выделённом блоке нажал Таб - чтоб вставлялся симбол табуляции или сколько-там-у-вас-настроено пробелов перед каждой выделенной строкой. Если нажал Шифт+Таб, чтоб по одному табу или столько же в пробелах убрались.
Плагин BlockIndent намакрось себе на что угодно.

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Post by CyberShadow » Sun 15 Apr, 2007 18:52

Спасибо - вот не догадался Indent ввести в поиск... :)

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Post by CyberShadow » Mon 16 Apr, 2007 00:38

Попробовал - работает не очень. Не может определить если я выбрал пару линий или нет. Даже если я в опциях макроса поставлю опцию чтобы маркос работал только если выделен блок, то всё равно если у меня выделена часть строки, кнопка Tab вызывает плагин который идентирует текущую строку, а не вставляет таб как полагается в данной ситуации.

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by t-rex » Mon 16 Apr, 2007 01:48

CyberShadow
Ничего не понял. Кто не может определить? Какие у тебя макросы? И так для общего сведенья плагин интдентирует выбраный блок если курсор находится прямо возле блока или внутри него - если нет то индентирует текущюю строку. Ну и табы вставляются всегда в начало каждой выбраной строки (пофиг где начинается выделение).

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Post by CyberShadow » Mon 16 Apr, 2007 01:58

t-rex wrote:CyberShadow
Ничего не понял. Кто не может определить? Какие у тебя макросы? И так для общего сведенья плагин интдентирует выбраный блок если курсор находится прямо возле блока или внутри него - если нет то индентирует текущюю строку. Ну и табы вставляются всегда в начало каждой выбраной строки (пофиг где начинается выделение).
Плагин я поставил на макрос на клавишу Таб, с опцией "Block selection present" (выполнять макрос только при присутствии выделения). Плагин неадекватно себя ведёт в этом случае: если я выделяю что-то, хоть слово или букву, а потом ставлю курсор хоть и на другую строку и нажму Таб, то плагин будет идентировать текущую строку, а не вставлять таб у курсора, из за того что выбран блок (хоть этот блок и не полная строка и вообще на другой строке). Видимо, автор не использует "Persistent blocks" :)

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by t-rex » Mon 16 Apr, 2007 02:27

CyberShadow
Автор это я :) И тока такими блоками пользуюсь. И я вроде понятно описал как работает плагин. А таб у кросора плагин вообще никогда вставлять не будет, я же написал - плагин вставляет таб в начале строки.

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Post by CyberShadow » Mon 16 Apr, 2007 02:30

Гм, жаль - мапить ещё одну клавишу на идентирование не имеет смысла, ИМХО. Надеялся на функциональность как в VS. Что ж, и за это спасибо - плагин то с сырцами, может под себя подправлю :)

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Табулятор

Post by CyberShadow » Sun 18 May, 2008 07:02

Подправил. Вот уже год как успешно использую. Думаю поделится с остальными, но хочу ещё раз проверить что такого ещё нету и что я не изобретаю колесо.

Проблема:
Хотелось умного табулятора, вызываемого при нажатии кнопки Tab, в стиле сред разработки от Microsoft/Borland/CodeGear.

Плагин BlockIndent меня не устроил потому что с ним неудобно работать если его поставить на кнопку Tab. При вызове плагина, он индентирует всегда, даже если ничего не выделено. В свойства макроса есть функция срабатывания только при наличии выделения, но часто бывает что либо где-то выделил блок и забыл о нём (и пишешь код в совсем другом месте), или выделил кусок текущей строки (прямо после вставки текста, например). В таких случаях идентировать по нажатии Tab не в место.

Разница между моим плагином и плагином BlockIndent написанного многоуважаемым t-rex-ом:
* вместо того чтобы добавлять себя в список плагинов и требовать настройки макросов, он обрабатывает напрямую ввод в редакторе
* плагин срабатывает только при случае если выделены целые строки, и курсор находится внутри или в конце блока (на строке следующей последнюю линию в блоке), а также в начале строки
* плагин индентирует только символом таба, следует добавить использование настройки редактора, но сам индентирование с пробелами никогда не использую...

Как использовать плагин:
* поставить курсор в начало первой строки которую следует индентировать, или на строку ниже последней
* используя Shift + стрелки вверх/вниз выделить строки для индентирования
* нажать Tab или Shift+Tab

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Табулятор

Post by Kildor » Sun 18 May, 2008 07:21

Выложи пощупать?

PS: ShiftTab — удаляет табы?
А пробелы числом равным настройкам редактора?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

Re: Табулятор

Post by DrKnS » Sun 18 May, 2008 07:24

CyberShadow wrote:Думаю поделится с остальными, но хочу ещё раз проверить что такого ещё нету и что я не изобретаю колесо.
Это не важно – здоровая конкуренция ещё никому не вредила, и вообще – больше плагинов, хороших и разных. Делись.

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Табулятор

Post by CyberShadow » Sun 18 May, 2008 07:30

http://thecybershadow.net/dump/d12e487f ... Indent.zip
Пока что документация отсутствует, а исходники в беспорядке и включены только из за лицензии :) перед рилизом поправлю.

Shift+Tab удаляет и табы и пробелы (по количеству длины таба).

Denis
Posts: 1420
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 7 times
Been thanked: 2 times

Re: Табулятор

Post by Denis » Sun 18 May, 2008 07:49

CyberShadow
Спасибо, tab и shift-tab всегда не хватало.
Нашёл небольшую проблему - при сдвиге влево выделение блока съезжает вправо.
Опции у меня - блоки непостоянные, замена табов пробелами.

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Табулятор

Post by CyberShadow » Sun 18 May, 2008 07:58

Denis wrote:Нашёл небольшую проблему - при сдвиге влево выделение блока съезжает вправо.
Гм. Вообще-то бага в том что функциональность не соответствует "документации" (описания выше). Плагину не следует срабатывать если не выбраны целые строки (т.е. блок от начала одной строки до начала другой строки, и выделение имеет форму прямоугольника по всю ширину окна редактора). Следует вопрос - есть какая-либо польза из этой функциональности? Лично я её не вижу, поэтому уклоняюсь к тому чтобы просто плагин не срабатывал в этой ситуации.

Denis
Posts: 1420
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 7 times
Been thanked: 2 times

Re: Табулятор

Post by Denis » Sun 18 May, 2008 08:04

При сдвиге вправо - аналогично выделение съезжает вправо быстрее, чем сам блок.
VS полностью сдвигает линии, которые частично захвачены блоком. Но само выделение в блоке
не съезжает.
Так же плагин не корректно работает если выбрана всего 1 строка.

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Табулятор

Post by CyberShadow » Sun 18 May, 2008 20:27

Спасибо за отзывы, все баги вроде исправил :)

Вот Release Candidate. На этот раз исходники, документация приведены в порядок:
http://thecybershadow.net/dump/1feb5d31 ... Indent.zip

Post Reply

Return to “Обсуждение плагинов”