Solo usa el incorporado asm-mode. Le ofrece resaltado de sintaxis para cualquier lenguaje ensamblador. gas-modeno hace eso y no se puede usar con la sintaxis de AT&T.
Si desea establecer la sangría para asm-mode, tenga en cuenta que no puede usar tab-widthpero tab-stop-listque especifica espacios que pueden mostrar 1 pestaña, 2 pestañas, 3 pestañas ...
(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))
El ejemplo anterior significa que la pestaña de puño tiene 4 espacios, la segunda pestaña (al lado de la primera pestaña) tiene 8 espacios, la tercera pestaña (al lado de la segunda pestaña) tiene 12 espacios ... y así sucesivamente.
También puede generar la lista de esta manera:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequencegenera una lista de números, con el número inicial 2(el primer argumento) hasta 60(el segundo argumento), cada número difiere según 2el número al lado. Y recuerde vincularse newline-and-indenta RET, por lo que Emacs sangra automáticamente por usted.
Si quieres saltar, usa Ctags como este:
ctags -e -R
-esignifica generar una base de datos de etiquetas para ser utilizada por Emacs.
-Rsignifica generar recursivamente etiquetas para archivos en subdirectorios desde la raíz del proyecto.
Después de eso, puede usar helm-etags-selectpara saltar u otro etagscliente en Emacs si no usa Helm.
EDITAR : Aquí hay una configuración de muestra:
(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)
También puede tener finalización básica con company-completeal presionar S-TAB:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Puede usar <tab>para activar la finalización porque ambos <tab>y M-iejecutar el mismo comando tab-to-tab-stopque inserta espacios o pestañas depende de su configuración de indent-tabs-mode. Lo bueno company-modees que obtienes una breve descripción del candidato actualmente resaltado en el minibúfer, si está disponible. Por ejemplo, si tiene una definición como esta:
KeyStrokes word 0
Cuando mueve el cursor al KeyStrokescandidato, se imprime word 0en el minibúfer.
asm-modedebería hacer, pero no lo hace? (¿Qué características faltan?)