View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001743 | Wishes | History | public | 2011-04-05 13:31 | 2013-03-01 05:54 |
Reporter | Raistlin | Assigned To | vskirdin | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Fixed in Version | 3.0 | ||||
Summary | 0001743: Возможность отключения истории | ||||
Description | Хотелось бы иметь возможность временного отключения истории (команд, папок и т. д.) при работе макросов. Например, так: history.state(State[,Type]) State = 1 (enable) / 0 (disable) Type - тип истории; если опущен, меняем состояние всех историй | ||||
Tags | No tags attached. | ||||
Build | 2657 | ||||
|
А если вот так сделать: N=history.state([State]) Здесь State - набор битов: бит 0 - cmd history бит 1 - folder histroy бит 2 - view/edit history бит 3 - dialog hisrtory если соответствующий бит выставлен в 1, эту историю дизаблить State = -1 - дизаблить все истории Возвращает предыдущую маску. Если параметр не указан, то просто возвращает текущую маску |
|
После завершения макроса история должна сама назад врубаться, не? |
|
да. хистори дисаблед будет работать только на время исполнения макроса. это как с клипбордом... здесь в другом вопрос - может имеет смысл делать не на время исполнения макроса, а на сеанс работы текущей копии фара? Здесь "весь сеанс" - это только к макросам относится, вне макросов - как раньше. Ну, что бы каждый раз (в каждом макросе) не выставлять запрет... Хотя, если где-то кто-то (1) поставит, а другой (2) макрос уберет, а (1) будет думать, что все оби... в обчем ХЗ |
|
> А если вот так сделать Да, так лучше. Только дизаблить, наверное, лучше при бите, выставленном в 0. И еще непонято, зачем > State = -1 - дизаблить все истории если все дизаблятся при всех выставленных битах. Если "для простоты", то проще явно указать в справке (в виде примера), как дизаблить все. Дизаблить только на время исполнения макроса. |
|
>если все дизаблятся при всех выставленных битах. так это ж -1 и есть: FFFFFF >здесь в другом вопрос - может имеет смысл делать не на время исполнения макроса, а на сеанс работы текущей копии фара? Пример практического применения есть? Кстати, может сдетать это через mmode(), по аналогии с другими режимами выполнения макроса? P.S. Тема на форуме: http://forum.farmanager.com/viewtopic.php?f=15&t=5390 |
|
>так это ж -1 и есть: FFFFFF Я думал, что если взвести 4 бита, то получится 15... |
|
> Пример практического применения есть? автостартующий макрос, который ваще отрубает хистори - чтобы хистори из под макросов не работало. > может сдетать это через mmode() да, можно и через mmode (если нет планов на history) |
|
> автостартующий макрос, который ваще отрубает хистори - чтобы хистори из под макросов не работало. А не проще для такого сделать TechInfo? Кроме того, не уверен, что отрубание истории для всех макросов - это хорошая идея. А возвращать все в status quo по окончании каждого макроса, учитывая наличие $Exit... Так IMHO не надо. |
|
Про течинфу понял - в морг однозначно. Про остальное - много читал, много думал... это был пример того, как бы можно было бы использовать этот режим, если бы он (вкл/выкл историй) работал не для "текущего исполнения" (старт макроса, история "доступна", говорим "жмяк" и дальше что-то делаем без истории, макрос закончился и все вернулось восвояси, т.е. следующий макрос стартует с опять "доступной всем" историей), а в рамках текущей сессии ФАР (в одном макросе выставили блокировку, во втором она, блокировка, работает, в третьем отключили, четвертый макрос уже с историей пашет) |
|
Я так и понял. На деле это будет означать, что в одних макросах история всегда должна явно отключаться, а в других - явно включаться. Третьих не будет: порядок запуска макросов произволен. И зачем? |
|
Ок. Значит распространение действия лочки только на время работы "этого" макроса. При старте макроса истории разрешены. |
|
после 1946 будет вот так ------------------ Добавлена макрофункция, позволяющая управлять состоянием добавления пунктов в истории во время воспроизведения текущего макроса. При старте макроса истории разрешены. N=history.disable([State]) Здесь State - набор битов: бит 0 - cmd history бит 1 - folder histroy бит 2 - view/edit history бит 3 - dialog history если соответствующий бит выставлен в 1, эту историю дизаблить State = -1 - дизаблить все истории Возвращает предыдущую маску. Если параметр не указан, то просто возвращает текущую маску ------------------ |
|
>> может сдетать это через mmode() >да, можно и через mmode (если нет планов на history) Значит ли это что планы на history есть? |
|
а почему бы и нет? объект есть, функционал у него тоже есть. на вскидку, например, (почему бы и нет) функция s=history.get(index) или... |
|
build 1946 N=history.disable([State]) |
|
Может, все-таки дизаблить при нулевых битах? Где это видано, чтобы 1 для состояния означало disabled? Логики в макроязык это не добавит. |
|
название функции ни о чем не говорит? |
|
Название функции прочел в первом комментарии :). |
|
закрываем? |
|
Хотелось бы опробовать это на деле, где взять текущий билд? |
|
http://skirda-file.googlecode.com/files/Far_3_1955.7z |
|
У меня в 1955 макросы и так следов в истории не оставляют. [HKEY_CURRENT_USER\Software\Far Manager\KeyMacros\Shell\CtrlAltR] "Sequence"="panel.setpath(0,\"C:\\\\WINDOWS\") panel.setpath(0,\"C:\\\\WINDOWS\\\\system\") panel.setpath(0,\"C:\\\\WINDOWS\\\\system32\")" Запускаю - в истории чисто. |
|
вот ить... ошибся. в KeyMacro::IsHistroyDisable false и true нужно местами поменять... |
|
Жду нового билда. P. S. Не по теме, конечно, но что, теперь макросы типа CtrlAltShiftT работать не будут? У меня нажатие на модификаторы гасит панели. |
|
http://skirda-file.googlecode.com/files/Far_3_1957.7z На счет CAS. Это пока недоделки конфигуратора, раньше CASRule (TechInfo #68) можно было поменять в реестре, теперь надо лезть в sqlite базу и добавлять значение (по умолчанию CAS включен) 2t-rex: Алекс, наверное нужно отказываться от поля FARConfig::IsSave и писать всю конфигурацию... Но это тема отдельного Инца. |
|
"Как загнать значение из TechInfo в generalconfig.db" :-) Вот эти две строки: ------------------------------------------- INSERT INTO "general_config" VALUES('System','CASRule',0); INSERT INTO "general_config" VALUES('System','AllCtrlAltShiftRule',0); ------------------------------------------- в файл "foo.sql" и выполнить команду sqlite3 generalconfig.db < foo.sql |
|
Смотрю и кажется мне что реестр был прекрасен... |
|
не обращай внимание, это был "грязный хак" могу остальные выкатить :-) |
|
реестр, кстати, такой же уродский, как и скюлите, просто к реестру прилагается утиль соответствующий... а здесь нужно немного границы разума раздвигать :-) |
|
Работает as expected. >реестр, кстати, такой же уродский, как и скюлите Возникает риторический вопрос: а стоило ли менять известное шило на неизвестное мыло? Всё, всё, закрываем :). |
|
так че? меняем "шило на мыло"? disable на enable ==> http://forum.farmanager.com/viewtopic.php?p=80244#p80244 |
|
Я имел в виду реестр и sqlite. А чтобы история по умолчанию была отключена для макросов - идея хорошая. Я за. |
|
>к реестру прилагается утиль соответствующий... Заметьте: из коробки, прилагается, и формат reg-файла знает каждый. |
|
>меняем "шило на мыло"? disable на enable на форуме вроде как не все сошлись на этом мнении |
|
> и формат reg-файла знает каждый. не вижу проблем знать sql в минимальном варианте (insert/update/delete/select) :-) (если sqlite приживется, нужно будет микро howto по sql в Писание вставить) Про "из коробки" - а чем, извините, "regedit /ea FarSave1.reg" отличается от "sqlite3 generalconfig.db < foo.sql"? А. Ну да, это ж надо sqlite3.exe скачать... (если sqlite приживется, нужно в сорцы кинуть shell.c, который совместно с sqlite3.c и sqlite3.h делают sqlite3.exe) |
|
>INSERT INTO "general_config" VALUES('System','CASRule',0); >INSERT INTO "general_config" VALUES('System','AllCtrlAltShiftRule',0); Извините, но это на порядок хуже нормального человеческого структурированого .reg Я считаю что если уж переходить к новому формату конфигов, то уж точно нет никакого смысла менять .reg на .sql Если уж менять, то на нормальные, максимально абстрагированные от формата хранения, и оптимизированные для обработки человеком. А импорт/экспорт возложить на плагин. |
|
никто не спорит, но читай выше - это грязный хак. для нормальной работы нужен либо плагин, либо отдельный утиль, который... ...ок, пусть это будет reg... так вот, этот reg-файл прожует и корректно запульнет в настройки. |
|
history.disable переименована в history.enable. Это означает, что: 1. истории во время вопрсоизведения макроса отключены 2. битовая маска действует на принудительное включение историй |
|
М-да... А для prompt() история тоже отключена и ее надо включать принудительно? Непорядок. |
|
prompt() - элемент макросов, в чем тут непорядок? |
|
В том, что в prompt() указываем "использовать историю", а она не работает. Несколько неприятный эффект от нововведения. Если поделать ничего нельзя, надо будет отметить этот момент в Энциклопедии. |
|
Можно сделать так: Если в промте указали хистори (точнее оно неравно пустой строке), то независимо от состояния "история в диалогах из-под макросов" историю включать. Но будет ли это логично? |
|
Не будет. Не за то боролись. История в prompt и "история в диалогах из-под макросов" это разные вещи. История в prompt никому вроде не мешает ни в каком случае. |
|
это означает "описываем поведение в Писании" или "Если в промте указан хистори..." |
|
>"Если в промте указан хистори..." Если в промте не указать хистори, то история не работает, и никогда не работала, поэтому отдельно оговаривать это имхо не стоит. А если указан хистори, то использовать независимо от того, включена ли "история в диалогах из-под макросов". Причём это тоже настолько очевидно, что нет смысла специально оговаривать, ибо лишняя писанина только усложнит понимание. |
|
Согласен с JohnDoe. Только маленькая ремарка в статье про history.enable() (именно там!) все же не помешает - а то какой-нибудь чрезмерно системно мыслящий пользователь логично рассудит, что, раз без history.enable() все истории выключены, то для prompt() ее нужно насильно включать. |
|
http://skirda-file.googlecode.com/files/Far_2187.rar prompt() - если указан не пустой history, то принудительно выставляем историю (на время вызова этой функции). |
|
Вылетаем при prompt(): ╔═══════════════════ Exception occurred ═══════════════════╗ ║ Exception: Access violation (read from 0x00000000) ║ ║ Address: 0x004A609A ║ ║ Function: ║ ║ Module: C:\Program Files\Far3\Far.exe ║ ╟──────────────────────────────────────────────────────────╢ ║ { Terminate FAR } [ Debug ] ║ ╚══════════════════════════════════════════════════════════╝ |
|
http://skirda-file.googlecode.com/files/Far_2188.7z |
|
Работает. А вот панельки по Ctrl-Alt-Shift по-прежнему гасятся - сочетания клавиш с ними не работают. |
|
Предлагаю изменить синтаксис функции, чтобы она позволяла включать/выключать историю не только в рамках текущего макроса, но и в течение текущего сеанса Far: history.state(Histories[,Where[,State]]) Histories: битовая маска для историй, как в текущей реализации, кроме "0" (становится бессмысленной) Where: 0 - в текущем макросе (по умолчанию), 1 - в текущем сеансе Far State: 0 - выключить, 1 - включить, если опущен - переключить значение По умолчанию при запуске макроса предполагается состояние как после history.state(-1,0,0) Потому что сейчас, например, невозможно (или очень геморройно) переключить состояние истории, скажем, из диалога сохранения файла в редакторе. |
|
может разумнее сделать включение истории как параметр макроса? |
|
Не понял, поясни. |
|
ну вот есть "DisableOutput", "RunAfterFARStart" - и сделать "EnableHistory". |
|
>Предлагаю изменить синтаксис функции, чтобы она позволяла включать/выключать историю не только в рамках текущего макроса, но и в течение текущего сеанса Far: http://api.farmanager.com/ru2/macro/macrocmd/prop_func/general.html#history.enable Из писания складывается впечатление, будто именно так оно и работает (т.е. глобально). |
|
значит писание врет :-) |
|
Писание однозначно врет - только что проверил. "EnableHistory" - зло, откат назад от сделанного. Где гибкость? Мне может понадобиться включить историю в середине макроса. Более того - если действительно понадобится включить, то скорее всего именно где-нибудь в середине, на конкретное действие. Но я ведь вообще не о макросах уже предложение сделал. С точки зрения privacy возможность управления историей из любого места в любой момент - штука очень полезная. |
|
А как сейчас включить историю? А то в Prompt(...) это сделать никак не получается. (Или я где-то что-то недочитал). |
|
Имеется: S=prompt(["Title"[,"Prompt"[,flags[, "Src"[, "History"]]]]]) делаем prompt(,,,,"History") получаем хистори для промпта независимо от опции, если у prompt указан параметр History, то именно для этого промтера будет включена хистори: if (history && *history) // Mantis#0001743: Возможность отключения истории CtrlObject->Macro.SetHistoryDisableMask(8); // если указан history, то принудительно выставляем историю для ЭТОГО prompt() |
|
>делаем prompt(,,,,"History") Сделал macro:post prompt(,,,,"History") И... > получаем хистори для промпта ...не получаем ЧЯДНТ? |
|
ндя... build 2338 недоделанный получился. пошел смотреть |
|
build 2657 |
|
Ндя, историю в prompt'е и не юзают, значит :) Теперь ок. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-04-05 13:31 | Raistlin | New Issue | |
2011-04-05 14:54 | vskirdin | Note Added: 0006692 | |
2011-04-05 14:55 | vskirdin | Note Edited: 0006692 | |
2011-04-05 15:01 | DrKnS | Note Added: 0006693 | |
2011-04-05 15:05 | vskirdin | Note Added: 0006694 | |
2011-04-05 15:06 | vskirdin | Note Edited: 0006694 | |
2011-04-05 15:12 | vskirdin | Note Edited: 0006694 | |
2011-04-05 15:38 | Raistlin | Note Added: 0006696 | |
2011-04-05 16:37 | JohnDoe | Note Added: 0006702 | |
2011-04-05 17:10 | Raistlin | Note Added: 0006703 | |
2011-04-05 17:12 | vskirdin | Note Added: 0006704 | |
2011-04-05 17:52 | Raistlin | Note Added: 0006705 | |
2011-04-05 18:06 | vskirdin | Note Added: 0006706 | |
2011-04-05 20:00 | Raistlin | Note Added: 0006708 | |
2011-04-06 04:37 | vskirdin | Note Added: 0006709 | |
2011-04-06 09:28 | vskirdin | Assigned To | => vskirdin |
2011-04-06 09:28 | vskirdin | Status | new => assigned |
2011-04-06 09:36 | vskirdin | Note Added: 0006711 | |
2011-04-06 10:47 | JohnDoe | Note Added: 0006712 | |
2011-04-06 10:48 | JohnDoe | Note Edited: 0006712 | |
2011-04-06 10:59 | vskirdin | Note Added: 0006713 | |
2011-04-06 11:00 | vskirdin | Note Added: 0006714 | |
2011-04-06 11:00 | vskirdin | Status | assigned => feedback |
2011-04-06 20:37 | Raistlin | Note Added: 0006722 | |
2011-04-06 20:37 | Raistlin | Status | feedback => assigned |
2011-04-07 04:25 | vskirdin | Note Added: 0006723 | |
2011-04-07 07:16 | Raistlin | Note Added: 0006724 | |
2011-04-12 07:27 | vskirdin | Note Added: 0006752 | |
2011-04-12 07:27 | vskirdin | Status | assigned => feedback |
2011-04-12 07:35 | Raistlin | Note Added: 0006753 | |
2011-04-12 07:35 | Raistlin | Status | feedback => assigned |
2011-04-12 08:25 | vskirdin | Note Added: 0006755 | |
2011-04-12 22:25 | Raistlin | Status | assigned => resolved |
2011-04-12 22:32 | Raistlin | Note Added: 0006766 | |
2011-04-12 22:32 | Raistlin | Status | resolved => assigned |
2011-04-13 08:41 | vskirdin | Note Added: 0006769 | |
2011-04-13 09:28 | Raistlin | Note Added: 0006770 | |
2011-04-13 09:38 | vskirdin | Note Added: 0006771 | |
2011-04-13 09:45 | vskirdin | Note Added: 0006772 | |
2011-04-13 10:01 | JohnDoe | Note Added: 0006773 | |
2011-04-13 11:09 | vskirdin | Note Added: 0006778 | |
2011-04-13 11:13 | vskirdin | Note Added: 0006779 | |
2011-04-13 11:33 | Raistlin | Note Added: 0006780 | |
2011-04-13 11:33 | Raistlin | Status | assigned => resolved |
2011-04-13 11:52 | vskirdin | Note Added: 0006781 | |
2011-04-13 11:56 | Raistlin | Note Added: 0006782 | |
2011-04-13 12:04 | JohnDoe | Note Added: 0006783 | |
2011-04-13 12:06 | JohnDoe | Note Added: 0006784 | |
2011-04-13 12:30 | vskirdin | Note Added: 0006785 | |
2011-04-13 12:40 | JohnDoe | Note Added: 0006786 | |
2011-04-13 12:50 | vskirdin | Note Added: 0006787 | |
2011-04-15 07:53 | vskirdin | Build | => 1959 |
2011-04-15 07:53 | vskirdin | Note Added: 0006793 | |
2011-04-15 07:53 | vskirdin | Status | resolved => closed |
2011-04-15 07:53 | vskirdin | Resolution | open => fixed |
2011-04-15 07:53 | vskirdin | Fixed in Version | => 3.0 |
2011-08-25 11:44 | Raistlin | Note Added: 0007525 | |
2011-08-25 11:44 | Raistlin | Status | closed => feedback |
2011-08-25 11:44 | Raistlin | Resolution | fixed => reopened |
2011-08-25 13:25 | vskirdin | Note Added: 0007530 | |
2011-08-25 13:28 | Raistlin | Note Added: 0007531 | |
2011-08-25 13:28 | Raistlin | Status | feedback => assigned |
2011-09-01 12:21 | vskirdin | Note Added: 0007588 | |
2011-09-01 13:47 | JohnDoe | Note Added: 0007591 | |
2011-09-01 14:53 | vskirdin | Note Added: 0007592 | |
2011-09-01 15:57 | JohnDoe | Note Added: 0007594 | |
2011-09-01 18:04 | Raistlin | Note Added: 0007597 | |
2011-09-01 19:38 | vskirdin | Note Added: 0007598 | |
2011-09-01 19:38 | vskirdin | Status | assigned => feedback |
2011-09-01 20:15 | Raistlin | Note Added: 0007599 | |
2011-09-01 20:15 | Raistlin | Status | feedback => assigned |
2011-09-02 06:33 | vskirdin | Note Added: 0007600 | |
2011-09-02 06:33 | vskirdin | Status | assigned => feedback |
2011-09-02 09:05 | Raistlin | Note Added: 0007602 | |
2011-09-02 09:05 | Raistlin | Status | feedback => assigned |
2011-09-02 09:05 | Raistlin | Status | assigned => resolved |
2011-09-02 10:18 | vskirdin | Build | 1959 => 2188 |
2011-09-02 10:18 | vskirdin | Status | resolved => closed |
2011-09-02 10:18 | vskirdin | Resolution | reopened => fixed |
2011-09-12 10:12 | Raistlin | Note Added: 0007656 | |
2011-09-12 10:12 | Raistlin | Status | closed => feedback |
2011-09-12 10:12 | Raistlin | Resolution | fixed => reopened |
2011-09-12 11:17 | Raistlin | Note Edited: 0007656 | |
2011-09-12 11:30 | vskirdin | Note Added: 0007657 | |
2011-09-12 11:40 | Raistlin | Note Added: 0007659 | |
2011-09-12 11:40 | Raistlin | Status | feedback => assigned |
2011-09-12 14:24 | vskirdin | Note Added: 0007669 | |
2011-09-12 14:52 | JohnDoe | Note Added: 0007672 | |
2011-09-12 15:08 | vskirdin | Note Added: 0007674 | |
2011-09-12 18:05 | Raistlin | Note Added: 0007678 | |
2011-09-12 18:06 | Raistlin | Note Edited: 0007678 | |
2012-05-02 12:10 | DAtaMan | Note Added: 0009090 | |
2012-05-02 12:11 | DAtaMan | Note Edited: 0009090 | |
2012-05-02 14:46 | vskirdin | Note Added: 0009091 | |
2012-05-02 14:52 | DAtaMan | Note Added: 0009092 | |
2012-05-03 07:02 | vskirdin | Note Added: 0009095 | |
2012-05-03 07:08 | vskirdin | Note Added: 0009096 | |
2012-05-03 07:08 | vskirdin | Status | assigned => feedback |
2012-05-03 08:32 | DAtaMan | Note Added: 0009098 | |
2013-02-03 00:33 | alexy | Severity | minor => feature |
2013-03-01 05:54 | vskirdin | Build | 2188 => 2657 |
2013-03-01 05:54 | vskirdin | Status | feedback => closed |
2013-03-01 05:54 | vskirdin | Resolution | reopened => fixed |