Флаги ECSTATE_SAVED и ECSTATE_MODIFIED

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
SUSim
Posts: 1694
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 11 times
Been thanked: 41 times

Флаги ECSTATE_SAVED и ECSTATE_MODIFIED

Post by SUSim »

В промежутке 6565 - 6571 сломалось: ECSTATE_MODIFIED

Если открыть файл в редакторе, внести изменения, то звездочка модификации появляется, а флаг ECSTATE_MODIFIED не выставляется (вообще флагов нет CurState == 0).

Если открыть файл в редакторе нажать F2, внести изменения, то всё норм (CurState == 1).
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Это не ошибка. Вам нужен другой флаг - ECSTATE_SAVED.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1694
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 11 times
Been thanked: 41 times

Глюки и баги, появившиеся в «ночных сборках»

Post by SUSim »

John Doe, откууда Вы знаете что мне нужно?
Мне нужно знать перед сохранением, что файл изменился! А там вообще флагов нет! Или это какаято извращенная логика???

А отсутсисвия всех флагов после измения только что открытого файла вообще неожиданность = глюк.
Я бы приветсвовал отсустсвие флагов при редакторе с новым файлом по Shift F4 без имени, но там как раз почемуто ECSTATE_SAVED ЕСТЬ!,
Last edited by SUSim on Sun 12 Oct, 2025 14:59, edited 5 times in total.
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

SUSim wrote: Sun 12 Oct, 2025 14:44 откууда Вы знаете что мне нужно?
Из вашего сообщения.
SUSim wrote: Sun 12 Oct, 2025 14:44 Или это какаято извращенная логика???
Логика может и специфическая, но ваши потребности должна закрыть.
SUSim wrote: Sun 12 Oct, 2025 14:44 Я бы приветсвовал отсустсвие флагов при редакторе с новым файлом по Shift F4 без имени, но там как раз почемуто ECSTATE_SAVED ЕСТЬ!,
ECSTATE_SAVED в точности соответствует состоянию, когда в строке статуса отсутствует признак модификации "*".
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1694
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 11 times
Been thanked: 41 times

Глюки и баги, появившиеся в «ночных сборках»

Post by SUSim »

John Doe wrote: Sun 12 Oct, 2025 15:35 ECSTATE_SAVED в точности соответствует состоянию, когда в строке статуса отсутствует признак модификации "*".
как раз в приведенном мной примере звездочка есть а флага нет! Вообще флагов нет!
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 7107
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 47 times
Been thanked: 604 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

SUSim wrote: Sun 12 Oct, 2025 20:01 как раз в приведенном мной примере звездочка есть а флага нет! Вообще флагов нет!
По теперешней логике, отсутствие флага EESTATE_SAVED означает, что файл находится в модифицированном состоянии.
Так по крайней мере я это понимаю.
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Флаг установлен когда файл НЕ модифирован. И наоборот.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1694
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 11 times
Been thanked: 41 times

Глюки и баги, появившиеся в «ночных сборках»

Post by SUSim »

С ECSTATE_SAVED становится более менее понятно как работать:
То есть если band(CurState, ECSTATE_SAVED)==0, то при выходе из редактора появится запрос "Сохранить?".
band(Curstate, ECSTATE_SAVED)==1 это значит файл в редакторе не изменялся после открытия или последнего сохранения.

А за что теперь отвечает ECSTATE_MODIFIED ?
Я бы подумал что если band(CurState, ECSTATE_MODIFIED)==1, то он отличается от первоначального состояния и можно сделать отмены (CtrlZ), но это не так...
Last edited by SUSim on Mon 13 Oct, 2025 07:58, edited 1 time in total.
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Он означает что файл хотя бы раз сохранялся в текущем сеансе.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7107
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 47 times
Been thanked: 604 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

John Doe wrote: Mon 13 Oct, 2025 08:37 Он означает что файл хотя бы раз сохранялся в текущем сеансе.
Мне кажется, он означает, что файл хотя бы раз был модифицирован в текущем сеансе.
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Дайте определение "модифицирован".
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7107
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 47 times
Been thanked: 604 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

John Doe wrote: Mon 13 Oct, 2025 13:55 Дайте определение "модифицирован".
Этот вопрос - индикация того , что мы находимся в ситуации, где общепринятые понятия перестают совпадать с названиями флагов.
Я проверил сейчас поведение на своём рабочем билде 6570, оказалось, что ваше определение правильно.
Таким образом, флаг ECSTATE_MODIFIED стал практически бесполезным, ибо какой интерес может представлять был файл уже сохранён или нет, если после этого в редакторе могли производиться любые действия. И сохранение неизменённого редактора тоже взводит этот флаг.

Вообще по моему мнению - не надо было это трогать, хорошее АПИ или не очень, но оно было давным-давно заморожено и так и должно было оставаться.
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Shmuel wrote: Mon 13 Oct, 2025 14:22 И сохранение неизменённого редактора тоже взводит этот флаг.
Раньше не взводило. И это собственно единственное изменение по сравнению со старым поведением АПИ, до 6185. (Не очень существенное изменение в любом случае).

Получается названия флагов и раньше были неочевидны.
Лучшее что можно тут сделать на мой взгляд - это детализировать их описания в Энциклопедии.

Обсуждение было тут https://github.com/FarGroup/FarManager/issues/939
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7107
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 47 times
Been thanked: 604 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

John Doe wrote: Mon 13 Oct, 2025 15:11 И это собственно единственное изменение по сравнению со старым поведением АПИ, до 6185.
Нет. Вплоть до 6570 изменения в редакторе (например ввод текста) взводили флаг ECSTATE_MODIFIED. В 6570 не взводят.
User avatar
John Doe
Бюрократ
Posts: 14407
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 83 times
Been thanked: 482 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Почему сразу "нет". Противоречие тут отсутствует.
Я указал билд в котором апи сломали в первый раз. После это его ломали ещё.

Но сравнивать между собой произвольные промежуточные билды не очень продуктивно. У нас есть точка отсчёта, почему бы именно из неё и не исходить. Или что вы имели ввиду под давным-давно замороженным апи?
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Разработка плагинов”