Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ emojis
/local/custom.el
*.save
/network-security.data
/straight/build/*
/straight/build-cache.el
/straight/repos
13 changes: 0 additions & 13 deletions abnf.el

This file was deleted.

177 changes: 94 additions & 83 deletions init.el
Original file line number Diff line number Diff line change
@@ -1,93 +1,104 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This is the minimal config needed to get org-mode from melpa and
;; get it up and running so that we can load our emacs config from a
;; .org file in a literate manner. The basis for this can be found
;; here:
;;; Code:
(defun load-if-exists (file)
"Load the elisp FILE only if it exists."
(if (file-exists-p file)
(progn
(load file)
(message (format "Loading file: %s" file)))
(message (format "No %s file. So not loading one." file))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialise straight as per the docs
;; https://github.com/raxod502/straight.el#getting-started
;;
;; http://orgmode.org/worg/org-contrib/babel/intro.html
(require 'package)
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
("elpa" . "https://elpa.gnu.org/packages/")
;; ("marmalade" . "http://marmalade-repo.org/packages/")
("org" . "https://orgmode.org/elpa/")
("melpa-stable" . "https://stable.melpa.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))

(setq package-enable-at-startup nil)

(straight-use-package 'use-package)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Pretty Colours
(use-package color-theme-sanityinc-tomorrow
:straight t
:load-path "themes"
:config
(load-theme 'sanityinc-tomorrow-bright t))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; magit
(use-package magit
:straight t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; flycheck all the things
(use-package flycheck
:straight t
:init (global-flycheck-mode))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; clojure and cider
(use-package eldoc
:config (global-eldoc-mode 1))

;; FIXME: pinning here feels like a hack, but does mean things come from consistent places.
;; Pin all the things
(setq package-pinned-packages
'((aggressive-indent . "melpa-stable")
(bind-key . "melpa")
(cider . "melpa")
(cider-eval-sexp-fu . "melpa")
(clj-refactor . "melpa")
(clojure-mode . "melpa")
(company . "melpa-stable")
;; (dash . "melpa-stable")
;; (diminish . "melpa-stable")
(epl . "melpa-stable")
(exec-path-from-shell . "melpa-stable")
(flx . "melpa-stable")
(flx-ido . "melpa-stable")
;;(git-commit . "melpa-stable")
(hydra . "melpa-stable")
(ido . "melpa-stable")
(ido-completing-read+ . "melpa-stable")
(ido-ubiquitous . "melpa-stable")
(ido-vertical-mode . "melpa-stable")
(flycheck-pos-tip . "melpa")
(flycheck . "melpa")
(highlight . "melpa") ;; woo! from the wiki https://www.emacswiki.org/emacs/highlight.el
(highlight-symbol . "melpa")
(inflections . "melpa-stable")
;;(magit . "melpa-stable")
;;(magit-popup . "melpa-stable")
(multiple-cursors . "melpa-stable")
(org . "org")
(org-plus-contrib . "org")
(paredit . "melpa-stable")
(peg . "melpa-stable")
(pkg-info . "melpa-stable")
(pos-tip . "melpa-stable")
(projectile . "melpa-stable")
(rainbow-delimiters . "melpa-stable")
(s . "melpa-stable")
(seq . "elpa")
(smex . "melpa-stable")
(swiper . "melpa-stable")
(use-package . "melpa")
;;(with-editor . "melpa-stable")
(yasnippet . "melpa-stable")))
(use-package paredit
:straight t
:init
(add-hook 'lisp-mode-hook #'paredit-mode)
(add-hook 'emacs-lisp-mode-hook #'paredit-mode)
(add-hook 'clojure-mode-hook #'paredit-mode)
(add-hook 'cider-mode-hook #'paredit-mode)
(add-hook 'cider-repl-mode-hook #'paredit-mode))

(package-initialize)
(use-package aggressive-indent
:straight t
:init
(add-hook 'lisp-mode-hook #'aggressive-indent-mode)
(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)
(add-hook 'clojure-mode-hook #'aggressive-indent-mode))

(unless (package-installed-p 'use-package)
(message "Refreshing packages")
(package-refresh-contents)
(package-install 'use-package))
(use-package rainbow-delimiters
:straight t
:init
(add-hook 'lisp-mode-hook #'rainbow-delimiters-mode)
(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode)
(add-hook 'clojure-mode-hook #'rainbow-delimiters-mode)
(add-hook 'cider-mode-hook #'rainbow-delimiters-mode)
(add-hook 'cider-repl-mode-hook #'rainbow-delimiters-mode))

(eval-when-compile
(require 'use-package))
(defvar use-package-verbose t)
(require 'bind-key)
(use-package paren
:init
(add-hook 'lisp-mode-hook #'show-paren-mode)
(add-hook 'emacs-lisp-mode-hook #'show-paren-mode)
(add-hook 'clojure-mode-hook #'show-paren-mode)
(add-hook 'cider-mode-hook #'show-paren-mode)
(add-hook 'cider-repl-mode-hook #'show-paren-mode))

;; org-mode always needs to be installed in an emacs where it isn't loaded.
(use-package org
:pin org
:ensure t)
(use-package clojure-mode
:straight t
:defer t
:mode (("\\.clj\\'" . clojure-mode)))

;; TODO This feels like it should go into config.org
;; I like using appt. I update my agenda mulitple times per day. I do
;; lots of scheduling.
(defun update-agenda-and-appt ()
(interactive)
(setq appt-time-msg-list nil)
(org-agenda-redo-all)
(org-agenda-to-appt))
(use-package cider
:straight t
:init (setq
cider-repl-history-file (concat user-emacs-directory "cider-history")
cider-repl-history-size 1000
cider-font-lock-dynamically '(macro core function var)
cider-use-overlays t))

;; TODO This feels like it should go into config.org
(use-package org-agenda
:bind (:map org-agenda-mode-map
("g" . update-agenda-and-appt)))
(use-package flycheck-clj-kondo
:straight t)

(org-babel-load-file (concat user-emacs-directory "org/config.org"))
Loading