Compare commits

...

2 Commits

Author SHA1 Message Date
zegonix 726f316c83 (ghostty) disable warning on paste 2026-04-21 21:39:26 +02:00
scbj 0ae0eb1896 (scripts) fixed whitespace remover to keep line endings by default 2026-04-21 14:35:55 +02:00
2 changed files with 81 additions and 63 deletions
+2
View File
@@ -17,7 +17,9 @@ selection-invert-fg-bg = true
window-decoration = server window-decoration = server
mouse-scroll-multiplier = 1.0 mouse-scroll-multiplier = 1.0
app-notifications = no-clipboard-copy app-notifications = no-clipboard-copy
copy-on-select = false copy-on-select = false
clipboard-paste-protection = false
theme = zegonix theme = zegonix
+77 -61
View File
@@ -1,105 +1,121 @@
#!/usr/bin/env bash #!/usr/bin/env bash
function remove-whitespace { function remove-whitespace {
# exclude file types
# (ignore generated files/directories)
exclude_paths=(
"*/.git/*"
)
exclude_files=(
"*.lst"
"*.map"
"*.svd"
"*.sym"
)
unset line_endings
unset help unset help
unset quiet unset silent
unset no_action
unset path_args
unset file_args
unset ffunix
unset files unset files
for arg in $@; do for arg in $@; do
case ${arg} in case ${arg} in
"-e" | "--eol" | "--end-of-line") "-u" | "--unix")
line_endings="true" ffunix="true"
continue continue
;; ;;
"-h" | "--help" | "-help") "-h" | "--help" | "-help")
help="true" help="true"
continue continue
;; ;;
"-n" | "--quiet") "-n" | "--no-action")
quiet="true" no_action="true"
continue
;;
"-s" | "--silent")
silent="true"
continue continue
;; ;;
*) ;; *) ;;
esac esac
if [[ -f "${arg}" ]]; then
grep -Iq . "${arg}" && files=(${files} "${arg}")
continue
fi
if [[ -d "${arg}" ]]; then if [[ -d "${arg}" ]]; then
files=(${files} $(find "${arg}" \ path_args+=("${arg}")
-not -path "*/.git/*" \ continue
-not -name "*.lst" \ elif [[ -f "${arg}" ]]; then
-not -name "*.map" \ file_args+=("${arg}")
-not -name "*.svd" \
-not -name "*.sym" \
-type f \
-exec grep -Iq . {} \; \
-print))
continue continue
fi fi
echo "(unrecognised argument: '${arg}')"
done done
## search current directory if no argument is provided if [[ -n "${ffunix}" ]]; then
if [[ -z "${files[@]}" ]]; then sed_cmd='s/[[:space:]]\+$//'
files=($(find . \ grep_regex=$'[[:space:]]+$'
-not -path "*/.git/*" \ else
-not -name "*.lst" \ sed_cmd='s/[[:blank:]]\+\(\r\?\)$/\1/'
-not -name "*.map" \ grep_regex=$'[[:blank:]]+\r?$'
-not -name "*.svd" \ fi
-not -name "*.sym" \
for arg in ${path_args[@]}; do
files+=($(
find "${arg}" \
"${exclude_paths[@]/#/-not -path }" \
"${exclude_files[@]/#/-not -name }" \
-type f \ -type f \
-exec grep -Iq . {} \; \ -exec grep -EIq "${grep_regex}" {} \; \
-print)) -print
fi ))
done
for arg in ${file_args[@]}; do
grep -EIq "${grep_regex}" ${arg} && files+=("${arg}")
done
if [[ -n "${dir_arg}" ]] && [[ -n "${file_arg}" ]]; then if [[ -n "${help}" ]] || [[ -z "${files[@]}" ]]; then
help="true" cat <<EOF
fi Usage: remove-whitespace [-h] [-n] path [path]
if [[ -n "${help}" ]]; then Remove trailing whitespace from plain text files.
echo "Usage: remove-whitespace [-h] [-n] path [path]" Path points to either a file or directory, or both.
echo "" Directories are searched recursively.
echo "Remove trailing whitespace from plain text files." If no paths are provided, the current working
echo "Path points to either a file or directory, or both." directory is searched.
echo "Directories are search recursively for non binary."
echo "If no paths are provided, the current working" Options:
echo "directory is search for plain text files." -u, --unix convert all line endings to unix style
echo "" line endings
echo "Options:" -h, --help show this help
echo " -e, --eol," -n, --no-action do not delete, only detect whitespace
echo " --end-of-line convert all line endings to unix style" -s, --silent suppress output
echo " line endings" EOF
echo " -h, --help show this help"
echo " -n, --quiet suppress output"
return 0 return 0
fi fi
unset trailing_whitespace if [[ -z "${no_action}" ]]; then
for file in ${files[@]}; do for file in ${files[@]}; do
sed -i 's/\r$//' ${file} if [[ -n "${ffunix}" ]]; then
if [[ -n "$(sed -ne '/[[:blank:]]\+\r\?$/p' ${file})" ]]; then sed -i "${sed_cmd}" ${file}
if [[ -n "${line_endings}" ]]; then
sed -i 's/[[:blank:]]\+\(\r\?\)$//' ${file}
else else
sed -i 's/[[:blank:]]\+\(\r\?\)$/\1/' ${file} sed -i "${sed_cmd}" ${file}
fi
trailing_whitespace+="${file}\n"
fi fi
done done
fi
echo "" echo ""
if [[ -z "${quiet}" ]] && if [[ -z "${silent} ${no_action}" ]] &&
[[ -n "${trailing_whitespace}" ]]; then [[ -n "${files}" ]]; then
tput setaf 1 tput setaf 1
tput smso tput smso
echo "The following files contained whitespace:" echo "The following files contained whitespace:"
tput sgr0 tput sgr0
echo -e "${trailing_whitespace}" for file in ${files[@]}; do
echo "${file}"
done
fi fi
} }