API AkelPad, или как перенастроить встроенные команды

Russian main discussion
  • Author
  • Message
Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

API AkelPad, или как перенастроить встроенные команды

Post by Eskander88 »

Доброго времени суток!

Вопрос:
В меню AkelPad есть команда № 4183 (вставить дату, Ctrl + D) и команда № 4254 (Сохранить отступы слева, Ctrl + L).
Хочу внести корректировки в работу данных функций: существует ли возможность отредактировать данные команды как js/vbs файлы, так же как элементы Script-плагин?

----
думал, что ResHack поможет найти код. Но как я понял она не может вытаскивать объекты такого типа.

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

Post by VladSh »

Можно их переопределить. Вам помогут Hotkeys-, ContextMenu-, Toolbar- и Scripts- плагины.
Гляньте документацию и FAQ.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Я думаю вы предложили вариант, когда делаются скрипты и к ним добавляются hot-keys, которые затирают старые команды?!

Читал об этом в FAQ. Там описан способ назначения клавиш к JS скриптам. Если он имеется в виде исходника.

Мне бы хотелось просто переделать уже имеющуюся функцию, - если это конечно возможно делать со встроенными командами. Писать скрипт к AkelPad врятли смогу, а вот поправить код, чтобы формат вывода даты был как нужно получится. Немного разбираюсь.

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

Post by VladSh »

Вот строка запуска скрипта DateInsert.js (он использует DateFormat.js):

Code: Select all

-"Вставить дату наоборот" Call("Scripts::Main", 1, "DateInsert.js", `"yyyy.MM.dd"`, 0)
Ничего писать не надо, всё уже написано. Надо всего лишь разобраться как использовать эту строку из Hotkeys-, ContextMenu-, Toolbar- плагинов.


Добавлено: кстати, всё оказывается ещё проще. Для AkelPad.ini существует специальный параметр DateInsertFormat для задания формата вставляемой по Ctrl+D даты. Всё есть в документации.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Да, видимо по описанию то, что надо. Спасибо за информацию.

А что касается «документации AkelPad». Это наверное AkelPad/Справка/Руководство? Там конечно есть настройки. Просто каждый раз лазать в реестр или ini не очень то..

Насколько я помню данное руководство иногда переписывается, - в ранних версиях об этом не писали. А в моей 4.7.9 кое-что есть. Может в инете есть самая свежая редакция?

Хмм.. а как же быть с остальным.. Например "перенос на новую строку". Выходит всё делается средствами Script::Main с подключением к его скриптам (плагина) через HotKeys::Main, где пишется вроде -

Code: Select all

"Вставить дату наоборот" Call("Scripts::Main", 1, "DateInsert.js", `"yyyy.MM.dd"`, 0))
только выбираешь себе скрипт по функционалу, и пользуешься?!

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

Post by VladSh »

Почитайте доки. Можно не только скрипты, но и просто команду вызвать по номеру: Command(№). Номера команд опять же в документации (Руководстве).

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

.. по номеру знаю как. В самом начале и написал №-а. Смотрел их в ResourseHack. А вот тему закрывать не хотелось бы. Может всё таки найдётся умелец, который знает

А так

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

Re: API AkelPad, или как перенастроить встроенные команды

Post by VladSh »

Eskander88 wrote:В меню AkelPad есть команда № 4183 (вставить дату, Ctrl + D) и команда № 4254 (Сохранить отступы слева, Ctrl + L).
Хочу внести корректировки в работу данных функций...
С датами всё понятно - расписано выше.
Какую корректировку Вы хотели бы внести в работу команды "Сохранить отступы слева"?

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

.. по номеру знаю как. В самом начале и написал №-а. Смотрел их в ResourseHack. Сами коды он не вытаскивает. Некоторые параметры только.

А вот тему закрывать не хотелось бы. Может всё таки есть способ вытаскивать и переделывать системные команды.

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

Раз уж AkelPad так широко использует Js и Vbs, - вот и появилась идея, - что может его большая часть в нём и записана в этих скриптах, только бы знать как их вытаскивать.

А пока Scripts::Main видимо с головой хватит .
Уже парочку скриптов попробовал, оч.круто :D

Всем Огромное спасибо!

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Re: API AkelPad, или как перенастроить встроенные команды

