Emacs 23 и размер шрифта - PullRequest
       11

Emacs 23 и размер шрифта

2 голосов
/ 04 октября 2009

Я использую emacs 23 в своей версии для нетбуков Ubuntu. Каждое приложение автоматически переходит в полноэкранный режим (как и мой emacs). Но в зависимости от размера шрифта (: высота), я получаю меньшее рабочее окно. Если перейти к: высота нормальная, я получу всю площадь, но шрифты ОГРОМНЫ!

есть идеи?

Ответы [ 3 ]

2 голосов
/ 05 октября 2009

Ваш оконный менеджер не работает. Emacs изменяет свой размер при изменении размера шрифта (это происходит во время запуска). Ваш оконный менеджер должен сообщить emacs, что оконный менеджер изменил размер emacs, после чего все будет работать нормально.

В любом случае, запустите emacs как «emacs --daemon» и соединитесь с «emacsclient -c», и вы не должны замечать эту проблему.

1 голос
/ 02 марта 2011

Проблема размера шрифта может быть решена, просто выбрав шрифт другого размера в качестве шрифта по умолчанию (Параметры-> Установить шрифт по умолчанию), а затем сохранив параметры (Параметры-> Сохранить параметры). Похоже, что в Emacs есть проблемы с размерами точек шрифта, соответствующими размерам системы (есть обсуждение между стандартными DPI X и стандартными DPI GTK), но если вы выберете тот, который работает, он останется прежним.

Чтобы окно было максимально развернуто, я обнаружил, что есть проблема с тем, что список кадров не учитывает минибуфер правильно, а также из-за разных размеров шрифта, которые не позволяют корректно изменять размер кадра. Если для параметра initial-frame-alist задано включение (fullscreen. Fullwidth) и (minibuffer-lines. 1), он правильно учитывает размер минибуфера и подбирает правильную ширину, создавая эффект, как если бы вы вручную изменяли размер окна. до максимальной видимой области (не совсем так, как максимизация). Вы можете установить их с помощью Options-> Customize Emacs-> Settings Matching Regexp ... Затем введите initial-frame-alist. Установите два новых параметра и значения: «минибуферные линии» - «1» и «полноэкранный» - «полная ширина».

Удаление параметра «минибуферные линии» даст вам окно полной ширины экрана, которое имеет неправильную высоту, а удаление параметра «полноэкранный» означает, что ничто не изменяет размер правильно. Попытка установить «fullscreen» в «fullscreen» приводит к той же проблеме, что и установка ничего, а «fullscreen» в «fullheight» дает пустое пространство только по высоте, а не по ширине при использовании меньшего размера шрифта.

1 голос
/ 10 октября 2009

ОК, так что на самом деле я добавил это в свой initfile:

(add-hook 'after-make-frame-functions
      (lambda (frame)
        (progn
          (add-to-list 'default-frame-alist
               (cons 'height
                 (/ (x-display-pixel-height)
                    (frame-char-height)))
               (add-to-list 'default-frame-alist
                    (cons 'width
                          (/ (x-display-pixel-width)
                         (frame-char-width))))))))

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

Конечно, для максимальной безопасности вы можете поместить это и ваши «набор шрифтов» в тот же defun, причем это происходит после того, как шрифты были установлены.

EDIT: Это немного более действенный способ сделать это на случай, если это не сработает.

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

(add-hook 'after-make-frame-functions
  (lambda (frame)
    (progn
      (set-frame-height frame
            (/ (x-display-pixel-height)
               (frame-char-height)))
      (set-frame-width frame
            (/ (x-display-pixel-width)
               (frame-char-width))))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...