我正在尝试编写一个WYSIWYG文本编辑器,该编辑器允许我在顶部窗口中编写文本,并在底部窗口中呈现结果的涂鸦文本。我发现执行此操作的方法是定期在后台调用scribble myfile.rkt
,然后使用render-html-to-text将结果输出呈现到底部屏幕。我在使渲染正常工作时遇到了一些麻烦。根据我需要的文档
in : input-port?
dest : (is-a? html-text<%>)
load-img? : any/c
eval-rkt? : any/c
我脚本的相关部分看起来像这样
#lang racket/gui
(require racket/os racket/runtime-path "init.rkt"
browser/htmltext)
(require browser)
(define f (new frame% [label (~a "Dremacs" "@" (gethostname))]
[width 960]
[height 540]))
(define new-cnv (new cnv% [parent f]))
(send t insert ";; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.")
(send new-cnv set-editor t)
(define html-renderer%
(interface (html-text<%>)))
(define viewer (new panel%
[parent f]
[min-width 300]
[min-height 300]))
(render-html-to-text (open-input-file "TODO.html") html-renderer% #t #t)
(send f show #t)
但是我得到了错误
render-html-to-text: expects argument of type <html-text<%> object>; given: '(#<input-port:/home/diego/repos/dremacs/dremacs/TODO.html> #<interface:html-renderer%>)
context...:
/usr/share/racket/pkgs/drracket/browser/htmltext.rkt:61:0: render-html-to-text
"/home/diego/repos/dremacs/dremacs/editor.rkt": [running body]
temp37_0
而且我不确定我在做什么错。有人可以帮忙吗?
没有正确创建html-renderer%。
使用html-text-mixin将文本%转换为可处理html-text的东西。
但是...不要期望html渲染器太多。它很旧,不支持样式表。以前,它被用来显示DrRacket的文档。