Setel indentasi untuk fungsi skrip shell

11

Saya mencoba mengatur jumlah spasi per indent untuk memulai fungsi baru di sh-mode(sub-mode bash). Saya telah mencoba pengaturan:

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

(seperti yang ditunjukkan di custom-set-variablesdalam .emacs) dan beberapa yang lain juga, tetapi tidak satupun dari mereka yang memiliki efek!

Robin Green
sumber
Cara untuk mengatur variabel tidak melalui custom-set-variables(yang merupakan hal yang digunakan secara internal oleh Customize tetapi tidak dimaksudkan untuk digunakan dengan tangan). Lebih baik gunakan hal-hal seperti (setq sh-basic-offset 2).
Stefan

Jawaban:

7

Pengaturan sh-basic-offsetke lekukan yang diperlukan adalah apa yang diperlukan - tetapi apa yang saya tidak sadari adalah, itu juga perlu untuk menutup dan membuka kembali semua file skrip shell sebelum penyesuaian diterapkan. Saya tidak ingat pernah melakukan ini sebelumnya di emacs.

Robin Green
sumber
1
Setelah mengubah .emacs, Anda harus keluar dari emacs dan memulai kembali, atau gunakan M-x load-fileuntuk memuat ulang Anda. .emacsJika Anda ingin memuat ulang file yang telah Anda buka di editor Anda, Anda dapat mengatakan C-x C-v RETURNuntuk "mengunjungi kembali".
Alex L
@AlexL memuat file tidak berfungsi dalam kasus khusus ini. Seperti yang saya katakan, ini sangat tidak biasa. Biasanya hanya dengan menyesuaikan variabel sudah cukup.
Robin Green
Hmm ... tahukah Anda mengapa ini @ robin-green? Saya penasaran.
Alex L
Anda juga dapat menggunakan M-x set-variablejika Anda ingin mengubahnya untuk buffer yang sedang Anda kerjakan.
kotakotakota
1

Saya menetapkan-dasar-mengimbangi ke 2 tetapi tampaknya tidak berhasil, saya kembali ditekan C-h v sh-<TAB>dan menyadari bahwa ada sh-indentationsaya mengatur variabel ke 2 dan semuanya tampaknya berfungsi seperti pesona sekarang.

Albaro Pereyra
sumber
Harap jelaskan apa yang Anda maksud dengan "set-basic-offset" dan juga jelaskan bagaimana Anda "setel variabel itu menjadi 2".
Stefan
Forum menghilangkan tab karena saya menempatkan di antara karakter lebih besar dan lebih kecil. Chv sh- "tekan tab" lengkapi otomatis akan menampilkan daftar variabel.
Albaro Pereyra
Saya memperbaiki markup Anda, tetapi komentar Anda masih tidak menjelaskan apa yang Anda maksud dengan "set-basic-offset" atau bagaimana Anda "mengatur variabel itu ke 2".
Stefan
Variabel ini sudah usang sejak 26.1, gunakan sh-basic-offsetsebagai gantinya.
goetzc
0

Saya memiliki pengalaman yang sama dengan Albaro: pengaturan sh-basic-offset tidak memiliki efek, tetapi pengaturan indentasi sh berfungsi seperti yang diharapkan.

Dalam kasus saya, saya mengevaluasi (setq sh-basic-offset 2)dari dengan emacs, mis. melalui Mx eval-expression. Saya sedang berlari GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Mode utama saya adalah Shell-script.

Wes
sumber