dots-of-war/files/.emacs.d/config.org
2020-11-08 19:36:33 +01:00

5.7 KiB

Emacs Config

General Settings

Typing :ensure t everywhere is very bothersome so I'd rather not do that.

  (require 'use-package-ensure)
  (setq use-package-always-ensure t)

Don't create all the custom things.

  (defconst custom-file "/dev/null")

I don't want my Emacs to create loads of backup files, swap files, etc.

  (setq make-backup-files nil)
  (setq auto-save-default nil)

Nor do I need all the (Windows 2000-esque) UI.

  (scroll-bar-mode -1)
  (tool-bar-mode -1)
  (tooltip-mode -1)
  (menu-bar-mode -1)

When I fire up Emacs I want to be greeted with an empty *scratch* buffer, not the weird GNU screen.

  (setq inhibit-splash-screen t
        initial-scratch-message "")

The whole yes or no prompt takes too much time to type out. y and n is much better.

  (defalias 'yes-or-no-p 'y-or-n-p)

UTF-8 is good and should be the default for everything.

  (setq locale-coding-system 'utf-8)
  (set-terminal-coding-system 'utf-8)
  (set-keyboard-coding-system 'utf-8)
  (set-selection-coding-system 'utf-8)
  (prefer-coding-system 'utf-8)

Which key makes Emacs self documenting.

  (use-package which-key
    :config
	(setq which-key-idle-delay 0.25)
    (which-key-mode 1))

Tramp is awesome for editing remote files. By default it's slow as fuck though.

  (setq tramp-default-method "ssh")

Avoid typing stupid code block thingys all the time.

  (add-to-list 'org-structure-template-alist
	       '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"))

Looks

tab width

  (setq-default tab-width 4)

nyan-mode

Nya-nya-nya-nya-nya…

  (use-package nyan-mode
    :config
    (nyan-mode))

Font

I prefer Source Code Pro for now.

  (add-to-list 'default-frame-alist
               '(font . "xos4 Terminus"))

COMMENT Line numbers

  (use-package linum-relative
    :config
    (setq linum-relative-backend 'display-line-numbers-mode)
    (linum-relative-global-mode 1))

Color Theme

  (use-package gruvbox-theme
    :config
    (load-theme 'gruvbox t))

Beacon

Highlights the cursor each time I switch windows.

  (use-package beacon
    :config
    (beacon-mode 1))

Fringe

Ugly.

  (fringe-mode '(10 . 10))

TODO NAME THIS

Ivy

Ivy for completing stuff, etc. is huge.

  (use-package counsel
    :config
    (ivy-mode)
 (setq ivy-re-builders-alist '((t . ivy--regex-fuzzy)))
 (setq ivy-initial-inputs-alist nil)

    :bind
    ("C-s" . swiper)
    ("M-x". counsel-M-x))

flx

Flx does fancy fuzzy matching with good sorting

  (use-package flx
 :config
 )

general.el

  (use-package general
	:config
	(general-evil-setup)
	(general-def
	  :states '(normal motion)
	  "SPC" nil)

	(general-create-definer elk-leader-def
	  :prefix "SPC"
	  :states '(normal motion)
	  :keymaps 'override)
	(general-create-definer elk-local-leader-def
	  :prefix "SPC m"
	  :states '(normal motion)
	  :keymaps 'local)

	(elk-leader-def
	  "a" 'org-agenda
	  "s" 'org-store-link
	  "c" 'org-capture
	  "t" '((lambda () (interactive) (org-capture nil "t")) :which-key "org-capture whatever")
	  "f" '(counsel-find-file :which-key "open a file")
	  "1" 'delete-other-windows
	  "0" 'delete-window
	  )

	(which-key-add-key-based-replacements "SPC y" "Emacs stuff")
	(elk-leader-def
	  :prefix "SPC y"
	  "c" '((lambda () (interactive) (find-file "~/.emacs.d/config.org")) :which-key "open config.org")
	  "r" '((lambda () (interactive) (load-file "~/.emacs.d/init.el")) :which-key "reload config.org")))

Window management

  (which-key-add-key-based-replacements "SPC b" "Window management")
  (elk-leader-def
	:prefix "SPC b"
	"c" '(delete-window :which-key "close window")
	"b" '(counsel-switch-buffer :which-key "Switch buffer")
	"d" '(kill-buffer :which-key "close buffer")
	"s" '(split-window-below :which-key "h-split")
	"v" '(split-window-right :which-key "v-split"))

Editing

evil-mode

Emacs is lacks a good editor.

  (use-package evil
    :init
    (setq evil-want-keybinding nil)
	(setq evil-want-C-u-scroll t)
	(setq evil-want-fine-undo 'fine)
	(setq evil-undo-system 'undo-tree)
    :config
    (evil-mode 1))

evil-org-mode

  (use-package evil-org
    :after org
    :config
    (add-hook 'org-mode-hook 'evil-org-mode)
    (add-hook 'evil-org-mode-hook
	   (lambda ()
	 (evil-org-set-key-theme)))
    (require 'evil-org-agenda)
    (evil-org-agenda-set-keys))

evil-collection

Keybinds for common modes. Makes evil work everywhere.

  (use-package evil-collection
    :after evil
    :config
    (evil-collection-init))

Undo-tree

Undo tree is based.

  (use-package undo-tree
    :init
    :config
	(global-undo-tree-mode t))

ace-jump

  (use-package ace-jump-mode)
  (elk-leader-def "x" 'ace-jump-mode)

Code stuff

Rainbow everything!

because rainbows are fancy!

  (use-package rainbow-delimiters
	:init
	:config
	(rainbow-delimiters-mode t))

  (use-package rainbow-blocks
	:init
	:config
	(rainbow-blocks-mode t))