在我的.emacs文件中,我使用了
行'(setq coding-system-for-write 'iso-8859-1-unix)
让Emacs以iso-8859-1-unix编码保存文件。当我 输入无法以这种方式编码的字符(“Łódź”for 例如),我被提示选择不同的编码,但是在 将“iso-8859-1-unix”输入迷你缓冲区,保存文件 违规的人物丢失了。
如果我在提示符处按Enter键,则文件将以Unicode保存,并且 当我关闭并重新打开Emacs时,它被解释为Unicode文件 再次。如果我然后删除有问题的字符,保存文件和 关闭并重新打开Emacs另一次,它仍被解释为 Unicode文件 - 我从中推断出它仍然保存在 Unicode,即使保存在iso-8859-1-unix中也是如此 可能的。
有没有办法强制Emacs在iso-8859-1中写一个文件 尽可能,如果这样做,永远不要将其保存在该编码中 会狼吞虎咽吗?
非常感谢,
ThureDührsen
答案 0 :(得分:1)
根据coding-system-for-write
的文档字符串,您不应该全局设置它。
您所寻找的可能是(prefer-coding-system 'iso-8859-1-unix)
?
答案 1 :(得分:0)
尝试
(setq-default buffer-file-coding-system 'iso-8859-1)
纳入AProgrammer的建议,我们得到了
(defun enforce-coding-system-priority ()
(let ((pref (car (coding-system-priority-list)))
(list (find-coding-systems-region (point-min) (point-max))))
(when (or (memq 'undecided list) (memq pref list))
(setq buffer-file-coding-system pref))))
(add-hook 'before-save-hook 'enforce-coding-system-priority)
(prefer-coding-system 'iso-8859-1)
答案 2 :(得分:0)
我尝试编写一个保存时间挂钩函数,它会检查缓冲区的内容并相应地设置编码。通过使用查找编码系统区域,应该没有太多工作。
答案 3 :(得分:0)
以下内容应使Emacs询问何时缓冲区编码不,设置emacs以保存文件。然后,Emacs将提示您选择“安全”编码中的一个。
(setq select-safe-coding-system-accept-default-p
'(lambda (coding)
(string=
(coding-system-base coding)
(coding-system-base buffer-file-coding-system))))