Stellen Sie den Einzug für die Shell-Skriptfunktion ein

11

Ich versuche, die Anzahl der Leerzeichen pro Einzug festzulegen, um eine neue Funktion in sh-mode(Bash-Submodus) zu starten . Ich habe versucht einzustellen:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(wie in gezeigt custom-set-variablesin .emacsund einige andere) als gut, aber keiner von ihnen haben keine Wirkung hatte!

Robin Green
quelle
Das Festlegen von Variablen erfolgt nicht über custom-set-variables(dies wird intern von Customize verwendet, ist jedoch nicht für die manuelle Verwendung vorgesehen). Verwenden Sie besser Dinge wie (setq sh-basic-offset 2).
Stefan

Antworten:

6

Das Einstellen sh-basic-offsetder erforderlichen Einrückung ist erforderlich. Ich habe jedoch nicht erkannt, dass alle Shell-Skriptdateien geschlossen und erneut geöffnet werden müssen, bevor die Anpassung wirksam wird. Ich kann mich nicht erinnern, dies jemals zuvor in Emacs getan zu haben.

Robin Green
quelle
1
Nach dem Ändern .emacsmüssen Sie entweder Emacs beenden und neu starten oder M-x load-filezum erneuten Laden verwenden. .emacsWenn Sie eine Datei, die Sie in Ihrem Editor geöffnet haben, neu laden möchten, können Sie sagen C-x C-v RETURN, dass Sie sie erneut besuchen möchten .
Alex L
@AlexL load-file funktioniert in diesem speziellen Fall nicht. Wie gesagt, das ist sehr ungewöhnlich. Normalerweise reicht es aus, eine Variable einfach anzupassen.
Robin Green
Hmm ... weißt du warum das @ robin-green wäre? Ich bin neugierig.
Alex L
1

Ich habe den Basis-Offset auf 2 gesetzt, aber das schien nicht zu funktionieren. Ich ging zurück C-h v sh-<TAB>und stellte fest, dass sh-indentationich diese Variable auf 2 gesetzt hatte und jetzt alles wie ein Zauber zu funktionieren scheint.

Albaro Pereyra
quelle
Bitte klären Sie, was Sie unter "Set-Basic-Offset" verstehen und genau, wie Sie "diese Variable auf 2 setzen".
Stefan
Das Forum hat den Tab weggelassen, weil ich zwischen dem Zeichen größer als und kleiner als platziert habe. Ch v sh- "Drücken Sie die Tabulatortaste" Autocomplete zeigt Ihnen eine Liste von Variablen.
Albaro Pereyra
Ich habe Ihr Markup korrigiert, aber Ihr Kommentar erklärt immer noch nicht, was Sie mit "set-basic-offset" gemeint haben und wie Sie "diese Variable auf 2 setzen".
Stefan
Diese Variable ist seit 26.1 veraltet. Verwenden Sie sh-basic-offsetstattdessen.
Goetzc
0

Ich hatte die gleiche Erfahrung wie Albaro: Sh-Basic-Offset ohne Wirkung einstellen, aber Sh-Indentation wie erwartet einstellen.

In meinem Fall habe ich (setq sh-basic-offset 2)mit Emacs bewertet , z. über Mx-Auswertung. Ich renne GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Mein Hauptmodus ist Shell-Skript.

Wir s
quelle