Skip to content

Latest commit

 

History

History
executable file
·
384 lines (296 loc) · 12.7 KB

File metadata and controls

executable file
·
384 lines (296 loc) · 12.7 KB

My Personal Emacs Configuration

This is my personal literate Emacs configuration. With it I aim to get the most out of Emacs there where it shines most, which in my humble opinion is note-taking, writing and literate programming.

Objectives

I aim to make of Emacs my tool of choice to:

  • Jot down notes and write documents and prose
    • [X] diary
    • [X] scratchpad
    • [X] zettelkasten
  • Write code and version control
    • [X] Jupyter-style notebooks within Org Mode
    • [X] Magit
    • [ ] IDE
  • Manage the configuration of my machine
    • [X] literate dotfiles
  • Manage email
    • [ ] email client
  • Publish to the web and in document form
    • [ ] blog
    • [ ] LaTeX

Lockfile

As explained by Luca Ambiaghi,

We can run M-x straight-freeze-versions to write the file straight/versions/default.el. The content of the file can then be kept in a code block, under version control. The code block can then be tangle again to straight/versions/default.el. We can then restore package versions using M-x straight-thaw-versions.

(("Emacs-wgrep" . "3132abd3750b8c87cbcf6942db952acfab5edccd")
 ("Highlight-Indentation-for-Emacs" . "d88db4248882da2d4316e76ed673b4ac1fa99ce3")
 ("ace-window" . "77115afc1b0b9f633084cf7479c767988106c196")
 ("alert" . "c762380ff71c429faf47552a83605b2578656380")
 ("all-the-icons-completion" . "e09e65bf05b247ea0e2bdc5d36ea5a58fc2ed69b")
 ("all-the-icons.el" . "f491f39c21336d354e85bdb4cca281e0a0c2f880")
 ("autothemer" . "6277b086ec2d0a17f5722caf6a0ec5ca16cb5486")
 ("avy" . "be612110cb116a38b8603df367942e2bb3d9bdbe")
 ("cfrs" . "f3a21f237b2a54e6b9f8a420a9da42b4f0a63121")
 ("circadian.el" . "52e336d9bb66cfd6d6dc5b9213ea21796ac873d4")
 ("closql" . "ea49aa1d12ad7fb5d8e9f87eec033732aff1ee7a")
 ("company-mode" . "7c24dc8668af5aea8a5d07aeceda5fac7a2a85b5")
 ("compat" . "9428a64eb8a579f35d57bc4d4cdb6c5cf10806c1")
 ("dash.el" . "6db80c711ce947f6c6fa11e5c2257fff2c79d139")
 ("delight" . "70cb8cec9e5eb2c24364e065d85c2ea8f14a587c")
 ("dirvish" . "119f9f59a618bb7b476c93e9ab1d7542c5c1df41")
 ("ef-themes" . "86b92a5567800c50ea316d97846df138f34a3307")
 ("el-get" . "f3f1edd434221dc6daef565ebf77fa40c4cead36")
 ("el-patch" . "e358febcb03f71f3aed4b37f99990ae865f1124b")
 ("eldoc" . "a2aaed2b7c70c1f28dd212fe2f4304ce89c338d7")
 ("elisp-refs" . "bf3cca8f74065b1b31036f461e3a093b162311bd")
 ("elpy" . "7ff8ffa918411887d165764f7a5a12bc46646e73")
 ("emacs-async" . "bb0509060ddc9c94bc7db7bddb12995acb3b53e4")
 ("emacs-calfw" . "03abce97620a4a7f7ec5f911e669da9031ab9088")
 ("emacs-dashboard" . "0cae7b872552c73da2ff61de6623b8c3196f1937")
 ("emacs-web-server" . "6260232da8b53c4e214bc5e427ec00c3ebdd9869")
 ("emacs-websocket" . "40c208eaab99999d7c1e4bea883648da24c03be3")
 ("emacs-which-key" . "df6b0cb8449812e7fb200bc852107fa7eb708496")
 ("emacsmirror-mirror" . "8e7cbfea765e5f9095c6f130a5efd949c04f9c72")
 ("emacsql" . "64012261f65fcdd7ea137d1973ef051af1dced42")
 ("embrace.el" . "dd5da196e5bcc5e6d87e1937eca0c21da4334ef2")
 ("epl" . "78ab7a85c08222cd15582a298a364774e3282ce6")
 ("evil" . "b291039b0c6ffc3b2f3c9f02b8ad2f0041127b12")
 ("evil-god-state" . "3d44197dc0a1fb40e7b7ff8717f8a8c339ce1d40")
 ("evil-org-mode" . "b1f309726b1326e1a103742524ec331789f2bf94")
 ("expand-region.el" . "b70feaa644310dc2d599dc277cd20a1f2b6446ac")
 ("f.el" . "19e1da061e759b05e8c480b426287a063ca39484")
 ("flycheck" . "5f2ef177cb21ae8b73714575802beef04abd0f5e")
 ("forge" . "dc777b64ad33d0b70dc2067af8401a9598d21764")
 ("ghub" . "0fd648f0529f34b5da441d54c9dbff7810477d12")
 ("gntp.el" . "767571135e2c0985944017dc59b0be79af222ef5")
 ("gnu-elpa-mirror" . "be1351c478935b8348c19d3197cd5d84330c708d")
 ("god-mode" . "607aff10a7b27a8aa0c1a15c2c39337ab17cfda7")
 ("goto-chg" . "278cd3e6d5107693aa2bb33189ca503f22f227d0")
 ("helpful" . "c57ff0d284b50ff430fe1f13fd48deaa0d1a910e")
 ("ht.el" . "1c49aad1c820c86f7ee35bf9fff8429502f60fef")
 ("hydra" . "317e1de33086637579a7aeb60f77ed0405bf359b")
 ("let-alist" . "021fc10df2e44faba4728d849ee767cf890aa51a")
 ("log4e" . "737d275eac28dbdfb0b26d28e99da148bfce9d16")
 ("lsp-mode" . "d14d3d5e1e21eb658b2cf2f6be34f43072027328")
 ("magit" . "93d30c5459e75a0d53581da2a5539a54efa329ab")
 ("markdown-mode" . "f8a91fef75d99b83591417df856b5240d78ae563")
 ("melpa" . "bdb191b4cd65bd60a905ec2866471031abec7f23")
 ("moody" . "888e6fb37eb5122803c70ae60d28fc54589e26c0")
 ("multiple-cursors.el" . "234806c832994cadedb42596fe235e91bbd59e8c")
 ("no-littering" . "fcfd51fbdf08469e6d1b59bc4bd2d75aa708c791")
 ("nongnu-elpa" . "14e9631cd2b81f66ed551b14d31811a75cc53a4b")
 ("olivetti" . "a644ee9d24c7283435ce42e11498951e100608c9")
 ("orderless" . "6936fe46ef07df168a423f04efeda130b4e69753")
 ("org" . "8ef6205a560cd3a92f8c5f8fe34953b80121c2cb")
 ("org-appear" . "60ba267c5da336e75e603f8c7ab3f44e6f4e4dac")
 ("org-contacts" . "7f03eafaad2e5746949c0bebb98353e939c51ade")
 ("org-download" . "19e166f0a8c539b4144cfbc614309d47a9b2a9b7")
 ("org-fragtog" . "ede4ac61e8cb580f63f882bdee2b0e573cd3dd60")
 ("org-modern" . "63372bda43a9d0dd9940c1ec3c53f752b642ac41")
 ("org-pomodoro" . "3f5bcfb80d61556d35fc29e5ddb09750df962cc6")
 ("org-rainbow-tags" . "550cc521013ba631bb3ad5fc4acdb72b655b24b7")
 ("org-reveal" . "f55c851bf6aeb1bb2a7f6cf0f2b7bd0e79c4a5a0")
 ("org-roam" . "5c06471c3a11348342719fd9011486455adeb701")
 ("org-roam-timestamps" . "c4ff1e2f5b0905b5caa917249aab56ddc1de1ab3")
 ("org-roam-ui" . "5ac74960231db0bf7783c2ba7a19a60f582e91ab")
 ("org-super-agenda" . "f4f528985397c833c870967884b013cf91a1da4a")
 ("ox-ipynb" . "4c1cc46268a76751eec83a66d481687a0da6d668")
 ("page-break-lines" . "5e9ed86bb56fd076b12ae7adaf40eeaa09aed4c5")
 ("pdf-tools" . "c69e7656a4678fe25afbd29f3503dd19ee7f9896")
 ("pdf-view-restore" . "5a1947c01a3edecc9e0fe7629041a2f53e0610c9")
 ("pfuture" . "19b53aebbc0f2da31de6326c495038901bffb73c")
 ("pkg-info" . "76ba7415480687d05a4353b27fea2ae02b8d9d61")
 ("posframe" . "017deece88360c7297265680d78a0bb316470716")
 ("project" . "927a7534138b70fa80e89450c77258f9386d03a1")
 ("projectile" . "971cd5c4f25ff1f84ab7e8337ffc7f89f67a1b52")
 ("puni" . "a39a4ecac7279bed1a150a895bbc80baa7272888")
 ("pyvenv" . "31ea715f2164dd611e7fc77b26390ef3ca93509b")
 ("rainbow-delimiters" . "a32b39bdfe6c61c322c37226d66e1b6d4f107ed0")
 ("rainbow-mode" . "8e96388fb4d616a9dde23e712bad0d9cd048fbf0")
 ("rg.el" . "e9dc4ed342e0212d08fb82554dfd3c57fdfa5b1a")
 ("rust-mode" . "9c26dc1195ec05309ee15c014631fb9abd6cf5d2")
 ("rustic" . "39423d1cf4fa054c36bf9577356451f4c06ee148")
 ("s.el" . "dda84d38fffdaf0c9b12837b504b402af910d01d")
 ("spinner" . "634529bb3173e09b37499f636de70abf29d9fa8a")
 ("straight.el" . "ff63b154bef1ef8d92c141bd189001bff74f6982")
 ("super-save" . "6f6512bc44b09f7187e58772892fa330f4518c12")
 ("swiper" . "595d44264420d989e420351ea25b3c99528547c0")
 ("tablist" . "5f7b71a92bfb25418d7da86ad9c45f14b149496f")
 ("transient" . "d056a6c013b9e7160a676365bcf29905bfe65093")
 ("treemacs" . "6a6171c6d09522a736f1bb91b7e351aa93d0ac2e")
 ("treepy.el" . "75fe3ec37e6f9b2bdfd6d0584efd984d0c00a43e")
 ("ts.el" . "552936017cfdec89f7fc20c254ae6b37c3f22c5b")
 ("use-package" . "a6e856418d2ebd053b34e0ab2fda328abeba731c")
 ("vertico" . "353694558a1caffe1d1f8fe3a3eb7a4a9fee7d3a")
 ("vundo" . "5e917b35a942c7e18044ba8ebddbe98f8e85d818")
 ("with-editor" . "a4853781835346aabf083d2d9cb87f656d01ccac")
 ("workgroups.el" . "9572b3492ee09054dc329f64ed846c962b395e39")
 ("xref" . "420511e20187d0c6c8680c0e63ae8810f84dee00")
 ("xterm-color" . "2ad407c651e90fff2ea85d17bf074cee2c022912")
 ("yaml.el" . "ee86566af1ed4975531ab3aa4eb4dba770c227f6")
 ("yasnippet" . "5cbdbf0d2015540c59ed8ee0fcf4788effdf75b6")
 ("yasnippet-snippets" . "bec49fa129ae8c0104ba150f9b8352a39c54dbd6"))
