Inspired by https://github.com/larstvei/dot-emacs/blob/master/init.org
(unless (package-installed-p 'use-package)
(package-install 'use-package))
Shows the total number of matches of a search
(global-anzu-mode +1)
subtly tells you which characters infringe upon the 80 char limit
(use-package column-enforce-mode
:ensure t
:diminish column-enforce-mode
:init
(setq column-enforce-column 99)
:config
(progn
(add-hook 'prog-mode-hook 'column-enforce-mode)))
(use-package evil
:ensure t
:config
;; Make Evil's point behave more like Emacs'
(setq evil-want-change-word-to-end nil)
(setq evil-move-cursor-back nil)
(evil-mode))
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode 1)
;("SPC f" . ido-find-file)
(require 'ido-vertical-mode)
(ido-mode 1)
(ido-vertical-mode 1)
(setq ido-vertical-define-keys 'C-n-and-C-p-only)
(use-package org-bullets
:ensure t
:init
(setq org-bullets-bullet-list
'("◉" "◎" "" "○" "►" "◇"))
:config
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
(custom-set-faces
'(org-level-1 ((t (:inherit outline-1 :height 1.2))))
'(org-level-2 ((t (:inherit outline-2 :height 1.1))))
'(org-level-3 ((t (:inherit outline-3 :height 1.0))))
'(org-level-4 ((t (:inherit outline-4 :height 0.9))))
'(org-level-5 ((t (:inherit outline-5 :height 1.8))))
)
(use-package restart-emacs
:ensure t
:bind* (("C-x M-c" . restart-emacs)))
Port of vim’s commentary plugin
(evil-commentary-mode)
(package-install 'intero)
(add-hook 'haskell-mode-hook 'intero-mode)
;;start the mode automatically in most programming modes (requires Emacs 24+)
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode)
(use-package shrink-whitespace
:ensure t
:bind* (("M-m g SPC" . shrink-whitespace)))
M-x autocompletion using Ido
(use-package smex
:ensure t
:bind
(("M-x" . smex)))
Make a list of modes that are enabled by default but are not useful and disable them
(dolist (mode
'(tool-bar-mode ; No toolbars, more room for text
scroll-bar-mode ; No scroll bars either
menu-bar-mode ; No menu bar
blink-cursor-mode)) ; The blinking cursor gets old
(funcall mode 0))
;(global-linum-relative-mode)
; Temporary solution (not relative)
(when (version<= "26.0.50" emacs-version )
(global-display-line-numbers-mode))
To prevent accidentally closing emacs (happens to me all the time in i3wm)
(setq confirm-kill-emacs 'y-or-n-p)
latex-mode
, not tex-mode
, should be started when the file extension is .tex
(add-to-list 'auto-mode-alist '("\\.tex\\'" . latex-mode))
.md
files should open in markdown-mode
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(show-paren-mode 1)
(setq show-paren-delay 0)
(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))
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
)
Useful when in fullscreen mode in i3wm
(display-time-mode 1)
;(setq display-time-format "%I:%M:%S")
(fset 'yes-or-no-p 'y-or-n-p)
(defun red/dashboard-banner ()
"""Set a dashboard banner including information on package init time and garbage collections."""
(setq dashboard-banner-logo-title
(format "Emacs ready in %.2f seconds with %d garbage collections."
(float-time (time-subtract after-init-time before-init-time)) gcs-done)))
(use-package dashboard
:ensure t
:init
(add-hook 'after-init-hook 'dashboard-refresh-buffer)
(add-hook 'dashboard-mode-hook 'red/dashboard-banner)
:config
(dashboard-setup-startup-hook)
;;(setq dashboard-banner-logo-title "If Brute force doesn't solve your problem, You aren't using enough")
(setq dashboard-startup-banner "~/.emacs.d/logo_small.png")
(defun dashboard-insert-space ()
(insert ""))
(setq dashboard-items '((recents . 10)
;;(projects . 5)
;;(agenda . 5)
))
(dashboard-setup-startup-hook))
(use-package all-the-icons)
;(use-package telephone-line
; :ensure t
; :config
; (setq telephone-line-primary-right-separator 'telephone-line-abs-left
; telephone-line-secondary-right-separator 'telephone-line-abs-hollow-left)
; (setq telephone-line-height 30
; telephone-line-evil-use-short-tag t)
; (telephone-line-mode 1)
; )
;
;(setq battery-mode-line-format " %p%% %t ")
;(setq display-time-default-load-average nil)
;; (display-battery-mode 1) -- not for desktop
;(display-time-mode 1)
(use-package doom-modeline
:ensure t
:hook (after-init . doom-modeline-mode))
;; Whether display the icon for major mode. It respects `doom-modeline-icon'.
(setq doom-modeline-major-mode-icon t)
;; Whether display color icons for `major-mode'. It respects
;; `doom-modeline-icon' and `all-the-icons-color-icons'.
(setq doom-modeline-major-mode-color-icon t)
;; The maximum displayed length of the branch name of version control.
(setq doom-modeline-vcs-max-length 12)
(require 'doom-themes)
;; Global settings (defaults)
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
;; Load the theme (doom-one, doom-molokai, etc); keep in mind that each theme
;; may have their own settings.
(load-theme 'doom-one t)
;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config)
;; Enable custom neotree theme (all-the-icons must be installed!)
(doom-themes-neotree-config)
;; or for treemacs users
(doom-themes-treemacs-config)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config)
(require 'all-the-icons)