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