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 &ldquo;<a href="http://cachestocaches.com/2020/3/my-organized-life/">A Guide to My
  23Organizational Workflow: How to Streamline Your Life</a>&rdquo; 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&rsquo;s really hard to separate from it. I&rsquo;ll try my
  74best to describe the workflow without mentionning <a href="org_mode.html">org-mode</a> and from there, we&rsquo;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&rsquo;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 &ldquo;<a href="http://cachestocaches.com/2020/3/my-organized-life/">A Guide to My
  91Organizational Workflow: How to Streamline Your Life</a>&rdquo;, 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&rsquo;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&rsquo;s plain text, it&rsquo;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 &ldquo;the mind is for thinking,
 144not remembering&rdquo;. 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&rsquo;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&rsquo;s dig into the files and folders I&rsquo;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&rsquo;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">"&lt;f12&gt;"</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    &gt; <span class="org-string">"#+TITLE: "</span> (skeleton-read <span class="org-string">"Title: "</span>) \n
 269    &gt; <span class="org-string">"#+FILETAGS: "</span> (skeleton-read <span class="org-string">"Tags: "</span>) \n
 270    &gt; _ \n
 271    &gt; <span class="org-string">"#+BEGIN: clocktable :scope file :maxlevel 2 :emphasize nil :link t"</span> \n
 272    &gt; <span class="org-string">"#+END:"</span> \n
 273    &gt; _ \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    &gt; <span class="org-string">"#+title: "</span> (skeleton-read <span class="org-string">"Title: "</span>) \n
 278    &gt; <span class="org-string">"#+date: "</span> (format-time-string <span class="org-string">"&lt;%Y-%M-%d %a&gt;"</span>) \n
 279    &gt; <span class="org-string">"#+filetags: "</span> (skeleton-read <span class="org-string">"Tags: "</span>) \n
 280    &gt; <span class="org-string">"#+setupfile: ../templates/post.org"</span> \n
 281    &gt; _ \n
 282    &gt; <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">-&gt;&gt;</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">" &#10549;"</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">"&lt;f12&gt;"</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&#160;?
 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                      (&lt; (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                      (&lt; (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">"&lt;f11&gt;"</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 &ldquo;organization&rdquo; 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">&amp;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&rsquo;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&rsquo;s ok to set smaller pomodoro from time to time, 25 is the &ldquo;longest&rdquo; 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 &amp; 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&rsquo;s try to think about &ldquo;TODOs&rdquo; 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 -&gt; org-mode</code></li>
1118<li>syncing two ways the means adding a new element that doesn&rsquo;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&rsquo;t work</li>
1176<li>Can we make Actions and Decision per &ldquo;tree&rdquo; ? (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&rsquo;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&rsquo;s org-mode As Your Zettelkästen]\]][dpitt.me :: Using Emacs&rsquo;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 (-&gt; 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&lt;&lt;foo&gt;&gt;
1321&lt;&lt;bar&gt;&gt;
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&lt;&lt;constants-and-registers&gt;&gt;
1346&lt;&lt;main&gt;&gt;
1347&lt;&lt;agenda&gt;&gt;
1348&lt;&lt;capture&gt;&gt;
1349&lt;&lt;protocol&gt;&gt;
1350&lt;&lt;clock&gt;&gt;
1351&lt;&lt;habits&gt;&gt;
1352&lt;&lt;src&gt;&gt;
1353&lt;&lt;links&gt;&gt;
1354&lt;&lt;babel&gt;&gt;
1355&lt;&lt;notes&gt;&gt;
1356&lt;&lt;journaling&gt;&gt;
1357&lt;&lt;misc&gt;&gt;
1358&lt;&lt;diary&gt;&gt;
1359
1360&lt;&lt;legacy&gt;&gt;
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>