Post reply

Note: this post will not display until it has been approved by a moderator.
Attachments: (Clear attachments)
Restrictions: 4 per post (4 remaining), maximum total size 192 KB, maximum individual size 128 KB
Uncheck the attachments you no longer want attached
Click or drag files here to attach them.
Other options
Verification:
Please leave this box empty:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:
Shortcuts: ALT+S post or ALT+P preview

Topic summary

Posted by Martin
 - February 03, 2011, 11:01:08 AM
Quote from: PepakHned na začátku jsem doplnil větev pro FAR2.
To jsem samozřejmě provedl taky (už 15.1.2011 v 3:47), hned jak jsem FakeReg začínal zkoušet. Ale na ULOZTO je 2 měsíce stará verze a pro import registrů to není potřeba, nadřazené větve se vytvářejí automaticky. Byl to záměr mít co nejmenší soubor FarSave.reg a v něm jen ty hodnoty, které nejsou implicitní. Zbytek ať si Far vyrobí v registrech sám.
[h]PanelTabs[/h]
To makro jsem nevymýšlel já, ale stáhl spolu s pluginem a je tak jednoduché, že na něm není co napsat špatně. A v pořádku fungovalo i pod verzemi FakeRegu 1, 2 a 3. Tobě v živých registrech nefungovalo asi proto, že sis tam hodil jen to makro, ale asi zapomněl na tu konstantu. Pod 4 a 5 bude fungovat taky, když v registru místo tohoto
[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Consts]
"PanelTabs"=dword:a91b3f07
[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Shell\RCtrl]
"Sequence"="callplugin(PanelTabs, 3)"
bude toto
[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Shell\RCtrl]
"Sequence"="callplugin(2837135111, 3)"
To by se mohlo zdát, že tam ta konstanta není nebo je špatně, ale RegEditem ji tam vidím se správnou hodnotou.

Takže netuším a Tobě přeji hodně zdaru při dalším bádání.
Posted by pepak
 - February 02, 2011, 05:02:57 PM
Stáhnul jsem si tvoji instalaci FARu z odkazu, který jsi psal, a začal jsem na něm zkoušet. Hned na začátku jsem udělal jednu úpravu do FarSave.reg, a to, že jsem na začátek doplnil větev pro FAR2 (aby FakeReg simuloval celý registr FARu, ne jenom těch pár větví, které jsou ve FarSave.reg uvedeny):
[HKEY_CURRENT_USER\software\Far2]

Při spuštění na mě FAR zařval s chybovou hláškou, kterou jsi mi napsal v příspěvku 14:
Error parsing macro Shell\RCtrl
Line 1, Pos 12:
Variable Expected 'PanelTabs'
"callplugin(PanelTabs, 3)"
Trochu jsem nad tím bádal, protože jsem v logu neviděl nic špatného, až jsem to příslušné makro hodil přímo do živých registrů a zkusil spustit tvůj FAR i s tímhle makrem. A on na mě zařval stejnou hlášku, přestože FakeReg tentokrát nebyl vůbec aktivní. Tudíž bych tuhle chybu připsal na vrub toho, že je to makro špatně zapsané. (Jak má být dobře netuším, makra používám jenom ta jednoduchá, kdy za mě FAR mačká klávesy).

Pak jsem začal zkoušet jednotlivé pluginy, které jsi hlásil:

MacroView
U "SameFolder" potvrzuju nezobrazený popis při F4. Totéž u Internal viewer, Text editor. Taky se mi po několikáté (asi třetí) editaci ztratil popis u makra pro Esc v panelech, ale jenom v editoru, v seznamu maker se zobrazuje stále. Totéž při deaktivaci makra, tam ale popis zmizel úplně, i ze seznamu.

