Files
emacs-org/notes/emacs-new-features.tex
Martin Sukany b1f4efcea3 update
2026-02-23 20:45:54 +01:00

378 lines
13 KiB
TeX

% 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}