5.7 KiB
5.7 KiB
Crony's Emacs Config
- GARBAGE COLLECTION
- BACKUPS
- SANE DEFAULTS
- GUI TWEAKS
- ELECTRIC PAIR
- EVIL MODE
- GENERAL KEYBINDINGS
- DIMINISH
- THEME
- HELPFUL
GARBAGE COLLECTION
(defvar file-name-handler-alist-old file-name-handler-alist)
(setq file-name-handler-alist nil
gc-cons-threshold most-positive-fixnum)
(add-hook 'after-init-hook
`(lambda ()
(setq file-name-handler-alist file-name-handler-alist-old)
(setq gc-cons-threshold (* 2 1000 1000))
(setq gc-cons-percentage 0.1))
t)
BACKUPS
Move backup files to a diff directory.
(setq backup-directory-alist '(("." . "~/.cache/emacs/"))
backup-by-copying t ; Don't delink hardlinks
version-control t ; Use version numbers on backups
delete-old-versions t ; Automatically delete excess backups
kept-new-versions 20 ; how many of the newest versions to keep
kept-old-versions 5 ; and how many of the old
)
SANE DEFAULTS
(delete-selection-mode 1) ;; You can select text and delete it by typing.
(electric-indent-mode -1) ;; Turn off the weird indenting that Emacs does by default.
(global-auto-revert-mode t) ;; Automatically show changes if the file has changed
(setq initial-scratch-message nil) ;; disable the initial scratch message.
(setq-default delete-pair-blink-delay 0) ;; remove delay when deleting pairs
(prefer-coding-system 'utf-8) ;; utf-8
(global-set-key [escape] 'keyboard-escape-quit) ;; escape minibuffers with ESC
GUI TWEAKS
(global-visual-line-mode t) ;; Enable truncated lines
(menu-bar-mode -1) ;; Disable the menu bar
(scroll-bar-mode -1) ;; Disable the scroll bar
(tool-bar-mode -1) ;; Disable the tool bar
(set-fringe-mode 10) ;; Give me some breathing room
(fset 'yes-or-no-p 'y-or-n-p) ;; don't ask to spell out "yes"
(setq-default frame-resize-pixelwise t) ;; avoid leaving a gap beetween the frame and the screen
(column-number-mode) ;; Display line colums
;; disable line numbers for following modes
(dolist (mode '(org-mode-hook
term-mode-hook
shell-mode-hook
eshell-mode-hook))
(add-hook mode (lambda () (display-line-numbers-mode 0))))
(global-display-line-numbers-mode 1) ;; Display line numbers
(blink-cursor-mode -1) ;; disable blinking cursor
ELECTRIC PAIR
(electric-pair-mode 1)
(add-hook 'org-mode-hook (lambda ()
(setq-local electric-pair-inhibit-predicate
`(lambda (c)
(if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))
EVIL MODE
(use-package evil
:init
(setq evil-want-integration t
evil-want-keybinding nil
evil-want-C-u-scroll t
evil-want-C-i-jump nil
evil-vsplit-window-right t
evil-split-window-below t
evil-undo-system 'undo-redo)
:config
(evil-mode 1)
(define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state)
(define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join)
(evil-set-initial-state 'messages-buffer-mode 'normal)
(evil-set-initial-state 'dashboard-mode 'normal))
(use-package evil-collection
:after evil
:config
(evil-collection-init))
GENERAL KEYBINDINGS
(use-package general
:config
)
DIMINISH
(use-package diminish)
ORG MODE
Update and setup org mode
;; fixes a bug where evil mnode bounds return key, so it isn't accesible
(with-eval-after-load 'evil-maps
(define-key evil-motion-state-map (kbd "RET") nil))
(defun crony/org-mode-setup ()
(org-indent-mode)
(visual-line-mode 1))
;; Replace list hyphen with dot
(font-lock-add-keywords 'org-mode
'(("^ *\\([-]\\) "
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
(use-package org
:defer t
:init (require 'org-tempo)
:hook (org-mode . crony/org-mode-setup)
:config
(setq org-ellipsis " ▾")
(setq org-edit-src-content-indentation 0)
;; org agenda settings
(setq org-agenda-start-with-log-mode t)
(setq org-log-done 'time)
(setq org-log-into-drawer t)
(setq org-agenda-files
'("~/docs/notes/tasks.org"
"~/docs/notes/birthdays.org"))
;; refiling
(setq org-refile-targets
'(("archive.org" :maxlevel . 1)
("tasks.org" :maxlevel . 1)))
;; save after refiling
(advice-add 'org-refile :after 'org-save-all-org-buffers)
(setq org-return-follows-link t))
Column width
(defun crony/org-mode-visual-fill ()
(setq visual-fill-column-width 110
visual-fill-column-center-text t)
(visual-fill-column-mode 1))
(use-package visual-fill-column
:defer t
:hook (org-mode . crony/org-mode-visual-fill))
Enabling Org Bullets
(use-package org-bullets
:after org
:hook (org-mode . org-bullets-mode))
Enabling Table of Contents
(use-package toc-org
:after org
:commands toc-org-enable
:init (add-hook 'org-mode-hook 'toc-org-enable))
THEME
(use-package gruvbox-theme
:config
(load-theme 'gruvbox-dark-medium :no-confirm))
HELPFUL
(use-package helpful
:bind
([remap describe-function] . helpful-function)
([remap describe-command] . helpful-command)
([remap describe-variable] . helpful-variable)
([remap describe-key] . helpful-key))