diff options
Diffstat (limited to 'emacs/.emacs.d/init.el')
-rw-r--r-- | emacs/.emacs.d/init.el | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/emacs/.emacs.d/init.el b/emacs/.emacs.d/init.el deleted file mode 100644 index b7bd392..0000000 --- a/emacs/.emacs.d/init.el +++ /dev/null @@ -1,267 +0,0 @@ -;; --- FUNCTIONS --- -(defun load-if-exists (filename) - (when (file-exists-p filename) (load-file filename))) - -(defun bab/disable-line-numbers (&optional dummy dummy2) - (display-line-numbers-mode -1)) - -(defun bab/sidebar-toggle () - "Toggle both `dired-sidebar' and `ibuffer-sidebar'." - (interactive) - (dired-sidebar-toggle-sidebar) - (ibuffer-sidebar-toggle-sidebar)) - -;; --- BUG WORKAROUNDS --- - -;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 -;; Affects ability to use the gnu package repository on gnutls 3.6. -;; Should recheck when emacs >26 is out. -(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") - -;; https://stackoverflow.com/questions/26108655/ -;; https://lists.gnu.org/archive/html/bug-gnu-emacs/2014-12/msg00781.html -;; Apparently the gnu package repository has had unverifiable -;; signatures since 2014 and nobody cares ¯\_(ツ)_/¯ -(setq package-check-signature nil) - -;; --- TERMINAL SUPPORT --- -(add-to-list 'term-file-aliases '("st-256color" . "tmux-256color")) - -;; --- PACKAGE REPOSITORIES --- -(require 'package) -(setq package-archives - '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/"))) - -(package-initialize) - -(require 'use-package) - -(require 'whitespace) -(require 'yasnippet) -(require 'evil) - -;; --- GLOBAL MODES --- -(evil-mode 1) ;; Make emacs usable -(global-hl-line-mode 1) ;; Highlight the line containing the cursor -(show-paren-mode 1) ;; Highlight matching parenthesis - -(use-package ivy - :config - (setq ivy-use-virtual-buffers t - enable-recursive-minibuffers t) - (ivy-mode 1)) - -(use-package flycheck - :ensure t - :config - (add-to-list 'display-buffer-alist - `(,(rx bos "*Flycheck errors*" eos) - (display-buffer-reuse-window - display-buffer-in-side-window) - (side . bottom) - (reusable-frames . visible) - (window-height . 0.33))) - :init - (global-flycheck-mode)) - -;; --- ORG MODE --- -(use-package org-ql - :demand t - :mode - (("\\.org$" . org-mode)) - :init - (add-to-list 'auto-mode-alist `(,(expand-file-name "~/org/") . org-mode)) - :bind - (("C-c a" . org-agenda)) - :hook - (org-agenda-finalize . bab/disable-line-numbers) - :config - (org-super-agenda-mode 1) - (load-file "~/.emacs.d/org-mode.el")) - -(use-package calfw-org - :demand t) - -;; --- PROJECTS --- -(use-package projectile - :demand t - :config - (setq projectile-completion-system 'ivy) - (projectile-mode 1) - :bind-keymap - ("C-c p" . projectile-command-map)) - -(use-package counsel-projectile - :config (counsel-projectile-mode 1) - :after (ivy projectile)) - -;; --- WINDOW MANAGEMENT --- -(windmove-default-keybindings 'control) -(use-package windswap - :init - (windswap-default-keybindings 'control 'shift)) - -;; --- GIT INTEGRATION --- -(use-package magit - :commands - (magit-status) - :bind - (("<f12>" . magit-status)) - :hook - (magit-status-mode . bab/disable-line-numbers)) - -;; --- FILE TREE / BUFFER LIST --- -(use-package projectile-speedbar - :bind - ("<f8>" . projectile-speedbar-toggle) - :hook - (speedbar-mode . bab/disable-line-numbers)) - -;; --- AUTO-COMPLETE --- -(use-package company - :config - (global-company-mode) - (require 'color) - (let ((bg "midnight blue")) - (set-face-attribute 'company-tooltip nil :background bg) - (set-face-attribute 'company-scrollbar-bg nil :background (color-lighten-name bg 20)) - (set-face-attribute 'company-scrollbar-fg nil :background (color-lighten-name bg 40))) - ) - -(use-package company-posframe - :after company - :config - (setq company-posframe-show-indicator nil - company-posframe-quickhelp-delay nil) - (company-posframe-mode 1) - ) - -(use-package company-c-headers - :after company - :config (push 'company-c-headers company-backends)) - -(use-package company-lsp - :after company - :config (push 'company-lsp company-backends)) - -;; --- LANGUAGE SERVERS --- -(use-package lsp-mode - :hook (typescript-mode . lsp-deferred) - :config - (add-to-list 'lsp-language-id-configuration '(zig-mode . "zig")) - (lsp-register-client - (make-lsp-client - :new-connection (lsp-stdio-connection "/opt/zls/zls") - :major-modes '(zig-mode) - :server-id 'zls)) - :commands (lsp lsp-deferred)) - -(use-package lsp-ui - :hook (lsp-mode . lsp-ui-mode)) - -(use-package company-lsp - :commands company-lsp) - -;; --- AUTO-FORMAT ON SAVE --- -(use-package prettier-js - :config - (setq prettier-js-args - '("--trailing-comma" "all" - "--use-tabs" "true" - "--print-width" "110" - "--arrow-parens" "avoid" - "--end-of-line" "auto")) - :hook (typescript-mode . prettier-js-mode)) - -;; --- THEME --- -(use-package doom-themes - :config - (setq doom-themes-enable-bold t - doom-themes-enable-italic t) - (load-theme 'doom-palenight t) - (doom-themes-visual-bell-config) - (doom-themes-neotree-config) - (doom-themes-org-config)) - -;; --- TODO --- -;;(require 'undo-tree) - -;; --- POWERLINE --- -(require 'telephone-line) -(telephone-line-mode 1) - -;; --- WHITESPACE --- -;; Show whitespace for prog-mode, but not other modes -(define-global-minor-mode bab/global-whitespace-mode whitespace-mode - (lambda () (when (derived-mode-p 'prog-mode) (whitespace-mode)))) -(bab/global-whitespace-mode 1) - -;; --- INDENTATION --- -;; Two callable functions for enabling/disabling tabs in Emacs -(defun disable-tabs () (setq indent-tabs-mode nil)) -(defun enable-tabs () - (local-set-key (kbd "TAB") 'tab-to-tab-stop) - (setq indent-tabs-mode t)) - -;; Hooks to Enable Tabs -(add-hook 'prog-mode-hook 'enable-tabs) -;; Hooks to Disable Tabs -;; Using tabs in lisp just leads to mixing tabs and spaces, which is yucky -(add-hook 'lisp-mode-hook 'disable-tabs) -(add-hook 'emacs-lisp-mode-hook 'disable-tabs) -(add-hook 'zig-mode-hook 'disable-tabs) - -;; --- GENERAL PREFERENCES --- -(setq-default - ;; --- THEME CONFIGURATION --- - ;;dracula-enlarge-headings nil - - ;; -- TABS AND INDENTATION -- - ;; Set tab stops to every four spaces - tab-width 4 - ;; Tab key indents if cursor at start of line, otherwise inserts tab character - tab-always-indent nil - ;; Backspace deletes one whole tab character - backward-delete-char-untabify-method nil - - ;; --- MOUSE --- - ;; Don't speed up during continued mouse wheel scrolling - mouse-wheel-progressive-speed nil - - ;; -- C LANGUAGE -- - ;; Overall tab and brace placement style - c-default-style "linux" - ;; Indent width - c-basic-offset 4 - - ;; -- LISP -- - inferior-lisp-program "sbcl" - - ;; -- WHITESPACE -- - ;; Clean up trailing whitespace automatically on save - whitespace-action '(auto-cleanup) - ;; Configure what to highlight. - ;; Main difference from default is that for overlong lines, - ;; we only highlight the overlong tail, not the whole line - whitespace-style - '(face trailing tabs spaces lines-tail empty indentation space-after-tab - space-before-tab space-mark tab-mark) - - ;; -- MISC -- - ;; Display line numbers, relative to the current line - display-line-numbers 'relative - ;; Don't show the emacs startup screen - inhibit-startup-screen t - ) - -(let ((fg "RoyalBlue4") - (bg 'unspecified) - (faces '(whitespace-hspace whitespace-newline whitespace-space whitespace-tab))) - (dolist (face faces) - (set-face-attribute face nil :foreground fg :background bg))) - -(load-if-exists "~/.emacs.d/local.el") - -(setq custom-file "~/.emacs.d/custom.el") -(load-file custom-file) |