LINUX.ORG.RU

Emacs: перерисовать фрейм (окно WM)

 


0

1

Когда Emacs развернут на весь экран, либо работает в fullscreen, из-за того, что размеры окна не кратны ширине столбца и высоте строки, снизу и справа появляются области, которые не перерисовываются. При выходе из fullscreen туда может «переехать»(и остаться там) mode line. При смене темы, они остаются без изменений. Если окно Emacs не развернуто на весь экран, то таких проблем нет, т.к. размер окна изменяется ступенчато, так, чтобы помещались ровно все строки и столбцы. Если изменить изменить размер окна, а затем снова развернуть Emacs на весь экран, то эти области перерисуются. Вопрос: как их перерисовать программно? Что-то мне подсказывает, что мне нужна функция x-send-client-message. По идее, должна быть возможность сделать запрос на обновление содержимого окна. Спасибо.

Такой код не предлагать, т.к. работает через раз:

(defun refresh-frame ()
  (interactive)
  (make-frame-invisible)
  (make-frame-visible))

Настроить wm, чтоб учитывал resize-hints окон, не-а?

anonymous ()

помню такое бывало на венде, и в каком-то линуксовом фиговом ВМ. В хмонад ничего не обрезается.
Если правильно помню, там ещё фишка в меню-моде, тулбар-моде... Вопщем попробуй их настройку (у тебя наверняка скрываются) перенести в .Xdefaults типа так:

Emacs.verticalScrollBars: off
Emacs.menuBar: -1
Emacs.toolBar: -1

А из .emacs убери.

Bad_ptr ★★★★ ()
Ответ на: комментарий от Bad_ptr

Спасибо, помогло. Я задавал эти параметры через default-frame-alist. (emacs как daemon стартует)
Фиговый WM — compiz, т.к. Ubuntu/Unity.

nei8Adai ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.