summaryrefslogtreecommitdiff
path: root/plugins/zsh-navigation-tools/n-functions
diff options
context:
space:
mode:
authorSebastian Gniazdowski <sgniazdowski@gmail.com>2015-09-20 14:39:46 +0200
committerSebastian Gniazdowski <sgniazdowski@gmail.com>2015-11-01 16:10:55 +0100
commit4c292ea2b023a331dcf1af5644487f2272d24a4d (patch)
tree7141e282b7aaf9e5fba7ea3102c25ef0e5478d40 /plugins/zsh-navigation-tools/n-functions
parent9c08641d7c2aae0c82fa5ad91f94c67b70115ba5 (diff)
downloadzsh-4c292ea2b023a331dcf1af5644487f2272d24a4d.tar.gz
zsh-4c292ea2b023a331dcf1af5644487f2272d24a4d.tar.bz2
zsh-4c292ea2b023a331dcf1af5644487f2272d24a4d.zip
Initial commit of Zsh Navigation Tools
Diffstat (limited to 'plugins/zsh-navigation-tools/n-functions')
-rw-r--r--plugins/zsh-navigation-tools/n-functions54
1 files changed, 54 insertions, 0 deletions
diff --git a/plugins/zsh-navigation-tools/n-functions b/plugins/zsh-navigation-tools/n-functions
new file mode 100644
index 000000000..6f10a3dec
--- /dev/null
+++ b/plugins/zsh-navigation-tools/n-functions
@@ -0,0 +1,54 @@
+# Copy this file into /usr/share/zsh/site-functions/
+# and add 'autoload n-functions` to .zshrc
+#
+# This function allows to choose a function for edition with vared
+#
+# Uses n-list
+
+emulate -L zsh
+
+setopt extendedglob
+zmodload zsh/curses
+zmodload zsh/parameter
+
+local IFS="
+"
+
+unset NLIST_COLORING_PATTERN
+
+[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
+[ -f ~/.config/znt/n-functions.conf ] && . ~/.config/znt/n-functions.conf
+
+local list
+local selected
+
+NLIST_REMEMBER_STATE=0
+
+list=( "${(@k)functions}" )
+list=( "${(@M)list:#(#i)*$1*}" )
+
+local NLIST_GREP_STRING="$1"
+
+if [ "$#list" -eq 0 ]; then
+ echo "No matching functions"
+ return 1
+fi
+
+list=( "${(@i)list}" )
+n-list "$list[@]"
+
+if [ "$REPLY" -gt 0 ]; then
+ selected="$reply[REPLY]"
+ if [ "$feditor" = "zed" ]; then
+ echo "Editing \`$selected' (ESC ZZ or Ctrl-x-w to finish):"
+ autoload zed
+ print -rs "zed -f -- \"$selected\""
+ zed -f -- "$selected"
+ else
+ echo "Editing \`$selected':"
+ print -rs "vared functions\\[$selected\\]"
+ vared functions\[$selected\]
+ fi
+fi
+
+# vim: set filetype=zsh: