overview
overview copied to clipboard
考虑从LSP入手,提供美式键盘补全汉字标识符的能力(提供本地化自动补全字符串)
既然从头设计一门语言有困难,那么从修改VSCode等编辑器支持的LSP入手,允许美式键盘输入拼音缩写之后,自动补全关联到对应的汉字标识符是否更有可行性?
以下是示例:
首先是代码:
// Pronounces as "Zhong Wen Biao Shi Fu", for demonstration purposes take invalid pronunciation "Zhong Wen Biao Zhi Fu" into consider
// All pronunciations above are stripped tones
class 中文标识符 { /* ... */ }
class ZhongWenPinYin {
// 罕见字或罕见读音,用户覆盖读法
// multilingual-autocompletion-override-completion: WuXuan
public static string 吴烜 = "WuXuan";
}
修改后的LSP给class 中文标识符对应的语法项增加一个属性:localizedCompletionString: [ 'ZhongWenBiaoShiFu', 'ZhongWenBiaoZhiFu' ]。稍后用户在键盘上输入缩写zhongwenbs时,编辑器的自动补全功能弹出类似列表:
| zhongwenbs | |
|---|---|
| (⭐) | 中文标识符 |
| ZhongWenPinYin | |
| ... |
通过这种方式可以解决输入中文标识符时,处于中文输入状态无法触发补全的问题。预计解决这个问题对提高编码效率有帮助。
本地化补全字符串中有一些细节:
- 单条补全字符串不是完全小写的。这是为了允许编辑器在收到
zw的输入时,也能够通过猜测首字母大写ZhongWen进而关联到此标识符。 - 为了应对多音字,每个符号的补全字符串都是数组(列表),标识符每个可能的读音都放在里面。建议只放入常见读音。不常见的字符和读音由下述机制处理。
- 标识符前第一条去除了前导空格后,由
multilingual-autocompletion-override-completion:起头的注释将指定localizedCompltionString的内容。如上述标识符吴烜,将被注释multilingual-autocompletion-override-completion: WuXuan冒号后的内容覆盖读音,localizedCompltionString的内容将是[ "WuXuan" ]。具体是否只允许一条读音待定。
希望这些想法对您的项目有所帮助。
您好,您的邮件已收到,会尽快处理回复您!
您好!非常感谢分享。 这个插件好像是通过executeCompletionItemProvider实现的补全。
另外,一些国内自研语言:
- https://gitee.com/MulanRevive/mulan-rework
- https://github.com/ploc-org/CNPL