|
@@ -0,0 +1,262 @@
|
|
|
|
+;;; PACKAGES
|
|
|
|
+;; Bootstrap Straight Package Manager
|
|
|
|
+(defvar bootstrap-version)
|
|
|
|
+(let ((bootstrap-file
|
|
|
|
+ (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
|
|
|
+ (bootstrap-version 5))
|
|
|
|
+ (unless (file-exists-p bootstrap-file)
|
|
|
|
+ (with-current-buffer
|
|
|
|
+ (url-retrieve-synchronously
|
|
|
|
+ "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
|
|
|
+ 'silent 'inhibit-cookies)
|
|
|
|
+ (goto-char (point-max))
|
|
|
|
+ (eval-print-last-sexp)))
|
|
|
|
+ (load bootstrap-file nil 'nomessage))
|
|
|
|
+
|
|
|
|
+;; packages to install and load
|
|
|
|
+(straight-use-package 'auto-complete)
|
|
|
|
+(straight-use-package '(nano-theme :type git :host github
|
|
|
|
+ :repo "rougier/nano-theme"))
|
|
|
|
+(straight-use-package
|
|
|
|
+ '(slime-company :type git :host github :repo "anwyn/slime-company"))
|
|
|
|
+(straight-use-package 'sublimity)
|
|
|
|
+(straight-use-package 'dashboard)
|
|
|
|
+(straight-use-package 'all-the-icons)
|
|
|
|
+(straight-use-package 'neotree)
|
|
|
|
+(straight-use-package 'rust-mode)
|
|
|
|
+(straight-use-package 'powerline)
|
|
|
|
+(straight-use-package 'markdown-mode)
|
|
|
|
+(straight-use-package 'moe-theme)
|
|
|
|
+(straight-use-package 'ample-theme)
|
|
|
|
+(straight-use-package 'slime)
|
|
|
|
+(straight-use-package 'ac-slime)
|
|
|
|
+(straight-use-package 'evil)
|
|
|
|
+(straight-use-package 'dimmer)
|
|
|
|
+(straight-use-package 'magit)
|
|
|
|
+(straight-use-package 'diff-hl)
|
|
|
|
+(straight-use-package 'powerline-evil)
|
|
|
|
+(straight-use-package 'rainbow-delimiters)
|
|
|
|
+(straight-use-package 'focus)
|
|
|
|
+(straight-use-package 'solarized-theme)
|
|
|
|
+(straight-use-package 'windresize)
|
|
|
|
+(straight-use-package 'yasnippet)
|
|
|
|
+
|
|
|
|
+(require 'yasnippet)
|
|
|
|
+
|
|
|
|
+;; Configure focus
|
|
|
|
+(require 'focus)
|
|
|
|
+(add-to-list 'focus-mode-to-thing '(lisp-mode . paragraph))
|
|
|
|
+
|
|
|
|
+;; rainbow delims
|
|
|
|
+(require 'rainbow-delimiters)
|
|
|
|
+(add-hook 'prog-mode-hook #'rainbow-delimiters-mode)
|
|
|
|
+
|
|
|
|
+;; Git stuff
|
|
|
|
+(require 'magit)
|
|
|
|
+(require 'diff-hl)
|
|
|
|
+;; Just enable diff-hl per buffer,
|
|
|
|
+;; it seems expensive
|
|
|
|
+;; (global-diff-hl-mode)
|
|
|
|
+(add-hook 'magit-pre-refresh-hook 'diff-hl-magit-pre-refresh)
|
|
|
|
+(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
|
|
|
|
+(diff-hl-margin-mode t)
|
|
|
|
+
|
|
|
|
+(require 'dimmer)
|
|
|
|
+(setq dimmer-fraction 0.4)
|
|
|
|
+
|
|
|
|
+;; always enable ido mode
|
|
|
|
+(require 'ido)
|
|
|
|
+(ido-mode t)
|
|
|
|
+
|
|
|
|
+(require 'evil)
|
|
|
|
+(evil-mode 1)
|
|
|
|
+
|
|
|
|
+;; Enable tab behavior like vi
|
|
|
|
+(straight-use-package '(evil-tabs :type git :host github
|
|
|
|
+ :repo "krisajenkins/evil-tabs"))
|
|
|
|
+(require 'evil-tabs)
|
|
|
|
+(global-evil-tabs-mode t)
|
|
|
|
+
|
|
|
|
+(require 'auto-complete)
|
|
|
|
+(global-auto-complete-mode t)
|
|
|
|
+
|
|
|
|
+(require 'slime)
|
|
|
|
+(require 'ac-slime)
|
|
|
|
+(slime-setup '(slime-fancy ac-slime))
|
|
|
|
+(add-hook 'slime-mode-hook 'set-up-slime-ac)
|
|
|
|
+(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
|
|
|
|
+(eval-after-load "auto-complete"
|
|
|
|
+ '(add-to-list 'ac-modes 'slime-repl-mode))
|
|
|
|
+
|
|
|
|
+(require 'markdown-mode)
|
|
|
|
+
|
|
|
|
+(require 'powerline)
|
|
|
|
+;;(powerline-default-theme)
|
|
|
|
+;; Better powerline support for evil mode
|
|
|
|
+(require 'powerline-evil)
|
|
|
|
+(powerline-evil-vim-theme)
|
|
|
|
+
|
|
|
|
+(require 'neotree)
|
|
|
|
+(global-set-key [f8] 'neotree-toggle)
|
|
|
|
+
|
|
|
|
+(require 'dashboard)
|
|
|
|
+(dashboard-setup-startup-hook)
|
|
|
|
+
|
|
|
|
+(require 'all-the-icons)
|
|
|
|
+
|
|
|
|
+(require 'sublimity)
|
|
|
|
+(require 'sublimity-scroll)
|
|
|
|
+(require 'sublimity-map) ;; experimental
|
|
|
|
+(require 'sublimity-attractive)
|
|
|
|
+(setq sublimity-scroll-weight 10
|
|
|
|
+ sublimity-scroll-drift-length 5)
|
|
|
|
+(setq sublimity-map-size 30)
|
|
|
|
+(setq sublimity-map-fraction 0.3)
|
|
|
|
+(setq sublimity-map-text-scale -9)
|
|
|
|
+(sublimity-map-set-delay 0.1)
|
|
|
|
+(setq sublimity-attractive-centering-width nil)
|
|
|
|
+
|
|
|
|
+(setq backup-directory-alist
|
|
|
|
+ `((".*" . ,temporary-file-directory)))
|
|
|
|
+(setq auto-save-file-name-transforms
|
|
|
|
+ `((".*" ,temporary-file-directory t)))
|
|
|
|
+
|
|
|
|
+;;; Generic options for all OSs
|
|
|
|
+; Smooth mouse scroll a bit
|
|
|
|
+(setq mouse-wheel-scroll-amount '(1 ((shift) . 1) ((control) . nil)))
|
|
|
|
+(setq mouse-wheel-progressive-speed nil)
|
|
|
|
+
|
|
|
|
+;; normal home/end behavior
|
|
|
|
+(global-set-key (kbd "<home>") 'beginning-of-line)
|
|
|
|
+(global-set-key (kbd "<end>") 'end-of-line)
|
|
|
|
+
|
|
|
|
+;; Custom functions
|
|
|
|
+(defun reload-dot-emacs ()
|
|
|
|
+ (interactive)
|
|
|
|
+ (load-file (file-truename "~/.emacs")))
|
|
|
|
+
|
|
|
|
+(defun sol-dk ()
|
|
|
|
+ (interactive)
|
|
|
|
+ (load-theme 'solarized-dark))
|
|
|
|
+
|
|
|
|
+(defun sol-l ()
|
|
|
|
+ (interactive)
|
|
|
|
+ (load-theme 'solarized-light))
|
|
|
|
+
|
|
|
|
+;; Keybinds/macros
|
|
|
|
+(global-set-key (kbd "C-c e") 'diff-hl-mode)
|
|
|
|
+(global-set-key (kbd "C-c d") 'dimmer-mode)
|
|
|
|
+(global-set-key (kbd "C-c s") 'sublimity-mode)
|
|
|
|
+(global-set-key (kbd "C-c f") 'focus-mode)
|
|
|
|
+(global-set-key (kbd "C-c r") 'reload-dot-emacs)
|
|
|
|
+(global-set-key (kbd "C-c l") 'display-line-numbers-mode)
|
|
|
|
+(global-set-key (kbd "C-c w") 'windresize)
|
|
|
|
+(global-set-key (kbd "C-c t") 'sol-dk)
|
|
|
|
+(global-set-key (kbd "C-c g") 'sol-l)
|
|
|
|
+(global-set-key (kbd "C-c y") 'evil-mode) ; Quick toggle evil-mode for slime err
|
|
|
|
+(global-set-key (kbd "C-c h") 'tramp-cleanup-connection)
|
|
|
|
+(global-set-key (kbd "C-c C-.") '(lambda ()
|
|
|
|
+ (interactive)
|
|
|
|
+ (switch-to-buffer "*Messages*")))
|
|
|
|
+
|
|
|
|
+;;; Can probably be replaced with
|
|
|
|
+;;; a yasnippet
|
|
|
|
+(fset 'date-to-point
|
|
|
|
+ (kmacro-lambda-form [?\C-u ?\M-! ?d ?a ?t ?e return] 0 "%d"))
|
|
|
|
+
|
|
|
|
+;;; Erc config
|
|
|
|
+(setq erc-nick "speskk")
|
|
|
|
+
|
|
|
|
+;; Allow M-up / M-down behavior to switch windows
|
|
|
|
+(windmove-default-keybindings 'meta)
|
|
|
|
+
|
|
|
|
+(display-time-mode t)
|
|
|
|
+
|
|
|
|
+;; Perl Config
|
|
|
|
+(setq
|
|
|
|
+ perl-indent-parens-as-block 0
|
|
|
|
+ perl-indent-level 8)
|
|
|
|
+
|
|
|
|
+;; Set to make mouse focus window
|
|
|
|
+(setq mouse-autoselect-window t
|
|
|
|
+ focus-follows-mouse t)
|
|
|
|
+
|
|
|
|
+;; Custom eshell prompt
|
|
|
|
+(setq eshell-prompt-function
|
|
|
|
+ (lambda nil
|
|
|
|
+ " λ > "))
|
|
|
|
+(setq eshell-prompt-regexp "^ λ > ")
|
|
|
|
+
|
|
|
|
+(set-language-environment "UTF-8")
|
|
|
|
+
|
|
|
|
+;; Simple rclone cli wrapper
|
|
|
|
+(load "~/Repos/dotfiles/emacs/elisp/rclone.el")
|
|
|
|
+(global-set-key (kbd "C-c o") 'rclone-copy-buffer)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+;; Load for macOS
|
|
|
|
+;;; Slime/etc
|
|
|
|
+(if (eq system-type 'darwin)
|
|
|
|
+ (progn
|
|
|
|
+ ;; Configure yasnippet
|
|
|
|
+ (setq yas-snippet-dirs
|
|
|
|
+ '("~/Repos/dotfiles/emacs/yasnippets/"))
|
|
|
|
+ (yas-global-mode 1)
|
|
|
|
+
|
|
|
|
+ (setq inferior-lisp-program "/opt/homebrew/bin/sbcl")
|
|
|
|
+ (load (expand-file-name "~/.local/opt/quicklisp/slime-helper.el"))
|
|
|
|
+ (load "/Users/swatson/.emacs.d/.erc-auth.el")
|
|
|
|
+ ;; Font/themes/etc
|
|
|
|
+ (load "/Users/swatson/Repos/dotfiles/emacs/mac-load/customs.el")
|
|
|
|
+
|
|
|
|
+ ;; Custom Commands
|
|
|
|
+ (defun connect-to-libera-erc () (interactive)
|
|
|
|
+ (erc :server "irc.libera.chat" :port "6667"
|
|
|
|
+ :nick "speskk" :password *libera-chat*))
|
|
|
|
+
|
|
|
|
+ ;; Easily set cua mode on/off so that I don't have to
|
|
|
|
+ ;; use shift+insert for paste on mac
|
|
|
|
+ (global-set-key (kbd "C-c c") 'cua-mode)
|
|
|
|
+ ;; Graphic Display
|
|
|
|
+ (if (display-graphic-p)
|
|
|
|
+ (progn
|
|
|
|
+ (load-theme 'solarized-dark t)))))
|
|
|
|
+
|
|
|
|
+;; Load for Windows10
|
|
|
|
+(if (eq system-type 'windows-nt)
|
|
|
|
+ (progn
|
|
|
|
+ ;; Configure yasnippet
|
|
|
|
+ (setq yas-snippet-dirs
|
|
|
|
+ '("C:/Users/watsonsi/Documents/Github/dotfiles/emacs/yasnippets/"))
|
|
|
|
+ (yas-global-mode 1):q!
|
|
|
|
+
|
|
|
|
+ (load "C:/Users/watsonsi/Documents/GitHub/dotfiles/emacs/windows-load/customs.el")
|
|
|
|
+ (setq visible-bell 1)
|
|
|
|
+ (load-theme 'solarized-light t)))
|
|
|
|
+
|
|
|
|
+;; Load for GUI Linux
|
|
|
|
+(if (eq system-type 'gnu/linux)
|
|
|
|
+ (if (display-graphic-p)
|
|
|
|
+ (progn
|
|
|
|
+ (setq yas-snippet-dirs
|
|
|
|
+ '("~/Repos/dotfiles/emacs/yasnippets/"))
|
|
|
|
+ (yas-global-mode 1)
|
|
|
|
+
|
|
|
|
+ (straight-use-package 'exwm)
|
|
|
|
+ (require 'exwm)
|
|
|
|
+
|
|
|
|
+ ;(require 'exwm-systemtray)
|
|
|
|
+ ;(exwm-systemtray-enable)
|
|
|
|
+
|
|
|
|
+ (load "~/Repos/dotfiles/emacs/linux-load/exwm-config.el")
|
|
|
|
+
|
|
|
|
+ (require 'exwm-config-spw)
|
|
|
|
+ (exwm-config-spw)
|
|
|
|
+
|
|
|
|
+ (setq visible-bell 1)
|
|
|
|
+ (load "~/Repos/dotfiles/emacs/linux-load/customs.el")
|
|
|
|
+ (load-theme 'solarized-light t))))
|
|
|
|
+
|
|
|
|
+;; Load for Term
|
|
|
|
+(unless (display-graphic-p)
|
|
|
|
+ (xterm-mouse-mode t))
|