Как изменить внешний вид длинной строки, не затрагивая другие настройки блокировки шрифтов в Emacs? - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть некоторый код, который я позаимствовал давным-давно, который устанавливает грань длинной строки, когда линия слишком длинная:

 (add-hook 'font-lock-mode-hook
           (function
            (lambda ()
              (setq font-lock-keywords
                    (append font-lock-keywords
                            '( ("^.\\{133,\\}$" (0 'my-long-line-face t))
                              )
                            )
                    )
              )
            ))

(сейчас я знаю о font-lock-add-Keywords, кстати, как я уже сказал, это довольно давно.)

Проблема в том, что это меняет лицо всей линии. Поэтому, если я укажу, что длинная линия лица выделена жирным шрифтом, я потеряю всю контекстную настройку линии, и она появится на лице по умолчанию, но будет выделена жирным шрифтом.

Как бы я мог сохранить контекстную окраску, но сделать все жирным?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Вы переопределяете фонирование с помощью t в спецификации блокировки шрифтов. Попробуйте изменить (0 'my-long-line-face t) на (0 'my-long-line-face prepend) или (0 'my-long-line-face append).

1 голос
/ 01 декабря 2011

Попробуйте эту модификацию для своего кода:

(add-hook 'font-lock-mode-hook
       (function
    (lambda ()
      (setq font-lock-keywords
        (append font-lock-keywords
            '( ("^.\\{133\\}\\(.*\\)$" (1 'my-long-line-face t))
              )
            )
        )
      )
    ))

Ключ в том, что вы хотите, чтобы регулярное выражение имело подвыражение, которое следует за 133 символами, которые не слишком длинные, и затем применяется my-long-line-faceк этому следующему подвыражению - как указано 1 (вместо 0, который вы имели).См. Информационную страницу для Fontification на основе поиска для получения более подробной информации.

...