先描述下我的环境:
- 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点影响:
- project file清单似乎是不全的
- 只要在project中新增文件,就报这个错: These default coding systems were tried to encode text 而只要重做一次新建步骤,就可以新建成功了。 总得来说,能用但很不舒服,算是"半残废"了吧
然后,这个问题解决了
今天耐心查了下这个让人困扰到问题,发现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))
竟然解决了…
然而还是很懵,有没有大佬给指点一下哈~~