about summary refs log tree commit diff
path: root/users/tazjin/emacs/config/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'users/tazjin/emacs/config/init.el')
-rw-r--r--users/tazjin/emacs/config/init.el186
1 files changed, 72 insertions, 114 deletions
diff --git a/users/tazjin/emacs/config/init.el b/users/tazjin/emacs/config/init.el
index 9f34c60a8d..ced3bf2ff8 100644
--- a/users/tazjin/emacs/config/init.el
+++ b/users/tazjin/emacs/config/init.el
@@ -1,29 +1,18 @@
 ;;; init.el --- Package bootstrapping. -*- lexical-binding: t; -*-
 
+;; Disable annoying warnings from native compilation.
+(setq native-comp-async-report-warnings-errors nil
+      warning-suppress-log-types '((comp)))
+
 ;; Packages are installed via Nix configuration, this file only
 ;; initialises the newly loaded packages.
 
 (require 'use-package)
 (require 'seq)
 
-
-;; TODO(tazjin): Figure out what's up with vc.
-;;
-;; Leaving vc enabled breaks all find-file operations with messages
-;; about .git folders being absent, but in random places.
-(require 'vc)
-(setq vc-handled-backends nil)
-
 (package-initialize)
 
 ;; Initialise all packages installed via Nix.
-;;
-;; TODO: Generate this section in Nix for all packages that do not
-;; require special configuration.
-
-;;
-;; Packages providing generic functionality.
-;;
 
 (use-package ace-window
   :bind (("C-x o" . ace-window))
@@ -40,23 +29,12 @@
 
 (use-package browse-kill-ring)
 
-(use-package company
-  :hook ((prog-mode . company-mode))
-  :config (setq company-tooltip-align-annotations t))
-
-(use-package counsel
-  :after (ivy)
-  :config (counsel-mode 1)
-  :bind (("C-c r g" . counsel-rg)))
+(use-package consult
+  :bind
+  ("C-c r g" . consult-ripgrep)
+  ("C-s" . consult-line))
 
 (use-package dash)
-(use-package dash-functional)
-
-(use-package dottime
-  :demand
-  :after (notmuch telega)
-  :config (dottime-display-mode t))
-
 (use-package gruber-darker-theme)
 
 (use-package eglot
@@ -69,32 +47,13 @@
 (use-package hydra)
 (use-package idle-highlight-mode :hook ((prog-mode . idle-highlight-mode)))
 
-(use-package ivy
-  :config
-  (ivy-mode 1)
-  (setq enable-recursive-minibuffers t)
-  (setq ivy-use-virtual-buffers t))
-
-(use-package ivy-pass :after (ivy))
-
-(use-package ivy-prescient
-  :after (ivy prescient)
-  :config
-  (ivy-prescient-mode)
-  ;; Fixes an issue with how regexes are passed to ripgrep from counsel,
-  ;; see raxod502/prescient.el#43
-  (setf (alist-get 'counsel-rg ivy-re-builders-alist) #'ivy--regex-plus))
-
 (use-package multiple-cursors)
 
 (use-package notmuch
-  :bind (:map global-map
-              ("s-g m" . notmuch)
-              ("s-g M" . counsel-notmuch)) ;; g m -> gmail
-  :config
-  (setq notmuch-search-oldest-first nil)
-  (setq notmuch-show-all-tags-list t)
-  (setq notmuch-hello-tag-list-make-query "tag:unread"))
+  :custom
+  (notmuch-search-oldest-first nil)
+  (notmuch-show-all-tags-list t)
+  (notmuch-hello-tag-list-make-query "tag:unread"))
 
 (use-package paredit :hook ((lisp-mode . paredit-mode)
                             (emacs-lisp-mode . paredit-mode)))
@@ -105,21 +64,20 @@
   (pinentry-start))
 
 (use-package prescient
-  :after (ivy counsel)
-  :config (prescient-persist-mode))
+  :config
+  (prescient-persist-mode)
+  (setq completion-styles '(basic prescient)))
 
 (use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode))
 (use-package rainbow-mode)
 (use-package s)
-(use-package string-edit)
+(use-package string-edit-at-point)
+(use-package term-switcher)
 
-(use-package swiper
-  :after (counsel ivy)
-  :bind (("C-s" . swiper)))
+(use-package undo-tree
+  :config (global-undo-tree-mode)
+  :custom (undo-tree-auto-save-history nil))
 
-(use-package telephone-line) ;; configuration happens outside of use-package
-(use-package term-switcher)
-(use-package undo-tree :config (global-undo-tree-mode))
 (use-package uuidgen)
 (use-package which-key :config (which-key-mode t))
 
@@ -132,41 +90,13 @@
   :config (setq magit-repository-directories '(("/home/tazjin/projects" . 2)
                                                ("/home/tazjin" . 1))))
 
-(use-package org-journal
-  ;; Always use my own key to encrypt files. There seems to be no
-  ;; global way to set this, as `epa-file-encrypt-to' only has an
-  ;; effect as a file-local variable (?!)
-  :hook ((org-journal-mode . (lambda ()
-                               (setq-local epa-file-encrypt-to
-                                           "DCF34CFAC1AC44B87E26333136EE34814F6D294A"))))
-
-  :config
-  (setq org-journal-dir "/ssh:camden.tazj.in:/home/tazjin/journal"
-        org-journal-encrypt-journal t
-        org-journal-file-type 'weekly
-        org-journal-date-format "%A, %Y-%m-%d"
-        org-journal-file-format "%Y%m%d-weekly"
-
-        ;; Saturday, because reasons.
-        org-journal-start-on-weekday 6)
-
-  ;; org-journal doesn't actually enter its mode automatically if
-  ;; encryption is used (I'm not sure why), so this teaches Emacs to
-  ;; recognise the files.
-  (add-to-list 'auto-mode-alist '("[0-9]-weekly\\.gpg\\'" . org-journal-mode)))
-
-(use-package org-ql)
-
 (use-package password-store)
-(use-package pg)
 (use-package restclient)
 
 (use-package vterm
-  :config (progn
-            (setq vterm-shell "fish")
-            (setq vterm-exit-functions
-                  (lambda (&rest _) (kill-buffer (current-buffer))))
-            (setq vterm-kill-buffer-on-exit t)))
+  :custom
+  (vterm-shell "fish")
+  (vterm-kill-buffer-on-exit t))
 
 ;; vterm removed the ability to set a custom title generator function
 ;; via the public API, so this overrides its private title generation
@@ -185,9 +115,9 @@
 (use-package cargo
   :hook ((rust-mode . cargo-minor-mode)
          (cargo-process-mode . visual-line-mode))
-  :bind (:map cargo-minor-mode-map ("C-c C-c C-l" . ignore)))
+  :bind (:map cargo-mode-map ("C-c C-c C-l" . ignore)))
 
-(use-package dockerfile-mode)
+(use-package dockerfile-ts-mode)
 
 (use-package erlang
   :hook ((erlang-mode . (lambda ()
@@ -195,7 +125,6 @@
                           (local-set-key ">" 'self-insert-command)))))
 
 (use-package f)
-(use-package geiser)
 
 (use-package go-mode
   :bind (:map go-mode-map ("C-c C-r" . recompile))
@@ -208,9 +137,7 @@
 
 (use-package ielm
   :hook ((inferior-emacs-lisp-mode . (lambda ()
-                                       (paredit-mode)
-                                       (rainbow-delimiters-mode-enable)
-                                       (company-mode)))))
+                                       (rainbow-delimiters-mode-enable)))))
 
 (use-package jq-mode
   :config (add-to-list 'auto-mode-alist '("\\.jq\\'" . jq-mode)))
@@ -219,11 +146,8 @@
   :hook ((kotlin-mode . (lambda ()
                           (setq indent-line-function #'indent-relative)))))
 
-(use-package lsp-mode)
-
 (use-package markdown-mode
   :config
-  (add-to-list 'auto-mode-alist '("\\.txt\\'" . markdown-mode))
   (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
   (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)))
 
@@ -240,24 +164,58 @@
 (use-package sly
   :hook ((sly-mrepl-mode . (lambda ()
                              (paredit-mode)
-                             (rainbow-delimiters-mode-enable)
-                             (company-mode))))
+                             (rainbow-delimiters-mode-enable))))
   :config
   (setq common-lisp-hyperspec-root "file:///home/tazjin/docs/lisp/"))
 
 (use-package telega
-  :bind (:map global-map ("s-t" . telega))
-  :config (telega-mode-line-mode 1))
+  :bind (:map global-map ("s-c" . (lambda (p) (interactive "P")
+                                    (if p (call-interactively #'telega-chat-with)
+                                      (telega))))
+         :map telega-chat-button-map ("a" . ignore))
+  :config (telega-mode-line-mode 1)
+  :custom
+  (telega-emoji-use-images nil)
+  (telega-completing-read-function #'completing-read))
 
 (use-package terraform-mode)
-(use-package toml-mode)
+(use-package toml-ts-mode)
 
-(use-package tvl
-  :custom
-  (tvl-gerrit-remote "gerrit"))
+(use-package treecrumbs
+  :hook ((yaml-ts-mode . treecrumbs-mode)))
+
+(use-package tvl)
+
+(use-package vertico
+  :config
+  (vertico-mode))
 
 (use-package web-mode)
-(use-package yaml-mode)
+(use-package yaml-ts-mode)
+(use-package zoxide)
+
+(use-package passively
+  :custom
+  (passively-store-state "/persist/tazjin/known-russian-words.el"))
+
+;; Note taking configuration for deft.
+(use-package deft
+  :custom
+  (deft-directory "/persist/tazjin/deft/")
+  (deft-extensions '("md" "org" "txt"))
+  (deft-default-extension "md"))
+
+(use-package zetteldeft
+  :custom
+  ;; Configure for Markdown
+  (zetteldeft-link-indicator "[[")
+  (zetteldeft-link-suffix "]]")
+  (zetteldeft-title-prefix "# ")
+  (zetteldeft-list-prefix "* "))
+
+;; Initialise midnight.el, which by default automatically cleans up
+;; unused buffers at midnight.
+(require 'midnight)
 
 (defgroup tazjin nil
   "Settings related to my configuration")
@@ -273,7 +231,7 @@
 ;; The way this will work for now is that Emacs will *write*
 ;; configuration to the file tracked in my repository, while not
 ;; actually *reading* it from there (unless Emacs is rebuilt).
-(setq custom-file (expand-file-name "~/depot/tools/emacs/config/custom.el"))
+(setq custom-file (f-join depot-path "users" "tazjin" "emacs" "config" "custom.el"))
 (load-library "custom")
 
 (defvar home-dir (expand-file-name "~"))
@@ -288,10 +246,8 @@
                  look-and-feel
                  functions
                  settings
-                 modes
                  bindings
                  eshell-setup))
-(telephone-line-setup)
 (ace-window-display-mode)
 
 ;; If a local configuration library exists, it should be loaded.
@@ -301,4 +257,6 @@
 (if-let (local-file (locate-library "local"))
     (load local-file))
 
+(require 'dottime)
+
 (provide 'init)