diff --git a/.chezmoiroot b/.chezmoiroot new file mode 100644 index 00000000..73d74c26 --- /dev/null +++ b/.chezmoiroot @@ -0,0 +1 @@ +chezmoi diff --git a/.gitignore b/.gitignore index 8271ed4d..88974174 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ netrc boom cloudapp +karabiner/automatic_backups +shellvars-work +shellfunctions-work +identity.txt diff --git a/.gitmodules b/.gitmodules index 916fae10..93632c66 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,60 +1,3 @@ -[submodule "vim-fugitive"] - path = vim/bundle/vim-fugitive - url = git://github.com/tpope/vim-fugitive.git -[submodule "vim-markdown"] - path = vim/bundle/vim-markdown - url = git://github.com/tpope/vim-markdown.git -[submodule "vim-sensible"] - path = vim/bundle/vim-sensible - url = git://github.com/tpope/vim-sensible.git -[submodule "vim-liquid"] - path = vim/bundle/vim-liquid - url = git://github.com/tpope/vim-liquid.git -[submodule "vim-scriptease"] - path = vim/bundle/vim-scriptease - url = git://github.com/tpope/vim-scriptease.git -[submodule "vim-surround"] - path = vim/bundle/vim-surround - url = git://github.com/tpope/vim-surround.git -[submodule "scripts"] - path = scripts - url = https://github.com/jimlawton/scripts -[submodule "unison-sync"] - path = unison-sync - url = https://github.com/jimlawton/unison-sync -[submodule "vim/bundle/vundle"] - path = vim/bundle/vundle - url = https://github.com/gmarik/vundle.git -[submodule "vim/bundle/vim-easymotion"] - path = vim/bundle/vim-easymotion - url = https://github.com/Lokaltog/vim-easymotion -[submodule "vim/bundle/sparkup"] - path = vim/bundle/sparkup - url = https://github.com/rstacruz/sparkup -[submodule "vim/bundle/L9"] - path = vim/bundle/L9 - url = https://github.com/vim-scripts/L9 -[submodule "vim/bundle/FuzzyFinder"] - path = vim/bundle/FuzzyFinder - url = https://github.com/vim-scripts/FuzzyFinder -[submodule "vim/bundle/command-t"] - path = vim/bundle/command-t - url = git://github.com/wincent/Command-T.git -[submodule "icdiff"] - path = icdiff - url = https://github.com/jeffkaufman/icdiff.git -[submodule "autoenv"] - path = autoenv - url = http://github.com/kennethreitz/autoenv.git -[submodule "git/mingit"] - path = git/mingit - url = https://github.com/jimlawton/mingit.git -[submodule "go-bash-completion"] - path = go-bash-completion - url = https://github.com/jimlawton/go-bash-completion.git -[submodule "git/git-identify"] - path = git/git-identify - url = https://github.com/ConnorAtherton/git-identify.git -[submodule "tmux/plugins/tpm"] - path = tmux/plugins/tpm - url = https://github.com/tmux-plugins/tpm +[submodule "hyper-hacks"] + path = hyper-hacks + url = https://github.com/jimlawton/hyper-hacks.git diff --git a/README.markdown b/README.markdown deleted file mode 100644 index 39f3ad93..00000000 --- a/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -# What is this? -These are Jim's shell configuration dotfiles. The goal is to increase CLI productivity on Linux (mainly Ubuntu) and OSX, though many scripts run just fine on any POSIX implementation. - -# Focus -The focus is on Bash support. - -# Inspirations -The contents of this repo are based on Matthew McCullough's original (https://github.com/matthewmccullough/dotfiles). Others have been created over the years and gathered here. - -# Acquiring This Repo -This project contains submodules. It is suggested that you clone this into your home directory. - - cd ~ - git clone --recurse-submodules https://github.com/jimlawton/dotfiles - -# Setup -There is a set up script that establishes the symlinks in your home directory. Run this once. -* `_setupdotfiles.sh` - -> NOTE: Some personal configuration of Jim's will remain after setup. You should fork and tweak to your specific needs. - -# Contributions -Contributions are always welcome in the form of pull requests with explanatory comments. diff --git a/README.md b/README.md new file mode 100644 index 00000000..9d05aef2 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# dotfiles + +This repository is meant to manage and configure a personalised dev env setup for MacOS/Linux. + +This primarily uses [chezmoi](https://www.chezmoi.io/) to manage dotfiles and Homebrew to manage package installations. + +## Structure + +Packages are contained within .chezmoidata/packages.yaml + +These are installed whenever the packages.yaml has changed and a `chezmoi apply` is run + +## Usage + +### App Store password setting + +macOS asks for an App Store username/password by default, which makes unattended installs impossible. +If you are installing only (or mostly) free apps: + +- Go to `System Settings` > [Your Name] > `Media & Purchases`. +- Under `Free Downloads`, change the setting to `Never Require`. + +### The easiest way + +``` +$ curl https://raw.githubusercontent.com/jimlawton/dotfiles/refs/heads/master/bootstrap.sh -o bootstrap.sh +$ chmod +x bootstrap.sh +$ ./bootstrap.sh +``` + +### Install XCode Command Line Tools if necessary +``` +xcode-select --install +``` + +### Install homebrew +``` +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +``` + +### Install chezmoi +``` +brew install chezmoi +``` + +### Clone the repo and apply the dotfiles +``` +chezmoi init https://github.com/jimlawton/dotfiles + +chezmoi apply +``` + +## Encrypted Files + +Some files in this repo are encrypted. This is a good [page](https://www.chezmoi.io/user-guide/frequently-asked-questions/encryption/) that describes managing encrypted files in `chezmoi`. + +The general sequence is: + +- Use `chezmoi age-keygen` to generate a public/private key pair. + - The public key is a long string sth like `"age193wd0hfuhtjfsunlq3c83s8m93pde442dkcn7lmj3lspeekm9g7stwutrl"`. This is NOT a secret. + - The private key is a long string sth like `"AGE-SECRET-KEY-"`. This IS a secret. +- Use `chezmoi age encrypt` to produce an encrypted private key file, using a passphrase. The encrypted key file is NOT a secret. However, the passphrase IS a secret. +- The FAQ says do this: `chezmoi age-keygen | chezmoi age encrypt --passphrase --output=key.txt.age`, however that never prints the public key, which you need, so do it in 2 steps: + - `chezmoi age-keygen -o identity.txt` + - `cat identity.txt | chezmoi age encrypt --passphrase --output=key.txt.age` +- Add `key.txt.age` to `.chezmoiignore` so chezmoi doesn't try to manage it. +- Don't leave `identity.txt` lying around, don't check it into Git and don't let chezmoi get its hands on it. Add it to `.gitignore` and `.chezmoiignore` for safety. +- Next, in your `.chezmoi.toml.tmpl` you'll need: + +``` +{{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}} + +encryption = "age" +[age] + identity = "~/.config/chezmoi/key.txt" + recipient = "sortedlog.log; dos2unix -q sortedlog.log' -alias prunelog='cat sortedlog.log | grep WLM | grep -v SERVER_HTTP_IsValidKeyword | grep -v SERVER_HTTP_SetValue | grep -v SERVER_HTTP_ExtractValue | grep -v ClearReceiveMessageBuffer | grep -v ClearTransmitMessageBuffer | grep -v CopyToTransmitBuffer | grep -v CopyFromReceiveBuffer | grep -v SERVER_ReadConfigFile | grep -v SERVER_HTTP_SetKeywordTable | grep -v SERVER_HTTP_ClearBuffer > prunedlog.log' -#alias vilastlog='vi logs/`ls -t logs/ | head -1`' -alias vilastlog='vi `ls -t *.log | head -1`' -alias catlastlog='cat logs/`ls -t logs/ | head -1`' -alias brokenlinks='find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)' - -alias rm='rm -i' -alias cp='cp -i' -alias mv='mv -i' -#alias cd='cd \!*; pwd' -#alias cd='pushd !*' -#alias more=less - -#alias du='du --exclude=.svn' - -alias now='date +"%Y%m%d-%H%M%S"' -alias minicom='minicom -C minicom-`now`.log' - -#alias svnst='svn st --ignore-externals' -#alias svnup='svn up --ignore-externals' - -alias svnrepos='export REPOS=$(~/utils/svnrepos -r) ; echo $REPOS' -alias svnurl='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"' -alias svndot='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"' -alias svndotdot='svn info .. | awk '\''/^URL:/ {print}'\'' | sed '\''s/^URL: //'\''' - -alias svndiff='svn diff --diff-cmd=xx-diff-proxy' - -# shortcuts for doing process stuff -alias pgrep='ps auxww | grep \!* | grep -v grep' -#alias pfind='pgrep \!* | awk "{print \${2}}"' - -#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2 --toc' -#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2' -alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color' - -alias mfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \) -print \) | xargs -r egrep --color=auto -n' -alias mnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \) -print \) | xargs -r egrep --color=auto -n -v' -alias sfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \) -print \) | xargs -r egrep --color=auto -n' -alias snotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \) -print \) | xargs -r egrep --color=auto -n -v' -alias shfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \) -print \) | xargs -r egrep --color=auto -n' -alias shnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \) -print \) | xargs -r egrep --color=auto -n -v' -alias cfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \) -print \) | xargs -r egrep --color=auto -n' -alias cnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \) -print \) | xargs -r egrep --color=auto -n -v' -alias hfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[hH]" -print \) | xargs -r egrep --color=auto -n' -alias hnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[hH]" -print \) | xargs -r egrep --color=auto -n -v' -alias jfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.java" -print \) | xargs -r egrep --color=auto -n' -alias jnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.java" -print \) | xargs -r egrep --color=auto -n -v' -alias pyfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.py" -print \) | xargs -r egrep --color=auto -n' -alias pynotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.py" -print \) | xargs -r egrep --color=auto -n -v' -alias dfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[dD]" -print \) | xargs -r egrep --color=auto -n' -alias dnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[dD]" -print \) | xargs -r egrep --color=auto -n -v' -alias ofind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.o" -print \) | xargs -r nm | egrep --color=auto -n' -alias rstfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.rst" \) -print \) | xargs -r egrep --color=auto -n' -alias rstnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.rst" \) -print \) | xargs -r egrep --color=auto -n -v' -if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then - alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe" - alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe" - alias powerpnt="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app powerpnt.exe" - alias visio="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Visio\ 2010 --cx-app visio.exe" -fi - -# History search. -alias hgrep='history|grep --color' -alias phgrep='cat ~/.persistent_history|grep --color' - -# Kill ssh or sshpass sessions (e.g. if VPN hangs). -alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9" diff --git a/atom/atom-set-proxy.py b/atom/atom-set-proxy.py deleted file mode 100755 index ff2a1b80..00000000 --- a/atom/atom-set-proxy.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python -# Python script to set/unset Atom Package Manager proxy setting. -# Jim Lawton, 29th June, 2015. - -from __future__ import print_function -import os -import os.path -import sys -from optparse import OptionParser - -_APM_CFGFILE = ".atom/.apmrc" -_NPM_CFGFILE = ".npmrc" - - -def _getOpts(): - """Parse command line options and arguments.""" - usage = "%prog [options] [proxy-url]" - parser = OptionParser(usage=usage, - description="Set/unset Atom Package Manager " - "proxy setting.") - (opts, args) = parser.parse_args() - opts.proxy = None - if len(args) > 0: - opts.proxy = args[0] - return (opts, args) - - -def main(): - "Main function." - opts, args = _getOpts() - - for cfgfile in [_APM_CFGFILE, _NPM_CFGFILE]: - cfgfile = os.path.join(os.getenv("HOME"), cfgfile) - if not os.path.exists(cfgfile): - # print("Config file %s does not exist!" % cfgfile) - return - - lines = newlines = [] - with open(cfgfile, 'r') as f: - lines = f.readlines() - for line in lines: - newline = None - if "proxy" in line: - continue - else: - newline = line - if newline: - newlines.append(newline) - if opts.proxy: - newlines.append("proxy = %s\n" % opts.proxy) - newlines.append("https-proxy = %s\n" % opts.proxy) - with open(cfgfile, 'w') as f: - f.writelines(newlines) - - -if __name__ == '__main__': - main() diff --git a/autoenv b/autoenv deleted file mode 160000 index efb7e7e9..00000000 --- a/autoenv +++ /dev/null @@ -1 +0,0 @@ -Subproject commit efb7e7e9d9c59c6452157b4760b8521b08db705a diff --git a/bash_logout b/bash_logout deleted file mode 100644 index de4f5f75..00000000 --- a/bash_logout +++ /dev/null @@ -1,7 +0,0 @@ -# ~/.bash_logout: executed by bash(1) when login shell exits. - -# when leaving the console clear the screen to increase privacy - -if [ "$SHLVL" = 1 ]; then - [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q -fi diff --git a/bash_options b/bash_options deleted file mode 100644 index 74689834..00000000 --- a/bash_options +++ /dev/null @@ -1,44 +0,0 @@ -# Shell options. - -# Include dot (.) files in the results of expansion. -#shopt -s dotglob - -# Case-insensitive matching for filename expansion. -shopt -s nocaseglob - -# Enable extended pattern matching. -shopt -s extglob - -# When running two bash windows, allow both to write to the history, not one -# stomping the other. -shopt -s histappend - -# Keep multiline commands as one command in history. -shopt -s cmdhist - -#set nobeep - -# Don't put duplicate lines in the history -export HISTCONTROL=ignoredups - -# Ignore successive duplicate entries. -export HISTCONTROL=ignoreboth - -# Store a lot of history entries in a file for grep-age -shopt -s histappend - -export HISTFILE=~/long_history -export HISTFILESIZE=100000 - -# No reason not to save a bunch in history -# Takes up several more MBs of RAM now, oOOOooh -export HISTSIZE=20000 - -# Ignore dupe commands and other ones you don't care about -export HISTIGNORE="&:[ ]*:exit:ls:pwd:[bf]g" - -# Old way to save history across multiple sessions. -#export PROMPT_COMMAND="history -a; history -n; $PROMPT_COMMAND" - - - diff --git a/bash_profile b/bash_profile deleted file mode 100644 index 9931e6a4..00000000 --- a/bash_profile +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash - -######################################################################## -# Bash Interactive Shell Setup -######################################################################## - - -# Load paths and environment variables -source ~/dotfiles/vars -source ~/dotfiles/functions -source ~/dotfiles/paths -source ~/dotfiles/aliases -source ~/dotfiles/activities -source ~/dotfiles/colors - -# Load bash options. -source ~/dotfiles/bash_options - -#PROMPT_COMMAND='history -a' - -# Load Matthew's Git bash prompt -#source ~/dotfiles/bash_prompt - -# Load my Git bash prompt -source ~/dotfiles/bash_prompt_current - -# Set up Autojump. -if [ -f /usr/share/autojump/autojump.sh ]; then - source /usr/share/autojump/autojump.sh -fi -if isMac; then - [[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh -fi - -# Set up autoenv -#source ~/.autoenv/activate.sh - -#if [ -z "$SSH_CLIENT" -o ! -z "$SSH_TTY" ]; then -# bind 'set match-hidden-files off' -# #bind 'set show-all-if-ambiguous on' -# bind '"\e[3;5~":backward-kill-word' -# bind '"\C-?":backward-kill-word' -# bind '"\e[1;5D":backward-word' -# bind '"\e[1;5C":forward-word' -#fi - -#if [ ! -z "$DISPLAY" ]; then - #export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'; - #xmodmap -e 'clear lock' - #xmodmap -e "remove Lock = Caps_Lock" - #xmodmap -e "keycode 24 = q Q at at at at" -#fi - -checkproxy - -# Unison sync script... -# Only run on the client host, and only if interactive. -if [ "$HOSTNAME" == "apollo" ]; then - echo $- | grep -q i - if [ $? -eq 0 ]; then - sync_proc_count=`ps auxww | grep unison-sync.py | grep -vc grep` - if [ $sync_proc_count -eq 0 ]; then - python ${HOME}/dotfiles/unison-sync/unison-sync.py >${HOME}/.unison_sync/unison_sync.log 2>&1 & - fi - fi -fi - -# Stop Centrify. It seems to cause major hangs in bash tab completion. -if [ "$HOSTNAME" == "apollo" ]; then - ps auxww | grep /usr/sbin/adclient | grep -v grep > /dev/null - if [ $? -eq 0 ]; then - echo "Stopping Centrify..." - sudo service centrifydc stop - fi -fi - -# Load mingit aliases. -source ~/dotfiles/git/mingit/.bashrc - -# Set up virtualenvwrapper. -if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then - source /usr/share/virtualenvwrapper/virtualenvwrapper.sh -elif [ -f /usr/local/bin/virtualenvwrapper.sh ]; then - source /usr/local/bin/virtualenvwrapper.sh -elif [ -f /usr/bin/virtualenvwrapper.sh ]; then - source /usr/bin/virtualenvwrapper.sh -else - echo "WARNING: Can't find virtualenvwrapper.sh" -fi - -# Set up Bash completion. -if [ -f /etc/bash_completion ]; then - source /etc/bash_completion - source ~/dotfiles/go-bash-completion/go-bash-completion.bash -elif [ -f /usr/local/etc/bash_completion ]; then - source /usr/local/etc/bash_completion - source /usr/local/etc/bash_completion.d/git-completion.bash - source ~/dotfiles/go-bash-completion/go-bash-completion.bash -fi - -# All done. - -test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" diff --git a/bash_prompt b/bash_prompt deleted file mode 100644 index aada5431..00000000 --- a/bash_prompt +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -######################################################################## -# Matthew's Git Bash Prompt -######################################################################## - RED="\[\033[0;31m\]" - YELLOW="\[\033[0;33m\]" - GREEN="\[\033[0;32m\]" - BLUE="\[\033[0;34m\]" - LIGHT_RED="\[\033[1;31m\]" -LIGHT_GREEN="\[\033[1;32m\]" - WHITE="\[\033[1;37m\]" - LIGHT_GRAY="\[\033[0;37m\]" - COLOR_NONE="\[\e[0m\]" - -function parse_git_branch { - git rev-parse --git-dir &> /dev/null - git_status="$(git status 2> /dev/null)" - branch_pattern="^# On branch ([^${IFS}]*)" - remote_pattern="# Your branch is (.*) '" - diverge_pattern="# Your branch and (.*) have diverged" - - if [[ ! ${git_status}} =~ "working directory clean" ]]; then - state="${RED}⚡" - fi - # add an else if or two here if you want to get more specific - if [[ ${git_status} =~ ${remote_pattern} ]]; then - if [[ ${BASH_REMATCH[1]} == "ahead of" ]]; then - remote="${YELLOW}↑" - else - remote="${YELLOW}↓" - fi - fi - if [[ ${git_status} =~ ${diverge_pattern} ]]; then - remote="${YELLOW}↕" - fi - if [[ ${git_status} =~ ${branch_pattern} ]]; then - branch=${BASH_REMATCH[1]} - echo " (${branch})${remote}${state}" - fi -} - -function git_dirty_flag { - git status 2> /dev/null | grep -c : | awk '{if ($1 > 0) print "⚡"}' -} - -function prompt_func() { - previous_return_value=$?; - #The lowercase w is the full current working directory - #prompt="${TITLEBAR}${BLUE}[${RED}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" - - #Capital W is just the trailing part of the current working directory - prompt="${TITLEBAR}${BLUE}[${RED}\W${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" - - if test $previous_return_value -eq 0 - then - PS1="${prompt}> " - else - PS1="${prompt}${RED}>${COLOR_NONE} " - fi -} - -PROMPT_COMMAND=prompt_func diff --git a/bash_prompt_current b/bash_prompt_current deleted file mode 100644 index 48b64afc..00000000 --- a/bash_prompt_current +++ /dev/null @@ -1,35 +0,0 @@ -# Bash shell prompting. - -# Old trusty prompt. -#export PS1='\[\033[1;34m\]\h:\W>\[\033[0m\] ' - -# New shiny Git prompt. -source ~/dotfiles/git/git-prompt.sh -export GIT_PS1_SHOWDIRTYSTATE="true" -export GIT_PS1_SHOWSTASHSTATE="true" -export GIT_PS1_SHOWUNTRACKEDFILES="true" -export GIT_PS1_SHOWUPSTREAM="auto" -export GIT_PS1_SHOWCOLORHINTS="true" - -if isMac; then - if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then - export PROMPT_COMMAND='title; log_bash_persistent_history; __git_ps1 "\[$IBlue\]jim@mac\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' - else - export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]jim@mac\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' - fi -else - export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' -fi - -export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n' - -#export PROMPT_COMMAND=' -#if [ -d .svn ]; then -# SVNURL=$(svn info | awk "/^URL:/ {print \$2}") -# SVNPTH=$(svn info | awk "/^URL:/ {print \$2}" | cut -d/ -f4-) -# SVNREPOS=$(svn info | awk "/^Repository Root:/ {print \$3}") -# echo -ne "\033]0;/$SVNPTH"; echo -ne "\007" -#else -# echo -ne "\033]0;${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007" -#fi' - diff --git a/bashrc b/bashrc deleted file mode 100644 index 29a9d34b..00000000 --- a/bashrc +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -######################################################################## -# Bash non-interactive session setup -######################################################################## - -# Bash non-interactive shell will load the same functions as the interactive shell -source ~/.bash_profile diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 00000000..32cc9a01 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dotfiles bootstrap script. +# NOTE: this has only been tested on macOS. + +# Install XCode Command Line Tools, if necessary. +xcode-select --install || echo "XCode already installed" + +# Install Rosetta. +sudo softwareupdate --install-rosetta || echo "Rosetta already installed" + +# Install Homebrew, if necessary. +if which -s brew; then + echo 'Homebrew is already installed' +else + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + ( + echo + echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' + ) >>$HOME/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" +fi + +brew install chezmoi +chezmoi init jimlawton/dotfiles +chezmoi apply diff --git a/chezmoi/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl new file mode 100644 index 00000000..b7752971 --- /dev/null +++ b/chezmoi/.chezmoi.toml.tmpl @@ -0,0 +1,13 @@ +{{- $email := promptStringOnce . "email" "Email address" -}} +{{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}} + +umask = 0o022 + +encryption = "age" +[age] + identity = "~/.config/chezmoi/key.txt" + recipient = "age160lkyv2ayy6n5j2d34h72kjry00styzt24mfsq2dn588tn95ygzqrnnak6" + +[data] + email = {{ $email | quote }} + passphrase = {{ $passphrase | quote }} diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore new file mode 100644 index 00000000..9cac80c9 --- /dev/null +++ b/chezmoi/.chezmoiignore @@ -0,0 +1,4 @@ +key.txt.age +identity.txt +crontab +Brewfile diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile new file mode 100644 index 00000000..760555da --- /dev/null +++ b/chezmoi/Brewfile @@ -0,0 +1,375 @@ +tap "abhinav/tap" +tap "ankitpokhrel/jira-cli" +tap "anomalyco/tap" +tap "bufbuild/buf" +tap "charmbracelet/tap" +tap "common-fate/granted" +tap "coretech/terrafile" +tap "dutchcoders/cloudman" +tap "github/gh" +tap "julien-cpsn/atac" +tap "manaflow-ai/cmux" +tap "messense/macos-cross-toolchains" +tap "romkatv/powerlevel10k" +tap "steipete/tap" +tap "taiki-e/tap" +tap "yuuichieguchi/calyx" +brew "a2ps" +brew "adr-tools" +brew "age" +brew "openssl@3" +brew "readline" +brew "xz" +brew "ansible@9" +brew "giflib" +brew "libtiff" +brew "boost" +brew "asciidoc" +brew "asciinema" +brew "gettext" +brew "oniguruma" +brew "atac" +brew "atomicparsley" +brew "atuin", restart_service: :changed +brew "autojump" +brew "awk" +brew "node" +brew "aws-cdk" +brew "aws-shell" +brew "awscli" +brew "bandwhich" +brew "base64" +brew "bash" +brew "bash-completion" +brew "libssh2" +brew "bat" +brew "freetype" +brew "cairo" +brew "harfbuzz" +brew "bazel" +brew "bitwarden-cli" +brew "black" +brew "block-goose-cli" +brew "brew-cask-completion" +brew "bzip2" +brew "cargo-binstall" +brew "gcc" +brew "checkov" +brew "chezmoi" +brew "clang-format" +brew "cloc" +brew "cmake" +brew "coreutils" +brew "curl" +brew "d2" +brew "dateutils" +brew "delve" +brew "devcontainer" +brew "difftastic" +brew "diffutils" +brew "dive" +brew "docker-completion" +brew "docker" +brew "docker-compose" +brew "docker-credential-helper" +brew "docker-credential-helper-ecr" +brew "docutils" +brew "dos2unix" +brew "dotter" +brew "doxygen" +brew "eza" +brew "fd" +brew "sdl2" +brew "x265" +brew "ffmpeg" +brew "figlet" +brew "fish" +brew "fribidi" +brew "fzf" +brew "get_iplayer" +brew "gh" +brew "gimme-aws-creds" +brew "gist" +brew "git" +brew "git-delta" +brew "git-extras" +brew "git-filter-repo" +brew "git-quick-stats" +brew "git-who" +brew "gitleaks" +brew "glow" +brew "gnu-indent" +brew "gnu-sed" +brew "gnu-tar" +brew "gnu-time" +brew "libidn2" +brew "p11-kit" +brew "unbound" +brew "gnutls" +brew "libgcrypt" +brew "libksba" +brew "libusb" +brew "pinentry" +brew "gnupg" +brew "go" +brew "pkgconf" +brew "gobject-introspection" +brew "goenv" +brew "golangci-lint" +brew "gopls" +brew "netpbm" +brew "gts" +brew "librsvg" +brew "graphviz" +brew "grep" +brew "grpcurl" +brew "gtk+3" +brew "hadolint" +brew "htop" +brew "httpie" +brew "hub" +brew "ical-buddy" +brew "id3lib" +brew "id3v2" +brew "infracost" +brew "iproute2mac" +brew "ipython" +brew "isort" +brew "jfrog-cli" +brew "jj" +brew "jless" +brew "jq" +brew "jsonlint" +brew "jsonnet" +brew "pandoc" +brew "zeromq" +brew "jupyterlab" +brew "leptonica" +brew "lftp" +brew "libcaca" +brew "libffi" +brew "libressl" +brew "libusb-compat" +brew "llvm" +brew "make" +brew "markdownlint-cli" +brew "mas" +brew "md5sha1sum", link: true +brew "mdbook" +brew "mergiraf" +brew "micro" +brew "microsocks" +brew "minicom" +brew "mmark" +brew "mole" +brew "mplayer" +brew "mtr" +brew "mypy" +brew "ncftp" +brew "neovim" +brew "nushell" +brew "ocrad" +brew "okta-aws-cli" +brew "openconnect" +brew "openjdk" +brew "openjdk@11" +brew "ossp-uuid" +brew "osv-scanner" +brew "p7zip" +brew "parallel" +brew "patchutils" +brew "peco" +brew "percol" +brew "pip-completion" +brew "pipenv" +brew "pipx" +brew "plantuml" +brew "pre-commit" +brew "progress" +brew "protobuf" +brew "protobuf-c" +brew "protoc-gen-go" +brew "protoc-gen-go-grpc" +brew "pth" +brew "pulseaudio" +brew "pycodestyle" +brew "pyenv" +brew "pyenv-virtualenv" +brew "pyenv-virtualenvwrapper" +brew "pygments" +brew "python-packaging" +brew "qemu" +brew "qt" +brew "rage" +brew "rake-completion" +brew "rbenv" +brew "rbw" +brew "rclone" +brew "repo" +brew "ripgrep" +brew "rlwrap" +brew "robot-framework" +brew "rtmpdump" +brew "ruff" +brew "rust" +brew "rustup" +brew "scc" +brew "sccache" +brew "semgrep" +brew "shellcheck" +brew "skate" +brew "snitch" +brew "socat" +brew "sonar-scanner" +brew "sphinx-doc" +brew "ssh-copy-id" +brew "sshuttle" +brew "starship" +brew "staticcheck" +brew "telnet" +brew "terminal-notifier" +brew "terraform-docs" +brew "tesseract" +brew "tfenv" +brew "tflint" +brew "tfsec" +brew "tig" +brew "tldr" +brew "tmux" +brew "tmuxinator" +brew "todo-txt" +brew "tokei" +brew "tree" +brew "uv" +brew "vim" +brew "wget" +brew "witr" +brew "xpdf" +brew "xvid" +brew "yaegi" +brew "yamlfmt" +brew "yamllint" +brew "yt-dlp" +brew "zellij" +brew "zig" +brew "zlib" +brew "zoxide" +brew "zsh" +brew "ankitpokhrel/jira-cli/jira-cli" +brew "anomalyco/tap/opencode" +brew "bufbuild/buf/buf" +brew "common-fate/granted/granted" +brew "coretech/terrafile/terrafile" +brew "dutchcoders/cloudman/cloudman" +brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu" +brew "taiki-e/tap/cargo-llvm-cov" +cask "alt-tab" +cask "bartender" +cask "beardedspice" +cask "beyond-compare" +cask "bitwarden" +cask "block-goose" +cask "brave-browser" +cask "yuuichieguchi/calyx/calyx" +cask "claude" +cask "claudebar" +cask "cmux" +cask "copilot-cli" +cask "ddpm" +cask "docker-desktop" +cask "doll" +cask "drawio" +cask "firefox" +cask "font-anonymice-powerline" +cask "font-consolas-for-powerline" +cask "font-dejavu-sans-mono-for-powerline" +cask "font-droid-sans-mono-for-powerline" +cask "font-fira-code-nerd-font" +cask "font-fira-mono-for-powerline" +cask "font-inconsolata-dz-for-powerline" +cask "font-inconsolata-for-powerline" +cask "font-inconsolata-for-powerline-bold" +cask "font-inconsolata-g-for-powerline" +cask "font-juliamono" +cask "font-liberation-mono-for-powerline" +cask "font-menlo-for-powerline" +cask "font-meslo-for-powerline" +cask "font-monofur-for-powerline" +cask "font-noto-mono-for-powerline" +cask "font-powerline-symbols" +cask "font-roboto-mono-for-powerline" +cask "font-sf-mono-for-powerline" +cask "font-source-code-pro-for-powerline" +cask "font-ubuntu-mono-derivative-powerline" +cask "fork" +cask "funter" +cask "ghostty" +cask "git-credential-manager" +cask "abhinav/tap/git-spice" +cask "google-drive" +cask "hammerspoon" +cask "iterm2" +cask "jupyter-notebook-ql" +cask "karabiner-elements" +cask "maccy" +cask "meetingbar" +cask "mitmproxy" +cask "monitorcontrol" +cask "nordvpn" +cask "notunes" +cask "obsidian" +cask "opencode-desktop" +cask "pocket-casts" +cask "rectangle" +cask "steipete/tap/repobar" +cask "slack" +cask "transmission" +cask "utm" +cask "vlc" +cask "whatsapp" +cask "wireshark-app" +cask "wispr-flow" +cask "yt-music" +cask "zed" +cask "zoom" +mas "Bitwarden", id: 1352778147 +mas "Elisi", id: 1406239881 +mas "GarageBand", id: 682658836 +mas "GoPro Player", id: 1460836908 +mas "GoPro Quik", id: 561350520 +mas "iMovie", id: 408981434 +mas "Keynote", id: 409183694 +mas "Kindle", id: 302584613 +mas "Magnet", id: 441258766 +mas "Mattermost", id: 1614666244 +mas "Notability", id: 360593530 +mas "Numbers", id: 409203825 +mas "Okta Extension App", id: 1439967473 +mas "Okta Verify", id: 490179405 +mas "Pages", id: 409201541 +mas "rcmd", id: 1596283165 +mas "Speedtest", id: 1153157709 +mas "Tailscale", id: 1475387142 +mas "TestFlight", id: 899247664 +mas "The Unarchiver", id: 425424353 +mas "Xmind", id: 1327661892 +mas "Yubico Authenticator", id: 1497506650 +go "github.com/maxmind/mm-geofeed-verifier" +go "github.com/lasorda/protobuf-language-server" +cargo "cargo-audit" +cargo "cargo-deps" +cargo "cargo-fuzz" +cargo "cargo-license" +cargo "cargo-llvm-cov" +cargo "cargo-outdated" +cargo "cargo-semver@1.0.0-alpha.3" +cargo "cargo-tarpaulin" +cargo "cargo-udeps" +cargo "cargo-warloc" +cargo "cargo-workspaces" +cargo "cargo-xwin" +cargo "cargo2junit" +cargo "cross" +cargo "gitoxide" +cargo "oxdraw" +cargo "sccache" diff --git a/chezmoi/crontab b/chezmoi/crontab new file mode 100644 index 00000000..8e0385ce --- /dev/null +++ b/chezmoi/crontab @@ -0,0 +1,2 @@ +0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/.local/share/chezmoi/obsidian/daily-note.py >> ~/daily-note.log 2>&1 +0,15,30,45 8,9,10,11,12 * * 1 python3 ~/.local/share/chezmoi/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 diff --git a/chezmoi/dot_claude/settings.json b/chezmoi/dot_claude/settings.json new file mode 100644 index 00000000..dd616c80 --- /dev/null +++ b/chezmoi/dot_claude/settings.json @@ -0,0 +1,16 @@ +{ + "env": { + "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "1" + }, + "model": "opus[1m]", + "statusLine": { + "type": "command", + "command": "sh /Users/james.lawton/.claude/statusline-command.sh" + }, + "enabledPlugins": { + "rust-analyzer-lsp@claude-plugins-official": true, + "superpowers@claude-plugins-official": true + }, + "effortLevel": "medium", + "autoDreamEnabled": true +} diff --git a/chezmoi/dot_claude/statusline-command.sh b/chezmoi/dot_claude/statusline-command.sh new file mode 100644 index 00000000..6d02f7ca --- /dev/null +++ b/chezmoi/dot_claude/statusline-command.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +input=$(cat) +cwd=$(echo "$input" | jq -r '.workspace.current_dir') +model=$(echo "$input" | jq -r '.model.display_name') +model_id=$(echo "$input" | jq -r '.model.id') +used=$(echo "$input" | jq -r '.context_window.used_percentage // empty') +total_input=$(echo "$input" | jq -r '.context_window.total_input_tokens // 0') +total_output=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0') + +# Git branch +git_part="" +if git -C "$cwd" rev-parse --git-dir > /dev/null 2>&1; then + branch=$(git -C "$cwd" --no-optional-locks branch --show-current 2>/dev/null || git -C "$cwd" --no-optional-locks rev-parse --short HEAD 2>/dev/null) + if [ -n "$branch" ]; then + git_part=" $branch" + fi +fi + +# Context usage +ctx_part="" +if [ -n "$used" ]; then + ctx_part=" ctx:${used}%" +fi + +# Cost calculation based on model ID (prices per million tokens) +case "$model_id" in + *opus-4*|*opus-4-5*) + input_price="15.0" + output_price="75.0" + ;; + *sonnet-4*|*sonnet-4-5*|*sonnet-4-6*) + input_price="3.0" + output_price="15.0" + ;; + *haiku-3-5*|*haiku-4*) + input_price="0.8" + output_price="4.0" + ;; + *) + input_price="3.0" + output_price="15.0" + ;; +esac + +cost_part="" +if [ "$total_input" -gt 0 ] 2>/dev/null || [ "$total_output" -gt 0 ] 2>/dev/null; then + cost=$(awk -v ti="$total_input" -v to="$total_output" -v ip="$input_price" -v op="$output_price" \ + 'BEGIN { cost = (ti * ip / 1000000) + (to * op / 1000000); printf "%.4f", cost }') + cost_part=" \$${cost}" +fi + +printf "%s |%s%s%s\n" "$model" "$git_part" "$ctx_part" "$cost_part" diff --git a/colordiffrc b/chezmoi/dot_colordiffrc similarity index 100% rename from colordiffrc rename to chezmoi/dot_colordiffrc diff --git a/colorgccrc b/chezmoi/dot_colorgccrc similarity index 100% rename from colorgccrc rename to chezmoi/dot_colorgccrc diff --git a/gitconfig b/chezmoi/dot_gitaliases similarity index 65% rename from gitconfig rename to chezmoi/dot_gitaliases index 8f863d34..311bec0d 100644 --- a/gitconfig +++ b/chezmoi/dot_gitaliases @@ -1,90 +1,3 @@ -[user] - name = Jim Lawton - email = jim.lawton@accenture.com -[core] - safecrlf = warn - deltaBaseCacheLimit = 1G - excludesfile = ~/.gitignore - quotepath = false - editor = vim -[push] - default = simple -[branch "master"] - rebase = true - autosetuprebase = true -[branch] - autosetuprebase = always -[status] - displaycommentprefix = false -[rebase] - stat = true -[hub] - protocol = https -[color] - ui = auto - # diff = auto - # status = auto - # branch = auto -[color "branch"] - #current = yellow reverse - #local = yellow - #remote = green -[color "diff"] - #meta = yellow bold - #frag = magenta bold - #old = red bold - #new = green bold -[color "status"] - #added = yellow - #changed = green - #untracked = cyan -[apply] - whitespace = nowarn -[rerere] - enabled = true -[diff] - tool = bc3 - algorithm = patience -[difftool] - prompt = false -[merge] - tool = bc3 -[mergetool] - prompt = false - keepBackup = false - bc3 = trustExitCode -[url "git://github.com/"] - insteadOf = "ghg://" - pushInsteadOf = "ghg://" - # Example: git clone ghg://ntschutta/emacs -[url "git://github.com/matthewmccullough/"] - insteadOf = "ghgm://" - pushInsteadOf = "ghgm://" - # Example: git clone ghgm://hellogitworld -[url "git@github.com:"] - insteadOf = "ghs://" - pushInsteadOf = "ghs://" -[url "git@github.com:jimlawton/"] - insteadOf = "ghsm://" - pushInsteadOf = "ghsm://" -[url "https://github.com/"] - insteadOf = "ghh://" - pushInsteadOf = "ghh://" -[url "https://github.com/jimlawton/"] - insteadOf = "ghhm://" - pushInsteadOf = "ghhm://" -[http] - # proxy=http://something -[github] - user = jimlawton - #token = PLACEHOLDER -[hub] - protocol = https -[gist] - private = yes - browse = yes -[push] - default = matching [alias] abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' @@ -92,25 +5,37 @@ br = branch busypeople = shortlog -6 busythisweek = shortlog --since=one.week.ago - cam = commit -a -m c = commit + cam = commit -a -m + cc-cache = "config --global credential.helper 'cache --timeout=300'" + cc-helperlin = "config --global credential.helper '/pathto/git-credential-gnome-key'" + cc-helperosx = "config --global credential.helper 'osxkeychain'" + cc-helperwin = "config --global credential.helper 'wincred'" + cc-off = "config --unset --global credential.helper" + ccfq = "!sh -c 'git add $1 && git commit -m\"Placeholder\"' -" ci = commit cl = log --stat -C -2 - cob = checkout -b co = checkout + cob = checkout -b configpushcurrent = config push.default current configpushnothing = config push.default nothing configpushtracking = config push.default matching configpushtracking = config push.default tracking configsimplelog = config format.pretty oneline + cs = status + d = diff --color-words dc = diff --staged dcw = diff --color-words - d = diff --color-words dh = diff HEAD - dump = cat-file -p + diffall = diff HEAD + dm = !git diff | mate + dv = !git diff | vim dw = diff --word-diff + echoparam1 = "!sh -c 'echo $0'" empty-tree-sha1 = hash-object -t tree /dev/null + es = !git pull --rebase && git push fetchnotes = !sh -c 'git fetch $1 refs/notes/*:refs/notes/*' - + findjuniodeletes = log --author=Junio --diff-filter=D --since=2.years.ago fixup = "!sh -c 'git commit -m \"fixup! $(git log -1 --format='\\''%s'\\'' $@)\"' -" gc-ap = gc --aggressive --prune graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/\"&\"/g' ; echo '}'; }; f" @@ -120,14 +45,30 @@ ignorechanges = update-index --assume-unchanged ignored = ls-files --others --i --exclude-standard k = !exec gitk --all& + l = log --stat -C + l1 = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative + l2 = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative + l3 = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative last = log -1 HEAD latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' + legitbranches = !legit branches + legitgraft = !legit graft \"$@\" + legitharvest = !legit harvest \"$@\" + legitpublish = !legit publish \"$@\" + legitsprout = !legit sprout \"$@\" + legitswitch = !legit switch \"$@\" + legitsync = !legit sync \"$@\" + legitunpublish = !legit unpublish \"$@\" lf = log --pretty=fuller + # lg = log --graph lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgme = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --author=me lgorigin = log --oneline --graph --decorate origin/master...master --left-right + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' listconf = config --global --list listhistory = log --name-status + listignored = ls-files --others -i --exclude-standard liststaged = diff --name-status --staged listunstaged = diff --name-status ll = log --stat -C -3 @@ -136,17 +77,18 @@ logcpy = log --stat -1 -C -C logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 logit = log --stat -M - logme = log --author=Matthew --stat -C logm = log --stat -M + logme = log --author=me --stat -C logn = log --oneline --name-only - logr2 = log --stat -M -2 logr = log -M + logr2 = log --stat -M -2 logsimple = log --graph --abbrev-commit --pretty=oneline --all --decorate lol = log --pretty=oneline --graph --abbrev-commit --all lp = log -p lpo = log --pretty=oneline --abbrev-commit --graph --decorate --all lsm = log -M --stat lwr = log --stat -C + me = !git config --get user.name && git config --get user.email mergekeepoursonly = merge -s ours nfjsunpushed = log origin/master..master --oneline noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' @@ -159,50 +101,49 @@ ph = push pl = pull prunenow = gc --prune=now - pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf pub = push -u origin - purgeme = !git clean -fd && git reset --hard + pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf + pullsvn = svn rebase pur = pull --rebase + purgeme = !git clean -fd && git reset --hard pushnotes = !sh -c 'git push $1 refs/notes/*' - + pushsvn = svn dcommit ready = rebase -i @{u} + recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f" redocommit = reset --soft HEAD^ + reward = blame ri = rebase --interactive --autosquash rlog = log --color-words --stat -3 rmmissing = !git rm $(git ls-files --deleted) ro = !git fetch origin && git reset --hard origin/master rtheirs = !git checkout --theirs ./ && git add . && git rebase --continue rv = remote -v + s = status -u -s scrub = !git reset --hard && git clean -fd servehere = daemon --verbose --informative-errors --reuseaddr --export-all --base-path=. --enable=receive-pack shorten = "!sh -c 'curl -i http://git.io -F url=$1' -" - showignored2 = ls-files --others --ignored --exclude-standard showignored = clean -ndX + showignored2 = ls-files --others --ignored --exclude-standard showuntracked = ls-files --others --exclude-standard slog = log --graph --simplify-by-decoration --all --abbrev-commit --pretty=oneline sno = show --name-only + spull = !git-svn fetch && git-svn rebase + spush = !git-svn dcommit squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" - s = status -u -s - standup = log --all --since yesterday --author jim.lawton@s3group.com - stat = status st = status + standup = log --all --since yesterday --author jimlawton@gmail.com + stat = status sync = !git pull && git push tagcontains = git tag -l --contains HEAD + testecho1 = !sh -c 'echo with slash: zero=$0 one=$1 two=$2' - + testecho2 = !sh -c 'echo without slash: zero=$0 one=$1 two=$2' tips = "!_() { t=$(git rev-list --no-merges --max-count=1 \"$@\"); if test -n \"$t\"; then echo $t; _ \"$@\" ^$t; fi; }; _" type = cat-file -t + url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" weekly = !git --no-pager log --author=\"`git config --global user.name`\" --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short whitespaceviolations = "!git diff --check $(git empty-tree-sha1)" who = shortlog -s -- + wip = for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads wipe = reset --hard HEAD - url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" -[http] - sslVerify = false - postBuffer = 524288000 -[diff "nodiff"] - command = /bin/true -[credential] - helper = osxkeychain -[filter "lfs"] - clean = git-lfs clean %f - smudge = git-lfs smudge %f - required = true + diff --git a/chezmoi/dot_gitconfig.tmpl b/chezmoi/dot_gitconfig.tmpl new file mode 100644 index 00000000..689a3166 --- /dev/null +++ b/chezmoi/dot_gitconfig.tmpl @@ -0,0 +1,147 @@ +# Mac/Linux specifics. +{{ if eq .chezmoi.os "darwin" -}} +[credential] + helper = osxkeychain + helper = /usr/local/share/gcm-core/git-credential-manager +[safe] + directory = "*" + +[push] + default = current +{{ else if eq .chezmoi.os "linux" -}} +[credential] + helper = cache --timeout=300 +{{ end -}} + +# Personal/work Git identity. +[includeIf "gitdir:~/Work/"] + path = ~/.gitidentity-work +[includeIf "gitdir:~/Personal/"] + path = ~/.gitidentity-personal +[includeIf "gitdir:~/.local/share/chezmoi/"] + path = ~/.gitidentity-personal + +# Git aliases. +[include] + path = ~/.gitaliases + +[apply] + whitespace = nowarn + +[branch] + # Automatically set up pull to be --rebase + autosetuprebase = always + +[branch "master"] + rebase = true + autosetuprebase = true + +[color] + # ui = true is a superset of all the more specific color options + # as documented at http://book.git-scm.com/5_customizing_git.html + # When set to always, always use colors in all git commands which are capable of colored output. + # When false, never. When set to true or auto, use colors only when the output is to the terminal. + # When more specific variables of color.* are set, they always take precedence over this setting. + # Defaults to false. + ui = auto + # diff = auto + # status = auto + # branch = auto + +[color "branch"] + #current = yellow reverse + #local = yellow + #remote = green +[color "diff"] + #meta = yellow bold + #frag = magenta bold + #old = red bold + #new = green bold +[color "status"] + #added = yellow + #changed = green + #untracked = cyan + +[core] + safecrlf = warn + deltaBaseCacheLimit = 1G + excludesfile = ~/.gitignore + quotepath = false +# autocrlf = input +# editor = vim + +[diff] + algorithm = patience + tool = bcomp + +# This is for skipping diffing files, that you don't want to add to .gitignore. +# https://stackoverflow.com/questions/52623898/how-can-i-skip-some-files-while-taking-git-diff +[diff "nodiff"] + command = /bin/true + +[difftool] + prompt = false + +[difftool "bcomp"] + trustExitCode = true + cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" + +[filter "lfs"] + required = true + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + +[filter "media"] + required = true + clean = git media clean %f + smudge = git media smudge %f + +[gh] + protocol = https + +[gist] + private = yes + browse = yes + +[github] + user = jimlawton + #token = PLACEHOLDER + +[http] + sslVerify = false + postBuffer = 524288000 + +[hub] + protocol = https + +[merge] + tool = bcomp + +[mergetool] + prompt = false + keepBackup = false + +[mergetool "bcomp"] + trustExitCode = true + cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED" + +[pager] + diff = false + branch = false + +[push] + # default = simple + default = matching + +[rebase] + stat = true + +[rerere] + enabled = true + +[status] + displaycommentprefix = false + +[spice "branchCreate"] + commit = false diff --git a/chezmoi/dot_gitignore b/chezmoi/dot_gitignore new file mode 100644 index 00000000..b2f73e94 --- /dev/null +++ b/chezmoi/dot_gitignore @@ -0,0 +1,16 @@ +*.swp +*.swo +*~ +.ruby-version +.rbenv-version +*.sublime-project +*.sublime-workspace +thumbs.db +.#* +*.pyc +*.o +.srclib-cache/ +.DS_Store +.gradle +.gradle_targets +.gradletasknamecache diff --git a/chezmoi/dot_hammerspoon/Spoons/.keep b/chezmoi/dot_hammerspoon/Spoons/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl b/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl new file mode 100644 index 00000000..f92eb001 --- /dev/null +++ b/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl @@ -0,0 +1 @@ +{{- .chezmoi.homeDir -}}/.local/share/chezmoi/hyper-hacks/hammerspoon/init.lua diff --git a/inputrc b/chezmoi/dot_inputrc similarity index 95% rename from inputrc rename to chezmoi/dot_inputrc index 74122c53..0b063553 100644 --- a/inputrc +++ b/chezmoi/dot_inputrc @@ -10,6 +10,7 @@ set match-hidden-files off "\e[D": backward-char "\e[3;5~": backward-kill-word "\C-?": backward-kill-word +"\e(": kill-word "\e[1;5D": backward-word "\e[1;5C": forward-word diff --git a/chezmoi/dot_iterm2/Profiles.json b/chezmoi/dot_iterm2/Profiles.json new file mode 100644 index 00000000..7e7a958b --- /dev/null +++ b/chezmoi/dot_iterm2/Profiles.json @@ -0,0 +1,2156 @@ +{ +"Profiles": [ +{ + "Ansi 7 Color (Light)" : { + "Red Component" : 0.7810397744178772, + "Color Space" : "sRGB", + "Blue Component" : 0.78104829788208008, + "Alpha Component" : 1, + "Green Component" : 0.78105825185775757 + }, + "Ansi 15 Color (Light)" : { + "Red Component" : 0.99999600648880005, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Ansi 2 Color (Light)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.7607843279838562 + }, + "Bold Color" : { + "Red Component" : 0.062745101749897003, + "Color Space" : "sRGB", + "Blue Component" : 0.062745101749897003, + "Alpha Component" : 1, + "Green Component" : 0.062745101749897003 + }, + "Ansi 1 Color (Dark)" : { + "Red Component" : 0.7074432373046875, + "Color Space" : "sRGB", + "Blue Component" : 0.16300037503242493, + "Alpha Component" : 1, + "Green Component" : 0.23660069704055786 + }, + "Use Bright Bold" : true, + "Ansi 9 Color (Light)" : { + "Red Component" : 0.8659515380859375, + "Color Space" : "sRGB", + "Blue Component" : 0.45833224058151245, + "Alpha Component" : 1, + "Green Component" : 0.47524076700210571 + }, + "Ansi 8 Color (Dark)" : { + "Red Component" : 0.40781760215759277, + "Color Space" : "sRGB", + "Blue Component" : 0.4078223705291748, + "Alpha Component" : 1, + "Green Component" : 0.40782788395881653 + }, + "Background Color" : { + "Red Component" : 0.97999999999999998, + "Color Space" : "sRGB", + "Blue Component" : 0.97999999999999998, + "Alpha Component" : 1, + "Green Component" : 0.97999999999999998 + }, + "Columns" : 80, + "Ansi 8 Color" : { + "Red Component" : 0.40781760215759277, + "Color Space" : "sRGB", + "Blue Component" : 0.4078223705291748, + "Alpha Component" : 1, + "Green Component" : 0.40782788395881653 + }, + "Right Option Key Sends" : 0, + "Ansi 4 Color (Light)" : { + "Red Component" : 0.15404300391674042, + "Color Space" : "sRGB", + "Blue Component" : 0.78216177225112915, + "Alpha Component" : 1, + "Green Component" : 0.26474356651306152 + }, + "Blinking Cursor" : false, + "Selected Text Color (Light)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Selected Text Color (Dark)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Ansi 3 Color (Dark)" : { + "Red Component" : 0.78058648109436035, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.76959484815597534 + }, + "Keyboard Map" : { + + }, + "Visual Bell" : true, + "Only The Default BG Color Uses Transparency" : true, + "Cursor Text Color" : { + "Red Component" : 1, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Scrollback Lines" : 1000, + "Selection Color (Light)" : { + "Red Component" : 0.70196080207824707, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.84313726425170898 + }, + "Ansi 0 Color" : { + "Red Component" : 0.078431375324726105, + "Color Space" : "sRGB", + "Blue Component" : 0.11764705926179886, + "Alpha Component" : 1, + "Green Component" : 0.098039217293262482 + }, + "Ansi 11 Color (Light)" : { + "Red Component" : 0.9259033203125, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.8833775520324707 + }, + "Ansi 5 Color (Dark)" : { + "Red Component" : 0.752197265625, + "Color Space" : "sRGB", + "Blue Component" : 0.74494361877441406, + "Alpha Component" : 1, + "Green Component" : 0.24931684136390686 + }, + "Cursor Text Color (Light)" : { + "Red Component" : 1, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Silence Bell" : false, + "Rows" : 25, + "Draw Powerline Glyphs" : true, + "Guid" : "1B0D64B6-E3A3-429A-AC1F-64B67EFEDAF3", + "Ansi 14 Color (Dark)" : { + "Red Component" : 0.37597531080245972, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.99263292551040649 + }, + "Ansi 15 Color (Dark)" : { + "Red Component" : 0.99999600648880005, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Ansi 0 Color (Dark)" : { + "Red Component" : 0.078431375324726105, + "Color Space" : "sRGB", + "Blue Component" : 0.11764705926179886, + "Alpha Component" : 1, + "Green Component" : 0.098039217293262482 + }, + "Ambiguous Double Width" : false, + "Option Key Sends" : 0, + "Ansi 3 Color" : { + "Red Component" : 0.78058648109436035, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.76959484815597534 + }, + "Window Type" : 0, + "BM Growl" : true, + "Prompt Before Closing 2" : false, + "Command" : "", + "Selected Text Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Ansi 14 Color (Light)" : { + "Red Component" : 0.37597531080245972, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.99263292551040649 + }, + "Cursor Guide Color (Dark)" : { + "Red Component" : 0.37649588016392954, + "Color Space" : "sRGB", + "Blue Component" : 0.94099044799804688, + "Alpha Component" : 0.25, + "Green Component" : 0.80232617749205526 + }, + "Send Code When Idle" : false, + "Ansi 6 Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0.78166204690933228, + "Alpha Component" : 1, + "Green Component" : 0.77425903081893921 + }, + "Jobs to Ignore" : [ + "rlogin", + "ssh", + "slogin", + "telnet" + ], + "Badge Color (Dark)" : { + "Red Component" : 0.9787440299987793, + "Color Space" : "sRGB", + "Blue Component" : 0.65218597462148864, + "Alpha Component" : 0.5, + "Green Component" : 0.65218597462148864 + }, + "Cursor Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Vertical Spacing" : 1, + "Disable Window Resizing" : true, + "Close Sessions On End" : true, + "Selection Color (Dark)" : { + "Red Component" : 0.70196080207824707, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.84313726425170898 + }, + "Default Bookmark" : "No", + "Foreground Color (Light)" : { + "Red Component" : 0.062745098039215685, + "Color Space" : "sRGB", + "Blue Component" : 0.062745098039215685, + "Alpha Component" : 1, + "Green Component" : 0.062745098039215685 + }, + "Custom Command" : "No", + "Background Color (Dark)" : { + "Red Component" : 0.0806884765625, + "Color Space" : "sRGB", + "Blue Component" : 0.12103271484375, + "Alpha Component" : 1, + "Green Component" : 0.099111050367355347 + }, + "Ansi 9 Color" : { + "Red Component" : 0.8659515380859375, + "Color Space" : "sRGB", + "Blue Component" : 0.45833224058151245, + "Alpha Component" : 1, + "Green Component" : 0.47524076700210571 + }, + "Ansi 14 Color" : { + "Red Component" : 0.37597531080245972, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.99263292551040649 + }, + "Flashing Bell" : false, + "Use Italic Font" : true, + "Ansi 13 Color (Dark)" : { + "Red Component" : 0.8821563720703125, + "Color Space" : "sRGB", + "Blue Component" : 0.8821563720703125, + "Alpha Component" : 1, + "Green Component" : 0.4927266538143158 + }, + "Minimum Contrast" : 0, + "Cursor Guide Color (Light)" : { + "Red Component" : 0.52338262643729649, + "Color Space" : "sRGB", + "Blue Component" : 0.85319280624389648, + "Alpha Component" : 0.25, + "Green Component" : 0.77217718629089516 + }, + "Ansi 12 Color" : { + "Red Component" : 0.65349078178405762, + "Color Space" : "sRGB", + "Blue Component" : 0.9485321044921875, + "Alpha Component" : 1, + "Green Component" : 0.67044717073440552 + }, + "Ansi 10 Color (Light)" : { + "Red Component" : 0.3450070321559906, + "Color Space" : "sRGB", + "Blue Component" : 0.56541937589645386, + "Alpha Component" : 1, + "Green Component" : 0.9042816162109375 + }, + "Non-ASCII Anti Aliased" : true, + "Ansi 10 Color" : { + "Red Component" : 0.3450070321559906, + "Color Space" : "sRGB", + "Blue Component" : 0.56541937589645386, + "Alpha Component" : 1, + "Green Component" : 0.9042816162109375 + }, + "Foreground Color" : { + "Red Component" : 0.062745101749897003, + "Color Space" : "sRGB", + "Blue Component" : 0.062745101749897003, + "Alpha Component" : 1, + "Green Component" : 0.062745101749897003 + }, + "Link Color (Light)" : { + "Red Component" : 0.19802422821521759, + "Color Space" : "sRGB", + "Blue Component" : 0.9337158203125, + "Alpha Component" : 1, + "Green Component" : 0.55789834260940552 + }, + "Description" : "Default", + "Ansi 7 Color (Dark)" : { + "Red Component" : 0.7810397744178772, + "Color Space" : "sRGB", + "Blue Component" : 0.78104829788208008, + "Alpha Component" : 1, + "Green Component" : 0.78105825185775757 + }, + "Sync Title" : false, + "Ansi 1 Color" : { + "Red Component" : 0.7074432373046875, + "Color Space" : "sRGB", + "Blue Component" : 0.16300037503242493, + "Alpha Component" : 1, + "Green Component" : 0.23660069704055786 + }, + "Name" : "Default", + "Transparency" : 0, + "Horizontal Spacing" : 1, + "Cursor Color (Dark)" : { + "Red Component" : 0.99997633695602417, + "Color Space" : "sRGB", + "Blue Component" : 0.99998724460601807, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Ansi 2 Color (Dark)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.7607843279838562 + }, + "Ansi 9 Color (Dark)" : { + "Red Component" : 0.8659515380859375, + "Color Space" : "sRGB", + "Blue Component" : 0.45833224058151245, + "Alpha Component" : 1, + "Green Component" : 0.47524076700210571 + }, + "Badge Color" : { + "Red Component" : 0.74613857269287109, + "Color Space" : "sRGB", + "Blue Component" : 0.11610633134841919, + "Alpha Component" : 0.5, + "Green Component" : 0.11610633134841919 + }, + "Ansi 13 Color (Light)" : { + "Red Component" : 0.8821563720703125, + "Color Space" : "sRGB", + "Blue Component" : 0.8821563720703125, + "Alpha Component" : 1, + "Green Component" : 0.4927266538143158 + }, + "Idle Code" : 0, + "Ansi 4 Color" : { + "Red Component" : 0.15404300391674042, + "Color Space" : "sRGB", + "Blue Component" : 0.78216177225112915, + "Alpha Component" : 1, + "Green Component" : 0.26474356651306152 + }, + "Bold Color (Dark)" : { + "Red Component" : 0.99999600648880005, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Screen" : -1, + "Ansi 4 Color (Dark)" : { + "Red Component" : 0.15404300391674042, + "Color Space" : "sRGB", + "Blue Component" : 0.78216177225112915, + "Alpha Component" : 1, + "Green Component" : 0.26474356651306152 + }, + "Cursor Text Color (Dark)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Selection Color" : { + "Red Component" : 0.70196080207824707, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 0.84313726425170898 + }, + "Use Non-ASCII Font" : false, + "Badge Color (Light)" : { + "Red Component" : 0.74613857269287109, + "Color Space" : "sRGB", + "Blue Component" : 0.11610633058398889, + "Alpha Component" : 0.5, + "Green Component" : 0.11610633058398889 + }, + "Character Encoding" : 4, + "Ansi 11 Color (Dark)" : { + "Red Component" : 0.9259033203125, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.8833775520324707 + }, + "Bold Color (Light)" : { + "Red Component" : 0.062745098039215685, + "Color Space" : "sRGB", + "Blue Component" : 0.062745098039215685, + "Alpha Component" : 1, + "Green Component" : 0.062745098039215685 + }, + "Ansi 12 Color (Dark)" : { + "Red Component" : 0.65349078178405762, + "Color Space" : "sRGB", + "Blue Component" : 0.9485321044921875, + "Alpha Component" : 1, + "Green Component" : 0.67044717073440552 + }, + "Ansi 7 Color" : { + "Red Component" : 0.7810397744178772, + "Color Space" : "sRGB", + "Blue Component" : 0.78104829788208008, + "Alpha Component" : 1, + "Green Component" : 0.78105825185775757 + }, + "Non Ascii Font" : "Monaco 12", + "Ansi 6 Color (Dark)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0.78166204690933228, + "Alpha Component" : 1, + "Green Component" : 0.77425903081893921 + }, + "Cursor Guide Color" : { + "Red Component" : 0.52338260412216187, + "Color Space" : "sRGB", + "Blue Component" : 0.85319280624389648, + "Alpha Component" : 0.25, + "Green Component" : 0.77217715978622437 + }, + "Custom Directory" : "No", + "Working Directory" : "\/Users\/james.lawton", + "ASCII Anti Aliased" : true, + "Shortcut" : "", + "Mouse Reporting" : true, + "Tags" : [ + + ], + "Ansi 6 Color (Light)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0.78166204690933228, + "Alpha Component" : 1, + "Green Component" : 0.77425903081893921 + }, + "Background Image Location" : "", + "Ansi 1 Color (Light)" : { + "Red Component" : 0.7074432373046875, + "Color Space" : "sRGB", + "Blue Component" : 0.16300037503242493, + "Alpha Component" : 1, + "Green Component" : 0.23660069704055786 + }, + "Use Bold Font" : true, + "Ansi 8 Color (Light)" : { + "Red Component" : 0.40781760215759277, + "Color Space" : "sRGB", + "Blue Component" : 0.4078223705291748, + "Alpha Component" : 1, + "Green Component" : 0.40782788395881653 + }, + "Ansi 2 Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.7607843279838562 + }, + "Normal Font" : "Menlo-Regular 11", + "Unlimited Scrollback" : false, + "Ansi 12 Color (Light)" : { + "Red Component" : 0.65349078178405762, + "Color Space" : "sRGB", + "Blue Component" : 0.9485321044921875, + "Alpha Component" : 1, + "Green Component" : 0.67044717073440552 + }, + "Ansi 10 Color (Dark)" : { + "Red Component" : 0.3450070321559906, + "Color Space" : "sRGB", + "Blue Component" : 0.56541937589645386, + "Alpha Component" : 1, + "Green Component" : 0.9042816162109375 + }, + "Ansi 3 Color (Light)" : { + "Red Component" : 0.78058648109436035, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.76959484815597534 + }, + "Cursor Color (Light)" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Ansi 15 Color" : { + "Red Component" : 0.99999600648880005, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Blur" : false, + "Use Separate Colors for Light and Dark Mode" : true, + "Background Color (Light)" : { + "Red Component" : 0.97999999999999998, + "Color Space" : "sRGB", + "Blue Component" : 0.97999999999999998, + "Alpha Component" : 1, + "Green Component" : 0.97999999999999998 + }, + "Terminal Type" : "xterm-256color", + "Ansi 13 Color" : { + "Red Component" : 0.8821563720703125, + "Color Space" : "sRGB", + "Blue Component" : 0.8821563720703125, + "Alpha Component" : 1, + "Green Component" : 0.4927266538143158 + }, + "Ansi 5 Color (Light)" : { + "Red Component" : 0.752197265625, + "Color Space" : "sRGB", + "Blue Component" : 0.74494361877441406, + "Alpha Component" : 1, + "Green Component" : 0.24931684136390686 + }, + "Foreground Color (Dark)" : { + "Red Component" : 0.86197912693023682, + "Color Space" : "sRGB", + "Blue Component" : 0.86198854446411133, + "Alpha Component" : 1, + "Green Component" : 0.86199951171875 + }, + "Link Color" : { + "Red Component" : 0.19802422821521759, + "Color Space" : "sRGB", + "Blue Component" : 0.9337158203125, + "Alpha Component" : 1, + "Green Component" : 0.55789834260940552 + }, + "Link Color (Dark)" : { + "Red Component" : 0.19802422821521759, + "Color Space" : "sRGB", + "Blue Component" : 0.9337158203125, + "Alpha Component" : 1, + "Green Component" : 0.55789834260940552 + }, + "Ansi 11 Color" : { + "Red Component" : 0.9259033203125, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0.8833775520324707 + }, + "Ansi 5 Color" : { + "Red Component" : 0.752197265625, + "Color Space" : "sRGB", + "Blue Component" : 0.74494361877441406, + "Alpha Component" : 1, + "Green Component" : 0.24931684136390686 + }, + "Ansi 0 Color (Light)" : { + "Red Component" : 0.078431375324726105, + "Color Space" : "sRGB", + "Blue Component" : 0.11764705926179886, + "Alpha Component" : 1, + "Green Component" : 0.098039217293262482 + } +}, +{ + "Ansi 5 Color" : { + "Red Component" : 0.97254902124404907, + "Color Space" : "Calibrated", + "Blue Component" : 0.97254902124404907, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Tags" : [ + + ], + "Ansi 12 Color" : { + "Red Component" : 0.01669310778379441, + "Color Space" : "Calibrated", + "Blue Component" : 0.9982903003692627, + "Alpha Component" : 1, + "Green Component" : 0.26095205545425415 + }, + "Has Hotkey" : false, + "Draw Powerline Glyphs" : true, + "Bold Color" : { + "Red Component" : 1, + "Color Space" : "Calibrated", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Ansi 7 Color" : { + "Red Component" : 1, + "Color Space" : "Calibrated", + "Blue Component" : 0.99999129772186279, + "Alpha Component" : 1, + "Green Component" : 0.99997437000274658 + }, + "Ansi 8 Color" : { + "Red Component" : 0.51280313730239868, + "Color Space" : "Calibrated", + "Blue Component" : 0.51279646158218384, + "Alpha Component" : 1, + "Green Component" : 0.51278775930404663 + }, + "Ansi 9 Color" : { + "Red Component" : 0.9644390344619751, + "Color Space" : "Calibrated", + "Blue Component" : 0.61410599946975708, + "Alpha Component" : 1, + "Green Component" : 0.40106064081192017 + }, + "Rows" : 40, + "Default Bookmark" : "No", + "Ansi 3 Color" : { + "Red Component" : 0.99948215484619141, + "Color Space" : "Calibrated", + "Blue Component" : 0.040143705904483781, + "Alpha Component" : 1, + "Green Component" : 0.95177114009857178 + }, + "Ansi 4 Color" : { + "Red Component" : 0.01669310778379441, + "Color Space" : "Calibrated", + "Blue Component" : 0.9982903003692627, + "Alpha Component" : 1, + "Green Component" : 0.26095205545425415 + }, + "Automatically Log" : false, + "Cursor Guide Color" : { + "Red Component" : 0.64999997615814209, + "Color Space" : "Calibrated", + "Blue Component" : 1, + "Alpha Component" : 0.25, + "Green Component" : 0.9100000262260437 + }, + "Non-ASCII Anti Aliased" : true, + "Use Bright Bold" : true, + "Ansi 10 Color" : { + "Red Component" : 0.69346785545349121, + "Color Space" : "Calibrated", + "Blue Component" : 0.3713659942150116, + "Alpha Component" : 1, + "Green Component" : 0.87939631938934326 + }, + "Ambiguous Double Width" : false, + "Jobs to Ignore" : [ + "rlogin", + "ssh", + "slogin", + "telnet" + ], + "Ansi 15 Color" : { + "Red Component" : 1, + "Color Space" : "Calibrated", + "Blue Component" : 1, + "Alpha Component" : 1, + "Green Component" : 1 + }, + "Foreground Color" : { + "Red Component" : 0.97530043125152588, + "Color Space" : "Calibrated", + "Blue Component" : 0.9752877950668335, + "Alpha Component" : 1, + "Green Component" : 0.97527122497558594 + }, + "Bound Hosts" : [ + + ], + "Working Directory" : "\/Users\/james.lawton", + "Blinking Cursor" : false, + "Disable Window Resizing" : true, + "Sync Title" : false, + "Prompt Before Closing 2" : false, + "BM Growl" : true, + "Mouse Reporting" : true, + "Command" : "", + "Description" : "Default", + "Screen" : -1, + "Selection Color" : { + "Red Component" : 1, + "Color Space" : "Calibrated", + "Blue Component" : 0.99999129772186279, + "Alpha Component" : 1, + "Green Component" : 0.99997437000274658 + }, + "Columns" : 120, + "Idle Code" : 0, + "Ansi 13 Color" : { + "Red Component" : 0.95072436332702637, + "Color Space" : "Calibrated", + "Blue Component" : 0.9646141529083252, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Title Components" : 4, + "Custom Command" : "No", + "ASCII Anti Aliased" : true, + "Non Ascii Font" : "Monaco 12", + "Vertical Spacing" : 1, + "Use Bold Font" : true, + "Option Key Sends" : 0, + "Selected Text Color" : { + "Red Component" : 0, + "Color Space" : "Calibrated", + "Blue Component" : 0, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Background Color" : { + "Red Component" : 0.070588238537311554, + "Color Space" : "Calibrated", + "Blue Component" : 0.070588238537311554, + "Alpha Component" : 1, + "Green Component" : 0.070588238537311554 + }, + "Character Encoding" : 4, + "Ansi 11 Color" : { + "Red Component" : 0.99927449226379395, + "Color Space" : "Calibrated", + "Blue Component" : 0.42728197574615479, + "Alpha Component" : 1, + "Green Component" : 0.94947350025177002 + }, + "Use Italic Font" : true, + "Unlimited Scrollback" : true, + "Keyboard Map" : { + "0x33-0x200000-0x0" : { + "Text" : "3", + "Action" : 12 + }, + "0x2f-0x200000-0x0" : { + "Text" : "\/", + "Action" : 12 + }, + "0x3-0x200000-0x0" : { + "Text" : "0xd", + "Action" : 11 + }, + "0x38-0x200000-0x0" : { + "Text" : "8", + "Action" : 12 + }, + "0xf728-0x80000-0x0" : { + "Text" : "d", + "Action" : 10 + }, + "0xf70e-0x20000-0x0" : { + "Text" : "[23;2~", + "Action" : 10 + }, + "0xf701-0x220000-0x0" : { + "Text" : "[1;2B", + "Action" : 10 + }, + "0x32-0x40000-0x0" : { + "Text" : "0x00", + "Action" : 11 + }, + "0xf700-0x240000-0x0" : { + "Text" : "[1;5A", + "Action" : 10 + }, + "0xf703-0x220000-0x0" : { + "Text" : "[1;2C", + "Action" : 10 + }, + "0xf70b-0x20000-0x0" : { + "Text" : "[19;2~", + "Action" : 10 + }, + "0xf702-0x240000-0x0" : { + "Text" : "[1;5D", + "Action" : 10 + }, + "0xf701-0x260000-0x0" : { + "Text" : "[1;6B", + "Action" : 10 + }, + "0xf72b-0x40000-0x0" : { + "Text" : "[1;5F", + "Action" : 10 + }, + "0xf703-0x260000-0x0" : { + "Text" : "[1;6C", + "Action" : 10 + }, + "0x31-0x200000-0x0" : { + "Text" : "1", + "Action" : 12 + }, + "0xf702-0x280000-0x0" : { + "Text" : "b", + "Action" : 10 + }, + "0x2d-0x200000-0x0" : { + "Text" : "-", + "Action" : 12 + }, + "0xf709-0x20000-0x0" : { + "Text" : "[17;2~", + "Action" : 10 + }, + "0x36-0x200000-0x0" : { + "Text" : "6", + "Action" : 12 + }, + "0xf706-0x20000-0x0" : { + "Text" : "[1;2R", + "Action" : 10 + }, + "0x36-0x40000-0x0" : { + "Text" : "0x1e", + "Action" : 11 + }, + "0xf729-0x40000-0x0" : { + "Text" : "[1;5H", + "Action" : 10 + }, + "0x2d-0x40000-0x0" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0xf702-0x300000-0x0" : { + "Text" : "0x1", + "Action" : 11 + }, + "0x7f-0x80000-0x0" : { + "Text" : "0x1b 0x7f", + "Action" : 11 + }, + "0x33-0x40000-0x0" : { + "Text" : "0x1b", + "Action" : 11 + }, + "0x2b-0x200000-0x0" : { + "Text" : "+", + "Action" : 12 + }, + "0x34-0x200000-0x0" : { + "Text" : "4", + "Action" : 12 + }, + "0xf70d-0x20000-0x0" : { + "Text" : "[21;2~", + "Action" : 10 + }, + "0xf72b-0x20000-0x0" : { + "Text" : "[1;2F", + "Action" : 10 + }, + "0x39-0x200000-0x0" : { + "Text" : "9", + "Action" : 12 + }, + "0xf70a-0x20000-0x0" : { + "Text" : "[18;2~", + "Action" : 10 + }, + "0x37-0x40000-0x0" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0xf708-0x20000-0x0" : { + "Text" : "[15;2~", + "Action" : 10 + }, + "0xf729-0x20000-0x0" : { + "Text" : "[1;2H", + "Action" : 10 + }, + "0xf700-0x220000-0x0" : { + "Text" : "[1;2A", + "Action" : 10 + }, + "0xf705-0x20000-0x0" : { + "Text" : "[1;2Q", + "Action" : 10 + }, + "0xf702-0x220000-0x0" : { + "Text" : "[1;2D", + "Action" : 10 + }, + "0x2e-0x200000-0x0" : { + "Text" : ".", + "Action" : 12 + }, + "0x32-0x200000-0x0" : { + "Text" : "2", + "Action" : 12 + }, + "0xf701-0x240000-0x0" : { + "Text" : "[1;5B", + "Action" : 10 + }, + "0xf700-0x260000-0x0" : { + "Text" : "[1;6A", + "Action" : 10 + }, + "0x37-0x200000-0x0" : { + "Text" : "7", + "Action" : 12 + }, + "0xf703-0x240000-0x0" : { + "Text" : "[1;5C", + "Action" : 10 + }, + "0x34-0x40000-0x0" : { + "Text" : "0x1c", + "Action" : 11 + }, + "0xf702-0x260000-0x0" : { + "Text" : "[1;6D", + "Action" : 10 + }, + "0xf703-0x280000-0x0" : { + "Text" : "f", + "Action" : 10 + }, + "0xf70f-0x20000-0x0" : { + "Text" : "[24;2~", + "Action" : 10 + }, + "0x7f-0x100000-0x0" : { + "Text" : "0x15", + "Action" : 11 + }, + "0xf70c-0x20000-0x0" : { + "Text" : "[20;2~", + "Action" : 10 + }, + "0xf703-0x300000-0x0" : { + "Text" : "0x5", + "Action" : 11 + }, + "0x30-0x200000-0x0" : { + "Text" : "0", + "Action" : 12 + }, + "0x38-0x40000-0x0" : { + "Text" : "0x7f", + "Action" : 11 + }, + "0x35-0x200000-0x0" : { + "Text" : "5", + "Action" : 12 + }, + "0xf739-0x0-0x0" : { + "Text" : "", + "Action" : 13 + }, + "0xf707-0x20000-0x0" : { + "Text" : "[1;2S", + "Action" : 10 + }, + "0xf704-0x20000-0x0" : { + "Text" : "[1;2P", + "Action" : 10 + }, + "0x35-0x40000-0x0" : { + "Text" : "0x1d", + "Action" : 11 + }, + "0xf728-0x0-0x0" : { + "Text" : "0x4", + "Action" : 11 + }, + "0x2a-0x200000-0x0" : { + "Text" : "*", + "Action" : 12 + } + }, + "Window Type" : 0, + "Cursor Boost" : 0, + "Background Image Location" : "", + "Blur" : false, + "Badge Color" : { + "Red Component" : 1, + "Color Space" : "Calibrated", + "Blue Component" : 0, + "Alpha Component" : 0.5, + "Green Component" : 0 + }, + "Allow Title Setting" : true, + "Scrollback Lines" : 0, + "Send Code When Idle" : false, + "Close Sessions On End" : true, + "Scrollback in Alternate Screen" : false, + "Terminal Type" : "xterm-256color", + "Flashing Bell" : false, + "Visual Bell" : true, + "Silence Bell" : true, + "Session Close Undo Timeout" : 1000000, + "Ansi 14 Color" : { + "Red Component" : 0.31685584783554077, + "Color Space" : "Calibrated", + "Blue Component" : 0.99888235330581665, + "Alpha Component" : 1, + "Green Component" : 0.80626189708709717 + }, + "ASCII Ligatures" : true, + "Cursor Text Color" : { + "Red Component" : 0.91798752546310425, + "Color Space" : "Calibrated", + "Blue Component" : 0.036231454461812973, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Name" : "Jim's Profile", + "Minimum Contrast" : 0, + "Shortcut" : "", + "Cursor Color" : { + "Red Component" : 0.98594832420349121, + "Color Space" : "Calibrated", + "Blue Component" : 0.026950567960739125, + "Alpha Component" : 1, + "Green Component" : 0 + }, + "Ansi 0 Color" : { + "Red Component" : 0.070588238537311554, + "Color Space" : "Calibrated", + "Blue Component" : 0.070588238537311554, + "Alpha Component" : 1, + "Green Component" : 0.070588238537311554 + }, + "Guid" : "3B600FAB-A938-4AD0-944C-107527693D47", + "Horizontal Spacing" : 1, + "Ansi 2 Color" : { + "Red Component" : 0.59543848037719727, + "Color Space" : "Calibrated", + "Blue Component" : 0.13826943933963776, + "Alpha Component" : 1, + "Green Component" : 0.88415688276290894 + }, + "Ansi 1 Color" : { + "Red Component" : 0.98061299324035645, + "Color Space" : "Calibrated", + "Blue Component" : 0.20415860414505005, + "Alpha Component" : 1, + "Green Component" : 0.16063156723976135 + }, + "Right Option Key Sends" : 2, + "Use Non-ASCII Font" : false, + "Ansi 6 Color" : { + "Red Component" : 0.003921568859368561, + "Color Space" : "Calibrated", + "Blue Component" : 0.92941176891326904, + "Alpha Component" : 1, + "Green Component" : 0.7137255072593689 + }, + "Normal Font" : "MesloLGS-NF-Regular 14", + "Transparency" : 0, + "Link Color" : { + "Red Component" : 0.89783346652984619, + "Color Space" : "Calibrated", + "Blue Component" : 0.99908709526062012, + "Alpha Component" : 1, + "Green Component" : 0.24597522616386414 + }, + "Custom Directory" : "No" +}, +{ + "Ansi 7 Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0.73333334922790527 + }, + "Tags" : [ + + ], + "Ansi 12 Color" : { + "Green Component" : 0.3333333432674408, + "Red Component" : 0.3333333432674408, + "Blue Component" : 1 + }, + "Ansi 8 Color" : { + "Green Component" : 0.3333333432674408, + "Red Component" : 0.3333333432674408, + "Blue Component" : 0.3333333432674408 + }, + "Ansi 9 Color" : { + "Green Component" : 0.3333333432674408, + "Red Component" : 1, + "Blue Component" : 0.3333333432674408 + }, + "Bold Color" : { + "Green Component" : 1, + "Red Component" : 1, + "Blue Component" : 1 + }, + "Ansi 5 Color" : { + "Green Component" : 0, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0.73333334922790527 + }, + "Use Non-ASCII Font" : false, + "Rows" : 40, + "Default Bookmark" : "No", + "Non-ASCII Anti Aliased" : true, + "Use Bright Bold" : true, + "Ansi 10 Color" : { + "Green Component" : 1, + "Red Component" : 0.3333333432674408, + "Blue Component" : 0.3333333432674408 + }, + "Ambiguous Double Width" : false, + "Jobs to Ignore" : [ + "rlogin", + "ssh", + "slogin", + "telnet" + ], + "Show Status Bar" : false, + "Ansi 15 Color" : { + "Green Component" : 1, + "Red Component" : 1, + "Blue Component" : 1 + }, + "Foreground Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0.73333334922790527 + }, + "Working Directory" : "\/Users\/james.lawton", + "Blinking Cursor" : false, + "Disable Window Resizing" : true, + "Sync Title" : false, + "Prompt Before Closing 2" : false, + "BM Growl" : true, + "Command" : "", + "Description" : "Default", + "Mouse Reporting" : true, + "Screen" : -1, + "Selection Color" : { + "Green Component" : 0.8353000283241272, + "Red Component" : 0.70980000495910645, + "Blue Component" : 1 + }, + "Columns" : 120, + "Idle Code" : 0, + "Ansi 13 Color" : { + "Green Component" : 0.3333333432674408, + "Red Component" : 1, + "Blue Component" : 1 + }, + "Title Components" : 4, + "Custom Command" : "No", + "ASCII Anti Aliased" : true, + "Non Ascii Font" : "Monaco 12", + "Vertical Spacing" : 1, + "Use Bold Font" : true, + "Option Key Sends" : 0, + "Selected Text Color" : { + "Green Component" : 0, + "Red Component" : 0, + "Blue Component" : 0 + }, + "Background Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0.21176470588235294, + "Alpha Component" : 1, + "Green Component" : 0.16862745098039217 + }, + "Character Encoding" : 4, + "Ansi 11 Color" : { + "Green Component" : 1, + "Red Component" : 1, + "Blue Component" : 0.3333333432674408 + }, + "Use Italic Font" : true, + "Unlimited Scrollback" : false, + "Keyboard Map" : { + "0xf728-0x80000" : { + "Text" : "d", + "Action" : 10 + }, + "0xf702-0x280000" : { + "Text" : "b", + "Action" : 10 + }, + "0xf70d-0x20000" : { + "Text" : "[21;2~", + "Action" : 10 + }, + "0x7f-0x80000" : { + "Text" : "0x1b 0x7f", + "Action" : 11 + }, + "0xf708-0x20000" : { + "Text" : "[15;2~", + "Action" : 10 + }, + "0x33-0x40000" : { + "Text" : "0x1b", + "Action" : 11 + }, + "0xf703-0x260000" : { + "Text" : "[1;6C", + "Action" : 10 + }, + "0xf729-0x20000" : { + "Text" : "[1;2H", + "Action" : 10 + }, + "0xf702-0x260000" : { + "Text" : "[1;6D", + "Action" : 10 + }, + "0x38-0x40000" : { + "Text" : "0x7f", + "Action" : 11 + }, + "0xf72b-0x40000" : { + "Text" : "[1;5F", + "Action" : 10 + }, + "0xf70c-0x20000" : { + "Text" : "[20;2~", + "Action" : 10 + }, + "0xf701-0x260000" : { + "Text" : "[1;6B", + "Action" : 10 + }, + "0x32-0x40000" : { + "Text" : "0x00", + "Action" : 11 + }, + "0xf707-0x20000" : { + "Text" : "[1;2S", + "Action" : 10 + }, + "0xf703-0x240000" : { + "Text" : "[1;5C", + "Action" : 10 + }, + "0xf700-0x260000" : { + "Text" : "[1;6A", + "Action" : 10 + }, + "0xf702-0x240000" : { + "Text" : "[1;5D", + "Action" : 10 + }, + "0xf703-0x300000" : { + "Text" : "0x5", + "Action" : 11 + }, + "0x37-0x40000" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0x3-0x200000" : { + "Text" : "0xd", + "Action" : 11 + }, + "0xf701-0x240000" : { + "Text" : "[1;5B", + "Action" : 10 + }, + "0xf702-0x300000" : { + "Text" : "0x1", + "Action" : 11 + }, + "0xf703-0x220000" : { + "Text" : "[1;2C", + "Action" : 10 + }, + "0xf739-0x0" : { + "Text" : "", + "Action" : 13 + }, + "0xf70b-0x20000" : { + "Text" : "[19;2~", + "Action" : 10 + }, + "0xf728-0x0" : { + "Text" : "0x4", + "Action" : 11 + }, + "0xf706-0x20000" : { + "Text" : "[1;2R", + "Action" : 10 + }, + "0xf700-0x240000" : { + "Text" : "[1;5A", + "Action" : 10 + }, + "0xf702-0x220000" : { + "Text" : "[1;2D", + "Action" : 10 + }, + "0x36-0x40000" : { + "Text" : "0x1e", + "Action" : 11 + }, + "0xf70f-0x20000" : { + "Text" : "[24;2~", + "Action" : 10 + }, + "0xf701-0x220000" : { + "Text" : "[1;2B", + "Action" : 10 + }, + "0xf70a-0x20000" : { + "Text" : "[18;2~", + "Action" : 10 + }, + "0xf729-0x40000" : { + "Text" : "[1;5H", + "Action" : 10 + }, + "0xf72b-0x20000" : { + "Text" : "[1;2F", + "Action" : 10 + }, + "0xf700-0x220000" : { + "Text" : "[1;2A", + "Action" : 10 + }, + "0x30-0x200000" : { + "Text" : "0", + "Action" : 12 + }, + "0xf705-0x20000" : { + "Text" : "[1;2Q", + "Action" : 10 + }, + "0x31-0x200000" : { + "Text" : "1", + "Action" : 12 + }, + "0x33-0x200000" : { + "Text" : "3", + "Action" : 12 + }, + "0x35-0x40000" : { + "Text" : "0x1d", + "Action" : 11 + }, + "0x34-0x200000" : { + "Text" : "4", + "Action" : 12 + }, + "0x32-0x200000" : { + "Text" : "2", + "Action" : 12 + }, + "0x35-0x200000" : { + "Text" : "5", + "Action" : 12 + }, + "0x36-0x200000" : { + "Text" : "6", + "Action" : 12 + }, + "0x37-0x200000" : { + "Text" : "7", + "Action" : 12 + }, + "0x2d-0x40000" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0x38-0x200000" : { + "Text" : "8", + "Action" : 12 + }, + "0x2a-0x200000" : { + "Text" : "*", + "Action" : 12 + }, + "0x39-0x200000" : { + "Text" : "9", + "Action" : 12 + }, + "0x2b-0x200000" : { + "Text" : "+", + "Action" : 12 + }, + "0xf70e-0x20000" : { + "Text" : "[23;2~", + "Action" : 10 + }, + "0x2e-0x200000" : { + "Text" : ".", + "Action" : 12 + }, + "0x2d-0x200000" : { + "Text" : "-", + "Action" : 12 + }, + "0xf709-0x20000" : { + "Text" : "[17;2~", + "Action" : 10 + }, + "0x7f-0x100000" : { + "Text" : "0x15", + "Action" : 11 + }, + "0x2f-0x200000" : { + "Text" : "\/", + "Action" : 12 + }, + "0xf704-0x20000" : { + "Text" : "[1;2P", + "Action" : 10 + }, + "0x34-0x40000" : { + "Text" : "0x1c", + "Action" : 11 + }, + "0xf703-0x280000" : { + "Text" : "f", + "Action" : 10 + } + }, + "Window Type" : 0, + "Background Image Location" : "", + "Blur" : false, + "Scrollback Lines" : 1000, + "Send Code When Idle" : false, + "Close Sessions On End" : true, + "Scrollback in Alternate Screen" : false, + "Terminal Type" : "xterm-256color", + "Flashing Bell" : false, + "Status Bar Layout" : { + "components" : [ + + ], + "advanced configuration" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + }, + "Visual Bell" : true, + "Silence Bell" : true, + "Session Close Undo Timeout" : 5, + "Ansi 14 Color" : { + "Green Component" : 1, + "Red Component" : 0.3333333432674408, + "Blue Component" : 1 + }, + "Name" : "Default (Old)", + "Cursor Text Color" : { + "Green Component" : 1, + "Red Component" : 1, + "Blue Component" : 1 + }, + "Shortcut" : "", + "Cursor Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0.73333334922790527 + }, + "Ansi 0 Color" : { + "Green Component" : 0, + "Red Component" : 0, + "Blue Component" : 0 + }, + "Ansi 1 Color" : { + "Green Component" : 0, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0 + }, + "Horizontal Spacing" : 1, + "Ansi 3 Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0.73333334922790527, + "Blue Component" : 0 + }, + "Ansi 4 Color" : { + "Green Component" : 0, + "Red Component" : 0, + "Blue Component" : 0.73333334922790527 + }, + "Right Option Key Sends" : 2, + "Ansi 2 Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0, + "Blue Component" : 0 + }, + "Transparency" : 0, + "Normal Font" : "Monaco 12", + "Guid" : "1295A941-9B4D-4EF5-885D-E181A707C398", + "Custom Directory" : "No", + "Ansi 6 Color" : { + "Green Component" : 0.73333334922790527, + "Red Component" : 0, + "Blue Component" : 0.73333334922790527 + } +}, +{ + "Working Directory" : "\/Users\/james.lawton", + "Prompt Before Closing 2" : false, + "Selected Text Color" : { + "Green Component" : 0.92142927646636963, + "Red Component" : 0.90730977058410645, + "Blue Component" : 0.93115901947021484 + }, + "Rows" : 25, + "Ansi 11 Color" : { + "Green Component" : 0.88262283802032471, + "Red Component" : 0.99765938520431519, + "Blue Component" : 0.42511638998985291 + }, + "Use Italic Font" : true, + "HotKey Characters" : "", + "Foreground Color" : { + "Green Component" : 0.92142927646636963, + "Red Component" : 0.90730977058410645, + "Blue Component" : 0.93115901947021484 + }, + "HotKey Window Floats" : true, + "Right Option Key Sends" : 2, + "Show Status Bar" : false, + "Character Encoding" : 4, + "Selection Color" : { + "Green Component" : 0.41462835669517517, + "Red Component" : 0.30659490823745728, + "Blue Component" : 0.47096589207649231 + }, + "Mouse Reporting" : true, + "Ansi 4 Color" : { + "Green Component" : 0.7149810791015625, + "Red Component" : 0.215079665184021, + "Blue Component" : 0.99871528148651123 + }, + "Non-ASCII Anti Aliased" : true, + "Sync Title" : false, + "Disable Window Resizing" : true, + "Description" : "Default", + "Close Sessions On End" : true, + "Jobs to Ignore" : [ + "rlogin", + "ssh", + "slogin", + "telnet" + ], + "Scrollback Lines" : 0, + "Scrollback in Alternate Screen" : false, + "HotKey Window Reopens On Activation" : true, + "Status Bar Layout" : { + "components" : [ + { + "class" : "iTermStatusBarCPUUtilizationComponent", + "configuration" : { + "knobs" : { + "base: priority" : 5, + "shared text color" : { + "Red Component" : 0.90000000000000002, + "Color Space" : "sRGB", + "Blue Component" : 0.63, + "Alpha Component" : 1, + "Green Component" : 0.63 + }, + "base: compression resistance" : 1 + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + }, + { + "class" : "iTermStatusBarMemoryUtilizationComponent", + "configuration" : { + "knobs" : { + "base: priority" : 5, + "shared text color" : { + "Red Component" : 0.90000000000000002, + "Color Space" : "sRGB", + "Blue Component" : 0.63, + "Alpha Component" : 1, + "Green Component" : 0.90000000000000002 + }, + "base: compression resistance" : 1 + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + }, + { + "class" : "iTermStatusBarNetworkUtilizationComponent", + "configuration" : { + "knobs" : { + "base: priority" : 5, + "shared text color" : { + "Red Component" : 0.63, + "Color Space" : "sRGB", + "Blue Component" : 0.63, + "Alpha Component" : 1, + "Green Component" : 0.90000000000000002 + }, + "base: compression resistance" : 1 + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + }, + { + "class" : "iTermStatusBarBatteryComponent", + "configuration" : { + "knobs" : { + "base: priority" : 5, + "shared text color" : { + "Red Component" : 0.63, + "Color Space" : "sRGB", + "Blue Component" : 0.90000000000000002, + "Alpha Component" : 1, + "Green Component" : 0.90000000000000002 + }, + "base: compression resistance" : 1 + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + }, + { + "class" : "iTermStatusBarWorkingDirectoryComponent", + "configuration" : { + "knobs" : { + "path" : "path", + "base: priority" : 5, + "base: compression resistance" : 1, + "minwidth" : 0, + "shared text color" : { + "Red Component" : 0.63, + "Color Space" : "sRGB", + "Blue Component" : 0.90000000000000002, + "Alpha Component" : 1, + "Green Component" : 0.63 + }, + "maxwidth" : 1.7976931348623157e+308 + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + }, + { + "class" : "iTermStatusBarClockComponent", + "configuration" : { + "knobs" : { + "base: priority" : 5, + "shared text color" : { + "Red Component" : 0.90000000000000002, + "Color Space" : "sRGB", + "Blue Component" : 0.90000000000000002, + "Alpha Component" : 1, + "Green Component" : 0.63 + }, + "base: compression resistance" : 1, + "format" : "M\/dd h:mm" + }, + "layout advanced configuration dictionary value" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + } + } + ], + "advanced configuration" : { + "font" : ".AppleSystemUIFont 12", + "algorithm" : 0 + } + }, + "Flashing Bell" : false, + "Cursor Guide Color" : { + "Red Component" : 0.70213186740875244, + "Color Space" : "sRGB", + "Blue Component" : 1, + "Alpha Component" : 0.25, + "Green Component" : 0.9268307089805603 + }, + "BM Growl" : true, + "Ansi 3 Color" : { + "Green Component" : 0.81672251224517822, + "Red Component" : 0.99627053737640381, + "Blue Component" : 0.19727933406829834 + }, + "Use Non-ASCII Font" : false, + "Link Color" : { + "Red Component" : 0, + "Color Space" : "sRGB", + "Blue Component" : 0.73423302173614502, + "Alpha Component" : 1, + "Green Component" : 0.35916060209274292 + }, + "Shortcut" : "", + "Background Image Location" : "", + "Bold Color" : { + "Green Component" : 0.91671288013458252, + "Red Component" : 0.91654461622238159, + "Blue Component" : 0.91648769378662109 + }, + "Unlimited Scrollback" : true, + "Custom Command" : "No", + "HotKey Key Code" : 111, + "Title Components" : 4, + "Keyboard Map" : { + "0xf728-0x80000" : { + "Text" : "d", + "Action" : 10 + }, + "0xf702-0x280000" : { + "Text" : "b", + "Action" : 10 + }, + "0xf70d-0x20000" : { + "Text" : "[21;2~", + "Action" : 10 + }, + "0x7f-0x80000" : { + "Text" : "0x1b 0x7f", + "Action" : 11 + }, + "0xf708-0x20000" : { + "Text" : "[15;2~", + "Action" : 10 + }, + "0x33-0x40000" : { + "Text" : "0x1b", + "Action" : 11 + }, + "0xf703-0x260000" : { + "Text" : "[1;6C", + "Action" : 10 + }, + "0xf729-0x20000" : { + "Text" : "[1;2H", + "Action" : 10 + }, + "0xf702-0x260000" : { + "Text" : "[1;6D", + "Action" : 10 + }, + "0x38-0x40000" : { + "Text" : "0x7f", + "Action" : 11 + }, + "0xf72b-0x40000" : { + "Text" : "[1;5F", + "Action" : 10 + }, + "0xf70c-0x20000" : { + "Text" : "[20;2~", + "Action" : 10 + }, + "0xf701-0x260000" : { + "Text" : "[1;6B", + "Action" : 10 + }, + "0x32-0x40000" : { + "Text" : "0x00", + "Action" : 11 + }, + "0xf707-0x20000" : { + "Text" : "[1;2S", + "Action" : 10 + }, + "0xf703-0x240000" : { + "Text" : "[1;5C", + "Action" : 10 + }, + "0xf700-0x260000" : { + "Text" : "[1;6A", + "Action" : 10 + }, + "0xf702-0x240000" : { + "Text" : "[1;5D", + "Action" : 10 + }, + "0xf703-0x300000" : { + "Text" : "0x5", + "Action" : 11 + }, + "0x37-0x40000" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0x3-0x200000" : { + "Text" : "0xd", + "Action" : 11 + }, + "0xf701-0x240000" : { + "Text" : "[1;5B", + "Action" : 10 + }, + "0xf702-0x300000" : { + "Text" : "0x1", + "Action" : 11 + }, + "0xf703-0x220000" : { + "Text" : "[1;2C", + "Action" : 10 + }, + "0xf739-0x0" : { + "Text" : "", + "Action" : 13 + }, + "0xf70b-0x20000" : { + "Text" : "[19;2~", + "Action" : 10 + }, + "0xf728-0x0" : { + "Text" : "0x4", + "Action" : 11 + }, + "0xf706-0x20000" : { + "Text" : "[1;2R", + "Action" : 10 + }, + "0xf700-0x240000" : { + "Text" : "[1;5A", + "Action" : 10 + }, + "0xf702-0x220000" : { + "Text" : "[1;2D", + "Action" : 10 + }, + "0x36-0x40000" : { + "Text" : "0x1e", + "Action" : 11 + }, + "0xf70f-0x20000" : { + "Text" : "[24;2~", + "Action" : 10 + }, + "0xf701-0x220000" : { + "Text" : "[1;2B", + "Action" : 10 + }, + "0xf70a-0x20000" : { + "Text" : "[18;2~", + "Action" : 10 + }, + "0xf729-0x40000" : { + "Text" : "[1;5H", + "Action" : 10 + }, + "0xf72b-0x20000" : { + "Text" : "[1;2F", + "Action" : 10 + }, + "0xf700-0x220000" : { + "Text" : "[1;2A", + "Action" : 10 + }, + "0x30-0x200000" : { + "Text" : "0", + "Action" : 12 + }, + "0xf705-0x20000" : { + "Text" : "[1;2Q", + "Action" : 10 + }, + "0x31-0x200000" : { + "Text" : "1", + "Action" : 12 + }, + "0x33-0x200000" : { + "Text" : "3", + "Action" : 12 + }, + "0x35-0x40000" : { + "Text" : "0x1d", + "Action" : 11 + }, + "0x34-0x200000" : { + "Text" : "4", + "Action" : 12 + }, + "0x32-0x200000" : { + "Text" : "2", + "Action" : 12 + }, + "0x35-0x200000" : { + "Text" : "5", + "Action" : 12 + }, + "0x36-0x200000" : { + "Text" : "6", + "Action" : 12 + }, + "0x37-0x200000" : { + "Text" : "7", + "Action" : 12 + }, + "0x2d-0x40000" : { + "Text" : "0x1f", + "Action" : 11 + }, + "0x38-0x200000" : { + "Text" : "8", + "Action" : 12 + }, + "0x2a-0x200000" : { + "Text" : "*", + "Action" : 12 + }, + "0x39-0x200000" : { + "Text" : "9", + "Action" : 12 + }, + "0x2b-0x200000" : { + "Text" : "+", + "Action" : 12 + }, + "0xf70e-0x20000" : { + "Text" : "[23;2~", + "Action" : 10 + }, + "0x2e-0x200000" : { + "Text" : ".", + "Action" : 12 + }, + "0x2d-0x200000" : { + "Text" : "-", + "Action" : 12 + }, + "0xf709-0x20000" : { + "Text" : "[17;2~", + "Action" : 10 + }, + "0x7f-0x100000" : { + "Text" : "0x15", + "Action" : 11 + }, + "0x2f-0x200000" : { + "Text" : "\/", + "Action" : 12 + }, + "0xf704-0x20000" : { + "Text" : "[1;2P", + "Action" : 10 + }, + "0x34-0x40000" : { + "Text" : "0x1c", + "Action" : 11 + }, + "0xf703-0x280000" : { + "Text" : "f", + "Action" : 10 + } + }, + "Ansi 14 Color" : { + "Green Component" : 1, + "Red Component" : 0.60292786359786987, + "Blue Component" : 0.90182536840438843 + }, + "Ansi 2 Color" : { + "Green Component" : 0.94388872385025024, + "Red Component" : 0.36202818155288696, + "Blue Component" : 0.62042194604873657 + }, + "Send Code When Idle" : false, + "ASCII Anti Aliased" : true, + "Tags" : [ + + ], + "Ansi 9 Color" : { + "Green Component" : 0.45310419797897339, + "Red Component" : 0.98958194255828857, + "Blue Component" : 0.42818409204483032 + }, + "Use Bold Font" : true, + "Silence Bell" : true, + "Ansi 12 Color" : { + "Green Component" : 0.81066548824310303, + "Red Component" : 0.43880558013916016, + "Blue Component" : 0.99898606538772583 + }, + "Window Type" : 1, + "Use Bright Bold" : true, + "Has Hotkey" : true, + "HotKey Modifier Activation" : 0, + "Cursor Text Color" : { + "Green Component" : 0, + "Red Component" : 0, + "Blue Component" : 0 + }, + "HotKey Window Dock Click Action" : 0, + "Default Bookmark" : "No", + "Cursor Color" : { + "Green Component" : 0.91671288013458252, + "Red Component" : 0.91654461622238159, + "Blue Component" : 0.91648769378662109 + }, + "Ansi 1 Color" : { + "Green Component" : 0.22098405659198761, + "Red Component" : 0.9871404767036438, + "Blue Component" : 0.25575384497642517 + }, + "Name" : "Hotkey Profile", + "Blinking Cursor" : false, + "Guid" : "E477A75D-BF55-48FE-85C9-58E3DEAF88B4", + "Idle Code" : 0, + "Ansi 10 Color" : { + "Green Component" : 0.96712285280227661, + "Red Component" : 0.67800694704055786, + "Blue Component" : 0.74659085273742676 + }, + "Ansi 8 Color" : { + "Green Component" : 0.69167852401733398, + "Red Component" : 0.63061976432800293, + "Blue Component" : 0.72321081161499023 + }, + "Badge Color" : { + "Red Component" : 1, + "Color Space" : "sRGB", + "Blue Component" : 0, + "Alpha Component" : 0.5, + "Green Component" : 0.1491314172744751 + }, + "Automatically Log" : false, + "Ambiguous Double Width" : false, + "Blur Radius" : 3.3997838673857861, + "Ansi 0 Color" : { + "Green Component" : 0.35616019368171692, + "Red Component" : 0.26286587119102478, + "Blue Component" : 0.40253299474716187 + }, + "Session Close Undo Timeout" : 10000, + "Blur" : false, + "Normal Font" : "Monaco 12", + "Vertical Spacing" : 1, + "Ansi 7 Color" : { + "Green Component" : 0.99997437000274658, + "Red Component" : 1, + "Blue Component" : 0.99999129772186279 + }, + "Space" : -1, + "HotKey Window AutoHides" : false, + "Command" : "", + "Terminal Type" : "xterm-256color", + "Horizontal Spacing" : 1, + "Option Key Sends" : 0, + "HotKey Window Animates" : true, + "HotKey Modifier Flags" : 1048576, + "Ansi 15 Color" : { + "Green Component" : 0.99997437000274658, + "Red Component" : 1, + "Blue Component" : 0.99999129772186279 + }, + "Open Toolbelt" : true, + "Ansi 6 Color" : { + "Green Component" : 1, + "Red Component" : 0.34860008955001831, + "Blue Component" : 0.82062870264053345 + }, + "Transparency" : 0.045899428934010146, + "HotKey Activated By Modifier" : false, + "Background Color" : { + "Green Component" : 0.14745020866394043, + "Red Component" : 0.11278382688760757, + "Blue Component" : 0.16608485579490662 + }, + "Screen" : -2, + "HotKey Characters Ignoring Modifiers" : "", + "Bound Hosts" : [ + + ], + "Non Ascii Font" : "Monaco 12", + "Ansi 13 Color" : { + "Green Component" : 0.40164706110954285, + "Red Component" : 0.9887651801109314, + "Blue Component" : 0.60766077041625977 + }, + "Columns" : 80, + "HotKey Alternate Shortcuts" : [ + + ], + "Visual Bell" : true, + "Custom Directory" : "No", + "Ansi 5 Color" : { + "Green Component" : 0.13310989737510681, + "Red Component" : 0.986469566822052, + "Blue Component" : 0.43182668089866638 + } +}, +{ + "Prompt Before Closing 2" : false, + "Command" : "\/bin\/bash --login", + "Default Bookmark" : "No", + "Instant Replay" : true, + "Custom Command" : "Browser", + "Name" : "Web Browser", + "Jobs to Ignore" : [ + "rlogin", + "ssh", + "slogin", + "telnet" + ], + "Tags" : [ + + ], + "Guid" : "B6891D8A-6A43-4120-A8F1-9D2BD95368A0" +} +] +} diff --git a/chezmoi/dot_iterm2/com.googlecode.iterm2.plist b/chezmoi/dot_iterm2/com.googlecode.iterm2.plist new file mode 100644 index 00000000..99de0bbc Binary files /dev/null and b/chezmoi/dot_iterm2/com.googlecode.iterm2.plist differ diff --git a/chezmoi/dot_iterm2/iterm2_shell_integration.fish b/chezmoi/dot_iterm2/iterm2_shell_integration.fish new file mode 100644 index 00000000..e2168a9f --- /dev/null +++ b/chezmoi/dot_iterm2/iterm2_shell_integration.fish @@ -0,0 +1,127 @@ +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +if begin; status --is-interactive; and not functions -q -- iterm2_status; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != screen; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != screen-256color; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != tmux-256color; and test "$TERM" != dumb; and test "$TERM" != linux; end + function iterm2_status + printf "\033]133;D;%s\007" $argv + end + + # Mark start of prompt + function iterm2_prompt_mark + printf "\033]133;A\007" + end + + # Mark end of prompt + function iterm2_prompt_end + printf "\033]133;B\007" + end + + # Tell terminal to create a mark at this location + function iterm2_preexec --on-event fish_preexec + # For other shells we would output status here but we can't do that in fish. + if test "$TERM_PROGRAM" = "iTerm.app" + printf "\033]133;C;\r\007" + else + printf "\033]133;C;\007" + end + end + + # Usage: iterm2_set_user_var key value + # These variables show up in badges (and later in other places). For example + # iterm2_set_user_var currentDirectory "$PWD" + # Gives a variable accessible in a badge by \(user.currentDirectory) + # Calls to this go in iterm2_print_user_vars. + function iterm2_set_user_var + printf "\033]1337;SetUserVar=%s=%s\007" $argv[1] (printf "%s" $argv[2] | base64 | tr -d "\n") + end + + function iterm2_write_remotehost_currentdir_uservars + if not set -q -g iterm2_hostname + printf "\033]1337;RemoteHost=%s@%s\007\033]1337;CurrentDir=%s\007" $USER (hostname -f 2>/dev/null) $PWD + else + printf "\033]1337;RemoteHost=%s@%s\007\033]1337;CurrentDir=%s\007" $USER $iterm2_hostname $PWD + end + + # Users can define a function called iterm2_print_user_vars. + # It should call iterm2_set_user_var and produce no other output. + if functions -q -- iterm2_print_user_vars + iterm2_print_user_vars + end + end + + functions -c fish_prompt iterm2_fish_prompt + + function iterm2_common_prompt + set -l last_status $status + + iterm2_status $last_status + iterm2_write_remotehost_currentdir_uservars + if not functions iterm2_fish_prompt | string match -q "*iterm2_prompt_mark*" + iterm2_prompt_mark + end + return $last_status + end + + function iterm2_check_function -d "Check if function is defined and non-empty" + test (functions $argv[1] | grep -cvE '^ *(#|function |end$|$)') != 0 + end + + if iterm2_check_function fish_mode_prompt + # Only override fish_mode_prompt if it is non-empty. This works around a problem created by a + # workaround in starship: https://github.com/starship/starship/issues/1283 + functions -c fish_mode_prompt iterm2_fish_mode_prompt + function fish_mode_prompt --description 'Write out the mode prompt; do not replace this. Instead, change fish_mode_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_mode_prompt instead.' + iterm2_common_prompt + iterm2_fish_mode_prompt + end + + function fish_prompt --description 'Write out the prompt; do not replace this. Instead, change fish_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_prompt instead.' + # Remove the trailing newline from the original prompt. This is done + # using the string builtin from fish, but to make sure any escape codes + # are correctly interpreted, use %b for printf. + printf "%b" (string join "\n" -- (iterm2_fish_prompt)) + + iterm2_prompt_end + end + else + # fish_mode_prompt is empty or unset. + function fish_prompt --description 'Write out the mode prompt; do not replace this. Instead, change fish_mode_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_mode_prompt instead.' + iterm2_common_prompt + + # Remove the trailing newline from the original prompt. This is done + # using the string builtin from fish, but to make sure any escape codes + # are correctly interpreted, use %b for printf. + printf "%b" (string join "\n" -- (iterm2_fish_prompt)) + + iterm2_prompt_end + end + end + + # If hostname -f is slow for you, set iterm2_hostname before sourcing this script + if not set -q -g iterm2_hostname + # hostname -f is fast on macOS so don't cache it. This lets us get an updated version when + # it changes, such as if you attach to a VPN. + if test (uname) != Darwin + set -g iterm2_hostname (hostname -f 2>/dev/null) + # some flavors of BSD (i.e. NetBSD and OpenBSD) don't have the -f option + if test $status -ne 0 + set -g iterm2_hostname (hostname) + end + end + end + + iterm2_write_remotehost_currentdir_uservars + printf "\033]1337;ShellIntegrationVersion=19;shell=fish\007" +end +alias imgcat=~/.iterm2/imgcat;alias imgls=~/.iterm2/imgls;alias it2api=~/.iterm2/it2api;alias it2attention=~/.iterm2/it2attention;alias it2check=~/.iterm2/it2check;alias it2copy=~/.iterm2/it2copy;alias it2dl=~/.iterm2/it2dl;alias it2getvar=~/.iterm2/it2getvar;alias it2git=~/.iterm2/it2git;alias it2setcolor=~/.iterm2/it2setcolor;alias it2setkeylabel=~/.iterm2/it2setkeylabel;alias it2tip=~/.iterm2/it2tip;alias it2ul=~/.iterm2/it2ul;alias it2universion=~/.iterm2/it2universion;alias it2profile=~/.iterm2/it2profile;alias it2cat=~/.iterm2/it2cat diff --git a/chezmoi/dot_pythonrc b/chezmoi/dot_pythonrc new file mode 100644 index 00000000..b3fd2b2e --- /dev/null +++ b/chezmoi/dot_pythonrc @@ -0,0 +1,44 @@ +# vim: set ft=python : +# Add auto-completion and a stored history file of commands to your Python +# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is +# bound to the Esc key by default (you can change it - see readline docs). +# +# Store the file in ~/.pystartup, and set an environment variable to point +# to it: "export PYTHONSTARTUP=/home/gsf/.pystartup" in bash. +# +# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the +# full path to your home directory. + + +from __future__ import print_function + +try: + import readline + import atexit + import os + import sys + import platform + import gnureadline as readline +except ImportError as exception: + print('Python shell enhancement module problem: {0}'.format(exception)) +else: + # Enable Tab Completion + # OSX's bind should only be applied with legacy readline. + if sys.platform == 'darwin' and 'libedit' in readline.__doc__: + readline.parse_and_bind("bind ^I rl_complete") + else: + readline.parse_and_bind("tab: complete") + + # Enable History File + history_file = os.environ.get("PYTHON_HISTORY_FILE", + os.path.join(os.environ['HOME'], + '.pyhistory')) + if os.path.isfile(history_file): + readline.read_history_file(history_file) + else: + open(history_file, 'a').close() + atexit.register(readline.write_history_file, history_file) + print('Completed ~/pythonstartup.py') + + # anything not deleted (sys and os) will remain in the interpreter session + del atexit, readline, history_file diff --git a/chezmoi/dot_terraformrc b/chezmoi/dot_terraformrc new file mode 100644 index 00000000..d8e09193 --- /dev/null +++ b/chezmoi/dot_terraformrc @@ -0,0 +1 @@ +plugin_cache_dir = "$HOME/.terraform.d/plugin-cache" diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf new file mode 100644 index 00000000..5b29688b --- /dev/null +++ b/chezmoi/dot_tmux.conf @@ -0,0 +1,115 @@ +# ~/.tmux.conf + +########################################################################### +# General options + +# Set prefix to C-a. +unbind C-a +set -g prefix C-a +bind C-a send-prefix + +# scrollback size +set -g history-limit 10000 + +# set first window to index 1 (not 0) to map more to the keyboard layout +#set -g base-index 1 +#setw -g pane-base-index 1 + +set -g renumber-windows on + +# pass through xterm keys +set -g xterm-keys on + +########################################################################### +# General keymap + +# Keep your finger on ctrl, or don't, same result +bind-key C-d detach-client +bind-key C-c new-window +bind-key C-p paste-buffer + +# Redraw the client (if interrupted by wall, etc) +bind R refresh-client + +# reload tmux config +unbind r +bind r source-file ~/.tmux.conf \; display 'Reloaded tmux config!' + +########################################################################### +# Window management / navigation + +# C-\ (no prefix) to skip to last window we were in before this one +bind -n "C-\\" last-window + +# C-Space (no prefix) to tab to next window +bind -n C-Space next-window + +# Keep current path for new window +bind c new-window -c "#{pane_current_path}" + +# Space (with prefix) to toggle between current and previous window +bind Space last-window + +# C-Space (with prefix) to toggle between current and previous session +bind-key C-Space switch-client -l + +########################################################################### +# Pane management / navigation + +bind-key "|" split-window -h -c "#{pane_current_path}" +bind-key "\\" split-window -fh -c "#{pane_current_path}" +bind-key "-" split-window -v -c "#{pane_current_path}" +bind-key "_" split-window -fv -c "#{pane_current_path}" + +bind -r "<" swap-window -d -t -1 +bind -r ">" swap-window -d -t +1 + +# C-b C-k to passthrough a C-k +# C-k is consumed for pane navigation but we want it for kill-to-eol +unbind C-k +bind C-k send-key C-k + +########################################################################### +# Pane titles + +# Show pane titles at top of borders +set -g pane-border-status top +set -g pane-border-format "#P: #{pane_title}" + +# Prevent automatic renaming +set -g allow-rename off +set -g automatic-rename off + +# Optional: Set a default title format if you want +#set -g set-titles on +#set -g set-titles-string "#T" + +########################################################################### +# Mouse mode + +set -g mouse on + +########################################################################### +# Color scheme (Solarized Dark) + +# default statusbar colors +set-option -g status-bg brightgreen +set-option -g status-fg white + +# pane number display +set-option -g display-panes-active-colour red +set-option -g display-panes-colour white + +# clock +set-window-option -g clock-mode-colour cyan + +########################################################################### + +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' diff --git a/chezmoi/dot_vim/colors/solarized.vim b/chezmoi/dot_vim/colors/solarized.vim new file mode 100644 index 00000000..81c2c991 --- /dev/null +++ b/chezmoi/dot_vim/colors/solarized.vim @@ -0,0 +1,964 @@ +" Name: Solarized vim colorscheme +" Author: Ethan Schoonover +" URL: http://ethanschoonover.com/solarized +" (see this url for latest release & screenshots) +" License: OSI approved MIT license (see end of this file) +" +" Usage "{{{ +" +" --------------------------------------------------------------------- +" ABOUT: +" --------------------------------------------------------------------- +" Solarized is a carefully designed selective contrast colorscheme with dual +" light and dark modes that runs in both GUI, 256 and 16 color modes. +" +" See the homepage above for screenshots and details. +" +" --------------------------------------------------------------------- +" INSTALLATION: +" --------------------------------------------------------------------- +" +" Two options for installation: manual or pathogen +" +" MANUAL INSTALLATION OPTION: +" --------------------------------------------------------------------- +" +" 1. Put the files in the right place! +" 2. Move `solarized.vim` to your `.vim/colors` directory. +" +" RECOMMENDED PATHOGEN INSTALLATION OPTION: +" --------------------------------------------------------------------- +" +" 1. Download and install Tim Pope's Pathogen from: +" https://github.com/tpope/vim-pathogen +" +" 2. Next, move or clone the `vim-colors-solarized` directory so that it is +" a subdirectory of the `.vim/bundle` directory. +" +" a. **clone with git:** +" +" $ cd ~/.vim/bundle +" $ git clone git://github.com/altercation/vim-colors-solarized.git +" +" b. **or move manually into the pathogen bundle directory:** +" In the parent directory of vim-colors-solarized: +" +" $ mv vim-colors-solarized ~/.vim/bundle/ +" +" MODIFY VIMRC: +" +" After either Option 1 or Option 2 above, put the following two lines in your +" .vimrc: +" +" set background=dark +" colorscheme solarized +" +" or, for the light background mode of Solarized: +" +" set background=light +" colorscheme solarized +" +" I like to have a different background in GUI and terminal modes, so I can use +" the following if-then. However, I find vim's background autodetection to be +" pretty good and, at least with MacVim, I can leave this background value +" assignment out entirely and get the same results. +" +" if has('gui_running') +" set background=light +" else +" set background=dark +" endif +" +" See the Solarized homepage at http://ethanschoonover.com/solarized for +" screenshots which will help you select either the light or dark background. +" +" Other options are detailed below. +" +" IMPORTANT NOTE FOR TERMINAL USERS: +" +" If you are going to use Solarized in Terminal mode (i.e. not in a GUI +" version like gvim or macvim), **please please please** consider setting your +" terminal emulator's colorscheme to used the Solarized palette. I've included +" palettes for some popular terminal emulator as well as Xdefaults in the +" official Solarized download available from: +" +" http://ethanschoonover.com/solarized +" +" If you use Solarized without these colors, Solarized will by default use an +" approximate set of 256 colors. It isn't bad looking and has been extensively +" tweaked, but it's still not quite the real thing. +" +" If you do use the custom terminal colors, simply add the following line +" *before* the `colorschem solarized` line: +" +" let g:solarized_termcolors=16 +" +" --------------------------------------------------------------------- +" TOGGLE BACKGROUND FUNCTION +" --------------------------------------------------------------------- +" Here's a quick script that toggles the background color, using F5 in this +" example. You can drop this into .vimrc: +" +" function! ToggleBackground() +" if (g:solarized_style=="dark") +" let g:solarized_style="light" +" colorscheme solarized +" else +" let g:solarized_style="dark" +" colorscheme solarized +" endif +" endfunction +" command! Togbg call ToggleBackground() +" nnoremap :call ToggleBackground() +" inoremap :call ToggleBackground()a +" vnoremap :call ToggleBackground() +" +" --------------------------------------------------------------------- +" OPTIONS +" --------------------------------------------------------------------- +" +" Set these in your vimrc file prior to calling the colorscheme. +" +" option name default optional +" ------------------------------------------------ +" g:solarized_termcolors= 256 | 16 +" g:solarized_termtrans = 0 | 1 +" g:solarized_degrade = 0 | 1 +" g:solarized_bold = 1 | 0 +" g:solarized_underline = 1 | 0 +" g:solarized_italic = 1 | 0 +" g:solarized_style = "dark" | "light" +" g:solarized_contrast = "normal"| "high" or "low" +" ------------------------------------------------ +" +" OPTION DETAILS +" +" ------------------------------------------------ +" g:solarized_termcolors= 256 | 16 +" ------------------------------------------------ +" The most important option if you are using vim in terminal (non gui) mode! +" This tells Solarized to use the 256 degraded color mode if running in a 256 +" color capable terminal. Otherwise, if set to `16` it will use the terminal +" emulators colorscheme (best option as long as you've set the emulators colors +" to the Solarized palette). +" +" If you are going to use Solarized in Terminal mode (i.e. not in a GUI +" version like gvim or macvim), **please please please** consider setting your +" terminal emulator's colorscheme to used the Solarized palette. I've included +" palettes for some popular terminal emulator as well as Xdefaults in the +" official Solarized download available from: +" http://ethanschoonover.com/solarized . If you use Solarized without these +" colors, Solarized will by default use an approximate set of 256 colors. It +" isn't bad looking and has been extensively tweaked, but it's still not quite +" the real thing. +" +" ------------------------------------------------ +" g:solarized_termtrans = 0 | 1 +" ------------------------------------------------ +" If you use a terminal emulator with a transparent background and Solarized +" isn't displaying the background color transparently, set this to 1 and +" Solarized will use the default (transparent) background of the terminal +" emulator. *urxvt* required this in my testing; Terminal.app/iTerm2 did not. +" +" ------------------------------------------------ +" g:solarized_degrade = 0 | 1 +" ------------------------------------------------ +" For test purposes only; forces Solarized to use the 256 degraded color mode +" to test the approximate color values for accuracy. +" +" ------------------------------------------------ +" g:solarized_bold = 1 | 0 +" ------------------------------------------------ +" ------------------------------------------------ +" g:solarized_underline = 1 | 0 +" ------------------------------------------------ +" ------------------------------------------------ +" g:solarized_italic = 1 | 0 +" ------------------------------------------------ +" If you wish to stop Solarized from displaying bold, underlined or +" italicized typefaces, simply assign a zero value to the appropriate +" variable, for example: `let g:solarized_italic=0` +" +" ------------------------------------------------ +" g:solarized_style = "dark" | "light" +" ------------------------------------------------ +" Simply another way to force Solarized to use a dark or light background. +" It's better to use `set background=dark` or `set background=light` in your +" .vimrc file. This option is mostly used in scripts (quick background color +" change) or for testing. Note that, if set, g:solarized_style overrides the +" setting for "background". +" +" ------------------------------------------------ +" g:solarized_contrast = "normal"| "high" or "low" +" ------------------------------------------------ +" Stick with normal! It's been carefully tested. Setting this option to high +" or low does use the same Solarized palette but simply shifts some values up +" or down in order to expand or compress the tonal range displayed. +" +" --------------------------------------------------------------------- +" COLOR VALUES +" --------------------------------------------------------------------- +" Download palettes and files from: http://ethanschoonover.com/solarized +" +" L\*a\*b values are canonical (White D65, Reference D50), other values are +" matched in sRGB space. +" +" SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B sRGB HSB +" --------- ------- ---- ------- ----------- ---------- ----------- ----------- +" base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21 +" base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26 +" base01 #586e75 10/7 brgreen 240 #4e4e4e 45 -07 -07 88 110 117 194 25 46 +" base00 #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195 23 51 +" base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59 +" base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63 +" base2 #eee8d5 7/7 white 254 #d7d7af 92 -00 10 238 232 213 44 11 93 +" base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99 +" yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71 +" orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80 +" red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86 +" magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83 +" violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77 +" blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82 +" cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63 +" green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60 +" +" --------------------------------------------------------------------- +" COLORSCHEME HACKING +" --------------------------------------------------------------------- +" +" Useful commands for testing colorschemes: +" :source $VIMRUNTIME/syntax/hitest.vim +" :help highlight-groups +" :help cterm-colors +" :help group-name +" +" Useful links for developing colorschemes: +" http://www.vim.org/scripts/script.php?script_id=2937 +" http://vimcasts.org/episodes/creating-colorschemes-for-vim/ +" http://www.frexx.de/xterm-256-notes/" +" +" +" }}} +" Default option values"{{{ +" --------------------------------------------------------------------- +if !exists("g:solarized_termtrans") + let g:solarized_termtrans = 0 +endif +if !exists("g:solarized_degrade") + let g:solarized_degrade = 0 +endif +if !exists("g:solarized_bold") + let g:solarized_bold = 1 +endif +if !exists("g:solarized_underline") + let g:solarized_underline = 1 +endif +if !exists("g:solarized_italic") + let g:solarized_italic = 1 +endif +if !exists("g:solarized_termcolors") + let g:solarized_termcolors = 256 +endif +if !exists("g:solarized_style") && !exists("g:solarized_style") + let g:solarized_style = &background +endif +if !exists("g:solarized_contrast") + let g:solarized_contrast = "normal" +endif +"}}} +" Colorscheme basic settings"{{{ +" --------------------------------------------------------------------- +if g:solarized_style == "dark" + set background=dark +elseif g:solarized_style == "light" + set background=light +else + let g:solarized_style = &background +endif + +hi clear +if exists("syntax_on") + syntax reset +endif + +let colors_name = "solarized" +"let colors_name = &background +"if background == "light" +" let colors_name = &background +"else +" let colors_name = &background +"endif +"}}} +" GUI & CSApprox hexadecimal palettes"{{{ +" --------------------------------------------------------------------- +" +" Set both gui and terminal color values in separate conditional statements +" Due to possibility that CSApprox is running (though I suppose we could just +" leave the hex values out entirely in that case and include only cterm colors) +" We also check to see if user has set solarized (force use of the +" neutral gray monotone palette component) +if has("gui_running") && g:solarized_degrade == 0 + let s:g_back = "#002b36" + let s:g_base03 = "#002b36" + let s:g_base02 = "#073642" + let s:g_base01 = "#586e75" + let s:g_base00 = "#657b83" + let s:g_base0 = "#839496" + let s:g_base1 = "#93a1a1" + let s:g_base2 = "#eee8d5" + let s:g_base3 = "#fdf6e3" + let s:g_yellow = "#b58900" + let s:g_orange = "#cb4b16" + let s:g_red = "#dc322f" + let s:g_magenta = "#d33682" + let s:g_violet = "#6c71c4" + let s:g_blue = "#268bd2" + let s:g_cyan = "#2aa198" + let s:g_green = "#859900" +else + " these colors are for non-gui vim when CSApprox is installed. CSApprox + " degrades the base colors poorly (bright blues instead of muted gray + " blues) so we set all hex values here to ones which CSApprox will not + " change and which we approve of. Perhaps I should just can the hex values + " and use just the color table values, leaving these blank. Not much + " difference either way and I'd rather be thorough about it. + " They can also be used by setting g:solarized_degrade to 1 in vimrc + let s:g_back = "#1c1c1c" + let s:g_base03 = "#1c1c1c" + let s:g_base02 = "#262626" + let s:g_base01 = "#4e4e4e" + let s:g_base00 = "#585858" + let s:g_base0 = "#808080" + let s:g_base1 = "#8a8a8a" + let s:g_base2 = "#d7d7af" + let s:g_base3 = "#ffffd7" + let s:g_yellow = "#af8700" + let s:g_orange = "#d75f00" + let s:g_red = "#af0000" + let s:g_magenta = "#af005f" + let s:g_violet = "#5f5faf" + let s:g_blue = "#0087ff" + let s:g_cyan = "#00afaf" + let s:g_green = "#5f8700" +endif +"}}} +" 256 Terminal (no CSApprox) and 16 color fallback palettes"{{{ +" --------------------------------------------------------------------- +" We also set this if gui is running as we use the optional formatting +" values that get set here (ou==optional underline, ob==opt bold). +if (has("gui_running") || &t_Co == 256) && g:solarized_termcolors != 16 + let s:c_back = "234" + let s:c_base03 = "234" + let s:c_base02 = "235" + let s:c_base01 = "239" + let s:c_base00 = "240" + let s:c_base0 = "244" + let s:c_base1 = "245" + let s:c_base2 = "187" + let s:c_base3 = "230" + let s:c_yellow = "136" + let s:c_orange = "166" + let s:c_red = "124" + let s:c_magenta = "125" + let s:c_violet = "61" + let s:c_blue = "33" + let s:c_cyan = "37" + let s:c_green = "64" + let s:ou = "" + let s:ob = "" +elseif &t_Co > 8 || g:solarized_termcolors == 16 + " NOTE: this requires terminal colors to be set to solarized standard + " 16 colors (see top of this file for details) + let s:c_back = "NONE" + let s:c_base03 = "8" + let s:c_base02 = "0" + let s:c_base01 = "10" + let s:c_base00 = "11" + let s:c_base0 = "12" + let s:c_base1 = "14" + let s:c_base2 = "7" + let s:c_base3 = "15" + let s:c_green = "2" + let s:c_yellow = "3" + let s:c_orange = "9" + let s:c_red = "1" + let s:c_magenta = "5" + let s:c_violet = "13" + let s:c_blue = "4" + let s:c_cyan = "6" + let s:ou = "" + let s:ob = "" +else " must be in an 8 color or less terminal + let s:c_back = "NONE" + let s:c_base03 = "4" + let s:c_base02 = "darkgrey" + let s:c_base01 = "grey" + let s:c_base00 = "darkgrey" + let s:c_base0 = "6" + let s:c_base1 = "4" + let s:c_base2 = "7" + let s:c_base3 = "7" + let s:c_green = "2" + let s:c_yellow = "3" + let s:c_orange = "3" + let s:c_red = "1" + let s:c_magenta = "5" + let s:c_violet = "5" + let s:c_blue = "4" + let s:c_cyan = "6" + let s:ou = ",underline" + let s:ob = ",bold" +endif +"}}} +" Formatting options and null values for passthrough effect"{{{ +" --------------------------------------------------------------------- +let s:g_none = "NONE" +let s:c_none = "NONE" +let s:t_none = "NONE" +let s:n = "NONE" +let s:c = ",undercurl" +let s:r = ",reverse" +let s:s = ",standout" +"}}} +" Alternate light scheme "{{{ +" --------------------------------------------------------------------- +if g:solarized_style == "light" + let s:c_temp03 = s:c_base03 + let s:c_temp02 = s:c_base02 + let s:c_temp01 = s:c_base01 + let s:c_temp00 = s:c_base00 + let s:c_base03 = s:c_base3 + let s:c_base02 = s:c_base2 + let s:c_base01 = s:c_base1 + let s:c_base00 = s:c_base0 + let s:c_base0 = s:c_temp00 + let s:c_base1 = s:c_temp01 + let s:c_base2 = s:c_temp02 + let s:c_base3 = s:c_temp03 + let s:c_back = s:c_base03 + let s:g_temp03 = s:g_base03 + let s:g_temp02 = s:g_base02 + let s:g_temp01 = s:g_base01 + let s:g_temp00 = s:g_base00 + let s:g_base03 = s:g_base3 + let s:g_base02 = s:g_base2 + let s:g_base01 = s:g_base1 + let s:g_base00 = s:g_base0 + let s:g_base0 = s:g_temp00 + let s:g_base1 = s:g_temp01 + let s:g_base2 = s:g_temp02 + let s:g_base3 = s:g_temp03 + let s:g_back = s:g_base03 +endif +"}}} +" Alternate inverted background scheme "{{{ +" --------------------------------------------------------------------- +if g:solarized_style == "inverted" + let s:c_temp03 = s:c_base03 + let s:c_temp02 = s:c_base02 + let s:c_base03 = s:c_temp02 + let s:c_base02 = s:c_temp03 + let s:c_back = s:c_base03 + let s:g_temp03 = s:g_base03 + let s:g_temp02 = s:g_base02 + let s:g_base03 = s:g_temp02 + let s:g_base02 = s:g_temp03 + let s:g_back = s:g_base03 +endif +"}}} +" Optional contrast schemes "{{{ +" --------------------------------------------------------------------- +if g:solarized_contrast == "high" + let s:g_base03 = s:g_base03 + let s:g_base02 = s:g_base02 + let s:g_base01 = s:g_base00 + let s:g_base00 = s:g_base0 + let s:g_base0 = s:g_base1 + let s:g_base1 = s:g_base2 + let s:g_base2 = s:g_base3 + let s:g_base3 = s:g_base3 + let s:g_back = s:g_back +endif +if g:solarized_contrast == "low" + let s:g_back = s:g_base02 + let s:ou = ",underline" +endif +"}}} +" Overrides dependent on user specified values"{{{ +" --------------------------------------------------------------------- +if g:solarized_termtrans == 1 + let s:c_back = "NONE" +endif + +if g:solarized_bold == 1 + let s:b = ",bold" +else + let s:b = "" +endif + +if g:solarized_underline == 1 + let s:u = ",underline" +else + let s:u = "" +endif + +if g:solarized_italic == 1 + let s:i = ",italic" +else + let s:i = "" +endif +"}}} +" Highlighting primitives"{{{ +" --------------------------------------------------------------------- + +exe "let s:bg_none = ' ctermbg=".s:c_none ." guibg=".s:g_none ."'" +exe "let s:bg_back = ' ctermbg=".s:c_back ." guibg=".s:g_back ."'" +exe "let s:bg_base03 = ' ctermbg=".s:c_base03 ." guibg=".s:g_base03 ."'" +exe "let s:bg_base02 = ' ctermbg=".s:c_base02 ." guibg=".s:g_base02 ."'" +exe "let s:bg_base01 = ' ctermbg=".s:c_base01 ." guibg=".s:g_base01 ."'" +exe "let s:bg_base00 = ' ctermbg=".s:c_base00 ." guibg=".s:g_base00 ."'" +exe "let s:bg_base0 = ' ctermbg=".s:c_base0 ." guibg=".s:g_base0 ."'" +exe "let s:bg_base1 = ' ctermbg=".s:c_base1 ." guibg=".s:g_base1 ."'" +exe "let s:bg_base2 = ' ctermbg=".s:c_base2 ." guibg=".s:g_base2 ."'" +exe "let s:bg_base3 = ' ctermbg=".s:c_base3 ." guibg=".s:g_base3 ."'" +exe "let s:bg_green = ' ctermbg=".s:c_green ." guibg=".s:g_green ."'" +exe "let s:bg_yellow = ' ctermbg=".s:c_yellow ." guibg=".s:g_yellow ."'" +exe "let s:bg_orange = ' ctermbg=".s:c_orange ." guibg=".s:g_orange ."'" +exe "let s:bg_red = ' ctermbg=".s:c_red ." guibg=".s:g_red ."'" +exe "let s:bg_magenta = ' ctermbg=".s:c_magenta." guibg=".s:g_magenta."'" +exe "let s:bg_violet = ' ctermbg=".s:c_violet ." guibg=".s:g_violet ."'" +exe "let s:bg_blue = ' ctermbg=".s:c_blue ." guibg=".s:g_blue ."'" +exe "let s:bg_cyan = ' ctermbg=".s:c_cyan ." guibg=".s:g_cyan ."'" + +exe "let s:fg_none = ' ctermfg=".s:c_none ." guifg=".s:g_none ."'" +exe "let s:fg_back = ' ctermfg=".s:c_back ." guifg=".s:g_back ."'" +exe "let s:fg_base03 = ' ctermfg=".s:c_base03 ." guifg=".s:g_base03 ."'" +exe "let s:fg_base02 = ' ctermfg=".s:c_base02 ." guifg=".s:g_base02 ."'" +exe "let s:fg_base01 = ' ctermfg=".s:c_base01 ." guifg=".s:g_base01 ."'" +exe "let s:fg_base00 = ' ctermfg=".s:c_base00 ." guifg=".s:g_base00 ."'" +exe "let s:fg_base0 = ' ctermfg=".s:c_base0 ." guifg=".s:g_base0 ."'" +exe "let s:fg_base1 = ' ctermfg=".s:c_base1 ." guifg=".s:g_base1 ."'" +exe "let s:fg_base2 = ' ctermfg=".s:c_base2 ." guifg=".s:g_base2 ."'" +exe "let s:fg_base3 = ' ctermfg=".s:c_base3 ." guifg=".s:g_base3 ."'" +exe "let s:fg_green = ' ctermfg=".s:c_green ." guifg=".s:g_green ."'" +exe "let s:fg_yellow = ' ctermfg=".s:c_yellow ." guifg=".s:g_yellow ."'" +exe "let s:fg_orange = ' ctermfg=".s:c_orange ." guifg=".s:g_orange ."'" +exe "let s:fg_red = ' ctermfg=".s:c_red ." guifg=".s:g_red ."'" +exe "let s:fg_magenta = ' ctermfg=".s:c_magenta." guifg=".s:g_magenta."'" +exe "let s:fg_violet = ' ctermfg=".s:c_violet ." guifg=".s:g_violet ."'" +exe "let s:fg_blue = ' ctermfg=".s:c_blue ." guifg=".s:g_blue ."'" +exe "let s:fg_cyan = ' ctermfg=".s:c_cyan ." guifg=".s:g_cyan ."'" + +exe "let s:sp_none = ' guisp=".s:g_none ."'" +exe "let s:sp_back = ' guisp=".s:g_back ."'" +exe "let s:sp_base03 = ' guisp=".s:g_base03 ."'" +exe "let s:sp_base02 = ' guisp=".s:g_base02 ."'" +exe "let s:sp_base01 = ' guisp=".s:g_base01 ."'" +exe "let s:sp_base00 = ' guisp=".s:g_base00 ."'" +exe "let s:sp_base0 = ' guisp=".s:g_base0 ."'" +exe "let s:sp_base1 = ' guisp=".s:g_base1 ."'" +exe "let s:sp_base2 = ' guisp=".s:g_base2 ."'" +exe "let s:sp_base3 = ' guisp=".s:g_base3 ."'" +exe "let s:sp_green = ' guisp=".s:g_green ."'" +exe "let s:sp_yellow = ' guisp=".s:g_yellow ."'" +exe "let s:sp_orange = ' guisp=".s:g_orange ."'" +exe "let s:sp_red = ' guisp=".s:g_red ."'" +exe "let s:sp_magenta = ' guisp=".s:g_magenta."'" +exe "let s:sp_violet = ' guisp=".s:g_violet ."'" +exe "let s:sp_blue = ' guisp=".s:g_blue ."'" +exe "let s:sp_cyan = ' guisp=".s:g_cyan ."'" + +exe "let s:fmt_none = ' cterm=NONE". " gui=NONE". " term=NONE". "'" +exe "let s:fmt_bold = ' cterm=NONE".s:b." gui=NONE".s:b." term=NONE".s:b."'" +exe "let s:fmt_bldi = ' cterm=NONE".s:b." gui=NONE".s:b.s:i." term=NONE".s:b."'" +exe "let s:fmt_undr = ' cterm=NONE".s:u." gui=NONE".s:u." term=NONE".s:u."'" +exe "let s:fmt_undb = ' cterm=NONE".s:u.s:b." gui=NONE".s:u.s:b. + \" term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' cterm=NONE".s:u." gui=NONE".s:u.s:i. + \" term=NONE".s:u."'" +exe "let s:fmt_uopt = ' cterm=NONE".s:ou." gui=NONE".s:ou. + \" term=NONE".s:ou."'" +exe "let s:fmt_bopt = ' cterm=NONE".s:ob." gui=NONE".s:ob. + \" term=NONE".s:ob."'" +exe "let s:fmt_curl = ' cterm=NONE".s:c." gui=NONE".s:c." term=NONE".s:c."'" +exe "let s:fmt_ital = ' cterm=NONE". " gui=NONE".s:i." term=NONE". "'" +exe "let s:fmt_revr = ' cterm=NONE".s:r." gui=NONE".s:r." term=NONE".s:r."'" +exe "let s:fmt_stnd = ' cterm=NONE".s:s." gui=NONE".s:s." term=NONE".s:s."'" +"}}} +" Basic highlighting"{{{ +" --------------------------------------------------------------------- +" note that link syntax to avoid duplicate configuration doesn't work with the +" exe compiled formats + +exe "hi Normal" . s:fg_base0 .s:bg_back .s:fmt_none + +exe "hi Comment" . s:fg_base01 .s:bg_none .s:fmt_ital +" *Comment any comment + +exe "hi Constant" . s:fg_cyan .s:bg_none .s:fmt_none +"exe "hi String" . s:fg_yellow .s:bg_none .s:fmt_none +" *Constant any constant +" String a string constant: "this is a string" +" Character a character constant: 'c', '\n' +" Number a number constant: 234, 0xff +" Boolean a boolean constant: TRUE, false +" Float a floating point constant: 2.3e10 + +exe "hi Identifier" . s:fg_blue .s:bg_none .s:fmt_none +" *Identifier any variable name +" Function function name (also: methods for classes) +" +exe "hi Statement" . s:fg_green .s:bg_none .s:fmt_none +" *Statement any statement +" Conditional if, then, else, endif, switch, etc. +" Repeat for, do, while, etc. +" Label case, default, etc. +" Operator "sizeof", "+", "*", etc. +" Keyword any other keyword +" Exception try, catch, throw + +exe "hi PreProc" . s:fg_orange .s:bg_none .s:fmt_none +" *PreProc generic Preprocessor +" Include preprocessor #include +" Define preprocessor #define +" Macro same as Define +" PreCondit preprocessor #if, #else, #endif, etc. + +exe "hi Type" . s:fg_yellow .s:bg_none .s:fmt_none +" *Type int, long, char, etc. +" StorageClass static, register, volatile, etc. +" Structure struct, union, enum, etc. +" Typedef A typedef + +exe "hi Special" . s:fg_red .s:bg_none .s:fmt_none +" *Special any special symbol +" SpecialChar special character in a constant +" Tag you can use CTRL-] on this +" Delimiter character that needs attention +" SpecialComment special things inside a comment +" Debug debugging statements + +exe "hi Underlined" . s:fg_violet .s:bg_none .s:fmt_none +" *Underlined text that stands out, HTML links + +exe "hi Ignore" . s:fg_none .s:bg_none .s:fmt_none +" *Ignore left blank, hidden |hl-Ignore| + +exe "hi Error" . s:fg_red .s:bg_none .s:fmt_bold +" *Error any erroneous construct + +exe "hi Todo" . s:fg_magenta.s:bg_none .s:fmt_bold +" *Todo anything that needs extra attention; mostly the +" keywords TODO FIXME and XXX +" +"Highlighting groups for various occasions +"----------------------------------------- +exe "hi SpecialKey" . s:fg_base02 .s:bg_none .s:fmt_none +exe "hi NonText" . s:fg_base02 .s:bg_none .s:fmt_bold +exe "hi Directory" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi ErrorMsg" . s:fg_red .s:bg_none .s:fmt_revr +exe "hi IncSearch" . s:fg_yellow .s:bg_none .s:fmt_revr +exe "hi Search" . s:fg_yellow .s:bg_none .s:fmt_stnd +exe "hi MoreMsg" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi ModeMsg" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi LineNr" . s:fg_base01 .s:bg_base02 .s:fmt_none +exe "hi Question" . s:fg_cyan .s:bg_none .s:fmt_bold +exe "hi StatusLine" . s:fg_base0 .s:bg_base02 .s:fmt_none +exe "hi StatusLineNC" . s:fg_base1 .s:bg_base02 .s:fmt_none +exe "hi VertSplit" . s:fg_base0 .s:bg_base02 .s:fmt_none +exe "hi Title" . s:fg_orange .s:bg_none .s:fmt_bold +exe "hi Visual" . s:fg_none .s:bg_base02 .s:fmt_stnd +exe "hi VisualNOS" . s:fg_none .s:bg_base02 .s:fmt_stnd +exe "hi WarningMsg" . s:fg_red .s:bg_none .s:fmt_bold +exe "hi WildMenu" . s:fg_base1 .s:bg_base02 .s:fmt_none +exe "hi Folded" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base03 +exe "hi FoldColumn" . s:fg_base0 .s:bg_base02 .s:fmt_bold +exe "hi DiffAdd" . s:fg_green .s:bg_none .s:fmt_revr +exe "hi DiffChange" . s:fg_yellow .s:bg_none .s:fmt_revr +exe "hi DiffDelete" . s:fg_red .s:bg_none .s:fmt_revr +exe "hi DiffText" . s:fg_blue .s:bg_none .s:fmt_revr +exe "hi SignColumn" . s:fg_base0 .s:bg_base02 .s:fmt_none +exe "hi Conceal" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi SpellBad" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_red +exe "hi SpellCap" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_violet +exe "hi SpellRare" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_cyan +exe "hi SpellLocal" . s:fg_none .s:bg_none .s:fmt_curl .s:sp_yellow +exe "hi Pmenu" . s:fg_base0 .s:bg_base02 .s:fmt_none +exe "hi PmenuSel" . s:fg_base2 .s:bg_base01 .s:fmt_none +exe "hi PmenuSbar" . s:fg_base0 .s:bg_base2 .s:fmt_none +exe "hi PmenuThumb" . s:fg_base03 .s:bg_base0 .s:fmt_none +exe "hi TabLine" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base0 +exe "hi TabLineSel" . s:fg_base2 .s:bg_base01 .s:fmt_undr .s:sp_base0 +exe "hi TabLineFill" . s:fg_base0 .s:bg_base02 .s:fmt_undr .s:sp_base0 +exe "hi CursorColumn" . s:fg_none .s:bg_base02 .s:fmt_none +exe "hi CursorLine" . s:fg_none .s:bg_base02 .s:fmt_uopt .s:sp_base1 +exe "hi ColorColumn" . s:fg_none .s:bg_base02 .s:fmt_none +exe "hi Cursor" . s:fg_none .s:bg_none .s:fmt_revr +exe "hi lCursor" . s:fg_none .s:bg_none .s:fmt_stnd +exe "hi MatchParen" . s:fg_red .s:bg_base01 .s:fmt_bold + +"}}} +" Extended highlighting "{{{ +" --------------------------------------------------------------------- +"}}} +" vim syntax highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi vimLineComment" . s:fg_base01 .s:bg_none .s:fmt_ital +exe "hi vimCommentString".s:fg_violet .s:bg_none .s:fmt_none +hi link vimVar Identifier +hi link vimFunc Function +hi link vimUserFunc Function +exe "hi vimCommand" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi vimCmdSep" . s:fg_blue .s:bg_none .s:fmt_bold +exe "hi helpExample" . s:fg_base1 .s:bg_none .s:fmt_none +hi link helpSpecial Special +"exe "hi helpSpecial" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi helpOption" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi helpNote" . s:fg_magenta.s:bg_none .s:fmt_none +exe "hi helpVim" . s:fg_magenta.s:bg_none .s:fmt_none +exe "hi helpHyperTextJump".s:fg_blue .s:bg_none .s:fmt_undr +exe "hi helpHyperTextEntry".s:fg_green .s:bg_none .s:fmt_none +exe "hi vimIsCommand" . s:fg_base00 .s:bg_none .s:fmt_none +exe "hi vimSynMtchOpt". s:fg_yellow .s:bg_none .s:fmt_none +exe "hi vimSynType" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi vimHiLink" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi vimHiGroup" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi vimGroup" . s:fg_blue .s:bg_none .s:fmt_undb +"}}} +" html highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi htmlTag" . s:fg_base01 .s:bg_none .s:fmt_none +exe "hi htmlEndTag" . s:fg_base01 .s:bg_none .s:fmt_none +exe "hi htmlTagN" . s:fg_base1 .s:bg_none .s:fmt_bold +exe "hi htmlTagName" . s:fg_blue .s:bg_none .s:fmt_bold +exe "hi htmlSpecialTagName". s:fg_blue .s:bg_none .s:fmt_ital +exe "hi htmlArg" . s:fg_base00 .s:bg_none .s:fmt_none +exe "hi javaScript" . s:fg_yellow .s:bg_none .s:fmt_none +"}}} +" perl highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi perlHereDoc" . s:fg_base1 .s:bg_back .s:fmt_none +exe "hi perlVarPlain" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi perlStatementFileDesc" . s:fg_cyan .s:bg_back .s:fmt_none + +"}}} +" tex highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi texStatement" . s:fg_cyan .s:bg_back .s:fmt_none +exe "hi texMathZoneX" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi texRefLabel" . s:fg_yellow .s:bg_back .s:fmt_none +"}}} +" ruby highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi rubyDefine" . s:fg_base1 .s:bg_back .s:fmt_bold +"rubyInclude +"rubySharpBang +"rubyAccess +"rubyPredefinedVariable +"rubyBoolean +"rubyClassVariable +"rubyBeginEnd +"rubyRepeatModifier +"hi link rubyArrayDelimiter Special " [ , , ] +"rubyCurlyBlock { , , } + +"hi link rubyClass Keyword +"hi link rubyModule Keyword +"hi link rubyKeyword Keyword +"hi link rubyOperator Operator +"hi link rubyIdentifier Identifier +"hi link rubyInstanceVariable Identifier +"hi link rubyGlobalVariable Identifier +"hi link rubyClassVariable Identifier +"hi link rubyConstant Type +"}}} +" haskell syntax highlighting"{{{ +" --------------------------------------------------------------------- +" For use with syntax/haskell.vim : Haskell Syntax File +" http://www.vim.org/scripts/script.php?script_id=3034 +" See also Steffen Siering's github repository: +" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim +" --------------------------------------------------------------------- +" +" Treat True and False specially, see the plugin referenced above +let hs_highlight_boolean=1 +" highlight delims, see the plugin referenced above +let hs_highlight_delimiters=1 + +exe "hi cPreCondit". s:fg_orange.s:bg_none .s:fmt_none + +exe "hi VarId" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi ConId" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi hsImport" . s:fg_magenta.s:bg_none .s:fmt_none +exe "hi hsString" . s:fg_base00 .s:bg_none .s:fmt_none + +exe "hi hsStructure" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hs_hlFunctionName" . s:fg_blue .s:bg_none +exe "hi hsStatement" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hsImportLabel" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hs_OpFunctionName" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi hs_DeclareFunction" . s:fg_orange .s:bg_none .s:fmt_none +exe "hi hsVarSym" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hsType" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi hsTypedef" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hsModuleName" . s:fg_green .s:bg_none .s:fmt_undr +exe "hi hsModuleStartLabel" . s:fg_magenta.s:bg_none .s:fmt_none +hi link hsImportParams Delimiter +hi link hsDelimTypeExport Delimiter +hi link hsModuleStartLabel hsStructure +hi link hsModuleWhereLabel hsModuleStartLabel + +" following is for the haskell-conceal plugin +" the first two items don't have an impact, but better safe +exe "hi hsNiceOperator" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi hsniceoperator" . s:fg_cyan .s:bg_none .s:fmt_none + +"}}} +" pandoc markdown syntax highlighting "{{{ +" --------------------------------------------------------------------- + +"PandocHiLink pandocNormalBlock +exe "hi pandocTitleBlock" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi pandocTitleBlockTitle" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi pandocTitleComment" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi pandocComment" .s:fg_base01 .s:bg_none .s:fmt_ital +exe "hi pandocVerbatimBlock" .s:fg_yellow .s:bg_none .s:fmt_none +hi link pandocVerbatimBlockDeep pandocVerbatimBlock +hi link pandocCodeBlock pandocVerbatimBlock +hi link pandocCodeBlockDelim pandocVerbatimBlock +exe "hi pandocBlockQuote" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader1" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader2" .s:fg_cyan .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader3" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader4" .s:fg_red .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader5" .s:fg_base0 .s:bg_none .s:fmt_none +exe "hi pandocBlockQuoteLeader6" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi pandocListMarker" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi pandocListReference" .s:fg_magenta.s:bg_none .s:fmt_undr + +" Definitions +" --------------------------------------------------------------------- +let s:fg_pdef = s:fg_violet +exe "hi pandocDefinitionBlock" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi pandocDefinitionTerm" .s:fg_pdef .s:bg_none .s:fmt_stnd +exe "hi pandocDefinitionIndctr" .s:fg_pdef .s:bg_none .s:fmt_bold +exe "hi pandocEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_ital +exe "hi pandocEmphasisNestedDefinition" .s:fg_pdef .s:bg_none .s:fmt_bldi +exe "hi pandocStrongEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_bold +exe "hi pandocStrongEmphasisNestedDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi +exe "hi pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi +exe "hi pandocStrikeoutDefinition" .s:fg_pdef .s:bg_none .s:fmt_revr +exe "hi pandocVerbatimInlineDefinition" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi pandocSuperscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi pandocSubscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none + +" Tables +" --------------------------------------------------------------------- +let s:fg_ptable = s:fg_blue +exe "hi pandocTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi pandocTableStructure" .s:fg_ptable.s:bg_none .s:fmt_none +hi link pandocTableStructureTop pandocTableStructre +hi link pandocTableStructureEnd pandocTableStructre +exe "hi pandocTableZebraLight" .s:fg_ptable.s:bg_base03.s:fmt_none +exe "hi pandocTableZebraDark" .s:fg_ptable.s:bg_base02.s:fmt_none +exe "hi pandocEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_ital +exe "hi pandocEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi pandocStrongEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bold +exe "hi pandocStrongEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi pandocStrongEmphasisEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi pandocStrikeoutTable" .s:fg_ptable.s:bg_none .s:fmt_revr +exe "hi pandocVerbatimInlineTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi pandocSuperscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi pandocSubscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none + +" Headings +" --------------------------------------------------------------------- +let s:fg_phead = s:fg_orange +exe "hi pandocHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi pandocHeadingMarker" .s:fg_yellow.s:bg_none.s:fmt_bold +exe "hi pandocEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi pandocEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi pandocStrongEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi pandocStrongEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi pandocStrikeoutHeading" .s:fg_phead .s:bg_none.s:fmt_revr +exe "hi pandocVerbatimInlineHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi pandocSuperscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi pandocSubscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold + +" Links +" --------------------------------------------------------------------- +exe "hi pandocLinkDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi pandocLinkLabel" .s:fg_blue .s:bg_none .s:fmt_undr +exe "hi pandocLinkText" .s:fg_blue .s:bg_none .s:fmt_undb +exe "hi pandocLinkURL" .s:fg_base00 .s:bg_none .s:fmt_undr +exe "hi pandocLinkTitle" .s:fg_base00 .s:bg_none .s:fmt_undi +exe "hi pandocLinkTitleDelim" .s:fg_base01 .s:bg_none .s:fmt_undi .s:sp_base00 +exe "hi pandocLinkDefinition" .s:fg_cyan .s:bg_none .s:fmt_undr .s:sp_base00 +exe "hi pandocLinkDefinitionID" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi pandocImageCaption" .s:fg_violet .s:bg_none .s:fmt_undb +exe "hi pandocFootnoteLink" .s:fg_green .s:bg_none .s:fmt_undr +exe "hi pandocFootnoteDefLink" .s:fg_green .s:bg_none .s:fmt_bold +exe "hi pandocFootnoteInline" .s:fg_green .s:bg_none .s:fmt_undb +exe "hi pandocFootnote" .s:fg_green .s:bg_none .s:fmt_none +exe "hi pandocCitationDelim" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi pandocCitation" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi pandocCitationID" .s:fg_magenta.s:bg_none .s:fmt_undr +exe "hi pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none + +" Main Styles +" --------------------------------------------------------------------- +exe "hi pandocStyleDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi pandocEmphasis" .s:fg_base0 .s:bg_none .s:fmt_ital +exe "hi pandocEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi pandocStrongEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bold +exe "hi pandocStrongEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi pandocStrongEmphasisEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi pandocStrikeout" .s:fg_base01 .s:bg_none .s:fmt_revr +exe "hi pandocVerbatimInline" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi pandocSuperscript" .s:fg_violet .s:bg_none .s:fmt_none +exe "hi pandocSubscript" .s:fg_violet .s:bg_none .s:fmt_none + +exe "hi pandocRule" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi pandocRuleLine" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi pandocEscapePair" .s:fg_red .s:bg_none .s:fmt_bold +exe "hi pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi pandocNonBreakingSpace" . s:fg_red .s:bg_none .s:fmt_revr +hi link pandocEscapedCharacter pandocEscapePair +hi link pandocLineBreak pandocEscapePair + +" Embedded Code +" --------------------------------------------------------------------- +exe "hi pandocMetadataDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi pandocMetadataKey" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_bold +hi link pandocMetadataTitle pandocMetadata + +"}}} +" License "{{{ +" --------------------------------------------------------------------- +" +" Copyright (c) 2011 Ethan Schoonover +" +" Permission is hereby granted, free of charge, to any person obtaining a copy +" of this software and associated documentation files (the "Software"), to deal +" in the Software without restriction, including without limitation the rights +" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +" copies of the Software, and to permit persons to whom the Software is +" furnished to do so, subject to the following conditions: +" +" The above copyright notice and this permission notice shall be included in +" all copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +" THE SOFTWARE. +" +"}}} diff --git a/chezmoi/dot_vim/ftdetect/agc.vim b/chezmoi/dot_vim/ftdetect/agc.vim new file mode 100644 index 00000000..04b4595d --- /dev/null +++ b/chezmoi/dot_vim/ftdetect/agc.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.agc set filetype=agc diff --git a/chezmoi/dot_vim/ftdetect/log.vim b/chezmoi/dot_vim/ftdetect/log.vim new file mode 100644 index 00000000..13f295f7 --- /dev/null +++ b/chezmoi/dot_vim/ftdetect/log.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.log set filetype=log diff --git a/chezmoi/dot_vim/syntax/ldsl.vim b/chezmoi/dot_vim/syntax/ldsl.vim new file mode 100644 index 00000000..6871ebc9 --- /dev/null +++ b/chezmoi/dot_vim/syntax/ldsl.vim @@ -0,0 +1,64 @@ +" Vim syntax file +" Language: LDSL files +" Maintainer: David O'Shea +" Latest Revision: 2009-02-05 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn region string contained display start=+"+ end=+"+ skip=+\\"+ +syn match comment display '//.*$' + +syn match keyword display '\(^\|\s\+\)\zs\(global\|reference\|version\|prefix\|sync\|retvar\|include\|trace\|entry\|error\|warn\|info\|exit\|class\|description\|device\|instances\|type\|states\|events\|function\|ioctl\|deprecated\|state\|parameter\|goto\|adaptation\)\(\s\+\|$\)[^;{]*' contains=device,fn,ioctl,description,instances,reference,version,prefix,retvar,include,trace,sync,deprecated,devtype,class,state,parameter,goto,adaptation,events +syn match adaptation contained display 'adaptation\s\+\zs\(yes\|no\)\ze;' +syn match goto contained display 'goto\s\+\zs[^ ;}]*\ze;' contains=identifier +syn match parameter contained display 'parameter\s\+\zs.*' contains=string,comment +syn match state contained display 'state\s\+\zs[^ ;{]*\(\s\+->\s\+[^ ;{]*\)\?\ze;' contains=statename +syn match statename contained display '[^ ;~>-]*' +syn match device contained display 'device\s\+[^ ;{]* *' contains=identifier +syn match class contained display 'class\s\+[^ ;{]* *' contains=identifier +syn match fn contained display 'function\s\+\zs[^ ;{]*' contains=fnname,error +syn match ioctl contained display 'ioctl\s\+[^ ;]*' contains=identifier +syn match description contained display 'description\s\+\zs.*' contains=string,comment +syn match reference contained display 'reference\s\+\zs.*' contains=string,comment +syn match version contained display 'version\s\+\zs.*' contains=string,comment +syn match prefix contained display 'prefix\s\+\zs.*' contains=string,comment +syn match retvar contained display 'retvar\s\+\zs.*' contains=string,comment +syn match devtype contained display 'type\s\+\zs.*\ze;' contains=devtypet +syn match devtypet contained display 'multiple\|singleton\|unnumbered' +syn match include contained display 'include\s\+\zs\([<"][^>"]*[>"]\|none\)\ze;' contains=string,comment +syn match trace contained display '\(entry\|error\|warn\|info\|exit\)\s\+\zs.*' contains=string,comment +syn match instances contained display 'instances\s\+\zs[0-9]*' +syn match fnname contained display '\(init\(iali[sz]e\)\?\|term\(inate\)\?\|open\|close\|read\|write\|poll\|select\|lseek\|mmap\|munmap\|msync\)\ze[ ;]' +syn match sync contained display 'sync\s\+\zs[^;]*' contains=synctype,comment +syn match synctype contained display '\(none\|sema\|mutex\)\ze;' +syn match deprecated contained display 'deprecated\s\+\zs[^;{]*' contains=ioctl,fn,device,class +syn match identifier contained display '\s\+\zs[^ ;]*' +syn match error contained display '\s\+\zs[^ ;]*' + +hi link device Statement +hi link adaptation Identifier +hi link goto Identifier +hi link state Statement +hi link statename Identifier +hi link class Statement +hi link fn Error +hi link function Statement +hi def link fnname Identifier +hi link ioctl Statement +hi def link instances Number +hi def link sync Error +hi def link devtype Error +hi def link devtypet Identifier +hi def link synctype Identifier +hi def link deprecated Error +hi def link error Error + +let b:current_syntax = "ldsl" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/chezmoi/dot_vim/syntax/log.vim b/chezmoi/dot_vim/syntax/log.vim new file mode 100644 index 00000000..183de2b3 --- /dev/null +++ b/chezmoi/dot_vim/syntax/log.vim @@ -0,0 +1,31 @@ +" Vim syntax file +" Language: Log files +" Maintainer: Jim Lawton +" Latest Revision: 2008-08-13 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syntax region msgFatal start="[ ]*FATAL" end="$" +syntax region msgError start="[ ]*ERROR" end="$" +syntax region msgError2 start=".*_ERR_.*" end="$" +syntax region msgWarn start="[ ]*WARN" end="$" +syntax region msgEntry start='[ ]*==>' end="$" +syntax region msgExit start='[ ]*<==' end="$" + +hi def link msgFatal ErrorMsg +hi def link msgError ErrorMsg +hi def link msgWarn Special +hi def link msgEntry Identifier +hi def link msgExit Identifier +hi def link msgError2 ErrorMsg + +let b:current_syntax = "messages" + +let &cpo = s:cpo_save +unlet s:cpo_save + diff --git a/vim/syntax/SVNAnnotate.vim b/chezmoi/dot_vim/syntax/vcscommit.vim similarity index 71% rename from vim/syntax/SVNAnnotate.vim rename to chezmoi/dot_vim/syntax/vcscommit.vim index d46f771e..0cd4c5ea 100644 --- a/vim/syntax/SVNAnnotate.vim +++ b/chezmoi/dot_vim/syntax/vcscommit.vim @@ -1,7 +1,6 @@ " Vim syntax file -" Language: SVN annotate output -" Maintainer: Bob Hiestand -" Remark: Used by the vcscommand plugin. +" Language: VCS commit file +" Maintainer: Bob Hiestand (bob.hiestand@gmail.com) " License: " Copyright (c) 2007 Bob Hiestand " @@ -27,14 +26,6 @@ if exists("b:current_syntax") finish endif -syn match svnName /\S\+/ contained -syn match svnVer /^\s\+\zs\d\+/ contained nextgroup=svnName skipwhite -syn match svnHead /^\s\+\d\+\s\+\S\+/ contains=svnVer,svnName - -if !exists("did_svnannotate_syntax_inits") - let did_svnannotate_syntax_inits = 1 - hi link svnName Type - hi link svnVer Statement -endif - -let b:current_syntax="svnAnnotate" +syntax region vcsComment start="^VCS: " end="$" +highlight link vcsComment Comment +let b:current_syntax = "vcscommit" diff --git a/vimrc b/chezmoi/dot_vimrc similarity index 85% rename from vimrc rename to chezmoi/dot_vimrc index 3781ab68..98b85c16 100644 --- a/vimrc +++ b/chezmoi/dot_vimrc @@ -1,11 +1,22 @@ " ######################################################################## " # VI text editor setup " ######################################################################## -execute pathogen#infect() + +" NOTE: make sure vim is actually installed, and that you're not trying +" to run this in vi! set shell=/bin/bash +set term=linux + +" set paste +" set number -set term=screen +" set our tabs to four spaces +set ts=4 +" set smartindent +set tabstop=4 +set shiftwidth=4 +set expandtab " turn syntax highlighting on by default syntax on @@ -18,42 +29,26 @@ set ai set nocompatible " turn on the "visual bell" - which is much quieter than the "audio blink" -set vb +set visualbell +set t_vb= + +" disable screen restoring +set t_ti= t_te= " automatically show matching brackets. works like it does in bbedit. set showmatch " make that backspace key work the way it should -"set backspace=indent,eol,startset +" set backspace=indent,eol,start set backspace=indent,eol set expandtab shiftwidth=4 tabstop=4 filetype off " required! -set rtp+=~/.vim/bundle/vundle/ -call vundle#rc() - " use `:W` to sudo save a file if you forget to `sudo vim` the file command W w !sudo tee % > /dev/null -" let Vundle manage Vundle -" required! -Bundle 'gmarik/vundle' - -" My Bundles here: -" -" original repos on github -Bundle 'tpope/vim-fugitive' -Bundle 'Lokaltog/vim-easymotion' -Bundle 'rstacruz/sparkup', {'rtp': 'vim/'} -" vim-scripts repos -Bundle 'L9' -Bundle 'FuzzyFinder' -" non github repos -Bundle 'git://git.wincent.com/command-t.git' -" ... - filetype plugin indent on " required! "let g:syntastic_enable_signs=1 @@ -64,16 +59,6 @@ filetype plugin indent on " required! "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* -" -" Brief help -" :BundleList - list configured bundles -" :BundleInstall(!) - install(update) bundles -" :BundleSearch(!) foo - search(or refresh cache first) for foo -" :BundleClean(!) - confirm(or auto-approve) removal of unused bundles -" -" see :h vundle for more details or wiki for FAQ -" NOTE: comments after Bundle command are not allowed.. - " Syntax highlighting only when vim-common is there if has("mouse_gpm") && filereadable("/usr/share/vim/syntax/syntax.vim") syntax on filetype on @@ -141,12 +126,8 @@ augroup resCur autocmd BufWinEnter * call ResCur() augroup END -" Darwin/Fusion log files. au BufNewFile,BufRead *.log setf logs -" SVN commit messages. -au BufNewFile,BufRead svn-commit.* setf svn - " Set some sensible defaults for editing C-files augroup cprog " Remove all cprog autocommands @@ -168,7 +149,7 @@ augroup pyprog " When starting to edit a file: " For *.py set formatting of comments and set indenting on. " Don't change the order, it's important that the line with * comes first. - autocmd BufRead *.py set expandtab shiftwidth=4 tabstop=4 + autocmd BufRead *.py set expandtab shiftwidth=4 tabstop=4 augroup END " Also, support editing of gzip-compressed files. DO NOT REMOVE THIS! @@ -220,9 +201,24 @@ augroup bzip2 autocmd FileAppendPre *.bz2 !mv :r autocmd FileAppendPost *.bz2 !mv :r autocmd FileAppendPost *.bz2 !bzip2 -9 --repetitive-best :r + + autocmd FileType make setlocal noexpandtab augroup END autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,( endif " has ("autocmd") +" Use terminals bracketed paste mode to set/unset Vims paste mode when you paste. +" https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode +let &t_SI .= "\[?2004h" +let &t_EI .= "\[?2004l" + +inoremap [200~ XTermPasteBegin() + +function! XTermPasteBegin() + set pastetoggle=[201~ + set paste + return "" +endfunction + diff --git a/xxdiffrc b/chezmoi/dot_xxdiffrc similarity index 100% rename from xxdiffrc rename to chezmoi/dot_xxdiffrc diff --git a/chezmoi/encrypted_dot_gitidentity-personal.age b/chezmoi/encrypted_dot_gitidentity-personal.age new file mode 100644 index 00000000..8f39a8e6 --- /dev/null +++ b/chezmoi/encrypted_dot_gitidentity-personal.age @@ -0,0 +1,12 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4dGZvSkJuQ24yYjU5SXZa +S2VhUTF1MDJMb3cyMWorOXpTcHZTY1pHSUdFCmtES3hLbHJiNmFjTE5FRnlqWGlU +OVF0cTBWTnZuMlVrY1FUUXVQQ3dwMVUKLS0tIEFVSFM3cHJYd1FMMXY1RDdaZ1pE +QnRCTUx1cE5KOTVOSWJSMmE0OUF6ZG8KkhH7YVDyKfZuNDsEo7xdz6IWTmmFKxaC +EAvAMVWk/R4+nn120KU8cL/gS9t2Pgf5PtwMx1biTioP38ufueLHvT3i7DNeoiuP +mkQOq06j9vqcqx0uRjxDiksG2SVbrpHmFskDyngB36119/+puH4y6dihczxxDmBf +Qv4qbcx8Tox7WI/NPziO/XctznZ3eJI5Rtcwgz12fdS6eZI02MT4GoRjEuMSb/BD +xon13nvd+bIUVnpy5ZmiykxTrK6Fj58g3ca7YE8yK+7yZsWautd70un0jtCqCloG +SvWxN7R0BoVRryB0yGauzbWv/qRZCACVLSXjY8fOnVHNAq3nnV5eyjfOnObT/yAa +bg9c9jMpaGT9WfkzWHO/YHbK1hfv/JWDKM1rxsXJMkf45Ck6NjUxZA== +-----END AGE ENCRYPTED FILE----- diff --git a/chezmoi/encrypted_dot_gitidentity-work.age b/chezmoi/encrypted_dot_gitidentity-work.age new file mode 100644 index 00000000..771259c0 --- /dev/null +++ b/chezmoi/encrypted_dot_gitidentity-work.age @@ -0,0 +1,15 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVKy9kemZaWVFFL2lVN0w1 +RGlEOTgwWWY2d2NoQjlQZnBXSVFtWnJVajFBCkx3YVVhbm9Ic1NWRGtSNENFQ3U1 +Y3ZCbjBxem1GNU1VZlFDNEVXTmIweFUKLS0tIHRldWNMQlNaZFJHOGYreDkvNnN1 +OUM3NzNIMXh3VTVENStDeG4rK3BMU1kKnU9UwwwZcFTSRXtGuap749PhzF6smfYO ++jbk8Q+LnGZOzK6VkhPLFQGGN7ZYb05NSVf8QuBEVLjFsmWnlxWUrITaRhP3DZK1 +/y5Nl8nyqfKCcdYdw3mU3chZj715fW0l5/qr+GSqo/+Iwg4st7hjKtJRFt9IN1Ra +gWA0ecrK6hLeuEzzyJuYCmwQSF/bHm3mnhRyN2MN4o6cgQ4WwHGbpCHqybQlZdgn +Am3Vlhlxsld8JzPpo88TW2g486Y1JomLCvzGpHb7qXyXsXYCgemSkh86SSjVyNuu +xCPQjH/a5WXH0WNs5mhv75UqjY40qXDoN94G9PVoJlYk04B2ZPKDAQAe81z63GC6 +gTQsKS7JMkjd4VDF2b8Byv2Q1Nc+JFlTu7Pl3XOEDArKxeiqhJNw0ZKN9nq21okL +GLXwNyj/tNPBc1d7yQh9Nt+U1tfYITZfAIwHBPeZw+85pBrKXm4eh9ZFUFMdQdBn +INGzD8EDuxwLARIyvU2e8Xic4B8hs7kmz+AN1n3KZ6b1Licx72LxRTKrgjwZ727c +GWmMl2bANtN0Uv8al4kZ1mlanUoWvtr7duNHgZ4A2AV3/bO1pwKgbg== +-----END AGE ENCRYPTED FILE----- diff --git a/chezmoi/encrypted_private_dot_shellvars.age b/chezmoi/encrypted_private_dot_shellvars.age new file mode 100644 index 00000000..f39c5445 --- /dev/null +++ b/chezmoi/encrypted_private_dot_shellvars.age @@ -0,0 +1,16 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYZ2hDL2ltYU10QVBHM2lH +WnhuaDkzSkFmRlpIUlVsOEU5VFVUeUtJMVg0CjZUWi92SFFxejlERlRuMzI5SjVX +NVFNMnNsVDhKUTBvTlNGblVHT090OFkKLS0tIFNRUGxISW1FeU1jNURhTnBidndr +MUJmN3MzL25KSmpSd2QrZFhQQXhVdDAKZY4uLob93e3LfBTPTJLK9+G6zLim0t2O +pEVOR/k0R9f+GnV2k74ZnHpScfxHB3+NYFbXRj7sUa4a7cxcJcz/imgIL2IlQHXu +44Wg8eEEYkAqOAr231x2ofeV6LEp4DzBii9dBvs31GGk8HdY5uMb8BzLUbwKv3jT +8y+FTB6TComEBKVI2+SFgOf0MeNBI5ro0V7UGjHFXa42GssEUiFrqRTtlI+w4eSw +iIphjxNDDxVrqs1HoMiAc+tsTn2v9roY2lHvcfnA5Z/1TMRYuxxV1drRN7Ebwoz1 +ILgWzjgTK4wZfIfo8yb80aB9jKtRTQJ3c+QRubf4aRi1XOOWMXKVR21ZJ9NEi842 +R0RjcN5eQszDjSZmvoE7YOzCy2OSA/EoLBAzLSnhMooAeXmoqRWzdp7pPKFjTKD8 +OSM+ynjIg+TPTcl8TsCkP95naKFH3xgl+Rtk5cESpRMgGuD+qr9y1IJHc1i+PEzo +ZjdWdmT1WDq96VzC2LQKIKKEI+Rskcg07tlTacYCk91I8A+VdnC3LvHkpdUdX9dY +kdeJOaKuPW2xkTJCcNCot50hOYpFg4vV3pP082rOb0DdhpksPC7RWBQio6bENmWM +xrWZTmECVQppY8elOu+Bwa+ZJjK+oQX6Uim+Ukg1yyEO6NDWsWnCoA== +-----END AGE ENCRYPTED FILE----- diff --git a/chezmoi/key.txt.age b/chezmoi/key.txt.age new file mode 100644 index 00000000..c1bbeb01 --- /dev/null +++ b/chezmoi/key.txt.age @@ -0,0 +1,10 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBBbUhCYnRhMEkrckhtdGtj +cmE0c2p3IDE4ClEyQTFUZW9NV3hKMFk1QmRWekcxWlBubktLTXAvNW43SVovbWRv +RUM0Q2MKLS0tIDlXbXRhMDcwbkV6RGlYUG53M0N1aUpvN1Y2YVNpeWwwSHd1L2lp +UXNrSG8K+uS2PSsg+4JYD7F9NAZjqVhLqajFtnEfI4RMwq0c48VnumKR+Kohqfvj +t6+cPbdvxdQVVfQfQAia11V7FwMX8LBBYJVohe6Fys+qJ5GR2i8MoNAoxf2CjOjk +oU57VS0xzSFx94Jmre+EPs3J+ip0NRNuPGX1mACXx7qFJ/tIKtPg0PNU6GnieECX +v85YlTVAA+EB7eZakIHH6Qm3sL6zt0k73lzzQsNYZ+/n+UrR8eSLlvcZEO8kMhFP +F2rBEcLW+LHP63g3uzaNsebEWVIWMBB5ZVOoNVR0 +-----END AGE ENCRYPTED FILE----- diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age new file mode 100644 index 00000000..a1f2e94e --- /dev/null +++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age @@ -0,0 +1,35 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1WkViSW1UNituSTdYV0cr +ZXZvZUcya3NMQ0NiZFFxcWhlVUtuZjMzWFNrCkRkM1NyZHQ0MDc3R09PTk9CclN4 +MU54cDE2eU9mNjJwb1NCYWU5S0VXOE0KLS0tIE9tWkNvMWxLSVprYjBMVVY1enh3 +MG5teVJsV1l3ZGQzK1prc2JwaDB5LzQKwUmoLrXitbJY08jJ/3/2mvvwZ7ngR7Zg +D3yTiaISqwyAHu4vvWA6FNxe/rogWLxxfozy7OJgrRjn/ky9TbYckB/uKXwNO/81 +24Tb88Iq8g7LJ4Ag6rgIR7xQ86EHeC7BkA/r0hYLWLpQCUb2KDSaD7L7069ZMKAQ +iUjZc+qIUyyrdIJdgExV08zs5+jsw5zlPmDVPlg3fci3C3+RkM5lO+8LGivX2POc +ef27bsfERb7ZJcA6KwqZ4vB0886iBZ/ew2NrFKbWsm3RMfK3Im+LT2L9szt5uR95 +95fe1kVzoMoaMtr6ags0YEdG7iecMspULKd44KVYX05DK2QQae+PpnA2kqKSqDCQ +CneodJox0eahkbMfsFc2VkUr8uSlPhpe+WJq0bkmgGQdYljP1NNNqHvj9rYeoTMf +KZxNLzXRbE5cs8rZ7Anksv4FQ1S3iJj7f+c0ddLkKJUw2A3GewSTrQPTkfsHsxOO +T/g0m4s1Q23OX9A4lyZzn0h0YTKuKrQhP5nPlzDPNK3ulCxru3ELecsby7mX2brf +iIecP9Ed/toER/5DjOqVidYQts82t+i66WvVKfrnJntmokde02XnmhYxaDvsgY2L +yO+zWy/TmEy+hWOvLMzdWlQ4rerikNMTmuxHKq3tDdP8hw+qqSqIUZuj5rTA17vP +RJtObipwfjn0ceUZWsC3CB1jANDnaFWui+JQxJcLFAXqcCf/PVFpomxsdw8AxvDb +id7JPEAP9rzh2tk193U3LtGvjNvupQAbh5dBwYVeMRPA0zOkH3xXartZHNjfurG1 +rKVGR4nNoFaMAyr8a2fWgwt46zIIQsUSoYhfJLdVy6eplYKSQ+JaksASfUnJAbgA +PINQqal4VzyGlE2ZRqZHtfDDujfbw3xpCLhLf55bU9xpmD+HOqABcBbw7+U42aKz +Pq2BlFbO+jTUzLLonI3GK32JStmaga7cayxFxDgjcf4tXzz0IkJAsFLHhsqcl23s +jmyTni91j7WuLlexDpsJo5cqaD8bRdtw/jEvZceB+B3dFA/QiQtaVtvdCHRAeaeO +k3r0AEFLeE1Ji5tr0kohzw0pCOQ8iXj0tVZnfOaiAIV5KJIMuYQ7E0SX+P97yD47 +Bsf7zMHL4HjnuDdLzvT81BzHXBxD6MHZvdvJ1WNSfyFwfKVFNwLoSfhDTyTc7WvE +WafK8KcJ9IqVVHM++r9CxScMfXDEmVl9ZBebxLmxpa/WKs3eXiysYIl/7gISxkB/ +5vw9rHMLdqUwRpNt14ETXEto9+xxl46lVhcf+ps8RyJw1O4aTxKlargCVPOZboTs +//7Ba/EGu4sBTgdW8nDW/vJJaSgviBdzkIXzlrcNqr07lJplbD3Q2a+Xxw5ZUZck +3lnXUY/6yZNIAl8W2pkcMyHZT+YgQ097WBPjrr/O853MoDYObzDZH6192d4TzTDm +PhBUoZXRRFjjSy43+TkVLgDidyqEg2oajG49F1wEbbuAYEiDwZraFxEBxrmv3ukx +X5guh1yTMM7THv5VMusCttLU2Z0QGrLaEdz7LZOeRrdrLydRrQtD2P0SSnzb57qK +tgGeFg4dILDykM7hJmkBqftO3HqonGHWzz3NlUx3BZgxPG1+6PIQQy0uN4/rCPFX +hhxUp+acES7PWrqPtwuLXm42//rOCeRB24KYJ+G8mHqGyV6OVGlDdcS+Fyf7o5Ra +nvdJAvTWfVZu09BX1uxsejWEHEcVwd9F8O2r3uC0fj6niCxkIfFBJLKfrQa7PtDR ++BBtdClOvJVpwLImJA8hjqsRRCdQRyvf9QRo2OZ1cqIeGDlzgY1/Rk0Ym4hpUB6I +e9why+Jrzg== +-----END AGE ENCRYPTED FILE----- diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config new file mode 100644 index 00000000..aee50d53 --- /dev/null +++ b/chezmoi/private_dot_config/ghostty/config @@ -0,0 +1,54 @@ +# This is the configuration file for Ghostty. +# +# This template file has been automatically created at the following +# path since Ghostty couldn't find any existing config files on your system: +# +# /Users/james.lawton/Library/Application Support/com.mitchellh.ghostty/config +# +# The template does not set any default options, since Ghostty ships +# with sensible defaults for all options. Users should only need to set +# options that they want to change from the default. +# +# Run `ghostty +show-config --default --docs` to view a list of +# all available config options and their default values. +# +# Additionally, each config option is also explained in detail +# on Ghostty's website, at https://ghostty.org/docs/config. + +# Config syntax crash course +# ========================== +# # The config file consists of simple key-value pairs, +# # separated by equals signs. +# font-family = Iosevka +# window-padding-x = 2 +# +# # Spacing around the equals sign does not matter. +# # All of these are identical: +# key=value +# key= value +# key =value +# key = value +# +# # Any line beginning with a # is a comment. It's not possible to put +# # a comment after a config option, since it would be interpreted as a +# # part of the value. For example, this will have a value of "#123abc": +# background = #123abc +# +# # Empty values are used to reset config keys to default. +# key = +# +# # Some config options have unique syntaxes for their value, +# # which is explained in the docs for that config option. +# # Just for example: +# resize-overlay-duration = 4s 200ms + +# Quick terminal: +keybind = global:cmd+grave_accent=toggle_quick_terminal +quick-terminal-position = bottom + +# Shell integration for SSH: +shell-integration-features = ssh-terminfo,ssh-env + +# Enable auto copy of selected text +copy-on-select = clipboard + diff --git a/chezmoi/private_dot_config/opencode/.gitignore b/chezmoi/private_dot_config/opencode/.gitignore new file mode 100644 index 00000000..ba59d83a --- /dev/null +++ b/chezmoi/private_dot_config/opencode/.gitignore @@ -0,0 +1,3 @@ +node_modules +package.json +bun.lock diff --git a/chezmoi/private_dot_config/opencode/.keep b/chezmoi/private_dot_config/opencode/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/opencode/opencode.json b/chezmoi/private_dot_config/opencode/opencode.json new file mode 100644 index 00000000..4ec6a5d0 --- /dev/null +++ b/chezmoi/private_dot_config/opencode/opencode.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://opencode.ai/config.json", + "formatter": false + "permission": { + "*": "ask", + "bash": { + "*": "ask", + "rm *": "deny", + "grep *": "allow" + }, + "edit": { + "*": "ask", + "*.md": "allow" + } + } +} diff --git a/chezmoi/private_dot_config/private_atuin/private_config.toml b/chezmoi/private_dot_config/private_atuin/private_config.toml new file mode 100644 index 00000000..f541884c --- /dev/null +++ b/chezmoi/private_dot_config/private_atuin/private_config.toml @@ -0,0 +1,298 @@ +## where to store your database, default is your system data directory +## linux/mac: ~/.local/share/atuin/history.db +## windows: %USERPROFILE%/.local/share/atuin/history.db +# db_path = "~/.history.db" + +## where to store your encryption key, default is your system data directory +## linux/mac: ~/.local/share/atuin/key +## windows: %USERPROFILE%/.local/share/atuin/key +# key_path = "~/.key" + +## where to store your auth session token, default is your system data directory +## linux/mac: ~/.local/share/atuin/session +## windows: %USERPROFILE%/.local/share/atuin/session +# session_path = "~/.session" + +## date format used, either "us" or "uk" +# dialect = "us" +dialect = "uk" + +## default timezone to use when displaying time +## either "l", "local" to use the system's current local timezone, or an offset +## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]" +## for example: "+9", "-05", "+03:30", "-01:23:45", etc. +# timezone = "local" + +## enable or disable automatic sync +auto_sync = true + +## enable or disable automatic update checks +update_check = false + +## address of the sync server +# sync_address = "https://api.atuin.sh" + +## how often to sync history. note that this is only triggered when a command +## is ran, so sync intervals may well be longer +## set it to 0 to sync after every command +# sync_frequency = "10m" + +## which search mode to use +## possible values: prefix, fulltext, fuzzy, skim +# search_mode = "fuzzy" + +## which filter mode to use by default +## possible values: "global", "host", "session", "session-preload", "directory", "workspace" +## consider using search.filters to customize the enablement and order of filter modes +# filter_mode = "global" + +## With workspace filtering enabled, Atuin will filter for commands executed +## in any directory within a git repository tree (default: false). +## +## To use workspace mode by default when available, set this to true and +## set filter_mode to "workspace" or leave it unspecified and +## set search.filters to include "workspace" before other filter modes. +# workspaces = false + +## which filter mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "filter_mode" +## leave unspecified to use same mode set in "filter_mode" +# filter_mode_shell_up_key_binding = "global" +filter_mode_shell_up_key_binding = "directory" + +## which search mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "search_mode" +## leave unspecified to use same mode set in "search_mode" +# search_mode_shell_up_key_binding = "fuzzy" + +## which style to use +## possible values: auto, full, compact +# style = "auto" + +## the maximum number of lines the interface should take up +## set it to 0 to always go full screen +# inline_height = 0 + +## the maximum number of lines the interface should take up +## when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "inline_height" +# inline_height_shell_up_key_binding = 0 + +## Invert the UI - put the search bar at the top , Default to `false` +# invert = false + +## enable or disable showing a preview of the selected command +## useful when the command is longer than the terminal width and is cut off +# show_preview = true + +## what to do when the escape key is pressed when searching +## possible values: return-original, return-query +# exit_mode = "return-original" + +## possible values: emacs, subl +# word_jump_mode = "emacs" + +## characters that count as a part of a word +# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +## number of context lines to show when scrolling by pages +# scroll_context_lines = 1 + +## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts +## alt-0 .. alt-9 +# ctrl_n_shortcuts = false + +## Show numeric shortcuts (1..9) beside list items in the TUI +## set to false to hide the moving numbers if you find them distracting +# show_numeric_shortcuts = true + +## default history list format - can also be specified with the --format arg +# history_format = "{time}\t{command}\t{duration}" +history_format = "{directory}\t{time}\t{command}\t{duration}" + +## prevent commands matching any of these regexes from being written to history. +## Note that these regular expressions are unanchored, i.e. if they don't start +## with ^ or end with $, they'll match anywhere in the command. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# history_filter = [ +# "^secret-cmd", +# "^innocuous-cmd .*--secret=.+", +# ] + +## prevent commands run with cwd matching any of these regexes from being written +## to history. Note that these regular expressions are unanchored, i.e. if they don't +## start with ^ or end with $, they'll match anywhere in CWD. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# cwd_filter = [ +# "^/very/secret/area", +# ] + +## Configure the maximum height of the preview to show. +## Useful when you have long scripts in your history that you want to distinguish +## by more than the first few lines. +# max_preview_height = 4 + +## Configure whether or not to show the help row, which includes the current Atuin +## version (and whether an update is available), a keymap hint, and the total +## amount of commands in your history. +# show_help = true + +## Configure whether or not to show tabs for search and inspect +# show_tabs = true + +## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin +## tab, such as Search or Inspector, and other tabs you may wish to see. This will +## only be hidden if there are fewer than this count of lines available, and does not affect the use +## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines). +## This is ignored except in `compact` mode. +# auto_hide_height = 8 + +## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include +## 1. AWS key id +## 2. Github pat (old and new) +## 3. Slack oauth tokens (bot, user) +## 4. Slack webhooks +## 5. Stripe live/test keys +# secrets_filter = true + +## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit. +# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise. +enter_accept = true +search_mode = "daemon-fuzzy" + +## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line. +# command_chaining = false + +## Defaults to "emacs". This specifies the keymap on the startup of `atuin +## search`. If this is set to "auto", the startup keymap mode in the Atuin +## search is automatically selected based on the shell's keymap where the +## keybinding is defined. If this is set to "emacs", "vim-insert", or +## "vim-normal", the startup keymap mode in the Atuin search is forced to be +## the specified one. +# keymap_mode = "auto" + +## Cursor style in each keymap mode. If specified, the cursor style is changed +## in entering the cursor shape. Available values are "default" and +## "{blink,steady}-{block,underline,bar}". +# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } + +# network_connect_timeout = 5 +# network_timeout = 5 + +## Timeout (in seconds) for acquiring a local database connection (sqlite) +# local_timeout = 5 + +## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. +## Alternatively, set env NO_MOTION=true +# prefers_reduced_motion = false + +[stats] +## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl +# common_subcommands = [ +# "apt", +# "cargo", +# "composer", +# "dnf", +# "docker", +# "dotnet", +# "git", +# "go", +# "ip", +# "jj", +# "kubectl", +# "nix", +# "nmcli", +# "npm", +# "pecl", +# "pnpm", +# "podman", +# "port", +# "systemctl", +# "tmux", +# "yarn", +# ] + +## Set commands that should be totally stripped and ignored from stats +# common_prefix = ["sudo"] + +## Set commands that will be completely ignored from stats +# ignored_commands = [ +# "cd", +# "ls", +# "vi" +# ] + +[keys] +# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry. +# scroll_exits = true +# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character +# exit_past_line_start = true +# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified. +# accept_past_line_end = true +# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified. +# accept_past_line_start = false +# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line. +# accept_with_backspace = false + +[sync] +# Enable sync v2 by default +# This ensures that sync v2 is enabled for new installs only +# In a later release it will become the default across the board +records = true + +[preview] +## which preview strategy to use to calculate the preview height (respects max_preview_height). +## possible values: auto, static +## auto: length of the selected command. +## static: length of the longest command stored in the history. +## fixed: use max_preview_height as fixed height. +# strategy = "auto" + +[daemon] +enabled = true +autostart = true +## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon` +# enabled = false + +## How often the daemon should sync in seconds +# sync_frequency = 300 + +## The path to the unix socket used by the daemon (on unix systems) +## linux/mac: ~/.local/share/atuin/atuin.sock +## windows: Not Supported +# socket_path = "~/.local/share/atuin/atuin.sock" + +## Use systemd socket activation rather than opening the given path (the path must still be correct for the client) +## linux: false +## mac/windows: Not Supported +# systemd_socket = false + +## The port that should be used for TCP on non unix systems +# tcp_port = 8889 + +# [theme] +## Color theme to use for rendering in the terminal. +## There are some built-in themes, including the base theme ("default"), +## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your +## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or +## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and +## the string values as lowercase entries from this list: +## https://ogeon.github.io/docs/palette/master/palette/named/index.html +## If you provide a custom theme file, it should be called "NAME.toml" and the theme below +## should be the stem, i.e. `theme = "NAME"` for your chosen NAME. +# name = "autumn" + +## Whether the theme manager should output normal or extra information to help fix themes. +## Boolean, true or false. If unset, left up to the theme manager. +# debug = true + +[search] + +[ai] +enabled = true +## The list of enabled filter modes, in order of priority. +## The "workspace" mode is skipped when not in a workspace or workspaces = false. +## Default filter mode can be overridden with the filter_mode setting. +# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ] diff --git a/chezmoi/private_dot_config/private_fish/completions/.keep b/chezmoi/private_dot_config/private_fish/completions/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/private_fish/conf.d/.keep b/chezmoi/private_dot_config/private_fish/conf.d/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish new file mode 100644 index 00000000..87516d54 --- /dev/null +++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish @@ -0,0 +1,54 @@ +abbr --add hexdumpfile 'od -h' + +abbr --add gpl 'git pull' +abbr --add gps 'git push' + +# Directory listings +# -G Add colors to ls +# -l Long format +# -h Short size suffixes (B, K, M, G, P) +# -p Postpend slash to folders +# abbr --add ls 'ls -G -h -p ' +# abbr --add ll 'ls -l -G -h -p ' + +abbr --add grep 'grep --color=auto --exclude=.git' +abbr --add egrep 'egrep --color=auto --exclude=.git' +abbr --add fgrep 'fgrep --color=auto --exclude=.git' + +# abbr --add rm 'rm -i' +# abbr --add cp 'cp -i' +# abbr --add mv 'mv -i' + +# abbr --add now 'date +"%Y%m%d-%H%M%S"' +abbr --add minicom 'minicom -C minicom-`now`.log' +abbr --add pgrep 'ps auxww | grep \!* | grep -v grep' +abbr --add a2ps 'a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color' +abbr --add gatekeeper 'sudo xattr -d com.apple.quarantine' + +# On Mac OSX, uuidgen produces uppercase. +abbr --add uuidgen 'uuidgen | tr "[:upper:]" "[:lower:]"' + +# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli) +abbr --add jfullboard "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" +abbr --add jtodo "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\"" +abbr --add jbacklog "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\"" +abbr --add jreview "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\"" +abbr --add jwip "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\"" +abbr --add jblocked "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\"" +abbr --add jkanban "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" + +# Ping Artifactory. +abbr --add afping 'curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping' + +# Use zoxide instead of cd +abbr --add cd 'z' + +# Use bat instead of cat +abbr --add cat 'bat' + +# Use ls replacement eza to list the directory tree +abbr --add ll 'eza -lhT --git' + +# gs abbreviation for git-spice +abbr --add gs 'git-spice' + diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish new file mode 100644 index 00000000..74b245cb --- /dev/null +++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish @@ -0,0 +1,7 @@ +fish_add_path --global --move --path $HOMEBREW_PREFIX/bin $HOMEBREW_PREFIX/sbin +fish_add_path --global --move --path /usr/local/sbin +fish_add_path --global --move --path /opt/homebrew/opt/gnu-sed/libexec/gnubin +fish_add_path --global --move --path /opt/homebrew/opt/make/libexec/gnubin +fish_add_path --global --move --path /opt/homebrew/opt/llvm/bin +fish_add_path --global --move --path $HOME/bin $HOME/.cargo/bin $GOPATH/bin +fish_add_path --global --move --path /Applications/Obsidian.app/Contents/MacOS diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish new file mode 100644 index 00000000..bcab4a28 --- /dev/null +++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish @@ -0,0 +1,27 @@ +export OS=$(uname -s) + +# Set the default pager to less +set -gx PAGER less +# Set less to have a default flag of -R (RAW) so color passes through +set pgx LESS "-R" + +set -gx HOSTNAME `hostname -s` +set -gx EDITOR vim +set -gx TMOUT 0 + +set -gx PYTHONSTARTUP $HOME/.pythonrc +set -gx WORKON_HOME $HOME/.virtualenvs +set -gx PIP_VIRTUALENV_BASE $WORKON_HOME +set -gx PIP_RESPECT_VIRTUALENV true +set -gx PIP_REQUIRE_VIRTUALENV true + +set -gx PYENV_ROOT $HOME/.pyenv + +set -gx GOPATH $HOME/go +set -gx GOENV_ROOT $HOME/.goenv + +set -gx TSRC_PARALLEL_JOBS 8 + +set -gx HOMEBREW_NO_ENV_HINTS 1 + +source $HOME/.shellvars diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish new file mode 100644 index 00000000..1001c07f --- /dev/null +++ b/chezmoi/private_dot_config/private_fish/config.fish @@ -0,0 +1,47 @@ +/opt/homebrew/bin/brew shellenv | source + +fish_add_path $HOME/bin +fish_add_path $HOME/.local/bin +fish_add_path $CARGO_HOME/bin + +if status is-interactive + # Commands to run in interactive sessions can go here + + # Don't be so friendly. + set fish_greeting + + # Starship transient prompt setup. + function starship_transient_rprompt_func + starship module character + end + starship init fish | source + enable_transience + + # Atuin setup. + set -x ATUIN_NOBIND true + atuin init fish | source + # Atuin keybindings to suppress -k warning + bind ctrl-r _atuin_search + bind up _atuin_bind_up + bind \eOA _atuin_bind_up + bind \e\[A _atuin_bind_up + bind -M insert ctrl-r _atuin_search + bind -M insert up _atuin_bind_up + bind -M insert \eOA _atuin_bind_up + bind -M insert \e\[A _atuin_bind_up + + # Zoxide setup. + zoxide init fish | source + + # Pyenv setup. + pyenv init - fish | source +end + +test -e {$HOME}/.iterm2/iterm2_shell_integration.fish ; and source {$HOME}/.iterm2/iterm2_shell_integration.fish + +# Disable terminal title updates in tmux +if set -q TMUX + function fish_title + # Do nothing - don't update title in tmux + end +end diff --git a/chezmoi/private_dot_config/private_fish/functions/.keep b/chezmoi/private_dot_config/private_fish/functions/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml new file mode 100644 index 00000000..5b4654ac --- /dev/null +++ b/chezmoi/private_dot_config/starship.toml @@ -0,0 +1,76 @@ +# Prompt format... +# - Directory section with blue background and light text +# - Git branch section with yellow background and dark text +# - Git status and metrics in the same yellow background +# - Clean separator between sections +# - Final space for command input +# - Disabled line break for compactness +format = """\ +$directory\ +[](fg:#3B76F0 bg:#4dff4d)\ +$git_branch\ +$git_status\ +$git_metrics\ +[](fg:#4dff4d bg:#030B16)\ +[ ]('')\ +""" + +right_format = """\ +$character\ +$cmd_duration\ +""" + +[line_break] +disabled = true + +add_newline = true + +[cmd_duration] +disabled = false +min_time = 2000 +show_milliseconds = false +format = "[  $duration ]($style)" +style = "fg:bright-white bg:18" + +[directory] +format = "[$path ]($style)" +truncate_to_repo = true +truncation_length = 3 +truncation_symbol = "…/" +style = "fg:#E4E4E4 bg:#3B76F0" + +[time] +disabled = false +format = "[$time]($style) " +style = "dimmed white" +time_format = "%T" # %R no seconds, %T seconds + +[git_branch] +disabled = false +format = '[ $symbol$branch(:$remote_branch) ]($style)' +symbol = "  " +style = "fg:#1C3A5E bg:#4dff4d" + +[git_status] +disabled = false +format = '[$all_status$ahead_behind]($style)' +style = "fg:#1C3A5E bg:#f9e71f" +ahead = '⇡${count}' +behind = '⇣${count}' +diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#1C3A5E bg:#f9e71f)' +use_git_executable = true + +[git_metrics] +disabled = true +format = "([+$added]($added_style))[]($added_style)" +added_style = "fg:#1C3A5E bg:#f9e71f" +deleted_style = "fg:bright-red bg:235" + +[character] +disabled = false +success_symbol = '[](bold green) ' +error_symbol = '[✗](bold red) ' +vimcmd_symbol = '[❮](bold fg:green)' +vimcmd_replace_one_symbol = '[❮](bold fg:lavender)' +vimcmd_replace_symbol = '[❮](bold fg:lavender)' +vimcmd_visual_symbol = '[❮](bold fg:yellow)' diff --git a/chezmoi/private_dot_config/symlink_karabiner.tmpl b/chezmoi/private_dot_config/symlink_karabiner.tmpl new file mode 100644 index 00000000..b1319a61 --- /dev/null +++ b/chezmoi/private_dot_config/symlink_karabiner.tmpl @@ -0,0 +1 @@ +{{- .chezmoi.homeDir -}}/.local/share/chezmoi/hyper-hacks/karabiner diff --git a/chezmoi/private_dot_config/zed/conversations/.keep b/chezmoi/private_dot_config/zed/conversations/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/zed/keymap.json b/chezmoi/private_dot_config/zed/keymap.json new file mode 100644 index 00000000..cf763210 --- /dev/null +++ b/chezmoi/private_dot_config/zed/keymap.json @@ -0,0 +1,32 @@ +// Zed keymap +// +// For information on binding keys, see the Zed +// documentation: https://zed.dev/docs/key-bindings +// +// To see the default key bindings run `zed: open default keymap` +// from the command palette. +[ + { + "bindings": { + "cmd-y": "editor::Redo" + } + }, + { + "context": "!ContextEditor > Editor && mode == full", + "bindings": { + "cmd-i": "assistant::InlineAssist" + } + }, + { + "context": "Workspace", + "bindings": { + // "shift shift": "file_finder::Toggle" + } + }, + { + "context": "Editor && vim_mode == insert && !menu", + "bindings": { + // "j k": "vim::SwitchToNormalMode" + } + } +] diff --git a/chezmoi/private_dot_config/zed/private_settings.json b/chezmoi/private_dot_config/zed/private_settings.json new file mode 100644 index 00000000..19ecc651 --- /dev/null +++ b/chezmoi/private_dot_config/zed/private_settings.json @@ -0,0 +1,100 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "edit_predictions": { + "provider": "copilot" + }, + "auto_update_extensions": { + "groovy": false + }, + "outline_panel": { + "dock": "right" + }, + "agent": { + "tool_permissions": { + "default": "allow" + }, + "default_profile": "write", + "default_model": { + "provider": "copilot_chat", + "model": "claude-sonnet-4.5" + }, + "model_parameters": [], + "play_sound_when_agent_done": true + }, + "buffer_font_size": 16, + "colorize_brackets": true, + "context_servers": { + // "atlassian": { + // "source": "custom", + // "command": "npx", + // "args": ["-y", "mcp-remote", "https://mcp.atlassian.com/v1/sse"], + // "env": {} + // } + }, + "file_types": { + "Make": ["Makefile.include", "Makefile.env"], + "Groovy": ["Jenkinsfile", "Jenkinsfile.*"] + }, + "git": { + "blame": { + "show_avatar": true + } + }, + "languages": { + "JSON": { + "format_on_save": "off" + }, + "Markdown": { + // Wrap text according to the previously defined preferred line length. + "soft_wrap": "preferred_line_length", + // do not remove any trailing whitespace since line breaks in + // lists (without adding a new punctuation) rely on whitespaces. + "remove_trailing_whitespace_on_save": false + }, + "Python": { + "language_servers": ["ruff"], + "format_on_save": "on", + "formatter": [ + { "code_action": "source.organizeImports.ruff" }, + { "code_action": "source.fixAll.ruff" }, + { + "language_server": { + "name": "ruff" + } + } + ] + }, + "YAML": { + "prettier": { + "allowed": true + } + } + }, + // Set a preferred line lenth, showing a vertical gutter bar + "preferred_line_length": 160, + // Decrease the horizontal indent size of files & folders in the project + // panel to avoid horizontal scrolling + "project_panel": { + "indent_size": 16 + }, + // Show file type icons in the tab bar. Also color them according to the git status. + "tabs": { + "file_icons": true, + "git_status": true + }, + "theme": { + "mode": "system", + "light": "One Light", + "dark": "One Dark Pro" + }, + "terminal": { "font_family": "MesloLGS NF" }, + "ui_font_size": 16, + "use_system_window_tabs": true +} diff --git a/chezmoi/private_dot_config/zed/prompts/prompts-library-db.0.mdb/.keep b/chezmoi/private_dot_config/zed/prompts/prompts-library-db.0.mdb/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/private_dot_config/zed/themes/.keep b/chezmoi/private_dot_config/zed/themes/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl b/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl new file mode 100644 index 00000000..7c0a2ab8 --- /dev/null +++ b/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl @@ -0,0 +1,10 @@ +#!{{ lookPath "sh" }} + +{{ if eq .chezmoi.os "darwin" -}} + +grep "fish" /etc/shells >/dev/null || echo /opt/homebrew/bin/fish | cat - /etc/shells | sudo tee /etc/shells > /dev/null + +sudo chsh -s /opt/homebrew/bin/fish +chsh -s /opt/homebrew/bin/fish + +{{ end -}} diff --git a/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl b/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl new file mode 100644 index 00000000..dbffe10e --- /dev/null +++ b/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ ! -f "${HOME}/.config/chezmoi/key.txt" ]; then + mkdir -p "${HOME}/.config/chezmoi" + chezmoi age decrypt --output "${HOME}/.config/chezmoi/key.txt" --passphrase "{{ .chezmoi.sourceDir }}/key.txt.age" + chmod 600 "${HOME}/.config/chezmoi/key.txt" +fi diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl new file mode 100644 index 00000000..26ac431c --- /dev/null +++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl @@ -0,0 +1,12 @@ +{{ if eq .chezmoi.os "darwin" -}} +#!/bin/bash + +# Hash of the Brewfile, used to determine if we need to rerun this script. +# Brewfile hash: {{ include "Brewfile" | sha256sum }} + +# Install packages via Homebrew Bundle. +# NOTE: --no-upgrade to avoid upgrading existing packages, which can fail in the case of MAS apps. +# NOTE: ignore errors, since MAS often fails. +set -o pipefail +brew bundle --no-upgrade --file={{ joinPath .chezmoi.sourceDir "Brewfile" | quote }} || true +{{ end -}} diff --git a/chezmoi/run_onchange_install_python.sh.tmpl b/chezmoi/run_onchange_install_python.sh.tmpl new file mode 100644 index 00000000..93b38565 --- /dev/null +++ b/chezmoi/run_onchange_install_python.sh.tmpl @@ -0,0 +1,33 @@ +{{ if eq .chezmoi.os "darwin" -}} +#!/bin/bash + +if ! command -v pyenv &> /dev/null +then + echo "pyenv could not be found, installing pyenv..." + + brew update + brew install pyenv + + # Initialize pyenv in the current shell session + if command -v pyenv &> /dev/null + then + echo "pyenv installed successfully." + eval "$(pyenv init --path)" + eval "$(pyenv init -)" + else + echo "Failed to install pyenv." + exit 1 + fi +else + echo "pyenv is already installed." +fi + +pyenv install -s 3.13 +pyenv global 3.13 + +pipx install black +pipx install pre-commit +pipx install pipenv +pipx install tsrc + +{{ end -}} diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl new file mode 100644 index 00000000..d9e8d001 --- /dev/null +++ b/chezmoi/run_onchange_install_rust.sh.tmpl @@ -0,0 +1,32 @@ +{{ if eq .chezmoi.os "darwin" -}} +#!/bin/bash + +# Assuming rustup is already installed, install the required Rust toolchains and components. + +rustup install stable +rustup install nightly + +rustup component add rustfmt +rustup component add clippy +rustup component add rust-analyzer +rustup component add llvm-tools-preview + +cargo install cargo-audit +cargo install cargo-deps +cargo install cargo-fuzz +cargo install cargo-license +cargo install cargo-llvm-cov +cargo install cargo-outdated +cargo install cargo-semver --vers 1.0.0-alpha.3 +cargo install cargo-tarpaulin +cargo install cargo-udeps +cargo install cargo-warloc +cargo install cargo-workspaces +cargo install cargo-xwin +cargo install cargo2junit +cargo install cross +cargo install cross-util +cargo install gitoxide +cargo install oxdraw + +{{ end -}} diff --git a/chezmoi/run_onchange_update-crontab.sh.tmpl b/chezmoi/run_onchange_update-crontab.sh.tmpl new file mode 100644 index 00000000..d84ddfeb --- /dev/null +++ b/chezmoi/run_onchange_update-crontab.sh.tmpl @@ -0,0 +1,3 @@ +#!/bin/sh +# crontab hash: {{ include "crontab" | sha256sum }} +crontab {{ joinPath .chezmoi.sourceDir "crontab" | quote }} diff --git a/colors b/colors deleted file mode 100644 index 32b80cad..00000000 --- a/colors +++ /dev/null @@ -1,74 +0,0 @@ -# From: https://wiki.archlinux.org/index.php/Color_Bash_Prompt - -# Reset -Color_Off='\e[0m' # Text Reset - -# Regular Colors -Black='\e[0;30m' # Black -Red='\e[0;31m' # Red -Green='\e[0;32m' # Green -Yellow='\e[0;33m' # Yellow -Blue='\e[0;34m' # Blue -Purple='\e[0;35m' # Purple -Cyan='\e[0;36m' # Cyan -White='\e[0;37m' # White - -# Bold -BBlack='\e[1;30m' # Black -BRed='\e[1;31m' # Red -BGreen='\e[1;32m' # Green -BYellow='\e[1;33m' # Yellow -BBlue='\e[1;34m' # Blue -BPurple='\e[1;35m' # Purple -BCyan='\e[1;36m' # Cyan -BWhite='\e[1;37m' # White - -# Underline -UBlack='\e[4;30m' # Black -URed='\e[4;31m' # Red -UGreen='\e[4;32m' # Green -UYellow='\e[4;33m' # Yellow -UBlue='\e[4;34m' # Blue -UPurple='\e[4;35m' # Purple -UCyan='\e[4;36m' # Cyan -UWhite='\e[4;37m' # White - -# Background -On_Black='\e[40m' # Black -On_Red='\e[41m' # Red -On_Green='\e[42m' # Green -On_Yellow='\e[43m' # Yellow -On_Blue='\e[44m' # Blue -On_Purple='\e[45m' # Purple -On_Cyan='\e[46m' # Cyan -On_White='\e[47m' # White - -# High Intensity -IBlack='\e[0;90m' # Black -IRed='\e[0;91m' # Red -IGreen='\e[0;92m' # Green -IYellow='\e[0;93m' # Yellow -IBlue='\e[0;94m' # Blue -IPurple='\e[0;95m' # Purple -ICyan='\e[0;96m' # Cyan -IWhite='\e[0;97m' # White - -# Bold High Intensity -BIBlack='\e[1;90m' # Black -BIRed='\e[1;91m' # Red -BIGreen='\e[1;92m' # Green -BIYellow='\e[1;93m' # Yellow -BIBlue='\e[1;94m' # Blue -BIPurple='\e[1;95m' # Purple -BICyan='\e[1;96m' # Cyan -BIWhite='\e[1;97m' # White - -# High Intensity backgrounds -On_IBlack='\e[0;100m' # Black -On_IRed='\e[0;101m' # Red -On_IGreen='\e[0;102m' # Green -On_IYellow='\e[0;103m' # Yellow -On_IBlue='\e[0;104m' # Blue -On_IPurple='\e[0;105m' # Purple -On_ICyan='\e[0;106m' # Cyan -On_IWhite='\e[0;107m' # White diff --git a/cshrc b/cshrc deleted file mode 100644 index 4bcb72c2..00000000 --- a/cshrc +++ /dev/null @@ -1,34 +0,0 @@ -# .cshrc: executed by C shells on startup -# -# This is intended to be a means of launching always -# Bash even if Csh/Tcsh is configured as the login -# shell (think: old-fashioned IT departments). - -# If this is login or some command is to be executed -# then change to a sane shell -if ($?loginsh || $?command) then # switch to bash - setenv SHELL /bin/bash - if ($?loginsh) then - if ($?command) then - exec /bin/bash --login -c "$command" - endif - exec /bin/bash --login - endif - # not a login shell, so there must be command - exec /bin/bash -c "$command" -endif -# go ahead, use csh - -######################################## -# Set up Subversion path. # -######################################## -if [ -d /proj/STBTools/tools/svn ]; then - setenv SVNPATH /proj/STBTools/tools/svn/`uname -m` - setenv PATH ${SVNPATH}/bin:${PATH} - setenv PYTHONPATH $SVNPATH/lib/svn-python - if ($?LD_LIBRARY_PATH) then - setenv LD_LIBRARY_PATH ${SVNPATH}/lib:${LD_LIBRARY_PATH} - else - setenv LD_LIBRARY_PATH ${SVNPATH}/lib - endif -fi diff --git a/functions b/functions deleted file mode 100644 index fd63f7c8..00000000 --- a/functions +++ /dev/null @@ -1,340 +0,0 @@ -#!/bin/sh - -# Shell Functions. - -function killxscreensaver() -{ - pkill xscreensaver - echo "" - return -} - - -function col { - awk '{print $'$(echo $* | sed -e 's/ /,$/g')'}'; -} - - -# Awk calculator. -function calc { - awk "BEGIN { print $* }" ; -} - - -# Add a path to the global PATH. -function pathmunge { - if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then - if [ "$2" = "after" ] ; then - PATH=$PATH:$1 - else - PATH=$1:$PATH - fi - fi -} - -# .. - Does a 'cd ..' -# .. 3 - Does a 'cd ../../..' -# -# Usage .. [n] -# Go up n-levels. -# i.e.: .. 3 will go up 3 levels -function .. { - local arg=${1:-1}; - local dir="" - while [ $arg -gt 0 ]; do - dir="../$dir" - arg=$(($arg - 1)); - done - cd $dir >&/dev/null -} - -# Usage ... Thing/Some -# Go up until you encounter Thing/Some, then go there -# i.e.: I'm in /usr/share/X11 -# ... src will go up to /usr, then change to /usr/src -function ... { - if [ -z "$1" ]; then - return - fi - local maxlvl=16 - local dir=$1 - while [ $maxlvl -gt 0 ]; do - dir="../$dir" - maxlvl=$(($maxlvl - 1)); - if [ -d "$dir" ]; then - cd $dir >&/dev/null - fi - done -} - - -# Change extensions of specified files. -function chext { - local fname - local new_ext="$1" - shift - IFS=$'\n' - for fname in $@ - do - mv "$fname" "${fname%.*}.$new_ext" - done -} - - -# Execute a command via SSH on a set of machines. -function cluster { - for mach in $CLUSTER; do - (echo -n "$mach: "; ssh -q $mach $*) - done -} - - -# Yum update a set of hosts. -function clupdate { - for mach in $CLUSTER; do - echo -n "$mach: " - ssh -q -t $mach sudo yum update -q -y - if [ $? -ne 0 ]; then - break - fi - done -} - - -function tools { - pushd . >/dev/null - brtop - if [ -d $(pwd)/tools ]; then - PATH=${PATH/$TOOLS:/} - TOOLS=$(pwd)/tools/cm - pathmunge ${TOOLS} - #PATH=${TOOLS}:${PATH} - echo $TOOLS - fi - popd >/dev/null -} - - -# Determine if proxy is needed. -function checkproxy { - NETDEV=`netstat -nr | grep '^0.0.0.0' | awk '{print $8}'` - #IP_ADDR=`ip addr | grep inet | egrep '(eth|em)[0-9]' | awk '{print $2}' | awk -F/ '{print $1}'` - for netdev in $NETDEV; do - IP_ADDR=`/sbin/ifconfig $netdev | grep inet | grep -v inet6 | awk '{print $2}' | sed 's/addr://'` - SUBNET=`echo ${IP_ADDR} | awk -F. '{printf("%s.%s.%s", $1, $2, $3);}'` - if [ "$SUBNET" == "193.120.91" -o "$SUBNET" == "192.168.91" -o "$SUBNET" == "192.168.92" -o "$SUBNET" == "192.168.93" ]; then - proxyon - else - proxyoff - fi - done -} - - -# Gnome: set proxy. -# Args: -# 1: mode - 'none', 'manual', 'auto'. -# 2: mode=none: ignored -# mode=manual: host -# mode=auto: url -# 3: mode=manual: port -function gnomeproxy { - if [ -z "$DISPLAY" ]; then - return - fi - machineid=$(dbus-uuidgen --get) - export $(DISPLAY=$DISPLAY dbus-launch --autolaunch="$machineid") - ignorelist=`echo $no_proxy | sed 's/^\[\(.*\)\]$/\1/'` - quoted_ignorelist=`echo $ignorelist | sed "s/[^,]\+/'\0'/g"` - gnome3_ignorelist="[${quoted_ignorelist}]" - gsettings set org.gnome.system.proxy ignore-hosts "${gnome3_ignorelist}" - if [ "$1" == 'auto' ]; then - #echo "Setting auto proxy url: $2" - gsettings set org.gnome.system.proxy autoconfig-url "$2" - gsettings set org.gnome.system.proxy.http enabled 'true' - gsettings set org.gnome.system.proxy mode 'auto' - elif [ "$1" == 'manual' ]; then - #echo "Setting manual proxy: $2 $3" - gsettings set org.gnome.system.proxy.http host "$2" - gsettings set org.gnome.system.proxy.http port "$3" - gsettings set org.gnome.system.proxy use-same-proxy "true" - gsettings set org.gnome.system.proxy.https host "$2" - gsettings set org.gnome.system.proxy.https port "$3" - gsettings set org.gnome.system.proxy.ftp host "$2" - gsettings set org.gnome.system.proxy.ftp port "$3" - gsettings set org.gnome.system.proxy.socks host "$2" - gsettings set org.gnome.system.proxy.socks port "$3" - gsettings set org.gnome.system.proxy.http enabled 'true' - gsettings set org.gnome.system.proxy mode 'manual' - else - gsettings set org.gnome.system.proxy.http enabled 'false' - gsettings set org.gnome.system.proxy mode 'none' - fi -} - - -# Turn on proxy. -function proxyon { - export http_proxy="${S3_PROXY}" - export https_proxy="${S3_PROXY}" - export no_proxy="${S3_NO_PROXY}" - rm -f ~/.subversion/servers ~/.subversion/config - if [ -f ~/.subversion/servers.proxy ]; then - ln -sf ~/.subversion/servers.proxy ~/.subversion/servers - fi - if [ -f ~/.subversion/config.work ]; then - ln -sf ~/.subversion/config.work ~/.subversion/config - fi - ~/dotfiles/sublime-text/sublime-set-proxy.py $http_proxy - ~/dotfiles/atom/atom-set-proxy.py $https_proxy - #gnomeproxy "auto" "${S3_AUTO_PROXY}" - #gnomeproxy "manual" "${S3_PROXY_HOST}" "${S3_PROXY_PORT}" - # echo "Proxy enabled." -} - - -# Turn off proxy. -function proxyoff { - unset https_proxy - unset http_proxy - unset no_proxy - unset ftp_proxy - unset all_proxy - unset HTTPS_PROXY - unset HTTP_PROXY - unset NO_PROXY - unset FTP_PROXY - unset ALL_PROXY - rm -f ~/.subversion/servers ~/.subversion/config - if [ -f ~/.subversion/servers.noproxy ]; then - ln -sf ~/.subversion/servers.noproxy ~/.subversion/servers - fi - if [ -f ~/.subversion/config.home ]; then - ln -sf ~/.subversion/config.home ~/.subversion/config - fi - ~/dotfiles/sublime-text/sublime-set-proxy.py - ~/dotfiles/atom/atom-set-proxy.py - #gnomeproxy "none" - # echo "Proxy disabled." -} - - -# Toggle proxy. -function proxy { - if [ -z "$http_proxy" ]; then - proxyon - else - proxyoff - fi -} - - -# Create a new git repo with one README commit and cd into it -function git.nr() { - mkdir $1 - cd $1 - git init - touch README - git add README - git commit -m "First commit." -} - - -function find.name() { - wild=\'\*$1\*\' - sh -c "find . -iname $wild" -} - -# Function that takes 2 args, a list and a string, -# and returns 0 if the string is in the list, or -# 1 otherwise. -function contains() { - for item in $1; do - if [ "$item" = "$2" ]; then - return 0 - fi - done - return 1 -} - -# From Eli Bendersky -# http://eli.thegreenplace.net/2013/06/11/keeping-persistent-history-in-bash/ -function log_bash_persistent_history() { - local rc=$? - [[ $(history 1) =~ ^\ *[0-9]+\ +([^\ ]+\ [^\ ]+)\ +(.*)$ ]] - local date_part="${BASH_REMATCH[1]}" - local command_part="${BASH_REMATCH[2]}" - # Try to replace usernames/passwords. - if contains "$command_part" "$USER"; then - return - fi - if contains "$command_part" "jiml"; then - return - fi - if contains "$command_part" "jlawton"; then - return - fi - if [ "$command_part" != "$PERSISTENT_HISTORY_LAST" ]; then - echo "$HOSTNAME | $date_part | $command_part" >> ~/.persistent_history - export PERSISTENT_HISTORY_LAST="$command_part" - fi -} - -# gitignore.io -# http://www.gitignore.io/cli -function gi() { - curl http://www.gitignore.io/api/$@ ; -} - -# CMF Git wrapper -function cmf() { - if [ -z "$1" -o -z "$2" ]; then - echo "usage: cmf " - return - fi - local baseurl="https://code.rdkcentral.com/r" - git $1 ${baseurl}/$2 $3 $4 $5 $6 $7 $8 $9 -} - -# CCP Git wrapper -function ccp() { - if [ -z "$1" -o -z "$2" ]; then - echo "usage: cmf " - return - fi - local baseurl="https://gerrit.teamccp.com/rdk" - git $1 ${baseurl}/$2 $3 $4 $5 $6 $7 $8 $9 -} - -# Linux? -function isLinux { - if [ "$OS" = "Linux" ]; then - return 0 - fi - return 1 -} - -# Mac? -function isMac { - if [ "$OS" = "Darwin" ]; then - return 0 - fi - return 1 -} - -# iTerm2 tab titles -function title { - if [ ! -e "${HOME}/.iterm2_shell_integration.bash" ]; then - return - fi - if [ "$1" ]; then - # Manually specify the title. - echo -ne "\033]0;${*}\007" - else - # This shows the path from ~ in the title. - #echo -ne "\033]0;${PWD/#$HOME/~}\007" - # This shows the last part of the path in the title. - echo -ne "\033]0;${PWD##*/}\007" - fi -} - diff --git a/git-template/hooks/pre-commit b/git-template/hooks/pre-commit new file mode 100755 index 00000000..d130ace7 --- /dev/null +++ b/git-template/hooks/pre-commit @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# File generated by pre-commit: https://pre-commit.com +# ID: 138fd403232d2ddd5efb44317e38bf03 + +# start templated +INSTALL_PYTHON=/opt/homebrew/opt/pre-commit/libexec/bin/python3 +ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=pre-commit --skip-on-missing-config) +# end templated + +HERE="$(cd "$(dirname "$0")" && pwd)" +ARGS+=(--hook-dir "$HERE" -- "$@") + +if [ -x "$INSTALL_PYTHON" ]; then + exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" +elif command -v pre-commit > /dev/null; then + exec pre-commit "${ARGS[@]}" +else + echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2 + exit 1 +fi diff --git a/git-template/hooks/prepare-commit-msg b/git-template/hooks/prepare-commit-msg new file mode 100755 index 00000000..25eb1708 --- /dev/null +++ b/git-template/hooks/prepare-commit-msg @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# File generated by pre-commit: https://pre-commit.com +# ID: 138fd403232d2ddd5efb44317e38bf03 + +# start templated +INSTALL_PYTHON=/opt/homebrew/opt/pre-commit/libexec/bin/python3 +ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=prepare-commit-msg --skip-on-missing-config) +# end templated + +HERE="$(cd "$(dirname "$0")" && pwd)" +ARGS+=(--hook-dir "$HERE" -- "$@") + +if [ -x "$INSTALL_PYTHON" ]; then + exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" +elif command -v pre-commit > /dev/null; then + exec pre-commit "${ARGS[@]}" +else + echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2 + exit 1 +fi diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh deleted file mode 100755 index 194cd060..00000000 --- a/git/forest2manifest.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -if [ -z "$1" ]; then - top=`pwd` -else - top=$1 -fi - -repos=`find $top -type d -name .git | xargs dirname | sort` - -remotes="" -for repo in $repos; do - url=`git config -f $repo/.git/config --get remote.origin.url` - scheme=`echo $url | sed 's;://.*;;'` - host=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;/.*;;'` - remote="$scheme://$host" - if [[ $remotes != *"$remote"* ]]; then - remotes="$remotes $remote" - fi -done - -remotes=`echo $remotes | sort` - -cat >default.xml < - -EOF - -for remote in $remotes; do - rname=`echo $remote | sed 's;.*://;;'` - cat >>default.xml < -EOF -done - -cat >>default.xml < - -EOF - -for repo in $repos; do - url=`git config -f $repo/.git/config --get remote.origin.url` - scheme=`echo $url | sed 's;://.*;;'` - host=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;/.*;;'` - remote="$scheme://$host" - rname=`echo $remote | sed 's;.*://;;'` - name=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'` - clonepath=`echo $repo | sed "s;$(pwd)/;;"` - cat >>default.xml < -EOF -done - -cat >>default.xml < -EOF - diff --git a/git/git-identify b/git/git-identify deleted file mode 160000 index f7092fcd..00000000 --- a/git/git-identify +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f7092fcd357a0176a40ed27e21932818d4f9266f diff --git a/git/git-prompt.sh b/git/git-prompt.sh deleted file mode 100644 index 54489080..00000000 --- a/git/git-prompt.sh +++ /dev/null @@ -1,461 +0,0 @@ -# bash/zsh git prompt support -# -# Copyright (C) 2006,2007 Shawn O. Pearce -# Distributed under the GNU General Public License, version 2.0. -# -# This script allows you to see repository status in your prompt. -# -# To enable: -# -# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). -# 2) Add the following line to your .bashrc/.zshrc: -# source ~/.git-prompt.sh -# 3a) Change your PS1 to call __git_ps1 as -# command-substitution: -# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' -# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' -# the optional argument will be used as format string. -# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can -# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh -# with two parameters,
 and , which are strings
