From 7f541b7ef421ddf1c02a6e9f2616d4890cf5c77a Mon Sep 17 00:00:00 2001 From: Christopher James Hayward Date: Fri, 14 May 2021 17:46:18 -0400 Subject: [PATCH] BUGFIX --- modules/roam.org | 78 +++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/modules/roam.org b/modules/roam.org index acfae18..e16ceb0 100644 --- a/modules/roam.org +++ b/modules/roam.org @@ -42,23 +42,24 @@ The default behaviour of ~org-roam~ when creating a title slug is to replace any + Override ~org-roam-title-to-slug-function~ #+begin_src emacs-lisp -(require 'cl-lib) -(defun dotfiles/title-to-slug (title) - "Convert TITLE to a filename-suitable slug." - (cl-flet* ((nonspacing-mark-p (char) - (eq 'Mn (get-char-code-property char 'general-category))) - (strip-nonspacing-marks (s) - (apply #'string (seq-remove #'nonspacing-mark-p - (ucs-normalize-NFD-string s)))) - (cl-replace (title pair) - (replace-regexp-in-string (car pair) (cdr pair) title))) - (let* ((pairs `(("[^[:alnum:][:digit:]]" . "-") ;; Convert anything not alphanumeric. - ("--*" . "-") ;; Remove sequential dashes. - ("^-" . "") ;; Remove starting dashes. - ("-$" . ""))) ;; Remove ending dashes. - (slug (-reduce-from #'cl-replace (strip-nonspacing-marks title) pairs))) - (downcase slug)))) -(setq org-roam-title-to-slug-function #'dotfiles/title-to-slug) +(with-eval-after-load 'org-roam + (require 'cl-lib) + (defun dotfiles/title-to-slug (title) + "Convert TITLE to a filename-suitable slug." + (cl-flet* ((nonspacing-mark-p (char) + (eq 'Mn (get-char-code-property char 'general-category))) + (strip-nonspacing-marks (s) + (apply #'string (seq-remove #'nonspacing-mark-p + (ucs-normalize-NFD-string s)))) + (cl-replace (title pair) + (replace-regexp-in-string (car pair) (cdr pair) title))) + (let* ((pairs `(("[^[:alnum:][:digit:]]" . "-") ;; Convert anything not alphanumeric. + ("--*" . "-") ;; Remove sequential dashes. + ("^-" . "") ;; Remove starting dashes. + ("-$" . ""))) ;; Remove ending dashes. + (slug (-reduce-from #'cl-replace (strip-nonspacing-marks title) pairs))) + (downcase slug)))) + (setq org-roam-title-to-slug-function #'dotfiles/title-to-slug)) #+end_src ** Visualizer @@ -76,18 +77,19 @@ Use the ~org-roam-server~ web application to visualize the ~org-roam~ database. Use the ~daily~ note feature of ~org-roam~ to capture daily notes. Create the default capture template with some preconfigured headers. #+begin_src emacs-lisp -(add-to-list 'org-roam-dailies-capture-templates - '("d" "Default" entry (function org-roam-capture--get-point) - "* %?" - :file-name "docs/daily/%<%Y-%m-%d>" - :head +(with-eval-after-load 'org-roam + (add-to-list 'org-roam-dailies-capture-templates + '("d" "Default" entry (function org-roam-capture--get-point) + "* %?" + :file-name "docs/daily/%<%Y-%m-%d>" + :head " ,#+TITLE: %<%Y-%m-%d> ,#+AUTHOR: Christopher James Hayward ,#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil ,#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil -")) +"))) #+end_src * Templates @@ -95,17 +97,18 @@ Use the ~daily~ note feature of ~org-roam~ to capture daily notes. Create the de Collection of capture templates for various contexts. Here is one for a generic document. #+begin_src emacs-lisp -(add-to-list 'org-roam-capture-templates - '("d" "Default" entry (function org-roam-capture--get-point) - "%?" - :file-name "docs/${slug}" - :unnarrowed t - :head +(with-eval-after-load 'org-roam + (add-to-list 'org-roam-capture-templates + '("d" "Default" entry (function org-roam-capture--get-point) + "%?" + :file-name "docs/${slug}" + :unnarrowed t + :head " ,#+TITLE: ${title} ,#+AUTHOR: Christopher James Hayward ,#+EMAIL: chris@chrishayward.xyz -")) +"))) #+end_src ** Course @@ -113,12 +116,13 @@ Collection of capture templates for various contexts. Here is one for a generic Capture template for a new course. Capture with =SPC r c c=. #+begin_src emacs-lisp -(add-to-list 'org-roam-capture-templates - '("c" "Course" plain (function org-roam-capture--get-point) - "%?" - :file-name "docs/courses/${slug}" - :unnarrowed t - :head +(with-eval-after-load 'org-roam + (add-to-list 'org-roam-capture-templates + '("c" "Course" plain (function org-roam-capture--get-point) + "%?" + :file-name "docs/courses/${slug}" + :unnarrowed t + :head " ,#+TITLE: ${title} ,#+SUBTITLE: @@ -127,7 +131,7 @@ Capture template for a new course. Capture with =SPC r c c=. ,#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil ,#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil -")) +"))) #+end_src * Shortcuts