Compare commits

..

252 Commits

Author SHA1 Message Date
d0fa140a9b Use ruff and ty for Python development 2025-12-18 06:03:51 +01:00
af1a257167 Speed up LSP via lsp-booster 2025-11-27 04:01:04 +01:00
50e1703719 Remove bibliography management functionality 2025-11-25 11:08:45 +01:00
d007bb0229 Group PDF settings in a single block 2025-10-29 17:30:35 +01:00
8ceaf658a1 Disable PDF recoloring by default 2025-10-27 17:11:31 +01:00
ec4279e5c0 Simplify projectile search path 2025-10-27 17:11:05 +01:00
4473bbab7e Improve elfeed synchronization configuration 2025-09-29 17:55:12 +02:00
71bbd9576b Add timesheet email template 2025-09-29 17:54:44 +02:00
ba9370bbd4 Add keybinding to upload files to Arduino 2025-04-25 15:47:29 +02:00
fbba44d7a2 Format configuration files 2025-04-01 14:44:30 +02:00
827e1a879a Tweak Org agenda display 2025-04-01 14:22:48 +02:00
258ffa1486 Remove redundant credentials configuration 2025-04-01 14:22:16 +02:00
826b27a621 Enable PDF smooth scrolling 2025-04-01 14:21:53 +02:00
84d941ed62 Display org agenda events of the week 2025-03-04 18:04:37 +01:00
f42e7c2192 Disable upload module 2025-03-04 18:01:29 +01:00
fa19e34239 Remove Uni email configuration 2025-03-04 18:00:50 +01:00
51d2463a8d Move RSS configuration to module 2024-11-19 22:12:17 +01:00
5e0f9a61be Remove Wallabag configuration 2024-11-19 22:11:58 +01:00
e8dd98aa3c Revert "HACK: Use an alternative version of org-msg"
This reverts commit 90d56d2b24.
2024-09-16 23:10:45 +02:00
9cbcaf62ac Add org-capture-ref dependencies 2024-09-16 23:10:06 +02:00
90d56d2b24 HACK: Use an alternative version of org-msg 2024-07-04 17:20:31 +02:00
30a50895eb Make email signature more formal 2024-06-15 10:44:27 +02:00
8fc7079b10 Revert "Fix mu 1.10 layout"
This reverts commit 2e404a10b7.
2024-06-15 10:42:38 +02:00
6acb05a8a9 Replace company by corfu 2024-06-05 23:00:22 +02:00
4f7d27bd34 Adapt elfeed-protocol config to upstream changes 2023-11-20 19:44:27 +01: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
fdcd5a4c6b Prettify code block export 2022-09-10 02:52:37 +02:00
fb1695bed4 Hide tags column in elfeed 2022-09-05 15:30:59 +02:00
7e936bfe84 Use delta to view diffs in Magit 2022-09-04 07:17:10 +02:00
32305747af Configure elfeed with Miniflux 2022-08-15 18:03:18 +02:00
f40f205bf5 Remove worskpace name from modeline 2022-08-13 14:47:51 +02:00
00ee2dbd6f Set up wallabag.el 2022-08-13 14:47:42 +02:00
10428092bd Move pdf-tools config to +ui 2022-08-01 18:06:40 +02:00
60e45e6874 Remove attach tag and change org-attach directory 2022-06-02 21:05:23 +02:00
0c1473123e Defer org-download preferences 2022-05-25 20:48:34 +02:00
1f72440b12 Save org-download images to ~/.cache 2022-05-25 11:55:18 +02:00
e085d2a740 Set the logo in the bottom in metropolis 2022-05-23 18:13:12 +02:00
ce35c7cade Use relative line numbers 2022-05-08 16:06:46 +02:00
7df7854787 Fit PDF to width by default 2022-05-04 23:43:43 +02:00
83477573a1 Add a function that returns the pomodoro state 2022-04-12 20:25:18 +02:00
fc2ebefa68 Set up org-chef with a capture template 2022-04-03 18:15:31 +02:00
c325d268dc Disable annoying Word-like functions 2022-03-21 19:19:51 +01:00
91428a22c3 fixup! Merge init.el additions from upstream 2022-03-21 19:12:48 +01:00
c309db78d5 Add UGent logo to metropolis presentation 2022-03-21 15:58:21 +01:00
3b6e996bf9 Set audio player for org-pomodoro 2022-03-21 15:30:41 +01:00
5cc92ce0d8 Merge init.el additions from upstream 2022-03-21 15:30:17 +01:00
459ef84df0 Try out the tomato technique 2022-03-21 11:26:35 +01:00
971cc7e5cb Disable writeroom in markdown-mode 2022-03-11 11:54:01 +01:00
e244dac20c Open org files with folded headings in Emacs 29 2022-02-15 00:03:47 +01:00
cbc4c89161 Change bibliography file location 2021-12-28 02:27:53 +01:00
e5fb8d625d Revert "Add workarounds for Emacs 29"
This reverts commit 3ee83cc4e1.
2021-12-28 02:27:35 +01:00
3ee83cc4e1 Add workarounds for Emacs 29 2021-12-09 17:26:45 +01:00
aaa86d9c85 Add directory depth to projectile search paths 2021-11-23 12:34:49 +01:00
eab69da4d8 Change the default bibliography file 2021-11-22 20:17:25 +01:00
b4818d0e20 Unset org-mode as the default mode 2021-11-22 17:03:41 +01:00
c04d688c14 Add Paperwork to projectile search path 2021-11-15 22:05:32 +01:00
f80b35e6f2 Update projectile search path 2021-11-09 16:31:18 +01:00
d8fea95751 Add metropolis presentation snippet 2021-10-26 10:47:25 +02:00
7d4debaede Configure clangd as LSP server 2021-10-20 10:42:07 +02:00
19ad6fcf10 Categorize org-super-agenda based on deadlines 2021-10-19 15:42:57 +02:00
8bfe16a8aa Ignore the direnv directory in projectile 2021-10-19 10:16:11 +02:00
969a3d92fa Become a proper greybeard bioinformatician 2021-10-18 17:19:44 +02:00
75d304022e Remove Spanish language from org-mode snippets 2021-10-11 18:59:14 +02:00
a093924ef7 Replace UGR with UGent logo in eisvogel snippet 2021-10-06 11:51:21 +02:00
4473a6c9bc Autosave files to ~/.cache 2021-09-07 13:31:05 +02:00
54e20121be Remove Magit repositories 2021-08-01 19:09:23 +01:00
83ecb87645 Shrink vertico window to show 8 elements 2021-07-31 19:56:24 +01:00
e6c28bbbb6 Replace deprecated ipython flag with jupyter 2021-07-31 18:07:26 +01:00
5600e4aea6 Revert "Add org-ref integation to biblio module"
This reverts commit 7a899af24b.
2021-07-31 14:08:02 +01:00
5074f44b14 Replace ivy with vertico 2021-07-31 13:39:27 +01:00
234645b604 Disable LSP for shell scripts 2021-07-29 22:46:26 +02:00
be595c4c24 Enable LSP for shell and LaTeX 2021-07-21 13:48:24 +02:00
7a899af24b Add org-ref integation to biblio module 2021-07-04 01:40:43 +02:00
b9e6c9a616 Improve academic org mode options 2021-07-02 17:07:10 +02:00
977744ce59 Change default bibliography file location 2021-07-02 17:06:53 +02:00
378d2fe4e6 Set up bibliography management 2021-06-27 21:21:23 +02:00
8537a95d75 Add org-plain-latex template 2021-06-24 15:25:24 +02:00
3b566848fc Replace term with vterm 2021-06-24 15:24:51 +02:00
889bf1cd36 Set org-mode as the default 2021-06-17 12:00:01 +02:00
98c80dcef9 Disable redundant modules 2021-05-26 22:59:25 +02:00
6ec9c1e5e3 Add reveal.js presentation metadata snippet 2021-05-19 14:25:11 +02:00
49729c3ccf Add tufte-handout LaTeX class and org mode snippet 2021-05-05 15:26:22 +02:00
0d070204d8 Change date format in eisvogel template snippet 2021-04-24 13:57:53 +02:00
3b319eb911 All color for URLs in eisvogel template snippet 2021-04-20 21:20:44 +02:00
afeedc44c9 Lazy-load projectile file ignore 2021-04-01 16:42:22 +02:00
bc521cb73a Ignore empty files in projectile 2021-03-23 23:52:27 +01:00
592f79045f Remove Dart icon hack now that it's fixed upstream 2021-02-22 00:57:23 +01:00
e8e04de380 Add Typesetting folder to projectile-search-path 2021-02-17 16:43:19 +01:00
c35bb8840c Enable LSP for ess 2021-02-15 23:42:38 +01:00
05cdc26582 Use Emacs icon as the splash-screen banner 2021-02-11 00:01:30 +01:00
1a83f5159e Add Work documents to projectile-search-path 2021-02-10 23:38:48 +01:00
f52ed235f4 Ignore development databases folders in LSP 2021-02-10 01:31:24 +01:00
86b2fd2169 Enable poetry support in Python module 2021-02-09 19:15:50 +01:00
2a6257a689 Shrink terminal buffer 2021-02-03 02:37:30 +01:00
a7b83c7e54 Auto-categorize events in org-super-agenda 2021-01-20 14:31:16 +01:00
d151287226 Enhance and prettify font 2021-01-19 02:29:39 +01:00
b626dce91e Become an academic 2021-01-18 01:22:58 +01:00
c24e096011 Become a statistics expert 2021-01-14 12:04:14 +01:00
4310375e44 Enable LSP for flutter 2021-01-14 12:03:58 +01:00
c35dc58f00 Trigger flycheck only after saving the buffer 2021-01-12 23:01:41 +01:00
cca6cdef5e Remove lsp header line 2021-01-07 00:59:01 +01:00
42b99fbb5d Disable LSP for PHP 2020-11-30 00:00:30 +01:00
1298ebdcf7 Remove lsp code actions on the modeline 2020-11-09 11:58:12 +01:00
c676f90d13 Remove local dash docsets 2020-11-09 00:40:39 +01:00
2031e24dab Run babel commands in a persistent session 2020-11-01 11:46:42 +01:00
678c52909b Remove lsp code actions on the sideline 2020-10-25 18:44:18 +01:00
2e221b913e Become a modern app developer 2020-10-25 11:58:58 +01:00
1ad29ad70f Remove lsp distracting variable highlight 2020-10-13 03:18:31 +02:00
2d74c3a675 Open org mode files with folded headlines 2020-10-12 16:35:37 +02:00
7c8dd7acfc Add subtitle to article metadata snippet 2020-10-11 02:51:29 +02:00
c1d3ac52a6 Unblock nix by disabling company mode 2020-10-06 01:48:18 +02:00
46f629b479 Export org babel results with pandoc 2020-09-22 15:36:52 +02:00
0a2980db32 Improve UX by eliminating nagging 2020-09-22 03:00:41 +02:00
038d8d0215 Remove gaps between windows 2020-09-06 16:58:29 +02:00
04f6fb5abf Enable LSP for java 2020-09-02 18:32:41 +02:00
edf3fa34d0 Show matching parenthesis on the minibuffer 2020-09-02 18:32:17 +02:00
aba11a76a3 Revert company mode custom delay before completion 2020-09-01 18:01:47 +02:00
2ca8b61e68 Remove local programming language docsets 2020-09-01 18:01:00 +02:00
35bccb49a4 Replace mspyls with pyright 2020-08-26 17:51:59 +02:00
9c386ba5c1 Revert "Disable company exclusively on Nix"
This reverts commit 53b4fffbee.
2020-08-23 13:22:01 +02:00
c1cec965b3 Change appearance of org mode bullets 2020-08-23 13:20:17 +02:00
3d0ab84f06 Revert "Map light/dark theme toggle to SPC t t"
This reverts commit 666490c13f.
2020-08-11 10:22:53 +02:00
666490c13f Map light/dark theme toggle to SPC t t 2020-07-19 20:54:56 +02:00
cbaac3a67b Set up latex article metadata snippet 2020-07-19 13:45:58 +02:00
53b4fffbee Disable company exclusively on Nix 2020-07-10 00:03:39 +02:00
3c5aa45749 Map local leader key to , 2020-07-10 00:02:43 +02:00
b8aec662cf Use Microsoft python LSP by default 2020-07-03 12:47:51 +02:00
5d6c600b1f Speed up company mode 2020-07-03 12:47:39 +02:00
cf77a594c6 Disable LSP documentation popup 2020-07-01 18:55:30 +02:00
dab3d10b6d Shrink minibuffer size 2020-07-01 18:55:20 +02:00
0f6745d8aa Speed up Nix mode and Org Agenda 2020-07-01 18:54:44 +02:00
e3ad628597 Replace eshell with fish shell 2020-06-20 02:08:47 +02:00
efefbc80f2 Enable direnv and fix language option in eisvogel 2020-05-24 08:15:14 +02:00
682675cbfd Avoid blindness on HiDPI screen 2020-05-11 18:05:52 +02:00
661e49ba17 Enable the new biblio module instead of org-ref 2020-04-22 03:05:32 +02:00
896a13b2cd Set up org-ref and eisvogel export 2020-04-06 17:54:51 +02:00
2d7412685c Become an App Developer and minor tweaks 2020-03-09 17:05:02 +01:00
7459874574 Become a DevOps 2020-02-25 18:57:13 +01:00
03ca3e7050 Revert to default org keywords and become Web dev 2020-02-23 14:10:38 +01:00
7d327e29c6 Enable zen module for markdown and org 2020-01-26 14:06:00 +01:00
262d05c9f5 Close compilation buffer and update paths 2020-01-23 14:49:15 +01:00
95ad5dda2d Update Readme 2020-01-06 12:19:15 +01:00
4c8415e4fe Move ui config to another file 2020-01-06 10:20:20 +01:00
1fdc137b51 Prettify code and disable completion for text 2019-12-31 05:56:59 +01:00
19963eeed8 Change theme to nord and recolor PDFs 2019-12-26 01:09:55 +01:00
a8231133ee Enable Java module and pandoc mode 2019-12-16 20:10:19 +01:00
52005140a9 Rice Org mode while improving the config layout 2019-12-16 20:08:37 +01:00
b6f507325a Add Magit configuration and life quality tweaks 2019-12-07 20:17:29 +01:00
6a796f91ea Play around with modules flags 2019-12-07 20:16:49 +01:00
5fb0230f6b Add org configuration in a separate file 2019-12-07 20:16:04 +01:00
c5c491139f Add License 2019-12-05 18:20:44 +01:00
4dd7d17c76 Add Readme 2019-12-04 19:18:19 +01:00
911e593e1b Change python backend to anaconda 2019-12-04 19:17:10 +01:00
eda3c82658 Add quality of life misc config 2019-12-04 04:43:02 +01:00
bfc6444312 Change aesthetic elements 2019-12-04 04:42:19 +01:00
3e06f3e07d Enable interesting modules and disable boring ones 2019-12-04 04:40:34 +01:00
21 changed files with 1466 additions and 63 deletions

