Emacs의 어떤 코드는`line-number-mode`가 긴 줄을 가진 버퍼에서 줄 번호로“??”를 인쇄하게합니까?


21

line-number-mode내 모델에서 현재 줄의 표시기를 사용 하는 데 사용 하고 있지만 큰 파일이나 긴 줄이있는 파일의 경우 줄 번호 대신 두 개의 물음표가 표시되기 시작합니다. 나는 조금 파고에 line-number-mode정의되어 있는 동안 simple.el사용자 정의 변수 (및 아마도 관련된 모든 논리)가에 정의되어 있음을 알았습니다 xdisp.c. line-number-display-width변수를 임의로 높은 숫자로 변경하면 문제가 해결 될 수 있지만 두 개의 물음표를 인쇄하는 코드와 논리에 훨씬 더 관심이 있습니다. 당신이 나를 위해 그것을 찾을 수 있다면, 아마도 그 뒤에있는 논리를 설명 할 수 있다면 매우 유용 할 것입니다.


2
M-: (format-mode-line "%l")물음표도 표시 됩니까 ?
lunaryorn 10

예, 그것은 "??"를 제공합니다 평가 결과.
wasamasa

1
그럼의 정의를 살펴보십시오 format-mode-line.
lunaryorn

답변:


25

@lunaryorn의 제안 덕분 에이 문제를 일으키는 코드를 찾을 수있었습니다. 주어진 형식 코드를 값으로 바꾸려는 format-mode-line호출 처럼 보입니다 decode_mode_spec. %l이 함수 의 경우 계산에 너무 많은 시간을 소비하지 않기 위해 몇 개의 온 전성 검사를 수행 한 다음 현재 행이 초과하는지 확인합니다 line-number-display-limit-width. 이것이 내 파일의 경우이므로 no_value패딩 ??된 값 을 반환하는 레이블로 이동 합니다.

"해결"에는 변수를 충분히 높은 값으로 설정하는 것이 포함됩니다.

(setq line-number-display-limit-width 2000000)

이 값은 32 비트 시스템에서 오버플로를 피하기 위해 xdisp.c창 높이에 2 + 30을 곱한 값을 곱한 32 개 에 해당하는 휴리스틱을 살펴보면 2000000의 값이 안전합니다.line-number-display-limit-widthmost-positive-fixnum


2
두 개의 유사한 질문을 유지하는 대신 다른 질문을 중복하여 닫지 말고이 답변을 대신 업데이트해서는 안됩니까?
Kaushal Modi

@kaushalmodi : 완료!
wasamasa

2
임시 변경 사항 :M-x set-variable <RET> line-number-display-limit-width <RET> 2000000 <RET>
시위

컴퓨터가 훨씬 느려졌을 때 이것이 다시 의미가 있다고 생각합니다. 수십 년 동안 init 파일에서 높은 값으로 설정했습니다.
Jim Balter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.