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: