diff --git a/copy_dotfiles.sh b/copy_dotfiles.sh index 9eaab9a..775982b 100755 --- a/copy_dotfiles.sh +++ b/copy_dotfiles.sh @@ -1,36 +1,37 @@ -#!/bin/zsh +#!/bin/sh -echo_and_execute() { echo "executing: $@" && "$@" } +echo_and_execute() { + echo "executing: $@" && "$@" +} copy_file() { - local from=$1 - local to=$2 - local filename=$(basename $from) - [[ -e $to/$filename ]] && rm $to/$filename - echo_and_execute cp -RPp $from $to/$filename + from=$1 + to=$2 + filename=$(basename "$from") + [ -e "$to/$filename" ] && rm "$to/$filename" + echo_and_execute cp -RPp "$from" "$to/$filename" } copy_dir() { - local from=$1 - local to=$2 - pushd $from > /dev/null - local directories=(`find . -mindepth 1 -maxdepth 1 -type d`) - for dir in $directories; do - [[ -d $to/$dir ]] && rm -rf $to/$dir - echo_and_execute cp -RPp $dir $to/$dir + from=$1 + to=$2 + prev_dir=$(pwd) + cd "$from" || return 1 + find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do + [ -d "$to/$dir" ] && rm -rf "$to/$dir" + echo_and_execute cp -RPp "$dir" "$to/$dir" done - local files=(`find . -mindepth 1 -maxdepth 1 -type f`) - for file in $files; do - copy_file $file $to + find . -mindepth 1 -maxdepth 1 -type f | while read -r file; do + copy_file "$file" "$to" done - popd > /dev/null + cd "$prev_dir" || return 1 } sym_link() { - [[ ! -e "$1" ]] && echo "skipping link, target does not exist: $1" && return - [[ -h "$2" ]] && rm $2 - [[ -f "$2" || -d "$2" ]] && rm -rf $2 - echo_and_execute ln -s $1 $2 + ! [ -e "$1" ] && echo "skipping link, target does not exist: $1" && return + [ -h "$2" ] && rm "$2" + test -f "$2" -o -d "$2" && rm -rf "$2" + echo_and_execute ln -s "$1" "$2" } echo "---- copying dotfiles ------------------" @@ -47,12 +48,12 @@ copy_dir src_files/.local/bin $DIR_BIN copy_dir src_files/.local/scripts $DIR_SCRIPTS # macOS overrides as needed -[[ "$OSTYPE" = *"darwin"* ]] && copy_dir src_files/bin_overrides_macos $DIR_BIN +case "$OSTYPE" in *darwin*) copy_dir src_files/bin_overrides_macos $DIR_BIN;; esac # obsidian uses a per-vault config model, so copy to all target vaults/dirs -for obs_dir in "${OBSIDIAN_WORKSPACES_TO_CONFIGURE[@]}"; do - [[ ! -d "$obs_dir/.obsidian" ]] && mkdir "$obs_dir/.obsidian" - copy_dir $XDG_CONFIG_HOME/obsidian "$obs_dir/.obsidian" +IFS=","; for obs_dir in $OBSIDIAN_WORKSPACES_TO_CONFIGURE; do + ! [ -d "$obs_dir/.obsidian" ] && mkdir "$obs_dir/.obsidian" + copy_dir "$XDG_CONFIG_HOME/obsidian" "$obs_dir/.obsidian" done # TODO: get reaper config set up diff --git a/docs/post-run.md b/docs/post-run.md index 4d5e097..e7e5018 100644 --- a/docs/post-run.md +++ b/docs/post-run.md @@ -5,8 +5,8 @@ - shell - check user's shell using `echo $SHELL` or otherwise - if not the desired shell: - - `chsh -l` to see options; if target shell isn't listed, then add it - to `/etc/shells` + - `cat /etc/shells` (or `chsh -l` if supported) to see options + - if target shell isn't listed, add it to `/etc/shells` - then change the shell with `chsh -s ` ## macOS diff --git a/src_files/.config/nvim/lua/key_mappings.lua b/src_files/.config/nvim/lua/key_mappings.lua index cd89cf9..6fb4172 100644 --- a/src_files/.config/nvim/lua/key_mappings.lua +++ b/src_files/.config/nvim/lua/key_mappings.lua @@ -22,13 +22,13 @@ vim.keymap.set("n", "N", "Nzv") -- maintain cursor position after paragraph formatting vim.keymap.set("n", "=ap", "mF=ap'F") --- shortcuts for deleting into the void register -vim.keymap.set({ "n", "v" }, "d", [["_d]]) -vim.keymap.set("x", "P", [["_dP]]) -- replace selected text, keep main register +-- replace selected text, keep main register +vim.keymap.set("x", "P", [["_dP]]) -- shortcuts for using + register (system clipboard) vim.keymap.set({ "n", "v" }, "y", [["+y]]) vim.keymap.set("n", "Y", [["+Y]]) +vim.keymap.set({ "n", "v" }, "d", [["+d]]) vim.keymap.set("n", "D", [["+D]]) vim.keymap.set("n", "p", [["+p]]) diff --git a/src_files/.config/nvim/lua/util_functions.lua b/src_files/.config/nvim/lua/util_functions.lua index 4a0a679..fee1bc6 100644 --- a/src_files/.config/nvim/lua/util_functions.lua +++ b/src_files/.config/nvim/lua/util_functions.lua @@ -80,6 +80,7 @@ function ToggleWritingMode() vim.opt_local.relativenumber = true vim.opt_local.signcolumn = "yes" vim.opt_local.cursorline = true + vim.api.nvim_set_hl(0, 'SpellCap', vim.g.wrmode_prev_hl_spellcap or {}) vim.opt_local.spell = false -- vim.opt_local.wrap = true -- TODO: needed? vim.opt_local.textwidth = 0 @@ -98,6 +99,8 @@ function ToggleWritingMode() local writing_pane = vim.api.nvim_get_current_win() EnableWritingModeUiForCurrentWindow() vim.opt_local.spell = true + vim.g.wrmode_prev_hl_spellcap = vim.api.nvim_get_hl(0, { name = 'SpellCap' }) + vim.api.nvim_set_hl(0, 'SpellCap', {}) vim.opt_local.textwidth = window_width vim.opt_local.scrolloff = 14 vim.opt_local.formatoptions:append('t') diff --git a/src_files/.config/zsh/.zprofile b/src_files/.config/zsh/.zprofile deleted file mode 100644 index e69de29..0000000 diff --git a/src_files/.config/zsh/.zshrc b/src_files/.config/zsh/.zshrc index e12b88c..67d6fd9 100644 --- a/src_files/.config/zsh/.zshrc +++ b/src_files/.config/zsh/.zshrc @@ -5,6 +5,9 @@ set -o vi export PATH=$DIR_BIN:$DIR_SCRIPTS:$PATH:$XDG_DATA_HOME export PATH=$PATH:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/bin +# set env vars specific to this box, if any +[ -r "$HOME/.local-box-vars" ] && . $HOME/.local-box-vars + # shortcuts for common commands alias 3e='echo;echo;echo' alias 12e='3e;3e;3e;3e' @@ -28,15 +31,36 @@ alias note="cd $DIR_NOTES/inbox; $EDITOR" alias todo="cd $DIR_NOTES/rhythm; $EDITOR todo.md" alias budget="open $DIR_HOME_BOX/finance/budget/.current" +# login shortcuts +alias assume="source assume" +alias login-aws='aws sso login --profile' +alias login-aws-id-list="grep sso_account_id $HOME/.aws/config" + +# git stuff +alias gfo='git fetch origin' +alias gfl='git fetch origin; git log' +alias gpo='git pull origin' +alias gppo='git push origin' +alias gst='git status' +alias git-push-to-temp='git branch -D temp; git checkout -b temp; git push origin temp -uf; git checkout -' +alias gptemp='git-push-to-temp' + +# code/test/linter run and build commands +alias bel='bundle exec standardrb' +alias bet='bundle exec rspec' +alias lintjs='npx prettier --write' +alias prl='poetry run black' +alias prt='poetry run pytest' + +# containerization +alias docker=podman + # misc commands alias pdt='ping -c 2 drinkingtea.net' alias ppw='ping -c 2 pinewoods.xyz' alias weather='curl "wttr.in/dfw?2&F"' alias shrug='echo "¯\\_(ツ)_/¯"' -# source extensions and system-specific files -[[ -a "$ZDOTDIR/zsh-general-dev" ]] && . "$ZDOTDIR/zsh-general-dev" - # programming and language setup [[ -n $(command -v mise) ]] && eval "$(mise activate zsh)" export DEVKITARM=/opt/devkitpro/devkitARM diff --git a/src_files/.config/zsh/zsh-general-dev b/src_files/.config/zsh/zsh-general-dev deleted file mode 100644 index 0e9424e..0000000 --- a/src_files/.config/zsh/zsh-general-dev +++ /dev/null @@ -1,26 +0,0 @@ -# set env vars, path updates, etc -[[ -a $HOME/.local-box-vars ]] && . $HOME/.local-box-vars - -# login shortcuts -alias assume="source assume" -alias login-aws='aws sso login --profile' -alias login-aws-id-list="grep sso_account_id $HOME/.aws/config" - -# git stuff -alias gfo='git fetch origin' -alias gfl='git fetch origin; git log' -alias gpo='git pull origin' -alias gppo='git push origin' -alias gst='git status' -alias git-push-to-temp='git branch -D temp; git checkout -b temp; git push origin temp -uf; git checkout -' -alias gptemp='git-push-to-temp' - -# code/test/linter run and build commands -alias bel='bundle exec standardrb' -alias bet='bundle exec rspec' -alias lintjs='npx prettier --write' -alias prl='poetry run black' -alias prt='poetry run pytest' - -# containerization -alias docker=podman diff --git a/src_files/shell/profile b/src_files/shell/profile index e3f0c4b..81a5c96 100644 --- a/src_files/shell/profile +++ b/src_files/shell/profile @@ -39,7 +39,7 @@ export ZDOTDIR="$XDG_CONFIG_HOME/zsh" # may already be set, set anyway export GIT_EDITOR="$EDITOR" # obsidian -export OBSIDIAN_WORKSPACES_TO_CONFIGURE=("$DIR_NOTES") +export OBSIDIAN_WORKSPACES_TO_CONFIGURE="$DIR_NOTES," # ,-delimitted list of dirs # reaper export DIR_REAPER_PORTABLE_SHARED="$DIR_USER_OPT/reaper-portable/shared"