Go to the first, previous, next, last section, table of contents.

Emacs が自発的に "I-search: " と表示してビープするのですが何故ですか?

端末が (または端末とホスト・コンピュータの間で) C-s と C-q をフロー制御文字として使っていると, Emacs がこれらの文字をコマンドとして解釈してしまいます. (C-s は通常 isearch-forward コマンドを起動します.) もっともよい解決法は C-s と C-q によるフロー制御を止めることです. こうできないときは, 次の式を評価して Emacs に C-s と C-q をフロー制御文字であると認識させます:

  (set-input-mode nil t)

個人で対処する場合は .emacs に記述します. サイトで対処する場合はどこに記述するかは議論の分かれるところです. Emacs を構築するときに lisp/site-init.el に記述しても効果があるかは 定かではありません. {どなたか試して教えて下さい.} 各ユーザの .emacs に入れて回るのは問題があるでしょう. lisp/default.el に記述すると ユーザの .emacs ファイルに誤りがあったときロードされないので, .emacs を修正するのに Emacs を使えないことになってしまいます (.emacs をロードしない方法を知っていればよいのですが).

もし XON/XOFF フロー制御をする端末としない端末が存在するなら, 次のような解決法もあります. lisp/site-init.el で keyboard-translate-table の C-s と C-q を 無効にするように, swap-keys (質問 61 参照) を使うか, または次のようにすればよいのです:

  ;; by Roger Crew <crew@cs.stanford.edu>:
  (setq keyboard-translate-table
        "\C-@\C-a\C-b\C-c\C-d\C-e\C-f\C-g\C-h\C-i\C-j\C-k\C-l\C-m\C-n\C-o\C-p\C-^\C-r\C-\\\C-t\C-u\C-v\C-w\C-x\C-y\C-z\C-[\C-s\C-]\C-q\C-_")

こうして lisp/default.el でもし XON/XOFF フロー制御を無効にできるなら 通常の keyboard-translate-table を使うように設定すればいいでしょう (ユーザが keyboard-translate-table をめちゃめちゃにしないように このときは swap-keys を使うとよいでしょう). そうでないときは set-input-mode で C-s と C-q を全く無効にしてしまいます.

より詳しい説明は etc/PROBLEMS にあるので参照して下さい.


Go to the first, previous, next, last section, table of contents.