From abd53d2cc5262799b7402d1cc9c1db119c7f9239 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 19 Jun 2026 15:58:41 -0500 Subject: [PATCH] Update with changes in 2026. --- .alacritty.toml | 16 ++-- .bashrc | 235 +++++++++++++++++++++++++++++++++++++----------- .gitconfig | 9 +- .gitignore | 4 + .tmux.conf | 3 +- .vimrc | 45 ++++++---- 6 files changed, 233 insertions(+), 79 deletions(-) diff --git a/.alacritty.toml b/.alacritty.toml index 0b608f8..54cd28e 100644 --- a/.alacritty.toml +++ b/.alacritty.toml @@ -26,11 +26,13 @@ foreground = "#cacaca" [colors] indexed_colors = [ { index = 16, color = "#181810" }, + { index = 22, color = "#183810" }, + { index = 52, color = "#281810" }, { index = 94, color = "#af5f00" } ] [font.normal] -family = "Terminus" +family = "Terminus (TTF)" style = "Regular" @@ -68,7 +70,7 @@ style = "Regular" #white = '#005f87' #[font.normal] -#family = "Terminus" +#family = "Terminus (TTF)" #style = "Bold" @@ -78,15 +80,15 @@ style = "Regular" size = 15.0 [font.bold] -family = "Terminus" +family = "Terminus (TTF)" style = "Bold" [font.bold_italic] -family = "Terminus" +family = "Terminus (TTF)" style = "Bold Italic" [font.italic] -family = "Terminus" +family = "Terminus (TTF)" style = "Italic" [[mouse.bindings]] @@ -102,3 +104,7 @@ mouse = "Right" [terminal.shell] args = ["--login"] program = "/bin/bash" + +[window] +#opacity = 0.80 +opacity = 1.0 diff --git a/.bashrc b/.bashrc index b247061..b3a8c05 100644 --- a/.bashrc +++ b/.bashrc @@ -1,73 +1,202 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" +fi + +export EDITOR=vim + +sshAgentPid=`pgrep ssh-agent` +if [[ $sshAgentPid == "" ]]; then + ssh-agent > ~/.ssh/agent-env.sh +fi +source ~/.ssh/agent-env.sh + + # requires the following utilities: # git # GNU coreutils (for realpath) # BSD basename prompt_command() { - local retval=$? - local branch=""; - local clean=""; - local cols=$COLUMNS + local retval=$? + local branch="" + local branchLength=0 + local clean="" + local workingDir="" - local numcolor="\[\e[0;33m\]" - local red="\[\e[0;31m\]" - local sepcolor="\[\e[1;30m\]" - local yellow="\[\e[0;33m\]" - local brightyellow="\[\e[1;33m\]" - local brightblue="\[\e[1;34m\]" - local default="\[\e[0m\]" - local green="\[\e[0;32m\]" + local numcolor="\[\e[0;33m\]" + local red="\[\e[0;31m\]" + local sepcolor="\[\e[1;30m\]" + local default="\[\e[0m\]" + local green="\[\e[0;32m\]" + local cyan="\[\e[0;94m\]" + local columns="${COLUMNS:-80}" - if [[ $retval != 0 ]]; then - numcolor="\[\e[1;41;33m\]" - fi + if [[ ! $columns =~ ^[0-9]+$ ]] || (( columns <= 0 )); then + columns=80 + fi + local longPromptThreshold=$(( columns / 3 )) - if git branch &>/dev/null; then - branch="$green$(git branch 2>/dev/null | grep \* | cut -d ' ' -f 2-)" - clean=$(git status | grep clean) - if [ -z "$clean" ]; then clean="${red}✗"; else clean=""; fi - fi + if [[ $retval -ne 0 ]]; then + numcolor="\[\e[1;41;33m\]" + fi - userHost="${debian_chroot:+($debian_chroot)}$numcolor\!$red \u$sepcolor@${brightblue}\h${default}:${branch}${clean}" - userHostExp="${debian_chroot:+($debian_chroot)}\! \u@\h:${branch}${clean}" - userHostExp=${userHostExp@P} + # If we're in a git repo + local repoDir + if repoDir=$(git rev-parse --show-toplevel 2>/dev/null); then + local branchName + local branchPrompt + local relDir - wrkDir="$default\w$green" - wrkDirExp="\w" - wrkDirExp=${wrkDirExp@P} - - userPrompt="\$${default}" - - if (( ${#userHostExp} + ${#wrkDirExp} < $cols - 20 )); then - # We can fit everything on one line - # echo "Oneline: $((${#userHostExp} + ${#wrkDirExp})) < $(($cols - 20))" - PS1="${userHost} ${wrkDir}${userPrompt} " - elif (( ${#userHostExp} + ${#wrkDirExp} < $cols + 6 )); then - # We just need to put the prompt on it's own line - # echo "Twoline: $((${#userHostExp} + ${#wrkDirExp})) < $(($cols + 6))" - PS1="\n${userHost} ${wrkDir}\n${userPrompt} " + if branchName=$(git symbolic-ref --quiet --short HEAD 2>/dev/null); then + : + elif branchName=$(git describe --tags --exact-match 2>/dev/null); then + branchName="tag:${branchName}" + elif branchName=$(git rev-parse --short HEAD 2>/dev/null); then + branchName="detached:${branchName}" else - # We need to put the userHost on it's own line - PS1="\n${userHost}\n" - - if (( ${#wrkDirExp} < $cols - 20 )); then - # We can fit the prompt and working dir on one line - # echo "Twoline2: $(( ${#wrkDirExp} )) < $(($cols - 20 ))" - PS1+="${wrkDir}${userPrompt} " - else - # We have to put the prompt on it's own line - # echo "Threeline" - PS1+="${wrkDir}\n${userPrompt} " - fi + branchName="" fi - unset clean numcolor branch retval cols - unset userHost userHostExp wrkDir wrkDirExp userPrompt userPromptExp + if [[ -n $branchName ]]; then + branchLength=${#branchName} + branchPrompt=$branchName + branchPrompt=${branchPrompt//\\/\\\\} + branchPrompt=${branchPrompt//$/\\\$} + branchPrompt=${branchPrompt//\`/\\\`} + branch="$cyan${branchPrompt}" + fi + + if [[ -n $(git status --porcelain 2>/dev/null) ]]; then + clean="${red}++" + fi + + relDir=$(realpath "--relative-to=${repoDir}" "${PWD}") + workingDir=$(basename "${repoDir}") + if [[ $relDir != "." ]]; then + workingDir+="/${relDir}" + fi + else + workingDir=$PWD + fi + + local workingDirPrompt=$workingDir + workingDirPrompt=${workingDirPrompt//\\/\\\\} + workingDirPrompt=${workingDirPrompt//$/\\\$} + workingDirPrompt=${workingDirPrompt//\`/\\\`} + + PS1="$numcolor\!$red \u$sepcolor@${green}\h${default}:${branch}${clean} " + + # Add a linebreak if the branch name + working dir will make the line + # overly long. + if (( branchLength + ${#workingDir} > longPromptThreshold )); then + PS1="\r\n${PS1}\r\n" + fi + + PS1+="$default$workingDirPrompt" + + # If the working dir is itself too long, put it on its own line and put + # the prompt below it. + if (( ${#workingDir} > longPromptThreshold )); then + PS1+="\r\n" + fi + + PS1+="${green}\\\$${default} " } PROMPT_COMMAND=prompt_command -eval "$(thefuck --alias fixit)" set -o vi -source ~/.bash_aliases + +eval "$(mise activate bash)" diff --git a/.gitconfig b/.gitconfig index 24e9bec..4085b79 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,12 +1,17 @@ [user] name = Jonathan Bernard - email = jdb@jdb-labs.com + email = jonathan@jdbernard.com [color] branch = auto diff = auto interactive = auto status = auto [alias] + pfo = pull origin --ff-only lol = log --graph --decorate --oneline lola = log --graph --decorate --oneline --all - +[core] + editor = vim + excludesFile = ~/.gitignore +[init] + defaultBranch = main diff --git a/.gitignore b/.gitignore index 45d62d8..33193d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ +.worktrees +*Zone.Identifier *.sw? +/nimble.paths +slfmt.config.json diff --git a/.tmux.conf b/.tmux.conf index 11d9580..09910f2 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -15,13 +15,14 @@ set-option -ga terminal-overrides ",xterm-256color:Tc" set -g status-style 'bg=#181810' -set -g status-bg black set -g status-fg white set -g status-justify centre set -g status-left '#[fg=green][ #[fg=magenta]jdb-mg-element-win10#[fg=green,nobright] ][' set -g status-left-length 70 set -g status-right '#[fg=green]][ #[fg=brightblue]%m-%d #[fg=brightgreen]%H:%M #[fg=green]]' set -g status-right-length 20 +set -g window-status-format " #I:#W " +set -g window-status-current-format "#[fg=yellow] #I:#W " set -g repeat-time 0 # Always create the main window group and session if it doesn't exist. Then, diff --git a/.vimrc b/.vimrc index 37ffaeb..769f17d 100644 --- a/.vimrc +++ b/.vimrc @@ -12,7 +12,7 @@ set softtabstop=0 set textwidth=79 set signcolumn=yes set cursorline -set fo-=l fo+=rot +set fo-=l fo+=rotn syntax enable packadd matchit @@ -22,16 +22,24 @@ filetype indent on " Highlighiting fixes to avoid unreadable text "highlight Folded term=standout ctermfg=3 ctermbg=256 -highlight Folded term=standout ctermfg=5 ctermbg=0 +" highlight Folded term=standout ctermfg=5 ctermbg=0 +highlight Folded ctermfg=7 ctermbg=235 highlight SignColumn ctermbg=8 highlight Visual term=reverse ctermbg=7 ctermfg=1 guibg=LightGrey hi SpellBad term=reverse ctermbg=1 ctermfg=7 gui=undercurl guisp=Red +hi DiffAdd ctermbg=22 +hi DiffChange ctermbg=52 +hi DiffDelete ctermbg=52 ctermfg=8 +hi DiffText ctermfg=NONE ctermbg=22 cterm=NONE + let g:EditorConfig_max_line_indicator = 'exceeding' " Diable ALE in-line error highlighting and rely on the markers in the gutter. highlight clear ALEError highlight link ALEError NONE +hi Search ctermfg=0 cterm=bold + let mapleader=" " let g:markdown_recommended_style=0 @@ -40,20 +48,30 @@ autocmd BufRead,BufNewFile *.pco setlocal filetype=chordpro autocmd BufRead,BufNewFile *.yaml setlocal fo=croqt autocmd BufRead,BufNewFile *.nim setlocal fo=croqt autocmd BufRead,BufNewFile *.ts setlocal fo=croqt +autocmd BufRead,BufNewFile *.vue setlocal comments=s:,lb://,sr:/*,mb:*,e:*/ foldmethod=marker + +autocmd BufRead *.nim set foldmethod=manual " Set/load the view when switching buffers. Used to use to preserve folding. -" Stopped because weirder things were happening. +" Stopped using this because weirder things were happening. " autocmd BufEnter *.* silent loadview " autocmd BufLeave *.* mkview! autocmd BufRead *.java set foldnestmax=2 autocmd BufRead *.java set foldmethod=syntax +au BufNewFile,BufRead *.py + \ set tabstop=4 + \ softtabstop=4 + \ shiftwidth=4 + \ textwidth=79 + \ expandtab + \ autoindent + \ fileformat=unix + +au BufRead */synced/tasks* set textwidth=70 inoremap -let g:copilot_filetypes = { - \ 'nim': v:false, - \} " Search for selected text, forwards or backwards. vnoremap * : @@ -93,6 +111,7 @@ let g:ale_linters = { \ 'rst': [], \ 'python': ['pylint'], \ 'vue': ['prettier'], + \ 'nim': [], \} " default (as of time of writing) was: " \ 'markdown': ['alex', 'cspell', 'languagetool', 'markdownlint', 'mdl', 'proselint', 'redpen', 'remark_lint', 'textlint', 'vale', 'writegood'], @@ -117,6 +136,7 @@ let g:tsuquyomi_disable_quickfix = 1 let g:ale_set_loclist = 0 let g:ale_set_quickfix = 0 +let g:localvimrc_persistent = 1 let g:localvimrc_whitelist = '/home/jdb/projects/probatem/*/.*' nmap wo :vsplit /home/jdbernard/projects/worklog/worklog.txtL200<43> @@ -131,7 +151,7 @@ vmap qb :s/\v\s+(\d+)(\s+\|$)/ **\1**\2/g nmap ss :%s/\s\+$// " check spelling -nmap sp :!aspell -c % +nmap sp :w:!aspell -c "%" " Execute the current line (stripping leading `$`s) nmap r :.w !sed s/^\\s*[\\$\\#]\\s*//\|bash @@ -142,14 +162,3 @@ nmap R yyp!!sed s/^\\s*[\\$\\#]\\s*//\|bash " Execute the selected text as a vim command. vmap e "zy@z - -highlight Folded term=standout ctermfg=3 ctermbg=256 - -" Use a dark gray for highlighting 'spelling' errors (ALE uses this class for -" highlighting linting errors). Original value was 224 -"highlight SpellBad ctermbg=236 -" -" Actually, just diable ALE in-line error highlighting and just rely on the -" markers in the gutter. -" highlight clear ALEError -" highlight link ALEError NONE