Alexey-T / CudaText

Cross-platform text editor, written in Free Pascal
Mozilla Public License 2.0
2.39k stars 166 forks source link

`(without undo) sort` command isn't reliable when word wrap is enabled #5530

Closed pintassilgo closed 1 month ago

pintassilgo commented 1 month ago
democontent #XEMTU3 #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/X4Tcser.npg", uFutar thpts://vt.nusic.rb/lhs/etts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/uUBKF9W.npg", VT âCamar thpts://tserma3.acamar.ogv.rb/vt1/aminefts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/uUBKF9W.npg", VT âCamar 2 thpts://tserma3.acamar.ogv.rb/vt2/aminefts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/oVow6s7.npg", aCanl uRarl thpts://06d7a2a1741bf.tsermaolkc.ent/rcru/msli:acanrlrula.msli/lpyailts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/i0qwvCy.npg", eTrrvavia thpt://vepp.mm.oul.ocm.rb:9153/abdn_ilev/etrrvavia/lpyailts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/HSojOD1.npg", NCN rBsali thpts://ived0o1.osluvt.ocm.rb/ncbnarisl/ncbnarisl/lpyailts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/HSojOD1.npg", NCN rBsali thpts://r-rb.xnvt.ocm.rb/NCN_RB/niedx.3m8u #XEITFN:0 vtg-di="" vtg-olog="", VT oNov eTpmo thpt://tserma.onovetpmo.ocm:9153/vt/msli:vtonovetpmo.msli/aminefts.3m8u #XEITFN:0 vtg-di="" vtg-olog="", VT aMx thpts://951fbc6ed38b9.tsermaolkc.ent:4134/vtamx/_edifsnt_/vtamx/lpyailts.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/ukmh8gp.npg", iNkc lCsáisoc thpt://tstihcre-pi4v.lptuo.vt/1v/tstihc/meebd/lhs/hcnaenl/f5215171491c0800708aea36/amtsre.3m8u?edivecyTep=assmnug-vtlpsu&edivecaMek=assmnug&edivecoMedl=assmnug&ediveceVsroin=nunkwon&paVpreisno=nunkwon&edivecNDT=%B7ATGRTEPOT%D7 #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/sN75iND.npg", iNkc rJ. lCbu thpt://tstihcre-pi4v.lptuo.vt/1v/tstihc/meebd/lhs/hcnaenl/f52141067ba36c007091bffa/amtsre.3m8u?edivecyTep=assmnug-vtlpsu&edivecaMek=assmnug&edivecoMedl=assmnug&ediveceVsroin=nunkwon&paVpreisno=nunkwon&edivecNDT=%B7ATGRTEPOT%D7 #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/HpQgdEg.npg", iNkc eTne thpt://tstihcre-pi4v.lptuo.vt/1v/tstihc/meebd/lhs/hcnaenl/065faffb7012880070dc053e/amtsre.3m8u?edivecyTep=assmnug-vtlpsu&edivecaMek=assmnug&edivecoMedl=assmnug&ediveceVsroin=nunkwon&paVpreisno=nunkwon&edivecaLt=0&edivecoLn=0&edivecNDT=%B7ATGRTEPOT%D7 #XEITFN:0 vtg-olog="", lGboo SM thpts://d3030a24634740af.emidpacaakeg.as-aets-1.mazanowas.ocm/uot/1v/5c5ed5fe5da4e4759add4496fb880937/niedx.3m8u #XEITFN:0 vtg-olog="", lGboo GM thpts://rblfu.awkl-vt.ocm/06101/niedx.3m8u #XEITFN:0 vtg-olog="", lGboo RP thpts://rblfu.awkl-vt.ocm/06000/niedx.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/m4ozcSz.npg", BST thpts://a5b280e3f9630.tsermaolkc.ent/ebtmv/ebtmv.dsp/lpyailts.3m8u #XEITFN:0 vtg-olog="", oNsso uFetobl thpts://kamaia.tivt.ocm.rb/ONSSO_UFETOBL_ILENRA/niedx.3m8u #XEITFN:0 vtg-olog="", oNsso uFetobl 2 thpts://kamaia.tivt.ocm.rb/ONSSO_UFETOBL/niedx.3m8u #XEITFN:0 vtg-olog="", oNsso uFetobl 3 thpts://kamaia.tivt.ocm.rb/ONSSO_UFETOBL_2/niedx.3m8u #XEITFN:0 vtg-olog="", oNsso uFetobl 4 thpts://kamaia.tivt.ocm.rb/ONSSO_UFETOBL_3/niedx.3m8u #XEITFN:0 vtg-olog="", eRocdr eNsw thpts://c54f2a2c15a22.tsermaolkc.ent/0861/0861/lpyailts.3m8u #XEITFN:0 vtg-olog="", eRocdr eNsw thpts://meebfdilx.noilen/acanl/ilev.hpp?hc=41 #XEITFN:0 vtg-olog="", lGboo JR thpts://rblfu.awkl-vt.ocm/7565/lpyailts.3m8u #XEITFN:0 vtg-olog="", lGboo PS thpt://lh1s.usa.vt/ilev/lgbosohpd/s.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/m4ozcSz.npg", BST thpts://2dxdkmgt9ccq7f.lcuofdortn.ent/uot/1v/7a2cdcc7dc4824a04a695b4dfc9dea97/lhOstuupt.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/m4ozcSz.npg", BST thpts://isumclsa2t.bsvtdioeoslnnie.ocm/1v/amtsre/12c5d08a6060ef2d39277010860146006aace7a1/BST-iLev-hCnaenl/7a2cdcc7dc4824a04a695b4dfc9dea97/lhOstuupt.3m8u #XEITFN:0 vtg-olog="", pSroVT 3 DS thpts://muebtdv.hspo/41UFT-PSROVT-3-RBesm-orbuo-acar/lpyailts.3m8u #XEITFN:0 vtg-olog="", pSroVT 2 DS thpts://muebtdv.hspo/41UFT-PSROVT-2-RBesm-orbuo-acar/lpyailts.3m8u #XEITFN:0 vtg-olog="", rPmeeier 7 thpts://rblfu.awkl-vt.ocm/9541/niedx.3m8u #XEITFN:0 vtg-olog="", rPmeeier 6 thpts://rblfu.awkl-vt.ocm/9551/niedx.3m8u #XEITFN:0 vtg-olog="", rPmeeier 4 thpts://rblfu.awkl-vt.ocm/9581/niedx.3m8u #XEITFN:0 vtg-olog="", rPmeeier 3 thpts://rblfu.awkl-vt.ocm/9502/niedx.3m8u #XEITFN:0 vtg-olog="", rPmeeier 2 thpts://rblfu.awkl-vt.ocm/9512/niedx.3m8u #XEITFN:0 vtg-olog="",iNkcledooen thpts://1d9rz4wr3angol.lcuofdortn.ent/ilevtsro1e20/tserma/lhs/824/824.3m8u #XEITFN:0 vtg-olog="", aNGtoe - aNitnola eGgoarhpci thpts://icirno-jau.tivt.ocm.rb/ANT_EGO/niedx.3m8u #XEITFN:0 vtg-olog="", SENP thpts://rblfu.awkl-vt.ocm/9521/niedx.3m8u #XEITFN:0 vtg-olog="", SENP2 thpts://icirno-jau.tivt.ocm.rb/SENP_NIETNRCAOIANL/niedx.3m8u #XEITFN:0 vtg-olog="", SENP thpts://icirno-jau.tivt.ocm.rb/SENP_RBSALI/niedx.3m8u #XEITFN:0 vtg-olog="", SENP3 thpts://icirno-jau.tivt.ocm.rb/SENP_AMSI/niedx.3m8u #XEITFN:0 vtg-olog="", SENP4 thpts://icirno-jau.tivt.ocm.rb/SENP_4/niedx.3m8u #XEITFN:0 vtg-olog="", SENP5 thpts://icirno-jau.tivt.ocm.rb/OFX_PSROST_2/niedx.3m8u #XEITFN:0 vtg-olog="", SENP6 thpts://icirno-jau.tivt.ocm.rb/SENP_XERTA/niedx.3m8u #XEITFN:0 vtg-olog="", SENP thpts://muebtdv.hspo/41UFT-SENPesm-orbuo-acar/niedx.3m8u #XEITFN:0 vtg-olog="", VT iCaded eNt thpts://951fbc6ed38b9.tsermaolkc.ent:4134/vticaded/_edifsnt_/vticaded/lpyailts.3m8u #XEITFN:0 vtg-olog="", VTdioeeNsw thpts://ived0o1.oligacohts.ocm.rb/vtdioeensw/vtdioeensw/lpyailts.3m8u #XEITFN:0 vtg-olog="", eRed iMans thpt://618.025.78.918:5855/ilev/2161/214365/011.3m8u #XEITFN:0 vtg-olog="thpts://i.miugr.ocm/X4Tcser.npg", uFutar thpt://618.025.78.918:5855/ilev/2161/214365/76.3m8u #XEITFN:0 vtg-olog="", lGboo JR thpt://618.025.78.918:5855/ilev/2161/214365/07.3m8u #XEITFN:0 vtg-olog="", VT lAetoras thpt://618.025.78.918:5855/ilev/2161/214365/014.3m8u #XEITFN:0 vtg-olog="", iVav
  1. Open a new tab.
  2. Confirm word-wrap is enabled in View > Toggle word-wrap.
  3. Copy all the text from democontent above and paste in this new tab.
  4. Open Command palette, type "sort" and press Enter to run (without undo) sort asc..

