Documentation

This commit is contained in:
Curt Spark 2020-04-15 06:12:18 +01:00
parent b6c876a2c5
commit 2049a07e59
1 changed files with 153 additions and 115 deletions

View File

@ -6,22 +6,32 @@ Welcome to my Emacs configuration!
* Config
** Appearance
*** Remove Tool Bar
Remove the Tool bar at the top for more room.
Set mode to false:
#+BEGIN_SRC emacs-lisp
(tool-bar-mode -1)
#+END_SRC
*** Remove Menu Bar
Remove the Menu Bar at the top for more room.
Set mode to false:
#+BEGIN_SRC emacs-lisp
(menu-bar-mode -1)
#+END_SRC
*** Remove Scroll Bar
Remove the Scroll Bar at the side for more room.
Set mode to false:
#+BEGIN_SRC emacs-lisp
(scroll-bar-mode -1)
#+END_SRC
*** Display Line Numbers
Display line numbers for all Programming Modes.
Add hook to enable display-line-numbers-mode on all programming major modes:
#+BEGIN_SRC emacs-lisp
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
#+END_SRC
*** Modern Fringes
Modern Fringes is a package that makes the side fringes of Emacs much more cleaner and modern.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package modern-fringes
:ensure t
@ -29,6 +39,8 @@ Welcome to my Emacs configuration!
(modern-fringes-invert-arrows))
#+END_SRC
*** Theming
The theme for Emacs.
Install and set the theme, ensuring that it is always installed:
#+BEGIN_SRC emacs-lisp
(use-package dracula-theme
:ensure t
@ -36,12 +48,15 @@ Welcome to my Emacs configuration!
(load-theme 'dracula t))
#+END_SRC
*** All The Icons
All The Icons is a package to display cool icons within Emacs.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package all-the-icons
:ensure t)
#+END_SRC
All The Icons for Ivy/Counsel
All The Icons Support for Ivy/Counsel. Which are autocompletion tools in emacs
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package all-the-icons-ivy
:ensure t
@ -50,6 +65,8 @@ All The Icons for Ivy/Counsel
#+END_SRC
*** Mode Line
**** Spaceline
Spaceline is the modeline of Spacemacs.
Install the package, enable it and ensure that it always is installed. Then make sure that the default spaceline config is enabled and that the seperators are arrows, for a powerline effect:
#+BEGIN_SRC emacs-lisp
(use-package spaceline
:ensure t
@ -59,19 +76,21 @@ All The Icons for Ivy/Counsel
(spaceline-spacemacs-theme))
#+END_SRC
Display the time on the Mode Line, this is more useful for EXWM.
Display the time on the Mode Line, this is more useful for EXWM:
#+BEGIN_SRC emacs-lisp
(setq display-time-default-load-average nil)
(display-time-mode t)
#+END_SRC
**** Diminish
With Diminish you can optionally remove some of the names of the modes in the Mode Line.
With Diminish you can optionally remove some of the names of the minor modes in the Mode Line.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package diminish
:ensure t)
#+END_SRC
*** Emacs Dashboard
Install the Emacs Dashboard :
A startup dashboard for Emacs, replacing the boring old one.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package dashboard
:ensure t
@ -80,7 +99,8 @@ Install the Emacs Dashboard :
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
#+END_SRC
Emacs Dashboard Config :
**** Emacs Dashboard Configuration
#+BEGIN_SRC emacs-lisp
;; Set the title
(setq dashboard-banner-logo-title "Welcome to Bloxie's Emacs!")
@ -136,27 +156,10 @@ Emacs Dashboard Config :
("?" "" "?/h" #'show-help nil "<" ">"))
))
#+END_SRC
** Dynamic Window Tiling
*** Edwina
Edwina is a dynamic window manager for Emacs.
It automatically arranges your Emacs panes (called “windows” in Emacs parlance) into predefined layouts, dwm-style.
+BEGIN_SRC emacs-lisp
(use-package edwina
:ensure t
:config
(setq display-buffer-base-action '(display-buffer-below-selected))
(edwina-setup-dwm-keys)
(edwina-mode 1))
+END_SRC
*** Golden Ratio
+BEGIN_SRC emacs-lisp
(use-package golden-ratio
:ensure t
:init
(golden-ratio-mode 1))
+END_SRC
** Custom
*** Resizing Buffers
These are controls to resize the width and height of windows.
Set keys:
#+BEGIN_SRC emacs-lisp
(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
@ -164,6 +167,8 @@ It automatically arranges your Emacs panes (called “windows” in Emacs parlan
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)
#+END_SRC
*** Fullscreen Function
Emacs does not begin fullscreen,
this function will automatically fullscreen Emacs on startup:
#+BEGIN_SRC emacs-lisp
(defun fullscreen (&optional f)
(interactive)
@ -177,15 +182,64 @@ Call Function on Startup
#+BEGIN_SRC emacs-lisp
(fullscreen)
#+END_SRC
** Evil Mode
** Autosave
Default Emacs will store backup and "temporary" files in the edited files directory, instead this changes it to move it to the UNIX Temporary Directory.
Set backup/temporary file directories:
#+BEGIN_SRC emacs-lisp
(use-package evil
:ensure t
:init
(evil-mode 1))
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
#+END_SRC
** Wind Move
Windmove is built into Emacs. It lets you move point from window to window using Shift and the arrow keys. This is easier to type than C-x o when there are multiple windows open.
Enable Wind Move:
#+BEGIN_SRC emacs-lisp
(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))
#+END_SRC
** Global Revert Mode
Global Revert Mode is a minor mode that automatically refreshes opened buffers when an external tool has changed their data.
Enable Global Revert Mode:
#+BEGIN_SRC emacs-lisp
(global-auto-revert-mode t)
#+END_SRC
** Rainbow Delimiters
This Minor Mode will mark pairs of brackets with colours.
Install the package, enable it and ensure that it always is installed.
#+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.
Install the package, enable it and ensure that it always is installed.
#+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
** Org Mode
*** Simple Org Mode Preview in HTML
*** Simple Org Mode Preview
These are a simple set of functions that will automatically refresh the other buffer, which presumably has the Org Mode PDF open.
This workflow expects you to have 2 window panes open, which can be in any orientation. The Org Mode File you are editing, and the PDF Document to view the changes you are making.
Define functions and set keybindings:
#+BEGIN_SRC emacs-lisp
(defun update-other-buffer ()
(interactive)
@ -211,6 +265,10 @@ Call Function on Startup
(define-key org-mode-map (kbd "C-c rb") 'org-compile-beamer-and-update-other-buffer)
#+END_SRC
*** LateX Preview
This package will automatically convert LaTeX Snippets into viewable LaTeX in your Org Mode Documents.
LaTeX Snippets can be defined with text between dollar signs. Example : $ax+bx^2$
These LaTeX snippets will also show up when converting to PDF.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package org-fragtog
:ensure t
@ -218,6 +276,8 @@ Call Function on Startup
(add-hook 'org-mode-hook 'org-fragtog-mode))
#+END_SRC
*** Org Bullets
Org Bullets convert the Asterisks of Org Mode headers into unicode Bullet point with multiple styles.
Install the package, enable it and ensure that it always is installed, then add a hook to enable the Bullet Points when on Org Major Mode:
#+BEGIN_SRC emacs-lisp
(use-package org-bullets
:ensure t
@ -225,24 +285,41 @@ Call Function on Startup
(add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
#+END_SRC
*** Enable Indent Mode
A hook that will autmatically make sure that indenting of headers are enabled by default, this is visually useful and emulates code hierarchy.
Install the package, enable it and ensure that it always is installed, then add a hook to enable the Indentation when on Org Major Mode:
#+BEGIN_SRC emacs-lisp
(add-hook 'org-mode-hook 'org-indent-mode)
#+END_SRC
*** Enable Beamer Support
A hook that will automatically make sure that Beamer Org Mode templates and exportion are enabled by default, for slideshow creation with LaTeX.
Install the package, enable it and ensure that it always is installed, then add a hook to enable the Beamer Mode when on Org Major Mode:
#+BEGIN_SRC emacs-lisp
(add-hook 'org-mode-hook 'org-beamer-mode)
#+END_SRC
** Agenda
For Org-Agenda, you can set a location of your Org Agenda file here.
Set Agenda Directory:
#+BEGIN_SRC emacs-lisp
(setq org-agenda-files (quote("~/.emacs.d/agenda.org")))
#+END_SRC
Calendar/Diary integration :
This is will integrate the Calendar/Diary into Org-Agenda, so you can get access to dates on public holidays etc.
Set diary to true:
#+BEGIN_SRC emacs-lisp
(setq org-agenda-include-diary t)
#+END_SRC
** Evil Mode
Evil Mode, a package designed to emulate modal editing and vim keybindings in Emacs.
Install the package, enable it and ensure that it always is installed, and then make sure that evil-mode is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package evil
:ensure t
:init
(evil-mode 1))
#+END_SRC
** Projectile
Install Projectile:
Projectile is a project manager, like a dynamic bookmarking system. It will automatically add repositories as projects which you can access via Dired or Ivy completion.
Install the package, enable it and ensure that it always is installed, and then make sure that projectile-mode is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package projectile
:ensure t
@ -251,6 +328,8 @@ Install Projectile:
#+END_SRC
** Auto Completion
*** Ivy
Ivy is an autocompletion framework, it will automatically fuzzy find search words for you. This includes file managing, searching, and more via its extensibility and the Counsel package.
Install the package, enable it and ensure that it always is installed, and then make sure that ivy-mode is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package ivy
:ensure t
@ -260,18 +339,22 @@ Install Projectile:
("C-s" . swiper))
#+END_SRC
Ivy Configuration :
Ivy Configuration
Set an option to make Ivy show previously opened/edited buffers in the buffer selection :
#+BEGIN_SRC emacs-lisp
(setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t)
;(setq enable-recursive-minibuffers t)
#+END_SRC
*** Counsel
A collection of Ivy-enhanced versions of common Emacs commands.
Install the package, enable it and ensure that it always is installed:
#+BEGIN_SRC emacs-lisp
(use-package counsel
:ensure t)
#+END_SRC
Counsel for Projectile
Counsel Support in Projectile.
Install the package, enable it and ensure that it always is installed, and then set up bindings for the Projectile specific prefix:
#+BEGIN_SRC emacs-lisp
(use-package counsel-projectile
:ensure t
@ -281,14 +364,16 @@ Counsel for Projectile
#+END_SRC
*** Company
**** Company Base
Company is a text completion framework for Emacs. The name stands for "complete anything". It uses pluggable back-ends and front-ends to retrieve and display completion candidates.
Install the package, enable it and ensure that it always is installed, and then make sure that company-mode is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package company
:ensure t
:init
(add-hook 'prog-mode-hook 'company-mode))
(company-mode))
#+END_SRC
Configuration :
***** Configuration
#+BEGIN_SRC emacs-lisp
; No delay in showing suggestions.
@ -306,6 +391,8 @@ Configuration :
#+END_SRC
**** Company Quickhelp
Company Quickhelp is an extension to company which introduces documentation popups that appears when idling on a company completion candidate.
Install the package, enable it and ensure that it always is installed, and then make sure that company-quickhelp-mode is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package company-quickhelp
:ensure t
@ -313,14 +400,38 @@ Configuration :
(company-quickhelp-mode))
#+END_SRC
*** Which Key
Which Key is an insanely useful package that will automatically show you the possible key combinations to finish a command.
Install the package, enable it and ensure that it always is installed, and then make sure that which-key is enabled by default:
#+BEGIN_SRC emacs-lisp
(use-package which-key
:ensure t
:init
(which-key-mode))
#+END_SRC
** LSP Mode
** Multiple Cursors
The Multiple Cursors package is pretty self explanatory; you can select and manipulate multiple lines of the same text at the same time; move the cursors in unison. Etc.
Install the package, enable it and ensure that it always is installed, and then bind the useful functions to a mnenomic key chord:
#+BEGIN_SRC emacs-lisp
(use-package multiple-cursors
:ensure t
:bind
("C-c m" . 'mc/mark-next-like-this)
:bind
("C-c C-m" . 'mc/mark-all-like-this))
#+END_SRC
** Expand Region
Auto selects a region of text/code, if executed multiple times it will wrap further, like layers of a binary onion.
Install the package, enable it and ensure that it always is installed, and then bind the useful functions to a mnenomic key chord:
#+BEGIN_SRC emacs-lisp
(use-package expand-region
:ensure t
:bind
("C-c e" . 'er/expand-region))
#+END_SRC
** LSP Mode
LSP mode will give you IDE capabilities in Emacs, using Microsoft's Universal Language Server Protocol. The same one that VSCode uses for linting, autocompletion. Etc.
Install the package, enable it and ensure that it always is installed, add a hook to make sure it only is activated on Programming Related Major Modes, and set a keychord for the custom prefix.
+BEGIN_SRC emacs-lisp
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "s-l")
@ -332,7 +443,10 @@ Configuration :
;; if you want which-key integration
(lsp-mode . lsp-enable-which-key-integration))
:commands lsp)
+END_SRC
*** Configuration
+BEGIN_SRC emacs-lisp
;; optionally
(use-package lsp-ui :commands lsp-ui-mode
:ensure t)
@ -350,80 +464,4 @@ Configuration :
(use-package dap-mode
:ensure t)
;; (use-package dap-LANGUAGE) to load the dap adapter for your language
#+END_SRC
** Spell Correction
*** Flyspell Correct Ivy
+BEGIN_SRC emacs-lisp
(use-package flyspell-correct-ivy
:ensure t
:bind ("C-;" . flyspell-correct-wrapper)
:init
(setq flyspell-correct-interface #'flyspell-correct-ivy)
(add-hook 'org-mode-hook 'flyspell-mode)
(setq-default ispell-program-name "aspell"))
+END_SRC
** Multiple Cursors
#+BEGIN_SRC emacs-lisp
(use-package multiple-cursors
:ensure t
:bind
("C-c m" . 'mc/mark-next-like-this)
:bind
("C-c C-m" . 'mc/mark-all-like-this))
#+END_SRC
** Expand Region
Auto selects a region of text/code.
#+BEGIN_SRC emacs-lisp
(use-package expand-region
:ensure t
:bind
("C-c e" . 'er/expand-region))
#+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
** Autosave
#+BEGIN_SRC emacs-lisp
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
#+END_SRC
** Global Revert Mode
#+BEGIN_SRC emacs-lisp
(global-auto-revert-mode t)
#+END_SRC
** Wind Move
Windmove is built into Emacs. It lets you move point from window to window using Shift and the arrow keys. This is easier to type than C-x o when there are multiple windows open.
#+BEGIN_SRC emacs-lisp
(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))
#+END_SRC