C-x RET f で出てくるデフォルトは現在のファイルのエンコーディングとは限らないような気がする。
コード見てみるとデフォルト決めるのに色々やってるなあ

あと色々沢山設定してるけど、今は特別なことしないなら↓だけで問題ないと思ったけど。
(set-language-environment 'Japanese)
(prefer-coding-system 'utf-8)

キーボードだの端末だのバッファだのは全部 prefer-coding-system でやってくれる。
その後にファイル名のコーディングとかプロセスのI/Oを一部別なのに変更したいときだけ
個別に変えればいい。