Просто используйте встроенный 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
должно делать, а что нет? (Какие функции отсутствуют?)