Подтвердить что ты не робот

Что вызывает эту графическую ошибку в emacs с linum-mode на OS X?

Я получаю эту графическую ошибку с linum-mode в моем Emacs. Я попробовал обновить с 23 до 24 (через git), и я попробовал оба с различными поставляемыми бинарниками в Интернете и с моей домашней скомпилированной версией. Меня действительно интересует, где начать диагностировать проблему.

"Tearing" of numbers in linum-mode

Проблема исчезает, если я прокручиваю номера рваных строк с экрана и обратно.

4b9b3361

Ответ 1

У меня возникла такая же проблема, и я потратил довольно много времени на ее решение. Графическая ошибка является результатом столкновения между linum-режимом и способом рендеринга бахромы. К сожалению, я не смог решить проблему в linum.el, и код отображения бахромы является частью C-источника.

Это можно сделать! Самый простой способ исправить это - просто отключить бахрому.

M-x fringe-mode RET none RET

Для того, чтобы бахрома оставалась неизменной, я рекомендую настроить параметры с помощью M-x customize-group RET fringe, потому что некоторые скомпилированные версии Emacs для Mac OS X имеют свои собственные настройки бахромы, которые могут переопределять части вашего файла .emacs.

Мне действительно не нужны эти индикаторы переноса строки, поэтому отсутствие бахромы меня не беспокоит. Тем не менее, я пропустил небольшое разделение между номерами строк и текстом буфера. Я последовал совету сообщения в Emacs Wiki, чтобы получить этот промежуток назад. В версии 0.9x linum измените строку 160 из

(setq width (max width (length str)))

к

(setq width (max width (+ (length str) 1)))

Вдохновение для этого изменения находится здесь: http://www.emacswiki.org/emacs/LineNumbers

На исходной ссылке есть аргументы для установки переменной linum-format вместо изменения linum.el. Хотя я понимаю, откуда они идут, большинство цветных тем в эти дни будут окрашивать дополнительное пространство и не обеспечивать то, что я ищу (разделение вокруг пространства, которое является цветом фона). Если вы отредактируете linum.el, обязательно запустите

M-x emacs-lisp-byte-compile-and-load

чтобы изменения были постоянными. Вы можете увидеть результат этого, посмотрев пробел перед курсором на картинке, найденной здесь: http://i.stack.imgur.com/TxyMr.png (у меня недостаточно репутации для встраивания образов),

Нет графических артефактов!

Ответ 2

У меня была та же проблема, и я понял решение, и хотя он не самый красивый, из-за лишнего места слева от номера строки, он намного элегантнее, чем изменение linum.el. Вот уместная часть моего ~/.emacs:

;; Linum mode                                                                                                                                                                                                                           
(global-linum-mode t)                                                                                                                                                                                                                   
;; Offset the number by two spaces to work around some weird fringe glitch                                                                                                                                                                     
(setq linum-format "  %d ")

Это устраняет проблему наложения окантовки и не имеет другого влияния, кроме смещения номера строки.

Ответ 3

Вот как я установил его в моем .emacs, и у меня нет этой проблемы, хотя я также не использую emacs с gtk или любым другим gui.

(linum-mode +1)

(setq linum-format "% d" )

Возможно, вы захотите взломать (setq linum-format), чтобы увидеть, сможете ли вы получить хорошие результаты. Также не забудьте просмотреть emacswiki на linum.

Ответ 4

чтобы сделать разделение между номерами строк и текстом буфера, последующее изменение будет лучше:

В версии 0.9x linum измените строку 150 из

(concat "%" (число-строка w) "d" )))))

к

(concat "%" (число-строка w) "d" )))))

Это делает разделение одинаковым цветом фона с номерами строк.

Ответ 5

Проблема все еще присутствовала на emacs 24.4, OS X 10.10.1. Решение, которое я разработал: после загрузки темы по вашему выбору:

(load-theme 'whatever)
(set-face-attribute 'fringe nil :background (face-background 'default))