参考:rust-cpp
emacs/spacemacs はメジャーモードでネストモードをサポートできますか? 私はvimに慣れていて、emacs/spacemacsは初めてです。
一度にいくつかの主要なモードを実行するためのいくつかのソリューションを一覧表示するwikiにアクセスできます。
あなたの場合、同じバッファで C++ と Rust を認識するために、2 つのメジャー モードを実行する必要があります。
c++-mode
(デフォルトで利用可能)rust-mode
mmm-mode
Rust 環境は Emacs で既に構成されていると思います。c++-mode
以下は、Rust メジャー モードの実行中に追加されます。Emacs 構成ファイルに、次のスニペットを追加します。
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(mmm-add-classes
'((rust-cpp ; Name of the mmm class
:submode c++-mode ; Additional major mode, here it is C++
:front "^cpp! {[\n\r]+" ; Start tag for c++-mode
:back "^}$"))) ; Stop tag for c++-mode
(mmm-add-mode-ext-class 'rust-mode nil 'rust-cpp)
Rust コードでc++-mode
は、次のパターンが存在する場合にアクティブ化されます。
cpp! {
// your C++ code...
}
rust-cpp
RustとC++を混在させるときのルールがわからないので、正規表現の微調整をお任せします。