L'editor Rich Text negli argomenti interrompe i caratteri di spaziatura in vari modi

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 runc senza 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`

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!

C’è un bug report dedicato qui:

1 Mi Piace

Grazie! Pensavo di aver passato abbastanza tempo a cercare, ma non l’ho trovato.

Ciao @rimelek grazie per il report dettagliato, lo apprezziamo.

Lo abbiamo aggiunto al nostro backlog (e parte di esso sono argomenti su cui abbiamo già iniziato a lavorare) ma potrebbero volerci alcune settimane per arrivarci.

3 Mi Piace

Abbiamo apportato alcuni miglioramenti da questo report, principalmente l’azione della barra degli strumenti è più consapevole del contesto tra inline/block e il supporto per andare avanti e indietro tra più paragrafi e un singolo blocco di codice.

Penso che il problema rimanente sia che se incolli testo normale all’interno del composer e non c’è identificazione che si tratti di testo preformattato, non possiamo creare automaticamente un blocco di codice – ad esempio, copiando dal mio terminale, aggiunge solo un clipboard plain/text, e avremmo bisogno di un text/html con un elemento pre per creare automaticamente un blocco di codice attualmente.

Puoi verificare se le cose sono migliorate da allora, per favore? E facci sapere se c’è qualcosa che ritieni non si comporti ancora correttamente.

Grazie!

2 Mi Piace