company-modeでタブキーで複数の補完候補がある時は候補をスクロールして補完候補が1つの時は補完を決定する
emacsの補完用パッケージcompany-mode - Qiitaに実現できそうな関数が載っていましたが. パッケージ化されていないコードをあまり取り込みたくなかったので敬遠しました.
調べてみると標準でcompany-complete-common-or-cycle
という関数があってこれが思った通りの動作をしてくれました.
以下のように書けば完璧です.
(define-key company-active-map (kbd "<backtab>") 'company-select-previous)
(define-key company-active-map (kbd "<tab>") 'company-complete-common-or-cycle)