簡體   English   中英

emacs:visual-line-mode和fill-paragraph

[英]emacs: visual-line-mode and fill-paragraph

我現在正在使用Emacs 23進行文本編輯的視覺模式轉換,但是不要讓Mq超出習慣(因此添加了硬包裝線結尾......)。 我想知道是否有一種方法可以添加一個條件來禁用fill-paragraph(或刪除綁定到Mq)的模式,其中打開了可視線模式,但是為那些我還在的模式重新啟用它使用自動填充模式? 謝謝!

(defun maybe-fill-paragraph (&optional justify region)
  "Fill paragraph at or after point (see `fill-paragraph').

Does nothing if `visual-line-mode' is on."
  (interactive (progn
         (barf-if-buffer-read-only)
         (list (if current-prefix-arg 'full) t)))
  (or visual-line-mode
      (fill-paragraph justify region)))

;; Replace M-q with new binding:
(global-set-key "\M-q" 'maybe-fill-paragraph)

您也可以僅在特定模式下重新綁定Mq ,而不是使用global-set-key (或者,您可以更改全局綁定,然后在特定模式下將Mq綁定回fill-paragraph 。)請注意,許多模式都是自動加載的,因此在激活模式之前可能無法定義其鍵映射。 要設置特定於模式的綁定,我通常使用這樣的函數:

(add-hook 'text-mode-hook
  (defun cjm-fix-text-mode ()
    (define-key text-mode-map "\M-q" 'maybe-fill-paragraph)
    (remove-hook 'text-mode-hook 'cjm-fix-text-mode)))

remove-hook不是絕對必要的,但該功能只需要運行一次。)

你可以使用建議。

對於你的.emacs:

(defadvice fill-paragraph (around disable-for-visual-line-mode activate)
  (unless visual-line-mode
    ad-do-it))

當視線模式打開時,這將更改fill-paragraph不執行任何操作。 如果您願意,也可以添加錯誤。

visual-line-mode有自己的keymap: visual-line-mode-map 我建議僅在該鍵映射中重新綁定Mq。

映射被定義為啟動的一部分,因此您不需要eval-after-load。 只需在該模式下禁用綁定:

(define-key visual-line-mode-map [remap fill-paragraph] 'ignore)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM