当前位置:  开发笔记 > 开发工具 > 正文

emacs:visual-line-mode和fill-paragraph

如何解决《emacs:visual-line-mode和fill-paragraph》经验,为你挑选了2个好方法。

我现在正在使用Emacs 23进行文本编辑的视觉模式转换,但是不要让Mq超出习惯(因此添加了硬包装线结尾......).我想知道是否有一种方法可以添加一个条件来禁用fill-paragraph(或删除绑定到Mq)的模式,其中打开了visual-line-mode,但是为那些我仍在使用的模式重新启用它使用自动填充模式?谢谢!



1> cjm..:
(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不是绝对必要的,但该功能只需要运行一次.)



2> mihi..:

你可以使用建议.

对于你的.emacs:

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

当视线模式打开时,这将更改fill-paragraph不执行任何操作.如果您愿意,也可以添加错误.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有