AkelEmmet is an Emmethttp://emmet.io (ex Zen Coding) wrapper for AkelPad.
Upgrade to AkelEmmet 1.2!
If you have AkelEmmet 1.0 or AkelEmmet 1.1 please upgrade to AkelEmmet 1.2. To upgrade download new archive from location below and unpack it to [AkelPad]\AkelFiles\Plugs\Scripts. You can remove folder [AkelPad]\AkelFiles\Tools\emmet then. Do not forget to move your snippets and extensions if you have ones from Tools\emmet\ext folder to Plugs\Scripts\Include\Emmet\ext. Change menu entries for Context::Menu Edit and ToolBar menu to set new path to icon_16.ico as shown below.
You need Scripts plugin to run this AkelEmmet wrapper. All other plugins are optional.
1.3 Adding hotkey
Add hotkey [Ctrl+Enter] (or any of your choice) for calling AkelEmmet.js script.
Its default action is 'expand_abbreviation' - that is expand abbreviation.
You can do this by calling Scripts::Main (Alt-p, Scripts::Main, [Call]) and assigning key for AkelEmmet.js script.
To make hotkeys for various Emmet actions you need Hotkeys plugin.
To see some Emmet's logs you need to have Log plugin installed.
2. Usage.
Call AkelEmmet.js with parameter `action` to exec any of supported Emmet actions.
`action` can be # of command from list (see source of AkelEmmet.js for full list of commands)
or name of Emmet action, e.g. 'match_pair_outward' or 'toggle_comment'
Examples: Call("Scripts::Main", 1, "AkelEmmet.js") - to run default action which is 'expand_abbreviation' Call("Scripts::Main", 1, "AkelEmmet.js", `-action=4`) - to run 'next_edit_point' action Call("Scripts::Main", 1, "AkelEmmet.js", `-action='select_next_item'`) - to select next item
and so on.
You can set hotkeys for desired commands through Hotkey plugin.
Recommended hotkeys (its up to you): [Ctrl+Enter] Expand Abbreviation Call("Scripts::Main", 1, "AkelEmmet.js") [Ctrl+Shift+Enter] Wrap with Abbreviation Call("Scripts::Main", 1, "AkelEmmet.js", `-action=3`) [Ctrl+Alt+Right] Emmet next edit point Call("Scripts::Main", 1, "AkelEmmet.js", `-action=4`) [Ctrl+Alt+Left] Emmet previous edit point Call("Scripts::Main", 1, "AkelEmmet.js", `-action=5`) [Alt+T] Toggle comment Call("Scripts::Main", 1, "AkelEmmet.js", `-action='toggle_comment'`)
* Note: toggle comment works for HTML/CSS files
3. Test
Type in abbreviation and press [Ctrl+Enter] if you defined it as a hotkey for default Emmet action to expand it.
Open empty document (Ctrl+n), type in following abbreviation and expand it:
Note that same abbreviation for css and html files can expand differently.
4. Extending
You can put Emmet extensions into `Include\Emmet\ext` folder.
Extensions are simple .js files that uses Emmet modules and resources
to create new actions, modify existing ones etc.
When any Emmet action starts, all `*.js` files in `Include\Emmet\ext` folder will be eval'ed,
and all `snippets*.json` files will extend `snippets` Emmet object.
It allows you to extend and rewrite Emmet behaviour and snippets any way you want.
The MIT License (MIT)
Copyright (c) 2012 Sergey Chikuyonok <serge.che@gmail.com>
Support for AkelPad by beotiger http://beotiger.com 2016-01-05
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the
Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Last edited by beotiger on Thu Jan 07, 2016 10:04 am, edited 3 times in total.
1. Рекомендую за рамки принятых каталогов не вылезять:
скрипты которые вызываются - в Scripts
скрипты которые используются другими скриптами и никогда не вызываются пользователем - в Scripts/Include
Далее 1:
eval(AkelPad.ReadFile(...)); обязательно заменить на AkelPad.Include(). Поверьте на слово.
Этот код может и должен быть улучшен, а именно: перед ориентацией на расширение рекомендуется спросить в других местах текущий контекст, например у плагина Coder
FeyFre wrote:1. Рекомендую за рамки принятых каталогов не вылезять:
скрипты которые вызываются - в Scripts
скрипты которые используются другими скриптами и никогда не вызываются пользователем - в Scripts/Include
Далее 1:
eval(AkelPad.ReadFile(...)); обязательно заменить на AkelPad.Include(). Поверьте на слово.
Этот код может и должен быть улучшен, а именно: перед ориентацией на расширение рекомендуется спросить в других местах текущий контекст, например у плагина Coder
FeyFre thanks for your notes. They have been taken into consideration and new version of AkelEmmet is out. It's faster and better due to you!
Also AkelEmmet got new persistent location - http://akelpad.sourceforge.net/forum/vi ... 0266#30266
beotiger
I wrote WriteFile function at a time when there was no WriteFile method in Scripts plugin.
Now you can use AkelPad.WriteFile instead of WriteFile.
beotiger, забудь о бинарных данных. Все строки которые ходят внутри АР и в плагинах(в т.ч. скриптах) - z-строки, внутри хранятся в UTF-16 кодировке. Если что-то такое нужно делать - АР не помощник.
Для этих целей есть oSys.Call(диспетчер системных вызовов WINAPI), AkelPad.Mem*(менеджер памяти).
Причина?
Чтобы потом можно было распознать кодировку автоматически, а не гадать на гуще. Конечно если в файле полезные данные исключительно в наборе символов iso8859-1, то не правильно распознанная кодировка данных не испортит.
Не знал, что можно просто взять и приделать стороннюю обёртку к АкелПаду.
А все функции (хоткеи, плагины, скрипты) акелпада при этом продолжают нормально работать?
Интересно было бы пощупать AkelPad со Scintilla обёрткой.
Drugmix wrote:Не знал, что можно просто взять и приделать стороннюю обёртку к АкелПаду.
Emmet написан на чистом JavaScript, поэтому всю работу за нас выолняет великолепный Scripts плагин. нам надо было только переписать характерные для AkelPad'а функции редактирования текста и работы с файлами.
Drugmix wrote:А все функции (хоткеи, плагины, скрипты) акелпада при этом продолжают нормально работать?
AkelEmmet.js - это обычный скрипт, который Вы запускате либо из Scripts плагина, либо по назначению горячих клавиш. Он никак не влияет на работу самого редактора. В нём содержатся действия Emmet'а, для которых можно также назначить горячие клавиши или пункты меню. Прочитайте AkelEmmet_readme_ru.txt для понимания ситуации.
FeyFre wrote:Drugmix, больше скажу: это не первая успешная попытка прикрутить zen_coding.
FeyFre, там ссылки битые, может их исправить, а то они меня ввели в заблуждение.
FeyFre wrote:
Интересно было бы пощупать AkelPad со Scintilla обёрткой.
"Установил Скайп на телефон, теперь могу пользоваться телефоном как телефоном". При таких вбросах нужно ссылку давать на испытуемое
Тут имеется в виду, наверное, что если сделать обёртку Scintilla для AkelPad'а, то можно будет использовать Scintilla-плагины.
Теоретически можно наверное, только сколько это займет человеко-часов неясно. Да и зачем. У AkelPad'а своя неповторимая атмосфера и своя философия работы с текстом, по моему скромному мнению.
FeyFre wrote:beotiger, забудь о бинарных данных. Все строки которые ходят внутри АР и в плагинах(в т.ч. скриптах) - z-строки, внутри хранятся в UTF-16 кодировке. Если что-то такое нужно делать - АР не помощник.
Для этих целей есть oSys.Call(диспетчер системных вызовов WINAPI), AkelPad.Mem*(менеджер памяти).
FeyFre, на основе KDJ's FileAndStream_functions.js я написал функцию
, которая читает бинарный файл.
Но потом сравнил её со встроенным методом AkelPad.ReadFile и увидел, что они читают одинаково, поэтому отказался от неё. WriteFile'же в editor.js остался, так как мне неясно, как ведет себя AkelPad.WriteFile при записи бинарников (по причине, описанной выше).
Balance в скрипте не работает таким образом, как продемонстрировано на сайте Emmet, или это только у меня проблемы возникли?
Выделяется только один раз, и при последующих нажатиях выделение не расширяется на теги уровнем выше.
Balance Tag Inward - в большую сторону один раз выделяется, и всё, выделение не уменьшается.