LaTeX modunda dolgu paragrafını geçersiz kılma


9

fill-paragraphBelirli modlarda (örneğin LaTeX-modetarafından sağlanan AucTeX) davranışını değiştirmek istiyorum .

Sadece anahtarı yeniden hatırlayabilirdim M-q, ama aynı zamanda evil-modekimin evil-fill-and-movekullanımlarını kullanıyorum fill-region. İdeal olarak, özel doldurma işlevim hem işlevleri geçersiz kılar fill-paragraph(böylece ile çalışır M-q) hem de fill-region(ile çalışır evil).

formatLaTeX kodunu alan stdinve biçimlendirilmiş kod çıktısını alan bağımsız bir programım olduğu varsayılarak stdout, nasıl kullanmak için yukarıdaki iki doldurma işlevlerini geçersiz kılmak gider format?

(Not: Bu benzer vimbireyin formatprgseçeneği.)


Yeniden bağlama yine de M-qetkiler evil-fill-and-movemi? Kötülük kullanmıyorum bu yüzden merak ediyorum. Bölge aktifse fill-paragrapharamaları fill-regionzaten. Böylece fill-regionişlevinizi önerebilir veya değiştirebilirsiniz .
Vamsi

Hiç denemedim, ama inanmıyorum. Kötülüğün normal modundaki evil-fill-and-movetuş sırasına bağlıdır gq. Yeniden bağlama M-qbu tuş bağını etkilememelidir. Bir anlamda sorum gerçekten iki soru: 1) İki fonksiyon nasıl değiştirilir? 2) Harici bir program nasıl kullanılır? 2) nedeni, zaten harici, Elisp olmayan bir çözümüm olması.
Kevin

1
Bu durumda, probleminizin bir kısmını özel elisp kusurunuz (add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))nerede çözebilirsiniz your-fill-function. Bu, tuş kombinasyonunu yalnızca Auctex'te ayarlar. shell-command-on-regionTanımlamak için muhtemelen REPLACE bağımsız değişkeniyle kullanabilirsiniz your-fill-function.
Vamsi

Yanıtlar:


7

Biri diğeri açısından uygulanabilmesine rağmen 2 işleve sahip olmak daha iyi olacaktır. Bunun nedeni bir paragrafın örtük bir bölge olmasıdır, bu nedenle her iki durumda da girdi farklı olmalıdır

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

Tuş bağlamalarına bakılmaksızın işlevleri başkalarıyla değiştirmek için yeniden anahtarlama bağlamalarını kullanın:

 (define-key LaTeX-mode-map [remap fill-region] 'my-format-region)
 (define-key LaTeX-mode-map [remap fill-paragraph] 'my-format-paragraph)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.