Skip to content

jeff-hykin/better-cpp-syntax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

071dd6e ยท Jul 12, 2024
Dec 11, 2022
Sep 10, 2021
Jul 12, 2024
Jul 4, 2024
May 30, 2023
Sep 11, 2021
Jul 12, 2024
Sep 10, 2021
Jul 12, 2024
Feb 7, 2023
Feb 3, 2023
Jan 29, 2021
Oct 17, 2022
Dec 28, 2022
Jun 16, 2022
Feb 6, 2023
Feb 6, 2023
Aug 9, 2023
Jul 11, 2024
Feb 6, 2023
Sep 12, 2021
Jul 12, 2024
Jul 12, 2024
Sep 11, 2021
Dec 10, 2022
Oct 21, 2022
Sep 10, 2021

Repository files navigation

Screen Shot 2022-02-11 at 12 01 19 PM

Sponsors

Easy pair programming with any IDE. Duckly enables you to talk, share your code in real-time, server and terminal with people using different IDEs.
Try it out for free


What does this extension do?

This will get you the bleeding-edge syntax highlighting for C++. Which means your theme will be able to color your code better. This used to be a fix, but then VS Code starting using it as the official source for C and C++ highlighting.

NOTE: The default VS Code theme does not color much. Switch to the Dark+ theme (installed by default) or use a theme like one of the following to benefit from the changes:

How do I use the extension?

Just install the VS Code extension and the changes will automatically be applied to all relevant files.
Link: https://marketplace.visualstudio.com/items?itemName=jeff-hykin.better-cpp-syntax

Comparison (Material Theme)

compare

How do I use the grammar? (as an upstream for my non-vs code editor)

  1. Watch the the "Major Changes" thread here to know when I change licenses, the codebase structure, or just major highlighting changes.
  2. I support non-VS Code usecases. E.g. yes, you are welcome to open issues like this one that don't affect VS Code.

What is different from atom/language-c?

It fixes:

  • The issue of single quotes inside #error and #warning being highlighted when then shouldn't be
  • The issue of initialization functions only highlighting the first parenthesis
  • The bug that treats the 'and' and 'or' operator as functions (instead of operators) when they are followed by ()'s
  • Old C99 function highlighting that broke the standard function highlighting
  • The failure of highlighting for the semicolon after namespaces
  • The missing operator overloading symbols
  • The failure to tag operator overloading functions as functions
  • The failure to tag implicit operator overrides
  • The marking of some %'s as invalid inside of strings atom/language-c#289
  • The highlighting of namespaces with ::'s atom/language-c#260
  • The issue of the C++ syntax depending on (and getting screwed up by) the C syntax
  • multiple inheritance atom/language-c#245
  • And many many more issues (#318, #309, #270, #246, etc)

It adds:

  • Parameter highlighting
  • Highlighting of embedded assembly code (if you have an assembly syntax installed)
  • Function-pointer highlighting
  • Lambda highlighting
  • C++14 literal support (100'000ms)
  • Template definition syntax highlighting (including C++ 2020 syntax)
  • Better object identification
  • Improved scope resolution :: syntax
  • Highlighting of templated function calls aFunction<int>(arguments)
  • Additional specificity for many existing tags
  • Many other features

Like this extension?

Contributing

If you'd like to help improve the syntax, take a look at main/main.rb. And make sure to take a look at documentation/CONTRIBUTING.md to get a better idea of how the code works.

Planned future fixes/features:

  • Add tagging for type-casting statements
  • Add tagging for custom types words
  • Better support for dereferenced/pointer tagging
  • Full C++ 2020 support (module imports, arrow return types, etc.)
  • Improving template types

What if I see a highlighting bug?

Let me know! Post an issue on https://github.com/jeff-hykin/better-cpp-syntax I love regular expressions, and PR's are always welcome.

Did you write all of this yourself?

The original JSON was taken from https://github.com/atom/language-c
@matter123 wrote every massive pull request, from simple bugfixes up to the entire textmate testing suite
@j-cortial has fixed many lingering bugs
The #error fix was taken from fnadeau's pull request here: atom/language-c#251
Thank you @matter123, @j-cortial, and @fnadeau!
The rest of the ruby is authored by @jeff-hykin