Плагин для форматирования кода

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

Таки да, пишу для себя AStyle плагин (степень готовности 70-80%). Решил "посовещатся" насчет окна опций, на данный момент оно имеет след. базовый вид:
Image

Uploaded with ImageShack.us

Предмет совещания - расширенные опции, а именно то, каким образом их вводить. Вижу два вида:
1. Крыжики на каждую опцию (чекбоксы, комбобоксы). Опций кстати прилично (см. http://astyle.sourceforge.net/astyle.html ).

2. Лайн-эдит (тупо просто форма в которой пишутся аргументы ком. строки, ну или путь к файлу опций, такое в AStyle есть тоже, который будете редактировать своими ручками в том же AkelPad'е).

Свои соображения (если они есть) будьте добры опишите подробнее (можете нацарапать даже некий "скетч" диалога настроек в кач-ве илюстрации).

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

Post by FeyFre »

private_joker
Раз уж делаете с Гуем, то и опции должны задаваться Гуем. Я не думаю что так тяжело все параметры заммапить на кнопки.

(Вызвать приложение со скрипта, вручную задавая параметры строки - для этого плаг не нужен. Гуй в скриптах сделать возможно, но очень тяжело).

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

Post by VladSh »

Легче было бы просто задавать, но раз спросили...
Что-то типа того:

Image

И желательна интерактивность поля Selected options.

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

FeyFre wrote: Раз уж делаете с Гуем, то и опции должны задаваться Гуем. Я не думаю что так тяжело все параметры заммапить на кнопки.

(Вызвать приложение со скрипта, вручную задавая параметры строки - для этого плаг не нужен. Гуй в скриптах сделать возможно, но очень тяжело).
Вопрос не в тяжело/не тяжело (ты же уже готовое в Templates сокращаешь не потому что тяжело, так?) Примерный подсчет показал, что нужно более 20 чекбоксов и как минимум один спин (для Tab>Break)... Можно конечно по табконтролу/пропертищиту раскидать.
Про скрипты, я не пишу на js и не в курсе, что там можно сделать, но могу сказать что у меня запускаемый процесс будет контролироваться, есть перенаправление стандартного потока вывода (я правда пока не нашел места, куда результат воткнуть), etc. Т.е. можно не отговаривать, т.к. в первую очередь он нужен мне, то что есть (скрипт), меня не устраивает абсолютно.

VladSh wrote:Легче было бы просто задавать, но раз спросили...
Что-то типа того:

Image

И желательна интерактивность поля Selected options.
- не думаю что предефайнед стайлы надо выбирать радиобаттонами (в плане занимаемого места комбобокс поинтересней).
- по поводу листконтрола, возможно это выход если не использовать табконтрол.
- По интерактивность "Selected options" я непонЕл. Вместо одного или другого ты предлагаешь сделать и то и то? Т.е. зеркалить в эдитбокс (своеобразную будущую комстроку) все изменения (снял галку-убрался ключ)?
- По поводу Preview. Там не в реалтайме меняется все (только для предефайнед стилей задефайнено). Можно конечно сделать баттон , но каждый раз запускать AStyle для предпросмотра, не сильно разумно (впрочем подумаю).

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

Post by FeyFre »

Про скрипты, я не пишу на js и не в курсе, что там можно сделать, но могу сказать что у меня запускаемый процесс будет контролироваться, есть перенаправление стандартного потока вывода (я правда пока не нашел места, куда результат воткнуть), etc. Т.е. можно не отговаривать, т.к. в первую очередь он нужен мне, то что есть (скрипт), меня не устраивает абсолютно.
Если Вам не нужно в плагине создавать параллельный поток для этих целей, то Scripts вполне это потянет(всё WINAPI у Вас под руками + нативная поддержка OLE).

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

private_joker
Неужели Вам так часто нужно менять настройки AStyle?

Если нет - IMO проще настроить этот скрипт под себя и никаких GUI не нужно

в этой строке задайте нужные флаги и всё

Code: Select all

var pToolFlags="--style=java --indent=tab";

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

Post by VladSh »

private_joker wrote:- не думаю что предефайнед стайлы надо выбирать радиобаттонами (в плане занимаемого места комбобокс поинтересней).
- экономим на одном клике;
- сразу виден весь перечень + органично вписывается в форму.
Кстати, там не везде радиобатоны будут, кое где нужны будут чекбоксы.
private_joker wrote:- по поводу листконтрола, возможно это выход если не использовать табконтрол.
Листконтрол слева - хорошее решение. Он очень удобен в своей наглядности.
Именно потому, что Sessions-плагин выбирает сессии из комбобокса, он не получает распространения - это неудобно, т.к. ненаглядно.

Комбобоксы хороши там, где:
- требуется нечастое использование контрола;
- требуется экономить место.
Здесь ни то, ни другое не актуально.
private_joker wrote:- По интерактивность "Selected options" я непонЕл.
Интерактивноть, т.е. обратная связь. Хотя бы для получения информации - это очень наглядно и от того юзабельно.
Т.е. я тыкаю курсором в какое-либо значение поля "Selected options", по этому действию автоматически выделяется соответствующий айтем в секции "Options", в секции Style открывается соотв. перечень, отмечается стиль, соответствующий тому, на который кликнули в "Selected options", а далее открывается соответствующее Preview.
private_joker wrote:- По поводу Preview. Там не в реалтайме меняется все (только для предефайнед стилей задефайнено). Можно конечно сделать баттон , но каждый раз запускать AStyle для предпросмотра, не сильно разумно (впрочем подумаю).
Каждый раз запускать не надо. Это удобно на этапе выбора опций.
Если превью сделано, то оно должно работать для всех Options-Styles.

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

Post by VladSh »

se7h wrote:Неужели Вам так часто нужно менять настройки AStyle?
Этот плаг имеет смысл для:
- визуальных настроек;
- работы в реал-тайме (после нажатия Enter для перевода строки производить корректировку кода, как это делют IDE).
Для другого - смысла не вижу.

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

se7h wrote:private_joker
Неужели Вам так часто нужно менять настройки AStyle?

Если нет - IMO проще настроить этот скрипт под себя и никаких GUI не нужно

в этой строке задайте нужные флаги и всё

Code: Select all

var pToolFlags="--style=java --indent=tab";
FeyFre wrote:Если Вам не нужно в плагине создавать параллельный поток для этих целей, то Scripts вполне это потянет(всё WINAPI у Вас под руками + нативная поддержка OLE).

Возможно корень недопонимания - аномальная жара, но повторю: я НЕ ПИШУ на JS, мне проще написать нативный плагин, чем адаптировать данный скрипт до состояния отличного от убогого. Скриптами кстати я практически не пользуюсь.

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

VladSh wrote: - экономим на одном клике;
- сразу виден весь перечень + органично вписывается в форму.
Кстати, там не везде радиобатоны будут, кое где нужны будут чекбоксы.
Если в фокусе, можно колесом мышки ;)
На мой взгляд слишком монструозно, в стиле настроек NPP, а не AkelPad. Но других идей пока не было.

VladSh wrote: Листконтрол слева - хорошее решение. Он очень удобен в своей наглядности.
Именно потому, что Sessions-плагин выбирает сессии из комбобокса, он не получает распространения - это неудобно, т.к. ненаглядно.
Не спорю, решение удачное на столько же, насколько часто используемое.
VladSh wrote: Комбобоксы хороши там, где:
- требуется нечастое использование контрола;
- требуется экономить место.
Здесь ни то, ни другое не актуально.
Выше, в ответе на первую цитату. Хотя я не отказываюсь.
VladSh wrote: Интерактивноть, т.е. обратная связь. Хотя бы для получения информации - это очень наглядно и от того юзабельно.
Т.е. я тыкаю курсором в какое-либо значение поля "Selected options", по этому действию автоматически выделяется соответствующий айтем в секции "Options", в секции Style открывается соотв. перечень, отмечается стиль, соответствующий тому, на который кликнули в "Selected options", а далее открывается соответствующее Preview.
Это надо сильно-сильно кастомайзить едитконтрол, мне лень. Да и нафиг не нужно. Вот наоборот, это можно.

VladSh wrote: Каждый раз запускать не надо. Это удобно на этапе выбора опций.
Если превью сделано, то оно должно работать для всех Options-Styles.
Кнопка "Preview" устроит отца русской демократии? (Я напомню что каждый раз необходимо будет запускать новый процесс, форматировать, читать, и SETTEXT).

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

VladSh wrote:
se7h wrote:Неужели Вам так часто нужно менять настройки AStyle?
Этот плаг имеет смысл для:
- визуальных настроек;
- работы в реал-тайме (после нажатия Enter для перевода строки производить корректировку кода, как это делют IDE).
Для другого - смысла не вижу.
- Ну еще можно выделенное форматировать (в принципе есть уже).
- Можно к NPP присобачить наверное, там есть сейчас Universal Indent GUI, который тянет кучу бегамайт шаред либ от Qt и имеет вырвиглазной интерфейс . Хотя NPP в последнее время мне нравится все меньше, а AkelPad все больше (еслиб только не ограничение highlight плагина по работе с блочными комментариями).

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

Post by VladSh »

private_joker wrote:- Ну еще можно выделенное форматировать (в принципе есть уже).
Дык, это скрипт делает.
private_joker wrote:
VladSh wrote: Каждый раз запускать не надо. Это удобно на этапе выбора опций.
Если превью сделано, то оно должно работать для всех Options-Styles.
Кнопка "Preview" устроит отца русской демократии? (Я напомню что каждый раз необходимо будет запускать новый процесс, форматировать, читать, и SETTEXT).
Я имел ввиду Prewiew в настройках. Оно не должно показывать результаты для выделенного текста, а должно просто выдавать блоки инфы из хэлпа, т.е. чтобы человек, выбирая опцию, видел, каким образом она будет преобразовывать код; чтобы не открывать ещё и хэлп, только и всего..

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

VladSh wrote:Дык, это скрипт делает.
Этот viewtopic.php?p=7814#p7814 не делает, других тут не видел.
VladSh wrote: Я имел ввиду Prewiew в настройках. Оно не должно показывать результаты для выделенного текста, а должно просто выдавать блоки инфы из хэлпа, т.е. чтобы человек, выбирая опцию, видел, каким образом она будет преобразовывать код; чтобы не открывать ещё и хэлп, только и всего..
Что характерно - я тоже. Имел. Ввиду. :shock:
В настройках в кач-ве предпросмотра кода просто пример (о чем недвусмысленно намекает Foo/Bar), чтобы визуально ловить каждое изменение опций, нужно этот пример (точнее содержимое) форматировать, поскольку написание мини-astyle в мои планы не входит, надо будет запускать новый процесс (astyle.exe), запускаться он будет через кнопку "Предпросмотр". И се.

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

Post by VladSh »

private_joker
Ну тогда это действительно что-то монструозное...
Здесь разве что-то форматируется? Просто справка показывается. Так вот я и предлагаю вставить в предпросмотр просто соответствующие куски справки. И никаких процессов astyle.exe.
Post Reply