Add blog section

- Add a ‘posts/index.org’ that just includes all of the posts and only exports
  headings tagged with ‘summary’.

- Add summaries to all posts.

- Rename posts to include the date and time in the file name.

- Add an RSS feed from the new ‘posts/index.org’

Unfortunately generating an RSS feed from the ‘index.org’ doesn't work, so this
experiment is at a dead end for now.
This commit is contained in:
Tom Willemse 2023-07-24 22:34:07 -07:00
parent e0fc47beb5
commit 839c53448b
11 changed files with 83 additions and 18 deletions

1
.gitignore vendored
View file

@ -1,7 +1,6 @@
/.cask /.cask
/public /public
/.org-timestamps /.org-timestamps
/posts/index.org*
# Added automatically by `eldev init'. # Added automatically by `eldev init'.
/.eldev /.eldev

View file

@ -3,6 +3,7 @@
#+STARTUP: showall #+STARTUP: showall
#+FILETAGS: wdocker docker docker-compose #+FILETAGS: wdocker docker docker-compose
#+OPTIONS: num:nil toc:nil #+OPTIONS: num:nil toc:nil
#+exclude_tags: summary
[[https://github.com/babab/wdocker][wdocker]] is a little utility written by a [[https://benjamin.althu.es][friend]] and former colleague [[https://github.com/babab/wdocker][wdocker]] is a little utility written by a [[https://benjamin.althu.es][friend]] and former colleague
of mine. It allows you to define commands for it in a of mine. It allows you to define commands for it in a
@ -159,3 +160,9 @@ before:
variables becomes too much for you, you can call the wdocker command variables becomes too much for you, you can call the wdocker command
without arguments to see the commands you defined and the shell without arguments to see the commands you defined and the shell
commands they'll run. commands they'll run.
* Making docker-compose easier with wdocker :summary:
So easy!
[[file:20160221-0000-wdocker-compose.org][Read More]]

View file

@ -1,10 +1,17 @@
#+TITLE: New Blog #+TITLE: New Blog
#+DATE: <2019-10-06 Sun 12:55> #+DATE: <2019-10-06 Sun 12:55>
#+exclude_tags: summary
* New Blog :summary:
It's that time again... I've started a new project to build and maintain my site It's that time again... I've started a new project to build and maintain my site
and of course it has to come with a new blog post. I'm trying to have it and of course it has to come with a new blog post. I'm trying to have it
generate an index based on the files in this directory. generate an index based on the files in this directory.
[[file:20191006-1255-new-blog.org][Read More]]
* All the meta
I don't want it to include anything beyond the first paragraph, though. Now I I don't want it to include anything beyond the first paragraph, though. Now I
need to write some content so that it doesn't stay at a 1 minute read. If the need to write some content so that it doesn't stay at a 1 minute read. If the
average reading speed is 225 words per minute (it's probably not, but that's average reading speed is 225 words per minute (it's probably not, but that's

View file

@ -0,0 +1,15 @@
#+TITLE: My new Emacs configuration
#+DATE: <2019-10-06 Sun 18:18>
#+FILETAGS: draft
#+exclude_tags: summary
* My new Emacs configuration :summary:
I'm still working on this one.
[[file:20191006-1818-my-new-emacs-configuration.org][Read More]]
* Setup
foo bar baz
soo

View file

@ -0,0 +1,13 @@
#+TITLE: A very important blog post
#+DATE: <2020-02-23 Sun 18:28>
#+exclude_tags: summary
* A very important blog post :summary:
Very important business here.
[[file:20200223-1828-a-very-important-blog-post.org][Read More]]
* Other content
There is more here than what you can see.

View file

@ -2,8 +2,10 @@
#+TAGS: emacs #+TAGS: emacs
#+COMMENT_STATUS: closed #+COMMENT_STATUS: closed
#+STATUS: publish #+STATUS: publish
#+DATE: Wed, 12 Apr 2023 07:02:45 GMT # #+DATE: Wed, 12 Apr 2023 07:02:45 GMT
#+DATE: <2023-04-12 Wed 07:02>
#+UPDATE_URL: /admin/modify-post/2023%252f04%252f12%252fielm-paredit #+UPDATE_URL: /admin/modify-post/2023%252f04%252f12%252fielm-paredit
#+exclude_tags: summary
For a while I've been bothered by being unable to use IELM to evaluate Emacs Lisp expressions. Then [[https://www.n16f.net/blog/making-ielm-more-comfortable/][Making IELM More Comfortable]] pointed out that using paredit in IELM causes the =RET= and =C-j= keybindings to be bound to the wrong functions and proposes to fix them. The given fix, however, appears to change the keybindings for all buffers using paredit. I don't want that, and Emacs can do better! For a while I've been bothered by being unable to use IELM to evaluate Emacs Lisp expressions. Then [[https://www.n16f.net/blog/making-ielm-more-comfortable/][Making IELM More Comfortable]] pointed out that using paredit in IELM causes the =RET= and =C-j= keybindings to be bound to the wrong functions and proposes to fix them. The given fix, however, appears to change the keybindings for all buffers using paredit. I don't want that, and Emacs can do better!
@ -24,3 +26,9 @@ A quick search yielded [[https://stackoverflow.com/a/13102821][Buffer-locally ov
#+end_src #+end_src
Defining =RET= and =C-j= as =nil= means that the keybinding defaults back to the major-mode keybinding. Defining =RET= and =C-j= as =nil= means that the keybinding defaults back to the major-mode keybinding.
* IELM & Paredit :summary:
I couldn't use IELM for a while because of Paredit. So I fixed it.
[[file:20230412-0702-paredit-and-ielm.org][Read More]]

View file

@ -6,6 +6,7 @@
#+status: publish #+status: publish
#+UPDATE_URL: /admin/modify-post/2023%252f07%252f10%252fswitch-todo-state-when-clocking-in #+UPDATE_URL: /admin/modify-post/2023%252f07%252f10%252fswitch-todo-state-when-clocking-in
#+DATE: Mon, 10 Jul 2023 05:56:39 GMT #+DATE: Mon, 10 Jul 2023 05:56:39 GMT
#+exclude_tags: summary
This Emacs configuration snippet for org-mode changes a task's state from whatever “head” state it's in into the next state in its sequence when you clock in to a task. I do this by setting the =org-clock-in-switch-to-state= variable. This Emacs configuration snippet for org-mode changes a task's state from whatever “head” state it's in into the next state in its sequence when you clock in to a task. I do this by setting the =org-clock-in-switch-to-state= variable.
@ -76,6 +77,12 @@ Finally you just set this function as the value of =org-clock-in-switch-to-state
(setq org-clock-in-switch-to-state #'oni-org-maybe-change-todo-state) (setq org-clock-in-switch-to-state #'oni-org-maybe-change-todo-state)
#+end_src #+end_src
* Switch TODO state when clocking in :summary:
For a while I wanted to automatically mark a task as in progress whenever I clocked in to it.
[[file:20230610-0556-switch-todo-state-when-clocking-in.org][Read More]]
* Footnotes * Footnotes
[fn:1] By which I mean by pressing =C-c C-t= when =org-use-fast-todo-selection= is =nil= or pressing =C-S-<right>= on the headline. [fn:1] By which I mean by pressing =C-c C-t= when =org-use-fast-todo-selection= is =nil= or pressing =C-S-<right>= on the headline.

View file

@ -1,4 +0,0 @@
#+TITLE: A very important blog post
#+DATE: <2020-02-23 Sun 18:28>
Very important business here.

10
posts/index.org Normal file
View file

@ -0,0 +1,10 @@
#+title: posts
#+select_tags: summary
#+options: tags:nil num:nil
#+include: "./20230610-0556-switch-todo-state-when-clocking-in.org::*Switch TODO state when clocking in"
#+include: "./20230412-0702-paredit-and-ielm.org::*IELM & Paredit"
#+include: "./20200223-1828-a-very-important-blog-post.org::*A very important blog post"
#+include: "./20191006-1818-my-new-emacs-configuration.org::*My new Emacs configuration"
#+include: "./20191006-1255-new-blog.org::*New Blog"
#+include: "./20160221-0000-wdocker-compose.org::*Making docker-compose easier with wdocker"

View file

@ -1,8 +0,0 @@
#+TITLE: My new Emacs configuration
#+DATE: <2019-10-06 Sun 18:18>
#+FILETAGS: draft
I'm still working on this one.
foo bar baz
soo

View file

@ -5,7 +5,7 @@
;; Author: Tom Willemse <tom@ryuslash.org> ;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: ;; Keywords:
;; Version: 1 ;; Version: 1
;; Package-Requires: (dockerfile-mode htmlize org org-contrib rainbow-delimiters) ;; Package-Requires: (dockerfile-mode htmlize org org-contrib rainbow-delimiters ox-rss)
;; This program is free software; you can redistribute it and/or modify ;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by ;; it under the terms of the GNU General Public License as published by
@ -29,6 +29,7 @@
(require 'dockerfile-mode) (require 'dockerfile-mode)
(require 'ob-dot) (require 'ob-dot)
(require 'ox-publish) (require 'ox-publish)
(require 'ox-rss)
(require 'rainbow-delimiters) (require 'rainbow-delimiters)
(require 'subr-x) (require 'subr-x)
@ -90,10 +91,20 @@
:html-head "<link rel=\"stylesheet\" href=\"/assets/css/main.css\" type=\"text/css\"/>" :html-head "<link rel=\"stylesheet\" href=\"/assets/css/main.css\" type=\"text/css\"/>"
:html-preamble (lambda (project) :html-preamble (lambda (project)
(let ((buffer (find-file-noselect (buffer-file-name)))) (let ((buffer (find-file-noselect (buffer-file-name))))
(unless (string= "ryuslash.org" (unless (member (car (org-publish-find-property (buffer-file-name) :title project))
(car (org-publish-find-property (buffer-file-name) :title project))) '("ryuslash.org" "posts"))
(publish-format-reading-time (publish-format-reading-time
(publish-calculate-reading-time buffer)))))) (publish-calculate-reading-time buffer))))))
("rss"
:base-directory "posts/"
:base-extension "org"
:rss-extension "xml"
:publishing-directory "public/posts/"
:publishing-function (org-rss-publish-to-rss)
:section-numbers nil
:exclude ".*"
:include ("index.org")
:table-of-contents nil)
("assets" ("assets"
:base-directory "." :base-directory "."
:recursive t :recursive t
@ -101,7 +112,7 @@
:base-extension "svg\\|png\\|jpg" :base-extension "svg\\|png\\|jpg"
:publishing-function org-publish-attachment :publishing-function org-publish-attachment
:publishing-directory "public/") :publishing-directory "public/")
("all" :components ("index" "assets")))) ("all" :components ("index" "posts" "rss" "assets"))))
(defvar publish-feed-url-format (defvar publish-feed-url-format
;"https://gitlab.com/ryuslash/ryuslash.org/-/commits/master/%s?feed_token=Rf8otgpS8YEiYakJN4NR&format=atom" ;"https://gitlab.com/ryuslash/ryuslash.org/-/commits/master/%s?feed_token=Rf8otgpS8YEiYakJN4NR&format=atom"