[Cuis-dev] Fix for VectorCanvas>>#image:at:

Juan Vuletich juan at cuis.st
Fri Jun 2 07:31:51 PDT 2023


My previous answer is completely wrong, because I conflated two issues 
you raised.

Your solution works well to avoid styling the result of a printIt as if 
it was Smalltalk code. But it doesn't address the other issue you 
raised, that is, after that point, the styling of the rest of the 
workspace is messed up.

My suggestion (modifying #printIt to enclose the result in double 
quotes) actually addresses both issues: comments are not styled, and 
smalltalk code after them is styled correctly. Maybe we'd push this 
instead? Perhaps we'd also tweak the style so it doesn't look like 
comments, but the main point is that parsing will be correct afterward. 
We could also add a dot after the comment, maybe that makes Shout 
happier in case you forgot to type it.

The real fix would be to shout from scratch after 2 empty lines. That 
was the intended behavior some time ago, and it works for coloring but 
not for assignment arrows. Fixing this is a bit more complicated. so I'd 
sugges opening an issue on GitHub so we don't forget.

Thanks,

On 6/2/2023 11:36 AM, Luciano Notarfrancesco via Cuis-dev wrote:
> Last week I did the change to enclose printIt output in double quotes, 
> and I used it like that for a couple of days. I didn’t really like it, 
> but perhaps I’m just not used to it. It colored the printIt output 
> with the gray color that I use for comments, and for some reason it 
> didn’t feel right to me.
>
> Another thing that seems to cause problems with highlighting is my 
> habit of neglecting to type the last dot in the last sentence, because 
> it’s optional in Smalltalk and I never type it… but then it confuses 
> the syntax highlighter, even if I leave several empty lines between 
> fragments of code, it seems.
>
> It’s weird that my change doesn’t work for you. I just tried it in the 
> latest image and it doesn’t seem to work, but it works in my project 
> image and I can’t figure out why it fails in the stock image. See the 
> attached change set. I guess it would be more correct to change 
> TextColor>>dominates: adding "or: [other isForShout and: [self 
> isForShout not]]", or something like that... but still, why doesn't it 
> work? If some part of the text has attributes that dominate over shout 
> attributes it shouldn't change them, right? Is this a bug?
>
> BTW, I'm not pushing to adopt my change, I don't know yet what's the 
> best solution.
>
>
> On Fri, 2 Jun 2023 at 15:23 Juan Vuletich <juan at cuis.st 
> <mailto:juan at cuis.st>> wrote:
>
>     Please see inline.
>
>     On 6/2/2023 10:09 AM, Juan Vuletich via Cuis-dev wrote:
>>     I couldn't get that idea to work. Would you attach a changeset?
>>
>>     In any case, another simple but maybe less comfortable solution
>>     is to enclose the result in double quotes, making it comment.
>>
>>     Thanks,
>
>     Of course the above is completely wrong, because I conflated two
>     issues you raised.
>
>     Your solution works well to avoid styling the result of a printIt
>     as if it was Smalltalk code. But it doesn't address the other
>     issue you raised, that is, after that point, the styling of the
>     rest of the workspace is messed up.
>
>     My suggestion (modifying #printIt to enclose the result in double
>     quotes) actually addresses both issues: comments are not styled,
>     and smalltalk code after them is styled correctly. Maybe we'd push
>     this instead?
>
>
>     Thanks,
>
>>
>>     On 6/2/2023 7:23 AM, Luciano Notarfrancesco via Cuis-dev wrote:
>>>     Oh, just after sending this email I gave it another try and
>>>     found a simple solution. In SmalltalkEditor>>#printIt I set the
>>>     color of the output text to Theme current text, and I changed
>>>     TextColor>>dominates: adding “or: [other isForShout]”. That’s all :)
>>>
>>>     On Fri, 2 Jun 2023 at 11:59 Luciano Notarfrancesco
>>>     <luchiano at gmail.com <mailto:luchiano at gmail.com>> wrote:
>>>
>>>         I’ve been thinking how to prevent the printIt output to be
>>>         syntax highlighted. I think it’s best to do that because the
>>>         output is not Smalltalk code, so the syntax highlighter gets
>>>         it almost always wrong. It could be a preference, or it
>>>         could be specified in the printOn: methods that know that
>>>         the output is not Smalltalk code. What do you think? How
>>>         would you implement it? A new text attribute makes sense to
>>>         you or do you have any other idea?
>>>
>>>         On Thu, 1 Jun 2023 at 20:53 Luciano Notarfrancesco
>>>         <luchiano at gmail.com <mailto:luchiano at gmail.com>> wrote:
>>>
>>>             Oh, that’s great, using subpixel antialiasing just
>>>             solved the problem! Thanks!
>>>
>>>             I’ll try NeoEuler. It would be nice to have fallback
>>>             fonts too… some math glyphs are missing in DejaVu… but
>>>             it’s not a big deal. Another minor aesthetic problem is
>>>             that the syntax highlighter sometimes gets confused with
>>>             the output of printIt, perhaps would be better to not
>>>             apply syntax highlighting to the output, or to have the
>>>             option to “lock” the output text in some printOn:
>>>             methods so that the syntax highlighter doesn’t change it
>>>             (perhaps a new attribute? not sure if this makes sense).
>>>             Also sometimes the underscores are not converted to
>>>             arrows in a workspace, perhaps this is related to the
>>>             syntax highlighter getting confused.
>>>
>>>             Thanks!
>>>             Luciano
>>>
>>>             On Thu, 1 Jun 2023 at 17:42 Juan Vuletich <juan at cuis.st
>>>             <mailto:juan at cuis.st>> wrote:
>>>
>>>                 Hi Luciano,
>>>
>>>                 On 5/30/2023 9:06 AM, Luciano Notarfrancesco via
>>>                 Cuis-dev wrote:
>>>>                 BTW, in case anyone is curious, here is how
>>>>                 matrices look when printing them on a workspace
>>>>                 with cmd-p. I draw matrices over the binary field
>>>>                 in a special way (first screenshot), and I scale
>>>>                 them down if they are too big.
>>>>                 I did this because it was hard to make matrices
>>>>                 look good when printing them as text, so instead I
>>>>                 draw them on a form and embed the form when
>>>>                 printing them. I only do this with matrices, they
>>>>                 are especially problematic when printing because
>>>>                 they print with more than one line, they are the
>>>>                 only objects in my system that need more than one
>>>>                 line for printing. When I printed them as text with
>>>>                 more than one line, printing a list of matrices
>>>>                 (for example an array of matrices, as in the
>>>>                 example where I print a basis of a vector space in
>>>>                 the screenshots) they would look horrible. Now a
>>>>                 list of matrices is printed in a single line as
>>>>                 expected, and the point size of the enclosing
>>>>                 parentheses is adjusted automatically (I have
>>>>                 messages Stream>>#withParentheses:, #withBrackets:,
>>>>                 #withAngleBrackets:, etc, that do this automatically).
>>>
>>>                 It looks beautiful!
>>>
>>>>                 I still have two little problems that I might want
>>>>                 to tweak:
>>>>                 1) the parentheses are too thick, setting the point
>>>>                 size is not the right thing to do, maybe we need a
>>>>                 new text attribute for scaling text without
>>>>                 changing the point size?;
>>>
>>>                 The easiest solution is to use a different font,
>>>                 just for the parentheses. For example, NeoEuler
>>>                 parentheses are much lighter at large point sizes.
>>>
>>>>                 2) matrices inside matrices loose the transparent
>>>>                 background, the background becomes black, as you
>>>>                 see in the example in the second screenshot.
>>>
>>>                 I guess this should be fixable. If you can prepare
>>>                 an image with such example for me to play with, I'll
>>>                 give it a try. For example (not sure if related)
>>>                 VectorEngine can do blending over translucent
>>>                 backgrounds, but only if subpixel sampling is used.
>>>                 I know, there is no relation between these two
>>>                 features... But I wanted to keep options to a small
>>>                 number, and usually we only use cheaper whole pixel
>>>                 AA and cheaper alpha blending that can't blend over
>>>                 translucent backgrounds. So, maybe just using the
>>>                 SubPixel engine solves this problem, or I'll be
>>>                 happy to take a look.
>>>
>>>>
>>>>                 On Tue, May 30, 2023 at 7:27 PM Luciano
>>>>                 Notarfrancesco <luchiano at gmail.com
>>>>                 <mailto:luchiano at gmail.com>> wrote:
>>>>
>>>>                     This change set fixes a little bug in
>>>>                     VectorCanvas that cames up when using the
>>>>                     canvas to draw text with images on a form
>>>>                     (outside morphic). I do this to draw matrices,
>>>>                     and when drawing a matrix whose coefficients
>>>>                     are also matrices this came up. The fix is
>>>>                     simply checking that the world is not nil.
>>>>
>>>
>>>                 Integrated and at GitHub. Thanks!
>>>
>>>                 Cheers,
>>>
>>>                 -- 
>>>                 Juan Vuletich
>>>                 cuis.st  <http://cuis.st>
>>>                 github.com/jvuletich  <http://github.com/jvuletich>
>>>                 researchgate.net/profile/Juan-Vuletich  <http://researchgate.net/profile/Juan-Vuletich>
>>>                 independent.academia.edu/JuanVuletich  <http://independent.academia.edu/JuanVuletich>
>>>                 patents.justia.com/inventor/juan-manuel-vuletich  <http://patents.justia.com/inventor/juan-manuel-vuletich>
>>>                 linkedin.com/in/juan-vuletich-75611b3  <http://linkedin.com/in/juan-vuletich-75611b3>
>>>                 twitter.com/JuanVuletich  <http://twitter.com/JuanVuletich>
>>>
>>
>>
>>     -- 
>>     Juan Vuletich
>>     cuis.st  <http://cuis.st>
>>     github.com/jvuletich  <http://github.com/jvuletich>
>>     researchgate.net/profile/Juan-Vuletich  <http://researchgate.net/profile/Juan-Vuletich>
>>     independent.academia.edu/JuanVuletich  <http://independent.academia.edu/JuanVuletich>
>>     patents.justia.com/inventor/juan-manuel-vuletich  <http://patents.justia.com/inventor/juan-manuel-vuletich>
>>     linkedin.com/in/juan-vuletich-75611b3  <http://linkedin.com/in/juan-vuletich-75611b3>
>>     twitter.com/JuanVuletich  <http://twitter.com/JuanVuletich>
>
>
>     -- 
>     Juan Vuletich
>     cuis.st  <http://cuis.st>
>     github.com/jvuletich  <http://github.com/jvuletich>
>     researchgate.net/profile/Juan-Vuletich  <http://researchgate.net/profile/Juan-Vuletich>
>     independent.academia.edu/JuanVuletich  <http://independent.academia.edu/JuanVuletich>
>     patents.justia.com/inventor/juan-manuel-vuletich  <http://patents.justia.com/inventor/juan-manuel-vuletich>
>     linkedin.com/in/juan-vuletich-75611b3  <http://linkedin.com/in/juan-vuletich-75611b3>
>     twitter.com/JuanVuletich  <http://twitter.com/JuanVuletich>
>


-- 
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230602/27084f1e/attachment-0001.htm>


More information about the Cuis-dev mailing list