Evidenziazione del codice con virgolette sfuggite

L’evidenziazione del codice sembra ignorare le virgolette sfuggite (sia singole che doppie). Ciò significa che se una stringa all’interno di una sezione di codice contiene virgolette sfuggite, parti della stringa vengono evidenziate come codice normale. In questo forum l’evidenziazione del codice sembra essere disabilitata, quindi includo il link al post specifico del forum in cui l’ho notato per la prima volta.


Link al mio post del forum con screenshot: https://unofficialnextion.com/t/set-vale-on-page2/1679/3

Ulteriori dettagli:

  • Detto forum esegue Discourse v2.9.0.beta9
  • L’evidenziazione del codice è abilitata per bash, cs, cpp, xml, ini, json, makefile, markdown, python, c, c-like. L’impostazione predefinita è cpp. Reimpostare queste impostazioni di evidenziazione della lingua predefinite non risolve il problema.
  • Il problema è presente anche in modalità provvisoria
  • Il problema è presente anche quando si sfuggono le virgolette singole in una stringa racchiusa tra virgolette singole (sfuggire una virgoletta singola in una stringa racchiusa tra virgolette doppie e viceversa funziona correttamente).

Cordiali saluti,
Max

Questa è la libreria highlightjs, quindi qualsiasi bug sarebbe a monte.

Sembra anche che questo funzioni in modalità cpp?

const char* NXT_CMD_END = "\xff\xff\xff";
Serial.print("page2.t0.txt=\"Any text\"");
Serial.print(NXT_CMD_END);

Puoi impostare una lingua esplicita utilizzando la funzionalità “info string” in un blocco di codice:

```cpp
il tuo codice qui
```

creerà un blocco di codice in stile cpp.

3 Mi Piace

Grazie per la rapida risposta e le informazioni!

In effetti, l’evidenziazione del cpp funziona se impostata esplicitamente. Tuttavia, approfondendo ulteriormente, ho riscontrato un altro… comportamento inaspettato.
Ho rimosso tutte le lingue dalla lista lingue evidenziate tranne cpp e ho ripristinato la lingua predefinita su auto. Il risultato è stato comunque un’evidenziazione errata. Aprendo l’Inspector in Firefox è emerso che il codice viene apparentemente riconosciuto come vbnet, una lingua che non è mai stata nell’elenco delle lingue evidenziate (né quella predefinita né quelle personalizzate che ho provato per questo problema)? Dovrebbe succedere?

Cordiali saluti,
Max

Hai rigenerato il post contenente il blocco di codice dopo aver modificato le impostazioni?

1 Mi Piace

Ho ricaricato la pagina. Mentre il post del forum stesso non è mai cambiato - anche riavviando Firefox o ricaricando la pagina con CTRL+F5 - ho notato che l’anteprima per la modifica del post utilizza le impostazioni modificate al ricaricamento della pagina.

Quindi, con cpp come unica lingua nell’elenco (per semplificare le cose), se imposto la lingua predefinita su cpp, l’evidenziazione del codice nell’anteprima di modifica del post è corretta. Se imposto la lingua predefinita su auto e ricarico di nuovo la pagina, non è più corretta come descritto nel post precedente.

Cordiali saluti,
Max

Riavviare il browser non servirà. In Discourse i post vengono “cotti” (convertiti da markdown a HTML) sul server una sola volta, e l’HTML risultante viene memorizzato nella cache nel database. Per aggiornare un post “cotto”, è necessario “ri-cuocerlo”. Questo può essere fatto da un utente staff usando il menu della chiave inglese su un post o dall’autore del post modificando il contenuto del post stesso.

1 Mi Piace

Grazie. La rielaborazione produce lo stesso comportamento dell’anteprima della modifica. auto seleziona una lingua (vbnet) che non è nell’elenco delle lingue da evidenziare. Impostare esplicitamente la lingua predefinita su cpp (sia nelle impostazioni del forum che come hai mostrato qui) funziona come segnalato in precedenza.
Quindi la domanda rimane: auto dovrebbe usare lingue diverse da quelle nell’elenco?

Cordiali saluti,
Max