:;; -*- origami-fold-style: triple-braces -*- ; customise {{{ (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(custom-safe-themes '("9e22d3e0196f248120d200012f4983bfb68ed322e294199a30d16c45b2dee99b" "3f7b4c736ffe0a373b06ce3d97c26b9e559bbc4f9b2e50e4b53143f0b0d7eb2c" default)) '(safe-local-variable-values '((origami-fold-style . triple-braces))) '(tool-bar-mode nil) '(warning-suppress-log-types '(((unlock-file)) ((unlock-file)) ((unlock-file)))) '(warning-suppress-types '(((unlock-file)) ((unlock-file))))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(default ((t (:family "Source Code Pro" :foundry "ADBO" :slant normal :weight normal :height 203 :width normal))))) ;}}} ; bootstrap straight.el {{{ (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 {{{ (straight-use-package 'use-package) (setq straight-use-package-by-default t) ; org needs to be immidiately after bootstrap or it errors. (use-package org :config (setq org-log-done t org-enforce-todo-dependencies t org-enforce-todo-checkbox-dependencies t org-element-use-cache nil)) ; convenience {{{ (use-package diminish) (use-package smex :bind (("M-x" . 'smex))) (use-package rainbow-delimiters) (use-package ibuffer :bind (("C-x C-b" . 'ibuffer) :map ibuffer-mode-map ("j" . 'next-line) ("k" . 'previous-line))) (use-package undo-tree :diminish 'undo-tree-mode :init (global-undo-tree-mode 1)) (use-package origami :config (global-origami-mode)) (use-package neotree :disabled :bind (("" . 'neotree-toggle))) (use-package elscreen :after evil :config (elscreen-start) :bind ( :map evil-normal-state-map ("C-w t" . 'elscreen-create) ("C-w x" . 'elscreen-kill) ("gT" . 'elscreen-previous) ("gt" . 'elscreen-next))) (use-package treemacs :bind (("" . 'treemacs))) (use-package avy) ; }}} ; evil {{{ (use-package evil :init (progn (setq evil-undo-system 'undo-tree) (setq evil-want-keybinding nil) ) :config (progn (evil-mode 1) (setq evil-shift-width 4))) (use-package evil-leader :after evil :config (progn (global-evil-leader-mode) )) (use-package evil-surround :after evil :config (progn (global-evil-surround-mode 1))) (use-package evil-smartparens :after evil) (use-package evil-org) (use-package evil-collection :straight t :after evil :ensure t :config (evil-collection-init)) (use-package treemacs-evil :after (treemacs evil) :ensure t) ; }}} ; project management {{{ (use-package magit) (use-package treemacs-magit :after (treemacs magit) :ensure t) (use-package editorconfig) (use-package projectile :config (progn (projectile-mode +1)) :bind ( :map projectile-mode-map ("s-p" . 'projectile-command-map) ("C-c p" . 'projectile-command-map))) (use-package treemacs-projectile :after (treemacs projectile) :ensure t) ; }}} ; emacs lisp {{{ (use-package el-patch) ; }}} ; Theming {{{ (use-package molokai-theme :config (load-theme 'molokai t)) (use-package abyss-theme :disabled :config (load-theme 'abyss t)) (use-package uwu-theme :disabled :config (load-theme 'uwu t) :straight (uwu-theme :host github :repo "kborling/uwu-theme")) (use-package powerline :config (powerline-default-theme)) (use-package airline-themes :after powerline :config (progn (load-theme 'airline-molokai))) ; }}} ; LSP {{{ (use-package lsp-mode) (use-package lsp-ui) (use-package ccls :disabled :after lsp :hook ((c-mode c++-mode objc-mode cuda-mode) . (lambda () (require 'ccls) (lsp)))) (use-package company-lsp) (use-package lsp-treemacs) ; }}} ; Editing {{{ (use-package flycheck) (use-package company) (use-package company-quickhelp) (use-package yasnippet) ; }}} ; languages {{{ (use-package elixir-mode) (use-package racket-mode) (use-package rust-mode) (use-package nix-mode) (use-package dap-mode) ; }}} (use-package dashboard :init (setq dashboard-set-footer nil) :custom (dashboard-startup-banner 'logo) (dashboard-items '((recents . 5) (projects . 5) (agenda . 5))) (initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) :config (dashboard-setup-startup-hook)) (use-package which-key :config (which-key-mode)) (use-package easy-jekyll :init (setq easy-jekyll-basedir "~/Projects/blog/") (setq easy-jekyll-url "https://foxiepa.ws") (setq easy-jekyll-sshdomain "foxiepa.ws") (setq easy-jekyll-root "/srv/www/foxiepa.ws/htdocs/") (setq easy-jekyll-previewtime "300")) ;;}}} ; graphical mode {{{ (when (display-graphic-p) (tool-bar-mode -1) (scroll-bar-mode -1) (defun transparency (value) "Sets the transparency of the frame window. 0=transparent/100=opaque" (interactive "nTransparency Value 0 - 100 opaque:") (set-frame-parameter (selected-frame) 'alpha value))) ; }}} ; mac settings {{{ (when (eq system-type 'darwin) (setenv "PATH" "/Users/rachel/.nix-profile/bin:/usr/local/bin:/bin:/usr/bin/:/sbin:/usr/sbin" t) (setq mac-right-option-modifier 'none) (setq mac-option-modifier 'meta) (setq mac-command-modifier 'super) (setq ns-use-native-fullscreen t) (setq frame-resize-pixelwise t) (menu-bar-mode -1) ; we have a global menu so this is uneeded (toggle-frame-fullscreen)) ;;}}} ; programming {{{ ; emacs lisp {{{ (add-hook 'emacs-lisp-mode-hook (lambda () (linum-mode) (setq comment-column 0))) ;;}}} ; perl {{{ (defalias 'perl-mode 'cperl-mode) ; tell Flycheck to actually use our local perl. {{{ (defun do-flycheck-perlbrew () (let ((userdir (expand-file-name "~/"))) (setq flycheck-perl-executable (concat userdir "perl5/perlbrew/perls/perl-5.26.1/bin/perl")) (setq flycheck-perl-include-path (list (concat userdir "perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1") (concat userdir "perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1") (when (eq system-type 'darwin) (concat userdir "perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/darwin-2level") (concat userdir "perl5/perlbrew/perls/perl-5.26.1/lib/site_perl/5.26.1/darwin-2level")) )))) ;}}} ;; perl file hooks (add-hook 'cperl-mode-hook (lambda () (linum-mode) (cperl-set-style "PerlStyle") (flycheck-mode) (do-flycheck-perlbrew) )) ;}}} ; haskell {{{ (add-hook 'haskell-mode-hook 'turn-on-haskell-indent) (add-hook 'haskell-mode-hook (lambda () (flycheck-mode))) (eval-after-load "align" '(add-to-list 'align-rules-list '(haskell-types (regexp . "\\(\\s-+\\)\\(::\\|∷\\)\\s-+") (modes quote (haskell-mode literate-haskell-mode))))) (eval-after-load "align" '(add-to-list 'align-rules-list '(haskell-assignment (regexp . "\\(\\s-+\\)=\\s-+") (modes quote (haskell-mode literate-haskell-mode))))) (eval-after-load "align" '(add-to-list 'align-rules-list '(haskell-arrows (regexp . "\\(\\s-+\\)\\(->\\|→\\)\\s-+") (modes quote (haskell-mode literate-haskell-mode))))) (eval-after-load "align" '(add-to-list 'align-rules-list '(haskell-left-arrows (regexp . "\\(\\s-+\\)\\(<-\\|←\\)\\s-+") (modes quote (haskell-mode literate-haskell-mode))))) ;}}} ; racket {{{ (add-hook 'racket-mode-hook (lambda () (linum-mode) (flycheck-mode))) ;}}} ; c / c++ {{{ (setq c-basic-style "k&r" c-basic-offset 4) (add-hook 'c-mode-hook (lambda () (linum-mode) (flycheck-mode))) (add-hook 'c++-mode-hook (lambda () (linum-mode) (flycheck-mode))) (add-hook 'c-mode-hook #'lsp) (add-hook 'c++-mode-hook #'lsp) ; QT {{{ ;}}} ;}}} ; nix {{{ ;(add-to-list 'lsp-language-id-configuration '(nix-mode . "nix")) ;(lsp-register-client ;(make-lsp-client :new-connection (lsp-stdio-connection '("rnix-lsp")) ; :major-modes '(nix-mode) ; :server-id 'nix)) ; }}} ;}}} ; org mode {{{ (add-hook 'org-mode-hook (lambda () (auto-fill-function) (flyspell-mode))) ;}}} ; basic editing {{{ (setq text-width 4 standard-indent 4 indent-tabs-mode t enable-local-variables t ) ;}}} ; Backups and undotree {{{ (setq backup-directory-alist `(("." . "~/.emacs.d/saves"))) (setq undo-tree-history-directory-alist `(("." . "~/.emacs.d/undo-tree"))) (setq auto-save-file-name-transforms `((".*" "~/.emacs.d/auto-saves/" t))) (setq backup-by-copying t) (setq delete-old-versions t kept-new-versions 3 kept-old-versions 2 version-control t) ;}}}