about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarc Chantreux <eiro@phear.org>2021-02-27 16:27:35 +0100
committerOliver Kiddle <opk@zsh.org>2021-03-31 01:16:21 +0200
commit7518b20a01bd27a9246d9b040ba5f972ab686e62 (patch)
treebe5936e011135d09b89341347c35f9b57cc7b521
parentfc82e8193bad79db5de9e40ec99814fe401ad876 (diff)
downloadzsh-7518b20a01bd27a9246d9b040ba5f972ab686e62.tar.gz
zsh-7518b20a01bd27a9246d9b040ba5f972ab686e62.tar.xz
zsh-7518b20a01bd27a9246d9b040ba5f972ab686e62.zip
users/26557: add bookmarks support and remove the header from the final list in surfraw completion
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_surfraw18
2 files changed, 21 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 83bd3c3a7..204a71296 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2021-03-31  Oliver Kiddle  <opk@zsh.org>
+
+	* Marc Chantreux: users/26557: Completion/Unix/Command/_surfraw:
+	add bookmarks support and remove the header from the final list
+
 2021-03-29  Aleksandr Mezin  <mezin.alexander@gmail.com>
 
 	* 47561 (the git and cvs parts) (compare 44919 + 44920):
diff --git a/Completion/Unix/Command/_surfraw b/Completion/Unix/Command/_surfraw
index f945f1ca9..343d275cc 100644
--- a/Completion/Unix/Command/_surfraw
+++ b/Completion/Unix/Command/_surfraw
@@ -424,12 +424,26 @@ case $state in
       yubnub)
         _message -e command 'Yubnub Command'
       ;;
+      *)
+        _message -e string 'search string'
+      ;;
     esac
   ;;
   elvi)
+    local -UT XDG_CONFIG_DIRS xcd
+    # as it starts with a space, the header becomes an empty
+    # string removed by the list expansion
     _wanted elvi expl elvi compadd \
-      ${${${(f)"$(_call_program elvi surfraw -elvi)"}%%[[:space:]]##--*}%:*} && ret=0
+        ${${(f)"$(surfraw -elvi)"}%%[[:space:]]*} $(
+          # extract the keys of all bookmarks (should be in surfraw itself)
+          awk '{keys[$1]=1} END {for (k in keys) print k}' \
+          $^xcd/surfraw/bookmarks(Nr) \
+          /etc/xdg/surfraw/bookmarks(Nr) \
+          /etc/surfraw.bookmarks(Nr) \
+          ${XDG_CONFIG_HOME-${HOME?homeless}/.config}/surfraw/bookmarks(Nr) \
+          ${HOME?homeless}/.surfraw.bookmarks(Nr)
+        ) && ret=0
   ;;
-esac  
+esac
 
 return ret