Verwenden Sie einfach die eingebaute asm-mode
. Sie erhalten eine Syntaxhervorhebung für alle Assemblersprachen. gas-mode
tut dies nicht und ist mit der AT & T-Syntax nicht verwendbar.
Wenn Sie Satz Einbuchtung wollen asm-mode
, beachten Sie, dass Sie nicht verwenden können , tab-width
aber tab-stop-list
dass gibt an Räume , dass Registerkarte 1, 2 Registerkarten, 3 Registerkarten ... können angezeigt werden :
(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))
Das obige Beispiel bedeutet, dass der erste Tab 4 Leerzeichen hat, der zweite Tab (neben dem ersten Tab) 8 Leerzeichen, der dritte Tab (neben dem zweiten Tab) 12 Leerzeichen ... und so weiter.
Sie können die Liste auch folgendermaßen generieren:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequence
Erzeugt eine Liste von Zahlen mit der Startnummer 2
(das erste Argument) bis 60
(das zweite Argument). Jede Zahl unterscheidet sich von 2
der Zahl daneben. Und denken Sie daran, sich newline-and-indent
an RET zu binden , damit Emacs automatisch Einrückungen für Sie vornimmt.
Wenn Sie herumspringen möchten, verwenden Sie Ctags wie folgt:
ctags -e -R
-e
bedeutet, eine Tag-Datenbank zu generieren, die von Emacs verwendet wird.
-R
bedeutet, rekursiv Tags für Dateien in Unterverzeichnissen aus dem Projektstamm zu generieren.
Danach können Sie in Emacs herumspringen helm-etags-select
oder einen anderen etags
Client verwenden, wenn Sie Helm nicht verwenden.
BEARBEITEN : Hier ist ein Beispiel-Setup:
(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)
Sie können die Grundvervollständigung auch durch company-complete
Drücken von S-TAB
:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Sie können <tab>
den Abschluss mit auslösen, da beide <tab>
und M-i
derselbe Befehl tab-to-tab-stop
, mit dem Leerzeichen oder Tabulatoren eingefügt werden, von Ihrer Einstellung von abhängen indent-tabs-mode
. Das Schöne daran company-mode
ist, dass Sie eine kurze Beschreibung des aktuell markierten Kandidaten im Minipuffer erhalten, falls verfügbar. Wenn Sie beispielsweise eine Definition wie diese haben:
KeyStrokes word 0
Wenn Sie den Cursor auf KeyStrokes
Kandidat bewegen , wird er word 0
im Minipuffer gedruckt.
asm-mode
sollte tun, aber nicht? (Welche Funktionen fehlen?)