aboutsummaryrefslogtreecommitdiff
path: root/shoshimacs.el
diff options
context:
space:
mode:
Diffstat (limited to 'shoshimacs.el')
-rw-r--r--shoshimacs.el189
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)