Tim

Oh yes. There are still part of Pharo that we did not clean.

Stef

On Fri, Sep 1, 2017 at 1:39 PM, Tim Mackinnon <tim@testit.works> wrote:
> Thanks Thierry - this is proving an interesting problem domain ...
>
> I too am using #bestNodeFor: although I don't find it always gives the best
> node (it does if you are clearly in the target range, but if you are on the
> outer boundary like the next position after a selector or next to a "." or
> ";" it favours the parent and not the closest node. So in usage I find I
> need to tweak it a bit.
>
> I'll look at smacc though - also there is that experimental setting to allow
> parse errors, I don't know if it helps in any way.
>
> All this said, I think I have a workable suggestion that is not much code
> that might be open to scrutiny from those wiser than me.
>
> Looking at the keyboard handling in the system - it's quite sprawling and
> tricky to follow. I think there is lots of room for refactoring.
>
> I'm also not sure if I like the pragma usage either - I find it quite
> difficult to follow what's calling what.
>
> Tim
>
> Sent from my iPhone
>
> On 1 Sep 2017, at 09:18, Thierry Goubier <thierry.goub...@gmail.com> wrote:
>
> Hi Tim,
>
> The RB ast has a specific method for finding the right node: in AltBrowser,
> I use ast bestNodeFor: aTarget selectionInterval.
>
> For the second case (parse what is selected), you may want to look into
> SmaCC: it has specific entry points (used for refactoring) to try all
> possible starts in a parser for a given piece of text and returning all the
> possible correct asts. As a hand-writen parser, the RBParser can't do that
> unless you add the necessary entry points by hand and hack around the error
> handling, because most of the parse attempts end on an error (as they
> should).
>
> Regards,
>
> Thierry
>
> 2017-09-01 8:50 GMT+02:00 Tim Mackinnon <tim@testit.works>:
>>
>> Marcus - I'd be interested in how you thought to solve this.
>>
>> My solution seems to work - but it's not the most elegant. Retrying lots
>> of different ways like I show, smacks a bit of desperation (this said, it is
>> quite compact).
>>
>> Apart from that - I was actually interested in thoughts on the parse
>> method - the onError naming is a bit misleading compared to other methods in
>> the image. I wonder if it should be called something like "onErrorMerge:"
>> to signal that it's going to reuse the results?
>>
>> Stef - with regards to broken source, my proposed solution reuses what is
>> already there - thus if you highlight specific code, it reverts to the
>> original strategy and tries to compile just that code. This bugs me however
>> - so if you highlight nothing, it tries to compile the source multiple ways,
>> I drop down to chopping the source up to where your cursor is - which seems
>> like a decent cheap strategy.
>>
>> I don't know if our parser is able to recover from simple errors and just
>> have error nodes in the ast, and whether the #bestNodeFor method then
>> ignored error nodes... this is what I think Dolphin used to do.
>>
>> Tim
>>
>> Sent from my iPhone
>>
>> > On 31 Aug 2017, at 19:11, Marcus Denker <marcus.den...@inria.fr> wrote:
>> >
>> >
>> >> On 31 Aug 2017, at 19:07, Stephane Ducasse <stepharo.s...@gmail.com>
>> >> wrote:
>> >>
>> >> On Wed, Aug 30, 2017 at 9:50 PM, Tim Mackinnon <tim@testit.works>
>> >> wrote:
>> >>> I’m looking for some feedback on the usage of
>> >>> RBParser>>#parseMethod:onError:.
>> >>>
>> >>> I am looking at ways of improving the way we edit code - and making
>> >>> things work (as least for me - but maybe for everyone) a bit more like
>> >>> IntelliJ where they have some great code operations and very good 
>> >>> keyboard
>> >>> support. We are certainly close, but at times feel a bit clumsy - which 
>> >>> is a
>> >>> shame as we have far better infrastructure to support equivalent 
>> >>> features.
>> >>> So I thought I would have a go.
>> >>
>> >> Excellent!!!
>> >>
>> >>
>> >>> Anyway - step one (which I think I’ve come close on), was to teach
>> >>> senders/implementors to look at the AST so you don’t have to highlight
>> >>> exactly what you want to search on - instead it can infer from your 
>> >>> cursor…
>> >>> however my next step was to improve how we can select code to ease
>> >>> refactoring, bracketing etc…
>> >>
>> >> Yes but we have to handle broken code then.
>> >> Did you check how smart suggestions did it for code that compiled?
>> >>
>> >
>> > I looked some weeks ago and made some notes what to do… but I fear this
>> > has to wait for next week,
>> > there is no way that I can do anything till ESUG…
>> >
>> >    Marcus
>>
>>
>

Reply via email to