Automatically prefixing argument to :find with *

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Automatically prefixing argument to :find with *

'Jürgen Krämer' via vim_use
Hello,

Most of my uses of :find family of commands involves starting the
argument with * and hitting tab to get completion.

Would like to avoid the need to explicitly type the prefix *.

The following shows a "chicken and egg" issue:  for :Pf to be completed
one needs the prefix *, but one is introducing :Pf just to avoid having
to type the prefix *.

      command! -complete=file_in_path -nargs=* Pf :find *<args>

I am able to write a custom completion function, but was wondering if
there was a simpler solution.

Thanks,

--Suresh

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Automatically prefixing argument to :find with *

'Jürgen Krämer' via vim_use
On 3/9/2017 9:15 PM, 'Suresh Govindachar' via vim_use wrote:
> Hello,
>
> Most of my uses of :find family of commands involves starting the
> argument with * and hitting tab to get completion.
>
> Would like to avoid the need to explicitly type the prefix *.

Something's wrong in the following attempt:

     function! StarFC(ArgLead, CmdLine, CursorPos)

       let s:myarg  =  '*' . a:ArgLead . '*'
       let s:foo = globpath(&path, s:myarg )
      "echo s:foo
       return s:foo

     endfunction

     command! -nargs=* -complete=custom,StarFC Tryf :find <args>

The echo shows expected results for

     :call StarFC("fragment", "foo", 5)

But those results do not show up as matching suggestions for the following:

     :Tryf fragment

What's the error?

Thanks,

--Suresh


--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Automatically prefixing argument to :find with *

'Jürgen Krämer' via vim_use
On 3/11/2017 7:48 AM, 'Suresh Govindachar' via vim_use wrote:
> On 3/9/2017 9:15 PM, 'Suresh Govindachar' via vim_use wrote:
>> Hello,
>>
>> Most of my uses of :find family of commands involves starting the
>> argument with * and hitting tab to get completion.
>>
>> Would like to avoid the need to explicitly type the prefix *.

There is a solution via custom-completion -- see below -- but am
wondering if there might be a simpler one using :find directly:

     function! SFC(ArgLead, CmdLine, CursorPos)

       let s:myarg  =  '*' . a:ArgLead . '*'
      "either one of the following lines works
      "let s:foo = globpath(&path, s:myarg, 0, 1)
       let s:foo = split(globpath(&path, s:myarg), "\n")
       return s:foo

     endfunction

     command! -nargs=* -complete=customlist,SFC TestFc :find <args>

--Suresh


--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Automatically prefixing argument to :find with *

romainlafourcade
In reply to this post by 'Jürgen Krämer' via vim_use
Le vendredi 10 mars 2017 06:15:31 UTC+1, Suresh Govindachar a écrit :

> Hello,
>
> Most of my uses of :find family of commands involves starting the
> argument with * and hitting tab to get completion.
>
> Would like to avoid the need to explicitly type the prefix *.
>
> The following shows a "chicken and egg" issue:  for :Pf to be completed
> one needs the prefix *, but one is introducing :Pf just to avoid having
> to type the prefix *.
>
>       command! -complete=file_in_path -nargs=* Pf :find *<args>
>
> I am able to write a custom completion function, but was wondering if
> there was a simpler solution.
>
> Thanks,
>
> --Suresh
I use :find a lot, too, but with a simple normal mode mapping:

    nnoremap ,f :find *

I also have an uppercase variant that narrows the search to the directory of the file associated with the current buffer:

    nnoremap ,F :find <C-R>=fnameescape(expand('%:p:h')).'/**/*'<CR>

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Loading...