Как запустить команду сразу после рендеринга кадра emacs? - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь понять, как использовать Emacs Code Browser (ECB), и одна из вещей, которые вы можете сделать с ним, это установить ecb-windows-width, чтобы решить, насколько широки окна ecb. Проблема заключается в следующем:

  1. На экране появляется рамка.
  2. вызывается ecb-activ, масштабируется в соответствии с ecb-windows-width.
  3. Параметры default-frame-alist включаются, размер кадра изменяется.

Проблема в том, что из-за этого порядка ширина окна ecb устанавливается до того, как размер кадра изменяется, а затем не масштабируется.

Так что я хотел бы запустить ecb-redraw-layout (или в идеале просто ecb-активировать), но это должно произойти после # 3. В противном случае, какой-то вариант ecb-dynamic-width-scale также будет работать.

Как бы то ни было, ecb-auto-activit не работает, поэтому я не могу определить, решит ли это это.

Ответы [ 2 ]

2 голосов
/ 18 мая 2009

Похоже, я нашел обходной путь.

  1. Установить для ecb-fix-window-size значение true.
  2. Когда загружается кадр, вызывается ecb-activ, и окна ecb масштабируются пропорционально размеру кадра.
  3. Затем запускается default-frame-alist, и размер кадра изменяется, но окна ecb имеют фиксированный размер и не масштабируются.

Довольно хакерски, потому что вы устанавливаете ширину в соответствии с размером кадра по умолчанию, который появляется первым, а не с тем размером, который вы на самом деле используете. Ну да ладно.

1 голос
/ 18 мая 2009

Я незнаком с ECB, но after-make-frame-functions может быть полезен для запуска нужных вам функций (или запуска некоторой функции ловушки, когда вы хотите делать особые вещи с рамкой ecb).

after-make-frame-functions - это список функций, которые принимают один аргумент (вновь созданный кадр) и запускаются после создания кадра. Это не относится к начальному фрейму emacs (при запуске), потому что ваш .emacs читается после фрейм уже создан.

...