diff runtime/ftplugin/python.vim @ 13482:9eebe457eb3c

Update runtime files. Convert a couple of help files to utf-8. commit https://github.com/vim/vim/commit/98ef233e14faaaf42e0342da1803d493ce0337b2 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 18 14:44:37 2018 +0100 Update runtime files. Convert a couple of help files to utf-8.
author Christian Brabandt <cb@256bit.org>
date Sun, 18 Mar 2018 15:00:07 +0100
parents 371ceeebbdaa
children a62eeee5f116
line wrap: on
line diff
--- a/runtime/ftplugin/python.vim
+++ b/runtime/ftplugin/python.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Tom Picton <tom@tompicton.co.uk>
 " Previous Maintainer: James Sully <sullyj3@gmail.com>
 " Previous Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change:	Wed, 20 December 2017
+" Last Change:	Sun, 18 March 2018
 " https://github.com/tpict/vim-ftplugin-python
 
 if exists("b:did_ftplugin") | finish | endif
@@ -14,7 +14,25 @@ set cpo&vim
 setlocal cinkeys-=0#
 setlocal indentkeys-=0#
 setlocal include=^\\s*\\(from\\\|import\\)
-setlocal includeexpr=substitute(v:fname,'\\.','/','g')
+
+" For imports with leading .., append / and replace additional .s with ../
+let b:grandparent_match = '^\(.\.\)\(\.*\)'
+let b:grandparent_sub = '\=submatch(1)."/".repeat("../",strlen(submatch(2)))'
+
+" For imports with a single leading ., replace it with ./
+let b:parent_match = '^\.\(\.\)\@!'
+let b:parent_sub = './'
+
+" Replace any . sandwiched between word characters with /
+let b:child_match = '\(\w\)\.\(\w\)'
+let b:child_sub = '\1/\2'
+
+setlocal includeexpr=substitute(substitute(substitute(
+      \v:fname,
+      \b:grandparent_match,b:grandparent_sub,''),
+      \b:parent_match,b:parent_sub,''),
+      \b:child_match,b:child_sub,'g')
+
 setlocal suffixesadd=.py
 setlocal comments=b:#,fb:-
 setlocal commentstring=#\ %s