From c2abe22da4bb25c063de7a7fbd07f7e244502336 Mon Sep 17 00:00:00 2001 From: willemml Date: Tue, 11 Apr 2023 00:40:29 -0700 Subject: [PATCH] emacs config update --- flake-parts/overlays.nix | 7 -- flake.lock | 66 ++++++-------- flake.nix | 2 - .../user/willem/programs/emacs/default.nix | 40 ++++++--- .../user/willem/programs/emacs/init.el | 86 ++++++++----------- 5 files changed, 89 insertions(+), 112 deletions(-) diff --git a/flake-parts/overlays.nix b/flake-parts/overlays.nix index c442d25..89ad9df 100644 --- a/flake-parts/overlays.nix +++ b/flake-parts/overlays.nix @@ -6,13 +6,6 @@ }: { flake.overlays = { default = import ../packages; - emacs29 = final: prev: { - emacs29 = prev.emacsGit.overrideAttrs (old: { - name = "emacs29"; - version = "29.0-${inputs.emacs-src.shortRev}"; - src = inputs.emacs-src; - }); - }; emacs-overlay = inputs.emacs-overlay.overlays.default; fenix = inputs.fenix.overlays.default; rycee-firefox-addons = final: prev: {rycee-firefox-addons = inputs.rycee-firefox-addons.outputs.packages.${prev.system};}; diff --git a/flake.lock b/flake.lock index 8269c19..f2c14fe 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1680266963, - "narHash": "sha256-IW/lzbUCOcldLHWHjNSg1YoViDnZOmz0ZJL7EH9OkV8=", + "lastModified": 1681154394, + "narHash": "sha256-avnu1K9AuouygBiwVKuDp6emiTET43az3rcpv0ctLjc=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "99d4187d11be86b49baa3a1aec0530004072374f", + "rev": "025912529dd0b31dead95519e944ea05f1ad56f2", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1680633267, - "narHash": "sha256-9piZEQgXxjsrV5f3VtI6fRcXDjxVRAdpPU8L7UefLSA=", + "lastModified": 1681165126, + "narHash": "sha256-Qte3CafN9PkT+hx6HBKqQoCeQAdOGi5ZEUByKQh1IX0=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "39db4c582a4935df06184da96d2315c01cd0613c", + "rev": "644ae3ce05ae9d42232bba9642d4eaa63bb062d3", "type": "github" }, "original": { @@ -41,34 +41,17 @@ "type": "github" } }, - "emacs-src": { - "flake": false, - "locked": { - "lastModified": 1680780971, - "narHash": "sha256-c5aLVyuT8bK3bJfQSi+HNQGSJyWSvp7X+tr0bX3syZ4=", - "ref": "emacs-29", - "rev": "305246d9726bbe05a65ad3836880138db5c01dfa", - "revCount": 164964, - "type": "git", - "url": "https://git.savannah.gnu.org/git/emacs.git" - }, - "original": { - "ref": "emacs-29", - "type": "git", - "url": "https://git.savannah.gnu.org/git/emacs.git" - } - }, "fenix": { "inputs": { "nixpkgs": "nixpkgs", "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1680675734, - "narHash": "sha256-8nbvr2/hME6mBRA8AWgRBnzBxuw1rFKGqo4bUuoTSmg=", + "lastModified": 1681107727, + "narHash": "sha256-49r7llR0lRrZLC2uBiRgXN0Ds1kfH7JgBfH5+sQAGio=", "owner": "nix-community", "repo": "fenix", - "rev": "46de13a1bc44050cb314ee5c02e8ee47e2089d30", + "rev": "4869bb2408e6778840c8d00be4b45d8353f24723", "type": "github" }, "original": { @@ -185,11 +168,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1680597706, - "narHash": "sha256-ZqJ3T+BxzjPH9TnmeUwS4Uu9ZQPeBXAFC9sUWlharT4=", + "lastModified": 1681162249, + "narHash": "sha256-jh5fLaTxR5XowXA0CN/1Gs2qbvVdmdPCSeO424XWZLI=", "owner": "nix-community", "repo": "home-manager", - "rev": "ec06f419af79207b33d797064dfb3fc9dbe1df4a", + "rev": "4e79c6a414ce59fd1a53ab77899c77ab87774e6b", "type": "github" }, "original": { @@ -221,11 +204,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1680487167, - "narHash": "sha256-9FNIqrxDZgSliGGN2XJJSvcDYmQbgOANaZA4UWnTdg4=", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "53dad94e874c9586e71decf82d972dfb640ef044", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { @@ -271,11 +254,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1680487167, - "narHash": "sha256-9FNIqrxDZgSliGGN2XJJSvcDYmQbgOANaZA4UWnTdg4=", + "lastModified": 1681036984, + "narHash": "sha256-AbScJXshYzbeUKHh+Y3OICc3iAtr+NqJ3Xb81GW+ptU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "53dad94e874c9586e71decf82d972dfb640ef044", + "rev": "fd531dee22c9a3d4336cc2da39e8dd905e8f3de4", "type": "github" }, "original": { @@ -312,11 +295,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1680599552, - "narHash": "sha256-rQQJFGvWQ3Sr+m/r5KGIFN0iVaVKr6u9uraCz6jSKj4=", + "lastModified": 1680981441, + "narHash": "sha256-Tqr2mCVssUVp1ZXXMpgYs9+ZonaWrZGPGltJz94FYi4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "3342d7c51119030490fdcd07351b53b10806891c", + "rev": "2144d9ddcb550d6dce64a2b44facdc8c5ea2e28a", "type": "github" }, "original": { @@ -329,7 +312,6 @@ "inputs": { "darwin": "darwin", "emacs-overlay": "emacs-overlay", - "emacs-src": "emacs-src", "fenix": "fenix", "flake-parts": "flake-parts", "home-manager": "home-manager", @@ -342,11 +324,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1680600956, - "narHash": "sha256-7+nyJq1q82t04T4fkvZ4csjeJCh0RzB3IDk5HTH6y+4=", + "lastModified": 1680884353, + "narHash": "sha256-efcZC+/FH3ZXMgDL3K5RIzKeD0Ow1ci096cXkTsP8SQ=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "a6464392c15fa8788215d669c4c0b1e46bcadeea", + "rev": "01120f1213ad928de7300a8acf9f41bed72d0422", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6a65e24..6b769d4 100644 --- a/flake.nix +++ b/flake.nix @@ -7,8 +7,6 @@ darwin.inputs.nixpkgs.follows = "nixpkgs"; emacs-overlay.url = "github:nix-community/emacs-overlay"; emacs-overlay.inputs.nixpkgs.follows = "nixpkgs"; - emacs-src.url = "git+https://git.savannah.gnu.org/git/emacs.git?ref=emacs-29"; - emacs-src.flake = false; fenix.url = "github:nix-community/fenix"; flake-parts.url = "github:hercules-ci/flake-parts"; home-manager.url = "github:nix-community/home-manager"; diff --git a/home-manager/modules/profiles/user/willem/programs/emacs/default.nix b/home-manager/modules/profiles/user/willem/programs/emacs/default.nix index 7ae538a..9b7ad24 100644 --- a/home-manager/modules/profiles/user/willem/programs/emacs/default.nix +++ b/home-manager/modules/profiles/user/willem/programs/emacs/default.nix @@ -4,22 +4,26 @@ ... }: let emacsPackage = - (pkgs.emacsPackagesFor pkgs.emacs29).emacsWithPackages + (pkgs.emacsPackagesFor pkgs.emacsGit).emacsWithPackages (epkgs: (with epkgs; let - org-auctex = epkgs.trivialBuild { - pname = "org-auctex"; - version = "e1271557b9f36ca94cabcbac816748e7d0dc989c"; - - buildInputs = [epkgs.auctex]; + company-mode = epkgs.trivialBuild { + pname = "company-mode"; + version = "4203cfb"; src = pkgs.fetchFromGitHub { - owner = "karthink"; - repo = "org-auctex"; - rev = "e1271557b9f36ca94cabcbac816748e7d0dc989c"; - sha256 = "sha256-cMAhwybnq5HA1wOaUqDPML3nnh5m1iwEETTPWqPbAvw="; + owner = "company-mode"; + repo = "company-mode"; + rev = "4203cfbe1303ca86e61ffa31cb88d75782dbb893"; + sha256 = "sha256-wj0vXlVkNEA1gD1oT3phzK5Dr/LNkiE2oRzzRmLE+20="; }; }; + mu4e = epkgs.trivialBuild { + pname = "mu4e"; + version = pkgs.mu.version; + + src = "${pkgs.mu}/share/emacs/site-lisp/mu4e"; + }; mu4e-accounts = epkgs.trivialBuild { pname = "mu4e-accounts"; version = "0.1"; @@ -55,6 +59,19 @@ (provide 'mu4e-accounts) ''; }; + org-auctex = epkgs.trivialBuild { + pname = "org-auctex"; + version = "e1271557b9f36ca94cabcbac816748e7d0dc989c"; + + buildInputs = [epkgs.auctex]; + + src = pkgs.fetchFromGitHub { + owner = "karthink"; + repo = "org-auctex"; + rev = "e1271557b9f36ca94cabcbac816748e7d0dc989c"; + sha256 = "sha256-cMAhwybnq5HA1wOaUqDPML3nnh5m1iwEETTPWqPbAvw="; + }; + }; in [ all-the-icons all-the-icons-dired @@ -64,7 +81,7 @@ calibredb cdlatex citeproc - company + company-mode counsel editorconfig edit-indirect @@ -76,6 +93,7 @@ ivy-bibtex magit meow + mu4e mu4e-accounts nix-mode nix-update diff --git a/home-manager/modules/profiles/user/willem/programs/emacs/init.el b/home-manager/modules/profiles/user/willem/programs/emacs/init.el index 6d0ecba..4a5e1bb 100644 --- a/home-manager/modules/profiles/user/willem/programs/emacs/init.el +++ b/home-manager/modules/profiles/user/willem/programs/emacs/init.el @@ -56,6 +56,8 @@ (global-unset-key (kbd "C-")) (global-unset-key (kbd "C-")) +(require 'all-the-icons) +(require 'all-the-icons-dired) (require 'arduino-mode) (require 'async) (require 'calibredb) @@ -95,6 +97,7 @@ (require 'org-download) (require 'org-modern) (require 'ox-latex) +(require 'ox-publish) (require 'pdf-tools) (require 'plantuml-mode) (require 'polymode) @@ -106,27 +109,21 @@ (setq org-directory (expand-file-name "~/Documents/org")) -(when (display-graphic-p) - (require 'all-the-icons) - (require 'all-the-icons-dired) - (add-hook 'dired-mode-hook 'all-the-icons-dired-mode)) +(add-hook 'dired-mode-hook 'all-the-icons-dired-mode) (setq arduino-executable "/Applications/Arduino.app/Contents/MacOS/Arduino") (setq send-mail-function 'async-smtpmail-send-it message-send-mail-function 'async-smtpmail-send-it) -(setq calibredb-root-dir "~/Documents/calibre-library") +(setq calibredb-root-dir (expand-file-name "~/Documents/calibre-library")) (setq calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir)) (setq calibredb-library-alist '(("~/Documents/calibre-library"))) -(add-hook 'after-init-hook 'global-company-mode) +(setq company-format-margin-function 'company-text-icons-margin) +(setq company-text-icons-add-background t) -;; Align company-mode tooltips to the right hand side -(setq company-tooltip-align-annotations t) -;; Display number of completions before and after current suggestions -;; in company-mode -(setq company-tooltip-offset-display 'lines) +(add-hook 'after-init-hook 'global-company-mode) (global-set-key "\C-s" 'swiper) (global-set-key (kbd "C-c C-r") 'ivy-resume) @@ -169,8 +166,11 @@ (setq ivy-re-builders-alist '((ivy-bibtex . ivy--regex-ignore-order) (t . ivy--regex-plus))) -(defvar ivy-bibtex-bibliography '((expand-file-name "zotero.bib" org-directory))) -(setq reftex-default-bibliography '((expand-file-name "zotero.bib" org-directory))) + +(defvar zotero-bibliography (expand-file-name "zotero.bib" org-directory)) + +(defvar ivy-bibtex-bibliography (list zotero-bibliography)) +(setq reftex-default-bibliography (list zotero-bibliography)) (setq bibtex-completion-pdf-field "file") (add-hook 'LaTeX-mode-hook 'turn-on-cdlatex) @@ -312,30 +312,16 @@ (define-hostmode poly-nix-hostmode :mode 'nix-mode) (define-auto-innermode poly-any-expr-nix-innermode - :head-matcher (rx (zero-or-more blank) "/*" (zero-or-more blank) bow (one-or-more (or word punct)) eow (zero-or-more blank) "*/" (zero-or-more blank) "''\n") - :mode-matcher (cons (rx "/*" (zero-or-more blank) (submatch bow (one-or-more (or word punct)) eow) (zero-or-more blank) "*/") 1) - :tail-matcher (rx (zero-or-more blank) "'';\n") + :head-matcher (rx (* blank) "/*" (* blank) bow (+ (or word punct)) eow (* blank) "*/" (* blank) "''\n") + :mode-matcher (cons (rx "/*" (* blank) (submatch bow (+ (or word punct)) eow) (* blank) "*/") 1) + :tail-matcher (rx bol (* blank) "'';" (* blank) eol) :head-mode 'host :tail-mode 'host :fallback-mode 'text-mode) -(define-innermode poly-elisp-expr-nix-innermode - :mode 'emacs-lisp-mode - :head-matcher (cons (rx (zero-or-more blank) "''\n" (submatch (zero-or-more blank) ";")) 1) - :tail-matcher (rx (zero-or-more blank) "'';\n") - :head-mode 'body - :tail-mode 'host) - -(define-innermode poly-sh-expr-nix-innermode - :mode 'sh-mode - :head-matcher (cons (rx (zero-or-more blank) "''\n" (submatch (zero-or-more blank) "#")) 1) - :tail-matcher (rx (zero-or-more blank) "'';\n") - :head-mode 'body - :tail-mode 'host) - (define-polymode poly-nix-mode :hostmode 'poly-nix-hostmode - :innermodes '(poly-any-expr-nix-innermode poly-sh-expr-nix-innermode poly-elisp-expr-nix-innermode)) + :innermodes '(poly-any-expr-nix-innermode)) (add-to-list 'auto-mode-alist '("\\.nix$" . poly-nix-mode)) @@ -419,19 +405,17 @@ Opens in new window otherwise opens in current window." (plist-put org-format-latex-options :scale 3) -(setq org-agenda-files '(org-directory (expand-file-name "ubc" org-directory))) +(setq org-agenda-files (list org-directory (expand-file-name "ubc" org-directory))) (setq org-agenda-tags-column 0) (setq org-auto-align-tags nil) (setq org-fold-catch-invisible-edits 'show-and-error) -(setq org-cite-csl-styles-dir "~/Zotero/styles") (setq org-cite-export-processors '((t basic))) -(setq org-cite-global-bibliography '((expand-file-name "zotero.bib" org-directory))) +(setq org-cite-global-bibliography (list zotero-bibliography)) (setq org-confirm-babel-evaluate nil) (setq org-ellipsis "…") (setq org-export-with-tags nil) (setq org-hide-emphasis-markers t) (setq org-highlight-latex-and-related '(latex)) -(setq org-html-head "") (setq org-html-head-include-default-style nil) (setq org-html-head-include-scripts nil) (setq org-html-validation-link nil) @@ -452,21 +436,23 @@ Opens in new window otherwise opens in current window." (800 1000 1200 1400 1600 1800 2000) " ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")) +(setq org-exports-dir (expand-file-name "exports" org-directory)) + (setq org-publish-project-alist - '(("html" - :base-directory org-directory - :base-extension "org" - :htmlized-source t - :recursive t - :publishing-directory (expand-file-name "exports" org-directory) - :publishing-function org-html-publish-to-html) - ("pdf" - :base-directory org-directory - :base-extension "org" - :recursive t - :publishing-directory (expand-file-name "exports" org-directory) - :publishing-function org-latex-publish-to-pdf) - ("all" :components ("html" "pdf")))) + (list (cons "html" + (list :base-directory org-directory + :base-extension "org" + :htmlized-source t + :recursive t + :publishing-directory org-exports-dir + :publishing-function 'org-html-publish-to-html)) + (cons "pdf" + (list :base-directory org-directory + :base-extension "org" + :recursive t + :publishing-directory org-exports-dir + :publishing-function 'org-latex-publish-to-pdf)) + (cons "all" '(:components ("html" "pdf"))))) (add-hook 'org-mode-hook 'org-auctex-mode) @@ -491,7 +477,7 @@ Opens in new window otherwise opens in current window." (global-set-key (kbd "C-s") 'swiper) -(setq yas-snippet-dirs '((expand-file-name "snippets" org-directory))) +(setq yas-snippet-dirs (list (expand-file-name "snippets" org-directory))) ;; Accept 'y' and 'n' rather than 'yes' and 'no'. (defalias 'yes-or-no-p 'y-or-n-p)