|
|
- ;;; init.el --- just my init file
-
- ;;; Commentary:
-
- ;;; This is just my init file, and these comments at the start are
- ;;; here to appease the lint.
-
- ;;; Feel free to copy any bits you might need, just don't tell anyone
- ;;; you got them from me.
-
- ;;; Code:
-
- (require 'package)
- (add-to-list 'package-archives
- '("MELPA" . "http://melpa.org/packages/"))
- (package-initialize)
-
- ;; use-package
- (unless (package-installed-p 'use-package)
- (package-refresh-contents)
- (package-install 'use-package))
- (require 'use-package)
- (setq use-package-always-ensure t)
-
- ;; Allow all themes to run
- (setq custom-safe-themes t)
-
- ;; Very visual stuff first
-
- ;; Mode line
- (use-package smart-mode-line
- :config
- (setq sml/theme 'dark)
- (sml/setup))
-
- ;; Font
- (set-face-attribute 'default nil :height 105)
- (set-face-attribute 'default nil :font "monospace")
-
- ;; Theme
- (add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
- (use-package base16-theme
- :config
- (load-theme 'snazzy))
-
- ;; Whitespace
- (setq-default show-trailing-whitespace t)
-
- ;; Misc nice visual stuff
- (show-paren-mode 1)
- (set-face-attribute 'show-paren-match nil :weight 'normal)
- (global-hl-line-mode 0)
- ;(global-display-line-numbers-mode)
- (setq column-number-mode t)
- (setq ring-bell-function 'ignore)
- (menu-bar-mode -1)
- (when (fboundp 'tool-bar-mode)
- (tool-bar-mode -1))
- (when (fboundp 'scroll-bar-mode)
- (scroll-bar-mode -1))
-
- ;; End of very visual stuff
-
- ;; Customfile
- (setq custom-file "~/.emacs.d/custom.el")
- (load custom-file)
-
- ;; Increase GC Threshold - Speeds up startup according to zirrostig on GitHub
- (setq-default gc-cons-threshold 10000000)
-
- ;; Dear emacs,
- ;; please don't leave garbage all around my filesystem.
- (setq backup-directory-alist
- `((".*" . ,(concat user-emacs-directory
- "backups"))))
- (setq auto-save-default nil)
- (setq create-lockfiles nil)
-
- ;; Window switching
- (defun prev-window()
- "Other-window but with arg -1."
- (interactive)
- (other-window -1))
- (define-key global-map (kbd "C-x o") 'other-window)
- (define-key global-map (kbd "C-x p") 'prev-window)
- (when (boundp 'term-raw-map)
- (define-key term-raw-map (kbd "C-x o") 'other-window)
- (define-key term-raw-map (kbd "C-x p") 'prev-window))
-
- ;; ANSI escape codes in compilation from
- ;; http://endlessparentheses.com/ansi-colors-in-the-compilation-buffer-output.html
- (use-package ansi-color
- :config
- (defun endless/colorize-compilation ()
- "Colorize from `compilation-filter-start' to `point'."
- (let ((inhibit-read-only t))
- (ansi-color-apply-on-region
- compilation-filter-start (point))))
- (add-hook 'compilation-filter-hook
- #'endless/colorize-compilation))
-
- ;; Ido
- (use-package ido)
- (use-package ido-completing-read+)
- (ido-mode t)
- (setq ido-enable-flex-matching t)
- (setq ido-use-filename-at-point nil)
- (setq ido-auto-merge-work-directories-length -1)
- (setq ido-use-virtual-buffers t)
- (ido-ubiquitous-mode 1)
-
- ;; Smex
- (use-package smex)
- (setq smex-save-file (concat user-emacs-directory ".smex-items"))
- (smex-initialize)
- (global-set-key (kbd "M-x") 'smex)
-
- ;; Langs that don't need much config
- (use-package yaml-mode
- :mode "\\.yaml\\'")
- (use-package toml-mode
- :mode "\\.toml\\'")
- (use-package gdscript-mode
- :mode "\\.gd\\'")
- (use-package papyrus-mode
- :load-path "papyrus-mode"
- :mode "\\.psc\\'")
- (use-package scopes-mode
- :load-path "scopes-mode"
- :mode "\\.sc\\'")
- ;; Langs that do need config below
-
- ;; Rust
- (use-package rust-mode
- :config (setq rust-format-on-save t))
- (use-package flycheck-rust
- :config
- (with-eval-after-load 'rust-mode
- (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))
-
- ;; GLSL
- (use-package glsl-mode
- :mode ("\\.glsl\\'"
- "\\.vert\\'"
- "\\.frag\\'"
- "\\.geom\\'"))
-
- ;; Markdown
- (use-package markdown-mode)
- (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
-
- ;; Purescript
- (use-package psc-ide)
- (use-package purescript-mode
- :hook
- (lambda ()
- (psc-ide-mode)
- (turn-on-purescript-indentation))
- :config
- (customize-set-variable 'psc-ide-rebuild-on-save t))
-
- ;; JS
- (use-package rjsx-mode
- :mode ("\\.js\\'"
- "\\.json\\'")
- :config
- (setq js-indent-level 2)
- (setq js2-strict-missing-semi-warning nil))
-
- ;; Elm
- ;; Keys:
- ;; - Compile: C-c M-c
- ;; - Add type annotations: C-c C-a
- ;; - Clean imports: C-c C-r
- ;; - Sort imports: C-c C-s
- ;; - Format: C-c C-f
- ;; - Test: C-c C-v
- (use-package elm-mode
- :mode "\\.elm\\'"
- :config
- (setq elm-sort-imports-on-save t)
- (setq elm-format-on-save t))
-
- ;; C
- (setq c-default-style "k&r"
- c-basic-offset 4)
-
- ;; Flycheck
- (use-package flycheck
- :config
- (setq flycheck-check-syntax-automatically '(mode-enabled save))
- (add-hook 'after-init-hook #'global-flycheck-mode))
- (use-package flycheck-inline
- :after (flycheck)
- :config
- (with-eval-after-load 'flycheck
- (add-hook 'flycheck-mode-hook #'flycheck-inline-mode)))
-
- ;; Org
- (use-package org)
- (setq org-agenda-files '("~/org"))
- (define-key global-map (kbd "C-c l") 'org-store-link)
- (define-key global-map (kbd "C-c a") 'org-agenda)
- (setq org-checkbox-hierarchical-statistics t)
- (setq org-agenda-files '("~/org"))
-
- ;; Yanking
- (dolist (command '(yank yank-pop))
- (eval `(defadvice ,command (after indent-region activate)
- (and (not current-prefix-arg)
- (member major-mode '(emacs-lisp-mode python-mode
- plain-tex-mode
- c-mode
- c++-mode
- objc-mode
- latex-mode
- rust-mode))
- (let ((mark-even-if-inactive transient-mark-mode))
- (indent-region (region-beginning) (region-end) nil))))))
-
- ;; Tabs
- (defun infer-indentation-style ()
- (let ((space-count (how-many "^ " (point-min) (point-max)))
- (tab-count (how-many "^\t" (point-min) (point-max))))
- (if (> space-count tab-count) (setq indent-tabs-mode nil))
- (if (> tab-count space-count) (setq indent-tabs-mode t))))
- (setq-default indent-tabs-mode nil)
- (infer-indentation-style)
- (define-key global-map (kbd "RET") 'newline-and-indent)
-
- ;; Rainbow parens
- (use-package rainbow-delimiters
- :config
- (add-hook 'prog-mode-hook 'rainbow-delimiters-mode))
-
- ;; Company
- (use-package company
- :config
- (add-hook 'after-init-hook 'global-company-mode)
- (define-key global-map (kbd "<backtab>") 'company-complete))
-
- ;; Compiling
- (global-set-key [f6] 'recompile)
-
- ;; Misc packages
- (use-package eldoc)
-
- ;; Fix hang on exit in Sway
- (setq x-select-enable-clipboard-manager nil)
-
- (provide 'init)
- ;;; init.el ends here
|