docs: rewrite emacs-new-features.org — opravené chování, guardy, řešení problémů
This commit is contained in:
@@ -1,169 +1,244 @@
|
|||||||
#+TITLE: Doom Emacs — testovací průvodce novými featurami
|
#+TITLE: Nové featury Doom Emacs — testovací průvodce
|
||||||
#+DATE: 2026-02-23
|
#+DATE: 2026-02-23
|
||||||
#+STARTUP: showall
|
#+AUTHOR: Daneel
|
||||||
|
|
||||||
* link-hint — rychlá navigace po odkazech
|
Tento dokument popisuje všechny nové featury přidané do konfigurace.
|
||||||
Umožňuje otevřít nebo zkopírovat jakýkoli odkaz v bufferu pomocí avy-style přeskakování.
|
Po každé změně je nutný =doom sync= + restart Emacsu.
|
||||||
|
|
||||||
** Prerekvizity
|
* Prerekvizity
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
- Buffer obsahuje alespoň jeden odkaz (org link, URL, file path)
|
|
||||||
|
|
||||||
** Jak otestovat
|
Než testuješ cokoli:
|
||||||
1. Otevři libovolný org soubor s odkazy (např. =inbox.org=)
|
|
||||||
2. Stiskni =SPC j k= — měly by se objevit avy hinty na všech odkazech
|
|
||||||
3. Vyber hint → odkaz se otevře v prohlížeči/Emacsu
|
|
||||||
4. Stiskni =SPC j K= → vyber odkaz → URL se zkopíruje do clipboard
|
|
||||||
|
|
||||||
** Ověření
|
#+begin_src sh
|
||||||
- =SPC j k= zobrazí hinty a odkaz se otevře
|
cd ~/.doom.d # nebo kde máš doom config
|
||||||
- =SPC j K= zkopíruje URL (ověř přes =C-y= / paste)
|
doom sync
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Avy keybindings — skoky na znaky a řádky
|
Pak restartuj Emacs. Bez toho nové balíčky nejsou dostupné.
|
||||||
Rozšířené avy bindingy pod =SPC j= pro rychlou navigaci v bufferu.
|
|
||||||
|
|
||||||
** Prerekvizity
|
* 1. link-hint — otevírání odkazů bez myši
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
|
|
||||||
** Jak otestovat
|
Co dělá: zvýrazní všechny viditelné odkazy v bufferu a přiřadí jim
|
||||||
1. Otevři libovolný soubor s textem
|
jednopísmenné zkratky. Stisknutím písmene odkaz otevřeš nebo zkopíruješ URL.
|
||||||
2. =SPC j j= → zadej 2 znaky → avy zobrazí hinty na výskytech
|
|
||||||
3. Vyber hint → kurzor skočí na pozici
|
|
||||||
4. =SPC j l= → avy zobrazí hinty na řádcích → vyber řádek
|
|
||||||
|
|
||||||
** Ověření
|
Prerekvizita: =doom sync= dokončen.
|
||||||
- Kurzor se přesune na vybranou pozici
|
|
||||||
|
|
||||||
* olivetti-mode — distraction-free psaní
|
Jak testovat:
|
||||||
Centruje text na šířku 90 znaků pro pohodlné čtení a psaní.
|
1. Otevři buffer s URL (Markdown, org, nebo jakýkoli text s http://)
|
||||||
|
2. Stiskni =SPC j k= → link-hint zvýrazní všechny odkazy
|
||||||
|
3. Stiskni písmeno vedle odkazu → odkaz se otevře v prohlížeči
|
||||||
|
4. Pro kopírování URL: =SPC j K= → stiskni písmeno → URL je v clipboardu
|
||||||
|
|
||||||
** Prerekvizity
|
Ověření: pokud =SPC j k= zobrazí barevné písmeno u každého odkazu, funguje.
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
|
|
||||||
** Jak otestovat
|
* 2. Avy — skok na libovolné místo v bufferu
|
||||||
1. Otevři org soubor — olivetti se zapne automaticky (hook)
|
|
||||||
2. Ověř, že text je vycentrovaný s okraji po stranách
|
|
||||||
3. Otevři markdown soubor — stejné chování
|
|
||||||
4. V jiném režimu (např. elisp): =SPC t o= pro manuální toggle
|
|
||||||
|
|
||||||
** Ověření
|
Co dělá: zvýrazní každý výskyt dvou zadaných znaků a skoční na vybrané
|
||||||
- Org/markdown buffery mají centrovaný text na ~90 znaků
|
místo bez pohybu myší.
|
||||||
- =SPC t o= zapíná/vypíná olivetti v libovolném bufferu
|
|
||||||
|
|
||||||
* org-modern — vizuální vylepšení org-mode
|
Prerekvizita: Doom má avy v =:editor snippets= — je dostupný automaticky.
|
||||||
Nahrazuje hvězdičky nadpisů symboly (◉○✸✿), vylepšuje tabulky a checkboxy.
|
|
||||||
|
|
||||||
** Prerekvizity
|
Jak testovat:
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
|
|
||||||
** Jak otestovat
|
|
||||||
1. Otevři org soubor s nadpisy různých úrovní
|
|
||||||
2. Zkontroluj, že =*= jsou nahrazeny symboly ◉, ○, ✸, ✿
|
|
||||||
3. Vytvoř tabulku — měla by mít vylepšený vizuální styl
|
|
||||||
4. Vytvoř checkbox =[X]= / =[ ]= — měl by být stylizovaný
|
|
||||||
|
|
||||||
** Ověření
|
|
||||||
- Nadpisy používají Unicode symboly místo hvězdiček
|
|
||||||
- Tabulky a checkboxy vypadají vizuálně lépe
|
|
||||||
|
|
||||||
* org-fragtog — automatický render LaTeX fragmentů
|
|
||||||
Při přesunutí kurzoru na/z LaTeX fragmentu se automaticky zobrazí/skryje náhled.
|
|
||||||
|
|
||||||
** Prerekvizity
|
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
- LaTeX nainstalovaný (=latexmk= v PATH)
|
|
||||||
|
|
||||||
** Jak otestovat
|
|
||||||
1. Otevři org soubor a vlož LaTeX fragment: =$E = mc^2$=
|
|
||||||
2. Přesuň kurzor pryč z fragmentu → měl by se vyrenderovat jako obrázek
|
|
||||||
3. Přesuň kurzor zpět na fragment → zobrazí se zdrojový kód
|
|
||||||
|
|
||||||
** Ověření
|
|
||||||
- LaTeX fragmenty se automaticky renderují/skrývají při pohybu kurzoru
|
|
||||||
|
|
||||||
* org-super-agenda — skupiny v agenda view
|
|
||||||
Rozděluje agenda view do pojmenovaných skupin: Dnes, Brzy, Čekám, Kyndryl, ZTJ, Ostatní.
|
|
||||||
|
|
||||||
** Prerekvizity
|
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
- Existují org soubory s TODO položkami (různé stavy, tagy, deadlines)
|
|
||||||
|
|
||||||
** Jak otestovat
|
|
||||||
1. Přidej několik TODO s různými vlastnostmi:
|
|
||||||
- =TODO= s deadline dnes
|
|
||||||
- =TODO= s deadline za 2 dny
|
|
||||||
- =WAIT= položka
|
|
||||||
- =TODO= s tagem =:kyndryl:=
|
|
||||||
- =TODO= s tagem =:ztj:=
|
|
||||||
2. Otevři agenda: =SPC o A a= (nebo =M-x org-agenda=, volba =a=)
|
|
||||||
3. Zkontroluj, že položky jsou rozděleny do skupin
|
|
||||||
|
|
||||||
** Ověření
|
|
||||||
- Agenda zobrazuje sekce: Dnes, Brzy, Čekám, Projekt Kyndryl, ZTJ, Ostatní
|
|
||||||
|
|
||||||
* org-noter — PDF anotace
|
|
||||||
Umožňuje vytvářet org poznámky synchronizované s pozicí v PDF dokumentu.
|
|
||||||
|
|
||||||
** Prerekvizity
|
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
- Existuje PDF soubor k anotování
|
|
||||||
|
|
||||||
** Jak otestovat
|
|
||||||
1. Otevři PDF soubor v Emacsu (=pdf-view-mode=)
|
|
||||||
2. =SPC o n= → spustí org-noter session (vytvoří/otevře org soubor)
|
|
||||||
3. Naviguj na stránku v PDF
|
|
||||||
4. =SPC o N= → vloží poznámku na aktuální pozici
|
|
||||||
|
|
||||||
** Ověření
|
|
||||||
- Emacs se rozdělí horizontálně (PDF vlevo, org vpravo)
|
|
||||||
- Poznámky jsou provázané s pozicí v PDF
|
|
||||||
|
|
||||||
* GPTel rewrite — vylepšení textu přes AI
|
|
||||||
Odešle vybraný region do GPTel s instrukcí "vylepši" a nahradí odpovědí.
|
|
||||||
|
|
||||||
** Prerekvizity
|
|
||||||
- =doom sync= proběhl úspěšně
|
|
||||||
- Env proměnná =OPENWEBUI_API_KEY= je nastavena
|
|
||||||
- AI backend (ai.apps.sukany.cz) je dostupný
|
|
||||||
|
|
||||||
** Jak otestovat
|
|
||||||
1. Otevři soubor s textem
|
1. Otevři soubor s textem
|
||||||
2. Označ region (=v= + pohyb v evil normal mode)
|
2. Stiskni =SPC j j= → zadej dva znaky (např. =th=) → Avy zvýrazní shody
|
||||||
3. =SPC o g r= → region se odešle do GPTel → odpověď nahradí region
|
3. Stiskni písmeno u cílového výskytu → kurzor skočí tam
|
||||||
4. V org souboru: umísti kurzor na heading, =SPC o g p= → heading + obsah se odešle jako kontext do GPTel chatu
|
4. Pro skok na řádek: =SPC j l= → zadej písmeno u řádku → skok
|
||||||
|
|
||||||
** Ověření
|
Ověření: kurzor přeskočí na vybranou pozici bez scrollování.
|
||||||
- =SPC o g r= nahradí vybraný text vylepšenou verzí
|
|
||||||
- =SPC o g p= otevře GPTel chat s obsahem heading jako kontextem
|
|
||||||
|
|
||||||
* git-link — kopírování URL na Gitea
|
* 3. olivetti-mode — klidný distraction-free mód
|
||||||
Generuje webový odkaz na aktuální soubor/řádek v Gitea repozitáři.
|
|
||||||
|
|
||||||
** Prerekvizity
|
Co dělá: horizontálně centruje text na šířku 90 znaků a ukryje postranní
|
||||||
- =doom sync= proběhl úspěšně
|
rušivé prvky. Zapíná se *ručně* — automatické zapínání by rozbilo corfu.
|
||||||
- Soubor je v git repozitáři s remote na =git.apps.sukany.cz=
|
|
||||||
|
|
||||||
** Jak otestovat
|
Prerekvizita: =doom sync=, balíček =olivetti= nainstalován.
|
||||||
1. Otevři soubor v git repozitáři (např. v emacs-doom)
|
|
||||||
2. =SPC g y= → zkopíruje URL na aktuální soubor/řádek do clipboard
|
|
||||||
3. =SPC g Y= → zkopíruje URL na aktuální commit
|
|
||||||
|
|
||||||
** Ověření
|
Jak testovat:
|
||||||
- URL v clipboard ukazuje na =git.apps.sukany.cz/...= a je funkční v prohlížeči
|
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
|
||||||
|
|
||||||
* Forge — Gitea integrace v Magitu
|
Ověření: text se viditelně přesune od levého okraje do středu.
|
||||||
Přidává podporu pro Gitea issues, PRs a notifikace přímo v Magit.
|
|
||||||
|
|
||||||
** Prerekvizity
|
*Důležité:* olivetti nesmí být auto-zapnuto v org bufferech — pokud ho
|
||||||
- =doom sync= proběhl úspěšně
|
zapneš a pak otevřeš corfu popup, může se zobrazit mimo obrazovku.
|
||||||
- Gitea API token vytvořen a uložen v =~/.authinfo=:
|
Zapínej/vypínej ručně dle potřeby.
|
||||||
: machine git.apps.sukany.cz login daneel^forge password <TOKEN>
|
|
||||||
|
|
||||||
** Jak otestovat
|
* 4. org-modern — vylepšený vizuál org-mode
|
||||||
1. Otevři Magit v repozitáři hostovaném na Gitea: =SPC g g=
|
|
||||||
2. Stiskni =N= (forge notifications) nebo ='= (forge dispatch)
|
|
||||||
3. =@ l l= — list issues
|
|
||||||
|
|
||||||
** Ověření
|
Co dělá: nahrazuje ASCII hvězdičky u nadpisů Unicode symboly (◉ ○ ✸ ✿),
|
||||||
- Forge se připojí ke Gitea API a zobrazí issues/PRs
|
zvýrazňuje checkboxy. Aktivuje se *pouze* v souborech (ne v export bufferech).
|
||||||
- Pokud token chybí, Forge zobrazí chybu s instrukcí
|
|
||||||
|
Prerekvizita: =doom sync=, balíček =org-modern= nainstalován.
|
||||||
|
|
||||||
|
Jak testovat:
|
||||||
|
1. Otevři libovolný =.org= soubor
|
||||||
|
2. Nadpisy by měly mít místo =*= → =◉=, =**= → =○= atd.
|
||||||
|
3. Checkboxy =[ ]= a =[X]= vypadají jinak
|
||||||
|
|
||||||
|
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. Pokud export funguje, org-modern neinterferuje
|
||||||
|
|
||||||
|
*Poznámka:* =org-modern-table= je záměrně vypnuto — tabulkové overlaye
|
||||||
|
mohou interferovat s LaTeX exportem.
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
Aktivuje se pouze v souborech, ne v export bufferech.
|
||||||
|
|
||||||
|
Prerekvizita: =doom sync=, =org-fragtog= nainstalován, funkční =dvipng=
|
||||||
|
nebo =imagemagick= na macOS (=brew install imagemagick=).
|
||||||
|
|
||||||
|
Jak testovat:
|
||||||
|
1. Otevři org soubor
|
||||||
|
2. Napiš inline LaTeX: =$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
|
||||||
|
|
||||||
|
Ověření: pokud =dvipng= není dostupný, org-fragtog selže tiše
|
||||||
|
(žádné chybové hlášení, jen nefunguje preview).
|
||||||
|
|
||||||
|
Ověření org exportu: =SPC m e l o= musí stále fungovat.
|
||||||
|
|
||||||
|
* 6. org-super-agenda — skupiny v agenda view
|
||||||
|
|
||||||
|
Co dělá: rozděluje org agenda view do pojmenovaných skupin:
|
||||||
|
Dnes, Brzy (do 3 dnů), Čekám, Projekt Kyndryl, ZTJ, Ostatní.
|
||||||
|
|
||||||
|
Prerekvizita: =doom sync=, =org-super-agenda= nainstalován.
|
||||||
|
|
||||||
|
Jak testovat:
|
||||||
|
1. Otevři org agenda: =SPC o A= nebo =C-c a a=
|
||||||
|
2. Agenda by měla zobrazovat skupiny s názvy místo plochého seznamu
|
||||||
|
3. Položky s TODO =WAIT= by měly být ve skupině "Čekám"
|
||||||
|
4. Položky s tagem =:kyndryl:= nebo =:work:= ve skupině "Projekt Kyndryl"
|
||||||
|
|
||||||
|
Ověření: viditelné nadpisy skupin v agenda bufferu.
|
||||||
|
|
||||||
|
* 7. org-noter — anotace PDF v org-mode
|
||||||
|
|
||||||
|
Co dělá: propojuje PDF soubor s org souborem poznámek. Stránkování
|
||||||
|
PDF a org poznámek je synchronizováno.
|
||||||
|
|
||||||
|
Prerekvizita: =doom sync=, =org-noter= nainstalován, fungující pdf-tools
|
||||||
|
(=SPC m P= pro otevření PDF přes 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. Vytvoří nový org soubor poznámek, nebo vybere existující
|
||||||
|
4. Posouvej PDF → org soubor se synchronizuje s aktuální stránkou
|
||||||
|
5. Přidej poznámku: =SPC o N= → vloží org heading s pozicí v PDF
|
||||||
|
|
||||||
|
Ověření: org heading obsahuje =:NOTER_PAGE:= property s číslem stránky.
|
||||||
|
|
||||||
|
* 8. GPTel — rewrite regionu a org heading jako kontext
|
||||||
|
|
||||||
|
Co dělá: dvě nové funkce v GPTel:
|
||||||
|
- =SPC o g r= → pošle označený region 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 funkční (=SPC o g g= otevírá chat).
|
||||||
|
|
||||||
|
Jak testovat (rewrite):
|
||||||
|
1. Otevři soubor s textem
|
||||||
|
2. Označ region (visual mode: =v= pak pohyb)
|
||||||
|
3. Stiskni =SPC o g r=
|
||||||
|
4. Počkej — region se nahradí vylepšenou verzí textu
|
||||||
|
|
||||||
|
Jak testovat (org heading):
|
||||||
|
1. Otevři org soubor
|
||||||
|
2. Postav kurzor do headingu se zápisem
|
||||||
|
3. Stiskni =SPC o g p= → obsah headingu se pošle jako kontext do GPTel chatu
|
||||||
|
|
||||||
|
Ověření: zpráva =GPTel: text vylepšen= nebo =GPTel: heading '...' odeslán=
|
||||||
|
v minibufferu.
|
||||||
|
|
||||||
|
* 9. git-link — kopírování URL na Gitea
|
||||||
|
|
||||||
|
Co dělá: zkopíruje URL aktuální souboru/řádku na Gitea instanci
|
||||||
|
(=git.apps.sukany.cz=) do clipboardu.
|
||||||
|
|
||||||
|
Prerekvizita: =doom sync=, =git-link= nainstalován, soubor musí být
|
||||||
|
v git repozitáři 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. Stiskni =SPC g y= → URL zkopírována do clipboardu
|
||||||
|
4. Ověř pbpaste: otevři terminál, spusť =pbpaste= → mělo by být URL jako:
|
||||||
|
=https://git.apps.sukany.cz/martin/emacs-doom/src/branch/master/config.el#L42=
|
||||||
|
5. Pro URL commitu: =SPC g Y=
|
||||||
|
|
||||||
|
Ověření: URL v clipboardu odpovídá aktuálnímu souboru a řádku.
|
||||||
|
|
||||||
|
* 10. Forge — Gitea integrace v Magit
|
||||||
|
|
||||||
|
Co dělá: přidává pull request a issue management přímo do Magit.
|
||||||
|
Forge musí vědět o Gitea instanci.
|
||||||
|
|
||||||
|
Prerekvizita: =doom sync=, API token v =~/.authinfo=.
|
||||||
|
|
||||||
|
Nastavení tokenu:
|
||||||
|
1. Přihlas se na =https://git.apps.sukany.cz=
|
||||||
|
2. Settings → Applications → Generate new token (scope: =repo=)
|
||||||
|
3. Přidej do =~/.authinfo= (v domovském adresáři):
|
||||||
|
#+begin_src
|
||||||
|
machine git.apps.sukany.cz login daneel^forge password <TOKEN>
|
||||||
|
#+end_src
|
||||||
|
4. Nastav oprávnění: =chmod 600 ~/.authinfo=
|
||||||
|
|
||||||
|
Jak testovat po nastavení tokenu:
|
||||||
|
1. Otevři Magit: =SPC g g=
|
||||||
|
2. Stiskni =@= → Forge menu
|
||||||
|
3. =@ f= → fetch forge data (PRy, issues)
|
||||||
|
4. =SPC g i= → seznam issues pro aktuální repo
|
||||||
|
|
||||||
|
Ověření: bez tokenu Forge selže s chybou autentizace (očekávané chování).
|
||||||
|
S tokenem zobrazí PRy a issues z Gitea.
|
||||||
|
|
||||||
|
* Shrnutí klíčových keybindingů
|
||||||
|
|
||||||
|
| 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 jako kontext|
|
||||||
|
| SPC g y | git-link (kopíruj URL) |
|
||||||
|
| SPC g Y | git-link-commit |
|
||||||
|
|
||||||
|
* Řešení problémů
|
||||||
|
|
||||||
|
** corfu nefunguje po olivetti
|
||||||
|
Pokud zapneš olivetti (=SPC t o=) a pak corfu popup zmizí nebo se zobrazí
|
||||||
|
mimo obrazovku: vypni olivetti (=SPC t o= znovu) a corfu se vrátí.
|
||||||
|
Olivetti mění vizuální marginy, corfu to nezvládne v kombinaci.
|
||||||
|
|
||||||
|
** org export selže
|
||||||
|
Ověř že =org-modern-mode= není aktivní v export bufferu:
|
||||||
|
=M-x org-modern-mode= v normálním org bufferu je OK.
|
||||||
|
Pokud export stále selhává, zkus =M-x org-modern-mode= (toggle off)
|
||||||
|
a exportuj znovu — pokud pak funguje, nahlás to.
|
||||||
|
|
||||||
|
** org-fragtog nefunguje (LaTeX preview)
|
||||||
|
Vyžaduje imagemagick: =brew install imagemagick=
|
||||||
|
Ověř: =M-x org-toggle-latex-fragment= — pokud to funguje, org-fragtog
|
||||||
|
by měl fungovat taky.
|
||||||
|
|
||||||
|
** Forge: "Invalid token"
|
||||||
|
Zkontroluj format =~/.authinfo= — musí být přesně:
|
||||||
|
=machine git.apps.sukany.cz login daneel^forge password TOKEN=
|
||||||
|
(bez uvozovek, bez mezer navíc)
|
||||||
|
|||||||
Reference in New Issue
Block a user