351 lines
9.4 KiB
EmacsLisp
351 lines
9.4 KiB
EmacsLisp
:;; -*- 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 (("<f11>" . '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
|
|
(("<f11>" . '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)
|
|
|
|
;}}}
|