我有一個小的elisp腳本,它在區域或整個文件上應用Perl :: Tidy。作爲參考,這裏的腳本(從EmacsWiki借用):如何設置shell-command-on-region輸出的編碼?
(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的Windows(EmacsW32)。我遇到的問題是,如果我將該腳本應用於UTF-8編碼文件(狀態欄中的「U(Unix)」),則輸出將返回Latin-1編碼,即每個非編碼文件有兩個或更多字符ASCII源字符。
有沒有什麼辦法可以解決這個問題?
編輯:問題似乎在我的使用(set-terminal-coding-system 'utf-8-unix)
來解決。任何人都有其他解決方案,請繼續寫下來!