Je n'ai pas réussi à faire passer Emacs de 8 onglets d'espace à 4 onglets d'espace en appuyant sur TABdans les tampons avec le mode majeur text-mode
. J'ai ajouté ce qui suit à mon .emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
Peu importe comment je change mon .emacs
fichier (ou les variables locales de ma mémoire tampon), le TABbouton fait toujours la même chose.
- S'il n'y a pas de texte ci-dessus, indentez 8 espaces
- S'il y a du texte sur la ligne précédente, indenter le début du deuxième mot
Autant j'aime Emacs cela devient ennuyeux. Existe-t-il un moyen de rendre Emacs à au moins 4 espaces en retrait lorsqu'il n'y a pas de texte dans la ligne précédente?
emacs
indentation
Cristian
la source
la source
(setq-default tab-width 4)
n'est PAS la même chose que d'(setq tab-width 4)
être sûr de ne pas manquer le "-default"!Réponses:
ou ajoutez une entrée tab-stop-list à custom-set-variables dans le fichier .emacs :
la source
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
? Eh bien, tant que cela fonctionne je suppose ...: P'(tab-stop-list (quote (4)))
.quote
faut deux nombres pour continuer la séquence à l'infini. Voir: stackoverflow.com/a/42148697/2662028Réponse courte:
Le point clé est de dire à emacs d'insérer ce que vous voulez lors de l'indentation, ceci se fait en modifiant la fonction indent-line-function. Il est plus facile de le changer pour insérer une tabulation puis de changer les tabulations en 4 espaces que de le changer pour insérer 4 espaces. La configuration suivante résoudra votre problème:
Explication:
À partir de l' indentation contrôlée par le mode majeur @ manuel emacs :
Depuis le manuel indent-relative @ emacs:
Changez simplement la valeur de indent-line-function en fonction d'insertion de tabulation et configurez l'insertion de tabulation sur 4 espaces.
la source
Mise à jour: depuis Emacs 24.4:
ce qui signifie qu'il n'est plus nécessaire de définir le paramètre
tab-stop-list
de la manière indiquée ci-dessous, car vous pouvez le conserver surnil
.La réponse originale suit ...
Cela me fait toujours un peu mal de voir des choses comme
(setq tab-stop-list 4 8 12 ................)
lorsque lanumber-sequence
fonction attend d'être utilisée.ou
la source
tab-stop-list
est maintenant implicitement étendu à l'infini. Sa valeur par défaut est changée en nil, ce qui signifie une tabulation toutes lestab-width
colonnes." - donc en fait, vous pouvez simplement utiliser la valeur par défaut denil
.Vous trouverez peut-être plus facile de configurer vos onglets comme suit:
À l'
Customize group:
invite, entrezindent
.Vous verrez un écran où vous pouvez définir toutes vos options de retrait et les définir pour la session en cours ou les enregistrer pour toutes les sessions futures.
Si vous le faites de cette façon, vous voudrez créer un fichier de personnalisation .
la source
la source
la source
26.3
cela fonctionne pour le code C ++ et le commentaire à l'intérieur aussi
la source
Ce problème n'est pas causé par des taquets de tabulation manquants; c'est qu'emacs a une (nouvelle?) méthode de tabulation appelée indent-relative qui semble conçue pour aligner les données tabulaires. La touche TAB est mappée à la méthode indent-for-tab-command, qui appelle la méthode sur laquelle la variable indent-line-function est définie, qui est la méthode relative à l'indentation pour le mode texte. Je n'ai pas trouvé un bon moyen de remplacer la variable indent-line-function (le hook de mode texte ne fonctionne pas, alors peut-être qu'il est réinitialisé après l'exécution des modes-hooks?) Mais un moyen simple de se débarrasser de cela Le comportement consiste simplement à lancer la méthode intent-for-tab-command en définissant TAB sur la méthode tab-to-tab-stop plus simple:
(définir-clé text-mode-map (kbd "TAB") 'tab-to-tab-stop)
la source
Essaye ça:
Cela obligera TAB à toujours insérer un caractère TAB littéral avec des taquets de tabulation tous les 4 caractères (mais uniquement en mode texte). Si ce n'est pas ce que vous demandez, veuillez décrire le comportement que vous aimeriez voir.
la source
Vous pouvez ajouter ces lignes de code à votre fichier .emacs. Il ajoute un crochet pour le mode texte pour utiliser insert-tab au lieu de indent-relative.
J'espère que cela aide.
la source
Le simple fait de changer de style avec le style c-set me suffisait.
la source
Ajoutez ceci à votre fichier .emacs:
Cela définira la largeur d'affichage d'un onglet à 2 caractères (changez le numéro 2 en ce que vous voulez)
Pour vous assurer qu'emacs utilise réellement des tabulations au lieu d'espaces:
En passant, la valeur par défaut pour emacs lors du retour arrière sur un onglet est de le convertir en espaces, puis de supprimer un espace. Cela peut être ennuyeux. Si vous souhaitez simplement supprimer l'onglet, vous pouvez le faire:
Prendre plaisir!
la source
C'est la seule solution qui empêche un onglet d'être inséré pour moi, sans séquence ni conversion d'onglets en espaces. Les deux semblaient adéquats, mais inutiles:
Notez qu'il
quote
faut deux nombres pour fonctionner (mais pas plus!).De plus, dans la plupart des modes principaux (
Python
par exemple), l'indentation est automatique dans Emacs. Si vous devez mettre en retrait en dehors de l'indentation automatique, utilisez:M-i
la source
Les personnalisations peuvent être ombrées,
(setq tab width 4)
alors utilisezsetq-default
ou faites savoir à Personnaliser ce que vous faites. J'ai également eu des problèmes similaires à l'OP et je l'ai résolu avec cela seul, je n'ai pas besoin d'ajustertab-stop-list
ou deinsert
fonctions:J'ai trouvé utile d'ajouter ceci immédiatement après (une astuce d'emacsWiki):
la source
Les meilleures réponses n'ont pas fonctionné jusqu'à ce que j'écrive ceci dans le fichier .emacs:
la source
As-tu essayé
la source
la source
Au fait, pour le mode C , j'ajoute
(setq-default c-basic-offset 4)
à .emacs. Voir http://www.emacswiki.org/emacs/IndentingC pour plus de détails.la source
De mon fichier init, différent car je voulais des espaces plutôt que des tabulations:
la source
Modifié cette réponse sans aucun crochet:
la source