Ciao a tutti!
In questo argomento, farò riferimento ad altri argomenti, ma credo che descriverò un problema più grande di quanto menzionato in altri report.
Il mio ambiente di test
- Sistema operativo: MacOS 15.6.1
- Browser: Google Chrome 139.0.7258.140 (Build ufficiale) (arm64)
L’osservazione originale
Ho notato che l’editor Rich Text nel compositore rompe frequentemente i blocchi di codice. Gli utenti hanno iniziato a pubblicare il loro codice e i log su una singola riga, e inizialmente ho pensato che avessero commesso un errore durante la copia del contenuto nel compositore. Non c’erano caratteri di spazio bianco tra le righe pubblicate, non solo le interruzioni di riga.
A volte gli utenti pubblicavano più codici su riga singola, perdendo l’indentazione in YAML. A volte era un codice multilinea evidenziato come riga singola, a volte era una riga singola in un blocco di codice. Accadeva troppo frequentemente, quindi ho testato la modalità Rich Text ieri, ma ho aspettato prima di segnalare. Oggi non sono riuscito a riprodurre quel problema, ma ho trovato un altro modo nell’editor Rich Text per rompere le interruzioni di riga nel codice.
Non ero sicuro che fosse un bug, quindi ho discusso il problema con i nostri moderatori, aspettando la conferma che il bug fosse stato risolto. Poi si è scoperto che non abbiamo nemmeno trovato lo stesso comportamento, ma tutti i problemi erano correlati agli spazi bianchi. Tranne che non sono riuscito a riprodurre il problema menzionato da un altro moderatore, ma mi sono reso conto che era perché copiava il testo da un editor di codice o da un terminale, e io lo copiavo dal mio precedente blocco di codice nel forum, quindi il problema degli spazi bianchi si presentava diversamente.
Diversi modi per rompere gli spazi bianchi nei blocchi di codice
Primo modo
- Copia un output da un terminale
- Incolla l’output nel compositore in modalità Rich Text come questo (parte dell’output di
runcsenza argomenti)
COMANDI:
checkpoint checkpoint un container in esecuzione
create crea un container
delete elimina qualsiasi risorsa detenuta dal container spesso utilizzata con detached
- Vedrai un output multilinea, ma l’indentazione viene rimossa
- Ora ti rendi conto che vuoi un blocco di codice e lo crei selezionando il testo e facendo clic sul pulsante Codice.
- Ora il codice è un po’ strano, perché sembra codice, ma non come un blocco di codice. Torna a markdown per vedere perché e nota questo:
`COMANDI:`
`checkpoint checkpoint un container in esecuzione`
`create crea un container`
`delete elimina qualsiasi risorsa detenuta dal container spesso utilizzata con container detached`
- Come puoi vedere sopra, ogni riga del testo è diventata un codice su riga singola.
(Grazie @per1234 per aver collegato il report del bug correlato qui sotto Rich Text editor in topics breaks white-space characters in multiple ways - #2 by per1234)
Copia un codice da un altro argomento o da un altro post nello stesso argomento
Argomento esistente che ho trovato: `white-space` CSS property of clipboard data not respected when pasting in rich text editor
Naturalmente, questo non è il modo corretto di copiare in Discourse, poiché hai un pulsante “Cita” per i testi selezionati che di solito funziona anche con parti di un blocco di codice, e hai anche un pulsante di copia nell’angolo di ogni blocco di codice, ma è così che ho notato il problema, e il pulsante di copia non ha funzionato nemmeno.
- Copia un codice multilinea da una pagina HTML
- Incollalo nel compositore in modalità Rich Text
- Nota che le interruzioni di riga sono scomparse
- A questo punto, potresti pensare che sia solo in HTML, quindi trasformalo in codice
- Le interruzioni di riga non sono tornate
Utilizza il pulsante Copia nell’angolo in alto a destra di un blocco di codice in un altro post
- Sposta il puntatore del mouse sopra un blocco di codice esistente
- Nota che è apparso il piccolo pulsante “Copia” nell’angolo in alto a destra
- Fai clic su quel pulsante per copiare il codice
- Incollalo nel compositore in modalità Rich Text
- Le interruzioni di riga vengono mantenute, ma l’indentazione è scomparsa allo stesso modo di quando si copia direttamente dall’HTML.
- Trasformalo in un blocco di codice e ottieni più codici su riga singola senza indentazione
Probabilmente risolto il problema che si verificava quando si tornava a MarkDown
- Scrivi un blocco di codice nell’editor Rich Text
- Vedi un blocco di codice multilinea perfettamente funzionante
- Torna a MarkDown
- Vedi una singola riga invece del blocco di codice
- Nota che non è più un blocco di codice, ma se il testo è lungo, potresti non accorgerti che anche l’indentazione è scomparsa
- Trasformalo in un blocco di codice
- Pubblicalo e ottieni un blocco di codice che contiene una singola riga in cui le interruzioni di riga sono state completamente rimosse, nemmeno uno spazio è stato mantenuto
Di nuovo, questo è quello che non riesco a riprodurre oggi, e non ho cercato le note di rilascio per vedere se è stato risolto, ma non sono riuscito nemmeno a trovare questo problema segnalato in altri argomenti.
Conclusione
Quindi sembra che la modalità Rich Text abbia problemi con i blocchi di codice in diversi modi. Rende la moderazione più difficile poiché spesso presumiamo che un utente non abbia formattato correttamente il proprio post, quindi forniamo la nostra guida alla formattazione, che non funzionerebbe in modalità Rich Text, ma questo non è il problema poiché le guide possono essere modificate. Tuttavia, gli utenti provano effettivamente a formattare il proprio post e falliscono a causa dell’editor Rich Text.
Poiché il problema originale che ho notato è quello che probabilmente è stato risolto ormai, mi sembra che alcuni utenti abbiano iniziato con l’editor Rich Text, non gli sia piaciuto, siano passati a Markdown, si siano resi conto di aver rotto i blocchi di codice, abbiano provato a correggerli, ma non ci siano riusciti e non abbiano incollato tutto di nuovo.
A questo punto, menzionerei anche questo argomento sulla disabilitazione completa dell’editor Rich Text: How can i set disable Markdown & Default to Rich Text
Lo collego perché questo è stato uno dei primi argomenti che ho trovato mentre cercavo segnalazioni esistenti ieri, e ho appena ripristinato il default a MarkDown. Mi fermo qui per evitare che qualcuno reagisca a questa parte, e probabilmente aggiungerò alcune note nell’altro argomento.
PS: Ho usato la funzione di correzione bozze su questo post. È fantastico!