Conversation
Greptile Summary本 PR 在已有聚光灯教程基础设施之上,完善了首次启动引导流程:新增 JSON 驱动的四步教程配置,支持 Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant TutorialEngine
participant Scheme
participant Prefs as UserPreferences
TutorialEngine->>TutorialEngine: showStep(requireAction step)
TutorialEngine->>TutorialEngine: updateCurrentStepGate()
TutorialEngine->>Prefs: reset_user_preference("tutorial:last-action")
TutorialEngine->>TutorialEngine: setNextEnabled(false)
TutorialEngine->>TutorialEngine: actionPollTimer.start(150ms)
User->>Scheme: kbd-magic-paste / ocr-paste / OCR button
Scheme->>Prefs: cpp-set-preference("tutorial:last-action", action)
loop Poll every 150ms
TutorialEngine->>Prefs: get_user_preference("tutorial:last-action")
alt action matches requiredAction
TutorialEngine->>TutorialEngine: completedActionSteps.insert(stepId)
TutorialEngine->>Prefs: reset_user_preference
TutorialEngine->>TutorialEngine: setNextEnabled(true)
TutorialEngine->>TutorialEngine: actionPollTimer.stop()
end
end
User->>TutorialEngine: Next button clicked
TutorialEngine->>TutorialEngine: showNextAvailableStep()
Reviews (2): Last reviewed commit: "补充文档" | Re-trigger Greptile |
| call ("ocr-to-latex-by-image", current_tree); | ||
| eval ("(when (defined? 'tutorial-notify-action) " | ||
| "(tutorial-notify-action \"ocr-paste\"))"); |
There was a problem hiding this comment.
点击浮动菜单中的 OCR 按钮时,无论 ocr-to-latex-by-image 是否真正识别成功,tutorial-notify-action "ocr-paste" 都会被发送,用户因此可以在未完成有效 OCR 的情况下推进教程步骤。而键盘路径(generic-edit.scm 中的 ocr-paste)只有在剪贴板确实包含图片且处理成功时才发送通知,两者行为不一致。
建议让通知仅在 ocr-to-latex-by-image 执行成功后才发送,或在 Scheme 侧的 ocr-to-latex-by-image 内部统一处理通知,与 ocr-to-latex-by-cursor 的模式保持一致。
| (tm-define (tutorial-prepare-magic-paste-demo) | ||
| (let* ((html-path (tutorial-magic-paste-demo-path)) | ||
| (html (utf8->cork (string-load html-path))) | ||
| (old-export (clipboard-get-export))) | ||
| (if (not tutorial-magic-paste-demo-opened?) | ||
| (begin | ||
| (new-document) | ||
| (set! tutorial-magic-paste-demo-opened? #t))) | ||
| (clipboard-set-export "verbatim") | ||
| (clipboard-set "primary" html) | ||
| (clipboard-set-export old-export))) |
There was a problem hiding this comment.
clipboard-set-export "verbatim" 与 clipboard-set-export old-export 之间的 clipboard-set "primary" html 若抛出异常,导出模式将保持 "verbatim" 而无法恢复,影响后续粘贴操作。建议使用 dynamic-wind 保证清理代码必定执行:
(dynamic-wind
(lambda () (clipboard-set-export "verbatim"))
(lambda () (clipboard-set "primary" html))
(lambda () (clipboard-set-export old-export)))
No description provided.