-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorrect highlighting for C++ special identifiers #8745
Comments
That is a CPP syntax issue. So I'll leave that for https://github.com/vim-jp/vim-cpp |
This is probably difficult to do properly as C++ syntax is complex and Vim does not use a C++ parser, but uses heuristics based on regexp for syntax highlighting. We can maybe improve heuristics, but we can't expect to get syntax highlighting it 100% right with heuristics. In practice, it's already doing a fairly good job for C++. Calling variables The only way to syntax highlight C++ (and other languages) 100% correctly, is to have a real C++ parser using e.g. Tree-sitter. Maybe something for Vim-10? :-) |
yes, related: #8658 Note, Vim cannot do semantic highlighting (yet), just regex based highlighting. |
This is probably difficult to do properly as C++ syntax is complex and
Vim does not use a C++ parser, but uses heuristics based on regexp for
syntax highlighting. We can maybe improve heuristics, but we can't
expect to get syntax highlighting it 100% right with heuristics. In
practice, it's already doing a fairly good job for C++. Calling
variables `override`,`final` or `module` seems quite a rare and is
asking for trouble. I understand that C++ allowed that for to avoid
breaking existing software. Backward compatibility is important for
C++. For Vim, the cost / benefit of fixing this ticket seems low IMO.
The only way to syntax highlight C++ correctly (and other languages)
100% correctly, is to have a real C++ parser using e.g. Tree-sitter.
Maybe something for Vim-10? :-)
I know someone was working on Tree-sitter, and it was not easy. Is it
working now? Evaluating the advantages and disadvantages would be a
good idea. I would expect it to behave very different from the
pattern-based syntax highlighting. E.g., how well does it handle syntax
errors? What happens while typing? Is there a noticeable delay when
opening a large file? Does it solve the slowness of long lines (e.g.
with XML)?
…--
Hacker: Someone skilled in computer programming (good guy).
Cracker: A hacker that uses his skills to crack software (bad guy).
/// Bram Moolenaar -- ***@***.*** -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|
apparently it works quite nicely for Neovim (for languages that have treesitter parsers). |
Describe the bug
C++ identifiers with special meaning (
final
,override
,import
andmodule
). are incorrectly highlighted out-of-context. These keywords should be considered as regular identifiers when used out of their special meaning context (c.f. C++20 standard, section 5.10, paragraph 2).To Reproduce
vim --clean
a.cc
Expected behavior
Highlighting for these variables names should be the same as the one for
int x
;Environment (please complete the following information):
Vim version 8.2.3323
The text was updated successfully, but these errors were encountered: