View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001183 | Far Manager | Editor | public | 2009-11-28 18:06 | 2012-05-31 15:10 |
Reporter | JohnDoe | Assigned To | 2useven10 | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001183: При Reload запоминание кодовой страницы должно происходить раньше считывания | ||||
Description | Если вызвать Shift-F4 из редактора, и переоткрыть файл (Reload), то файл открывается не в той кодировке в которой ожидается. | ||||
Steps To Reproduce | - открываем (F4) файл в кодировке 1251 - меняем (F8) на 866 - Открываем диалог (Shift-F4), заполняем имя (Ctrl-J), Enter - На запрос выбираем Reload (Alt-E) Видим что вопреки ожиданиям кодировка осталась 1251. Не меняя кодировку жмём Shift-F4 Ctrl-J Enter Alt-E Видим что кодировка изменилась на 866. И т.д. по кругу. Видно что при закрытии файла кодовая страница запоминается, но при Reload считывание запомненной происходит раньше закрытия. | ||||
Tags | No tags attached. | ||||
Build | 2614 | ||||
|
На мой взгляд ожидаемая кодировка при релоаде - 1251. 866 - ожидаемая, если выбрать Current. Но меняться при следующем релоаде конечно не стоит. Выглядит очень забавно. |
|
Перефразирую: При Reload запоминания кодовой страницы вообще не должно быть. |
|
Интересно. Альтернативное мнение... Я вручную поменял кодировку и хочу чтобы она запомнилась при закрытии. Неважно что после закрытия я опять открываю тот же самый файл. Имхо. |
|
выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки, если нет - выбирайте Current, они (изменения) потом будут сохранены. |
|
Приведу сценарий, когда всё-таки желательно запоминание. Например иногда файл открывается в неправильной кодировке, причём с потерей информации (OEM как UTF-8). Изменения кодировки на правильную тут недостаточно - надо ещё и открыть файл заново. P.S. Не факт, что мой сценарий типичен для кого-то ещё. Возможно действительно стоит убрать запоминание позиции и кодировки. |
|
открывайте, указав правильную кодировку. разве этого не достаточно? |
|
Очевидно что проще тупо переоткрыть, чем повторно указывать кодировку, вручную выбирая из списка. (Но для меня не проблема, я уже давно намакросил) |
|
Reload_NoSavePos.diff (2,422 bytes)
Index: fileedit.hpp =================================================================== --- fileedit.hpp (revision 6263) +++ fileedit.hpp (working copy) @@ -59,6 +59,8 @@ enum FFILEEDIT_FLAGS { + FILEEDIT_DISABLESAVEPOS = 0x00008000, // �� ������ ����� �� ����� + FFILEEDIT_NEW = 0x00010000, // ���� ���� ����������! ���� ��� ��� ������ ������! ���� ������ � ��� ���. FFILEEDIT_REDRAWTITLE = 0x00020000, // ����� �������� ���������? FFILEEDIT_FULLSCREEN = 0x00040000, // ����������� �����? Index: fileedit.cpp =================================================================== --- fileedit.cpp (revision 6263) +++ fileedit.cpp (working copy) @@ -379,7 +379,7 @@ //AY: ���� �������� ������� ���������. m_bClosing = true; - if (m_editor->EdOpt.SavePos && CtrlObject) + if (!Flags.Check(FILEEDIT_DISABLESAVEPOS) && m_editor->EdOpt.SavePos && CtrlObject) SaveToCache(); BitFlags FEditFlags=m_editor->Flags; @@ -536,9 +536,14 @@ SwitchTo=FALSE; break; case 2: // Reload + { FrameManager->DeleteFrame(FramePos); + Frame *deleted_frame = (*FrameManager)[FramePos]; + if ( deleted_frame ) + deleted_frame->SetFlags(FILEEDIT_DISABLESAVEPOS); SetExitCode(-2); break; + } case -100: //FrameManager->DeleteFrame(this); //??? SetExitCode(XC_EXISTS); Index: frame.hpp =================================================================== --- frame.hpp (revision 6263) +++ frame.hpp (working copy) @@ -115,13 +115,15 @@ // int ModalCount() {return ModalStackCount;} void DestroyAllModal(); void SetDynamicallyBorn(int Born) {DynamicallyBorn=Born;} - int GetDynamicallyBorn() {return DynamicallyBorn;}; + int GetDynamicallyBorn() {return DynamicallyBorn;} virtual int FastHide(); // int IndexOf(Frame *aFrame); bool RemoveModal(Frame *aFrame); virtual void ResizeConsole(); bool HasSaveScreen(); // bool ifFullConsole(); - virtual string &GetTitle(string &Title,int SubLen=-1,int TruncSize=0) { return Title; }; - virtual bool ProcessEvents() {return true;}; + virtual string &GetTitle(string &Title,int SubLen=-1,int TruncSize=0) { return Title; } + virtual bool ProcessEvents() {return true;} + + void SetFlags( DWORD flags ) { Flags.Set(flags); } }; |
|
в аттаче: Отключение сохранения позиции при релоаде файла |
|
Меня смущает значение для FILEEDIT_DISABLESAVEPOS (пока не помню почему) Зачем ты его в младшее слово разместил? Давай как я го вверх подниму, скажем пусть будет 0x08000000. И, кстати, может имеет смысл его, флаг, отдать и плагинам (EF_DISABLESAVEPOS), ы? |
|
не проблема (то что это значение свободно - не заметил). хотя моё тоже вроде не занято: в цепочке наследования FileEditor -> Frame -> ScreenObject. Flags используется в FileEditor (все маски рядом) и в ScreenObject (из комментария - в пределах 0xFF) |
|
build 2046 (апи добавлено) |
|
>выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки Нажав F10 я тоже отказываюсь от своих изменений. Но кодировка запоминается. Неконсистентно получается. |
|
build 2614 - сохраняем позицию и кодировку при релоаде. |
|
JohnDoe не читатель ? |
|
Читатель :-) Но виноват, упустил. |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-11-28 18:06 | JohnDoe | New Issue | |
2011-05-20 10:52 | 2useven10 | Note Added: 0006966 | |
2011-05-20 10:55 | 2useven10 | Note Edited: 0006966 | |
2011-05-20 13:55 | 2useven10 | Note Added: 0006974 | |
2011-05-20 15:12 | JohnDoe | Note Added: 0006979 | |
2011-05-20 16:05 | 2useven10 | Note Added: 0006980 | |
2011-05-20 16:29 | JohnDoe | Note Added: 0006982 | |
2011-05-20 16:35 | JohnDoe | Note Edited: 0006982 | |
2011-05-20 16:44 | 2useven10 | Note Added: 0006983 | |
2011-05-20 17:23 | JohnDoe | Note Added: 0006984 | |
2011-05-23 10:21 | 2useven10 | File Added: Reload_NoSavePos.diff | |
2011-05-23 10:22 | 2useven10 | Note Added: 0007001 | |
2011-05-23 12:34 | vskirdin | Note Added: 0007007 | |
2011-05-23 12:34 | vskirdin | Assigned To | => vskirdin |
2011-05-23 12:34 | vskirdin | Status | new => assigned |
2011-05-23 13:30 | 2useven10 | Note Added: 0007008 | |
2011-05-23 13:36 | vskirdin | Note Added: 0007009 | |
2011-05-23 13:36 | vskirdin | Status | assigned => feedback |
2011-05-23 13:53 | vskirdin | Note Edited: 0007009 | |
2011-12-23 08:59 | alexy | Build | => 2046 |
2011-12-23 08:59 | alexy | Status | feedback => closed |
2011-12-23 08:59 | alexy | Resolution | open => fixed |
2011-12-23 08:59 | alexy | Fixed in Version | => 3.0 |
2012-04-13 16:48 | JohnDoe | Note Added: 0008894 | |
2012-04-13 16:48 | JohnDoe | Status | closed => feedback |
2012-04-13 16:48 | JohnDoe | Resolution | fixed => reopened |
2012-04-15 07:57 | 2useven10 | Note Added: 0008902 | |
2012-04-15 07:58 | 2useven10 | Note Edited: 0008902 | |
2012-05-31 14:57 | 2useven10 | Assigned To | vskirdin => 2useven10 |
2012-05-31 14:57 | 2useven10 | Status | feedback => assigned |
2012-05-31 14:58 | 2useven10 | Note Added: 0009300 | |
2012-05-31 14:59 | 2useven10 | Status | assigned => feedback |
2012-05-31 15:08 | JohnDoe | Note Added: 0009301 | |
2012-05-31 15:08 | JohnDoe | Status | feedback => assigned |
2012-05-31 15:08 | JohnDoe | Status | assigned => resolved |
2012-05-31 15:10 | 2useven10 | Build | 2046 => 2614 |
2012-05-31 15:10 | 2useven10 | Status | resolved => closed |
2012-05-31 15:10 | 2useven10 | Resolution | reopened => fixed |