This commit is contained in:
Martin Sukany
2026-02-23 20:45:54 +01:00
parent 343bf450ff
commit b1f4efcea3
10 changed files with 1034 additions and 2 deletions

Binary file not shown.

View File

View File

@@ -0,0 +1,656 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="cs" xml:lang="cs">
<head>
<!-- 2026-02-23 Mon 18:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Doom Emacs — testovací průvodce novými featurami</title>
<meta name="author" content="Martin Sukaný" />
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
</head>
<body>
<div id="content" class="content">
<h1 class="title">Doom Emacs — testovací průvodce novými featurami</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Obsah</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org1e4fc36">1. link-hint — rychlá navigace po odkazech</a>
<ul>
<li><a href="#org598eaab">1.1. Prerekvizity</a></li>
<li><a href="#org45e20c6">1.2. Jak otestovat</a></li>
<li><a href="#org9f1e26d">1.3. Ověření</a></li>
</ul>
</li>
<li><a href="#orgf0be6c2">2. Avy keybindings — skoky na znaky a řádky</a>
<ul>
<li><a href="#org298fa2a">2.1. Prerekvizity</a></li>
<li><a href="#orge61d79e">2.2. Jak otestovat</a></li>
<li><a href="#org1497b96">2.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org92f92b6">3. olivetti-mode — distraction-free psaní</a>
<ul>
<li><a href="#orgce6b854">3.1. Prerekvizity</a></li>
<li><a href="#orgda5a494">3.2. Jak otestovat</a></li>
<li><a href="#org95f42da">3.3. Ověření</a></li>
</ul>
</li>
<li><a href="#orgfa62f9f">4. org-modern — vizuální vylepšení org-mode</a>
<ul>
<li><a href="#org9a2032a">4.1. Prerekvizity</a></li>
<li><a href="#org28a90ea">4.2. Jak otestovat</a></li>
<li><a href="#org425f0fe">4.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org9f7d7e9">5. org-fragtog — automatický render LaTeX fragmentů</a>
<ul>
<li><a href="#org2ef9aae">5.1. Prerekvizity</a></li>
<li><a href="#org6ff2f9b">5.2. Jak otestovat</a></li>
<li><a href="#orga9639b4">5.3. Ověření</a></li>
</ul>
</li>
<li><a href="#orgfc3d726">6. org-super-agenda — skupiny v agenda view</a>
<ul>
<li><a href="#org30a54a1">6.1. Prerekvizity</a></li>
<li><a href="#orgb9c04f0">6.2. Jak otestovat</a></li>
<li><a href="#org913f575">6.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org89e972f">7. org-noter — PDF anotace</a>
<ul>
<li><a href="#orgd6f4516">7.1. Prerekvizity</a></li>
<li><a href="#org4a38223">7.2. Jak otestovat</a></li>
<li><a href="#orgcf701cd">7.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org71d0292">8. GPTel rewrite — vylepšení textu přes AI</a>
<ul>
<li><a href="#org6cbc8b4">8.1. Prerekvizity</a></li>
<li><a href="#orgd492e12">8.2. Jak otestovat</a></li>
<li><a href="#orga28a164">8.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org43dc02f">9. git-link — kopírování URL na Gitea</a>
<ul>
<li><a href="#org1491be8">9.1. Prerekvizity</a></li>
<li><a href="#orge01f176">9.2. Jak otestovat</a></li>
<li><a href="#orgee1919f">9.3. Ověření</a></li>
</ul>
</li>
<li><a href="#org8762b1b">10. Forge — Gitea integrace v Magitu</a>
<ul>
<li><a href="#orgd17798d">10.1. Prerekvizity</a></li>
<li><a href="#org9164346">10.2. Jak otestovat</a></li>
<li><a href="#orgc25edd7">10.3. Ověření</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org1e4fc36" class="outline-2">
<h2 id="org1e4fc36"><span class="section-number-2">1.</span> link-hint — rychlá navigace po odkazech</h2>
<div class="outline-text-2" id="text-1">
<p>
Umožňuje otevřít nebo zkopírovat jakýkoli odkaz v bufferu pomocí avy-style přeskakování.
</p>
</div>
<div id="outline-container-org598eaab" class="outline-3">
<h3 id="org598eaab"><span class="section-number-3">1.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-1-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>Buffer obsahuje alespoň jeden odkaz (org link, URL, file path)</li>
</ul>
</div>
</div>
<div id="outline-container-org45e20c6" class="outline-3">
<h3 id="org45e20c6"><span class="section-number-3">1.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-1-2">
<ol class="org-ol">
<li>Otevři libovolný org soubor s odkazy (např. <code>inbox.org</code>)</li>
<li>Stiskni <code>SPC j k</code> — měly by se objevit avy hinty na všech odkazech</li>
<li>Vyber hint → odkaz se otevře v prohlížeči/Emacsu</li>
<li>Stiskni <code>SPC j K</code> → vyber odkaz → URL se zkopíruje do clipboard</li>
</ol>
</div>
</div>
<div id="outline-container-org9f1e26d" class="outline-3">
<h3 id="org9f1e26d"><span class="section-number-3">1.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-1-3">
<ul class="org-ul">
<li><code>SPC j k</code> zobrazí hinty a odkaz se otevře</li>
<li><code>SPC j K</code> zkopíruje URL (ověř přes <code>C-y</code> / paste)</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-orgf0be6c2" class="outline-2">
<h2 id="orgf0be6c2"><span class="section-number-2">2.</span> Avy keybindings — skoky na znaky a řádky</h2>
<div class="outline-text-2" id="text-2">
<p>
Rozšířené avy bindingy pod <code>SPC j</code> pro rychlou navigaci v bufferu.
</p>
</div>
<div id="outline-container-org298fa2a" class="outline-3">
<h3 id="org298fa2a"><span class="section-number-3">2.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-2-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
</ul>
</div>
</div>
<div id="outline-container-orge61d79e" class="outline-3">
<h3 id="orge61d79e"><span class="section-number-3">2.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-2-2">
<ol class="org-ol">
<li>Otevři libovolný soubor s textem</li>
<li><code>SPC j j</code> → zadej 2 znaky → avy zobrazí hinty na výskytech</li>
<li>Vyber hint → kurzor skočí na pozici</li>
<li><code>SPC j l</code> → avy zobrazí hinty na řádcích → vyber řádek</li>
</ol>
</div>
</div>
<div id="outline-container-org1497b96" class="outline-3">
<h3 id="org1497b96"><span class="section-number-3">2.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-2-3">
<ul class="org-ul">
<li>Kurzor se přesune na vybranou pozici</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org92f92b6" class="outline-2">
<h2 id="org92f92b6"><span class="section-number-2">3.</span> olivetti-mode — distraction-free psaní</h2>
<div class="outline-text-2" id="text-3">
<p>
Centruje text na šířku 90 znaků pro pohodlné čtení a psaní.
</p>
</div>
<div id="outline-container-orgce6b854" class="outline-3">
<h3 id="orgce6b854"><span class="section-number-3">3.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-3-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
</ul>
</div>
</div>
<div id="outline-container-orgda5a494" class="outline-3">
<h3 id="orgda5a494"><span class="section-number-3">3.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-3-2">
<ol class="org-ol">
<li>Otevři org soubor — olivetti se zapne automaticky (hook)</li>
<li>Ověř, že text je vycentrovaný s okraji po stranách</li>
<li>Otevři markdown soubor — stejné chování</li>
<li>V jiném režimu (např. elisp): <code>SPC t o</code> pro manuální toggle</li>
</ol>
</div>
</div>
<div id="outline-container-org95f42da" class="outline-3">
<h3 id="org95f42da"><span class="section-number-3">3.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-3-3">
<ul class="org-ul">
<li>Org/markdown buffery mají centrovaný text na ~90 znaků</li>
<li><code>SPC t o</code> zapíná/vypíná olivetti v libovolném bufferu</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-orgfa62f9f" class="outline-2">
<h2 id="orgfa62f9f"><span class="section-number-2">4.</span> org-modern — vizuální vylepšení org-mode</h2>
<div class="outline-text-2" id="text-4">
<p>
Nahrazuje hvězdičky nadpisů symboly (◉○✸✿), vylepšuje tabulky a checkboxy.
</p>
</div>
<div id="outline-container-org9a2032a" class="outline-3">
<h3 id="org9a2032a"><span class="section-number-3">4.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-4-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
</ul>
</div>
</div>
<div id="outline-container-org28a90ea" class="outline-3">
<h3 id="org28a90ea"><span class="section-number-3">4.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-4-2">
<ol class="org-ol">
<li>Otevři org soubor s nadpisy různých úrovní</li>
<li>Zkontroluj, že <code>*</code> jsou nahrazeny symboly ◉, ○, ✸, ✿</li>
<li>Vytvoř tabulku — měla by mít vylepšený vizuální styl</li>
<li>Vytvoř checkbox <code>[X]</code> / <code>[ ]</code> — měl by být stylizovaný</li>
</ol>
</div>
</div>
<div id="outline-container-org425f0fe" class="outline-3">
<h3 id="org425f0fe"><span class="section-number-3">4.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-4-3">
<ul class="org-ul">
<li>Nadpisy používají Unicode symboly místo hvězdiček</li>
<li>Tabulky a checkboxy vypadají vizuálně lépe</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org9f7d7e9" class="outline-2">
<h2 id="org9f7d7e9"><span class="section-number-2">5.</span> org-fragtog — automatický render LaTeX fragmentů</h2>
<div class="outline-text-2" id="text-5">
<p>
Při přesunutí kurzoru na/z LaTeX fragmentu se automaticky zobrazí/skryje náhled.
</p>
</div>
<div id="outline-container-org2ef9aae" class="outline-3">
<h3 id="org2ef9aae"><span class="section-number-3">5.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-5-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>LaTeX nainstalovaný (<code>latexmk</code> v PATH)</li>
</ul>
</div>
</div>
<div id="outline-container-org6ff2f9b" class="outline-3">
<h3 id="org6ff2f9b"><span class="section-number-3">5.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-5-2">
<ol class="org-ol">
<li>Otevři org soubor a vlož LaTeX fragment: <code>$E = mc^2$</code></li>
<li>Přesuň kurzor pryč z fragmentu → měl by se vyrenderovat jako obrázek</li>
<li>Přesuň kurzor zpět na fragment → zobrazí se zdrojový kód</li>
</ol>
</div>
</div>
<div id="outline-container-orga9639b4" class="outline-3">
<h3 id="orga9639b4"><span class="section-number-3">5.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-5-3">
<ul class="org-ul">
<li>LaTeX fragmenty se automaticky renderují/skrývají při pohybu kurzoru</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-orgfc3d726" class="outline-2">
<h2 id="orgfc3d726"><span class="section-number-2">6.</span> org-super-agenda — skupiny v agenda view</h2>
<div class="outline-text-2" id="text-6">
<p>
Rozděluje agenda view do pojmenovaných skupin: Dnes, Brzy, Čekám, Kyndryl, ZTJ, Ostatní.
</p>
</div>
<div id="outline-container-org30a54a1" class="outline-3">
<h3 id="org30a54a1"><span class="section-number-3">6.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-6-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>Existují org soubory s TODO položkami (různé stavy, tagy, deadlines)</li>
</ul>
</div>
</div>
<div id="outline-container-orgb9c04f0" class="outline-3">
<h3 id="orgb9c04f0"><span class="section-number-3">6.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-6-2">
<ol class="org-ol">
<li>Přidej několik TODO s různými vlastnostmi:
<ul class="org-ul">
<li><code>TODO</code> s deadline dnes</li>
<li><code>TODO</code> s deadline za 2 dny</li>
<li><code>WAIT</code> položka</li>
<li><code>TODO</code> s tagem <code>:kyndryl:</code></li>
<li><code>TODO</code> s tagem <code>:ztj:</code></li>
</ul></li>
<li>Otevři agenda: <code>SPC o A a</code> (nebo <code>M-x org-agenda</code>, volba <code>a</code>)</li>
<li>Zkontroluj, že položky jsou rozděleny do skupin</li>
</ol>
</div>
</div>
<div id="outline-container-org913f575" class="outline-3">
<h3 id="org913f575"><span class="section-number-3">6.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-6-3">
<ul class="org-ul">
<li>Agenda zobrazuje sekce: Dnes, Brzy, Čekám, Projekt Kyndryl, ZTJ, Ostatní</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org89e972f" class="outline-2">
<h2 id="org89e972f"><span class="section-number-2">7.</span> org-noter — PDF anotace</h2>
<div class="outline-text-2" id="text-7">
<p>
Umožňuje vytvářet org poznámky synchronizované s pozicí v PDF dokumentu.
</p>
</div>
<div id="outline-container-orgd6f4516" class="outline-3">
<h3 id="orgd6f4516"><span class="section-number-3">7.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-7-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>Existuje PDF soubor k anotování</li>
</ul>
</div>
</div>
<div id="outline-container-org4a38223" class="outline-3">
<h3 id="org4a38223"><span class="section-number-3">7.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-7-2">
<ol class="org-ol">
<li>Otevři PDF soubor v Emacsu (<code>pdf-view-mode</code>)</li>
<li><code>SPC o n</code> → spustí org-noter session (vytvoří/otevře org soubor)</li>
<li>Naviguj na stránku v PDF</li>
<li><code>SPC o N</code> → vloží poznámku na aktuální pozici</li>
</ol>
</div>
</div>
<div id="outline-container-orgcf701cd" class="outline-3">
<h3 id="orgcf701cd"><span class="section-number-3">7.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-7-3">
<ul class="org-ul">
<li>Emacs se rozdělí horizontálně (PDF vlevo, org vpravo)</li>
<li>Poznámky jsou provázané s pozicí v PDF</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org71d0292" class="outline-2">
<h2 id="org71d0292"><span class="section-number-2">8.</span> GPTel rewrite — vylepšení textu přes AI</h2>
<div class="outline-text-2" id="text-8">
<p>
Odešle vybraný region do GPTel s instrukcí "vylepši" a nahradí odpovědí.
</p>
</div>
<div id="outline-container-org6cbc8b4" class="outline-3">
<h3 id="org6cbc8b4"><span class="section-number-3">8.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-8-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>Env proměnná <code>OPENWEBUI_API_KEY</code> je nastavena</li>
<li>AI backend (ai.apps.sukany.cz) je dostupný</li>
</ul>
</div>
</div>
<div id="outline-container-orgd492e12" class="outline-3">
<h3 id="orgd492e12"><span class="section-number-3">8.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-8-2">
<ol class="org-ol">
<li>Otevři soubor s textem</li>
<li>Označ region (<code>v</code> + pohyb v evil normal mode)</li>
<li><code>SPC o g r</code> → region se odešle do GPTel → odpověď nahradí region</li>
<li>V org souboru: umísti kurzor na heading, <code>SPC o g p</code> → heading + obsah se odešle jako kontext do GPTel chatu</li>
</ol>
</div>
</div>
<div id="outline-container-orga28a164" class="outline-3">
<h3 id="orga28a164"><span class="section-number-3">8.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-8-3">
<ul class="org-ul">
<li><code>SPC o g r</code> nahradí vybraný text vylepšenou verzí</li>
<li><code>SPC o g p</code> otevře GPTel chat s obsahem heading jako kontextem</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org43dc02f" class="outline-2">
<h2 id="org43dc02f"><span class="section-number-2">9.</span> git-link — kopírování URL na Gitea</h2>
<div class="outline-text-2" id="text-9">
<p>
Generuje webový odkaz na aktuální soubor/řádek v Gitea repozitáři.
</p>
</div>
<div id="outline-container-org1491be8" class="outline-3">
<h3 id="org1491be8"><span class="section-number-3">9.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-9-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li>Soubor je v git repozitáři s remote na <code>git.apps.sukany.cz</code></li>
</ul>
</div>
</div>
<div id="outline-container-orge01f176" class="outline-3">
<h3 id="orge01f176"><span class="section-number-3">9.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-9-2">
<ol class="org-ol">
<li>Otevři soubor v git repozitáři (např. v emacs-doom)</li>
<li><code>SPC g y</code> → zkopíruje URL na aktuální soubor/řádek do clipboard</li>
<li><code>SPC g Y</code> → zkopíruje URL na aktuální commit</li>
</ol>
</div>
</div>
<div id="outline-container-orgee1919f" class="outline-3">
<h3 id="orgee1919f"><span class="section-number-3">9.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-9-3">
<ul class="org-ul">
<li>URL v clipboard ukazuje na <code>git.apps.sukany.cz/...</code> a je funkční v prohlížeči</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org8762b1b" class="outline-2">
<h2 id="org8762b1b"><span class="section-number-2">10.</span> Forge — Gitea integrace v Magitu</h2>
<div class="outline-text-2" id="text-10">
<p>
Přidává podporu pro Gitea issues, PRs a notifikace přímo v Magit.
</p>
</div>
<div id="outline-container-orgd17798d" class="outline-3">
<h3 id="orgd17798d"><span class="section-number-3">10.1.</span> Prerekvizity</h3>
<div class="outline-text-3" id="text-10-1">
<ul class="org-ul">
<li><code>doom sync</code> proběhl úspěšně</li>
<li><p>
Gitea API token vytvořen a uložen v <code>~/.authinfo</code>:
</p>
<pre class="example">
machine git.apps.sukany.cz login daneel^forge password &lt;TOKEN&gt;
</pre></li>
</ul>
</div>
</div>
<div id="outline-container-org9164346" class="outline-3">
<h3 id="org9164346"><span class="section-number-3">10.2.</span> Jak otestovat</h3>
<div class="outline-text-3" id="text-10-2">
<ol class="org-ol">
<li>Otevři Magit v repozitáři hostovaném na Gitea: <code>SPC g g</code></li>
<li>Stiskni <code>N</code> (forge notifications) nebo <code>'</code> (forge dispatch)</li>
<li><code>@ l l</code> — list issues</li>
</ol>
</div>
</div>
<div id="outline-container-orgc25edd7" class="outline-3">
<h3 id="orgc25edd7"><span class="section-number-3">10.3.</span> Ověření</h3>
<div class="outline-text-3" id="text-10-3">
<ul class="org-ul">
<li>Forge se připojí ke Gitea API a zobrazí issues/PRs</li>
<li>Pokud token chybí, Forge zobrazí chybu s instrukcí</li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="date">Datum: 2026-02-23</p>
<p class="author">Autor: Martin Sukaný</p>
<p class="date">Vytvořeno: 2026-02-23 Mon 18:49</p>
</div>
</body>
</html>

