Как вызвать интерактивную функцию Emacs Lisp с аргументом префикса из другой функции Emacs Lisp?

Я хочу написать функцию Emacs Lisp, которая будет включать flyspell-mode независимо от текущего состояния режима. Функция flyspell-mode-on устарела.В документации предполагается, что положительный аргумент префикса включит flyspell-mode , но, к сожалению, запуск

(flyspell-mode 1)

приводит к сообщению об ошибке:

Wrong number of arguments: (lambda (flyspell-mode 1)), 0

Если бы я мог выяснить, как вызвать flyspell-mode с аргументом префикса , я считаю, что смогу решить эту проблему.

Наиболее важный раздел, который я могу найти в руководстве по Emacs Lisp, - это раздел, озаглавленный «Интерактивный вызов», в котором описаны такие команды, как интерактивный вызов . Я категорически не этого хочу.

(Конечная проблема, которую я пытаюсь решить, - создать ловушку режима, которая включает режим независимо от его текущего состояния.)

Примечание. Заголовок вопроса Функция вызова emacs lisp с аргументом префикса программно делает его связанным, но этот вопрос касался того, как создать интерактивную команду, и проблема была в конечном итоге решена с помощью звонок-интерактивно .


РЕДАКТИРОВАТЬ : Это спорный вопрос; Я нашел альтернативное решение моей исходной проблемы:

(add-hook 'text-mode-hook
          (function (lambda ()
                      (require 'flyspell)
                      (if flyspell-mode nil (flyspell-mode)))))

Но я все же хотел бы знать, как вызвать функцию Emacs Lisp с аргументом префикса из другой функции Emacs Lisp с ничем интерактивным.


ОБНОВЛЕНИЕ : Возможно, мне следовало спросить, почему я получаю это сообщение об ошибке ...

12
задан Community 23 May 2017 в 11:45
поделиться