(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)
Вместо использования global-set-key
вы также можете перепривязать M-q
только в определенных режимах. (Или вы можете изменить глобальную привязку, а затем привязать M-q
обратно к 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
не является строго необходимым, но функция должна запускаться только один раз.)