-#        you would put in $PS1 before and after the status string
-#        generated by the git-prompt machinery.  e.g.
-#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
-#          will show username, at-sign, host, colon, cwd, then
-#          various status string, followed by dollar and SP, as
-#          your prompt.
-#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
-#          will show username, pipe, then various status string,
-#          followed by colon, cwd, dollar and SP, as your prompt.
-#        Optionally, you can supply a third argument with a printf
-#        format string to finetune the output of the branch status
-#
-# The repository status will be displayed only if you are currently in a
-# git repository. The %s token is the placeholder for the shown status.
-#
-# The prompt status always includes the current branch name.
-#
-# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
-# unstaged (*) and staged (+) changes will be shown next to the branch
-# name.  You can configure this per-repository with the
-# bash.showDirtyState variable, which defaults to true once
-# GIT_PS1_SHOWDIRTYSTATE is enabled.
-#
-# You can also see if currently something is stashed, by setting
-# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
-# then a '$' will be shown next to the branch name.
-#
-# If you would like to see if there're untracked files, then you can set
-# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
-# files, then a '%' will be shown next to the branch name.  You can
-# configure this per-repository with the bash.showUntrackedFiles
-# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
-# enabled.
-#
-# If you would like to see the difference between HEAD and its upstream,
-# set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
-# indicates you are ahead, "<>" indicates you have diverged and "="
-# indicates that there is no difference. You can further control
-# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
-# of values:
-#
-#     verbose       show number of commits ahead/behind (+/-) upstream
-#     name          if verbose, then also show the upstream abbrev name
-#     legacy        don't use the '--count' option available in recent
-#                   versions of git-rev-list
-#     git           always compare HEAD to @{upstream}
-#     svn           always compare HEAD to your SVN upstream
-#
-# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
-# find one, or @{upstream} otherwise.  Once you have set
-# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
-# setting the bash.showUpstream config variable.
-#
-# If you would like to see more information about the identity of
-# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
-# to one of these values:
-#
-#     contains      relative to newer annotated tag (v1.6.3.2~35)
-#     branch        relative to newer tag or branch (master~4)
-#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
-#     default       exactly matching tag
-#
-# If you would like a colored hint about the current dirty state, set
-# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
-# the colored output of "git status -sb" and are available only when
-# using __git_ps1 for PROMPT_COMMAND or precmd.
-
-# check whether printf supports -v
-__git_printf_supports_v=
-printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
-
-# stores the divergence from upstream in $p
-# used by GIT_PS1_SHOWUPSTREAM
-__git_ps1_show_upstream ()
-{
-	local key value
-	local svn_remote svn_url_pattern count n
-	local upstream=git legacy="" verbose="" name=""
-
-	svn_remote=()
-	# get some config options from git-config
-	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
-	while read -r key value; do
-		case "$key" in
-		bash.showupstream)
-			GIT_PS1_SHOWUPSTREAM="$value"
-			if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
-				p=""
-				return
-			fi
-			;;
-		svn-remote.*.url)
-			svn_remote[$((${#svn_remote[@]} + 1))]="$value"
-			svn_url_pattern="$svn_url_pattern\\|$value"
-			upstream=svn+git # default upstream is SVN if available, else git
-			;;
-		esac
-	done <<< "$output"
-
-	# parse configuration values
-	for option in ${GIT_PS1_SHOWUPSTREAM}; do
-		case "$option" in
-		git|svn) upstream="$option" ;;
-		verbose) verbose=1 ;;
-		legacy)  legacy=1  ;;
-		name)    name=1 ;;
-		esac
-	done
-
-	# Find our upstream
-	case "$upstream" in
-	git)    upstream="@{upstream}" ;;
-	svn*)
-		# get the upstream from the "git-svn-id: ..." in a commit message
-		# (git-svn uses essentially the same procedure internally)
-		local -a svn_upstream
-		svn_upstream=($(git log --first-parent -1 \
-					--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
-		if [[ 0 -ne ${#svn_upstream[@]} ]]; then
-			svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
-			svn_upstream=${svn_upstream%@*}
-			local n_stop="${#svn_remote[@]}"
-			for ((n=1; n <= n_stop; n++)); do
-				svn_upstream=${svn_upstream#${svn_remote[$n]}}
-			done
-
-			if [[ -z "$svn_upstream" ]]; then
-				# default branch name for checkouts with no layout:
-				upstream=${GIT_SVN_ID:-git-svn}
-			else
-				upstream=${svn_upstream#/}
-			fi
-		elif [[ "svn+git" = "$upstream" ]]; then
-			upstream="@{upstream}"
-		fi
-		;;
-	esac
-
-	# Find how many commits we are ahead/behind our upstream
-	if [[ -z "$legacy" ]]; then
-		count="$(git rev-list --count --left-right \
-				"$upstream"...HEAD 2>/dev/null)"
-	else
-		# produce equivalent output to --count for older versions of git
-		local commits
-		if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
-		then
-			local commit behind=0 ahead=0
-			for commit in $commits
-			do
-				case "$commit" in
-				"<"*) ((behind++)) ;;
-				*)    ((ahead++))  ;;
-				esac
-			done
-			count="$behind	$ahead"
-		else
-			count=""
-		fi
-	fi
-
-	# calculate the result
-	if [[ -z "$verbose" ]]; then
-		case "$count" in
-		"") # no upstream
-			p="" ;;
-		"0	0") # equal to upstream
-			p="=" ;;
-		"0	"*) # ahead of upstream
-			p=">" ;;
-		*"	0") # behind upstream
-			p="<" ;;
-		*)	    # diverged from upstream
-			p="<>" ;;
-		esac
-	else
-		case "$count" in
-		"") # no upstream
-			p="" ;;
-		"0	0") # equal to upstream
-			p=" u=" ;;
-		"0	"*) # ahead of upstream
-			p=" u+${count#0	}" ;;
-		*"	0") # behind upstream
-			p=" u-${count%	0}" ;;
-		*)	    # diverged from upstream
-			p=" u+${count#*	}-${count%	*}" ;;
-		esac
-		if [[ -n "$count" && -n "$name" ]]; then
-			p="$p $(git rev-parse --abbrev-ref "$upstream" 2>/dev/null)"
-		fi
-	fi
-
-}
-
-# Helper function that is meant to be called from __git_ps1.  It
-# injects color codes into the appropriate gitstring variables used
-# to build a gitstring.
-__git_ps1_colorize_gitstring ()
-{
-	if [[ -n ${ZSH_VERSION-} ]]; then
-		local c_red='%F{red}'
-		local c_green='%F{green}'
-		local c_lblue='%F{blue}'
-		local c_clear='%f'
-	else
-		# Using \[ and \] around colors is necessary to prevent
-		# issues with command line editing/browsing/completion!
-		local c_red='\[\e[31m\]'
-		local c_green='\[\e[32m\]'
-		local c_lblue='\[\e[1;34m\]'
-		local c_clear='\[\e[0m\]'
-	fi
-	local bad_color=$c_red
-	local ok_color=$c_green
-	local flags_color="$c_lblue"
-
-	local branch_color=""
-	if [ $detached = no ]; then
-		branch_color="$ok_color"
-	else
-		branch_color="$bad_color"
-	fi
-	c="$branch_color$c"
-
-	z="$c_clear$z"
-	if [ "$w" = "*" ]; then
-		w="$bad_color$w"
-	fi
-	if [ -n "$i" ]; then
-		i="$ok_color$i"
-	fi
-	if [ -n "$s" ]; then
-		s="$flags_color$s"
-	fi
-	if [ -n "$u" ]; then
-		u="$bad_color$u"
-	fi
-	r="$c_clear$r"
-}
-
-eread ()
-{
-	f="$1"
-	shift
-	test -r "$f" && read "$@" <"$f"
-}
-
-# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
-# when called from PS1 using command substitution
-# in this mode it prints text to add to bash PS1 prompt (includes branch name)
-#
-# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
-# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
-# when two arguments are given, the first is prepended and the second appended
-# to the state string when assigned to PS1.
-# The optional third parameter will be used as printf format string to further
-# customize the output of the git-status string.
-# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
-__git_ps1 ()
-{
-	local pcmode=no
-	local detached=no
-	local ps1pc_start='\u@\h:\w '
-	local ps1pc_end='\$ '
-	local printf_format=' (%s)'
-
-	case "$#" in
-		2|3)	pcmode=yes
-			ps1pc_start="$1"
-			ps1pc_end="$2"
-			printf_format="${3:-$printf_format}"
-		;;
-		0|1)	printf_format="${1:-$printf_format}"
-		;;
-		*)	return
-		;;
-	esac
-
-	local repo_info rev_parse_exit_code
-	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
-		--is-bare-repository --is-inside-work-tree \
-		--short HEAD 2>/dev/null)"
-	rev_parse_exit_code="$?"
-
-	if [ -z "$repo_info" ]; then
-		if [ $pcmode = yes ]; then
-			#In PC mode PS1 always needs to be set
-			PS1="$ps1pc_start$ps1pc_end"
-		fi
-		return
-	fi
-
-	local short_sha
-	if [ "$rev_parse_exit_code" = "0" ]; then
-		short_sha="${repo_info##*$'\n'}"
-		repo_info="${repo_info%$'\n'*}"
-	fi
-	local inside_worktree="${repo_info##*$'\n'}"
-	repo_info="${repo_info%$'\n'*}"
-	local bare_repo="${repo_info##*$'\n'}"
-	repo_info="${repo_info%$'\n'*}"
-	local inside_gitdir="${repo_info##*$'\n'}"
-	local g="${repo_info%$'\n'*}"
-
-	local r=""
-	local b=""
-	local step=""
-	local total=""
-	if [ -d "$g/rebase-merge" ]; then
-		eread "$g/rebase-merge/head-name" b
-		eread "$g/rebase-merge/msgnum" step
-		eread "$g/rebase-merge/end" total
-		if [ -f "$g/rebase-merge/interactive" ]; then
-			r="|REBASE-i"
-		else
-			r="|REBASE-m"
-		fi
-	else
-		if [ -d "$g/rebase-apply" ]; then
-			eread "$g/rebase-apply/next" step
-			eread "$g/rebase-apply/last" total
-			if [ -f "$g/rebase-apply/rebasing" ]; then
-				eread "$g/rebase-apply/head-name" b
-				r="|REBASE"
-			elif [ -f "$g/rebase-apply/applying" ]; then
-				r="|AM"
-			else
-				r="|AM/REBASE"
-			fi
-		elif [ -f "$g/MERGE_HEAD" ]; then
-			r="|MERGING"
-		elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
-			r="|CHERRY-PICKING"
-		elif [ -f "$g/REVERT_HEAD" ]; then
-			r="|REVERTING"
-		elif [ -f "$g/BISECT_LOG" ]; then
-			r="|BISECTING"
-		fi
-
-		if [ -n "$b" ]; then
-			:
-		elif [ -h "$g/HEAD" ]; then
-			# symlink symbolic ref
-			b="$(git symbolic-ref HEAD 2>/dev/null)"
-		else
-			local head=""
-			if ! eread "$g/HEAD" head; then
-				if [ $pcmode = yes ]; then
-					PS1="$ps1pc_start$ps1pc_end"
-				fi
-				return
-			fi
-			# is it a symbolic ref?
-			b="${head#ref: }"
-			if [ "$head" = "$b" ]; then
-				detached=yes
-				b="$(
-				case "${GIT_PS1_DESCRIBE_STYLE-}" in
-				(contains)
-					git describe --contains HEAD ;;
-				(branch)
-					git describe --contains --all HEAD ;;
-				(describe)
-					git describe HEAD ;;
-				(* | default)
-					git describe --tags --exact-match HEAD ;;
-				esac 2>/dev/null)" ||
-
-				b="$short_sha..."
-				b="($b)"
-			fi
-		fi
-	fi
-
-	if [ -n "$step" ] && [ -n "$total" ]; then
-		r="$r $step/$total"
-	fi
-
-	local w=""
-	local i=""
-	local s=""
-	local u=""
-	local c=""
-	local p=""
-
-	if [ "true" = "$inside_gitdir" ]; then
-		if [ "true" = "$bare_repo" ]; then
-			c="BARE:"
-		else
-			b="GIT_DIR!"
-		fi
-	elif [ "true" = "$inside_worktree" ]; then
-		if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
-		   [ "$(git config --bool bash.showDirtyState)" != "false" ]
-		then
-			git diff --no-ext-diff --quiet --exit-code || w="*"
-			if [ -n "$short_sha" ]; then
-				git diff-index --cached --quiet HEAD -- || i="+"
-			else
-				i="#"
-			fi
-		fi
-		if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
-		   [ -r "$g/refs/stash" ]; then
-			s="$"
-		fi
-
-		if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
-		   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
-		   git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
-		then
-			u="%${ZSH_VERSION+%}"
-		fi
-
-		if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
-			__git_ps1_show_upstream
-		fi
-	fi
-
-	local z="${GIT_PS1_STATESEPARATOR-" "}"
-
-	# NO color option unless in PROMPT_COMMAND mode
-	if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
-		__git_ps1_colorize_gitstring
-	fi
-
-	local f="$w$i$s$u"
-	local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
-
-	if [ $pcmode = yes ]; then
-		if [ "${__git_printf_supports_v-}" != yes ]; then
-			gitstring=$(printf -- "$printf_format" "$gitstring")
-		else
-			printf -v gitstring -- "$printf_format" "$gitstring"
-		fi
-		PS1="$ps1pc_start$gitstring$ps1pc_end"
-	else
-		printf -- "$printf_format" "$gitstring"
-	fi
-}
diff --git a/git/mingit b/git/mingit
deleted file mode 160000
index 5891c310..00000000
--- a/git/mingit
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5891c310c21b0878e530789605b9ae6fdbd0e1cc
diff --git a/git_identities b/git_identities
deleted file mode 100644
index a13df951..00000000
--- a/git_identities
+++ /dev/null
@@ -1,15 +0,0 @@
-[identity:work]
-  name = Jim Lawton
-  email = jim.lawton@s3group.com
-
-[identity:personal]
-  name = Jim Lawton
-  email = jim.lawton@gmail.com
-
-[work]
-  ~/git/cmf/*
-  ~/Work/*
-
-[personal]
-  ~/git/*
-
diff --git a/gitignore b/gitignore
deleted file mode 100644
index 5643fa81..00000000
--- a/gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-*~
-.#*
-*.pyc
-*.o
-
-
-# srclib build cache
-.srclib-cache/
diff --git a/go-bash-completion b/go-bash-completion
deleted file mode 160000
index 73c7543f..00000000
--- a/go-bash-completion
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 73c7543f2a295d27ae9bc71baa1ef1a858447eae
diff --git a/hyper-hacks b/hyper-hacks
new file mode 160000
index 00000000..1f507504
--- /dev/null
+++ b/hyper-hacks
@@ -0,0 +1 @@
+Subproject commit 1f507504c80756063286118423c6995f8a46c74b
diff --git a/icdiff b/icdiff
deleted file mode 160000
index 828991e1..00000000
--- a/icdiff
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 828991e18acc537fd883dbffdc41d73e33672218
diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py
new file mode 100755
index 00000000..f9291fb0
--- /dev/null
+++ b/obsidian/daily-note.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python3
+
+# Simple script for Obsidian, to generate a new daily note.
+
+import argparse
+import datetime
+import glob
+import os
+import subprocess
+import sys
+
+
+def main():
+    """Generate daily agenda as Markdown."""
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        type=str,
+        dest="date",
+        metavar="DATE",
+        nargs="?",
+        help="Optional date",
+    )
+    args = parser.parse_args()
+
+    if args.date:
+        try:
+            datetime.datetime.strptime(args.date, "%Y-%m-%d")
+            date_str = args.date
+        except ValueError:
+            sys.exit(
+                "Invalid date, must be valid calendar date in the form YYYY-MM-DD!"
+            )
+    else:
+        date_str = datetime.datetime.today().strftime("%Y-%m-%d")
+
+    curr_date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")
+
+    home = os.getenv("HOME")
+    if home is None:
+        sys.exit("$HOME is not defined!")
+
+    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+    year = curr_date_obj.strftime("%Y")
+    month = curr_date_obj.strftime("%m")
+
+    vault = f"{home}/Obsidian/Notes"
+    notes_dir = f"{vault}/Daily Notes/"
+
+    # print(f"Scanning '{notes_dir}'...")
+
+    # Get a dict of all daily notes, with paths.
+    notes_dict = {}
+    date_objs = []
+    files = glob.glob(notes_dir + "/**/Daily*.md", recursive=True)
+    for file_path in sorted(files):
+        note_date = file_path.split("/")[-1].split(".")[0].split()[1]
+        notes_dict[note_date] = file_path
+        date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d"))
+
+    if len(date_objs) == 0:
+        sys.exit(f"Cannot find any daily notes in '{notes_dir}'!")
+
+    if date_str in notes_dict.keys():
+        print(f"Daily note for {date_str} already exists, skipping!")
+        sys.exit(0)
+
+    print(f"Creating note for {date_str}...")
+
+    last_date_obj = date_objs[-1]
+
+    # note_dates = sorted(notes_dict.keys())
+
+    # Find previous date.
+    prev_date = max(d for d in date_objs if d < curr_date_obj)
+    prev_str = prev_date.strftime("%Y-%m-%d")
+
+    # Find next date. This depends on whether we're creating a note in a date gap, or adding at the end.
+    if curr_date_obj < last_date_obj:
+        next_date = min(d for d in date_objs if d > curr_date_obj)
+    else:
+        next_date = datetime.datetime.strptime(
+            date_str, "%Y-%m-%d"
+        ) + datetime.timedelta(days=1)
+    _next_str = next_date.strftime("%Y-%m-%d")
+
+    file_lines = []
+
+    # Skip the daily note template file.
+
+    # Read the previous note file.
+    prev_file_path = notes_dict[prev_str]
+    print(f"Reading from {prev_file_path}")
+
+    prev_data_lines = []
+    with open(prev_file_path, "r") as f:
+        prev_data_lines = f.readlines()
+
+    output_dir_path = f"{notes_dir + year + '/' + month}"
+    if not os.path.isdir(output_dir_path):
+        os.makedirs(output_dir_path, exist_ok=True)
+
+    output_file_path = f"{output_dir_path + '/' + 'Daily ' + date_str + '.md'}"
+
+    # Generate front matter
+    file_lines.append("---")
+    file_lines.append(f"creation date: {now}")
+    file_lines.append(f"tag: daily daily/{year}")
+    file_lines.append("---")
+    file_lines.append("")
+
+    # Generate nav bar
+    # file_lines.append(f"<< [[Daily {prev_str}]] | [[Daily {next_str}]] >>")
+    # file_lines.append("")
+
+    # Generate todos section
+    file_lines.append("## Todo")
+    #   - Read todos from prev_date file
+    start = end = 0
+    for i, line in enumerate(prev_data_lines):
+        if line.startswith("## Todo"):
+            start = i + 1
+        if line.startswith("## Agenda") and start > 0:
+            end = i - 1
+    todo_lines = prev_data_lines[start:end]
+    #   - Remove any items done (including done nested todos)
+    for line in todo_lines:
+        if not line.strip().startswith(("- [x]", "- [X]")):
+            file_lines.append(line.strip("\n"))
+    file_lines.append("")
+
+    # Generate agenda
+    file_lines.append("## Agenda")
+    print("Running daymd...")
+    daymd = os.path.join(home, ".local", "share", "chezmoi", "obsidian", "daymd")
+    result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE)
+    file_lines.append(result.stdout.decode())
+
+    # file_lines.append("## Reading/Learning")
+    # file_lines.append("- ")
+    # file_lines.append("")
+
+    file_lines.append("## Activities")
+    file_lines.append("- ")
+    file_lines.append("")
+
+    # Write new file
+    print(f"Writing to {output_file_path}")
+    with open(output_file_path, "w") as f:
+        f.write("\n".join(file_lines))
+
+
+if __name__ == "__main__":
+    main()
diff --git a/obsidian/daymd b/obsidian/daymd
new file mode 100755
index 00000000..444b657d
--- /dev/null
+++ b/obsidian/daymd
@@ -0,0 +1,47 @@
+#!/opt/homebrew/bin/bash
+option="eventsToday"
+brew_prefix="$(/opt/homebrew/bin/brew --prefix)"
+ical_buddy="/opt/homebrew/bin/icalBuddy"
+
+if [ -e ${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed ]; then
+    SED=${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed
+else
+    SED=${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed
+fi
+
+AWK=${brew_prefix}/bin/awk
+
+if [ -n "$1" ]; then
+    option="eventsFrom:$1 to:$1"
+fi
+
+${ical_buddy} -b '' -npn -nc -ps "/ | /" -nrd -eep "notes,attendees,url" ${option} | \
+    ${AWK} -F\| '
+{
+    if (NF>2) {
+        if (index($3, "at") != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9] at /,"",$3);
+        }
+        if (match($3, /[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/) != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/,"00:00-23:59",$3);
+        }
+        gsub(/ /,"",$3);
+        printf("- `%s`  %s %s\n", $3, $1, $2);
+    } else if (NF==1) {
+        printf("- %s\n", $1);
+    } else {
+        if (index($2, "at") != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9] at /,"",$2);
+        }
+        if (match($2, /[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/) != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/,"00:00-23:59",$2);
+        }
+        gsub(/ /,"",$2);
+        printf("- `%s`  %s\n", $2, $1);
+    }
+}
+' | ${SED} 's/\(https:\/\/[^ ]*\)/[zoom](\1)/' | ${SED} 's/[ ]*Microsoft Teams Meeting[ ]*$//'
diff --git a/obsidian/next_day b/obsidian/next_day
new file mode 100755
index 00000000..75358266
--- /dev/null
+++ b/obsidian/next_day
@@ -0,0 +1,23 @@
+#!/usr/local/bin/bash
+# Simple script for Obsidian, for use with the Templater plugin,
+# to generate the name of the next note (i.e. the note on the next working day)
+# to the specified note, and return the date string for it.
+
+# To use it, add this to your daily note template file:
+#   <% tp.user.next_day() %>
+# and set up the Templater plugin to add a User System Command, named `next_day`,
+# and specify the path to this script.
+
+# This depends on MacOS date, not GNU date, and GNU dateutils (for dateadd).
+
+when="$(date '+%Y-%m-%d')"
+if [ -n "$1" ]; then
+    when="$1"
+fi
+input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}')
+if [[ $(date -j -f '%Y-%m-%d' "${input_date}" +'%u') = 5 ]] ; then
+    next_date=$(dateadd "${input_date}" 3d)
+else
+    next_date=$(dateadd "${input_date}" 1d)
+fi
+echo "$next_date"
diff --git a/obsidian/note.js b/obsidian/note.js
new file mode 100644
index 00000000..4e66f56f
--- /dev/null
+++ b/obsidian/note.js
@@ -0,0 +1,114 @@
+// This is a module providing JS functions that will be imported and called by
+// the Obsidian Templater plugin.
+
+// In order for this to work, it has to obey the CommonJS module specification:
+//     https://flaviocopes.com/commonjs/
+// with the added restriction, that there can be only one module export from any
+// module, and that export must match the module (file) name.
+
+const homedir = require('os').homedir();
+const vault = "obsidian/Notes/";
+const top_level = homedir + "/" + vault;
+const zeroPad = (num, places) => String(num).padStart(places, '0')
+
+// Get the date string from the filename.
+// For now this is just the filename, but that might change.
+function get_date_str(filename) {
+    var name = filename;
+    //if name.includes(' ') {
+    //    name = name.split(' ')[-1];
+    //}
+    return name;
+}
+
+// Get the year integer from the filename.
+function get_year(filename) {
+    var date = get_date_str(filename);
+    return parseInt(date.split('-')[0]);
+}
+
+// Get the month integer from the filename.
+function get_month(filename) {
+    var date = get_date_str(filename);
+    return parseInt(date.split('-')[1]);
+}
+
+// Get the day of the month integer from the filename.
+function get_day(filename) {
+    var date = get_date_str(filename);
+    return parseInt(date.split('-')[2]);
+}
+
+// Get a list of the files in the specified directory.
+function get_files(dir) {
+    return require('fs').readdirSync(top_level + dir).sort();
+}
+
+// Get an array of integers representing the date in the filename.
+function get_date_int(name) {
+    var tmp_name = name;
+    if (tmp_name != null && tmp_name != '' && tmp_name != undefined) {
+        if (tmp_name.indexOf(' ') >= 0) {
+            tmp_name = tmp_name.substr(tmp_name.lastIndexOf(' ') + 1);
+        }
+    }
+    console.log("note: tmp_name:", tmp_name);
+    var year = get_year(tmp_name);
+    console.log("note: year:", year);
+    var month = get_month(tmp_name);
+    console.log("note: month:", month);
+    var date = get_day(tmp_name);
+    console.log("note: date:", date);
+    return [year, month, date];
+}
+
+// Get a new date from the specified date and an offset in days.
+function get_new_date(year, month, day, offset) {
+    var date = new Date(year, month, day);
+    console.log("note: date:", date);
+    date.setDate(date.getDate() + offset);
+    console.log("note: date*:", date);
+    var new_year = date.getFullYear();
+    var new_month = date.getMonth();
+    var new_date = date.getDate();
+    console.log("note: new:", new_year, new_month, new_date);
+    return [new_year, new_month, new_date];
+}
+
+// Make a new date string from the specified date integers.
+function make_new_date_str(year, month, day) {
+    var year_str = zeroPad(year, 4);
+    var month_str = zeroPad(month, 2);
+    var day_str = zeroPad(day, 2);
+    var date_str = `${year_str}-${month_str}-${day_str}`;
+    return date_str;
+}
+
+function note(type, tp) {
+    console.log("");
+    console.log("");
+    var dir = tp.file.folder(relative = true);
+    console.log("note: dir:", dir);
+    var name = tp.file.title;
+    console.log("note: name:", name);
+    // var files = require('fs').readdirSync(top_level + dir);
+    // console.log("note: files:", files);
+    var [year, month, day] = get_date_int(name);
+    if (type == "prev") {
+        var note = tp.date.yesterday();
+    } else if (type == "next") {
+        var note = tp.date.tomorrow();
+    } else if (type == "prev_week") {
+        var note = tp.date.now("YYYY-MM-DD", -7);
+    } else if (type == "next_week") {
+        var note = tp.date.now("YYYY-MM-DD", 7);
+    } else {
+        console.error("ERROR: invalid type arg to note function!");
+    }
+    console.log("note: new note:", note);
+    console.log("");
+    console.log("");
+    return note;
+}
+
+module.exports = note;
diff --git a/obsidian/prev_day b/obsidian/prev_day
new file mode 100755
index 00000000..14268eb7
--- /dev/null
+++ b/obsidian/prev_day
@@ -0,0 +1,25 @@
+#!/usr/local/bin/bash
+# Simple script for Obsidian, for use with the Templater plugin,
+# to find the previous note (i.e. the note on the previous working day) to the
+# specified note, and return the date string for it.
+
+# To use it, add this to your daily note template file:
+#   <% tp.user.prev_day() %>
+# and set up the Templater plugin to add a User System Command, named `prev_day`,
+# and specify the path to this script.
+
+vault="${HOME}/obsidian/Notes/"
+notes_dir="${vault}/Daily Notes/"
+when="$(date '+%Y-%m-%d')"
+if [ -n "$1" ]; then
+    when="$1"
+fi
+input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}')
+
+# Calculate the date of the previous daily note.
+# - List all notes by name in lexical order
+# - Find the entry before the specified date
+all_notes=$(ls -1R "${notes_dir}" | grep '^Daily')
+prev_note=$(echo "${all_notes}" | grep -B1 "${input_date}" | head -1)
+prev_date=$(echo "${prev_note}" | awk '{print $2}' | awk -F. '{print $1}')
+echo "$prev_date"
diff --git a/obsidian/todos b/obsidian/todos
new file mode 100755
index 00000000..b4665d2c
--- /dev/null
+++ b/obsidian/todos
@@ -0,0 +1,37 @@
+#!/usr/local/bin/bash
+# Simple script for Obsidian, for use with the Templater plugin,
+# to find the previous note to the specified note, and roll forward any
+# incomplete Todo items.
+
+# Yes, this duplicates the Rollover Daily Todos plugin functionality,
+# but that plugin does not seem to work too well with Templater, as
+# Templater takes longer to generate output, and its rewrite of the
+# target file loses the output from the other plugin.
+
+# This is designed to be used directly from the Templater plugin.
+
+# To use it, add this to your daily note template file:
+#   <% tp.user.todos() %>
+# and set up the Templater plugin to add a User System Command, named `todos`,
+# and specify the path to this script.
+
+vault="${HOME}/obsidian/Notes"
+notes_dir="${vault}/Daily Notes/"
+when="$(date '+%Y-%m-%d')"
+if [ -n "$1" ]; then
+    when="$1"
+fi
+input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}')
+
+# Calculate the date of the previous daily note.
+# - List all notes by name in lexical order
+# - Find the entry before the specified date
+all_notes=$(ls -1R "${notes_dir}" | grep '^Daily')
+prev_note=$(echo "${all_notes}" | grep -B1 "${input_date}" | head -1)
+prev_date=$(echo "${prev_note}" | awk '{print $2}' | awk -F. '{print $1}')
+prev_month=$(echo "${prev_date}" | awk -F- '{print $2}')
+prev_year=$(echo "${prev_date}" | awk -F- '{print $1}')
+
+# Print all non-complete todo items from the specified Obsidian file.
+# cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | sed '/^$/d' | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]'
+cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]'
diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py
new file mode 100755
index 00000000..328f3b87
--- /dev/null
+++ b/obsidian/weekly-report.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python3
+
+# Simple script for Obsidian, to generate a new weekly note.
+
+import argparse
+import datetime
+import glob
+import os
+import sys
+
+
+def main():
+    """Generate weekly report as Markdown."""
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        type=str,
+        dest="date",
+        metavar="DATE",
+        nargs="?",
+        help="Optional date",
+    )
+    args = parser.parse_args()
+
+    if args.date:
+        try:
+            datetime.datetime.strptime(args.date, "%Y-%m-%d")
+            date_str = args.date
+        except ValueError:
+            sys.exit(
+                "Invalid date, must be valid calendar date in the form YYYY-MM-DD!"
+            )
+    else:
+        weekday_today = datetime.datetime.now().weekday()
+        if weekday_today >= 4:
+            end_date = datetime.datetime.now() - datetime.timedelta(weekday_today - 4)
+        else:
+            end_date = (
+                datetime.datetime.now()
+                - datetime.timedelta(weeks=1)
+                + datetime.timedelta(4 - weekday_today)
+            )
+        date_str = end_date.strftime("%Y-%m-%d")
+
+    curr_date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")
+
+    home = os.getenv("HOME")
+    if home is None:
+        sys.exit("$HOME is not defined!")
+
+    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+    year = curr_date_obj.strftime("%Y")
+    month = curr_date_obj.strftime("%m")
+
+    vault = f"{home}/Obsidian/Notes"
+    daily_dir = f"{vault}/Daily Notes/"
+    weekly_dir = f"{vault}/Weekly Reports/"
+
+    # Get a dict of all daily notes, with paths.
+    daily_dict = {}
+    daily_date_objs = []
+    files = glob.glob(daily_dir + "/**/Daily*.md", recursive=True)
+    for file_path in sorted(files):
+        note_date = file_path.split("/")[-1].split(".")[0].split()[1]
+        daily_dict[note_date] = file_path
+        daily_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d"))
+
+    # Get a dict of all weekly notes, with paths.
+    weekly_dict = {}
+    weekly_date_objs = []
+    files = glob.glob(weekly_dir + "/**/Weekly*.md", recursive=True)
+    for file_path in sorted(files):
+        note_date = file_path.split("/")[-1].split(".")[0].split()[1]
+        weekly_dict[note_date] = file_path
+        weekly_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d"))
+
+    if date_str in weekly_dict.keys():
+        sys.exit(f"Weekly report for {date_str} already exists, skipping!")
+    else:
+        print(f"Creating weekly report for w/e {date_str}...")
+
+    last_date_obj = weekly_date_objs[-1]
+
+    # Find previous date.
+    prev_date = max(d for d in weekly_date_objs if d < curr_date_obj)
+    prev_str = prev_date.strftime("%Y-%m-%d")
+
+    if curr_date_obj < last_date_obj:
+        next_date = min(d for d in weekly_date_objs if d > curr_date_obj)
+    else:
+        next_date = datetime.datetime.strptime(
+            date_str, "%Y-%m-%d"
+        ) + datetime.timedelta(days=7)
+    next_str = next_date.strftime("%Y-%m-%d")
+    print(f"Next weekly report: {next_str}")
+
+    file_lines = []
+
+    # Read the previous weekly report file.
+    prev_file_path = weekly_dict[prev_str]
+    print(f"Reading from {prev_file_path}")
+
+    prev_data_lines = []
+    with open(prev_file_path, "r") as f:
+        prev_data_lines = f.readlines()
+
+    output_dir_path = f"{weekly_dir + year + '/' + month}"
+    if not os.path.isdir(output_dir_path):
+        os.makedirs(output_dir_path, exist_ok=True)
+
+    output_file_path = f"{output_dir_path + '/' + 'Weekly ' + date_str + '.md'}"
+
+    # Generate front matter
+    file_lines.append("---")
+    file_lines.append(f"creation date: {now}")
+    file_lines.append(f"tag: daily daily/{year}")
+    file_lines.append("---")
+    file_lines.append("")
+
+    # Generate nav bar
+    # file_lines.append(f"<< [[Weekly {prev_str}]] | [[Weekly {next_str}]] >>")
+    # file_lines.append("")
+
+    file_lines.append("## Activities this week")
+    start = end = 0
+    for i, line in enumerate(prev_data_lines):
+        if line.startswith("## Planned for next week"):
+            start = i + 1
+        if line.startswith("## Backlog") and start > 0:
+            end = i - 1
+    planned_lines = prev_data_lines[start:end]
+    # Populate activities with planned from last week, plus FIXME.
+    for line in planned_lines:
+        file_lines.append(line.strip("\n").replace("- ", "- `FIXME` "))
+
+    # Extract all activities from daily reports since last weekly report.
+    prev_dates = [d for d in daily_date_objs if prev_date < d <= curr_date_obj]
+    prev_data_lines = []
+    for d in prev_dates:
+        d_str = d.strftime("%Y-%m-%d")
+        prev_file_path = daily_dict[d_str]
+        print(f"Reading from {prev_file_path}")
+        with open(prev_file_path, "r") as f:
+            start = 0
+            daily_lines = f.readlines()
+            for i, line in enumerate(daily_lines):
+                if line.startswith("## Activities"):
+                    start = i + 1
+            daily_lines = daily_lines[start:]
+            daily_lines_tmp = []
+            for line in daily_lines:
+                if line.strip() == "-":
+                    continue
+                if line.startswith("- "):
+                    daily_lines_tmp.append(f"- {d_str} {line[2:]}")
+                else:
+                    daily_lines_tmp.append(line)
+            prev_data_lines.extend(daily_lines_tmp)
+    prev_data_lines = [
+        line.strip("\n") for line in prev_data_lines if line.strip() != "-"
+    ]
+    file_lines.extend(prev_data_lines)
+    file_lines.append("")
+
+    file_lines.append("## Planned for next week")
+    file_lines.append("- ")
+    file_lines.append("")
+
+    # file_lines.append("## Backlog")
+    # file_lines.append("- ")
+    # file_lines.append("")
+
+    # Write new file
+    print(f"Writing to {output_file_path}")
+    with open(output_file_path, "w") as f:
+        f.write("\n".join(file_lines))
+
+
+if __name__ == "__main__":
+    main()
diff --git a/paths b/paths
deleted file mode 100644
index c77225af..00000000
--- a/paths
+++ /dev/null
@@ -1,59 +0,0 @@
-########################################################################
-# Shell agnostic path setup
-########################################################################
-
-# Jim's Scripts
-export PATH=$PATH:.
-export PATH=$PATH:~/bin
-export PATH=$PATH:~/dotfiles/scripts
-export PATH=$PATH:~/utils
-export PATH=$PATH:~/dotfiles/git/git-identify/bin
-#export PATH=~/pebble-dev/sdk/bin:$PATH
-if isMac; then
-    export PATH=$PATH:/usr/local/opt/go/libexec/bin
-fi
-
-# Path setup.
-#export PATH=
-#pathmunge ${HOME}/bin
-#pathmunge ${HOME}/utils
-#pathmunge /usr/bin
-#pathmunge /bin
-#pathmunge /usr/sbin
-#pathmunge /sbin
-
-#if [ "$HOSTNAME" == "apollo" -o "$HOSTNAME" == "saturn" -o "$HOSTNAME" == "lightning" ]; then
-#    pathmunge /usr/local/bin
-#fi
-
-#export LD_LIBRARY_PATH=${PYPATH}/lib:${SVNPATH}/lib:${HOME}/lib:/usr/lib64:/lib64:${LD_LIBRARY_PATH}
-#export LD_LIBRARY_PATH=${SVNPATH}/lib:${HOME}/lib:/usr/lib64:/lib64
-
-########################################
-# Set up Git path.                     #
-########################################
-GITPATH=/proj/STBTools/tools/git/`uname -p`
-if [ -d $GITPATH ]; then
-	GITPATH=/proj/STBTools/tools/git/`uname -p`
-	if ! echo $PATH | /bin/egrep -q "(^|:)$GITPATH/bin($|:)" ; then
-		PATH=$GITPATH/bin:$PATH
-	fi
-	export LD_LIBRARY_PATH=${GITPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-}
-fi
-
-########################################
-# Set up Subversion path.              #
-########################################
-SVNPATH=/proj/STBTools/tools/svn/`uname -p`
-if [ -d $SVNPATH ]; then
-	export PYTHONPATH=$SVNPATH/lib/svn-python
-	if ! echo $PATH | /bin/egrep -q "(^|:)$SVNPATH/bin($|:)" ; then
-		export PATH=$SVNPATH/bin:$PATH
-	fi
-	export LD_LIBRARY_PATH=${SVNPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-}
-fi
-
-if [ -d "$HOME/.cabal/bin" ]; then
-    export PATH="$HOME/.cabal/bin:$PATH"
-fi
-
diff --git a/profile b/profile
deleted file mode 100644
index 8c1486ad..00000000
--- a/profile
+++ /dev/null
@@ -1,5 +0,0 @@
-#############################################################
-# Generic configuration that applies to all shells
-#############################################################
-
-
diff --git a/pythonrc b/pythonrc
deleted file mode 100644
index bc22d151..00000000
--- a/pythonrc
+++ /dev/null
@@ -1,47 +0,0 @@
-# vim: set ft=python :
-# Add auto-completion and a stored history file of commands to your Python
-# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
-# bound to the Esc key by default (you can change it - see readline docs).
-#
-# Store the file in ~/.pystartup, and set an environment variable to point
-# to it:  "export PYTHONSTARTUP=/home/gsf/.pystartup" in bash.
-#
-# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
-# full path to your home directory.
-
-
-from __future__ import print_function
-
-import atexit
-import os
-import sys
-import datetime
-import json
-
-try:
-    import readline
-except ImportError:
-    print("Module readline not available.")
-else:
-    import rlcompleter
-    if 'libedit' in readline.__doc__:
-        readline.parse_and_bind("bind ^I rl_complete")
-    else:
-        readline.parse_and_bind("tab: complete")
-
-# change autocomplete to tab
-readline.parse_and_bind("tab: complete")
-
-historyPath = os.path.expanduser("~/.pyhistory")
-
-def save_history(historyPath=historyPath):
-    import readline
-    readline.write_history_file(historyPath)
-
-if os.path.exists(historyPath):
-    readline.read_history_file(historyPath)
-
-atexit.register(save_history)
-
-# anything not deleted (sys and os) will remain in the interpreter session
-del atexit, readline, rlcompleter, save_history, historyPath
diff --git a/scripts b/scripts
deleted file mode 160000
index c602ef2c..00000000
--- a/scripts
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c602ef2c1b24f621ecc6f13eddc270757e1aea7b
diff --git a/sublime-text/sublime-set-proxy.py b/sublime-text/sublime-set-proxy.py
deleted file mode 100755
index 4766f3b8..00000000
--- a/sublime-text/sublime-set-proxy.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-# Python script to set/unset SublimeText Package Control proxy setting.
-# Jim Lawton, 26th April, 2014.
-
-from __future__ import print_function
-import os
-import os.path
-import sys
-from optparse import OptionParser
-import json
-
-_CFGFILE = ".config/sublime-text-3/Packages/User/Package Control.sublime-settings"
-
-
-def _getOpts():
-    """Parse command line options and arguments."""
-    usage = "%prog [options] [proxy-url]"
-    parser = OptionParser(usage=usage,
-                          description="Set/unset SublimeText Package Control "
-                          "proxy setting.")
-    (opts, args) = parser.parse_args()
-    opts.proxy = None
-    if len(args) > 0:
-        opts.proxy = args[0]
-    return (opts, args)
-
-
-def main():
-    "Main function."
-    opts, args = _getOpts()
-
-    cfgfile = os.path.join(os.getenv("HOME"), _CFGFILE)
-    config = {}
-    if os.path.exists(cfgfile):
-        with open(cfgfile, 'r') as f:
-            config = json.load(f)
-
-        if "http_proxy" in config.keys():
-            if opts.proxy:
-                #print("Setting SublimeText proxy to %s" % opts.proxy)
-                config["http_proxy"] = opts.proxy
-            else:
-                #print("Clearing SublimeText proxy setting")
-                del config["http_proxy"]
-        else:
-            if opts.proxy:
-                #print("Setting SublimeText proxy to %s" % opts.proxy)
-                config["http_proxy"] = opts.proxy
-    
-        with open(cfgfile, 'w') as f:
-            json.dump(config, f, indent=8, sort_keys=True)
-
-
-if __name__ == '__main__':
-    main()
-    sys.exit(0)
diff --git a/tmux.conf b/tmux.conf
deleted file mode 100644
index 09cf1be0..00000000
--- a/tmux.conf
+++ /dev/null
@@ -1,232 +0,0 @@
-# ~/.tmux.conf
-
-###########################################################################
-# General options
-
-# Set profix to C-a.
-set -g prefix C-b
-unbind C-a
-
-# Default termtype. If the rcfile sets $TERM, that overrides this value.
-set -g default-terminal screen-256color
-
-# Ring the bell if any background window rang a bell
-set -g bell-action any
-
-# Watch for activity in background windows
-setw -g monitor-activity on
-set -g visual-activity on
-
-# scrollback size
-set -g history-limit 10000
-
-# set first window to index 1 (not 0) to map more to the keyboard layout
-set -g base-index 1
-setw -g pane-base-index 1
-
-# pass through xterm keys
-set -g xterm-keys on
-
-###########################################################################
-# General keymap
-
-# Keep your finger on ctrl, or don't, same result
-bind-key C-d detach-client
-bind-key C-c new-window
-bind-key C-p paste-buffer
-
-# Redraw the client (if interrupted by wall, etc)
-bind R refresh-client
-
-# reload tmux config
-unbind r
-bind r \
-    source-file ~/.tmux.conf \;\
-    display 'Reloaded tmux config.'
-
-# Use emacs keybindings for tmux commandline input.
-#set -g status-keys emacs
-
-# Use vi keybindings in copy and choice modes
-#setw -g mode-keys vi
-
-###########################################################################
-# Window management / navigation
-
-# move between windows
-#bind-key C-h previous-window
-#bind-key C-l next-window
-
-# C-\ (no prefix) to skip to last window we were in before this one
-bind -n "C-\\" last-window
-
-# C-Space (no prefix) to tab to next window
-bind -n C-Space next-window
-
-# C-Shift-Left swaps current window with window to the left.
-bind-key -n C-S-Left swap-window -t -1
-
-# C-Shift-Right swaps current window with window to the right.
-bind-key -n C-S-Right swap-window -t +1
-
-###########################################################################
-# Pane management / navigation
-
-# Horizontal splits with s or C-s
-#unbind s
-#unbind C-s
-#bind-key s split-window
-#bind-key C-s split-window
-bind | split-window -h
-
-# Vertical split with v or C-v
-#unbind v
-#unbind C-v
-#bind-key v split-window -h
-#bind-key C-v split-window -h
-bind - split-window -v
-
-# navigation with C-{h,j,k,l} -- NO PREFIX
-# https://gist.github.com/mislav/5189704
-
-#bind -n C-k run-shell 'tmux-vim-select-pane -U'
-#bind -n C-j run-shell 'tmux-vim-select-pane -D'
-#bind -n C-h run-shell 'tmux-vim-select-pane -L'
-#bind -n C-l run-shell 'tmux-vim-select-pane -R'
-
-# C-b C-k to passthrough a C-k
-# C-k is consumed for pane navigation but we want it for kill-to-eol
-unbind C-k
-bind C-k send-key C-k
-
-# Pane resize in all four directions using vi bindings.
-# Can use these raw but I map them to Cmd-Opt- in iTerm2.
-# http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
-# Note on a few prefix options: C-a = 0x01, C-b = 0x02, C-g = 0x06
-#bind-key J resize-pane -D
-#bind-key K resize-pane -U
-#bind-key H resize-pane -L
-#bind-key L resize-pane -R
-
-# easily toggle synchronization (mnemonic: e is for echo)
-# sends input to all panes in a given window.
-#bind e setw synchronize-panes on
-#bind E setw synchronize-panes off
-
-###########################################################################
-# Scrollback / pastebuffer
-
-# Vim-style copy/paste
-#unbind [
-#bind y copy-mode
-#unbind p
-#bind p paste-buffer
-#bind -t vi-copy v begin-selection
-#bind -t vi-copy y copy-selection
-#bind -t vi-copy Escape cancel
-
-###########################################################################
-# Mouse mode
-
-#set -g mode-mouse on
-#set -g mouse-resize-pane on
-#set -g mouse-select-pane on
-#set -g mouse-select-window on
-
-# Toggle mouse on
-bind m \
-    set -g mode-mouse on \;\
-    set -g mouse-resize-pane on \;\
-    set -g mouse-select-pane on \;\
-    set -g mouse-select-window on \;\
-    display 'Mouse: ON'
-
-# Toggle mouse off
-bind M \
-    set -g mode-mouse off \;\
-    set -g mouse-resize-pane off \;\
-    set -g mouse-select-pane off \;\
-    set -g mouse-select-window off \;\
-    display 'Mouse: OFF'
-
-###########################################################################
-# Color scheme (Solarized light)
-
-### default statusbar colors
-##set-option -g status-bg colour231 #base2
-##set-option -g status-fg colour130 #yellow
-##set-option -g status-attr default
-##
-### default window title colors
-##set-window-option -g window-status-fg colour180 #base00
-##set-window-option -g window-status-bg default
-##
-### active window title colors
-##set-window-option -g window-status-current-fg colour196 #orange
-##set-window-option -g window-status-current-bg default
-##
-### pane border
-##set-option -g pane-active-border-fg black
-##set-option -g pane-active-border-bg white
-##set-option -g pane-border-fg brightcyan
-##set-option -g pane-border-bg default
-##
-### message text
-##set-option -g message-bg colour231 #base2
-##set-option -g message-fg colour196 #orange
-##
-### pane number display
-##set-option -g display-panes-active-colour colour20 #blue
-##set-option -g display-panes-colour colour196 #orange
-##
-### clock
-##set-window-option -g clock-mode-colour colour40 #green
-
-###########################################################################
-# Color scheme (Solarized Dark)
-
-# default statusbar colors
-set-option -g status-bg brightgreen
-set-option -g status-fg white
-set-option -g status-attr default
-
-# default window title colors
-set-window-option -g window-status-fg brightcyan
-set-window-option -g window-status-bg default
-#set-window-option -g window-status-attr dim
-
-# active window title colors
-set-window-option -g window-status-current-fg white
-set-window-option -g window-status-current-bg blue
-#set-window-option -g window-status-current-attr bright
-
-# pane border
-set-option -g pane-border-fg brightgreen
-set-option -g pane-active-border-fg red
-
-# message text
-set-option -g message-bg black
-set-option -g message-fg red
-
-# pane number display
-set-option -g display-panes-active-colour red
-set-option -g display-panes-colour white
-
-# clock
-set-window-option -g clock-mode-colour cyan
-
-###########################################################################
-
-# List of plugins
-set -g @plugin 'tmux-plugins/tpm'
-set -g @plugin 'tmux-plugins/tmux-sensible'
-set -g @plugin 'tmux-plugins/tmux-resurrect'
-set -g @plugin 'tmux-plugins/tmux-continuum'
-
-# Other examples:
-# set -g @plugin 'github_username/plugin_name'
-# set -g @plugin 'git@github.com/user/plugin'
-# set -g @plugin 'git@bitbucket.com/user/plugin'
-
-# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
-run '~/.tmux/plugins/tpm/tpm'
diff --git a/tmux/plugins/tpm b/tmux/plugins/tpm
deleted file mode 160000
index 51ff07a7..00000000
--- a/tmux/plugins/tpm
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 51ff07a729b4b67f692936ad75cb0650149afbb4
diff --git a/unison-sync b/unison-sync
deleted file mode 160000
index b440fa12..00000000
--- a/unison-sync
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b440fa12287290e48e4aef00986b93d795e0c718
diff --git a/vars b/vars
deleted file mode 100644
index 830578d8..00000000
--- a/vars
+++ /dev/null
@@ -1,105 +0,0 @@
-#########################################################################
-# Temporary aliases useful for demos, other current projects
-#########################################################################
-
-export MYCODE=~/git
-export MYDOWNLOADS=~/Downloads
-export MYDOCUMENTS=~/Documents
-export MYECLIPSE=~/workspace
-export MYLOCAL=/local/${USER}/
-
-export OS=$(uname -s)
-
-#########################################################################
-# Tool settings
-#########################################################################
-
-# Set the default pager to less
-export PAGER="less"
-# Set less to have a default flag of -R (RAW) so color passes through
-export LESS="-R"
-
-#GPG_TTY=$(tty)
-#export GPG_TTY
-
-
-#########################################################################
-# Shell settings
-#########################################################################
-
-export HISTCONTROL=ignoredups:erasedups
-export HISTSIZE=2000
-export HISTFILESIZE=2000
-export HISTTIMEFORMAT="%F %T "
-
-export HOSTNAME=`hostname -s`
-
-COMP_WORDBREAKS="${COMP_WORDBREAKS}:"
-export EDITOR=vi
-export PAGER=less
-export PSSH_HOSTS=~/.hosts_file
-
-# List of all machines in our desktop "cluster".
-export CLUSTER="lightning gemini saturn jalapeno blackhawk hydrogen helium lithium nitrogen neon boron beryllium carbon oxygen"
-export POWER_IP="193.120.91.113"
-export POWER_PORT=2
-export POWERCYCLE="/local/$USER/work/svn/stbtools/trunk/share/python/power.py $POWER_IP $POWER_PORT cycle"
-if [ -d /local/$USER ]; then
-    export CCACHE_DIR=/local/$USER/.ccache
-fi
-export TMOUT=0
-
-# Go.
-export GOPATH=~/go
-export GOROOT=/usr/local/opt/go
-
-# Manpages colour schemes.
-# Mostly magenta...
-#export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode - red
-#export LESS_TERMCAP_md=$(printf '\e[01;35m') # enter double-bright mode - bold, magenta
-#export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-#export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-#export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode - yellow
-#export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-#export LESS_TERMCAP_us=$(printf '\e[04;36m') # enter underline mode - cyan
-# Bolder...
-export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
-export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
-export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
-export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
-
-#export SERVER=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}'`
-umask 002
-
-# Set vim as our default command line editor
-export EDITOR='vim'
-
-export XXDIFF_EDITOR="xterm -e 'vi %s'"
-export PYTHONSTARTUP=~/.pythonrc
-export PRINTER=baird
-
-# Set work proxy defaults.
-#export S3_PROXY="http://193.120.90.34:3128/"
-#export S3_PROXY="http://avproxyvlan.dublin.s3group.com:8080/"
-export S3_PROXY="http://avproxylan.dublin.s3group.com:8080/"
-export S3_AUTO_PROXY="http://proxy.s3group.com/proxy.pac"
-
-# Split into host and port.
-export S3_PROXY_HOST=$(echo ${S3_PROXY} | awk -F: '{printf("%s:%s\n",$1,$2);}')
-export S3_PROXY_PORT=$(echo ${S3_PROXY} | awk -F: '{print $3}' | sed 's:/::')
-export S3_NO_PROXY="localhost,127.0.0.0/8,10.0.0.0/8,.local,.s3group.com,192.168.249.0/24,192.168.248.0/24,193.120.88.0/24,192.168.249.25,git-mirrors,cmf-jenkins,jenkins-rdkcmf,rdkcmf-gerritmaster,protex"
-
-# virtualenvwrapper
-export WORKON_HOME=$HOME/.virtualenvs
-# All new environments isolated from the site-packages directory.
-export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
-# Use the same directory for virtualenvs as virtualenvwrapper.
-export PIP_VIRTUALENV_BASE=$WORKON_HOME
-# Make pip detect an active virtualenv and install to it
-export PIP_RESPECT_VIRTUALENV=true
-# Make pip only install into a virtualenv.
-export PIP_REQUIRE_VIRTUALENV=true
-
diff --git a/vim/.gitignore b/vim/.gitignore
deleted file mode 100644
index a0e76af9..00000000
--- a/vim/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.netrwhist
diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim
deleted file mode 100644
index 16c21feb..00000000
--- a/vim/autoload/pathogen.vim
+++ /dev/null
@@ -1,328 +0,0 @@
-" pathogen.vim - path option manipulation
-" Maintainer:   Tim Pope 
-" Version:      2.2
-
-" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
-"
-" For management of individually installed plugins in ~/.vim/bundle (or
-" ~\vimfiles\bundle), adding `call pathogen#infect()` to the top of your
-" .vimrc is the only other setup necessary.
-"
-" The API is documented inline below.  For maximum ease of reading,
-" :set foldmethod=marker
-
-if exists("g:loaded_pathogen") || &cp
-  finish
-endif
-let g:loaded_pathogen = 1
-
-function! s:warn(msg)
-  if &verbose
-    echohl WarningMsg
-    echomsg a:msg
-    echohl NONE
-  endif
-endfunction
-
-" Point of entry for basic default usage.  Give a relative path to invoke
-" pathogen#incubate() (defaults to "bundle/{}"), or an absolute path to invoke
-" pathogen#surround().  For backwards compatibility purposes, a full path that
-" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories()
-" instead.
-function! pathogen#infect(...) abort " {{{1
-  for path in a:0 ? reverse(copy(a:000)) : ['bundle/{}']
-    if path =~# '^[^\\/]\+$'
-      call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
-      call pathogen#incubate(path . '/{}')
-    elseif path =~# '^[^\\/]\+[\\/]\%({}\|\*\)$'
-      call pathogen#incubate(path)
-    elseif path =~# '[\\/]\%({}\|\*\)$'
-      call pathogen#surround(path)
-    else
-      call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
-      call pathogen#surround(path . '/{}')
-    endif
-  endfor
-  call pathogen#cycle_filetype()
-  return ''
-endfunction " }}}1
-
-" Split a path into a list.
-function! pathogen#split(path) abort " {{{1
-  if type(a:path) == type([]) | return a:path | endif
-  let split = split(a:path,'\\\@"),'!isdirectory(v:val)')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags'))
-        helptags `=dir.'/doc'`
-      endif
-    endfor
-  endfor
-endfunction " }}}1
-
-command! -bar Helptags :call pathogen#helptags()
-
-" Execute the given command.  This is basically a backdoor for --remote-expr.
-function! pathogen#execute(...) abort " {{{1
-  for command in a:000
-    execute command
-  endfor
-  return ''
-endfunction " }}}1
-
-" Like findfile(), but hardcoded to use the runtimepath.
-function! pathogen#runtime_findfile(file,count) abort "{{{1
-  let rtp = pathogen#join(1,pathogen#split(&rtp))
-  let file = findfile(a:file,rtp,a:count)
-  if file ==# ''
-    return ''
-  else
-    return fnamemodify(file,':p')
-  endif
-endfunction " }}}1
-
-" Backport of fnameescape().
-function! pathogen#fnameescape(string) abort " {{{1
-  if exists('*fnameescape')
-    return fnameescape(a:string)
-  elseif a:string ==# '-'
-    return '\-'
-  else
-    return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
-  endif
-endfunction " }}}1
-
-if exists(':Vedit')
-  finish
-endif
-
-let s:vopen_warning = 0
-
-function! s:find(count,cmd,file,lcd) " {{{1
-  let rtp = pathogen#join(1,pathogen#split(&runtimepath))
-  let file = pathogen#runtime_findfile(a:file,a:count)
-  if file ==# ''
-    return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
-  endif
-  if !s:vopen_warning
-    let s:vopen_warning = 1
-    let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE'
-  else
-    let warning = ''
-  endif
-  if a:lcd
-    let path = file[0:-strlen(a:file)-2]
-    execute 'lcd `=path`'
-    return a:cmd.' '.pathogen#fnameescape(a:file) . warning
-  else
-    return a:cmd.' '.pathogen#fnameescape(file) . warning
-  endif
-endfunction " }}}1
-
-function! s:Findcomplete(A,L,P) " {{{1
-  let sep = pathogen#separator()
-  let cheats = {
-        \'a': 'autoload',
-        \'d': 'doc',
-        \'f': 'ftplugin',
-        \'i': 'indent',
-        \'p': 'plugin',
-        \'s': 'syntax'}
-  if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
-    let request = cheats[a:A[0]].a:A[1:-1]
-  else
-    let request = a:A
-  endif
-  let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*'
-  let found = {}
-  for path in pathogen#split(&runtimepath)
-    let path = expand(path, ':p')
-    let matches = split(glob(path.sep.pattern),"\n")
-    call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
-    call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
-    for match in matches
-      let found[match] = 1
-    endfor
-  endfor
-  return sort(keys(found))
-endfunction " }}}1
-
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve       :execute s:find(,'edit',,0)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit    :execute s:find(,'edit',,0)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen    :execute s:find(,'edit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit   :execute s:find(,'split',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit  :execute s:find(,'vsplit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit   :execute s:find(,'pedit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread    :execute s:find(,'read',,1)
-
-" vim:set et sw=2:
diff --git a/vim/bundle/FuzzyFinder b/vim/bundle/FuzzyFinder
deleted file mode 160000
index b9f16597..00000000
--- a/vim/bundle/FuzzyFinder
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b9f165970346df55862853dd83c8a4f2b2b70262
diff --git a/vim/bundle/L9 b/vim/bundle/L9
deleted file mode 160000
index c822b05e..00000000
--- a/vim/bundle/L9
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c822b05ee0886f9a9703227dc85a6d47612c4bf1
diff --git a/vim/bundle/command-t b/vim/bundle/command-t
deleted file mode 160000
index 39b75707..00000000
--- a/vim/bundle/command-t
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 39b75707640493795afb4fb90b2d74cade84cee8
diff --git a/vim/bundle/sparkup b/vim/bundle/sparkup
deleted file mode 160000
index d400a570..00000000
--- a/vim/bundle/sparkup
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d400a570bf64b0c216aa7c8e1795820b911a7404
diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion
deleted file mode 160000
index 5c6f3cd9..00000000
--- a/vim/bundle/vim-easymotion
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5c6f3cd9a713491e6b32752a05c45198aa91540a
diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive
deleted file mode 160000
index 3439f999..00000000
--- a/vim/bundle/vim-fugitive
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3439f999b138254e4bb56187fc91f91f545b4b12
diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid
deleted file mode 160000
index 209f77c9..00000000
--- a/vim/bundle/vim-liquid
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 209f77c9550a90b0b88492c93852195c171f6ebd
diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown
deleted file mode 160000
index 5c21f167..00000000
--- a/vim/bundle/vim-markdown
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5c21f1677180b76310a05e5a9fce46de64c23041
diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease
deleted file mode 160000
index 3fa4aaba..00000000
--- a/vim/bundle/vim-scriptease
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3fa4aabaecc00a3ccec376d8e6e1af19465eefe2
diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible
deleted file mode 160000
index 9e91be7e..00000000
--- a/vim/bundle/vim-sensible
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9e91be7e0fb42949831fe3161ef583363648aa58
diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround
deleted file mode 160000
index 2d05440a..00000000
--- a/vim/bundle/vim-surround
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2d05440ad23f97a7874ebd9b5de3a0e65d25d85c
diff --git a/vim/bundle/vundle b/vim/bundle/vundle
deleted file mode 160000
index 49847675..00000000
--- a/vim/bundle/vundle
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4984767509e3d05ca051e253c8a8b37de784be45
diff --git a/vim/syntax/CVSAnnotate.vim b/vim/syntax/CVSAnnotate.vim
deleted file mode 100644
index 4af5809f..00000000
--- a/vim/syntax/CVSAnnotate.vim
+++ /dev/null
@@ -1,45 +0,0 @@
-" Vim syntax file
-" Language:	CVS annotate output
-" Maintainer:	Bob Hiestand 
-" Remark:	Used by the cvscommand plugin.  Originally written by Mathieu
-" Clabaut
-" License:
-" Copyright (c) 2007 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-
-if version < 600
-	syntax clear
-elseif exists("b:current_syntax")
-	finish
-endif
-
-syn match cvsDate 	/\d\d-...-\d\d/ 		contained
-syn match cvsName  	/(\S* /hs=s+1,he=e-1 		contained nextgroup=cvsDate
-syn match cvsVer 	/^\d\+\(\.\d\+\)\+/ 		contained nextgroup=cvsName
-syn region cvsHead 	start="^\d\+\.\d\+" end="):" 	contains=cvsVer,cvsName,cvsDate
-
-if !exists("did_cvsannotate_syntax_inits")
-	let did_cvsannotate_syntax_inits = 1
-	hi link cvsDate 	Comment
-	hi link cvsName	Type
-	hi link cvsVer	Statement
-endif
-
-let b:current_syntax="CVSAnnotate"
diff --git a/vim/syntax/SVKAnnotate.vim b/vim/syntax/SVKAnnotate.vim
deleted file mode 100644
index 3c53c3ca..00000000
--- a/vim/syntax/SVKAnnotate.vim
+++ /dev/null
@@ -1,42 +0,0 @@
-" Vim syntax file
-" Language:	SVK annotate output
-" Maintainer:	Bob Hiestand 
-" Remark:	Used by the vcscommand plugin.
-" License:
-" Copyright (c) 2007 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-
-if exists("b:current_syntax")
-	finish
-endif
-
-syn match svkDate /\d\{4}-\d\{1,2}-\d\{1,2}/ skipwhite contained
-syn match svkName /(\s*\zs\S\+/ contained nextgroup=svkDate skipwhite
-syn match svkVer /^\s*\d\+/ contained nextgroup=svkName skipwhite
-syn region svkHead start=/^/ end="):" contains=svkVer,svkName,svkDate oneline
-
-if !exists("did_svkannotate_syntax_inits")
-	let did_svkannotate_syntax_inits = 1
-	hi link svkName Type
-	hi link svkDate Comment
-	hi link svkVer Statement
-endif
-
-let b:current_syntax="svkAnnotate"
diff --git a/vim/syntax/logs-tmp.vim b/vim/syntax/logs-tmp.vim
deleted file mode 100644
index 4db1835b..00000000
--- a/vim/syntax/logs-tmp.vim
+++ /dev/null
@@ -1,38 +0,0 @@
-" Vim syntax file
-" Language:	Log files
-" Maintainer:	Jim Lawton (jim.lawton@gmail.com)
-" Last change:	August 13, 2008
-
-if version < 600
-    syntax clear
-elseif exists("b:current_syntax")
-    finish
-endif
-
-
-" shut case off
-syn case ignore
-
-"syn match   embraced  "\[[^\]]*\]" contains=ip,time
-"syn match   errorlv   "\[error\]\|\[warn\]\|\[notice\]"
-syn match   errorlv   "\[error\]\|\[warn\]\|\[notice\]\|\[info\]"
-syn match   errorlver "\[error\]"
-syn match   time      contained "[^0-9a-z]\([0-9]\{2}:\)\{2}[0-9]\{2}[^0-9a-z]" 
-syn match   ip        contained "[^0-9a-z]\([0-9]\{1,3}\.\)\{3}[0-9]\{1,3}[^0-9a-z]"
-"syn match   refer     "referer: http://.*"
-
-command -nargs=+ HiLink hi def link 
-
-"HiLink embraced   String
-HiLink errorlv    Comment 
-HiLink errorlver  Error
-HiLink time       Identifier
-HiLink ip         Special 
-"HiLink refer      Keyword 
-
-delcommand HiLink
-
-let b:current_syntax = "logs"
-
-" vim: ts=4 sw=4
-
diff --git a/vim/syntax/logs_old.vim b/vim/syntax/logs_old.vim
deleted file mode 100644
index 719a1a0b..00000000
--- a/vim/syntax/logs_old.vim
+++ /dev/null
@@ -1,50 +0,0 @@
-" Vim syntax file
-" Language:         Log files
-" Maintainer:       Jim Lawton 
-" Latest Revision:  2008-08-13
-
-if exists("b:current_syntax")
-  finish
-endif
-
-let s:cpo_save = &cpo
-set cpo&vim
-
-"syn match   messagesBegin       display '^' nextgroup=messagesDate
-"syn match   messagesPID         contained display '\[\zs\d\+\ze\]'
-"syn match   messagesKernel      '^kernel:'
-"syn match   messagesIP          '\d\+\.\d\+\.\d\+\.\d\+'
-"syn match   messagesURL         '\w\+://\S\+'
-"syn match   messagesText        contained display '.*'
-"                                \ contains=messagesNumber,messagesIP,messagesURL,messagesError
-
-"syn match   messagesNumber      '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*'
-
-syn match   messagesFatal       '^.*\<\(FATAL\|FAILED\|FAILURE\).*'
-syn match   messagesError       '^.*\<\(ERROR\|ERRORS\).*'
-syn match   messagesWarn        '^.*\<\(WARN\).*'
-syn match   messagesInfo        '^.*\<\(INFO\).*'
-syn match   messagesEnter       '^.*\<\(ENTER\).*'
-syn match   messagesExit        '^.*\<\(EXIT\).*'
-
-"hi def link messagesDate        Constant
-"hi def link messagesHour        Type
-"hi def link messagesHost        Identifier
-"hi def link messagesLabel       Operator
-"hi def link messagesPID         Constant
-"hi def link messagesKernel      Special
-hi def link messagesFatal       ErrorMsg
-hi def link messagesError       Operator
-hi def link messagesWarn        Identifier
-hi def link messagesInfo        Keyword
-"hi def link messagesIP          Constant
-"hi def link messagesURL         Underlined
-"hi def link messagesText        Normal
-"hi def link messagesNumber      Number
-hi def link messagesEnter       Type
-hi def link messagesExit        Type
-
-let b:current_syntax = "messages"
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/vim/syntax/nds-logs.vim b/vim/syntax/nds-logs.vim
deleted file mode 100644
index 815fe27c..00000000
--- a/vim/syntax/nds-logs.vim
+++ /dev/null
@@ -1,44 +0,0 @@
-" Vim syntax file
-" Language:         Log files
-" Maintainer:       Jim Lawton 
-" Latest Revision:  2008-08-13
-
-if exists("b:current_syntax")
-  finish
-endif
-
-let s:cpo_save = &cpo
-set cpo&vim
-
-syn match   messages            display '^NDS: \^[^>]*> ' contains=messagesDate,messagesSeverity,messagesComponent,messagesInfo,message nextgroup=messagesDate
-syn match   messagesDate        contained display '\^\d\+\.\d\+ ' nextgroup=messagesSeverity
-syn match   messagesSeverity    contained display '\![A-Z]* *' contains=messagesFatal,messagesError,messagesWarn,messagesInfo,messagesEnter,messagesExit nextgroup=messagesComponent
-syn match   messagesComponent   contained display '-[^ ]* *' contains=wlm nextgroup=messagesStuff
-syn match   wlm                 contained display 'WLM_[^ ]*'
-syn match   messagesStuff       contained display '<[^>]*> *' contains=messagesFunction
-syn match   messagesFunction    contained display 'F:[^@]*'hs=s+2
-
-syn match   messagesFatal       contained display '!FATAL'
-syn match   messagesError       contained display '!ERROR'
-syn match   messagesWarn        contained display '!WARN'
-syn match   messagesInfo        contained display '!INFO'
-syn match   messagesEnter       contained display '!ENTER'
-syn match   messagesExit        contained display '!EXIT'
-
-hi def link messagesDate        Constant
-hi def link messagesSeverity    Special
-hi def link messagesComponent   Identifier
-hi def link messagesStuff       Normal
-hi          messagesFunction    ctermfg=3
-hi          wlm                 cterm=bold ctermfg=3
-hi def link messagesFatal       ErrorMsg
-hi def link messagesError       ErrorMsg
-hi def link messagesWarn        Identifier
-hi def link messagesEnter       Type
-hi def link messagesExit        Type
-
-let b:current_syntax = "messages"
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
diff --git a/vim/syntax/ndslog.vim b/vim/syntax/ndslog.vim
deleted file mode 100644
index dc81dd82..00000000
--- a/vim/syntax/ndslog.vim
+++ /dev/null
@@ -1,43 +0,0 @@
-" Vim syntax file
-" Language:         Log files
-" Maintainer:       Jim Lawton 
-" Latest Revision:  2008-08-13
-
-if exists("b:current_syntax")
-  finish
-endif
-
-let s:cpo_save = &cpo
-set cpo&vim
-
-syn match   messages            display '^NDS: \^[^>]*> ' contains=messagesDate,messagesSeverity,messagesComponent,messagesInfo,message nextgroup=messagesDate
-syn match   messagesDate        contained display '\^\d\+\.\d\+ ' nextgroup=messagesSeverity
-syn match   messagesSeverity    contained display '\![A-Z]* *' contains=messagesFatal,messagesError,messagesWarn,messagesInfo,messagesEnter,messagesExit nextgroup=messagesComponent
-syn match   messagesComponent   contained display '-[^ ]* *' contains=wlm nextgroup=messagesStuff
-syn match   wlm                 contained display 'WLM_[^ ]*'
-syn match   messagesStuff       contained display '<[^>]*> *' contains=messagesFunction 
-syn match   messagesFunction    contained display 'F:[^@]*'hs=s+2
-
-syn match   messagesFatal       contained display '!FATAL'
-syn match   messagesError       contained display '!ERROR'
-syn match   messagesWarn        contained display '!WARN'
-syn match   messagesInfo        contained display '!INFO'
-syn match   messagesEnter       contained display '!ENTER'
-syn match   messagesExit        contained display '!EXIT'
-
-hi def link messagesDate        Constant
-hi def link messagesSeverity    Special
-hi def link messagesComponent   Identifier
-hi def link messagesStuff       Normal
-hi          messagesFunction    ctermfg=3
-hi          wlm                 cterm=bold ctermfg=3
-hi def link messagesFatal       ErrorMsg
-hi def link messagesError       ErrorMsg
-hi def link messagesWarn        Identifier
-hi def link messagesEnter       Type
-hi def link messagesExit        Type
-
-let b:current_syntax = "messages"
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/vim/syntax/svn.vim b/vim/syntax/svn.vim
deleted file mode 100644
index ffa80f04..00000000
--- a/vim/syntax/svn.vim
+++ /dev/null
@@ -1,57 +0,0 @@
-" Vim syntax file
-" Language:	SVN commit file
-" Maintainer:	Ben Collins 
-" URL:		XXX
-" Last Change:	Tue Oct 22 00:22:19 EDT 2002
-
-" Based on the similar CVS commit file syntax
-
-" Place this file as ~/.vim/syntax/svn.vim
-"
-" Then add the following lines to ~/.vimrc
-"
-" au BufNewFile,BufRead  svn-commit.* setf svn
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-	syntax clear
-elseif exists("b:current_syntax")
-	finish
-endif
-
-syn cluster svnChange contains=svnAdd,svnDel,svnMod,svnProp
-syn match svnLine /^--This line, and those below, will be ignored--$/ skipwhite skipnl skipempty nextgroup=@svnChange
-syn match svnAdd /^A[M ]   .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange 
-syn match svnDel /^D[M ]   .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange 
-syn match svnMod /^M[M ]   .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange 
-syn match svnProp /^_[M ]   .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange 
-
-"The following is the old SVN template format markings
-"
-"syn region svnLine start="^SVN:" end="$" contains=svnAdd,svnDel,svnMod
-"syn match svnAdd   contained "   [A_][ A]   .*"
-"syn match svnDel   contained "   [D_][ D]   .*"
-"syn match svnMod   contained "   [M_][ M]   .*"
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_svn_syn_inits")
-	if version < 508
-		let did_svn_syn_inits = 1
-		command -nargs=+ HiLink hi link 
-	else
-		command -nargs=+ HiLink hi def link 
-	endif
-
-	HiLink svnAdd		Structure
-	HiLink svnDel		SpecialChar
-	HiLink svnMod		PreProc
-	HiLink svnProp		Keyword
-	HiLink svnLine		Comment
-
-	delcommand HiLink
-endif
-
-let b:current_syntax = "svn"
diff --git a/vim/syntax/svnlog.vim b/vim/syntax/svnlog.vim
deleted file mode 100644
index f2944528..00000000
--- a/vim/syntax/svnlog.vim
+++ /dev/null
@@ -1,93 +0,0 @@
-" Vim syntax file
-" Language:     SVN log file
-" Maintainer:   Adam Lazur 
-" URL:          XXX
-" Last Change:  $Date: 2005-04-16 23:27:24 -0400 (Sat, 16 Apr 2005) $
-
-" 1) Place this file in ~/.vim/syntax
-"
-" 2a) Then add the following lines to ~/.vimrc
-"
-"       au BufNewFile,BufRead  svn-log.* setf svn
-"
-" 2b) Or for autodetection, make a ~/.vim/scripts.vim with the following:
-"
-"       if did_filetype()       " filetype already set...
-"           finish              " ...then don't do these checks
-"       endif
-"       if getline(1) =~ /^-\{72}$/
-"           setfiletype svnlog
-"       endif
-
-
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-    syntax clear
-elseif exists("b:current_syntax")
-    finish
-endif
-
-
-syn match svnLogSeparator /^-\{72}$/ skipwhite skipnl skipempty nextgroup=svnRevision
-
-syn cluster svnLogInfoLine contains=svnRevision,svnLogUser,@svnLogDate,svnLogLines,svnLogInfoSeparator
-
-syn match svnRevision /[r:]\d\+/ contained
-
-syn match svnLogUser /\S\+/ contained
-syn match svnLogInfoSeparator /|/ skipwhite nextgroup=@svnLogInfoLine
-syn cluster svnLogDate contains=svnLogDateStamp,svnLogDateHuman
-syn match svnLogDateStamp /\d\{4}-\d\d-\d\d \d\d:\d\d:\d\d -\d\{4}/ skipwhite nextgroup=svnLogDateHuman
-syn match svnLogDateHuman /(.\D\{3} \d\d \D\{3} \d\{4})/he=e-1,hs=s+1 skipwhite nextgroup=svnLogInfoSeparator
-syn match svnLogLines /\d\+ lines\?/ skipnl nextgroup=svnChangedPaths,svnLogComment
-
-" Changed paths highlighting
-syn region svnChangedPaths start=/^Changed paths:$/ end=/^$/ transparent contains=svnChangeLine,svnChange nextgroup=svnLogComment
-
-syn match svnChangeLine /^Changed paths:$/ skipwhite skipnl skipempty contained nextgroup=@svnChange
-syn cluster svnChange contains=svnChangeAdd,svnChangeDel,svnChangeMod,svnChangeCopy
-syn match svnChangeDel /^   D .\+$/ contained skipnl nextgroup=@svnChange
-syn match svnChangeMod /^   M .\+$/ contained skipnl nextgroup=@svnChange
-syn match svnChangeAdd /^   A [^ ]\+/ contained skipnl nextgroup=@svnChange
-syn match svnChangeCopy /^   A [^ ]* (from [^)]\+)$/ contained skipnl nextgroup=@svnChange contains=svnRevision
-
-" The comment is a region, we're cheating and swallowing the next
-" svnLogSeparator, but we add a contains to it'll highlight okay (breaks
-" comments containing svnLogSeparator... but that shouldn't be super common)
-syn region svnLogComment start=/\n/ end=/^-\{72}$/ skipnl keepend nextgroup=svnRevision contains=svnLogSeparator
-
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_svnlog_syn_inits")
-    if version < 508
-        let did_svnlog_syn_inits = 1
-        command -nargs=+ HiLink hi link 
-    else
-        command -nargs=+ HiLink hi def link 
-    endif
-
-    HiLink svnLogSeparator      Comment
-    HiLink svnLogInfoSeparator  Comment
-    HiLink svnRevision          Label
-    HiLink svnLogUser           Normal
-    HiLink svnLogDateStamp      Comment
-    HiLink svnLogDateHuman      Comment
-    HiLink svnLogLines          Comment
-
-    HiLink svnLogComment        Normal
-
-    HiLink svnChangeLine        Comment
-    HiLink svnChangeAdd         Identifier
-    HiLink svnChangeDel         WarningMsg
-    HiLink svnChangeMod         PreProc
-    HiLink svnChangeCopy        SpecialKey
-
-
-    delcommand HiLink
-endif
-
-let b:current_syntax = "svnlog"
diff --git a/vim/syntax/vts_log.vim b/vim/syntax/vts_log.vim
deleted file mode 100644
index 0dfcdfb2..00000000
--- a/vim/syntax/vts_log.vim
+++ /dev/null
@@ -1,30 +0,0 @@
-" Vim syntax file
-" Language:	vts log 
-" Maintainer:	Wenzhi Liang 
-" Last Change:	May 2007
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-" if version < 600
-" syntax clear
-" elseif exists("b:current_syntax")
-" finish
-" endif
-
-syntax clear
-syn match vtslog_Pass		'^PASS '
-syn match vtslog_Comment	'^COMMENT '
-syn match vtslog_Fail		'^FAIL .*'
-syn match vtslogStart		'^START.*'
-syn match vtslogEnd		'^END.*'
-
-hi link vtslog_Pass		Keyword
-hi link vtslog_Comment		Keyword
-hi link vtslog_Fail		Error
-hi link vtslogStart		Visual
-hi link vtslogEnd		Visual
-
-
-" let b:current_syntax = "vtslog"
-
-"EOF	vim: ts=8 noet tw=100 sw=8 sts=0