既然从头设计一门语言有困难,那么从修改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" ]。具体是否只允许一条读音待定。
希望这些想法对您的项目有所帮助。
既然从头设计一门语言有困难,那么从修改VSCode等编辑器支持的LSP入手,允许美式键盘输入拼音缩写之后,自动补全关联到对应的汉字标识符是否更有可行性?
以下是示例:
首先是代码:
修改后的LSP给
class 中文标识符对应的语法项增加一个属性:localizedCompletionString: [ 'ZhongWenBiaoShiFu', 'ZhongWenBiaoZhiFu' ]。稍后用户在键盘上输入缩写zhongwenbs时,编辑器的自动补全功能弹出类似列表:通过这种方式可以解决输入中文标识符时,处于中文输入状态无法触发补全的问题。预计解决这个问题对提高编码效率有帮助。
本地化补全字符串中有一些细节:
zw的输入时,也能够通过猜测首字母大写ZhongWen进而关联到此标识符。multilingual-autocompletion-override-completion:起头的注释将指定localizedCompltionString的内容。如上述标识符吴烜,将被注释multilingual-autocompletion-override-completion: WuXuan冒号后的内容覆盖读音,localizedCompltionString的内容将是[ "WuXuan" ]。具体是否只允许一条读音待定。希望这些想法对您的项目有所帮助。