Page 13 of 74

Posted: Sat Feb 06, 2010 6:54 pm
by VladSh
Бляха-муха, сколько времени убил!..
Глючит метод ReadFile.
При получении содержимого файла таким способом:
var text = AkelPad.ReadFile(fFPath, 0xD, 0, 0);
если внутри файла есть символы [ ] (ini-файлы), то при любом обращении к text AkelPad выпадает.
Если из файла убрать эти символы, то файл метод нормально отрабатывает..

Posted: Sat Feb 06, 2010 7:26 pm
by se7h
Создали файл, установили вручную подсветку и автодополнение, а при сохранении файла было бы полезно узнать у плагов HighLight или AutoComplete какое расширение файла было задано, для того, чтобы при сохранении файла можно было бы по умолчанию указывать правильное расширение файла, а не txt.
поддерживаю эту очевидную доработку, надоели txt при сохранении

ещё добавлю от себя: почему бы не добавить при сохранении другие форматы кроме txt и чтобы запоминалось последнее выбранное расширение для последующих файлов
VladSh wrote:если внутри файла есть символы [ ] (ini-файлы), то при любом обращении к text AkelPad выпадает.
Если из файла убрать эти символы, то файл метод нормально отрабатывает..
та же беда с символами <>, отчего не работает скрипт newTemplate.js (не помню точно названия) когда пытаешься создать HTML из template.html

Posted: Sun Feb 07, 2010 1:22 pm
by VladSh
se7h wrote:не работает скрипт newTemplate.js (не помню точно названия) когда пытаешься создать HTML из template.html
Сейчас протестил newFileTemplate.js - работает для htm.
Но вылет Акела при чтении файлов, содержащих символы [ ] - это зло!.. :evil:

Posted: Sun Feb 07, 2010 2:35 pm
by VladSh
Ещё одна "радость"...
Хочу написать всой обработчик клавиши Enter; обычный скрипт:

Code: Select all

var WshShell = new ActiveXObject("WScript.Shell");
WshShell.SendKeys("{ENTER}");
прописываю его в Hotkeys-плагине, естественно на клавишу Enter. Так вот при нажатии клавиши Enter в окне редактирования ничего не происходит, а если навести указатель мыши на "управляющее окно" или вкладку, то видны периодически появляющиеся часики, т.е. Акел зациклился.
Как можно сделать так чтобы он не циклился и выполнялась команда Enter?
Вариант сходу: немного откорректировать Hotkeys-плагин, чтобы он реагировал только на реальные нажатия клавиш, исключая те, что инициируются из скрипта.
Ещё вариант: перед SendKeys иметь возможность, естессно программно, отключить, а после - включить Hotkeys-плагин.

Posted: Sun Feb 07, 2010 5:27 pm
by se7h
VladSh wrote:
se7h wrote:не работает скрипт newTemplate.js (не помню точно названия) когда пытаешься создать HTML из template.html
Сейчас протестил newFileTemplate.js - работает для htm.
Но вылет Акела при чтении файлов, содержащих символы [ ] - это зло!.. :evil:
оказалось что Akel вылетал из-за плагина Xbrackets

Posted: Mon Feb 08, 2010 3:56 pm
by Instructor
VladSh wrote:...то видны периодически появляющиеся часики, т.е. Акел зациклился.
Ну надо полагать :) Жмешь Enter вызывается Hotkeys, который вызывает скрипт. Скрипт жмет Enter (SendKeys использует драйвер клавиатуры) вызывается Hotkeys, который вызывает скрипт...

Posted: Tue Feb 09, 2010 2:43 pm
by VladSh
Instructor, ну да, так и происходит) Только как это обойти?..

Ещё вопросец. Скрипт может быть запущен разными комбинациями клавиш.. интересно уже внутри скрипта определить, какой конкретно комбинацией клавиш он был запущен. Это возможно?

Posted: Wed Feb 10, 2010 9:17 am
by FeyFre
Это возможно?
Сейчас - нет, и не думаю что стоит делать такую возможность.
Выполнение алгоритма(скрипта/программы) не должно зависеть от того, кто и как его запустил. Если так хотите - передавайте параметром признаки: откуда и как запущено. Если же будете пытаться самостоятельно выяснить - для пользователя это считается багом, и потому вашим скриптом пользоваться не будут.

Posted: Wed Feb 10, 2010 9:30 am
by VladSh
FeyFre, понял, спасибо!

Posted: Wed Feb 10, 2010 6:41 pm
by Instructor
Добавлено: системный метод Call теперь может принять параметры за один вызов (без AddParameter).

Added: now system method Call can accept parameters at ones (without AddParameter).


Scripts plugin v4.8

Posted: Thu Feb 11, 2010 10:28 am
by VladSh
Instructor wrote:Добавлено: системный метод Call теперь может принять параметры за один вызов (без AddParameter).
Увидел, что теперь метод возвращает результат запуска, но не понял, как он "может принять параметры за один вызов (без AddParameter)"? :roll: :)

Posted: Thu Feb 11, 2010 12:50 pm
by Instructor
VladSh
См. Scripts-Methods.txt

Posted: Thu Feb 11, 2010 1:14 pm
by VladSh
Instructor
Так там я и увидел про возвращение результата! Только больше разницы не вижу, вроде всё как и было..

Posted: Fri Feb 12, 2010 3:11 pm
by VladSh
VladSh wrote:Создали файл, установили вручную подсветку и автодополнение, а при сохранении файла было бы полезно узнать у плагов HighLight или AutoComplete какое расширение файла было задано, для того, чтобы при сохранении файла можно было бы по умолчанию указывать правильное расширение файла, а не txt.

Это частный случай, но универсальный метод опроса (получения параметров) плагинов, думаю, был бы не лишним.
Есть другая идея :idea: :D

1. Список структур, соответствующие каждому файлу (закладке).

2. Структура может содержать статические данные:
- hWndEdit;
- путь к файлу;
- имя файла;
- надпись на закладке;
- тип файла.

3. Структура может содержать динамические данные - любые, которые можно задать извне (из плагинов/скрипта).

4. Получение Структуры из списка всех структур (файлов-закладок) может выглядеть, например, так:

Code: Select all

var Doc_current = AkelPad.Documents(hWndEdit);				//Получаем, естественно, только по хэндлу окна редактирования
Причём структура, которая возвращается в переменную Doc_current, будет содержать и статические и динамические данные.

5. Получние данных из структуры может выглядеть, к примеру, так:

Code: Select all

var pFileType = Doc_current.GetProperty("TYPENAME");	//Вернёт txt для текстового файла
6. Запись данных в структуру может выглядеть, к примеру, так:

Code: Select all

Doc_current.SetProperty("TYPENAME", "js");				//Для вновь создаваемого файла устанавливаем тип файла
Таким образом мы получаем очень гибкий механизм обмена данными программы, плагинов и скриптов.

Пример: создание файла на основе текущего:
1. Считываю параметры (путь к файлу и TYPENAME) текущего файла.
2. Создаю новый файл, устанавливаю ему те же параметры.
3. Плагинам даётся команда на отработку, т.е. они сразу же автоматически получают информацию о типе файла из структуры и применяют нужную подсветку, авто-подстановку и т.п.

Также решилась бы проблема с отображением окошка CodeFold, т.е. плагин бы был загружен всегда (галка), но отображал бы окошко только для файлов, указанных в настроечных файлах.
То же самое и с AutoComplete - он бы знал, что в txt ему работать ненужно.
Ну и со скриптами работать было бы очень удобно.

EDITED: Иногда работаешь со специфическими типами файлов, для которых включен тот же AutoComplete, т.е. действуют специальные комбинации клавиш. С такой структурой удобно работать потому, что при переключении на другую закладку (тип файла) для других типов файлов можно использовать эти же комбинации клавиш для других целей, т.е. плагин для txt-файла не работает и, соответственно, комбинации клавиш, присущие плагину, для данного типа файла свободны.
Т.о. всё, что мы сейчас делаем (флаги в реестре или запись в ini) относится к программе в целом (речь о динамически добавляемых параметрах, т.е. динамической части структуры), а так появится возможность работы/настройки конкретного файла. Также увеличится скорость работы, т.к. не надо лезть в реестр или работать с файлами (ini).

Posted: Fri Feb 12, 2010 3:51 pm
by VladSh
И о5 метод Call.
Scripts-Methods.txt wrote:Call AkelPad plugin.
Call(pFunction[, ...]);

Return Value
-1 //UD_FAILED Operation failed.
0 //UD_UNLOAD Plugin unloaded
Для отключения плагина Hotkeys использую строку:

Code: Select all

if (AkelPad.Call("Hotkeys::Main") == 0)
вместо отключения плагина вылетает диалог настроек Hotkeys.

Для вызова окошка плагина AutoComplete пишу:

Code: Select all

AkelPad.Call("AutoComplete::Main");
раньше окошко показывалось, теперь вылетает диалог настроек AutoComplete.

Что я делаю не так :?:

Fatal: Not able to open ./cache/production/data_global.php