rime / squirrel

【鼠鬚管】Rime for macOS
https://rime.im
GNU General Public License v3.0
4.67k stars 414 forks source link

升级到 0.10.0 后,无法通过 default.custom.yaml 单独指定 punctuator #272

Closed chrisyue closed 5 years ago

chrisyue commented 5 years ago

抱歉我又来了

在 0.10.0 之前, 在 default.custom.yaml 里我可以覆写某些 default.yaml 中关于 punctuator.half_shape 的设置.

比如

patch:
  punctuator:
    half_shape:
      '''' : { pair: [ '「', '」' ] }
      '"' : { pair: [ '『', '』' ] }

这样设置不并会影响其他符号的转换规则,但我发现 0.10.0 版本后,如果覆盖了 punctuator.half_shape 里的某一部分转化规则,实际上是把所有的 punctuator.half_shape 都完全覆盖了. 比如说现在你看到的这段文字, 我没有办法用中文的句号.

我理解以前的行为是正确的?

lotem commented 5 years ago

不存在「以前的行爲」。打補丁 的規則一貫如此。 patch: 的下一級 key 指定節點位置,value 爲整個節點要替換的內容。

請按 文檔 說明的方法、在輸入方案裏設定。

chrisyue commented 5 years ago

@lotem 佛老師好. 我確實按文檔做的設置,但不知道還有什麼地方沒有設置正確,請佛老師幫忙查看一下吧.

這是我的 default.custom.yaml 文件全部內容

patch:
  schema_list:
    - schema: double_pinyin

  punctuator:
    import_preset: default # 這一句加不加都一樣的結果
    half_shape:
      '''' : { pair: [ '「', '」' ] }
      '"' : { pair: [ '『', '』' ] }

  ascii_composer:
    switch_key:
      Shift_L: commit_code

目前還是不能集成 default.yaml 裏的 punctuator 的設置

這是 default.yaml 文件的一部分,我是完全沒有去修改過它的:

punctuator:
  ...
  half_shape:
    ',' : { commit: , }
    '.' : { commit: 。 }
    '<' : [ 《, 〈, «, ‹ ]
    '>' : [ 》, 〉, », › ]
    '/' : [ 、, '/', /, ÷ ]
    '?' : { commit: ? }
    ...

現在只有我覆蓋過的起作用了,但是其他的,都沒有效果.

另外我再多提供一些線索吧,可能有關係:我只用 plum 安裝了雙拼方案,及其依賴的其他輸入方案

chrisyue commented 5 years ago

另外我剛剛還做了一些測試:

  1. 保持我的當前 custom 配置, full_shape 的設置都是完全有效果的
  2. 修改我的 custom 配置, 增加對引號的轉化,結果點號不按 default.yaml 文件的設置規則轉換,而是變成了全角的點號
  3. 加不加 import_preset: default ,重新部署,效果都一樣
zpc999 commented 5 years ago

我安装新的版本后,重新启动然后再longin,能够使用该输入法。但是没法使用我以前的设置。比如说,我以前是显示10条预选,但是现在只看到5条。似乎也没有读入我的各种dict,我使用的是extended dict,但是这些dict似乎都没有被读入,因为dict里面的一些词打不出来。

怎样确定输入法读入了我需要的dict?怎样确定输入法读入了我的设置?

我是使用luna_pinyin_simp,也就是说简体字拼音输入,但是用了我自己的dict,更新前一直工作正常。

谢谢!

On Jan 4, 2019, at 10:04 PM, chris yue notifications@github.com wrote:

另外我剛剛還做了一些測試:

保持我的當前 custom 配置, full_shape 的設置都是完全有效果的 修改我的 custom 配置, 增加對引號的轉化,結果點號不按 default.yaml 文件的設置規則轉換,而是變成了全角的點號 加不加 import_preset: default ,重新部署,效果都一樣 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/rime/squirrel/issues/272#issuecomment-451622635, or mute the thread https://github.com/notifications/unsubscribe-auth/AJJ6ZZEPNeo3B6OpXnMPa6mq8MXXJ7wrks5vABYjgaJpZM4ZpAiz.

