From b5a82133ca4e98b85e6a0f11e6e9e3e003ab8684 Mon Sep 17 00:00:00 2001 From: Howard Abrams Date: Wed, 9 Mar 2022 10:45:37 -0800 Subject: [PATCH] Clarify the creative commons on tangled files Do I really need the copyright symbol? I love how the proselint insists that I use the unicode character (which unicoding all the files sounds great to me). What could go wrong there? :-D --- bootstrap.org | 32 ++++++++------- elisp/boxes-extras.el | 4 +- elisp/boxes.el | 4 +- ha-agendas.org | 32 ++++++++------- ha-aux-apps.org | 6 ++- ha-capturing-notes.org | 32 ++++++++------- ha-config.org | 32 ++++++++------- ha-display.org | 33 ++++++++-------- ha-email.org | 32 ++++++++------- ha-feed-reader.org | 32 ++++++++------- ha-irc.org | 32 ++++++++------- ha-org-babel.org | 77 ------------------------------------ ha-org-clipboard.org | 33 ++++++++-------- ha-org-graphviz-example.png | Bin 0 -> 37510 bytes ha-org-journaling.org | 32 ++++++++------- ha-org-publishing.org | 32 ++++++++------- ha-org-sprint.org | 33 ++++++++-------- ha-org-word-processor.org | 33 ++++++++-------- ha-org.org | 63 ++++++++++++++++++++++------- ha-passwords.org | 32 ++++++++------- ha-programming-python.org | 6 ++- ha-programming-scheme.org | 7 ++-- ha-programming.org | 32 ++++++++------- ha-remoting.org | 32 ++++++++------- templates/hamacs-config | 9 +++-- 25 files changed, 343 insertions(+), 349 deletions(-) delete mode 100644 ha-org-babel.org create mode 100644 ha-org-graphviz-example.png diff --git a/bootstrap.org b/bootstrap.org index 5c2da70..8391783 100644 --- a/bootstrap.org +++ b/bootstrap.org @@ -6,21 +6,23 @@ A literate programming file for bootstraping my Emacs Configuration. #+BEGIN_SRC emacs-lisp :exports none -;;; bootstrap.el --- file for bootstraping my Emacs Configuration -;; -;; Copyright (C) 2021 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: October 8, 2021 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/bootstrap.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; bootstrap.el --- file for bootstraping my Emacs Configuration + ;; + ;; © 2021-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: October 8, 2021 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/bootstrap.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction This file contains all the variable definitions and library loading for the other files in my project. diff --git a/elisp/boxes-extras.el b/elisp/boxes-extras.el index 2d46157..cce7bb5 100644 --- a/elisp/boxes-extras.el +++ b/elisp/boxes-extras.el @@ -1,7 +1,9 @@ ;;; BOXES-EXTRAS --- Refiling Subtrees to Proper Org Files ;; ;; Author: Howard Abrams -;; Copyright © 2019, Howard Abrams, all rights reserved. +;; © 2019-2022 Howard Abrams, all rights reserved. +;; This work is licensed under a Creative Commons Attribution 4.0 International License. +;; See http://creativecommons.org/licenses/by/4.0/ ;; Created: 7 January 2019 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/elisp/boxes.el b/elisp/boxes.el index 2fc17eb..8d59d32 100644 --- a/elisp/boxes.el +++ b/elisp/boxes.el @@ -1,7 +1,9 @@ ;;; BOXES --- An opinionated approach to a GTD workflow ;; ;; Author: Howard Abrams -;; Copyright © 2019, Howard Abrams, all rights reserved. +;; © 2019-2022 Howard Abrams, all rights reserved. +;; This work is licensed under a Creative Commons Attribution 4.0 International License. +;; See http://creativecommons.org/licenses/by/4.0/ ;; Created: 7 January 2019 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/ha-agendas.org b/ha-agendas.org index 778ba3b..4754524 100644 --- a/ha-agendas.org +++ b/ha-agendas.org @@ -6,21 +6,23 @@ A literate programming configuration for fancy agenda and todo lists. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-agendas.el --- A literate programming configuration for fancy agenda and todo lists. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 18, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-agendas.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha-agendas --- Configuration for fancy agenda and todo lists. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 18, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-agendas.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction All the code we describe in this file needs loading /after/ org. diff --git a/ha-aux-apps.org b/ha-aux-apps.org index 102ff63..34bd0da 100644 --- a/ha-aux-apps.org +++ b/ha-aux-apps.org @@ -6,9 +6,11 @@ A literate programming file for helper apps in Emacs. #+BEGIN_SRC emacs-lisp :exports none - ;;; ha-aux-apps.el --- A literate programming file for helper apps in Emacs. -*- lexical-binding: t; -*- + ;;; ha-aux-apps --- Configuring helper apps in Emacs. -*- lexical-binding: t; -*- ;; - ;; Copyright (C) 2021 Howard X. Abrams + ;; © 2021-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ ;; ;; Author: Howard X. Abrams ;; Maintainer: Howard X. Abrams diff --git a/ha-capturing-notes.org b/ha-capturing-notes.org index 7b9c5c5..00d12c2 100644 --- a/ha-capturing-notes.org +++ b/ha-capturing-notes.org @@ -6,21 +6,23 @@ A literate programming file for configuring org for capturing notes. #+BEGIN_SRC emacs-lisp :exports none -;;; capturing-notes.el --- A literate programming file for configuring org for capturing notes. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 18, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-capturing-notes.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; capturing-notes --- Configuring org for capturing notes. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 18, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-capturing-notes.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction Capturing (or collecting) notes from files, browsers, and meetings, is a great way to get organized. diff --git a/ha-config.org b/ha-config.org index 051088e..5e8109a 100644 --- a/ha-config.org +++ b/ha-config.org @@ -6,21 +6,23 @@ A literate programming file for configuring Emacs. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-config.org --- A literate programming file for configuring Emacs. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020-2021 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 10, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-config.org -;; Using `find-file-at-point', and tangle the file to recreate this one . -;; -;;; Code: + ;;; ha-config --- Emacs configuration. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 10, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-config.org + ;; Using `find-file-at-point', and tangle the file to recreate this one . + ;; + ;;; Code: #+END_SRC * Basic Configuration New way to display line-numbers. I set mine to =relative= so that I can easily jump up and down by that value. Set this to =nil= to turn off, or =t= to be absolute. diff --git a/ha-display.org b/ha-display.org index 0b69f14..e28a96e 100644 --- a/ha-display.org +++ b/ha-display.org @@ -4,24 +4,25 @@ #+FILETAGS: :emacs: A literate programming file to configure the Emacs UI. -# *Note:* After each change, /tangle it/ to the source destination with ~C-c C-v t~. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-display.org --- A literate programming file to configure the Emacs UI. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 10, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-display.org -;; Using `find-file-at-point', and tangle the file to recreate this one . -;; -;;; Code: + ;;; ha-display --- Emacs UI configuration. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 10, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-display.org + ;; Using `find-file-at-point', and tangle the file to recreate this one . + ;; + ;;; Code: #+END_SRC * Dashboard The [[https://github.com/emacs-dashboard/emacs-dashboard][emacs-dashboard]] project makes a nicer startup screen. diff --git a/ha-email.org b/ha-email.org index ea757cb..a624c89 100644 --- a/ha-email.org +++ b/ha-email.org @@ -6,21 +6,23 @@ A literate configuration file for email using Notmuch. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-email.el --- A literate configuration file for email using Notmuch. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 16, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-email.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha-email --- Email configuration using Notmuch. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 16, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-email.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction To use this system, begin with ~SPC a m~ (after a ~SPC a n~ to asychronously download new mail ... which probably should be running regularly). diff --git a/ha-feed-reader.org b/ha-feed-reader.org index b8fa2dd..36e216a 100644 --- a/ha-feed-reader.org +++ b/ha-feed-reader.org @@ -6,21 +6,23 @@ A literate programming file for configuring =elfeed= in Emacs. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-config.org --- A literate programming file for configuring elfeed. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020-2021 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 10, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-feed-reader.org -;; Using `find-file-at-point', and tangle the file to recreate this one . -;; -;;; Code: + ;;; ha-config --- ElFeed configuration. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 10, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-feed-reader.org + ;; Using `find-file-at-point', and tangle the file to recreate this one . + ;; + ;;; Code: #+END_SRC * Configuring Elfeed Let's get our feeds from a collection of org mode files. By default, Doom configures =rmh-elfeed-org-files= to [[file:~/Dropbox/org/elfeed.org][elfeed.org]] in =org-directory=, so that will be fine. diff --git a/ha-irc.org b/ha-irc.org index f4060bd..af538bc 100644 --- a/ha-irc.org +++ b/ha-irc.org @@ -6,21 +6,23 @@ A literate programming configuration file for IRC communiction. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-irc.el --- configuration for IRC communication. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: December 10, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-irc.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha-irc.el --- configuration for IRC communication. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: December 10, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-irc.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction My IRC /needs/ are basic, but I'm not sure which I want to use. diff --git a/ha-org-babel.org b/ha-org-babel.org deleted file mode 100644 index 37958c7..0000000 --- a/ha-org-babel.org +++ /dev/null @@ -1,77 +0,0 @@ -#+TITLE: Literate Programming with Org -#+AUTHOR: Howard X. Abrams -#+DATE: 2021-11-05 -#+FILETAGS: :emacs: - -This section is primarily about development in a literate way, especially focused on [[http://howardism.org/Technical/Emacs/literate-devops.html][literate devops]]. - -#+BEGIN_SRC emacs-lisp :exports none - ;;; ha-org-babel.el --- -*- lexical-binding: t; -*- - ;; - ;; Copyright (C) 2021 Howard X. Abrams - ;; - ;; Author: Howard X. Abrams - ;; Maintainer: Howard X. Abrams - ;; Created: November 5, 2021 - ;; - ;; This file is not part of GNU Emacs. - ;; - ;; *NB:* Do not edit this file. Instead, edit the original literate file at: - ;; ~/other/hamacs/ha-org-babel.org - ;; And tangle the file to recreate this one. - ;; - ;;; Code: - #+END_SRC - -* Introduction -Let's turn on all the languages: -#+BEGIN_SRC emacs-lisp - (use-package org - :init - (setq org-confirm-babel-evaluate nil - org-src-fontify-natively t - org-src-tab-acts-natively t) - :config - (add-to-list 'org-src-lang-modes '("dot" . "graphviz-dot")) - - (org-babel-do-load-languages 'org-babel-load-languages - '((shell . t) - (js . t) - (emacs-lisp . t) - (clojure . t) - (python . t) - (ruby . t) - (dot . t) - (css . t) - (plantuml . t)))) -#+END_SRC - -#+RESULTS: -: t - - - -* Technical Artifacts :noexport: - -Let's provide a name so that the file can be required: - -#+BEGIN_SRC emacs-lisp :exports none - (provide 'ha-org-babel) - ;;; ha-org-babel.el ends here - #+END_SRC - -Before you can build this on a new system, make sure that you put the cursor over any of these properties, and hit: ~C-c C-c~ - -#+DESCRIPTION: - -#+PROPERTY: header-args:sh :tangle no -#+PROPERTY: header-args:emacs-lisp :tangle yes -#+PROPERTY: header-args :results none :eval no-export :comments no mkdirp yes - -#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil date:nil -#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil -#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js - -# Local Variables: -# eval: (add-hook 'after-save-hook #'org-babel-tangle t t) -# End: diff --git a/ha-org-clipboard.org b/ha-org-clipboard.org index c90379d..996eddc 100644 --- a/ha-org-clipboard.org +++ b/ha-org-clipboard.org @@ -4,24 +4,25 @@ #+FILETAGS: :emacs: A literate programming file of functions for formatting the clipboard. -# *Note:* After each change, /tangle it/ to the source destination with ~C-c C-v t~. #+BEGIN_SRC emacs-lisp :exports none -;;; org-clipboard.el --- A literate programming file of functions for formatting the clipboard. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 15, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/org-clipboard.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; org-clipboard --- Functions for formatting the clipboard. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 15, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/org-clipboard.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction I would like to paste the formatted contents of the clipboard into an Org file /as org-formatted text/. diff --git a/ha-org-graphviz-example.png b/ha-org-graphviz-example.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbb3f5ff322adfac8196905110a7266bd3a63b3 GIT binary patch literal 37510 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 OkInc=mM6x#ZTx=*_M0mJ literal 0 HcmV?d00001 diff --git a/ha-org-journaling.org b/ha-org-journaling.org index 3fc2393..7fe4002 100644 --- a/ha-org-journaling.org +++ b/ha-org-journaling.org @@ -6,21 +6,23 @@ A literate programming configuration file for extending the Journaling capabilities. #+BEGIN_SRC emacs-lisp :exports none -;;; org-journaling.el --- A literate programming configuration file for extending the Journaling capabilities. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 24, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/org-journaling.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; org-journaling --- Configuring journals in org. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 24, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/org-journaling.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction Using the [[https://github.com/bastibe/org-journal][org-journal]] project to easily create /daily/ journal entries: diff --git a/ha-org-publishing.org b/ha-org-publishing.org index 42b5b1c..f4a3c8e 100644 --- a/ha-org-publishing.org +++ b/ha-org-publishing.org @@ -6,21 +6,23 @@ A literate programming file for publishing my website using org. #+BEGIN_SRC emacs-lisp :exports none -;;; org-publishing.el --- Publishing my website using org. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: December 22, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/org-publishing.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; org-publishing --- Publishing my website using org. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: December 22, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/org-publishing.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction While the Emacs community have a plethora of options for generating a static website from org-formatted files, I keep my pretty simple, and just use the standard =org-publish= feature. diff --git a/ha-org-sprint.org b/ha-org-sprint.org index e317e82..0f341b8 100644 --- a/ha-org-sprint.org +++ b/ha-org-sprint.org @@ -4,24 +4,25 @@ #+FILETAGS: :emacs: A literate program for configuring org files for work-related notes. -# *Note:* After each change, /tangle it/ to the source destination with ~C-c C-v t~. #+BEGIN_SRC emacs-lisp :exports none -;;; org-sp rint.el --- A literate program for configuring org files for work-related notes. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 25, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/org-sprint.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; org-sprint --- Configuring org files for work-related notes. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 25, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/org-sprint.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction diff --git a/ha-org-word-processor.org b/ha-org-word-processor.org index e5a0846..6993fb5 100644 --- a/ha-org-word-processor.org +++ b/ha-org-word-processor.org @@ -4,24 +4,25 @@ #+FILETAGS: :emacs: A literate programming file for making Org file more readable. -# *Note:* After each change, /tangle it/ to the source destination with ~C-c C-v t~. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-org-word-processor.org --- A literate programming file for making Org file more readable. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 10, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-org-word-processor.org -;; Using `find-file-at-point', and tangle the file to recreate this one . -;; -;;; Code: + ;;; ha-org-word-processor --- Making Org file more readable. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 10, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-org-word-processor.org + ;; Using `find-file-at-point', and tangle the file to recreate this one . + ;; + ;;; Code: #+END_SRC * Introduction I like having org-mode files look more like editing in a word processor than having it look like programming code. But that is just me. diff --git a/ha-org.org b/ha-org.org index 29de898..074aa7d 100644 --- a/ha-org.org +++ b/ha-org.org @@ -6,20 +6,23 @@ A literate programming file for configuring org-mode and those files. #+BEGIN_SRC emacs-lisp :exports none -;; -;; ©2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 18, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-org.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha --- Org configuration. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 18, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-org.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Use Package @@ -30,6 +33,7 @@ Org is a /large/ complex beast with a gazillion settings, so I discuss these lat :init <> <> + <> :config <> @@ -38,6 +42,7 @@ Org is a /large/ complex beast with a gazillion settings, so I discuss these lat <> <> <> + <> <> <> <> @@ -258,8 +263,14 @@ Of course, I need an 'undo' feature when the meeting is over… #+END_SRC ** Misc *** Babel Blocks +I use [[https://orgmode.org/worg/org-contrib/babel/intro.html][org-babel]] (obviously) and don’t need confirmation before evaluating a block: +#+NAME: ob-configuration +#+BEGIN_SRC emacs-lisp :tangle no + (setq org-confirm-babel-evaluate nil + org-src-fontify-natively t + org-src-tab-acts-natively t) +#+END_SRC Whenever I edit Emacs Lisp blocks from my tangle-able configuration files, I get a lot of superfluous warnings. Let's turn them off. - #+NAME: no-flycheck-in-org #+BEGIN_SRC emacs-lisp :tangle no (defun disable-flycheck-in-org-src-block () @@ -282,6 +293,28 @@ And turn on ALL the languages: (css . t) (plantuml . t))) #+END_SRC + +The [[https://graphviz.org/][graphviz project]] can be written in org blocks, and then rendered as an image: +#+NAME: ob-graphviz +#+BEGIN_SRC emacs-lisp :tangle no + (add-to-list 'org-src-lang-modes '("dot" . "graphviz-dot")) +#+END_SRC + +For example: +#+BEGIN_SRC dot :file ha-org-graphviz-example.png + digraph G { + main -> parse -> execute; + main -> init; + main -> cleanup; + execute -> make_string; + execute -> printf + init -> make_string; + main -> printf; + execute -> compare; + } +#+END_SRC +#+ATTR_ORG: :width 400px +[[file:ha-org-graphviz-example.png]] *** Next Image When I create images or other artifacts that I consider /part/ of the org document, I want to have them based on the org file, but with a prepended number. Keeping track of what numbers are now free is difficult, so for a /default/ let's figure it out: diff --git a/ha-passwords.org b/ha-passwords.org index 0246e83..63462e0 100644 --- a/ha-passwords.org +++ b/ha-passwords.org @@ -6,21 +6,23 @@ A literate programming version for Emacs code to generate and store passwords. #+BEGIN_SRC emacs-lisp :exports none - ;;; ha-passwords.el --- A literate programming version for Emacs code to generate and store passwords. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2021 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: January 11, 2021 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-passwords.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha-passwords --- Emacs code to generate and store passwords. -*- lexical-binding: t; -*- + ;; + ;; © 2021-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: January 11, 2021 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-passwords.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction Let's assume that I store a bunch of words in data files: diff --git a/ha-programming-python.org b/ha-programming-python.org index 6e7c7ec..7feb894 100644 --- a/ha-programming-python.org +++ b/ha-programming-python.org @@ -6,9 +6,11 @@ A literate programming file for configuring Python. #+BEGIN_SRC emacs-lisp :exports none - ;;; ha-programming-python.el --- A literate programming file for configuring Python. -*- lexical-binding: t; -*- + ;;; ha-programming-python --- Python configuration. -*- lexical-binding: t; -*- ;; - ;; Copyright (C) 2021 Howard X. Abrams + ;; © 2021-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ ;; ;; Author: Howard X. Abrams ;; Maintainer: Howard X. Abrams diff --git a/ha-programming-scheme.org b/ha-programming-scheme.org index 15e8092..ff6b663 100644 --- a/ha-programming-scheme.org +++ b/ha-programming-scheme.org @@ -1,15 +1,16 @@ #+TITLE: Programming in Scheme for SICP #+AUTHOR: Howard X. Abrams -#+EMAIL: howard.abrams@gmail.com #+DATE: 2022-03-01 #+FILETAGS: :emacs: A literate programming file configuring Emacs. #+BEGIN_SRC emacs-lisp :exports none - ;;; ha-programming-scheme.el --- A literate programming file configuring Emacs. -*- lexical-binding: t; -*- + ;;; ha-programming-scheme --- Configuration for Scheme. -*- lexical-binding: t; -*- ;; - ;; Copyright (C) 2022 Howard X. Abrams + ;; © 2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ ;; ;; Author: Howard X. Abrams ;; Maintainer: Howard X. Abrams diff --git a/ha-programming.org b/ha-programming.org index 2ff0d50..759014d 100644 --- a/ha-programming.org +++ b/ha-programming.org @@ -6,21 +6,23 @@ A literate programming file for helping me program. #+BEGIN_SRC emacs-lisp :exports none -;;; general-programming.el --- A literate programming file for helping me program. -*- lexical-binding: t; -*- -;; -;; Copyright © 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: October 26, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/general-programming.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; general-programming --- Configuration for general languages. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: October 26, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/general-programming.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Introduction diff --git a/ha-remoting.org b/ha-remoting.org index 9af59c6..619e160 100644 --- a/ha-remoting.org +++ b/ha-remoting.org @@ -6,21 +6,23 @@ A literate configuration for accessing remote systems. #+BEGIN_SRC emacs-lisp :exports none -;;; ha-remoting.el --- A literate configuration for accessing remote systems. -*- lexical-binding: t; -*- -;; -;; Copyright (C) 2020 Howard X. Abrams -;; -;; Author: Howard X. Abrams -;; Maintainer: Howard X. Abrams -;; Created: September 25, 2020 -;; -;; This file is not part of GNU Emacs. -;; -;; *NB:* Do not edit this file. Instead, edit the original literate file at: -;; ~/other/hamacs/ha-remoting.org -;; And tangle the file to recreate this one. -;; -;;; Code: + ;;; ha-remoting --- Accessing remote systems. -*- lexical-binding: t; -*- + ;; + ;; © 2020-2022 Howard X. Abrams + ;; This work is licensed under a Creative Commons Attribution 4.0 International License. + ;; See http://creativecommons.org/licenses/by/4.0/ + ;; + ;; Author: Howard X. Abrams + ;; Maintainer: Howard X. Abrams + ;; Created: September 25, 2020 + ;; + ;; This file is not part of GNU Emacs. + ;; + ;; *NB:* Do not edit this file. Instead, edit the original literate file at: + ;; ~/other/hamacs/ha-remoting.org + ;; And tangle the file to recreate this one. + ;; + ;;; Code: #+END_SRC * Local Terminals The following section configures my Terminal experience, both inside and outside Emacs. diff --git a/templates/hamacs-config b/templates/hamacs-config index 05cc05f..8893b91 100644 --- a/templates/hamacs-config +++ b/templates/hamacs-config @@ -4,16 +4,17 @@ (--map (s-capitalize it)) (s-join " "))`} #+AUTHOR: `user-full-name` -#+EMAIL: `user-mail-address` #+DATE: `(format-time-string "%Y-%m-%d")` #+FILETAGS: :emacs: -${2:A literate programming file configuring Emacs.} +A literate programming file for ${2:configuring Emacs.} #+BEGIN_SRC emacs-lisp :exports none -;;; `(file-name-base (buffer-file-name)))`.el --- $2 -*- lexical-binding: t; -*- +;;; `(file-name-base (buffer-file-name)))` --- $2 -*- lexical-binding: t; -*- ;; -;; Copyright (C) `(format-time-string "%Y")` `user-full-name` +;; © `(format-time-string "%Y")` `user-full-name` +;; This work is licensed under a Creative Commons Attribution 4.0 International License. +;; See http://creativecommons.org/licenses/by/4.0/ ;; ;; Author: `user-full-name` ;; Maintainer: `user-full-name`