[PyMOL] Tab completion using object names, not filesystem files?

2012-10-17 Thread Ron Jacak
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

--
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


Re: [PyMOL] Tab completion using object names, not filesystem files?

2012-10-17 Thread Thomas Holder
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


Re: [PyMOL] Tab completion using object names, not filesystem files?

2012-10-17 Thread Ron Jacak
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