2012-04-23 3 views
9

Мне нужна команда для запуска всякий раз, когда в Emacs создается новый фрейм. До сих пор я использовал after-make-frame-functions, но этот крючок получает только фреймы, созданные make-frame. Мне действительно нужно что-то, что запускается всякий раз, когда команда emacsclient -c создает новое окно.Захват Emacs для новых кадров

Есть ли способ достичь этого?

ответ

9

У меня возникли трудности с пониманием вашего вопроса. Сервер Emacs вызывает make-frame, когда ему нужно создать новый фрейм, поэтому after-make-frame-functions должен работать и в этом случае. Итак, какова ваша фактическая проблема?

Вы хотите, чтобы ваша функция запускалась, даже если сервер Emacs не создать новый кадр? Если да, попробуйте добавить свою функцию в server-switch-hook, а также after-make-frame-functions.

server-switch-hook - это переменная, определенная в server.el.

Документация: Захват при переключении на буфер для сервера Emacs .

+3

Да, ваш первый параграф верен. Команда, которую я хотел запустить, отлично работает, когда я делаю «make-frame», но она просто не работала, когда новый фрейм был создан с помощью 'emacsclient -c'. Поэтому я просто предположил, что этот крючок не вызывается сервером при запуске 'emacsclient -c'. Я сделал больше тестов, и оказалось, что с моей командой что-то не так. Извините за бессмысленный вопрос. – Malabarba

+3

Нет проблем. [Отладка резиновой утки] (http://en.wikipedia.org/wiki/Rubber_duck_debugging) в действии! –

+2

Удивительно! Я представляю вам концепцию отладки мета-резиновой утки прокси-сервером, где кто-то - например, сам - находит кого-то с той же проблемой на SO и обнаруживает, что проблема на самом деле не существует. Я благодарен вам обоим. – leoger

Смежные вопросы