Thread (13 messages) flat view 13 messages, 3 authors, 2016-06-15

Re: [PATCH v2] tests: add initial bash completion tests

From: Felipe Contreras <hidden>
Date: 2016-06-15 22:53:34

2012/4/13 SZEDER Gábor [off-list ref]:
On Fri, Apr 13, 2012 at 11:12:36AM +0200, SZEDER Gábor wrote:
quoted
On Thu, Apr 12, 2012 at 12:57:03AM +0300, Felipe Contreras wrote:
quoted
+. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
+
+_get_comp_words_by_ref ()
+{
+   while [ $# -gt 0 ]; do
+           case "$1" in
+           cur)
+                   cur=${_words[_cword]}
+                   ;;
+           prev)
+                   prev=${_words[_cword-1]}
+                   ;;
+           words)
+                   words=("${_words[@]}")
+                   ;;
+           cword)
+                   cword=$_cword
+                   ;;
+           esac
+           shift
+   done
+}
Git's completion script already implements this function.  Why
override it here?
Ah, ok, I think I got it.

Of course, the words on the command line must be specified somehow to
test completion functions.  But the two implementations of
_get_comp_words_by_ref() for bash and zsh in the completion script
take the words on the command line from different variables, so we
need a common implementation to test completion functions both on bash
and zsh.  Hence the _get_comp_words_by_ref() above, which takes the
words on the command line and their count from $_words and $_cword,
respectively, and run_completion() below, which fills those variables
with its arguments.
Well, yeah, that's one reason, but also I don't see the point in
trying to fill the internal bash completion variables, maybe there
would be some conflicts? Plus, the bash version of
_get_comp_words_by_ref is rather complicated, so I decided to start
with something simple that I could understand and see exactly what's
going on. And for zsh I would definitely prefer to override
_get_comp_words_by_ref than to mess with the internal variables,
although I haven't found a way to test completion for zsh.

Cheers.

-- 
Felipe Contreras
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help