chrisyue commented 5 years ago

我安装新的版本后,重新启动然后再longin,能够使用该输入法。但是没法使用我以前的设置。比如说,我以前是显示10条预选,但是现在只看到5条。似乎也没有读入我的各种dict,我使用的是extended dict,但是这些dict似乎都没有被读入,因为dict里面的一些词打不出来。 怎样确定输入法读入了我需要的dict?怎样确定输入法读入了我的设置? 我是使用luna_pinyin_simp,也就是说简体字拼音输入,但是用了我自己的dict,更新前一直工作正常。 谢谢! On Jan 4, 2019, at 10:04 PM, chris yue @.***> wrote: 另外我剛剛還做了一些測試: 保持我的當前 custom 配置, full_shape 的設置都是完全有效果的 修改我的 custom 配置, 增加對引號的轉化,結果點號不按 default.yaml 文件的設置規則轉換,而是變成了全角的點號 加不加 import_preset: default ,重新部署,效果都一樣 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#272 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AJJ6ZZEPNeo3B6OpXnMPa6mq8MXXJ7wrks5vABYjgaJpZM4ZpAiz.

这位兄弟,我感觉你的问题跟我这个没啥关系,我觉得你另外新开一个 issue 比较好……

lotem commented 5 years ago

@chrisyue 文檔裏介紹了兩種做法,一是在輸入方案裏覆蓋個別符號的映射,二是全套替換。 兩種方法都是對 輸入方案 打補丁。也只有在輸入方案裏可以指定引用具體的一套標點配置。 你的做法和兩者都不一樣啊。

chrisyue commented 5 years ago

@chrisyue 文檔裏介紹了兩種做法,一是在輸入方案裏覆蓋個別符號的映射,二是全套替換。 兩種方法都是對 輸入方案 打補丁。也只有在輸入方案裏可以指定引用具體的一套標點配置。 你的做法和兩者都不一樣啊。

謝謝佛老師,確實是我理解的問題,我原以爲在 default.custom.yaml 裏設置 import_preset: default 就可以了,原來需要在單獨的每個輸入方案裏都設置。看了 build 之後的配置我總算弄明白了。

不過我想,如果每個輸入法都要單獨設置,是不是有些不方便,比如我會主用雙拼,但偶爾也會用用別的輸入法,或者朋友偶爾用用我的 Mac 我就給他調成全拼。如果能在 default.custom.yaml 文件裏用 import_preset 表示 build 時合併 default.yaml 的內容就好了。

目前 import_preset: default 這句會直接原樣複製到 build/default.yaml,但因自己本身就是 default 所有就忽略了,導致實際並不是合併的效果,我理解是這樣。

lotem commented 5 years ago

你這樣做是不行的。 import_preset:default 指的就是 default.yaml 裏的相關定義。 default.custom.yaml 是對 default.yaml 的修改。 在任意輸入方案裏 import_preset: default 會引用 default.yaml 應用過補丁後的結果,即包含了 default.custom.yaml 的修改。 那麼在 default.custom.yaml 裏引用 default 就是在修改時引用修改後的內容,循環引用自身。

所以我不推薦動這個地方的定義。 第二套方案,就是爲了避免有人爲了不在每個方案裏重複自定義的符號,而要改 default.yamlimport_preset: other 這是最簡單的,改動最少的。

不過你非要(我再次重申這種用法我是不支持的)改 default.yaml 的定義,那就 patch 掉整個 punctuator 節點。

xiaoqun2016 commented 5 years ago

试试/+操作符:

# default.custom.yaml
patch:
  punctuator/half_shape/+:
    '''' : { pair: [ '「', '」' ] }
    '"' : { pair: [ '『', '』' ] }

大致的写法是这样。没理解错的话,可以合并新值或覆盖旧值(若存在)

lotem commented 5 years ago

@xiaoqun2016 這招也行。