Diredc a.k.a. Dired ortodoxne

06.04 | 13:04 | Richard | Richard

Pred piatimi rokmi som opísal rozšírenie Emacsu s názvom „Sunrise Commander“. Jedná sa o nadstavbu pre vstavaný súborový manažér „Dired“. A dnes si niečo povieme o ďalšej jeho nadstavbe, s podobným názvom - „Diredc“.

Dired ortodoxne?

Zacitujeme si zo spomínaného staršieho článku:

Wikipédia nás učí:

Ortodoxnosť (z gréc. ortho - správny, pravý a doxa - myšlienka, učenie, slávenie) alebo ortodoxia je vlastnosť pevne sa pridržiavať určitého (spravidla pôvodného/staršieho/hlavného) myšlienkového smeru (napr. v ekonómii), učenia, presvedčenia či viery (v poslednom prípade teda vlastnosť prísne veriť a/alebo pravovernosť).

V počítačovej terminológii sa ujal pojem ortodoxný súborový manažér. Takže dlhodobo zaužívaný – dizajnom, princípom a ovládaním. Jasné, reč je o manažéroch, nazývaných aj komandéry, ktoré viac-menej vychádzajú z Norton Commander-a. NC pozná každý, v našom svete ho nasledujú napr. Midnight Commander, Gnome Commander, Krusader, Necromancer, Tux Commander, Ghost Commander, Sunflower Commander, Double Commander… a možno sa ešte nejaké nájdu, ktoré sa budú (až na pár výnimiek) volať <nejaký> Commander. Skratka označenia týchto programov je i OFM.

Sunrise Commander mi dobre slúžil, ale s príchodom nových verzií Emacsu som narazil na niekoľko „bugov“, ako napríklad, že z bufferu Sunrise sa naraz stal buffer dired-u. A i pár iných. A žiaľ, Sunrise Commander už nikto aktívne nevyvíja. Ale práve v tom momente som narazil na diredc.

 

Diredc

Požičiame si pár myšlienok z webu autora:

Tento balík rozširuje dired-mode Emacsu o funkcie, ktoré sa nachádzajú v takmer všetkých správcov súborov a tiež niektoré jedinečné funkcie:

Opisovať program ako taký nemá zmysel – bolo by to prepisovanie dokumentácie. V princípe sa neodlišuje od iných dvojpanelových súborových manažérov. Na rozdiel od Sunrise Commander-a sa snaží používať len a len dva dired buffre; ak je ich viac, ponúkne možnosť výberu aktívnych, ale tiež ponechania alebo zmazanie všetkých alebo nepoužívaných. Samozrejme, používa klávesové skratky a terminológiu zo sveta Emacsu, čo je len dobre a pre mňa dôvod, prečo nepoužívam iné, hoci výborné manažéry ako Double Commander alebo Gnome Commander (inak Double Commander sa tiež dá dosť priohnúť klávesovými skratkami Emacsu, dokonca podporuje skratky zadávané ako poradie stlačení… ale stále to nie je Emacs samozrejme 😉).

Ešte dodám, že „rýchle okno shellu“ umožňuje používať bash, fish, eshell,…

Obr 0.: Klasika - 2 panely vedľa seba.

Ale subjektívny blogový zápisok by mal byť o niečom inom – ostatne toto je zaujímavná téma na diskusiu v zmysle, či má blogovanie zmysel v dobe AI – a veru aj bude.

 

Ako nám ukradli F-klávesy

Spomenul som si na starý dobrý vtip:

Šesťdesiate roky. Zväz sovietskych socialistických republík. Moskva. Ivan si kúpil auto, priviezol si ho domov a pekne zaparkoval pred činžiakom. Na druhý deň pozrie ráno z okna a Záporožec nikde. Išiel to teda ohlásiť na milíciu. Keď ho milicionár vypočuje, prísne vraví:

- „Graždanin, pozrite sa na túto stenu! Čo vidíte?“

