Просто використовуйте вбудований asm-mode. Це дає виділення синтаксису для будь-яких мов складання. gas-modeне робить цього і не використовується в синтаксисі AT&T.
Якщо ви хочете встановити відступи asm-mode, зауважте, що ви не можете використовувати, tab-widthале tab-stop-listвказує пробіли, які можуть відображатись 1 табл., 2 вкладки, 3 вкладки ...
(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))
Вищеописаний приклад означає, що вкладка кулака має 4 пробіли, 2-а вкладка (поруч із першою вкладкою) має 8 пробілів, 3-я вкладка (поруч із другою вкладкою) має 12 пробілів ... тощо.
Ви також можете створити такий список:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequenceгенерує список числа, з початковим номером 2(перший аргумент) до 60(другий аргумент), кожне число відрізняється 2на число поряд з ним. І не забудьте прив’язати newline-and-indentдо RET, тому Emacs автоматично відступить для вас.
Якщо ви хочете стрибати навколо, використовуйте подібні Ctags:
ctags -e -R
-eозначає генерувати базу даних тегів, яку використовуватиме Emacs.
-Rозначає рекурсивно генерувати теги для файлів у підкаталогах з кореня проекту.
Після цього ви можете використовувати helm-etags-selectдля стрибків або іншого etagsклієнта в Emacs, якщо ви не використовуєте Helm.
EDIT : Ось приклад налаштування:
(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)
Ви також можете мати базове завершення company-completeпри натисканні S-TAB:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Ви можете використовувати <tab>для запуску завершення, оскільки обидва <tab>та M-iвиконують одну і ту ж команду, tab-to-tab-stopяка вставляє пробіли чи вкладки, залежить від вашого параметра indent-tabs-mode. Приємним company-modeє те, що ви отримуєте короткий опис кандидата, який зараз виділяється, у мінібуфері, якщо він є. Наприклад, якщо у вас є таке визначення:
KeyStrokes word 0
Коли ви переміщуєте курсор на KeyStrokesкандидата, він друкує word 0у мінібуфері.
asm-modeмає робити, а чи ні? (Які риси відсутні?)