Compare commits

..

5 Commits

12 changed files with 209 additions and 252 deletions

View File

@@ -10,6 +10,9 @@
;; Map elfeed to global keybinding
(map! :leader :n "o e" #'=rss
:desc "RSS reader")
;; Map wallabag to global keybinding
(map! :leader :n "o w" #'=wallabag
:desc "Read saved articles")
;; Keybindings for org-noter
(map! :mode pdf-view-mode
:n "i" #'org-noter-insert-note
@@ -28,11 +31,6 @@
;; Keybindings for next/previous buffer
(map! :n "C-c j" #'previous-buffer)
(map! :n "C-c k" #'next-buffer)
;; Keybindings for PlatformIO
(map! :after platformio-mode
:map platformio-mode-map
(:localleader
:desc "Compile the project" "c c" #'platformio-build
:desc "Upload the project" "c u" #'platformio-upload
:desc "Monitor the serial console" "c m" #'platformio-device-monitor
:desc "Upload data files" "c d" #'platformio-spiffs-upload))
;; Keybindings for citar
(map! :leader :n "n B" #'citar-open-files
:desc "Open associated PDF with bibliography entry")

View File

@@ -18,6 +18,14 @@
(smtpmail-smtp-user . "akasroua@gmail.com")
(user-mail-address . "akasroua@gmail.com"))
t)
(set-email-account! "ugent"
'((mu4e-sent-folder . "/ugent/sent")
(mu4e-drafts-folder . "/ugent/drafts")
(mu4e-trash-folder . "/ugent/trash")
(mu4e-refile-folder . "/ugent/archive")
(smtpmail-smtp-user . "amin.kasrouaouam@ugent.be")
(user-mail-address . "amin.kasrouaouam@ugent.be"))
t)
(set-email-account! "disroot"
'((mu4e-sent-folder . "/disroot/sent")
(mu4e-drafts-folder . "/disroot/drafts")
@@ -38,7 +46,8 @@
;; Use shortcuts to access inboxes easily
(setq mu4e-maildir-shortcuts
'(("/disroot/inbox" . ?d)
("/gmail/inbox" . ?g)))
("/gmail/inbox" . ?g)
("/ugent/inbox" . ?u)))
;; Change mu4e bookmarks
(setq mu4e-bookmarks '((:name "Unread messages" :query "flag:unread AND NOT flag:trashed" :key 117)
(:name "Today's messages" :query "date:today..now" :key 116)

94
+org.el
View File

@@ -8,7 +8,7 @@
;; Disable completion
(set-company-backend! 'org-mode nil)
;; Turn off line numbers
(add-hook! 'org-mode-hook (display-line-numbers-mode -1))
(add-hook 'org-mode-hook (lambda () (display-line-numbers-mode -1)))
;; Add Notes to agenda
(setq org-agenda-files '("~/Notes"))
;; Tailor Org super agenda
@@ -17,40 +17,33 @@
:init
(setq org-agenda-skip-scheduled-if-done t
org-agenda-skip-deadline-if-done t
org-agenda-skip-scheduled-delay-if-deadline t
org-agenda-skip-deadline-prewarning-if-scheduled t
org-deadline-warning-days 0
org-agenda-include-deadlines t
org-agenda-tags-column 100
org-agenda-block-separator nil
org-agenda-compact-blocks t
org-agenda-start-day nil
org-agenda-span 7
org-agenda-start-on-weekday 0)
org-agenda-compact-blocks t)
(setq org-super-agenda-groups '((:name "Overdue"
:deadline past
:order 0)
(:name "Important"
:and (:priority "A" :deadline future)
:order 1)
:deadline past)
(:name "Today"
:time-grid t
:scheduled today
:deadline today
:order 2)
:deadline today)
(:name "Important"
:priority "A")
(:name "Assignments"
:tag "labs"
:order 3)
:order 10)
(:name "Study"
:tag "study"
:order 10)
(:name "Thesis"
:tag "thesis"
:order 10)
(:name "Mails"
:tag "mail"
:order 4)
(:name "Errands"
:tag ("errand" "call")
:order 10)
(:name "Projects"
:file-path "Projects"
:order 6)
(:discard (:tag ("periodic" "birthday")))))
(:name "Periodic"
:tag "periodic"
:order 10)))
:config
(org-super-agenda-mode))
;; Add timestamp to DONE task
@@ -60,8 +53,10 @@
(:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))
org-babel-default-lob-header-args '((:exports . "both")))
;; Enter writeroom-mode in all org files
(add-hook! 'org-mode-hook 'global-writeroom-mode)
(add-hook! 'org-mode-hook 'visual-line-mode)
(add-hook 'org-mode-hook 'global-writeroom-mode)
(setq writeroom-major-modes '(org-mode)
+zen-text-scale 1.5)
(add-hook 'org-mode-hook 'visual-line-mode)
;; Respect LANGUAGE export variable
(add-to-list 'org-latex-packages-alist '("AUTO" "babel" t ("pdflatex")))
;; Don't evaluate code blocks on export
@@ -95,6 +90,10 @@
(use-package! engrave-faces-latex
:after ox-latex)
(setq org-latex-src-block-backend 'engraved)
;; Set up bibliography management
(setq org-cite-global-bibliography '("~/Documents/Uni/Thesis/docs/bibliography.bib")
citar-bibliography org-cite-global-bibliography
citar-library-paths '("~/Documents/Uni/Thesis/bibliography"))
;; Add citeproc and metadata-file options to ox-pandoc
(after! ox-pandoc
(add-to-list 'org-pandoc-valid-options 'citeproc)
@@ -116,6 +115,17 @@
:file "~/Notes/Recipes.org"
:type entry
:template ("%(org-chef-get-recipe-from-url)"))
("Reference" :keys "r"
:type entry
:file "~/Documents/Uni/Thesis/docs/Bibliography.org"
:function org-goto
:fetch-bibtex (lambda () (org-capture-ref-process-capture))
:org-entry (lambda () (org-capture-ref-get-org-entry))
:template
("%{fetch-bibtex}* %?%{space}%(org-capture-ref-get-bibtex-field :title)"
"#+begin_src bibtex"
"%(org-capture-ref-get-bibtex-field :bibtex-string)"
"#+end_src")))))
;; Fix org-chef scraping
(setq org-chef-prefer-json-ld t)
;; Get the current state of org-pomodoro
@@ -146,7 +156,6 @@
: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
@@ -167,9 +176,34 @@
;; Only show a task once if it has a schedule and deadline
(setq org-agenda-skip-deadline-prewarning-if-scheduled t)
;; Show raw latex when the cursor on the expression
(add-hook! 'org-mode-hook 'org-fragtog-mode)
(add-hook 'org-mode-hook 'org-fragtog-mode)
;; Auto tangle on save
(add-hook! 'org-mode-hook 'org-auto-tangle-mode)
(add-hook 'org-mode-hook 'org-auto-tangle-mode)
;; Save bibtex to annotated bibliography with category selection
(setq org-goto-interface 'outline-path-completion
org-goto-max-level 1)
(use-package! org-capture-ref)
;; HACK Fix search folded sections
(setq org-fold-core-style 'overlays)
(evil-select-search-module 'evil-search-module 'evil-search)
(after! org-fold-core
(defun org-show-current-heading-tidily ()
(interactive) ;Inteactive
"Show next entry, keeping other entries closed."
(if (save-excursion (end-of-line) (outline-invisible-p))
(progn (org-show-entry) (show-children))
(setq-local my:current_line (line-number-at-pos))
(outline-back-to-heading)
(unless (and (bolp) (org-on-heading-p))
(org-up-heading-safe)
(hide-subtree)
(error "Boundary reached"))
(org-overview)
(org-reveal t)
(org-show-entry)
(show-children)
(goto-line my:current_line)))
(defun qw/search-buffer ()
(interactive)
(org-fold-show-all)
(+default/search-buffer)
(org-show-current-heading-tidily)))
(map! :leader :n "s s" #'qw/search-buffer)

35
+rss.el
View File

@@ -1,35 +0,0 @@
;;; +rss.el -*- lexical-binding: t; -*-
;; Elfeed configuration
;;
;; Tweak appeareance of the main page
(setq elfeed-sort-order 'ascending
elfeed-search-filter "@all +unread"
elfeed-goodies/tag-column-width 0)
;; Synchronize elfeed with Miniflux
(use-package! elfeed-protocol
:after elfeed
:config
(setq elfeed-use-curl t
elfeed-protocol-enabled-protocols '(fever)
elfeed-protocol-feeds (list
(list "fever+https://coolneng@rss.psydnd.org"
:api-url "https://rss.psydnd.org/fever/"
:password (auth-source-pass-get 'secret "api/miniflux"))))
(elfeed-protocol-enable))
;; Update RSS feeds on startup
(add-hook! 'elfeed-search-mode-hook 'elfeed-update)
;; Use different font and show article in fullscreen
(setq elfeed-show-entry-switch #'switch-to-buffer)
(defadvice! +rss-elfeed-wrap-h-nicer ()
"Enhances an elfeed entry's readability by wrapping it to a width of
`fill-column' and centering it with `visual-fill-column-mode'."
:override #'+rss-elfeed-wrap-h
(setq-local truncate-lines nil
shr-width 160
visual-fill-column-center-text t
default-text-properties '(line-height 1.1))
(let ((inhibit-read-only t)
(inhibit-modification-hooks t))
(visual-fill-column-mode)
(setq-local shr-current-font '(:family "Lato" :height 1.1))
(set-buffer-modified-p nil)))

69
+ui.el
View File

@@ -6,28 +6,21 @@
;; 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, fit to page by default and enable smooth scrolling
;; Match pdf-tools colors to the theme and fit to page by default
(after! pdf-tools
(setq pdf-view-midnight-colors '("#BBC2CF" . "#282C34"))
(setq-default pdf-view-display-size 'fit-width)
(add-hook 'pdf-tools-enabled-hook 'pdf-view-roll-minor-mode))
(add-hook 'pdf-tools-enabled-hook 'pdf-view-midnight-minor-mode))
;; Customize modeline
(setq doom-modeline-major-mode-icon t
doom-modeline-buffer-encoding nil
doom-modeline-check-simple-format t)
doom-modeline-buffer-encoding nil)
;; Hide direnv environment variables popup
(setq direnv-always-show-summary nil)
;; Change splash-screen banner
(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-enable nil
lsp-modeline-code-actions-enable nil
lsp-headerline-breadcrumb-enable nil
lsp-len-enable nil))
;; Remove distracting LSP UI elements
(after! eglot
(setq eldoc-echo-area-use-multiline-p nil)
(set-popup-rule! "^\\*eglot-help" :size 0.2 :quit t :select t))
;; Shrink minibuffer
(after! vertico
(setq vertico-count 8))
@@ -39,39 +32,25 @@
;; Show matching parenthesis on the minibuffer
(after! smartparens (show-smartparens-global-mode t))
;; Modify the splash screen actions
(setq +doom-dashboard-menu-sections
'(("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)
("Open email client"
:icon (nerd-icons-octicon "nf-oct-mail" :face 'doom-dashboard-menu-title)
(assoc-delete-all "Jump to bookmark" +doom-dashboard-menu-sections)
(assoc-delete-all "Open private configuration" +doom-dashboard-menu-sections)
(assoc-delete-all "Open documentation" +doom-dashboard-menu-sections)
(add-to-list '+doom-dashboard-menu-sections
'("Open email client"
:icon (all-the-icons-octicon "mail" :face 'doom-dashboard-menu-title)
:when (featurep! :email mu4e)
:face (:inherit (doom-dashboard-menu-title bold))
:action =mu4e)
("RSS reader"
:icon (nerd-icons-octicon "nf-oct-rss" :face 'doom-dashboard-menu-title)
:action =mu4e) t)
(add-to-list '+doom-dashboard-menu-sections
'("RSS reader"
:icon (all-the-icons-octicon "rss" :face 'doom-dashboard-menu-title)
:when (featurep! :app rss)
:face (:inherit (doom-dashboard-menu-title bold))
:action =rss)))
;; 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."))
:action =rss) t)
(add-to-list '+doom-dashboard-menu-sections
'("Read saved articles"
:icon (all-the-icons-octicon "book" :face 'doom-dashboard-menu-title)
:face (:inherit (doom-dashboard-menu-title bold))
:action =wallabag) t)
;; Decrease size of icons in the modeline
(setq nerd-icons-scale-factor 1.0)
;; Increase size of the PlatformIO compilation buffer
(set-popup-rule! "*platformio*" :size 0.25 :vslot -4 :select t :quit t :ttl 0)
(setq all-the-icons-scale-factor 1.0)

110
config.el
View File

@@ -8,51 +8,43 @@
(load! "+keybindings")
;; Set projects directories
(setq projectile-project-search-path '(("~/Projects" . 2)
("~/Documents" . 5)
("~/Repos")
("~/Documents/Work" . 1)
("~/Documents/Papers" . 0)
("~/Documents/Typesetting" . 1)
("~/Documents/Paperwork" . 1)
("~/Documents/Typesetting" . 1)
("~/Documents/Uni" . 3)
("~/Repos" . 1)
"~/.dotfiles"
"~/Notes"))
;; Auto cleanup recentf
; Auto cleanup recentf
(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"))
auto-save-list-file-prefix (concat "~/.cache"))
;; Load org configuration
(setq org-directory "~/Notes")
(after! org (load! "+org"))
;; Disable completion and line numbers in Markdown
(add-hook! 'markdown-mode-hook (display-line-numbers-mode -1))
(add-hook 'markdown-mode-hook (lambda () (display-line-numbers-mode -1)))
(after! markdown
(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
(defun revert-buffer-no-confirm ()
(interactive)
(revert-buffer :ignore-auto :noconfirm))
;; Align columns in CSV mode
(add-hook! 'csv-mode-hook 'csv-align-mode)
(add-hook! 'csv-mode-hook 'csv-header-line)
(add-hook 'csv-mode-hook 'csv-align-mode)
;; Close compilation buffer if successful
(defun close-compilation-buffer-if-successful (buffer string)
"Bury a compilation buffer if succeeded without warnings "
(when (and (eq major-mode 'compilation-mode)
(string-match "finished" string)
(not
(with-current-buffer buffer
(search-forward "warning" nil t))))
(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)
(setq compilation-finish-functions
(lambda (buf str)
(if (null (string-match ".*exited abnormally.*" str))
(progn
(run-at-time
"0.5 sec" nil 'delete-windows-on
(get-buffer-create "*compilation*"))
(message "No Compilation Errors!")))))
;; Map leader key for major mode to ,
(setq evil-snipe-override-evil-repeat-keys nil)
(setq doom-localleader-key ",")
;; Disable company mode in Nix
(setq-hook! 'nix-mode-hook company-idle-delay nil)
@@ -81,29 +73,51 @@
(after! lsp-clangd (set-lsp-priority! 'clangd 2))
;; Use relative line numbers (Usage: number <j/k>)
(setq display-line-numbers-type 'relative)
;; Set up RSS reader
(after! elfeed (load! "+rss"))
;; Use pass as auth-source
(add-to-list 'auth-sources 'password-store)
;; Set up wallabag
(after! wallabag
(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
url-automatic-caching t)
(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))))
(defvar +wallabag-workspace-name "*wallabag*")
(defun =wallabag ()
"Activate (or switch to) `wallabag' in its workspace."
(interactive)
(if (modulep! :ui workspaces)
(progn
(+workspace-switch +wallabag-workspace-name t)
(doom/switch-to-scratch-buffer)
(wallabag)
(+workspace/display))
(setq +wallabag--wconf (current-window-configuration))
(delete-other-windows)
(switch-to-buffer (doom-fallback-buffer))
(wallabag)))
;; 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))
;; Set up the mail stack
(after! mu4e (load! "+mail"))
;; HACK Enable AOT native compilation
(setq native-comp-jit-compilation nil)
(setq native-comp-deferred-compilation nil)
(after! (doom-packages straight)
(setq straight--native-comp-available t))
;; Use PlatformIO for Arduino development
(use-package! platformio-mode
:after cc-mode
:config
(add-hook! 'c++-mode-hook (platformio-conditionally-enable)))
;; Set indentation level to 2
(setq tab-width 2)
;; Move buffer while maintaining cursor centered
(use-package! centered-cursor-mode
:config
(global-centered-cursor-mode))
;; Enable smooth scrolling
(pixel-scroll-precision-mode)
;; Restore previous session on startup
(add-hook 'window-setup-hook #'doom/quickload-session)
;; Set ruff as the default python formatter
(after! python
(set-formatter! 'ruff :modes '(python-mode python-ts-mode)))

46
init.el
View File

@@ -11,11 +11,10 @@
(doom! :input
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
;layout ; auie,ctsrnm is the superior home row
:completion
;;(company +tng) ; the ultimate code completion backend
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
(company + tng) ; the ultimate code completion backend
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
;;(ivy ; a search engine for love and life
@@ -34,7 +33,6 @@
(ligatures
+extra
+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
nav-flash ; blink the current line after jumping
;;neotree ; a project drawer, like NERDTree for vim
@@ -52,7 +50,7 @@
zen ; distraction-free coding or writing
: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
fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness
@@ -84,7 +82,7 @@
:tools
;;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
direnv
;;docker
@@ -94,7 +92,7 @@
;;gist ; interacting with github gists
lookup ; navigate your code and its documentation
;;+docsets) ; ...or in Dash docsets locally
(lsp +booster) ; M-x vscode
(lsp +eglot) ; M-x vscode
;;macos ; MacOS-specific commands
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
@@ -104,52 +102,49 @@
;;rgb ; creating color strings
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
upload ; map local to remote projects via ssh/ftp
:lang
;;agda ; types of types of types of types...
;;assembly ; assembly for fun or debugging
;;beancount ; mind the GAAP
(cc +lsp
+tree-sitter) ; C > C++ == 1
(cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;dhall
;;(dart
;;+flutter
;;+lsp) ; paint ui and not much else
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
(ess +lsp) ; emacs speaks statistics
;;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
;;fstar ; (dependent) types and (monadic) effects and Z3
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;gdscript ; the language you waited for
(go +lsp
+tree-sitter) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
(go +lsp) ; the hipster dialect
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
(json +tree-sitter) ; At least it ain't XML
(java +lsp
+tree-sitter) ; the poster child for carpal tunnel syndrome
json ; At least it ain't XML
(java +lsp) ; the poster child for carpal tunnel syndrome
;;(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
(latex +lsp) ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove
;;lean
;;ledger ; an accounting system in Emacs
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
(nix +tree-sitter) ; I hereby declare "nix geht mehr!"
nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
(org ; organize your plain life in plain text
+dragndrop ; drag & drop files/images into org buffers
@@ -160,12 +155,13 @@
+pomodoro ; be fruitful with the tomato technique
+present) ; using org-mode for presentations
;;+pretty)
;;perl ; write code no one else can comprehend
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
(python +lsp ; beautiful is better than ugly
+poetry
+tree-sitter)
+pyright
+poetry)
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
@@ -175,12 +171,12 @@
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;scheme ; a fully conniving family of lisps
(sh +tree-sitter) ; she sells {ba,z,fi}sh shells on the C xor
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
(web +tree-sitter) ; the tubes
web ; the tubes
yaml ; JSON, but readable
;;zig ; C, but simpler

View File

@@ -9,6 +9,9 @@
(package! org-super-agenda)
;; Save recipes to org file
(package! org-chef)
;; Wallabag client
(package! emacsql-sqlite)
(package! wallabag :recipe (:host github :repo "chenyanming/wallabag.el" :files ("*.el" "*.alist" "*.css")))
;; Miniflux integration for elfeed
(package! elfeed-protocol)
;; Prettier LaTeX source blocks
@@ -19,15 +22,7 @@
(package! org-auto-tangle)
;; Enable LaTeX previews automatically
(package! org-fragtog)
;; Arduino development
(package! platformio-mode)
;; Light theme
(package! os1-theme :recipe (:host github :repo "sashimacs/os1-theme"))
;; Move buffer while maintaining cursor centered
(package! centered-cursor-mode)
;; Use the fork of pdf-tools with smooth scrolling
(unpin! pdf-tools)
(package! pdf-tools :recipe (:host github :repo "aikrahguzar/pdf-tools" :branch "child-frame-preview"))
(package! image-roll :recipe (:host github :repo "dalanicolai/image-roll.el"))
;; Declarative org capture templates
;; Fetch and save bibtex from Firefox
(package! asoc :recipe (:host github :repo "troyp/asoc.el"))
(package! doct :recipe (:host github :repo "progfolio/doct"))
(package! org-capture-ref :recipe (:host github :repo "yantar92/org-capture-ref"))

View File

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

View File

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

View File

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

View File

@@ -1,12 +0,0 @@
# -*- mode: snippet -*-
# name: work administration template
# key: work
# condition: t
# --
Dear colleague,
You will find attached to this mail my $1 for the month of `(format-time-string "%B %Y")`.
Kind regards,
Amin Kasrou Aouam