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就没问题了。