Фокус окна 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? Вы получите новый фрейм для каждого файла, который вы открыли таким образом, но по крайней мере он будет сфокусирован (я думаю).