- „Nó… obraz Vladimíra Iljiča Lenina.“ odpovie popravde Ivan.

- „A čo je, Graždanin, na tom obraze? Poriadne sa pozrite!“

- „Lenin, obklopený svojimi najbližšími priateľmi.“

- „A čo ešte vidíte? Čo drží súdruh Lenin v ruke?“

- „Čiapku.“ hovorí Ivan.

- „No, tak to máme! Vladimír Iljič Lenin, obklopený svojimi najbližšími priateľmi a drží si svoju čiapku v ruke… A vy!?! Vy si necháte auto stáť na ulici!“

 

Kto nám, a kedy, ukradol F-klávesy – teda funkčné klávesy F1 – F12?

Vinníka nepoznáme, ale určite to bol niektorý „zvyčajne podozrivý“, ako napríklad Microsoft alebo Apple. Čas tiež nevieme.

A krádež spočívala v tom, že zaviedli podivné (dnes) štandardy, ktoré pokazili ergonómiu a pokrivili prsty.

Tak napríklad: F1 je výborne poziciovaný kláves - vedľa ESC, dobre dosiahnuteľný, oddelený. Rozum prikazuje dať tam často používanú funkciu. Tak ja tam mám undo. A nie nejaká nápoveda! Ako často totiť človek potrebuje nápovedu, aby si uzurpovala také lukratívne miesto?

Alebo niekto – „obvykle podozrivý“ – rozhodol, že často používané funkcie vystrihovania, kopírovania a vloženia, nazývané i (cit. Mirek Biňas) Ctrl-Cudzí a Ctrl-Vlastný, kill a yank – no proste ich dáme s modifikátorom na spodný riadok, nech je karpálny tunel na vzostupe, najmä u tých, ktorí nestláčajú Ctrl dlaňou! Ale ja ich vždy dávam na F2, F3 a F4. Asi veľa kradnem z cudzich prác 😉.

F5 a F6 mám zvyčajne spojené so záložkami a skokmi na ne, F7 a F8 na presun po buffroch Emacsu, klasika F9 je kompilácia (ale napríklad v LaTeXu renderovaný náhľad, v diredc je to história…), F10 menu, F11 „fullscreen“ a F12 je Caps Lock! Veru ten Caps Lock, ktorý má opäť lukratívne miesto v základnom rade klávesnice a používa sa zriedkavo, ak teda človek neprispieva do ukričaných diskusií ☺. Na mieste Caps Lock-u mám radšej modifkátor Hyper. Lebo v Emacse modifikátorov nikdy nie je dosť.

 

Ako nepoužívam „use-package“

use-package je makro v Emacse, ktoré zjednodušuje konfiguráciu a správu balíkov, umožňuje ich načítanie len v prípade potreby a udržuje prehľadnú konfiguráciu. Pomáha zlepšiť čas spustenia a prehľadne organizuje nastavenia balíkov.

To znie ako skvelá vec. A dozaista je.

Lenže ja mám konfiguračné súbory z čias, keď use-package neexistovalo a nechce sa mi ich prerábať. Stačilo, že som ich zvládol prekopírovať ~/.emacs do ~/.emacs.d/init.el 😃.

Ukončím toto lamentovanie konštatovaním, že vždy som mal inicializačný súbor pomerne malý, a používal som sústavu hook-ov na načítanie rozšírení, ak boli potrebné.

Napríklad:

(add-hook 'tcl-mode-hook (lambda () 
                               (load-file "/home/richard/.emacs.d/load-tcl-hooks.el")))

Takže rozšírenia napr. pre uvedený jazyk Tcl sa spustili, až keď som ich potreboval. A takto to mám analogicky pre iné typy súborov (c, ino, sh, org, tex …) alebo iné situácie, akými je spustenie súborového manažéra alebo RSS čítačky.

(defun diredc-start()
"Start diredc"
(interactive)
(load "~/.emacs.d/load-diredc-hooks.el")
(diredc))

 

