Compare commits

...

98 Commits

Author SHA1 Message Date
be91582932 Set up a minimal config for work 2023-10-05 16:44:28 +02:00
18e2a8c8b6 Add french signature snippet 2023-10-04 16:12:50 +02:00
8d67a93b4e Set important tasks due today on the time-grid 2023-09-21 17:17:33 +02:00
2e404a10b7 Fix mu 1.10 layout 2023-09-19 23:55:44 +02:00
6e436427e5 Update AOT native compilation to upstream changes 2023-09-19 23:43:39 +02:00
379ff2ec1e Enable writeroom in mardown 2023-09-19 23:42:52 +02:00
27a2755eb4 Adapt to the upstream change in the icon font 2023-09-15 15:38:33 +02:00
b6e0a698e6 Change elfeed entry font 2023-08-27 07:47:24 +02:00
039cacf3dd Restore previous session on startup 2023-08-27 07:44:27 +02:00
39c23de25f Restore placement and behaviour of restore session 2023-08-27 07:43:55 +02:00
55fc91233d Merge init.el additions from upstream 2023-08-12 04:48:05 +02:00
fb09e42be9 Remove Nix LSP support 2023-08-10 19:33:27 +02:00
a1c2007852 Remove sqlite package due to upstream inclusion 2023-08-10 19:32:52 +02:00
b94f685eb4 Revert "Set up LSP formatter for nix"
This reverts commit a550ccf9dc.
2023-07-31 20:48:15 +02:00
6035a22ce4 Enable smooth scrolling 2023-07-31 20:47:34 +02:00
52d48f4375 Improve compilation buffer closing implementation 2023-07-31 20:46:21 +02:00
bd063ca02b Revert "Disable PDF recoloring by default"
This reverts commit 518413d20d.
2023-06-12 14:04:56 +02:00
a550ccf9dc Set up LSP formatter for nix 2023-05-30 15:22:17 +02:00
8a44b7dd7e Move buffer while maintaining the cursor centered 2023-05-23 10:53:02 +02:00
3fcd65d6d2 Use os1 as light theme 2023-05-22 22:07:55 +02:00
0b7dc5996a Set up nix LSP support 2023-05-22 21:46:06 +02:00
f7baa0c089 Simplify enhanced elfeed entry visualization 2023-05-22 21:45:41 +02:00
d65a20323d Set indentation level to 2 2023-04-27 18:50:59 +02:00
34af171ca3 Move platformio keybindings to local leader 2023-04-10 22:37:39 +02:00
fdf2bc63a6 Disable Pyright's spurrious type checking 2023-03-25 02:35:42 +01:00
de5d9f5d0d Replace add-hook with doom's wrapper 2023-03-23 02:54:41 +01:00
1f183d9ef8 Show only today in agenda 2023-03-23 01:08:39 +01:00
0beb26a94a Order org agenda groups and remove redundant tasks 2023-03-23 00:48:13 +01:00
5453df478c Add email snippets 2023-03-23 00:04:56 +01:00
30a5cd3ad7 Set up embedded dev environment using PlatformIO 2023-03-23 00:04:56 +01:00
d872172bc6 Improve readability of elfeed entries 2023-02-23 00:02:15 +01:00
5c4802b371 Display header in csv-mode 2023-02-23 00:01:52 +01:00
a9ad9e54b3 Simplify org mode search hack 2023-01-27 14:01:31 +01:00
5de7e2288c Use tree-sitter for better syntax highlighting 2023-01-13 22:25:48 +01:00
518413d20d Disable PDF recoloring by default 2023-01-13 21:57:36 +01:00
72f1079538 Revert "Migrate to eglot"
This reverts commit 193dce0fa5.
2022-12-18 01:04:16 +01:00
24a3c71c13 Update org-super-agenda-groups 2022-12-11 19:19:06 +01:00
e46df2a852 Prettify org agenda 2022-12-11 19:19:06 +01:00
9711448199 Tweak the modeline so it fits the screen 2022-12-11 19:19:05 +01:00
f46b5043a2 Reduce size of the popup terminal 2022-12-11 19:19:05 +01:00
193dce0fa5 Migrate to eglot 2022-12-11 19:19:05 +01:00
1ada882299 Disable distracting LSP UI elements 2022-12-11 19:19:05 +01:00
13d6081b6a HACK: Fix search in folded sections in org-mode 2022-12-11 19:19:05 +01:00
68f5d3c8ab Reduce zoom in writeroom mode 2022-11-24 13:23:41 +01:00
f897a11a5d Remove duplicated modeline variable 2022-11-24 13:23:23 +01:00
9b8ca71e69 Remap previous/next buffer to prevent conflicts 2022-11-24 13:22:33 +01:00
309e692435 Add description to wallabag and elfeed 2022-11-24 13:22:24 +01:00
6bb4e798c3 Format +org file 2022-11-17 15:26:02 +01:00
4517547396 Remove line between header and text in org-noter 2022-11-17 15:17:38 +01:00
6404fe9d37 Set up org protocol to capture citations 2022-11-17 15:17:01 +01:00
0e39dd1adb Persist partial pomodoros and only show minutes 2022-11-01 18:58:17 +01:00
3ba5cf98ef Document the packages 2022-10-29 11:46:49 +02:00
33e17cad08 Clean up mu4e bookmarks 2022-10-28 09:37:01 +02:00
a3246af270 Update org-super-agenda groups 2022-10-28 09:36:00 +02:00
f062bcb218 Associate PDF files with bibliographic entries 2022-10-27 14:11:13 +02:00
59b9517c89 Add keybindings for previous and next buffer 2022-10-26 15:15:53 +02:00
f8c1b7c558 Fit PDF to page by default 2022-10-21 13:52:36 +02:00
b5740b6e5b Add keybinding to save mail attachments 2022-10-21 13:49:51 +02:00
a709487e14 Fix org super agenda timegrid 2022-10-20 10:50:28 +02:00
fb0c1b31b8 Modify the image snippet in org mode 2022-10-19 16:37:49 +02:00
f7b37e9248 Revert "Use delta to view diffs in Magit"
This reverts commit 7e936bfe84.
2022-10-18 14:47:33 +02:00
a83fdb2ecd Rice org super agenda 2022-10-18 00:26:52 +02:00
8c1768e1d1 Add keybinding to move to a page in pdf-view 2022-10-12 15:29:01 +02:00
5c570c5608 Switch to raw latex when editing the expression 2022-10-11 08:59:59 +02:00
70d27dc4a8 Show latex preview automatically in org mode 2022-10-11 08:59:45 +02:00
a60d59643f Update the org super agenda groups 2022-10-10 16:14:31 +02:00
7cbc1eccbb Remove = from automatic tag completion in org mode 2022-10-10 16:13:35 +02:00
a2538eba67 Update the bibliography file 2022-10-10 16:13:13 +02:00
037171f063 Show a task once if it has a schedule and deadline 2022-10-10 16:12:21 +02:00
8322c56272 Auto tangle files on save 2022-10-10 16:12:04 +02:00
89d3d153ed Add keybinding to kill an org-noter session 2022-10-10 11:55:10 +02:00
ce50237782 Add .ipynb_checkpoints to ignored directories 2022-10-10 08:56:26 +02:00
e41edb9617 Add shortcuts to access the different inboxes 2022-10-04 13:39:08 +02:00
cd12d6361d Close tags automatically in org mode 2022-10-04 09:27:41 +02:00
e24b160411 Add .envrc and .project to ignored project files 2022-10-03 11:51:09 +02:00
15ebe5b28d Save org-download images to an assets directory 2022-10-03 11:51:09 +02:00
ef04978af9 Increase the latex preview size 2022-10-03 11:51:09 +02:00
2ee4eeacdd HACK: Enable AOT native compilation 2022-10-03 11:51:09 +02:00
73039f9790 Add keybinding to insert a heading in org-noter 2022-10-03 11:50:53 +02:00
4abcfb8912 Set the default org-noter filename to the default 2022-10-01 00:58:06 +02:00
bfef58394d Wrap lines in org-mode 2022-10-01 00:52:30 +02:00
5fee719f82 Disable colors for HTML emails 2022-09-24 23:16:04 +02:00
9625e9b14f Add keybindings for elfeed and wallabag 2022-09-24 23:15:44 +02:00
58c25ac89b Move keybindings to a different file 2022-09-24 23:15:25 +02:00
298a7165aa Change magit delta themes 2022-09-19 11:30:45 +02:00
e656a9a7f9 Use mu4e as a mail client 2022-09-18 20:25:59 +02:00
c8f06f0955 Add Notes to projectile search path 2022-09-18 20:12:58 +02:00
160d71a7fc Format config.el 2022-09-18 19:04:26 +02:00
6b9ec0057f Open wallabag on its own workspace 2022-09-18 19:03:52 +02:00
88e7aeae2c Modify the splash screen actions 2022-09-18 18:55:13 +02:00
b2125f273e Set up org-noter 2022-09-18 18:07:48 +02:00
25020b6485 Save wallabag images in offline view 2022-09-12 01:53:41 +02:00
c9b615a241 Change theme to doom-one 2022-09-12 01:03:53 +02:00
b1b1edbcaf Move smartparens config to +ui 2022-09-11 22:53:50 +02:00
6e2ec43437 Set org-directory 2022-09-11 20:57:45 +02:00
9ce6fdaf23 Tweak org-super-agenda 2022-09-10 03:50:13 +02:00
2398612a6c Replace org-superstar with org-modern 2022-09-10 03:45:53 +02:00
b48ffef269 Show images by default with a limited width 2022-09-10 03:25:32 +02:00
10 changed files with 209 additions and 229 deletions

