Emacs에서 고정 너비 본문을 왼쪽에 정렬하지 않고 버퍼 중앙에 유지하는 함수를 정의하려고합니다. 특히 이것을 버퍼 로컬로하고 싶습니다. 그리고 왼쪽 여백과 오른쪽 여백을 로컬로 설정하여이 작업을 수행하려고합니다.Emacs 버퍼에 텍스트 가운데 맞추기
이것은 잘 작동하지만 창 크기가 바뀌면 여백을 조정하여 문제가 발생합니다. add-hook
및 remove-hook
라인이 제거
(defun center-body()
(let* ((max-text-width 70)
(margin (max 0 (/ (- (window-width) max-text-width) 2))))
(setq-local left-margin-width margin)
(setq-local right-margin-width margin)
(set-window-buffer nil (current-buffer))))
(defun uncenter-body()
(setq-local left-margin-width 0)
(setq-local right-margin-width 0)
(set-window-buffer nil (current-buffer)))
(defun body-center-mode()
(interactive)
(if (= left-margin-width 0)
(progn
(center-body))
(add-hook 'window-configuration-change-hook 'center-body nil 1))
(uncenter-body)
(remove-hook 'window-configuration-change-hook 'center-body 1)))
, 모든게의 확인 : 여기 (https://stackoverflow.com/a/23731757/3822233에서 적응) 코드입니다. 그러나 내가 add-hook
라고 부르면 중첩이 max-lisp-eval-depth 오류를 초과합니다.
나는 이것을 디버깅하는 데 어려움을 겪고있어서 lisp을 정말로 모른다.
감사합니다. 'set-window-margins'와 함께 가고 일이 잘 작동하고 있습니다. – Arpon