Re: [racket-users] student project idea: semi-WYSIWYG Scribble editor (Was: Racket 6.9)

2017-04-30 Thread Matthew Butterick

> On Apr 29, 2017, at 2:24 PM, Neil Van Dyke  wrote:
> 
> Alternatively, and simpler: you might have two window panes, one in which the 
> user writes Scribble source, and another that gives an almost-live 
> semi-WYSIWYG view of how the source would render.


FWIW, Pollen includes dynamic previewing of Scribble files (where the 
"almost-live semi-WYSIWYG view" is a browser window). This is how I work on all 
my Scribble sources.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] student project idea: semi-WYSIWYG Scribble editor (Was: Racket 6.9)

2017-04-30 Thread Neil Van Dyke



Hendrik Boom wrote on 04/30/2017 08:25 AM:

On Sat, Apr 29, 2017 at 05:24:39PM -0400, Neil Van Dyke wrote:


Alternatively, and simpler: you might have two window panes, one in which
the user writes Scribble source, and another that gives an almost-live
semi-WYSIWYG view of how the source would render. Ideally have the
semi-WYSIWYG one approximate UI cues like text cursor point and selection
highlighting in the semi-WYSIWG view.

This is the approach that makes sense to me.  But pointing and
selecting in the semi-WYSIWYG window would probaby require deep
involvement in scribble's own code.


Doing it perfectly would.  I'm proposing this as an exercise in clever 
hacking for a student, not routine engineering.


For one approach, a semi-WYSIWYG program could "experiment" with the 
renderer, to see what the output is for a given input construct, and see 
whether it can trace the input text through, and what happens to it.  If 
it can't see where the text went, then maybe that text just appears 
non-WYSIWYG with an box around it, and you can still represent points 
and selections.   But if the program can find the input text in the 
output, then the program can look for attributes of the rendering in 
which it is interested (mainly typeface/size/color changes), and 
selectively apply those to its semi-WYSIWYG view.


Constructs that require more complex structure, like itemized lists, are 
a harder problem, but not intractable, if you don't need to be perfect.  
These are easier if you're wiling to send real valid documents through a 
renderer, and remember things you've learned.


There are also some UI design decisions to make about how semi-WYSIWYG 
handles output it can't figure out.  Consider a user-defined procedure 
`plural`, which, for example, takes the input "try" and ultimately 
renders as "tries".  You can't trace that text through (unless you want 
to throw linguistics at this particular contrived example, which I 
suspect would be irrelevant overkill for real world situations).  You 
might decide that such things are rendered semi-WYSIWYG as a two-part 
input-output box, or you might just show the input in a box, or (if you 
don't need to be editable) show only an approximation of the output, or 
show only the output approximation except when the cursor/pointer is in 
it or adjacent.


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] student project idea: semi-WYSIWYG Scribble editor (Was: Racket 6.9)

2017-04-30 Thread Hendrik Boom
On Sat, Apr 29, 2017 at 05:24:39PM -0400, Neil Van Dyke wrote:

> 
> Alternatively, and simpler: you might have two window panes, one in which
> the user writes Scribble source, and another that gives an almost-live
> semi-WYSIWYG view of how the source would render. Ideally have the
> semi-WYSIWYG one approximate UI cues like text cursor point and selection
> highlighting in the semi-WYSIWG view.

This is the approach that makes sense to me.  But pointing and 
selecting in the semi-WYSIWYG window would probaby require deep 
involvement in scribble's own code.

-- hendrik

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.