LaTeX 모드에서 채우기 단락 재정의


9

fill-paragraph특정 모드 (예 :에서 LaTeX-mode제공 AucTeX) 의 동작을 변경하고 싶습니다 .

나는 단지 키를 리 바인드 할 수 M-q있었지만 사용 evil-mode구현을 evil-fill-and-move사용하고 fill-region있습니다. 이상적으로, 내 사용자 정의 채우기 기능은 기능 fill-paragraph(으로 작동 M-q)과 fill-region(으로 작동 ) 을 재정의합니다 evil.

formatLaTeX 코드를 통해 stdin출력 형식 코드를 사용 하는 독립형 프로그램이 있다고 가정하면 stdout위의 두 채우기 기능을 재정 의하여 어떻게 사용할 수 format있습니까?

(참고 : 이것은 vimformatprg옵션 과 유사합니다 .)


리 바인딩 은 어쨌든 M-q영향 evil-fill-and-move을 미칩니 까 ? 나는 악을 사용하지 않으므로 궁금합니다. 지역이 활성화 된 경우 어쨌든 fill-paragraph호출 fill-region합니다. 따라서 조언하거나 fill-region기능을 대체 할 수 있습니다.
Vamsi

나는 그것을 시도하지 않았지만 믿지 않는다. 악의 정상 모드에서 evil-fill-and-move키 시퀀스 gq에 바인딩 됩니다. 리 M-q바인딩은이 키 바인딩에 영향을 미치지 않아야합니다. 어떤 의미에서 내 질문은 실제로 두 가지 질문입니다. 1) 두 기능을 어떻게 대체합니까? 2) 외부 프로그램을 사용하는 방법? 2)의 이유는 이미 외부 비 Elisp 솔루션을 가지고 있기 때문입니다.
케빈

1
이 경우 사용자 정의 elisp defun이 (add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))어디에 있는지 문제의 일부를 해결할 수 있습니다 your-fill-function. 이 키 조합은 Auctex에서만 설정됩니다. shell-command-on-regionREPLACE 인수와 함께 사용 하여 정의 할 수 your-fill-function있습니다.
Vamsi

답변:


7

하나는 다른 측면에서 구현 될 수 있지만 2 개의 기능을 갖는 것이 좋습니다. 단락이 암시 적 영역이기 때문에 두 경우 모두 입력이 달라야합니다.

(defun my-format-region (beg end)
  (interactive "r")
  (shell-command-on-region beg end "format"))

(defun my-format-paragraph ()
  (interactive)
  (save-excursion
    (mark-paragraph)
    (my-format-region (point) (mark))))

키 바인딩에 관계없이 함수를 다른 함수로 대체하려면 키맵 재 맵핑을 사용하십시오.

 (define-key LaTeX-mode-map [remap fill-region] 'my-format-region)
 (define-key LaTeX-mode-map [remap fill-paragraph] 'my-format-paragraph)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.