Čo zaujímavé je v „hook“-u pre diredc?

Tak napríklad načítanie niektorých ďalších rozšírení. O diredc-tabs.el bude ešte reč.

(load-file "/home/richard/.emacs.d/vendor/dired-preview/dired-preview.el")
(load-file "/home/richard/.emacs.d/vendor/diredc-tabs/diredc-tabs.el")

 

Alebo súborové asociáce (ak nechcem XDG), vlastné funkcie ako:

Ak niekomu vypisuje gzip hlásenie o ignorovaní adresára pri snahe o jeho komprimovanie pomocu vstavaného dired-do-compress, potom pomôže re-nastavenie (takto možno pridať i iné algoritmy):

(setq dired-compress-file-suffixes nil)
(add-to-list 'dired-compress-file-suffixes '("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xzf -")) 

 

Ja používam pre zobrazenie súborov (prepínanie pomocou M-t) stručnejšie zobrazenie (opäť vďaka otvorenosti zdrojových kódov):

(add-to-list 'diredc-display-listing-switches-list '("long, group, K sizes" . "-oL --group-directories-first --time-style=long-iso"))

 

diredc-tabs.el

Sunrise Commander mal rozšírenie nazvané sunrise-x-tabs, ktoré pridalo známe taby na rýchle prechádzanie medzi zvolenými adresármi.

Diredc má šikovnú históriu, ale tá neplní úplne ten istý účel.

Preto som si v Elispe doprogramoval podobnú funkcionalitu. Jej zmyslom je mať pre ľavé i pravé okno užívateľsky definovaný zoznam adresárov, medzi ktorými sa dá veľmi rýchle prepínať. Tak som definoval o.i. tieto funkcie, a k nim priradil klávesové skratky:

funkciapríkazskratka
vloží aktuálny adresár v ľavom okne do zoznamudiredc-tabs-create-tab-left-paneC-<f7>
vloží aktuálny adresár v pravom okne do zoznamudiredc-tabs-create-tab-right-paneC-<f8>
prepínanie medzi adresármi zoznamu ľavého oknadiredc-tabs-switch-left-pane-tab<f7>
prepínanie medzi adresármi zoznamu pravého oknadiredc-tabs-switch-right-pane-tab<f8>
odstráni aktuálny adresár v ľavom okne zo zoznamudiredc-tabs-delete-tab-left-pane<f12> <f7>
odstráni aktuálny adresár v pravom okne zo zoznamudiredc-tabs-delete-tab-right-pane<f12> <f8>
odstráni všetky adresáre zo zoznamu pre ľavé oknodefun diredc-tabs-reset-left-pane-tabs-list 
odstráni všetky adresáre zo zoznamu pre pravé oknodefun diredc-tabs-reset-right-pane-tabs-list 

Počas týchto operácii sa aktuálny zoznam i zvolený adresár vypisujú v echo oblasti Emacsu.

Ak sa zavolajú funkcie diredc-tabs-switch-left-pane-tab a diredc-tabs-switch-right-pane-tab s univerzálnym modifikátorom, resp. ich klávesová skratka nasleduje po C-u (takže je to kombo C-u F7), tak sa v spodnej časti zobrazí zoznam príslušných adresárov a možno medzi nimi vyhľadávať zadávaním časti názvu/cesty a prechádzať na ne. Zvolil som toto riešenie namiesto popup funkcionality, v ktorej sa kandidáti nedajú zužovať žiadnym frameworkom (kdežto tu je to nezávislé, podľa toho, čo užívateľ používa, napr. ivy, ido, helm, fido…)

Obr 1: Výber „tabu“ zo zoznamu, spolu s dynamickým zužovaním.

 

A čo história?

Diredc má vlastnosť, že pre každé okno si pamätá svoju históriu. Ten zoznam sa tvorí pri volaní funkcie diredc-hist-find-alternate-file, ktorá sa spúšta s prechodom dovnútra adresárovej štruktúry.

V mojich funkciách som to ošetril tak, že sa pri zmene adresáru ukladá ešte jej kópia do zväčšujúceho sa zoznamu (obmedzil som ho na 300 položiek), a ten sa potom načíta a využíva – opäť funkcionalita s dynamicky sa zužujúcim výberom kandidátov – pri výberu adresára z histórie.

Malým detailom je úprava modeline, tak ako to vidno na obrázkoch, z ktorej som odstránil nepotrebné informácie.

 

Záver

Na slobodnom softvéri je skvelé, že sa dá študovať a upravovať. A veľa sa dá pritom naučiť. Aj keď sa jedná iba o drobné zmeny, ich dopad je zásadný. Ja používam slobodné programy 20 rokov a stále ma to(to) neprestáva fascinovať.

Keby sme si zasnívali o svete, kde by napríklad Microsoft Office bol slobodným softvérom, ako dlho by trvalo, než by nadšenci začali s jeho modifikáciou a zlepšovaním?

„Happy hacking!“

Odkaz na Gitlab: diredc-tabs.el

    • RE: Diredc a.k.a. Dired ortodoxne 06.04 | 13:37
      Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

      teda na emacs som uz zabudol, to bolo utrpenioe, aj ked mensie nez vim

      clanok super

      Do or do not. There is to no try.​ Když pohřbíš moc tajemství, na hřbitově dojde místo.
      • RE: Diredc a.k.a. Dired ortodoxne 06.04 | 14:38
        Avatar Richard antiX  Používateľ

        Áno, Emacs má „od prirodzenia“ prijateľné  a predvídateľné ovládanie  - v zmysle, že stlačenie klávesu má očakávateľnú reakciu, defaultne to má menu, kontextové menu,… proste ako bežný program…

        Ale potom to začne - defaultné klávesové skratky poplatné svojej dobe. Ale ak sa na ne zvykne, tak človek pochopí skrytú krásu :).

         

        • RE: Diredc a.k.a. Dired ortodoxne 06.04 | 20:37
          Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

          tak ja stale pouzivam "stare" skratky.

          napr win+e otvori file manager a pod.

          ctrl+c exit z terminalu (povodne aj z emacsu ak si dobre pamatam)

          Ale ak sa na ne zvykne, tak človek pochopí skrytú krásu :).

          presne

          Do or do not. There is to no try.​ Když pohřbíš moc tajemství, na hřbitově dojde místo.
    • RE: Diredc a.k.a. Dired ortodoxne Včera | 18:15
      Avatar kamowski Linux Mint  Používateľ

      ... Ale subjektívny blogový zápisok by mal byť o niečom inom – ostatne toto je zaujímavná téma na diskusiu v zmysle, či má blogovanie zmysel v dobe AI – a veru aj bude....

      ... myslím, že nie,
      rád si čítam tieto tvoje blogy, nie všetkému síce rozumiem ale sú písané takým štýlom, ako píšem ja,
      mám pozitívnu myšlienku, skúsenosť, ..., s ktorou sa chcem podeliť, tak to hodím "na papier", stokrát to prepíšem, zmažem a znova doplním,

      ako napísať všetko čo chcem pár vetami, a ešte aby to niekto pochopil, prijal a snáď aj ocenil?
      :)

      vďaka za príspevok a pusť sa do toho o AI

      • RE: Diredc a.k.a. Dired ortodoxne Dnes | 08:45
        Avatar Richard antiX  Používateľ

        s ktorou sa chcem podeliť, tak to hodím "na papier"

        Presne tak! Zdieľanie informácií, skúseností, atď, toto je základom posunu spoločnosti.

        A myslím, že väčšina ľudí má prirodzenú ochotu zdieľať svoje vedomosti.

         

        ako napísať všetko čo chcem pár vetami, a ešte aby to niekto pochopil, prijal a snáď aj ocenil?

        Veru, toto je ťažké. Povedať niečo zrozumiteľne presným počtom viet je určite majstrovstvo.