/early-init.el
/init.el
+/straight/*
+!/straight/versions
+
/var/*
+/var/eshell/lastdir
/var/eshell/history
!/var/eshell
!/var/eshell/alias
!/var/abbrev.el
-
-!/lisp/bbdb/bbdb-autoloads.el
-/var/eshell/lastdir
+++ /dev/null
-[borg]
- pushDefault = aminb
- collective = emacsg
-[submodule "alert"]
- path = lib/alert
- url = git@github.com:jwiegley/alert.git
-[submodule "all-the-icons"]
- path = lib/all-the-icons
- url = git@github.com:domtronn/all-the-icons.el.git
-[submodule "alloy-mode"]
- path = lib/alloy-mode
- url = git@github.com:dwwmmn/alloy-mode.git
-[submodule "async"]
- path = lib/async
- url = git@github.com:jwiegley/emacs-async.git
-[submodule "auto-compile"]
- path = lib/auto-compile
- url = git@github.com:emacscollective/auto-compile.git
-[submodule "boogie-friends"]
- path = lib/boogie-friends
- url = git@github.com:boogie-org/boogie-friends.git
- load-path = emacs
-[submodule "borg"]
- path = lib/borg
- url = git@github.com:emacscollective/borg.git
-[submodule "boxquote"]
- path = lib/boxquote
- url = git@github.com:davep/boxquote.el.git
-[submodule "bui"]
- path = lib/bui
- url = git@github.com:alezost/bui.el.git
-[submodule "closql"]
- path = lib/closql
- url = git@github.com:emacscollective/closql.git
-[submodule "company"]
- path = lib/company
- url = git@github.com:company-mode/company-mode.git
-[submodule "company-ebdb"]
- path = lib/company-ebdb
- url = git@github.com:emacs-straight/company-ebdb.git
-[submodule "crux"]
- path = lib/crux
- url = git@github.com:bbatsov/crux.git
-[submodule "dante"]
- path = lib/dante
- url = git@github.com:jyp/dante.git
-[submodule "dash"]
- path = lib/dash
- url = git@github.com:magnars/dash.el.git
- no-makeinfo = dash-template.texi
- # dash creates a `dir' dash info file, which makes git think
- # that the submodule is dirty. so, let's ignore the untracked
- # files of dash's submodule
- ignore = untracked
-[submodule "diff-hl"]
- path = lib/diff-hl
- url = git@github.com:dgutov/diff-hl.git
-[submodule "doom-themes"]
- path = lib/doom-themes
- url = git@github.com:hlissner/emacs-doom-themes.git
-[submodule "ebdb"]
- path = lib/ebdb
- url = git@github.com:girzel/ebdb.git
-[submodule "ebdb-gnorb"]
- path = lib/ebdb-gnorb
- url = git@github.com:emacsmirror/ebdb-gnorb.git
-[submodule "edit-indirect"]
- path = lib/edit-indirect
- url = git@github.com:Fanael/edit-indirect.git
-[submodule "eldoc-eval"]
- path = lib/eldoc-eval
- url = git@github.com:thierryvolpiatto/eldoc-eval.git
-[submodule "elisp-refs"]
- path = lib/elisp-refs
- url = git@github.com:Wilfred/elisp-refs.git
-[submodule "emacsql"]
- path = lib/emacsql
- url = git@github.com:skeeto/emacsql.git
- no-byte-compile = emacsql-pg.el
-[submodule "emmet-mode"]
- path = lib/emmet-mode
- url = git@github.com:smihica/emmet-mode.git
-[submodule "epkg"]
- path = lib/epkg
- url = git@github.com:emacscollective/epkg.git
-[submodule "epl"]
- path = lib/epl
- url = git@github.com:cask/epl.git
-[submodule "eshell-up"]
- path = lib/eshell-up
- url = git@github.com:peterwvj/eshell-up.git
-[submodule "exec-path-from-shell"]
- path = lib/exec-path-from-shell
- url = git@github.com:purcell/exec-path-from-shell.git
-[submodule "expand-region"]
- path = lib/expand-region
- url = git@github.com:magnars/expand-region.el.git
-[submodule "f"]
- path = lib/f
- url = git@github.com:rejeep/f.el.git
-[submodule "flycheck"]
- path = lib/flycheck
- url = git@github.com:flycheck/flycheck.git
-[submodule "flycheck-haskell"]
- path = lib/flycheck-haskell
- url = git@github.com:flycheck/flycheck-haskell.git
-[submodule "geiser"]
- path = lib/geiser
- url = git@gitlab.com:jaor/geiser.git
- info-path = doc
- load-path = elisp
- build-step = ./autogen.sh
- build-step = ./configure
- build-step = make
-[submodule "ghub"]
- path = lib/ghub
- url = git@github.com:magit/ghub.git
-[submodule "git-modes"]
- path = lib/git-modes
- url = git@github.com:magit/git-modes.git
-[submodule "gnorb"]
- path = lib/gnorb
- url = git@github.com:girzel/gnorb.git
- no-byte-compile = gnorb-bbdb.el
-[submodule "graphql"]
- path = lib/graphql
- url = git@github.com:vermiculus/graphql.el.git
-[submodule "guix"]
- path = lib/guix
- url = git@github.com:alezost/guix.el.git
- info-path = doc
- load-path = elisp
- build-step = ./autogen.sh
- build-step = ./configure
- build-step = make
-[submodule "haskell-mode"]
- path = lib/haskell-mode
- url = git@github.com:haskell/haskell-mode.git
-[submodule "helm"]
- path = lib/helm
- url = git@github.com:emacs-helm/helm.git
-[submodule "helpful"]
- path = lib/helpful
- url = git@github.com:Wilfred/helpful.git
-[submodule "hl-todo"]
- path = lib/hl-todo
- url = git@github.com:tarsius/hl-todo.git
-[submodule "hlint-refactor"]
- path = lib/hlint-refactor
- url = git@github.com:mpickering/hlint-refactor-mode.git
-[submodule "ht"]
- path = lib/ht
- url = git@github.com:Wilfred/ht.el.git
-[submodule "hydra"]
- path = lib/hydra
- url = git@github.com:abo-abo/hydra.git
-[submodule "ivy"]
- path = lib/ivy
- url = git@github.com:abo-abo/swiper.git
- info-path = doc
-[submodule "lcr"]
- path = lib/lcr
- url = git@github.com:jyp/lcr.git
-[submodule "lean-mode"]
- path = lib/lean-mode
- url = git@github.com:leanprover/lean-mode.git
-[submodule "loop"]
- path = lib/loop
- url = git@github.com:Wilfred/loop.el.git
-[submodule "magit"]
- path = lib/magit
- url = git@github.com:magit/magit.git
- recursive-byte-compile = true
- info-path = Documentation
-[submodule "magit-popup"]
- path = lib/magit-popup
- url = git@github.com:magit/magit-popup.git
-[submodule "markdown-mode"]
- path = lib/markdown-mode
- url = git@github.com:jrblevin/markdown-mode.git
-[submodule "memoize"]
- path = lib/memoize
- url = git@github.com:skeeto/emacs-memoize.git
-[submodule "multi-term"]
- path = lib/multi-term
- url = git@github.com:emacsorphanage/multi-term.git
-[submodule "multiple-cursors"]
- path = lib/multiple-cursors
- url = git@github.com:magnars/multiple-cursors.el.git
-[submodule "mwim"]
- path = lib/mwim
- url = git@github.com:alezost/mwim.el.git
-[submodule "no-littering"]
- path = lib/no-littering
- url = git@github.com:emacscollective/no-littering.git
-[submodule "org"]
- path = lib/org
- url = git@code.orgmode.org:bzg/org-mode.git
- load-path = lisp
- info-path = doc
- build-step = make compile autoloads info # ORG_ADD_CONTRIB="org-notmuch"
- # setting ORG_ADD_CONTRIB results in copying of files from contrib/
- # into lisp/, which git will pick up. so, let's ignore untracked files
- # from org's submodule; at least for now
- # ignore = untracked
-[submodule "orgalist"]
- path = lib/orgalist
- url = git@github.com:emacsmirror/orgalist.git
-[submodule "other-frame-window"]
- path = lib/other-frame-window
- url = git@github.com:emacsmirror/other-frame-window.git
-[submodule "ox-hugo"]
- path = lib/ox-hugo
- url = git@github.com:kaushalmodi/ox-hugo.git
-[submodule "packed"]
- path = lib/packed
- url = git@github.com:emacscollective/packed.git
-[submodule "page-break-lines"]
- path = lib/page-break-lines
- url = git@github.com:purcell/page-break-lines.git
-[submodule "pkg-info"]
- path = lib/pkg-info
- url = git@github.com:lunaryorn/pkg-info.el.git
-[submodule "popup"]
- path = lib/popup
- url = git@github.com:auto-complete/popup-el.git
-[submodule "projectile"]
- path = lib/projectile
- url = git@github.com:bbatsov/projectile.git
-[submodule "proof-site"] # Proof General
- path = lib/proof-site
- url = git@github.com:ProofGeneral/PG.git
-[submodule "rich-minority"]
- path = lib/rich-minority
- url = git@github.com:Malabarba/rich-minority.git
-[submodule "s"]
- path = lib/s
- url = git@github.com:magnars/s.el.git
-[submodule "shrink-path"]
- path = lib/shrink-path
- url = git@gitlab.com:bennya/shrink-path.el.git
-[submodule "shut-up"]
- path = lib/shut-up
- url = git@github.com:cask/shut-up.git
-[submodule "smart-mode-line"]
- path = lib/smart-mode-line
- url = git@github.com:Malabarba/smart-mode-line.git
-[submodule "smex"] # used by counsel-M-x
- path = lib/smex
- url = git@github.com:nonsequitur/smex.git
-[submodule "treepy"]
- path = lib/treepy
- url = git@github.com:volrath/treepy.el.git
-[submodule "typo"]
- path = lib/typo
- url = git@github.com:jorgenschaefer/typoel.git
-[submodule "unkillable-scratch"]
- path = lib/unkillable-scratch
- url = git@github.com:EricCrosson/unkillable-scratch.git
-[submodule "use-package"]
- path = lib/use-package
- url = git@github.com:jwiegley/use-package.git
-[submodule "web-mode"]
- path = lib/web-mode
- url = git@github.com:fxbois/web-mode.git
-[submodule "which-key"]
- path = lib/which-key
- url = git@github.com:justbur/emacs-which-key.git
-[submodule "winum"]
- path = lib/winum
- url = git@github.com:deb0ch/emacs-winum.git
-[submodule "with-editor"]
- path = lib/with-editor
- url = git@github.com:magit/with-editor.git
-[submodule "yaml-mode"]
- path = lib/yaml-mode
- url = git@github.com:yoshiki/yaml-mode.git
-[submodule "yasnippet"]
- path = lib/yasnippet
- url = git@github.com:joaotavora/yasnippet.git
--include lib/borg/borg.mk
+EMACS ?= emacs
+EMACS_ARGUMENTS ?= -Q
-bootstrap-borg:
- @git submodule--helper clone --name borg --path lib/borg \
- --url git@github.com:emacscollective/borg.git
- @cd lib/borg; git symbolic-ref HEAD refs/heads/master
- @cd lib/borg; git reset --hard HEAD
+.PHONY: all help clean build build-init quick bootstrap
+.FORCE:
-bootstrap: tangle-init
+tangle-init: init.el
+init.el: init.org
+ @$(EMACS) $(EMACS_ARGUMENTS) \
+ --batch --load org \
+ --eval '(org-babel-tangle-file "init.org")' 2>&1
-ta: tangle-init all
+build-init:
+ @rm -f init.elc
+ @$(EMACS) $(EMACS_ARGUMENTS) \
+ --batch -l init.el --eval '(a/build-init)' 2>&1
-ti: tangle-init build-init
+ti: tangle-init
+bi: build-init
:END:
This org file is my literate configuration for GNU Emacs, and is
-tangled to [[./init.el][init.el]]. Packages are installed and managed using
-[[https://github.com/emacscollective/borg][Borg]]. Over the years, I've taken inspiration from configurations of
-many different people. Some of the configurations that I can remember
-off the top of my head are:
+tangled to [[./init.el][init.el]]. Packages are installed and managed using
+[[https://github.com/raxod502/straight.el][straight.el]]. Over the years, I've taken inspiration from
+configurations of many different people. Some of the configurations
+that I can remember off the top of my head are:
- [[https://github.com/dieggsy/dotfiles][dieggsy/dotfiles]]: literate Emacs and dotfiles configuration, uses
straight.el for managing packages
I'd like to have a fully reproducible Emacs setup (part of the reason
why I store my configuration in this repository) but unfortunately out
of the box, that's not achievable with =package.el=, not currently
-anyway. So, I've opted to use Borg. For what it's worth, I briefly
-experimented with [[https://github.com/raxod502/straight.el][straight.el]], but found that it added about 2 seconds
-to my init time; which is unacceptable for me: I use Emacs as my
-window manager (via EXWM) and coming from bspwm, I'm too used to
-having fast startup times.
-
-** Installation
-
-To use this config for your Emacs, first you need to clone this repo,
-then bootstrap Borg, tell Borg to retrieve package submodules, and
-byte-compiled the packages. Something along these lines should work:
-
-#+begin_src sh :tangle no
-git clone https://git.sr.ht/~bandali/dotfiles ~/.emacs.d
-cd ~/.emacs.d
-make bootstrap-borg
-make bootstrap
-#+end_src
+anyway. So, I've opted to use =straight.el=. I also used Borg for a
+few months, but decided to try =straight.el= which allows direct use
+of the various package archives.
* Contents :toc_1:noexport:
*** No =package.el=
-I can do all my package management things with Borg, and don't need
-Emacs' built-in =package.el=. Emacs 27 lets us disable =package.el= in
-the =early-init-file= (see [[https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=24acb31c04b4048b85311d794e600ecd7ce60d3b][here]]).
+I can do all my package management things with =straight.el=, and
+don't need Emacs' built-in =package.el=. Emacs 27 lets us disable
+=package.el= in the =early-init-file= (see [[https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=24acb31c04b4048b85311d794e600ecd7ce60d3b][here]]).
#+begin_src emacs-lisp :tangle early-init.el
(setq package-enable-at-startup nil)
ship in their repos, I'll still put the old workaround with the
commented call to ~package-initialize~ here anyway.
-#+begin_src emacs-lisp
+#+begin_src emacs-lisp :tangle no
(setq package-enable-at-startup nil)
;; (package-initialize)
#+end_src
-*** Borg
+Update: the above is not necessary, since =straight.el= automatically
+does that (and more). See =straight-package-neutering-mode=.
+
+*** =straight.el=
#+begin_quote
-Assimilate Emacs packages as Git submodules
+Next-generation, purely functional package manager for the Emacs
+hacker.
#+end_quote
-[[https://github.com/emacscollective/borg][Borg]] is at the heart of package management of my Emacs setup. In
-short, it creates a git submodule in =lib/= for each package, which
-can then be managed with the help of Magit or other tools.
+=straight.el= allows me to have a fully reproducible Emacs setup.
#+begin_src emacs-lisp
-(setq user-init-file (or load-file-name buffer-file-name)
- user-emacs-directory (file-name-directory user-init-file))
-(add-to-list 'load-path
- (expand-file-name "lib/borg" user-emacs-directory))
;; Main engine start...
-(require 'borg)
+
+(setq straight-repository-branch "develop"
+ straight-check-for-modifications '(check-on-save find-when-checking))
+
+(defun a/bootstrap-straight ()
+ (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)))
+
;; Solid rocket booster ignition...
-(borg-initialize)
+
+(defun a/build-init ()
+ (a/bootstrap-straight)
+ (byte-compile-file "init.el"))
+
+(a/bootstrap-straight)
+
;; We have lift off!
-;; (require 'borg-nix-shell)
-;; (setq borg-build-shell-command 'borg-nix-shell-build-command)
+(setq straight-use-package-by-default t)
+#+end_src
+
+Since we enable =straight.el='s =straight-use-package-by-default=
+integration, we will define a =use-feature= for plain ole
+=use-package= without any of the =straight.el= stuff.
-(with-eval-after-load 'bind-key
- (bind-keys
- :package borg
- ("C-c b A" . borg-activate)
- ("C-c b a" . borg-assimilate)
- ("C-c b b" . borg-build)
- ("C-c b c" . borg-clone)
- ("C-c b r" . borg-remove)))
+#+begin_src emacs-lisp
+(defmacro use-feature (name &rest args)
+ "Like `use-package', but with `straight-use-package-by-default' disabled."
+ (declare (indent defun))
+ `(use-package ,name
+ :straight nil
+ ,@args))
#+end_src
*** =use-package=
and without compromising on performance.
#+begin_src emacs-lisp
-(require 'use-package)
+(straight-use-package 'use-package)
(if nil ; set to t when need to debug init
(setq use-package-verbose t
use-package-expand-minimally nil
=package.el=-like user interface for browsing the available packages.
#+begin_src emacs-lisp
+(require 'bind-key)
(use-package epkg
+ :commands (epkg-list-packages epkg-describe-package)
:bind
- (("C-c b d" . epkg-describe-package)
- ("C-c b p" . epkg-list-packages)
- ("C-c b u" . epkg-update))
+ (("C-c P e d" . epkg-describe-package)
+ ("C-c P e p" . epkg-list-packages))
:config
+ (setq epkg-repository "~/.emacs.d/straight/repos/epkgs/")
(eval-when-compile (defvar ivy-initial-inputs-alist))
(with-eval-after-load 'ivy
(add-to-list
it it's own file. While at it, treat themes as safe.
#+begin_src emacs-lisp
-(use-package custom
+(use-feature custom
:no-require t
:config
(setq custom-file (no-littering-expand-etc-file-name "custom.el"))
See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server][Using Emacs as a Server]].
#+begin_src emacs-lisp
-(use-package server
+(use-feature server
:defer 1
:config (or (server-running-p) (server-mode)))
#+end_src
In short, my favourite way of life.
+First, we have to resort to a [[https://github.com/raxod502/straight.el#installing-org-with-straightel][hack]] to be able to use the correct
+latest version of Org from upstream.
+
#+begin_src emacs-lisp
-(use-package org
+ (use-package git)
+
+ (defun org-git-version ()
+ "The Git version of org-mode.
+ Inserted by installing org-mode or when a release is made."
+ (require 'git)
+ (let ((git-repo (expand-file-name
+ "straight/repos/org/" user-emacs-directory)))
+ (string-trim
+ (git-run "describe"
+ "--match=release\*"
+ "--abbrev=6"
+ "HEAD"))))
+
+ (defun org-release ()
+ "The release version of org-mode.
+ Inserted by installing org-mode or when a release is made."
+ (require 'git)
+ (let ((git-repo (expand-file-name
+ "straight/repos/org/" user-emacs-directory)))
+ (string-trim
+ (string-remove-prefix
+ "release_"
+ (git-run "describe"
+ "--match=release\*"
+ "--abbrev=0"
+ "HEAD")))))
+
+(provide 'org-version)
+#+end_src
+
+We will use the =org-plus-contrib= package to get the whole deal:
+
+#+begin_src emacs-lisp
+(straight-use-package 'org-plus-contrib)
+#+end_src
+
+And here's where my actual Org configurations begin:
+
+#+begin_src emacs-lisp
+(use-feature org
:defer 2
:config
(setq org-src-tab-acts-natively t
'(org-block ((t (:background "#1d1f21"))))
'(org-latex-and-related ((t (:foreground "#b294bb")))))
-(use-package ox-latex
+(use-feature ox-latex
:after ox
:config
(setq org-latex-listings 'listings
(defvar a/show-async-tangle-time nil
"Show the time spent tangling the file.")
- (defvar a/async-tangle-post-compile "make ti"
+ (defvar a/async-tangle-post-compile "make bi"
"If non-nil, pass to `compile' after successful tangle.")
(defvar a/async-tangle-byte-recompile nil
Recently opened files.
#+begin_src emacs-lisp
-(use-package recentf
+(use-feature recentf
:defer 0.5
:config
(add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:")
#+begin_src emacs-lisp
(use-package ivy
- :defer 0.5
+ :defer 0.6
:bind
(:map ivy-minibuffer-map
([escape] . keyboard-escape-quit)
*** eshell
#+begin_src emacs-lisp
-(use-package eshell
+(use-feature eshell
:defer 2
:commands eshell
:bind ("C-c a s e" . eshell)
*** Ibuffer
#+begin_src emacs-lisp
-(use-package ibuffer
+(use-feature ibuffer
:bind
(("C-x C-b" . ibuffer-other-window)
:map ibuffer-mode-map
*** Outline
#+begin_src emacs-lisp
-(use-package outline
+(use-feature outline
:hook (prog-mode . outline-minor-mode)
:bind
(:map
*** Dired
#+begin_src emacs-lisp
-(use-package ls-lisp
+(use-feature ls-lisp
:custom (ls-lisp-dirs-first t))
-(use-package dired
+(use-feature dired
:config
(setq dired-listing-switches "-alh"
ls-lisp-use-insert-directory-program nil)
*** Help
#+begin_src emacs-lisp
-(use-package help
+(use-feature help
:config
(temp-buffer-resize-mode)
(setq help-window-select t))
*** Tramp
#+begin_src emacs-lisp
-(use-package tramp
+(use-feature tramp
:config
(add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
(add-to-list 'tramp-default-proxies-alist '("localhost" nil nil))
Display Lisp objects at point in the echo area.
#+begin_src emacs-lisp
-(use-package eldoc
+(use-feature eldoc
:when (version< "25" emacs-version)
:config (global-eldoc-mode))
#+end_src
Highlight matching parens.
#+begin_src emacs-lisp
-(use-package paren
- :demand
+(use-feature paren
:config (show-paren-mode))
#+end_src
** simple (for column numbers)
#+begin_src emacs-lisp
-(use-package simple
+(use-feature simple
:config (column-number-mode))
#+end_src
Save minibuffer history.
#+begin_src emacs-lisp
-(use-package savehist
+(use-feature savehist
:config (savehist-mode))
#+end_src
Automatically save place in each file.
#+begin_src emacs-lisp
-(use-package saveplace
+(use-feature saveplace
:when (version< "25" emacs-version)
:config (save-place-mode))
#+end_src
** =prog-mode=
#+begin_src emacs-lisp
-(use-package prog-mode
+(use-feature prog-mode
:config (global-prettify-symbols-mode)
(defun indicate-buffer-boundaries-left ()
(setq indicate-buffer-boundaries 'left))
** =text-mode=
#+begin_src emacs-lisp
-(use-package text-mode
+(use-feature text-mode
:hook ((text-mode . indicate-buffer-boundaries-left)
(text-mode . abbrev-mode)))
#+end_src
** Lisp
#+begin_src emacs-lisp
-(use-package lisp-mode
+(use-feature lisp-mode
:config
(add-hook 'emacs-lisp-mode-hook 'outline-minor-mode)
(add-hook 'emacs-lisp-mode-hook 'reveal-mode)
#+begin_src emacs-lisp
(use-package alloy-mode
+ :straight (:host github :repo "dwwmmn/alloy-mode")
:config (setq alloy-basic-offset 2))
#+end_src
#+begin_src emacs-lisp
(use-package proof-site ; Proof General
- :load-path "lib/proof-site/generic/")
+ :straight proof-general)
#+end_src
** [[https://leanprover.github.io][Lean]] (with [[https://github.com/leanprover/lean-mode][lean-mode]])
#+begin_src emacs-lisp
(use-package geiser)
-(use-package geiser-guile
+(use-feature geiser-guile
:config
(setq geiser-guile-load-path "~/src/git/guix"))
#+end_src
** guix
#+begin_src emacs-lisp
-(use-package guix
- :load-path "lib/guix/elisp")
+(use-package guix)
#+end_src
* Emacs enhancements
** man
#+begin_src emacs-lisp
-(use-package man
+(use-feature man
:config (setq Man-width 80))
#+end_src
;; prefixes for my personal bindings
"C-c a" "applications"
"C-c a s" "shells"
- "C-c b" "borg"
+ "C-c P" "package-management"
+ "C-c P e" "package-management/epkg"
+ "C-c P s" "package-management/straight.el"
"C-c c" "compile-and-comments"
"C-c e" "eval"
"C-c f" "files"
#+begin_src emacs-lisp
(use-package smart-mode-line
+ :commands (sml/apply-theme)
:demand
:config
(sml/setup))
** [[https://github.com/bbatsov/crux][crux]]
#+begin_src emacs-lisp
-(use-package crux
+(use-package crux ; results in Waiting for git... [2 times]
:defer 1
:bind (("C-c b k" . crux-kill-other-buffers)
("C-c d" . crux-duplicate-current-line-or-region)
:config
(unkillable-scratch 1)
:custom
- (unkillable-scratch-behavior 'do-nothing)
(unkillable-buffers '("^\\*scratch\\*$" "^\\*Messages\\*$")))
#+end_src
mail-user-agent 'gnus-user-agent
read-mail-command 'gnus)
-(use-package gnus
+(use-feature gnus
:bind (("s-m" . gnus)
("s-M" . gnus-unplugged))
:init
gnus-interactive-exit nil
gnus-gcc-mark-as-read t))
-(use-package gnus-art
+(use-feature gnus-art
:config
(setq
gnus-visible-headers
("R" . gnus-article-wide-reply-with-original)
("M-L" . org-store-link)))
-(use-package gnus-sum
+(use-feature gnus-sum
:bind (:map gnus-summary-mode-map
:prefix-map a/gnus-summary-prefix-map
:prefix "v"
("M-L" . org-store-link))
:hook (gnus-summary-mode . a/no-mouse-autoselect-window))
-(use-package gnus-msg
+(use-feature gnus-msg
:config
(setq gnus-posting-styles
'((".*"
(address "abandali@uwaterloo.ca")
(gcc "\"nnimap+uwaterloo:Sent Items\"")))))
-(use-package gnus-topic
+(use-feature gnus-topic
:hook (gnus-group-mode . gnus-topic-mode))
-(use-package gnus-agent
+(use-feature gnus-agent
:config
(setq gnus-agent-synchronize-flags 'ask)
:hook (gnus-group-mode . gnus-agent-mode))
-(use-package gnus-group
+(use-feature gnus-group
:config
(setq gnus-permanently-visible-groups "\\((INBOX\\|gnu$\\)"))
-(use-package mm-decode
+(use-feature mm-decode
:config
(setq mm-discouraged-alternatives '("text/html" "text/richtext")))
#+end_src
** sendmail
#+begin_src emacs-lisp
-(use-package sendmail
+(use-feature sendmail
:config
(setq sendmail-program "/usr/bin/msmtp"
;; message-sendmail-extra-arguments '("-v" "-d")
** message
#+begin_src emacs-lisp
-(use-package message
+(use-feature message
:config
(defconst a/message-cite-style-format "On %Y-%m-%d %l:%M %p, %N wrote:")
(defconst message-cite-style-bandali
Convenient footnotes in =message-mode=.
#+begin_src emacs-lisp
-(use-package footnote
+(use-feature footnote
:after message
:bind
(:map message-mode-map
#+begin_src emacs-lisp
(use-package ebdb
+ :straight (:host github :repo "girzel/ebdb")
:defer 2
:after gnus
:bind (:map gnus-group-mode-map ("e" . ebdb))
(with-eval-after-load 'swiper
(add-to-list 'swiper-font-lock-exclude 'ebdb-mode t)))
-(use-package ebdb-com
+(use-feature ebdb-com
:after ebdb)
;; (use-package ebdb-complete
:config
(defun company-ebdb--post-complete (_) nil))
-(use-package ebdb-gnus
+(use-feature ebdb-gnus
:defer 3
:after ebdb
+ :demand
:custom
(ebdb-gnus-window-configuration
'(article
(article 1.0)
(ebdb-gnus 0.3))))))
-(use-package ebdb-mua
+(use-feature ebdb-mua
:defer 3
:after ebdb
+ :demand
;; :custom (ebdb-mua-pop-up nil)
)
(use-package ox-hugo
:after ox)
-(use-package ox-hugo-auto-export
- :load-path "lib/ox-hugo")
+(use-feature ox-hugo-auto-export
+ :after ox-hugo)
#+end_src
* Post initialization
+++ /dev/null
-Subproject commit 9f329be87820474925f29b52a1131084c8ea95b9
+++ /dev/null
-Subproject commit 52d1f2d36468146c93aaf11399f581401a233306
+++ /dev/null
-Subproject commit 0d05bdd10c77ec04c3d61eccf67e68c08284951f
+++ /dev/null
-Subproject commit 81dc034572e963550c5403a2b3c28047e46b4029
+++ /dev/null
-Subproject commit 6ce4255ab9a0b010ef8414c5bd9a6d6d9eea012f
+++ /dev/null
-Subproject commit ff9903783013f3598b6f44c99d47b25c5cdbed00
+++ /dev/null
-Subproject commit 99d166796f181741ebd79542b96824b096bcb36c
+++ /dev/null
-Subproject commit 7e47e0e2853bc1215739b2e28f260e9eed93b2c5
+++ /dev/null
-Subproject commit 508577a7225b3d07eaefa9444064410af2518675
+++ /dev/null
-Subproject commit 012b94f8695e194455111fd54eff0b94dd0dd0db
+++ /dev/null
-Subproject commit b696b3943d2a55aed937cb0ba971d6e29b2e3a8b
+++ /dev/null
-Subproject commit 3b463fe1236ac6445657f3a1df20357a7a2fa8f6
+++ /dev/null
-Subproject commit 308f17d914e2cd79cbc809de66d02b03ceb82859
+++ /dev/null
-Subproject commit 8d5e00d268aa37d91baaa675cead953e58f19c6d
+++ /dev/null
-Subproject commit 6514359b8606a6a9a94068ccd601fcd6379d6584
+++ /dev/null
-Subproject commit 2cddce48d472111f178da84d44656f92012aa64b
+++ /dev/null
-Subproject commit 2f4a0cdf287a086d45a1d9e8536ace6a2e152318
+++ /dev/null
-Subproject commit 980927ff3dfdb238e7b168f0088353fec29db86e
+++ /dev/null
-Subproject commit 461a6b35dc9322d1ec59547ad845d26a6c65a698
+++ /dev/null
-Subproject commit de645d8144e8a08f039a9c88185121ec81d957ef
+++ /dev/null
-Subproject commit f59a1ae7ecfa97ef659c7adb93e0673419acc485
+++ /dev/null
-Subproject commit a8900dab9f8e2925ce5dea0f97bdac4ce47714d9
+++ /dev/null
-Subproject commit f8c3d9fce28ab7d5b0c9fcf2c1236151ca7add24
+++ /dev/null
-Subproject commit 1acb821e0142136344ccf40c1e5fb664d7db2e70
+++ /dev/null
-Subproject commit c42bc98a711ffa8d2a7b9096b563ac0edb0b9bf3
+++ /dev/null
-Subproject commit 78ab7a85c08222cd15582a298a364774e3282ce6
+++ /dev/null
-Subproject commit 9c100bae5c3020e8d9307e4332d3b64e7dc28519
+++ /dev/null
-Subproject commit 9bc0f4a762f16d488376fb52409c58239a86d75d
+++ /dev/null
-Subproject commit ed3292473035dc8f3d2f321e82974ef87327808f
+++ /dev/null
-Subproject commit de6d4d40ddc844eee643e92d47b9d6a63fbebb48
+++ /dev/null
-Subproject commit baf96df4d1c3e61bf62f15fbea05a880d1e49e45
+++ /dev/null
-Subproject commit 32ddff87165a7d3a35e7318bee997b5b4bd41278
+++ /dev/null
-Subproject commit a6a2f2c2194cdef97d67945aa1e7df81763ec34e
+++ /dev/null
-Subproject commit db15d00d01b8bd9187079a0b538d878d241743a8
+++ /dev/null
-Subproject commit 55468314a5f6b77d2c96be62c7005ac94545e217
+++ /dev/null
-Subproject commit 17fd6e9ca6f116e2d0d70ab1e9d7132b3a8bfd47
+++ /dev/null
-Subproject commit e2b309689f4faf9225f290080f836e988c5a576d
+++ /dev/null
-Subproject commit 495baedc983070f0158442173bdef0a35c2a1e9d
+++ /dev/null
-Subproject commit 4aa88752ab23bca3ded36a9c9fd9c34cffbb129b
+++ /dev/null
-Subproject commit 8433e877e31537d65e017219c1fe226abd78ae57
+++ /dev/null
-Subproject commit 039345ef60b4722d050c94ab1978540137df35f9
+++ /dev/null
-Subproject commit 24b9925b1b2c7ad6bf7b66800395f74abf035c5f
+++ /dev/null
-Subproject commit 92c69aa01c65968e86c15db087bb1ea785e4736c
+++ /dev/null
-Subproject commit 8ec3eb96ee63430fb24257e4aa8169b50cb7be12
+++ /dev/null
-Subproject commit 67098cc9149854a95b589c3763843eabc82c9b2d
+++ /dev/null
-Subproject commit 201c5d78c4985fb803eb681cca0ccc5a4f90b717
+++ /dev/null
-Subproject commit c14f40692292d59156c7632dbdd2867c086aa75f
+++ /dev/null
-Subproject commit 9d6b8471e2044310b4cd7cd3213b1fc8f78ec499
+++ /dev/null
-Subproject commit e22807f83a0890dc8a904c51ee0742c34efccc6c
+++ /dev/null
-Subproject commit d866fb3624bdeb87f0c56e359239e4474362d0af
+++ /dev/null
-Subproject commit 8eaa0becc2370484a432a8a19f40ce5e8d0f1642
+++ /dev/null
-Subproject commit 906e97d6e211129d4b7674a5efc416849bc7e43e
+++ /dev/null
-Subproject commit 9a561268ffb550b257a08710489a95cd087998b6
+++ /dev/null
-Subproject commit f954e4e18b0a035151d34852387e724d87a3316f
+++ /dev/null
-Subproject commit 6a7c3c0853e3fe9e4b8e5985dbed8fd4075f33ff
+++ /dev/null
-Subproject commit b4f3edb4c0fb8f8b71cecbf8095c2c25a8ffbf85
+++ /dev/null
-Subproject commit 4e7ecf017140bc522629cd2c977160f7cc2b8020
+++ /dev/null
-Subproject commit 495c7c6a5774a4d3035c582a3b4c95eb04e83dd5
+++ /dev/null
-Subproject commit d120090588d9b258629a95d226bb9f8bf4e2afca
+++ /dev/null
-Subproject commit 7477b00664bff9b0b9edfe7ecbef379a7543ba77
+++ /dev/null
-Subproject commit 00186ff8d7ae13fab6707b0e2e7665e055db558f
+++ /dev/null
-Subproject commit c41c3dfda86ae33832ffc146923e2a4675cbacfa
+++ /dev/null
-Subproject commit 87e801efb816b24e83ebf84c052001e178e180bc
+++ /dev/null
-Subproject commit 76ba7415480687d05a4353b27fea2ae02b8d9d61
+++ /dev/null
-Subproject commit 80829dd46381754639fb764da11c67235fe63282
+++ /dev/null
-Subproject commit d625ecb09e3a9fb319740686402197bdf6fc109b
+++ /dev/null
-Subproject commit 7389d43893569ff0e1eff892254901876fc8225e
+++ /dev/null
-Subproject commit a50d9b2fd059f6a0e5b22063a5375851a087f61a
+++ /dev/null
-Subproject commit 03410e6a7a2b11e47e1fea3b7d9899c7df26435e
+++ /dev/null
-Subproject commit 9d06c453d1537df46a4b703a29213cc7f7857aa0
+++ /dev/null
-Subproject commit 081d6b01e3ba0e60326558e545c4019219e046ce
+++ /dev/null
-Subproject commit b79f4fa5f2380b0d726a895dd7199e5483004490
+++ /dev/null
-Subproject commit 55aaebe3d793c2c990b39a302eb26c184281c42c
+++ /dev/null
-Subproject commit b40e6b09eb9be45da67b8c9e4990a5a0d7a2a09d
+++ /dev/null
-Subproject commit 9dad93b6f367f02f52c8d9bf15d446d922cec294
+++ /dev/null
-Subproject commit d805ee0570c218559cd972788c2d7f77704282b9
+++ /dev/null
-Subproject commit 39a8b8812c2c9f6f0b299e6a04e504ef393694ce
+++ /dev/null
-Subproject commit 5da977bec7714c09d41b556e2d651ccb269a14a2
+++ /dev/null
-Subproject commit 43e3e3d7641a8e1c298b37e6a277612bf0898708
+++ /dev/null
-Subproject commit efcb14fd306afbc738666e6b2e5a8a1bb5904392
+++ /dev/null
-Subproject commit 9dd9f176d96abc60365369de6d08c26c414ef1f3
+++ /dev/null
-Subproject commit 40067a10ac1360f0b9533f0bbbb2eea128e2574d
+++ /dev/null
-Subproject commit 1d96da2e08664c31ff7f6f7441da1f4fa5680b1f
--- /dev/null
+(("PG" . "7389d43893569ff0e1eff892254901876fc8225e")
+ ("all-the-icons.el" . "52d1f2d36468146c93aaf11399f581401a233306")
+ ("alloy-mode" . "0d05bdd10c77ec04c3d61eccf67e68c08284951f")
+ ("auto-compile" . "6ce4255ab9a0b010ef8414c5bd9a6d6d9eea012f")
+ ("boxquote.el" . "7e47e0e2853bc1215739b2e28f260e9eed93b2c5")
+ ("bui.el" . "508577a7225b3d07eaefa9444064410af2518675")
+ ("cl-lib" . "deb92588d9d83d46c4698936ea31c5f58d244f04")
+ ("closql" . "012b94f8695e194455111fd54eff0b94dd0dd0db")
+ ("company-ebdb" . "3b463fe1236ac6445657f3a1df20357a7a2fa8f6")
+ ("company-mode" . "b696b3943d2a55aed937cb0ba971d6e29b2e3a8b")
+ ("crux" . "308f17d914e2cd79cbc809de66d02b03ceb82859")
+ ("dante" . "8d5e00d268aa37d91baaa675cead953e58f19c6d")
+ ("dash.el" . "6514359b8606a6a9a94068ccd601fcd6379d6584")
+ ("diff-hl" . "2cddce48d472111f178da84d44656f92012aa64b")
+ ("ebdb" . "980927ff3dfdb238e7b168f0088353fec29db86e")
+ ("edit-indirect" . "de645d8144e8a08f039a9c88185121ec81d957ef")
+ ("elisp-refs" . "a8900dab9f8e2925ce5dea0f97bdac4ce47714d9")
+ ("emacs-async" . "81dc034572e963550c5403a2b3c28047e46b4029")
+ ("emacs-doom-themes" . "2f4a0cdf287a086d45a1d9e8536ace6a2e152318")
+ ("emacs-memoize" . "9a561268ffb550b257a08710489a95cd087998b6")
+ ("emacs-which-key" . "43e3e3d7641a8e1c298b37e6a277612bf0898708")
+ ("emacsql" . "f8c3d9fce28ab7d5b0c9fcf2c1236151ca7add24")
+ ("emmet-mode" . "1acb821e0142136344ccf40c1e5fb664d7db2e70")
+ ("epkg" . "c42bc98a711ffa8d2a7b9096b563ac0edb0b9bf3")
+ ("epkgs" . "3e2b3cbada81bdb5e9b3f4bf185c7258f656b021")
+ ("epl" . "78ab7a85c08222cd15582a298a364774e3282ce6")
+ ("eshell-up" . "9c100bae5c3020e8d9307e4332d3b64e7dc28519")
+ ("exec-path-from-shell" . "9bc0f4a762f16d488376fb52409c58239a86d75d")
+ ("expand-region.el" . "ed3292473035dc8f3d2f321e82974ef87327808f")
+ ("f.el" . "de6d4d40ddc844eee643e92d47b9d6a63fbebb48")
+ ("flycheck" . "baf96df4d1c3e61bf62f15fbea05a880d1e49e45")
+ ("flycheck-haskell" . "32ddff87165a7d3a35e7318bee997b5b4bd41278")
+ ("geiser" . "a6a2f2c2194cdef97d67945aa1e7df81763ec34e")
+ ("ghub" . "db15d00d01b8bd9187079a0b538d878d241743a8")
+ ("git.el" . "a3396a7027a7d986598c6a2d6d5599bac918f3da")
+ ("gnu-elpa-mirror" . "db6dd0677f0adac536ec6c575865770aa902c0a1")
+ ("graphql.el" . "e2b309689f4faf9225f290080f836e988c5a576d")
+ ("guix.el" . "495baedc983070f0158442173bdef0a35c2a1e9d")
+ ("haskell-mode" . "4aa88752ab23bca3ded36a9c9fd9c34cffbb129b")
+ ("helpful" . "039345ef60b4722d050c94ab1978540137df35f9")
+ ("hl-todo" . "24b9925b1b2c7ad6bf7b66800395f74abf035c5f")
+ ("hlint-refactor-mode" . "92c69aa01c65968e86c15db087bb1ea785e4736c")
+ ("lcr" . "c14f40692292d59156c7632dbdd2867c086aa75f")
+ ("lean-mode" . "9d6b8471e2044310b4cd7cd3213b1fc8f78ec499")
+ ("let-alist" . "4a7693b678c59a148660c736cc0bb26a5032ee9a")
+ ("loop.el" . "e22807f83a0890dc8a904c51ee0742c34efccc6c")
+ ("magit" . "50b5aad124a07614b5e3819c9f81915a454e08fc")
+ ("magit-popup" . "8eaa0becc2370484a432a8a19f40ce5e8d0f1642")
+ ("melpa" . "5487adde3bbb1bfd875c51932c63ceef541d6b6f")
+ ("multi-term" . "f954e4e18b0a035151d34852387e724d87a3316f")
+ ("multiple-cursors.el" . "6a7c3c0853e3fe9e4b8e5985dbed8fd4075f33ff")
+ ("mwim.el" . "b4f3edb4c0fb8f8b71cecbf8095c2c25a8ffbf85")
+ ("no-littering" . "4e7ecf017140bc522629cd2c977160f7cc2b8020")
+ ("org" . "5dc18f0c43e16343f3be26aec71f8eeed99969b8")
+ ("orgalist" . "f70a65da3a9bf3d0c1a9c769b77821d2a79c42cb")
+ ("ox-hugo" . "00186ff8d7ae13fab6707b0e2e7665e055db558f")
+ ("packed" . "c41c3dfda86ae33832ffc146923e2a4675cbacfa")
+ ("page-break-lines" . "87e801efb816b24e83ebf84c052001e178e180bc")
+ ("pkg-info.el" . "76ba7415480687d05a4353b27fea2ae02b8d9d61")
+ ("projectile" . "d625ecb09e3a9fb319740686402197bdf6fc109b")
+ ("rich-minority" . "a50d9b2fd059f6a0e5b22063a5375851a087f61a")
+ ("s.el" . "03410e6a7a2b11e47e1fea3b7d9899c7df26435e")
+ ("seq" . "095fb15a3baa082079799dd36b6caccdb062cb90")
+ ("shrink-path.el" . "9d06c453d1537df46a4b703a29213cc7f7857aa0")
+ ("shut-up" . "081d6b01e3ba0e60326558e545c4019219e046ce")
+ ("smart-mode-line" . "b79f4fa5f2380b0d726a895dd7199e5483004490")
+ ("smex" . "55aaebe3d793c2c990b39a302eb26c184281c42c")
+ ("straight.el" . "13d019dfc72e69cce58b510766e197b044ea823b")
+ ("swiper" . "201c5d78c4985fb803eb681cca0ccc5a4f90b717")
+ ("treepy.el" . "b40e6b09eb9be45da67b8c9e4990a5a0d7a2a09d")
+ ("typoel" . "9dad93b6f367f02f52c8d9bf15d446d922cec294")
+ ("unkillable-scratch" . "d805ee0570c218559cd972788c2d7f77704282b9")
+ ("use-package" . "39a8b8812c2c9f6f0b299e6a04e504ef393694ce")
+ ("web-mode" . "5da977bec7714c09d41b556e2d651ccb269a14a2")
+ ("with-editor" . "9dd9f176d96abc60365369de6d08c26c414ef1f3"))
+:saturn