Basta usar o built-in asm-mode
. Ele fornece destaque de sintaxe para qualquer linguagem assembly. gas-mode
não faz isso e não é utilizável com a sintaxe da AT&T.
Se você deseja definir o recuo asm-mode
, observe que você não pode usar, tab-width
mas tab-stop-list
especifica os espaços que 1 guia, 2 guias, 3 guias ... podem exibir:
(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))
O exemplo acima significa que a guia primeiro possui 4 espaços, a segunda guia (ao lado da primeira guia) possui 8 espaços, a terceira guia (ao lado da segunda guia) possui 12 espaços ... e assim por diante.
Você também pode gerar a lista assim:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequence
gera uma lista de números, com o número inicial 2
(o primeiro argumento) até 60
(o segundo argumento), cada número difere de acordo 2
com o número ao lado. E lembre-se de vincular newline-and-indent
ao RET, para que o Emacs recue automaticamente para você.
Se você quiser pular, use Ctags assim:
ctags -e -R
-e
significa gerar banco de dados de tags para ser usado pelo Emacs.
-R
significa gerar recursivamente tags para arquivos em subdiretórios a partir da raiz do projeto.
Depois disso, você pode usar helm-etags-select
para pular ou outro etags
cliente no Emacs, se você não usar o Helm.
EDIT : Aqui está um exemplo de configuração:
(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)
Você também pode ter a conclusão básica company-complete
pressionando S-TAB
:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Você pode usar <tab>
para acionar a conclusão, pois ambos <tab>
e M-i
executar o mesmo comando tab-to-tab-stop
que insere espaços ou guias dependem da sua configuração de indent-tabs-mode
. O bom company-mode
é que você obtém uma breve descrição do candidato atualmente destacado no minibuffer, se disponível. Por exemplo, se você tiver uma definição como esta:
KeyStrokes word 0
Quando você move o cursor para KeyStrokes
candidato, ele é impresso word 0
no minibuffer.
asm-mode
deve fazer, mas não faz? (Que recursos estão faltando?)