View Issue Details

IDProjectCategoryView StatusLast Update
0002723Far ManagerPlugins API.Editorpublic2014-07-08 20:05
Reportershmuel Assigned Tozg  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Target Version3.0Fixed in Version3.0 
Summary0002723: ECTL_GETINFO не работает при вызове редактора из редактора
DescriptionПосле нажатия ShiftF4 из открытого редактора, если в EE_READ вывести меню, то после закрытия меню не работает ECTL_GETINFO, а именно: при передаче EditorID возвращается FALSE, а при передаче -1 возвращаются данные исходного редактора, а не нового.

Если в EE_READ выводить не меню, а диалог (например, Message()), то ECTL_GETINFO работает правильно: как при передаче EditorID, так и при передаче -1.
Steps To ReproduceEvent {
  group="EditorEvent";
  action=function(EditorID, Event, Param)
    if Event==far.Flags.EE_READ then
      info1 = editor.GetInfo(EditorID)
      far.Show"1"
      info2 = editor.GetInfo(EditorID)
      far.Show(
        EditorID,
        info1 and info1.EditorID,
        info2 and info2.EditorID
      )
    end
  end;
}
TagsNo tags attached.
Build3981

Activities

zg

2014-06-29 09:59

developer   bugnote:0012624

> Если в EE_READ выводить не меню, а диалог (например, Message()), то ECTL_GETINFO работает правильно
только с Message правильно. far.DialogRun — то же самое, что и с меню.

shmuel

2014-06-29 10:16

developer   bugnote:0012625

> только с Message правильно. far.DialogRun — то же самое, что и с меню.

А, возможно... Я только far.Message пробовал.

zg

2014-06-29 10:21

developer   bugnote:0012626

во время EE_READ текущий редактор ещё не находится в списке окон, потому что объект собственно ещё не сконструирован. EditorControl работает благодаря вот такой магии:

Global->CtrlObject->Plugins->SetCurEditor(this); //&FEdit;
Global->CtrlObject->Plugins->ProcessEditorEvent(EE_READ,nullptr,m_editor->EditorID);

FileEditor* currentEditor=Global->CtrlObject->Plugins->GetCurEditor();
if (currentEditor && currentEditor->GetId() == EditorID) EditorID = -1;

if (EditorID == -1)
{
    if (currentEditor)
        return currentEditor->EditorControl(Command,Param1,Param2);

    return 0;
}

после показа меню/диалог, после их закрытия вызывается Frame::OnChangeFocus он вызывает Show у первого редактора (про второй он ещё не в курсе), а тот делает Global->CtrlObject->Plugins->SetCurEditor(HostFileEditor). магия перестаёт работать.

zg

2014-06-29 10:25

developer   bugnote:0012627

с Message видимо работает, потому что запрещается перерисовка.

shmuel

2014-06-29 10:34

developer   bugnote:0012628

Но при ShiftF4 из панелей, даже если есть несколько открытых редакторов, всё ОК.

zg

2014-06-29 10:40

developer   bugnote:0012629

так они не перерисовываются.

zg

2014-06-29 13:32

developer   bugnote:0012633

3968.

shmuel

2014-06-29 14:51

developer   bugnote:0012635

Заработало, в том числе скрипт из fl_scripts, с которого всё началось.
Но в этом скрипте есть editor.SetPosition(): до 3968 после вставки шаблона курсор стоял сразу в заданном месте, а сейчас - нет. То-есть SetPosition() по-прежнему работает правильно, но в 3968 требуется ещё перерисовка, а до 3968 она не требовалась.

shmuel

2014-06-29 16:22

developer   bugnote:0012640

