Просто використовуйте вбудований 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
має робити, а чи ні? (Які риси відсутні?)