Você pode basear seu código no alias interno definido aqui
HashTable ht = aliastab;
ht->addnode(ht, ztrdup(wrong_value),
createaliasnode(ztrdup(right_value), 0));
(não testado)
E adicione source ~/.zsh_correct_aliases
a você .zshrc
EDIT : testado com a fonte:
char *aliaspath = getenv("HOME");
strcat(aliaspath, "/.zsh_correct_aliases");
FILE *out = fopen(aliaspath, "ab+");
fprintf(out, "alias %s=\'", *s);
HashTable ht = aliastab;
ht->addnode(ht, ztrdup(*s),
createaliasnode(ztrdup(best), 0));
*s = dupstring(best);
fprintf(out, "%s\'\n", *s);
fclose(out);
if (hist)
hwrep(best);
Dá:
$ setopt correct
$ dtea
zsh: correct 'dtea' to 'date' [nyae]? y
lun. janv. 8 01:03:55 CET 2018
$ alias
dtea=date
$ dtea
lun. janv. 8 01:07:42 CET 2018