タグ付けされた質問 「cc-mode」

3
cc-modeのbefore-save-hook
cc-mode保存する前に関数を実行するようにカスタマイズしたい。1つの解決策は、cc-modeキーマップを変更C-x C-sして、必要な作業を実行して保存する関数にバインドすることです。 私の質問は、これのためにカスタマイズできるフックがあるかどうかです。CCフックドキュメントは言及していないbefore-save-hook、特にためにcc-mode。フックを介してこれをどのように行う必要がありますか? または、これをどのように行うのdefadviceですか?マニュアルを読んだところ、私が見た唯一の方法は、保存する前にアドバイスを有効にし、作業が終わったら無効にすることでした。これは面倒に聞こえます。advicesの慣用的な使い方は何でしょうか?
13 hooks  cc-mode  advice 

1
c ++モードの場合はconstexprのフォーマット
私は最近C ++ 17を使い始めました。これはconstexpr ifをもたらします。しかし、これはc++-modeデフォルトのインデントを台無しにします。 // emacs 25.3.2 with --no-init if constexpr (n == 1) { // Why? } else if constexpr (n == 2) { // This is a mess... } else { // and it keeps getting weird } どっちでもいい cc-modeのより簡単な代替案を知っていますか? この特定の問題を解決する方法を知っていますか?

1
特定の行のカスタムインデント?
私は現在、バッファの残りのインデントをめちゃくちゃにすることなく、具体的にいくつかの行を処理する方法を理解しようとしています。MyFunc例として次の関数を考えてください: void MyFunc() { unsigned y = 0; DONOTINDENT; unsigned int x = 5 + 2; return x + 12; } ここでは、行DONOTINDENT;を列0までインデントしますが、関数の残りの部分は通常インデントする必要があります。私は次のカスタムを使用してこれを解決しようとしましたc-special-indent-hook: (defun my-c-mode-indent-hook () (let (p1 p2 myline) (setq p1 (line-beginning-position)) (setq p2 (line-end-position)) (setq myLine (buffer-substring-no-properties p1 p2)) (if (string-match-p "DONOTINDENT" myLine) (save-excursion (indent-line-to 0)) ) ) ) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.