Définir l'indentation pour la fonction de script shell

11

J'essaie de définir le nombre d'espaces par retrait pour démarrer une nouvelle fonction dans sh-mode(sous-mode bash). J'ai essayé de régler:

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

(comme le montre custom-set-variablesdans .emacs) et quelques autres aussi, mais aucun d'eux n'a eu aucun effet!

Robin Green
la source
La façon de définir des variables n'est pas via custom-set-variables(ce qui est la chose utilisée en interne par Customize mais n'est pas destinée à être utilisée à la main). Mieux vaut utiliser des choses comme (setq sh-basic-offset 2).
Stefan

Réponses:

7

Il sh-basic-offsetest nécessaire de définir l'indentation requise - mais ce que je ne savais pas, c'est qu'il est également nécessaire de fermer et de rouvrir tous les fichiers de script shell avant que la personnalisation ne prenne effet. Je ne me souviens pas d'avoir déjà fait ça auparavant dans emacs.

Robin Green
la source
1
Après avoir changé .emacs, vous devez soit quitter emacs et le redémarrer, soit utiliser M-x load-filepour recharger votre .emacsSi vous voulez recharger un fichier que vous avez ouvert dans votre éditeur, vous pouvez dire C-x C-v RETURNde le "revisiter".
Alex L
Le fichier de chargement @AlexL ne fonctionne pas dans ce cas particulier. Comme je l'ai dit, c'est très inhabituel. Habituellement, il suffit de personnaliser une variable.
Robin Green
Hmm ... savez-vous pourquoi ce serait @ robin-green? Je suis curieux.
Alex L
Vous pouvez également l'utiliser M-x set-variablesi vous souhaitez simplement modifier cela pour le tampon dans
lequel
1

J'ai mis-basic-offset à 2 mais cela ne semblait pas fonctionner, je suis revenu en arrière C-h v sh-<TAB>et j'ai réalisé qu'il y avait une sh-indentationvariable que je mettais à 2 et tout semble fonctionner comme un charme maintenant.

Albaro Pereyra
la source
Veuillez clarifier ce que vous entendez par "set-basic-offset" et clarifier également exactement comment vous "définissez cette variable sur 2".
Stefan
Le forum a omis l'onglet parce que j'ai placé entre le caractère supérieur à et inférieur à. Ch v sh- "appuyez sur tab" la saisie semi-automatique vous montrera une liste de variables.
Albaro Pereyra
J'ai corrigé votre balisage, mais votre commentaire n'explique toujours pas ce que vous entendiez par «set-basic-offset» ni comment vous «définissez cette variable sur 2».
Stefan
Cette variable est obsolète depuis 26.1, utilisez sh-basic-offsetplutôt.
goetzc
0

J'ai eu la même expérience qu'Albaro: définir sh-basic-offset sans effet, mais définir sh-indentation comme prévu.

Dans mon cas, j'ai évalué (setq sh-basic-offset 2)avec emacs, par exemple. via Mx eval-expression. Je cours GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Mon mode principal est Shell-script.

Nous s
la source