]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(python): fix 'type' syntax highlighting
authorJon Parise <jon@indelible.org>
Thu, 25 Sep 2025 19:08:14 +0000 (19:08 +0000)
committerChristian Brabandt <cb@256bit.org>
Thu, 25 Sep 2025 19:08:14 +0000 (19:08 +0000)
The previous patterns unintentionally highlighted words like 'typename'.

addresses: https://github.com/vim/vim/pull/18090#issuecomment-3333025523
closes: #18394

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/syntax/python.vim
runtime/syntax/testdir/dumps/python_type_00.dump [new file with mode: 0644]
runtime/syntax/testdir/input/python_type.py [new file with mode: 0644]

index 86aa6d3296fafc0965994aac4b360d8ee894f771..05c965ec64899036365d1aeaeda3c978b82fa164 100644 (file)
@@ -2,6 +2,7 @@
 " Language:    Python
 " Maintainer:  Zvezdan Petkovic <zpetkovic@acm.org>
 " Last Change: 2025 Sep 08
+" 2025 Sep 25 by Vim Project: fix wrong type highlighting #18394
 " Credits:     Neil Schemenauer <nas@python.ca>
 "              Dmitry Vasiliev
 "              Rob B
@@ -308,7 +309,7 @@ if !exists("python_no_builtin_highlight")
   syn keyword pythonBuiltin    setattr slice sorted staticmethod str sum super
   syn keyword pythonBuiltin    tuple vars zip __import__
   " only match `type` as a builtin when it's not followed by an identifier
-  syn match   pythonBuiltin    "\<type\ze\(\s\+\h\w*\)\@!"
+  syn match   pythonBuiltin    "\<type\>\ze\(\s\+\h\w*\)\@!"
   " avoid highlighting attributes as builtins
   syn match   pythonAttribute  /\.\h\w*/hs=s+1
        \ contains=ALLBUT,pythonBuiltin,pythonClass,pythonFunction,pythonType,pythonAsync
diff --git a/runtime/syntax/testdir/dumps/python_type_00.dump b/runtime/syntax/testdir/dumps/python_type_00.dump
new file mode 100644 (file)
index 0000000..eeb735e
--- /dev/null
@@ -0,0 +1,20 @@
+>#+0#0000e05#ffffff0| |B|u|i|l|t|i|n| +0#0000000&@65
+|t+0#00e0e07&|y|p|e|(+0#0000000&|)| @68
+@75
+|#+0#0000e05&| |S|t|a|t|e|m|e|n|t| +0#0000000&@63
+|t+0#af5f00255&|y|p|e| +0#0000000&|P+0#00e0003&|o|i|n|t| +0#0000000&|=| |t+0#00e0e07&|u|p|l|e|[+0#0000000&|f+0#00e0e07&|l|o|a|t|,+0#0000000&| |f+0#00e0e07&|l|o|a|t|]+0#0000000&| @42
+@75
+|#+0#0000e05&| |S|h|o|u|l|d| |n|o|t| |m|a|t|c|h| +0#0000000&@56
+|t|y|p|e|n|a|m|e| |=| |'+0#e000002&@1| +0#0000000&@61
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/input/python_type.py b/runtime/syntax/testdir/input/python_type.py
new file mode 100644 (file)
index 0000000..513b97f
--- /dev/null
@@ -0,0 +1,8 @@
+# Builtin
+type()
+
+# Statement
+type Point = tuple[float, float]
+
+# Should not match
+typename = ''