การแทนที่ย่อหน้าเติมในโหมด LaTeX


9

ฉันต้องการเปลี่ยนพฤติกรรมของfill-paragraphในบางโหมด (เช่นLaTeX-modeให้บริการโดยAucTeX)

ฉันสามารถไขกุญแจM-qได้ แต่ฉันก็ใช้evil-modeซึ่งการนำไปevil-fill-and-moveใช้งานfill-regionด้วย เป็นการดีที่ฟังก์ชั่นการเติมแบบกำหนดเองของฉันเพื่อแทนที่ทั้งฟังก์ชั่นfill-paragraph(เพื่อให้ทำงานได้M-q) และfill-region(เพื่อให้ทำงานได้ด้วยevil)

สมมติว่าฉันมีโปรแกรมแบบสแตนด์อโลนformatที่ใช้ในรหัส LaTeX ผ่านstdinและส่งออกในรูปแบบรหัสstdoutฉันจะไปแทนที่ฟังก์ชันเติมสองข้างต้นเพื่อใช้งานได้formatอย่างไร

(หมายเหตุ: นี้จะคล้ายกับvimของformatprgตัวเลือก.)


การ rebinding 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
ในกรณีนี้คุณสามารถแก้ปัญหาบางส่วนของคุณได้โดย(add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))ที่your-fill-functionelisp กำหนดเองของคุณอยู่ที่ไหน นี่จะเป็นการตั้งค่าคีย์ผสมนั้นใน Auctex เท่านั้น คุณอาจจะใช้กับอาร์กิวเมนต์แทนที่การกำหนดshell-command-on-region 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))))

เพื่อทดแทนฟังก์ชั่นอื่น ๆ โดยไม่คำนึงถึงการผูกคีย์ของพวกเขาใช้ remap keybindings:

 (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.