Basta usare il built-in asm-mode
. Ti dà l'evidenziazione della sintassi per qualsiasi linguaggio di assemblaggio. gas-mode
non lo fa e non è utilizzabile con la sintassi AT&T.
Se si desidera impostare il rientro per asm-mode
, tenere presente che non è possibile utilizzare tab-width
ma tab-stop-list
che specifica gli spazi che possono essere visualizzati da 1 scheda, 2 schede, 3 schede ...
(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'esempio sopra indica che la scheda del pugno ha 4 spazi, la seconda scheda (accanto alla prima scheda) ha 8 spazi, la terza scheda (accanto alla seconda scheda) ha 12 spazi ... e così via.
Puoi anche generare l'elenco in questo modo:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequence
genera un elenco di numeri, con il numero iniziale 2
(il primo argomento) fino a 60
(il secondo argomento), ogni numero differisce dal 2
numero accanto ad esso. E ricorda di legarti newline-and-indent
a RET, quindi Emacs inserisce automaticamente il rientro per te.
Se vuoi saltare, usa Ctags in questo modo:
ctags -e -R
-e
significa generare un database di tag che sarà utilizzato da Emacs.
-R
significa generare ricorsivamente tag per file in sottodirectory dalla radice del progetto.
Dopodiché, puoi usare helm-etags-select
per saltare o un altro etags
client in Emacs se non usi Helm.
EDIT : ecco una configurazione di esempio:
(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)
Puoi anche avere un completamento di base company-complete
premendo quando S-TAB
:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
È possibile utilizzare <tab>
per attivare il completamento perché entrambi <tab>
ed M-i
eseguire lo stesso comando tab-to-tab-stop
che inserisce spazi o schede dipende dalle impostazioni di indent-tabs-mode
. La cosa bella company-mode
è che puoi ottenere una breve descrizione del candidato attualmente evidenziato nel minibuffer, se disponibile. Ad esempio, se hai una definizione come questa:
KeyStrokes word 0
Quando si sposta il cursore sul KeyStrokes
candidato, questo viene stampato word 0
nel minibuffer.
asm-mode
dovrebbe fare, ma non? (Quali funzionalità mancano?)