Post by Eskander88 »

VladSh wrote:
Eskander88 wrote:В меню AkelPad есть команда № 4183 (вставить дату, Ctrl + D) и команда № 4254 (Сохранить отступы слева, Ctrl + L).
Хочу внести корректировки в работу данных функций...
С датами всё понятно - расписано выше.
Какую корректировку Вы хотели бы внести в работу команды "Сохранить отступы слева"?
бывает когда пишешь тело функции, скажем в PHP, то когда скобка закрывает список инструкций, хотелось бы чтоб отсуп сбрасывался на один шаг.

Code: Select all


	class MyClass {
		function getData($x, $y) {
		 $some_instruction...
		}  // здесь, когда жмёшь enter, чтобы каретка
	|<- здесь ставилась		
	
	}
	
это что первое вспомнилось в голове и ещё несколько трюков (идеи) для интуитивного набора есть, сейчас не могу быстро вспомнить. Хотя всё конечно от стиля написания зависит, некоторые скажут что мол и так правильно.. Смысл "моего проекта" в том, чтобы иногда Ctrl + L сопоставлял какой порядок символов идёт и нужным мне образом от отступ менял.

.. ещё подключу LinesSelectCopyMoveDuplicate.js (очень нужный мне функционал) и можно будет на скорости строчить код. И будет всё красиво :D

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

Post by VladSh »

Это резидентным скриптом решается. Посмотрите в коллекции скриптов, что-то подобное проскакивало, возможно достаточно будет откорректировать чей-то скрипт под себя. Ну или свой писать.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Eskander88 wrote:.. по номеру знаю как. В самом начале и написал №-а. Смотрел их в ResourseHack. ...
Возможно надо использовать дезассамблёр, но это для меня тёмный лес, и не думаю, что автор программы такие методы одобрит...
Автор программы такие методы совершенно точно не одобрит, но совсем по другой причине. Идея использовать "ResourseHack" и "дезассамблёр" (с) применительно к Open-source software - это лучший анекдот дня!

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

opk44 wrote:
Eskander88 wrote:.. по номеру знаю как. В самом начале и написал №-а. Смотрел их в ResourseHack. ...
Возможно надо использовать дезассамблёр, но это для меня тёмный лес, и не думаю, что автор программы такие методы одобрит...
Автор программы такие методы совершенно точно не одобрит, но совсем по другой причине. Идея использовать "ResourseHack" и "дезассамблёр" (с) применительно к Open-source software - это лучший анекдот дня!
Точно! Сто лет на страницу загрузки не лазал.. я и забыл! Там же прилагаются исходники! Вот уж точно! :lol: анекдот

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

Post by VladSh »

В любом случае, для каких-то изменений исходники не нужны. За всё время, на сколько я помню, был один случай с назначением кнопки по умолчанию в диалоге поиска/замены, когда ребята пользовались исходниками. Остальные потребности прекрасно решаются скриптами, ну а если уж хочется залезть на более низкий уровень, то плагинами (за всю историю самописынх плагинов было всего несколько штук).

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Вопрос по API: :D Сделал настройку Hotkeys-плагин, чтобы можно было отправлять на исполнение просматриваемый файл.

Решение такое:

Code: Select all

Exec(`cmd.exe /k "%f"`)

Почему не просто Exec("%f"):
  1. запуск cmd.exe возможен с ключом /k, /U, /A.
  2. проще подпилить под основополагающую затею
Как нюанс: выражение берётся в (`) и аргумент в ("), чтобы запускать файлы, в путях к которым, указаны символы пробела.

Следую из вышесказанного возникли вопросы. Подскажите пожалуйста.

Как можно использую Hotkeys-плагин для передачи в cmd.exe только выделенный фрагмент текста, можно ли использовать какую-нибудь системную функцию?
Методы для подстановки адресов директорий и путей есть: %f, %d, %a

Скажем, что бы работал что-то вроде:

Code: Select all

Exec(`cmd.exe /k echo `+AkelPad.GetSelText())
Где +AkelPad.GetSelText() - возвращает фрагмент выделенный в тексте.

Видел на форуме EvalCmd.js, но никак не разберусь можно ли его с подобной целью использовать. Для чего он вообще?
Post Reply