Look at the results. There are many issues, like multiple empty lines (original content has no empty lines), also some incomplete lines.

For instance, result code has a line

thpt://618.025.78.918:5855/ilev/21

but if you check original content, this line doesn't exist. There are some (four) lines starting with this string, but all of them have more chars to the right:

thpt://618.025.78.918:5855/ilev/2161/214365/011.3m8u
thpt://618.025.78.918:5855/ilev/2161/214365/014.3m8u
thpt://618.025.78.918:5855/ilev/2161/214365/07.3m8u
thpt://618.025.78.918:5855/ilev/2161/214365/76.3m8u

The other similar command, plugin: Sort: Sort, asc., produces the expected result. But after reading Cuda wiki I'd like to use (without undo) Sort... because it's "optimized for speed and memory".

Comparison... With plugin Sort, correct: image

With "Pascal sorting", wrong: image

Alexey-T commented 1 month ago

bug. Seems WrapInfo structure (important for wrap=On) had wrong update after this cmd. to force update it by hands: add empty line on top.

Alexey-T commented 1 month ago

Fix made, beta updated.

Alexey-T commented 1 month ago

To make sure lines are not broken in storage: in Console:

ed.get_text_line(20)

(20 - is line index). do it for 'bad' line and see line is OK in storage.

pintassilgo commented 1 month ago

Looks fixed, thanks!

pintassilgo commented 1 month ago

Just a minor issue about this (without undo) sort command:

This content:

teste3
teste2
teste

After calling the command is creating an extra empty line at the end.

Before: image

After: image

It shouldn't create nonexistent lines...

Alexey-T commented 1 month ago

Fixed too.