Как настроить GNU Emacs для записи файлов формата UNIX или DOS по умолчанию?
У меня были эти функции в моем .emacs.el
файле в течение многих лет:
(defun dos2unix ()
"Convert a DOS formatted text buffer to UNIX format"
(interactive)
(set-buffer-file-coding-system 'undecided-unix nil))
(defun unix2dos ()
"Convert a UNIX formatted text buffer to DOS format"
(interactive)
(set-buffer-file-coding-system 'undecided-dos nil))
Эти функции позволяют мне легко переключаться между форматами, но я не уверен, как настроить Emacs для записи в одном конкретном формате по умолчанию, независимо от того, какую платформу я использую. Как и сейчас, когда я запускаю Windows, Emacs сохраняет в формате Windows; когда я запускаю в UNIX/Linux, Emacs сохраняет в формате UNIX.
Я хотел бы указать Emacs писать в формате UNIX независимо от платформы, на которой я запущен. Как это сделать?
Должен ли я добавить некоторый крючок текстового режима, который вызывает одну из этих функций? Например, если я нахожусь в Windows, то вызывайте dos2unix
, когда я нахожу текстовый файл?
Ответы
Ответ 1
У меня есть куча этих в моих .emacs:
(setq-default buffer-file-coding-system 'utf-8-unix)
(setq-default default-buffer-file-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(prefer-coding-system 'utf-8-unix)
Я не знаю, что правильно, я просто суеверен.
Ответ 2
Я проголосовал за вопрос и ответ, но потратил пару минут, возможно, улучшив информацию, поэтому добавлю.
Во-первых, я проверил документацию по каждой переменной и функции в ответе user181548, (сначала вырезая и вставляя в Emacs, затем), накладывая курсор на каждый, и набрав C-h v RET
и C-h f RET
соответственно.
Это предполагает, что мне может понадобиться только
(prefer-coding-system 'utf-8-unix)
Эксперименты с другими строками, похоже, не изменяли ранее существовавшие кодировки буфера (вводя C-h C RET RET
для проверки (describe-coding-system
) и g
каждый раз для обновления), поэтому я пропустил другие строки и сделал key-binding для быстрого изменения любых старых файлов, которые все еще были DOS, то есть
(defun set-bfr-to-8-unx ()
(interactive)
(set-buffer-file-coding-system
'utf-8-unix)
)
(global-set-key (kbd "C-c u")
'set-bfr-to-8-unx
)
Для любознательных, чтобы обнаружить 3-ю и 4-ю строку выше функции, (set-buffer-file-coding-system 'utf-8-unix)
, я использовал C-x RET f RET
, чтобы вручную изменить текущую кодировку буфера, а затем M-x command-history RET
, чтобы увидеть, как эти ключи переводят код.
Теперь, возможно, мой git commit перестанет скулить о CR.