link0ff (link0ff) wrote in ru_emacs,
link0ff
link0ff
ru_emacs

Автоматическая кодировка для команд

Что делать, если есть файлы в разной кодировке (например, `utf-8' и `koi8-r') и их нужно сравнивать командами `dired-diff' или `dired-backup-diff'? Приходится открывать файл, смотреть, какую кодировку он использует, а потом вручную указывать кодировку через `C-x RET c' перед запуском `dired-diff'. Слишком много движений, поэтому через defadvice можно навесить определение кодировки файлов и запуск команды с нужной кодировкой (дополнительно рекомендуется использовать UniCAD):

;; Get coding from the file, so diff will output in the correct coding:
(defadvice dired-backup-diff (around my-dired-backup-diff act)
  (let* ((filename (dired-get-filename t))
         (coding-system (with-temp-buffer
                          (insert-file-contents filename nil 0 1024)
                          buffer-file-coding-system))
         (coding-system-for-read coding-system)
         (coding-system-for-write coding-system))
    ad-do-it))

;; Get coding from the file, so diff will output in the correct coding:
(defadvice dired-diff (around my-dired-diff act)
  (let* ((filename (dired-get-filename t))
         (coding-system (with-temp-buffer
                          (insert-file-contents filename nil 0 1024)
                          buffer-file-coding-system))
         (coding-system-for-read coding-system)
         (coding-system-for-write coding-system))
    ad-do-it))


Аналогичная проблема существует также для `grep'. Как автоматически указать правильную кодировку перед запуском грепа, чтобы он искал в файлах с этой кодировкой. Я пока не нашел решения этой проблемы. Есть идеи, как это сделать?
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments