種別[statuses] cocolog:92424622
セクションJRF のひとこと
日時2020年12月19日
元URLhttp://jrf.cocolog-nifty.com/statuses/2020/12/post-2bb16f.html

うぉ〜。Windows 用 Emacs 26.3 と Cygwin 3.1.7…

うぉ〜。Windows 用 Emacs 26.3 と Cygwin 3.1.7 の bash の関係がメチャクチャだ。
JRF 2020年12月19日

昔のように、

<pre>
(add-hook 'shell-mode-hook
          (lambda ()
           (set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix)))
</pre>

…とかやってればいいという話ではない。

JRF 2020年12月19日

なぜかは知らないが、コマンドラインは cp932 に指定する必要がありながら、同時に (setenv "LANG" "ja_JP.UTF8") をする必要がある。矛盾している。

だから…

<pre>
(setenv "LANG" "ja_JP.UTF8")
</pre>

…した上で…、

JRF 2020年12月19日

<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>

JRF 2020年12月19日

…とかやってやっとまともな表示になる。なんだそれ。

JRF 2020年12月19日

……。

grep とかメッチャ困る。

私は、日本語 grep を perl で作って ~/bin/jgrep に置いてるとして、とりあえず次のようにしている。

JRF 2020年12月19日

<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>

JRF 2020年12月19日

前提として…

<pre>
(setq shell-file-name "bash")
(setq shell-command-switch "-c")
(setq explicit-shell-file-name "bash")
</pre>

JRF 2020年12月19日

このようにすると誤解するかもしれないが、~/bin/jgrep には引数が cp932 でなくちゃんと utf-8 で渡されている。笑っちゃうね。

もっといい方法はないものか…。

JRF 2020年12月19日

後方参照 (1 件)