cocolog:92424622
うぉ〜。Windows 用 Emacs 26.3 と Cygwin 3.1.7 の bash の関係がメチャクチャだ。 (JRF 1964)
JRF 2020年12月19日 (土)
なぜかは知らないが、コマンドラインは cp932 に指定する必要がありながら、同時に (setenv "LANG" "ja_JP.UTF8") をする必要がある。矛盾している。
だから…
<pre>
(setenv "LANG" "ja_JP.UTF8")
</pre>
…した上で…、
JRF2020/12/191649
<pre>
(let ((coding-system-for-read 'utf-8-unix)
(coding-system-for-write 'cp932))
(start-file-process "test" (get-buffer-create "*test*")
"c:/cygwin/bin/bash" "-c" "echo ほげほげ"))
</pre>
JRF2020/12/190806
…とかやってやっとまともな表示になる。なんだそれ。
JRF2020/12/193206
……。
grep とかメッチャ困る。
私は、日本語 grep を perl で作って ~/bin/jgrep に置いてるとして、とりあえず次のようにしている。
JRF2020/12/190780
<pre>
(setq grep-command "~/bin/jgrep -n ")
(defadvice grep
(around grep-set-coding-system activate)
(let ((coding-system-for-read 'utf-8-unix)
(coding-system-for-write 'cp932))
ad-do-it))
</pre>
JRF2020/12/193175
前提として…
<pre>
(setq shell-file-name "bash")
(setq shell-command-switch "-c")
(setq explicit-shell-file-name "bash")
</pre>
JRF2020/12/196063
このようにすると誤解するかもしれないが、~/bin/jgrep には引数が cp932 でなくちゃんと utf-8 で渡されている。笑っちゃうね。
もっといい方法はないものか…。
JRF2020/12/190864
昔のように、
<pre>
(add-hook 'shell-mode-hook
(lambda ()
(set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix)))
</pre>
…とかやってればいいという話ではない。
JRF2020/12/193147