Emacs: Convert File Line Ending for All Files in a Dir 🚀
Here's emacs command that convert file line endings (Linux, Microsoft Windows, Mac OS 9), on current file, or marked files in dired in batch.
put this in your Emacs Init File:
(defun xah-change-file-line-ending-style (Files Style) "Change current file or `dired' marked file's newline convention. When called in lisp, Style is one of 'unix 'dos 'mac or any of accepted emacs coding system. See `list-coding-systems'. URL `http://xahlee.info/emacs/emacs/elisp_convert_line_ending.html' Version: 2016-10-16 2022-04-07" (interactive (list (if (eq major-mode 'dired-mode ) (dired-get-marked-files) (list (buffer-file-name))) (completing-read "Line ending:" '("Linux/MacOSX/Unix" "MacOS9" "Windows") nil "REQUIRE-MATCH"))) (let* ( (xcodingSystem (cond ((equal Style "Linux/MacOSX/Unix") 'unix) ((equal Style "MacOS9") 'mac) ((equal Style "Windows") 'dos) (t (error "code logic error 65327. Expect one of it." ))))) (mapc (lambda (x) (xah-convert-file-coding-system x xcodingSystem)) Files))) (defun xah-convert-file-coding-system (Fpath Coding-System) "Convert file's encoding. Fpath is full path to file. Coding-System is one of 'unix 'dos 'mac or any of accepted emacs coding system. See `list-coding-systems'. If the file is already opened, it will be saved after this command. URL `http://xahlee.info/emacs/emacs/elisp_convert_line_ending.html' Version: 2015-07-24 2022-01-23 2022-01-23" (let ( (xbufferOpened-p (get-file-buffer Fpath))) (if xbufferOpened-p (with-current-buffer xbufferOpened-p (if (string-match (concat (symbol-name Coding-System) "$") (symbol-name buffer-file-coding-system)) nil (progn (set-buffer-file-coding-system Coding-System) (save-buffer)))) (with-temp-file Fpath (insert-file-contents Fpath) (if (string-match (concat (symbol-name Coding-System) "$") (symbol-name buffer-file-coding-system)) nil (progn (set-buffer-file-coding-system Coding-System)))))))