저는 주로 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
다음 두 곳에서만 이런 일이 발생하는 것 같습니다.
블록 단어 정의 위치
(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))