summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2016-03-19 17:28:17 +0100
committerMikael Magnusson <mikachu@gmail.com>2016-03-19 19:08:11 +0100
commitee2f0dbed113742cd9f6f5574ab2e2d280a0de34 (patch)
tree5625fddae63604db6257ab451459aa323553c74c
parent7ad041c9e9c2099c4b9ba0fa4c1b64645c1e6f37 (diff)
downloadzsh-ee2f0dbed113742cd9f6f5574ab2e2d280a0de34.tar.gz
zsh-ee2f0dbed113742cd9f6f5574ab2e2d280a0de34.zip
38187: _adb: Just check current dir instead of recursively
Thanks to LambdaComplex in IRC for help with troubleshooting.
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Unix/Command/_adb38
2 files changed, 15 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index b0dd2ff7d..0d431456d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
* 38186: Completion/Unix/Command/_adb: fix remote file completion,
various fixes, restore 35531 again with fix from 38185
+ * 38187: Completion/Unix/Command/_adb: Just check current dir
+ instead of recursively
+
2016-03-18 Daniel Shahaf <d.s@daniel.shahaf.name>
* unposted: Doc/Zsh/contrib.yo: Document run-help-* helper
diff --git a/Completion/Unix/Command/_adb b/Completion/Unix/Command/_adb
index c0a2bb27e..879e26045 100644
--- a/Completion/Unix/Command/_adb
+++ b/Completion/Unix/Command/_adb
@@ -470,40 +470,26 @@ _adb_device_available() {
return 1
}
-(( $+functions[_adb_full_folder_scan] )) ||
-_adb_full_folder_scan() {
- filesystem_content=( ${${(f)"$(adb ${=ADB_DEVICE_SPECIFICATION} shell 'cd /;for i in *
- do
- case $i in
- proc|sys|acct)
- ;;
- *)
- find $i 2> /dev/null
- ;;
- esac
- done' )"}%$'\r'} )
-}
-
(( $+functions[_adb_remote_folder] )) ||
_adb_remote_folder () {
- local expl
- zstyle -s ":completion:${curcontext}:" cache-policy update_policy
- if [[ -z "$update_policy" ]]; then
- zstyle ":completion:${curcontext}:" cache-policy _adb_cache_policy_daily
- fi
- local cacheid=folder_cache_${$(adb ${=ADB_DEVICE_SPECIFICATION} get-serialno)}
- typeset -a filesystem_content
- if _cache_invalid "$cacheid" || ! _retrieve_cache "$cacheid"
- then
- _adb_full_folder_scan
- _store_cache "$cacheid" filesystem_content
+ typeset -a files dirs
+ local pref=${PREFIX}
+ if [[ $pref != */* ]]; then
+ pref=
+ elif [[ $pref != */ ]]; then
+ 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'})
+ dirs=(${${(M)files:#*/}%/})
+ files=(${${files:|dirs}:#*\*(/|)})
_adb_device_available && \
- _wanted adb_remote_folder expl 'file/folder on device' _multi_parts $@ -i / filesystem_content
+ _wanted adb_remote_folder expl 'file/folder on device' _multi_parts $@ / files
}
(( $+functions[_adb_installed_packages] )) ||
_adb_installed_packages() {
+ local update_policy
zstyle -s ":completion:${curcontext}:" cache-policy update_policy
if [[ -z "$update_policy" ]]; then
zstyle ":completion:${curcontext}:" cache-policy _adb_cache_policy_single_command