feat: add link-hint, olivetti, org-modern, org-fragtog, org-super-agenda, org-noter, gptel-rewrite, git-link, forge
This commit is contained in:
165
config.el
165
config.el
@@ -1092,3 +1092,168 @@ Otherwise: runs interactive ement-connect, then opens rooms after sync."
|
|||||||
("\\.mm\\'" . default)
|
("\\.mm\\'" . default)
|
||||||
("\\.x?html?\\'" . default)
|
("\\.x?html?\\'" . default)
|
||||||
("\\.pdf\\'" . emacs)))) ; find-file → pdf-view-mode via auto-mode-alist
|
("\\.pdf\\'" . emacs)))) ; find-file → pdf-view-mode via auto-mode-alist
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; NAVIGATION — link-hint, avy
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! link-hint
|
||||||
|
:defer t
|
||||||
|
:commands (link-hint-open-link link-hint-copy-link))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix ("j" . "jump")
|
||||||
|
:desc "Open link (link-hint)" "k" #'link-hint-open-link
|
||||||
|
:desc "Copy link URL" "K" #'link-hint-copy-link
|
||||||
|
:desc "Avy goto char-2" "j" #'avy-goto-char-2
|
||||||
|
:desc "Avy goto line" "l" #'avy-goto-line))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; WRITING — olivetti-mode
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! olivetti
|
||||||
|
:defer t
|
||||||
|
:config
|
||||||
|
(setq olivetti-body-width 90))
|
||||||
|
|
||||||
|
(add-hook 'org-mode-hook #'olivetti-mode)
|
||||||
|
(add-hook 'markdown-mode-hook #'olivetti-mode)
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix ("t" . "toggle")
|
||||||
|
:desc "Olivetti mode" "o" #'olivetti-mode))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; ORG-MODERN — lepší vizuální styl org-mode
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! org-modern
|
||||||
|
:after org
|
||||||
|
:config
|
||||||
|
(setq org-modern-star '("◉" "○" "✸" "✿")
|
||||||
|
org-modern-table t
|
||||||
|
org-modern-checkbox t)
|
||||||
|
(global-org-modern-mode))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; ORG-FRAGTOG — auto-render LaTeX fragmentů
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! org-fragtog
|
||||||
|
:after org
|
||||||
|
:hook (org-mode . org-fragtog-mode))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; ORG-SUPER-AGENDA — skupiny v agenda view
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! org-super-agenda
|
||||||
|
:after org-agenda
|
||||||
|
:config
|
||||||
|
(setq org-super-agenda-groups
|
||||||
|
'((:name "Dnes"
|
||||||
|
:scheduled today
|
||||||
|
:deadline today)
|
||||||
|
(:name "Brzy"
|
||||||
|
:deadline (before ,(org-read-date nil nil "+3d")))
|
||||||
|
(:name "Čekám"
|
||||||
|
:todo "WAIT")
|
||||||
|
(:name "Projekt Kyndryl"
|
||||||
|
:tag ("kyndryl" "work"))
|
||||||
|
(:name "ZTJ"
|
||||||
|
:tag "ztj")
|
||||||
|
(:name "Ostatní"
|
||||||
|
:anything t)))
|
||||||
|
(org-super-agenda-mode))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; ORG-NOTER — PDF anotace
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! org-noter
|
||||||
|
:after (:any org pdf-view)
|
||||||
|
:config
|
||||||
|
(setq org-noter-notes-window-location 'horizontal-split))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix ("o" . "open")
|
||||||
|
:desc "org-noter" "n" #'org-noter
|
||||||
|
:desc "org-noter insert note" "N" #'org-noter-insert-note))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; GPTEL — region rewrite & org heading prompt
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(after! gptel
|
||||||
|
(defun my/gptel-rewrite-region (beg end)
|
||||||
|
"Pošli označený region do GPTel s instrukcí 'vylepši text' a nahraď odpovědí."
|
||||||
|
(interactive "r")
|
||||||
|
(let ((text (buffer-substring-no-properties beg end)))
|
||||||
|
(gptel-request
|
||||||
|
(concat "Vylepši následující text. Vrať POUZE vylepšený text, nic jiného:\n\n" text)
|
||||||
|
:callback (lambda (response info)
|
||||||
|
(if response
|
||||||
|
(save-excursion
|
||||||
|
(delete-region beg end)
|
||||||
|
(goto-char beg)
|
||||||
|
(insert response)
|
||||||
|
(message "GPTel: text vylepšen"))
|
||||||
|
(message "GPTel rewrite failed: %s" (plist-get info :status)))))))
|
||||||
|
|
||||||
|
(defun my/gptel-org-heading-prompt ()
|
||||||
|
"Pošle aktuální org heading + obsah jako kontext do GPTel chatu."
|
||||||
|
(interactive)
|
||||||
|
(unless (derived-mode-p 'org-mode)
|
||||||
|
(user-error "Pouze v org-mode"))
|
||||||
|
(let* ((heading (org-get-heading t t t t))
|
||||||
|
(content (save-excursion
|
||||||
|
(org-back-to-heading t)
|
||||||
|
(let ((beg (point)))
|
||||||
|
(org-end-of-subtree t t)
|
||||||
|
(buffer-substring-no-properties beg (point))))))
|
||||||
|
(gptel content)
|
||||||
|
(message "GPTel: heading '%s' odeslán jako kontext" heading)))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix ("o g" . "GPTel")
|
||||||
|
:desc "Rewrite region" "r" #'my/gptel-rewrite-region
|
||||||
|
:desc "Org heading → GPTel" "p" #'my/gptel-org-heading-prompt)))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; GIT — git-link
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
(use-package! git-link
|
||||||
|
:defer t
|
||||||
|
:config
|
||||||
|
(setq git-link-default-branch "master")
|
||||||
|
;; Přidat podporu pro Gitea na git.apps.sukany.cz
|
||||||
|
(add-to-list 'git-link-remote-alist
|
||||||
|
'("git\\.apps\\.sukany\\.cz" git-link-gitea))
|
||||||
|
(add-to-list 'git-link-commit-remote-alist
|
||||||
|
'("git\\.apps\\.sukany\\.cz" git-link-commit-gitea)))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix ("g" . "git")
|
||||||
|
:desc "Copy git link" "y" #'git-link
|
||||||
|
:desc "Copy git link commit" "Y" #'git-link-commit))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
;;; FORGE — Gitea integrace
|
||||||
|
;;; ============================================================
|
||||||
|
;; Vyžaduje Gitea API token v ~/.authinfo:
|
||||||
|
;; machine git.apps.sukany.cz login daneel^forge password <TOKEN>
|
||||||
|
|
||||||
|
(after! forge
|
||||||
|
(add-to-list 'forge-alist
|
||||||
|
'("git.apps.sukany.cz" "git.apps.sukany.cz/api/v1" "git.apps.sukany.cz" forge-gitea-repository)))
|
||||||
|
|||||||
2
init.el
2
init.el
@@ -53,7 +53,7 @@
|
|||||||
(eval +overlay)
|
(eval +overlay)
|
||||||
lookup
|
lookup
|
||||||
(lsp +eglot) ;; <- pro “chytrý” completion přes CAPF
|
(lsp +eglot) ;; <- pro “chytrý” completion přes CAPF
|
||||||
magit
|
(magit +forge)
|
||||||
make
|
make
|
||||||
pdf
|
pdf
|
||||||
tmux
|
tmux
|
||||||
|
|||||||
15
packages.el
15
packages.el
@@ -74,3 +74,18 @@
|
|||||||
(package! org-pandoc-import
|
(package! org-pandoc-import
|
||||||
:recipe (:host github :repo "tecosaur/org-pandoc-import"))
|
:recipe (:host github :repo "tecosaur/org-pandoc-import"))
|
||||||
|
|
||||||
|
;; Navigation
|
||||||
|
(package! link-hint)
|
||||||
|
|
||||||
|
;; Writing
|
||||||
|
(package! olivetti)
|
||||||
|
|
||||||
|
;; Org enhancements
|
||||||
|
(package! org-modern)
|
||||||
|
(package! org-fragtog)
|
||||||
|
(package! org-super-agenda)
|
||||||
|
(package! org-noter)
|
||||||
|
|
||||||
|
;; Git
|
||||||
|
(package! git-link)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user