View File

@@ -1,6 +1,5 @@
#+TITLE: Nove featury Doom Emacs -- testovaci pruvodce #+TITLE: Nove featury Doom Emacs -- testovaci pruvodce
#+DATE: 2026-02-23 #+include: ~/org/templates/document_personal.org
#+AUTHOR: Daneel
Tento dokument popisuje vsechny nove featury pridane do konfigurace. Tento dokument popisuje vsechny nove featury pridane do konfigurace.
Po kazde zmene je nutny =doom sync= + restart Emacsu. Po kazde zmene je nutny =doom sync= + restart Emacsu.

View File

@@ -0,0 +1,377 @@
% Created 2026-02-23 Mon 20:36
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\usepackage{tabularx}
\usepackage[czech]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\sloppy
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[a4paper,margin=2.2cm]{geometry}
\usepackage[table,x11names]{xcolor}
\definecolor{kyndrylRed}{RGB}{196,0,0}
\definecolor{linkcolor}{RGB}{196,0,0}
\definecolor{tableOdd}{RGB}{252,252,252}
\definecolor{tableEven}{RGB}{237,237,237}
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=linkcolor,urlcolor=linkcolor,citecolor=linkcolor,pdfencoding=auto,unicode=true}
\usepackage{xurl}
\usepackage{graphicx}
\usepackage{array}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{ltablex}
\keepXColumns
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{etoolbox}
\usepackage{ragged2e}
\AtBeginEnvironment{longtable}{\rowcolors{1}{tableOdd}{tableEven}}
\AtBeginEnvironment{tabularx}{\rowcolors{1}{tableOdd}{tableEven}}
\AtBeginEnvironment{tabular}{\rowcolors{1}{tableOdd}{tableEven}}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Z}{>{\Centering\arraybackslash}X}
\newcolumntype{R}{>{\RaggedLeft\arraybackslash}X}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\lhead{\small\nouppercase{\leftmark}}
\rhead{\small\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headrule}{\hbox to\headwidth{\color{kyndrylRed}\leaders\hrule height \headrulewidth\hfill}}
\usepackage{listings}
\lstset{backgroundcolor=\color{yellow!20},basicstyle=\ttfamily\small,breaklines=true,frame=single}
\author{Martin Sukaný}
\date{\today}
\title{Nove featury Doom Emacs -- testovaci pruvodce}
\hypersetup{
pdfauthor={Martin Sukaný},
pdftitle={Nove featury Doom Emacs -- testovaci pruvodce},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 31.0.50 (Org mode 9.7.11)},
pdflang={Czech}}
\usepackage{biblatex}
\begin{document}
\maketitle
\setcounter{tocdepth}{2}
\tableofcontents
Tento dokument popisuje vsechny nove featury pridane do konfigurace.
Po kazde zmene je nutny \texttt{doom sync} + restart Emacsu.
\section{Prerekvizity}
\label{sec:org41542c8}
Nez testuje cokoli:
\begin{verbatim}
cd ~/.doom.d
doom sync
\end{verbatim}
Pak restartuj Emacs. Bez toho nove balicky nejsou dostupne.
\section{1. link-hint -- otevirani odkazu bez mysi}
\label{sec:org2649830}
Co dela: zvyrazni vsechny viditelne org-format odkazy v bufferu a prirad jim
jednopismenne zkratky. Stisknutim pismene odkaz otevres nebo zkopirujes URL.
Prerekvizita: \texttt{doom sync} dokoncen, soubor musi obsahovat \texttt{[[...]]} odkazy.
Jak testovat:
\begin{enumerate}
\item Otevri org soubor ktery ma \texttt{[[https://example.com]]} nebo \texttt{[[file:inbox.org]]} odkazy
\item Stiskni \texttt{SPC j k} -- link-hint zvyrazni viditelne odkazy
\item Stiskni pismeno vedle odkazu -- odkaz se otevri
\item Pro kopiovani URL: \texttt{SPC j K}
\end{enumerate}
\textbf{Dulezite:} 'No links' je spravna hlaska kdyz buffer nema zadny \texttt{[[...]]} odkaz
viditelny na obrazovce. Index.org bez explicitu odkazu = zadne linky. Funguje
spravne -- neni to chyba.
Priklady odkazu ktere link-hint najde:
\begin{itemize}
\item \texttt{[[https://example.com][Odkaz]]} -- HTTP odkaz
\item \texttt{[[file:inbox.org]]} -- soubor
\item \texttt{[[*Nadpis]]} -- interni odkaz v dokumentu
\end{itemize}
\section{2. Avy -- skok na libovolne misto v bufferu}
\label{sec:orgaaaa8c5}
Co dela: zvyrazni kazdy vyskyt dvou zadanych znaku a skoci na vybrane
misto bez pohybu mysi.
Prerekvizita: Doom ma avy automaticky -- dostupny bez doom sync.
Jak testovat:
\begin{enumerate}
\item Otevri soubor s textem
\item Stiskni \texttt{SPC j j} -- zadej dva znaky (napr. \texttt{th}) -- Avy zvyrazni shody
\item Stiskni pismeno u ciloveho vyskytu -- kurzor skoci tam
\item Pro skok na radek: \texttt{SPC j l} -- zadej pismeno u radku
\end{enumerate}
Overeni: kurzor preskoci na vybranou pozici bez scrollovani.
\section{3. olivetti-mode -- klidny distraction-free mod}
\label{sec:orgf4fb172}
Co dela: horizontalne centruje text na sirku 90 znaku. Zapina se \textbf{rucne} --
automaticke zapinani by rozbilo corfu completion popup.
Prerekvizita: \texttt{doom sync}, balik \texttt{olivetti} nainstalovan.
Jak testovat:
\begin{enumerate}
\item Otevri org nebo Markdown soubor
\item Stiskni \texttt{SPC t o} -- text se vycentruje na stred okna
\item Stiskni \texttt{SPC t o} znovu -- vrati se do normalniho layoutu
\end{enumerate}
\textbf{Upozorneni:} Pokud zapnes olivetti a corfu popup zmizi nebo se zobrazi
mimo obrazovku, vypni olivetti. Olivetti meni vizualni marginy a corfu
pak pocita spatne souradnice popupu.
\section{4. org-modern -- vylepseny vizual org-mode}
\label{sec:orgd88f5be}
Co dela: nahradi hvezdicky u nadpisu Unicode symboly (okrouhlymi tvary),
zvyrazni checkboxy. Aktivuje se automaticky po loadu org-modern balicku.
Prerekvizita: \texttt{doom sync}, balik \texttt{org-modern} nainstalovan.
Jak testovat:
\begin{enumerate}
\item Otevri libovolny \texttt{.org} soubor (napr. inbox.org)
\item Nadpisy by mely mit jinak vyzerajici hvezdicky
\item Checkboxy \texttt{[ ]} a \texttt{[X]} vypadaji jinak
\end{enumerate}
Pokud org-modern nefunguje na uz otevreny soubor: spust \texttt{M-x org-modern-mode}
rucne nebo zavre a znovu otevri soubor. Konfigu zajistuje aktivaci i pro uz
otevrene buffery pri loadu balicku.
Overeni org exportu (klicove):
\begin{enumerate}
\item Otevri org soubor s tabulkou a nadpisy
\item \texttt{SPC m e l o} nebo \texttt{C-c C-e l o} -- PDF export
\item Export musi probehnou bez chyby
\item \texttt{org-modern-table} je vypnuto -- tabulkove overlaye by mohly interferovat
\end{enumerate}
\section{5. org-fragtog -- automaticky nahled \LaTeX{} fragmentu}
\label{sec:org5bae01c}
Co dela: kdyz kurzor vstoupi do \LaTeX{} fragmentu (\texttt{\$E=mc\textasciicircum{}2\$}), zobrazi
ho jako obrazek; kdyz kurzor odejde, fragment zustane jako obrazek.
Prerekvizita: \texttt{doom sync}, \texttt{org-fragtog} nainstalovan, funkci \texttt{dvipng}
nebo \texttt{imagemagick}: \texttt{brew install imagemagick}.
Jak testovat:
\begin{enumerate}
\item Otevri org soubor
\item Napis \texttt{\$E = mc\textasciicircum{}2\$}
\item Pohni kurzorem ven z fragmentu -- mel by se zobrazit jako obrazek
\item Pohni kurzorem dovnitr -- obrazek zmizi, zobrazi se zdrojovy kod
\end{enumerate}
Pokud dvipng neni dostupny, org-fragtog selze tise. Zkontroluj:
\texttt{M-x org-toggle-latex-fragment}
\section{6. org-super-agenda -- skupiny v agenda view}
\label{sec:org138b653}
Co dela: rozdeli org agenda view do skupin: Dnes, Cekam, Kyndryl, ZTJ, Ostatni.
Prerekvizita: \texttt{doom sync}, \texttt{org-super-agenda} nainstalovan.
Skupiny:
\begin{itemize}
\item \textbf{Dnes}: polozky se SCHEDULED nebo DEADLINE dnes
\item \textbf{Cekam}: polozky s TODO stavem WAIT
\item \textbf{Kyndryl}: tag \texttt{:kyndryl:} nebo \texttt{:work:}
\item \textbf{ZTJ}: tag \texttt{:ztj:}
\item \textbf{Ostatni}: vsechno co nezapadne do predchozich skupin
\end{itemize}
Jak testovat:
\begin{enumerate}
\item Otevri org agenda: \texttt{SPC o A} nebo \texttt{C-c a a}
\item Agenda by mela zobrazovat skupiny s nazvy
\item Polozky s TODO \texttt{WAIT} ve skupine "Cekam"
\end{enumerate}
\textbf{Pokud agenda zobrazuje prazdnou stranku:} Spust \texttt{M-x org-super-agenda-mode}
pro aktivaci, nebo zkontroluj ze \texttt{doom sync} byl dokoncen.
\section{7. org-noter -- anotace PDF v org-mode}
\label{sec:orgc5d7d77}
Co dela: propojuje PDF soubor s org souborem poznamek. Strankovani je synchronizovano.
Prerekvizita: \texttt{doom sync}, \texttt{org-noter} nainstalovan, PDF otvira se v pdf-view.
Jak testovat:
\begin{enumerate}
\item Otevri PDF soubor -- mel by se otevrit v pdf-view, ne v Preview
\item Stiskni \texttt{SPC o n} -- spusti org-noter session
\item Posouvej PDF -- org soubor se synchronizuje s aktualni strankou
\item Pridej poznamku: \texttt{SPC o N} -- vlozi org heading s pozici v PDF
\end{enumerate}
Overeni: org heading obsahuje \texttt{:NOTER\_PAGE:} property.
\section{8. GPTel -- rewrite regionu a org heading}
\label{sec:orgf0ea4ea}
Co dela:
\begin{itemize}
\item \texttt{SPC o g r} -- posle oznaceny region do GPTel s instrukci "vyleps text"
a nahradi ho odpovedi
\item \texttt{SPC o g p} -- posle obsah aktualu org headingu jako kontext do GPTel chatu
\end{itemize}
Prerekvizita: gptel funkci (\texttt{SPC o g g} otevira chat).
Jak testovat (rewrite):
\begin{enumerate}
\item Otevri soubor s textem
\item Oznac region (visual mode: \texttt{v})
\item \texttt{SPC o g r} -- pockat -- region se nahradi vylepsenim
\item Zprava: \texttt{GPTel: text vylepsen} v minibufferu
\end{enumerate}
Jak testovat (org heading):
\begin{enumerate}
\item Otevri org soubor
\item Postav kurzor do headingu
\item \texttt{SPC o g p} -- obsah headingu odeslan do GPTel chatu
\end{enumerate}
\section{9. git-link -- kopiovani URL na Gitea}
\label{sec:org8936aac}
Co dela: zkopiruje URL aktualniho souboru/radku na Gitea do clipboardu.
Prerekvizita: \texttt{doom sync}, soubor musi byt v git repo s remote na Gitea.
Jak testovat:
\begin{enumerate}
\item Otevri soubor v emacs-doom nebo jinem Gitea repo
\item Postav kurzor na konkretni radek
\item \texttt{SPC g y} -- URL zkopirovna do clipboardu
\item Zkontroluj: \texttt{pbpaste} v terminalu
\end{enumerate}
Overeni: URL odpovida aktualnimu souboru a radku na git.apps.sukany.cz.
\section{10. Forge -- Gitea integrace v Magit}
\label{sec:org2546e94}
Co dela: pridava pull request a issue management do Magit.
Prerekvizita: \texttt{doom sync}, API token v \texttt{\textasciitilde{}/.authinfo}.
Nastaveni tokenu:
\begin{enumerate}
\item Prihlasit se na \texttt{https://git.apps.sukany.cz}
\item Settings -> Applications -> Generate new token (scope: \texttt{repo})
\item Pridat do \texttt{\textasciitilde{}/.authinfo}:
\begin{verbatim}
machine git.apps.sukany.cz login daneel^forge password <TOKEN>
\end{verbatim}
\item \texttt{chmod 600 \textasciitilde{}/.authinfo}
\end{enumerate}
Jak testovat:
\begin{enumerate}
\item Otevri Magit: \texttt{SPC g g}
\item Stiskni \texttt{@} -- Forge menu
\item \texttt{@ f} -- fetch forge data (PRy, issues)
\end{enumerate}
\textbf{Poznamka:} Bez tokenu Forge selze s chybou autentizace (ocekavane chovani).
\section{Prehled klaves}
\label{sec:org2597f1d}
\begin{center}
\begin{tabularx}{\linewidth}{lY}
Klavesa & Funkce\\
\hline
SPC j k & link-hint -- otevri odkaz\\
SPC j K & link-hint -- kopiruj 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 (kopiruj URL)\\
SPC g Y & git-link-commit\\
\end{tabularx}
\end{center}
\section{Reseni problemu}
\label{sec:orgac7a8e9}
\subsection{link-hint rika 'No links'}
\label{sec:org92019e7}
Normalni chovani kdyz buffer nema zadny \texttt{[[...]]} odkaz viditelny na obrazovce.
Testuj na org souboru ktery obsahuje \texttt{[[https://...]]} nebo \texttt{[[file:...]]} linky.
\subsection{corfu nefunguje po olivetti}
\label{sec:orgdd696ee}
Vypni olivetti (\texttt{SPC t o}). Olivetti meni vizualni marginy, corfu popup pak
ma spatne souradnice.
\subsection{org-modern nefunguje}
\label{sec:org53299b3}
Spust \texttt{doom sync} + restartuj Emacs. Pokud stale ne: \texttt{M-x org-modern-mode}
nebo zavre a otevri soubor znovu.
\subsection{org export selze s Unicode varovanim}
\label{sec:orgdec002a}
Zkontroluj svuj .org soubor na Unicode znaky mimo Latin-1:
\begin{verbatim}
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{verbatim}
Smazani nebo nahrazeni techto znaku vyresi problem.
\subsection{org-super-agenda zobrazuje prazdnou agendu}
\label{sec:org5c2473b}
Spust \texttt{M-x org-super-agenda-mode} pro rucni aktivaci.
Zkontroluj ze org soubory maji polozky se SCHEDULED nebo DEADLINE.
\subsection{Forge: 'Invalid token'}
\label{sec:org6acb14e}
Zkontroluj format \texttt{\textasciitilde{}/.authinfo} -- zadne uvozovky, zadne mezery navic:
\begin{verbatim}
machine git.apps.sukany.cz login daneel^forge password TOKEN
\end{verbatim}
\section{emacs-new-features}
\label{sec:org2d1ff3e}
\subsection{first note}
\label{sec:orgef2818c}
\subsection{Testovaci poznamka - prvni stranka}
\label{sec:orgcbd1095}
Tady zacina ta prvni stranka
\begin{itemize}
\item tak tady par poznamek
\item nova odrazka
\end{itemize}
\subsection{Olivetti mode je na strance 3, melo by to byt ok}
\label{sec:org72cfac7}
\subsection{Prehled klaves je tady}
\label{sec:orge56be61}
\end{document}

Binary file not shown.

Binary file not shown.