Иногда я редактирую файлы (например, манифесты Puppet), где я хочу выровнять содержимое буфера на лету. Например, я знаю, что могу использовать align-regexp
или align
для выравнивания кода следующим образом, если я его выбрал:
# M-x align-regexp "=>" will line everything up nicely
file { "/etc/foo":
ensure => present,
mode => "0666",
source => "puppet:///modules/example/foo",
}
Но я действительно хочу, чтобы это происходило на лету - без необходимости выбирать регион или весь буфер. Есть ли пакет или режим, который будет делать это, или это то, что должно быть встроено в интересующий меня режим?
Изменить: я спросил о Puppet и CFEngine, так как это то, что я кодирую в большинстве случаев, и у меня есть сильные предпочтения для выравнивания текста. Тем не менее, мне также было любопытно (и не очень хорошо выразил это) узнать, является ли выравнивание «на лету» функцией, характерной для режимов Emacs (в основном в режимах для языков программирования), или большинство людей выравнивают при сохранении или при некоторых другой момент.
indent-region
на align-to-equals
и определите эту функцию как (defun align-to-equals (begin end) (interactive "r") (align-regexp begin end "\\(\\s-*\\)=" 1 1 nil))
; и emacs-lisp-mode-hook
с puppet-mode-hook
.