38
+keybindings.el Normal file
View File

@@ -0,0 +1,38 @@
;;; +keybindings.el -*- lexical-binding: t; -*-
;; Custom keybindings
;;
;; Select target in Makefile compilation as default
(map! :leader :n "c c" #'makefile-executor-execute-project-target)
;; Keybindings for R markdown polymode
(map! :map poly-markdown+R-mode-map
:n "RET" #'polymode-eval-chunk
:desc "Evaluate code block")
;; Map elfeed to global keybinding
(map! :leader :n "o e" #'=rss
:desc "RSS reader")
;; Keybindings for org-noter
(map! :mode pdf-view-mode
:n "i" #'org-noter-insert-note
:desc "Insert note with a subheading")
(map! :mode pdf-view-mode
:n "x" #'org-noter-kill-session
:desc "Kill the current org-noter session")
;; Keybindings for pdf-view
(map! :mode pdf-view-mode
:n ":" #'pdf-view-goto-page
:desc "Move to the selected page")
;; Keybindings for mu4e
(map! :mode mu4e-view-mode
:n "S" #'mu4e-view-save-attachments
:desc "Save the chosen mail attachments")
;; 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))

45
+mail.el Normal file
View File

@@ -0,0 +1,45 @@
;;; +mail.el -*- lexical-binding: t; -*-
;; Mu4e configuration
;;
;; Set up the default email identity
(setq user-full-name "Amin Kasrou Aouam")
;; Use msmtp to send email
(setq sendmail-program (executable-find "msmtp")
send-mail-function #'smtpmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function #'message-send-mail-with-sendmail)
;; Account configuration
(set-email-account! "gmail"
'((mu4e-sent-folder . "/gmail/sent")
(mu4e-drafts-folder . "/gmail/drafts")
(mu4e-trash-folder . "/gmail/trash")
(mu4e-refile-folder . "/gmail/archive")
(smtpmail-smtp-user . "akasroua@gmail.com")
(user-mail-address . "akasroua@gmail.com"))
t)
(set-email-account! "disroot"
'((mu4e-sent-folder . "/disroot/sent")
(mu4e-drafts-folder . "/disroot/drafts")
(mu4e-trash-folder . "/disroot/trash")
(mu4e-refile-folder . "/disroot/archive")
(smtpmail-smtp-user . "akasroua@disroot.org")
(user-mail-address . "akasroua@disroot.org"))
t)
;; Configure mu4e contexts
(setq mu4e-context-policy 'ask-if-none
mu4e-compose-context-policy 'ask-if-none)
;; Run lazy check when syncing
(setq mu4e-index-lazy-check t)
;; Use ISO dates
(setq mu4e-headers-date-format "%Y-%m-%d %H:%M")
;; Disable colors for HTML emails
(setq shr-use-colors nil)
;; Use shortcuts to access inboxes easily
(setq mu4e-maildir-shortcuts
'(("/disroot/inbox" . ?d)
("/gmail/inbox" . ?g)))
;; 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)
(:name "Last 7 days" :query "date:7d..now" :hide-unread t :key 119)))

