タブキーで次のことを実行したいのですが。
- ミニバッファを使用している場合は、単語補完を使用します。
- それ以外の場合、リージョンが選択されている場合は、インデントします。
- それ以外の場合は、ポイントで行をインデントします(タブツータブストップを使用)。
これがコードです。その一部は、インターネット上の他の場所で見つけたフラグメントに基づいています。
(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)
問題は、Tabキーを押すと、次のエラーが発生することです。
Wrong type argument: commandp, ajf-tab-fun
debug-on-errorをtに設定して、デバッグできるようにしました。出力は次のとおりです。
Debugger entered--Lisp error: (wrong-type-argument commandp ajf-tab-fun)
call-interactively(ajf-tab-fun nil nil)
代わりに何をすべきですか?