私は主にemacsを使って編集します。パペット構成ファイル。 RubyモードをロードしてPuppet設定ファイル(*.pp
)で使用するには、.emacsで次の設定を使用しています。
(autoload 'ruby-mode "ruby-mode" "Major mode for editing ruby scripts." t)
(setq auto-mode-alist (cons '(".rb$" . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '(".pp$" . ruby-mode) auto-mode-alist))
私の人形ファイルに「ensure」ディレクティブをインデントした以外はすべて大丈夫です。ensure
これはRubyの予約語なので、インデントがより目立つようになります。
cron { logrotate:
command => "/usr/sbin/logrotate",
user => root,
hour => 2,
ensure => present
minute => 0,
}
ensure
EmacsにPuppetファイルを特別に処理しないように指示する方法は?
答え1
私の考えでは、この問題を処理する最も簡単な方法は、ruby-mode.elをpuppet-mode.elにコピーし、特に処理されているすべての
ensure
場所を削除することです。私の場合は、ruby-mode.el
次の2つの場所でのみこれが発生しているようです。
ブロックワード定義の場所
(defconst ruby-block-mid-keywords '("then" "else" "elsif" "when" "rescue" "ensure") "Keywords where the indentation gets shallower in middle of block statements.")
予約語は次のように定義されます。
(defconst ruby-font-lock-keywords ... "ensure"
ensure
両方の場所から削除して別の名前で保存し、puppet-mode.el
それを変更すると.emacs
問題が解決します。
(autoload 'puppet-mode "puppet-mode" "Major mode for editing Puppet config" t)
(setq auto-mode-alist (cons '(".pp$" . puppet-mode) auto-mode-alist))