给Emacs写一个程序猿鼓励师?(inspired from vscode-rainbow-fart)

都是动画里截取的(要说有,那也是动画的版权?我也不太清楚

应该是有有版权的。不打算官方放到代码库里,不过可以个人自己使用。提供一个方式支持就行。比如,像 vscode-rainbow-fart 那样,通过读取外部的JSON文件?

NO JSON, use Sexp, or defcustom

1 个赞

一个小语法错误,rainbow-fart-voice-directory的定义应在rainbow-fart-voice-model之后.

另外我没有装flycheck, 所以最好在调用其函数前检查一下。

为了符合一些不能内置的语音包的情况,那么语音报对应的模型配置文件也就必然不能内置了。所以外部数据文件类似JSON就成了一个选择。而 defcustom 只能用于内置的语音包。版权是必须避免的一个问题。

UPDATE

还有一个选择,就是采用 sexp 格式的数据文件,Emacs有些插件也是使用这种方式。除非特殊爱好,不然我觉得通用点可能更合适。我去了解下 vscode-rainbow-fart 的JSON数据文件的格式,如果可以的话,兼容是最好的,这样可以直接拿来用,也可以相互之间使用。

感谢,恩恩,我平时因为flycheck检查太麻烦,而且检查很严格,我没有全局开启。我在项目里加一个 .dir-locals 好了,另外我在添加GitHub Actions,希望能添加个简单CI.

UPDATE

GitHub Actions Workflow 成功运行

我把文件名有Google翻译了一下。 做成了Org 表格,貌似无法很好对齐。 如果嫌弃的话,大家可以用 最近论坛里出的 valign 对齐下。 发上来,是因为我发现我也不知道要怎么选择这个音频匹配编程中的关键字。(如果不在意语音的意思的话,其实就无所谓了,哈哈哈) 不知道大家什么意见?

| 艾波比任何人吗?                               | アップルバイはいかが?                 |
| 您在很多单恋                                   | あなたにずっと片思い中                     |
| 这是一个应用程序错误。                         | アプリケーションエラーです。             |
| 运行应用程序                                   | アプリケーションを実行します               |
| 连接到互联网                                   | インターネットに接続します                   |
| 断开互联网                                     | インターネットの接続を解除します             |
| 鸬鹚 - 不能说实话。 。 。 。 。 。             | う~イジイジ......                 |
| 我们已经得到了从Windows的警告                  | ウィンドウズからの警告事項をお伝えします |
| 退出的Windows                                  | ウィンドウズを終了します                 |
| 我们已经激活了的Windows                        | ウィンドウズを起動しました               |
| Unyu?                                         | うにゅ?                                     |
| 鸬鹚 - 我哭了〜!                              | う~泣いちゃうぞ~!                       |
| 好的?                                         | オーケー?                                   |
| 这是你的兄弟的客户和Futari Kkiri               | お兄さまとふたりっきりですね               |
| 它还联手你弟弟查马·乌德?                      | お兄ちゃまウデ組んでもいい?             |
| 联系Nichandai爱!                              | お兄ちゃんだーい好き!                     |
| 可爱或草莓有什么感觉?                         | かわいいイチゴはいかがですか?         |
| 我吃了吧?                                     | かわいがって、ね?                         |
| 感情我吻好?                                   | キスって気持ちイイ?                         |
| 这是圭TTTE?                                   | ギュ~ッってしてね?                       |
| 越来越紧                                       | キュンキュン                                 |
| 垃圾桶现在卡拉                                 | ゴミ箱をカラにしました                     |
| 来吧来吧是 - 我和                              | さぁた~んと召し上がれ                     |
| 退出录音机                                     | サウンドレコーダーを終了します           |
| 它已经启动了录音机                             | サウンドレコーダーを起動しました         |
| 系统错误                                       | システムエラーです                         |
| 它建议磁盘扫描的执行                           | スキャンディスクの実行をオススメします     |
| 在一段时间后,我想打电话给我你的倪瓒           | たまには、おネエちゃんって呼ばれたいな     |
| 老公〜!                                       | ダンナさま~!                             |
| Chachan                                        | チャチャーン                                 |
| 妗NYA!这是我的病毒U〜! ?                    | にゃにゃ!これってウィルスぅ~!?           |
| 可爱的是更好地把猫耳?                         | ネコ耳付けたほうがカワイイ?               |
| 是的,运气Chaimasu!                           | はい、ガンバっちゃいまーす!             |
| 为(a)至(k),有人提出,还把邮件             | は~い、メール持ってきてあげたよ           |
| 盖博 -                                         | はふ~ん                                     |
| Pirorirorin                                    | ピロリロリン                               |
| 典当                                           | ポーン                                     |
| 海!                                           | ほい!                                       |
| Muffuffu〜                                     | ムッフッフ~                                 |
| 你有邮件                                       | メールが届いています                       |
| 由于〜全Ganbaroo!                             | め~いっぱいガンバロォ!               |
| 退出媒体播放器                                 | メディアプレーヤーを終了します           |
| 它已经开始了一个媒体播放器                     | メディアプレーヤーを起動しました         |
| 请选择菜单                                     | メニューを選んでください                 |
| 已经!只有一点点咪唑并                         | もう!ちょっとだけダゾ                 |
| 已经。 。 。 。 。 。沉睡的少。 。 。 。 。 。 | もう......眠いれす......         |
| 天啊〜,不要点击陌生的地方柳 -                 | もぉ~、ヘンなところクリックしないでよぉ~ |
| 更多的,假名让宠坏?                           | もっと、甘えちゃおうかな?                   |
| 高级!不要回来一起去?                         | 先輩!いっしょに帰りませんか?               |
| 它被执行                                       | 実行しました                                 |
| 扩大和                                         | 拡大します                                   |
| 快速放置HOO的名字!                            | 早く起きなさ~い!                           |
| 最大化                                         | 最大化します                                 |
| 最小化                                         | 最小化します                                 |
| 这是没用的不耐烦了哟                           | 焦っちゃダメですよぅ                     |
| 在那里,你是骑牛?                             | 牛に乗ったことってあります?                 |
| 答录机留言                                     | 留守電メッセージ                           |
| 减少你                                         | 縮小します                                   |
| 警告                                           | 警告します                                   |
| 你确定你要选择的项目或更多?                   | 選択項目は以上でよろしいでしょうか?     |
| 钉宫理惠自我绍介                               | 釘宮理恵自我介绍                             |

能贴到github里吗,我可以提交修改下。:smiley:

这个怎么贴?你可以直接下载音频,然后按照现有的那个alist那样写一个,然后提交PR.

不好意思没表达清楚,我是指你上面发的日语。我没有在GitHub页面里找到,所以就问下能不能贴过去。

那个音频包是 @Nasy 发的链接, 我只是用谷歌翻译了一下。看看什么意思。看完后,发现不怎么能用到里面去。不过如果忽略语义,还是可以用的。不过需要用户自己编排。

emacs-rainbow-fart 更新了。添加了一些新支持。

  • 支持 vscode-rainbow-fart 的 JSON 文件定义。导入spec定义也是从JSON导入了。不再内置hardcode在包里面了。

https://github.com/stardiviner/emacs-rainbow-fart/commit/36c75776f444cf022293b0900496432889ff7e4d

  • 很快会添加命令支持导入第三方语音包。正在写当中。

  • 新添加了两个语音包

https://github.com/stardiviner/emacs-rainbow-fart/commit/913cdff84e8b0f47d1745f5eba360e4ad76b99e9

2 个赞

对于新语音包的支持还有一个问题。那就是这些第三方语音报定义的关键字不是纯单词。而是加上了符号。比如 if(, if (, =>, else {, else{ 之类的。想在论坛里问问,我应该怎么检测这些情况呢?

现在用的实现检测prefix的方法是这样的。

https://github.com/stardiviner/emacs-rainbow-fart/blob/master/rainbow-fart.el#L183

看了下 company 的实现,他用的是 looking-back. 我试着模仿了下。但是现在问题是我的regex似乎不对。没法正确匹配。我用re-build测试不太对。

(defun rainbow-fart-get-prefix (regexp &optional expression limit)
    (when (looking-back regexp limit)
      (or (match-string-no-properties (or expression 0)) "")))

(rainbow-fart-get-prefix "\\w\\ ?[[:punct:]]?" 1)

求指点

找到正确的正则表达式了。

(rainbow-fart-get-prefix "\\(?1:\\_<[^\\ ].\\_>\\)\\ ?[[:punct:]]?" 1)
3 个赞

22年了,这个项目还有大佬维护吗?

用的时候发现在c++里面输入关键字时,大概率不会读出语音了

现在似乎已经上线melpa了,不过我不知道究竟GitHub里面的和Melpa里面的是不是同一个东西……似乎已经变成某种远古项目了?