Как я могу написать ловушку для активации, когда любой кадр emacs поднят / сфокусирован? - PullRequest
2 голосов
/ 23 сентября 2010

Под Win32 каждый кадр emacs отображается как отдельное окно при Alt-tabbing, что имеет смысл.Однако, когда я выбираю свое главное окно редактирования, я также хотел бы, чтобы мой фрейм Speedbar автоматически поднимался вместе с ним.

Написание функции для поднятия всех фреймов (или даже всех в настоящее время НЕ видимых фреймов) относительно тривиально, но я не могу понять, как использовать хук, или даже если есть хук, который можно использовать вообще.

Итак, если я щелкаю или нажимаю alt-tab на любой из моих кадров emacs, должна быть запущена ловушка для вызова моей функции, которая вызывает ВСЕ кадры.Любая помощь?

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Самое близкое, что я могу найти в GNU Emacs, - это событие switch-frame, но оно генерируется только тогда, когда фокусируется другой кадр Emacs, а не когда вы переключаетесь в окно, отличное от Emacs, а затем обратно в тот же кадр.

Это то, что должен делать достаточно хороший оконный менеджер, с небольшим сотрудничеством с Emacs (например, используя заголовки окон, чтобы выяснить, что такое фрейм Speedbar).

Под Windows, вы должны быть в состоянии использовать команду AutoHotKey WinWaitActive .

1 голос
/ 23 сентября 2010

Не похоже, что GNU emacs обладает такой функциональностью.

У Xemacs есть крюк select-frame-hook и map-frame-hook. Существует также переменная auto-lift-frame, но не в GNU emacs.

См. http://www.xemacs.org/Documentation/beta/html/lispref_40.html#SEC526 для некоторых идей, если вы хотите улучшить emacs.

0 голосов
/ 22 декабря 2014

Я нашел хук, который вы можете использовать.

server-visit-hook is a variable defined in `server.el'.
Original value was nil

Documentation:
Hook run when visiting a file for the Emacs server.

You can customize this variable.

Когда вы найдете файл с сервером Emacs или emacsclient, этот хук будет вызван.Вы можете использовать этот хук, чтобы сделать что-то необходимое.

...