Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Serge Yolkin wrote:YuS
Э-э-э... Там квадратные скобки экранированные... Т.е. диапазонов в приведённых регулярках нет.
Это я заметил, потому в тестовом массиве они и присутствуют, т.е. используются не как спецсимволы.
Serge Yolkin wrote: Есть два идентичных фрагмента в первом случае, и один точ в точ такой же фрагмент во втором с квантификатором 2.
Угу, именно эти фрагменты и были взяты для тестов...
Serge Yolkin wrote: И ещё раз: в JS обе регулярки отрабатывают почти одинаково - разница только в количестве запомненных фрагментов, обусловленном количеством круглых скобок, сама строка в обоих случаях захватывается.
Ну, в данном случае, могу только предполагать, одну из версий и описал выше. Видимо, в js используется не совсем идентичный движок регэкспов.
А вообще, чтобы регулярка не действовала столь неоднозначно (слишком широкий диапазон предоставляется для совпадения с ".*?"), её бы написать поточнее, под конкретную задачу. Например, как-то так:

Code: Select all

1. (\[.*?\])[^\[]*?(\[.*?\])[^\[\n\r]*? 
2. ((\[.*?\])[^\[\n\r]*?){2}

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

YuS
Стоп. Вопрос не в том, как и что сделать, - с реализацией регэкспов в Акеле я уже привык разбираться экспиремнтально. Вопрос принципиальный: являются ли выражения

Code: Select all

aa
и
a{2}
тождественными в общем случае. Из того, что я нашёл в инете про квантификаторы, следует - да. Реализация JS это подтверждает. Если реализация AP считает иначе - я просто это запомню и буду пользоваться дальше, если нет - надо бы исправить.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Serge Yolkin wrote:YuS
Вопрос принципиальный: являются ли выражения

Code: Select all

aa
и
a{2}
тождественными в общем случае.
А, ну если вопрос так стоит, то, имхо, они не тождественны, исходя из приоритетности операций групп... во всяком случае, в таким именно виде:

Code: Select all

1. (\[.*?\]).*?(\[.*?\]).*? 
2. ((\[.*?\]).*?){2}
И если говорить о тождественности, тогда должно быть так:

Code: Select all

1. ((\[.*?\]).*?)((\[.*?\]).*?)
2. ((\[.*?\]).*?){2}

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

YuS wrote:...тогда должно быть так...
о том и речь: не тождественно в данной реалиазации.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Будем надеяться, что в будущих версиях автор поправит...

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Возможно ли сделать так, чтобы выбранная вручную синтаксическая тема (JScript, Bat...) сохранялась для текущего файла и автоматически устанавливалась при его открытии в будущем?

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Если такие файлы (с нестандартными расширениями) известны заранее, можно добавить их в явном виде в соответствующую синтаксическую тему, в Files:.

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Serge Yolkin wrote:Если такие файлы (с нестандартными расширениями) известны заранее
Речь идет о ситуации, когда расширение файла и его внутренняя структура никак не связаны. К примеру, файлы *.config могут содержать конфигурацию любого приложения, и поэтому синтаксис будет различаться (Ini, XML, Perl-style...) Аналогия с кодировкой файла: если AkelPad неправильно определил кодировку при открытии, то пользователь задает ее вручную, и этот выбор сохраняется в истории.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Wio
И я о том же: если известно, что AsINI.config от какой-нибудь программы имеет структуру ini-файла, добавляем в ini.coder строку AsINI.config без звёздочек и вопросительных знаков. Так же для остальных заранее известных.

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Serge Yolkin
А если, допустим, много файлов *.config, и неизвестно, на какой наткнешься в следующий раз? Когда работаешь с разнородными файлами и расширениями, заранее все не пропишешь. Было бы удобно, если бы синтаксическая тема сохранялась в истории.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

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

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Serge Yolkin wrote:В приведённой ситуации - да, проблема.
Ситуация приведена для примера, могут быть и другие варианты. Возьмем обратный случай: файлы в XML-формате, имеющие произвольное расширение *.config, *.dat, *.htm, *.vcxproj и пр.
Serge Yolkin wrote:Профессиональный корректор конфигов для любых программ?
Хотя бы и так. В реальности есть такая потребность: две программы хранят данные в разных форматах, но с одинаковым расширением. К имени файла привязаться сложно, потому что их много.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Пишется скрипт детектор.
1. Подписаться под событие "конец открытия файла";
2. Зависнуть в фоне;
3. По отлову события понюхать содержимое, сделать вывод о теме и установить решенную.

Как нюхать? Собственно сделать список шаблонов и соотв. тем расширяемым.

Serge Yolkin
Ситуация в реале очень даже не редкостная. Файлы с пустым расширением, файлы с расширением inc, файлы с расширением dat - первые кандидаты на детектирование формата по содержимому.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

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

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

В CSS есть одноименные свойства и значения свойств. Например, "left", "bottom" и пр.
Судя по coder.css они разделены по группам, у них даже цвета подсветки разные - для одних ${OP}, для других ${ATTR}. Но вот когда в файле встречается такое свойство:

Code: Select all

a {
  left: 10px;
}
оно все равно подсвечивается другим цветом, цветом значения, а не самого свойства. Можно ли это как-то исправить?
Locked