Rendi la modalità Web sempre rientrata con gli spazi


10

Sto usando la modalità web di emacs e la tabulazione nei file JS sembra agire in modo strano.

Ho una scheda impostata su rientro 2 spazi, ma quando il rientro raggiunge 8 spazi, la modalità Web li trasforma in una scheda, quindi continua a scheda 2 spazi fino a quando non raggiunge altri 8 e li converte in un'altra scheda, ecc.

Posso impedire che ciò accada e dire a emacs / web-mode solo spazi di rientro?

MODIFICARE:

Ecco un breve esempio di funzione nidificata:

(function() {
  function() {
    function() {
      function() {
    function() {
      // Indenting problem.
    }
      }
    }
  }
})()

Ovviamente si presenta bene in Emacs, ma qui puoi vedere il problema del rientro.

Qui noterò che ciò si verifica anche in modalità javascript.


1
È specifico per la modalità Web? O succede da qualche parte?
— Malabarba,

Questo succede solo in modalità web, tutto il resto va bene con spazi indefinitamente.
— dieuwe,

Siamo spiacenti, anche la modalità JavaScript fa la stessa cosa. Ma sono solo quei due.
— dieuwe,

Quale javascript-modestai usando, quello incorporato? Inoltre, questo accade quando rientri in HTML web-mode?
— dgtized

Si prega di pubblicare il contenuto del file init. Emacs utilizza una scheda per 8 spazi per impostazione predefinita, quindi ci deve essere qualcosa nel tuo file init per disattivarlo per la maggior parte delle modalità.
— Gilles 'SO- smetti di essere malvagio'

Risposte:


10

In generale, se si desidera che il rientro utilizzi solo spazi, consiglierei di personalizzare:

(setq-default indent-tabs-mode nil)

Ciò impone al rientro di utilizzare spazi e nessuna scheda. Non sono sicuro se web-modeutilizza i metodi regolari per il rientro, quindi potrebbe non rispettarlo.

Puoi dare un esempio di file da dimostrare?


3
Ho aggiunto un esempio alla domanda. L'aggiunta (setq indent-tabs-mode nil)non sembra cambiare nulla in entrambi web-modee javascript-mode.
— dieuwe,

3
Penso che dovresti usare setq-defaultperché indent-tabs-modeè buffer-local.
— nperson325681

@progo Okay, ha funzionato. Grazie mille.
— dieuwe,

1
È possibile rientrare solo con le schede? Ho provato diverse impostazioni, ma rientra solo con schede / spazi misti.
— Dfr,

1
@Dfr Dovresti aggiungere il (setq-default indent-tabs-mode t)tuo.emacs
— fxbois il

3

Prova questo codice nel file di configurazione di emacs per forzare il rientro in modalità Web. L'ho fatto riferimento dalla home page della modalità web.

(require 'web-mode)
(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-markup-indent-offset 2)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

Funzionerebbe anche questo? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
— Andrew Lamarra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.