changelog shortlog graph tags branches files raw help

Mercurial > infra > home / changeset: import ellis home

changeset 2: 2cd49f7c09bb
parent 1: 2ad8911cbdef
child 3: f82cb9ded8cf
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 01 May 2024 18:04:18 -0400
files: .bash_profile .bashrc .config/alacritty.toml .fehbg .hgrc .homerc .notmuch-config .offlineimaprc .sbclrc .skelrc .tmux.conf .xinitrc avpt.png ellis.el
description: import ellis home
     1.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2+++ b/.bash_profile	Wed May 01 18:04:18 2024 -0400
     1.3@@ -0,0 +1,17 @@
     1.4+# .bash_profile --- bash profile
     1.5+
     1.6+export PYTHON=python3.11
     1.7+export PYENV_ROOT="$HOME/.pyenv"
     1.8+export PATH="$PYENV_ROOT/bin:$PATH"
     1.9+export PATH="$HOME/go/bin:$HOME/.nimble/bin:$HOME/.cargo/bin:$HOME/.local/bin:$HOME/bin:$PATH"
    1.10+
    1.11+if ! shopt -oq posix; then
    1.12+    if [ -f /usr/share/bash-completion/bash_completion ]; then
    1.13+        . /usr/share/bash-completion/bash_completion
    1.14+    elif [ -f /etc/bash_completion ]; then
    1.15+        . /etc/bash_completion
    1.16+    fi
    1.17+fi
    1.18+
    1.19+eval "$(pyenv init --path)"
    1.20+if command -v rhg>>/dev/null; then alias hg='rhg';fi
     2.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2+++ b/.bashrc	Wed May 01 18:04:18 2024 -0400
     2.3@@ -0,0 +1,50 @@
     2.4+# .bashrc --- bash configuration 
     2.5+# Set prompt
     2.6+PS1="\u [\!]:\t:\w\n  >> \[\e[0m\]"
     2.7+# default Envs
     2.8+export LISP='sbcl'
     2.9+export ESHELL='/usr/bin/bash'
    2.10+export ORGANIZATION='The Compiler Company'
    2.11+export TERM='xterm-256color'
    2.12+export MANPATH="/usr/local/man:$MANPATH"
    2.13+export LANG=en_US.UTF-8
    2.14+export ALTERNATE_EDITOR=''
    2.15+export EDITOR='emacsclient -t -a='
    2.16+export VISUAL='emacsclient -c'
    2.17+# sudo pacman -Sy seahorse libgnome-keyring libsecret
    2.18+#export SSH_ASKPASS=/usr/lib/seahorse/ssh-askpass
    2.19+# git config --global credential.helper /usr/lib/git-core/git-credential-libsecret
    2.20+export XDG_CONFIG_HOME=$HOME/.config
    2.21+export XDG_CACHE_HOME=$HOME/.cache
    2.22+export XDG_DATA_HOME=$HOME/.data 
    2.23+export XDG_STATE_HOME=$HOME/.state 
    2.24+export XDG_STATE_HOME=$HOME/.state 
    2.25+export XDG_DESKTOP_DIR=$HOME/Desktop
    2.26+export XDG_DOCUMENTS_DIR=$HOME/stash/docs
    2.27+export XDG_DOWNLOAD_DIR=$HOME/stash/dl
    2.28+export XDG_MUSIC_DIR=$HOME/media/music
    2.29+export XDG_PICTURES_DIR=$HOME/media/pictures
    2.30+export XDG_PUBLICSHARE_DIR=$HOME/stash/public
    2.31+export XDG_TEMPLATES_DIR=$HOME/stash/templates
    2.32+export XDG_VIDEOS_DIR=$HOME/media/videos
    2.33+# custom configs
    2.34+export FREESOUND_CONFIG="~/.config/freesound.json"
    2.35+export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
    2.36+# aliases
    2.37+eman() {
    2.38+    emacsclient -c -e "(man \"$1\")"
    2.39+}
    2.40+
    2.41+alias ec='emacsclient -c'
    2.42+alias et='emacsclient -t'
    2.43+alias lr='rlwrap sbcl'
    2.44+alias hgpu='hg pull -u'
    2.45+alias hgc='hg ci -m'
    2.46+alias hgp='hg push'
    2.47+alias hgfe='hg-fast-export.sh'
    2.48+# VCS
    2.49+alias hgsub='find . -name ".hg" -type d | grep -v "\./\.hg" | xargs -n1 dirname | xargs -iREPO hg -R REPO'
    2.50+
    2.51+alias q='QHOME=~/q rlwrap -r ~/q/l64/q'
    2.52+alias ..='cd ..'
    2.53+complete -c man which
     3.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2+++ b/.config/alacritty.toml	Wed May 01 18:04:18 2024 -0400
     3.3@@ -0,0 +1,46 @@
     3.4+[shell]
     3.5+program = "/usr/bin/bash"
     3.6+[window]
     3.7+padding = { x = 2, y = 2 }
     3.8+dynamic_padding = true
     3.9+decorations_theme_variant = "Dark"
    3.10+[scrolling]
    3.11+multiplier = 1
    3.12+[cursor]
    3.13+style.blinking = "Always"
    3.14+[mouse]
    3.15+hide_when_typing = true
    3.16+[keyboard]
    3.17+bindings = [
    3.18+{ key = "a", mods = "Control", action = "First", mode = "Vi" },
    3.19+{ key = "s", mods = "Control|Shift", action = "SearchForward"},
    3.20+{ key = "r", mods = "Control|Shift", action = "SearchBackward"},
    3.21+{ key = "g", mods = "Control", action = "SearchCancel", mode = "Search"},
    3.22+]
    3.23+
    3.24+# Colors (Tomorrow Night Bright)
    3.25+[colors.primary]
    3.26+background = '#000000'
    3.27+foreground = '#eaeaea'
    3.28+
    3.29+# Normal colors
    3.30+[colors.normal]
    3.31+black   = '#000000'
    3.32+red     = '#d54e53'
    3.33+green   = '#b9ca4a'
    3.34+yellow  = '#e6c547'
    3.35+blue    = '#7aa6da'
    3.36+magenta = '#c397d8'
    3.37+cyan    = '#70c0ba'
    3.38+white   = '#424242'
    3.39+
    3.40+# Bright colors
    3.41+[colors.bright]
    3.42+black   = '#666666'
    3.43+red     = '#ff3334'
    3.44+green   = '#9ec400'
    3.45+yellow  = '#e7c547'
    3.46+blue    = '#7aa6da'
    3.47+magenta = '#b77ee0'
    3.48+cyan    = '#54ced6'
    3.49+white   = '#2a2a2a'
    3.50\ No newline at end of file
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/.fehbg	Wed May 01 18:04:18 2024 -0400
     4.3@@ -0,0 +1,2 @@
     4.4+#!/bin/sh
     4.5+feh --no-fehbg --bg-scale '/home/ellis/avpt.png' 
     5.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2+++ b/.hgrc	Wed May 01 18:04:18 2024 -0400
     5.3@@ -0,0 +1,59 @@
     5.4+#[pager]
     5.5+# requires nushell
     5.6+#pager = lines | grid
     5.7+[paths]
     5.8+core = https://vc.compiler.company/comp/core
     5.9+infra = https://vc.compiler.company/comp/infra
    5.10+demo = https://vc.compiler.company/comp/demo
    5.11+
    5.12+[ui]
    5.13+username = Richard Westhaver <ellis@rwest.io>
    5.14+ssh = ssh -i ~/.ssh/ellis_ed25519
    5.15+
    5.16+[alias]
    5.17+erc = !$EDITOR `$HG root`/.hg/hgrc
    5.18+
    5.19+# [hooks]
    5.20+# outgoing.notify = python:hgext.notify.hook
    5.21+
    5.22+[email]
    5.23+from = demon <demon@compiler.company>
    5.24+
    5.25+[extensions]
    5.26+gpg = 
    5.27+mq = 
    5.28+#fsmonitor = 
    5.29+convert = 
    5.30+histedit =
    5.31+#rebase =
    5.32+#uncommit =
    5.33+clonebundles = 
    5.34+highlight = 
    5.35+notify = 
    5.36+git = 
    5.37+hgext.bookmarks=
    5.38+#hggit = ~/.hgext/hggit
    5.39+#strip =
    5.40+#commitsigs = hgext/commitsigs/commitsigs.py
    5.41+#logtoprocess = 
    5.42+
    5.43+[subrepos]
    5.44+allowed = true
    5.45+hg:allowed = true
    5.46+git:allowed = true
    5.47+svn:allowed = true
    5.48+
    5.49+[fsmonitor]
    5.50+mode = on
    5.51+warn_when_unused = false
    5.52+
    5.53+[gpg]
    5.54+key = ellis
    5.55+
    5.56+[web]
    5.57+baseurl = https://vc.compiler.company
    5.58+
    5.59+[rhg]
    5.60+on-unsupported = fallback
    5.61+fallback-executable = /bin/hg
    5.62+allowed-extensions = clonebundles,git,gpg,highlight,notify
    5.63\ No newline at end of file
     6.1--- a/.homerc	Wed May 01 17:44:53 2024 -0400
     6.2+++ b/.homerc	Wed May 01 18:04:18 2024 -0400
     6.3@@ -0,0 +1,9 @@
     6.4+;;; -*- mode:skel; -*-
     6.5+:user ellis
     6.6+:packy "~/.packy"
     6.7+:wm stumpwm
     6.8+:shell bash
     6.9+:browser chromium
    6.10+:editor emacs
    6.11+:stash "~/stash"
    6.12+:store "~/store"
     7.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2+++ b/.notmuch-config	Wed May 01 18:04:18 2024 -0400
     7.3@@ -0,0 +1,16 @@
     7.4+[database]
     7.5+path = mail
     7.6+
     7.7+[user]
     7.8+name = ellis
     7.9+primary_email = ellis@rwest.io
    7.10+other_email = demon@rwest.io
    7.11+
    7.12+[new]
    7.13+tags = new
    7.14+
    7.15+[search]
    7.16+exclude_tags = del;spam;
    7.17+
    7.18+[maildir]
    7.19+synchronize_flags = true
    7.20\ No newline at end of file
     8.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2+++ b/.offlineimaprc	Wed May 01 18:04:18 2024 -0400
     8.3@@ -0,0 +1,72 @@
     8.4+[general]
     8.5+accounts = ellis, demon, postmaster
     8.6+pythonfile = ~/.config/offlineimap/get_pass.py
     8.7+
     8.8+[Account ellis]
     8.9+synclabels = yes
    8.10+localrepository = ellis
    8.11+remoterepository = ellis-imap
    8.12+postsynchook = ~/.config/offlineimap/postsync.sh
    8.13+
    8.14+[Repository ellis]
    8.15+type = GmailMaildir
    8.16+localfolders = ~/mail/ellis
    8.17+
    8.18+[Repository ellis-imap]
    8.19+type = Gmail
    8.20+remotepasseval = get_authinfo_password("imap.gmail.com", "ellis", 993)
    8.21+remoteuser = richard.westhaver@gmail.com
    8.22+# Necessary to work around https://github.com/OfflineIMAP/offlineimap/issues/573 (versions 7.0.12, 7.2.1)
    8.23+# macos only
    8.24+#sslcacertfile = /opt/local/etc/openssl/cert.pem
    8.25+#ssl_version = tls1_2
    8.26+# linux only
    8.27+sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    8.28+folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
    8.29+nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
    8.30+
    8.31+[Account demon]
    8.32+synclabels = yes
    8.33+localrepository = demon
    8.34+remoterepository = demon-imap
    8.35+postsynchook = ~/.config/offlineimap/postsync.sh
    8.36+
    8.37+[Repository demon]
    8.38+type = GmailMaildir
    8.39+localfolders = ~/mail/demon
    8.40+
    8.41+[Repository demon-imap]
    8.42+type = Gmail
    8.43+remotepasseval = get_authinfo_password("imap.gmail.com", "demon", 993)
    8.44+remoteuser = throwoutxyz@gmail.com
    8.45+# macos only
    8.46+#sslcacertfile = /opt/local/etc/openssl/cert.pem
    8.47+#ssl_version = tls1_2
    8.48+# linux only
    8.49+sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    8.50+folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
    8.51+nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
    8.52+
    8.53+[Account postmaster]
    8.54+synclabels = yes
    8.55+localrepository = postmaster
    8.56+remoterepository = postmaster-imap
    8.57+postsynchook = ~/.config/offlineimap/postsync.sh
    8.58+
    8.59+[Repository postmaster]
    8.60+type = Maildir
    8.61+localfolders = ~/mail/postmaster
    8.62+
    8.63+[Repository postmaster-imap]
    8.64+type = IMAP
    8.65+remotepasseval = get_authinfo_password("mail.compiler.company", "postmaster", 993)
    8.66+remotehost = mail.compiler.company
    8.67+remoteuser = postmaster@compiler.company
    8.68+# Necessary to work around https://github.com/OfflineIMAP/offlineimap/issues/573 (versions 7.0.12, 7.2.1)
    8.69+# macos only
    8.70+#sslcacertfile = /opt/local/etc/openssl/cert.pem
    8.71+#ssl_version = tls1_2
    8.72+# linux only
    8.73+sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    8.74+#folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
    8.75+#nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/.sbclrc	Wed May 01 18:04:18 2024 -0400
     9.3@@ -0,0 +1,33 @@
     9.4+;;; .sbclrc --- sbcl init file -*- mode: common-lisp; -*-
     9.5+(require :asdf)
     9.6+;;; If a fasl was stale, try to recompile and load (once).
     9.7+(defmethod asdf:perform :around ((o asdf:load-op)
     9.8+                                 (c asdf:cl-source-file))
     9.9+  (handler-case (call-next-method o c)
    9.10+    ;; If a fasl was stale, try to recompile and load (once).
    9.11+    (sb-ext:invalid-fasl ()
    9.12+      (asdf:perform (make-instance 'asdf:compile-op) c)
    9.13+      (call-next-method))))
    9.14+
    9.15+(setq *debug-beginner-help-p* nil
    9.16+      ;; *print-case* :downcase
    9.17+      *print-level* 32
    9.18+      *print-length* 256)
    9.19+
    9.20+#-quicklisp
    9.21+(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
    9.22+  (when (probe-file quicklisp-init)
    9.23+    (load quicklisp-init)))
    9.24+;; (ql:quickload :clouseau)
    9.25+(defun include-projects-from (path)
    9.26+  "Add PATH to QL;*LOCAL-PROJECT-DIRECTORIES* and ASDF:*CENTRAL-REGISTRY*."
    9.27+  (pushnew path ql:*local-project-directories*)
    9.28+  (pushnew path asdf:*central-registry*))
    9.29+
    9.30+(mapc #'include-projects-from
    9.31+      (mapcar (lambda (x) (merge-pathnames x (user-homedir-pathname)))
    9.32+              (list "dev/comp/core/lisp/"
    9.33+                    "dev/comp/demo/"
    9.34+                    "dev/comp/scratch/")))
    9.35+
    9.36+;; (require :sb-aclrepl)
    10.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2+++ b/.skelrc	Wed May 01 18:04:18 2024 -0400
    10.3@@ -0,0 +1,19 @@
    10.4+;;; .skelrc @ 2023-10-12.02:58:08 -*- mode: skel; -*-
    10.5+:name "Richard Westhaver <ellis@rwest.io>"
    10.6+:user "ellis"
    10.7+:version "0.1.0"
    10.8+:tags ("auto")
    10.9+:fmt :pretty
   10.10+:vc :hg
   10.11+:auto-insert t
   10.12+:license :mpl2
   10.13+:log-level :info
   10.14+:shed "~/shed"
   10.15+:stash "~/stash"
   10.16+:cache "~/.cache/skel"
   10.17+:registry "~/.data/skel/registry"
   10.18+:scripts "/usr/local/stash/scripts"
   10.19+:alias-list
   10.20+(("p" "vc push")
   10.21+ ("P" "vc pull")
   10.22+ ("ci" "vc commit"))
    11.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2+++ b/.tmux.conf	Wed May 01 18:04:18 2024 -0400
    11.3@@ -0,0 +1,52 @@
    11.4+# tmux.conf --- tmux configuration file
    11.5+set -g default-terminal "xterm-256color"
    11.6+
    11.7+set -s escape-time 0 #faster command sequences
    11.8+
    11.9+unbind-key C-b
   11.10+set -g prefix "C-a"
   11.11+bind-key "C-z" send-prefix
   11.12+unbind '"'
   11.13+unbind '%'
   11.14+unbind 'a'
   11.15+bind a send-prefix
   11.16+bind - split-window -v
   11.17+bind = split-window -h
   11.18+set -g default-shell $SHELL
   11.19+setw -g automatic-rename on   # rename window to reflect current program
   11.20+set -g renumber-windows on    # renumber windows when a window is closed
   11.21+set -g set-titles on          # set terminal title
   11.22+set -g display-panes-time 800 # slightly longer pane indicators display time
   11.23+set -g display-time 1000      # slightly longer status messages display time
   11.24+set -g base-index 1
   11.25+
   11.26+# open new windows in the current path
   11.27+bind c new-window -c "#{pane_current_path}"
   11.28+
   11.29+# shhhh
   11.30+set -g visual-activity off
   11.31+set -g visual-bell off
   11.32+set -g visual-silence off
   11.33+setw -g monitor-activity on
   11.34+set -g bell-action none
   11.35+
   11.36+# reload config with r
   11.37+unbind r
   11.38+bind r source-file ~/.tmux.conf
   11.39+
   11.40+set -g mouse on
   11.41+
   11.42+#  modes
   11.43+setw -g clock-mode-colour colour6
   11.44+
   11.45+# panes
   11.46+# set -g pane-active-border-style 'bg=colour7 fg=colour3'
   11.47+
   11.48+# status bar
   11.49+set -g status-position bottom
   11.50+set -g status-justify left
   11.51+set -g status-right '%Y-%m-%d : %H:%M:%S'
   11.52+set -g status-right-length 100
   11.53+
   11.54+set -g status-left-length 20
   11.55+
    12.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2+++ b/.xinitrc	Wed May 01 18:04:18 2024 -0400
    12.3@@ -0,0 +1,15 @@
    12.4+#!/bin/sh
    12.5+xrdb .Xresources &
    12.6+xset r rate 200 40 &
    12.7+xset s off -dpms &
    12.8+case $session in
    12.9+  sway              ) exec sway;;
   12.10+  stumpwm           ) /usr/local/bin/stumpwm;;
   12.11+  i3|i3wm           ) exec i3;;
   12.12+  kde               ) exec startplasma-x11;;
   12.13+  xfce|xfce4        ) exec startxfce4;;
   12.14+  leftwm            ) exec leftwm;;
   12.15+  
   12.16+  # No known session, try to run it as command
   12.17+  *                 ) /usr/local/bin/stumpwm;;
   12.18+esac
    13.1Binary file avpt.png has changed
    14.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2+++ b/ellis.el	Wed May 01 18:04:18 2024 -0400
    14.3@@ -0,0 +1,286 @@
    14.4+;;; ellis.el --- Richard's custom-file -*- lexical-binding: t; -*-
    14.5+
    14.6+;; Copyright (C) 2023  
    14.7+
    14.8+;; Author: Richard Westhaver <ellis@rwest.io>
    14.9+
   14.10+;; This program is free software; you can redistribute it and/or modify
   14.11+;; it under the terms of the GNU General Public License as published by
   14.12+;; the Free Software Foundation, either version 3 of the License, or
   14.13+;; (at your option) any later version.
   14.14+
   14.15+;; This program is distributed in the hope that it will be useful,
   14.16+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
   14.17+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14.18+;; GNU General Public License for more details.
   14.19+
   14.20+;; You should have received a copy of the GNU General Public License
   14.21+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
   14.22+
   14.23+;;; Commentary:
   14.24+
   14.25+;; This is an example of what you may want to add to your custom
   14.26+;; config file. Feel free to rip.
   14.27+
   14.28+;;; Code:
   14.29+(require 'inbox)
   14.30+(require 'sk)
   14.31+(require 'slime-cape)
   14.32+(require 'sxp)
   14.33+(require 'ulang)
   14.34+
   14.35+(defalias 'make #'compile)
   14.36+
   14.37+(setopt default-theme 'modus-vivendi-tritanopia
   14.38+        user-lab-directory (join-paths user-home-directory "dev")
   14.39+        company-source-directory (join-paths user-lab-directory "comp"))
   14.40+
   14.41+(unless (display-graphic-p) (setq default-theme 'wheatgrass))
   14.42+
   14.43+(when (linux-p) (setq dired-listing-switches "-alsh"))
   14.44+
   14.45+(defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
   14.46+
   14.47+;;;###autoload
   14.48+(defun edit-emacs-config (&optional src)
   14.49+  (interactive (list current-prefix-arg))
   14.50+  (let ((file (if src 
   14.51+                  (expand-file-name "default.el" emacs-config-source) 
   14.52+                user-custom-file)))
   14.53+    (find-file file)))
   14.54+
   14.55+(keymap-set user-map "e c" #'edit-emacs-config)
   14.56+(keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
   14.57+(keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
   14.58+
   14.59+;; (add-hook 'common-lisp-mode-hook #'enable-paredit-mode)
   14.60+;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
   14.61+
   14.62+(repeat-mode)
   14.63+
   14.64+(defun remember-project ()
   14.65+  (interactive)
   14.66+  (project-remember-project (project-current))
   14.67+  project--list)
   14.68+
   14.69+(defun remember-lab-projects ()
   14.70+  (interactive)
   14.71+  (project-remember-projects-under user-lab-directory t))
   14.72+
   14.73+(keymap-global-set "C-<tab>" #'hippie-expand)
   14.74+(keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
   14.75+(keymap-set ctl-x-x-map "p p" #'remember-project)
   14.76+(keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
   14.77+
   14.78+(add-hook 'prog-mode-hook #'skt-mode)
   14.79+(add-hook 'org-mode-hook #'skt-mode)
   14.80+(add-hook 'prog-mode-hook #'company-mode)
   14.81+
   14.82+(add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
   14.83+
   14.84+(setopt skt-enable-tempo-elements t
   14.85+        skt-completing-read t
   14.86+        skt-delete-duplicate-marks t)
   14.87+
   14.88+(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
   14.89+(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
   14.90+(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
   14.91+
   14.92+(use-package markdown-mode :ensure t)
   14.93+
   14.94+(use-package ol-notmuch :ensure t)
   14.95+
   14.96+(use-package notmuch 
   14.97+  :ensure t
   14.98+  :init
   14.99+  (setopt
  14.100+   mail-user-agent 'message-user-agent
  14.101+   smtpmail-smtp-server "smtp.gmail.com"
  14.102+   message-send-mail-function 'message-smtpmail-send-it
  14.103+   smtpmail-debug-info t
  14.104+   message-default-mail-headers "Cc: \nBcc: \n"
  14.105+   message-kill-buffer-on-exit t
  14.106+   user-mail-address "ellis@rwest.io"
  14.107+   user-full-name "Richard Westhaver"
  14.108+   notmuch-hello-sections '(notmuch-hello-insert-saved-searches 
  14.109+                            notmuch-hello-insert-search 
  14.110+                            notmuch-hello-insert-recent-searches 
  14.111+                            notmuch-hello-insert-alltags)
  14.112+   notmuch-show-logo nil
  14.113+   notmuch-search-oldest-first nil
  14.114+   notmuch-hello-hide-tags '("kill")
  14.115+   notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
  14.116+                            (:name "unread" :query "tag:unread" :key "u")
  14.117+                            (:name "new" :query "tag:new" :key "n")
  14.118+                            (:name "sent" :query "tag:sent" :key "e")
  14.119+                            (:name "drafts" :query "tag:draft" :key "d")
  14.120+                            (:name "all mail" :query "*" :key "a")
  14.121+                            (:name "todo" :query "tag:todo" :key "t")))
  14.122+  :config
  14.123+  ;;;###autoload
  14.124+  (defun notmuch-exec-offlineimap ()
  14.125+    "execute offlineimap command and tag new mail with notmuch"
  14.126+    (interactive)
  14.127+    (start-process-shell-command "offlineimap"
  14.128+                                 "*offlineimap*"
  14.129+                                 "offlineimap -o")
  14.130+    (notmuch-refresh-all-buffers))
  14.131+
  14.132+  (defun offlineimap-get-password (host port)
  14.133+    (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
  14.134+           (hostentry (netrc-machine netrc host port port)))
  14.135+      (when hostentry (netrc-get hostentry "password"))))
  14.136+
  14.137+  (defun mark-as-read ()
  14.138+    "mark message as read."
  14.139+    (interactive)
  14.140+    (notmuch-search-tag '("-new" "-unread" "-inbox")))
  14.141+
  14.142+  (defun mark-as-todo ()
  14.143+    "mark message as todo."
  14.144+    (interactive)
  14.145+    (mark-as-read)
  14.146+    (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
  14.147+
  14.148+  (defun mark-as-spam ()
  14.149+    "mark message as spam."
  14.150+    (interactive)
  14.151+    (mark-as-read)
  14.152+    (notmuch-search-tag (list "+spam")))
  14.153+
  14.154+  (keymap-set user-map "e m" #'notmuch)
  14.155+  (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
  14.156+  (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
  14.157+  (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
  14.158+  (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
  14.159+
  14.160+(use-package elfeed 
  14.161+  :ensure t
  14.162+  :custom
  14.163+  elfeed-feeds 
  14.164+  '(("http://threesixty360.wordpress.com/feed/" blog math)
  14.165+    ("http://www.50ply.com/atom.xml" blog dev)
  14.166+    ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
  14.167+    ("http://abstrusegoose.com/feed.xml" comic)
  14.168+    ("http://accidental-art.tumblr.com/rss" image math)
  14.169+    ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
  14.170+    ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
  14.171+    ("http://feeds.feedburner.com/amazingsuperpowers" comic)
  14.172+    ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
  14.173+    ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
  14.174+    ("http://www.anticscomic.com/?feed=rss2" comic)
  14.175+    ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
  14.176+    ("http://techchrunch.com/feeds" tech news)
  14.177+    ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
  14.178+    ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
  14.179+    ("https://feeds.npr.org/1001/rss.xml" news)
  14.180+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
  14.181+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
  14.182+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
  14.183+    ("http://arxiv.org/rss/cs" cs rnd)
  14.184+    ("http://arxiv.org/rss/math" math rnd)
  14.185+    ("http://arxiv.org/rss/q-fin" q-fin rnd)
  14.186+    ("http://arxiv.org/rss/stat" stat rnd)
  14.187+    ("http://arxiv.org/rss/econ" econ rnd)
  14.188+    ;; John Wiegley
  14.189+    ("http://newartisans.com/rss.xml" dev blog)
  14.190+    ;; comp
  14.191+    ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
  14.192+    ("https://www.reddit.com/r/listentothis/.rss" music reddit)
  14.193+    ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
  14.194+    ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
  14.195+    )
  14.196+  :init
  14.197+  (defun yt-dl-it (url)
  14.198+    "Downloads the URL in an async shell"
  14.199+    (let ((default-directory "~/media/yt"))
  14.200+      (async-shell-command (format "youtube-dl %s" url))))
  14.201+
  14.202+  (defun elfeed-youtube-dl (&optional use-generic-p)
  14.203+    "Youtube-DL link"
  14.204+    (interactive "P")
  14.205+    (let ((entries (elfeed-search-selected)))
  14.206+      (cl-loop for entry in entries
  14.207+               do (elfeed-untag entry 'unread)
  14.208+               when (elfeed-entry-link entry)
  14.209+               do (yt-dl-it it))
  14.210+      (mapc #'elfeed-search-update-entry entries)
  14.211+      (unless (use-region-p) (forward-line))))
  14.212+  :config
  14.213+  (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
  14.214+  (keymap-set user-map "e f" #'elfeed)
  14.215+  (keymap-set user-map "e F" #'elfeed-update))
  14.216+
  14.217+(use-package org-mime :ensure t)
  14.218+
  14.219+(use-package sh-script
  14.220+  :hook (sh-mode . flymake-mode))
  14.221+
  14.222+(use-package tempo
  14.223+  :custom
  14.224+  tempo-interactive t
  14.225+  :config
  14.226+  (tempo-define-template 
  14.227+   "org:readme"
  14.228+   '("#+TITLE: " p n>
  14.229+     "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
  14.230+   "org:readme"
  14.231+   "Insert a readme.org file template.")
  14.232+  (tempo-define-template "org:src"
  14.233+                         '("#+begin_src " p n>
  14.234+                           "#+end_src" n>)
  14.235+                         "org:src"))
  14.236+;;; Org Config
  14.237+(keymap-set user-map "t" #'org-todo)
  14.238+
  14.239+;; populate org-babel
  14.240+(org-babel-do-load-languages
  14.241+ ;; TODO 2021-10-24: bqn, apl, k
  14.242+ 'org-babel-load-languages '((shell . t)
  14.243+			     (emacs-lisp . t)
  14.244+			     (lisp . t)
  14.245+			     (org . t)
  14.246+			     (eshell . t)
  14.247+			     (sed . t)
  14.248+			     (awk . t)
  14.249+			     (dot . t)
  14.250+			     (js . t)
  14.251+			     (C . t)
  14.252+			     (python . t)
  14.253+			     (lua . t)
  14.254+			     (lilypond . t)))
  14.255+;;; IRC
  14.256+(setq erc-format-nick-function 'erc-format-@nick)
  14.257+
  14.258+(defun start-erc ()
  14.259+  "Connect to IRC."
  14.260+  (interactive)
  14.261+  (erc-tls :server "irc.libera.chat" :port 6697
  14.262+           :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
  14.263+  (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
  14.264+                                      ("irc.libera.chat" "#linux")
  14.265+                                      ("irc.libera.chat" "#rust")
  14.266+                                      ("irc.libera.chat" "#btrfs")
  14.267+                                      ("irc.libera.chat" "#lisp")
  14.268+                                      ("irc.libera.chat" "#sbcl")
  14.269+                                      ("irc.oftc.net" "#llvm"))))
  14.270+;;; Tags
  14.271+;;;###autoload
  14.272+(defun refresh-tags ()
  14.273+  "Refresh TAGS database in `user-emacs-directory'."
  14.274+  (interactive)
  14.275+  (let ((default-directory user-emacs-directory))
  14.276+    (async-shell-command 
  14.277+     "etags ./*.el \\
  14.278+./lib/*.el \\
  14.279+~/dev/comp/org/*.el \\
  14.280+~/dev/comp/core/emacs/*.el \\
  14.281+~/dev/comp/core/emacs/lib/*.el \\
  14.282+-o TAGS")))
  14.283+
  14.284+(unless (string-equal "hyde"  system-name)
  14.285+  (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
  14.286+  (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
  14.287+
  14.288+(provide 'ellis)
  14.289+;;; ellis.el ends here