Stellen Sie den Web-Modus immer mit Leerzeichen ein

10

Ich verwende den Emacs - Webmodus und das Tabbing in JS-Dateien scheint seltsam zu wirken.

Ich habe die Registerkarte so eingestellt, dass 2 Leerzeichen eingerückt werden. Wenn der Einzug jedoch 8 Leerzeichen erreicht, verwandelt der Web-Modus diese in eine Registerkarte und fährt dann mit der Eingabe von 2 Leerzeichen fort, bis eine weitere 8 erreicht ist, und konvertiert diese in eine andere Registerkarte usw.

Kann ich dies verhindern und dem Emacs / Web-Modus mitteilen, dass nur Leerzeichen eingerückt werden sollen?

BEARBEITEN:

Hier ist ein kurzes Beispiel für verschachtelte Funktionen:

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

Es zeigt sich offensichtlich gut in Emacs, aber Sie können das Einrückungsproblem hier sehen.

Ich werde hier bemerken, dass dies auch im Javascript-Modus auftritt.

dieuwe
quelle
1
Ist dies spezifisch für den Webmodus? Oder passiert es irgendwo?
Malabarba
Dies geschieht nur im Web-Modus, alles andere ist mit unbegrenzten Leerzeichen in Ordnung.
Dieuwe
Entschuldigung, der Javascript-Modus macht dasselbe. Aber es sind nur diese beiden.
Dieuwe
Welches benutzt javascript-modedu, das eingebaute? Passiert dies auch beim Einrücken von HTML web-mode?
Dgtized
Bitte posten Sie den Inhalt Ihrer Init-Datei. Emacs verwendet standardmäßig eine Registerkarte für 8 Leerzeichen. Daher muss Ihre Init-Datei etwas enthalten, um sie für die meisten Modi zu deaktivieren.
Gilles 'SO - hör auf böse zu sein'

Antworten:

10

Wenn Sie möchten, dass Einrückungen nur Leerzeichen verwenden, würde ich im Allgemeinen das Anpassen empfehlen:

(setq-default indent-tabs-mode nil)

Dies erzwingt, dass beim Einrücken Leerzeichen und keine Tabulatoren verwendet werden. Ich bin mir nicht sicher, ob web-modedie regulären Methoden zum Einrücken verwendet werden, daher wird dies möglicherweise nicht berücksichtigt.

Können Sie eine Beispieldatei zur Demonstration geben?

dgtized
quelle
3
Habe der Frage ein Beispiel hinzugefügt. Das Hinzufügen (setq indent-tabs-mode nil)scheint an beiden web-modeund nichts zu ändern javascript-mode.
Dieuwe
3
Ich denke, Sie sollten verwenden, setq-defaultweil indent-tabs-modeist Puffer-lokal.
nperson325681
@progo Okay, das hat funktioniert. Ich danke dir sehr.
Dieuwe
1
Ist es möglich, nur mit Tabulatoren einzurücken? Ich habe verschiedene Einstellungen ausprobiert, aber es wird nur mit gemischten Tabulatoren / Leerzeichen eingerückt.
Dfr
1
@Dfr Sie sollten (setq-default indent-tabs-mode t)in Ihrem.emacs
fxbois
3

Bitte versuchen Sie diesen Code in Ihrer Emacs-Konfigurationsdatei, um den Einzug im Webmodus zu erzwingen. Ich habe es von der Web-Modus-Homepage verwiesen .

(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)
YulongNiu
quelle
Würde das auch funktionieren? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra