XBrackets plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Fr0sT wrote:Возникла идея: добавить функции "Окружить выделенный текст" символами
У плагина есть "магическая" настройка sel_autobr = 1.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:VladSh, если бы это было просто, его бы давно сделали бы!
Ты мне расскажи, как ты собираешься выделить текст, а потом ввести ключ для подстановки AutoComplete, при этом не потеряв выделения? Нет, это совсем не просто. Плагин Scripts оказался проще и практичнее.
1. Выделяю текст.
2. Жму определённую комбинацию клавиш для вызова диалога AutoComplete (у меня это Alt+A), при этом происходит:
- запоминание выделенного текста (если выделение сбрасывается, то надо запоминать позицию начала выделения и его окончания);
- вывод диалога с вариантами выбора ключевых слов (как это сейчас и происходит!);
3. При выборе моего REM-END_REM производится замена выделенного текста на него же, но заключённого в эти "теги".
Для этого в плагин нужно всего лишь добавить поддержку запоминания выделенного текста - параметр %s.
В настройках автодополнения это выглядело бы так:

Code: Select all

%#REM-END_REM
%%REM
	%s%|
%%END REM
Всё просто, как барабан!
Если это можно сделать скриптами, то почему нельзя в плагине???

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV wrote:
Fr0sT wrote:Возникла идея: добавить функции "Окружить выделенный текст" символами
У плагина есть "магическая" настройка sel_autobr = 1.
Что-то никак не удаётся заставить её фунциклировать... может какие-то дополнительные условия есть?
/в доку добавить, что sel_autobr = 0 [по умолчанию]/

После выделения текста и набора первой скобки производится замена выделенного текста на скобки. Почему полная отмена действия производится двумя Ctrl+Z (сначала удаляются набранные скобки, а затем появляется удалённый выделенный текст)? Если sel_autobr = 1, тогда выделенный текст можно заменять обрамлённым скобками в одно действие - отмена действия удобнее.

Можно ли сделать, чтобы если курсор уходит от подсвечиваемой скобки, то не сбрасывать жирную подсветку? Другими словами - хочется, чтобы подсветка скобок отображалась всегда, даже в середине фразы (в таком случае подсвечивать самые крайние скобки в строке), а не только когда курсор находится у скобки. Такая подсветка, естессно сможет работать в пределах одной строки.
Кроме того, что будет отлично ориентироваться, ещё и будет удобно выделять всё в скобках с помощью SelToMatchingBracket.
Edited: кстати нашёл этот вариант на 1-й странице!

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:Что-то никак не удаётся заставить её фунциклировать...
В настройках плагина должно быть включено автозавершение скобок (Autocomplete brackets ([{""}]))
VladSh wrote:Можно ли сделать, чтобы если курсор уходит от подсвечиваемой скобки, то не сбрасывать жирную подсветку?
Наверное, можно.
Хотя, с другой стороны, если внутри этих скобок есть другие скобки, то после подсветки внутренних скобок и перемещение каретки обратно - между внутренними и внешними скобками - внешние скобки подсвечиваться не будут. То есть:

[ |-> ( ) ] (подсвечены внешние)
[ <-|( ) ] (подсвечены внутренние)
[ | ( ) ] (нет подсветки)

То же самое будет, если поместить каретку просто между скобок:
[ | ] (нет подсветки)

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

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

