#+TITLE: Nové featury Doom Emacs -- testovací průvodce #+include: ~/org/templates/document_personal.org Tento dokument popisuje všechny nové featury přidané do konfigurace. Po každé změně je nutný =doom sync= + restart Emacsu. * Prerekvizity Než testuješ cokoli: #+begin_src sh cd ~/.doom.d doom sync #+end_src Pak restartuj Emacs. Bez toho nové balíčky nejsou dostupné. * 1. link-hint -- otevírání odkazů bez myši Co dělá: zvýrazní všechny viditelné org-format odkazy v bufferu a přiřadí jim jednopísmenné zkratky. Stisknutím písmene odkaz otevřeš nebo zkopíruješ URL. Prerekvizita: =doom sync= dokončen, soubor musí obsahovat =[[...]]= odkazy. Jak testovat: 1. Otevři org soubor který má =[[https://example.com]]= nebo =[[file:inbox.org]]= odkazy 2. Stiskni =SPC j k= -- link-hint zvýrazní viditelné odkazy 3. Stiskni písmeno vedle odkazu -- odkaz se otevře 4. Pro kopírování URL: =SPC j K= *Důležité:* 'No links' je správná hláška když buffer nemá žádný =[[...]]= odkaz viditelný na obrazovce. Index.org bez explicitních odkazů = žádné linky. Funguje správně -- není to chyba. Příklady odkazů které link-hint najde: - =[[https://example.com][Odkaz]]= -- HTTP odkaz - =[[file:inbox.org]]= -- soubor - =[[*Nadpis]]= -- interní odkaz v dokumentu * 2. Avy -- skok na libovolné místo v bufferu Co dělá: zvýrazní každý výskyt dvou zadaných znaků a skočí na vybrané místo bez pohybu myši. Prerekvizita: Doom má avy automaticky -- dostupný bez doom sync. Jak testovat: 1. Otevři soubor s textem 2. Stiskni =SPC j j= -- zadej dva znaky (např. =th=) -- Avy zvýrazní shody 3. Stiskni písmeno u cílového výskytu -- kurzor skočí tam 4. Pro skok na řádek: =SPC j l= -- zadej písmeno u řádku Ověření: kurzor přeskočí na vybranou pozici bez scrollování. * 3. olivetti-mode -- klidný distraction-free mód Co dělá: horizontálně centruje text na šířku 90 znaků. Zapíná se *ručně* -- automatické zapínání by rozbilo corfu completion popup. Prerekvizita: =doom sync=, balík =olivetti= nainstalován. Jak testovat: 1. Otevři org nebo Markdown soubor 2. Stiskni =SPC t o= -- text se vycentruje na střed okna 3. Stiskni =SPC t o= znovu -- vrátí se do normálního layoutu *Upozornění:* Pokud zapneš olivetti a corfu popup zmizí nebo se zobrazí mimo obrazovku, vypni olivetti. Olivetti mění vizuální marginy a corfu pak počítá špatné souřadnice popupu. * 4. org-modern -- vylepšený vizuál org-mode Co dělá: nahradí hvězdičky u nadpisů Unicode symboly (okrouhlými tvary), zvýrazní checkboxy. Aktivuje se automaticky po loadu org-modern balíčku. Prerekvizita: =doom sync=, balík =org-modern= nainstalován. Jak testovat: 1. Otevři libovolný =.org= soubor (např. inbox.org) 2. Nadpisy by měly mít jinak vypadající hvězdičky 3. Checkboxy =[ ]= a =[X]= vypadají jinak Pokud org-modern nefunguje na už otevřený soubor: spusť =M-x org-modern-mode= ručně nebo zavři a znovu otevři soubor. Konfigurace zajišťuje aktivaci i pro už otevřené buffery při loadu balíčku. Ověření org exportu (klíčové): 1. Otevři org soubor s tabulkou a nadpisy 2. =SPC m e l o= nebo =C-c C-e l o= -- PDF export 3. Export musí proběhnout bez chyby 4. =org-modern-table= je vypnuto -- tabulkové overlaye by mohly interferovat * 5. org-fragtog -- automatický náhled LaTeX fragmentů Co dělá: když kurzor vstoupí do LaTeX fragmentu (=$E=mc^2$=), zobrazí ho jako obrázek; když kurzor odejde, fragment zůstane jako obrázek. Prerekvizita: =doom sync=, =org-fragtog= nainstalován, funkční =dvipng= nebo =imagemagick=: =brew install imagemagick=. Jak testovat: 1. Otevři org soubor 2. Napiš =$E = mc^2$= 3. Pohni kurzorem ven z fragmentu -- měl by se zobrazit jako obrázek 4. Pohni kurzorem dovnitř -- obrázek zmizí, zobrazí se zdrojový kód Pokud dvipng není dostupný, org-fragtog selže tiše. Zkontroluj: =M-x org-toggle-latex-fragment= * 6. org-super-agenda -- skupiny v agenda view Co dělá: rozdělí org agenda view do skupin: Dnes, Čekám, Kyndryl, ZTJ, Ostatní. Prerekvizita: =doom sync=, =org-super-agenda= nainstalován. Skupiny: - *Dnes*: položky se SCHEDULED nebo DEADLINE dnes - *Čekám*: položky s TODO stavem WAIT - *Kyndryl*: tag =:kyndryl:= nebo =:work:= - *ZTJ*: tag =:ztj:= - *Ostatní*: všechno co nezapadne do předchozích skupin Jak testovat: 1. Otevři org agendu: =SPC o A= nebo =C-c a a= 2. Agenda by měla zobrazovat skupiny s názvy 3. Položky s TODO =WAIT= ve skupině "Čekám" *Pokud agenda zobrazuje prázdnou stránku:* Spusť =M-x org-super-agenda-mode= pro aktivaci, nebo zkontroluj že =doom sync= byl dokončen. * 7. org-noter -- anotace PDF v org-mode Co dělá: propojuje PDF soubor s org souborem poznámek. Stránkování je synchronizováno. Prerekvizita: =doom sync=, =org-noter= nainstalován, PDF otevírá se v pdf-view. Jak testovat: 1. Otevři PDF soubor -- měl by se otevřít v pdf-view, ne v Preview 2. Stiskni =SPC o n= -- spustí org-noter session 3. Posouvej PDF -- org soubor se synchronizuje s aktuální stránkou 4. Přidej poznámku: =SPC o N= -- vloží org heading s pozicí v PDF Ověření: org heading obsahuje =:NOTER_PAGE:= property. * 8. GPTel -- rewrite regionu a org heading Co dělá: - =SPC o g r= -- pošle označený region do GPTel s instrukcí "vylepši text" a nahradí ho odpovědí - =SPC o g p= -- pošle obsah aktuálního org headingu jako kontext do GPTel chatu Prerekvizita: gptel funguje (=SPC o g g= otevírá chat). Jak testovat (rewrite): 1. Otevři soubor s textem 2. Označ region (visual mode: =v=) 3. =SPC o g r= -- počkat -- region se nahradí vylepšením 4. Zpráva: =GPTel: text vylepšen= v minibufferu Jak testovat (org heading): 1. Otevři org soubor 2. Postav kurzor do headingu 3. =SPC o g p= -- obsah headingu odeslán do GPTel chatu * 9. git-link -- kopírování URL na Gitea Co dělá: zkopíruje URL aktuálního souboru/řádku na Gitea do clipboardu. Prerekvizita: =doom sync=, soubor musí být v git repo s remote na Gitea. Jak testovat: 1. Otevři soubor v emacs-doom nebo jiném Gitea repo 2. Postav kurzor na konkrétní řádek 3. =SPC g y= -- URL zkopírována do clipboardu 4. Zkontroluj: =pbpaste= v terminálu Ověření: URL odpovídá aktuálnímu souboru a řádku na git.apps.sukany.cz. * 10. Forge -- Gitea integrace v Magit Co dělá: přidává pull request a issue management do Magit. Prerekvizita: =doom sync=, API token v =~/.authinfo=. Nastavení tokenu: 1. Přihlásit se na =https://git.apps.sukany.cz= 2. Settings -> Applications -> Generate new token (scope: =repo=) 3. Přidat do =~/.authinfo=: : machine git.apps.sukany.cz login daneel^forge password 4. =chmod 600 ~/.authinfo= Jak testovat: 1. Otevři Magit: =SPC g g= 2. Stiskni =@= -- Forge menu 3. =@ f= -- fetch forge data (PRy, issues) *Poznámka:* Bez tokenu Forge selže s chybou autentizace (očekávané chování). * Přehled kláves | Klávesa | Funkce | |-----------+-------------------------------| | SPC j k | link-hint -- otevři odkaz | | SPC j K | link-hint -- kopíruj URL | | SPC j j | avy-goto-char-2 | | SPC j l | avy-goto-line | | SPC t o | olivetti-mode toggle | | SPC o n | org-noter | | SPC o N | org-noter-insert-note | | SPC o g r | GPTel rewrite region | | SPC o g p | GPTel org heading -> kontext | | SPC g y | git-link (kopíruj URL) | | SPC g Y | git-link-commit | * Řešení problémů ** link-hint říká 'No links' Normální chování když buffer nemá žádný =[[...]]= odkaz viditelný na obrazovce. Testuj na org souboru který obsahuje =[[https://...]]= nebo =[[file:...]]= linky. ** corfu nefunguje po olivetti Vypni olivetti (=SPC t o=). Olivetti mění vizuální marginy, corfu popup pak má špatné souřadnice. ** org-modern nefunguje Spusť =doom sync= + restartuj Emacs. Pokud stále ne: =M-x org-modern-mode= nebo zavři a otevři soubor znovu. ** org export selže s Unicode varováním Zkontroluj svůj .org soubor na Unicode znaky mimo Latin-1: #+begin_src sh python3 -c " with open('tvuj-soubor.org') as f: for i, line in enumerate(f, 1): for ch in line: if ord(ch) > 255: print(f'radek {i}: U+{ord(ch):04X} {repr(ch)}') break " #+end_src Smazání nebo nahrazení těchto znaků vyřeší problém. ** org-super-agenda zobrazuje prázdnou agendu Spusť =M-x org-super-agenda-mode= pro ruční aktivaci. Zkontroluj že org soubory mají položky se SCHEDULED nebo DEADLINE. ** Forge: 'Invalid token' Zkontroluj formát =~/.authinfo= -- žádné uvozovky, žádné mezery navíc: : machine git.apps.sukany.cz login daneel^forge password TOKEN * emacs-new-features :PROPERTIES: :NOTER_DOCUMENT: ../../exports/pdf/emacs-new-features.pdf :END: