Um comando de comando automático é executado quando um evento ocorre. Você deseja que um comando seja executado após a ocorrência de uma sequência de eventos. Uma maneira de fazer isso é assim:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
O <buffer>
padrão faz com que o comando automático seja acionado quando o buffer atual for gravado. Vejo
:help autocmd-buflocal
Atualizar
A solução acima é bastante simples e possui algumas falhas que foram discutidas nos Comentários. Aqui está uma solução mais completa que aborda algumas dessas falhas. Ele coloca os comandos automáticos em um grupo e exclui o comando automático BufWritePre, se houver, antes de criar um novo. Ele ainda cria um comando automático por buffer, mas apenas um.
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
Outra solução, semelhante à resposta publicada por lcd047, agora excluída, é reconhecer que quando o evento FileType ocorre, a opção 'filetype' está definida. Em seguida, você pode condicionar a resposta ao evento BufWritePost no valor de 'tipo de arquivo', como no exemplo a seguir. Tem a vantagem sobre as outras soluções que apenas um autocommand é criado.
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif