diff options
Diffstat (limited to 'shoshimacs.el')
-rw-r--r-- | shoshimacs.el | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/shoshimacs.el b/shoshimacs.el new file mode 100644 index 0000000..ffd98c1 --- /dev/null +++ b/shoshimacs.el @@ -0,0 +1,189 @@ +;;; shoshimacs.el --- Beginner's Mind Config -*- lexical-binding:t -*- + +(let ((my-custom-file (expand-file-name + "shoshimacs-custom.el" user-emacs-directory))) + (unless (file-exists-p my-custom-file) + (make-empty-file my-custom-file)) + (setq custom-file my-custom-file) + (load custom-file)) + +(defvar my-themes-to-install + '(cyberpunk-theme dracula-theme nano-theme) + "List of themes to install when loading shoshimacs config.") + +(defvar my-chosen-themes + '(cyberpunk dichromacy dracula leuven modus-operandi modus-vivendi + nano-dark nano-light tango tango-dark) + "List of themes I prefer for narrowing and random selection.") + +;;; Package Management +(when (< emacs-major-version 28) + (add-to-list 'package-archives '("nongnu" . "https://elpa.nongnu.org/nongnu/"))) + +(package-initialize) +(package-refresh-contents) + +(when (and (functionp #'native-comp-available-p) (native-comp-available-p)) + (setq native-comp-always-compile t + package-native-compile t)) + +;;; Major Keybinding +;; these need to be set before requiring the package +(setq xah-fly-use-control-key nil + xah-fly-use-meta-key nil) +(package-install 'xah-fly-keys) +(require 'xah-fly-keys) +(xah-fly-keys-set-layout "qwerty") +(xah-fly-keys t) + +(define-key 'xah-fly-leader-key-map (kbd "1") #'delete-other-windows) + +(defmacro with-map-defkey (keymap leader &rest pairs) + "Define a new KEYMAP with prefix key LEADER, and list of bindings in it." + (declare (indent 2)) + `(progn + (defvar ,keymap (make-sparse-keymap)) + (define-prefix-command (quote ,keymap)) + (global-set-key (kbd ,leader) ,keymap) + (mapc (lambda (pair) + (define-key ,keymap + (kbd (if (numberp (car pair)) (number-to-string (car pair)) + (symbol-name (car pair)))) + (cadr pair))) + (quote ,(seq-partition pairs 2))))) + +(defvar *my-config* "~/projects/shoshimacs/shoshin-config.org" + "Path to my main configuration file.") + +(defun my-configuration () + (interactive) + (find-file *my-config*)) + +(defun my-reload-config () + "Tangles and reloads a literate config with `org-babel-load-file'" + (interactive) + (org-babel-load-file *my-config*)) + +(with-map-defkey my-key-map "M-m" + 1 delete-other-windows + a apropos + b consult-buffer + c my-configuration + d embark-act + e eshell + f find-file + g magit + h info + i consult-imenu + j describe-function + k describe-variable + n tab-next + s consult-ripgrep + t consult-theme + w which-key-mode + <f1> my-reload-config) + +;;; Completion +(setq completion-styles '(flex basic partial-completion emacs22) + completion-cycle-threshold 3 + tab-always-indent 'complete) + +(package-install 'consult) + +(global-set-key (kbd "C-x b") #'consult-buffer) +(define-key xah-fly-leader-key-map (kbd "f") #'consult-buffer) +(define-key xah-fly-command-map (kbd "n") #'consult-line) + +(with-eval-after-load 'consult + (consult-customize consult-theme :preview-key '(:debounce 0.5 any)) + (setq consult-themes my-chosen-themes)) + +(package-install 'embark) +(package-install 'embark-consult) +(global-set-key (kbd "C-;") #'embark-act) +(setq prefix-help-command #'embark-prefix-help-command) + +(package-install 'marginalia) +(marginalia-mode) + +(package-install 'vertico) +(setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) +(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) +(setq read-extended-command-predicate + #'command-completion-default-include-p) +(setq enable-recursive-minibuffers t) +(vertico-mode) + +(require 'vertico-directory) +(define-key vertico-map (kbd "RET") #'vertico-directory-enter) +(define-key vertico-map (kbd "DEL") #'vertico-directory-delete-char) +(define-key vertico-map (kbd "M-DEL") #'vertico-directory-delete-word) +(define-key vertico-map (kbd "M-j") #'vertico-quick-insert) + +(package-install 'corfu) +(setq corfu-auto t + corfu-cycle t + corfu-quit-no-match t) +(global-corfu-mode t) + +(package-install 'corfu-terminal) +(unless (display-graphic-p) + (corfu-terminal-mode +1)) + +(package-install 'which-key) +(which-key-mode) + +;;; Editing +(electric-pair-mode) + +(package-install 'markdown-mode) + +(defun my-org-top-level-heading () + (interactive) + (let ((moo 1)) + (while moo (setq moo (org-up-heading-safe))))) + +(package-install 'htmlize) + +(recentf-mode) + +(setq indent-tabs-mode nil) + +;;; Programming +(package-install 'sly) + +(package-install 'json-mode) + +(package-install 'inf-ruby) + +(package-install 'devdocs) + +;;; Projects +(package-install 'magit) + +;;; External Services +(package-install 'plz) + +(package-install 'srht) +(setq srht-username "shoshin") + +;;; User Interface +(when (display-graphic-p) + (scroll-bar-mode -1) + (fringe-mode '(8 . 0))) + +(tab-bar-mode t) +(display-battery-mode t) + +(package-install 'darkroom) + +(set-frame-font "Victor Mono") + +(global-hl-line-mode t) + +(load-theme (seq-random-elt my-chosen-themes)) + +(mapc #'package-install my-themes-to-install) + +(package-install 'windresize) |