emacs fix
authorIan Kelling <ian@iankelling.org>
Sun, 7 Jul 2024 18:42:52 +0000 (14:42 -0400)
committerIan Kelling <ian@iankelling.org>
Sun, 7 Jul 2024 18:42:52 +0000 (14:42 -0400)
brc

diff --git a/brc b/brc
index 0f7d7e803c3817421dba4e704be7b25bd1af8149..b0f006762472f43b83862f44a2856522706d9d10 100644 (file)
--- a/brc
+++ b/brc
@@ -569,7 +569,7 @@ cl() {
     echo "no dirs in ~/.cdirs"
     return 0
   fi
-  read -r -N 1 input
+  read -sr -N 1 input
   if [[ $input != $'\n' ]]; then
     c "${buttondirs[$input]}"
   fi
@@ -3487,8 +3487,12 @@ if [[ $- == *i* ]]; then
 
     local ps_char ps_color col tmp
 
-    IFS='[;' read -p $'\e[6n' -d R -rs tmp
-    col="${tmp##*[^0-9]}"
+    # bash 5.0.17 gives an error when the last command used a process redirect like
+    # while read -r l; do e $l; done < <(echo ok)
+    if [[ ! $LC_INSIDE_EMACS && $BASH_VERSION == 5.[123456789]* || $BASH_VERSION == [6789]* ]]; then
+      IFS='[;' read -p $'\e[6n' -d R -rs tmp ||:
+      col="${tmp##*[^0-9]}"
+    fi
 
     unset IFS
 
@@ -3563,7 +3567,7 @@ if [[ $- == *i* ]]; then
     # If the last command was not newline terminated, add a space (so we
     # can more easily copy the output if needed), and an indicator to
     # help us not be confused.
-    if [[ $col != 1 ]]; then
+    if [[ $col && $col != 1 ]]; then
       PS1=" \[$term_yellow\]█\[$term_nocolor\]$PS1"
     fi