我想編寫一個Emacs Lisp函數,無論當前模式的狀態如何,它都會打開flyspell-mode
。功能flyspell-mode-on
已棄用。該文件表明,一個正數前綴的說法將變成flyspell-mode
,但不幸的是運行如何從另一個Emacs Lisp函數調用具有前綴參數的交互式Emacs Lisp函數?
(flyspell-mode 1)
導致的錯誤消息:
Wrong number of arguments: (lambda (flyspell-mode 1)), 0
如果我能想出如何調用flyspell-mode
與前綴說法,我相信我可以解決這個問題。
我可以在Emacs Lisp手冊中找到的最相關的部分是標題爲「Interactive Call」的部分,它描述了call-interactively
等命令。這強調不是我想要的。
(我試圖解決的問題最終是創造一個模式掛鉤,在模式將需要考慮其當前的狀態。)
注:問題emacs lisp call function with prefix argument programmatically的標題使其看起來似乎是相關的,但是該問題詢問如何創建交互式命令,並且問題最終通過使用call-interactively
來解決。
編輯:這個問題是沒有實際意義;我已經找到一個替代的解決方案,以我原來的問題:
(add-hook 'text-mode-hook
(function (lambda()
(require 'flyspell)
(if flyspell-mode nil (flyspell-mode)))))
但我仍想知道如何調用的Emacs Lisp函數前綴的說法,從其他的Emacs Lisp功能,具有什麼互動。
UPDATE:也許我應該問爲什麼我得到的是錯誤信息......
我正在運行emacs 21,因爲emacsen 22和23在我使用但不再維護的一些傳統模式下造成了一些損失。 – 2012-02-24 02:56:07
@NormanRamsey哇,變老了。至於爲什麼你會得到這個錯誤信息,沒有什麼比你的版本中的'flyspell-mode'函數沒有直接讀取任何參數和讀取'current-prefix-arg';這是在更高版本中修復的設計缺陷。 – Gilles 2012-02-24 09:14:46