Ага, ещё 3968 падает с колорером (говорят здесь: http://forum.ru-board.com/topic.cgi?forum=5&topic=31718&start=5240#17).

zg

2014-06-29 18:29

developer   bugnote:0012642

стандартный набор плагинов, чистый профиль, x86, gcc/vc2010, 3968/3969 — никаких проблем с колорером не наблюдаю.

shmuel

2014-06-29 18:33

developer   bugnote:0012643

Я сам пока не пробовал, но эти товарищи с ру-борд в 95% случаев рапортуют реальные проблемы.

zg

2014-06-29 18:41

developer   bugnote:0012644

я не говорю, что проблема нереальная. но что у них там стоят за плагины, макросы и настройки, мне неведомо. на моей конфигурации и на чистой — всё ок.

shmuel

2014-06-29 18:46

developer   bugnote:0012645

Поставил колорер на 3969, тоже проблем не наблюдаю.

skipik

2014-06-29 18:52

reporter   bugnote:0012646

Перепроверил на чистом профиле, падения действительно нет.
Сейчас ищу причину.

skipik

2014-06-29 19:38

reporter   bugnote:0012647

Last edited: 2014-06-29 20:09

Попробуйте включить опцию [x] Изменять цвет фона редактора в настройках Colorer'a, перезапустить фар и проверить открытие файлов по F4.

У меня вот так настроено:


   ╔══════════════ Настройки FarColorer ═══════════════╗
   ║ [x] Включить ║
   ║ [?] Показывать крест ║
   ║ Вид креста целый ↓ ║
   ║ [x] Выделять парные элементы ║
   ║ [x] Показывать синтаксис ║
   ║ [x] Классический стиль списка функций ║
   ║ [x] Изменять цвет фона редактора ║
   ║ Цветовой стиль:[ White colors ] ║
   ║ Файл catalog.xml: ║
   ║ ↓ ║
   ║ Файл списка схем пользователя ║
   ║ ↓ ║
   ║ Файл цветовых стилей пользователя ║
   ║ ↓ ║
   ║ Log файл ║
   ║ ↓ ║
   ║──────────────── Настройки TrueMod ────────────────║
   ║ [x] Включить ║
   ║ Цветовой стиль:[ White (crimsoned) ] ║
   ║───────────────────────────────────────────────────║
   ║ [ Тест библиотеки схем ] [ Настройки схем ] ║
   ║ { ОК } [ Отмена ]║
   ╚═══════════════════════════════════════════════════╝

Падает. Из всех опций на падение влияет именно изменение цвета фона.

zg

2014-06-29 19:52

developer   bugnote:0012648

да, так воспроизводится, на файлах, где этот бэкграунд меняется.

zg

2014-06-29 22:27

developer   bugnote:0012650

это колорер циклится. на форуме, в теме колорера отписал подробнее.

shmuel

2014-07-03 06:22

developer   bugnote:0012665

Builds 3968-3976:
1. Запускаем Фар с единственным плагином LuaFAR for Editor.
   В файле _usermenu.lua плагина только 2 следующие строчки:
      AddToMenu ("e", true, "Alt+1", 1)
      AddToMenu ("e", true, "Alt+1", 1)
2. Нажимаем F4 на каком-либо файле.
3. Плагин выводит сообщение: Key `Alt+1' is already allocated
4. Закрываем сообщение: ожидается переход в редактор, но этого не происходит.
5. Нажимаем Up и оказываемся в редакторе.

shmuel

2014-07-08 20:05

developer   bugnote:0012699

Похоже, что всё пришло в норму.

Issue History

Date Modified Username Field Change
2014-06-29 08:09 shmuel New Issue
2014-06-29 08:13 shmuel Description Updated
2014-06-29 08:16 shmuel Description Updated
2014-06-29 09:59 zg Note Added: 0012624
2014-06-29 10:16 shmuel Note Added: 0012625
2014-06-29 10:21 zg Note Added: 0012626
2014-06-29 10:25 zg Note Added: 0012627
2014-06-29 10:34 shmuel Note Added: 0012628
2014-06-29 10:40 zg Note Added: 0012629
2014-06-29 13:32 zg Note Added: 0012633
2014-06-29 14:51 shmuel Note Added: 0012635
2014-06-29 16:22 shmuel Note Added: 0012640
2014-06-29 18:29 zg Note Added: 0012642
2014-06-29 18:33 shmuel Note Added: 0012643
2014-06-29 18:41 zg Note Added: 0012644
2014-06-29 18:46 shmuel Note Added: 0012645
2014-06-29 18:52 skipik Note Added: 0012646
2014-06-29 19:38 skipik Note Added: 0012647
2014-06-29 19:52 zg Note Added: 0012648
2014-06-29 20:01 skipik Note Edited: 0012647
2014-06-29 20:01 skipik Note Edited: 0012647
2014-06-29 20:09 skipik Note Edited: 0012647
2014-06-29 22:27 zg Note Added: 0012650
2014-07-03 06:22 shmuel Note Added: 0012665
2014-07-08 20:05 shmuel Build => 3981
2014-07-08 20:05 shmuel Note Added: 0012699
2014-07-08 20:05 shmuel Status new => closed
2014-07-08 20:05 shmuel Assigned To => zg
2014-07-08 20:05 shmuel Resolution open => fixed
2014-07-08 20:05 shmuel Fixed in Version => 3.0