«Неправильный аргумент типа» в написанной мной функции Emacs

Мне бы хотелось, чтобы моя клавиша Tab сделала следующее:

Если я'м в минибуфере, используйте завершение слова.В противном случае, если выбран регион, сделайте отступ.В противном случае сделайте отступ в строке в точке (используя tab-to-tab-stop).

Вот'код, некоторые из которых основаны на фрагментах Iнашел в другом месте в Интернете:

(defun my-tab ()
  "If region is selected, indent it and keep it selected, else indent current line."
  (interactive)
       (if (use-region-p)
           (increase-left-margin (region-beginning) (region-end) nil)
           (tab-to-tab-stop))
        (setq deactivate-mark nil))
(defun my-untab ()
  "If region is selected, unindent it and keep it selected, else unindent current line."
  (interactive)
       (if (use-region-p)
           (decrease-left-margin (region-beginning) (region-end) nil)
         (indent-rigidly (line-beginning-position) (line-end-position) (- tab-width)))
        (setq deactivate-mark nil))
;; AJF: wrote this one myself
(defun ajf-tab-fun ()
   (if (minibufferp)
     (minibuffer-complete)
     (my-tab)))

(global-set-key (kbd "TAB") 'ajf-tab-fun)

Проблема в том, что когда я нажимаю клавишу табуляции, я получаю сообщение об ошибке:

Wrong type argument: commandp, ajf-tab-fun

Я установил debug-on-error на t, чтобы я мог отлаживать. Вот's вывод:

Debugger entered--Lisp error: (wrong-type-argument commandp ajf-tab-fun)
  call-interactively(ajf-tab-fun nil nil)

Что я должен делать вместо этого?

Ответы на вопрос(2)

Ваш ответ на вопрос