#+title: Emacs Config #+property: header-args :tangle init.el #+author: Dominik Kaiser * Package Management #+begin_src elisp (require 'package) (setq package-archives '(("melpa" . "https://melpa.org/packages/") ("melpa-stable" . "https://stable.melpa.org/packages/") ("org" . "https://orgmode.org/elpa/") ("elpa" . "https://elpa.gnu.org/packages/"))) (package-initialize) (unless package-archive-contents (package-refresh-contents)) (unless (package-installed-p 'use-package) (package-install 'use-package)) (require 'use-package) (setq use-package-always-ensure t) #+end_src * UI ** Font #+begin_src elisp (set-face-attribute 'default nil :height 120) #+end_src ** Remove bars #+begin_src elisp (menu-bar-mode -1) (scroll-bar-mode -1) (tool-bar-mode -1) (tooltip-mode -1) ;; disable tooltips #+end_src ** Line numbers #+begin_src elisp (add-hook 'prog-mode-hook #'display-line-numbers-mode) (setq display-line-numbers-type 'relative) #+end_src ** Remove startup message #+begin_src elisp (setq inhibit-startup-message t) #+end_src ** Set visible bell #+begin_src elisp (setq visible-bell t) #+end_src ** Fringes #+begin_src elisp (set-fringe-mode 10) #+end_src ** Theme #+begin_src elisp (use-package doom-themes :config (load-theme 'doom-solarized-dark t)) #+end_src ** Modeline *** Doom modeline #+begin_src elisp (use-package doom-modeline :ensure t :init (doom-modeline-mode 1)) #+end_src *** Display columns #+begin_src elisp (column-number-mode) #+end_src ** Olivetti #+begin_src elisp (use-package olivetti :bind ("C-c f" . olivetti-mode) :init (setq-default olivetti-body-width 100) (add-hook 'org-mode-hook #'olivetti-mode) (add-hook 'text-mode-hook #'olivetti-mode)) #+end_src * Completion ** Ivy #+begin_src elisp (use-package ivy :bind (("C-s" . swiper) :map ivy-minibuffer-map ("TAB" . ivy-alt-done)) :config (ivy-mode 1)) #+end_src *** Ivy-rich #+begin_src elisp (use-package ivy-rich :init (ivy-rich-mode 1)) #+end_src ** Counsel #+begin_src elisp (use-package counsel :bind (("M-x" . counsel-M-x) ("C-x b" . counsel-ibuffer) ("C-x C-f" . counsel-find-file)) :config (setq ivy-initial-inputs-alist nil)) ;; Don't start searches with ^ #+end_src * Helpers ** which-key #+begin_src elisp (use-package which-key :init (which-key-mode) :config (setq which-key-idle-delay 0.3)) #+end_src * Org-mode ** Visuals *** Block highlighting These settings ensure that block highlights aren't visible when collapsed. #+begin_src elisp (custom-set-faces '(org-block-begin-line ((t (:inherit default :background nil)))) '(org-block-end-line ((t (:inherit default :background nil))))) #+end_src *** Indentation #+begin_src elisp (setq org-startup-indented t) #+end_src * Project Management ** Projectile #+begin_src elisp (use-package projectile :config (projectile-mode) :bind-keymap ("C-c p" . projectile-command-map)) #+end_src *** Counsel-Projectile #+begin_src elisp (use-package counsel-projectile :config (counsel-projectile-mode)) #+end_src ** Direnv #+begin_src elisp (use-package direnv :config (direnv-mode)) #+end_src * Version Control ** Magit #+begin_src lisp (use-package magit :commands (magit-status magit-get-current-branch) :custom (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) #+end_src * Dev ** LSP #+begin_src elisp (use-package lsp-mode :init (setq lsp-keymap-prefix "C-c l") :hook (prog-mode . lsp) :config (lsp-enable-which-key-integration t) :commands lsp) #+end_src ** Company Mode #+begin_src elisp (use-package company :after lsp-mode :hook (lsp-mode . company-mode) :bind (:map company-active-map ("" . company-complete-selection)) (:map lsp-mode-map ("" . company-indent-or-complete-common)) :custom (company-minimum-prefix-lenght 1) (company-idle-delay 0.0)) #+end_src ** Commenting #+begin_src elisp (use-package evil-nerd-commenter :bind ("M-/" . evilnc-comment-or-uncomment-lines)) #+end_src ** Programming Languages *** Rust #+begin_src elisp (use-package rust-mode :hook (rust-mode . (lambda () (setq indent-tabs-mode nil))) (rust-mode . prettify-symbols-mode) :config (setq rust-format-on-save t)) #+end_src * 42 ** Header #+begin_src elisp (load "~/.config/emacs/42header.el") #+end_src