Ustaw wcięcie dla funkcji skryptu powłoki

11

Usiłuję ustawić liczbę spacji dla wcięcia dla uruchomienia nowej funkcji w sh-mode(pod-tryb bash). Próbowałem ustawić:

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

(jak pokazano custom-set-variablesw .emacs) i inni, a także, ale żaden z nich nie miał żadnego wpływu!

Robin Green
źródło
Sposób ustawiania zmiennych nie jest za pomocą custom-set-variables(co jest rzeczą wewnętrznie używaną przez Dostosuj, ale nie jest przeznaczone do użycia ręcznego). Lepiej używaj takich rzeczy jak (setq sh-basic-offset 2).
Stefan

Odpowiedzi:

7

sh-basic-offsetWymagane jest ustawienie wymaganego wcięcia - ale nie zdawałem sobie sprawy, że konieczne jest również zamknięcie i ponowne otwarcie wszystkich plików skryptów powłoki, zanim dostosowywanie zacznie obowiązywać. Nie pamiętam, żeby kiedykolwiek wcześniej to robiłem w emacs.

Robin Green
źródło
1
Po zmianie .emacsmusisz albo wyjść z Emacsa i uruchomić go ponownie, albo użyć, M-x load-fileaby ponownie załadować. .emacsJeśli chcesz ponownie załadować plik otwarty w edytorze, możesz powiedzieć C-x C-v RETURN„ponownie”.
Alex L
Plik ładujący @AlexL nie działa w tym konkretnym przypadku. Jak powiedziałem, jest to bardzo nietypowe. Zwykle wystarczy po prostu dostosować zmienną.
Robin Green,
Hmm ... czy wiesz, dlaczego to byłby @ robin-green? Jestem ciekawy.
Alex L
Możesz także użyć, M-x set-variablejeśli chcesz to zmienić dla bufora, w którym pracujesz.
kotakotakota
1

Ustawiłem-offset-podstawowy na 2, ale to nie działało, wróciłem wciśnięty C-h v sh-<TAB>i zdałem sobie sprawę, że istnieje sh-indentationustawienie tej zmiennej na 2 i wszystko wydaje się teraz działać jak urok.

Albaro Pereyra
źródło
Wyjaśnij, co rozumiesz przez „set-basic-offset”, a także dokładnie wyjaśnij, w jaki sposób „ustawiłeś tę zmienną na 2”.
Stefan
Forum pominęło zakładkę, ponieważ umieściłem pomiędzy znakiem większym i mniejszym niż. Ch v sh- „autouzupełnianie„ naciśnij kartę ”pokaże listę zmiennych.
Albaro Pereyra
Naprawiłem twój znacznik, ale twój komentarz wciąż nie wyjaśnia, co rozumiesz przez „set-basic-offset” ani jak „ustawiłeś tę zmienną na 2”.
Stefan
Ta zmienna jest przestarzała od 26.1, użyj sh-basic-offsetzamiast niej.
goetzc
0

Miałem to samo doświadczenie co Albaro: ustawianie podstawowego przesunięcia sh bez efektu, ale ustawianie wcięcia sh działającego zgodnie z oczekiwaniami.

W moim przypadku (setq sh-basic-offset 2)oceniałem za pomocą emacsa, np. poprzez Mx eval-expression. Biegnę GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Moim głównym trybem jest skrypt powłoki.

Wes
źródło