Utilisez simplement le intégré asm-mode
. Il vous donne la coloration syntaxique pour tous les langages d'assemblage. gas-mode
ne fait pas cela et n'est pas utilisable avec la syntaxe AT&T.
Si vous souhaitez définir une indentation pour asm-mode
, notez que vous ne pouvez pas utiliser tab-width
mais tab-stop-list
qui spécifie les espaces que 1 tab, 2 tabs, 3 tabs ... peuvent afficher:
(setq tab-stop-list '(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))
L'exemple ci-dessus signifie que le premier onglet a 4 espaces, le 2ème onglet (à côté du premier onglet) a 8 espaces, le 3ème onglet (à côté du deuxième onglet) a 12 espaces ... et ainsi de suite.
Vous pouvez également générer la liste comme ceci:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequence
génère une liste de nombres, avec le numéro de départ 2
(le premier argument) jusqu'à 60
(le deuxième argument), chaque nombre diffère par 2
le nombre à côté de lui. Et n'oubliez pas de vous lier newline-and-indent
à RET, donc Emacs se met automatiquement en retrait pour vous.
Si vous voulez sauter, utilisez des Ctags comme ceci:
ctags -e -R
-e
signifie générer une base de données de balises à utiliser par Emacs.
-R
signifie générer de manière récursive des balises pour les fichiers dans les sous-répertoires à partir de la racine du projet.
Après cela, vous pouvez utiliser helm-etags-select
pour sauter ou un autre etags
client dans Emacs si vous n'utilisez pas Helm.
EDIT : Voici un exemple de configuration:
(require 'asm-mode)
(add-hook 'asm-mode-hook (lambda ()
(setq indent-tabs-mode nil) ; use spaces to indent
(electric-indent-mode -1) ; indentation in asm-mode is annoying
(setq tab-stop-list (number-sequence 2 60 2))))
(define-key asm-mode-map (kbd "<ret>") 'newline-and-indent)
(define-key asm-mode-map (kbd "M-.") 'helm-etags-select)
Vous pouvez également avoir une complétion de base company-complete
en appuyant sur S-TAB
:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Vous pouvez utiliser <tab>
pour déclencher l'achèvement car les deux <tab>
et M-i
exécuter la même commande tab-to-tab-stop
qui insère des espaces ou des tabulations dépend de votre paramètre de indent-tabs-mode
. La bonne chose avec company-mode
est que vous obtenez une brève description du candidat actuellement mis en évidence dans le mini-tampon, si disponible. Par exemple, si vous avez une définition comme celle-ci:
KeyStrokes word 0
Lorsque vous déplacez le curseur sur KeyStrokes
candidat, il s'imprime word 0
dans le mini-tampon.
asm-mode
devrait faire, mais ne le fait pas? (Quelles fonctionnalités manquent?)