Asociace
Tím myslím hlavně to, že na souboru, který má ve Windows nastavenou asociaci (např. na .txt - Notepad) zmáčknu Enter a měla by se mi spustit ta asociovaná aplikace. To se teď nedělá, ze stejného důvodu, proč se nedělala ve verzi 003 (asociace se zjištují přes OpenKey a ne OpenKeyEx, ten je volán až "vnořeně" - a to vede k zanoření handlu; to je problém v EasyHook knihovně a neumím to spolehlivě řešit, jenom docela hnusným hackem, který jsem do 005 zatím nedával).

RegEditor
Na skutečném registru mi funguje zřejmě ve všem.
Na virtuálním registru potvrzuju chybu při pokusu o editaci textové položky.

Viděl jsem tam nějaké pády v pluginu ConEmu, ale jenom v situaci, kdy jsem spustil FAR přímo, bez ConEmu, takže to bude asi nejspíš ten důvod. Jinak mi to nespadlo ani jednou (narozdíl od čtyřky).

Celkově jsem rád, že mám nějaké stabilní chyby, které mohu testovat, a že zřejmě zmizely neustálé pády všeho možného v důsledku přepsání paměti. Tebe bych jen poprosil, zkus se podívat na ten "panel tabs" plugin - podle mě je blbě zadané makro, ne to, jak se jeho parametry pod FakeRegem čtou.
Posted by pepak
 - February 01, 2011, 12:04:01 PM
Quote from: MartinTak slaboduchý opravdu nejsem.
O to mi nešlo. Ale z vlastní zkušenosti vím, že člověk občas přehlédne úplně evidentní věci.

Quotepozůstatkem jsi myslel, že bych vyměnil třeba jen EXE a nechal staré DLL ?
Ano.

QuoteNebo si stáhni stav "mého" Faru zde.
OK, mám ho. Večer se na to podívám.
Posted by Martin
 - February 01, 2011, 11:54:27 AM
Quote from: PepakUrčitě tam máš pětku a ne nějaký pozůstatek čtyřky?
Tak slaboduchý opravdu nejsem. Mám tam komplet FakeReg v0.05, pozůstatkem jsi myslel, že bych vyměnil třeba jen EXE a nechal staré DLL ? Ani to nemám projeté UPX (i když to jde a je to pak úplně stejně funkční i nefunkční jako nezkomprimované).
Quote from: PepakKdyžtak mi prosím zkus poslat ten podklíč registru, ve kterém máš makra, ať mám živý příklad, na kterém se to projevuje.
Klidně pošlu celý Far.reg, ale neumím to sem přidat (možná proto, že nejsem registrovaný). Chceš-li, tak mi pošli mail a pošlu registr v odpovědi. Nebo si stáhni stav "mého" Faru zde. Je to sice asi 2 měsíce staré, ale nic zásadního jsem neměnil. Snad jen aktualizoval pluginy na poslední verze a vyměnil 7Zip za ArcLite.
Posted by pepak
 - February 01, 2011, 10:44:56 AM
Quote from: MartinMně se ta verze 5 chová bohužel ve všem, co jsem zatím zkusil zcela stejně jako 4. Tak to tady nebudu znovu podrobně rozepisovat. Zatím mi nejlépe "sedla" verze 3.
I v tom MacroView? Ten jsem speciálně zkoušel a fungoval mi úplně v pohodě. Určitě tam máš pětku a ne nějaký pozůstatek čtyřky? Kdyžtak mi prosím zkus poslat ten podklíč registru, ve kterém máš makra, ať mám živý příklad, na kterém se to projevuje.

QuoteTrochu jsem zkoušel to ukládání virtuálního registru a líbí se mi a jeví se OK. Snad by se dalo vylepšit jen o setřídění registru před uložením a možnost vybrat formát výstupu (REGEDIT4 / REGEDIT5).
Setřídění registru jsem neudělal schválně. Jednak je to jednodušší (ale to bych přes srdce přenesl), ale hlavně to drží záznamy v tom pořadí, ve kterém do registru vstupovaly, takže se dá dobře porovnat starý a nový registr na změny.
Posted by Martin
 - February 01, 2011, 10:35:05 AM
