CẬP NHẬT: Phiên bản giả định mà tôi đặt ở đó trong câu hỏi ban đầu ( emacs-26.0.90.tar.gz
) có một lỗi gây ra các vòng lặp vô cực nhất định trong khi phân tích bộ đệm, đặc biệt là khi sử dụng <
mã thông báo trong ngữ cảnh xác nhận, như viết <
là ký tự đầu tiên của bộ đệm trống trong Java hoặc C ++ hoặc sau từ khóa template
. Lỗi đã được sửa trong emacs-26
nhánh, vì vậy đó là những gì bạn phải tải xuống thay thế.
Tôi đã mất rất nhiều thời gian để tìm ra câu trả lời và học cách tùy chỉnh thuộc tính theo ngôn ngữ elisp, nhưng, một cách khắc phục bằng cách nói với cc-mode
đó constexpr
là "tên tiếng ồn", có nghĩa là nó sẽ được coi là một khoảng trắng và do đó bị bỏ qua bởi trình phân tích cú pháp.
Có một điều là trong bản phát hành ổn định cuối cùng của emacs (25.3), tính năng thêm từ tiếng ồn không được thêm vào, ngay cả khi nó ở trong repo kể từ tháng 2 năm 2016, vì vậy bạn phải tải xuống phiên bản không phát hành.
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
Và sau đó, ví dụ ở cuối .emacs
tệp, thêm:
; Load the mode before-hand to make the symbols visible
(require 'cc-mode)
(custom-set-variables '(c-noise-macro-names '("constexpr")))