Просто используйте встроенный 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.
РЕДАКТИРОВАТЬ : Вот пример установки:
(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должно делать, а что нет? (Какие функции отсутствуют?)