In which I futilely attempt to use I am embarrassingly atrocious at spelling. In Vim, which I use for email via Mutt, I can use As is my wont, through force of will, by might of Maybe someone can use this To see posts by date, check out the archives aspell
to stop using Google as spellcheck.:set spell
. In Emacs I can use flyspell-mode
. Browsers all have spellcheck now, seemingly. Still… sometimes I find myself just Googling™ (or DDGing™) individual words as I flail through the darkness that is spelling in the English language. This is stupid and ridiculous for myriad reasons that I don’t really want to talk about.awk
, and by glory of xsel
: I have written a function in my dotfiles that solves this problem for me. It might even be generally useful, bask in its awesomeness:spell() {
local candidates oldifs word array_pos
oldifs="$IFS"
IFS=':'
# Parse the apsell format and return a list of ":" separated words
read -a candidates <<< "$(printf "%s\n" "$1" \
| aspell -a \
| awk -F':' '/^&/ {
split($2, a, ",")
result=""
for (x in a) {
gsub(/^[ \t]/, "", a[x])
result = a[x] ":" result
}
gsub(/:$/, "", result)
print result
}')"
# Reverse number and print the parsed bash array because the list comes
# out of gawk backwards
for item in "${candidates[@]}"; do
printf '%s\n' "$item"
done \
| tac \
| nl \
| less -FirSX
printf "[ $(tput setaf 2)?$(tput sgr0) ]\t%s" \
'Enter the choice (empty to cancel, 0 for input): '
read index
[[ -z "$index" ]] && return
[[ "$index" == 0 ]] && word="$1"
[[ -z "$word" ]] && {
array_pos=$(( ${#candidates[@]} - index ))
word="${candidates[$array_pos]}"
}
[[ -n "$word" ]] && {
printf "$word" | xsel -p
printf "Copied '%s' to clipboard!\n" "$word"
} || printf "[ $(tput setaf 1):($(tput sgr0) ] %s\n" 'No match found'
IFS="$oldifs"
}
¯\_(ツ)_/¯
To see posts by date, check out the archives