[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Размер терминала в Emacs.



Dmitrii Kashin -> debian-russian@lists.debian.org  @ Mon, 21 Jan 2013 14:49:51 +0400:

 >>  >> > Потом, когда активируется буфер, его окно отображается уже в реальный
 >>  >> > размер, и терминальной программе внутри шлется SIGWINCH.  rtorrent на
 >>  >> > него, вероятно, реагирует адекватно, т.е. перерисовывается под новый
 >>  >> > размер (куда именно уходит пара секунд - вопрос отдельный, я на него
 >>  >> > сейчас ответить не готов), а newsbeuter, вероятно, нет.
 >>  >> 
 >>  >> Была такая мысль. Но, как ни странно, если открыть newsbeuter в urxvt,
 >>  >> то он будет адекватно реагировать на изменение размера окна. Стало быть,
 >>  >> SIGWINCH он все-таки адекватно обрабатывает.
 >>
 >>  AG> Подозреваю, что в случае запуска через emacs этот сигнал для newsbeuter
 >>  AG> приходит настолько быстро, что nb ещё не закончил инициализацию, потому
 >>  AG> обрабатывает его некорректно. В интерактивном режиме за счёт
 >>  AG> относительной медлительности пользователя сигнал приходит гораздо позже.
 >>
 >> В оригинальном описании проблемы при ручной активации буфера не
 >> происходит перерисовки.  А у rtorrent происходит, но с задержкой.  А в
 >> то, что newsbeuter не запускается внутри демона, пока буфер не
 >> активирован, мне что-то не верится.

 DK> И правильно не верится. Когда переключаюсь на буфер newsbeuter - там
 DK> виден уже его curses-интерфейс. Так как до появления интерфейса ему
 DK> обычно при штатном запуске из терминала требовалось несколько секунд,
 DK> чтобы загрузить кэш, запускается он, судя по всему, гораздо раньше.

А вот знаешь, что я могу предположить?  Как известно, доставка сигналов
устроена так, что за один раз можно принять только один сигнал (из тех,
для которых установлены обработчики, кажется - на дефолтную обработку и
игнорирование это не распространяется, но тут боюсь соврать).  Поэтому,
если почти одновременно будут присланы два обрабатываемых сигнала, то
один потеряется.  А emacs вполне может при начальном открытии окна
посылать и несколько сигналов, и наверняка - практически одновременно.

В качестве эксперимента могу предложить послать newsbeuter, запущенному
внутри емакса, SIGWINCH вручную, kill'ом.  Если отреагирует адекватно,
то можно копнуть в эту сторону.


Reply to: