自己的开源项目里有一需求是使用 KaTeX 实现数学公式输入,其中一个 Task 是 KaTeX 命令自动补全
技术上采用 Trie 数据结构,只是在实现上有点难度:
起初想法是把 KaTeX 所有命令( command )逐个加入 Trie 中,因为它是有限集,不过有 command 嵌套问题,也不是所有 command 都可以嵌套,结构比较复杂,放弃...
第二种思路是参考 overleaf 的做法:数据驱动实现,将最常用的 command 显示在 dropdown list,所有就有了第三种思路:
初始状态下,命令集为空,用户输入之后,如果 command 存在,在插入公式之后便将该 command 加入到 Trie 中,那么问题就是,是否需要一个数据库存储命令集,其实命令集并不需要共用,因为每个用户的专业和领域不同,用到的命令分布范围也有所不同,也就是 local 自动补全功能,如果存到某个变量中,似乎不可取,第二次打开页面变量会初始化,并不会记录上次关闭页面时的值
我一直以为最后一种思路是不可实现的,直到昨天在 emacs 里安装了 auto-complete 写 Agda,发现即使我在一个文件里清空了所有相关代码,再次输入时依然会有 dropdown list 提示,也就是在该文件里会有代码记忆,即使我关闭文件后又重新打开:
这个功能正是我想要的,比较好奇是怎么实现的,虽然我在用 emacs,但是看不懂 emacs-lisp 代码,另外,我的 emacs 里也没有安装 lsp-mode,所以也不会是 lsp 机制影响
发帖和有经验的 v 友交流一下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.