Rendre le mode Web toujours en retrait avec des espaces


10

J'utilise emacs en mode web , et la tabulation dans les fichiers JS semble agir étrangement.

La tabulation est définie sur 2 espaces en retrait, mais lorsque le retrait atteint 8 espaces, le mode Web les transforme en onglet, puis continue de tabuler 2 espaces jusqu'à ce qu'il atteigne 8 autres, et les convertit en un autre onglet, etc.

Puis-je empêcher cela de se produire et dire à emacs / web-mode de ne mettre en retrait que les espaces?

ÉDITER:

Voici un court exemple de fonction imbriquée:

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

Il est évident que ça se passe bien dans Emacs, mais vous pouvez voir le problème d'indentation ici.

Je noterai ici que cela se produit également en mode javascript.


1
Est-ce spécifique au mode Web? Ou cela se produit-il quelque part?
— Malabarba

Cela ne se produit qu'en mode Web, tout le reste des onglets avec des espaces indéfiniment.
— dieuwe

Désolé, le mode javascript fait également la même chose. Mais ce sont juste ces deux-là.
— dieuwe

Lequel javascript-modeutilisez-vous, celui intégré? Cela se produit-il également lors de l'indentation du code HTML web-mode?
— dgtized

Veuillez publier le contenu de votre fichier init. Emacs utilise un onglet pour 8 espaces par défaut, donc il doit y avoir quelque chose dans votre fichier init pour le désactiver pour la plupart des modes.
— Gilles 'SO- arrête d'être méchant'

Réponses:


10

En général, si vous souhaitez que l'indentation utilise uniquement des espaces, je vous recommande de personnaliser:

(setq-default indent-tabs-mode nil)

Cela force l'indentation à utiliser des espaces et aucun onglet. Je ne sais pas si web-modeutilise les méthodes régulières pour l'indentation, donc il peut ne pas respecter cela.

Pouvez-vous donner un exemple de fichier à démontrer?


3
Ont ajouté un exemple à la question. L'ajout (setq indent-tabs-mode nil)ne semble rien changer aux deux web-modeet javascript-mode.
— dieuwe

3
Je pense que vous devriez utiliser setq-defaultcar indent-tabs-modeest buffer-local.
— nperson325681

@progo D'accord, cela a fonctionné. Merci beaucoup.
— dieuwe

1
Est-il possible de mettre en retrait uniquement avec des tabulations? J'ai essayé différents paramètres, mais il ne se met en retrait qu'avec des tabulations / espaces mixtes.
— Dfr

1
@Dfr Vous devez ajouter (setq-default indent-tabs-mode t)votre.emacs
— fxbois

3

Veuillez essayer ce code dans votre fichier de configuration emacs pour forcer le retrait en mode Web. Je l'ai référé depuis la page d'accueil en mode 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)

Est-ce que cela fonctionnerait aussi? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
— Andrew Lamarra
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.