Форматтер кода XML и С++
- Author
- Message
-
Offline
- Posts: 41
- Joined: Tue Mar 27, 2012 4:25 pm
Форматтер кода XML и С++
Существуют ли для AkelPad плагины, которые форматируют код документов XML (расставляют отступы и пр.)?
Существуют ли плагины, которые делают тоже самое с кодом С++?
Существуют ли плагины, которые делают тоже самое с кодом С++?
-
Offline
- Posts: 41
- Joined: Tue Mar 27, 2012 4:25 pm
Что-то у меня не получилось, подскажите, пожалуйста.
По поводу HTML TiDy:
Положил HTMLTidy.js и reformat.cfg в папку AkelPad\AkelFiles\Tools\HTMLTidy\ (как было указано в описании) но скрипт отказался вызываться, написал что должен лежать в \AkelFiles\Plugs\Scripts\ перенес файлы туда.
Еще положил ShowMenuEx.js в папку скриптов и ShowMenuCommon.js в папку AkelFiles\Plugs\Scripts\Include\ - без них тоже не работал.
Еще вот этот файл положил \AkelFiles\Plugs\Scripts\Params\HTMLTidy.param
tidy.exe скачал и положил в в \AkelFiles\Tools\HTMLTidy\
Открыл XML файл, запустил скрипт через эту менюшку: http://s2.ipicture.ru/uploads/20120328/a7RbZyTu.png
Написано - работает.
При первом запуске скрипта программа выдает контекстное меню:
http://s2.ipicture.ru/uploads/20120328/bK3AnqPn.png
Нажимаю Custom, вроде как скрипт запускается.
Подвесил команды на хоткей:
http://s2.ipicture.ru/uploads/20120328/1R44p6Uf.png
Вызываю - но форматирования не происходит. Вообще ничего не происходит.
С AStyle примерно тоже самое.
AStyle.js в скрипты, AStyle.param в параметры, AStyle.exe в AkelPad\AkelFiles\Tools\AStyle\
Запускаю скрипт, появляется контекстное меню. Нажимаю хоткей: курсор убегает в конец документа но с кодом не происходит никаких изменений, как был сдвинут к левому краю, так и остался.
Что я делаю не так? Судя по всему скрипт то запускается, но как сделать так что бы он сработал? Возможно что-то с настройками не так? AkelPad 4.7.3 x86.
По поводу HTML TiDy:
Положил HTMLTidy.js и reformat.cfg в папку AkelPad\AkelFiles\Tools\HTMLTidy\ (как было указано в описании) но скрипт отказался вызываться, написал что должен лежать в \AkelFiles\Plugs\Scripts\ перенес файлы туда.
Еще положил ShowMenuEx.js в папку скриптов и ShowMenuCommon.js в папку AkelFiles\Plugs\Scripts\Include\ - без них тоже не работал.
Еще вот этот файл положил \AkelFiles\Plugs\Scripts\Params\HTMLTidy.param
tidy.exe скачал и положил в в \AkelFiles\Tools\HTMLTidy\
Открыл XML файл, запустил скрипт через эту менюшку: http://s2.ipicture.ru/uploads/20120328/a7RbZyTu.png
Написано - работает.
При первом запуске скрипта программа выдает контекстное меню:
http://s2.ipicture.ru/uploads/20120328/bK3AnqPn.png
Нажимаю Custom, вроде как скрипт запускается.
Подвесил команды на хоткей:
http://s2.ipicture.ru/uploads/20120328/1R44p6Uf.png
Вызываю - но форматирования не происходит. Вообще ничего не происходит.
С AStyle примерно тоже самое.
AStyle.js в скрипты, AStyle.param в параметры, AStyle.exe в AkelPad\AkelFiles\Tools\AStyle\
Запускаю скрипт, появляется контекстное меню. Нажимаю хоткей: курсор убегает в конец документа но с кодом не происходит никаких изменений, как был сдвинут к левому краю, так и остался.
Что я делаю не так? Судя по всему скрипт то запускается, но как сделать так что бы он сработал? Возможно что-то с настройками не так? AkelPad 4.7.3 x86.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Как по мне, то jsBeautifier.js отлично справляется. И не требует внешних программ.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Еще есть tabifier.js, отложенный до создания окошка с галочками, только вот что-то все никак не собраться.
А так мне хватает jsBeautifier.js, вот и ленюсь.
А так мне хватает jsBeautifier.js, вот и ленюсь.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
CleriC
Наверное se7h не перепилил скрипты под Include, т.к. ShowMenuEx.js должен находиться в ..\Scripts\Include\.
Вот рабочая (в т.ч. и с использованием меню) версия скрипта
Только параметры надо правильно указывать так (в Custom используемые мной параметры):
Я вообще файл параметров для данного скрипта не использую, т.к. мне надо всегда лишь 1 вариант, и я задаю его в аргументах при вызове скрипта:
Такой вызов работает и со старой версией скрипта.
Что-то похожее и с HTMLTidy.js.
Строкунадо заменить на
И, возможно (я его просто не использую, потому точно не знаю), параметры передать по другому. Тут поэкспериментировать придётся или se7h как-то потрусить))
DV
Возможно, я не пробовал.
Наверное se7h не перепилил скрипты под Include, т.к. ShowMenuEx.js должен находиться в ..\Scripts\Include\.
Вот рабочая (в т.ч. и с использованием меню) версия скрипта
Только параметры надо правильно указывать так (в Custom используемые мной параметры):
Code: Select all
-b -N -o -t -S -w -Y -M -H -U -p = Custom
-A1 = Allman Style
Code: Select all
-"AStyle форматирование кода" Call("Scripts::Main", 1, "AStyle.js", `"-b -N -o -t -S -w -Y -M -H -U -p"`) Icon("%a\AkelFiles\Plugs\Toolbar.dll", 28)
Что-то похожее и с 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();
DV
Возможно, я не пробовал.
-
Offline
- Posts: 41
- Joined: Tue Mar 27, 2012 4:25 pm
jsBeautifier.js заработал - действительно самый просто вариант - всего один файл положить в папку скрипты. Посмотрю на что он способен.
Можно настроить таким образом, что бы после форматирования документа он не выделял текст и оставлял курсор на том месте где он и был? А то весь текст выделен и теряешь место где стоял курсор.
При форматировании текста С++ jsBeautifier строки с #define компонует в одну строку:
http://s2.ipicture.ru/uploads/20120329/QP0ina1r.png
Это настраивается?
Умеет ли jsBeautifier проверять целостность кода? Хотя бы предупреждать, если какой-то тег не закрыт?
Можно настроить таким образом, что бы после форматирования документа он не выделял текст и оставлял курсор на том месте где он и был? А то весь текст выделен и теряешь место где стоял курсор.
При форматировании текста С++ jsBeautifier строки с #define компонует в одну строку:
http://s2.ipicture.ru/uploads/20120329/QP0ina1r.png
Это настраивается?
Умеет ли jsBeautifier проверять целостность кода? Хотя бы предупреждать, если какой-то тег не закрыт?
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Положение прокрутки должно сохраняться.Можно настроить таким образом, что бы после форматирования документа он не выделял текст и оставлял курсор на том месте где он и был? А то весь текст выделен и теряешь место где стоял курсор.
С восстановлением курсора сложнее. Теоретически – сделать можно, надо пробовать.
Только вот для точного восстановления надо или метки добавлять (а чтобы не сломать парсер, надо при этом учитывать синтаксис, так что восстановится в пределах «слова»), или запоминать, что находится слева (причем или без пробелов, или с заменой группы пробелов на один). Во втором случае это дополнительное выделение памяти. Впрочем, кого это сейчас волнует?
С этим ничего не поделаешь – все же скрипт предназначен для JavaScript. Все-таки это всего лишь побочный эффект от схожего синтаксиса.При форматировании текста С++ ...
Не умеет, но можно оформить предложение – вдруг добавит кто.Умеет ли jsBeautifier проверять целостность кода? Хотя бы предупреждать, если какой-то тег не закрыт?
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
C++:
1. Скачиваем AStyle.
2. Помещаем файл AStyle.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
HTML:
1. Скачиваем HTML Tidy.
2. Помещаем файл Tidy.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
XML:
1. Скачиваем HTML Tidy.
2. Помещаем файл Tidy.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
Требуется Log плагин версии 2.4 или выше.
1. Скачиваем AStyle.
2. Помещаем файл AStyle.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
Code: Select all
-"C++ beautifier" Call("Log::Output", 1, `"%a\AkelFiles\Tools\AStyle.exe" --style=allman`, "", "", "", -1, -1, 1052673) Icon(0)
1. Скачиваем HTML Tidy.
2. Помещаем файл Tidy.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
Code: Select all
-"HTML beautifier" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 --indent auto --quiet yes --wrap 0 --show-errors 0`, "", "", "", 65001, 65001, 1052673) Icon(0)
Code: Select all
-"HTML tester" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 --indent auto --quiet yes --wrap 0 -errors`, "", "^line (\d+) column (\d+)", "/GOTOLINE=\1:\2", 65001, 65001, 4096) Icon(0)
1. Скачиваем HTML Tidy.
2. Помещаем файл Tidy.exe в папку "[AkelPad]\AkelFiles\Tools".
3. Создаем вызов в ToolBar или ContextMenu или HotKeys плагине:
Code: Select all
-"XML beautifier" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 -xml --indent auto --quiet yes --wrap 0 --show-errors 0`, "", "", "", 65001, 65001, 1052673) Icon(0)
Code: Select all
-"XML tester" Call("Log::Output", 1, `"%a\AkelFiles\Tools\Tidy.exe" -utf8 -xml --indent auto --quiet yes --wrap 0 -errors`, "", "^line (\d+) column (\d+)", "/GOTOLINE=\1:\2", 65001, 65001, 4096) Icon(0)
Last edited by Instructor on Sun Jan 25, 2015 10:23 am, edited 5 times in total.
-
Offline
- Posts: 41
- Joined: Tue Mar 27, 2012 4:25 pm
Да, оно действительно сохраняется. Если с курсором все так сложно - фиг с ним.Infocatcher wrote:Положение прокрутки должно сохраняться.
Еще пару вопросов:
Можно ли настроить jsBeautifier таким образом, что бы содержимое внутри тега не переносилось на следующиую строку.
Вот поясняющий скриншот:
http://s1.ipicture.ru/uploads/20120329/csfhHy2s.png
У меня есть длинный тег <group id="СЗ" name="Статическое зондирование" fullname="Оборудование для статического зондирования" img="" order="1">
jsBeautifier переносит кусок img="" order="1"> на следующую строку (см. скрин 4 и 5 строчки). Этого можно избежать?
Второй вопрос, возможно не к бьютифаеру, а к настройкам самого акельпада. Можно ли сделать так, что бы длинный текст в одну строчку, при включении опции "Перенос по словам", начинался не с самого левого края, а с того места какому тегу он принадлежит. Опять же скриншот:
http://s1.ipicture.ru/uploads/20120329/ZWHtxWin.png
Строка №7 очень длинная, но мне нужно видеть ее на экране. При этом сбивается выравнивание по тегам (то, чего я собственно добивался от бьютифаера). Можно ли настроить так, что бы текст шел от нарисованной красной линии?
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Можно, надо запустить с дополнительным аргументомчто бы содержимое внутри тега не переносилось на следующиую строку
-maxChar=число
При особом желании можно даже
-maxChar=Infinity
Пожалуй, было бы удобно. Лишь бы отключить можно было.возможно не к бьютифаеру, а к настройкам самого акельпада
Впрочем, ни AkelPad, ни jsBeautifier такого не умеют.
-
Offline
- Posts: 41
- Joined: Tue Mar 27, 2012 4:25 pm
Поэкспериментирую.Infocatcher wrote: Можно, надо запустить с дополнительным аргументом
-maxChar=число
При особом желании можно даже
-maxChar=Infinity
Жалко, ну да ладно.Впрочем, ни AkelPad, ни jsBeautifier такого не умеют.
Вот еще вопрос. Когда работаешь файлами где есть какая-то отбивка справа (например XML), хотелось, что бы курсор переводился не на начало строки, а выравнивался по тегу внутри которого он находится.
Вот скриншот:
http://s1.ipicture.ru/uploads/20120329/AZYb7XAe.png
Находясь на строчке 253 я нажимаю Enter и курсор переводится на новую строку - в начало 254. А хотелось бы что бы он переводился на уровень тега (помечено красным). Такое возможно?
Где в AkelPad-е можно посмотреть путь до открытого файла? (в заголовке только имя)
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
меню Настройки – Сохранять отступы слевачто бы курсор переводился не на начало строки, а выравнивался по тегу внутри которого он находится
Если включить (P)MDI-режим, в заголовке будет путь:Где в AkelPad-е можно посмотреть путь до открытого файла? (в заголовке только имя)
Настройки – Оконный режим
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Вроде, получилось подкрутить исходный скрипт: https://github.com/einars/js-beautify/pull/109CleriC wrote:Если с курсором все так сложно - фиг с ним.
Осталось понять, как в AkelPad'е не просто восстанавливать положение прокрутки, а пересчитывать с учетом изменений.