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

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



Dmitrii Kashin -> Debian Russian List  @ Sat, 19 Jan 2013 14:12:10 +0400:

 DK> Приветствую сообщество. Имею вопрос к сидящим здесь емаксерам.

 DK> Недавно я подумал о том, что помимо Emacs я запускаю всего две программы
 DK> - rtorrent и newsbeuter. Потому что первый средствами Emacs не
 DK> реализован, а nnrss - жутко медленная вещь.

 DK> Так вот, я захотел, чтобы при старте Emacs Daemon у меня бы создавались
 DK> буферы с терминалами, в которых работали бы эти две программы.

 DK> При помощи ielm я написал следующую функцию:

 DK> (defun run-program (prog)
 DK> 	(term (replace-regexp-in-string "\n" "" (shell-command-to-string (concat "which " prog))))
 DK> 	(rename-buffer prog t))

 DK> В интерпретаторе она отработала хорошо, и я поместил ее в
 DK> конфигурационный файл .emacs, приписав ниже строчки:

 DK> (run-program "rtorrent")
 DK> (run-program "newsbeuter")

 DK> Затем, когда я перезапустил сервер Emacs и переключился на буфер
 DK> "newsbeuter", я с удивлением обнаружил, что от интерфейса программы
 DK> отображается только кусок 10x6 символов левого верхнего угла.

 DK> Стал разбираться. Обнаружил, что если я просто запущу Emacs командой
 DK> 'emacs -nw', newsbeuter отображается нормально.

 DK> Что касается rtorrent, то как только я активирую его буфер - он поначалу
 DK> пару секунд отображается также, как и newsbeuter, но потом растягивается
 DK> на весь экран.

 DK> Собственно, хочется понять, почему, если стартовать Emacs демоном,
 DK> автоматически запускаемые консольные приложения так странно себя ведут.

Почему - понятно.  Какой-то размер терминала терминальной программе на
старте нужен, а окно, под которое его подогнать, еще не нарисовали.
Подбирается исходя из дефолтного размера неотмапленного окна, по
количеству символов и из общих соображений рискну предположить, что этот
размер 100x100 пикселов.

Потом, когда активируется буфер, его окно отображается уже в реальный
размер, и терминальной программе внутри шлется SIGWINCH.  rtorrent на
него, вероятно, реагирует адекватно, т.е. перерисовывается под новый
размер (куда именно уходит пара секунд - вопрос отдельный, я на него
сейчас ответить не готов), а newsbeuter, вероятно, нет.

Скажу сразу, что готового ответа на вопрос "что делать" у меня вот так
сходу нет.


Reply to: