[PyMOL] Tab completion using object names, not filesystem files?
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?
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?
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