From 49bc4f71e44e107e4cef3cc374109c5084f3abe4 Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Thu, 10 Dec 2020 00:28:27 -0600
Subject: Add blank lines
---
README.md | 20 +++++++++++---------
config.org | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 70 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 866b4d3..dfcc845 100644
--- a/README.md
+++ b/README.md
@@ -601,7 +601,7 @@ I add it to the `find-file-hook` *and* `before-save-hook` because I don't want t
:config
(show-smartparens-global-mode +1)
:hook
- (prog-mode-hook . smart-parens-strict-mode))
+ (prog-mode-hook . smartparens-strict-mode))
## Line numbers
@@ -620,8 +620,6 @@ I add it to the `find-file-hook` *and* `before-save-hook` because I don't want t
(add-hook 'prog-mode-hook #'acdw/enable-line-numbers)
-
-
# Writing
@@ -659,7 +657,7 @@ I add it to the `find-file-hook` *and* `before-save-hook` because I don't want t
## Org mode
-I’ve put org mode under Applications, as opposed to [8](#org92fae61), because it’s more generally-applicable than that.
+I’ve put org mode under Applications, as opposed to Writing, because it’s more generally-applicable than that.
(use-package org
:custom
@@ -668,6 +666,7 @@ I’ve put org mode under Applications, as opposed to [8](#org92fae61), because
(org-fontify-whole-heading-line t)
(org-fontify-quote-and-verse-blocks t)
(org-pretty-entities t)
+ (org-num-mode +1)
(org-src-tab-acts-natively t)
(org-src-fontify-natively t)
@@ -820,6 +819,14 @@ I’ve put org mode under Applications, as opposed to [8](#org92fae61), because
(byte-compile-file f (not disable-load))))))))))
+### Add a hook to tangle when quitting
+
+ (defun acdw/refresh-emacs-no-load ()
+ (refresh-emacs t))
+
+ (add-hook 'kill-emacs-hook #'acdw/refresh-emacs-no-load)
+
+
## License
Copyright © 2020 Case Duckworth
@@ -852,8 +859,3 @@ GPL, for what should be fairly obvious reasons. To that, I say:
**SUE ME, RMS!**
-
-## Keymaps for *this* file
-
-This isn’t working … yet.
-
diff --git a/config.org b/config.org
index 51fb369..1c1b319 100644
--- a/config.org
+++ b/config.org
@@ -4,11 +4,12 @@
#+EXPORT_FILE_NAME: README.md
#+OPTIONS: toc:nil
#+BANKRUPTCY_COUNT: 3
-#+Time-stamp: <2020-12-09 20:27:25 acdw>
+#+Time-stamp: <2020-12-10 00:15:33 acdw>
Let’s configure Emacs using Org mode, they said. It’ll be fun, they said.
* Pave the way
+
** Correct =exec-path=
#+begin_src emacs-lisp
@@ -591,8 +592,11 @@ Until the =marginalia-annotators= settles, I’m disabling this section.
#+end_src
* Files
+
+
** Encoding
+
*** UTF-8
#+begin_src emacs-lisp
@@ -861,8 +865,61 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m
'scimax/org-return)
#+end_src
+*** Insert blank lines
+
+from [[https://github.com/alphapapa/unpackaged.el#ensure-blank-lines-between-headings-and-before-contents][unpackaged.el]].
+
+#+begin_src emacs-lisp
+ ;;;###autoload
+ (defun unpackaged/org-fix-blank-lines (&optional prefix)
+ "Ensure that blank lines exist between headings and between headings and their contents.
+ With prefix, operate on whole buffer. Ensures that blank lines
+ exist after each headings's drawers."
+ (interactive "P")
+ (org-map-entries (lambda ()
+ (org-with-wide-buffer
+ ;; `org-map-entries' narrows the buffer, which prevents us from seeing
+ ;; newlines before the current heading, so we do this part widened.
+ (while (not (looking-back "\n\n" nil))
+ ;; Insert blank lines before heading.
+ (insert "\n")))
+ (let ((end (org-entry-end-position)))
+ ;; Insert blank lines before entry content
+ (forward-line)
+ (while (and (org-at-planning-p)
+ (< (point) (point-max)))
+ ;; Skip planning lines
+ (forward-line))
+ (while (re-search-forward org-drawer-regexp end t)
+ ;; Skip drawers. You might think that `org-at-drawer-p' would suffice, but
+ ;; for some reason it doesn't work correctly when operating on hidden text.
+ ;; This works, taken from `org-agenda-get-some-entry-text'.
+ (re-search-forward "^[ \t]*:END:.*\n?" end t)
+ (goto-char (match-end 0)))
+ (unless (or (= (point) (point-max))
+ (org-at-heading-p)
+ (looking-at-p "\n"))
+ (insert "\n"))))
+ t (if prefix
+ nil
+ 'tree)))
+#+end_src
+
+**** Add a before-save-hook
+
+#+begin_src emacs-lisp
+ (defun cribbed/org-mode-fix-blank-lines ()
+ (when (eq major-mode 'org-mode)
+ (let ((current-prefix-arg 4)) ; Emulate C-u
+ (call-interactively 'unpackaged/org-fix-blank-lines))))
+
+ (add-hook 'before-save-hook #'cribbed/org-mode-fix-blank-lines)
+#+end_src
+
* Appendices
+
** Emacs' files
+
*** init.el
:PROPERTIES:
:header-args: :tangle init.el
@@ -871,6 +928,7 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m
#+begin_src emacs-lisp :comments no
;; init.el -*- lexical-binding: t -*-
#+end_src
+
**** Load config
from [[https://protesilaos.com/dotemacs/#h:584c3604-55a1-49d0-9c31-abe46cb1f028][Protesilaos Stavrou]].
--
cgit 1.4.1-21-gabe81