diff --git a/org/config/spacemacs.org b/org/config/spacemacs.org index 8c1b88b..9188fcc 100644 --- a/org/config/spacemacs.org +++ b/org/config/spacemacs.org @@ -5,6 +5,7 @@ #+HTML_HEAD_EXTRA: #+HTML_HEAD_EXTRA: #+HTML_HEAD_EXTRA: +#+PROPERTY: header-args: :mkdirp yes * Table of Contents :TOC:noexport: :PROPERTIES: @@ -103,7 +104,13 @@ - [[#org-files-exports][Org files exports]] - [[#custom-latex-formats][Custom LaTeX formats]] - [[#org-agenda][Org agenda]] - - [[#org-journal][Org journal]] + - [[#org-capture][Org capture]] + - [[#emails][Emails]] + - [[#journal][Journal]] + - [[#notes][Notes]] + - [[#protocol][Protocol]] + - [[#resources][Resources]] + - [[#youtube][YouTube]] - [[#org-projects][Org projects]] - [[#configuration-website][Configuration website]] - [[#linguistics-website][Linguistics website]] @@ -359,7 +366,6 @@ org-enable-github-support t org-enable-reveal-js-support t org-enable-sticky-header t - org-enable-org-journal-support t spaceline-org-clock-p t org-projectile-file "TODOs.org" org-download-image-dir "~/Pictures/org/" @@ -1275,6 +1281,7 @@ Then, I want a couple of requires: #+BEGIN_SRC emacs-lisp (require 'org-id) + (require 'org-protocol) (require 'package) (require 'ox-latex) (require 'ox-publish) @@ -2515,25 +2522,218 @@ (org-projectile-todo-files))) #+END_SRC -*** Org journal +*** Org capture :PROPERTIES: - :CUSTOM_ID: h-d679ae6c-3096-4933-8e06-9848ad35adb0 + :CUSTOM_ID: h-9a070bbb-5b57-4abd-9d61-51f2070eb47b :END: - I also occasionally use Org journal. All my files are stored in - =~/org/journal=, as set below: + Org-capture is an amazing feature of Org-mode which allows me to quickly + save links, resources, reminders and notes in a neatly organized org file. + With Spacemacs, an Org capture can be invoked with the shortcut ~SPC a o c~. + It will then ask which template I wish to use. Said templates are described + below: #+BEGIN_SRC emacs-lisp - (setq org-journal-dir "~/org/journal/") + (defvar org-capture-templates-location "~/org/capture/" + "Directory in which org-capture templates are stored.") + (setq + org-default-notes-file "~/org/notes.org" + org-capture-templates + '(("e" "Emails") + ("ew" "Write Email" entry + (file+headline org-default-notes-file "Emails") + (file ,(concat org-capture-templates-location "emails.orgcaptmpl"))) + ("j" "Journal" entry + (file+datetree "~/org/journal.org") + (file ,(concat org-capture-templates-location "journal.orgcaptmpl"))) + ("l" "Links") + ("ly" "YouTube" entry + (file+headline org-default-notes-file "YouTube") + (file ,(concat org-capture-templates-location "youtube.orgcaptmpl"))) + ;; ("L" "Protocol Link" entry + ;; (file+headline org-default-notes-file "Link") + ;; (file ,(concat org-capture-templates-location "protocol-link.orgcaptmpl"))) + ("L" "Protocol Link" entry + (file+headline org-default-notes-file "Link") + "* %^{Title}\n:PROPERTIES:\n:CAPTURED: %U\n:LINK: %:link\n:END:\n%?\n") + ("n" "Note" + entry (file+headline org-default-notes-file "Note") + (file ,(concat org-capture-templates-location "notes.orgcaptmpl"))) + ;; ("p" "Protocol" entry + ;; (file+headline org-default-notes-file "Link") + ;; (file ,(concat org-capture-templates-location "protocol.orgcaptmpl"))) + ("p" "Protocol" entry + (file+headline org-default-notes-file "Link") + "* %^{Title}\n:PROPERTIES:\n:CAPTURED: %U\n:LINK: %:link\n:END:\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n%?\n") + ("r" "Resources") + ("rc" "Conlanging" entry + (file+headline org-default-notes-file "Conlanging") + (file ,(concat org-capture-templates-location "resource.orgcaptmpl"))) + ("re" "Emacs" entry + (file+headline org-default-notes-file "Emacs") + (file ,(concat org-capture-templates-location "resource.orgcaptmpl"))) + ("ri" "Informatique général" entry + (file+headline org-default-notes-file "Informatique") + (file ,(concat org-capture-templates-location "resource.orgcaptmpl"))) + ("rl" "Linguistics" entry + (file+headline org-default-notes-file "Linguistics") + (file ,(concat org-capture-templates-location "resource.orgcaptmpl"))) + ("rw" "Worldbuilding" entry + (file+headline org-default-notes-file "Worldbuilding") + (file ,(concat org-capture-templates-location "resource.orgcaptmpl"))))) #+END_SRC - The default prefix for org journals is the following: - #+BEGIN_SRC emacs-lisp - (setq org-journal-date-prefix "#+TITLE: ") - #+END_SRC + You may notice a capture entry for my journal, and this is due to the fact I + do not use ~org-journal~ anymore: it was too overpowered for me, and I + prefer to keep it simple with a single file. And as you can see, and unlike + a lot of other Emacs configurations, the content of the template is not set + in the variable, but in external files which can be modified freely as + actual Org buffers instead of trying to get a proper one with loads of ~\n~ + characters and such. All these templates are declared below. - The timestamp will be set following the ISO 8601 format: - #+BEGIN_SRC emacs-lisp - (setq org-journal-file-format "%Y-%m-%d") - #+END_SRC +**** Emails + :PROPERTIES: + :CUSTOM_ID: h-9012599e-c143-4df0-b63c-7c60ddb4a081 + :END: + This is my template for a new Email: + #+BEGIN_SRC org :tangle ~/org/capture/email.orgcaptmpl + ,** TODO [#A] Write Email + :PROPERTIES: + :CAPTURED: %U + :END: + From: Lucien Cartier-Tilet + To: %^{Recipient} + Subject: %^{Object} + --text follows this line-- + %? + -- + Lucien “Phundrak” Cartier-Tilet + https://phundrak.com (Français) + https://en.phundrak.com (English) + + Sent from a Free and Open-Source Linux operating system with GNU/Emacs + #+END_SRC + + I use it in case my computer is not yet connected to the internet and I + need to already write the email so I can send it later. All I will need to + to afterwards will be to copy and paste my capture in a new message buffer + and send it once I am back online. This is exported to + =~/org/capture/email.orgcaptmpl=. + +**** Journal + :PROPERTIES: + :CUSTOM_ID: h-ab1b21af-e887-41a7-be7a-c08825d16339 + :END: + This template is quite simple: it creates a new entry with the current + timestamp as its title, a brief title of my choosing, and then I can write + whatever I wish to write. This is exported to + =~/org/capture/journal.orgcaptmpl=. + #+BEGIN_SRC org :tangle ~/org/capture/journal.orgcaptmpl + ,* %U %^{Title} + %? + #+END_SRC + +**** Notes + :PROPERTIES: + :CUSTOM_ID: h-2b5e7efc-4a9d-4a92-b75f-4ec75e2fb48d + :END: + This template is used for taking note about various subjects that can go + from conlanging to development. I wrote it so I can know from where this + capture was made and when, and it even supports text that was highlighted + in Emacs that will be inserted in a quote block. This is exported to + =~/org/capture/notes.orgcaptmpl=. + #+BEGIN_SRC org :tangle ~/org/capture/notes.orgcaptmpl + ,* Note + :PROPERTIES: + :CAPTURED: %U + :FROM: %f + :END: + Possible inspiration: + ,#+begin_quote + %i + ,#+end_quote + + %? + #+END_SRC + +**** Protocol + :PROPERTIES: + :CUSTOM_ID: h-6fa10246-26bf-4ab3-a3b0-1f58bc79350e + :END: + This capture is used when received through org-protocol, with the + Org-protocol Extension for Firefox. It allows me to save in a quote block + what I’ve highlighted, as well as the link of the webpage on which my saved + content was highlighted. This file is exported to + =~/org/capture/protocol.orgcaptmpl=. + #+BEGIN_SRC org :tangle ~/org/capture/protocol.orgcaptmpl + ,* TODO [#C] %^{Title} + :PROPERTIES: + :CAPTURED: %U + :LINK: %:link + :TITLE: %:(transform-square-brackets-to-round-ones \"%:description\") + :END: + ,#+begin_quote + %i + ,#+end_quote + + %? + #+END_SRC + + For the next + #+BEGIN_SRC emacs-lisp + (defun transform-square-brackets-to-round-ones (string-to-transform) + "Transforms [ into ( and ] into ), other chars left unchanged." + (concat + (mapcar #'(lambda (c) + (if (equal c ?[) + ?\( + (if (equal c ?]) + ?\) + c))) + string-to-transform))) + #+END_SRC + + #+BEGIN_SRC org :tangle ~/org/capture/protocol-link.orgcaptmpl + ,* TODO [#C] Link: %^{Title} + :PROPERTIES: + :CAPTURED: %U + :LINK: %:link + :TITLE: %(transform-square-brackets-to-round-ones \"%:description\") + :END: + %? + #+END_SRC + +**** Resources + :PROPERTIES: + :CUSTOM_ID: h-001eb681-1725-442d-91ef-b6a46c1784dc + :END: + This is the default template for resources, which generally are located on + the Internet. By default, I give them the lowest priority, because although + this is something for me to remember later, it is not by default important. + You can see in the properties I record when the capture happened, and what + the link is. The title of the capture is a summary of what this is, while + the body of the capture is a more detailed explanation of what I capture, + why, and how it could be useful to me. + #+BEGIN_SRC org :tangle ~/org/capture/resource.orgcaptmpl + ,* TODO [#C] %^{Title} + :PROPERTIES: + :CAPTURED: %U + :LINK: %^{Link} + :END: + %? + #+END_SRC + +**** YouTube + :PROPERTIES: + :CUSTOM_ID: h-4b962a95-47d9-4410-8365-7d09e19530eb + :END: + #+BEGIN_SRC org :tangle ~/org/capture/youtube.orgcaptmpl + ,* TODO [#C] %^{Title} + :PROPERTIES: + :CAPTURED: %U + :AUTHOR: %^{Author} + :LINK: %^{Link} + :END: + %? + #+END_SRC *** Org projects :PROPERTIES: @@ -2820,6 +3020,15 @@ "ofr" (lambda () (interactive) (find-file "~/README.org"))) #+END_SRC + I also want a quick access to my notes and my journal. + #+BEGIN_SRC emacs-lisp + (spacemacs/declare-prefix "ofj" "journal.org") + (spacemacs/declare-prefix "ofn" "notes.org") + (spacemacs/set-leader-keys + "ofj" (lambda () (interactive) (find-file "~/org/journal.org")) + "ofn" (lambda () (interactive) (find-file "~/org/notes.org"))) + #+END_SRC + *** Multiple cursors :PROPERTIES: :CUSTOM_ID: h-de40bea1-4301-4ad3-b3f1-c4c8ed029feb