UPDATE: Essa versão pré-teste que coloquei na pergunta original ( emacs-26.0.90.tar.gz
) tinha um bug que causava certos loops infinitos ao analisar o buffer, especificamente ao usar o <
token em certos contextos, como escrever <
como o primeiro caractere de um buffer vazio em Java ou C ++ ou após a palavra-chave template
. O bug foi corrigido no emacs-26
ramo, e é isso que você precisa fazer o download.
Demorou muito para eu encontrar a resposta e aprender como personalizar o comportamento da linguagem elisp, mas uma maneira de corrigir isso é dizer ao cc-mode
que constexpr
é um "nome de ruído", o que significa que será tratado como um espaço em branco e, portanto, ignorado pelo analisador.
O problema é que, na última versão estável do emacs (25.3), o recurso de adicionar palavras de ruído não é adicionado, mesmo quando está no repositório desde fevereiro de 2016, então você precisa fazer o download da versão sem lançamento.
cd tmp_folder_of_your_choice
sudo apt-get install build-essential # if you don't have it yet
sudo apt-get build-dep emacs24 # get all dependancies to build emacs
# Not this: wget https://github.com/emacs-mirror/emacs/archive/emacs-26.0.90.tar.gz
wget -O emacs-26.zip https://github.com/emacs-mirror/emacs/archive/e8636ac8cc96e1e7e948f04091792da09dafcc76.zip
# or just the last version of the branch, but the exact version I have is the one above
# wget https://github.com/emacs-mirror/emacs/archive/emacs-26.zip
unzip emacs-26.zip
cd emacs-emacs-26
./autogen.sh
./configure
make
sudo make install
emacs ~/.emacs
E então, por exemplo, no final do .emacs
arquivo, adicione:
; Load the mode before-hand to make the symbols visible
(require 'cc-mode)
(custom-set-variables '(c-noise-macro-names '("constexpr")))