Ahoj a díky, ale mám spíš špatné zprávy.

Mně se ta verze 5 chová bohužel ve všem, co jsem zatím zkusil zcela stejně jako 4. Tak to tady nebudu znovu podrobně rozepisovat. Zatím mi nejlépe "sedla" verze 3.

Trochu jsem zkoušel to ukládání virtuálního registru a líbí se mi a jeví se OK. Snad by se dalo vylepšit jen o setřídění registru před uložením a možnost vybrat formát výstupu (REGEDIT4 / REGEDIT5).
Posted by pepak
 - January 31, 2011, 06:37:44 PM
Dalo to podstatně víc práce, než jsem čekal. Začal jsem tam dělat několik věcí najednou, mimo jiné thread-safe kód, a výsledkem bylo, že jsem sice nedosáhl threadové bezpečnosti, ale zato jsem získal nějaké šílené přepisování paměti, které jsem nebyl schopen lokalizovat. Tak jsem se na to nakonec vykašlal, skoro všechny změny od 0.04 zahodil a šel do toho znovu, ale tentokrát po malých kouskách. Mimo jiné jsem obětoval původní univerzální datovou strukturu a nahradil ji obyčejným TListem, který má sice spoustu nevýhod, ale jednu nezanedbatelnou výhodu: je nesmírně jednoduchý a snadno se ladí. Pokud mohu soudit, tak s tím zmizely všechny dosavadní problémy s MacroView apod. Prostě princip YAGNI zase vyhrál.

Prosím, vyzkoušej to ještě jednou, na co nejvíc pluginech - jak jsem přepsal ty podkladové datové struktury, tak to MOHLO rozhodit všechno možné i nemožné. Ale navenek se mi to teď jeví docela dobře. Sám to budu zítra zkoušet, tak uvidíme, k čemu dojdu.

Jo, a implementoval jsem funkci pro ukládání virtuálního registru při ukončování programu.

http://tmp.pepak.net/far-portable-alpha005.zip
Posted by pepak
 - January 26, 2011, 04:12:54 PM
Ten efekt je primárně důsledkem zapnutého logování každé blbosti. Plus nějaké chyby v RegQueryValueEx, kterou ještě musím dohledat (ale to by nemělo být tak těžké).
Posted by pepak
 - January 24, 2011, 05:46:14 PM
Moc mě nenapadá, proč by změny v 004 měly mít takový efekt. No nic, budu zkoumat dál.
Posted by Martin
 - January 24, 2011, 08:07:22 AM
Ahoj a dík za další verzi.

Moje nové postřehy :

MacroView - mně se popis nezobrazuje pouze u makra SameFolder a pak u všech maker v oblasti "internal viewer" a "text editor". Ale když jdu do detailů znovu po změně popisu, tak už tam chybí. Občas se ztratí až po druhé změně popisu. Kromě toho se při tom v registru úplně ztratí položka DiasbleOutput. Stejně tak se mi položky ztrácejí při deaktivaci a reaktivaci makra, jak jsem psal již minule. To mně nedělá někdy, ale naprosto pravidelně. Zkusil jsem ten debug.log, bylo to příšerně pomalé a vyšel z toho soubor s cca 100 000 řádky, ze kterého nejsem o nic moudřejší.

Asociace - na to jsem nemohl přijít, jsem kombinovaný uživatel Faru a Total Commanderu, každý je v něčem lepší (alespoň pro mě) a asociace mám ve Faru úplně vypnuté.

RegEdit - zdá se, že data simulovaných položek se neustále velmi rychle "obnovují". Před editací řetězcové položky dostanu tuto chybu :
╔═════════════════════ RegEditor ══════════════════════╗
║             Jsou k dispozici další data.             ║
║               Query value data failed                ║
║                       Sequence                       ║
║ \HKEY_CURRENT_USER\Software\Far2\KeyMacros\Shell\Del ║
╟──────────────────────────────────────────────────────╢
║                        { OK }                        ║
╚══════════════════════════════════════════════════════╝
Ale pak to editovat jde i v pořádku uložit. (Všechny 4 verze FakeReg). Možná i to MacroView má někdy problém s načtením hodnot, ale jen to neohlásí.

