From 513f2f06de344b2f6fe8156b201d00ab9588d7d8 Mon Sep 17 00:00:00 2001 From: Howard Abrams Date: Mon, 1 Nov 2021 17:27:14 -0700 Subject: [PATCH] Let's go ... first commit after a major refactor Why yes, this will look like it sprung, like Athena, fully grown and in armor from my head, but this is really just the mid-point of a new endeavor. --- .gitignore | 6 + README.org | 21 + bootstrap.org | 125 +++ ha-config.org | 1045 ++++++++++++++++++++ ha-display.org | 267 +++++ ha-org-word-processor.org | 204 ++++ ha-org.org | 332 +++++++ initialize | 48 + snippets/emacs-lisp-mode/emacs-lisp-init | 21 + snippets/emacs-lisp-mode/ert-deftest | 6 + snippets/emacs-lisp-mode/npc | 10 + snippets/markdown-mode/h1 | 8 + snippets/markdown-mode/h2 | 8 + snippets/mhtml-mode/div | 7 + snippets/org-journal-mode/__journal | 7 + snippets/org-mode/__hamacs | 62 ++ snippets/org-mode/__mythic_rpg_overview | 24 + snippets/org-mode/__mythic_rpg_player | 28 + snippets/org-mode/__mythic_rpg_resolution | 24 + snippets/org-mode/__mythic_rpg_scaling | 26 + snippets/org-mode/__sprint | 61 ++ snippets/org-mode/activity-diagram | 18 + snippets/org-mode/component-diagram | 34 + snippets/org-mode/deployment-diagram | 31 + snippets/org-mode/dm-screen | 12 + snippets/org-mode/document-property-header | 5 + snippets/org-mode/emacs-lisp-code | 7 + snippets/org-mode/fullstatus | 14 + snippets/org-mode/header | 11 + snippets/org-mode/name | 5 + snippets/org-mode/object-diagram | 21 + snippets/org-mode/onboard | 14 + snippets/org-mode/plantuml | 14 + snippets/org-mode/rpgdm-npc | 6 + snippets/org-mode/section-property | 7 + snippets/org-mode/sequence-diagram | 13 + snippets/org-mode/shell-script-code | 7 + snippets/org-mode/state-diagram | 15 + snippets/org-mode/timing-diagram | 21 + snippets/org-mode/title | 5 + snippets/org-mode/use-case-diagram | 12 + snippets/ruby-mode/rubocop-disable-comment | 5 + snippets/sh-mode/__ | 12 + snippets/sh-mode/getopt | 14 + snippets/sh-mode/usage | 9 + support/beep-notify.wav | Bin 0 -> 259312 bytes support/final-initialize.el | 75 ++ support/levitating-gnu.png | Bin 0 -> 132686 bytes 48 files changed, 2727 insertions(+) create mode 100644 .gitignore create mode 100644 README.org create mode 100644 bootstrap.org create mode 100644 ha-config.org create mode 100644 ha-display.org create mode 100644 ha-org-word-processor.org create mode 100644 ha-org.org create mode 100755 initialize create mode 100644 snippets/emacs-lisp-mode/emacs-lisp-init create mode 100644 snippets/emacs-lisp-mode/ert-deftest create mode 100644 snippets/emacs-lisp-mode/npc create mode 100644 snippets/markdown-mode/h1 create mode 100644 snippets/markdown-mode/h2 create mode 100644 snippets/mhtml-mode/div create mode 100644 snippets/org-journal-mode/__journal create mode 100644 snippets/org-mode/__hamacs create mode 100644 snippets/org-mode/__mythic_rpg_overview create mode 100644 snippets/org-mode/__mythic_rpg_player create mode 100644 snippets/org-mode/__mythic_rpg_resolution create mode 100644 snippets/org-mode/__mythic_rpg_scaling create mode 100644 snippets/org-mode/__sprint create mode 100644 snippets/org-mode/activity-diagram create mode 100644 snippets/org-mode/component-diagram create mode 100644 snippets/org-mode/deployment-diagram create mode 100644 snippets/org-mode/dm-screen create mode 100644 snippets/org-mode/document-property-header create mode 100644 snippets/org-mode/emacs-lisp-code create mode 100644 snippets/org-mode/fullstatus create mode 100644 snippets/org-mode/header create mode 100644 snippets/org-mode/name create mode 100644 snippets/org-mode/object-diagram create mode 100644 snippets/org-mode/onboard create mode 100644 snippets/org-mode/plantuml create mode 100644 snippets/org-mode/rpgdm-npc create mode 100644 snippets/org-mode/section-property create mode 100644 snippets/org-mode/sequence-diagram create mode 100644 snippets/org-mode/shell-script-code create mode 100644 snippets/org-mode/state-diagram create mode 100644 snippets/org-mode/timing-diagram create mode 100644 snippets/org-mode/title create mode 100644 snippets/org-mode/use-case-diagram create mode 100644 snippets/ruby-mode/rubocop-disable-comment create mode 100644 snippets/sh-mode/__ create mode 100644 snippets/sh-mode/getopt create mode 100644 snippets/sh-mode/usage create mode 100644 support/beep-notify.wav create mode 100644 support/final-initialize.el create mode 100644 support/levitating-gnu.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..36da315 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*~ +/bootstrap.el +/ha-config.el +/ha-display.el +/ha-org-word-processor.el +/ha-org.el diff --git a/README.org b/README.org new file mode 100644 index 0000000..e670336 --- /dev/null +++ b/README.org @@ -0,0 +1,21 @@ +#+TITLE: My Emacs Configuration +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2021-11-01 November +#+TAGS: emacs + +My Emacs configuration, that I'm cheekily calling /hamacs/ is a literate programming model heavily inspired by my recent journey into [[https://www.youtube.com/watch?v=LKegZI9vWUU][Henrik Lissner's]] [[https://github.com/hlissner/doom-emacs][Doom Emacs]] and [[https://www.spacemacs.org/][Spacemacs]]. I used both extensively, but decided that I would /roll my own/ as Emacs people tend to be /control freaks/ (at least a little bit). + +Why yes, feel free to steal whatever you find interesting, as sharing is what makes our community great. Hit me up with questions =@howardabrams=. If you want to try this out, after installing Emacs, and cloning this repo, run: +#+BEGIN_SRC sh +./initialize +#+END_SRC +This creates [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] that starts the process loading the files: + + - [[file:bootstrap.org][bootstrap.org]] :: configures =straight= and loads basic libraries the rest of the code depends on. It then loads the following files in order: + - [[file:ha-config.org][ha-config.org]] :: contains /most/ of my configuration, setting up my sequence key menus, evil, etc. + - [[file:ha-display.org][ha-display.org]] :: sets up the visual aspects of an Emacs GUI, including themes, fonts and the dashboard. + - [[file:ha-org.org][ha-org.org]] :: configures the basics for org-mode formatted files. Specific features, however, come from their own files, however. + - [[file:ha-org-word-processor.org][ha-org-word-processor.org]] :: attempts to make Org files /visually/ look like what one might see in a word processor, including turning off the colors for headers, and instead increasing their size. + +*Note:* Other functions and files come from essays written on [[http://www.howardism.org][my blog]]. To help with this, see [[file:support/final-initialize.el][support/final-initialize.el]] file. diff --git a/bootstrap.org b/bootstrap.org new file mode 100644 index 0000000..5138ac5 --- /dev/null +++ b/bootstrap.org @@ -0,0 +1,125 @@ +#+TITLE: My Emacs Bootstrap +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2021-10-08 +#+FILETAGS: :emacs: + +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: +;; /Users/howard.abrams/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. +** Straight Package Installer +I'm going to be installing everything using the [[https://github.com/raxod502/straight.el#getting-started][straight.el]] for package installation and management. Here is the initialization/installation for it: + +#+BEGIN_SRC emacs-lisp +(defvar bootstrap-version) +(let ((bootstrap-file + (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) + (bootstrap-version 5)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) +#+END_SRC +Let's get the Straight project working with =use-package=: +#+BEGIN_SRC emacs-lisp +(straight-use-package 'use-package) +#+END_SRC +While that enables the =:straight t= extension to =use-package=, let's just have that be the default: +#+BEGIN_SRC emacs-lisp +(use-package straight + :custom (straight-use-package-by-default t)) +#+END_SRC +See the details in [[https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8][this essay]]. +** Basic Libraries +The following packages come with Emacs, but seems like they still need loading: +#+BEGIN_SRC emacs-lisp +(require 'subr-x) +#+END_SRC +While most libraries will take care of their dependencies, I want to install /my dependent libraries/. Especially, [[https://github.com/magnars/.emacs.d/][Magnar Sveen]]'s Clojure-inspired [[https://github.com/magnars/dash.el][dash.el]] project: +#+BEGIN_SRC emacs-lisp +(use-package dash) +#+END_SRC + +The [[https://github.com/magnars/s.el][s.el]] project is a simpler string manipulation library that I (and other projects) use: +#+BEGIN_SRC emacs-lisp +(use-package s) +#+END_SRC + +Manipulate file paths with the [[https://github.com/rejeep/f.el][f.el]] project: +#+BEGIN_SRC emacs-lisp +(use-package f) +#+END_SRC +** My Code Location +Much of my more complicated code comes from my website essays and other projects. The destination, however, shows up here: +#+BEGIN_SRC emacs-lisp +(add-to-list 'load-path (f-expand "~/.emacs.d/elisp")) +#+END_SRC + +Hopefully, this will tie me over while I transition. +* Load the Rest +The following loads the rest of my org-mode literate files. I add them as they are /ready/, but eventually, I'll trim this up into a nicer pattern. +#+BEGIN_SRC emacs-lisp +(dolist (file '("ha-config.org" + "ha-display.org" + "ha-org.org" + "ha-org-word-processor.org" + ;; "org-clipboard.org" + ;; "org-journaling.org" + ;; "org-publishing.org" + ;; "org-sprint.org" + ;; "capturing-notes.org" + ;; "general-programming.org" + ;; "ha-agendas.org" + ;; "ha-email.org" + ;; "ha-irc.org" + ;; "ha-passwords.org" + ;; "ha-remoting.org" + ;; "my-feeds.org" + )) + (org-babel-load-file (f-join hamacs-source-dir file))) +#+END_SRC +We can test/debug any individual file, via: +#+BEGIN_SRC emacs-lisp + (org-babel-load-file (f-join hamacs-source-dir "ha-config.org")) +#+END_SRC +* Technical Artifacts :noexport: +Let's provide a name so that the file can be required: + +#+BEGIN_SRC emacs-lisp :exports none +(provide 'bootstrap) +;;; bootstrap.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: A literate programming file for bootstrapping my environment. + +#+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 diff --git a/ha-config.org b/ha-config.org new file mode 100644 index 0000000..04fe109 --- /dev/null +++ b/ha-config.org @@ -0,0 +1,1045 @@ +#+TITLE: General Emacs Configuration +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2020-09-10 +#+FILETAGS: :emacs: + +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: +#+END_SRC +* Introduction + +The following are general variable settings, and doesn't really belong to any specific purpose. + +#+BEGIN_SRC emacs-lisp +(setq user-full-name "Howard X. Abrams" + user-mail-address "howard.abrams@gmail.com") +#+END_SRC + +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. + +#+BEGIN_SRC emacs-lisp +(setq display-line-numbers t) +(setq display-line-numbers-type 'relative) +#+END_SRC + +As [[https://tecosaur.github.io/emacs-config/config.html][tec wrote]], I want to use =~/.authsource.gpg= as I don’t want to accidentaly purge this file cleaning =~/.emacs.d=, and let's cache as much as possible, as my home machine is pretty safe, and my laptop is shutdown a lot. + +#+BEGIN_SRC emacs-lisp +(setq auth-sources '("~/.authinfo.gpg") + auth-source-cache-expiry nil) +#+END_SRC + +More settings: + +#+BEGIN_SRC emacs-lisp +(setq truncate-string-ellipsis "…" ; Unicode ellispis are nicer than "..." + auto-save-default t) +#+END_SRC + +Finally, we need to make sure that the =/usr/local/bin= path is available to Emacs. Normally, we get this value from =PATH= environment variable, but I have one Emacs installation that refuses to, so... here we are. + +#+BEGIN_SRC emacs-lisp +(add-to-list 'exec-path "/usr/local/bin/") +#+END_SRC +* Support Packages +** Piper + +Rewriting my shell scripts in Emacs Lisp uses my [[https://gitlab.com/howardabrams/emacs-piper][emacs-piper project]], and this code spills into my configuration code, so let's load it now: + +#+BEGIN_SRC emacs-lisp :tangle no +(use-package piper + :load-path "~/other/emacs-piper/" + :commands shell-command-to-list ; I use this function quite a bit + :bind (:map evil-normal-state-map + ("|" . piper-user-interface))) +#+END_SRC +** Yet Another Snippet System (YASnippets) +Using [[https://github.com/joaotavora/yasnippet][yasnippet]] to convert templates into text: + +#+BEGIN_SRC emacs-lisp + (use-package yasnippet + :config + (add-to-list 'yas-snippet-dirs "~/.emacs.d/snippets") + (yas-global-mode +1)) +#+END_SRC +** Request System +The above code (and other stuff) needs the [[https://github.com/tkf/emacs-request][request]] package: +#+BEGIN_SRC emacs-lisp + (use-package request + :init + (defvar ha-dad-joke nil "Holds the latest dad joke.") + + :config + (defun ha-dad-joke () + "Display a random dad joke." + (interactive) + (message (ha--dad-joke))) + + (defun ha--dad-joke () + "Return string containing a dad joke from www.icanhazdadjoke.com." + (setq ha-dad-joke nil) ; Clear out old joke + (ha--dad-joke-request) + (ha--dad-joke-wait)) + + (defun ha--dad-joke-wait () + (while (not ha-dad-joke) + (sit-for 1)) + (unless ha-dad-joke + (ha--dad-joke-wait)) + ha-dad-joke) + + (defun ha--dad-joke-request () + (request "https://icanhazdadjoke.com" + :sync t + :complete (cl-function + (lambda (&key data &allow-other-keys) + (setq ha-dad-joke data)))))) +#+END_SRC +*** Dad Jokes! +The /critical part/ here, is the [[https://icanhazdadjoke.com/][Dad Joke]] function, which is just a =curl= call: +#+BEGIN_SRC sh +curl -sH "Accept: text/plain" https://icanhazdadjoke.com/ +#+END_SRC +For this, I use the =request= package, which is /asynchronous/ +#+BEGIN_SRC emacs-lisp +#+END_SRC + +* Configuration Changes +** Initial Settings and UI +Let's turn off the menu and other things: +#+BEGIN_SRC emacs-lisp + (tool-bar-mode -1) + (scroll-bar-mode -1) + (horizontal-scroll-bar-mode -1) +(setq visible-bell 1) +#+END_SRC +I dislike forgetting to trim trailing white-space: + +#+BEGIN_SRC emacs-lisp +(add-hook 'before-save-hook 'delete-trailing-whitespace) +#+END_SRC + +I like being able to enable local variables in =.dir-local.el= files: +#+BEGIN_SRC emacs-lisp +(setq enable-local-variables t) +#+END_SRC +** Completing Read User Interface +After using Ivy, I am going the route of a =completing-read= interface that extends the original Emacs API, as opposed to implementing backend-engines or complete replacements. +*** Vertico +The [[https://github.com/minad/vertico][vertico]] package puts the completing read in a vertical format, and seems to fit the bill. It seems to be similar to [[https://github.com/raxod502/selectrum#vertico][Selectrum]], and I'll use it (at least for a while), however, I may be jumping between the two. +#+BEGIN_SRC emacs-lisp + (use-package vertico + :config (vertico-mode)) +#+END_SRC +My only issue with using Vertico with =find-file= is that I really like having the Return key insert the directory at point, and not open =dired=. Seems like this is addressed with this extension /installed with Vertico/: +#+BEGIN_SRC emacs-lisp + (use-package vertico-directory + :straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el")) + ;; More convenient directory navigation commands + :bind (:map vertico-map + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-word) + ("M-RET" . minibuffer-force-complete-and-exit) + ("M-TAB" . minibuffer-complete)) + ;; Tidy shadowed file names + :hook (rfn-eshadow-update-overlay . vertico-directory-tidy)) +#+END_SRC +*** Selectrum +While I've been /dabbling/ in some of the alternates for =completing-read=, after watching [[https://youtu.be/lfgQC540sNM][Rari Comninos' overview]], I decided to try [[https://github.com/raxod502/selectrum][selectrum]] for better narrowing and selecting (instead of Ivy) and [[https://github.com/raxod502/prescient.el][prescient]] to order the selection from history. + +#+BEGIN_SRC emacs-lisp :tangle no + (use-package selectrum + :config + ;; Optional performance optimization by highlighting only the visible candidates. + (setq selectrum-highlight-candidates-function #'orderless-highlight-matches + orderless-skip-highlighting (lambda () selectrum-is-active)) + (selectrum-mode +1)) + + (use-package selectrum-prescient + :init + (setq selectrum-prescient-enable-filtering nil ; Use prescient on top of orderless + selectrum-prescient-enable-sorting t) + :config + (selectrum-prescient-mode +1) + (prescient-persist-mode +1)) +#+END_SRC +Keybindings: + - ~RET~ :: Select the candidate (obviously), but if directory, opens =dired= + - ~M-# RET~ :: Select =#= candidate (where # is a number 0-9) + - ~C-j~ :: Submit what you've typed (even if it would select something else) + - ~TAB~ :: Move into a directory (for =find-file=) + - ~M-w~ :: Copy the candidate to the kill ring (clipboard) + - ~,~ :: Select multiple candidates + - ~M-BKSP~ :: To go up a directory + - ~M-p~ / ~M-n~ / ~M-r~ :: Select/Search the selection history + +Wouldn't it be swell if we could quickly select one of the items visually shown. +#+BEGIN_SRC emacs-lisp :tangle no +(define-key selectrum-minibuffer-map (kbd "C-l") 'selectrum-quick-select) +#+END_SRC +*** Orderless +While the space can be use to separate words (acting a bit like a =.*= regular expression), the +[[https://github.com/oantolin/orderless][orderless]] project allows those words to be in any order. +#+BEGIN_SRC emacs-lisp +(use-package orderless + :init + (setq completion-styles '(substring orderless) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) +#+END_SRC +*Note:* Multiple files can be opened at once with =find-file= if you enter a wildcard. We may also give the =initials= completion style a try. + +*** Savehist +Persist history over Emacs restarts using the built-in [[https://www.emacswiki.org/emacs/SaveHist][savehist]] project. Since both Vertico and Selectrum sorts by history position, this should make the choice /smarter/ with time. +#+BEGIN_SRC emacs-lisp +(use-package savehist + :init + (savehist-mode)) +#+END_SRC +*** Marginalia +The [[https://github.com/minad/marginalia][marginalia]] package gives a preview of =M-x= functions with a one line description, extra information when selecting files, etc. Nice enhancement without learning any new keybindings. + +#+BEGIN_SRC emacs-lisp + ;; Enable richer annotations using the Marginalia package + (use-package marginalia + :init + (setq marginalia-annotators-heavy t) + :config + (marginalia-mode)) +#+END_SRC +* Key Bindings +To begin my binding changes, let's turn on [[https://github.com/justbur/emacs-which-key][which-key]]: +#+BEGIN_SRC emacs-lisp +(use-package which-key + :init (setq which-key-popup-type 'minibuffer) + :config (which-key-mode)) +#+END_SRC +** Evil-Specific Keybindings +Can we change Evil at this point? Some tips: + - [[https://github.com/noctuid/evil-guide]] + - [[https://nathantypanski.com/blog/2014-08-03-a-vim-like-emacs-config.html]] + +#+BEGIN_SRC emacs-lisp +(use-package evil + :init + (setq evil-disable-insert-state-bindings t + evil-want-keybinding nil + evil-want-integration t + evil-escape-key-sequence "fd" + evil-escape-unordered-key-sequence t) + + :config + (add-to-list 'evil-normal-state-modes 'shell-mode) + (add-to-list 'evil-emacs-state-modes 'term-mode) + (add-to-list 'evil-emacs-state-modes 'elfeed-search-mode) + (add-to-list 'evil-emacs-state-modes 'elfeed-show-mode) + + ;; Use escape to get out of visual mode, eh? + (evil-define-key 'visual global-map (kbd "v") 'er/expand-region) + + (evil-mode)) +#+END_SRC + +Using the key-chord project allows me to make Escape be on two key combo presses on both sides of my keyboard: +#+BEGIN_SRC emacs-lisp +(use-package key-chord + :config + (key-chord-mode t) + (key-chord-define-global "fd" 'evil-normal-state) + (key-chord-define-global "jk" 'evil-normal-state) + (key-chord-define-global "JK" 'evil-normal-state)) +#+END_SRC +** Evil Collection +Dropping into Emacs state is better than pure Evil state for applications, however, [[https://github.com/emacs-evil/evil-collection][the evil-collection package]] creates a hybrid between the two, that I like. + +#+BEGIN_SRC emacs-lisp +(use-package evil-collection + :after evil + :config + (evil-collection-init)) +#+END_SRC + +Do I want to specify the list of modes to change for =evil-collection-init=, e.g. +#+BEGIN_SRC emacs-lisp :tangle no :eval no +'(eww magit dired notmuch term wdired) +#+END_SRC +** General Leader Key Sequences +The one thing that both Spacemacs and Doom taught me, is how much I like the /key sequences/ that begin with a leader key. In both of those systems, the key sequences begin in the /normal state/ with a space key. This means, while typing in /insert state/, I have to escape to /normal state/ and then hit the space. + +I'm not trying an experiment where specially-placed function keys on my fancy ergodox keyboard can kick these off using [[https://github.com/noctuid/general.el][General Leader]] project. Essentially, I want a set of leader keys for Evil's /normal state/ as well as a global leader in all modes. + +#+BEGIN_SRC emacs-lisp +(use-package general + :config + (general-evil-setup t) + (general-create-definer ha-leader + :keymaps '(normal insert visual emacs) + :prefix "SPC" + :global-prefix "") + + (general-create-definer ha-local-leader + :keymaps '(normal insert visual emacs) + :prefix "SPC m" + :global-prefix "")) +#+END_SRC +*** Top-Level Operations +Let's try this out with +#+BEGIN_SRC emacs-lisp + (ha-leader + "SPC" '("M-x" . execute-extended-command) + "." '("repeat" . repeat) + "X" 'org-capture + "L" 'org-store-link + "RET" 'bookmark-jump) +#+END_SRC +And ways to stop the system: +#+BEGIN_SRC emacs-lisp +(ha-leader + "q" '(:ignore t :which-key "quit/session") + "q K" '("kill emacs (and dæmon)" . save-buffers-kill-emacs) + "q q" '("quit emacs" . save-buffers-kill-terminal) + "q Q" '("quit without saving" . evil-quit-all-with-error-code)) +#+END_SRC +*** File Operations +Obviously, =find-file= is still my bread and butter, but I do like getting information about the file associated with the buffer. For instance, the file path: +#+BEGIN_SRC emacs-lisp +(defun ha/relative-filepath (filepath) + "Return the FILEPATH without the HOME directory and typical filing locations. +The expectation is that this will return a filepath with the proejct name." + (let* ((home-re (rx (literal (getenv "HOME")) "/")) + (work-re (rx (regexp home-re) + (or "work" "other" "projects") ; Typical organization locations + "/" + (optional (or "4" "5" "xway") "/") ; Sub-organization locations + ))) + (cond + ((string-match work-re filepath) (substring filepath (match-end 0))) + ((string-match home-re filepath) (substring filepath (match-end 0))) + (t filepath)))) + +(defun ha/yank-buffer-path (&optional root) + "Copy the file path of the buffer relative to my 'work' directory, ROOT." + (interactive) + (if-let (filename (buffer-file-name (buffer-base-buffer))) + (message "Copied path to clipboard: %s" + (kill-new (abbreviate-file-name + (if root + (file-relative-name filename root) + (ha/relative-filepath filename))))) + (error "Couldn't find filename in current buffer"))) + +(defun ha/yank-project-buffer-path (&optional root) + "Copy the file path of the buffer relative to the file's project. +If ROOT is given, they copies the filepath relative to that." + (interactive) + (if-let (filename (buffer-file-name (buffer-base-buffer))) + (message "Copied path to clipboard: %s" + (kill-new + (f-relative filename (or root (projectile-project-root filename))))) + (error "Couldn't find filename in current buffer"))) +#+END_SRC + +With these helper functions in place, I can create a leader collection for file-related functions: +#+BEGIN_SRC emacs-lisp +(ha-leader + "f" '(:ignore t :which-key "files") + "f f" '("load" . find-file) + "f s" '("save" . save-buffer) + "f S" '("save as" . write-buffer) + "f SPC" '("project" . projectile-find-file) + "f r" '("recent" . recentf-open-files) + "f c" '("copy" . copy-file) + "f R" '("rename" . rename-file) + "f D" '("delete" . delete-file) + "f y" '("yank path" . ha/yank-buffer-path) + "f Y" '("yank path from project" . ha/yank-project-buffer-path) + "f d" '("dired" . dired)) +#+END_SRC +*** Buffer Operations +This section groups buffer-related operations under the "SPC b" sequence. + +Putting the entire visible contents of the buffer on the clipboard is often useful: +#+BEGIN_SRC emacs-lisp +(defun ha/yank-buffer-contents () + "Copy narrowed contents of the buffer to the clipboard." + (interactive) + (kill-new (buffer-substring-no-properties + (point-min) (point-max)))) +#+END_SRC +And the collection of useful operations: +#+BEGIN_SRC emacs-lisp +(ha-leader + "b" '(:ignore t :which-key "buffers") + "b b" '("switch" . persp-switch-to-buffer) + "b B" '("switch" . switch-to-buffer-other-window) + "b o" '("other" . projectile-switch-buffer-to-other-window) + "b i" '("ibuffer" . ibuffer) + "b I" '("ibuffer" . ibuffer-other-window) + "b k" '("persp remove" . persp-remove-buffer) + "b N" '("new" . evil-buffer-new) + "b d" '("delete" . persp-kill-buffer*) + "b r" '("revert" . revert-buffer) + "b s" '("save" . save-buffer) + "b S" '("save all" . evil-write-all) + "b n" '("next" . next-buffer) + "b p" '("previous" . previous-buffer) + "b y" '("copy contents" . ha/yank-buffer-contents) + "b z" '("bury" . bury-buffer) + "b Z" '("unbury" . unbury-buffer) + + ;; And double up on the bookmarks: + "b m" '("set bookmark" . bookmark-set) + "b M" '("delete mark" . bookmark-delete)) +#+END_SRC +*** Toggle Switches +The goal here is toggle switches and other miscellaneous settings. +#+BEGIN_SRC emacs-lisp + (ha-leader + "t" '(:ignore t :which-key "toggles") + "t l" '("line numbers" . display-line-numbers-mode) + "t r" '("relative lines" . ha-toggle-relative-line-numbers)) +#+END_SRC +Really? We can't automatically toggle between relative and absolute line numbers? +#+BEGIN_SRC emacs-lisp + (defun ha-toggle-relative-line-numbers () + (interactive) + (if (eq display-line-numbers 'relative) + (setq display-line-numbers t) + (setq display-line-numbers 'relative))) +#+END_SRC +*** Window Operations +While it comes with Emacs, I use [[https://www.emacswiki.org/emacs/WinnerMode][winner-mode]] to undo window-related changes: +#+BEGIN_SRC emacs-lisp +(use-package winner + :custom + (winner-dont-bind-my-keys t) + :config + (winner-mode +1)) +#+END_SRC +Use the [[https://github.com/abo-abo/ace-window][ace-window]] project to jump to any window you see: +#+BEGIN_SRC emacs-lisp +(use-package ace-window) +#+END_SRC +This package, bound to ~SPC w w~, also allows operations specified before choosing the window: + - ~x~ - delete window + - ~m~ - swap windows + - ~M~ - move window + - ~c~ - copy window + - ~j~ - select buffer + - ~n~ - select the previous window + - ~u~ - select buffer in the other window + - ~c~ - split window fairly, either vertically or horizontally + - ~v~ - split window vertically + - ~b~ - split window horizontally + - ~o~ - maximize current window + - ~?~ - show these command bindings + + +To jump to a window even quicker, use the [[https://github.com/deb0ch/emacs-winum][winum package]]: +#+BEGIN_SRC emacs-lisp +(use-package winum + :config + (winum-mode +1)) +#+END_SRC +The ~0~ key/window should be always associated with a project-specific tree window: +#+BEGIN_SRC emacs-lisp +(add-to-list 'winum-assign-functions + (lambda () + (when (string-match-p (buffer-name) ".*\\*NeoTree\\*.*") 10))) +#+END_SRC + +Let's try this out with a Hydra since some commands (enlarge window), I want to repeatedly call. It also allows me to organize the helper text. +#+BEGIN_SRC emacs-lisp +(use-package hydra + :config + (defhydra hydra-window-resize (:color blue :hint nil) " +_w_: select _n_: new _^_: taller (t) _z_: Swap _+_: text larger +_c_: cycle _d_: delete _V_: shorter (T) _u_: undo _-_: text smaller +_j_: go up _=_: balance _>_: wider _U_: undo+ +_k_: down _m_: maximize _<_: narrower _r_: redo +_h_: left _s_: h-split _e_: balanced _R_: redo+ +_l_: right _v_: v-split _o_: choose by number (also 0-9) +" + ("w" ace-window) + ("c" other-window) + ("=" balance-windows) + ("m" delete-other-windows) + ("d" delete-window) + ("D" ace-delete-window) + + ("z" ace-window-swap) + ("u" winner-undo) + ("U" winner-undo :color pink) + ("C-r" winner-redo) + ("r" winner-redo) + ("R" winner-redo :color pink) + + ("n" evil-window-new) + ("j" evil-window-up) + ("k" evil-window-down) + ("h" evil-window-left) + ("l" evil-window-right) + + ("s" evil-window-split) + ("v" evil-window-vsplit) + + ("+" text-scale-increase :color pink) + ("=" text-scale-increase :color pink) + ("-" text-scale-decrease :color pink) + ("^" evil-window-increase-height :color pink) + ("V" evil-window-decrease-height :color pink) + ("t" evil-window-increase-height :color pink) + ("T" evil-window-decrease-height :color pink) + (">" evil-window-increase-width :color pink) + ("<" evil-window-decrease-width :color pink) + ("e" balance-windows) + + ("o" winum-select-window-by-number) + ("0" winum-select-window-0-or-10) + ("1" winum-select-window-1) + ("2" winum-select-window-2) + ("3" winum-select-window-3) + ("4" winum-select-window-4) + ("5" winum-select-window-5) + ("6" winum-select-window-6) + ("7" winum-select-window-7) + ("8" winum-select-window-8) + ("9" winum-select-window-9) + + ;; Extra bindings: + ("t" evil-window-increase-height :color pink) + ("T" evil-window-decrease-height :color pink) + ("." evil-window-increase-width :color pink) + ("," evil-window-decrease-width :color pink) + ("q" nil :color blue))) + +(ha-leader "w" '("windows" . hydra-window-resize/body)) +#+END_SRC +*** Search Operations +Ways to search for information goes under the ~s~ key. This primarily depends on the [[https://github.com/dajva/rg.el][rg]] package, which builds on the internal =grep= system. +#+BEGIN_SRC emacs-lisp +(use-package rg + :config + (ha-leader + "s" '(:ignore t :which-key "search") + "s p" 'projectile-ripgrep)) +#+END_SRC + +*** Text Operations +Stealing much of this from Spacemacs. +#+BEGIN_SRC emacs-lisp +(ha-leader + "x" '(:ignore t :which-key "text") + "x q" '("fill paragraph" . fill-paragraph)) +#+END_SRC +*** Help Operations +While the ~C-h~ is easy enough, I am now in the habit of typing ~SPC h~ instead. +#+BEGIN_SRC emacs-lisp + (ha-leader + "h" '(:ignore t :which-key "help") + "h f" '("function" . describe-function) + "h v" '("variable" . describe-variable) + "h k" '("key binding" . describe-key) + "h B" '("embark" . embark-bindings)) +#+END_SRC + +*** Consult Enhancements +The [[https://github.com/minad/consult][consult]] package is a replacement for selecting buffers and other /speciality functions/, similar to the [[https://oremacs.com/2015/04/09/counsel-completion/][Ivy's counsel completion]] project. I think I may be adding it sparingly, as personally, I read files and buffers based on the selected /project/. + +The pattern is to add the /consult/ functions to my standard general leader organization, but they will all end with ~TAB~ (unique, easy and consistent). +#+BEGIN_SRC emacs-lisp +(use-package consult + :config + (ha-leader + "b TAB" '("consult buffer" . consult-buffer) + "b S-TAB" '("consult buffer in window" . consult-buffer-other-window) + "s TAB" '("consult search" . consult-ripgrep) + "f TAB" '("consult file" . consult-file))) +#+END_SRC +*** Embark +The [[https://github.com/oantolin/embark/][embark]] project offers /actions/ on /targets/, however, I'm primarily thinking of acting on selected items in the minibuffer, however, they actually act anywhere. Consequently, I need an easy-to-use keybinding that doesn't conflict. Hey, that is what the Super key is for, right? +#+BEGIN_SRC emacs-lisp + (use-package embark + :bind + (("s-;" . embark-act) ; Work in minibuffer and elsewhere + ("s-/" . embark-dwim)) + + :init + ;; Optionally replace the key help with a completing-read interface + (setq prefix-help-command #'embark-prefix-help-command)) +#+END_SRC +Consult users will also want the embark-consult package. +#+BEGIN_SRC emacs-lisp +(use-package embark-consult + :after (embark consult) + :demand t ; only necessary if you have the hook below + ;; if you want to have consult previews as you move around an + ;; auto-updating embark collect buffer + :hook + (embark-collect-mode . consult-preview-at-point-mode)) +#+END_SRC +** Evil Snipe + +Doom introduced me to [[https://github.com/hlissner/evil-snipe][evil-snipe]] which is similar to =f= and =t=, but does two characters, and can, when configured, search more than the current line: + +#+BEGIN_SRC emacs-lisp +(use-package evil-snipe + :init + (setq evil-snipe-scope 'visible) + :config + (evil-define-key '(normal motion operator visual) + "s" #'evil-snipe-s + "S" #'evil-snipe-S) + (evil-snipe-mode +1)) +#+END_SRC + +It highlights all potential matches, use ~;~ to skip to the next match, and ~,~ to jump back. +** Evil Surround +I like both [[https://github.com/emacs-evil/evil-surround][evil-surround]] and Henrik's [[https://github.com/hlissner/evil-snipe][evil-snipe]], however, they both start with ~s~, and conflict, and getting them to work together means I have to remember when does ~s~ call sniper and when calls surround. As an original Emacs person, I am not bound by that key history, but I do need them consistent: + +#+BEGIN_SRC emacs-lisp +(dolist (state '(normal motion operator visual)) + (evil-define-key state evil-surround-mode-map "z" 'evil-surround-edit) + (evil-define-key state evil-surround-mode-map "Z" 'evil-Surround-edit)) +#+END_SRC + +** Jump, Jump, Jump! + +While I grew up on =Control S=, I am liking the /mental model/ associated with the [[https://github.com/abo-abo/avy][avy project]] that allows a /jump/ among matches across all visible windows. I use the ~F18~ key on my keyboard that should be easy to use. + +#+BEGIN_SRC emacs-lisp +(use-package avy + :init + (setq avy-all-windows t + avy-single-candidate-jump t + avy-orders-alist + '((avy-goto-char . avy-order-closest) + (avy-goto-word-0 . avy-order-closest))) + :config (ha-leader "j" '("jump" . avy-goto-char-timer)) + :bind ("" . avy-goto-char-timer)) +#+END_SRC +*Note:* The links should be shorter near the point as opposed to starting from the top of the window. +** Miscellaneous Keys +I really appreciated the [[https://github.com/benma/visual-regexp.el][visual-regexp package]]: + +#+BEGIN_SRC emacs-lisp +(use-package visual-regexp + :bind (("C-c r" . vr/replace) + ("C-c q" . vr/query-replace))) +#+END_SRC + +* Working Layout +While editing any file on disk is easy enough, I like the mental context switch associated with a full-screen window frame showing all the buffers of a /project task/ (often a direct link to a repository project, but not always). +** Projects +While I really don't /need/ all the features that [[https://github.com/bbatsov/projectile][projectile]] provides, it has all the features I do need, and is easy enough to install. I am referring to the fact that I /could/ use the built-in =project.el= system (see [[https://cestlaz.github.io/post/using-emacs-79-project/][this essay]] for details on what I mean as an alternative). + +#+BEGIN_SRC emacs-lisp +(use-package projectile + :custom + (projectile-sort-order 'recentf) + :config + (ha-leader + "p" '(:ignore t :which-key "projects") + "p W" '("initialize workspace" . ha-workspace-initialize) + "p n" '("new project space" . ha-project-persp) + "p !" '("run cmd in project root" . projectile-run-shell-command-in-root) + "p &" '("async cmd in project root" . projectile-run-async-shell-command-in-root) + "p a" '("add new project" . projectile-add-known-project) + "p b" '("switch to project buffer" . projectile-switch-to-buffer) + "p c" '("compile in project" . projectile-compile-project) + "p C" '("repeat last command" . projectile-repeat-last-command) + "p d" '("remove known project" . projectile-remove-known-project) + "p e" '("edit project .dir-locals" . projectile-edit-dir-locals) + "p f" '("find file in project" . projectile-find-file) + "p g" '("configure project" . projectile-configure-project) + "p i" '("invalidate project cache" . projectile-invalidate-cache) + "p k" '("kill project buffers" . projectile-kill-buffers) + "p o" '("find other file" . projectile-find-other-file) + "p p" '("switch project" . projectile-switch-project) + "p r" '("find recent project files" . projectile-recentf) + "p R" '("run project" . projectile-run-project) + "p s" '("save project files" . projectile-save-project-buffers) + "p T" '("test project" . projectile-test-project))) +#+END_SRC +** Workspaces +A /workspace/ (at least to me) requires a quick jump to a collection of buffer windows organized around a project or task. For this, I'm basing my work on the [[https://github.com/nex3/perspective-el][perspective.el]] project. + +I build a Hydra to dynamically list the current projects as well as select the project. +To do this, we need a way to generate a string of the perspectives in alphabetical order: + +#+BEGIN_SRC emacs-lisp + (defun ha--persp-label (num names) + "Return string of numbered elements. NUM is the starting + number and NAMES is a list of strings." + (when names + (concat + (format " %d: %s" ; Shame that the following doesn't work: + num ; (propertize (number-to-string num) :foreground "#00a0") + (car names)) ; Nor does surrounding the number with underbars. + (ha--persp-label (1+ num) (cdr names))))) + + (defun ha-persp-labels () + "Return a string of numbered elements from a list of names." + (ha--persp-label 1 (sort (hash-table-keys (perspectives-hash)) 's-less?))) +#+END_SRC + +Build the hydra as well as configure the =perspective= project. + +#+BEGIN_SRC emacs-lisp + (use-package perspective + :custom + (persp-modestring-short t) + (persp-sort 'name) + (persp-show-modestring t) + + :config + (persp-mode +1) + (defhydra hydra-workspace-leader (:color blue :hint nil) " + Workspaces- %s(ha-persp-labels) + _n_: new project _r_: rename _a_: add buffer _l_: load worksp + _]_: next worksp _d_: delete _b_: goto buffer _s_: save worksp + _[_: previous _W_: init all _k_: remove buffer + " + ("TAB" persp-switch) + ("1" (persp-switch-by-number 1)) + ("2" (persp-switch-by-number 2)) + ("3" (persp-switch-by-number 3)) + ("4" (persp-switch-by-number 4)) + ("5" (persp-switch-by-number 5)) + ("6" (persp-switch-by-number 6)) + ("7" (persp-switch-by-number 7)) + ("8" (persp-switch-by-number 8)) + ("9" (persp-switch-by-number 9)) + ("0" (persp-switch-by-number 0)) + ("n" ha-project-persp) + ("]" persp-next :color pink) + ("[" persp-prev :color pink) + ("r" persp-rename) + ("d" persp-kill) + ("W" ha-workspace-initialize) + ("a" persp-add-buffer) + ("b" persp-switch-to-buffer) + ("k" persp-remove-buffer) + ("K" persp-kill-buffer) + ("s" persp-state-save) + ("l" persp-state-load) + ("q" nil) + ("C-g" nil)) + + (ha-leader "TAB" '("workspaces" . hydra-workspace-leader/body))) +#+END_SRC +*** Predefined Workspaces +First step is to get rid of the /recent/ feature, as I don't really use that. +#+BEGIN_SRC emacs-lisp :tangle no +(recentf-mode -1) +(remove-hook 'kill-emacs-hook 'recentf-cleanup) +(remove-hook 'kill-emacs-hook 'save-place-kill-emacs-hook) +(remove-hook 'kill-emacs-hook 'savehist-autosave) +#+END_SRC + +Let's describe a list of startup project workspaces. This way, I don't need the clutter of the recent state, but also get back to a state of mental normality. +Granted, this list is essentially a list of projects that I'm currently developing, so I expect this to change often. + +#+BEGIN_SRC emacs-lisp +(defvar ha-workspace-projects-personal + '(("projects" "~/projects" ("breathe.org" "tasks.org")) + ("personal" "~/personal" ("general.org")) + ("technical" "~/technical" ("ansible.org")) + ("hamacs" "~/other/hamacs" ("README.org" "ha-config.org")) + ("rpg" "~/Dropbox/org/rpg" ("workdavians-dragon-heist.org" "dragon-heist.org")) + ("dm-work" "~/Dropbox/org/rpg-dm" ("README-mythic.org" "rpgdm.el"))) + "List of default projects with a name.") +#+END_SRC + +Given a list of information about project-workspaces, can we just create them all? + +#+BEGIN_SRC emacs-lisp +(defun ha-workspace-initialize (&optional projects) + "Precreate workspace projects from a PROJECTS list. +Each entry in the list is a list containing: + - name (as a string) + - project root directory + - a optional list of files to display" + (interactive) + (unless projects + (setq projects ha-workspace-projects-personal)) + + (dolist (project projects) + (-let (((name root files) project)) + (message "Creating workspace: %s (from %s)" name root) + (ha-project-persp root name files)))) +#+END_SRC +Often, but not always, I want a perspective based on an actual Git repository, e.g. a project. Projectile keeps state of a "project" based on the current file loaded, so we /combine/ the two projects by first choosing from a list of /known projects/ and then creating a perspective based on the name. To pin the perspective to a project, we just need to load a file from it, e.g. Like a README or something. + +#+BEGIN_SRC emacs-lisp +(defun ha-project-persp (project &optional name files) + "Create a new perspective, and then switch to the PROJECT using projectile. +If NAME is not given, then figure it out based on the name of the +PROJECT. If FILES aren't specified, then see if there is a +README. Otherwise, pull up a dired." + (interactive (list (projectile-completing-read "Project: " projectile-known-projects))) + (when (f-directory-p project) + (unless name + (setq name (f-filename project))) + (persp-switch name) + + ;; Unclear if the following is actually necessary. + (ignore-errors + (projectile-add-known-project root) + (projectile-switch-project-by-name root)) + + ;; To pin a project in projectile to the perspective, we need to load a file + ;; from that project. The README will do, or at least, the dired of it. + (if files + (ha--project-show-files project files) + (if-let ((readme (f-join project "README*"))) + (find-file readme t) + (dired project))))) +#+END_SRC +Displaying a few files? Well, when /starting/ I am only showing one or two files (maybe three), so we will split the window horizontally for each file. + +#+BEGIN_SRC emacs-lisp + (defun ha--project-show-files (root files) + "Display a list of FILES in a project ROOT directory. + Each file gets its own window (so don't make the list of files + long)." + (message "Loading files from %s ... %s" root files) + (let* ((file (car files)) + (more (cdr files)) + (filename (format "%s/%s" root file))) + (find-file filename) + (when more + (split-window-horizontally) + (ha--project-show-files root more)))) +#+END_SRC +* Applications +Can we really call these /applications/? +** Magit +Can not live without [[https://magit.vc/][Magit]], a Git porcelain for Emacs. I stole the bulk of this work from Doom Emacs. +#+BEGIN_SRC emacs-lisp + (use-package magit + :config + (ha-leader + "g" '(:ignore t :which-key "git") + "g /" '("Magit dispatch" . magit-dispatch) + "g ." '("Magit file dispatch" . magit-file-dispatch) + "g b" '("Magit switch branch" . magit-branch-checkout) + + "g g" '("Magit status" . magit-status) + "g s" '("Magit status here" . magit-status-here) + "g D" '("Magit file delete" . magit-file-delete) + "g B" '("Magit blame" . magit-blame-addition) + "g C" '("Magit clone" . magit-clone) + "g F" '("Magit fetch" . magit-fetch) + "g L" '("Magit buffer log" . magit-log-buffer-file) + "g R" '("Revert file" . vc-revert) + "g S" '("Git stage file" . magit-stage-file) + "g U" '("Git unstage file" . magit-unstage-file) + + "g f" '(:ignore t :which-key "find") + "g f f" '("Find file" . magit-find-file) + "g f g" '("Find gitconfig file" . magit-find-git-config-file) + "g f c" '("Find commit" . magit-show-commit) + + "g l" '(:ignore t :which-key "list") + "g l r" '("List repositories" . magit-list-repositories) + "g l s" '("List submodules" . magit-list-submodules) + + "g o" '(:ignore t :which-key "open") + + "g c" '(:ignore t :which-key "create") + "g c r" '("Initialize repo" . magit-init) + "g c R" '("Clone repo" . magit-clone) + "g c c" '("Commit" . magit-commit-create) + "g c f" '("Fixup" . magit-commit-fixup) + "g c b" '("Branch" . magit-branch-and-checkout))) +#+END_SRC + +Let's extend Magit with [[https://github.com/magit/forge][Magit Forge]] for working with Github and Gitlab: +#+BEGIN_SRC emacs-lisp + (use-package forge + :after magit + :config + (ha-leader + "g '" '("Forge dispatch" . forge-dispatch) + "g f i" '("Find issue" . forge-visit-issue) + "g f p" '("Find pull request" . forge-visit-pullreq) + + "g l i" '("List issues" . forge-list-issues) + "g l p" '("List pull requests" . forge-list-pullreqs) + "g l n" '("List notifications" . forge-list-notifications) + + "g o r" '("Browse remote" . forge-browse-remote) + "g o c" '("Browse commit" . forge-browse-commit) + "g o i" '("Browse an issue" . forge-browse-issue) + "g o p" '("Browse a pull request" . forge-browse-pullreq) + "g o i" '("Browse issues" . forge-browse-issues) + "g o P" '("Browse pull requests" . forge-browse-pullreqs) + + "g c i" '("Issue" . forge-create-issue) + "g c p" '("Pull request" . forge-create-pullreq))) +#+END_SRC + +The [[https://github.com/emacsmirror/git-timemachine][git-timemachine]] project is cool: +#+BEGIN_SRC emacs-lisp +(use-package git-timemachine + :config + (ha-leader "g t" '("git timemachine" . git-timemachine))) +#+END_SRC + +Using the [[https://github.com/emacsmirror/gist][gist package]] to write code snippets on either [[https://gist.github.com/][Github]]: +#+BEGIN_SRC emacs-lisp + (use-package gist + :config + (ha-leader + "g G" '(:ignore t :which-key "gists") + "g l g" '("gists" . gist-list) + "g G l" '("list" . gist-list) ; Lists your gists in a new buffer. + "g G r" '("region" . gist-region) ; Copies Gist URL into the kill ring. + "g G R" '("private region" . gist-region-private) ; Explicitly create a private gist. + "g G b" '("buffer" . gist-buffer) ; Copies Gist URL into the kill ring. + "g G B" '("private buffer" . gist-buffer-private) ; Explicitly create a private gist. + "g c g" '("gist" . gist-region-or-buffer) ; Post either the current region, or buffer + "g c G" '("private gist" . gist-region-or-buffer-private))) ; create private gist from region or buffer +#+END_SRC +** Web Browsing +*** EWW +Web pages look pretty good with EWW, but I'm having difficulty getting it to render a web search from DuckDuck. + + +#+BEGIN_SRC emacs-lisp +(use-package eww + :init + (setq browse-url-browser-function 'eww-browse-url + browse-url-secondary-browser-function 'browse-url-default-browser + eww-browse-url-new-window-is-tab nil + shr-use-colors nil + shr-use-fonts t ; I go back and forth on this one + ; shr-discard-aria-hidden t + shr-bullet "• " + shr-inhibit-images nil ; Gotta see the images + ; shr-blocked-images '(svg) + ; shr-folding-mode nil + url-privacy-level '(email)) + + :config + (define-key eww-mode-map (kbd "L") #'eww-list-bookmarks) + (define-key eww-buffers-mode-map (kbd "q") #'eww-bookmark-kill) + (define-key eww-bookmark-mode-map (kbd "q") #'eww-bookmark-kill) + + (use-package ace-link + :config + (ace-link-setup-default))) +#+END_SRC +** Feed Reader + +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. + +By setting this variable, we configure elfeed to use elfeed: + +#+BEGIN_SRC emacs-lisp +(setq rmh-elfeed-org-files (list (f-join hamacs-source-dir "my-feeds.org"))) +#+END_SRC + +While I would like to share the /status/ of my reads, so ... + +#+BEGIN_SRC emacs-lisp +(use-package elfeed + :config + (setq elfeed-db-directory "~/dropbox/.elfeed/") + (evil-define-key 'normal elfeed-show-mode-map (kbd "q") 'delete-window) + (evil-define-key 'normal elfeed-search-mode-map (kbd "r") 'ha/elfeed-tag-unread) + (evil-define-key 'normal elfeed-search-mode-map (kbd "R") 'elfeed-search-update--force) + + (use-package elfeed-org + :config + (elfeed-org))) + +(defun ha/elfeed-tag-unread () + (interactive) + (elfeed-search-untag-all 'unread) + (elfeed-search-update)) +#+END_SRC + +According to Ben Maughan and [[http://pragmaticemacs.com/emacs/to-eww-or-not-to-eww/][this Pragmatic Emacs essay]], we could easily browse an article in the GUI browser instead of EWW with capital B: + +#+BEGIN_SRC emacs-lisp +(defun bjm/elfeed-show-visit-gui () + "Wrapper for elfeed-show-visit to use gui browser instead of eww" + (interactive) + (let ((browse-url-generic-program "/usr/bin/open")) + (elfeed-show-visit t))) + +(define-key elfeed-show-mode-map (kbd "B") 'bjm/elfeed-show-visit-gui) +#+END_SRC + +** VTerm + +I'm not giving up on Eshell, but I am playing around with [[https://github.com/akermu/emacs-libvterm][vterm]], and it is pretty good, but I use it primarily as a more reliable approach to [[file:ha-remoting.org][a remote shell]]. + +VTerm has an issue (at least for me) with M-Backspace not deleting the previous word, and yeah, I want to make sure that both keystrokes do the same thing. + +#+BEGIN_SRC emacs-lisp +(use-package vterm + :init + (setq vterm-shell "/usr/local/bin/fish") + ;; Granted, I seldom pop out to the shell except during code demonstrations, + ;; but I like how C-p/C-n jumps up to each prompt entry using this setting + ;; that works with my prompt: + (setq vterm-use-vterm-prompt-detection-method nil + term-prompt-regexp "^.* $ ") + :config + (dolist (k '("" "")) + (define-key vterm-mode-map (kbd k) + (lambda () (interactive) (vterm-send-key (kbd "C-w"))))) + + (advice-add 'vterm-copy-mode :after 'evil-normal-state)) +#+END_SRC + +The advantage of running terminals in Emacs is the ability to copy text without a mouse. For that, hit ~C-c C-t~ to enter a special copy-mode. If I go into this mode, I might as well also go into normal mode to move the cursor. + +*Note:* To exit the copy-mode (and copy the selected text to the clipboard), hit ~Return~. + +Hrm. Seems that I might want a function to copy the output of the last command to a register, or even an org-capture... +** Fish Shell +#+BEGIN_SRC emacs-lisp +(use-package fish-mode + :mode ("\\.fish" . fish-mode) + :hook (fish-mode . (lambda () (add-hook 'before-save-hook 'fish_indent-before-save)))) +#+END_SRC +* Technical Artifacts :noexport: +Let's provide a name so that the file can be required: + +#+BEGIN_SRC emacs-lisp :exports none +(provide 'ha-config) +;;; ha-config.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: A literate programming file for configuring Emacs. + +#+PROPERTY: header-args:sh :tangle no +#+PROPERTY: header-args:emacs-lisp :tangle yes +#+PROPERTY: header-args :results none :eval no-export :comments no + +#+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 diff --git a/ha-display.org b/ha-display.org new file mode 100644 index 0000000..9c581f7 --- /dev/null +++ b/ha-display.org @@ -0,0 +1,267 @@ +#+TITLE: Emacs Graphical Display Configuration +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2020-09-10 +#+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: +#+END_SRC +* Dashboard +The [[https://github.com/emacs-dashboard/emacs-dashboard][emacs-dashboard]] project makes a nicer startup screen. +#+BEGIN_SRC emacs-lisp + (use-package dashboard + :init + (setq dashboard-banner-logo-title "Welcome to Emacs" + dashboard-startup-banner "~/other/hamacs/support/levitating-gnu.png" + dashboard-center-content t + dashboard-set-init-info t + dashboard-projects-switch-function 'projectile-persp-switch-project + dashboard-items '((projects . 5) + ;; (agenda . 5) + (bookmarks . 5))) + :config + (dashboard-setup-startup-hook) + + (setq dashboard-footer-messages (list (ha--dad-joke)))) +#+END_SRC +* Mode Line +Let's install and load some of packages from the [[https://github.com/hlissner/doom-emacs][Doom Emacs]] project, like [[https://github.com/seagle0128/doom-modeline][doom-modeline]] and maybe the themes: +#+BEGIN_SRC emacs-lisp + (use-package doom-modeline + :init + (setq doom-modeline-minor-modes nil + doom-modeline-buffer-encoding nil + doom-modeline-percent-position nil) + :config + (doom-modeline-mode +1)) + + (use-package doom-themes) +#+END_SRC +* Themes +One does get used to a particular collection of colors. Mine is Tomorrow: +#+BEGIN_SRC emacs-lisp +(use-package color-theme-sanityinc-tomorrow) +#+END_SRC +Most of the time, Emacs is on my desk is a darkened room, so I choose the dark theme: + +#+BEGIN_SRC emacs-lisp +(defun laptop-inside () + (interactive) + (load-theme 'sanityinc-tomorrow-night t) + (set-face-attribute 'region nil :background "#000096") + ;; font-lock-comment-face #8a8b8a + (set-face-attribute 'mode-line nil :background "black") + (set-face-attribute 'mode-line-inactive nil :background "#333333")) +#+END_SRC + +But, when feeling adventurous, I /sometimes/ take my laptop outside: + +#+BEGIN_SRC emacs-lisp +(defun laptop-in-the-sun () + (interactive) + (load-theme 'sanityinc-tomorrow-day t) + (set-face-attribute 'region nil :background "orange1") + ;; font-lock-comment-face #8a8b8a + (set-face-attribute 'mode-line nil :background "#cccccc") + (set-face-attribute 'mode-line-inactive nil :background "#888888")) +#+END_SRC + +Oh, and turn off the line highlighting: + +#+BEGIN_SRC emacs-lisp +(global-hl-line-mode -1) +#+END_SRC + +And of course, the default is /inside/ where it is dark and safe: + +#+BEGIN_SRC emacs-lisp +(laptop-inside) +#+END_SRC +* Full Size Frame + +Taken from [[https://emacsredux.com/blog/2020/12/04/maximize-the-emacs-frame-on-startup/][this essay]], I figured I would start the initial frame automatically in fullscreen, but not any subsequent frames (as this could be part of the capturing system). + +#+BEGIN_SRC emacs-lisp :tangle no +(add-to-list 'initial-frame-alist '(fullscreen . maximized)) +#+END_SRC + +* Font Configuration +Am I ever really ever satisfied with any font? I regularly change my font based on the monospace du jour... [[http://blogs.adobe.com/typblography/2012/09/source-code-pro.html][Source Code Pro]] is attractive, and has been a staple on every programmers' screen. However, we all want ligatures, [[https://github.com/i-tu/Hasklig][Hasklig]] is a nice font that is thinner and easier to read than [[https://github.com/tonsky/FiraCode][Fira]], but [[https://typeof.net/Iosevka/][Iosevka]] seems to have it all. Oh, Microsoft just gave us [[https://docs.microsoft.com/en-us/windows/terminal/cascadia-code][Cascadia]] and that seems shiny. However, the [[https://github.com/ryanoasis/nerd-fonts][Nerd Font project]] adds the ligatures as well as all the other niceties to a font. +** Choosing a Font +I stole the following idea from [[https://protesilaos.com/dotemacs/#h:9035a1ed-e988-4731-89a5-0d9e302c3dea][Protesilaos Stavrou's dotfile configuration]], and the following should minimally be /readable/: + | Similarities | Regular | + |--------------+----------------------------| + | ()[]{}<>«»‹› | ABCDEFGHIJKLMNOPQRSTUVWXYZ | + | 6bB8& | abcdefghijklmnopqrstuvwxyz | + | 0ODdoaoOQGC | 0123456789 | + | I1tilIJL | ~!@#$%^&*+ | + | !¡ij | `'"‘’“”.,;:… | + | 5$§SsS5 | ()[]{}—-_=<>/\ | + | 17ZzZ2 | ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ | + | 9gqpG6 | αβγδεζηθικλμνξοπρστυφχψω | + | hnmMN | | + | uvvwWuuwvy | | + | x×X | #include // <= quickly. | + | .,·°% | int main(int argc, char **argv) { | + | ¡!¿? | long il1[]={1-2/3.4,5+6==7/8}; | + | :; | int OxFaced=0xBAD||"[{(CQUINE"; | + | `''"‘’“” | unsigned O0,l1,Z2,S5,G6,B8__XY; | + | —-~≈=≠+*_ | printf("@$Hamburgefo%c`",'\n'); | + | …⋯ | return ~7&8^9?0:l1|!"j->k+=*w"; | + | ... | | + + +The following is from [[https://source-foundry.github.io/Hack/font-specimen.html][Hack's website]]: +#+BEGIN_SRC c +// The four boxing wizards jump +#include // <= quickly. +int main(int argc, char **argv) { + long il1[]={1-2/3.4,5+6==7/8}; + int OxFaced=0xBAD||"[{(CQUINE"; + unsigned O0,l1,Z2,S5,G6,B8__XY; + printf("@$Hamburgefo%c`",'\n'); + return ~7&8^9?0:l1|!"j->k+=*w"; +} +#+END_SRC + +To install a font, I use the following command on my Mac: +#+BEGIN_SRC sh +brew tap homebrew/cask-fonts +brew install --cask font-hack-nerd-font +#+END_SRC +** Specifying a Font +My /current/ favorite font is actually the top list of fonts that may be installed on my system (they usually are): +#+BEGIN_SRC emacs-lisp + (defvar ha/fixed-font + (when window-system + (cond ((x-list-fonts "Hack Nerd Font") "Hack Nerd Font") + ((x-list-fonts "Cousine Nerd Font") "Cousine Nerd Font") + ((x-list-fonts "Iosevka Nerd Font") "Iosevka Nerd Font") + ((x-list-fonts "Iosevka") "Iosevka") + ((x-list-fonts "FantasqueSansMono Nerd Font") "FantasqueSansMono Nerd Font") + ((x-list-fonts "Monoid Nerd Font") "Monoid Nerd Font") + ((x-list-fonts "Hasklig") "Hasklig") + ((x-list-fonts "Cascadia Code PL") "Cascadia Code PL") + ((x-list-fonts "Source Code Pro") "Source Code Pro") + ((x-list-fonts "Anonymous Pro") "Anonymous Pro") + (t "monospaced"))) + "My fixed width font based on what is installed, `nil' if not defined.") +#+END_SRC + +Force something as well: +#+BEGIN_SRC emacs-lisp :tangle no +(setq ha/fixed-font "Hack Nerd Font") +#+END_SRC + +I probably don't need to have such a ranking system, as chances are really good that I'll have all of them installed. Still. +#+BEGIN_SRC emacs-lisp +(defvar ha/variable-font + (when window-system + (cond ((x-list-fonts "Overpass") "Overpass") + ((x-list-fonts "Source Sans Pro") "Source Sans Pro") + ((x-list-fonts "Lucida Grande") "Lucida Grande") + ((x-list-fonts "Verdana") "Verdana") + ((x-family-fonts "Sans Serif") "Sans Serif") + (nil (warn "Cannot find a Sans Serif Font. Install Source Sans Pro.")))) + "My variable width font available to org-mode files and whatnot.") +#+END_SRC + +Simple function that gives me the font information based on the size I need. +This calls =set-frame-font=, but also sets the monospaced font for org code blocks. + +#+BEGIN_SRC emacs-lisp :results none +(defun ha/set-favorite-font-size (size) + (let ((fav-font (format "%s-%d" ha/fixed-font size))) + (set-frame-font fav-font nil t) + + ;; When using variable-pitch in org, we need to specifically set the + ;; fixed-pitch as my default fixed-pitched font. + (custom-theme-set-faces + 'user + `(variable-pitch ((t (:family ,ha/variable-font :slant normal :weight normal :height 1.1 :width normal)))) + `(fixed-pitch ((t (:family ,ha/fixed-font :slant normal :weight normal :height 1.0 :width normal))))))) +#+END_SRC + + Define a few /interactive/ functions to quickly adjusting the font size based on my computing scenario: + +#+BEGIN_SRC emacs-lisp +(defun ha/mac-monitor-fontsize () + "Quickly set reset my font size when I connect my laptop to a monitor on a Mac." + (interactive) + (ha/set-favorite-font-size 13)) + +(defun ha/linux-monitor-fontsize () + "Quickly set reset my font size when I connect my laptop to a monitor on Linux." + (interactive) + (ha/set-favorite-font-size 12)) + +(defun ha/mac-laptop-fontsize () + "Quickly set reset my font size when I disconnect my laptop to a monitor from a Mac." + (interactive) + (ha/set-favorite-font-size 32)) + +(defun ha/linux-laptop-fontsize () + "Quickly set reset my font size when I disconnect my laptop to a monitor from Linux." + (interactive) + (ha/set-favorite-font-size 14)) +#+END_SRC + +Which font to choose? + +#+BEGIN_SRC emacs-lisp +(if (eq system-type 'gnu/linux) + (ha/linux-laptop-fontsize) + (ha/mac-monitor-fontsize)) +#+END_SRC +* Ligatures + +Seems like getting ligatures to work in Emacs has been a Holy Grail. On Mac, I've used special builds that have hacks, but now with Emacs 27 and Harfbuzz, I should be able to get --> to look like it should. + +#+BEGIN_SRC emacs-lisp :tangle no +(setq prettify-symbols-unprettify-at-point 'right-edge) + +(global-prettify-symbols-mode +1) +(prettify-symbols-mode +1) +#+END_SRC + +Note, in Doom, is appears we have a =ligatures= module. +We'll start using that instead, but changing it in [[file:general-programming.org][general-programming]] file. + +* Technical Artifacts :noexport: + +Let's provide a name so that the file can be required: + +#+BEGIN_SRC emacs-lisp :exports none +(provide 'ha-display) +;;; ha-display.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: A literate programming file to configure the Emacs UI. + +#+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 diff --git a/ha-org-word-processor.org b/ha-org-word-processor.org new file mode 100644 index 0000000..7745330 --- /dev/null +++ b/ha-org-word-processor.org @@ -0,0 +1,204 @@ +#+TITLE: Org As A Word Processor +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2020-09-10 +#+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: +#+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. +* General Org Settings +Since I use ellipsis in my writing... I like to /change/ how org renders a collapsed heading. + +#+BEGIN_SRC emacs-lisp + (setq org-pretty-entities t + org-ellipsis "⤵" ; …, ➡, ⚡, ▼, ↴, , ∞, ⬎, ⤷, ⤵ + org-agenda-breadcrumbs-separator " ❱ " + org-src-fontify-natively t ;; Pretty code blocks + org-hide-emphasis-markers t) +#+END_SRC +* Org Beautify +I really want to use the Org Beautify package, but it overrides my darker themes (and all I really want is headlines to behave). + +First step is to make all Org header levels to use the variable font, and be the same color as the default text: + +#+BEGIN_SRC emacs-lisp +(when window-system + (let ((default-color (face-attribute 'default :foreground))) + (dolist (face '(org-level-1 org-level-2 org-level-3 org-level-4 org-level-5 org-level-6 org-level-7 org-level-8)) + (set-face-attribute face nil + :foreground default-color :weight 'bold :font ha/variable-font)))) +#+END_SRC + +Next, we just need to change the header sizes: + +#+BEGIN_SRC emacs-lisp +(when window-system + (set-face-attribute 'org-level-1 nil :height 2.2 :inherit 'default) + (set-face-attribute 'org-level-2 nil :height 1.8 :inherit 'default) + (set-face-attribute 'org-level-3 nil :height 1.4 :inherit 'default) + (set-face-attribute 'org-level-4 nil :height 1.1 :inherit 'default)) +#+END_SRC +* Superstar +Now that headers are noticeable, I have no reason to see a number of asterisks. Once I used the [[https://github.com/sabof/org-bullets][org-bullets]] package, but believe we've replaced it with [[https://github.com/integral-dw/org-superstar-mode][org-superstar-mode]], so the following is an improvement, especially with the sub-bullets: + +#+BEGIN_SRC emacs-lisp +(use-package org-superstar + :init + (add-hook 'org-mode 'org-superstar-mode) + (setq org-superstar-headline-bullets-list '("▶") + org-superstar-special-todo-items t + org-superstar-todo-bullet-alist t + org-superstar-prettify-item-bullets t + org-superstar-item-bullet-alist '((42 . "⊙") ; * + (43 . "⁍") ; + + (45 . "•")))) +#+END_SRC + +Oh, and as I indent lists, they should change the /bulleting/ in a particular sequence. If I begin with an =*= asterisk, I walk down the chain, but with the dashed bullets (my default choice), I just stay with dashed bullets. Numeric bullets should cycle: + +#+BEGIN_SRC emacs-lisp +(setq org-list-demote-modify-bullet '(("*" . "+") ("+" . "-") ("-" . "-") + ("1." . "a.") ("a." . "1."))) +#+END_SRC + +Since the following code does not work like I would have expected: +#+BEGIN_SRC emacs-lisp :tangle no +(setq org-hide-leading-stars t) +#+END_SRC + +I add a hook to standard Org, and since this is a Lisp-2, I can get away with: +#+BEGIN_SRC emacs-lisp +(defun org-hide-leading-stars () + (let* ((keyword + `(("^\\(\\*+ \\)\\s-*\\S-" ; Do not hide empty headings! + (1 (put-text-property (match-beginning 1) (match-end 1) 'invisible t) + nil))))) + (font-lock-add-keywords nil keyword))) + + (add-hook 'org-mode-hook 'org-hide-leading-stars) +#+END_SRC +* Checkboxes +According to an idea by [[https://jft.home.blog/2019/07/17/use-unicode-symbol-to-display-org-mode-checkboxes/][Huy Trần]], we can prettify the list checkboxes as well: + +#+BEGIN_SRC emacs-lisp +(defun ha/org-prettify-checkboxes () + "Beautify Org Checkbox Symbol" + (push '("[ ]" . "☐") prettify-symbols-alist) + (push '("[X]" . "☒") prettify-symbols-alist) + (push '("[-]" . "☐-") prettify-symbols-alist) + (prettify-symbols-mode)) +#+END_SRC + +And now we can attach it to a newly loaded org files: + +#+BEGIN_SRC emacs-lisp +(add-hook 'org-mode-hook 'ha/org-prettify-checkboxes) +#+END_SRC + +To make it more distinguishable, he also changed the colors: + +#+BEGIN_SRC emacs-lisp +(defface org-checkbox-done-text + '((t (:foreground "#71696A" :strike-through t))) + "Face for the text part of a checked org-mode checkbox.") + +(font-lock-add-keywords + 'org-mode + `(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" + 1 'org-checkbox-done-text prepend)) + 'append) +#+END_SRC +* Padding +The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks places extra space before and after headers and blocks (essentially leading), to create a more word-processor-y experience. Great idea, however, I have spent a lot of extra time entering blank lines before and after my headers and blocks: + +#+BEGIN_SRC emacs-lisp +(use-package org-padding + :straight (org-padding :type git :host github :repo "TonCherAmi/org-padding") + :hook + (org-mode . org-padding-mode) + :config + (setq org-padding-block-begin-line-padding '(0.5 . 0.3) + org-padding-block-end-line-padding '(0.1 . 0.5) + org-padding-heading-padding-alist + '((4.0 . 1.5) (3.0 . 0.5) (3.0 . 0.5) (3.0 . 0.5) (2.5 . 0.5) (2.0 . 0.5) (1.5 . 0.5) (0.5 . 0.5)))) +#+END_SRC +However, I'm just going to have to write a function to clean this. +#+BEGIN_SRC emacs-lisp +(defun ha/remove-superfluous-org-padding () + (interactive) + (goto-char (point-min)) + (ha/remove-org-header-padding) + (goto-char (point-min)) + (ha/remove-org-block-padding)) + +(defun ha/remove-org-header-padding () + ;; (goto-char (point-min)) + (while (re-search-forward (rx (optional bol (zero-or-more space) eol "\n") + (group bol (one-or-more "*") (one-or-more space) (one-or-more any) "\n") + (optional bol (zero-or-more space) eol "\n")) nil t) + (replace-match (match-string 1) nil :no-error))) + +(defun ha/remove-org-block-padding () + ;; (goto-char (point-min)) + (while (re-search-forward (rx (optional bol (zero-or-more space) eol "\n") + (group bol (zero-or-more space) "#+BEGIN" (one-or-more any) eol "\n" + (zero-or-more (group bol (zero-or-more any) eol "\n")) + bol (zero-or-more space) "#+END" (zero-or-more any) eol "\n") + (optional bol (zero-or-more space) eol "\n")) nil t) + (replace-match (match-string 1) nil :no-error))) +#+END_SRC +Now that is some complicated regular expressions. +* Pasting +I like the idea that I will paste HTML text from the clipboard and have it converted to org-formatted text: +#+BEGIN_SRC emacs-lisp :results silent +(defun ha/org-paste () + (interactive) + (if (eq system-type 'gnu/linux) + (shell-command "xclip -t text/html -o | pandoc -r html -w org" t))) +#+END_SRC +* Presentations +The [[https://github.com/takaxp/org-tree-slide][org-tree-slide]] still seems to be the best presentation tool for Org files, but I really need to issue a pull request to fix a few warnings. +#+BEGIN_SRC emacs-lisp +(use-package org-tree-slide + :init + (setq org-tree-slide-skip-outline-level 4) + :config + (org-tree-slide-simple-profile)) +#+END_SRC +* Technical Artifacts :noexport: +Let's provide a name so that the file can be required: +#+BEGIN_SRC emacs-lisp :exports none +(provide 'ha-org-word-processor) +;;; ha-org-word-processor.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: A literate programming file for making Org file more readable. + +#+PROPERTY: header-args:sh :tangle no +#+PROPERTY: header-args:emacs-lisp :tangle yes +#+PROPERTY: header-args :results none :eval no-export :comments no + +#+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 diff --git a/ha-org.org b/ha-org.org new file mode 100644 index 0000000..d5ce021 --- /dev/null +++ b/ha-org.org @@ -0,0 +1,332 @@ +#+TITLE: General Org-Mode Configuration +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+DATE: 2020-09-18 +#+FILETAGS: :emacs: + +A literate programming file for configuring org-mode and those files. +# *Note:* After each change, /tangle it/ to the source destination with ~C-c C-v t~. + +#+BEGIN_SRC emacs-lisp :exports none +;; +;; 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: +;; /home/howard/other/hamacs/ha-org.org +;; And tangle the file to recreate this one. +;; +;;; Code: +(use-package org + :mode ("\\.org" . org-mode) ; Addresses an odd warning + :init +#+END_SRC +* Initialization Section +Org is an important part of my Emacs world, and with a lot of customization (even though Spacemacs and Doom do a good job getting things started). + +#+BEGIN_SRC emacs-lisp + (setq org-return-follows-link t + org-startup-indented t + ;; Speed Commands: If point is at the beginning of a headline or code + ;; block in org-mode, single keys do fun things. See + ;; org-speed-command-help for details (or hit the ? key at a headline). + org-use-speed-commands t + + org-directory "~/personal" + org-default-notes-file "~/personal/general-notes.txt" + + org-enforce-todo-dependencies t ; Can't close a task until subtasks are done + org-agenda-dim-blocked-tasks t + org-log-done 'time + + org-completion-use-ido t + org-outline-path-complete-in-steps nil + org-src-tab-acts-natively t + org-agenda-span 'day ; Default is 'week + org-confirm-babel-evaluate nil) +#+END_SRC +Overcoming a bug: +#+BEGIN_SRC emacs-lisp +(defun org-clocking-buffer (&rest ignored)) +#+END_SRC +* Configuration Section +The following sections assume that org has been loaded, as this begin the configuration section: +#+BEGIN_SRC emacs-lisp +:config +#+END_SRC +I pretend that my org files are word processing files that wrap automatically: +#+BEGIN_SRC emacs-lisp +(add-hook 'org-mode-hook #'visual-line-mode) +#+END_SRC +Files that end in =.txt= are still org files to me: +#+BEGIN_SRC emacs-lisp +(add-to-list 'auto-mode-alist '("\\.txt\\'" . org-mode)) +#+END_SRC +Many of the files that I edit close some, but not all, of the headers using a file variable. Let's allow that to not insist that I need to approve that: + +#+BEGIN_SRC emacs-lisp +(add-to-list 'safe-local-variable-values '(org-content . 2)) +#+END_SRC +** Better Return +Hitting the ~Return~ key in an org file should format the following line based on context. For instance, at the end of a list, insert a new item. +We begin with the interactive function that calls our code only if we are at the end of the line. + +#+BEGIN_SRC emacs-lisp + (defun ha/org-return () + "If at the end of a line, do something special based on the + information about the line by calling `ha/org-special-return', + otherwise, just call `org-return' as usual." + (interactive) + (if (eolp) + (ha/org-special-return) + (org-return))) +#+END_SRC + +And bind it to the Return key: +#+BEGIN_SRC emacs-lisp +(define-key org-mode-map (kbd "RET") #'ha/org-return) +#+END_SRC + +What should we do if we are at the end of a line? + - Given a prefix, call =org-return= as usual in an org file. + - On a link, call =org-return= in order to open it. + - On a header? Let's create a new header (or maybe not). + - In a table? Let's create a new row. + - If we are really in a list, we can create a new item. + +I really should break this function into smaller bits ... + +#+BEGIN_SRC emacs-lisp +(defun ha/org-special-return (&optional ignore) + "Add new list item, heading or table row with RET. +A double return on an empty element deletes it. +Use a prefix arg to get regular RET." + (interactive "P") + (if ignore + (org-return) + (cond + ;; Open links like usual + ((eq 'link (car (org-element-context))) + (org-return)) + + ((and (org-really-in-item-p) (not (bolp))) + (if (org-element-property :contents-begin (org-line-element-context)) + (progn + (end-of-line) + (org-insert-item)) + (delete-region (line-beginning-position) (line-end-position)))) + + ;; ((org-at-heading-p) + ;; (if (string= "" (org-element-property :title (org-element-context))) + ;; (delete-region (line-beginning-position) (line-end-position)) + ;; (org-insert-heading-after-current))) + + ((org-at-table-p) + (if (-any? + (lambda (x) (not (string= "" x))) + (nth + (- (org-table-current-dline) 1) + (org-table-to-lisp))) + (org-return) + ;; empty row + (beginning-of-line) + (setf (buffer-substring + (line-beginning-position) (line-end-position)) "") + (org-return))) + + (t + (org-return))))) +#+END_SRC + +How do we know if we are in a list item? Lists end with two blank lines, so we need to make sure we are also not at the beginning of a line to avoid a loop where a new entry gets created with only one blank line. + +#+BEGIN_SRC emacs-lisp +(defun org-really-in-item-p () + "Similar to `org-in-item-p', however, this works around an +issue where the point could actually be in some =code= words, but +still be on an item element." + (save-excursion + (let ((location (org-element-property :contents-begin (org-line-element-context)))) + (when location + (goto-char location)) + (org-in-item-p)))) +#+END_SRC + +The org API allows getting the context associated with /current element/. However, this could be a line-level symbol, like paragraph or =list-item= only if the point isn't /inside/ a bold or italics item. You know how HTML distinguishes between /block/ and /inline/ elements, org doesn't. So, let's make a function that makes that distinction: + +#+BEGIN_SRC emacs-lisp +(defun org-line-element-context () + "Return the symbol of the current block element, e.g. paragraph or list-item." + (let ((context (org-element-context))) + (while (member (car context) '(verbatim code bold italic underline)) + (setq context (org-element-property :parent context))) + context)) +#+END_SRC +** Unfill Paragraph +Unfilling a paragraph joins all the lines in a paragraph into a single line. Taken [[http://www.emacswiki.org/UnfillParagraph][from here]] ... I use this all the time: + +#+BEGIN_SRC emacs-lisp +(defun unfill-paragraph () + "Convert a multi-line paragraph into a single line of text." + (interactive) + (let ((fill-column (point-max))) + (fill-paragraph nil))) +#+END_SRC +** Tasks +I need to add a /blocked/ state: + +#+BEGIN_SRC emacs-lisp +(setq org-todo-keywords '((sequence "TODO(t)" "DOING(g)" "|" "DONE(d)" ) + (sequence "BLOCKED(b)" "|" "CANCELLED(c)"))) +#+END_SRC + +And I would like to have cute little icons for those states: + +#+BEGIN_SRC emacs-lisp +(dolist (m '(org-mode org-journal-mode)) + (font-lock-add-keywords m ; A bit silly but my headers are now + `(("^\\*+ \\(TODO\\) " ; shorter, and that is nice canceled + (1 (progn (compose-region (match-beginning 1) (match-end 1) "⚑") nil))) + ("^\\*+ \\(DOING\\) " + (1 (progn (compose-region (match-beginning 1) (match-end 1) "⚐") nil))) + ("^\\*+ \\(CANCELED\\) " + (1 (progn (compose-region (match-beginning 1) (match-end 1) "✘") nil))) + ("^\\*+ \\(BLOCKED\\) " + (1 (progn (compose-region (match-beginning 1) (match-end 1) "✋") nil))) + ("^\\*+ \\(DONE\\) " + (1 (progn (compose-region (match-beginning 1) (match-end 1) "✔") nil))) + ;; Here is my approach for quickly making the + ;; initial asterisks for listing items and whatnot, + ;; appear as Unicode bullets (without actually + ;; affecting the text file or the behavior). + ("^ +\\([-*]\\) " + (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))) +#+END_SRC + +** Meetings +I've notice that while I really like taking notes in a meeting, I don't always like the multiple windows I have opened, so I created this function that I can easily call to eliminate distractions during a meeting. + +#+BEGIN_SRC emacs-lisp +(defun meeting-notes () + "Call this after creating an org-mode heading for where the notes for the meeting + should be. After calling this function, call 'meeting-done' to reset the environment." + (interactive) + (outline-mark-subtree) ; Select org-mode section + (narrow-to-region (region-beginning) (region-end)) ; Only show that region + (deactivate-mark) + (delete-other-windows) ; remove other windows + (text-scale-set 2) ; readable by others + (fringe-mode 0) + (message "When finished taking your notes, run meeting-done.")) +#+END_SRC + +Of course, I need an 'undo' feature when the meeting is over... + +#+BEGIN_SRC emacs-lisp +(defun meeting-done () + "Attempt to 'undo' the effects of taking meeting notes." + (interactive) + (widen) ; Opposite of narrow-to-region + (text-scale-set 0) ; Reset the font size increase + (fringe-mode 1) + (winner-undo)) ; Put the windows back in place +#+END_SRC +** Misc +*** Babel Blocks +Whenever I edit Emacs Lisp blocks from my tangle-able configuration files, I get a lot of superfluous warnings. Let's turn them off. + +#+BEGIN_SRC emacs-lisp +(defun disable-fylcheck-in-org-src-block () + (setq-local flycheck-disabled-checkers '(emacs-lisp-checkdoc))) + +(add-hook 'org-src-mode-hook 'disable-fylcheck-in-org-src-block) +#+END_SRC +*** 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: + +#+BEGIN_SRC emacs-lisp +(defun ha/org-next-image-number (&optional prefix) + (when (null prefix) + (if (null (buffer-file-name)) + (setq prefix "cool-image") + (setq prefix (file-name-base (buffer-file-name))))) + + (save-excursion + (goto-char (point-min)) + (let ((largest 0) + (png-reg (rx (literal prefix) "-" (group (one-or-more digit)) (or ".png" ".svg")))) + (while (re-search-forward png-reg nil t) + (setq largest (max largest (string-to-number (match-string-no-properties 1))))) + (format "%s-%02d" prefix (1+ largest))))) +#+END_SRC +*** In a PlantUML Block +To make the snippets more context aware, this predicate + +#+BEGIN_SRC emacs-lisp +(defun ha/org-nested-in-plantuml-block () + "Predicate is true if point is inside a Plantuml Source code block in org-mode." + (equal "plantuml" + (plist-get (cadr (org-element-at-point)) :language))) +#+END_SRC +* Supporting Packages +At this point, we assume that the =use-package= for org is complete, so we can close it and allow other projects to be loaded: +#+BEGIN_SRC emacs-lisp +) +#+END_SRC +** Exporters +Need a few extra exporters: +#+BEGIN_SRC emacs-lisp :tangle no +(use-package ox-md) + +(use-package ox-confluence + :load-path "~/.doom.d/elisp") +#+END_SRC + +And Graphviz configuration using [[https://github.com/ppareit/graphviz-dot-mode][graphviz-dot-mode]]: +#+BEGIN_SRC emacs-lisp +(use-package graphviz-dot-mode + :mode "\\.dot\\'" + :init + (setq tab-width 4 + graphviz-dot-indent-width 2 + graphviz-dot-auto-indent-on-newline t + graphviz-dot-auto-indent-on-braces t + graphviz-dot-auto-indent-on-semi t)) +#+END_SRC +And we can install company support: +#+BEGIN_SRC emacs-lisp :tangle no +(use-package company-graphviz-dot) +#+END_SRC +** Writegood + +The [[https://github.com/bnbeckwith/writegood-mode][writegood-mode]] highlights passive and weasel words as typed. Shame it doesn't check for dangled prepositions. + +#+BEGIN_SRC emacs-lisp +(use-package writegood-mode + :hook ((org-mode . writegood-mode))) +#+END_SRC +* Technical Artifacts :noexport: + +Let's provide a name so that the file can be required: + +#+BEGIN_SRC emacs-lisp :exports none +(provide 'ha-org) +;;; ha-org.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: A literate programming file for configuring org-mode and those files. + +#+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 diff --git a/initialize b/initialize new file mode 100755 index 0000000..d82b253 --- /dev/null +++ b/initialize @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +HAMACS_DIR=$(cd "$(dirname "$0")"; pwd) +HAMACS_DEST=$HOME/.emacs.hamacs # A symlink to ~/.emacs.d + +mkdir -p $HAMACS_DEST +mkdir -p $HAMACS_DEST/elisp + +cat > $HAMACS_DEST/init.el < +;; Maintainer: `user-full-name` <`user-mail-address`> +;; Created: `(format-time-string "%B %e, %Y")` +;; +;; This file is not part of GNU Emacs. +;; +;; +;;; Code: + +$0 + +(provide '`(file-name-base (buffer-file-name)))`) +;;; `(file-name-base (buffer-file-name)))`.el ends here \ No newline at end of file diff --git a/snippets/emacs-lisp-mode/ert-deftest b/snippets/emacs-lisp-mode/ert-deftest new file mode 100644 index 0000000..a454e5a --- /dev/null +++ b/snippets/emacs-lisp-mode/ert-deftest @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ert-deftest +# key: edt +# -- +(ert-deftest $1-test () + (should (= $0))) \ No newline at end of file diff --git a/snippets/emacs-lisp-mode/npc b/snippets/emacs-lisp-mode/npc new file mode 100644 index 0000000..4cf3824 --- /dev/null +++ b/snippets/emacs-lisp-mode/npc @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: npc +# key: npc +# -- +(defun rpgdm-npc--${1:$(replace-regexp-in-string " " "-" yas-text)} () + "Return string from a random $1." + (let ((roll (rpgdm--roll-die $2))) + (cond + ((<= roll $3) $4) + ((<= roll $5) $6))) \ No newline at end of file diff --git a/snippets/markdown-mode/h1 b/snippets/markdown-mode/h1 new file mode 100644 index 0000000..f383f46 --- /dev/null +++ b/snippets/markdown-mode/h1 @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: header +# key: h1 +# -- +${1:Header} +${1:$(make-string (string-width yas-text) ?\=)} + +$0 \ No newline at end of file diff --git a/snippets/markdown-mode/h2 b/snippets/markdown-mode/h2 new file mode 100644 index 0000000..9b20d72 --- /dev/null +++ b/snippets/markdown-mode/h2 @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: subheader +# key: h2 +# -- +${1:Header} +${1:$(make-string (string-width yas-text) ?\-)} + +$0 \ No newline at end of file diff --git a/snippets/mhtml-mode/div b/snippets/mhtml-mode/div new file mode 100644 index 0000000..2e42889 --- /dev/null +++ b/snippets/mhtml-mode/div @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: div +# key: div +# -- + + $0 + \ No newline at end of file diff --git a/snippets/org-journal-mode/__journal b/snippets/org-journal-mode/__journal new file mode 100644 index 0000000..94117ee --- /dev/null +++ b/snippets/org-journal-mode/__journal @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __journal +# key: __journal +# -- +#+TITLE: Journal Entry- `(ha/journal-file-datestamp)` + +$0 diff --git a/snippets/org-mode/__hamacs b/snippets/org-mode/__hamacs new file mode 100644 index 0000000..a961be4 --- /dev/null +++ b/snippets/org-mode/__hamacs @@ -0,0 +1,62 @@ +# -*- mode: snippet -*- +# name: __hamacs +# key: __hamacs +# -- +#+TITLE: ${1:`(->> (buffer-file-name) + (file-name-base) + (s-split-words) + (--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.} + +#+BEGIN_SRC emacs-lisp :exports none +;;; `(file-name-base (buffer-file-name)))`.el --- $2 -*- lexical-binding: t; -*- +;; +;; Copyright (C) `(format-time-string "%Y")` `user-full-name` +;; +;; Author: `user-full-name` +;; Maintainer: `user-full-name` <`user-mail-address`> +;; Created: `(format-time-string "%B %e, %Y")` +;; +;; This file is not part of GNU Emacs. +;; +;; *NB:* Do not edit this file. Instead, edit the original literate file at: +;; `(buffer-file-name)` +;; And tangle the file to recreate this one. +;; +;;; Code: +#+END_SRC + +* Introduction + +$0 + +* Technical Artifacts :noexport: + +Let's provide a name so that the file can be required: + +#+BEGIN_SRC emacs-lisp :exports none +(provide '`(file-name-base (buffer-file-name)))`) +;;; `(file-name-base (buffer-file-name)))`.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: $2 + +#+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: \ No newline at end of file diff --git a/snippets/org-mode/__mythic_rpg_overview b/snippets/org-mode/__mythic_rpg_overview new file mode 100644 index 0000000..aecf4a0 --- /dev/null +++ b/snippets/org-mode/__mythic_rpg_overview @@ -0,0 +1,24 @@ +# -*- mode: snippet -*- +# name: __mythic_rpg_overview +# key: mythic-rpg-overview +# -- +#+TITLE: ${1:`(replace-regexp-in-string "-" " " (capitalize (file-name-nondirectory (file-name-sans-extension (buffer-file-name)))))`} +#+AUTHOR: `(user-full-name)` +#+EMAIL: `user-mail-address` +#+DATE: `(format-time-string "%Y-%m-%d %B")` +#+TAGS: mythic rpg adventure + +Current Chaos Factor: 5 + +* Adventure Notes +$0 + +* Scenes +* Characters + - +* Threads + - + +# Local Variables: +# eval: (progn (load-library "rpgdm") (load-library "rpgdm-mythic") (rpgdm-tables-load)) +# End: \ No newline at end of file diff --git a/snippets/org-mode/__mythic_rpg_player b/snippets/org-mode/__mythic_rpg_player new file mode 100644 index 0000000..9ede5c9 --- /dev/null +++ b/snippets/org-mode/__mythic_rpg_player @@ -0,0 +1,28 @@ +# -*- mode: snippet -*- +# name: __mythic_rpg_player +# key: mythic-rpg-player +# -- +#+TITLE: ${1:`(replace-regexp-in-string "-" " " (capitalize (file-name-nondirectory (file-name-sans-extension (buffer-file-name)))))`} +#+AUTHOR: `(user-full-name)` +#+EMAIL: `user-mail-address` +#+DATE: `(format-time-string "%Y-%m-%d %B")` +#+TAGS: mythic rpg player pc character + +Favor Points: 50 + +* Character Summary +$0 +* Attributes + | Strength | | + | Agility | | + | Reflex | | + | IQ | | + | Intuition | | + | Willpower | | + | Toughness | | +* Abilities + | Ability | Rank | + |---------|------| + | | | +* Notes +* Strengthes and Weaknesses \ No newline at end of file diff --git a/snippets/org-mode/__mythic_rpg_resolution b/snippets/org-mode/__mythic_rpg_resolution new file mode 100644 index 0000000..fcd6a30 --- /dev/null +++ b/snippets/org-mode/__mythic_rpg_resolution @@ -0,0 +1,24 @@ +# -*- mode: snippet -*- +# name: __mythic_rpg_resolution +# key: mythic-rpg-resolution +# -- +#+TITLE: ${1:`(replace-regexp-in-string "-" " " (capitalize (file-name-nondirectory (file-name-sans-extension (buffer-file-name)))))`} +#+AUTHOR: `(user-full-name)` +#+EMAIL: `user-mail-address` +#+DATE: `(format-time-string "%Y-%m-%d %B")` +#+TAGS: mythic rpg resolution chart + +${0:Summary Description} + +*Acting Rank:* $2 + +*Difficulty Rank:* $3 + +*Modifiers:* + - $4 + +*Results:* + | Yes | | + | No | | + | Exceptional Yes | | + | Exceptional No | | diff --git a/snippets/org-mode/__mythic_rpg_scaling b/snippets/org-mode/__mythic_rpg_scaling new file mode 100644 index 0000000..29e7475 --- /dev/null +++ b/snippets/org-mode/__mythic_rpg_scaling @@ -0,0 +1,26 @@ +# -*- mode: snippet -*- +# name: __mythic_rpg_scaling +# key: mythic-rpg-scaling +# -- +#+TITLE: ${1:`(replace-regexp-in-string "-" " " (capitalize (file-name-nondirectory (file-name-sans-extension (buffer-file-name)))))`} +#+AUTHOR: `(user-full-name)` +#+EMAIL: `user-mail-address` +#+DATE: `(format-time-string "%Y-%m-%d %B")` +#+TAGS: mythic rpg scaling skill box + +${0:Example of...} + + | Description | Mythic Rank | + |-------------+---------------| + | | | + | | Miniscule | + | | Weak | + | | Low | + | | Below Average | + | $2 | Average | + | | Above Average | + | | High | + | | Exceptional | + | | Incredible | + | | Awesome | + | | | \ No newline at end of file diff --git a/snippets/org-mode/__sprint b/snippets/org-mode/__sprint new file mode 100644 index 0000000..e32df60 --- /dev/null +++ b/snippets/org-mode/__sprint @@ -0,0 +1,61 @@ +# -*- mode: snippet -*- +# name: sprint +# key: __sprint +# -- +#+TITLE: `(sprint-current-name)` +#+AUTHOR: `user-full-name` +#+EMAIL: `user-mail-address` +#+DATE: `(sprint-date-range)` +#+CATEGORY: sprint +#+FILETAGS: :work: + +* Work Issues + +$0 + +* Onboarding Work + +See [[file:Onboarding-Work.org][Onboard-Work]] for all details. + +* Distractions and Support + +Anything that doesn't fit the above goes here. + +* Meeting Notes :meeting: +* Scrum Status :status: + +* Sprint Demonstration +SCHEDULED: <`(sprint-date-from-start 12)`> DEADLINE: <`(sprint-date-from-start 13)`> + +* Sprint Retrospective +SCHEDULED: <`(sprint-date-from-start 14)`> + +* Notes for Next Sprint + +** Support Section + +We should always allow the display of this file for a demonstration. + +#+BEGIN_SRC elisp :results silent + (use-package demo-it + :load-path "~/Other/demo-it" + :config + (demo-it-create :advanced-mode :single-window + (demo-it-presentation (buffer-file-name) 3 :both "Sprint Demonstration") + (osx-browse-url-forwork "https://...") + (demo-it-load-fancy-file "~/work/wpc4/wpc/dashboards/wpc4/hypervisor.yml" + :line 116 133) + (demo-it-presentation-return-noadvance) + ;; ... + )) +#+END_SRC + +Have fun and start the show: =demo-it-start= and hit ~F5~ (or the ~Num~ key on Keyboardio). + +#+DESCRIPTION: Notes taken during Sprint #`(sprint-number)` +#+PROPERTY: header-args: :results drawer :tangle no :eval no-export :comments org +#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil skip:nil author:nil email:nil creator:nil timestamp:nil ^:nil + +# Local Variables: +# eval: (org-content 2) +# End: diff --git a/snippets/org-mode/activity-diagram b/snippets/org-mode/activity-diagram new file mode 100644 index 0000000..7db746f --- /dev/null +++ b/snippets/org-mode/activity-diagram @@ -0,0 +1,18 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: activity-diagram +# key: activity +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/activity-diagram-betastart +start + +if (Graphviz installed?) then (yes) + :process all\ndiagrams; +else (no) + :process only + __sequence__ and __activity__ diagrams; +endif + +stop \ No newline at end of file diff --git a/snippets/org-mode/component-diagram b/snippets/org-mode/component-diagram new file mode 100644 index 0000000..25b0397 --- /dev/null +++ b/snippets/org-mode/component-diagram @@ -0,0 +1,34 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: component-diagram +# key: component +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/component-diagram +package "Some Group" { + HTTP - [First Component] + [Another Component] +} + +node "Other Groups" { + FTP - [Second Component] + [First Component] --> FTP +} + +cloud { + [Example 1] +} + +database "MySql" { + folder "This is my folder" { + [Folder 3] + } + frame "Foo" { + [Frame 4] + } +} + +[Another Component] --> [Example 1] +[Example 1] --> [Folder 3] +[Folder 3] --> [Frame 4] diff --git a/snippets/org-mode/deployment-diagram b/snippets/org-mode/deployment-diagram new file mode 100644 index 0000000..6350c03 --- /dev/null +++ b/snippets/org-mode/deployment-diagram @@ -0,0 +1,31 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: deployment-diagram +# key: deployment +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/deployment-diagram +agent agent +artifact artifact +boundary boundary +card card +circle circle +cloud cloud +collections collections +component component +control control +database database +entity entity +file file +folder folder +frame frame +interface interface +label label +node node +package package +queue queue +stack stack +rectangle rectangle +storage storage +usecase usecase \ No newline at end of file diff --git a/snippets/org-mode/dm-screen b/snippets/org-mode/dm-screen new file mode 100644 index 0000000..2181ce0 --- /dev/null +++ b/snippets/org-mode/dm-screen @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: dm-screen +# key: __dm +# -- +#+TITLE: ${1:`(->> (buffer-file-name) + (file-name-base) + (s-split-words) + (--map (s-capitalize it)) + (s-join " "))`} +#+AUTHOR: Howard X. Abrams +#+EMAIL: howard.abrams@gmail.com +#+FILETAGS: :rpg:5e:dm-screen: diff --git a/snippets/org-mode/document-property-header b/snippets/org-mode/document-property-header new file mode 100644 index 0000000..511d13c --- /dev/null +++ b/snippets/org-mode/document-property-header @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: document-property-header +# key: topprop +# -- +#+PROPERTY: header-args${1::emacs-lisp} :${2:results} ${3:silent} \ No newline at end of file diff --git a/snippets/org-mode/emacs-lisp-code b/snippets/org-mode/emacs-lisp-code new file mode 100644 index 0000000..ee96def --- /dev/null +++ b/snippets/org-mode/emacs-lisp-code @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: emacs-lisp-code +# key: +# name: object-diagram +# key: object +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/object-diagram +object Extends +object Extension +object Composes +object Composition +object Aggregates +object Aggregation +object Relates +object Relation + +Extends <|-- Extension +Composes *-- Composition +Aggregates o-- "4" Aggregation +Relates .. Relation : some labels \ No newline at end of file diff --git a/snippets/org-mode/onboard b/snippets/org-mode/onboard new file mode 100644 index 0000000..14f14f8 --- /dev/null +++ b/snippets/org-mode/onboard @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: onboard +# key: onboard +# -- +** TODO $1 + +Status: + - Waiting to fill out Requirements Document + +Summary: + - Initial meeting on `(format-time-string "<%Y-%m-%d %a>")` + +Personnel: + - $2 diff --git a/snippets/org-mode/plantuml b/snippets/org-mode/plantuml new file mode 100644 index 0000000..d3125fe --- /dev/null +++ b/snippets/org-mode/plantuml @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: plantuml +# key:

+# group: plantuml +# -- + +#+begin_src plantuml :file ${1:`(ha/org-next-image-number)`}.${2:png} :exports file :results file +@startuml +!include plantuml-dark-theme.puml +' See details at https://plantuml.com/ +$0 +@enduml +#+end_src diff --git a/snippets/org-mode/rpgdm-npc b/snippets/org-mode/rpgdm-npc new file mode 100644 index 0000000..10dcc6d --- /dev/null +++ b/snippets/org-mode/rpgdm-npc @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: RPG DM NPC +# key: rpgdm-npc +# -- + +Name: `name` \ No newline at end of file diff --git a/snippets/org-mode/section-property b/snippets/org-mode/section-property new file mode 100644 index 0000000..31270ea --- /dev/null +++ b/snippets/org-mode/section-property @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: section-property +# key: prop +# -- +:PROPERTIES: +:header-args:${1:emacs-lisp} :${2:results} ${3:silent} +:END: \ No newline at end of file diff --git a/snippets/org-mode/sequence-diagram b/snippets/org-mode/sequence-diagram new file mode 100644 index 0000000..1384c59 --- /dev/null +++ b/snippets/org-mode/sequence-diagram @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: sequence-diagram +# key: sequence +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/sequence-diagram +Alice -> Bob: Authentication Request +Bob --> Alice: Authentication Response + +Alice -> Bob: Another authentication Request +Alice <-- Bob: Another authentication Response \ No newline at end of file diff --git a/snippets/org-mode/shell-script-code b/snippets/org-mode/shell-script-code new file mode 100644 index 0000000..d724f19 --- /dev/null +++ b/snippets/org-mode/shell-script-code @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: shell-script-code +# key: +# name: state-diagram +# key: state +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/state-diagram +[*] --> State1 +State1 --> [*] +State1 : this is a string +State1 : this is another string + +State1 -> State2 +State2 --> [*] \ No newline at end of file diff --git a/snippets/org-mode/timing-diagram b/snippets/org-mode/timing-diagram new file mode 100644 index 0000000..46865d0 --- /dev/null +++ b/snippets/org-mode/timing-diagram @@ -0,0 +1,21 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: timing-diagram +# key: timing +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/timing-diagram +robust "Web Browser" as WB +concise "Web User" as WU + +@0 +WU is Idle +WB is Idle + +@100 +WU is Waiting +WB is Processing + +@300 +WB is Waiting \ No newline at end of file diff --git a/snippets/org-mode/title b/snippets/org-mode/title new file mode 100644 index 0000000..35fe99a --- /dev/null +++ b/snippets/org-mode/title @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: title +# key: title +# -- +#+TITLE: ${0} \ No newline at end of file diff --git a/snippets/org-mode/use-case-diagram b/snippets/org-mode/use-case-diagram new file mode 100644 index 0000000..adec119 --- /dev/null +++ b/snippets/org-mode/use-case-diagram @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# contributor: Howard Abrams +# name: use-case-diagram +# key: use-case +# condition: (ha/org-nested-in-plantuml-block) +# group: plantuml +# -- +' See details at https://plantuml.com/use-case-diagram +User -> (Start) +User --> (Use the application) : A small label + +:Main Admin: ---> (Use the application) : This is\nyet another\nlabel diff --git a/snippets/ruby-mode/rubocop-disable-comment b/snippets/ruby-mode/rubocop-disable-comment new file mode 100644 index 0000000..01b9627 --- /dev/null +++ b/snippets/ruby-mode/rubocop-disable-comment @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: Rubocop disable comment +# key: rd +# -- +# rubocop:disable ${1:Lint/MethodLength} diff --git a/snippets/sh-mode/__ b/snippets/sh-mode/__ new file mode 100644 index 0000000..031f466 --- /dev/null +++ b/snippets/sh-mode/__ @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: shell-init +# key: __ +# -- +#!/usr/bin/env `(if (equal (file-name-extension buffer-file-name) "zsh") "zsh" "bash")` +# ---------------------------------------------------------------------- +# `(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`: $0 +# ---------------------------------------------------------------------- + +set -euo pipefail + +$0 \ No newline at end of file diff --git a/snippets/sh-mode/getopt b/snippets/sh-mode/getopt new file mode 100644 index 0000000..ba0154e --- /dev/null +++ b/snippets/sh-mode/getopt @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: getopt +# uuid: +# key: getopt +# -- +${1:OPT1}="${2:default value}" +$0 +while getopts "${3:s}" o +do case "$o" in + $3) $1="$OPTARG";; + [?]) usage;; + esac +done +shift $(expr $OPTIND - 1) diff --git a/snippets/sh-mode/usage b/snippets/sh-mode/usage new file mode 100644 index 0000000..af85bee --- /dev/null +++ b/snippets/sh-mode/usage @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: usage +# key: usage +# -- + +function usage { + print >&2 "Usage: \$0 ${1:[-s] [-d seplist] file ...}" + $0exit 1 +} diff --git a/support/beep-notify.wav b/support/beep-notify.wav new file mode 100644 index 0000000000000000000000000000000000000000..504b168c3ff8f87e4e002b9e33191ae8bfeb5e5d GIT binary patch literal 259312 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

-(Ep}+INL>`0WD(<1qWP;Bh%tQVT6V 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

$}Hjb==)|&DlI-{$ow%P3K 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≻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®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 literal 0 HcmV?d00001 diff --git a/support/final-initialize.el b/support/final-initialize.el new file mode 100644 index 0000000..b916f29 --- /dev/null +++ b/support/final-initialize.el @@ -0,0 +1,75 @@ +;; -*- mode: emacs-lisp-mode -*- +;;; final-initialize.el --- Reinstall my Emacs configuration files -*- lexical-binding: t; -*- +;; +;; Copyright (C) 2020 Howard X. Abrams +;; +;; Author: Howard X. Abrams +;; Maintainer: Howard X. Abrams +;; Created: September 11, 2020 +;; Modified: September 11, 2020 +;; Version: 0.0.1 +;; Homepage: https://gitlab.com/howardabrams/hamacs +;; Package-Requires: ((emacs 27.1.50) (cl-lib "0.5")) +;; +;; This file is not part of GNU Emacs. +;; +;;; Commentary: +;; +;; Reinstall my Emacs configuration files +;; +;;; Code: + +(require 'ob) +(require 'f) + +;; The project source is actually defined in ~/.doom.d/hamacs-init.el +;; However, we define it here to get rid of Emacs linter warnings. ;-) +(defvar hamacs-source-dir + (f-parent (f-parent (or load-file-name (buffer-file-name)))) + "My configuration's source code directory.") + +;; Where should the code end up? +(defvar hamacs-private-code-dir (f-join user-emacs-directory "elisp") + "Location for most of the `hamacs' source code and configuration Lisp files.") + +(defun ha/install-by-tangling (source-files) + (dolist (file source-files) + (message "Tangling: %s" file) + (org-babel-tangle-file file))) + +(defun ha/install-code-from-essays () + "Tangle select website essays into the elisp bucket." + (ha/install-by-tangling + '("~/website/Technical/Emacs/getting-more-boxes-done.org" + "~/website/Technical/Emacs/getting-even-more-boxes-done.org" + "~/website/Technical/Emacs/beep-for-emacs.org" + "~/website/Technical/Emacs/focused-work.org"))) + +(defun ha/install-code-from-hamacs () + "Copy Emacs Lisp code without needing to translate." + (dolist (file (directory-files + (f-join hamacs-source-dir "elisp") t (rx bol (not ".")))) + (copy-file file (file-name-as-directory hamacs-private-code-dir) t))) + +(defun ha/install-configuration () + "Two primary jobs: tangle all source configuration files and link +non-tangled files." + (interactive) + (unless (f-exists? user-emacs-directory) + (make-directory user-emacs-directory)) + (unless (f-exists? hamacs-private-code-dir) + (make-directory hamacs-private-code-dir)) + + (ha/install-code-from-essays) + (ha/install-code-from-hamacs) + + ;; Link some source-controlled directories into ~/.doom.d ... + ;; This used to be a longer list. ;-) + (dolist (something '("snippets")) + (let ((dir (f-join user-emacs-directory something)) + (src (f-join default-directory something))) + (unless (f-symlink? dir) + (f-symlink src dir))))) + +(provide 'final-initialize) +;;; final-initialize.el ends here diff --git a/support/levitating-gnu.png b/support/levitating-gnu.png new file mode 100644 index 0000000000000000000000000000000000000000..63d5ed2db6c768d1dd1fbdef2581e86f2dd02253 GIT binary patch literal 132686 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