I still haven't added a :set function yet since I'm not sure if there's a way to avoid the chain of boundp checks. In this revision, I simplified the code a tiny bit wrt calculating the translation table since I no longer use the indian-make-hash function but call whatever functions it call directly in tamil--update-quail-rules: this greatly reduces the amount of massaging that needs to be done. Also, can someone guide me to write a sort function for quail-tamil-itrans-compute-syllable-table please? The ideal order of consonants should be the same as the one in the default value of tamil-consonant-translation, same for tamil-vowel-translation. I tried the following (sort (reverse (mapcar #'car tamil-consonant-translation)) (lambda (x y) (let ((lx (length x)) (ly (length y))) (if (= lx ly) (string-lessp x y) (< lx ly))))) but that definitely doesn't do what I want. The idea was to sort the list so that the basic consonants (க் ங் ச் etc.) first then the composite ones (க்‌ஷ் க்ஷ் etc.) but `string-lessp' does not even sort the basic consonants in the right order (the right order being the order in the default value of `tamil-consonant-translation'). Can I use the min-width property in buffer text? I'm not sure if it was finished since I remember some discussion surrounding that it wasn't quite finished yet. I would like to try to use it for syllable table and friends.