Подтвердить что ты не робот

Как настроить 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, когда я нахожу текстовый файл?

4b9b3361

Ответ 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.