У вас тут несколько проблем. Сначала я займусь мелкими проблемами.
.emacs
- это плохое место для установки командных команд. Файл .emacs
- это ваш личный файл конфигурации, который запускается всякий раз, когда вы запускаете Emacs в интерактивном режиме. Вы не хотите, чтобы ваши пакетные команды выполнялись в интерактивном режиме.
Когда Emacs выполняется с --batch
, « аргументы действия » (например, -l
) оцениваются в порядке слева направо. Поэтому уже слишком поздно делать -l actionscript-mode.el
после того, как вы уже загрузили и сохранили файл.
Лучше стиль кодирования Emacs вызывать (point-min)
для получения начала (видимой части) буфера и (point-max)
для получения конца буфера. (В этом случае нет ничего сложного, но хорошо, когда все правильно.)
Так что ваш скрипт должен выглядеть примерно так: (Я выписал все варианты полностью для максимальной ясности.)
emacs --batch \
--load=~/actionscript-mode.el \
--visit=FILE \
--funcall=actionscript-mode \
--execute='(indent-region (point-min) (point-max))' \
--funcall=save-buffer
Теперь перейдем к основной проблеме. Вы хотите переместить открывающие скобки, чтобы они появлялись в конце строк, а не в начале строк. Команда indent-region
не сделает этого за вас - она только добавляет или удаляет отступы для строк, которые вы ей даете. Так что для вашего приложения вам действительно нужно отредактировать файл. Например, вы можете добавить этот аргумент в пакетный скрипт (после вызова actionscript-mode
и до вызова indent-region
):
--execute='(replace-regexp " *\n *{" " {")'
Это немного грубо и может неправильно перемещать некоторые фигурные скобки (например, фигурные скобки внутри строк), но это может быть достаточно для вашего приложения. Спросите еще раз, если у вас все еще есть проблемы.