cmdproxy 的 process-coding-system-alist 似乎应该改成 utf-8 了?

先描述下我的环境:

  • Windows 10 Pro 1903 (Region:China Language:English)
  • Language for non-Unicode program(system locale): Chinese
  • GNU Emacs 26.1
  • spacemacs develop 分支当前(190704)最新
  • projectile目录类型: 普通目录 (非git 非svn)
  • shell-file-name: path\to\cmdproxy.exe (需要兼容Win7,故没有条件使用WSL)
  • projectile-generic-command: “fd . -0 --type f --color=never” (把fd.exe加入PATH,默认就是这个值; fd版本是7.3 msvc)

问题

我的helm-projectile-find-file 一直处于"半残废"状态。 在helm-projectile-find-file中,它会通过projectile-find-file列出文件并cache。但因为project中出现了文件名是中文到文件,而我的编码配置不正确,列举到中文名到文件时,就"无法cache了"(这个表述不准确…)。

说回到作为用户到体验上,helm-projectile-find-file勉强能用,但主要有2点影响:

  1. project file清单似乎是不全的
  2. 只要在project中新增文件,就报这个错: These default coding systems were tried to encode text image 而只要重做一次新建步骤,就可以新建成功了。 总得来说,能用但很不舒服,算是"半残废"了吧

然后,这个问题解决了

今天耐心查了下这个让人困扰到问题,发现fd进程是通过shell-command-to-string起的,在我到环境下,就是cmdproxy了。 因为之前没有配置过cmdproxy的process-coding-system-alist,于是又查了查。一般会建议这么配:

(modify-coding-system-alist 'process "[cC][mM][dD][pP][rR][oO][xX][yY]" '(chinese-gbk-dos . chinese-gbk-dos))

测下来,发现并没有用。于是随便试了下utf-8

(modify-coding-system-alist 'process "[cC][mM][dD][pP][rR][oO][xX][yY]" '(utf-8 . utf-8))

竟然解决了…

然而还是很懵,有没有大佬给指点一下哈~~

这个的连带效应会很多,比如dired,find,grep是否正常,