Форматтер кода XML и С++

Russian main discussion
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Fr0sT wrote:установкой значения в 0
Да, пожалуй.
Только попробуем обойтись без самодеятельности – не очень хочется, чтобы параметры по-разному работали: https://github.com/einars/js-beautify/pull/110

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

Post by VladSh »

Instructor wrote:3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:

Code: Select all

-"AStyle" Call("Log::Output", 1, `"%a\AkelFiles\Tools\AStyle.exe" --style=allman`, "", "", "", -1, -1, 1052673) Icon(0)
Требуется Log плагин версии 2.4 или выше.
Log плагин версии 2.4, получаю сообщение:
Log плагин wrote:---------------------------
Не удается запустить команду: "C:\Program Files\AkelPad\AkelFiles\Tools\AStyle.exe" --style=allman
---------------------------
ОК

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh
1. Скачиваем AStyle.
2. Помещаем файл AStyle.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:

Code: Select all

-"AStyle" Call("Log::Output", 1, `"%a\AkelFiles\Tools\AStyle.exe" --style=allman`, "", "", "", -1, -1, 1052673) Icon(0)

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

Post by VladSh »

Instructor
Спасибо за терпение :)

В моём случае теперь достаточно:

Code: Select all

-"AStyle форматирование кода" Call("Log::Output", 1, `"%a\AkelFiles\Tools\AStyle\AStyle.exe" -b -N -o -t -S -w -Y -M -H -U -p`, "", "", "", -1, -1, 1052673) Icon("%a\AkelFiles\Plugs\Toolbar.dll", 28)
Здорово, работает влёт! 8)

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Infocatcher wrote:
CleriC wrote:Если с курсором все так сложно - фиг с ним.
Вроде, получилось подкрутить исходный скрипт: https://github.com/einars/js-beautify/pull/109
Как его оттуда скачать? Я там нашел только строки, которые изменились в исходном коде. Вы можете выложить куда-нибудь целиком весь .js?
Fr0sT wrote:Кстати насчет maxChar. Можно ли сделать, чтобы по дефолту разбивка была отключена? Либо чтобы срабатывала установкой значения в 0.
Что имеется в виду? Возможно для меня это тоже будет полезно.
Можете привести пример (скрин) как это выглядит до и после форматирования?

У меня еще почему-то иконка на кнопке обновления не показывается и при нажатии на кнопку ничего не происходит:
http://s2.ipicture.ru/uploads/20120329/5JfES5hT.png

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

CleriC wrote:Как его оттуда скачать? Я там нашел только строки, которые изменились в исходном коде. Вы можете выложить куда-нибудь целиком весь .js?
Да, пожалуй, у них некоторые проблемы с юзабилити. :)
Скачать-то можно: https://github.com/Infocatcher/js-beaut ... ll/patch-1, но это оригинальный скрипт – в виде веб-странички. Там это тоже не помешает, а мне меньше правок при обновлениях. :)
А для AkelPad'а пока нету. И все еще
Infocatcher wrote:Осталось понять, как в AkelPad'е не просто восстанавливать положение прокрутки, а пересчитывать с учетом изменений.

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Процитирую свой вопрос с предыдущей страницы:
CleriC wrote: Можно ли настроить jsBeautifier таким образом, что бы содержимое внутри тега не переносилось на следующиую строку.
Вот поясняющий скриншот:
http://s1.ipicture.ru/uploads/20120329/csfhHy2s.png
У меня есть длинный тег <group id="СЗ" name="Статическое зондирование" fullname="Оборудование для статического зондирования" img="" order="1">
jsBeautifier переносит кусок img="" order="1"> на следующую строку (см. скрин 4 и 5 строчки). Этого можно избежать?
Я попробовал подрегулировать maxChar, но все равно получается так себе.
У скрипта есть еще аргумент -unformattedTags=["a"] - list of tags, that shouldn't be reformatted (only for HTML). Но у меня это почему-то не работает. По идее ведь должно работать, если я вызываю скрпит с параметром -unformattedTags=["group"] ? Тогда описанная выше проблема не проявится? Но работает ли этот аргумент со сложными тегами, не просто <b></b>, а такими, как в моем случае?

Еще у меня почему-то не работает аргумент -keepArrayIndentation=true - keep array indentation
если я не ошибаюсь - если вызываю с ним, то не будут удалятся пустые строки. Но у меня все равно удаляются, хотя вызываю с ним.

Как правильно построить вызов скрипта?
Например я вызываю его так:

Code: Select all

Call("Scripts::Main", 1, "jsBeautifier.js", "-preserveNewlines=true -unformattedTags=['group']")
А в результате он мне удаляет пустые строки и варпает теги group (как на скрине выше). Что я делаю не так?

Еще, почему у меня акельпад не отображает спец-символы типа диаметра (Ø): http://s1.ipicture.ru/uploads/20120330/OQTeJh7a.png

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

Post by Fr0sT »

почему у меня акельпад не отображает спец-символы типа диаметра
В используемом шрифте его нет, видимо

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Возможно в плагинах такое уже есть, но если нет - как мне самому написать скрипт который обрамляет выделенный текст тегами?
Например я выделил слово, нажал ctrl+b, например и текст обрамился тегами <b>ТЕКСТ</b>.

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

Post by VladSh »

CleriC
Гляньте доку на ContextMenu, метод Insert.

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

VladSh wrote:CleriC
Гляньте доку на ContextMenu, метод Insert.
Нашел:

Code: Select all

Insert("<B>\s</B>", 1)
Работает, спасибо! :)

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

Post by VladSh »

CleriC
Ага :) Там ещё позицию курсора можно указать после отработки этого действия.

И на всякий случай - для использования значений из буфера обмена и др. "расширений" были даже скрипты insertTag.js от Infocatcher'а и затем альтернативный от Instructor'а.

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

VladSh wrote: Что-то похожее и с HTMLTidy.js.
Строку

Code: Select all

eval(AkelPad.ReadFile(AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\Scripts\\ShowMenuEx.js")); 
надо заменить на

Code: Select all

if (! AkelPad.Include("ShowMenuEx.js")) WScript.Quit();
C AStyle более-менее разобрался, но я сейчас с кодом на Си почти не работаю, так что особо не копался.
А вот с xml хотелось бы разобраться.
Пока с Beautifier не выходит, попробовать бы с HTMLTidy поработать что ли.
Вобщем я сделал то что написано выше в цитате, скрипт, судя по всему вызывается, но ничего не происходит кроме того, что курсор убегает на последнюю строчку документа. Ничего не форматируется. Что это может быть?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

CleriC wrote:А вот с xml хотелось бы разобраться.
viewtopic.php?p=17372#p17372

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

Instructor wrote:
CleriC wrote:А вот с xml хотелось бы разобраться.
viewtopic.php?p=17372#p17372
Да, действительно, все расписано, как-то я пропустил пост.
Все получилось сделать, форматирует, но все-же менее удобно чем jsBeautifier.
Видимо Tidy берет весь текст открытого документа и вставляет от курсора. Таким образом может получится, что с середины документа вставится весь документ. Получается, надо сначала выделить весь документ и только потом запускать Tidy.
И если поставить --wrap 80, то Tidy тоже варпает длинные теги типа:

Code: Select all

<group id="СЗ" name="Статическое зондирование" fullname="Оборудование для статического зондирования" img="" order="1">
чего мне хотелось бы избежать (я бы хотел видеть эти теги в одну строчку, но что бы обычный текст варпался).
Tidy тоже удаляет пустые строки, хотелось бы их оставить.
Post Reply