#+TITLE: KyleKrein's GNU Emacs Config #+STARTUP: showeverything #+OPTIONS: toc:2 #+PROPERTY: header-args:emacs-lisp :lexical t * IMPORTANT PROGRAMS TO LOAD FIRST ** Evil Mode #+begin_src emacs-lisp :lexical t (use-package evil :ensure t :init ;; tweak evil's configuration before loading it (setq evil-want-integration t) ;; This is optional since it's already set to t by default. (setq evil-want-keybinding nil) (setq evil-vsplit-window-right t) (setq evil-split-window-below t) (evil-mode)) (use-package evil-collection :ensure t :after evil :config (setq evil-collection-mode-list '(dashboard dired ibuffer)) (evil-collection-init)) (use-package evil-tutor :ensure t) #+end_src ** General Keybindings #+begin_src emacs-lisp (use-package general :ensure t :config (general-evil-setup) ;; set up 'SPC' as the global leader key (general-create-definer leader-keys :states '(normal insert visual emacs) :keymaps 'override :prefix "SPC" ;; set leader :global-prefix "M-SPC") ;; access leader in insert mode (leader-keys "." '(find-file :wk "Find file") "TAB TAB" '(comment-line :wk "Comment lines")) ) #+end_src * Fonts Defining the various fonts that Emacs will use. #+begin_src emacs-lisp (set-face-attribute 'default nil :font "JetBrains Mono" :height 110 :weight 'medium) (set-face-attribute 'variable-pitch nil :font "Ubuntu" :height 120 :weight 'medium) (set-face-attribute 'fixed-pitch nil :font "JetBrains Mono" :height 110 :weight 'medium) ;; Makes commented text and keywords italics. ;; This is working in emacsclient but not emacs. ;; Your font must have an italic face available. (set-face-attribute 'font-lock-comment-face nil :slant 'italic) (set-face-attribute 'font-lock-keyword-face nil :slant 'italic) ;; This sets the default font on all graphical frames created after restarting Emacs. ;; Does the same thing as 'set-face-attribute default' above, but emacsclient fonts ;; are not right unless I also add this method of setting the default font. (add-to-list 'default-frame-alist '(font . "JetBrains Mono-11")) ;; Uncomment the following line if line spacing needs adjusting. (setq-default line-spacing 0.12) #+end_src * GRAPHICAL USER INTERFACE TWEAKS Let's make GNU Emacs look a little better. ** Disable Menubar, Toolbars and Scrollbars #+begin_src emacs-lisp (menu-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1) #+end_src ** Display Line Numbers and Truncated Lines #+begin_src emacs-lisp (global-display-line-numbers-mode 1) (global-visual-line-mode t) #+end_src * ORG MODE ** Enabling Table of Contents #+begin_src emacs-lisp (use-package toc-org :ensure t :commands toc-org-enable :init (add-hook 'org-mode-hook 'toc-org-enable)) #+end_src ** Enabling Org Bullets Org-bullets gives us attractive bullets rather than asterisks. #+begin_src emacs-lisp (add-hook 'org-mode-hook 'org-indent-mode) (use-package org-bullets :ensure t) (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))) #+end_src * WHICH-KEY #+begin_src emacs-lisp (use-package which-key :ensure t :init (which-key-mode 1) :config (setq which-key-side-window-location 'bottom which-key-sort-order #'which-key-key-order-alpha which-key-sort-uppercase-first nil which-key-add-column-padding 1 which-key-max-display-columns nil which-key-min-display-lines 6 which-key-side-window-slot -10 which-key-side-window-max-height 0.25 which-key-idle-delay 0.8 which-key-max-description-length 25 which-key-allow-imprecise-window-fit t which-key-separator " → " )) #+end_src