Hello, Suppose that you want to show the diff between the source code of two methods. In the case that both methods are in the same class, and that such class is present in the system, then no problem: In a DiffModel, one can set a context to the smalltalk syntax styler and get a nice output. DiffModel new leftText: (Point >> #x) sourceCode; rightText: (Point >> #y) sourceCode; contextClass: Point; openWithSpec. But what happens in the case that the class does not exist in the system? If one doesn't set any context to the styler, then the string will be shown all in black, which is not nice. A partial solution could be to set Object as a context, then the styler will color the code, but instance variables are in red: DiffModel new leftText: (Point >> #x) sourceCode; rightText: (Point >> #y) sourceCode; contextClass: Object; openWithSpec. Which is also not nice. In my opinion, there should be a styler that just colors the code following the syntax, without checking if the variables or classes are present in the system. It would be an environment-independent styler. What do you recommend to implement this? I guess it should be easy to subclass SHTextStylerST80 and override some methods to do not check anything in the environment. What's your opinion? Thanks, Martin |
> On 17 Jun 2015, at 18:54, Martin Dias <[hidden email]> wrote: > > Hello, > > Suppose that you want to show the diff between the source code of two methods. In the case that both methods are in the same class, and that such class is present in the system, then no problem: In a DiffModel, one can set a context to the smalltalk syntax styler and get a nice output. > > DiffModel new > leftText: (Point >> #x) sourceCode; > rightText: (Point >> #y) sourceCode; > contextClass: Point; > openWithSpec. > > <Screen Shot 2015-06-17 at 18.33.22.png> > > But what happens in the case that the class does not exist in the system? > > If one doesn't set any context to the styler, then the string will be shown all in black, which is not nice. A partial solution could be to set Object as a context, then the styler will color the code, but instance variables are in red: > > DiffModel new > leftText: (Point >> #x) sourceCode; > rightText: (Point >> #y) sourceCode; > contextClass: Object; > openWithSpec. > > <Screen Shot 2015-06-17 at 18.33.27.png> > > Which is also not nice. In my opinion, there should be a styler that just colors the code following the syntax, without checking if the variables or classes are present in the system. It would be an environment-independent styler. > > What do you recommend to implement this? I guess it should be easy to subclass SHTextStylerST80 and override some methods to do not check anything in the environment. > > What's your opinion? > Right now we have the problem that we have 3 Stylers… (for the old text model one based on Shout, one AST, and one for TxText based on the AST. Ah, and Rubric subclasses the shout one, too. Which means 4. One question is: could a styler fall back onto a being environment independent as soon as the environment is not set? Marcus |
2015-06-22 9:11 GMT+02:00 Marcus Denker <[hidden email]>:
Yes. With a bit of ternary logic which says that symbols are in three states: defined, undefined and unknown. First two require a context; third one applies if you don't have a context. Thierry |
After debugging a bit and discovering the mess around... I think the best decision is to first migrate the DiffMorph to the new text widget, and then see... Martín On Mon, Jun 22, 2015 at 9:53 AM, Thierry Goubier <[hidden email]> wrote:
|
My 2 cents:
we need a diff model. Because for now there is TextDiffBuilder which “diffs” text by lines i.e. bad granularity, and there is a DiffMorph that produces nice diffs but it’s hard to reuse it in other contexts. Uko
|
On Mon, Jun 22, 2015 at 3:30 PM, Yuriy Tymchuk <[hidden email]> wrote:
+1
|
Free forum by Nabble | Edit this page |