+TITLE: Bloxie's Emacs Configuration #+CREATOR: Bloxiebird * Introduction Welcome to my Emacs configuration! * Config ** Appearance *** Remove Tool Bar #+BEGIN_SRC emacs-lisp (tool-bar-mode -1) #+END_SRC *** Remove Menu Bar #+BEGIN_SRC emacs-lisp (menu-bar-mode -1) #+END_SRC *** Remove Scroll Bar #+BEGIN_SRC emacs-lisp (scroll-bar-mode -1) #+END_SRC *** Theming #+BEGIN_SRC emacs-lisp (use-package dracula-theme :ensure t :init (load-theme 'dracula t)) #+END_SRC *** All The Icons #+BEGIN_SRC emacs-lisp (use-package all-the-icons :ensure t) #+END_SRC All The Icons for Ivy/Counsel #+BEGIN_SRC emacs-lisp (use-package all-the-icons-ivy :ensure t :init (all-the-icons-ivy-setup)) #+END_SRC *** Mode Line Mode Line Configuration : #+BEGIN_SRC emacs-lisp (setq telephone-line-lhs '((evil . (telephone-line-evil-tag-segment)) (accent . (telephone-line-vc-segment telephone-line-erc-modified-channels-segment telephone-line-process-segment)) (nil . (telephone-line-buffer-segment)))) (setq telephone-line-rhs '((nil . (telephone-line-misc-info-segment)) (accent . (telephone-line-major-mode-segment)) (evil . (telephone-line-airline-position-segment)))) (setq telephone-line-primary-left-separator 'telephone-line-flat telephone-line-secondary-left-separator 'telephone-line-flat telephone-line-primary-right-separator 'telephone-line-flat telephone-line-secondary-right-separator 'telephone-line-flat) (setq telephone-line-height 20 telephone-line-evil-use-short-tag t) #+END_SRC #+BEGIN_SRC emacs-lisp (use-package telephone-line :ensure t :init (telephone-line-mode)) #+END_SRC *** Emacs Dashboard Install the Emacs Dashboard : #+BEGIN_SRC emacs-lisp (use-package dashboard :ensure t :config (dashboard-setup-startup-hook)) (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) #+END_SRC Emacs Dashboard Config : #+BEGIN_SRC emacs-lisp ;; Set the title (setq dashboard-banner-logo-title "Welcome to Bloxie's Emacs!") ;; Set the banner (setq dashboard-startup-banner 'logo) ;; Value can be ;; 'official which displays the official emacs logo ;; 'logo which displays an alternative emacs logo ;; 1, 2 or 3 which displays one of the text banners ;; "path/to/your/image.png" which displays whatever image you would prefer ;; Content is not centered by default. To center, set (setq dashboard-center-content t) ;; To disable shortcut "jump" indicators for each section, set (setq dashboard-show-shortcuts nil) ;;To customize which widgets are displayed, you can use the following snippet (setq dashboard-items '((recents . 5) (bookmarks . 5) (projects . 5) (agenda . 5) (registers . 5))) #+END_SRC ** EXWM Emacs X Window Manager Add hashtag before + to enable +BEGIN_SRC emacs-lisp (use-package exwm :ensure t :config (require 'exwm-config) (exwm-config-default)) +END_SRC Add hashtag before + to enable EXWM System Try +BEGIN_SRC emacs-lisp (require 'exwm-systemtray) (exwm-systemtray-enable) +END_SRC EXWM Specific Keybindings (global-set-key (kbd "s-e") 'evil-quit-all) (global-set-key (kbd "s-k") 'exwm-workspace-move) (global-set-key (kbd "s-w") 'exwm-workspace-swap) ** Custom *** Resizing Buffers #+BEGIN_SRC emacs-lisp (global-set-key (kbd "") 'shrink-window) (global-set-key (kbd "") 'enlarge-window) (global-set-key (kbd "") 'shrink-window-horizontally) (global-set-key (kbd "") 'enlarge-window-horizontally) #+END_SRC *** Fullscreen Function #+BEGIN_SRC emacs-lisp (defun fullscreen (&optional f) (interactive) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))) #+END_SRC Call Function on Startup #+BEGIN_SRC emacs-lisp (fullscreen) #+END_SRC ** Symon A system resource viewer Add hashtag before + to enable +BEGIN_SRC emacs-lisp (use-package symon :ensure t :init (symon-mode 1)) +END_SRC ** DMenu A recreation of the iconic Suckless Dynamic Menu. #+BEGIN_SRC emacs-lisp (use-package dmenu :ensure t :bind ("s-f" . 'dmenu)) #+END_SRC ** Evil Mode #+BEGIN_SRC emacs-lisp (use-package evil :ensure t :init (evil-mode 1)) #+END_SRC ** Org Mode *** Org Bullets #+BEGIN_SRC emacs-lisp (use-package org-bullets :ensure t :config (add-hook 'org-mode-hook (lambda () (org-bullets-mode)))) #+END_SRC *** Enable Indent Mode #+BEGIN_SRC emacs-lisp (add-hook 'org-mode-hook 'org-indent-mode) #+END_SRC *** Enable Beamer Support #+BEGIN_SRC emacs-lisp (add-hook 'org-mode-hook 'org-beamer-mode) #+END_SRC ** Projectile Install Projectile: #+BEGIN_SRC emacs-lisp (use-package projectile :ensure t :init (projectile-mode)) #+END_SRC ** Auto Completion *** Ivy #+BEGIN_SRC emacs-lisp (use-package ivy :ensure t :init (ivy-mode 1)) #+END_SRC Ivy Configuration : #+BEGIN_SRC emacs-lisp (setq ivy-use-virtual-buffers t) (setq enable-recursive-minibuffers t) #+END_SRC #+END_SRC *** Counsel #+BEGIN_SRC emacs-lisp (use-package counsel :ensure t) #+END_SRC Counsel for Projectile #+BEGIN_SRC emacs-lisp (use-package counsel-projectile :ensure t :init (counsel-projectile-mode)) (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) #+END_SRC *** Company #+BEGIN_SRC emacs-lisp (use-package company :ensure t :init (global-company-mode 1)) #+END_SRC *** Which Key #+BEGIN_SRC emacs-lisp (use-package which-key :ensure t :init (which-key-mode)) #+END_SRC ** Spell Correction *** Flyspell Correct Ivy #+BEGIN_SRC emacs-lisp (use-package flyspell-correct-ivy :ensure t :bind ("C-M-;" . flyspell-correct-wrapper) :init (setq flyspell-correct-interface #'flyspell-correct-ivy)) #+END_SRC ** Rainbow Delimiters This Minor Mode will mark pairs of brackets with colours. #+BEGIN_SRC emacs-lisp (use-package rainbow-delimiters :ensure t) #+END_SRC Set Minor Mode as Global : #+BEGIN_SRC emacs-lisp (define-globalized-minor-mode global-rainbow-delimiters-mode rainbow-delimiters-mode (lambda () (rainbow-delimiters-mode 1))) (global-rainbow-delimiters-mode 1) #+END_SRC ** Rainbow Mode This Minor Mode will highlight RGB/HEX values with their respective colours. #+BEGIN_SRC emacs-lisp (use-package rainbow-mode :ensure t) #+END_SRC Set Minor Mode as Global : #+BEGIN_SRC emacs-lisp (define-globalized-minor-mode global-rainbow-mode rainbow-mode (lambda () (rainbow-mode 1))) (global-rainbow-mode 1) #+END_SRC