Я вставляю плагин для интеграции Delphi IDE Theme Editor
с Rad Studio IDE (текущая версия этого инструмента работает как внешнее приложение), пока все работает нормально (см. Ниже изображение), за исключением того, что я могу " т выяснить, как обновить выбранные синтаксических цвета выделения в среде DelphiКак проинформировать IDE Delphi обновленные цвета подсветки синтаксиса с помощью OTA (API открытых инструментов)?
Позвольте мне объяснить, в стандартной опции для изменения синтаксиса цвета выделения (Редактор Options-> Color) вы можете настроить любой элемент и назначьте новый цвет переднего и заднего фона, затем нажмите . ОК . кнопка IDE применяет изменения, а окна редактора IDE обновляются с новыми настройками.
В настоящее время я могу изменять и сохранять новые значения, но я не могу проинструктировать среду разработки Delphi для применения новой конфигурации, изменения видны только в том случае, если среда IDE перезагружена.
Я искал блок ToolsAPI, и я нашел интерфейсы IOTAEditOptions
, IOTAHighlighter
и IOTAHighlightServices
, но ни один из них не включает в себя возможность обновления (перезагрузки) измененной настройки.
Также я пробовал unmangle (используя tdump) и напрямую вызывал функции файла coreide1XX.bpl, но это тоже не сработало.
00420B94 17411 1F39 Editcolorpage::TEditorColor::
00422188 17400 1F3A __fastcall Editcolorpage::TEditorColor::ColorClick(System::TObject *)
0042174C 17407 1F3B __fastcall Editcolorpage::TEditorColor::ColorSpeedSettingClick(System::TObject *)
004224BC 17396 1F3C __fastcall Editcolorpage::TEditorColor::DefaultClick(System::TObject *)
00422414 17397 1F3D __fastcall Editcolorpage::TEditorColor::EditorColorBroadcast(System::TObject *, Winapi::Messages::TMessage&)
00421584 17409 1F3E __fastcall Editcolorpage::TEditorColor::EditorColorCreate(System::TObject *)
00421730 17408 1F3F __fastcall Editcolorpage::TEditorColor::EditorColorDestroy(System::TObject *)
004217B0 17406 1F40 __fastcall Editcolorpage::TEditorColor::ElementListClick(System::TObject *)
004222E8 17399 1F41 __fastcall Editcolorpage::TEditorColor::FontClick(System::TObject *)
004225DC 17395 1F42 __fastcall Editcolorpage::TEditorColor::HelpClick(System::TObject *)
00421AE8 17404 1F43 __fastcall Editcolorpage::TEditorColor::InitLineFlags(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>)
004219B8 17405 1F44 __fastcall Editcolorpage::TEditorColor::InitSamplePane()
00421BC8 17403 1F45 __fastcall Editcolorpage::TEditorColor::InitSyntaxEditView(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>)
0042262C 17393 1F46 __fastcall Editcolorpage::TEditorColor::LoadHighlightPreviews()
004225F4 17394 1F47 __fastcall Editcolorpage::TEditorColor::MarkDirty()
004220E4 17401 1F48 __fastcall Editcolorpage::TEditorColor::SampleClick(System::TObject *)
00422080 17402 1F49 __fastcall Editcolorpage::TEditorColor::SetColorSpeedSetting(Vedopts::TColorSpeedSetting)
0042238C 17398 1F4A __fastcall Editcolorpage::TEditorColor::UpdateSamplePane()
00422814 17392 1F4B __fastcall Editcolorpage::TEditorColor::tbsetPreviewsChange(System::TObject *, int, bool&)
004AA8D4 17390 1F4C __fastcall Editcolorpage::initialization()
00423C38 17413 1F4D __fastcall Editdisplaypage::Finalization()
How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?
Позвольте мне знать, если вам нужно больше информации, или если вопрос не ясен.
Это длинный снимок, но, возможно, вызывается 'IOTAEditView.Paint' для каждого активного редактора модулей? – NGLN
Я не думаю, что это будет работать @NGLN, потому что, как я понимаю, IDE загружает только настройки цвета при инициализации. Я также не считаю, что в OTAPI есть какой-либо интерфейс, который позволяет вам повторно инициализировать эти атрибуты. – LaKraven
Коррекция: эти параметры, как представляется, повторно инициализируются при закрытии диалогового окна «Параметры среды». Обманом может быть просто, чтобы ваш плагин отобразил диалоговое окно «Параметры среды» и попросил пользователя закрыть его вручную. Не очень элегантный, но должен быть эффективным. – LaKraven