Hi Thomas,

Thanks for the quick reply.  That worked exactly the way I wanted!  I
had read the auto_arg Wiki page, but it didn't click that I had to
define a new list specifically for the command I wanted the tab
completion to work for (i.e. select).  I thought it applied to all
commands.

So, for anyone else who is trying to do this, the command to have tab
completion use only loaded and visible object names *during select
statements* is as follows:
cmd.auto_arg[0]['select'] = [ lambda:
cmd.Shortcut(cmd.get_names("objects", enabled_only=1)), 'visible
object name(s)', '']

If you want tab completion to pull up loaded objects (visible or not)
as well as PDB files in the current working directory, it would be:
cmd.auto_arg[0]['select'] = [ lambda: cmd.Shortcut(cmd.get_names() +
glob.glob('*.pdb')), 'PDB file and object name(s)', '']

Best,
-Ron


On Wed, Oct 17, 2012 at 2:31 PM, Thomas Holder
<spel...@users.sourceforge.net> wrote:
> Hi Ron,
>
> tab completion is controlled by the cmd.auto_arg variable, which is a list
> of dictionaries.
>
> http://pymolwiki.org/index.php/auto_arg
>
> For all arguments which do not have an entry in auto_arg, the default is to
> auto-complete file names. For your purpose you need to define something like
> this:
>
> python
> import glob
> cmd.auto_arg[0]['save'] = [
>   lambda: cmd.Shortcut(cmd.get_names() + glob.glob('*')),
>   'filename or object name', '']
> python end
>
> Cheers,
>   Thomas
>
> Ron Jacak wrote, On 10/17/12 22:25:
>
>> PyMOL-users,
>>
>> I'm wondering if there's a way to make the tab completion engine use
>> the currently loaded (or visible) object names rather than (or in
>> addition to) the files in the filesystem?  I usually have sessions
>> with very long object names that I want to include in custom selection
>> expressions and the tab completion doesn't work because oftentimes the
>> PDB files are not in the same directory as the session.  I found the
>> function complete() in modules/pymol/parsing.py that seems to be what
>> figures out how to complete the command that's been entered.  I think
>> if I just added a list of the currently loaded objects to the list
>> obtained by globbing the filesystem, it would do what I'm looking for.
>>  Any ideas on the best way to do that?
>>
>> Best,
>> -Ron
>
>
> --
> Thomas Holder
> MPI for Developmental Biology
> Spemannstr. 35
> D-72076 Tübingen

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net

Reply via email to