On Wed, Jul 12, 2006 at 03:48:22PM -0700, John Reese wrote:
> So there's this handy "[i" command that, when filetype=c, displays the
> first line mentioning the identifier under the cursor, which will
> often be its definition. The especially handy thing about it is that
> it knows about #include lines and will search through them as well
> when looking for the first match. You can also put the cursor over
> the .h file between the quotes and hit "gf", and if the path and
> suffixesadd options are set appropriately, it will jump you to the .h
> file.
>
> The point is, vim can be configured to know how to find C include
> files and use them in various ways.
>
> I was wondering if there was a way to get it to have a similar level
> of knowledge about Python modules. In C,
>
> #include "z.h"
> will look for z.h in the current directory. That's easy enough... the
> Python equivalent is something like
> import z
>
> But that actually just loads z.py from the current directory (or from
> a bunch of other possible places, including system library directories
> and directories listed in the PYTHONPATH environment variable) and
> puts the name z into your namespace, and if you want to refer to
> something defined in z.py, you qualify it: z.someFunction(). A
> Python-aware "[i" would know that if I have the cursor on the
> someFunction in z.someFunction, then it needs to look for the word
> someFunction in z.py.
>
> There's also this from path import syntax:
> from a.b.c import z
>
> which might mean that relative to the current directory there's a file
> a/b/c/z.py that would need to be looked through if you used "[i".
>
> So, anyway, this all seems very complicated, but I figured it wasn't
> entirely out of the question that something was supported or
> available, especially given the existence of the compiled-in Python
> scripting option. Does anyone know of anything to let vim understand
> Python import syntax and use it for "[i" and similar commands?
I am not sure if everything you want to do is possible or easy, but
I suggest you start here:
:help include-search
:help 'path'
:help 'include'
:help 'includeexpr'
See, for example, the ftplugin files for plaintex and tex.
HTH --Benji Fisher