emacs:视觉线模式和填充段落

标签 emacs elisp

我现在使用关闭了可视行模式的 Emacs 23 进行文本编辑,但出于习惯一直按 M-q (因此添加了硬包装行结尾......)。我想知道是否有一种方法可以添加一个条件来禁用填充段落(或删除与 M-q 的绑定(bind)),以用于打开视觉线模式的模式,但为那些我仍在的模式重新启用它使用自动填充模式?谢谢!

最佳答案

(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 ,也可以重新绑定(bind)M-q仅在特定模式下。 (或者,您可以更改全局绑定(bind),然后在特定模式下将 M-q 绑定(bind)回 fill-paragraph。)请注意,许多模式是自动加载的,因此在激活模式之前可能不会定义它们的键映射。要设置特定于模式的绑定(bind),我通常使用如下函数:
(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:视觉线模式和填充段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416171/

相关文章:

emacs - 评估 .emacs 时未启用词法绑定(bind)

Emacs 自动完成弹出菜单损坏

regex - 如何重新定义 "minibuffer"模式映射中的键?

emacs - 排除 LaTeX-mode-hook 是个好主意吗?

Vim - 像 Emacs 一样缩进

由于缓冲区 "ido.last",emacs无法关闭

基于主机名的elisp条件

pdf - 如何在 Evince 中以 Org 模式打开 PDF 文件?

emacs - Elisp中绝对路径的相对路径

emacs - Emacs Lisp 的 REPL