瀏覽代碼

Add support for runtime-resolved type annotations in strings

Joongi Kim 9 年之前
父節點
當前提交
daf7366c8d
共有 2 個文件被更改,包括 4 次插入4 次删除
  1. 3
    3
      syntax/python.vim
  2. 1
    1
      test.py

+ 3
- 3
syntax/python.vim 查看文件

174
 
174
 
175
 if !s:Python2Syntax()
175
 if !s:Python2Syntax()
176
   if s:Enabled("g:python_highlight_type_annotations")
176
   if s:Enabled("g:python_highlight_type_annotations")
177
-    syn match pythonTypeAnno ":\s*\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"hs=s+1 display contained contains=pythonType nextgroup=pythonTypeArgs
178
-    syn match pythonTypeAnnoReturn "->\s*\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contains=pythonType nextgroup=pythonTypeArgs
179
-    syn region pythonTypeArgs matchgroup=pythonTypeArgs start='\[' end='\]' display contained contains=pythonType,pythonTypeArgs
177
+    syn match pythonTypeAnno @:\s*['"]\?\([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\([^[:cntrl:][:punct:][:space:]]\|_\)*['"]\?@hs=s+1 display contained contains=pythonType,pythonString nextgroup=pythonTypeArgs
178
+    syn match pythonTypeAnnoReturn @->\s*['"]\?\([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\([^[:cntrl:][:punct:][:space:]]\|_\)*['"]\?@ display contains=pythonType,pythonString nextgroup=pythonTypeArgs
179
+    syn region pythonTypeArgs matchgroup=pythonTypeArgs start='\[' end='\]' display contained contains=pythonType,pythonString,pythonTypeArgs
180
     syn keyword pythonType Any AnyStr Callable ClassVar Tuple Union Optional Type TypeVar None contained
180
     syn keyword pythonType Any AnyStr Callable ClassVar Tuple Union Optional Type TypeVar None contained
181
     syn keyword pythonType AbstractSet MutableSet Mapping MutableMapping Sequence MutableSequence ByteString Deque List contained
181
     syn keyword pythonType AbstractSet MutableSet Mapping MutableMapping Sequence MutableSequence ByteString Deque List contained
182
     syn keyword pythonType Set FrozenSet MappingView KeysView ItemsView ValuesView Awaitable Coroutine AsyncIterable contained
182
     syn keyword pythonType Set FrozenSet MappingView KeysView ItemsView ValuesView Awaitable Coroutine AsyncIterable contained

+ 1
- 1
test.py 查看文件

29
 # Type annotations
29
 # Type annotations
30
 
30
 
31
 def myfunc(a: str, something_other,
31
 def myfunc(a: str, something_other,
32
-           b: Callable[[str, str], int]) -> Any:
32
+           b: Callable[[str, str], int]) -> 'runtime_resolved_type':
33
     myval: float
33
     myval: float
34
     mygood: Optional[int, Any] = b('wow', 'oops')
34
     mygood: Optional[int, Any] = b('wow', 'oops')
35
     myarr: Sequence[int] = origarr[aa:bb] + (lambda: x)()
35
     myarr: Sequence[int] = origarr[aa:bb] + (lambda: x)()