A função funciona como esperado se hlsearch não estiver definido antes de chamá-lo. Parece que defini-lo na função não tem efeito se já estiver definido. Você pode resolver isso configurando nohlsearch no seu mapeamento:
nnoremap <space> :set nohlsearch\|:call g:TestFunc()<cr>
Se o seu objetivo é simplesmente destacar determinados padrões, e você não precisa especificamente usar o mecanismo hlsearch , você pode querer usar o comando match . Realiza praticamente a mesma coisa com mais clareza.