Skip to content

考虑从LSP入手,提供美式键盘补全汉字标识符的能力(提供本地化自动补全字符串) #199

@Akarinnnnn

Description

@Akarinnnnn

既然从头设计一门语言有困难,那么从修改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
...

通过这种方式可以解决输入中文标识符时,处于中文输入状态无法触发补全的问题。预计解决这个问题对提高编码效率有帮助。

本地化补全字符串中有一些细节:

  1. 单条补全字符串不是完全小写的。这是为了允许编辑器在收到zw的输入时,也能够通过猜测首字母大写ZhongWen进而关联到此标识符。
  2. 为了应对多音字,每个符号的补全字符串都是数组(列表),标识符每个可能的读音都放在里面。建议只放入常见读音。不常见的字符和读音由下述机制处理。
  3. 标识符前第一条去除了前导空格后,由multilingual-autocompletion-override-completion:起头的注释将指定localizedCompltionString的内容。如上述标识符吴烜,将被注释multilingual-autocompletion-override-completion: WuXuan冒号后的内容覆盖读音,localizedCompltionString的内容将是[ "WuXuan" ]。具体是否只允许一条读音待定。

希望这些想法对您的项目有所帮助。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions