pbor I'm trying to improve auto indent
paolo COOL
pbor (avoid trailing whitespaces)
pbor I have a doubt:
pbor should we remove only the whitlines that were autoinserted?
pbor or also those iserted by the user?
pbor that is
pbor if I type \t\t\n
pbor shoud I get \t\t\n\t\t or \n\t\t?
pbor (I have a patch working which does the second, to do the first we need a way to track if a line was typed or autoinserted
paolo hmmm... it is not clear to me what you are achieving with the second
paolo hmm... ok
paolo we need only to remove the one that was autoinserted
paolo and while you are at hit we should probably need a way to temporanely disable autoindentation
paolo for example using Ctrl + Enter
pbor but I how do I tell if the prev line was autoinserted or typed by the user?
paolo or bette Shift + Enter
paolo yep, I see
paolo actually I'm not worried by the empty lines with trailing spaces
pbor (well, I have a sort of hack in mind)
pbor but it's suboptimal
paolo I''m more worried by the spaces that seem to be added at the end of the lines
pbor the Shift+Enter thingie it's easy, probably worth a separate patch though
paolo yep
pbor I think that the trailing spaces at the end of lines happens because you have lines with just \t\t
pbor and the next time you change the line typing from the beginning the \t\t remains at the ned
pbor end*
paolo yep
paolo what about using tags to mark the chars added by autoinsertion
paolo ?
pbor so avoiding lines made of just \t should fix it. Other than that there is little you can do anyway
pbor tags... that's an option looked like overkill though
paolo so if you have \t\t (added by autoinsertion) and press Enter
paolo you should remove \t\t add \n at the beginning
paolo you should add \n at the beginning (I mean)
paolo right?
pbor yup
paolo why do you think tags are overkilling?
pbor you have to keep em up to date
pbor removing the tag each time you go to a line and type something
pbor I was thinking of just caching the line number of the last autoindented line
paolo and also if you have "pippo|\t\t" where | is the cursor and \t\t where added by autoinsertion then you don't have to add \t\t
paolo when Enter is pressed
paolo you don't need to keep tags up to date
paolo they are already taken up to date by gtktextview
paolo wait... another solution could be
paolo if you add a \n, before adding \t\t goes to the end of the line and check if you still need to add new \t\t
paolo in this way if you already have empty chars you don't need to add more
paolo do you follow me?
pbor nope :/
* paolo swap to italians
pbor giusto :)
paolo supponi di avere "\t\tciao|\t\t"
pbor (sorry guys)
paolo dove | è il cursore
pbor ok
paolo premi \n
paolo a questo punto auto indentation aggiunge \n\t\t e tu ti trovi con
paolo "\t\tciao\n\t\t|\t\t", ok?
pbor ok
paolo io propongo di
paolo aggiungere solo "\n" 
pbor ok
paolo controllare dove si trova il primo carattere non bianco
pbor per ora come dicevo io mi stavo limitando a evitare le linee fatte solo di \t
paolo e aggiungere "\t\t" solo se necessario per l'indentazione
pbor che dovrebbe evitare di ritrovarso con linee \t\tpippo\t\t in the first place
paolo yep, ma la mia soluzione ti offre la stessa cosa
paolo senza dover fare distinzione su chi ha aggiunto cosa
pbor ?
paolo hmm.. forse ho una soluzione ancora più semplice
pbor non vedo come la tua soluzione copra il caso normale...
pbor per caso normale intendo:
paolo se premo \n e non sono alla fine della linea, tolgo tutti i caratteri bianchi che seguono per un massimo uguale all'indetazione
paolo e poi aggiungo l'indentazione dopo il \n
paolo in questo modo si evita il problema "pippo\t\t" perche nel momento che viene premuto invio, \t\t vengono rimossi
paolo (solo se sono dopo al cursore)
pbor paolo: il caso "pippo|\t\t e premo enter" secondo me non e' comune
paolo questo evita anche molte delle linee vuote con \t\t
pbor il caso comune e': \t\tpippo e premo enter due volte
paolo hmmm... è più comune di cosa sembra... ed è la cosa che personalmente mi infastidisce di più
* paolo sa che a pbor non piacione le linee vuote non vuote :)
pbor il che mi deve dare \t\tpippo\n\n\t\t invece di \t\tpippo\n\tt\n\tt
pbor :)
paolo in realtà penso che se uno abilità l'autoindentation non è molto preoccupato di aggiungere spazi vuoti
paolo e quindi possiamo sbattercene di modificare il file dietro le quinte
paolo e quindi se abbiamo \t\t e premi \n io direi che possiamo tranquillamente rimuovere i "\t\t" e fare \n\t\t
pbor ok
paolo la stessa cosa per \n in una riga piena
paolo togliamo tutti gli spazi vuoti dopo l'ultimo carattere non bianco e li sostituiamo con \n
pbor ok
pbor ho la patch per il primo caso
paolo se poi la gente protesta (cosa che dubito fortemente) vediamo cosa fare
pbor ora vedo di sistemare
paolo non penso che il secondo sia un grosso problema
paolo anzi direi che è lo stesso caso
pbor secondo me fatto il primo il secondo non si presenta praticamente piu
paolo non sono convinto
pbor e puo darsi che se si presenta fosse voluto dall'utente (ad es una tabella)
paolo supponi di avere \t\tpippo
paolo vai a capo e hai \t\tpippo\n\t\t
paolo poi l'utente muove il cursore da un altra parte 
paolo ritorna alla riga
paolo vuota con il cursore alla colonna 0
paolo per fare indentazione -> \t\t|\t\t
pbor yup ma e' un caso abbastanza raro
paolo ed è il motivo più frequente per cui si verifica il \t\t alla fine
paolo mentre programmi capita spesso di saltare di qua e di la con il cursore
paolo fare cut and paste, etc.
paolo in ogni caso come dicevo entrambi i casi degenerano nello stesso
paolo ossia quando si va a capo bisogna togliere tutti i caratteri biachi prima di \n
pbor ah ok
paolo hmm... mi sono spiegato male
* pbor non voleva essere cosi brutale
paolo beh... se vale il discorso che facevamo prima... ossia con l'autoindentation non c'è garanzia sulla preservazione degli spazi bianchi
paolo tanto vale essere brutali
paolo se uno vuole formattarsi a manina delle tabelle o delle ASCII art non deve usare (e dubito che usi) l'auto indentazione
paolo se vuoi essere meno brutale, l'unica soluzione è usare i tag come dicevo e rimuovere solo i caratteri bianche marcati con il tag autoindentation
paolo cosa che non penso sia troppo onerosa
paolo in quanto questo tag avrebbe solo un nome e nessun attributo associato
* paolo osserva che dopo 4 ore... l'analisi dei badblock è a metà del disco
pbor per onerosa non intendevo performance, intendevo che nel momento in cui l'utente tocca la linea la tag va rimossa etc
pbor anyway... per ora attacco la mia patchettina per le empty lines epoi vado a mangiare :)
pbor poi pensero' a soluzioni piu complete
paolo per aggiungere info
paolo io proprio ora sto combattendo con questo problema in HTML.tags
paolo ti faccio un esempio per spiegare il perchè
paolo io ho:
paolo     <gedit:Tag _name="Cell rowspan">
paolo       <gedit:Begin>ROWSPAN=</gedit:Begin>
paolo     </gedit:Tag>
paolo voglia aggiungere facendo un paste una riga dopo Begin
paolo vado a capo e ho:
paolo     <gedit:Tag _name="Cell rowspan">
paolo       <gedit:Begin>ROWSPAN=</gedit:Begin>
paolo     
paolo     </gedit:Tag>
paolo siccome uso autoindetation la linea bianca inzia con \t\t
paolo vado a prendere la riga da copiare e attaccare
paolo supponiamo siao \t\tpippo
paolo vado con il mouse all'inizio della riga bianca, faccio paste e mi trovo
paolo \t\tpippo\t\t
paolo se poi dopo pippo vado a capo pre inserire una nuova riga mi trovo
paolo \t\t|\t\t e facendo il pasta come prima
paolo \t\tpippo2|\t\t\t\t
paolo ecco come mai si accumulano \t alla fine della riga
pbor ok, hai ragione
pbor cerchero di sistemare anche quel caso
paolo questo è il problema che io vedo normalmente
paolo le righe vuote con \t\t all'inizio non mi danno troppo fastidio, ma concordo con te sul fatto che andrebbero rimosse

