* My doom config ** Appearance settings #+begin_src emacs-lisp (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 doom-theme 'doom-vibrant) (setq display-line-numbers-type 'relative) (setq org-directory "~/org/") #+end_src ** Plugins *** Yasnippet This enables the feature of auto-expanding snippets when matching the pattern #+begin_src emacs-lisp (after! yasnippet (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 #+begin_src emacs-lisp :tangle packages.el (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")))) #+end_src Fix the issue that backspace doesn't work on mac #+begin_src emacs-lisp (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")))) #+end_src *** Copilot #+begin_src emacs-lisp :tangle packages.el (package! copilot :recipe (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))) #+end_src Configuration #+begin_src emacs-lisp ;; 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)) :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 ** Lang *** Typst **** Tree-sitter #+begin_src emacs-lisp :tangle packages.el (package! typst-ts-mode :recipe (:host codeberg :repo "meow_king/typst-ts-mode")) #+end_src #+begin_src emacs-lisp (use-package! typst-ts-mode :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 `(,typst-ts-lsp-download-path "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")) #+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 :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)) #+end_src