On Thu, Jul 20, 2006 at 11:07:48AM -0700, John Reese wrote: > > Actually, you can't actually tell that from the import line. blag > could also be a package (i.e. directory) containing a module Bok, > defined in a file called Bok.py. That's what I had in mind. > > The following is an example of the kind of import line I'm talking > about, which imports a module from a package: > > >>>from xml.dom import domreg > >>># effectively the same as 'import xml.dom.domreg as domreg' > >>># but the from ... import ... form is much more common > >>>domreg > <module 'xml.dom.domreg' from '/...'> > > The clause after "from" is the directory (after includeexpr turns the > dots into slashes), and the clause after "import" is the filename > (after .py from suffixesadd is added), and I guess all I'm saying is I > think having directory name and filename be in separate words might > break assumptions in the *include-search* mechanism. > > I can add the base directory plus **/ to 'path', but that's a lot > slower than just adding the base directory and configuring the > include-search mechanism to know how to join up the whole import line > to get the relative path. > > Anyway, at this point I feel like I should just go off and dink around > for a while and see if I can get something to work. Thanks for your > help.
Have you read :help 'include' carefully? I think that what you want is something along the lines of :let &l:include = '^\s*from\s\+\zs' (untested). Then, if I read the docs correctly, you should be able to pass "xml.dom import domreg" to 'includeexpr'. I suggest using 'includeexpr' to call a function, and putting all the conditionals and substitute()'s in the function. Note that I use :let to avoid the problem of escaping back-slashes in a :set command. Then &l: has the same effect as :setlocal . If you get this to work, please send it to the maintainer of ftplugin/python.vim . I think others would like to use it, too. HTH --Benji Fisher