Alpha004 mi bohužel přinesla další nefungující plugin PanelTabs. Hned při startu Faru dostanu chybové hlášení. Pod Alpha003 byl plugin plně funkční.
╔═ Error parsing macro Shell\RCtrl ═╗
║ Line 1, Pos 12:                   ║
║ Variable Expected 'PanelTabs'     ║
╟───────────────────────────────────╢
║ "callplugin(PanelTabs, 3)"        ║
║             ↑                     ║
╟───────────────────────────────────╢
║              { OK }               ║
╚═══════════════════════════════════╝
V registru mám k tomu toto:
[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Consts]
"PanelTabs"=dword:a91b3f07

[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Shell\RCtrl]
"Sequence"="callplugin(PanelTabs, 3)"
"Description"="PanelTabs: select tab"
"DisableOutput"=dword:00000000

Zatím zůstávám u Alpha003, pro moje použití vyhovující a nehavarující.
Posted by pepak
 - January 23, 2011, 11:48:12 AM
http://tmp.pepak.net/far-portable-alpha004.zip

To MacroView je fakt záhada. Vím tam o dvou podivnostech, ale nedaří se mi najít žádnou příčinu:

1) V seznamu maker se normálně zobrazí název makra a jeho popis, ale když skočím do detailu, tak se v některých makrech popis nezobrazí. U jiných ano, včetně těch, které mají popis delší.

2) Když makro oedituju a jen v něm změním stav z aktivního na neaktivní, tak se někdy už do toho makra nedá dostat, zatímco jindy to jde. Zdá se mi, že to koresponduje s problémem 1.

Kdyby ses na to chtěl podívat, tak při použití parametrů -l a -ll jde zobrazit detailní záznam o volaných registrových funkcích (akorát je to dost pomalé, protože FAR registry fakt nešetří):
fakereg.exe -l debug.log -ll 0 far.reg far.exe
Jinak jsem ale opravil další dávku problémů, mimo jiné asociace...
Posted by pepak
 - January 21, 2011, 12:01:16 PM
Quote from: MartinMacroView - funguje, dokud se nedělají změny do registru. Třeba při deaktivaci makra (přejmenovává se klíč např. z AltF11 na ~AltF11) zbude z původních tří položek (Description, DisableOutput, Sequence) jen jedna (Sequence). A při pokusu o reaktivaci zmizí i tato. Podobně se chová i při pokusu změnit sekvenci nebo popis. V Portable verzi mi stačí, že si ta makra mohu prohlédnout. Jinak zakládat nová makra a mazat stará jde bez problémů, zlobí to jen při změně.
Tohle budu potřebovat podrobněji. Já jsem si to včera zkoušel tak, že jsem nechal zobrazit seznam maker, pak jsem jedno přejmenoval (Description) a uložil, a tvářilo se mi to OK. Jakou přesně sekvenci kroků mám udělat, aby se chyba projevila?

QuoteTak ještě jednou dík a myslím, že příští verze už by nemusela mít v názvu "alpha". Pro běžné cestovní použití je již nyní zcela vyhovující a stabilní.
Myslím, že ne - teď jsem zjistil, že mi nějak nefungují asociace (spustit Notepad můžu, odentrovat Notepad.exe taky, ale když zkusím odentrovat xyz.txt, tak dostanu chybu Cannot Execute).
Posted by Martin
 - January 21, 2011, 11:36:24 AM
Ahoj a díky za další vylepšenou verzi.

