main
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<!-- Oct 07, 2022 -->
5<meta charset="utf-8" />
6<meta name="viewport" content="width=device-width, initial-scale=1" />
7<title>My Organizational Workflow</title>
8<meta name="author" content="Vincent Demeester" />
9<meta name="generator" content="Org Mode" />
10<link rel='icon' type='image/x-icon' href='/images/favicon.ico'/>
11<meta name='viewport' content='width=device-width, initial-scale=1'>
12<link rel='stylesheet' href='/css/new.css' type='text/css'/>
13<link rel='stylesheet' href='/css/syntax.css' type='text/css'/>
14<link href='/index.xml' rel='alternate' type='application/rss+xml' title='Vincent Demeester' />
15</head>
16<body>
17<main id="content" class="content">
18<header>
19<h1 class="title">My Organizational Workflow</h1>
20<p class="subtitle" role="doc-subtitle">How I use org-mode and other tools to streamline my life</p>
21</header><p>
22This is an up-to-date document on my <a href="org_mode.html">org-mode</a> workflow. This is inspired by “<a href="http://cachestocaches.com/2020/3/my-organized-life/">A Guide to My
23Organizational Workflow: How to Streamline Your Life</a>” and other articles like <a href="http://www.howardism.org/Technical/Emacs/getting-boxes-done.html">Getting
24Boxes Done</a>, <a href="http://www.howardism.org/Technical/Emacs/getting-more-boxes-done.html">Getting Boxes Done, the Code</a>, <a href="http://www.howardism.org/Technical/Emacs/getting-even-more-boxes-done.html">Refiling Trees to Files</a>. In a gist this is about
25how I take notes and how I keep track on what I work on and what I need to work on.
26</p>
27
28<p>
29This is part of <a href="emacs.html">My Emacs System</a>.
30</p>
31
32<nav id="table-of-contents" role="doc-toc">
33<h2>Table of Contents</h2>
34<div id="text-table-of-contents" role="doc-toc">
35<ul>
36<li><a href="#Introduction">Introduction</a></li>
37<li><a href="#Goals">Goals</a></li>
38<li><a href="#My%20workflow">My workflow</a></li>
39<li><a href="#Implementation">Implementation</a>
40<ul>
41<li><a href="#Constants%20and%20registers">Constants and registers</a></li>
42<li><a href="#Main%20configuration"><span class="todo TODO">TODO</span> Main configuration</a></li>
43<li><a href="#Agenda"><span class="todo TODO">TODO</span> Agenda</a></li>
44<li><a href="#Habits"><span class="todo TODO">TODO</span> Habits</a></li>
45<li><a href="#Capture"><span class="todo TODO">TODO</span> Capture</a></li>
46<li><a href="#Clocking"><span class="todo TODO">TODO</span> Clocking</a></li>
47<li><a href="#Notes%20taking"><span class="todo TODO">TODO</span> Notes taking</a></li>
48<li><a href="#Journaling"><span class="todo TODO">TODO</span> Journaling</a></li>
49<li><a href="#Litterate%20programming"><span class="todo TODO">TODO</span> Litterate programming</a></li>
50<li><a href="#Diary"><span class="todo TODO">TODO</span> Diary</a></li>
51<li><a href="#Miscellaneous"><span class="todo TODO">TODO</span> Miscellaneous</a></li>
52</ul>
53</li>
54<li><a href="#Triage">Triage</a>
55<ul>
56<li><a href="#~org-mode~%20Workflow"><span class="todo TODO">TODO</span> <code>org-mode</code> Workflow</a></li>
57<li><a href="#%3Dorg-mode%3D%20entry%20ordering"><span class="todo TODO">TODO</span> <code>org-mode</code> entry ordering</a></li>
58<li><a href="#Legacy">Legacy</a></li>
59<li><a href="#Foobar">Foobar</a></li>
60</ul>
61</li>
62<li><a href="#Configuration%20layout">Configuration layout</a></li>
63</ul>
64</div>
65</nav>
66
67<section id="outline-container-Introduction" class="outline-2">
68<h2 id="Introduction">Introduction</h2>
69<div class="outline-text-2" id="text-Introduction">
70<p>
71I am not sure exactly when, but overtime, my life grew in complexity, and I decide along
72the way to use <a href="org_mode.html">org-mode</a> to help me with that. Even though <a href="org_mode.html">org-mode</a> could be considered as
73an implementation detail of my workflow, it’s really hard to separate from it. I’ll try my
74best to describe the workflow without mentionning <a href="org_mode.html">org-mode</a> and from there, we’ll see how
75my setup does it.
76</p>
77
78<p>
79Many of the ideas presented here derive from the <a href="https://gettingthingsdone.com/what-is-gtd/">Getting Things Done</a> methodology, but
80adapted and expanded to meet my personal needs. With that workflow, I am trying to spint
81my time more wisely and focus on what’s important to me. This is not a silver bullet
82though, and is an always in progress work.
83</p>
84</div>
85</section>
86<section id="outline-container-Goals" class="outline-2">
87<h2 id="Goals">Goals</h2>
88<div class="outline-text-2" id="text-Goals">
89<p>
90I really liked the goal list from “<a href="http://cachestocaches.com/2020/3/my-organized-life/">A Guide to My
91Organizational Workflow: How to Streamline Your Life</a>”, so I kinda took <b>heavy</b> inspiration
92from it.
93</p>
94
95<p>
96In order to determine how effective an organizational system is, it is important to have
97clearly enumerated aims: what is the system being designed to enable? Your goals may be
98different, but my system is structured to prioritize the following:
99</p>
100
101<ul class="org-ul">
102<li>Ensure that I never miss a task, <i>meeting</i>, or deadline (<i>note: the meeting part is
103tricky</i>);</li>
104<li>Manage tasks that I need to work on;</li>
105<li>Manage tasks that I share with and have assigned to others (<i>when I depend on it</i>);</li>
106<li>Keep a permanent record of my work and research, and in a way that can be easily shared
107with others if necessary;</li>
108<li>Collect my thoughts, writings, and half-baked ideas;</li>
109<li>Ensure that my local progress—on a daily or monthly basis—is in service of my long-term
110goals (this is kinda hard to do);</li>
111<li>Finally: ensure I enjoy my life and make time for fun and friends! My system is meant to
112organize, not confine.</li>
113</ul>
114
115<blockquote>
116<p>
117One key idea to keep in mind as well is that an organizational system should be
118flexible. Life is complicated and unexpected items—both good and bad—can appear at a
119moment’s notice. While it may not be immediately clear where a new task or project
120belongs, one should always have the ability to add new files or lists to which the new
121items can be added. Additionally, I do occasionally discover a file or project will
122outgrow the way I decided to structure it at its inception. My tools support fast and easy
123refactoring when necessary so that I can restructure a project to reflect my updated
124understanding of the problems it was intended to solve. The greater the effort required to
125reorganize when necessary, the less frequently it will happen and the effectiveness of the
126organizational system will decline. The tools I will describe later on work well for me,
127but you should find those tools that work best for you.
128</p>
129</blockquote>
130
131<p>
132The above is the reason why I am using <a href="org_mode.html">org-mode</a> : it’s plain text, it’s flexible — you can
133add data (properties, tags, …), you can define your behavior (using <code>emacs-lisp</code> code).
134</p>
135</div>
136</section>
137<section id="outline-container-My%20workflow" class="outline-2">
138<h2 id="My%20workflow">My workflow</h2>
139<div class="outline-text-2" id="text-My%20workflow">
140<p>
141As described earlier, my workflow is loosely based on some concept from the <a href="https://gettingthingsdone.com/what-is-gtd/">Getting Things
142Done</a> methodology, but adapted and expanded to meet my personal needs. One of the core
143principles of the <i>Getting Things Done</i> methodology, is that “the mind is for thinking,
144not remembering”. Everything that may need to be accomplished—or that you might someday
145want to accomplish—should be written down.
146</p>
147
148<p>
149I also really like the <i>boxes</i> comparison from <a href="http://www.howardism.org/Technical/Emacs/getting-boxes-done.html">Getting Boxes Done</a>.
150</p>
151
152<blockquote>
153<p>
154On my workbench is a box. Actually, a few boxes. Each uncompleted project goes into a box…
155no lost screws. Sure unpacking and packing between each session is a hassle, but since the
156best projects take a few weekends, boxes are required.
157</p>
158
159<p>
160Non-workbench-oriented projects go into mental boxes, and I’m thinking of my self
161organization in terms of boxes. Thoughts don’t go into physical boxes, but in my world,
162they live in text files. […]
163</p>
164</blockquote>
165
166<p>
167My usual workflow for solving a problem involves breaking up a high-level objective into
168increasingly smaller goals until I can make progress towards accomplishing it. <a href="org_mode.html">org-mode</a>
169allows me to collect my tasks and projects when needed and build the lists. As I work, I
170log my progress, my thoughts, where I get stuck, temporary images or figures, intermediate
171results, how to reproduce my work, and so on. Note taking is a critical part of my
172thinking process, so notes and their parent tasks should coexist.
173</p>
174
175<p>
176If we talk in files now, this looks like the following:
177</p>
178
179<dl class="org-dl">
180<dt>archive</dt><dd>this is where I archive my project and notes if they don’t make sense
181anymore.</dd>
182<dt>notes</dt><dd>this is my <i>notes boxes</i>, where I keep my journal entry (monthly files),
183private and public notes (the one published <a href="https://vincent.demeester.fr/articles/">here</a>).</dd>
184<dt>projects</dt><dd>this is my <i>project boxes</i>, where I keep a set of files containing tasks I
185need to do for specific projects (related to my work, or personal). Each file represent
186a project and should be <i>archived</i> at some point, except a bunch of special ones
187(<code>inbox</code>, <code>incubate</code>, <code>next</code>, …)
188<ul class="org-ul">
189<li><code>inbox</code> is where I capture ideas, task and links that I need to review later.</li>
190<li><code>incubate</code> is where ideas (captured previously in inbox) are going while <i>waiting</i> for
191being picked up.</li>
192<li><code>next</code> is where I put small task that can be quickly done, like a doing a quick
193backup, etc. My <i>wish</i> is to have the least amount of tasks in <code>next</code>.</li>
194</ul></dd>
195</dl>
196</div>
197</section>
198<section id="outline-container-Implementation" class="outline-2">
199<h2 id="Implementation">Implementation</h2>
200<div class="outline-text-2" id="text-Implementation">
201</div>
202<div id="outline-container-Constants%20and%20registers" class="outline-3">
203<h3 id="Constants%20and%20registers">Constants and registers</h3>
204<div class="outline-text-3" id="text-Constants%20and%20registers">
205<p>
206Let’s dig into the files and folders I’ll use across the rest of my configuration.
207</p>
208
209<div class="org-src-container">
210<pre class="src src-emacs-lisp">(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-directory</span> <span class="org-string">"~/desktop/org/"</span>
211 <span class="org-doc">"org-mode directory, where most of the org-mode file lives"</span>)
212(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-projects-dir</span> (expand-file-name <span class="org-string">"projects"</span> org-directory)
213 <span class="org-doc">"Primary tasks directory."</span>)
214(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-notes-dir</span> (expand-file-name <span class="org-string">"notes"</span> org-directory)
215 <span class="org-doc">"Directory of shareable, technical notes."</span>)
216(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-archive-dir</span> (expand-file-name <span class="org-string">"archive"</span> org-directory)
217 <span class="org-doc">"Directory of shareable, technical notes."</span>)
218(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-completed-dir</span> (expand-file-name <span class="org-string">"projects"</span> org-archive-dir)
219 <span class="org-doc">"Directory of completed project files."</span>)
220(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-inbox-file</span> (expand-file-name <span class="org-string">"inbox.org"</span> org-projects-dir)
221 <span class="org-doc">"New stuff collected in this file."</span>)
222(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-next-file</span> (expand-file-name <span class="org-string">"next.org"</span> org-projects-dir)
223 <span class="org-doc">"Todo *next* collected in this file."</span>)
224(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-incubate-file</span> (expand-file-name <span class="org-string">"incubate.org"</span> org-projects-dir)
225 <span class="org-doc">"Ideas simmering on back burner."</span>)
226(<span class="org-keyword">defconst</span> <span class="org-variable-name">org-babel-library-file</span> (expand-file-name <span class="org-string">"org_library_of_babel.org"</span> org-notes-dir)
227 <span class="org-doc">"Org babel library."</span>)
228</pre>
229</div>
230
231<p>
232I’m also using <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Registers.html">registers</a> to quickly access some files, mainly the <code>inbox</code> file, the
233<code>incubate</code> file and the <code>next</code> file.
234</p>
235
236<div class="org-src-container">
237<pre class="src src-emacs-lisp">(set-register ?i `(file . ,org-inbox-file))
238(set-register ?I `(file . ,org-incubate-file))
239(set-register ?n `(file . ,org-next-file))
240</pre>
241</div>
242</div>
243</div>
244
245<div id="outline-container-Main%20configuration" class="outline-3">
246<h3 id="Main%20configuration"><span class="todo TODO">TODO</span> Main configuration</h3>
247<div class="outline-text-3" id="text-Main%20configuration">
248<div class="org-src-container">
249<pre class="src src-emacs-lisp" id="org1217068">(use-package org
250 <span class="org-builtin">:ensure</span> org-plus-contrib <span class="org-comment-delimiter">;; </span><span class="org-comment">load from the package instead of internal</span>
251 <span class="org-builtin">:mode</span> ((<span class="org-string">"\\.org$"</span> . org-mode)
252 (<span class="org-string">"\\.org.draft$"</span> . org-mode))
253 <span class="org-builtin">:commands</span> (org-agenda org-capture)
254 <span class="org-builtin">:bind</span> ((<span class="org-string">"C-c o l"</span> . org-store-link)
255 (<span class="org-string">"C-c o r r"</span> . org-refile)
256 (<span class="org-string">"C-c o a a"</span> . org-agenda)
257 (<span class="org-string">"C-c o a r"</span> . my/reload-org-agenda-files)
258 (<span class="org-string">"C-c o s"</span> . org-sort)
259 (<span class="org-string">"<f12>"</span> . org-agenda)
260 (<span class="org-string">"C-c o c"</span> . org-capture)
261 <span class="org-comment-delimiter">;; </span><span class="org-comment">Skeletons</span>
262 (<span class="org-string">"C-c o i p"</span> . vde/org-project)
263 (<span class="org-string">"C-c o i n"</span> . vde/org-www-post))
264 <span class="org-builtin">:config</span>
265 (<span class="org-keyword">define-skeleton</span> <span class="org-function-name">vde/org-project</span>
266 <span class="org-doc">"new org-mode project"</span>
267 nil
268 > <span class="org-string">"#+TITLE: "</span> (skeleton-read <span class="org-string">"Title: "</span>) \n
269 > <span class="org-string">"#+FILETAGS: "</span> (skeleton-read <span class="org-string">"Tags: "</span>) \n
270 > _ \n
271 > <span class="org-string">"#+BEGIN: clocktable :scope file :maxlevel 2 :emphasize nil :link t"</span> \n
272 > <span class="org-string">"#+END:"</span> \n
273 > _ \n)
274 (<span class="org-keyword">define-skeleton</span> <span class="org-function-name">vde/org-www-post</span>
275 <span class="org-doc">"new www post"</span>
276 nil
277 > <span class="org-string">"#+title: "</span> (skeleton-read <span class="org-string">"Title: "</span>) \n
278 > <span class="org-string">"#+date: "</span> (format-time-string <span class="org-string">"<%Y-%M-%d %a>"</span>) \n
279 > <span class="org-string">"#+filetags: "</span> (skeleton-read <span class="org-string">"Tags: "</span>) \n
280 > <span class="org-string">"#+setupfile: ../templates/post.org"</span> \n
281 > _ \n
282 > <span class="org-string">"* Introduction"</span>
283 )
284 <span class="org-comment-delimiter">;; </span><span class="org-comment">Org Babel configurations</span>
285 (<span class="org-keyword">when</span> (file-exists-p org-babel-library-file)
286 (org-babel-lob-ingest org-babel-library-file))
287 (<span class="org-keyword">defun</span> <span class="org-function-name">my/org-agenda-files</span> ()
288 `(,org-projects-dir
289 <span class="org-string">"~/src/home/tasks.org"</span>
290 <span class="org-string">"~/src/www/tasks.org"</span>))
291 (<span class="org-keyword">defun</span> <span class="org-function-name">my/reload-org-agenda-files</span> ()
292 (<span class="org-keyword">interactive</span>)
293 (<span class="org-keyword">setq</span> org-agenda-files (my/org-agenda-files)))
294 (<span class="org-keyword">setq</span> org-agenda-files (my/org-agenda-files)
295 org-agenda-file-regexp <span class="org-string">"^[a-zA-Z0-9-_]+.org$"</span>
296 org-use-speed-commands t
297 org-special-ctrl-a/e t
298 org-special-ctrl-k t
299 org-todo-keywords '((sequence <span class="org-string">"TODO(t)"</span> <span class="org-string">"NEXT(n)"</span> <span class="org-string">"STARTED(s)"</span> <span class="org-string">"|"</span> <span class="org-string">"DONE(d!)"</span> <span class="org-string">"CANCELED(c@/!)"</span>)
300 (sequence <span class="org-string">"WAITING(w@/!)"</span> <span class="org-string">"SOMEDAY(s)"</span> <span class="org-string">"|"</span> <span class="org-string">"CANCELED(c@/!)"</span>)
301 (sequence <span class="org-string">"IDEA(i)"</span> <span class="org-string">"|"</span> <span class="org-string">"CANCELED(c@/!)"</span>))
302 org-todo-state-tags-triggers '((<span class="org-string">"CANCELLED"</span> (<span class="org-string">"CANCELLED"</span> . t))
303 (<span class="org-string">"WAITING"</span> (<span class="org-string">"WAITING"</span> . t))
304 (done (<span class="org-string">"WAITING"</span>))
305 (<span class="org-string">"TODO"</span> (<span class="org-string">"WAITING"</span>) (<span class="org-string">"CANCELLED"</span>))
306 (<span class="org-string">"NEXT"</span> (<span class="org-string">"WAITING"</span>) (<span class="org-string">"CANCELLED"</span>))
307 (<span class="org-string">"DONE"</span> (<span class="org-string">"WAITING"</span>) (<span class="org-string">"CANCELLED"</span>)))
308 org-use-tag-inheritance t
309 org-tag-alist '((<span class="org-string">"linux"</span>) (<span class="org-string">"nixos"</span>) (<span class="org-string">"emacs"</span>) (<span class="org-string">"org"</span>)
310 (<span class="org-string">"openshift"</span>) (<span class="org-string">"redhat"</span>) (<span class="org-string">"tektoncd"</span>) (<span class="org-string">"kubernetes"</span>) (<span class="org-string">"knative"</span> ) (<span class="org-string">"docker"</span>)
311 (<span class="org-string">"docs"</span>) (<span class="org-string">"code"</span>) (<span class="org-string">"review"</span>)
312 (<span class="org-builtin">:startgroup</span> . nil)
313 (<span class="org-string">"#home"</span> . ?h) (<span class="org-string">"#work"</span> . ?w) (<span class="org-string">"#errand"</span> . ?e) (<span class="org-string">"#health"</span> . ?l)
314 (<span class="org-builtin">:endgroup</span> . nil)
315 (<span class="org-builtin">:startgroup</span> . nil)
316 (<span class="org-string">"#link"</span> . ?i) (<span class="org-string">"#read"</span> . ?r) (<span class="org-string">"#project"</span> . ?p)
317 (<span class="org-builtin">:endgroup</span> . nil))
318 org-log-done 'time
319 org-log-redeadline 'time
320 org-log-reschedule 'time
321 org-log-into-drawer t
322 org-enforce-todo-dependencies t
323 org-refile-targets (append '((org-inbox-file <span class="org-builtin">:level</span> . 0))
324 (<span class="org-keyword">->></span>
325 (directory-files org-projects-dir nil <span class="org-string">".org"</span>)
326 (<span class="org-keyword">--remove</span> (s-starts-with? <span class="org-string">"."</span> it))
327 (<span class="org-keyword">--map</span> (format <span class="org-string">"%s/%s"</span> org-projects-dir it))
328 (<span class="org-keyword">--map</span> `(,it <span class="org-builtin">:level</span> . 1))))
329 org-refile-use-outline-path 'file
330 org-refile-allow-creating-parent-nodes 'confirm
331 org-outline-path-complete-in-steps nil
332 org-columns-default-format <span class="org-string">"%80ITEM(Task) %TODO %3PRIORITY %10Effort(Effort){:} %10CLOCKSUM"</span>
333 org-fontify-whole-heading-line t
334 org-pretty-entities t
335 org-ellipsis <span class="org-string">" ⤵"</span>
336 org-archive-location (concat org-completed-dir <span class="org-string">"/%s::datetree/"</span>)
337 org-use-property-inheritance t
338 org-priority 67
339 org-priority-faces '((?A . <span class="org-string">"#ff2600"</span>)
340 (?B . <span class="org-string">"#ff5900"</span>)
341 (?C . <span class="org-string">"#ff9200"</span>)
342 (?D . <span class="org-string">"#747474"</span>))
343 org-global-properties (<span class="org-keyword">quote</span> ((<span class="org-string">"EFFORT_ALL"</span> . <span class="org-string">"0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00"</span>)
344 (<span class="org-string">"STYLE_ALL"</span> . <span class="org-string">"habit"</span>)))
345 org-blank-before-new-entry '((heading . t)
346 (plain-list-item . nil))
347 org-insert-heading-respect-content t
348 org-yank-adjusted-subtrees t
349 org-image-actual-width nil
350 org-startup-with-inline-images nil
351 org-list-demote-modify-bullet '((<span class="org-string">"+"</span> . <span class="org-string">"-"</span>) (<span class="org-string">"-"</span> . <span class="org-string">"+"</span>))
352 org-catch-invisible-edits 'error
353 <span class="org-comment-delimiter">;; </span><span class="org-comment">Put theses into a minor mode</span>
354 org-indent-indentation-per-level 1
355 org-cycle-separator-lines 1
356 org-adapt-indentation nil
357 org-hide-leading-stars t
358 org-hide-emphasis-markers t)
359 (setcar (nthcdr 4 org-emphasis-regexp-components) 10)
360 <span class="org-builtin">:hook</span> (org-mode . vde/org-mode-hook))
361
362(<span class="org-keyword">defun</span> <span class="org-function-name">vde/org-mode-hook</span> ()
363 <span class="org-doc">"Org-mode hook"</span>
364 (<span class="org-keyword">setq</span> show-trailing-whitespace t)
365 (<span class="org-keyword">when</span> (not (eq major-mode 'org-agenda-mode))
366 (<span class="org-keyword">setq</span> fill-column 90)
367 (auto-revert-mode)
368 (auto-fill-mode)
369 (org-indent-mode)
370 (set (make-local-variable 'company-backends)
371 '(company-emoji company-capf company-files company-dabbrev))
372 (company-mode 1)
373 (add-hook 'before-save-hook #'save-and-update-includes nil 'make-it-local)))
374</pre>
375</div>
376</div>
377</div>
378
379<div id="outline-container-Agenda" class="outline-3">
380<h3 id="Agenda"><span class="todo TODO">TODO</span> Agenda</h3>
381<div class="outline-text-3" id="text-Agenda">
382<div class="org-src-container">
383<pre class="src src-emacs-lisp">(use-package org-agenda
384 <span class="org-builtin">:after</span> org
385 <span class="org-builtin">:commands</span> (org-agenda)
386 <span class="org-builtin">:bind</span> ((<span class="org-string">"C-c o a a"</span> . org-agenda)
387 (<span class="org-string">"<f12>"</span> . org-agenda)
388 (<span class="org-string">"C-c o r a"</span> . org-agenda-refile))
389 <span class="org-builtin">:config</span>
390 (use-package org-super-agenda
391 <span class="org-builtin">:config</span> (org-super-agenda-mode))
392 (<span class="org-keyword">setq</span> org-agenda-span 'day
393 org-agenda-start-on-weekday 1
394 org-agenda-include-diary t
395 org-agenda-window-setup 'current-window
396 org-agenda-skip-scheduled-if-done nil
397 org-agenda-compact-blocks t
398 org-agenda-sticky t
399 org-super-agenda-header-separator <span class="org-string">""</span>
400 org-agenda-custom-commands
401 `((<span class="org-string">"w"</span> <span class="org-string">"Agenda"</span>
402 ((agenda <span class="org-string">""</span>)
403 (tags-todo <span class="org-string">"-goals-incubate-inbox+TODO=\"STARTED\""</span>
404 ((org-agenda-overriding-header <span class="org-string">"Ongoing"</span>)))
405 (tags-todo <span class="org-string">"-goals-incubate-inbox+TODO=\"NEXT\""</span>
406 ((org-agenda-overriding-header <span class="org-string">"Next"</span>))))
407 ((org-super-agenda-groups
408 '((<span class="org-builtin">:name</span> <span class="org-string">"Important"</span> <span class="org-builtin">:priority</span> <span class="org-string">"A"</span>)
409 (<span class="org-builtin">:name</span> <span class="org-string">"Scheduled"</span> <span class="org-builtin">:time-grid</span> t)
410 (<span class="org-builtin">:habit</span> t))))
411 (org-agenda-list)))))
412</pre>
413</div>
414
415<div class="org-src-container">
416<pre class="src src-emacs-lisp">(use-package org-gcal
417 <span class="org-builtin">:after</span> (org)
418 <span class="org-builtin">:commands</span> (org-gcal-fetch)
419 <span class="org-builtin">:config</span>
420 (<span class="org-keyword">require</span> '<span class="org-constant">netrc</span>)
421 (<span class="org-keyword">setq-default</span> org-gcal-remove-cancelled-events t)
422 (<span class="org-keyword">defun</span> <span class="org-function-name">get-authinfo</span> (host port)
423 (<span class="org-keyword">let*</span> ((netrc (netrc-parse (expand-file-name <span class="org-string">"~/.authinfo.gpg"</span>)))
424 (hostentry (netrc-machine netrc host port port)))
425 (<span class="org-keyword">when</span> hostentry (netrc-get hostentry <span class="org-string">"password"</span>))))
426
427 (<span class="org-keyword">setq</span> org-gcal-client-id <span class="org-string">"959564825992-kvc7ofe9640cpc8ibgjqqgpi15e89nkn.apps.googleusercontent.com"</span>
428 org-gcal-client-secret (get-authinfo <span class="org-string">"gcal.api"</span> <span class="org-string">"9999"</span>)
429 org-gcal-file-alist '((<span class="org-string">"vdemeest@redhat.com"</span> . <span class="org-string">"~/desktop/org/projects/schedule.org"</span>))))
430</pre>
431</div>
432</div>
433</div>
434
435<div id="outline-container-Habits" class="outline-3">
436<h3 id="Habits"><span class="todo TODO">TODO</span> Habits</h3>
437<div class="outline-text-3" id="text-Habits">
438<div class="org-src-container">
439<pre class="src src-emacs-lisp" id="org50f107a">(use-package org-habit
440 <span class="org-builtin">:after</span> (org)
441 <span class="org-builtin">:config</span>
442 (<span class="org-keyword">setq</span> org-habit-show-habits-only-for-today nil
443 org-habit-graph-column 80))
444</pre>
445</div>
446</div>
447</div>
448
449<div id="outline-container-Capture" class="outline-3">
450<h3 id="Capture"><span class="todo TODO">TODO</span> Capture</h3>
451<div class="outline-text-3" id="text-Capture">
452<div class="org-src-container">
453<pre class="src src-emacs-lisp" id="orgcb0471a">(use-package org-capture
454 <span class="org-builtin">:after</span> org
455 <span class="org-builtin">:commands</span> (org-capture)
456 <span class="org-builtin">:config</span>
457
458 (add-to-list 'org-capture-templates
459 `(<span class="org-string">"l"</span> <span class="org-string">"Link"</span> entry
460 (file ,org-inbox-file)
461 <span class="org-string">"* %a\n%U\n%?\n%i"</span>
462 <span class="org-builtin">:empty-lines</span> 1))
463
464 (add-to-list 'org-capture-templates
465 `(<span class="org-string">"t"</span> <span class="org-string">"Tasks"</span>))
466 (add-to-list 'org-capture-templates
467 `(<span class="org-string">"tt"</span> <span class="org-string">"New task"</span> entry
468 (file ,org-inbox-file)
469 <span class="org-string">"* %?\n:PROPERTIES:\n:CREATED:%U\n:END:\n\n%i\n\nFrom: %a"</span>
470 <span class="org-builtin">:empty-lines</span> 1))
471 (add-to-list 'org-capture-templates
472 `(<span class="org-string">"tr"</span> <span class="org-string">"PR Review"</span> entry
473 (file ,org-inbox-file)
474 <span class="org-string">"* TODO review gh:%^{issue} :review:\n:PROPERTIES:\n:CREATED:%U\n:END:\n\n%i\n%?\nFrom: %a"</span>
475 <span class="org-builtin">:empty-lines</span> 1))
476
477 <span class="org-comment-delimiter">;; </span><span class="org-comment">(add-to-list 'org-capture-templates</span>
478 <span class="org-comment-delimiter">;; </span><span class="org-comment">`("m" "Meeting notes" entry</span>
479 <span class="org-comment-delimiter">;; </span><span class="org-comment">(file+datetree ,org-meeting-notes-file)</span>
480 <span class="org-comment-delimiter">;; </span><span class="org-comment">(file ,(concat user-emacs-directory "/etc/orgmode/meeting-notes.org"))))</span>
481
482 (add-to-list 'org-capture-templates
483 `(<span class="org-string">"w"</span> <span class="org-string">"Writing"</span>))
484 <span class="org-builtin">:bind</span> ((<span class="org-string">"C-c o c"</span> . org-capture)))
485
486
487(use-package org-capture-pop-frame
488 <span class="org-builtin">:after</span> org)
489</pre>
490</div>
491</div>
492
493<div id="outline-container-Templates" class="outline-4">
494<h4 id="Templates"><span class="todo TODO">TODO</span> Templates</h4>
495<div class="outline-text-4" id="text-Templates">
496<div class="org-src-container">
497<pre class="src src-org"><span class="org-org-level-1">* %^{meeting}</span>
498
499- <span class="org-org-list-dt">Actions ::</span>
500<span class="org-org-meta-line"> #+BEGIN: columnview :id local :match "/TODO|DONE" :format "%ITEM(What) %TAGS(Who) %DEADLINE(When) %TODO(State)"</span>
501 <span class="org-org-table">| What | Who | When | State |</span>
502 <span class="org-org-table">|-------------------------------------+------------+------+-------|</span>
503<span class="org-org-meta-line"> #+END:</span>
504- <span class="org-org-list-dt">Decisions ::</span>
505<span class="org-org-meta-line"> #+BEGIN: columnview :id local :match "Decision" :format "%ITEM(Decisions)"</span>
506 <span class="org-org-table">| Decisions |</span>
507 <span class="org-org-table">|-----------|</span>
508<span class="org-org-meta-line"> #+END:</span>
509
510<span class="org-org-level-2">** Present at meeting</span>
511 - <span class="org-org-checkbox">[ ]</span>
512<span class="org-org-level-2">** Agenda</span>
513- %?
514<span class="org-org-level-2">** Notes</span>
515- Use <span class="org-org-verbatim">=:Decision:=</span> tag for decision
516- Use entry with <span class="org-org-verbatim">=TODO=</span> (or <span class="org-org-verbatim">=DONE=</span>) for actions
517</pre>
518</div>
519
520<div class="org-src-container">
521<pre class="src src-org"><span class="org-org-level-2">** %(format-time-string org-journal-time-format) weekly review </span><span class="org-org-level-2"><span class="org-org-tag">:weekly:review:</span></span>
522%U
523
524- <span class="org-org-checkbox">[ ]</span> review <span class="org-org-link"><a href="file:../projects/inbox.org">~inbox.org~</a></span>
525 Clean the file by either
526 - refiling it to <span class="org-org-code">~incubate.org~</span>
527 - removing it / archiving it
528- <span class="org-org-checkbox">[ ]</span> review <span class="org-org-link"><a href="file:../projects/incubate.org">~incubate.org~</a></span>
529 - Is something worth becoming a project
530 - Is something not worth thinking about anymore ?
531- <span class="org-org-checkbox">[ ]</span> empty mail inbox (and create task if needed)
532 - <span class="org-org-checkbox">[ ]</span> work
533 - <span class="org-org-checkbox">[ ]</span> perso
534- <span class="org-org-checkbox">[ ]</span> Review next week <span class="org-org-code">~F12 n w f~</span>
535- <span class="org-org-checkbox">[ ]</span> review <span class="org-org-code">~org-mode~</span> workflow
536 - <span class="org-bold">*what works, what doesn't ?*</span>
537 - <span class="org-bold">*is there task / stuck projects ?*</span>
538 - <span class="org-bold">*enhancement possible ?*</span>
539- <span class="org-org-checkbox">[ ]</span> export previous agenda (somewhere)
540</pre>
541</div>
542</div>
543</div>
544
545<div id="outline-container-Protocol" class="outline-4">
546<h4 id="Protocol"><span class="todo TODO">TODO</span> Protocol</h4>
547<div class="outline-text-4" id="text-Protocol">
548<div class="org-src-container">
549<pre class="src src-emacs-lisp" id="orga6ddf01">(use-package org-protocol
550 <span class="org-builtin">:after</span> org)
551</pre>
552</div>
553</div>
554</div>
555</div>
556
557<div id="outline-container-Clocking" class="outline-3">
558<h3 id="Clocking"><span class="todo TODO">TODO</span> Clocking</h3>
559<div class="outline-text-3" id="text-Clocking">
560<div class="org-src-container">
561<pre class="src src-emacs-lisp" id="orgc9627f9">(use-package org-clock
562 <span class="org-builtin">:after</span> org
563 <span class="org-builtin">:commands</span> (org-clock-in org-clock-out org-clock-goto)
564 <span class="org-builtin">:config</span>
565 <span class="org-comment-delimiter">;; </span><span class="org-comment">Setup hooks for clock persistance</span>
566 (org-clock-persistence-insinuate)
567 (<span class="org-keyword">setq</span> org-clock-clocked-in-display nil
568 <span class="org-comment-delimiter">;; </span><span class="org-comment">Show lot of clocking history so it's easy to pick items off the C-F11 list</span>
569 org-clock-history-length 23
570 <span class="org-comment-delimiter">;; </span><span class="org-comment">Change tasks to STARTED when clocking in</span>
571 org-clock-in-switch-to-state 'vde/clock-in-to-started
572 <span class="org-comment-delimiter">;; </span><span class="org-comment">Clock out when moving task to a done state</span>
573 org-clock-out-when-done t
574 <span class="org-comment-delimiter">;; </span><span class="org-comment">Save the running clock and all clock history when exiting Emacs, load it on startup</span>
575 org-clock-persist t)
576 (use-package find-lisp)
577 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/is-project-p</span> ()
578 <span class="org-doc">"Any task with a todo keyword subtask"</span>
579 (<span class="org-keyword">save-restriction</span>
580 (widen)
581 (<span class="org-keyword">let</span> ((has-subtask)
582 (subtree-end (<span class="org-keyword">save-excursion</span> (org-end-of-subtree t)))
583 (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
584 (<span class="org-keyword">save-excursion</span>
585 (forward-line 1)
586 (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (not has-subtask)
587 (< (point) subtree-end)
588 (re-search-forward <span class="org-string">"^</span><span class="org-string"><span class="org-warning">\</span></span><span class="org-string">*+ "</span> subtree-end t))
589 (<span class="org-keyword">when</span> (member (org-get-todo-state) org-todo-keywords-1)
590 (<span class="org-keyword">setq</span> has-subtask t))))
591 (<span class="org-keyword">and</span> is-a-task has-subtask))))
592
593 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/is-project-subtree-p</span> ()
594 <span class="org-doc">"Any task with a todo keyword that is in a project subtree.</span>
595<span class="org-doc">Callers of this function already widen the buffer view."</span>
596 (<span class="org-keyword">let</span> ((task (<span class="org-keyword">save-excursion</span> (org-back-to-heading 'invisible-ok)
597 (point))))
598 (<span class="org-keyword">save-excursion</span>
599 (vde/find-project-task)
600 (<span class="org-keyword">if</span> (equal (point) task)
601 nil
602 t))))
603
604 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/find-project-task</span> ()
605 <span class="org-doc">"Move point to the parent (project) task if any"</span>
606 (<span class="org-keyword">save-restriction</span>
607 (widen)
608 (<span class="org-keyword">let</span> ((parent-task (<span class="org-keyword">save-excursion</span> (org-back-to-heading 'invisible-ok) (point))))
609 (<span class="org-keyword">while</span> (org-up-heading-safe)
610 (<span class="org-keyword">when</span> (member (nth 2 (org-heading-components)) org-todo-keywords-1)
611 (<span class="org-keyword">setq</span> parent-task (point))))
612 (goto-char parent-task)
613 parent-task)))
614
615 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/is-task-p</span> ()
616 <span class="org-doc">"Any task with a todo keyword and no subtask"</span>
617 (<span class="org-keyword">save-restriction</span>
618 (widen)
619 (<span class="org-keyword">let</span> ((has-subtask)
620 (subtree-end (<span class="org-keyword">save-excursion</span> (org-end-of-subtree t)))
621 (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
622 (<span class="org-keyword">save-excursion</span>
623 (forward-line 1)
624 (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (not has-subtask)
625 (< (point) subtree-end)
626 (re-search-forward <span class="org-string">"^</span><span class="org-string"><span class="org-warning">\</span></span><span class="org-string">*+ "</span> subtree-end t))
627 (<span class="org-keyword">when</span> (member (org-get-todo-state) org-todo-keywords-1)
628 (<span class="org-keyword">setq</span> has-subtask t))))
629 (<span class="org-keyword">and</span> is-a-task (not has-subtask)))))
630
631 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/is-subproject-p</span> ()
632 <span class="org-doc">"Any task which is a subtask of another project"</span>
633 (<span class="org-keyword">let</span> ((is-subproject)
634 (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1)))
635 (<span class="org-keyword">save-excursion</span>
636 (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (not is-subproject) (org-up-heading-safe))
637 (<span class="org-keyword">when</span> (member (nth 2 (org-heading-components)) org-todo-keywords-1)
638 (<span class="org-keyword">setq</span> is-subproject t))))
639 (<span class="org-keyword">and</span> is-a-task is-subproject)))
640
641 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/clock-in-to-started</span> (kw)
642 <span class="org-doc">"Switch a task from TODO to STARTED when clocking in.</span>
643<span class="org-doc">Skips capture tasks, projects, and subprojects.</span>
644<span class="org-doc">Switch projects and subprojects from STARTED back to TODO"</span>
645 (<span class="org-keyword">when</span> (not (<span class="org-keyword">and</span> (boundp 'org-capture-mode) org-capture-mode))
646 (<span class="org-keyword">cond</span>
647 ((<span class="org-keyword">and</span> (member (org-get-todo-state) (list <span class="org-string">"TODO"</span>))
648 (vde/is-task-p))
649 <span class="org-string">"STARTED"</span>)
650 ((<span class="org-keyword">and</span> (member (org-get-todo-state) (list <span class="org-string">"STARTED"</span>))
651 (vde/is-project-p))
652 <span class="org-string">"TODO"</span>))))
653 <span class="org-builtin">:bind</span> ((<span class="org-string">"<f11>"</span> . org-clock-goto)))
654</pre>
655</div>
656</div>
657</div>
658
659<div id="outline-container-Notes%20taking" class="outline-3">
660<h3 id="Notes%20taking"><span class="todo TODO">TODO</span> Notes taking</h3>
661<div class="outline-text-3" id="text-Notes%20taking">
662<div class="org-src-container">
663<pre class="src src-emacs-lisp">(use-package org-roam
664 <span class="org-builtin">:commands</span> (org-roam org-roam-build-cache)
665 <span class="org-comment-delimiter">;; </span><span class="org-comment">:hook</span>
666 <span class="org-comment-delimiter">;; </span><span class="org-comment">(after-init . org-roam-mode)</span>
667 <span class="org-builtin">:bind</span> ((<span class="org-string">"C-c o n"</span> . org-roam-mode)
668 <span class="org-builtin">:map</span> org-roam-mode-map
669 ((<span class="org-string">"C-c n l"</span> . org-roam)
670 (<span class="org-string">"C-c n f"</span> . org-roam-find-file)
671 (<span class="org-string">"C-c n g"</span> . org-roam-show-graph)
672 (<span class="org-string">"C-c n b"</span> . org-roam-switch-to-buffer))
673 <span class="org-builtin">:map</span> org-mode-map
674 ((<span class="org-string">"C-c n i"</span> . org-roam-insert)))
675 <span class="org-builtin">:custom</span>
676 (org-roam-directory org-notes-dir)
677 <span class="org-builtin">:custom-face</span>
678 (org-roam-link ((t (<span class="org-builtin">:inherit</span> org-link <span class="org-builtin">:foreground</span> <span class="org-string">"#C991E1"</span>))))
679 <span class="org-builtin">:config</span>
680 (<span class="org-keyword">require</span> '<span class="org-constant">org-roam-protocol</span>)
681 <span class="org-comment-delimiter">;; </span><span class="org-comment">(defun jethro/conditional-hugo-enable ()</span>
682 <span class="org-comment-delimiter">;; </span><span class="org-comment">(save-excursion</span>
683 <span class="org-comment-delimiter">;; </span><span class="org-comment">(if (cdr (assoc "SETUPFILE" (org-roam--extract-global-props '("SETUPFILE"))))</span>
684 <span class="org-comment-delimiter">;; </span><span class="org-comment">(org-hugo-auto-export-mode +1)</span>
685 <span class="org-comment-delimiter">;; </span><span class="org-comment">(org-hugo-auto-export-mode -1))))</span>
686 <span class="org-comment-delimiter">;;</span>
687 <span class="org-comment-delimiter">;; </span><span class="org-comment">(with-eval-after-load 'org</span>
688 <span class="org-comment-delimiter">;; </span><span class="org-comment">(defun my/org-roam--backlinks-list (file)</span>
689 <span class="org-comment-delimiter">;; </span><span class="org-comment">(if (org-roam--org-roam-file-p file)</span>
690 <span class="org-comment-delimiter">;; </span><span class="org-comment">(--reduce-from</span>
691 <span class="org-comment-delimiter">;; </span><span class="org-comment">(concat acc (format "- [[file:%s][%s]]\n"</span>
692 <span class="org-comment-delimiter">;; </span><span class="org-comment">(file-relative-name (car it) org-roam-directory)</span>
693 <span class="org-comment-delimiter">;; </span><span class="org-comment">(org-roam--get-title-or-slug (car it))))</span>
694 <span class="org-comment-delimiter">;; </span><span class="org-comment">"" (org-roam-sql [:select [file-from]</span>
695 <span class="org-comment-delimiter">;; </span><span class="org-comment">:from file-links</span>
696 <span class="org-comment-delimiter">;; </span><span class="org-comment">:where (= file-to $s1)</span>
697 <span class="org-comment-delimiter">;; </span><span class="org-comment">:and file-from :not :like $s2] file "%private%"))</span>
698 <span class="org-comment-delimiter">;; </span><span class="org-comment">""))</span>
699 <span class="org-comment-delimiter">;; </span><span class="org-comment">(defun my/org-export-preprocessor (_backend)</span>
700 <span class="org-comment-delimiter">;; </span><span class="org-comment">(let ((links (my/org-roam--backlinks-list (buffer-file-name))))</span>
701 <span class="org-comment-delimiter">;; </span><span class="org-comment">(unless (string= links "")</span>
702 <span class="org-comment-delimiter">;; </span><span class="org-comment">(save-excursion</span>
703 <span class="org-comment-delimiter">;; </span><span class="org-comment">(goto-char (point-max))</span>
704 <span class="org-comment-delimiter">;; </span><span class="org-comment">(insert (concat "\n* Backlinks\n" links))))))</span>
705 <span class="org-comment-delimiter">;; </span><span class="org-comment">(add-hook 'org-export-before-processing-hook 'my/org-export-preprocessor))</span>
706 (<span class="org-keyword">setq</span> org-roam-capture-ref-templates
707 '((<span class="org-string">"r"</span> <span class="org-string">"ref"</span> plain #'org-roam-capture--get-point <span class="org-string">""</span>
708 <span class="org-builtin">:file-name</span> <span class="org-string">"${slug}"</span>
709 <span class="org-builtin">:head</span> <span class="org-string">"#+title: ${title}\n#+roam_key: ${ref}\n\n${body}"</span>
710 <span class="org-builtin">:unnarrowed</span> t)))
711 (<span class="org-keyword">setq</span> org-roam-capture-templates
712 '((<span class="org-string">"d"</span> <span class="org-string">"default"</span> plain (<span class="org-keyword">function</span> org-roam--capture-get-point)
713 <span class="org-string">"%?"</span>
714 <span class="org-builtin">:file-name</span> <span class="org-string">"${slug}"</span>
715#+TITLE: ${title}\n<span class="org-string">"</span>
716<span class="org-string"> :unnarrowed t)</span>
717<span class="org-string"> ("</span>p<span class="org-string">" "</span>private<span class="org-string">" plain (function org-roam--capture-get-point)</span>
718<span class="org-string"> "</span>%?<span class="org-string">"</span>
719<span class="org-string"> :file-name "</span>${slug}.private<span class="org-string">"</span>
720<span class="org-string"> :head "</span>#+TITLE: ${title}\n<span class="org-string">"</span>
721<span class="org-string"> :unnarrowed t))))</span>
722</pre>
723</div>
724</div>
725
726<div id="outline-container-Rebuild%20configurations%20files" class="outline-4">
727<h4 id="Rebuild%20configurations%20files"><span class="todo TODO">TODO</span> Rebuild configurations files</h4>
728<div class="outline-text-4" id="text-Rebuild%20configurations%20files">
729<p>
730Most of my configuration files are store in my <a href="https://git.sr.ht/~vdemeester/home"><code>home</code> monorepo</a>. That said, most of those
731are actually automatically generated from litterate <code>org-mode</code> files coming from my notes.
732</p>
733
734<p>
735I want to be able to update those all in one go. Even better, I would like to make sure I
736update those before killing emacs.
737</p>
738
739<div class="org-src-container">
740<pre class="src src-emacs-lisp">(use-package org
741 <span class="org-builtin">:defer</span> 2
742 <span class="org-builtin">:config</span>
743 (<span class="org-keyword">defun</span> <span class="org-function-name">vde/tangle-all-notes</span> ()
744 <span class="org-doc">"Produce files from my notes folder.</span>
745<span class="org-doc">This function will attempt to tangle all org files from `</span><span class="org-doc"><span class="org-constant">org-notes-dir</span></span><span class="org-doc">'. The</span>
746<span class="org-doc">assumption is that those will generate configuration file (in `</span><span class="org-doc"><span class="org-constant">~/src/home</span></span><span class="org-doc">'),</span>
747<span class="org-doc">and thus keeping the configuration source up-to-date"</span>
748 (mapc (<span class="org-keyword">lambda</span> (x) (org-babel-tangle-file x))
749 (<span class="org-keyword">ignore-errors</span>
750 (directory-files-recursively org-notes-dir <span class="org-string">"</span><span class="org-string"><span class="org-warning">\</span></span><span class="org-string">.org$"</span>)))))
751</pre>
752</div>
753</div>
754</div>
755</div>
756
757<div id="outline-container-Journaling" class="outline-3">
758<h3 id="Journaling"><span class="todo TODO">TODO</span> Journaling</h3>
759<div class="outline-text-3" id="text-Journaling">
760<div class="org-src-container">
761<pre class="src src-emacs-lisp">(use-package org-journal
762 <span class="org-builtin">:commands</span> (org-journal-new-entry org-capture)
763 <span class="org-builtin">:after</span> (org-capture)
764 <span class="org-builtin">:bind</span>
765 ((<span class="org-string">"C-c n j"</span> . org-journal-new-entry)
766 (<span class="org-string">"C-c o j"</span> . org-journal-new-entry))
767 <span class="org-builtin">:init</span>
768 (<span class="org-keyword">defun</span> <span class="org-function-name">org-journal-find-location</span> ()
769 <span class="org-doc">"Open today's journal, but inhibiting inserting the heading, leaving that to the template."</span>
770 (org-journal-new-entry t)
771 <span class="org-comment-delimiter">;; </span><span class="org-comment">position pont on the journal's top-level heading so that org-capture will add the new entry as a child.</span>
772 (goto-char (point-max)))
773 (add-to-list 'org-capture-templates
774 `(<span class="org-string">"j"</span> <span class="org-string">"Journal"</span>))
775 (add-to-list 'org-capture-templates
776 `(<span class="org-string">"jj"</span> <span class="org-string">"Journal entry"</span> entry (<span class="org-keyword">function</span> org-journal-find-location)
777 <span class="org-string">"** %(format-time-string org-journal-time-format)%^{Title}\n%i%?"</span>
778 <span class="org-builtin">:empty-lines</span> 1 <span class="org-builtin">:clock-in</span> t <span class="org-builtin">:clock-resume</span> t))
779 (add-to-list 'org-capture-templates
780 `(<span class="org-string">"je"</span> <span class="org-string">"Weekly review"</span> entry (<span class="org-keyword">function</span> org-journal-find-location)
781 (file ,(expand-file-name <span class="org-string">"etc/orgmode/weekly.org"</span> user-emacs-directory))
782 <span class="org-builtin">:empty-lines</span> 1 <span class="org-builtin">:clock-in</span> t <span class="org-builtin">:clock-resume</span> t))
783 <span class="org-builtin">:custom</span>
784 (org-journal-date-prefix <span class="org-string">"* "</span>)
785 (org-journal-file-header <span class="org-string">"#+TITLE: %Y-v%m Journal\n\n"</span>)
786 (org-journal-file-format <span class="org-string">"%Y-%m.private.org"</span>)
787 (org-journal-file-type 'monthly)
788 (org-journal-dir org-notes-dir)
789 (org-journal-date-format <span class="org-string">"%A, %d %B %Y"</span>)
790 (org-journal-enable-agenda-integration nil))
791</pre>
792</div>
793</div>
794</div>
795
796<div id="outline-container-Litterate%20programming" class="outline-3">
797<h3 id="Litterate%20programming"><span class="todo TODO">TODO</span> Litterate programming</h3>
798<div class="outline-text-3" id="text-Litterate%20programming">
799<p>
800Although not really in my “organization” workflow, this is related to <a href="org_mode.html">org-mode</a> so this
801leaves here for now.
802</p>
803
804<div class="org-src-container">
805<pre class="src src-emacs-lisp" id="orgbc5acde">(use-package org-src
806 <span class="org-builtin">:after</span> (org)
807 <span class="org-builtin">:config</span>
808 (<span class="org-keyword">setq</span> org-src-fontify-natively t
809 org-src-tab-acts-natively t
810 org-src-window-setup 'current-window
811 org-edit-src-content-indentation 0))
812</pre>
813</div>
814</div>
815
816<div id="outline-container-Links" class="outline-4">
817<h4 id="Links"><span class="todo TODO">TODO</span> Links</h4>
818<div class="outline-text-4" id="text-Links">
819<div class="org-src-container">
820<pre class="src src-emacs-lisp"><span class="org-comment-delimiter">;; </span><span class="org-comment">my personal</span>
821(use-package ol-github
822 <span class="org-builtin">:after</span> (org))
823(use-package ol-gitlab
824 <span class="org-builtin">:after</span> (org))
825(use-package ol-ripgrep
826 <span class="org-builtin">:after</span> (org))
827(use-package ol-rg
828 <span class="org-builtin">:disabled</span>
829 <span class="org-builtin">:after</span> (org))
830(use-package ol-grep
831 <span class="org-builtin">:after</span> (org))
832
833<span class="org-comment-delimiter">;; </span><span class="org-comment">built-in org-mode</span>
834(use-package ol-eshell
835 <span class="org-builtin">:after</span> (org))
836(use-package ol-git-link
837 <span class="org-builtin">:defer</span> 2
838 <span class="org-builtin">:after</span> (org))
839(use-package ol-gnus
840 <span class="org-builtin">:defer</span> 2
841 <span class="org-builtin">:after</span> (org))
842(use-package ol-irc
843 <span class="org-builtin">:defer</span> 2
844 <span class="org-builtin">:after</span> (org))
845(use-package ol-info
846 <span class="org-builtin">:defer</span> 2
847 <span class="org-builtin">:after</span> (org))
848(use-package ol-man
849 <span class="org-builtin">:defer</span> 2
850 <span class="org-builtin">:after</span> (org))
851(use-package ol-notmuch
852 <span class="org-builtin">:defer</span> 2
853 <span class="org-builtin">:after</span> (org))
854</pre>
855</div>
856
857<div class="org-src-container">
858<pre class="src src-emacs-lisp">(use-package orgit
859 <span class="org-builtin">:after</span> org)
860</pre>
861</div>
862</div>
863</div>
864
865<div id="outline-container-Babel" class="outline-4">
866<h4 id="Babel"><span class="todo TODO">TODO</span> Babel</h4>
867<div class="outline-text-4" id="text-Babel">
868<div class="org-src-container">
869<pre class="src src-emacs-lisp">(use-package ob-async
870 <span class="org-builtin">:after</span> org
871 <span class="org-builtin">:commands</span> (ob-async-org-babel-execute-src-block))
872(use-package ob-css
873 <span class="org-builtin">:after</span> org
874 <span class="org-builtin">:commands</span> (org-babel-execute:css))
875(use-package ob-dot
876 <span class="org-builtin">:after</span> org
877 <span class="org-builtin">:commands</span> (org-babel-execute:dot))
878(use-package ob-ditaa
879 <span class="org-builtin">:after</span> org
880 <span class="org-builtin">:commands</span> (org-babel-execute:ditaa)
881 <span class="org-builtin">:config</span>
882 (<span class="org-keyword">setq</span> org-ditaa-jar-path <span class="org-string">"/home/vincent/.nix-profile/lib/ditaa.jar"</span>))
883(use-package ob-emacs-lisp
884 <span class="org-builtin">:after</span> org
885 <span class="org-builtin">:commands</span> (org-babel-execute:emacs-lisp org-babel-execute:elisp))
886(use-package ob-go
887 <span class="org-builtin">:after</span> org
888 <span class="org-builtin">:commands</span> (org-babel-execute:go))
889(use-package ob-gnuplot
890 <span class="org-builtin">:after</span> org
891 <span class="org-builtin">:commands</span> (org-babel-execute:gnuplot))
892(use-package ob-http
893 <span class="org-builtin">:after</span> org
894 <span class="org-builtin">:commands</span> (org-babel-execute:http))
895(use-package ob-js
896 <span class="org-builtin">:after</span> org
897 <span class="org-builtin">:commands</span> (org-babel-execute:js))
898(use-package ob-latex
899 <span class="org-builtin">:after</span> org
900 <span class="org-builtin">:commands</span> (org-babel-execute:latex))
901(use-package ob-python
902 <span class="org-builtin">:after</span> org
903 <span class="org-builtin">:commands</span> (org-babel-execute:python))
904(use-package ob-shell
905 <span class="org-builtin">:after</span> org
906 <span class="org-builtin">:commands</span> (org-babel-execute:ash
907 org-babel-execute:bash
908 org-babel-execute:csh
909 org-babel-execute:dash
910 org-babel-execute:fish
911 org-babel-execute:ksh
912 org-babel-execute:mksh
913 org-babel-execute:posh
914 org-babel-execute:sh
915 org-babel-execute:shell
916 org-babel-execute:zsh))
917(use-package ob-doc-makefile
918 <span class="org-builtin">:after</span> org
919 <span class="org-builtin">:commands</span> (org-babel-execute:makefile))
920</pre>
921</div>
922</div>
923</div>
924</div>
925
926<div id="outline-container-Diary" class="outline-3">
927<h3 id="Diary"><span class="todo TODO">TODO</span> Diary</h3>
928<div class="outline-text-3" id="text-Diary">
929<div class="org-src-container">
930<pre class="src src-emacs-lisp" id="org3ea304c">(use-package diary-lib
931 <span class="org-builtin">:after</span> (org)
932 <span class="org-builtin">:config</span>
933 (<span class="org-keyword">setq</span> diary-entry-marker <span class="org-string">"diary"</span>)
934 (<span class="org-keyword">setq</span> diary-show-holidays-flag t)
935 (<span class="org-keyword">setq</span> diary-header-line-flag nil)
936 (<span class="org-keyword">setq</span> diary-mail-days 3)
937 (<span class="org-keyword">setq</span> diary-number-of-entries 3)
938 (<span class="org-keyword">setq</span> diary-comment-start <span class="org-string">";"</span>)
939 (<span class="org-keyword">setq</span> diary-comment-end <span class="org-string">""</span>)
940 (<span class="org-keyword">setq</span> diary-date-forms
941 '((day <span class="org-string">"/"</span> month <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">/0-9]"</span>)
942 (day <span class="org-string">"/"</span> month <span class="org-string">"/"</span> year <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">0-9]"</span>)
943 (day <span class="org-string">" *"</span> monthname <span class="org-string">" *"</span> year <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">0-9]"</span>)
944 (monthname <span class="org-string">" *"</span> day <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">,0-9]"</span>)
945 (monthname <span class="org-string">" *"</span> day <span class="org-string">", *"</span> year <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">0-9]"</span>)
946 (year <span class="org-string">"[-/]"</span> month <span class="org-string">"[-/]"</span> day <span class="org-string">"[</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string">0-9]"</span>)
947 (dayname <span class="org-string">"\\W"</span>))))
948</pre>
949</div>
950</div>
951</div>
952
953<div id="outline-container-Miscellaneous" class="outline-3">
954<h3 id="Miscellaneous"><span class="todo TODO">TODO</span> Miscellaneous</h3>
955<div class="outline-text-3" id="text-Miscellaneous">
956<div class="org-src-container">
957<pre class="src src-emacs-lisp">(use-package org-id
958 <span class="org-builtin">:after</span> org
959 <span class="org-builtin">:commands</span> contrib/org-id-headlines
960 <span class="org-builtin">:config</span>
961 (<span class="org-keyword">setq</span> org-id-link-to-org-use-id
962 'create-if-interactive-and-no-custom-id)
963
964 (<span class="org-keyword">defun</span> <span class="org-function-name">contrib/org-get-id</span> (<span class="org-builtin">&optional</span> pom create prefix)
965 <span class="org-doc">"Get the CUSTOM_ID property of the entry at point-or-marker</span>
966<span class="org-doc">POM. If POM is nil, refer to the entry at point. If the entry</span>
967<span class="org-doc">does not have an CUSTOM_ID, the function returns nil. However,</span>
968<span class="org-doc">when CREATE is non nil, create a CUSTOM_ID if none is present</span>
969<span class="org-doc">already. PREFIX will be passed through to `</span><span class="org-doc"><span class="org-constant">org-id-new</span></span><span class="org-doc">'. In any</span>
970<span class="org-doc">case, the CUSTOM_ID of the entry is returned."</span>
971 (<span class="org-keyword">org-with-point-at</span> pom
972 (<span class="org-keyword">let</span> ((id (org-entry-get nil <span class="org-string">"CUSTOM_ID"</span>)))
973 (<span class="org-keyword">cond</span>
974 ((<span class="org-keyword">and</span> id (stringp id) (string-match <span class="org-string">"\\S-"</span> id))
975 id)
976 (create
977 (<span class="org-keyword">setq</span> id (org-id-new (concat prefix <span class="org-string">"h"</span>)))
978 (org-entry-put pom <span class="org-string">"CUSTOM_ID"</span> id)
979 (org-id-add-location id (buffer-file-name (buffer-base-buffer)))
980 id)))))
981
982 (<span class="org-keyword">defun</span> <span class="org-function-name">contrib/org-id-headlines</span> ()
983 <span class="org-doc">"Add CUSTOM_ID properties to all headlines in the current</span>
984<span class="org-doc">file which do not already have one."</span>
985 (<span class="org-keyword">interactive</span>)
986 (org-map-entries
987 (funcall 'contrib/org-get-id (point) 'create))))
988</pre>
989</div>
990
991<div class="org-src-container">
992<pre class="src src-emacs-lisp">(use-package org-crypt
993 <span class="org-builtin">:after</span> (org)
994 <span class="org-builtin">:config</span>
995 (org-crypt-use-before-save-magic)
996 (<span class="org-keyword">setq</span> org-tags-exclude-from-inheritance '(<span class="org-string">"crypt"</span>)))
997</pre>
998</div>
999
1000<div class="org-src-container">
1001<pre class="src src-emacs-lisp">(use-package org-tempo
1002 <span class="org-builtin">:after</span> (org))
1003</pre>
1004</div>
1005
1006<div class="org-src-container">
1007<pre class="src src-emacs-lisp">(use-package org-attach
1008 <span class="org-builtin">:after</span> org
1009 <span class="org-builtin">:config</span>
1010 (<span class="org-keyword">setq</span> org-link-abbrev-alist '((<span class="org-string">"att"</span> . org-attach-expand-link))))
1011</pre>
1012</div>
1013
1014<div class="org-src-container">
1015<pre class="src src-emacs-lisp">(use-package ox-publish
1016 <span class="org-builtin">:after</span> org
1017 <span class="org-builtin">:commands</span> (org-publish org-publish-all org-publish-project org-publish-current-project org-publish-current-file)
1018 <span class="org-builtin">:config</span>
1019 (<span class="org-keyword">setq</span> org-html-coding-system 'utf-8-unix))
1020</pre>
1021</div>
1022</div>
1023</div>
1024</section>
1025<section id="outline-container-Triage" class="outline-2">
1026<h2 id="Triage">Triage</h2>
1027<div class="outline-text-2" id="text-Triage">
1028<pre class="example">
1029# -*- mode: org; eval: (add-hook 'after-save-hook (lambda () (org-babel-tangle)) nil t) -*-
1030</pre>
1031
1032<ul class="org-ul">
1033<li>Remove slack from phone (or personal tablets)
1034With working remote, it’s even more important to draw the line</li>
1035
1036<li>Have timeboxed « slacking off » session
1037by slacking off, I mean twitter, reddit, …</li>
1038
1039<li>Take a medium to long walk during the day
1040Better in the middle, by medium to long I mean at least an hour walk</li>
1041
1042<li>It’s ok to set smaller pomodoro from time to time, 25 is the “longest” limit, not the
1043lowest one</li>
1044
1045<li>Apply it as much as you can (i.e. not interruption)</li>
1046
1047<li>Pomodoro technique</li>
1048<li><a href="https://thelifelifebalance.com/pros-and-cons-of-pomodoro/">https://thelifelifebalance.com/pros-and-cons-of-pomodoro/</a></li>
1049
1050<li>Phone / tablet
1051<ul class="org-ul">
1052<li>Remove most apps</li>
1053<li>Remove most notifications</li>
1054<li>Grayscale most of the time</li>
1055</ul></li>
1056</ul>
1057</div>
1058
1059<div id="outline-container-~org-mode~%20Workflow" class="outline-3">
1060<h3 id="~org-mode~%20Workflow"><span class="todo TODO">TODO</span> <code>org-mode</code> Workflow</h3>
1061<div class="outline-text-3" id="text-~org-mode~%20Workflow">
1062<div class='drawer logbook'>
1063<h6>Logbook</h6>
1064nil</div>
1065
1066<p>
1067This goes into <code>emacs.org</code>.
1068</p>
1069
1070<p>
1071Ideas:
1072</p>
1073<ul class="org-ul">
1074<li>filter org file(s) with a tags & co
1075<ul class="org-ul">
1076<li>use case: <code>journal.org</code> with weekly-review only, worklog only, …</li>
1077<li>subject (go, emacs, …) to build article or gather thoughts, idea, reviews, …</li>
1078</ul></li>
1079<li>Heavy usage of <code>org-protocol</code> to list reviews done, and more quickly capture content
1080from the browser</li>
1081</ul>
1082
1083<p>
1084The rest is deprecated 😅
1085</p>
1086<div class='drawer deprecated'>
1087<h6>Deprecated</h6>
1088<p>
1089Let’s try to think about “TODOs” management in the light of <code>todoist</code> <b>and</b> <code>org-mode</code>.
1090Reasons to use <code>todoist</code> are :
1091</p>
1092
1093<ul class="org-ul">
1094<li>write task/todo items on-the-go on any devices — this is way harder with <code>org-mode</code>.</li>
1095<li>list and mark task/todo as done from anywhere</li>
1096<li>share some list with others (mainly @houbeb)</li>
1097<li>have some nice stats</li>
1098</ul>
1099
1100<p>
1101Reasons to use <code>org-mode</code> are :
1102</p>
1103
1104<ul class="org-ul">
1105<li>integrated with my editor, agenda, notes, mail, …</li>
1106<li>easily customizable (dashboard, agenda, search, filters, org-links, …)</li>
1107<li>all text, data are own by me, replicated</li>
1108<li>clock possibility (related to work, so adding some context to it)</li>
1109</ul>
1110
1111<p>
1112One idea is to be able to synchronize <code>org-mode</code> and <code>todoist</code>
1113</p>
1114
1115<ul class="org-ul">
1116<li>only part of the <code>org-mode</code> todo list (i.e. a <code>todoist.org</code> file)</li>
1117<li>mainly (and at first) used <code>todoist -> org-mode</code></li>
1118<li>syncing two ways the means adding a new element that doesn’t have the required
1119properties in the <code>todoist.org</code> file</li>
1120</ul>
1121</div>
1122</div>
1123
1124<div id="outline-container-Do%20some%20writeup%20about%20org-mode%20usage%20and%20workflow" class="outline-4">
1125<h4 id="Do%20some%20writeup%20about%20org-mode%20usage%20and%20workflow"><span class="todo TODO">TODO</span> Do some writeup about org-mode usage and workflow</h4>
1126<div class="outline-text-4" id="text-Do%20some%20writeup%20about%20org-mode%20usage%20and%20workflow">
1127<p>
1128A bit à-la-howardisms
1129</p>
1130<ul class="org-ul">
1131<li><a href="http://www.howardism.org/Technical/Emacs/getting-boxes-done.html">Getting Boxes Done</a></li>
1132<li><a href="http://www.howardism.org/Technical/Emacs/getting-more-boxes-done.html">Getting Boxes Done, the Code</a></li>
1133<li><a href="http://www.howardism.org/Technical/Emacs/getting-even-more-boxes-done.html">Refiling Trees to Files</a></li>
1134</ul>
1135</div>
1136</div>
1137
1138<div id="outline-container-Add%20a%20reviewing%20org-protocol%20capture%20template" class="outline-4">
1139<h4 id="Add%20a%20reviewing%20org-protocol%20capture%20template"><span class="todo TODO">TODO</span> Add a reviewing org-protocol capture template</h4>
1140<div class="outline-text-4" id="text-Add%20a%20reviewing%20org-protocol%20capture%20template">
1141<div class='drawer properties'>
1142<h6>Properties</h6>
1143<p>
1144:CREATED:<span class="timestamp-wrapper"><span class="timestamp">[2020-04-16 Thu 10:57]</span></span>
1145</p>
1146</div>
1147
1148<p>
1149That way I track more easily the long review by just using a bookmark.
1150</p>
1151</div>
1152</div>
1153
1154<div id="outline-container-Better%20worklog%20entries" class="outline-4">
1155<h4 id="Better%20worklog%20entries"><span class="todo TODO">TODO</span> Better worklog entries</h4>
1156<div class="outline-text-4" id="text-Better%20worklog%20entries">
1157<ul class="org-ul">
1158<li>Substree in a datetime tree (see if it is possible)</li>
1159<li>In a separate journal ?</li>
1160</ul>
1161</div>
1162</div>
1163
1164<div id="outline-container-Fix%20meetings%20notes" class="outline-4">
1165<h4 id="Fix%20meetings%20notes"><span class="todo TODO">TODO</span> Fix meetings notes</h4>
1166<div class="outline-text-4" id="text-Fix%20meetings%20notes">
1167<div class='drawer properties'>
1168<h6>Properties</h6>
1169<p>
1170:CREATED:<span class="timestamp-wrapper"><span class="timestamp">[2020-04-02 Thu 17:41]</span></span>
1171</p>
1172</div>
1173
1174<ol class="org-ol">
1175<li>Capture template doesn’t work</li>
1176<li>Can we make Actions and Decision per “tree” ? (if not, meeting notes might be one file
1177for each meeting)</li>
1178<li>Ideas
1179<ul class="org-ul">
1180<li>New tree</li>
1181<li>Better template</li>
1182<li>Stay in the capture while it’s happening</li>
1183</ul></li>
1184</ol>
1185
1186<p>
1187From: <a href="file:///home/vincent/desktop/org/projects/meetings.html#orgda0fa95">Decisions</a>
1188</p>
1189</div>
1190</div>
1191<div id="outline-container-quick%20writing%20org-mode%20template" class="outline-4">
1192<h4 id="quick%20writing%20org-mode%20template"><span class="todo TODO">TODO</span> quick writing org-mode template</h4>
1193<div class="outline-text-4" id="text-quick%20writing%20org-mode%20template">
1194<div class='drawer logbook'>
1195<h6>Logbook</h6>
1196nil</div>
1197<div class='drawer properties'>
1198<h6>Properties</h6>
1199<p>
1200:CREATED:<span class="timestamp-wrapper"><span class="timestamp">[2019-12-20 Fri 10:09]</span></span>
1201</p>
1202</div>
1203
1204<ul class="org-ul">
1205<li><del>blog post (in <code>src/github.com/vdemeester/blog</code>)</del></li>
1206<li><del>technical post (in <code>desktop/org/technical</code>)</del></li>
1207
1208<li id="Meeting notes"><code>meetings.org</code> in <code>~/desktop/org/projects</code>
1209See <a href="https://egli.dev/posts/using-org-mode-for-meeting-minutes/">Using org-mode for meeting minutes • egli.dev</a> for inspiration</li>
1210<li id="Better notes">Make it easier to take notes
1211See [[<a href="file:///home/vincent/desktop/org/projects/inbox.html">file:///home/vincent/desktop/org/projects/inbox.html</a>::*[[<a href="https://dpitt.me/blog/2020/03/zettelkasten/">https://dpitt.me/blog/2020/03/zettelkasten/</a>\][dpitt.me :: Using Emacs’s org-mode As Your Zettelkästen]\]][dpitt.me :: Using Emacs’s org-mode As Your Zettelkästen]]</li>
1212<li id="<code>src/www</code>"><ul class="org-ul">
1213<li>articles</li>
1214<li>posts</li>
1215</ul></li>
1216<li id="<code>src/home/docs</code>"><ul class="org-ul">
1217<li>for new docs ?</li>
1218</ul></li>
1219
1220<li>Read <a href="https://orgmode.org/manual/Template-elements.html#Template-elements">Template elements (The Org Manual)</a></li>
1221<li>rg:org-capture-template:/mnt/synodine/volumeUSB2/usbshare/src/github.com/vdemeester/configs
1222<ul class="org-ul">
1223<li><a href="/mnt/synodine/volumeUSB2/usbshare/src/github.com/vdemeester/configs/howardabrams.spacemacs.d/layers/ha-org/packages.el::master@{2020-04-02}::342">git:/mnt/synodine/volumeUSB2/usbshare/src/github.com/vdemeester/configs/howardabrams.spacemacs.d/layers/ha-org/packages.el::master@{2020-04-02}::342</a></li>
1224</ul></li>
1225</ul>
1226
1227<p>
1228^^ some of those could be <i>normal</i> template instead of <code>org-mode</code> capture templates
1229</p>
1230</div>
1231</div>
1232
1233<div id="outline-container-org-protocol%20support%20for%20more%20templates" class="outline-4">
1234<h4 id="org-protocol%20support%20for%20more%20templates"><span class="todo TODO">TODO</span> org-protocol support for more templates</h4>
1235<div class="outline-text-4" id="text-org-protocol%20support%20for%20more%20templates">
1236<ul class="org-ul">
1237<li>reviews, task, …</li>
1238<li><a href="https://github.com/abo-abo/orca">https://github.com/abo-abo/orca</a></li>
1239</ul>
1240</div>
1241</div>
1242</div>
1243
1244<div id="outline-container-%3Dorg-mode%3D%20entry%20ordering" class="outline-3">
1245<h3 id="%3Dorg-mode%3D%20entry%20ordering"><span class="todo TODO">TODO</span> <code>org-mode</code> entry ordering</h3>
1246<div class="outline-text-3" id="text-%3Dorg-mode%3D%20entry%20ordering">
1247<ul class="org-ul">
1248<li>By TODO keyword, then priority</li>
1249<li>Bind it to sthg (else than <code>^</code>)</li>
1250</ul>
1251</div>
1252</div>
1253<div id="outline-container-Legacy" class="outline-3">
1254<h3 id="Legacy">Legacy</h3>
1255<div class="outline-text-3" id="text-Legacy">
1256<div class="org-src-container">
1257<pre class="src src-emacs-lisp" id="orgfe09b2c">(use-package org
1258 <span class="org-builtin">:defer</span> t
1259 <span class="org-builtin">:config</span>
1260
1261 (<span class="org-keyword">defvar</span> <span class="org-variable-name">org-capture-templates</span> (list))
1262 (<span class="org-keyword">setq</span> org-protocol-default-template-key <span class="org-string">"l"</span>)
1263
1264 <span class="org-comment-delimiter">;; </span><span class="org-comment">images</span>
1265 (<span class="org-keyword">setq</span> org-image-actual-width nil
1266 org-startup-with-inline-images nil)
1267
1268 <span class="org-comment-delimiter">;; </span><span class="org-comment">Tasks (-> inbox)</span>
1269
1270 <span class="org-comment-delimiter">;; </span><span class="org-comment">Journal</span>
1271
1272 (add-to-list 'ispell-skip-region-alist '(<span class="org-string">":</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">PROPERTIES</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">LOGBOOK</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">:"</span> <span class="org-string">":END:"</span>))
1273 (add-to-list 'ispell-skip-region-alist '(<span class="org-string">"#\\+BEGIN_SRC"</span> <span class="org-string">"#\\+END_SRC"</span>))
1274 (add-to-list 'ispell-skip-region-alist '(<span class="org-string">"#\\+BEGIN_EXAMPLE"</span> <span class="org-string">"#\\+END_EXAMPLE"</span>))
1275
1276 <span class="org-comment-delimiter">;; </span><span class="org-comment">org-links</span>
1277 <span class="org-comment-delimiter">;; </span><span class="org-comment">from http://endlessparentheses.com/use-org-mode-links-for-absolutely-anything.html</span>
1278 (org-link-set-parameters <span class="org-string">"tag"</span>
1279 <span class="org-builtin">:follow</span> #'endless/follow-tag-link)
1280 (<span class="org-keyword">defun</span> <span class="org-function-name">endless/follow-tag-link</span> (tag)
1281 <span class="org-doc">"Display a list of TODO headlines with tag TAG.</span>
1282<span class="org-doc">With prefix argument, also display headlines without a TODO keyword."</span>
1283 (org-tags-view (null current-prefix-arg) tag))
1284
1285 (org-link-set-parameters
1286 <span class="org-string">"org"</span>
1287 <span class="org-builtin">:complete</span> (<span class="org-keyword">lambda</span> () (+org-link-read-file <span class="org-string">"org"</span> org-directory))
1288 <span class="org-builtin">:follow</span> (<span class="org-keyword">lambda</span> (link) (find-file (expand-file-name link org-directory)))
1289 <span class="org-builtin">:face</span> (<span class="org-keyword">lambda</span> (link)
1290 (<span class="org-keyword">if</span> (file-exists-p (expand-file-name link org-directory))
1291 'org-link
1292 'error)))
1293 (<span class="org-keyword">defun</span> <span class="org-function-name">+org-link-read-file</span> (key dir)
1294 (<span class="org-keyword">let</span> ((file (read-file-name (format <span class="org-string">"%s: "</span> (capitalize key)) dir)))
1295 (format <span class="org-string">"%s:%s"</span>
1296 key
1297 (file-relative-name file dir))))
1298 )
1299</pre>
1300</div>
1301</div>
1302</div>
1303
1304<div id="outline-container-Foobar" class="outline-3">
1305<h3 id="Foobar">Foobar</h3>
1306<div class="outline-text-3" id="text-Foobar">
1307<div class="org-src-container">
1308<pre class="src src-emacs-lisp" id="orgc6e23d4">(message <span class="org-string">"foo"</span>)
1309</pre>
1310</div>
1311
1312<div class="org-src-container">
1313<pre class="src src-emacs-lisp" id="orgcf470ba">(message <span class="org-string">"bar"</span>)
1314</pre>
1315</div>
1316
1317<div class="org-src-container">
1318<pre class="src src-emacs-lisp" id="org6356433"><span class="org-comment-delimiter">;; </span><span class="org-comment">Yo</span>
1319
1320<<foo>>
1321<<bar>>
1322</pre>
1323</div>
1324</div>
1325</div>
1326</section>
1327<section id="outline-container-Configuration%20layout" class="outline-2">
1328<h2 id="Configuration%20layout">Configuration layout</h2>
1329<div class="outline-text-2" id="text-Configuration%20layout">
1330<p>
1331Here we define the <code>config-org</code> file that gets generated by the source blocks in our Org
1332document. This is the file that actually gets loaded on startup. The placeholders in
1333angled brackets correspond to the <code>NAME</code> directives above the <code>SRC</code> blocks throughout this
1334document.
1335</p>
1336
1337<div class="org-src-container">
1338<pre class="src src-emacs-lisp"><span class="org-comment-delimiter">;;; </span><span class="org-comment">config-org.el --- -*- lexical-binding: t; -*-</span>
1339<span class="org-comment-delimiter">;;; </span><span class="org-comment">Commentary:</span>
1340<span class="org-comment-delimiter">;;; </span><span class="org-comment">Configuration of orgmode.</span>
1341<span class="org-comment-delimiter">;;; </span><span class="org-comment">Code:</span>
1342
1343(use-package s)
1344
1345<<constants-and-registers>>
1346<<main>>
1347<<agenda>>
1348<<capture>>
1349<<protocol>>
1350<<clock>>
1351<<habits>>
1352<<src>>
1353<<links>>
1354<<babel>>
1355<<notes>>
1356<<journaling>>
1357<<misc>>
1358<<diary>>
1359
1360<<legacy>>
1361
1362(<span class="org-keyword">provide</span> '<span class="org-constant">config-org</span>)
1363<span class="org-comment-delimiter">;;; </span><span class="org-comment">config-org.el ends here</span>
1364</pre>
1365</div>
1366</div>
1367</section>
1368</main>
1369<footer id="postamble" class="status">
1370<footer>
1371 <small><a href="/" rel="history">Index</a> • <a href="/sitemap.html">Sitemap</a> • <a href="https://dl.sbr.pm/">Files</a></small><br/>
1372 <small class='questions'>Questions, comments ? Please use my <a href="https://lists.sr.ht/~vdemeester/public-inbox">public inbox</a> by sending a plain-text email to <a href="mailto:~vdemeester/public-inbox@lists.sr.ht">~vdemeester/public-inbox@lists.sr.ht</a>.</small><br/>
1373 <small class='copyright'>
1374 Content and design by Vincent Demeester
1375 (<a rel='licence' href='http://creativecommons.org/licenses/by-nc-sa/3.0/'>Some rights reserved</a>)
1376 </small><br />
1377</footer>
1378</footer>
1379</body>
1380</html>