在Emacs Lisp中切换自动填充模式

在Emacs Lisp中切换自动填充模式,emacs,elisp,Emacs,Elisp,我正在尝试使用键盘快捷键切换自动填充模式的开或关。 在我的~/.emacs中,我有 (setq-default auto-fill-function 'do-auto-fill) 现在,我尝试使用此函数解决我的问题: (defun my-switch-auto-fill-mode () (interactive) (if (auto-fill-function) (auto-fill-mode 0) (auto-fill-mode 1))) 但是它不起作用。像这样

我正在尝试使用键盘快捷键切换
自动填充模式
的开或关。 在我的
~/.emacs
中,我有

(setq-default auto-fill-function 'do-auto-fill)
现在,我尝试使用此函数解决我的问题:

(defun my-switch-auto-fill-mode ()
  (interactive)
  (if (auto-fill-function)
      (auto-fill-mode 0)
    (auto-fill-mode 1)))

但是它不起作用。

像这样的简单事情会起作用:

(global-set-key (kbd "<f2>") 'auto-fill-mode)
只打开它。 要从lisp代码中切换,请使用:

(call-interactively 'auto-fill-mode) 

(本地设置键(kbd“”)“自动填充模式)
有什么问题?@abo abo谢谢!它确实有效。@HåkonHægland解决您实际问题的最佳方法是abo abo。代码的问题是:(1)您想测试
自动填充功能
,而不是
(自动填充功能)
;(2) 您没有在if分支中重置
自动填充功能
。@abo abo:请将您的评论作为答案发表。赫康格兰:请接受abo abo的答案作为解决方案。这会将此问题标记为已解决。@Tobias是的,如果有人能给出答案并解释这一混淆,那将非常好:)或
(自动文件模式切换)
,这是从Lisp切换次要模式的标准方法。即使
自动填充模式
的docstring没有提到它,所有适当的次要模式(即用
定义次要模式
定义的模式)都支持此参数。
(call-interactively 'auto-fill-mode)