linum.el에서 elisp 코드를 수정하고 있습니다.
(custom-set-variables '(linum-format 'dynamic))
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (concat " %" (number-to-string w) "d ")))
ad-do-it))
나는 들여 쓰기 오프에 의해-하나 수정하여 버그를 해결할 수 있었다 (count-lines (point-min) (point-max))
로를 (+ (count-lines (point-min) (point-max)) 1)
. 그것은 쉽다.
그러나 이제 (concat " %" (number-to-string w) "2d ")
줄 번호 카운트가 <10 인 경우 if 조건을 추가하여 최소 너비가 2가되도록 수정하고 싶습니다 .
이것은 쉬워야한다! 하나의 조건을 추가하고 concat을 복사 / 붙여 넣기하십시오. 케이크 조각 맞지? 내 말은, 내가 해야 할 일을 알고 있지만 elisp를 거의 만지지 않으며 많은 괄호로 무언가를 수정해야 할 때 항상 곤란합니다.
내가 이해 한 것으로부터 "올바른"스타일은 들여 쓰기를 기반으로 코드를 구성하고 후행 괄호를 줄이 아닌 줄 바꿈으로 감싸는 것입니다. 다른 'C'스타일의 언어에서 나오는 방식으로 코드를 읽고 쓰는 데 어려움을 겪고 있습니다. 그래서 내 질문은 : 내가 뭘 잘못하고 있니? elisp를 편집하고 코드를 탐색하여 거기에 앉아서 모든 괄호를 세지 않아도되는 방법은 무엇입니까?
너무 깊이 들어가는 무언가로 작업 할 때 문을 닫고 블라인드를 당기고 괄호 K & R 스타일을 배치하기 시작해야합니다.
분명히 나는이 모든 일을 잘못하고 있습니다. 두려움없이 어떻게 이런 감동을 만질 수 있습니까?
내 질문은 스타일에 대한 질문이 아닌 elisp를 탐색하고 편집하는 방법입니다. 스타일 가이드로 이미 다음을 사용하고 있습니다 : https://github.com/bbatsov/emacs-lisp-style-guide
업데이트 :
emacs.stackexchange에서 당황하기 전에 elisp를 올바르게 포맷하는 방법 :
당신의 elisp를 표시하고 수행하십시오 M-x indent-region
.
문제 해결책 :
최소 너비가 2 인 리넘에 대해 올바른 정렬을 수행하는 방법을 알고 싶은 경우 다음 해결책이 있습니다.
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (if (> w 1)
(concat " %" (number-to-string w) "d ")
" %2d ")))
ad-do-it))
%2d
너비가 3 자 이상으로 롤오버되면 오른쪽 정렬에서 왼쪽 정렬로 이동 하기 때문에 사용할 수 없습니다 .
highlight-parentheses
. rainbow-delimiters
; 등이 여기에 내 자신의 단순화 된 버전입니다 highlight-parentheses
마지막 색상 화 된 괄호를 제거하지 않고 스크롤이 허가 : stackoverflow.com/a/23998965/2112489을 미래에, 그것은 고객 / 쓰레드 당 하나 개의 질문입니다.