From 7964c8ce1279249e640406cfbcd4be13f3c2a2b3 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 12 Mar 2023 11:07:20 -0400 Subject: emacs config --- emacs/.config/emacs-kj/development.el | 79 -------------------------- emacs/.config/emacs-kj/early-init.el | 18 ++++++ emacs/.config/emacs-kj/eshell.el | 44 -------------- emacs/.config/emacs-kj/init.el | 46 ++++++++++----- emacs/.config/emacs-kj/lisp/kj-development.el | 82 +++++++++++++++++++++++++++ emacs/.config/emacs-kj/lisp/kj-eshell.el | 46 +++++++++++++++ emacs/.config/emacs-kj/yasnippets/README.org | 0 7 files changed, 178 insertions(+), 137 deletions(-) delete mode 100644 emacs/.config/emacs-kj/development.el delete mode 100644 emacs/.config/emacs-kj/eshell.el create mode 100644 emacs/.config/emacs-kj/lisp/kj-development.el create mode 100644 emacs/.config/emacs-kj/lisp/kj-eshell.el create mode 100644 emacs/.config/emacs-kj/yasnippets/README.org (limited to 'emacs/.config') diff --git a/emacs/.config/emacs-kj/development.el b/emacs/.config/emacs-kj/development.el deleted file mode 100644 index 994a78a..0000000 --- a/emacs/.config/emacs-kj/development.el +++ /dev/null @@ -1,79 +0,0 @@ -(setq tab-stop-list (number-sequence 4 200 4)) - -(use-package eglot) - -(add-hook 'prog-mode-hook 'subword-mode) - -;; Only used to get better eglot snippets. -(use-package yasnippet - :config - (add-to-list 'yas-snippet-dirs (expand-file-name "yasnippets" user-emacs-directory)) - (yas-global-mode)) - -(use-package rustic - :after eglot - :bind (("C-c C-r C-s" . rustic-popup) - ("C-c C-r C-n" . kj/rustic-nextest-all)) - :config - (defun kj/rustic-nextest-all () - (interactive) - (setq rustic-cargo-nextest-exec-command "nextest run --run-ignored all") - (rustic-cargo-run-nextest)) - (setq - ;; eglot seems to be the best option right now. - rustic-lsp-client 'eglot - rustic-format-on-save nil - ;; Prevent automatic syntax checking, which was causing lags and stutters. - ;; eglot-send-changes-idle-time (* 60 60) - ) - :hook - (rustic-mode . eglot-ensure) - ;; Disable the annoying doc popups in the minibuffer. - ;; (add-hook 'eglot-managed-mode-hook (lambda () (eldoc-mode -1))) - ) - -(use-package markdown-mode - :ensure t - :mode ("README\\.md\\'" . gfm-mode) - :init (setq markdown-command "multimarkdown")) - -(straight-use-package - '(nix-mode :type git :host github :repo "NixOS/nix-mode")) -(use-package nix-mode - :mode "\\.nix\\'") - -(use-package ledger-mode - :mode "\\.journal") -(use-package unobtrusive-magit-theme) - -(use-package editorconfig - :ensure t - :config - (editorconfig-mode 1)) - -(use-package tree-sitter - :config - (global-tree-sitter-mode) - (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode)) - -(use-package tree-sitter-langs - :after tree-sitter) - -(use-package clojure-mode) - -;; Devicetree mode for keyboard configs. -(use-package dts-mode - :mode "\\.keymap\\'") - -(use-package yaml-mode - :mode "\\.\(yml|yaml\)\\'") - -(use-package ansi-color - :hook (compilation-filter . ansi-color-compilation-filter)) - -(use-package diff-hl - :config - (global-diff-hl-mode)) - -(use-package graphviz-dot-mode - :ensure t) diff --git a/emacs/.config/emacs-kj/early-init.el b/emacs/.config/emacs-kj/early-init.el index 512068a..95acd2e 100644 --- a/emacs/.config/emacs-kj/early-init.el +++ b/emacs/.config/emacs-kj/early-init.el @@ -1 +1,19 @@ +;;; early-init.el -*- lexical-binding: t; -*- + +;; Defer garbage collection further back in the startup process +(setq gc-cons-threshold most-positive-fixnum) + +(setq-default inhibit-redisplay t + inhibit-message t) +(add-hook 'window-setup-hook + (lambda () + (setq-default inhibit-redisplay nil + inhibit-message nil) + (redisplay))) + (setq package-enable-at-startup nil) + +(tool-bar-mode -1) +(scroll-bar-mode -1) +(tooltip-mode -1) +(menu-bar-mode -1) diff --git a/emacs/.config/emacs-kj/eshell.el b/emacs/.config/emacs-kj/eshell.el deleted file mode 100644 index cd8d684..0000000 --- a/emacs/.config/emacs-kj/eshell.el +++ /dev/null @@ -1,44 +0,0 @@ -;;; -*- lexical-binding: t; -*- -(use-package eshell - :config - (add-hook 'eshell-mode-hook - (lambda () - (setenv "PAGER" "cat")) - (setenv "EDITOR" "emacsclient")) - (setq eshell-prefer-lisp-functions nil - eshell-scroll-to-bottom-on-input 'all - eshell-hist-ignoredups t - eshell-error-if-no-glob t) - (setq tramp-remote-path '(tramp-own-remote-path)) - - (add-to-list 'eshell-modules-list 'eshell-tramp) - (add-to-list 'eshell-load-hook #'kj/on-eshell-load) - - (add-hook 'eshell-mode-hook 'visual-line-mode)) - -(use-package esh-help - :init - (setup-esh-help-eldoc)) - -(use-package eshell-syntax-highlighting - :hook (eshell-mode . eshell-syntax-highlighting-mode)) - -(use-package fish-completion - :config - (setq fish-completion-fallback-on-bash-p t) - :init - (fish-completion-mode 1)) - -(defun kj/on-eshell-load (&args rest) - (add-to-list 'eshell-visual-commands - '("htop" "tmux" "vim" "nvim")) - (add-to-list 'eshell-complex-commands "ssh")) - -(defun eshell/ssh (&rest args) - (if (= 1 (length args)) - (throw 'eshell-replace-command - (eshell/cd - (format "/ssh:%s:" (car args)))) - (throw 'eshell-replace-command - (eshell-parse-command "*ssh" - (eshell-stringify-list (flatten-tree args)))))) diff --git a/emacs/.config/emacs-kj/init.el b/emacs/.config/emacs-kj/init.el index 3e10e47..b771a0c 100644 --- a/emacs/.config/emacs-kj/init.el +++ b/emacs/.config/emacs-kj/init.el @@ -14,6 +14,8 @@ (eval-print-last-sexp))) (load bootstrap-file nil 'nomessage)) +(push (expand-file-name "lisp" user-emacs-directory) load-path) + (setq user-full-name "KJ Orbekk" user-mail-address "kj@orbekk.com") @@ -23,8 +25,6 @@ (format-time-string "%F %T %z" startup-time))) (setq inhibit-startup-message t) -(server-start) - (setq custom-file (expand-file-name "emacs-custom.el" user-emacs-directory)) (load custom-file :noerror t) @@ -75,10 +75,6 @@ (setq alert-default-style 'libnotify) (when window-system - (tool-bar-mode -1) - (scroll-bar-mode -1) - (tooltip-mode -1) - (menu-bar-mode -1) (use-package all-the-icons :if (display-graphic-p))) (setq inhibit-compacting-font-caches t) @@ -382,10 +378,13 @@ (org-mode . mixed-pitch-mode) ) -(set-face-attribute 'default nil :font "Iosevka" :height 150) -(unless (equal system-name "minideck") - (set-face-attribute 'fixed-pitch nil :font "Iosevka" :height 150) - (set-face-attribute 'variable-pitch nil :font "Noto Serif")) +(custom-set-faces + `(variable-pitch ((t (:family "Noto Serif" :height 150)))) + `(default ((t (:family "Iosevka" :height 150))))) + +;; (unless (equal system-name "minideck") +;; (set-face-attribute 'fixed-pitch nil :font "Iosevka" :height 150) +;; (set-face-attribute 'variable-pitch nil :font "Noto Serif")) (setq compilation-ask-about-save nil) (use-package ob-async) @@ -551,8 +550,17 @@ ;; Org (add-to-list 'org-export-backends 'md) -(load-file (locate-user-emacs-file "development.el")) -(load-file (locate-user-emacs-file "eshell.el")) +(require 'kj-development) +(require 'kj-eshell) + +(defun kj/modules (module-directory) + (cl-loop for path in (f-files module-directory) + if (string-match "\\([^/]*\\).el" path) + collect (intern (match-string 1 path)))) + +(dolist (module (kj/modules + (expand-file-name "lisp" user-emacs-directory))) + (require module)) (setq math-additional-units '((ZiB "1024 * EiB" "Zebibyte") @@ -697,9 +705,15 @@ (unbind-key "M-r" paredit-mode-map) (unbind-key "M-s" paredit-mode-map)))) +(defun kj/kill-word-or-region (arg) + (interactive "p") + (if (region-active-p) + (kill-region (region-beginning) (region-end)) + (backward-kill-word (or arg 1)))) + (use-package emacs :bind - (("C-w" . backward-kill-word) + (("C-w" . kj/kill-word-or-region) ("C-c d" . kill-region) ("C-c m" . smerge-ediff) ("C-c b r" . revert-buffer) @@ -900,7 +914,7 @@ buffer (append (if (> (frame-width) 160) '((side . right) - (window-width . 80)) + (window-width . 85)) '((side . bottom) (window-height . 0.5))) alist))) @@ -930,3 +944,7 @@ ;; Enabled commands (put 'narrow-to-region 'disabled nil) +(put 'downcase-region 'disabled nil) + +;; Restore gc. +(setq gc-cons-threshold (* 16 1024 1024)) diff --git a/emacs/.config/emacs-kj/lisp/kj-development.el b/emacs/.config/emacs-kj/lisp/kj-development.el new file mode 100644 index 0000000..8750ecc --- /dev/null +++ b/emacs/.config/emacs-kj/lisp/kj-development.el @@ -0,0 +1,82 @@ +;;; -*- lexical-binding: t; -*- +(setq tab-stop-list (number-sequence 4 200 4)) + +(use-package eglot) + +(add-hook 'prog-mode-hook 'subword-mode) + +;; Only used to get better eglot snippets. +(use-package yasnippet + :config + (add-to-list 'yas-snippet-dirs (expand-file-name "yasnippets" user-emacs-directory)) + (yas-global-mode)) + +(use-package rustic + :after eglot + :bind (("C-c C-r C-s" . rustic-popup) + ("C-c C-r C-n" . kj/rustic-nextest-all)) + :config + (defun kj/rustic-nextest-all () + (interactive) + (setq rustic-cargo-nextest-exec-command "nextest run --run-ignored all") + (rustic-cargo-run-nextest)) + (setq + ;; eglot seems to be the best option right now. + rustic-lsp-client 'eglot + rustic-format-on-save nil + ;; Prevent automatic syntax checking, which was causing lags and stutters. + ;; eglot-send-changes-idle-time (* 60 60) + ) + :hook + (rustic-mode . eglot-ensure) + ;; Disable the annoying doc popups in the minibuffer. + ;; (add-hook 'eglot-managed-mode-hook (lambda () (eldoc-mode -1))) + ) + +(use-package markdown-mode + :ensure t + :mode ("README\\.md\\'" . gfm-mode) + :init (setq markdown-command "multimarkdown")) + +(straight-use-package + '(nix-mode :type git :host github :repo "NixOS/nix-mode")) +(use-package nix-mode + :mode "\\.nix\\'") + +(use-package ledger-mode + :mode "\\.journal") +(use-package unobtrusive-magit-theme) + +(use-package editorconfig + :ensure t + :config + (editorconfig-mode 1)) + +(use-package tree-sitter + :config + (global-tree-sitter-mode) + (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode)) + +(use-package tree-sitter-langs + :after tree-sitter) + +(use-package clojure-mode) + +;; Devicetree mode for keyboard configs. +(use-package dts-mode + :mode "\\.keymap\\'") + +(use-package yaml-mode + :mode "\\.\(yml|yaml\)\\'") + +(use-package ansi-color + :hook (compilation-filter . ansi-color-compilation-filter)) + +(use-package diff-hl + :config + (global-diff-hl-mode)) + +(use-package graphviz-dot-mode + :ensure t) + +(provide 'kj-development) diff --git a/emacs/.config/emacs-kj/lisp/kj-eshell.el b/emacs/.config/emacs-kj/lisp/kj-eshell.el new file mode 100644 index 0000000..bd20f05 --- /dev/null +++ b/emacs/.config/emacs-kj/lisp/kj-eshell.el @@ -0,0 +1,46 @@ +;;; -*- lexical-binding: t; -*- +(use-package eshell + :config + (add-hook 'eshell-mode-hook + (lambda () + (setenv "PAGER" "cat")) + (setenv "EDITOR" "emacsclient")) + (setq eshell-prefer-lisp-functions nil + eshell-scroll-to-bottom-on-input 'all + eshell-hist-ignoredups t + eshell-error-if-no-glob t) + (setq tramp-remote-path '(tramp-own-remote-path)) + + (add-to-list 'eshell-modules-list 'eshell-tramp) + (add-to-list 'eshell-load-hook #'kj/on-eshell-load) + + (add-hook 'eshell-mode-hook 'visual-line-mode)) + +(use-package esh-help + :init + (setup-esh-help-eldoc)) + +(use-package eshell-syntax-highlighting + :hook (eshell-mode . eshell-syntax-highlighting-mode)) + +(use-package fish-completion + :config + (setq fish-completion-fallback-on-bash-p t) + :init + (fish-completion-mode 1)) + +(defun kj/on-eshell-load (&args rest) + (add-to-list 'eshell-visual-commands + '("htop" "tmux" "vim" "nvim")) + (add-to-list 'eshell-complex-commands "ssh")) + +(defun eshell/ssh (&rest args) + (if (= 1 (length args)) + (throw 'eshell-replace-command + (eshell/cd + (format "/ssh:%s:" (car args)))) + (throw 'eshell-replace-command + (eshell-parse-command "*ssh" + (eshell-stringify-list (flatten-tree args)))))) + +(provide 'kj-eshell) diff --git a/emacs/.config/emacs-kj/yasnippets/README.org b/emacs/.config/emacs-kj/yasnippets/README.org new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3