175
+org.el Normal file
View File

@@ -0,0 +1,175 @@
;;; ~/.doom.d/+org.el -*- lexical-binding: t; -*-
;; Org mode configuration
;;
(setq org-ellipsis "")
;; Cycle through header visibility
(after! evil-org
(remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h))
;; Disable completion
(set-company-backend! 'org-mode nil)
;; Turn off line numbers
(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-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)
(setq org-super-agenda-groups '((:name "Overdue"
:deadline past
:order 0)
(:name "Important"
:and (:priority "A" :deadline future)
:order 1)
(:name "Today"
:time-grid t
:scheduled today
:deadline today
:order 2)
(:name "Assignments"
:tag "labs"
:order 3)
(:name "Mails"
:tag "mail"
:order 4)
(:name "Errands"
:tag ("errand" "call")
:order 10)
(:name "Projects"
:file-path "Projects"
:order 6)
(:discard (:tag ("periodic" "birthday")))))
:config
(org-super-agenda-mode))
;; Add timestamp to DONE task
(setq org-log-done 'time)
;; Print babel results to the buffer and export them
(setq org-babel-default-header-args '((:session . "default") (:results . "output") (:exports . "both")
(: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)
;; Respect LANGUAGE export variable
(add-to-list 'org-latex-packages-alist '("AUTO" "babel" t ("pdflatex")))
;; Don't evaluate code blocks on export
(setq org-export-use-babel nil)
;; Speed up agenda startup
(setq org-agenda-dim-blocked-tasks nil)
;; Open file with folded headlines
(setq org-startup-folded t)
;; Add tufte-handout to LaTeX classes
(after! ox-latex
(add-to-list 'org-latex-classes
'("tufte-handout"
"\\documentclass{tufte-handout}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))
;; Add org-plain-latex
(after! ox-latex
(add-to-list 'org-latex-classes
'("org-plain-latex"
"\\documentclass{article}
[NO-DEFAULT-PACKAGES]
[PACKAGES]
[EXTRA]"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))
;; Prettify code block export
(use-package! engrave-faces-latex
:after ox-latex)
(setq org-latex-src-block-backend 'engraved)
;; Add citeproc and metadata-file options to ox-pandoc
(after! ox-pandoc
(add-to-list 'org-pandoc-valid-options 'citeproc)
(add-to-list 'org-pandoc-valid-options 'metadata-file))
;; Allow referencing by label in org-ref
(setq org-latex-prefer-user-labels t)
;; Extend pomodoro length to 45/15
(setq org-pomodoro-length '45
org-pomodoro-short-break-length '15
org-pomodoro-long-break-length '30
org-pomodoro-audio-player "pw-play"
org-pomodoro-time-format "%.2m min"
org-pomodoro-keep-killed-pomodoro-time t)
;; Define declarative org capture remplates
(use-package! doct
:commands doct)
(setq org-capture-templates
(doct `(("Cookbook" :keys "c"
:file "~/Notes/Recipes.org"
:type entry
:template ("%(org-chef-get-recipe-from-url)"))
;; 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 an assets directory
(after! org-download
(setq org-download-image-dir "assets/"
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 "$" "$")))
;; 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)
;; Auto tangle on save
(add-hook! 'org-mode-hook 'org-auto-tangle-mode)
;; HACK Fix search folded sections
(setq org-fold-core-style 'overlays)
(evil-select-search-module 'evil-search-module 'evil-search)

32
+rss.el Normal file
View File

@@ -0,0 +1,32 @@
;;; +rss.el -*- lexical-binding: t; -*-
;; Elfeed configuration
;;
;; Synchronize elfeed with Miniflux
(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-lazy-sync t
elfeed-sort-order 'ascending
elfeed-search-filter "@all +unread"
elfeed-goodies/tag-column-width 0)
(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)))

80
+ui.el Normal file
View File

@@ -0,0 +1,80 @@
;;; ~/.doom.d/+ui.el -*- lexical-binding: t; -*-
;; Appearance settings
;; Set Font and theme
(setq doom-font (font-spec :family "Iosevka Medium" :size 26)
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, fit to page by default and enable smooth scrolling
(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))
;; Customize modeline
(setq doom-modeline-major-mode-icon 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))
;; Shrink minibuffer
(after! vertico
(setq vertico-count 8))
;; Eliminate gaps between windows
(after! frame
(remove-hook 'doom-init-ui-hook #'window-divider-mode))
;; Reduce size of the popup terminal
(set-popup-rule! "*doom:vterm-popup:*" :size 0.25 :vslot -4 :select t :quit nil :ttl 0)
;; 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)
: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)
:when (featurep! :app rss)
:face (:inherit (doom-dashboard-menu-title bold))
:action =rss)
("Read saved articles"
:icon (nerd-icons-octicon "nf-oct-book" :face 'doom-dashboard-menu-title)
:face (:inherit (doom-dashboard-menu-title bold))
:action =wallabag)))
;; 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)
;; Increase size of the PlatformIO compilation buffer
(set-popup-rule! "*platformio*" :size 0.25 :vslot -4 :select t :quit t :ttl 0)

672
LICENSE.md Normal file
View File

@@ -0,0 +1,672 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type YYshow c' for details.
The hypothetical commands Yshow c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

14
README.org Normal file
View File

@@ -0,0 +1,14 @@
* doom.d
Personal configuration of [[https://github.com/hlissner/doom-emacs/][Doom Emacs]]
** Modules
The configuration is compartmented in different files:
- Modules: init.el
- General configuration: config.el
- Extra packages: packages.el
- Appearance: +ui.el
- Org mode configuration: +org.el

76
assets/emacs.svg Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg6612" sodipodi:version="0.32" inkscape:version="0.45.1" width="270" height="217" version="1.0" sodipodi:docbase="/home/sphinx/images" sodipodi:docname="Emacs-logo.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape">
<metadata id="metadata6617">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"/>
<dc:creator>
<cc:Agent>
<dc:title>Dmitry Dzhus</dc:title>
</cc:Agent>
</dc:creator>
<dc:date>2007-07</dc:date>
<dc:title>Emacs logo</dc:title>
<dc:subject>
<rdf:Bag>
<rdf:li>emacs</rdf:li>
<rdf:li>logo</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>Emacs logo by Luis Fernandes was created in 2001. This is an SVG version created by hand from scratch in Inkscape.</dc:description>
<dc:language>en</dc:language>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
<cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
<cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
<cc:requires rdf:resource="http://web.resource.org/cc/SourceCode"/>
</cc:License>
</rdf:RDF>
</metadata>
<defs id="defs6615"/>
<sodipodi:namedview inkscape:window-height="990" inkscape:window-width="1276" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="1.7926268" inkscape:cx="227.95993" inkscape:cy="149.03165" inkscape:window-x="0" inkscape:window-y="0" inkscape:current-layer="svg6612"/>
<g id="g2240" style="fill:#000000;fill-opacity:1;stroke:none" transform="translate(-4.7334344,4.3389815)">
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 176.57988,37.972907 C 174.9871,39.007967 168.87448,51.953525 168.7783,53.533221 C 180.64186,73.113933 202.57955,40.078784 206.55381,24.980764 C 206.55381,24.980764 196.17124,43.179003 186.77317,43.526939 C 175.75676,43.93479 178.17554,36.935973 176.57988,37.972907 z " id="path2242" sodipodi:nodetypes="cccsz"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 22.47173,15.758997 L 15.81003,32.485756 C 15.81003,32.485756 19.89052,42.218104 26.49069,42.838195 C 41.61737,44.259359 58.45245,15.619537 63.19409,15.758997 C 67.93574,15.898457 77.55353,23.422298 82.6657,33.922656 C 89.39535,20.759071 97.58642,14.911225 111.16839,24.667015 C 119.07042,30.342966 135.58934,52.795226 145.47559,53.901349 C 156.18021,55.099037 165.37798,44.912817 169.81138,26.288239 C 163.67513,34.237468 161.1768,37.806706 155.0286,38.212082 C 148.68317,38.630462 149.241,39.885604 127.06684,16.874679 C 104.89268,-6.1362469 94.43317,4.8811053 87.87854,14.643316 C 86.41421,13.039524 78.99699,1.01863 70.05858,1.1156811 C 63.72511,1.1844483 53.17415,16.174161 46.86414,21.616488 C 40.30897,27.270272 36.37856,28.267647 33.99471,28.294944 C 30.30074,28.339067 25.84923,26.450798 22.47173,15.758997 z " id="path2244" sodipodi:nodetypes="ccsscsscsscsssc"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 76.60517,33.616604 C 59.9071,53.934058 59.23819,54.418087 50.46092,68.860929 C 41.68365,83.303771 39.35397,92.905012 43.4733,96.486252 C 47.62389,100.09467 55.01913,100.29382 64.07871,93.597586 C 76.68602,83.936084 93.51416,70.148169 98.13382,58.409876 C 99.33455,55.358876 77.4725,76.054153 68.69926,81.186233 C 63.43563,84.265304 56.36004,85.075126 52.55923,81.397725 C 44.80291,73.893236 79.52343,36.77475 76.60517,33.616604 z " id="path2246" sodipodi:nodetypes="csscsssc"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 101.40617,64.709511 C 101.3713,63.070854 109.84351,50.554306 111.30784,50.066195 C 132.55351,64.354287 121.48844,101.10862 114.51543,104.3162 C 114.51543,104.3162 115.7357,88.557199 112.56298,78.655527 C 109.39026,68.753854 101.4411,66.351131 101.40617,64.709511 z " id="path2248" sodipodi:nodetypes="cccsz"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 212.01995,32.790058 C 210.0143,24.25611 219.12924,1.1854142 230.75546,1.1854142 C 259.78347,1.1854142 245.6869,47.473559 240.02956,64.570053 C 226.22301,100.34158 217.47477,153.8249 216.87918,158.42673 C 216.15214,164.0442 207.47903,179.09487 211.85861,154.24293 C 216.23819,129.39099 224.1069,100.38994 233.56074,66.549824 C 238.51906,48.801431 244.54954,17.14762 227.7868,17.100791 C 219.23545,16.991458 219.72047,23.025811 212.01995,32.790058 z " id="path2250" sodipodi:nodetypes="cscssscc"/>
</g>
<g id="g2233" style="stroke:none">
<path sodipodi:nodetypes="cccsz" id="path9706" d="M 176.57988,37.972907 C 174.9871,39.007967 168.87448,51.953525 168.7783,53.533221 C 180.64186,73.113933 202.57955,40.078784 206.55381,24.980764 C 206.55381,24.980764 196.17124,43.179003 186.77317,43.526939 C 175.75676,43.93479 178.17554,36.935973 176.57988,37.972907 z " style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccsscsscsscsssc" id="path7673" d="M 22.47173,15.758997 L 15.81003,32.485756 C 15.81003,32.485756 19.89052,42.218104 26.49069,42.838195 C 41.61737,44.259359 58.45245,15.619537 63.19409,15.758997 C 67.93574,15.898457 77.55353,23.422298 82.6657,33.922656 C 89.39535,20.759071 97.58642,14.911225 111.16839,24.667015 C 119.07042,30.342966 135.58934,52.795226 145.47559,53.901349 C 156.18021,55.099037 165.37798,44.912817 169.81138,26.288239 C 163.67513,34.237468 161.1768,37.806706 155.0286,38.212082 C 148.68317,38.630462 149.241,39.885604 127.06684,16.874679 C 104.89268,-6.1362469 94.43317,4.8811053 87.87854,14.643316 C 86.41421,13.039524 78.99699,1.01863 70.05858,1.1156811 C 63.72511,1.1844483 53.17415,16.174161 46.86414,21.616488 C 40.30897,27.270272 36.37856,28.267647 33.99471,28.294944 C 30.30074,28.339067 25.84923,26.450798 22.47173,15.758997 z " style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path sodipodi:nodetypes="csscsssc" id="path8693" d="M 76.60517,33.616604 C 59.9071,53.934058 59.23819,54.418087 50.46092,68.860929 C 41.68365,83.303771 39.35397,92.905012 43.4733,96.486252 C 47.62389,100.09467 55.01913,100.29382 64.07871,93.597586 C 76.68602,83.936084 93.51416,70.148169 98.13382,58.409876 C 99.33455,55.358876 77.4725,76.054153 68.69926,81.186233 C 63.43563,84.265304 56.36004,85.075126 52.55923,81.397725 C 44.80291,73.893236 79.52343,36.77475 76.60517,33.616604 z " style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path sodipodi:nodetypes="cccsz" id="path9704" d="M 101.40617,64.709511 C 101.3713,63.070854 109.84351,50.554306 111.30784,50.066195 C 132.55351,64.354287 121.48844,101.10862 114.51543,104.3162 C 114.51543,104.3162 115.7357,88.557199 112.56298,78.655527 C 109.39026,68.753854 101.4411,66.351131 101.40617,64.709511 z " style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path sodipodi:nodetypes="cscssscc" id="path2171" d="M 212.01995,32.790058 C 210.0143,24.25611 219.12924,1.1854142 230.75546,1.1854142 C 259.78347,1.1854142 245.6869,47.473559 240.02956,64.570053 C 226.22301,100.34158 217.47477,153.8249 216.87918,158.42673 C 216.15214,164.0442 207.47903,179.09487 211.85861,154.24293 C 216.23819,129.39099 224.1069,100.38994 233.56074,66.549824 C 238.51906,48.801431 244.54954,17.14762 227.7868,17.100791 C 219.23545,16.991458 219.72047,23.025811 212.01995,32.790058 z " style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
</g>
<g style="fill:#000000;fill-opacity:1;stroke:none" id="g2256" transform="translate(0.8166413,4.3944529)">
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 79.886738,152.50463 C 67.822172,155.61715 50.502331,192.18769 49.743523,198.14195 C 52.532726,198.83925 111.02019,130.19512 80.295208,193.81167 C 102.57324,174.95912 124.9556,141.04167 107.8027,183.94795 C 103.74903,194.08781 123.59559,194.09426 142.96938,172.96563 C 137.88975,176.22186 112.22868,191.62171 126.35499,159.60889 C 133.77483,142.79418 109.21923,159.41447 102.3683,165.83729 C 103.80096,159.33343 108.94433,147.78354 100.61675,150.98227 C 92.289176,154.181 83.310373,160.6892 67.937825,175.11509 C 76.765795,160.89643 77.224181,159.40756 79.886738,152.50463 z " id="path2258" sodipodi:nodetypes="cccscscscc"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 248.85492,188.50638 C 263.21933,186.53398 284.36437,164.67209 255.21207,163.30784 C 223.17817,161.81588 262.88238,150.47751 262.88238,150.47751 C 245.58932,149.36183 214.14946,168.68613 239.80172,165.74839 C 265.63062,162.76646 265.93049,186.17596 239.24388,186.14445 C 235.50916,186.14004 236.66387,182.41388 236.66387,182.41388 L 225.77752,187.22526 C 236.0826,190.18366 240.70876,189.62494 248.85492,188.50638 z " id="path2260" sodipodi:nodetypes="cscssccs"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 35.422878,148.66454 C 20.150885,157.04591 -6.2772909,190.95274 6.2647537,199.01662 C 17.984924,206.55208 68.941642,170.29445 77.667057,153.75538 C 4.3035383,211.52619 14.065561,174.90254 27.008448,162.02628 C 35.805465,151.30801 64.004057,143.68513 71.481066,128.52052 C 32.789119,149.29474 30.405114,131.50519 62.642197,110.82103 C 68.569623,107.02504 107.74937,89.042889 77.768775,114.28261 C 95.502651,106.02716 110.52675,93.267855 98.941531,90.767173 C 83.884151,87.517022 60.202847,105.92694 48.092626,115.80927 C 40.969928,121.62162 11.868522,145.38354 35.422878,148.66454 z " id="path2262" sodipodi:nodetypes="cscccscssc"/>
<g style="fill:#000000;fill-opacity:1;stroke:none" id="g2264">
<path sodipodi:nodetypes="ccc" id="path2266" d="M 153.52386,181.54504 C 114.3973,212.57672 133.43947,164.59338 180.00502,149.95001 C 144.43247,174.12306 139.76476,184.61018 153.52386,181.54504 z " style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path sodipodi:nodetypes="ccc" id="path2268" d="M 196.30981,176.96638 C 156.1373,209.46239 150.29865,172.10195 184.30492,155.10468 C 167.14111,181.92747 183.59666,177.6607 196.30981,176.96638 z " style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
</g>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 229.3687,178.97034 C 185.57023,211.04797 178.47643,161.27557 237.30661,150.27509 C 188.34589,179.18978 219.44475,183.56954 229.3687,178.97034 z " id="path2270" sodipodi:nodetypes="ccc"/>
</g>
<g id="g2201" style="fill:#2076c1;fill-opacity:1;stroke:none">
<path sodipodi:nodetypes="cccscscscc" id="path2173" d="M 79.886738,152.50463 C 67.822172,155.61715 50.502331,192.18769 49.743523,198.14195 C 52.532726,198.83925 111.02019,130.19512 80.295208,193.81167 C 102.57324,174.95912 124.9556,141.04167 107.8027,183.94795 C 103.74903,194.08781 123.59559,194.09426 142.96938,172.96563 C 137.88975,176.22186 112.22868,191.62171 126.35499,159.60889 C 133.77483,142.79418 109.21923,159.41447 102.3683,165.83729 C 103.80096,159.33343 108.94433,147.78354 100.61675,150.98227 C 92.289176,154.181 83.310373,160.6892 67.937825,175.11509 C 76.765795,160.89643 77.224181,159.40756 79.886738,152.50463 z " style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"/>
<path sodipodi:nodetypes="cscssccs" id="path2183" d="M 248.85492,188.50638 C 263.21933,186.53398 284.36437,164.67209 255.21207,163.30784 C 223.17817,161.81588 262.88238,150.47751 262.88238,150.47751 C 245.58932,149.36183 214.14946,168.68613 239.80172,165.74839 C 265.63062,162.76646 265.93049,186.17596 239.24388,186.14445 C 235.50916,186.14004 236.66387,182.41388 236.66387,182.41388 L 225.77752,187.22526 C 236.0826,190.18366 240.70876,189.62494 248.85492,188.50638 z " style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"/>
<path sodipodi:nodetypes="cscccscssc" id="path6069" d="M 35.422878,148.66454 C 20.150885,157.04591 -6.2772909,190.95274 6.2647537,199.01662 C 17.984924,206.55208 68.941642,170.29445 77.667057,153.75538 C 4.3035383,211.52619 14.065561,174.90254 27.008448,162.02628 C 35.805465,151.30801 64.004057,143.68513 71.481066,128.52052 C 32.789119,149.29474 30.405114,131.50519 62.642197,110.82103 C 68.569623,107.02504 107.74937,89.042889 77.768775,114.28261 C 95.502651,106.02716 110.52675,93.267855 98.941531,90.767173 C 83.884151,87.517022 60.202847,105.92694 48.092626,115.80927 C 40.969928,121.62162 11.868522,145.38354 35.422878,148.66454 z " style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"/>
<g id="g2188" style="fill:#2076c1;fill-opacity:1;stroke:none">
<path style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" d="M 153.52386,181.54504 C 114.3973,212.57672 133.43947,164.59338 180.00502,149.95001 C 144.43247,174.12306 139.76476,184.61018 153.52386,181.54504 z " id="path2175" sodipodi:nodetypes="ccc"/>
<path style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" d="M 196.30981,176.96638 C 156.1373,209.46239 150.29865,172.10195 184.30492,155.10468 C 167.14111,181.92747 183.59666,177.6607 196.30981,176.96638 z " id="path2177" sodipodi:nodetypes="ccc"/>
</g>
<path sodipodi:nodetypes="ccc" id="path2179" d="M 229.3687,178.97034 C 185.57023,211.04797 178.47643,161.27557 237.30661,150.27509 C 188.34589,179.18978 219.44475,183.56954 229.3687,178.97034 z " style="fill:#2076c1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"/>
</g>
<path sodipodi:nodetypes="cscsss" id="path2252" d="M 124.1858,189.83823 C 119.19632,187.34349 148.26509,119.15484 152.29057,142.10943 C 154.09525,152.40027 170.73124,123.57014 170.73124,123.57014 C 170.73124,123.57014 183.79749,99.804357 184.43848,101.87524 C 187.48343,111.71277 149.00775,175.41789 146.27516,159.36674 C 143.51342,143.14437 124.77748,190.13407 124.1858,189.83823 z " style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 127.36915,186.62713 C 122.37967,184.13239 151.44844,115.94374 155.47392,138.89833 C 157.2786,149.18917 173.91459,120.35904 173.91459,120.35904 C 173.91459,120.35904 186.98084,96.593259 187.62183,98.664137 C 190.66678,108.50167 152.1911,172.20679 149.45851,156.15564 C 146.69677,139.93327 127.96083,186.92297 127.36915,186.62713 z " id="path3158" sodipodi:nodetypes="cscsss"/>
<path sodipodi:nodetypes="cscsc" id="path2254" d="M 56.312166,214.04162 C 56.312166,214.04162 56.065636,199.44685 80.768246,168.4823 C 100.68005,143.52298 123.7636,107.53934 123.7636,107.53934 C 123.7636,107.53934 119.97892,126.52044 103.15975,148.19092 C 83.527796,173.4855 56.312166,214.04162 56.312166,214.04162 z " style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path style="fill:#c64e3b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 59.52326,215.22497 C 59.52326,215.22497 59.27673,200.6302 83.97934,169.66565 C 103.89115,144.70633 126.9747,108.72269 126.9747,108.72269 C 126.9747,108.72269 123.19002,127.70379 106.37085,149.37427 C 86.73889,174.66885 59.52326,215.22497 59.52326,215.22497 z " id="path4129" sodipodi:nodetypes="cscsc"/>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

107
config.el
View File

@@ -1,4 +1,109 @@
;;; .doom.d/config.el -*- lexical-binding: t; -*- ;;; .doom.d/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here ;; Place your private configuration here
(setq doom-font (font-spec :family "Iosevka" :size 16)) ;;
;; Load appearance configuration
(load! "+ui")
;; Load custom keybindings
(load! "+keybindings")
;; Set projects directories
(setq projectile-project-search-path '(("~/Projects" . 2)
("~/Documents" . 5)
("~/Repos")
"~/.dotfiles"
"~/Notes"))
;; Auto cleanup recentf
(setq recentf-auto-cleanup 300)
;; 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))
(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)
;; 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)
;; 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)
;; Trigger flycheck after 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-files ".envrc")
(add-to-list 'projectile-globally-ignored-files ".project")
(add-to-list 'projectile-globally-ignored-directories ".direnv")
(add-to-list 'projectile-globally-ignored-directories ".ipynb_checkpoints"))
;; Associate polymode to R markdown files
(add-to-list 'auto-mode-alist '("\\.[rR]md\\'" . poly-markdown+R-mode))
;; 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>)
(setq display-line-numbers-type 'relative)
;; Set up RSS reader
(after! elfeed (load! "+rss"))
;; Set up the mail stack
(after! mu4e (load! "+mail"))
;; HACK Enable AOT native compilation
(setq native-comp-jit-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)))

132
init.el
View File

@@ -11,24 +11,30 @@
(doom! :input (doom! :input
;;chinese ;;chinese
;;japanese ;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion :completion
company ; the ultimate code completion backend ;;(company +tng) ; the ultimate code completion backend
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;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
+fuzzy ; fuzzy search is a millenial thing ;;+fuzzy ; fuzzy search is a millenial thing
+icons) ; prettify the small thingss ;;+icons) ; prettify the small thingss
(vertico +icons) ; The search engine of the future
:ui :ui
;;deft ; notational velocity for Emacs ;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs doom-quit ; DOOM quit-message prompts when you quit Emacs
;;fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra ;;hydra
;;indent-guides ; highlighted indent columns ;;indent-guides ; highlighted indent columns
(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 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
@@ -36,7 +42,6 @@
(popup ; tame sudden yet inevitable temporary windows (popup ; tame sudden yet inevitable temporary windows
+all ; catch all popups that start with an asterix +all ; catch all popups that start with an asterix
+defaults) ; default popup rules +defaults) ; default popup rules
;;pretty-code ; replace bits of code with pretty symbols
;;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
@@ -44,15 +49,16 @@
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
: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
;;god ; run Emacs commands without modifier keys ;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim ;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once ;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent ;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of ;;parinfer ; turn lisp into python, sort of
rotate-text ; cycle region at point between text candidates rotate-text ; cycle region at point between text candidates
@@ -62,112 +68,148 @@
:emacs :emacs
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 ; a consistent, cross-platform shell (WIP) ;;eshell ; the elisp shell that works everywhere
;;shell ; a terminal REPL for Emacs ;;shell ; simple shell REPL for Emacs
;;term ; terminals in Emacs ;;term ; basic terminal emulator for Emacs
;;vterm ; another terminals in Emacs vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
;;(spell +flyspell) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
:tools :tools
;;ansible ;;ansible
;;debugger ; FIXME stepping through code, to help you add bugs ;;biblio ; Writes a PhD for you (citation needed)
;;direnv debugger ; FIXME stepping through code, to help you add bugs
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)
flycheck ; tasing you for every semicolon you forget
;;flyspell ; tasing you for misspelling mispelling
;;gist ; interacting with github gists ;;gist ; interacting with github gists
(lookup ; helps you navigate your code and documentation lookup ; navigate your code and its documentation
+docsets) ; ...or in Dash docsets locally ;;+docsets) ; ...or in Dash docsets locally
;;lsp (lsp +booster) ; 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
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 :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
;;cc ; C/C++/Obj-C madness ;;beancount ; mind the GAAP
(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
;;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 ; 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
;;go ; the hipster dialect ;;fstar ; (dependent) types and (monadic) effects and Z3
;;(haskell +dante) ; a language that's lazier than I am ;;gdscript ; the language you waited for
(go +lsp
+tree-sitter) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(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 ; ;;idris ; a language you can depend on
;;(java +meghanada) ; the poster child for carpal tunnel syndrome (json +tree-sitter) ; At least it ain't XML
;;javascript ; all(hope(abandon(ye(who(enter(here)))))) (java +lsp
+tree-sitter) ; the poster child for carpal tunnel syndrome
;;(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 ; 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
;;factor
;;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
+ipython ; ipython/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
;;perl ; write code no one else can comprehend ;;+pretty)
;;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 ; beautiful is better than ugly (python +lsp ; beautiful is better than ugly
+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
;;rest ; Emacs as a REST client ;;raku ; the artist formerly known as perl6
rest ; Emacs as a REST client
;;rst ; ReST in peace ;;rst ; ReST in peace
;;ruby ; 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
;;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
;;zig ; C, but simpler
:email :email
;;(mu4e +gmail) (mu4e +org +gmail)
;;notmuch ;;notmuch
;;(wanderlust +gmail) ;;(wanderlust +gmail)
:app :app
;;calendar ;;calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize ;;irc ; how neckbeards socialize
;;(rss +org) ; 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
;;write ; emacs for writers (fiction, notes, papers, etc.)
:config :config
;;literate ;;literate
(default +bindings +smartparens)) (default +bindings +smartparens))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

View File

@@ -5,3 +5,29 @@
;; (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)
;; Better org agenda
(package! org-super-agenda)
;; Save recipes to org file
(package! org-chef)
;; Miniflux integration for elfeed
(package! elfeed-protocol)
;; Prettier LaTeX source blocks
(package! engrave-faces)
;; Prettier org mode
(package! org-modern)
;; Tangle org files on save
(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
(package! doct :recipe (:host github :repo "progfolio/doct"))

View File

@@ -0,0 +1,11 @@
# -*- mode: snippet -*-
# name: article latex metadata
# key: art
# --
#+TITLE: $0
#+SUBTITLE:
#+AUTHOR: Amin Kasrou Aouam
#+OPTIONS: toc:nil
#+LATEX_CLASS: org-plain-latex
#+LATEX_CLASS_OPTIONS: [a4paper]
#+SETUPFILE: ~/.pandoc/templates/emacs-latex.org

View File

@@ -0,0 +1,17 @@
# -*- mode: snippet -*-
# name: eisvogel template metadata
# key: eis
# --
#+TITLE: $0
#+SUBTITLE:
#+AUTHOR: Amin Kasrou Aouam
#+DATE: `(format-time-string "%d-%m-%Y")`
#+PANDOC_OPTIONS: template:~/.pandoc/templates/eisvogel.latex
#+PANDOC_OPTIONS: listings:t
#+PANDOC_OPTIONS: toc:t
#+PANDOC_METADATA: titlepage:t
#+PANDOC_METADATA: listings-no-page-break:t
#+PANDOC_METADATA: toc-own-page:t
#+PANDOC_METADATA: table-use-row-colors:t
#+PANDOC_METADATA: colorlinks:t
#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGent.png

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,10 @@
# -*- mode: snippet -*-
# name: metropolis presentation
# key: met
# --
#+TITLE: $0
#+AUTHOR: Amin Kasrou Aouam
#+SUBTITLE:
#+PANDOC_OPTIONS: pdf-engine:xelatex
#+PANDOC_METADATA: theme:metropolis
#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGent.png

View File

@@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: reveal.js presentation
# key: pres
# --
#+TITLE: $0
#+SUBTITLE:
#+REVEAL_TITLE_SLIDE: %t <br>%s</br>
#+REVEAL_THEME: moon
#+OPTIONS: toc:nil ^:nil num:nil

View File

@@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: tufte latex metadata
# key: tufte
# --
#+TITLE: $0
#+AUTHOR: Amin Kasrou Aouam
#+OPTIONS: toc:nil
#+LATEX_CLASS: tufte-handout
#+LATEX_CLASS_OPTIONS: [a4paper]

View File

@@ -0,0 +1,8 @@
# -*- mode: snippet -*-
# name: email signature
# key: sign
# --
Kind 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

View File

@@ -0,0 +1,12 @@
# -*- 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