C ++ 14 zapewnił nam możliwość użycia pojedynczych cudzysłowów do oddzielenia cyfr dużych literałów liczbowych. To łamie podświetlanie składni Vima.
Rozważmy na przykład następujący program C ++ 14:
#include <stdlib.h>
int main(int argc, char** argv) {
// small numbers are fine
int normal_number = 5;
// large numbers have the correct highlighting but they're hard to visually parse
int huge_number = 1000000000;
// apostrophes help with visual parsing but mess up syntax higlighting
int huge_number_again = 1'000'000'000;
return EXIT_SUCCESS;
}
Kiedy przeglądam to w Vimie, widzę następujące podświetlanie składni (zauważ, że używam dodatkowych skryptów podświetlających ):
Chciałbym, żeby wszystkie cyfry były huge_number_again
czerwone. Czy mogę zmodyfikować jeden z moich plików składniowych lub ~/.vimrc
poprawić to?
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
do ~/.vim/syntax/cpp.vim
. (Btw, jeśli to C ++, użyj cstdlib
, nie stdlib.h
.)
ull
puch, ale nie wiem, czy pasuje do jakiejś nieprawidłowej wielkości. I najwyraźniej C ++ 14 pozwala na separator w liczbach ósemkowych, dwójkowych, szesnastkowych i liczbach zmiennoprzecinkowych oraz po kropce dziesiętnej w liczbach zmiennoprzecinkowych. To o wiele więcej, niż jestem w stanie przyjąć.