私は Elisp を書いていませんし、アンダースコアの文体上の利点について Hadley に同意しません。さらに、Hadley はまだOneTrueEditorを使用しないという砂漠で迷子になっているため、この問題について彼からの助けは期待できません。
ただし、Hadley ではなく R Core に従うことにオープンな場合は、R Internals マニュアルのセクション 8.「R コーディング標準」が推奨する内容を以下に示します。私にとって、R スタイルを最初に定義するのは R Core です。Google と Hadley のスタイルは、二次的な推奨事項として優れています。
とにかく、Elispに戻ります。以下は長年にわたって私たちに役立ってきました.Rの基本的な動作がEmacs C++スタイルに似ているという事実が気に入っています.
[...]
また、コードを他の人が理解できるように記述することも重要です。これは、問題の修正に特に役立ちます。自己記述的な変数名の使用、コードへのコメント、適切なフォーマットも含まれます。R コア チームは、R および C (およびほとんどの場合 Perl) コードには基本的なインデント 4 を使用し、Rd 形式のドキュメントには 2 を使用することを推奨しています。Emacs (21 以降) のユーザーは、スタートアップ ファイルの 1 つに以下を記述し、カスタマイズを使用してc-default-style' to
"bsd"' およびc-basic-offset' to
4' を設定することで、このインデント スタイルを実装できます。)
;;; ESS
(add-hook 'ess-mode-hook
(lambda ()
(ess-set-style 'C++ 'quiet)
;; Because
;; DEF GNU BSD K&R C++
;; ess-indent-level 2 2 8 5 4
;; ess-continued-statement-offset 2 2 8 5 4
;; ess-brace-offset 0 0 -8 -5 -4
;; ess-arg-function-offset 2 4 0 0 0
;; ess-expression-offset 4 2 8 5 4
;; ess-else-offset 0 0 0 0 0
;; ess-close-brace-offset 0 0 0 0 0
(add-hook 'local-write-file-hooks
(lambda ()
(ess-nuke-trailing-whitespace)))))
(setq ess-nuke-trailing-whitespace-p 'ask)
;; or even
;; (setq ess-nuke-trailing-whitespace-p t)
;;; Perl
(add-hook 'perl-mode-hook
(lambda () (setq perl-indent-level 4)))
(Emacs の C および R モードの `GNU' スタイルは、基本的なインデント 2 を使用します。これは、幅の狭いフォントを使用すると、構造が十分に明確に表示されないと判断されています。)
私が定期的に追加しているのは、最後のコメントアウトされたスニペットに従うことだけだと思います。
;; or even
(setq ess-nuke-trailing-whitespace-p t)
もちろん、アンダースコアを使用してコーディングする必要がある場合は、アンダースコアのトグルをオフにすることもできます。