Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

completion: adb remote folder problems due to ls columnated output



For some reason, `adb shell ls` command on my Android (Lineage OS 14.1,
Android 7.1.2) and adb (1.0.32) prints directory listing in several
columns, even if its stdout is connected to pipe (as opposed of terminal).

It breaks the completion script, which expects one file per line.

This patch fixes the issue for me. Assuming ls supports -1 option, It
shouldn't break setups that already output one file per line.

diff --git a/Completion/Unix/Command/_adb b/Completion/Unix/Command/_adb
index 6b56d1748..f0ffdb5a4 100644
--- a/Completion/Unix/Command/_adb
+++ b/Completion/Unix/Command/_adb
@@ -480,7 +480,7 @@ _adb_remote_folder () {
     pref=${pref%/*}/
   fi
   # yes, this ls is sickening to look at, but android doesn't have
printf or find
-  files=(${${(f)"$(adb ${=ADB_DEVICE_SPECIFICATION} shell 'ls -d 2>
/dev/null '$pref'*/ '$pref'*')"}%$'\r'})
+  files=(${${(f)"$(adb ${=ADB_DEVICE_SPECIFICATION} shell 'ls -1d 2>
/dev/null '$pref'*/ '$pref'*')"}%$'\r'})
   dirs=(${${(M)files:#*/}%/})
   files=(${${files:|dirs}:#*\*(/|)})
   _adb_device_available && \



Messages sorted by: Reverse Date, Date, Thread, Author