aboutsummaryrefslogtreecommitdiff
path: root/Emacs/.config
diff options
context:
space:
mode:
Diffstat (limited to 'Emacs/.config')
-rw-r--r--Emacs/.config/emacs/config.org126
1 files changed, 120 insertions, 6 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org
index 5410ceb..3c59a90 100644
--- a/Emacs/.config/emacs/config.org
+++ b/Emacs/.config/emacs/config.org
@@ -18,6 +18,7 @@ serves as both documentation *and* code. The essential idea is that I
can explain my ideas in prose then provide the code as a block.
Here's an example of some Emacs Lisp code:
+
#+begin_src emacs-lisp
;;; config.el --- Compiled configuration from config.org -*- lexical-binding: t; -*-
@@ -112,6 +113,7 @@ lambda."
** Automatically run a command on saving
Define a macro which creates hooks into ~after-save-hook~. On certain
~conditions~ being met, ~to-run~ is evaluated.
+
#+begin_src emacs-lisp
(use-package simple
:defer t
@@ -134,6 +136,7 @@ use:
compilation
- On my desktop (=oldboy=) I'd prefer to use 4-6 threads as I can
afford more, so I can get a faster load up.
+
#+begin_src emacs-lisp
(use-package comp
:init
@@ -145,6 +148,7 @@ use:
#+end_src
** Clean buffer list
Clean all buffers except for those in ~+oreo/keep-buffers~.
+
#+begin_src emacs-lisp
(defconst +oreo/keep-buffers
(list "config.org" "*scratch*"
@@ -176,6 +180,7 @@ but it works for me.
2024-04-23: Found this option ~switch-to-buffer-obey-display-actions~
which makes manual buffer switches obey the same constraints via
~display-buffer-alist~ as creating the buffer automatically.
+
#+begin_src emacs-lisp
(use-package window
:demand t
@@ -201,6 +206,7 @@ here."
Here's some ~:display~ records for buffers that don't really have
configuration anywhere else in the file. Good examples as well on how
to use the keyword.
+
#+begin_src emacs-lisp
(use-package window
:defer t
@@ -234,6 +240,7 @@ stored in the Emacs lisp folder (look at
[[file:elisp/personal-solarized-theme.el][this file]]). It's
essentially a copy of the solarized theme (from the ~solarized-themes~
package) with a few personal changes.
+
#+begin_src emacs-lisp
(use-package custom
:init
@@ -273,6 +280,7 @@ dark easily, so here's a command to switch between them.
#+end_src
** Font size
Make font size bigger on my laptop and smaller on my desktop.
+
#+begin_src emacs-lisp
(use-package faces
:defer t
@@ -296,6 +304,7 @@ So we can use it to store some useful information.
2024-06-04: I use to load [[*Org mode][org-mode]] here for the scratch
buffer and it literally added 2 seconds of load time, so let's just
use fundamental mode and call it a day.
+
#+begin_src emacs-lisp
(use-package emacs
:defer t
@@ -318,6 +327,7 @@ use fundamental mode and call it a day.
#+end_src
** Blinking cursor
Configure the blinking cursor.
+
#+begin_src emacs-lisp
(use-package frame
:defer t
@@ -344,6 +354,7 @@ I've got a custom Emacs lisp package
([[file:elisp/better-mode-line.el][here]]) which sets up the default
mode line as a set of 3 segments: left, centre and right. It pads out
the mode line with space strings to achieve this.
+
#+begin_src emacs-lisp
(use-package better-mode-line
:load-path "elisp/"
@@ -403,6 +414,7 @@ the borders for Emacs, so called fringes. However, some things like
[[info:emacs#Compilation Mode][Compilation Mode]] do require fringes
to provide arrows. So I use the default-minimal fringe style (exactly
1 pixel on either side of the window) to ensure I get those.
+
#+begin_src emacs-lisp
(use-package fringe
:defer t
@@ -411,6 +423,7 @@ to provide arrows. So I use the default-minimal fringe style (exactly
#+end_src
** Mouse
Who uses a mouse? This disables the use of GUI dialogues for stuff.
+
#+begin_src emacs-lisp
(setq-default use-file-dialog nil
use-dialog-box nil)
@@ -420,6 +433,7 @@ Emacs can automatically scroll the buffer depending on how many lines
the cursor is away from the limits of the window. Here I set the
margin to 8 (so it'll start correcting at 8) and scroll-conservatively
to the same value so it'll keep the cursor centred.
+
#+begin_src emacs-lisp
(use-package emacs
:init
@@ -442,6 +456,7 @@ I also define prefix leaders for differing applications. These are
quite self explanatory by their name and provide a nice way to
visualise all bindings under a specific heading just by searching the
code.
+
#+begin_src emacs-lisp
(use-package general
:straight t
@@ -537,6 +552,7 @@ code.
#+end_src
*** Some binds for Emacs
Some bindings that I couldn't fit elsewhere easily.
+
#+begin_src emacs-lisp
(use-package emacs
:after general
@@ -610,6 +626,7 @@ Setup the evil package, with some opinionated keybindings:
+ Swapping any two textual "objects" is such a Vim thing (the verb
object model) but by default it can't seem to do it. But Emacs
can...
+
#+begin_src emacs-lisp
(use-package evil
:straight t
@@ -659,6 +676,7 @@ Setup the evil package, with some opinionated keybindings:
#+end_src
*** Evil surround
Evil surround is a port for vim-surround.
+
#+begin_src emacs-lisp
(use-package evil-surround
:after evil
@@ -668,6 +686,7 @@ Evil surround is a port for vim-surround.
#+end_src
*** Evil commentary
Allows generalised commenting of objects easily.
+
#+begin_src emacs-lisp
(use-package evil-commentary
:after evil
@@ -678,6 +697,7 @@ Allows generalised commenting of objects easily.
*** Evil multi cursor
Setup for multi cursors in Evil mode. Don't let evil-mc setup it's own
keymap because it uses 'gr' as its prefix, which I don't like.
+
#+begin_src emacs-lisp
(use-package evil-mc
:after evil
@@ -689,11 +709,11 @@ keymap because it uses 'gr' as its prefix, which I don't like.
:config
(global-evil-mc-mode))
#+end_src
-
*** Evil collection
Provides a community based set of keybindings for most modes in
Emacs. I don't necessarily like all my modes having these bindings
though, as I may disagree with some. So I use it in a mode to mode basis.
+
#+begin_src emacs-lisp
(use-package evil-collection
:straight t
@@ -702,6 +722,7 @@ though, as I may disagree with some. So I use it in a mode to mode basis.
*** Evil number
Increment/decrement a number at point like Vim does, but use bindings
that don't conflict with Emacs default.
+
#+begin_src emacs-lisp
(use-package evil-numbers
:straight t
@@ -726,6 +747,7 @@ after init.
Setup vim-like bindings for the minibuffer ("M-(j|k)" for down|up the
selection list).
+
#+begin_src emacs-lisp
(use-package ivy
:straight t
@@ -773,6 +795,7 @@ selection list).
*** Counsel
Setup for counsel. Load as late as possible, after ivy force requires
it.
+
#+begin_src emacs-lisp
(use-package counsel
:straight t
@@ -820,6 +843,7 @@ looking for a command.
*** Orderless
Orderless sorting method for completion, probably one of the best
things ever.
+
#+begin_src emacs-lisp
(use-package orderless
:straight t
@@ -833,6 +857,7 @@ things ever.
*** Completions-list
In case I ever use the completions list, some basic commands to look
around.
+
#+begin_src emacs-lisp
(use-package simple
:defer t
@@ -852,6 +877,7 @@ around.
Company is the auto complete system I use. I don't like having heavy
setups for company as it only makes it slower to use. In this case,
just setup some evil binds for company.
+
#+begin_src emacs-lisp
(use-package company
:defer t
@@ -873,8 +899,9 @@ eye candy, it has aided my comprehension and speed of recognition
(recognising symbols is easier than words).
Essentially a use-package keyword which makes declaring pretty symbols
-for language modes incredibly easy. Checkout my [[C/C++][C/C++]] configuration
-for an example.
+for language modes incredibly easy. Checkout my [[C/C++][C/C++]]
+configuration for an example.
+
#+begin_src emacs-lisp
(use-package prog-mode
:demand t
@@ -968,6 +995,7 @@ snippets for ease of use.
Just define a few abbrevs for various date-time operations. Also
define a macro that will assume a function for the expansion, helping
with abstracting a few things away.
+
#+begin_src emacs-lisp
(use-package abbrev
:defer t
@@ -1003,6 +1031,7 @@ given name. Supports skeletons for inserting text. To make it easier
for later systems to define their own auto inserts, I define a
~use-package~ keyword ~auto-insert~ which allows one to define an
entry for ~auto-insert-alist~.
+
#+begin_src emacs-lisp
(use-package autoinsert
:demand t
@@ -1025,6 +1054,7 @@ entry for ~auto-insert-alist~.
*** Yasnippet
Look at the snippets [[file:../.config/yasnippet/snippets/][folder]]
for all snippets I've got.
+
#+begin_src emacs-lisp
(use-package yasnippet
:straight t
@@ -1044,6 +1074,7 @@ and swiper) and I hope to use it later on in the config. There are
two use-package declarations here: one for ~hydra~ itself, and the
other for ~use-package-hydra~ which provides the keyword ~:hydra~ in
use-package declarations.
+
#+begin_src emacs-lisp
(use-package hydra
:straight t)
@@ -1068,6 +1099,7 @@ use-package declarations.
** Info
Info is GNU's attempt at better man pages. Most Emacs packages have
info pages so I'd like nice navigation options.
+
#+begin_src emacs-lisp
(use-package info
:defer t
@@ -1086,6 +1118,7 @@ I don't really like line numbers, I find them similar to
[[*Fringes][fringes]] (useless space), but at least it provides some
information. Sometimes it can help with doing repeated commands so a
toggle option is necessary.
+
#+begin_src emacs-lisp
(use-package display-line-numbers
:defer t
@@ -1112,16 +1145,18 @@ current instance to test it immediately.
2023-10-16: Unless I'm doing some optimisations or tests, I don't
really need this in my config at all times. Enable when needed.
+
#+begin_src emacs-lisp
(use-package esup
:straight t
:defer t)
#+end_src
-** Hl-line
+** WAIT Hl-line
:PROPERTIES:
:header-args:emacs-lisp: :tangle no
:END:
Highlights the current line.
+
#+begin_src emacs-lisp
(use-package hl-line
:straight t
@@ -1131,6 +1166,7 @@ Highlights the current line.
#+end_src
** Recentf
Recentf provides a method of keeping track of recently opened files.
+
#+begin_src emacs-lisp
(use-package recentf
:defer t
@@ -1140,6 +1176,7 @@ Recentf provides a method of keeping track of recently opened files.
Setup avy with leader. As I use ~avy-goto-char-timer~ a lot, use the
~C-s~ bind which replaces isearch. Switch isearch to M-s in case I
need to use it.
+
#+begin_src emacs-lisp
(use-package avy
:straight t
@@ -1171,6 +1208,7 @@ management of windows (closing, switching, etc).
#+end_src
** Ace link
Avy-style link following!
+
#+begin_src emacs-lisp
(use-package ace-link
:straight t
@@ -1184,6 +1222,7 @@ Avy-style link following!
Helpful provides a modernised interface for some common help
commands. I replace ~describe-function~, ~describe-variable~ and
~describe-key~ by their helpful counterparts.
+
#+begin_src emacs-lisp
(use-package helpful
:straight t
@@ -1205,6 +1244,7 @@ commands. I replace ~describe-function~, ~describe-variable~ and
** Which-key
Which key uses the minibuffer when performing a keybind to provide
possible options for the next key.
+
#+begin_src emacs-lisp
(use-package which-key
:straight t
@@ -1234,6 +1274,7 @@ in most repositories nowadays.
*** Grep
I have no use for standard 'grep'; ~counsel-swiper~ does the same
thing faster and within Emacs lisp. ~rgrep~ is useful though.
+
#+begin_src emacs-lisp
(use-package grep
:defer t
@@ -1298,6 +1339,7 @@ nicer. It uses margins by default and centres using fill-column. I
actually really like olivetti mode particularly with my [[*Mode
line][centred mode-line]], so I also define a global minor mode which
enables it in all but the minibuffer.
+
#+begin_src emacs-lisp
(use-package olivetti
:straight t
@@ -1316,6 +1358,7 @@ enables it in all but the minibuffer.
#+end_src
** All the Icons
Nice set of icons with a great user interface to manage them.
+
#+begin_src emacs-lisp
(use-package all-the-icons
:straight t
@@ -1328,6 +1371,7 @@ Nice set of icons with a great user interface to manage them.
** Hide mode line
Custom minor mode to toggle the mode line. Check it out at
[[file:elisp/hide-mode-line.el][elisp/hide-mode-line.el]].
+
#+begin_src emacs-lisp
(use-package hide-mode-line
:load-path "elisp/"
@@ -1340,6 +1384,7 @@ Custom minor mode to toggle the mode line. Check it out at
Saves current place in a buffer permanently, so on revisiting the file
(even in a different Emacs instance) you go back to the place you were
at last.
+
#+begin_src emacs-lisp
(use-package saveplace
:defer t
@@ -1350,6 +1395,7 @@ at last.
Loads [[file:elisp/license.el][license.el]] for inserting licenses.
Licenses are important for distribution and attribution to be defined
clearly.
+
#+begin_src emacs-lisp
(use-package license
:demand t
@@ -1363,6 +1409,7 @@ clearly.
New feature of Emacs-29, gives a rough report of memory usage with
some details. Useful to know on a long Emacs instance what could be
eating up memory.
+
#+begin_src emacs-lisp
(use-package memory-report
:defer t
@@ -1392,6 +1439,7 @@ eating up memory.
** Searching git directories efficiently
Using [[file:elisp/search.el][search.el]] I can search a set of
directories particularly efficiently.
+
#+begin_src emacs-lisp
(use-package search
:defer t
@@ -1403,6 +1451,7 @@ directories particularly efficiently.
#+end_src
** Separedit
Edit anything anywhere all at once!
+
#+begin_src emacs-lisp
(use-package separedit
:defer t
@@ -1416,6 +1465,7 @@ Edit anything anywhere all at once!
** lorem ipsum
Sometimes you need placeholder text for some UI or document. Pretty
easy to guess what text I'd use.
+
#+begin_src emacs-lisp
(use-package lorem-ipsum
:straight t
@@ -1432,8 +1482,9 @@ their simplicity in concept.
[[https://git.aryadevchavali.com/dwm][dwm]] uses patches for adding
new features and Emacs has great functionality to work with patches
-effectively. Here I configure ~diff-mode~, which provides most of this
-cool stuff, to be a bit more ergonomic with ~evil~.
+effectively. Here I configure ~diff-mode~, which provides most of
+this cool stuff, to be a bit more ergonomic with ~evil~.
+
#+begin_src emacs-lisp
(use-package diff-mode
:general
@@ -1451,6 +1502,7 @@ purposes, but provide a lot of capability.
Emacs Web Wowser is the inbuilt text based web browser for Emacs. It
can render images and basic CSS styles but doesn't have a JavaScript
engine, which makes sense as it's primarily a text interface.
+
#+begin_src emacs-lisp
(use-package eww
:defer t
@@ -1469,6 +1521,7 @@ engine, which makes sense as it's primarily a text interface.
Calendar is a simple inbuilt application that helps with date
functionalities. I add functionality to copy dates from the calendar
to the kill ring and bind it to "Y".
+
#+begin_src emacs-lisp
(use-package calendar
:defer t
@@ -1583,6 +1636,7 @@ Here I setup dired with a few niceties
+ If opening an application on a PDF file, suggest ~zathura~
+ Examine all the subdirectories within the same buffer
(~+dired/insert-all-subdirectories~)
+
#+begin_src emacs-lisp
(use-package dired
:defer t
@@ -1640,6 +1694,7 @@ Here I setup dired with a few niceties
Image dired is a little cherry on top for Dired: the ability to look
through swathes of images in a centralised fashion while still being
able to do all the usual dired stuff as well is really cool.
+
#+begin_src emacs-lisp
(use-package dired
:defer t
@@ -1675,6 +1730,7 @@ Similar to [[*(Rip)grep][wgrep]] =wdired= provides
the ability to use Emacs motions and editing on file names. This
makes stuff like mass renaming and other file management tasks way
easier than even using the mark based system.
+
#+begin_src emacs-lisp
(use-package wdired
:straight t
@@ -1738,6 +1794,7 @@ so when you call eshell it kinda looks like VSCode's terminal popup.
NOTE: This mode doesn't allow you to set maps the normal way; you need
to set keybindings on eshell-mode-hook, otherwise it'll just overwrite
them.
+
#+begin_src emacs-lisp
(use-package eshell
:defer t
@@ -1778,6 +1835,7 @@ dynamic prompt for Eshell. Current features include:
NOTE: I don't defer this package because it doesn't use any eshell
internals, just standard old Emacs packages.
+
#+begin_src emacs-lisp
(use-package eshell-prompt
:load-path "elisp/"
@@ -1813,6 +1871,7 @@ knowledge of the new additions.
This package external package adds syntax highlighting to eshell
(disabling it for remote work). Doesn't require a lot of config
thankfully.
+
#+begin_src emacs-lisp
(use-package eshell-syntax-highlighting
:straight t
@@ -1827,6 +1886,7 @@ Elfeed is the perfect RSS feed reader, integrated into Emacs
perfectly. I've got a set of feeds that I use for a large variety of
stuff, mostly media and entertainment. I've also bound "<leader> ar"
to elfeed for loading the system.
+
#+begin_src emacs-lisp
(use-package elfeed
:straight t
@@ -1944,6 +2004,7 @@ everything myself.
** IBuffer
IBuffer is the dired of buffers: providing the ability to mark
buffers, mass rename/delete and just observe stuff.
+
#+begin_src emacs-lisp
(use-package ibuffer
:defer t
@@ -1962,6 +2023,7 @@ Emacs has two systems for process management:
spawned by Emacs (similar to a top for Emacs specifically)
Core proced config, just a few bindings and evil collection setup.
+
#+begin_src emacs-lisp
(use-package proced
:defer t
@@ -2048,6 +2110,7 @@ verbose.
2023-08-17: `Man-notify-method' is the reason the `:display' record
doesn't work here. I think it's to do with how Man pages are rendered
or something, but very annoying as it's a break from standards!
+
#+begin_src emacs-lisp
(use-package man
:defer t
@@ -2069,6 +2132,7 @@ or something, but very annoying as it's a break from standards!
:END:
Little application that uses =gifsicle= to make essentially videos of
Emacs. Useful for demonstrating features.
+
#+begin_src emacs-lisp
(use-package gif-screencast
:straight t
@@ -2081,6 +2145,7 @@ Emacs. Useful for demonstrating features.
** Image-mode
Image mode, for viewing images. Supports tons of formats, easy to use
and integrates slickly into image-dired. Of course,
+
#+begin_src emacs-lisp
(use-package image-mode
:defer t
@@ -2128,6 +2193,7 @@ Flyspell allows me to quickly spell check text documents. I use
flyspell primarily in org mode, as that is my preferred prose writing
software, but I also need it in commit messages and so on. So
flyspell-mode should be hooked to text-mode.
+
#+begin_src emacs-lisp
(use-package flyspell
:straight t
@@ -2147,6 +2213,7 @@ Provides a nice visual for edits and a great way to produce branches
of edits. Also allows saving of undo trees, which makes Emacs a quasi
version control system in and of itself! The only extra necessary
would be describing changes...
+
#+begin_src emacs-lisp
(use-package undo-tree
:demand t
@@ -2190,6 +2257,7 @@ line of text before doing a hard wrap. The default case is 80
characters for that l33t Unix hard terminal character limit. I like
different fill-columns for different modes: text modes should really
use 70 fill columns while code should stick to 80.
+
#+begin_src emacs-lisp
(use-package emacs
:init
@@ -2203,12 +2271,14 @@ use 70 fill columns while code should stick to 80.
#+end_src
** Show-paren-mode
Show parenthesis for Emacs
+
#+begin_src emacs-lisp
(add-hook 'prog-mode-hook #'show-paren-mode)
#+end_src
** Smartparens
Smartparens is a smarter electric-parens, it's much more aware of
context and easier to use.
+
#+begin_src emacs-lisp
(use-package smartparens
:straight t
@@ -2233,6 +2303,7 @@ context and easier to use.
=le-thesaurus= is a great extension for quickly searching up words for
synonyms or antonyms. I may need it anywhere so I bind it to all
keymaps. Same with dictionary searching.
+
#+begin_src emacs-lisp
(use-package le-thesaurus
:straight t
@@ -2264,6 +2335,7 @@ in the minibuffer. A lot cleaner.
2024-05-31: Eldoc box is a bit useless now that I'm not using frames.
I prefer the use of the minibuffer for printing documentation now.
+
#+begin_src emacs-lisp
(use-package eldoc
:defer t
@@ -2282,6 +2354,7 @@ and when I don't.
I've added it to C/C++ mode because I use them regularly and flycheck
has very little overhead to work there.
+
#+begin_src emacs-lisp
(use-package flycheck
:straight t
@@ -2325,6 +2398,7 @@ server when I need it.
regardless of file choice, I prefer setting it at the dir-local level
via an eval form. So I add to the safe values for the eval variable
to be set.
+
#+begin_src emacs-lisp
(use-package eglot
:defer t
@@ -2357,6 +2431,7 @@ someone requested this integration, which caused a bit of a flame war.
People are stupid.
[[https://github.com/joaotavora/eglot/issues/42][no opinion on
flymake]])
+
#+begin_src emacs-lisp
(use-package flycheck-eglot
:straight t
@@ -2365,6 +2440,7 @@ flymake]])
#+end_src
** Indentation
By default, turn off tabs and set the tab width to two.
+
#+begin_src emacs-lisp
(setq-default indent-tabs-mode nil
tab-width 2)
@@ -2397,6 +2473,7 @@ I hook it to prog-mode.
** Hide-show mode
Turn on ~hs-minor-mode~ for all prog-mode. This provides folds for
free.
+
#+begin_src emacs-lisp
(use-package hideshow
:defer t
@@ -2429,6 +2506,7 @@ Here I add some bindings and a filter which colourises the output of
compilation mode for ANSI escape sequences; the eyecandy is certainly
nice but it's very useful when dealing with tools that use those codes
so you can actually read the text.
+
#+begin_src emacs-lisp
(use-package compile
:defer t
@@ -2462,6 +2540,7 @@ Find definitions, references and general objects using tags without
external packages. Provided by default in Emacs and just requires a
way of generating a =TAGS= file for your project. Helps with minimal
setups for programming without heavier packages like [[*Eglot][Eglot]].
+
#+begin_src emacs-lisp
(use-package xref
:defer t
@@ -2534,6 +2613,7 @@ quickly generate them in C/C++ projects.
** rainbow-delimiters
Makes colours delimiters (parentheses) based on their depth in an
expression. Rainbow flag in your Lisp source code.
+
#+begin_src emacs-lisp
(use-package rainbow-delimiters
:defer t
@@ -2623,6 +2703,7 @@ Org mode has deep integration with latex, can export to PDF and even
display latex fragments in the document directly. I setup the
pdf-process, code listing options via minted and the format options
for latex fragments.
+
#+begin_src emacs-lisp
(use-package org
:defer t
@@ -2658,6 +2739,7 @@ Tons of variables for org-mode, including a ton of latex ones. Can't
really explain because it sets up quite a lot of local stuff. Also I
copy pasted the majority of this, tweaking it till it felt good. Doom
Emacs was very helpful here.
+
#+begin_src emacs-lisp
(use-package org
:defer t
@@ -2684,6 +2766,7 @@ Emacs was very helpful here.
#+end_src
** Org Core Functionality
Hooks, prettify-symbols and records for auto insertion.
+
#+begin_src emacs-lisp
(use-package org
:defer t
@@ -2703,6 +2786,7 @@ Hooks, prettify-symbols and records for auto insertion.
#+end_src
** Org Core Bindings
Some bindings for org mode.
+
#+begin_src emacs-lisp
(use-package org
:defer t
@@ -2759,6 +2843,7 @@ search multiple org-files.
The cherry on top is ~+org/search-config-headings~ which searches the
org files in ~user-emacs-directory~ and provides the headings for
them. This allows me to search my configuration pretty quickly.
+
#+begin_src emacs-lisp
(use-package counsel
:defer t
@@ -2792,6 +2877,7 @@ them. This allows me to search my configuration pretty quickly.
** Org Agenda
Org agenda provides a nice viewing for schedules. With org mode it's
a very tidy way to manage your time.
+
#+begin_src emacs-lisp
(use-package org-agenda
:defer t
@@ -2837,6 +2923,7 @@ todo file, where the bare minimum to record one is:
+ what is it?
Org capture provides a way to do that seamlessly without opening the
todo file directly.
+
#+begin_src emacs-lisp
(use-package org-capture
:defer t
@@ -2862,6 +2949,7 @@ todo file directly.
Org provides a nice timekeeping system that allows for managing how
much time is taken per task. It even has an extensive reporting
system to see how much time you spend on specific tasks or overall.
+
#+begin_src emacs-lisp
(use-package org-clock
:after org
@@ -2918,6 +3006,7 @@ crash (like the async handler for org-export).
:header-args:emacs-lisp: :tangle no
:END:
For bibliographic stuff in $\LaTeX$ export.
+
#+begin_src emacs-lisp
(use-package org-ref
:straight t
@@ -2930,6 +3019,7 @@ For bibliographic stuff in $\LaTeX$ export.
*** Org ref ivy integration
Org ref requires ivy-bibtex to work properly with ivy, so we need to
set that up as well
+
#+begin_src emacs-lisp
(use-package ivy-bibtex
:straight t
@@ -2963,6 +3053,7 @@ learnt the basics of org).
#+end_src
** Org for evil
Evil org for some nice bindings.
+
#+begin_src emacs-lisp
(use-package evil-org
:straight t
@@ -2976,6 +3067,7 @@ Evil org for some nice bindings.
** Org reveal
Org reveal allows one to export org files as HTML presentations via
reveal.js. Pretty nifty and it's easy to use.
+
#+begin_src emacs-lisp
(use-package ox-reveal
:straight t
@@ -2987,6 +3079,7 @@ reveal.js. Pretty nifty and it's easy to use.
** Org superstar
Org superstar adds unicode symbols for headers, much better than the
default asterisks.
+
#+begin_src emacs-lisp
(use-package org-superstar
:straight t
@@ -3030,6 +3123,7 @@ doesn't come with.
** Makefile
Defines an auto-insert for Makefiles. Assumes C but it's very easy to
change it for C++.
+
#+begin_src emacs-lisp
(use-package make-mode
:defer t
@@ -3096,6 +3190,7 @@ The default SQL package provides support for connecting to common
database types (sqlite, mysql, etc) for auto completion and query
execution. I don't use SQL currently but whenever I need it it's
there.
+
#+begin_src emacs-lisp
(use-package sql
:defer t
@@ -3125,6 +3220,7 @@ including an annoying prompt on /revert-buffer/.
Thus, nhexl-mode! It comes with a few other improvements. Check out
the [[https://elpa.gnu.org/packages/nhexl-mode.html][page]] yourself.
+
#+begin_src emacs-lisp
(use-package nhexl-mode
:straight t
@@ -3140,6 +3236,7 @@ Tons of stuff, namely:
+ Lots of pretty symbols
+ Indenting options and a nice (for me) code style for C
+ Auto inserts to get a C file going
+
#+begin_src emacs-lisp
(use-package cc-mode
:defer t
@@ -3257,6 +3354,7 @@ on your machine.
*** cc org babel
To ensure org-babel executes language blocks of C/C++, I need to load
it as an option in ~org-babel-load-languages~.
+
#+begin_src emacs-lisp
(use-package org
:after cc-mode
@@ -3277,6 +3375,7 @@ Compilation mode uses regular expressions to figure out whether
something is an error and how to navigate to the file where that error
is located. So adding support for =-fsanitize= is as simple as making
a regular expression which captures file names and digits
+
#+begin_src emacs-lisp
(use-package compile
:after cc-mode
@@ -3325,6 +3424,7 @@ execution of d-mode blocks and alias ~D-mode~ with ~d-mode~.
** Racket
A scheme with lots of stuff inside it. Using it for a language design
book so it's useful to have some Emacs binds for it.
+
#+begin_src emacs-lisp
(use-package racket-mode
:straight t
@@ -3360,6 +3460,7 @@ book so it's useful to have some Emacs binds for it.
:END:
Haven't used C# in a while, but Emacs is alright for it with
omnisharp.
+
#+begin_src emacs-lisp
(use-package csharp-mode
:defer t)
@@ -3371,6 +3472,7 @@ omnisharp.
I kinda dislike Java, but if necessary I will code in it. Just setup
a style and some pretty symbols. You can use LSP to get cooler
features to be fair.
+
#+begin_src emacs-lisp
(use-package ob-java
:defer t
@@ -3415,6 +3517,7 @@ Here I configure the REPL for Haskell via the
[[file:elisp/haskell-multiedit.el][haskell-multiedit]] which allows a
user to create temporary ~haskell-mode~ buffers that, upon completion,
will run in the REPL. Even easier than making your own buffer.
+
#+begin_src emacs-lisp
(use-package haskell-mode
:straight t
@@ -3454,6 +3557,7 @@ Works well for python. If you have ~pyls~ it should be on your path, so
just run eglot if you need. But an LSP server is not necessary for a
lot of my time in python. Here I also setup org-babel for python
source code blocks.
+
#+begin_src emacs-lisp
(use-package python
:defer t
@@ -3481,6 +3585,7 @@ source code blocks.
#+end_src
*** Python shell
Setup for python shell, including a toggle option
+
#+begin_src emacs-lisp
(use-package python
:defer t
@@ -3495,12 +3600,14 @@ Setup for python shell, including a toggle option
#+end_src
** YAML
YAML is a data language which is useful for config files.
+
#+begin_src emacs-lisp
(use-package yaml-mode
:straight t)
#+end_src
** HTML/CSS/JS
Firstly, web mode for consistent colouring of syntax.
+
#+begin_src emacs-lisp
(use-package web-mode
:straight t
@@ -3514,6 +3621,7 @@ Firstly, web mode for consistent colouring of syntax.
#+end_src
*** Emmet
Emmet for super speed code writing.
+
#+begin_src emacs-lisp
(use-package emmet-mode
:straight t
@@ -3563,6 +3671,7 @@ Emmet for super speed code writing.
*** Javascript Mode
A better mode for JavaScript that also has automatic integration with
eglot.
+
#+begin_src emacs-lisp
(use-package js
:mode ("\\.js" . js-mode)
@@ -3576,6 +3685,7 @@ eglot.
:header-args:emacs-lisp: :tangle no
:END:
A child language of javascript which compiles to it.
+
#+begin_src emacs-lisp
(use-package typescript-mode
:straight t
@@ -3586,6 +3696,7 @@ A child language of javascript which compiles to it.
** Scheme
Another Lisp but simpler than the rest. A beauty of engineering and
fun to write programs in.
+
#+begin_src emacs-lisp
(use-package cmuscheme
:display
@@ -3613,6 +3724,7 @@ Enter /SLY/. Sly is a fork of /SLIME/ and is *mandatory* for lisp
development on Emacs.
Here I just setup Sly to use ~sbcl~.
+
#+begin_src emacs-lisp
(use-package sly
:defer t
@@ -3765,6 +3877,7 @@ abo-abo) to create a set of motions that allow movement around a lisp
file easily.
2024-04-18: Still working on this, quite rough around the edges.
+
#+begin_src emacs-lisp
(use-package lispy
:after (lisp-mode elisp-mode)
@@ -3800,6 +3913,7 @@ file easily.
*** Lisp indent function
Add a new lisp indent function which indents newline lists more
appropriately.
+
#+begin_src emacs-lisp
(use-package lisp-mode
:defer t