Как запустить команду сразу после визуализации кадра emacs?
Вопрос
Я пытаюсь понять, как использовать браузер кода Emacs (ECB), и одна из вещей, которую вы можете с его помощью сделать, - это установить ширину ecb-windows-width, чтобы определить ширину окон ecb.Проблема в такой последовательности:
- На экране появляется рамка.
- Вызывается ecb-activate, масштабируемый в соответствии с шириной ecb-windows.
- Параметры default-frame-alist вступают в силу, размер кадра изменяется.
Проблема в том, что из-за этого порядка ширина окна ecb устанавливается до изменения размера фрейма, а затем не масштабируется.
Итак, я хотел бы запустить ecb-redraw-layout (или в идеале просто ecb-activate), но это должно произойти после пункта 3.В противном случае также будет работать какая-то опция ecb-dynamic-width-scale.
Как бы то ни было, ecb-auto-activate не работает, поэтому я не могу узнать, решит ли это проблему.
Решение
Похоже, я нашел обходной путь.
- Установите для ecb-fix-windowsize значение true.
- Когда фрейм загружается, вызывается ecb-activate и окна ecb масштабируются пропорционально размеру фрейма.
- Затем запускается default-frame-alist, и размер кадра изменяется, но окна ecb имеют фиксированный размер и не масштабируются.
Довольно хакерски, потому что вы устанавливаете ширину в соответствии с размером кадра по умолчанию, который появляется первым, а не с размером, который вы фактически используете.Но да ладно.
Другие советы
Я не знаком с ЕЦБ, но after-make-frame-functions
может быть полезно для запуска нужных вам функций (или запуска какой-либо функции-перехватчика, где вы хотите выполнять особые действия с фреймом ecb).
after-make-frame-functions
это список функций, которые принимают один аргумент (вновь созданный кадр) и запускается после создания кадра.Это не относится к начальному фрейму emacs (при запуске), поскольку ваш .emacs читается после рамка уже создана.