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