1. 我先说下我的实现,其实很明了,就是用正则从头数一遍
这个只要规则没问题,统计本身不会有问题
但效能上确实会有问题,因为统计的速度与字数是直接相关的,在字数非常多的时候(比如你说的500k),这时会出现卡顿的现像(由于emacs是单线和,如果统计时间过长,会卡住emacs)
当然根据实现的优劣,效能的瓶颈也会有高低。精细处理,字数的上限就能更高。实现差,则字数的上限就低。
我写这个elisp的时候,设定的上限是10成万字(实际应该不止这个数)。这个主要是应用场景的问题,这类统计主要的用途应该是作文或是论文一类,10万字应该差不多了(个人感觉)。像你说的几百万字的elisp文档,也没必要开这个吧

。这也是我为什么写成minor-mode,不需要的时候可以不开。
2. 这确实是个不错的思路,我有时间优化下这个elisp
这个我还是解释下,由于那天没什么时间了(我要睡觉了

),而效能也达标了(10万字无卡顿),我就发出来了。
3. 就以空格而言,我单纯输入一个空格,tab出几个空格(假设设置tab为固定空格的话),C-y出一堆空格,更进一步,把空格设置成的快捷键的话。这里变数太多,风险完全不可控,我从一开始,就没考虑过这种实现。
4. 不太明白你的意思,"\\cc","[:space:]","[:punct:]"都是在使用语法表,"[A-Za-z0-9]"这个是由于我想不出别的匹配方法才用的("\\w"同时包含的中英文)。