Ghi đè đoạn văn trong chế độ LaTeX


9

Tôi muốn thay đổi hành vi của fill-paragraphmột số chế độ (ví dụ LaTeX-modeđược cung cấp bởi AucTeX).

Tôi chỉ có thể rebind key M-q, nhưng tôi cũng đang sử dụng ai evil-modethực hiện việc evil-fill-and-movesử dụng fill-region. Lý tưởng nhất là chức năng điền tùy chỉnh của tôi để ghi đè cả hai chức năng fill-paragraph(để nó hoạt động với M-q) và fill-region(vì vậy nó hoạt động với evil).

Giả sử rằng tôi có một chương trình độc lập formatnhận mã LaTeX thông qua stdinvà xuất mã được định dạng stdout, tôi sẽ sử dụng cách nào để ghi đè hai hàm điền trên để sử dụng format?

(Lưu ý: đây là tương tự như vimcủa formatprgtùy chọn.)


Liệu rebinding có M-qảnh hưởng evil-fill-and-movetrong anyway? Tôi không sử dụng cái ác do đó tôi tò mò. Nếu khu vực là fill-paragraphcuộc gọi hoạt động fill-regionnào. Vì vậy, bạn có thể tư vấn hoặc thay thế fill-regionvới chức năng của bạn.
Vamsi

Tôi chưa thử, nhưng tôi tin là không. evil-fill-and-movebị ràng buộc với chuỗi khóa gqtrong chế độ bình thường của cái ác. Rebinding M-qkhông nên ảnh hưởng đến keybinding này. Ở một khía cạnh nào đó, câu hỏi của tôi thực sự là hai câu hỏi: 1) Làm thế nào để thay thế hai chức năng? 2) Làm thế nào để sử dụng một chương trình bên ngoài? Lý do cho 2) là tôi đã có một giải pháp bên ngoài, không phải là Elisp.
Kevin

1
Trong trường hợp đó, bạn có thể giải quyết một phần của vấn đề của bạn bởi (add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))nơi your-fill-functionlà bạn defun tùy chỉnh elisp. Điều này sẽ thiết lập tổ hợp phím đó chỉ trong Auctex. Bạn có thể có thể sử dụng shell-command-on-regionvới đối số REPLACE để xác định your-fill-function.
Vamsi

Câu trả lời:


7

Sẽ tốt hơn nếu có 2 chức năng, mặc dù một chức năng có thể được thực hiện theo các chức năng khác. Lý do là một đoạn văn là một vùng ẩn , vì vậy đầu vào trong cả hai trường hợp phải khác nhau

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

Để thay thế các chức năng cho người khác, bất kể ràng buộc phím của họ, hãy sử dụng các phím bấm ánh xạ lại:

 (define-key LaTeX-mode-map [remap fill-region] 'my-format-region)
 (define-key LaTeX-mode-map [remap fill-paragraph] 'my-format-paragraph)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.