У плагина есть "магическая" настройка sel_autobr = 1.
О! И правда что :) Благодарю!

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV wrote:
VladSh wrote:Что-то никак не удаётся заставить её фунциклировать...
В настройках плагина должно быть включено автозавершение скобок (Autocomplete brackets ([{""}]))
Включено.
Я делаю так: выделил текст и ввожу с клавиатуры символ { ... жду, что сразу после ввода скобки автоматом получится вот так: {выделенный текст}, а не получается.
DV wrote:[ | ( ) ] (нет подсветки)
[ | ] (нет подсветки)
Хотел так:
[ | ( ) ]
[ | ]
DV wrote:Фраза "не всегда" будет применима даже в случае, если при любом перемещении каретки мы будем искать парные скобки левее и правее во всей видимой части текста - в данном случае ограничение на видимую часть текста. Поиск же парных скобок без ограничений влево и вправо в файле размером в несколько мегабайт затормозит редактор конкретно.
Имел ввиду в пределах одной строки, а не всего текста, только для программного кода. Это для удобства ориентирования в скрипте и быстрого выделения куска кода между скобками для переброски выделенного кода в другое место.
Может быть подсветку делать и не стоит (хотя хочется :lol:), а вот выделение текста в случае, если скобки не подсвечены, чтобы производилось между самыми крайними скобками в строке.

Есть ещё одна отличная идея из Zen Coding по перемещению курсора...

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:Что-то никак не удаётся заставить её фунциклировать...
Файл XBrackets.ini - в студию!
VladSh wrote:выделение текста в случае, если скобки не подсвечены
Пример:

{ text1 = " ( | } text 2 )"

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

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Я менял XBrackets.ini из AkelPad'а. Закрыл Акел, отредактировал XBrackets.ini с помощью обычного блокнота и всё получилось.

Понял.

P.S. Можно ли как-то сделать, чтобы скобки убирались в одно действие отмены (Ctrl+Z)?

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:Можно ли как-то сделать, чтобы скобки убирались в одно действие отмены (Ctrl+Z)?
Пробовал во всех AnyRichEdit_ReplaceSelText поменять последний параметр - bCanUndo - с TRUE на FALSE, но ничего от этого не изменилось.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Не знаю как работает AnyRichEdit_ReplaceSelText... :oops: :)
А можно сделать проще: взять в переменную выделенный текст, добавить к ней скобки, а потом заменить выделенный текст тем, что получилось?

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

XBrackets v.3.2
+ изменено: теперь 'sel_autobr = 1' заменяет весь выделенный текст
VladSh wrote:взять в переменную выделенный текст, добавить к ней скобки, а потом заменить выделенный текст тем, что получилось?
Кстати говоря, дополнительные настройки XBrackets можно менять, не закрывая AkelPad. В три шага, вот в таком порядке:

1а. Открываем окно настроек плагинов и отключаем функцию XBrackets::Main (если она активна).
1б. (альтернативный вариант) Запускаем XBrackets::Settings и в появившемся окне дважды щелкаем лев.кн.мыши на "Status: the plugin is active", чтобы надпись сменилась на "Status: the plugin is NOT active".
При деактивации плагин автоматически сохраняет свои настройки.

2. Открываем файл "XBrackets.ini" (если настройки хранятся в ini-файле) или ключ реестра "HKEY_CURRENT_USER\Software\Akelsoft\AkelPad\Plugs" и меняем настройки плагина XBrackets. Не забываем сохранить изменённый файл "XBrackets.ini".

3. Активируем плагин XBrackets, вызвав функцию XBrackets::Main или запустив XBrackets::Settings и в появившемся окне дважды щелкнув лев.кн.мыши на "Status: the plugin is NOT active".
При активации плагин автоматически перечитывает свои настройки.

Йаабадабадуу!!! :))

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Батенька, да Вы монстр! 8)
А можно ли все эти пункты добавить в XBrackets-_.txt в следующую версию? А то затеряется здесь, в страницах, и забудется...

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Можно ли будет в следующей версии для 'sel_autobr = 1' добавить "русские" кавычки, типа « » ? Было бы удобно для тех, кто набирает типографские русские тексты.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:Можно ли будет в следующей версии для 'sel_autobr = 1' добавить "русские" кавычки, типа « » ?
Разве не работает?

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Может и работает, только какую комбинацию клавиш нажать, чтобы эти кавычки появились? Я просто скриптец писал похожий, так он если Shift+" жмёшь, то обычную закавыку вставляет, а если Shift+2, то русскую..
Post Reply