Фокус окна emacsclient

Как я могу последовательно контролировать фокус окна после запуска emacsclient?

В настоящее время фокус зависит от того, работает ли я уже на сервере emacs. Когда emacsclient вызывает альтернативный редактор, фокус перемещается в новое окно emacs. Когда emacsclient подключается к существующему серверу emacs, фокус не сдвигается (т.е. Остается на моем клиенте-шпателе).

Я хотел бы постоянно сфокусироваться на окне 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)

Мое текущее обходное решение - это простой autohotkey script, который фокусируется на моем первом окне Exceed

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

В качестве побочной заметки кажется, что мое перенаправление на /dev/null путало синтаксис-маркер: (

Ответ 1

По какой-то неизвестной причине проблема исправлена. Открытие файлов теперь последовательно изменяет фокус на фрейм emacs с соответствующим файлом. Я честно не знаю, что изменило поведение, но я счастлив.

Спасибо всем за их комментарии и предложения!

Ответ 2

Как насчет:

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

работает для меня на emacs 23.1

Нецелесообразно использовать (lower-frame).

Ответ 3

Будет ли опция "-create-frame" работать с emacsclient? Вы получите новый фрейм для каждого файла, который вы открыли таким образом, но по крайней мере он будет сфокусирован (я думаю).