O C ++ 14 nos forneceu a opção de usar aspas simples para separar os dígitos de literais numéricos grandes. Isso interrompe o destaque da sintaxe do Vim.
Por exemplo, considere o seguinte programa 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;
}
Quando vejo isso no Vim, vejo o seguinte destaque da sintaxe (observe que estou usando alguns scripts de destaque adicionais ):
Gostaria que todos os dígitos huge_number_again
aparecessem em vermelho. Existe uma modificação que posso fazer em um dos meus arquivos de sintaxe ou no meu ~/.vimrc
para corrigir isso?
Vejo que algum suporte para C ++ 14 foi adicionado na v7.4.923 (literais binários). Mas não o separador de números que parece: - / Os arquivos C ++ mais recentes daqui também não parecem possuí-lo.
—
Martin Tournoij 14/03
Para uma solução rápida, você provavelmente pode adicionar
—
Muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
a ~/.vim/syntax/cpp.vim
. (Btw, se é C ++, utilização cstdlib
, não stdlib.h
.)
Acabei de perceber que há um problema em aberto desde maio de 2014.
—
Martin Tournoij 14/03
@ muru Isso parece ter resolvido o problema. Por enquanto, estou bem em usar um hack rápido. Obrigado!
—
Jake
@Carpetsmoker Não tenho certeza da correspondência de sintaxe para saber exatamente o que minha alteração faz. Penso que corresponderá apenas a um dígito seguido de qualquer número de dígitos ou aspas simples, além do
—
Muru
ull
cotão, mas não sei se corresponderá a algum caso inválido. E, aparentemente, o C ++ 14 permite o separador em octal, binário, literais hexadecimais e flutuadores e após o ponto decimal em flutuadores. Isso é muito mais do que estou disposto a enfrentar.