aboutsummaryrefslogtreecommitdiff
path: root/.config/emacs/archive
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2026-07-05 01:19:30 -0400
committerJack Jamison <jackqjamison@gmail.com>2026-07-05 01:19:30 -0400
commitbdf9a71ab7baa2b1de9abcfd5df1a9107a55d141 (patch)
treec4524e6c41aa5107211103401dabfaefc81aa882 /.config/emacs/archive
parentfe3984f541bd32bdfa418afb305b614176b55ca0 (diff)
add a bunch of emacs packages HELP
Diffstat (limited to '.config/emacs/archive')
-rw-r--r--.config/emacs/archive/oldinit.el634
1 files changed, 634 insertions, 0 deletions
diff --git a/.config/emacs/archive/oldinit.el b/.config/emacs/archive/oldinit.el
new file mode 100644
index 0000000..4c7fe6b
--- /dev/null
+++ b/.config/emacs/archive/oldinit.el
@@ -0,0 +1,634 @@
+;; initialize package.el
+(require 'package)
+(setq package-archives
+ '(("org" . "https://orgmode.org/elpa/")
+ ("gnu" . "https://elpa.gnu.org/packages/")
+ ("melpa" . "https://melpa.org/packages/")
+ ("nongnu" . "https://elpa.nongnu.org/nongnu/")))
+(setq package-archive-priorities
+ '(("gnu" . 10)))
+(package-initialize)
+
+(unless package-archive-contents
+ (package-refresh-contents))
+
+;; ensure by default, use ensure nil when built in
+(setq use-package-always-ensure t)
+
+;; == custom lisp
+(add-to-list 'load-path (concat (getenv "HOME") "/.config/emacs/lisp"))
+
+;; == greener emacs
+(use-package no-littering
+ :ensure nil ;; it's in lisp folder
+ :demand t)
+
+;; garbage collection improvement
+(defun my-minibuffer-setup-hook ()
+ (setq gc-cons-threshold most-positive-fixnum))
+(defun my-minibuffer-exit-hook ()
+ (setq gc-cons-threshold 800000000))
+(add-hook 'minibuffer-setup-hook #'my-minibuffer-setup-hook)
+(add-hook 'minibuffer-exit-hook #'my-minibuffer-exit-hook)
+(defun gc-idle-timer ()
+ "Trigger garbage collection when Emacs is idle for 0.5 seconds."
+ (run-with-idle-timer 1.2 t 'garbage-collect))
+(gc-idle-timer)
+
+;; diminish
+(use-package diminish
+ :diminish auto-revert-mode
+ :demand t)
+
+;; disable custom file, allow themes to be loaded without marking them safe
+(setq custom-file null-device)
+(setq custom-safe-themes t)
+
+;; no lockfiles
+(setq create-lockfiles nil)
+
+;; backups in one folder
+(setq backup-directory-alist
+ `((".*" . ,temporary-file-directory)))
+(setq auto-save-file-name-transforms
+ `((".*" ,temporary-file-directory t)))
+
+;; == better meta behaviour
+(setq inhibit-startup-message t
+ vc-follow-symlinks t
+ use-short-answers t)
+(use-package saveplace
+ :ensure nil
+ :config
+ (save-place-mode))
+
+;; improved C-g dwim
+(defun my-keyboard-quit ()
+ "Smart C-g: exits evil mode, closes minibuffer, or behaves normally."
+ (interactive)
+ (if (and (bound-and-true-p evil-local-mode) (not (evil-normal-state-p)))
+ (evil-force-normal-state)
+ (if (active-minibuffer-window)
+ (if (minibufferp)
+ (minibuffer-keyboard-quit)
+ (abort-recursive-edit))
+ (keyboard-quit))))
+(global-set-key (kbd "C-g") #'my-keyboard-quit)
+
+;; == ui
+
+;; disable bs
+(scroll-bar-mode -1)
+(tool-bar-mode -1)
+(tooltip-mode -1)
+(menu-bar-mode -1)
+
+;; columns and truncation
+(column-number-mode +1)
+(setq-default fill-column 80)
+(setq-default truncate-lines t)
+
+;; line numbers in prog mode
+(defun my/prog-mode-hook ()
+ (display-line-numbers-mode t)
+ (setq display-line-numbers-width-start t
+ display-line-numbers-type t))
+(add-hook 'prog-mode-hook 'my/prog-mode-hook)
+
+;; rainbow delimiters
+(use-package rainbow-delimiters
+ :diminish
+ :hook (prog-mode . rainbow-delimiters-mode))
+
+;; ansi color in compilation
+(use-package ansi-color
+ :hook (compilation-filter . ansi-color-compilation-filter))
+
+;; == text editing and navigation
+
+;; tabs
+(setq-default tab-width 4)
+(setq backward-delete-char-untabify-method "hungry")
+
+;; scrolling
+(setq scroll-up-aggressively nil
+ scroll-down-aggressively nil
+ scroll-conservatively 101)
+(setq scroll-step 1)
+(setq scroll-margin 8)
+
+;; electric pairs
+;; (electric-pair-mode +1)
+
+;; some binds
+(global-set-key (kbd "C-c f") 'ff-find-other-file)
+(global-set-key (kbd "C-c c") 'recompile)
+(global-set-key (kbd "C-<return>") 'browse-url-xdg-open)
+
+;; better commenting
+(use-package evil-nerd-commenter
+ :bind ("M-;" . evilnc-comment-or-uncomment-lines))
+
+;; == dired
+(use-package dired
+ :ensure nil
+ :commands (dired)
+ :hook
+ ((dired-mode . dired-hide-details-mode)
+ (dired-mode . hl-line-mode))
+ :config
+ (setq dired-recursive-copies 'always)
+ (setq dired-recursive-deletes 'always)
+ (setq dired-dwim-target t)
+ (setq dired-kill-when-opening-new-dired-buffer t)
+ (setq dired-listing-switches "-alh --group-directories-first"))
+
+(use-package dired-subtree
+ :after dired
+ :bind
+ ( :map dired-mode-map
+ ("<tab>" . dired-subtree-toggle)
+ ("TAB" . dired-subtree-toggle)
+ ("<backtab>" . dired-subtree-remove)
+ ("S-TAB" . dired-subtree-remove))
+ :config
+ (setq dired-subtree-use-backgrounds nil))
+
+;; == evil
+(use-package evil
+ :demand t
+ :init
+ (setq evil-want-keybinding nil)
+ :config
+ (evil-mode)
+ :custom
+ (evil-want-C-u-scroll t)
+ (evil-undo-system 'undo-redo)
+ (evil-move-beyond-eol nil)
+ :bind
+ ( :map evil-insert-state-map
+ ("C-d" . evil-delete-char))
+ ( :map evil-motion-state-map
+ ("C-e" . nil)))
+
+(use-package evil-collection
+ :after evil
+ :diminish evil-collection-unimpaired-mode
+ :config
+ (evil-collection-init))
+
+(use-package evil-paste-indent
+ :diminish
+ :vc (:url "https://github.com/Schievel1/evil-paste-indent"
+ :rev :newest)
+ :config (global-evil-paste-indent-mode t))
+
+;; == style
+;; theme
+(use-package doom-themes
+ :demand t
+ :config
+ (load-theme 'doom-one))
+
+;; font
+(add-to-list 'default-frame-alist '(font . "Fantasque Sans Mono-12"))
+
+;; (use-package dracula-theme
+;; :demand t
+;; :config
+;; (load-theme 'dracula)
+;; (set-face-attribute 'show-paren-match nil :background "dark violet" :foreground "black"))
+;; (use-package ef-themes
+;; :demand t
+;; :config
+;; (load-theme 'ef-bio))
+;; (use-package catppuccin-theme
+;; :demand t
+;; :config
+;; (setq catppuccin-flavor 'mocha)
+;; (load-theme 'catppuccin t))
+
+;; (load-theme `modus-vivendi)
+
+;; (use-package spacious-padding
+;; :config
+;; (setq spacious-padding-widths (plist-put spacious-padding-widths :internal-border-width 10))
+;; (setq spacious-padding-widths (plist-put spacious-padding-widths :right-divider-width 10))
+;; (spacious-padding-mode))
+
+;; (set-face-attribute 'mode-line nil
+;; :box nil
+;; :foreground "#9fefff"
+;; :background "black")
+;; (set-face-attribute 'mode-line-inactive nil
+;; :box nil
+;; :foreground "#5e8891"
+;; :background "black")
+
+;; (use-package doom-modeline
+;; :config
+;; (setq doom-modeline-modal nil
+;; doom-modeline-height 0)
+;; (doom-modeline-mode))
+
+;; rainbow mode
+(use-package rainbow-mode
+ :diminish rainbow-mode
+ :hook (after-change-major-mode . rainbow-mode))
+
+;; == minibuffer completion
+(use-package vertico
+ :custom
+ (vertico-count 15)
+ :bind (:map vertico-map
+ ("C-n" . vertico-next)
+ ("C-p" . vertico-previous))
+ :init
+ (vertico-mode t))
+
+(use-package vertico-directory
+ :ensure nil
+ :after vertico
+ ;; More convenient directory navigation commands
+ :bind (:map vertico-map
+ ("RET" . vertico-directory-enter)
+ ("DEL" . vertico-directory-delete-char)
+ ("M-DEL" . vertico-directory-delete-word)))
+
+(use-package marginalia
+ :bind (:map minibuffer-local-map
+ ("M-A" . marginalia-cycle))
+
+ :init
+ (marginalia-mode))
+
+(use-package orderless
+ :init
+ (setq completion-styles '(orderless partial-completion basic)
+ completion-category-defaults nil
+ completion-category-overrides '((file (styles . (partial-completion))))))
+
+(use-package savehist
+ :ensure nil
+ :hook (after-init . savehist-mode))
+
+(use-package stillness-mode
+ :init
+ (stillness-mode))
+
+;; == effecient navigation
+
+;; consult
+(use-package consult
+ :custom
+ (consult-preview-key nil)
+ :bind (("M-l" . 'consult-git-grep) ;; Search inside a project
+ ("M-y" . 'consult-yank-pop) ;; Paste by selecting the kill-ring
+ ("M-s" . 'consult-line) ;; Search current buffer, like swiper
+ ("C-c i" . 'consult-imenu) ;; Search the imenu
+ ))
+
+;; projectile
+(use-package rg)
+(use-package projectile
+ :after rg
+ :bind
+ (("C-c g" . projectile-ripgrep)
+ ("C-c v" . projectile-find-file)))
+
+;; == magit
+(use-package transient)
+(use-package magit
+ :after transient
+ :bind (("C-x g" . magit-status))
+ :custom
+ (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))
+
+;; == helpful
+(use-package helpful
+ :bind
+ ([remap describe-command] . helpful-command)
+ ([remap describe-function] . helpful-callable)
+ ([remap describe-variable] . helpful-variable)
+ ([remap describe-key] . helpful-key))
+
+;; == flycheck
+;; (use-package flycheck)
+
+;; == editorconfig
+(editorconfig-mode 1)
+(add-hook 'prog-mode 'editorconfig-apply)
+
+;; == lsp
+;; (use-package lsp-mode
+;; :custom
+;; (lsp-keymap-prefix "C-c l")
+;; (lsp-headerline-breadcrumb-enable nil)
+;; (lsp-completion-enable-additional-text-edit nil)
+;; (lsp-enable-on-type-formatting nil)
+;; (lsp-enable-symbol-highlighting nil)
+;; (lsp-completion-provider :none)
+;; (lsp-idle-delay 0.1)
+;; (lsp-enable-indentation nil)
+;; :hook ((c++-mode . lsp-deferred)
+;; (c-mode . lsp-deferred)
+;; (typst-ts-mode . lsp-deferred)
+;; (java-mode . lsp-deferred))
+;; :commands lsp
+;; :bind
+;; (("C-c s" . lsp-signature-activate)))
+
+;; (use-package lsp-ui
+;; :after lsp-mode
+;; :commands lsp-ui-mode
+;; :hook (lsp-mode . lsp-ui-mode)
+;; :bind
+;; (("C-c r" . lsp-ui-peek-find-references)
+;; ("C-c d" . lsp-ui-peek-find-definitions)))
+
+;; lsp booster
+;; (setq read-process-output-max (* 1024 1024)) ;; 1mb
+;; (defun lsp-booster--advice-json-parse (old-fn &rest args)
+;; "Try to parse bytecode instead of json."
+;; (or
+;; (when (equal (following-char) ?#)
+;; (let ((bytecode (read (current-buffer))))
+;; (when (byte-code-function-p bytecode)
+;; (funcall bytecode))))
+;; (apply old-fn args)))
+;; (advice-add (if (progn (require 'json)
+;; (fboundp 'json-parse-buffer))
+;; 'json-parse-buffer
+;; 'json-read)
+;; :around
+;; #'lsp-booster--advice-json-parse)
+
+;; (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
+;; "Prepend emacs-lsp-booster command to lsp CMD."
+;; (let ((orig-result (funcall old-fn cmd test?)))
+;; (if (and (not test?) ;; for check lsp-server-present?
+;; (not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper
+;; lsp-use-plists
+;; (not (functionp 'json-rpc-connection)) ;; native json-rpc
+;; (executable-find "emacs-lsp-booster"))
+;; (progn
+;; (when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH)
+;; (setcar orig-result command-from-exec-path))
+;; (message "Using emacs-lsp-booster for %s!" orig-result)
+;; (cons "emacs-lsp-booster" orig-result))
+;; orig-result)))
+;; (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command)
+
+;; == eglot
+(use-package eglot
+ :ensure nil
+ :bind
+ (("C-c l a" . eglot-code-actions))
+ (("C-c l r" . eglot-rename))
+ :hook
+ (eglot-managed-mode . (lambda () (setq-local eldoc-documentation-function 'eldoc-documentation-enthusiast)))
+ (eglot-mode-hook . flymake-mode)
+ :config
+ (add-to-list 'eglot-ignored-server-capabilities ':inlayHintProvider)
+ (add-to-list 'eglot-ignored-server-capabilities ':documentOnTypeFormattingProvider)
+ (add-to-list 'eglot-ignored-server-capabilities ':documentHighlightProvider)
+ (add-to-list 'eglot-server-programs
+ '((c-ts-mode c++-ts-mode c-mode c++-mode)
+ . ("clangd"
+ "-j=8"
+ "--log=error"
+ "--malloc-trim"
+ "--background-index"
+ "--completion-style=detailed"
+ "--pch-storage=memory"
+ "--header-insertion=never"
+ "--header-insertion-decorators=0")))
+ :custom
+ (eglot-send-changes-idle-time 0.1))
+
+(use-package eldoc
+ :ensure nil
+ :config
+ (setq-default eldoc-documentation-strategy 'eldoc-documentation-enthusiast)
+ (setq-default eldoc-minor-mode-string ""))
+
+(use-package sideline-flymake)
+(use-package sideline
+ :diminish
+ :hook
+ ((flymake-mode . sideline-mode))
+ :init
+ (setq sideline-backends-right '(sideline-flymake)
+ sideline-backends-right-skip-current-line nil
+ sideline-order-right 'up
+ sideline-priority 100))
+
+;; == dumb jump
+(use-package dumb-jump
+ :init
+ (add-hook 'xref-backend-functions #'dumb-jump-xref-activate)
+ (setq xref-show-definitions-function #'xref-show-definitions-completing-read))
+
+;; == text completion
+(use-package corfu
+ :bind
+ (:map corfu-map
+ ("C-g" . corfu-quit))
+ :init
+ (add-hook 'corfu-mode-hook
+ (lambda ()
+ ;; disable orderless
+ (setq-local completion-styles '(basic)
+ completion-category-overrides nil
+ completion-category-defaults nil)))
+ (global-corfu-mode)
+ (corfu-history-mode))
+
+(use-package cape
+ :init
+ (add-hook 'completion-at-point-functions #'cape-dabbrev)
+ (add-hook 'completion-at-point-functions #'cape-file)
+ :config
+ (advice-add 'eglot-completion-at-point :around #'cape-wrap-buster))
+ ;; (defun my/lsp-capf-busted ()
+ ;; "Return an uncached LSP completion function."
+ ;; (cape-capf-buster #'lsp-completion-at-point))
+ ;; (add-hook 'lsp-completion-mode-hook
+ ;; (lambda ()
+ ;; (setq-local completion-at-point-functions
+ ;; (list (my/lsp-capf-busted))))))
+
+(use-package completion-preview
+ :ensure nil
+ :diminish
+ :config
+ (global-completion-preview-mode)
+ (global-set-key (kbd "M-n") 'completion-preview-next-candidate)
+ (global-set-key (kbd "M-p") 'completion-preview-prev-candidate))
+
+;; == snippets
+(use-package yasnippet
+ :diminish yas-minor-mode yas-global-mode
+ :config
+ (yas-reload-all)
+ :hook
+ (prog-mode . yas-minor-mode)
+ :bind
+ (:map yas-keymap
+ ("M-n" . yas-next-field)
+ ("M-p" . yas-prev-field)
+ ([(tab)] . nil)
+ ("TAB" . nil)
+ ("M-I" . nil))
+ (:map yas-minor-mode-map
+ ("C-'". yas-expand)
+ ([(tab)] . nil)
+ ("TAB" . nil)
+ ("M-I" . nil)))
+
+;; (use-package yasnippet
+;; :bind
+;; (:map yas-minor-mode-map
+;; ("C-'". yas-expand)
+;; ([(tab)] . nil)
+;; ("TAB" . nil))
+;; :config
+;; (yas-reload-all)
+;; (yas-global-mode t))
+
+(use-package yasnippet-snippets
+ :after yasnippet)
+
+;; == development environment
+(defun my/replace-master-vterm ()
+ (interactive)
+ (let* ((master-name "Master Terminal")
+ (banished-base "Banished Terminal ")
+ (master-buf (get-buffer master-name))
+ (visible-win (and master-buf (get-buffer-window master-buf t))))
+ (when master-buf
+ (with-current-buffer master-buf
+ (let ((n 1)
+ new-name)
+ (while (get-buffer (setq new-name (format "%s%d" banished-base n)))
+ (setq n (1+ n)))
+ (rename-buffer new-name))))
+ (let ((buf (if visible-win
+ (with-selected-window visible-win
+ (vterm))
+ (vterm-other-window))))
+ (with-current-buffer buf
+ (rename-buffer master-name t)))))
+
+(defun my/switch-to-master-vterm-other-window ()
+ (interactive)
+ (let* ((master-name "Master Terminal")
+ (master-buf (get-buffer master-name))
+ (visible-win (and master-buf (get-buffer-window master-buf t))))
+ (cond
+ (visible-win
+ (select-window visible-win))
+ (master-buf
+ (switch-to-buffer-other-window master-buf))
+ (t
+ (let ((buf (vterm-other-window)))
+ (with-current-buffer buf
+ (rename-buffer master-name t)))))))
+
+(defun my/switch-to-master-vterm ()
+ (interactive)
+ (let* ((master-name "Master Terminal")
+ (master-buf (get-buffer master-name))
+ (visible-win (and master-buf (get-buffer-window master-buf t))))
+ (cond
+ (visible-win
+ (select-window visible-win))
+ (master-buf
+ (switch-to-buffer master-buf))
+ (t
+ (let ((buf (vterm)))
+ (with-current-buffer buf
+ (rename-buffer master-name t)))))))
+
+(use-package vterm
+ :bind ( ("C-c a" . my/switch-to-master-vterm-other-window)
+ ("C-c C-a" . my/replace-master-vterm)
+ :map vterm-mode-map
+ ("C-c c" . vterm-copy-mode)
+ ("C-l" . my-vterm-clear)
+ :map vterm-copy-mode-map
+ ("C-c c" . vterm-copy-mode))
+ :config
+ (defun my-vterm-clear ()
+ (interactive)
+ (vterm-send-key "l" nil nil t)
+ (vterm-clear-scrollback))
+ (defun my-vterm-copy-mode-evil-setup ()
+ "Enable evil only in vterm-copy-mode."
+ (if vterm-copy-mode
+ ;; on enter
+ (progn
+ (evil-local-mode 1)
+ (evil-force-normal-state))
+ ;; on exit
+ (evil-local-mode -1)))
+ (defun my-vterm-setup ()
+ (when (bound-and-true-p evil-local-mode)
+ (evil-local-mode -1))
+ (setq-local truncate-lines nil))
+ ;; disable evil
+ (with-eval-after-load 'evil
+ (evil-set-initial-state 'vterm-mode 'emacs))
+ (add-hook 'vterm-mode-hook #'my-vterm-setup)
+ (add-hook 'vterm-copy-mode-hook #'my-vterm-copy-mode-evil-setup))
+
+;; == languages
+;; (setq treesit-font-lock-level 4)
+;; (setq treesit-language-source-alist
+;; '((cpp "https://github.com/tree-sitter/tree-sitter-cpp")
+;; (c "https://github.com/tree-sitter/tree-sitter-c")
+;; (python "https://github.com/tree-sitter/tree-sitter-python")))
+;; (dolist (lang treesit-language-source-alist)
+;; (unless (treesit-language-available-p (car lang))
+;; (treesit-install-language-grammar (car lang))))
+;; (setq treesit-load-name-override-list
+;; '((c++ "libtree-sitter-cpp")))
+;; (setq major-mode-remap-alist '((c-mode . c-ts-mode)
+;; (c++-mode . c++-ts-mode)
+;; (python-mode . python-ts-mode)))
+
+;; === c mode
+(defun my-c-mode-common-hook ()
+ ;; my customizations for all of c-mode, c++-mode, objc-mode, java-mode
+ (setq c-default-style "k&r"
+ c-basic-offset 4
+ indent-tabs-mode t)
+ (c-set-offset 'arglist-intro '+)
+ (c-set-offset 'case-label '+)
+ (add-to-list 'c-offsets-alist '(arglist-close . c-lineup-close-paren)))
+(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
+
+;; === odin mode
+(use-package odin-mode
+ :vc (:url "https://github.com/mattt-b/odin-mode"
+ :rev :newest))
+
+;; === markdown
+(add-hook 'markdown-mode-hook #'auto-fill-mode)
+
+;; == proj
+(require 'proj)
+(setq
+ proj-locations '(("~/development/" . 1) ("~/opt/" . 1) ("~/classes/" . 2) ("~/dotfiles/" . 0) ("~/dotfiles/.config/emacs/lisp/" . 1))
+ proj-grep-function 'consult-ripgrep)
+
+(global-set-key (kbd "C-x b") `proj-switch-to-buffer)
+(global-set-key (kbd "C-c b") `switch-to-buffer)
+
+(global-set-key (kbd "C-x k") `proj-kill-buffer)
+(global-set-key (kbd "C-c k") `kill-buffer)
+
+
+;; == toggle-window
+(require 'toggle-window)
+(global-set-key (kbd "C-c w") 'toggle-window)