Utilisez simplement le intégré asm-mode. Il vous donne la coloration syntaxique pour tous les langages d'assemblage. gas-modene 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-widthmais tab-stop-listqui 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-sequencegé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 2le 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
-esignifie générer une base de données de balises à utiliser par Emacs.
-Rsignifie 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-selectpour sauter ou un autre etagsclient 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-completeen 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-iexécuter la même commande tab-to-tab-stopqui insère des espaces ou des tabulations dépend de votre paramètre de indent-tabs-mode. La bonne chose avec company-modeest 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 KeyStrokescandidat, il s'imprime word 0dans le mini-tampon.
asm-modedevrait faire, mais ne le fait pas? (Quelles fonctionnalités manquent?)