aboutsummaryrefslogtreecommitdiff
path: root/home-manager/programs/emacs/config.org
diff options
context:
space:
mode:
authorspl3g <spleefer6@yandex.ru>2023-11-29 00:22:23 +0300
committerspl3g <spleefer6@yandex.ru>2023-11-29 00:22:23 +0300
commit2fcdab89e98354f5a69cfe1c3dfa23e9d04f60b8 (patch)
treef3a80376fddcf87c86c72a327ba4ba103900fd7b /home-manager/programs/emacs/config.org
parentddd3490dfb592417163e801994a60854dac135fe (diff)
update configs
Diffstat (limited to 'home-manager/programs/emacs/config.org')
-rw-r--r--home-manager/programs/emacs/config.org401
1 files changed, 236 insertions, 165 deletions
diff --git a/home-manager/programs/emacs/config.org b/home-manager/programs/emacs/config.org
index a21da11..3370e88 100644
--- a/home-manager/programs/emacs/config.org
+++ b/home-manager/programs/emacs/config.org
@@ -7,7 +7,9 @@
* Table Of Contents :toc:
- [[#progs-to-load-first][Progs to load first]]
+ - [[#optimise-gc][Optimise gc]]
- [[#use-package][use-package]]
+ - [[#save-history][Save history]]
- [[#meow-mode][Meow mode]]
- [[#general-keybindings][General keybindings]]
- [[#gui-tweaks][GUI tweaks]]
@@ -31,28 +33,39 @@
- [[#better-ux][Better UX]]
- [[#vertico][Vertico]]
- [[#consult][Consult]]
- - [[#treemacs][Treemacs]]
- [[#pairs][Pairs]]
- [[#debugging][Debugging]]
- [[#move-lines][Move lines]]
- [[#truncate-lines][Truncate lines]]
-- [[#eat-terminal][EAT terminal]]
+ - [[#no-littering][No littering]]
+ - [[#rainbow-delimiters][Rainbow delimiters]]
+ - [[#crux][Crux]]
+- [[#eat-terminal][Eat terminal]]
- [[#eat][Eat]]
+ - [[#eat-toggle][Eat-toggle]]
+ - [[#eat-modes][Eat modes]]
- [[#lsp][LSP]]
- [[#languages][Languages]]
- [[#corfu][Corfu]]
- [[#flycheck][Flycheck]]
- [[#tree-sitter][Tree-sitter]]
- [[#snippets][Snippets]]
+- [[#dired][Dired]]
+ - [[#bindings][Bindings]]
- [[#additional-apps][Additional apps]]
- [[#telegram-lol][Telegram lol]]
- [[#magit][Magit]]
- [[#exwm][EXWM]]
-- [[#dired][Dired]]
- - [[#bindings][Bindings]]
- - [[#icons-1][Icons]]
+ - [[#jupyter][Jupyter]]
+ - [[#orgnote][Orgnote]]
+ - [[#codeium][Codeium]]
+- [[#runtime-performance][Runtime Performance]]
* Progs to load first
+** Optimise gc
+#+begin_src emacs-lisp
+ (setq gc-cons-threshold (* 50 1000 1000))
+#+end_src
** use-package
#+begin_src emacs-lisp
(require 'use-package)
@@ -60,6 +73,10 @@
(setq use-package-always-ensure t
use-package-expand-minimally t))
#+end_src
+** Save history
+#+begin_src emacs-lisp
+ (savehist-mode 1)
+#+end_src
** Meow mode
#+begin_src emacs-lisp
(use-package meow
@@ -190,12 +207,12 @@
"fc" '((lambda () (interactive) (find-file "~/.nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config")
"fu" '(sudo-edit-find-file :wk "Sudo find file")
"fU" '(sudo-edit :wk "Sudo edit file")
- "l" '(lsp-keymap-prefix :wk "LSP")
;; Opening.. things
"o" '(:ignore t)
- "ot" '(eat-toggle :wk "Eat terminal")))
+ "ot" '(eat-toggle :wk "Eat terminal")
+ "om" '(magit-status :wk "Magit")))
+
#+end_src
-
* GUI tweaks
** Disable gui shit
#+begin_src emacs-lisp
@@ -228,17 +245,16 @@
** Display line numbers
#+begin_src emacs-lisp
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
-(add-hook 'prog-mode-hook 'visual-line-mode)
+(visual-line-mode 1)
#+end_src
** Theme
#+begin_src emacs-lisp
-(use-package autothemer)
(use-package catppuccin-theme
:ensure t
:config
(load-theme 'catppuccin t)
- (setq catppuccin-flavor 'mocha)
+ (setq catppuccin-flavor 'macchiato)
(catppuccin-reload))
#+end_src
@@ -248,16 +264,29 @@
:ensure t
:if (display-graphic-p))
#+end_src
-
** Modeline
#+begin_src emacs-lisp
- (use-package doom-modeline
- :init (doom-modeline-mode 1)
+ (use-package mood-line
+
+ ;; Enable mood-line
:config
- (setq doom-modeline-height 35 ;; sets modeline height
- doom-modeline-bar-width 5 ;; sets right bar width
- doom-modeline-persp-name t ;; adds perspective name to modeline
- doom-modeline-persp-icon t)) ;; adds folder icon next to persp name
+ (mood-line-mode)
+ :custom
+ (mood-line-meow-state-alist
+ '((normal "N" . mood-line-meow-normal)
+ (insert "I" . mood-line-meow-insert)
+ (keypad "K" . mood-line-meow-keypad)
+ (beacon "B" . mood-line-meow-beacon)
+ (motion "M" . mood-line-meow-motion)))
+ (mood-line-glyph-alist mood-line-glyphs-fira-code)
+ :custom-face
+ (mood-line-meow-beacon ((t (:foreground "#f9e2af" :weight bold))))
+ (mood-line-meow-insert ((t (:foreground "#a6e3a1" :weight bold))))
+ (mood-line-meow-keypad ((t (:foreground "#cba6f7" :weight bold))))
+ (mood-line-meow-motion ((t (:foreground "#fab387" :weight bold))))
+ (mood-line-meow-normal ((t (:weight bold))))
+ (mode-line-inactive ((t (:box (:line-width (2 . 6) :color "#11111b") :inverse-video nil :foreground "#6c7086" :background "#11111b"))))
+ (mode-line ((t (:box (:line-width (2 . 6) :color "#181825") :background "#181825")))))
#+end_src
** Smooth scroll
@@ -305,23 +334,25 @@
** Enabling toc
#+begin_src emacs-lisp
(use-package toc-org
- :init (add-hook 'org-mode-hook 'toc-org-enable))
+ :hook (org-mode-hook . toc-org-mode))
#+end_src
** Org bullets
#+begin_src emacs-lisp
(use-package org-bullets
- :init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
+ :hook (org-mode-hook . (lambda () (org-bullets-mode 1))))
#+end_src
** Auto-tangle
#+begin_src emacs-lisp
- (use-package org-auto-tangle
- :init (add-hook 'org-mode-hook 'org-auto-tangle-mode))
+ (use-package org-auto-tangle
+ :config
+ (add-hook 'org-mode-hook 'org-auto-tangle-mode))
#+end_src
** Org-download
#+begin_src emacs-lisp
- (use-package org-download
- :hook (dired-mode-hook . org-download-enable))
+ ;; (use-package org-download
+ ;; :hook
+ ;; (dired-mode-hook . org-download-enable))
#+end_src
** Direnv
#+begin_src emacs-lisp
@@ -332,15 +363,17 @@
* Better UX
** Vertico
#+begin_src emacs-lisp
- (use-package vertico
- :init
- (vertico-mode)
- :bind (:map vertico-map
- ("M-j" . vertico-next)
- ("M-k" . vertico-previous))
- :config
- (savehist-mode 1))
- (use-package emacs
+ (use-package vertico
+ :init
+ (vertico-mode)
+ :bind (:map vertico-map
+ ("M-j" . vertico-next)
+ ("M-k" . vertico-previous)
+ ("RET" . vertico-directory-enter)
+ ("DEL" . vertico-directory-delete-char)
+ ("M-DEL" . vertico-directory-delete-word)))
+
+ (use-package emacs
:init
;; Add prompt indicator to `completing-read-multiple'.
;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.
@@ -378,17 +411,15 @@
#+begin_src emacs-lisp
(use-package marginalia
:bind (:map minibuffer-local-map
- ("M-A" . marginalia-cycle))
+ ("M-A" . marginalia-cycle))
:init
(marginalia-mode))
#+end_src
** Consult
#+begin_src emacs-lisp
- (use-package consult
+ (use-package consult
;; Replace bindings. Lazily loaded due by `use-package'.
:bind (;; C-c bindings in `mode-specific-map'
- ("C-c M-x" . consult-mode-command)
- ("C-c h" . consult-history)
("C-c k" . consult-kmacro)
("C-c m" . consult-man)
("C-c i" . consult-info)
@@ -398,7 +429,6 @@
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
- ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump
("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer
;; Custom M-# bindings for fast register access
("M-#" . consult-register-load)
@@ -408,20 +438,14 @@
("M-y" . consult-yank-pop) ;; orig. yank-pop
;; M-g bindings in `goto-map'
("M-g e" . consult-compile-error)
- ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
+ ("M-g f" . consult-flycheck) ;; Alternative: consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g o" . consult-outline) ;; Alternative: consult-org-heading
- ("M-g m" . consult-mark)
- ("M-g k" . consult-global-mark)
- ("M-g i" . consult-imenu)
- ("M-g I" . consult-imenu-multi)
;; M-s bindings in `search-map'
- ("M-s d" . consult-find)
- ("M-s D" . consult-locate)
+ ("M-s d" . consult-fd)
("M-s g" . consult-grep)
("M-s G" . consult-git-grep)
- ("M-s r" . consult-ripgrep)
("M-s l" . consult-line)
("M-s L" . consult-line-multi)
("M-s k" . consult-keep-lines)
@@ -434,9 +458,8 @@
("M-s l" . consult-line) ;; needed by consult-line to detect isearch
("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch
;; Minibuffer history
- :map minibuffer-local-map
- ("M-s" . consult-history) ;; orig. next-matching-history-element
- ("M-r" . consult-history)) ;; orig. previous-matching-history-element
+ :map eshell-mode-map
+ ("M-r" . consult-history))
;; Enable automatic preview at point in the *Completions* buffer. This is
;; relevant when you use the default completion UI.
@@ -455,10 +478,6 @@
;; This adds thin lines, sorting and hides the mode line of the window.
(advice-add #'register-preview :override #'consult-register-window)
- ;; Use Consult to select xref locations with preview
- (setq xref-show-xrefs-function #'consult-xref
- xref-show-definitions-function #'consult-xref)
-
;; Configure other variables and modes in the :config section,
;; after lazily loading the package.
:config
@@ -475,7 +494,7 @@
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file)
- ;; :preview-key "M-."
+ ;; :preview-key "M-."
;; Optionally configure the narrowing key.
;; Both < and C-+ work reasonably well.
@@ -487,33 +506,19 @@
;; By default `consult-project-function' uses `project-root' from project.el.
;; Optionally configure a different project root function.
- ;;;; 1. project.el (the default)
+ ;;;; 1. project.el (the default)
;; (setq consult-project-function #'consult--default-project--function)
- ;;;; 2. vc.el (vc-root-dir)
+ ;;;; 2. vc.el (vc-root-dir)
;; (setq consult-project-function (lambda (_) (vc-root-dir)))
- ;;;; 3. locate-dominating-file
+ ;;;; 3. locate-dominating-file
;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git")))
- ;;;; 4. projectile.el (projectile-project-root)
+ ;;;; 4. projectile.el (projectile-project-root)
;; (autoload 'projectile-project-root "projectile")
;; (setq consult-project-function (lambda (_) (projectile-project-root)))
- ;;;; 5. No project support
+ ;;;; 5. No project support
;; (setq consult-project-function nil)
)
#+end_src
-** Treemacs
-#+begin_src emacs-lisp
- (use-package treemacs
- :config
- (setq treemacs-no-png-images t))
-#+end_src
-*** Treemacs evil
-#+begin_src emacs-lisp
- (use-package treemacs-evil)
-#+end_src
-*** Treemacs all the icons
-#+begin_src emacs-lisp
- (use-package treemacs-all-the-icons)
-#+end_src
** Pairs
#+begin_src emacs-lisp
(use-package smartparens
@@ -538,9 +543,6 @@
:pre-handlers '(:rem sp-ruby-pre-handler)
:post-handlers '(:rem sp-ruby-post-handler))
- ;; Don't eagerly escape Swift style string interpolation
- (sp-local-pair 'swift-mode "\\(" ")" :when '(sp-in-string-p))
-
;; Don't do square-bracket space-expansion where it doesn't make sense to
(sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode)
"[" nil :post-handlers '(:rem ("| " "SPC")))
@@ -564,16 +566,15 @@
:post-handlers '(("| " "SPC")
(" | " "*")
("|[i]\n[i]" "RET"))))
- ;; (use-package parinfer-rust-mode
- ;; :hook (lisp-mode-hook . parinfer-rust-mode))
- ;; (electric-pair-mode 1)
#+end_src
+
** Debugging
#+begin_src emacs-lisp
- (use-package dap-mode
- :config
- (require 'dap-python)
- (setq dap-python-debugger 'debugpy))
+ ;; (use-package dap-mode
+ ;; :defer t
+ ;; :config
+ ;; (require 'dap-python)
+ ;; (setq dap-python-debugger 'debugpy))
#+end_src
** Move lines
#+begin_src emacs-lisp
@@ -583,17 +584,29 @@
#+end_src
** Truncate lines
#+begin_src emacs-lisp
- (set-default 'truncate-lines t)
+ (global-visual-line-mode t)
+#+end_src
+** No littering
+#+begin_src emacs-lisp
+ (use-package no-littering)
+#+end_src
+** Rainbow delimiters
+#+begin_src emacs-lisp
+ (use-package rainbow-delimiters
+ :hook (prog-mode . rainbow-delimiters-mode))
+#+end_src
+** Crux
+#+begin_src emacs-lisp
+ (use-package crux)
#+end_src
-* EAT terminal
+* Eat terminal
** Eat
#+begin_src emacs-lisp
- (use-package eat
- :custom
- (eat-semi-char-non-bound-keys
- '(seq-difference eat-semi-char-non-bound-keys '([C-left] [C-right]))))
+ (use-package eat
+ :custom
+ (eat-enable-auto-line-mode t))
#+end_src
-*** Eat-toggle
+** Eat-toggle
#+begin_src emacs-lisp
(defun eat-toggle()
"Open eat terminal as a popup."
@@ -609,11 +622,31 @@
(unless (derived-mode-p 'eat-mode)
(eat))))))
#+end_src
+** Eat modes
+#+begin_src emacs-lisp
+ ;; (defun eat-modes()
+ ;; (cond
+ ;; ((and (eq major-mode 'eat-mode) (member 'meow-normal-mode local-minor-modes))
+ ;; (eat-emacs-mode))
+ ;; ((and (eq major-mode 'eat-mode) (member 'meow-insert-mode local-minor-modes))
+ ;; (eat-semi-char-mode))))
+ ;; (add-hook 'meow-normal-mode-hook #'eat-modes)
+ ;; (add-hook 'meow-insert-mode-hook #'eat-modes)
+#+end_src
+** Fish completion
+#+begin_src emacs-lisp
+ (use-package fish-completion
+ :config
+ (global-fish-completion-mode))
+#+end_src
+** Eshell
+#+begin_src emacs-lisp
+#+end_src
* LSP
#+begin_src emacs-lisp
(use-package lsp-mode
:custom
- (lsp-completion-provider :none)
+ (lsp-completion-provider :none) ;; we use Corfu!
:init
(defun my/orderless-dispatch-flex-first (_pattern index _total)
@@ -623,10 +656,15 @@
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
'(orderless)))
+ ;; Optionally configure the first word as flex filtered.
(add-hook 'orderless-style-dispatchers #'my/orderless-dispatch-flex-first nil 'local)
- (add-to-list 'completion-at-point-functions (cape-capf-buster #'lsp-completion-at-point))
+
+ ;; Optionally configure the cape-capf-buster.
:hook
+ (rust-mode-hook . lsp)
+ (lsp-mode-hook . (lambda ()
+ (setq-local completion-at-point-functions (list (cape-capf-buster #'lsp-completion-at-point)))))
(lsp-completion-mode . my/lsp-mode-setup-completion))
#+end_src
** Languages
@@ -641,34 +679,17 @@
#+end_src
*** Rust
#+begin_src emacs-lisp
- (use-package rustic
- :ensure
- :bind (:map rustic-mode-map
- ("M-j" . lsp-ui-imenu)
- ("M-?" . lsp-find-references)
- ("C-c C-c l" . flycheck-list-errors)
- ("C-c C-c a" . lsp-execute-code-action)
- ("C-c C-c r" . lsp-rename)
- ("C-c C-c q" . lsp-workspace-restart)
- ("C-c C-c Q" . lsp-workspace-shutdown)
- ("C-c C-c s" . lsp-rust-analyzer-status))
- :config
- ;; uncomment for less flashiness
- ;; (setq lsp-eldoc-hook nil)
- ;; (setq lsp-enable-symbol-highlighting nil)
- ;; (setq lsp-signature-auto-activate nil)
-
- ;; comment to disable rustfmt on save
- (setq rustic-format-on-save t))
+ (use-package rust-mode
+ :mode "\\.rs\\'")
(use-package flycheck-rust
:config
(with-eval-after-load 'rust-mode
- (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))
+ (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))
#+end_src
*** Fish
#+begin_src emacs-lisp
(use-package fish-mode
- :mode "(.fish)$")
+ :mode "\\.fish\\'")
#+end_src
*** Nix
#+begin_src emacs-lisp
@@ -684,25 +705,21 @@
:ensure nix-mode
:commands (nix-repl))
#+end_src
-*** Yuck
-#+begin_src emacs-lisp
- (use-package yuck-mode)
-#+end_src
*** Web
#+begin_src emacs-lisp
- (use-package web-mode
- :config
- (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
- (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode)))
+ (use-package web-mode
+ :mode
+ ("\\.phtml\\'"
+ "\\.tpl\\.php\\'"
+ "\\.[agj]sp\\'"
+ "\\.as[cp]x\\'"
+ "\\.erb\\'"
+ "\\.mustache\\'"
+ "\\.djhtml\\'"))
#+end_src
*** JavaScript
#+begin_src emacs-lisp
- (use-package js2-mode)
+ (use-package js2-mode)
#+end_src
** Corfu
#+begin_src emacs-lisp
@@ -711,6 +728,7 @@
(corfu-cycle t)
(corfu-preselect 'prompt)
(corfu-auto t)
+ (corfu-popupinfo-delay 0.0)
:bind
(:map corfu-map
("TAB" . corfu-next)
@@ -719,7 +737,11 @@
([backtab] . corfu-previous))
:init
- (global-corfu-mode))
+ (global-corfu-mode)
+ (corfu-history-mode)
+ (corfu-popupinfo-mode)
+ :config
+ (add-to-list 'savehist-additional-variables 'corfu-history))
(use-package emacs
:init
(setq completion-cycle-threshold 3)
@@ -731,31 +753,30 @@
#+end_src
*** Cape
#+begin_src emacs-lisp
- (use-package cape
- ;; Bind dedicated completion commands
- :bind (("C-c p p" . completion-at-point) ;; capf
- ("C-c p t" . complete-tag) ;; etags
- ("C-c p d" . cape-dabbrev) ;; or dabbrev-completion
- ("C-c p h" . cape-history)
- ("C-c p f" . cape-file)
- ("C-c p k" . cape-keyword)
- ("C-c p s" . cape-elisp-symbol)
- ("C-c p e" . cape-elisp-block)
- ("C-c p a" . cape-abbrev)
- ("C-c p l" . cape-line)
- ("C-c p w" . cape-dict)
- ("C-c p :" . cape-emoji))
- :init
- (add-to-list 'completion-at-point-functions #'cape-dabbrev)
- (add-to-list 'completion-at-point-functions #'cape-file)
- (add-to-list 'completion-at-point-functions #'cape-elisp-block)
- )
+ (use-package cape
+ ;; Bind dedicated completion commands
+ ;; :bind (("C-c p p" . completion-at-point) ;; capf
+ ;; ("C-c p t" . complete-tag) ;; etags
+ ;; ("C-c p d" . cape-dabbrev) ;; or dabbrev-completion
+ ;; ("C-c p h" . cape-history)
+ ;; ("C-c p f" . cape-file)
+ ;; ("C-c p k" . cape-keyword)
+ ;; ("C-c p s" . cape-elisp-symbol)
+ ;; ("C-c p e" . cape-elisp-block)
+ ;; ("C-c p a" . cape-abbrev)
+ ;; ("C-c p l" . cape-line)
+ ;; ("C-c p w" . cape-dict)
+ ;; ("C-c p :" . cape-emoji))
+ :config
+ (add-to-list 'completion-at-point-functions #'cape-dabbrev)
+ (add-to-list 'completion-at-point-functions #'cape-file)
+ (add-to-list 'completion-at-point-functions #'cape-elisp-block)
+ )
#+end_src
-
** Flycheck
#+begin_src emacs-lisp
- (use-package flycheck
- :init (global-flycheck-mode))
+ (use-package flycheck
+ :init (global-flycheck-mode))
#+end_src
** Tree-sitter
#+begin_src emacs-lisp
@@ -771,9 +792,22 @@
#+end_src
** Snippets
#+begin_src emacs-lisp
- (use-package yasnippet
- :init (yas-global-mode))
- (use-package yasnippet-snippets)
+ ;; (use-package yasnippet
+ ;; :init (yas-global-mode))
+ ;; (use-package yasnippet-snippets)
+#+end_src
+* Dired
+** Bindings
+#+begin_src emacs-lisp
+ (use-package dirvish
+ :init
+ (dirvish-override-dired-mode)
+ :custom
+ (dired-listing-switches "-Al --group-directories-first")
+ :bind (:map dired-mode-map
+ ("h" . 'dired-up-directory)
+ ("l" . 'dired-find-file)
+ ("v" . 'meow-visit)))
#+end_src
* Additional apps
** Telegram lol
@@ -792,20 +826,57 @@
;; (require 'exwm-config)
;; (exwm-config-example)
#+end_src
-* Dired
-** Bindings
+** Jupyter
#+begin_src emacs-lisp
- (use-package dired
- :ensure nil
- :custom ((dired-listing-switches "-agho --group-directories-first"))
- :bind (:map dired-mode-map
- ("h" . 'dired-up-directory)
- ("l" . 'dired-find-file)
- ("v" . 'meow-visit)))
+ ;; (use-package code-cells)
#+end_src
-** Icons
+** Orgnote
#+begin_src emacs-lisp
- (use-package all-the-icons-dired
- :init (add-hook 'dired-mode-hook 'all-the-icons-dired-mode))
+ ;; (use-package orgnote
+ ;; :defer t)
#+end_src
+** Codeium
+#+begin_src emacs-lisp
+ ;; (use-package codeium
+ ;; :init
+ ;; ;; use globally
+ ;; (add-to-list 'completion-at-point-functions #'codeium-completion-at-point)
+ ;; :config
+ ;; (setq use-dialog-box nil) ;; do not use popup boxes
+
+ ;; ;; if you don't want to use customize to save the api-key
+ ;; ;; (setq codeium/metadata/api_key "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
+
+ ;; ;; get codeium status in the modeline
+ ;; (setq codeium-mode-line-enable
+ ;; (lambda (api) (not (memq api '(CancelRequest Heartbeat AcceptCompletion)))))
+ ;; (add-to-list 'mode-line-format '(:eval (car-safe codeium-mode-line)) t)
+ ;; ;; alternatively for a more extensive mode-line
+ ;; ;; (add-to-list 'mode-line-format '(-50 "" codeium-mode-line) t)
+ ;; ;; use M-x codeium-diagnose to see apis/fields that would be sent to the local language server
+ ;; (setq codeium-api-enabled
+ ;; (lambda (api)
+ ;; (memq api '(GetCompletions Heartbeat CancelRequest GetAuthToken RegisterUser auth-redirect AcceptCompletion))))
+ ;; ;; you can also set a config for a single buffer like this:
+ ;; ;; (add-hook 'python-mode-hook
+ ;; ;; (lambda ()
+ ;; ;; (setq-local codeium/editor_options/tab_size 4)))
+
+ ;; ;; You can overwrite all the codeium configs!
+ ;; ;; for example, we recommend limiting the string sent to codeium for better performance
+ ;; (defun my-codeium/document/text ()
+ ;; (buffer-substring-no-properties (max (- (point) 3000) (point-min)) (min (+ (point) 1000) (point-max))))
+ ;; ;; if you change the text, you should also change the cursor_offset
+ ;; ;; warning: this is measured by UTF-8 encoded bytes
+ ;; (defun my-codeium/document/cursor_offset ()
+ ;; (codeium-utf8-byte-length
+ ;; (buffer-substring-no-properties (max (- (point) 3000) (point-min)) (point))))
+ ;; (setq codeium/document/text 'my-codeium/document/text)
+ ;; (setq codeium/document/cursor_offset 'my-codeium/document/cursor_offset))
+#+end_src
+* Runtime Performance
+#+begin_src emacs-lisp
+ (setq gc-cons-threshold (* 2 1000 1000))
+ (setq read-process-output-max (* 1024 1024))
+#+end_src