linux - smart - ¿Cómo reiniciar emacs para guardar archivos en la codificación de caracteres utf-8-unix?
smart contracts ethereum (3)
Para recuperar el comportamiento antiguo descrito, intente agregar
(set-language-environment "UTF-8")
a su archivo de inicio de .emacs
.
Tengo un problema. Descubrí que emacs se detuvo recientemente para guardar todos mis nuevos archivos con el juego de caracteres predeterminado " utf-8-unix ". No entiendo lo que hice, pero cuando abro un archivo, sobre el mini-buffer veo "-: ---" en vez de " -U: --- ", donde la "U" dice que el archivo se guarda con utf-8-unix charset. ¿Cómo puedo restablecer emacs para guardar archivos en el sistema de codificación adecuado?
He aquí mi arreglo:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ENCODING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C-h C RET
;; M-x describe-current-coding-system
(add-to-list ''file-coding-system-alist ''("//.tex" . utf-8-unix) )
(add-to-list ''file-coding-system-alist ''("//.txt" . utf-8-unix) )
(add-to-list ''file-coding-system-alist ''("//.el" . utf-8-unix) )
(add-to-list ''file-coding-system-alist ''("//.scratch" . utf-8-unix) )
(add-to-list ''file-coding-system-alist ''("user_prefs" . utf-8-unix) )
(add-to-list ''process-coding-system-alist ''("//.txt" . utf-8-unix) )
(add-to-list ''network-coding-system-alist ''("//.txt" . utf-8-unix) )
(prefer-coding-system ''utf-8-unix)
(set-default-coding-systems ''utf-8-unix)
(set-terminal-coding-system ''utf-8-unix)
(set-keyboard-coding-system ''utf-8-unix)
(set-selection-coding-system ''utf-8-unix)
(setq-default buffer-file-coding-system ''utf-8-unix)
;; Treat clipboard input as UTF-8 string first; compound text next, etc.
(setq x-select-request-type ''(UTF8_STRING COMPOUND_TEXT TEXT STRING))
;; mnemonic for utf-8 is "U", which is defined in the mule.el
(setq eol-mnemonic-dos ":CRLF")
(setq eol-mnemonic-mac ":CR")
(setq eol-mnemonic-undecided ":?")
(setq eol-mnemonic-unix ":LF")
(defalias ''read-buffer-file-coding-system ''lawlist-read-buffer-file-coding-system)
(defun lawlist-read-buffer-file-coding-system ()
(let* ((bcss (find-coding-systems-region (point-min) (point-max)))
(css-table
(unless (equal bcss ''(undecided))
(append ''("dos" "unix" "mac")
(delq nil (mapcar (lambda (cs)
(if (memq (coding-system-base cs) bcss)
(symbol-name cs)))
coding-system-list)))))
(combined-table
(if css-table
(completion-table-in-turn css-table coding-system-alist)
coding-system-alist))
(auto-cs
(unless find-file-literally
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(funcall set-auto-coding-function
(or buffer-file-name "") (buffer-size))))))
(preferred ''utf-8-unix)
(default ''utf-8-unix)
(completion-ignore-case t)
(completion-pcm--delim-wild-regex ; Let "u8" complete to "utf-8".
(concat completion-pcm--delim-wild-regex
"//|//([[:alpha:]]//)[[:digit:]]"))
(cs (completing-read
(format "Coding system for saving file (default %s): " default)
combined-table
nil t nil ''coding-system-history
(if default (symbol-name default)))))
(unless (zerop (length cs)) (intern cs))))
Por algún motivo, Windows comenzó a interpretar mi archivo init.el
como codificado en algo diferente a UTF-8, y se atascó en caracteres como "ö" y "§". La solución fue agregar una línea ; -*- coding: utf-8 -*-
; -*- coding: utf-8 -*-
al comienzo del archivo.
Para estar seguro de que UTF-8 se usa en todos los casos, tengo las siguientes líneas en init.el
:
;; Use UTF-8 for all character encoding.
(set-language-environment ''utf-8)
(set-default-coding-systems ''utf-8)
(set-selection-coding-system ''utf-8)
(set-locale-environment "en.UTF-8")
(prefer-coding-system ''utf-8)
(setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding