讨论一下 Emacs 中的 UTF-8 编码设置

windows上我也没设置utf-8,default-process-coding-system显示(undecided-dos . undecided-unix)。 consult-ripgrep只需要设置:

(add-to-list 'process-coding-system-alist 
                        '("[rR][gG]" . (utf-8 . gbk-dos)))

就可以了,不过如果启动进程通过cmdproxy的话就需要设置cmdproxy的编码,比如project-find-regexp配置用ripgrep搜索(setq xref-search-program 'ripgrep),就需要临时改变下编码:

(defadvice xref-matches-in-files (around my-xref-matches-in-files activate)
    (let ((cmdproxy-old-encoding (cdr (assoc "[cC][mM][dD][pP][rR][oO][xX][yY]" process-coding-system-alist))))
      ;; 注意project search是xargs实现的,会向rg先发送文件列表,因此对输入编码有要求
	  (modify-coding-system-alist 'process "[cC][mM][dD][pP][rR][oO][xX][yY]" '(utf-8 . utf-8))
      ;; 检查是否含中文
	  (if (chinese-word-chinese-string-p (ad-get-arg 0))
          (let ((xref-search-program-alist (list (cons 'ripgrep (concat (cdr (assoc 'ripgrep xref-search-program-alist)) " --pre rgpre")))))
            ad-do-it
            )
        ad-do-it)
	  (modify-coding-system-alist 'process "[cC][mM][dD][pP][rR][oO][xX][yY]" cmdproxy-old-encoding)))

其它就主要进程通信有编码问题,其它我没遇到过,以前有.session的文件提示编码后来改为保存为utf-8就没问题了。

3 个赞