あらゆる入力に対し、foo bar bazの3つの候補を表示するシンプルなバックエンドを作成する。

(require 'cl-lib)
(require 'company)

(defvar company-foo-enable nil)
(defvar company-foo-debug nil)

(defun company-foo (command &optional arg &rest ignored)
  "`company-mode` completion backend for simple.

Suggest foo, bar and baz.
"
  (interactive (list 'interactive))

  (when company-foo-debug
    (message "command=%s arg=%s ignored=%s"
	     command arg ignored))

  (cl-case command
    (interactive (company-begin-backend 'company-foo))
    (prefix (and company-foo-enable "aaa"))
    (candidates (list "foo"
		      "bar"
		      "baz"
		      ))))

(add-to-list 'company-backends #'company-foo)

company-foo-enableをtに設定すると補完が表示される。

(setq company-foo-enable nil)

`company-backends'のdocstringに記載されている説明がが最もよく分かる。