Skip to content

Latest commit

 

History

History
104 lines (88 loc) · 3.12 KB

File metadata and controls

104 lines (88 loc) · 3.12 KB

跟打器

todolist

  • [X] 创建 buffer
  • [X] 统计 pyim 的输入次数
    • [X] 测试 huma_pyim 的输入次数
  • [X] diff highlight
  • [ ] emacs-rime?
  • [X] 击键数据, 码长
    • [X] 计时器
  • [X] 结束统计
  • [X] 载文, 发文
  • [X] 纵向分屏
  • [X] 优化 UI
  • [ ] 存储数据, 分析报告
  • [X] 随机发文
    • [X] 随机已发内容
    • [X] 随机全文
  • [X] hook buffer local
  • [X] 调整 hook 顺序
  • [X] 键准数据

design

diff

触发时间:input & delete,or buffer-changed

首先删除所有 overlay;

每次从 buffer 第一个字符开始,直到到达跟打区未尾;

取 point 和 char-at-point,比较相同位置的发文区字符;

相同则创建 same-overlay,否则 diff-overlay。

结束

结束条件

  1. buffer 字符数量与发文区相同了,且最后一个字符相同,结束
  2. 到数量相同时,最后一个字符不同,不结束
    1. 此时继续输入,字符数量超过发文区,结束

结束表现

  1. 发送报告?
  2. 光标移到 readonly buffer
  3. 击键
    1. 未到目标时重打
    2. 超过目标发下一段

计时器

两种方法

  1. 第一次 type 时,启动一个 timer,每0.1s计录一次当前的时间
  2. 每一次 type 时,计录一次时间

目前用的第一种, 对现在显示方式两者没什么区别

  • [ ] buffer-string 为 nil 时不应该启动 timer
  • [ ] 跳转 buffer 后应该 cancel timer

载文-发文

载文形式

  • 短文: 无空格 txt, 全篇直接读为 str
    • [X] 计算当前发文的长度
  • 长文: ?

发文(短文)

  1. 分段发文
    • 按长度分割 str 存至 list
    • 手动下一段/上一段
      • [X] readonly buffer 中发下一段的时自动跳转,且解除 readonly
      • [X] 光标在开头时不应触发
    • 达标后自动下一段
      • 是否需要达标
  2. 发送全文

继续发文

用户调用继续--article中检索到--sort和stat检索到的最后一条记录--该次是否为乱 -sort中无记录 -article中无记录

存储数据

  • sqlite?
  • [X] 计录当前文章是第几段
  • [X] 计录当前文章名

暂停功能

失去焦点后自动暂停 切换buffer后自动暂停

  1. 开启另一个 timer, 记录失焦的时间, 在重新开始后让开始时间加上这个数

    或: cancel timer, 记录已经经过的时间, 在重开统计后开始时间减去这个数

    取后者

  2. 文字只读, 手动开始后可写 https://stackoverflow.com/questions/15272841/how-to-remove-a-function-from-run-with-idle-timer

Package

函数入口

transient

归并hook

ISSUE

  1. 错字为空格时不能正确结束, 猜测为空格的string-width不是2
  2. 输入结束时光标不在eofb时不能正确结束
  3. 键准统计不会计被退格的那个字的码,所以虚高一点

solved