;; -*- lexical-binding: t -*- ;; Bootstrap straight.el for package management (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)) ;; Disable package.el from loading at startup (setq package-enable-at-startup nil) ;; Ensure custom writes to specific file (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (load custom-file 'noerror 'nomessage) ;; Change the location of file backups/locks into the emacs.d/backups/ (setq backup-directory-alist `(("." . ,(concat user-emacs-directory "backups")))) ;;;; VISUAL ;; Disable Scroll bar, menubar (menu-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1) ;; Set location of custom theme dir (setq custom-theme-directory (concat user-emacs-directory "themes")) (load-theme 'UniverseHighContrast) ;;;; END VISUAL ;;;; PACKAGE INSTALL AND CONFIG ;; Set the packagemanager of use-package (setq straight-use-package-by-default t) ;; Default to lazy loading (setq use-package-always-defer t) ;; Ensure use-package.el is installed (straight-use-package 'use-package) ;; Ensure shell variables are loaded (use-package exec-path-from-shell :demand :init (exec-path-from-shell-initialize) ) ;; Profiling (use-package esup) ;; Prevents emacs and packages from messily writing to dirs (use-package no-littering :demand t) ;;;; Science Related (use-package conda) ;;;; End Science Related ;;;; Web Related (use-package web-mode :init (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode)) (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode)) ) (use-package php-mode) ;;;; End Web related ;;;; Company Related (use-package company :demand t :bind (("C-" . company-complete)) :custom-face (company-preview ((t (:background "#000000" :foreground "#ffffff")))) (company-preview-common ((t (:inherit company-preview :foreground "#ff00cf")))) (company-preview-search ((t (:inherit company-preview :background "black")))) (company-scrollbar-bg ((t (:background "grey35")))) (company-scrollbar-fg ((t (:background "#a22390")))) (company-template-field ((t (:background "grey75" :foreground "black")))) (company-tooltip ((t (:background "#353535" :foreground "white")))) (company-tooltip-common ((t (:foreground "magenta")))) (company-tooltip-mouse ((t (:inherit company-tooltip-selection)))) (company-tooltip-search ((t (:inherit company-tooltip-selection)))) (company-tooltip-search-selection ((t (:inherit company-tooltip-selection)))) (company-tooltip-selection ((t (:background "#4584a2" :foreground "white")))) ) (add-hook 'after-init-hook 'global-company-mode) ;; LSP related (use-package lsp-haskell) (use-package lsp-mode :init (setq lsp-keymap-prefix "C-c l") :hook ( (dart-mode . lsp) (python-mode . lsp) (c-mode . lsp) (c++-mode . lsp) (haskell-mode . lsp)) ;; which key support v v v (lsp-mode . lsp-enable-which-key-integration) :commands lsp) ;; optionally (use-package lsp-ui :commands lsp-ui-mode) ;; if you are helm user (use-package helm-lsp :commands helm-lsp-workspace-symbol) ;; if you are ivy user (use-package lsp-ivy :commands lsp-ivy-workspace-symbol) (use-package lsp-treemacs :commands lsp-treemacs-errors-list) ;; optionally if you want to use debugger (use-package dap-mode) ;; (use-package dap-LANGUAGE) to load the dap adapter for your language ;; optional if you want which-key integration (use-package which-key :config (which-key-mode)) ;; END LSP related ;; projectile (use-package projectile :commands projectile-mode) (projectile-mode +1) ;; Recommended keymap prefix on macOS (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) ;; projectile ; Python (use-package pyvenv :init (setenv "WORKON_HOME" "~/.pyenv/versions") :hook ( (python-mode . pyvenv-mode) ) ) ; C related (use-package company-ctags) (use-package company-c-headers) ; Haskell (use-package company-ghci) ;;;; End Company Related ;;;; Haskell Related (use-package haskell-mode :config (setq haskell-mode-hook '(flyspell-prog-mode interactive-haskell-mode)) ) (use-package lsp-haskell) (use-package ghci-completion) ;;;; End Haskell Related ;;;; NEURON Related (use-package nrnhoc :straight (:package nrnhoc :type git :host github :repo "***REMOVED***csterratt/neuron-emacs")) ;;;; END NEURON Related ;;; Lisp / Parentheses Related (use-package rainbow-delimiters :commands rainbow-delimiters-mode :hook ( (emacs-lisp-mode . rainbow-delimiters-mode) (geiser-mode . rainbow-delimiters-mode) ) :custom-face (rainbow-delimiters-depth-1-face ((t (:foreground "#69f"))) ) (rainbow-delimiters-depth-2-face ((t (:foreground "#39b"))) ) (rainbow-delimiters-depth-3-face ((t (:foreground "#278"))) ) (rainbow-delimiters-depth-4-face ((t (:foreground "#281"))) ) (rainbow-delimiters-depth-5-face ((t (:foreground "#047"))) ) (rainbow-delimiters-depth-6-face ((t (:foreground "#138"))) ) (rainbow-delimiters-depth-7-face ((t (:foreground "#708"))) ) (rainbow-delimiters-depth-8-face ((t (:foreground "#920"))) ) ) (use-package paredit :hook ( (emacs-lisp-mode . paredit-mode) (geiser-mode . paredit-mode) ) ) ;;; End Lisp / Parentheses Related ;;;; Racket Related (use-package geiser-racket) ;;;; End Racket Related ;;;; Org Related ;; (use-package org) (use-package org-contrib) (use-package org :config (require 'org-ref) (require 'org-tempo) (tempo-define-template "Lab Template" '("#+TITLE: PHY324: LAB TITLE"n "#+AUTHOR: ***REMOVED*** | ***REMOVED***"n "#+DATE: \\today"n "#+LATEX_HEADER: \\usepackage{natbib}"n "#+LATEX_HEADER: \\usepackage{float}"n "#+LATEX_CLASS: labtemplate"n "#+OPTIONS: toc:nil"n ""n "* Abstract:"n "* Introduction:"n > p "* Methods:"n "* Results:"n "* Discussion:"n "bibliographystyle:ieeetr"n "bibliography:~/Documents/Bibliography/references.bib" >) " n > "#+NAME: fig:" (s name) > n > "#+ATTR_LaTeX: :placement [H]" > n > "[[" (s image) "]]" > n > p >) "