6
+keybindings.el Normal file
View File

@@ -0,0 +1,6 @@
;;; +keybindings.el -*- lexical-binding: t; -*-
;; Custom keybindings
;;
;; Keybindings for next/previous buffer
(map! :n "C-c j" #'previous-buffer)
(map! :n "C-c k" #'next-buffer)

94
+org.el
View File

@@ -1,36 +1,14 @@
;;; ~/.doom.d/+org.el -*- lexical-binding: t; -*- ;;; ~/.doom.d/+org.el -*- lexical-binding: t; -*-
;; Org mode configuration ;; Org mode configuration
;; ;;
(setq org-ellipsis "" (setq org-ellipsis "")
org-superstar-headline-bullets-list '(""))
;; Cycle through header visibility ;; Cycle through header visibility
(after! evil-org (after! evil-org
(remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h)) (remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h))
;; Disable completion ;; Disable completion
(set-company-backend! 'org-mode nil) (set-company-backend! 'org-mode nil)
;; Turn off line numbers ;; Turn off line numbers
(add-hook 'org-mode-hook (lambda () (display-line-numbers-mode -1))) (add-hook! 'org-mode-hook (display-line-numbers-mode -1))
;; Add Notes to agenda
(setq org-agenda-files '("~/Notes"))
;; Tailor Org super agenda
(use-package! org-super-agenda
:after org-agenda
:init
(setq org-super-agenda-groups '((:name "Overdue"
:deadline past)
(:name "Today"
:scheduled today
:deadline today)
(:name "Important"
:priority "A")
(:name "Assignments"
:tag "labs"
:order 10)
(:name "Exams"
:tag "exams"
:order 10)))
:config
(org-super-agenda-mode))
;; Add timestamp to DONE task ;; Add timestamp to DONE task
(setq org-log-done 'time) (setq org-log-done 'time)
;; Print babel results to the buffer and export them ;; Print babel results to the buffer and export them
@@ -38,8 +16,8 @@
(:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no")) (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))
org-babel-default-lob-header-args '((:exports . "both"))) org-babel-default-lob-header-args '((:exports . "both")))
;; Enter writeroom-mode in all org files ;; Enter writeroom-mode in all org files
(add-hook 'org-mode-hook 'global-writeroom-mode) (add-hook! 'org-mode-hook 'global-writeroom-mode)
(setq writeroom-major-modes '(org-mode)) (add-hook! 'org-mode-hook 'visual-line-mode)
;; Respect LANGUAGE export variable ;; Respect LANGUAGE export variable
(add-to-list 'org-latex-packages-alist '("AUTO" "babel" t ("pdflatex"))) (add-to-list 'org-latex-packages-alist '("AUTO" "babel" t ("pdflatex")))
;; Don't evaluate code blocks on export ;; Don't evaluate code blocks on export
@@ -73,8 +51,6 @@
(use-package! engrave-faces-latex (use-package! engrave-faces-latex
:after ox-latex) :after ox-latex)
(setq org-latex-src-block-backend 'engraved) (setq org-latex-src-block-backend 'engraved)
;; Set up bibliography management
(setq citar-bibliography '("~/Documents/Education/Bibliography/references.bib"))
;; Add citeproc and metadata-file options to ox-pandoc ;; Add citeproc and metadata-file options to ox-pandoc
(after! ox-pandoc (after! ox-pandoc
(add-to-list 'org-pandoc-valid-options 'citeproc) (add-to-list 'org-pandoc-valid-options 'citeproc)
@@ -85,32 +61,40 @@
(setq org-pomodoro-length '45 (setq org-pomodoro-length '45
org-pomodoro-short-break-length '15 org-pomodoro-short-break-length '15
org-pomodoro-long-break-length '30 org-pomodoro-long-break-length '30
org-pomodoro-audio-player "pw-play") org-pomodoro-time-format "%.2m min"
;; Define capture templates org-pomodoro-keep-killed-pomodoro-time t)
(setq org-capture-templates ;; Save org-download images to an assets directory
'(("c" "Cookbook" entry (file "~/Notes/Recipes.org")
"%(org-chef-get-recipe-from-url)"
:empty-lines 1)))
;; Fix org-chef scraping
(setq org-chef-prefer-json-ld t)
;; Get the current state of org-pomodoro
(defun bergheim/org-clock-status ()
"Return the org time status - including any pomodoro activity"
(if (and (featurep 'org-pomodoro) (org-pomodoro-active-p))
(cl-case org-pomodoro-state
(:pomodoro
(format "%d min" (/ (org-pomodoro-remaining-seconds) 60)))
(:short-break
(format "Short break: %d min" (/ (org-pomodoro-remaining-seconds) 60)))
(:long-break
(format "Long break: %d min" (/ (org-pomodoro-remaining-seconds) 60)))
(:overtime
(format "Overtime! %d min" (/ (org-pomodoro-remaining-seconds) 60))))
(if (org-clocking-p)
(format "%s" (org-duration-from-minutes (org-clock-get-clocked-time)))
"")))
;; Save org-download images to ~/.cache
(after! org-download (after! org-download
(setq org-download-image-dir "~/.cache/org-download" (setq org-download-image-dir "assets/"
org-attach-id-dir "~/.cache/org-attach"
org-attach-auto-tag nil)) org-attach-auto-tag nil))
;; Show images by default with a limited width
(setq org-startup-with-inline-images t
org-image-actual-width 600)
;; Use a modern look
(use-package! org-modern
:hook (org-mode . org-modern-mode)
:config
(setq org-modern-star [""]))
(add-hook! 'org-agenda-finalize-hook #'org-modern-agenda)
;; Configure a better split and some default for org-noter
(after! org-noter
(setq org-noter-always-create-frame nil
org-noter-doc-split-fraction '(0.7 . 0.3)
org-noter-default-heading-title " "
org-noter-separate-notes-from-heading nil))
;; Show latex preview automatically and increase its size
(setq org-startup-with-latex-preview t
org-format-latex-options (plist-put org-format-latex-options :scale 3.0))
;; Close tags automatically
(after! smartparens
(sp-with-modes 'org-mode
(sp-local-pair "*" "*")
(sp-local-pair "_" "_")
(sp-local-pair "/" "/")
(sp-local-pair "~" "~")
(sp-local-pair "$" "$")))
;; Show raw latex when the cursor on the expression
(add-hook! 'org-mode-hook 'org-fragtog-mode)
;; HACK Fix search folded sections
(setq org-fold-core-style 'overlays)
(evil-select-search-module 'evil-search-module 'evil-search)

56
+ui.el
View File

@@ -2,39 +2,41 @@
;; Appearance settings ;; Appearance settings
;; Set Font and theme ;; Set Font and theme
(setq doom-font (font-spec :family "Iosevka Medium" :size 26) (setq doom-font (font-spec :family "Iosevka Medium" :size 26)
doom-theme 'doom-nord) doom-theme 'doom-one)
;; Display Magit status in fullscreen
(after! magit
(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1))
;; Match pdf-tools colors to the theme and fit to page by default
(after! pdf-tools
(setq pdf-view-midnight-colors '("#ECEFF4" . "#2E3440"))
(setq-default pdf-view-display-size 'fit-width)
(add-hook 'pdf-tools-enabled-hook 'pdf-view-midnight-minor-mode))
;; Customize modeline ;; Customize modeline
(setq doom-modeline-major-mode-icon t (setq doom-modeline-buffer-encoding nil)
doom-modeline-persp-name t
doom-modeline-buffer-encoding nil
doom-modeline-persp-name nil)
;; Hide direnv environment variables popup
(setq direnv-always-show-summary nil)
;; Change splash-screen banner ;; Change splash-screen banner
(setq fancy-splash-image "~/.doom.d/assets/emacs.svg") (setq fancy-splash-image "~/.doom.d/assets/emacs.svg")
;; Disable LSP documentation popup
(after! lsp-ui
(setq lsp-ui-doc-enable nil
lsp-signature-auto-activate nil
lsp-enable-symbol-highlighting nil
lsp-ui-sideline-show-code-actions nil
lsp-modeline-code-actions-enable nil))
;; Shrink minibuffer ;; Shrink minibuffer
(after! vertico (after! vertico
(setq vertico-count 8)) (setq vertico-count 8))
;; Eliminate gaps between windows ;; Eliminate gaps between windows
(after! frame (after! frame
(remove-hook 'doom-init-ui-hook #'window-divider-mode)) (remove-hook 'doom-init-ui-hook #'window-divider-mode))
;; Disable lsp header line ;; Show matching parenthesis on the minibuffer
(after! lsp-mode (after! smartparens (show-smartparens-global-mode t))
(setq lsp-headerline-breadcrumb-enable nil)) ;; Modify the splash screen actions
;; Shrink terminal buffer (setq +doom-dashboard-menu-sections
(set-popup-rule! "^\\*vterm" :size 0.1 :vslot -4 :select t :quit nil :ttl 0) '(("Reload last session"
:icon (nerd-icons-octicon "nf-oct-history" :face 'doom-dashboard-menu-title)
:when (cond ((modulep! :ui workspaces)
(file-exists-p (expand-file-name persp-auto-save-fname persp-save-dir)))
((require 'desktop nil t)
(file-exists-p (desktop-full-file-name))))
:face (:inherit (doom-dashboard-menu-title bold))
:action doom/quickload-session)
("Open org-agenda"
:icon (nerd-icons-octicon "nf-oct-calendar" :face 'doom-dashboard-menu-title)
:when (fboundp 'org-agenda)
:action org-agenda)
("Recently opened files"
:icon (nerd-icons-faicon "nf-fa-file_text" :face 'doom-dashboard-menu-title)
:action recentf-open-files)))
;; Restore previous session without confirmation
(defadvice! restore-no-confirm-session-quickload-a ()
:override #'doom/quickload-session
(message "Restoring session...")
(doom-load-session)
(message "Session restored. Welcome back."))
;; Decrease size of icons in the modeline
(setq nerd-icons-scale-factor 1.0)

119
config.el
View File

@@ -4,109 +4,58 @@
;; ;;
;; Load appearance configuration ;; Load appearance configuration
(load! "+ui") (load! "+ui")
;; Set projects directories ;; Load custom keybindings
(setq projectile-project-search-path '(("~/Projects" . 2) (load! "+keybindings")
("~/Documents/Work" . 1) ;; Auto cleanup recentf
("~/Documents/Papers" . 0)
("~/Documents/Typesetting" . 1)
("~/Documents/Paperwork" . 1)
("~/Documents/Typesetting" . 1)
("~/Documents/Uni" . 3)
("~/Repos" . 1)
"~/.dotfiles"))
; Auto cleanup recentf
(setq recentf-auto-cleanup 300) (setq recentf-auto-cleanup 300)
; Save backup files to ~/.cache and autosave files to ~/.cache/emacs ;; Save backup files to ~/.cache and autosave files to ~/.cache/emacs
(setq backup-directory-alist `(("." . "~/.cache")) (setq backup-directory-alist `(("." . "~/.cache"))
auto-save-list-file-prefix (concat "~/.cache")) auto-save-list-file-prefix (concat "~/.cache"))
;; Load org configuration ;; Load org configuration
(after! org (load! "+org")) (after! org (load! "+org"))
;; Disable completion and line numbers in Markdown ;; Disable completion and line numbers in Markdown
(add-hook 'markdown-mode-hook (lambda () (display-line-numbers-mode -1))) (add-hook! 'markdown-mode-hook (display-line-numbers-mode -1))
(after! markdown (after! markdown
(set-company-backend! 'markdown-mode nil)) (set-company-backend! 'markdown-mode nil))
;; Enable writeroom-mode for text modes
(setq writeroom-major-modes '(org-mode markdown-mode)
+zen-text-scale 1.5)
(add-hook! 'markdown-mode-hook 'global-writeroom-mode)
;; Reload file from disk without confirmation ;; Reload file from disk without confirmation
(defun revert-buffer-no-confirm () (defun revert-buffer-no-confirm ()
(interactive) (interactive)
(revert-buffer :ignore-auto :noconfirm)) (revert-buffer :ignore-auto :noconfirm))
;; Select target in Makefile compilation as default
(map! :leader :n "c c" #'makefile-executor-execute-project-target)
;; Align columns in CSV mode ;; Align columns in CSV mode
(add-hook 'csv-mode-hook 'csv-align-mode) (add-hook! 'csv-mode-hook 'csv-align-mode)
(add-hook! 'csv-mode-hook 'csv-header-line)
;; Close compilation buffer if successful ;; Close compilation buffer if successful
(setq compilation-finish-functions (defun close-compilation-buffer-if-successful (buffer string)
(lambda (buf str) "Bury a compilation buffer if succeeded without warnings "
(if (null (string-match ".*exited abnormally.*" str)) (when (and (eq major-mode 'compilation-mode)
(progn (string-match "finished" string)
(run-at-time (not
"0.5 sec" nil 'delete-windows-on (with-current-buffer buffer
(get-buffer-create "*compilation*")) (search-forward "warning" nil t))))
(message "No Compilation Errors!"))))) (run-with-timer 1 nil
(lambda (buf)
(let ((window (get-buffer-window buf)))
(when (and (window-live-p window)
(eq buf (window-buffer window)))
(delete-window window))))
buffer)))
(add-hook 'compilation-finish-functions #'close-compilation-buffer-if-successful)
;; Map leader key for major mode to , ;; Map leader key for major mode to ,
(setq evil-snipe-override-evil-repeat-keys nil)
(setq doom-localleader-key ",") (setq doom-localleader-key ",")
;; Show matching parenthesis on the minibuffer
(after! smartparens (show-smartparens-global-mode t))
;; Disable company mode in Nix
(setq-hook! 'nix-mode-hook company-idle-delay nil)
;; Trigger flycheck after save ;; Trigger flycheck after save
(setq flycheck-check-syntax-automatically '(save)) (setq flycheck-check-syntax-automatically '(save))
;; Ignore development databases folders
(after! lsp-mode
(add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\.mysql\\'")
(add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\.pgdata\\'"))
;; Ignore empty files
(after! projectile
(add-to-list 'projectile-globally-ignored-files ".gitkeep")
(add-to-list 'projectile-globally-ignored-directories ".direnv"))
;; Associate polymode to R markdown files
(add-to-list 'auto-mode-alist '("\\.[rR]md\\'" . poly-markdown+R-mode))
;; Keybindings for R markdown polymode
(map! :map poly-markdown+R-mode-map
:n "RET" #'polymode-eval-chunk
:desc "Evaluate code block")
;; Set clangd as C/C++ LSP
(setq lsp-clients-clangd-args '("-j=3"
"--background-index"
"--clang-tidy"
"--completion-style=detailed"
"--header-insertion=never"
"--header-insertion-decorators=0"))
(after! lsp-clangd (set-lsp-priority! 'clangd 2))
;; Use relative line numbers (Usage: number <j/k>) ;; Use relative line numbers (Usage: number <j/k>)
(setq display-line-numbers-type 'relative) (setq display-line-numbers-type 'relative)
;; Use pass as auth-source ;; Set indentation level to 2
(add-to-list 'auth-sources 'password-store) (setq tab-width 2)
;; Set up wallabag ;; Move buffer while maintaining cursor centered
(after! wallabag (use-package! centered-cursor-mode
(setq wallabag-host "https://wallabag.coolneng.duckdns.org"
wallabag-username "coolneng"
wallabag-password (auth-source-pass-get 'secret "api/wallabag")
wallabag-clientid (auth-source-pass-get "clientid" "api/wallabag")
wallabag-secret (auth-source-pass-get "api-secret" "api/wallabag")
wallabag-show-sidebar 't
wallabag-show-entry-switch 'switch-to-buffer)
(add-hook 'wallabag-after-render-hook 'wallabag-search-update-and-clear-filter))
(add-hook! 'doom-real-buffer-functions
(defun +rss-buffer-p (buf)
(string-match-p "^\\*wallabag" (buffer-name buf))))
;; Set up elfeed
(after! elfeed
(setq elfeed-use-curl t)
(setq elfeed-feeds (list
(list "fever+https://coolneng@rss.coolneng.duckdns.org"
:api-url "https://rss.coolneng.duckdns.org/fever/"
:password (auth-source-pass-get 'secret "api/miniflux"))))
(setq elfeed-sort-order 'ascending
elfeed-search-filter "@all +unread"
elfeed-goodies/tag-column-width 0)
(elfeed-protocol-enable)
(add-hook! 'elfeed-search-mode-hook 'elfeed-update))
;; Use delta to view diffs in Magit
(use-package! magit-delta
:after magit
:preface
(setq
magit-delta-default-dark-theme "Nord"
magit-delta-default-light-theme "OneHalfLight")
:config :config
(magit-delta-mode)) (global-centered-cursor-mode))
;; Restore previous session on startup
(add-hook 'window-setup-hook #'doom/quickload-session)

79
init.el
View File

@@ -14,7 +14,7 @@
;layout ; auie,ctsrnm is the superior home row ;layout ; auie,ctsrnm is the superior home row
:completion :completion
(company + tng) ; the ultimate code completion backend (company +tng) ; the ultimate code completion backend
;;helm ; the *other* search engine for love and life ;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine... ;;ido ; the other *other* search engine...
;;(ivy ; a search engine for love and life ;;(ivy ; a search engine for love and life
@@ -33,6 +33,7 @@
(ligatures (ligatures
+extra +extra
+iosevka) ; ligatures and symbols to make your code pretty again +iosevka) ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API modeline ; snazzy, Atom-inspired modeline, plus API
nav-flash ; blink the current line after jumping nav-flash ; blink the current line after jumping
;;neotree ; a project drawer, like NERDTree for vim ;;neotree ; a project drawer, like NERDTree for vim
@@ -43,14 +44,14 @@
;;tabs ; an tab bar for Emacs ;;tabs ; an tab bar for Emacs
;;treemacs ; a project drawer, like neotree but cooler ;;treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages ;;unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe ;;vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB vi-tilde-fringe ; fringe tildes to mark beyond EOB
window-select ; visually switch windows window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces workspaces ; tab emulation, persistence & separate workspaces
zen ; distraction-free coding or writing zen ; distraction-free coding or writing
:editor :editor
(evil +everywhere); come to the dark side, we have cookies (evil +everywhere) ; come to the dark side, we have cookies
file-templates ; auto-snippets for empty files file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness (format +onsave) ; automated prettiness
@@ -67,13 +68,13 @@
dired ; making dired pretty [functional] dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent electric ; smarter, keyword-based electric-indent
;;ibuffer ; interactive buffer management ;;ibuffer ; interactive buffer management
vc ; version-control and Emacs, sitting in a tree ;;vc ; version-control and Emacs, sitting in a tree
:term :term
;;eshell ; the elisp shell that works everywhere ;;eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs ;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs ;;term ; basic terminal emulator for Emacs
vterm ; the best terminal emulation in Emacs ;;vterm ; the best terminal emulation in Emacs
:checkers :checkers
syntax ; tasing you for every semicolon you forget syntax ; tasing you for every semicolon you forget
@@ -82,101 +83,105 @@
:tools :tools
;;ansible ;;ansible
biblio ; Writes a PhD for you (citation needed) ;; biblio ; Writes a PhD for you (citation needed)
debugger ; FIXME stepping through code, to help you add bugs ;; debugger ; FIXME stepping through code, to help you add bugs
direnv ;; direnv
;;docker ;;docker
;;editorconfig ; let someone else argue about tabs vs spaces ;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs ;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls) ;;(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists ;;gist ; interacting with github gists
lookup ; navigate your code and its documentation lookup ; navigate your code and its documentation
;;+docsets) ; ...or in Dash docsets locally ;;+docsets) ; ...or in Dash docsets locally
lsp ; M-x vscode ;;lsp ; M-x vscode
;;macos ; MacOS-specific commands ;;macos ; MacOS-specific commands
magit ; a git porcelain for Emacs ;;magit ; a git porcelain for Emacs
make ; run make tasks from Emacs ;;make ; run make tasks from Emacs
;;pass ; password manager for nerds ;;pass ; password manager for nerds
pdf ; pdf enhancements ;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders ;;prodigy ; FIXME managing external services & code builders
;;rgb ; creating color strings ;;rgb ; creating color strings
;;terraform ; infrastructure as code ;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux ;;tmux ; an API for interacting with tmux
upload ; map local to remote projects via ssh/ftp ;;tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:lang :lang
;;agda ; types of types of types of types... ;;agda ; types of types of types of types...
;;assembly ; assembly for fun or debugging ;;assembly ; assembly for fun or debugging
;;beancount ; mind the GAAP ;;beancount ; mind the GAAP
(cc +lsp) ; C > C++ == 1 ;;(cc +lsp
;; +tree-sitter) ; C > C++ == 1
;;clojure ; java with a lisp ;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all ;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs ;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c ;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans ;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;dhall ;;dhall
;;(dart
;;+flutter
;;+lsp) ; paint ui and not much else
;;elixir ; erlang done right ;;elixir ; erlang done right
;;elm ; care for a cup of TEA? ;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age ;;erlang ; an elegant language for a more civilized age
(ess +lsp) ; emacs speaks statistics ;;(ess +lsp) ; emacs speaks statistics
;;faust ; dsp, but you get to keep your soul ;;faust ; dsp, but you get to keep your soul
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;fsharp ; ML stands for Microsoft's Language ;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3 ;;fstar ; (dependent) types and (monadic) effects and Z3
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;gdscript ; the language you waited for ;;gdscript ; the language you waited for
(go +lsp) ; the hipster dialect ;;(go +lsp
;; +tree-sitter) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(haskell +lsp) ; a language that's lazier than I am ;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python ;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on ;;idris ; a language you can depend on
json ; At least it ain't XML ;;(json +tree-sitter) ; At least it ain't XML
(java +lsp) ; the poster child for carpal tunnel syndrome ;;(java +lsp
;;+tree-sitter) ; the poster child for carpal tunnel syndrome
;;(javascript +lsp) ; all(hope(abandon(ye(who(enter(here)))))) ;;(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB ;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script) ;;kotlin ; a better, slicker Java(Script)
(latex +lsp) ; writing papers in Emacs has never been so fun ;;(latex +lsp) ; writing papers in Emacs has never been so fun
;;lean ;;lean ; for folks with too much to prove
;;ledger ; an accounting system in Emacs ;;ledger ; an accounting system in Emacs
;;lua ; one-based indices? one-based indices ;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c ;;nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!" ;;(nix +tree-sitter); I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel ;;ocaml ; an objective camel
(org ; organize your plain life in plain text (org ; organize your plain life in plain text
+dragndrop ; drag & drop files/images into org buffers +dragndrop ; drag & drop files/images into org buffers
;;+hugo ; use Emacs for hugo blogging ;;+hugo ; use Emacs for hugo blogging
;;+jupyter ; jupyter support for babel ;;+jupyter ; jupyter support for babel
+noter
+pandoc ; export-with-pandoc support +pandoc ; export-with-pandoc support
+pomodoro ; be fruitful with the tomato technique +pomodoro ; be fruitful with the tomato technique
+present ; using org-mode for presentations +present) ; using org-mode for presentations
+pretty) ;;+pretty)
;;perl ; write code no one else can comprehend
;;php ; perl's insecure younger brother ;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more ;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional ;;purescript ; javascript, but functional
(python +lsp ; beautiful is better than ugly ;;(python +lsp ; beautiful is better than ugly
+pyright ;;+pyright
+poetry) ;;+poetry
;;+tree-sitter)
;;qt ; the 'cutest' gui framework ever ;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs ;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6 ;;raku ; the artist formerly known as perl6
rest ; Emacs as a REST client ;;rest ; Emacs as a REST client
;;rst ; ReST in peace ;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() ;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good ;;scala ; java, but good
;;scheme ; a fully conniving family of lisps ;;scheme ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor ;;(sh +tree-sitter) ; she sells {ba,z,fi}sh shells on the C xor
;;sml ;;sml
;;solidity ; do you need a blockchain? No. ;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables? ;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance. ;;terra ; Earth and Moon in alignment for performance.
web ; the tubes ;;(web +tree-sitter); the tubes
yaml ; JSON, but readable ;;yaml ; JSON, but readable
;;zig ; C, but simpler ;;zig ; C, but simpler
@@ -190,7 +195,7 @@
;;emms ;;emms
;;everywhere ; *leave* Emacs!? You must be joking ;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize ;;irc ; how neckbeards socialize
rss ; emacs as an RSS reader ;;rss ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought ;;twitter ; twitter client https://twitter.com/vnought
:config :config

View File

@@ -5,9 +5,13 @@
;; (package! some-package) ;; (package! some-package)
;; (package! another-package :recipe (:host github :repo "username/repo")) ;; (package! another-package :recipe (:host github :repo "username/repo"))
;; (package! builtin-package :disable t) ;; (package! builtin-package :disable t)
(package! org-super-agenda) ;; Prettier LaTeX source blocks
(package! org-chef)
(package! wallabag :recipe (:host github :repo "chenyanming/wallabag.el" :files ("*.el" "*.alist" "*.css")))
(package! elfeed-protocol)
(package! magit-delta)
(package! engrave-faces) (package! engrave-faces)
;; Prettier org mode
(package! org-modern)
;; Enable LaTeX previews automatically
(package! org-fragtog)
;; Light theme
(package! os1-theme :recipe (:host github :repo "sashimacs/os1-theme"))
;; Move buffer while maintaining cursor centered
(package! centered-cursor-mode)

9
snippets/org-mode/image Normal file
View File

@@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: img
# uuid: img
# key: trigger-key
# condition: t
# --
#+CAPTION: $1
#+LABEL: $2
#+ATTR_HTML: :width 50%

View File

@@ -0,0 +1,8 @@
# -*- mode: snippet -*-
# name: email signature
# key: sign
# --
Best regards,
Amin Kasrou Aouam

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: formal greeting
# key: dear
# --
Dear Madam/Sir,

View File

@@ -0,0 +1,8 @@
# -*- mode: snippet -*-
# name: email signature
# key: frsign
# --
Cordialement,
Amin Kasrou Aouam