:gamma

References:

Editor

UI

Themes

(mirage-module 'ef-themes)

(setq light-theme 'ef-deuteranopia-light)
(setq dark-theme  'ef-tritanopia-dark)

Mode line

(mirage-layer 'modeline-moody)

Typefaces

;; default
(set-face-attribute 'default nil        :font "Fira Code Retina" :height 93)

;; fixed pitch
(set-face-attribute 'fixed-pitch nil    :font "Fira Code Retina" :height 93)

;; variable pitch
(set-face-attribute 'variable-pitch nil :font "PT Sans"  :height 105 :weight 'regular)

;; italic
(defface mirage/italic
  '((t :font "Victor Mono" :height  86 :weight  bold :slant italic))
  "Italic typeface")

;; titles
(setq typeface-title "Latin Modern Roman")

;; headings
(setq typeface-heading "Century Gothic")

;; mode line
(set-face-attribute 'mode-line nil :height 85 :inherit 'fixed-pitch)

Editor

Guidance

(mirage-module 'counsel)
(mirage-module 'helpful)
(mirage-module 'which-key)

Navigation

(mirage-layer 'navigation)

Control

;; text editing
(mirage-layer 'editing)
;; text search
(mirage-layer 'search)
;; snippets
(mirage-module 'yasnippet)
;; auto-completions
(mirage-layer 'completion-vertico)

Workflow

;; session management
(mirage-layer 'session)
;; project management
(mirage-layer 'project-interaction)

File management

(mirage-layer 'file-management)

Applications

IDE

(mirage-layer 'ide)

LaTeX

(mirage-layer 'latex)

Org Mode

(mirage-module 'bitacora)

(mirage-layer 'org-agenda)
(mirage-layer 'org-gtd)

Personal settings

;; language
(setq default-input-method 'spanish-prefix)

;; custom link types
(@mirage/org-dir-link "msc1" (concat home "studio/academic/education/TU Delft/MSc/Space Flight/SPF-1/"))
(@mirage/org-dir-link "ta"(concat home "studio/academic/education/TU Delft/_assistantships/"))

;; org-roam capture templates
(setq org-roam-capture-templates
      '(("m" "mathematics" plain "%?"
         :target (file+head "mathematics/%<%Y%m%d%H%M%S>-${slug}.org"
			           "#+STARTUP: subtree\n\n\n\n#+title:${title}\n\n\n")
         :unnarrowed t)
        ("c" "control" plain "%?"
         :target (file+head "control/%<%Y%m%d%H%M%S>-${slug}.org"
			           "#+STARTUP: subtree\n\n\n\n#+title:${title}\n\n\n")
         :unnarrowed t)))

;; org-agenda setup
(setq org-agenda-hide-tags-regexp
      "CW\\|INT\\|THESIS\\|TA\\|BIRTHDAY\\|PERSONAL\\|PROFESSIONAL\\|TRAVEL\\|PEOPLE\\|HOME\\|FINANCE\\|PURCHASES\\|GIFTS")

(setq org-super-agenda-groups
      '(;; Each group has an implicit boolean OR operator between its selectors.
        (:name "Important"
               ;; Single arguments given alone
               :priority "A")
        (:name "Coursework"
               ;; Single arguments given alone
               :tag "CW")
        (:name "Internship"
               ;; Single arguments given alone
               :tag "INT")
        (:name "Thesis"
               ;; Single arguments given alone
               :tag "THESIS")
        (:name "Assistantships"
               ;; Single arguments given alone
               :tag "TA")
        (:name "Personal"
               ;; Single arguments given alone
               :tag "PERSONAL")
        (:name "Professional"
               ;; Single arguments given alone
               :tag "PROFESSIONAL")
        (:name "Travel"
               ;; Single arguments given alone
               :tag "TRAVEL")
        (:name "Keeping in touch"
               ;; Single arguments given alone
               :tag "PEOPLE")
        (:name "Home"
               ;; Single arguments given alone
               :tag "HOME")
        (:name "Medical"
               ;; Single arguments given alone
               :tag "MEDICAL")
        (:name "Finance"
               ;; Single arguments given alone
               :tag "FINANCE")
        (:name "Purchases"
               ;; Single arguments given alone
               :tag "PURCHASES")
        (:name "Gifts"
               ;; Single arguments given alone
               :tag "GIFTS")
        (:name "Birthdays"
               ;; Single arguments given alone
               :tag "BIRTHDAY")
        (:priority<= "B"
                     ;; Show this section after "Today" and "Important", because
                     ;; their order is unspecified, defaulting to 0. Sections
                     ;; are displayed lowest-number-first.
                     :order 1)
        ;; After the last group, the agenda will display items that didn't
        ;; match any of these groups, with the default order position of 99
        ))