режим блокировки шрифта в режиме haskell, похоже, разрушает ширину одиночных пробелов в emacs

Я обнаружил, что font-lock-mode что-то неправильно делает с шириной одиночных пробелов, независимо от того, какой моноширинный шрифт я использую.

Вот несколько скриншотов:

  • Использование DejaVu Sans Mono:

    font-lock-mode on:

    djv1

    font-lock-mode выкл.:

    djv2

  • Использование Luculent:

    font-lock-mode on:

    lu1

    font-lock-mode выкл.:

    lu2

Связанные (возможно) строки в моем файле инициализации emacs:

(custom-set-variables
 ...
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:inherit nil :stipple nil :inverse-video nil
                :box nil :strike-through nil :overline nil
                :underline nil :slant normal :weight normal
                :height 120 :width normal 
                :foundry "unknown" :family "Luculent")))))

Редактировать: благодаря помощи @Boojum я сделал C-u C-x = для трех разных стилей персонажей. Вот результат. Я предполагаю, что проблема в том, что SPC не имеет свойства «лицо».

Кроме того, я также пробовал переключаться на другие основные режимы и обнаружил, что эта проблема возникает только в haskell-mode.


person Javran    schedule 18.03.2014    source источник


Ответы (1)


Я не уверен, что происходит, навскидку, но похоже, что полужирный текст имеет размер, который немного больше, чем по умолчанию. Есть ли у вас какие-либо настройки на font-lock-keyword-face? У вас есть файл конфигурации сайта, который может настраивать лица?

Одна вещь, которая может помочь отладить это, состоит в том, чтобы поместить точку на часть полужирного текста в вашем примере и ввести C-u C-x = Это даст вам дополнительную информацию о том, что влияет на то, как он отображается. Также проделайте это с некоторым текстом по умолчанию (не жирным шрифтом). Если вы разместите ответы здесь, мы могли бы помочь вам лучше.

person Boojum    schedule 18.03.2014
comment
спасибо за помощь, я подобрал 3 символа и вот результат. Я предполагаю, что проблема в том, что SPC не имеет свойства лица. - person Javran; 18.03.2014
comment
Другое дело, что я обнаружил, что это происходит только в haskell-режиме, если я переключусь на другие режимы, такие как схема-режим, все будет хорошо. Я думаю, что связанный файл в haskell-mode этот, надеюсь, это будет полезно. - person Javran; 18.03.2014
comment
@Javran - Если вы посмотрите в верхнее правое окно, вы увидите, что оно использует 18pt (см. строку xft) для font-lock-function-name-face. Два других окна показывают, что они используют 16pt. Следующее, что нужно сделать, это проверить любые настройки font-lock-function-name-face, которые у вас могут быть. Этот режим haskell выглядит так, как будто он просто использует стандартное лицо (и снимок экрана подтверждает, что он использует именно это). Но если он появляется только в этом режиме, вы можете проверить наличие перехватчиков. У вас есть что-нибудь для 'haskell-font-lock-hook или 'haskell-mode-hook? - person Boojum; 18.03.2014
comment
Наконец-то я понял это! но это не имеет ничего общего с хуками: я нажал кнопку font-lock-function-name и приступил к изучению значений, и я обнаружил, что масштаб по умолчанию равен 1,1. Подойдет либо изменение его на 1.0, либо переход на другую тему. - person Javran; 18.03.2014
comment
тема manoj-dark поставляется с emacs, поиск в Google привел меня к исходному коду здесь. Все еще не уверен, почему, но теперь это похоже на проблему определенной темы emacs? - person Javran; 18.03.2014
comment
@Javran Да, это проблема с этой конкретной темой, потому что она использует больший размер шрифта для имен функций, что нарушает структуру визуального кода. Вы можете сообщить об ошибке с M-x report-emacs-bug. Кстати, настоящий исходный код Emacs размещен не на Github, а в Savannah. - person lunaryorn; 18.03.2014
comment
Точнее вот эта строчка: '(font-lock-function-name-face ((t (:foreground "mediumspringgreen" :weight bold :height 1.1)))) - person Boojum; 18.03.2014