Regedit - ani po několika pokusech mi již ani jednou nezhavaroval. Zřejmě opraveno, děkuji. Míchání klíčů neřeším, do simulovaných nemá žádný smysl vůbec chodit a reálné fungují. Nejde sice přejmenovat klíč, ale jak jsem zjistil, tak to nefunguje ani bez použití Portable verze. Prosím případně o report do farovského fóra (moje angličtina je bohužel velmi slabá). Položky přejmenovat lze.
╔═══════════════ RegEditor ════════════════╗
║     Operace byla dokončena úspěšně.      ║
║         Can't copy/rename subkey         ║
║ Adjust current process privileges failed ║
║     SE_BACKUP_NAME, SE_RESTORE_NAME      ║
╟──────────────────────────────────────────╢
║                  { OK }                  ║
╚══════════════════════════════════════════╝

MacroView - funguje, dokud se nedělají změny do registru. Třeba při deaktivaci makra (přejmenovává se klíč např. z AltF11 na ~AltF11) zbude z původních tří položek (Description, DisableOutput, Sequence) jen jedna (Sequence). A při pokusu o reaktivaci zmizí i tato. Podobně se chová i při pokusu změnit sekvenci nebo popis. V Portable verzi mi stačí, že si ta makra mohu prohlédnout. Jinak zakládat nová makra a mazat stará jde bez problémů, zlobí to jen při změně.

AltHistory - nebolí mě, na svém PC sice využívám hojně, ale u přenosné verze bohatě vystačím s klasickou historií.

Tak ještě jednou dík a myslím, že příští verze už by nemusela mít v názvu "alpha". Pro běžné cestovní použití je již nyní zcela vyhovující a stabilní.
Posted by pepak
 - January 20, 2011, 07:45:45 PM
Doplnil jsem do FakeRegu několik funkcí a zkusil to na pluginy, o kterých píšeš:

- RegEdit - mě se chová naprosto správně, s výjimkou toho, že zatím nejde míchat klíče z opravdového a simulovaného registru. Ale třeba časem...

- MacroView - podle mě běží bez problémů.

- AltHistory - jak jsem si myslel, spoléhá se na RegNotifyChangeKeyValue, která zatím v simulovaném registru nedělá nic. To ještě dá dost práce nějak vyřešit.

http://tmp.pepak.net/far-portable-alpha003.zip
Posted by pepak
 - January 19, 2011, 02:13:31 PM
Quote from: MartinAltHistory a MacroView - stav nezměněn.
AltHistory podle mě fakt nefunguje kvůli tomu, že neimplementuji tu funkci RegNotifyChangeKeyValue. To se asi hned tak nezmění, protože zatím moc nevím, jak ji implementovat.

MacroView se budu muset podívat, ale nepřekvapilo by mě, kdyby to bylo neimplementovanou funkcí RegQueryInfoKey. Ta bude dostupná v příští verzi, takže uvidíme, jestli se to spraví.

QuoteRegedit - nepravidelně havaruje tou fatální chybou. V drtivé většině případů při prvním pokusu vejít do větve hkcu\Software jak z hkcu tak i z hkcu\Software\Far2.
OK, nainstaluju plugin a vyzkouším. Také by to mohlo souviset s dosud chybějícím RegQueryInfoKey. Ale i když to tak bude a podaří se to opravit, lze očekávat, že se vstup do HKCU\Software bude vždy chovat poněkud zvláštně, protože není podporováno míchání opravdových a simulovaných klíčů (a k tomu právě dochází v HKCU\Software, kde se většina klíčů bere "reálných", ale FAR2 by měl být simulovaný.

QuotePokud v reálném registru neexistuje větev hkcu\Software\Far2, tak ji nevidím ani ve virtuálním.
To je docela jistě způsobené tím mícháním klíčů a bohužel to tak bude i nadále.

QuoteAle jakmile ji ve virtuálním založím, jsou hned vidět její všechny položky a v reálném registru se založí jako prázdná.
Založit v reálném registru by se neměla, ale to ostatní je v pořádku. Zkontroluji.

QuotePři smazání celé větve hkcu\Software\Far2 ve virtuálním registru se tato smaže i v registru reálném.
To bude počítám také souviset s předchozím problémem.