我有一个小的 elisp 脚本,它在区域或整个文件上应用 Perl::Tidy。作为参考,这是脚本(从 EmacsWiki 借来的):
(defun perltidy-command(start end)
"The perltidy command we pass markers to."
(shell-command-on-region start
end
"perltidy"
t
t
(get-buffer-create "*Perltidy Output*")))
(defun perltidy-dwim (arg)
"Perltidy a region of the entire buffer"
(interactive "P")
(let ((point (point)) (start) (end))
(if (and mark-active transient-mark-mode)
(setq start (region-beginning)
end (region-end))
(setq start (point-min)
end (point-max)))
(perltidy-command start end)
(goto-char point)))
(global-set-key "\C-ct" 'perltidy-dwim)
我正在使用当前的 Emacs 23.1 for Windows (EmacsW32)。我遇到的问题是,如果我在 UTF-8 编码文件(状态栏中的“U(Unix)”)上应用该脚本,输出将返回 Latin-1 编码,即每个非编码的两个或多个字符ASCII 源字符。
有什么办法可以解决吗?
编辑:问题似乎通过(set-terminal-coding-system 'utf-8-unix)
在我的init.el
. 如果有人有其他解决方案,请继续编写它们!