# Evidenziazione del codice in corso quando l'evidenziazione automatica non è abilitata

**URL:** https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486
**Category:** Bug
**Created:** [26 Settembre 2020, 10:21pm UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486 "2020-09-26T22:21:13Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [26 Settembre 2020, 10:21pm UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/1 "2020-09-26T22:21:13Z")

</div>

Nel nostro forum [abbiamo notato di recente](https://intfiction.org/t/i7-highlighting/47218) che il codice viene evidenziato automaticamente, anche se l’opzione `autohighlight all code` è disattivata e `highlighted languages` è vuoto. Lo avevamo fatto perché abbiamo molto codice in linguaggi non supportati. Ma ora viene rilevato come C#.

 ![screenshot delle impostazioni](https://global.discourse-cdn.com/meta/original/3X/9/c/9c67db06eef5324d071a5449b379bfc5b63074e5.png)

Esempio di post:

> **[\[I7 extension\] Enterable Underside (first version)](https://intfiction.org/t/i7-extension-enterable-underside-first-version/47179)**
>
> A prototype of an extension (with an example) which extends Underside by Eric Eve to allow actors to hide under objects. Enterable Underside by Eric Conrad begins here. "Extends Eric Eve's Underside extension by providing a means for hiding the...

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [26 Settembre 2020, 11:34pm UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/2 "2020-09-26T23:34:47Z")

</div>

Possiamo riprodurlo la prossima settimana @tshenry?

---

<div class="post-metadata">

### Author: ![tshenry](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tshenry/32/119495_2.png) [@tshenry](https://meta.discourse.org/u/tshenry)
#### Post date: [28 Settembre 2020, 7:05pm UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/4 "2020-09-28T19:05:59Z")

</div>

Posso riprodurre il problema su Try. Sembra che l’impostazione del sito `autohighlight_all_code` non venga rispettata. La funzionalità appare abilitata indipendentemente dal fatto che l’impostazione sia selezionata o meno. L’impostazione `highlighted languages` influisce sul rilevamento della lingua, ma se tutto viene rimosso, sembra che di default venga impostato su `csharp` quando rileva qualcosa di simile a codice.

L’ultima modifica al core che ha coinvolto l’evidenziazione della sintassi sembra essere il refactoring di @j.jaffeux:

> <https://github.com/discourse/discourse/commit/f8062300da274cae559c17509e7c0d11458a065f>

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [28 Settembre 2020, 9:05pm UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/5 "2020-09-28T21:05:46Z")

</div>

darò un’occhiata domani

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 7:26am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/7 "2020-09-29T07:26:34Z")

</div>

Non credo che ci sia stato un regresso qui; al massimo, prima delle mie varie correzioni di qualche settimana fa, funzionava in modo errato.

Ciò che sta accadendo è che, per impostazione predefinita, aggiungiamo sempre `auto` e `nohighlight` all’elenco delle classi di codice accettabili. Se non definisci alcun linguaggio quando crei il tuo blocco di codice, verrà utilizzato il valore di `default_code_lang`, che per impostazione predefinita è `auto`; se lo imposti su `nohighlight`, dovresti ottenere il risultato previsto. Tieni presente che dovrai ricostruire l’HTML dei post. Probabilmente non è nemmeno necessario svuotare `highlighted_languages`, poiché non ha alcun effetto se scegli `nohighlight`.

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 7:55am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/8 "2020-09-29T07:55:32Z")

</div>

Questo sta accadendo per post completamente nuovi, quindi qualcosa è sicuramente cambiato.

(E sì, ho capito che non mi serve un elenco vuoto delle lingue: riceviamo occasionalmente codice JS e Python, quindi tanto vale permettere l’evidenziazione se qualcuno aggiunge il codice.)

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 8:01am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/9 "2020-09-29T08:01:47Z")

</div>

![Screenshot 2020-09-29 at 10.00.16](https://global.discourse-cdn.com/meta/original/3X/1/a/1aaffe6020561f0f7dbf86c886597046287a8b36.png)

mi sta restituendo:

 ![Screenshot 2020-09-29 at 10.00.30](https://global.discourse-cdn.com/meta/original/3X/0/6/06271283210ae59d53f7bf32357a20a5ed1109b0.png)

Cosa non funziona come previsto?

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 8:02am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/10 "2020-09-29T08:02:53Z")

</div>

Il problema è che quando “evidenzia automaticamente tutto il codice” non è selezionato, i blocchi di codice non contrassegnati vengono comunque evidenziati automaticamente.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 8:04am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/11 "2020-09-29T08:04:44Z")

</div>

No, non è così. E non è nemmeno il bug che hai segnalato nell’OP.

 ![Screenshot 2020-09-29 alle 10.03.05](https://global.discourse-cdn.com/meta/original/3X/3/4/349967cf8d3a78efefc5bab3233e65e06b273b03.png)

 ![Screenshot 2020-09-29 alle 10.03.41](https://global.discourse-cdn.com/meta/original/3X/a/9/a91aba90607cf2e6d8aa200bb6bae83ba9c8c017.png)

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [29 Settembre 2020, 8:04am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/12 "2020-09-29T08:04:45Z")

</div>

I blocchi di codice con delimitatori (```) ricevono sempre l’evidenziazione automatica; i blocchi di codice con indentazione (\<code\>&nbsp;&nbsp;&nbsp;&nbsp;\</code\>) sono quelli influenzati da tale impostazione.

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 8:05am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/13 "2020-09-29T08:05:57Z")

</div>

Ohh. Beh… perché c’è una differenza? E può essere modificato?

Qualcosa è cambiato in Discourse, perché i blocchi di codice delimitati non venivano evidenziati automaticamente in passato. Abbiamo il nostro forum Discourse da quasi due anni. Fino all’aggiornamento più recente, i blocchi di codice delimitati non venivano evidenziati automaticamente.

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [29 Settembre 2020, 8:08am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/14 "2020-09-29T08:08:08Z")

</div>

Può essere modificato? Sì, l’impostazione “evidenzia automaticamente tutto il codice” rende il comportamento coerente per entrambi i tipi di blocchi di codice.

Se non desideri mai l’evidenziazione automatica a meno che non sia specificato esplicitamente un linguaggio,

> [@j.jaffeux](#):
>
> usa il valore di `default_code_lang`, che di default è `auto`; se lo imposti su `nohighlight`, otterrai il risultato previsto.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 8:10am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/15 "2020-09-29T08:10:07Z")

</div>

> [@Dannii](#):
>
> Qualcosa è cambiato in Discourse, perché in passato i blocchi di codice delimitati non venivano evidenziati automaticamente. Il nostro forum Discourse esiste da quasi 2 anni. Fino all’aggiornamento più recente, i blocchi di codice delimitati non venivano evidenziati automaticamente.

Sì, forse, ma come ho detto, non vedo nulla che non funzioni come previsto ora, quindi la mia ipotesi è che prima qualcosa non funzionasse per errore e che tu ti stessi affidando a quel comportamento.

Penso che venisse rilevato come un linguaggio che non veniva caricato correttamente, finendo così per non essere evidenziato nel blocco.

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 8:12am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/16 "2020-09-29T08:12:44Z")

</div>

Hmm, okay. Possiamo trasformarlo in una richiesta affinché la descrizione (e persino il nome) dell’impostazione “autohighlight all code” venga resa più accurata? Potrebbe essere modificata in “autohighlight indented code” con la descrizione “Applica l’evidenziazione del codice ai blocchi di codice indentati anche quando non specificano esplicitamente il linguaggio.”

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 8:13am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/17 "2020-09-29T08:13:36Z")

</div>

Certo, sentiti libero di creare una PR.

Inoltre, sono felice di risolvere un problema se ne trovi uno.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 8:57am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/18 "2020-09-29T08:57:52Z")

</div>

Guardando la mia console ho notato qualcosa di sospetto anche io:

 ![Screenshot 2020-09-29 alle 10.55.30](https://global.discourse-cdn.com/meta/original/3X/7/f/7f92ad74647b8e352979fee86aa665eb77c85bfa.png)

Questo non è nuovo, ma credo che il valore `nohighlight` che abbiamo iniettato sia errato e dovrebbe essere `no-highlight`. Questo rafforza anche la mia ipotesi su ciò che hai rilevato come codice non trovato e che è passato al fallback `no-highlight`. Procederò con la modifica.

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 9:03am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/19 "2020-09-29T09:03:40Z")

</div>

Farò una PR per modificare le descrizioni.

Resta una domanda: come era possibile che csharp fosse un’opzione quando le lingue evidenziate erano vuote? Una configurazione vuota agisce come se avesse l’elenco predefinito?

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [29 Settembre 2020, 9:12am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/20 "2020-09-29T09:12:28Z")

</div>

Sì, mi chiedevo la stessa cosa.

La mia comprensione è che in questa riga: [https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/highlight-syntax.js#L42](https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/highlight-syntax.js#L42)

Quando rimuoviamo questa classe e poi chiediamo a highlightjs di evidenziare il blocco di codice, non facciamo più affidamento su markdown e si tratta di una modifica lato client, quindi i limiti delle classi non si applicano più.

In pratica:

- not auto → aggiungerà una classe dalla lista nel markup generato, utilizzata da highlightjs
- auto → aggiungerà lang-auto nel markup generato, che verrà poi rimosso a runtime e permetterà a highlightjs di decidere l’evidenziazione

---

<div class="post-metadata">

### Author: ![Dannii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dannii/32/129087_2.png) [@Dannii](https://meta.discourse.org/u/Dannii)
#### Post date: [29 Settembre 2020, 9:24am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/21 "2020-09-29T09:24:41Z")

</div>

Mmh. Questo ne limita un po’ l’utilità. Vediamo se riesco a trovare una chiarificazione utile per la descrizione.

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [29 Settembre 2020, 10:17am UTC](https://meta.discourse.org/t/code-highlighting-happening-when-auto-highlighting-not-enabled/165486/22 "2020-09-29T10:17:41Z")

</div>

> [@j.jaffeux](#):
>
> `default_code_lang`

Come ulteriore esempio, utilizziamo `text` come predefinito, che è un alias per `nohighlight`, e abbiamo ottenuto buoni risultati.

 ![Screen Shot 2020-09-29 at 5.13.26 PM](https://global.discourse-cdn.com/meta/original/3X/f/3/f3f7ce5052fc9e662e50bfad8b9c40a8281f9b81.jpeg)

Abbiamo notato alcuni problemi di tanto in tanto, ma nel complesso questo è stato il miglior approccio per noi e appare meglio con `raw`, ad esempio:

````plaintext
```text
jtl_name=$(/usr/local/bin/kubectl exec -it --namespace=$namespace $master_pod -- bash -c "ls -tr /*.jtl" | awk '{sub(/\r$/, ""); print}')
```

````

Con il risultato:

```plaintext
jtl_name=$(/usr/local/bin/kubectl exec -it --namespace=$namespace $master_pod -- bash -c "ls -tr /*.jtl" | awk '{sub(/\r$/, ""); print}')

```

Abbiamo anche un’icona personalizzata per il blocco di codice delimitato predefinito `text` nel compositore.
