Emacs Literate Package Additions

Table of Contents

1. About this file

This is an Emacs literate package file and is meant to compliment my configuration, as well as the init.el. It contains the basic structure along with some data about each package and why it’s needed. This is to be used in tandem with the define-package! function in config.org.

Since it’s primarily aimed at doom-emacs let’s add their comments.

;; -*- no-byte-compile: t; -*-
;;; ~/.config/doom/packages.el

1.1. About that TOC..

So as mentioned here there is trouble when org-export tries to create files while keeping the org-toc tag.

It’s not really a problem since org-export actually generates a TOC for the files anyway.

1.2. The properties

Basically, the properties set imply that the file is to be tangled for every block and moreover the output directory is the doom-private-dir. It’s practically self explanatory but still.

The filename is determined by the SRC block languages.

2. Bugfixes

These are hopefully just temporary.

;; https://github.com/doomemacs/doomemacs/issues/7078#issuecomment-1430884107
(package! transient :pin "c2bdf7e12c53...")
(package! with-editor :pin "391e76a256ae...")
;; (package! compat :pin "6f73eac")

3. OS Specific Packages

3.1. MacOS

Paths are a nightmare on darwin systems which necessitates a separate package for setting things up.

(cond (IS-MAC (package! exec-path-from-shell)

4. Aesthetic Packages

4.1. Dired Icons

Since treemacs already uses all-the-icons it is silly to not use them in dired, from the all-the-icons wiki.

(package! all-the-icons-dired)

4.2. Wakatime

Not exactly aesthetic, but yeah, for stats.

(package! wakatime-mode)

5. LATER Magit Additions

These basically allow for TODOs in magit along with enhanced github integration. These have been added upstream in develop.

(package! magit-org-todos)
(package! magithub)
(package! magit-todos)

Actually magit-todos has been added upstream which collates all todo items. There might still be workflows where magit-org-todos is useful since that displays a global todo.org file.

5.1. DONE Magit Delta

(package! magit-delta)

6. DONE Key Chords and Keybindings

It turns out that the switch to general.el is both inevitable (doom version 2.1) and very rational. However, I really can’t wait. So.. This is a stop gap solution.

(package! general)
  • Remove when it’s merged upstream

7. Evil Colemak

I guess I just gave up, from here. Read about why here. The visual line mode setup leverages this package.

(package! evil-colemak-basics :recipe (:branch "main"))
(package! evil-better-visual-line)

8. Firestarter

For running shell commands on-save.

(package! firestarter)

9. Org Additions

The new ones need to be covered in the config.org file with the appropriate keybindings. The notes are described here.

9.1. Mermaid

Technically not only an org addition, mermaid is kinda like a souped up ditaa. Naturally there’s an org mode addition.

(package! mermaid-mode)
(package! ob-mermaid)

9.2. Org Download

Now I load it here since I don’t use +attach.

(package! org-download
  :recipe (:host github
            :repo "abo-abo/org-download"))

9.3. LATER Org Drill

The actual repo has not been updated in 3 years, so I must use this fork.

(package! org-drill
  :recipe (:host github
            :repo "hakanserce/org-drill"))

9.4. Org Protocol Updates

This needs to be installed specially, from this repo.

(package! org-protocol-capture-html
  :recipe (:host github
           :repo "alphapapa/org-protocol-capture-html"))

9.5. TODO Org Noter

This is sort of more of a pdf-tools extension and it needs it’s own biblatex setup and stuff as well so this might move into a tree of it’s own.

(package! org-noter)

This actually breaks the pdf-tools bindings.

9.6. Org Ref

This is probably not the best thing in my current setup.. Now part of the init.el setup.

(package! org-ref)

9.7. Org Mind Map

Not on MELPA yet. From here.

(package! org-mind-map
  :recipe (:host github
            :repo "theodorewiles/org-mind-map"))

9.8. Org Rifle

Technically a helm addition. Perfect for monolithic org files. More details here.

(package! helm-org-rifle)

9.9. Org Async

We will use this.

(package! org-babel-eval-in-repl)

9.10. Anki Mode

This is put here since it only works with org-mode stuff.

(package! anki-editor)

9.11. Org Re-Reveal Extensions

An extension to org-re-reveal-ref. Also this.

(package! org-re-reveal-ref)

9.12. Org Roam Bibtex

This should be a part of the main +roam setup, but until then.

(package! org-roam-bibtex)

9.13. Org GCal

This extension seems to be a maintained fork.

(package! org-gcal)

9.14. Citeproc Org

Mainly used with ox-hugo

(package! citeproc-org :pin "0fb4c96f48b3...")

10. Dockerfile Mode

For syntax highlighting and inline builds. From spotify weirdly. ## -*- docker-image-name: "your-image-name-here" -*- can be used to specify the image name.

(package! dockerfile-mode)

11. Reference Management

11.0.1. Zotero

There are a bunch of zotero integrations for emacs, most notably, zotelo, but they don’t seem to be all that well mantained. Zotxt seems to be updated pretty often though.

(package! zotxt)

12. Syntax Highlighting

These are additionally required to work with the sort of files I use often. The configuration and settings are as usual in config.org

12.1. Sphinx and RsT

Though reStructured Text is supported natively, there are some quality of life exporters and packages which should be more useful.

(package! ox-rst
  :recipe (:host github
           :repo "msnoigrs/ox-rst"))
(package! sphinx-mode
  :recipe (:host github
           :repo "Fuco1/sphinx-mode"
           :files ("*.el")))

12.2. CPP Additions

Though the standard doom-emacs module configuration is a sane set of defaults, there are some glaring omissions, most egregious of is the lack of doxygen highlighting.

(package! highlight-doxygen)

12.3. Quarto Mode

(package! quarto-mode)

12.4. Meson Mode

Recently gotten into meson as a nice cmake alternative for smaller projects (maybe larger ones too).

(package! meson-mode)

12.5. Tup Mode

Because honestly there isn’t anything better than tup. Who doesn’t need a build system which scales with the eye of Mordor?

(package! tup-mode
:recipe (:host github
           :repo "ejmr/tup-mode"))

12.5.1. LATER Caveats

The repo is unmaintained so I ought to fork it and take a look into maintaining it.

12.6. SaltStack Mode

I have recently decided that saltstack ought to be used for working on multiple systems.

(package! salt-mode
:recipe (:host github
         :repo "glynnforrest/salt-mode"))

12.7. PKGBUILD Mode

No point using emacs if I can’t get highlighting for all my needs. This needs some extra configuration. Must figure out if this is well mantained. The developer is very responsive to pull requests and the like.

(package! pkgbuild-mode
  :recipe (:host github
            :repo "juergenhoetzel/pkgbuild-mode"))

12.8. LAMMPS Mode

This could do with some updates. Will look into this soon. Also it takesunbearably long this way. Must figure out how to stop it from downloading the whole repo. Mantained by me now.

(package! lammps-mode
  :recipe (:host github
                    :repo "HaoZeke/lammps-mode"))

12.9. Pug Mode

I just like pugs.

(package! pug-mode)

12.10. Nix Mode

For building more cross-os stuff. This is the official package, but will look into binding and using nix-emacs as well.

(package! nix-mode)

12.11. VIM mode

I like vim-script… well no I don’t but I still use it.

(package! vimrc-mode)

12.12. JVM Languages

Currently the languages I care about (apart from Java) are:

; Kotlin > Java
(package! kotlin-mode)
; Groovy -> Testing
(package! groovy-mode)

12.13. Systemd Mode

Since I use a lot of user systemd units, it makes sense to have pretty highlighting.

(package! systemd)

12.14. Dart Mode

Might eventually want to also get the companion dart server sometime, but for now this syntax-highlighter will do. Might actually want to see if prettier has anything for it.

(package! dart-mode)

12.15. Wolfram Mode

Actually wolfram-mode seems to be able to do more than just syntax highlighting, but at the moment I just need font-locking.

(package! wolfram-mode)

12.16. Polymode

For working with .Rmd files and better orgmode R support.

(package! poly-R)
(package! poly-org)

12.17. Snakemake

Font locking for .smk files as they are evidently called (from here).

(package! snakemake-mode)

13. Matrix Clients

Apparently Riot.im is now Element.io; and I could do with an emacs client…

(package! pretty-hydra)
(package! matrix-client :recipe (:host github :repo "alphapapa/matrix-client.el"))

14. Flycheck Additions

14.1. MELPA Helper

This is for linting files before submitting to MELPA.

(package! package-lint)
(package! flycheck-package)

15. Snippets

These are from hlissner.

15.1. Doom

(package! emacs-snippets
  :recipe (:host github
           :repo "hlissner/emacs-snippets"
           :files ("*")))

15.2. Standard

These are from the official snippets repo.

(package! yasnippet-snippets
  :recipe (:host github
           :repo "AndreaCrotti/yasnippet-snippets"
           :files ("*")))

16. Math support

I like cdlatex.

(package! cdlatex)

However, better support for symbols can be found in math-symbol-lists as discussed here.

(package! math-symbol-lists)

Also, CalcTeX makes life a lot easier, and is faster than calling SymPy or Mathematica.

(package! calctex :recipe (:host github :repo "johnbcoughlin/calctex"
                           :files ("*.el" "calctex/*.el" "calctex-contrib/*.el" "org-calctex/*.el" "vendor"))
  :pin "784cf911bc96...")

Date: 2020:04:09

Author: Rohit Goswami (HaoZeke) <rohit.goswami@aol.com>

Created: 2023-04-07 Fri 22:34