diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2025-07-13 10:42:22 +0200 |
|---|---|---|
| committer | Christian Clason <ch.clason+github@icloud.com> | 2025-07-13 11:07:40 +0200 |
| commit | 444a8b3ec6375b03f1483a97095a00b067a499ec (patch) | |
| tree | a9510ee9d51f801ece6e3453d7f05f79bc374cad /runtime/syntax/python.vim | |
| parent | 3e7f5d95aa25943e26d88a75fc55785229c36e34 (diff) | |
| download | rneovim-444a8b3ec6375b03f1483a97095a00b067a499ec.tar.gz rneovim-444a8b3ec6375b03f1483a97095a00b067a499ec.tar.bz2 rneovim-444a8b3ec6375b03f1483a97095a00b067a499ec.zip | |
vim-patch:6f85cec: runtime(python): update rendering of Unicode named literals in syntax script
This change:
* enforces that the alias starts with a letter
* allows the other words in an alias to be separated by either a space
or a hyphen, but not both or double separators
* allows only a letter after space, possibly followed by letters or
digits
* allows both letters and digits after a hyphen
Tested with:
a = '\N{Cyrillic Small Letter Zhe} is pronounced as zh in pleasure'
b = '\N{NO-BREAK SPACE} is needed here'
# ... other tests here
r = '\N{HENTAIGANA LETTER E-1} is a Japanese hiragana letter archaic ye'
s = '\N{CUNEIFORM SIGN NU11 TENU} is a correction alias'
t = '\N{RECYCLING SYMBOL FOR TYPE-1 PLASTICS} base shape is a triangle'
print(a)
print(b)
print(r)
print(s)
print(t)
The tests confirm the behavior and are selected from real Unicode
tables/aliases to check these combinations based on the specification.
fixes: vim/vim#17323
closes: vim/vim#17735
https://github.com/vim/vim/commit/6f85cec4fbc1d1261c67a339a11792dd8f2efd14
Co-authored-by: Zvezdan Petkovic <zpetkovic@acm.org>
Diffstat (limited to 'runtime/syntax/python.vim')
| -rw-r--r-- | runtime/syntax/python.vim | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim index 043ea6d19b..3e8aa01bb2 100644 --- a/runtime/syntax/python.vim +++ b/runtime/syntax/python.vim @@ -160,7 +160,8 @@ syn match pythonEscape "\\\o\{1,3}" contained syn match pythonEscape "\\x\x\{2}" contained syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained " Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ -syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained +" The specification: https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-4/#G135165 +syn match pythonEscape "\\N{\a\+\%(\%(\s\a\+[[:alnum:]]*\)\|\%(-[[:alnum:]]\+\)\)*}" contained syn match pythonEscape "\\$" " It is very important to understand all details before changing the |