■ emacs 共通の設定


【お知らせ】


<2017/08/09 追記>
本設定の代わりに以下の設定を行うと、shell-mode がより便利に利用できます。

<2015/12/11 追記>
gnupack-13.02 での確認となりますが、.bashrc の初めの方に以下の設定を追加すると、shell-mode のバッファの表示がカラフルになるようです。
if [ "$INSIDE_EMACS" ]; then
   TERM=emacs
fi

<2015/07/26 追記>
fakecygpty を使うための設定」の見直しにより、MinGW版 emacs 向けに必要だった shell の割り込みの設定が不要となりました。

【本題】



shell-mode を利用するための設定です。
(require 'shell)

(setq shell-file-name "/bin/bash") ; Mingw版 emacs から Cygwin の bash を使う場合は、"bash" とすること
(setq shell-command-switch "-c")
(setq explicit-shell-file-name shell-file-name)

;; C-c s で shell を起動する
;; C-u C-c s で shell を追加起動する
(global-set-key (kbd "C-c s")
                (lambda ()
                  (interactive)
                  (if current-prefix-arg
                      (shell (generate-new-buffer-name "*shell*"))
                    (shell))))

gnupack-11.00 までの gnupack を使っている場合は、事前に以下の設定を行い、既設定情報の削除を行ってください。(setup-cygwin.el や init.el で行われている設定の解除です。)
;; gnupack では、process-coding-system-alist 連想リストに shell関係の設定がしてあるので削除する
(setq process-coding-system-alist
      (delq (assoc "bash" process-coding-system-alist) process-coding-system-alist))
(setq process-coding-system-alist
      (delq (assoc ".*sh\\.exe" process-coding-system-alist) process-coding-system-alist))

;; gnupack の init.el 内で設定している shell-mode-hook の設定をクリアする
(setq shell-mode-hook nil)


<変更履歴>
  • 2012/09/16 shellバッファにコーディングシステムを設定する際の shellバッファ判定方法を改善した。
  • 2012/09/16 shellバッファの文字化け対策の advice を掛ける場所を変更した。
  • 2012/09/18 comint-quit-subjob の割り込み対策を追加した。
  • 2012/09/18 プロンプトの文字化け対策方法について、コメントへの記載を追加した。
  • 2012/11/20 shell-mode をリモートマシンに対して開いた際、バッファ名にログインユーザ&マシン名を表示するように修正した。
  • 2012/12/27 lambda関数のクォートをとった。
  • 2012/12/28 fakecygpty版プログラムを起動するための設定を「fakecygpty を使うための設定」に集約した。
  • 2014/05/09 フォーマット整形を行った。(内容変更はなし)
  • 2014/10/07 ページの構成を変更した。書いている内容に変更は無し。
  • 2015/05/15 shell-mode で複数の漢字コードを混在して利用できるようにするための設定の説明を別ページに切り分けた。
  • 2015/07/26 「fakecygpty を使うための設定」の見直しにより、MinGW版 emacs 向けに必要だった shell の割り込みの設定が不要となった。