(Emacs/config)+spacing after paragraphs for all configuration

This commit is contained in:
2024-08-16 12:21:44 +01:00
parent a99487d5f2
commit 733208b396

View File

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