Re: Strange compgen behaviour

2009-09-25 Thread Mathias Dahl
Hm, I can't see any problem here. My version lets you pick any file in any subdir by simply typing the name (or part of it) without the directory part. After all, 'find -name' matches names, not paths (if you want to match full paths, use 'find -path'). I'd also rather use printf %P\n

Re: Strange compgen behaviour

2009-09-25 Thread Mathias Dahl
This has been an interesting topic! I thought I should share the final version as well: _mm() { local cur files COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} files=$(find /home/mathias/Videos/movies/ -iname *.avi -type f - printf %P\n | grep ${cur} | sed s/\\([][\\(\\)

Re: Strange compgen behaviour

2009-09-25 Thread Mathias Dahl
printf %q $filename will either insert backslashes in front of all the shell metacharacters, or $'...' quote the whole thing, or take some other action which renders a string safe.  It's basically the opposite of eval. Interesting! Can I make it part of my pipe (in place of `sed') or need I

Re: Strange compgen behaviour

2009-09-25 Thread Mathias Dahl
Interesting! Can I make it part of my pipe (in place of `sed') or need I change it to a for or while loop? This is what I have now: files=$(find /home/mathias/Videos/movies/ -iname *.avi -type f - printf %P\n | grep ${cur} | sed s/\\([][\\(\\) ,\']\\)/\\1/ g) Got this to work:

Re: Strange compgen behaviour

2009-09-24 Thread Mathias Dahl
Hm, compgen appears to behave strange if words contain whitespace. However, you don't need it, as you build the list yourself. Try this:   _mm2() {       local cur files       cur=${COMP_WORDS[COMP_CWORD]}       files=$(find /home/mathias/Videos/movies/ -iname $cur*.avi -type f -printf

Re: Strange compgen behaviour

2009-09-24 Thread Mathias Dahl
...but then I have to shell quote the file name myself to handle spaces, brackets of various sorts, comma characters etc. Will hunt for such a function and see. There are all sorts of crazy helper functions in /etc/bash_completion, of which I barely understand anything. I did not find any

Re: Strange compgen behaviour

2009-09-23 Thread Mathias Dahl
It depends heavily on how the variables IFS and zf are set. From 'man bash': -W wordlist     The  wordlist is split using the characters in the IFS special     variable as delimiters, and each resultant word is expanded.     The possible completions are the members  of  the  resultant