VladSh wrote:Создали файл, установили вручную подсветку и автодополнение, а при сохранении файла было бы полезно узнать у плагов HighLight или AutoComplete какое расширение файла было задано, для того, чтобы при сохранении файла можно было бы по умолчанию указывать правильное расширение файла, а не txt.
Это частный случай, но универсальный метод опроса (получения параметров) плагинов, думаю, был бы не лишним.
Есть другая идея
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).