If you look in Padre::Document, there's even a half-finished text_replace that I meant to go back and finish which almost does the job for you. I think I skipped it in the end because it would need to run Algorithm::Diff in the foreground, and I decided it was better that plugins product the delta themselves in the background directly first via tasks.
But you needn't worry about that, just do something like... $document->text_delta( Padre::Delta->from_scalar( $document->text_get => \$new_content ) ); On 16 November 2011 01:16, arjan <ar...@unitedknowledge.nl> wrote: > Thanx Adam, that seems a good solution. I'm going to give it a try to > make Padre-Plugin-WebGUI use Padre::Delta. > > By the way: WebGUI is a perl-based CMS, I don't need to upgrade WebGUI > itself, just the plugin. The plugin talks to the cms using json. This > way I can use Padre to edit all of my css/templates etc. > > > On 11/15/2011 03:10 PM, Adam Kennedy wrote: >> text_set assumes a complete replacement of the entire document with >> something different, in which case moving to cursor position 1 is >> appropriate. >> >> If you are replacing with something identical or close to the current >> content, you should instead create a Padre::Delta object with >> Padre::Delta->from_scalars and then apply the delta to the current >> document. Delta objects are applied in a way that retains the correct >> location of the cursor and scroll in the kinds of scenarios where a >> document is being modified rather than replaced wholesale. >> >> Padre::Delta is new in 0.92, so it would mean WebGUI needs to upgrade >> to support 0.92. >> >> Adam >> >> On 15 November 2011 23:52, arjan<ar...@unitedknowledge.nl> wrote: >>> Hi Zeno, >>> >>> Oh, don't excuse yourself, I'm very happy you asked. >>> >>> - Yes it scrolls completely to the top. The cursor goes to position 1. >>> - No this happens not all the time, and now that you asked me this, I >>> tried several things and found when it does: It always does when I save >>> using Padre-Plugin-WebGUI. >>> >>> And the problem is probably here: >>> - on save the server returns the contents of the file. >>> - the plugin processes this response and calls sub render there: >>> >>> $self->text_set($text); >>> $self->{original_content} = $self->text_get; >>> >>> I suppose this is where the cursor returns to the first position, >>> because the content of the editor is replaced with the content returned >>> by the server. >>> >>> Hmm. What would be the best way to solve this? On the one hand, one >>> could simply not process the response. On the other hand, this does make >>> it clear what is actually stored. >>> >>> I cc'ed Patrick, who wrote the Plugin. >>> >>> Kind regards, >>> Arjan. >>> >>> On 11/15/2011 01:14 PM, Zeno Gantner wrote: >>>> Hi, >>>> >>>>>> On Tue, Nov 15, 2011 at 12:10 PM, arjan<ar...@unitedknowledge.nl> >>>>>> wrote: >>>>>>> Is there a similar trick to prevent Padre from scrolling to the top of >>>>>>> the page on save? >>>> I do not have this issue, so please excuse my questions: >>>> >>>> Does it scroll completely to the top? >>>> Does it happen all of the time? >>>> Does it happen with all file types? >>>> >>>> @list: >>>> Does anybody know a possible cause of this and how it can be switched off? >>>> >>>> Best regards, >>>> Zeno >>>> >>> >>> -- >>> NIEUW: http://www.makeso.com >>> >>> Hoe verslaan de media het nieuws? Wie haalt het nieuws en hoe werkt dat >>> uit? Bekijk het in The Makeso Media Calculator: www.makeso.com >>> >>> Recent: http://www.lomcongres.nl/ >>> Congres- en nieuwsbriefportaal met relatiebeheer systeem voor het Landelijk >>> Overleg Milieuhandhaving >>> >>> Setting Standards, a Delft University of Technology and United Knowledge >>> simulation exercise on strategy and cooperation in standardization, >>> http://www.setting-standards.com >>> >>> United Knowledge, internet voor de publieke sector >>> Keizersgracht 74 >>> 1015 CT Amsterdam >>> T +31 (0)20 52 18 300 >>> F +31 (0)20 52 18 301 >>> bur...@unitedknowledge.nl >>> http://www.unitedknowledge.nl >>> >>> M +31 (0)6 2427 1444 >>> E ar...@unitedknowledge.nl >>> >>> Bezoek onze site op: >>> http://www.unitedknowledge.nl >>> >>> Of bekijk een van onze projecten: >>> http://www.handhavingsportaal.nl/ >>> http://www.setting-standards.com/ >>> http://www.lomcongres.nl/ >>> http://www.clubvanmaarssen.org/ >>> >>> _______________________________________________ >>> Padre-dev mailing list >>> Padre-dev@perlide.org >>> http://mail.perlide.org/mailman/listinfo/padre-dev >>> >> _______________________________________________ >> Padre-dev mailing list >> Padre-dev@perlide.org >> http://mail.perlide.org/mailman/listinfo/padre-dev > > > -- > NIEUW: http://www.makeso.com > > Hoe verslaan de media het nieuws? Wie haalt het nieuws en hoe werkt dat uit? > Bekijk het in The Makeso Media Calculator: www.makeso.com > > Recent: http://www.lomcongres.nl/ > Congres- en nieuwsbriefportaal met relatiebeheer systeem voor het Landelijk > Overleg Milieuhandhaving > > Setting Standards, a Delft University of Technology and United Knowledge > simulation exercise on strategy and cooperation in standardization, > http://www.setting-standards.com > > United Knowledge, internet voor de publieke sector > Keizersgracht 74 > 1015 CT Amsterdam > T +31 (0)20 52 18 300 > F +31 (0)20 52 18 301 > bur...@unitedknowledge.nl > http://www.unitedknowledge.nl > > M +31 (0)6 2427 1444 > E ar...@unitedknowledge.nl > > Bezoek onze site op: > http://www.unitedknowledge.nl > > Of bekijk een van onze projecten: > http://www.handhavingsportaal.nl/ > http://www.setting-standards.com/ > http://www.lomcongres.nl/ > http://www.clubvanmaarssen.org/ > > _______________________________________________ > Padre-dev mailing list > Padre-dev@perlide.org > http://mail.perlide.org/mailman/listinfo/padre-dev > _______________________________________________ Padre-dev mailing list Padre-dev@perlide.org http://mail.perlide.org/mailman/listinfo/padre-dev