From 4d35c7966c5a14e333e9904d97827cf74ca30579 Mon Sep 17 00:00:00 2001 From: Zelong Kuang Date: Mon, 17 Nov 2025 20:44:54 +1100 Subject: [PATCH] Live preview pane --- config.el | 158 ++++++++++++++++++++++--------- config.org | 262 ++++++++++++++++++++++++++++++++++------------------ init.el | 10 +- packages.el | 44 ++++----- 4 files changed, 315 insertions(+), 159 deletions(-) diff --git a/config.el b/config.el index cee552b..199ece9 100644 --- a/config.el +++ b/config.el @@ -1,62 +1,134 @@ (setq doom-font (font-spec :family "Maple Mono" :size 20)) (add-to-list 'default-frame-alist '(height . 53)) (add-to-list 'default-frame-alist '(width . 120)) -(setq catppuccin-flavor 'mocha) -(setq doom-theme 'catppuccin) +(setq catppuccin-flavor 'catppuccin) +(setq doom-theme 'modus-operandi-tinted) (setq display-line-numbers-type 'relative) (setq org-directory "~/org/") +(use-package! nano-modeline + :config + (add-hook 'prog-mode-hook #'nano-modeline-prog-mode) + (add-hook 'text-mode-hook #'nano-modeline-text-mode) + (add-hook 'org-mode-hook #'nano-modeline-org-mode) + (add-hook 'pdf-view-mode-hook #'nano-modeline-pdf-mode) + (add-hook 'mu4e-headers-mode-hook #'nano-modeline-mu4e-headers-mode) + (add-hook 'mu4e-view-mode-hook #'nano-modeline-mu4e-message-mode) + (add-hook 'elfeed-show-mode-hook #'nano-modeline-elfeed-entry-mode) + (add-hook 'elfeed-search-mode-hook #'nano-modeline-elfeed-search-mode) + (add-hook 'term-mode-hook #'nano-modeline-term-mode) + (add-hook 'xwidget-webkit-mode-hook #'nano-modeline-xwidget-mode) + (add-hook 'messages-buffer-mode-hook #'nano-modeline-message-mode) + (add-hook 'org-capture-mode-hook #'nano-modeline-org-capture-mode) + (add-hook 'org-agenda-mode-hook #'nano-modeline-org-agenda-mode) + (global-hide-mode-line-mode t)) + (use-package! yasnippet - :config - (defun my-yas-try-expanding-auto-snippets () - (when yas-minor-mode - (let ((yas-buffer-local-condition ''(require-snippet-condition . auto))) - (yas-expand)))) - (add-hook 'post-command-hook #'my-yas-try-expanding-auto-snippets) -) + :config + (defun my-yas-try-expanding-auto-snippets () + (when yas-minor-mode + (let ((yas-buffer-local-condition ''(require-snippet-condition . auto))) + (yas-expand)))) + (add-hook 'post-command-hook #'my-yas-try-expanding-auto-snippets) + ) (use-package! gptel - :config - (setq! gptel-api-key "e994f45f9b46cc8608bd2e9cd508417255514e96913b1764aab612512aa66449") - (setq gptel-model 'gpt-5) - (setq gptel-backend (gptel-make-gh-copilot "Copilot")) - (map! "M-s RET" #'gptel-send) - (map! "M-s m" #'gptel-menu) - ) + :config + (setq! gptel-api-key "e994f45f9b46cc8608bd2e9cd508417255514e96913b1764aab612512aa66449") + (setq gptel-model 'claude-sonnet-4.5) + (setq gptel-backend (gptel-make-gh-copilot "Copilot")) + (map! "M-s RET" #'gptel-send) + (map! "M-s m" #'gptel-menu) + ) (use-package! typst-ts-mode - :init - (add-hook 'typst-ts-mode-hook #'eglot-ensure) - :custom - ;; (typst-ts-watch-options "--open") - (typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) - (typst-ts-mode-enable-raw-blocks-highlight t) - :config - (keymap-set typst-ts-mode-map "C-c C-c" #'typst-ts-tmenu)) + :init + (add-hook 'typst-ts-mode-hook #'eglot-ensure) + :custom + ;; (typst-ts-watch-options "--open") + (typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) + (typst-ts-mode-enable-raw-blocks-highlight t) + :config + (keymap-set typst-ts-mode-map "C-c C-c" #'typst-ts-tmenu)) (with-eval-after-load 'eglot - (with-eval-after-load 'typst-ts-mode - (add-to-list 'eglot-server-programs - `((typst-ts-mode) . - ,(eglot-alternatives `(,"tinymist" - "typst-lsp")))))) + (with-eval-after-load 'typst-ts-mode + (add-to-list 'eglot-server-programs + `((typst-ts-mode) . + ,(eglot-alternatives `(,"tinymist" + "typst-lsp")))))) (use-package! websocket) (use-package! typst-preview - ;; :load-path "path/to/typst-preview.el" ;; if installed manually - :init - (setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated - ;; (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run + ;; :load-path "path/to/typst-preview.el" ;; if installed manually + :init + (setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated + (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run - :custom - (typst-preview-browser "default") ; this is the default option; other options are `eaf-browser' or `xwidget'. - (typst-preview-invert-colors "auto") ; invert colors depending on system theme - (typst-preview-executable "tinymist") ; path to tinymist binary (relative or absolute) - (typst-preview-partial-rendering t) ; enable partial rendering + :custom + (typst-preview-browser "default") ; this is the default option; other options are `eaf-browser' or `xwidget'. + (typst-preview-invert-colors "auto") ; invert colors depending on system theme + (typst-preview-executable "tinymist") ; path to tinymist binary (relative or absolute) + (typst-preview-partial-rendering t) ; enable partial rendering - :config - (define-key typst-preview-mode-map (kbd "C-c C-j") 'typst-preview-send-position) - (define-key typst-ts-mode-map (kbd "C-c C-l") #'typst-preview-mode)) + :config + (define-key typst-preview-mode-map (kbd "C-c C-j") 'typst-preview-send-position) + (define-key typst-ts-mode-map (kbd "C-c C-l") #'typst-preview-mode) + ) -(use-package! org - :hook (org-mode . org-latex-preview-mode)) +(use-package org-latex-preview + :config + ;; Increase preview width + (plist-put org-latex-preview-appearance-options + :page-width 0.8) + + (add-hook 'org-mode-hook 'org-latex-preview-mode) + + ;; ;; Block C-n, C-p etc from opening up previews when using `org-latex-preview-mode' + ;; (setq org-latex-preview-mode-ignored-commands + ;; '(next-line previous-line mwheel-scroll + ;; scroll-up-command scroll-down-command)) + + ;; ;; Enable consistent equation numbering + (setq org-latex-preview-numbered t) + + ;; Bonus: Turn on live previews. This shows you a live preview of a LaTeX + ;; fragment and updates the preview in real-time as you edit it. + ;; To preview only environments, set it to '(block edit-special) instead + (setq org-latex-preview-mode-display-live t) + + ;; More immediate live-previews -- the default delay is 1 second + (setq org-latex-preview-mode-update-delay 0) + + (defun my/org-latex-preview-uncenter (ov) + (overlay-put ov 'before-string nil)) + (defun my/org-latex-preview-recenter (ov) + (overlay-put ov 'before-string (overlay-get ov 'justify))) + (defun my/org-latex-preview-center (ov) + (save-excursion + (goto-char (overlay-start ov)) + (when-let* ((elem (org-element-context)) + ((or (eq (org-element-type elem) 'latex-environment) + (string-match-p "^\\\\\\[" (org-element-property :value elem)))) + (img (overlay-get ov 'display)) + (prop `(space :align-to (- center (0.55 . ,img)))) + (justify (propertize " " 'display prop 'face 'default))) + (overlay-put ov 'justify justify) + (overlay-put ov 'before-string (overlay-get ov 'justify))))) + (define-minor-mode org-latex-preview-center-mode + "Center equations previewed with `org-latex-preview'." + :global nil + (if org-latex-preview-center-mode + (progn + (add-hook 'org-latex-preview-overlay-open-functions + #'my/org-latex-preview-uncenter nil :local) + (add-hook 'org-latex-preview-overlay-close-functions + #'my/org-latex-preview-recenter nil :local) + (add-hook 'org-latex-preview-overlay-update-functions + #'my/org-latex-preview-center nil :local)) + (remove-hook 'org-latex-preview-overlay-close-functions + #'my/org-latex-preview-recenter) + (remove-hook 'org-latex-preview-overlay-update-functions + #'my/org-latex-preview-center) + (remove-hook 'org-latex-preview-overlay-open-functions + #'my/org-latex-preview-uncenter)))) diff --git a/config.org b/config.org index 8525e9e..fddc926 100644 --- a/config.org +++ b/config.org @@ -5,77 +5,100 @@ (setq doom-font (font-spec :family "Maple Mono" :size 20)) (add-to-list 'default-frame-alist '(height . 53)) (add-to-list 'default-frame-alist '(width . 120)) -(setq catppuccin-flavor 'mocha) -(setq doom-theme 'catppuccin) +(setq catppuccin-flavor 'catppuccin) +(setq doom-theme 'modus-operandi-tinted) (setq display-line-numbers-type 'relative) (setq org-directory "~/org/") #+end_src + *** Themes **** Catppuccin #+begin_src emacs-lisp :tangle packages.el (package! catppuccin-theme) #+end_src +*** Nano modeline +#+begin_src emacs-lisp :tangle packages.el +(package! nano-modeline) +#+end_src +#+begin_src emacs-lisp +(use-package! nano-modeline + :config + (add-hook 'prog-mode-hook #'nano-modeline-prog-mode) + (add-hook 'text-mode-hook #'nano-modeline-text-mode) + (add-hook 'org-mode-hook #'nano-modeline-org-mode) + (add-hook 'pdf-view-mode-hook #'nano-modeline-pdf-mode) + (add-hook 'mu4e-headers-mode-hook #'nano-modeline-mu4e-headers-mode) + (add-hook 'mu4e-view-mode-hook #'nano-modeline-mu4e-message-mode) + (add-hook 'elfeed-show-mode-hook #'nano-modeline-elfeed-entry-mode) + (add-hook 'elfeed-search-mode-hook #'nano-modeline-elfeed-search-mode) + (add-hook 'term-mode-hook #'nano-modeline-term-mode) + (add-hook 'xwidget-webkit-mode-hook #'nano-modeline-xwidget-mode) + (add-hook 'messages-buffer-mode-hook #'nano-modeline-message-mode) + (add-hook 'org-capture-mode-hook #'nano-modeline-org-capture-mode) + (add-hook 'org-agenda-mode-hook #'nano-modeline-org-agenda-mode) + (global-hide-mode-line-mode t)) +#+end_src ** Plugins *** Yasnippet Thisenables the feature of auto-expanding snippets when matching the pattern #+begin_src emacs-lisp (use-package! yasnippet - :config - (defun my-yas-try-expanding-auto-snippets () - (when yas-minor-mode - (let ((yas-buffer-local-condition ''(require-snippet-condition . auto))) - (yas-expand)))) - (add-hook 'post-command-hook #'my-yas-try-expanding-auto-snippets) -) + :config + (defun my-yas-try-expanding-auto-snippets () + (when yas-minor-mode + (let ((yas-buffer-local-condition ''(require-snippet-condition . auto))) + (yas-expand)))) + (add-hook 'post-command-hook #'my-yas-try-expanding-auto-snippets) + ) #+end_src *** Eat (deprecated) #+begin_src emacs-lisp :tangle no (package! eat - :recipe (:type git - :host codeberg - :repo "akib/emacs-eat" - :files ("*.el" ("term" "term/*.el") "*.texi" - "*.ti" ("terminfo/e" "terminfo/e/*") - ("terminfo/65" "terminfo/65/*") - ("integration" "integration/*") - (:exclude ".dir-locals.el" "*-tests.el")))) + :recipe (:type git + :host codeberg + :repo "akib/emacs-eat" + :files ("*.el" ("term" "term/*.el") "*.texi" + "*.ti" ("terminfo/e" "terminfo/e/*") + ("terminfo/65" "terminfo/65/*") + ("integration" "integration/*") + (:exclude ".dir-locals.el" "*-tests.el")))) #+end_src Fix the issue that backspace doesn't work on mac #+begin_src emacs-lisp :tangle no (after! eat - (when (eq system-type 'darwin) - (define-key eat-semi-char-mode-map (kbd "C-h") #'eat-self-input) - (define-key eat-semi-char-mode-map (kbd "") (kbd "C-h")))) + (when (eq system-type 'darwin) + (define-key eat-semi-char-mode-map (kbd "C-h") #'eat-self-input) + (define-key eat-semi-char-mode-map (kbd "") (kbd "C-h")))) #+end_src *** Copilot #+begin_src emacs-lisp :tangle no (package! copilot - :recipe (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))) + :recipe (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))) #+end_src Configuration #+begin_src emacs-lisp :tangle no ;; accept completion from copilot and fallback to company (use-package! copilot - :hook (prog-mode . copilot-mode) - :bind (:map copilot-completion-map - ("" . 'copilot-accept-completion) - ("TAB" . 'copilot-accept-completion) - ("C-TAB" . 'copilot-accept-completion-by-word) - ("C-" . 'copilot-accept-completion-by-word) - ("C-n" . 'copilot-next-completion) - ("C-p" . 'copilot-previous-completion)) + :hook (prog-mode . copilot-mode) + :bind (:map copilot-completion-map + ("" . 'copilot-accept-completion) + ("TAB" . 'copilot-accept-completion) + ("C-TAB" . 'copilot-accept-completion-by-word) + ("C-" . 'copilot-accept-completion-by-word) + ("C-n" . 'copilot-next-completion) + ("C-p" . 'copilot-previous-completion)) - :config - (add-to-list 'copilot-indentation-alist '(prog-mode 2)) - (add-to-list 'copilot-indentation-alist '(org-mode 2)) - (add-to-list 'copilot-indentation-alist '(text-mode 2)) - (add-to-list 'copilot-indentation-alist '(clojure-mode 2)) - (add-to-list 'copilot-indentation-alist '(emacs-lisp-mode 2))) + :config + (add-to-list 'copilot-indentation-alist '(prog-mode 2)) + (add-to-list 'copilot-indentation-alist '(org-mode 2)) + (add-to-list 'copilot-indentation-alist '(text-mode 2)) + (add-to-list 'copilot-indentation-alist '(clojure-mode 2)) + (add-to-list 'copilot-indentation-alist '(emacs-lisp-mode 2))) #+end_src *** LLM (gptel) @@ -85,13 +108,13 @@ Configuration #+begin_src emacs-lisp (use-package! gptel - :config - (setq! gptel-api-key "e994f45f9b46cc8608bd2e9cd508417255514e96913b1764aab612512aa66449") - (setq gptel-model 'gpt-5) - (setq gptel-backend (gptel-make-gh-copilot "Copilot")) - (map! "M-s RET" #'gptel-send) - (map! "M-s m" #'gptel-menu) - ) + :config + (setq! gptel-api-key "e994f45f9b46cc8608bd2e9cd508417255514e96913b1764aab612512aa66449") + (setq gptel-model 'claude-sonnet-4.5) + (setq gptel-backend (gptel-make-gh-copilot "Copilot")) + (map! "M-s RET" #'gptel-send) + (map! "M-s m" #'gptel-menu) + ) #+end_src ** Lang *** Typst @@ -102,50 +125,51 @@ Configuration #+begin_src emacs-lisp (use-package! typst-ts-mode - :init - (add-hook 'typst-ts-mode-hook #'eglot-ensure) - :custom - ;; (typst-ts-watch-options "--open") - (typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) - (typst-ts-mode-enable-raw-blocks-highlight t) - :config - (keymap-set typst-ts-mode-map "C-c C-c" #'typst-ts-tmenu)) + :init + (add-hook 'typst-ts-mode-hook #'eglot-ensure) + :custom + ;; (typst-ts-watch-options "--open") + (typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) + (typst-ts-mode-enable-raw-blocks-highlight t) + :config + (keymap-set typst-ts-mode-map "C-c C-c" #'typst-ts-tmenu)) #+end_src **** Tinymist (lsp) #+begin_src emacs-lisp (with-eval-after-load 'eglot - (with-eval-after-load 'typst-ts-mode - (add-to-list 'eglot-server-programs - `((typst-ts-mode) . - ,(eglot-alternatives `(,"tinymist" - "typst-lsp")))))) + (with-eval-after-load 'typst-ts-mode + (add-to-list 'eglot-server-programs + `((typst-ts-mode) . + ,(eglot-alternatives `(,"tinymist" + "typst-lsp")))))) #+end_src **** Live-preview #+begin_src emacs-lisp :tangle packages.el (package! typst-preview - :recipe (:host github :repo "havarddj/typst-preview.el")) + :recipe (:host github :repo "havarddj/typst-preview.el")) #+end_src ***** Config #+begin_src emacs-lisp (use-package! websocket) (use-package! typst-preview - ;; :load-path "path/to/typst-preview.el" ;; if installed manually - :init - (setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated - ;; (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run + ;; :load-path "path/to/typst-preview.el" ;; if installed manually + :init + (setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated + (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run - :custom - (typst-preview-browser "default") ; this is the default option; other options are `eaf-browser' or `xwidget'. - (typst-preview-invert-colors "auto") ; invert colors depending on system theme - (typst-preview-executable "tinymist") ; path to tinymist binary (relative or absolute) - (typst-preview-partial-rendering t) ; enable partial rendering + :custom + (typst-preview-browser "default") ; this is the default option; other options are `eaf-browser' or `xwidget'. + (typst-preview-invert-colors "auto") ; invert colors depending on system theme + (typst-preview-executable "tinymist") ; path to tinymist binary (relative or absolute) + (typst-preview-partial-rendering t) ; enable partial rendering - :config - (define-key typst-preview-mode-map (kbd "C-c C-j") 'typst-preview-send-position) - (define-key typst-ts-mode-map (kbd "C-c C-l") #'typst-preview-mode)) + :config + (define-key typst-preview-mode-map (kbd "C-c C-j") 'typst-preview-send-position) + (define-key typst-ts-mode-map (kbd "C-c C-l") #'typst-preview-mode) + ) #+end_src *** Latex @@ -155,34 +179,92 @@ Configuration #+end_src *** Org +1. delete all org-* packages from emacs (can be done by deleting folders in .local/straight) +2. delete eln-cache +3. doom sync -u #+begin_src emacs-lisp :tangle packages.el (package! org :recipe (:host nil :repo "https://git.tecosaur.net/mirrors/org-mode.git" :remote "mirror" :fork - (:host nil :repo "https://git.tecosaur.net/tec/org-mode.git" :branch "dev" :remote "tecosaur") - :files - (:defaults "etc") - :build t :pre-build - (with-temp-file "org-version.el" - (require 'lisp-mnt) - (let - ((version - (with-temp-buffer - (insert-file-contents "lisp/org.el") - (lm-header "version"))) - (git-version - (string-trim - (with-temp-buffer - (call-process "git" nil t nil "rev-parse" "--short" "HEAD") - (buffer-string))))) - (insert - (format "(defun org-release () \"The release version of Org.\" %S)\n" version) - (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) - "(provide 'org-version)\n")))) + (:host nil :repo "https://git.tecosaur.net/tec/org-mode.git" :branch "dev" :remote "tecosaur") + :files + (:defaults "etc") + :build t :pre-build + (with-temp-file "org-version.el" + (require 'lisp-mnt) + (let + ((version + (with-temp-buffer + (insert-file-contents "lisp/org.el") + (lm-header "version"))) + (git-version + (string-trim + (with-temp-buffer + (call-process "git" nil t nil "rev-parse" "--short" "HEAD") + (buffer-string))))) + (insert + (format "(defun org-release () \"The release version of Org.\" %S)\n" version) + (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) + "(provide 'org-version)\n")))) :pin nil) (unpin! org) #+end_src #+begin_src emacs-lisp -(use-package! org - :hook (org-mode . org-latex-preview-mode)) + +(use-package org-latex-preview + :config + ;; Increase preview width + (plist-put org-latex-preview-appearance-options + :page-width 0.8) + + (add-hook 'org-mode-hook 'org-latex-preview-mode) + + ;; ;; Block C-n, C-p etc from opening up previews when using `org-latex-preview-mode' + ;; (setq org-latex-preview-mode-ignored-commands + ;; '(next-line previous-line mwheel-scroll + ;; scroll-up-command scroll-down-command)) + + ;; ;; Enable consistent equation numbering + (setq org-latex-preview-numbered t) + + ;; Bonus: Turn on live previews. This shows you a live preview of a LaTeX + ;; fragment and updates the preview in real-time as you edit it. + ;; To preview only environments, set it to '(block edit-special) instead + (setq org-latex-preview-mode-display-live t) + + ;; More immediate live-previews -- the default delay is 1 second + (setq org-latex-preview-mode-update-delay 0) + + (defun my/org-latex-preview-uncenter (ov) + (overlay-put ov 'before-string nil)) + (defun my/org-latex-preview-recenter (ov) + (overlay-put ov 'before-string (overlay-get ov 'justify))) + (defun my/org-latex-preview-center (ov) + (save-excursion + (goto-char (overlay-start ov)) + (when-let* ((elem (org-element-context)) + ((or (eq (org-element-type elem) 'latex-environment) + (string-match-p "^\\\\\\[" (org-element-property :value elem)))) + (img (overlay-get ov 'display)) + (prop `(space :align-to (- center (0.55 . ,img)))) + (justify (propertize " " 'display prop 'face 'default))) + (overlay-put ov 'justify justify) + (overlay-put ov 'before-string (overlay-get ov 'justify))))) + (define-minor-mode org-latex-preview-center-mode + "Center equations previewed with `org-latex-preview'." + :global nil + (if org-latex-preview-center-mode + (progn + (add-hook 'org-latex-preview-overlay-open-functions + #'my/org-latex-preview-uncenter nil :local) + (add-hook 'org-latex-preview-overlay-close-functions + #'my/org-latex-preview-recenter nil :local) + (add-hook 'org-latex-preview-overlay-update-functions + #'my/org-latex-preview-center nil :local)) + (remove-hook 'org-latex-preview-overlay-close-functions + #'my/org-latex-preview-recenter) + (remove-hook 'org-latex-preview-overlay-update-functions + #'my/org-latex-preview-center) + (remove-hook 'org-latex-preview-overlay-open-functions + #'my/org-latex-preview-uncenter)))) #+end_src diff --git a/init.el b/init.el index 3bcf1d1..f4096e2 100644 --- a/init.el +++ b/init.el @@ -32,19 +32,19 @@ doom ; what makes DOOM look the way it does doom-dashboard ; a nifty splash screen for Emacs ;;doom-quit ; DOOM quit-message prompts when you quit Emacs - (emoji +unicode) ; 🙂 + ;; (emoji +unicode) ; 🙂 hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW ;; indent-guides ; highlighted indent columns ligatures ; ligatures and symbols to make your code pretty again ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API + ;; modeline ; snazzy, Atom-inspired modeline, plus API ;;nav-flash ; blink cursor line after big motions ;;neotree ; a project drawer, like NERDTree for vim ophints ; highlight the region an operation acts on (popup +defaults) ; tame sudden yet inevitable temporary windows smooth-scroll ; So smooth you won't believe it's not butter - tabs ; a tab bar for Emacs - treemacs ; a project drawer, like neotree but cooler + ;; tabs ; a tab bar for Emacs + ;; treemacs ; a project drawer, like neotree but cooler unicode ; extended unicode support for various languages (vc-gutter +pretty) ; vcs diff in the fringe vi-tilde-fringe ; fringe tildes to mark beyond EOB @@ -99,7 +99,7 @@ (eval +overlay) ; run code, run (also, repls) lookup ; navigate your code and its documentation ;;llm ; when I said you needed friends, I didn't mean... - (lsp +eglot +peek +booster) ; M-x vscode + (lsp +eglot +booster) ; M-x vscode magit ; a git porcelain for Emacs make ; run make tasks from Emacs ;;pass ; password manager for nerds diff --git a/packages.el b/packages.el index 0960ebe..5d02a01 100644 --- a/packages.el +++ b/packages.el @@ -1,33 +1,35 @@ (package! catppuccin-theme) +(package! nano-modeline) + (package! gptel :recipe (:nonrecursive t)) (package! typst-ts-mode :recipe (:host codeberg :repo "meow_king/typst-ts-mode")) (package! typst-preview - :recipe (:host github :repo "havarddj/typst-preview.el")) + :recipe (:host github :repo "havarddj/typst-preview.el")) (package! org :recipe (:host nil :repo "https://git.tecosaur.net/mirrors/org-mode.git" :remote "mirror" :fork - (:host nil :repo "https://git.tecosaur.net/tec/org-mode.git" :branch "dev" :remote "tecosaur") - :files - (:defaults "etc") - :build t :pre-build - (with-temp-file "org-version.el" - (require 'lisp-mnt) - (let - ((version - (with-temp-buffer - (insert-file-contents "lisp/org.el") - (lm-header "version"))) - (git-version - (string-trim - (with-temp-buffer - (call-process "git" nil t nil "rev-parse" "--short" "HEAD") - (buffer-string))))) - (insert - (format "(defun org-release () \"The release version of Org.\" %S)\n" version) - (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) - "(provide 'org-version)\n")))) + (:host nil :repo "https://git.tecosaur.net/tec/org-mode.git" :branch "dev" :remote "tecosaur") + :files + (:defaults "etc") + :build t :pre-build + (with-temp-file "org-version.el" + (require 'lisp-mnt) + (let + ((version + (with-temp-buffer + (insert-file-contents "lisp/org.el") + (lm-header "version"))) + (git-version + (string-trim + (with-temp-buffer + (call-process "git" nil t nil "rev-parse" "--short" "HEAD") + (buffer-string))))) + (insert + (format "(defun org-release () \"The release version of Org.\" %S)\n" version) + (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) + "(provide 'org-version)\n")))) :pin nil) (unpin! org)