13

emacsclient を実行した後、一貫してウィンドウのフォーカスを制御するにはどうすればよいですか?

現在、フォーカスは、既に emacs サーバーを実行しているかどうかに依存します。emacsclient が別のエディターを呼び出すと、フォーカスは新しい emacs ウィンドウに移動します。emacsclient が既存の emacs サーバーに接続するとき、フォーカスは移動しません (つまり、私の putty クライアントにとどまります)。

通常、ファイルを開いた後に emacs にアクセスするので、一貫して emacs ウィンドウに注目したいと思います。

どんな助けでも大歓迎です!

ノート

バージョン情報

emacs: 21.4.1
emacsclient: 21.4
client os: Windows XP Service Pack 3
x server: Exceed 11.0.0.0

私の .bash_profile の関連セクション

# a wrapper is needed to sandwich multiple command line arguments in bash
# 2>/dev/null hides
#   "emacsclient: can't find socket; have you started the server?"
emacs_wrapper () {
  if [ 0 -eq $# ]
  then
    emacsclient -n -a emacs ~/notes.txt 2>/dev/null &
  else
    emacsclient -n -a emacs $* &
  fi
}
alias x="emacs_wrapper"

また、.emacs の最後に

(server-start)

私の現在の回避策は、最初の Exceed ウィンドウに焦点を当てた単純なオートホットキー スクリプトです。

^+x::
If WinExist("ahk_class EXCEEDW:MWCLIENT0")
    WinActivate
return

補足として、 /dev/null へのリダイレクトが構文ハイライターを混乱させたようです:(

4

3 に答える 3

9

どうですか:

emacsclient -e  "(select-frame-set-input-focus (selected-frame))"

emacs 23.1で動作します

フォーカスを外す(lower-frame)と便利かもしれません。

于 2010-10-11T08:13:30.267 に答える
0

emacsclient の「--create-frame」オプションは役に立ちますか? この方法で開いたファイルごとに新しいフレームが取得されますが、少なくともフォーカスされていると思います (と思います)。

于 2010-10-07T15:42:17.247 に答える
-3

なんらかの理由で、問題は自動的に修正されました。ファイルを開くと、対応するファイルを含むemacsフレームへのフォーカスが一貫して変更されるようになりました。何が行動を変えたのかは正直わかりませんが、嬉しいです。

コメントや提案をしてくれたみんなに感謝します!

于 2010-10-12T16:03:25.867 に答える