Chỉ cần sử dụng tích hợp asm-mode. Nó cung cấp cho bạn cú pháp tô sáng cho bất kỳ ngôn ngữ lắp ráp. gas-modekhông làm điều đó và không thể sử dụng được với cú pháp AT & T.
Nếu bạn muốn đặt thụt lề cho asm-mode, lưu ý rằng bạn không thể sử dụng tab-widthnhưng tab-stop-listchỉ định các khoảng trắng mà 1 tab, 2 tab, 3 tab ... có thể hiển thị:
(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))
Ví dụ trên có nghĩa là tab nắm tay có 4 khoảng trắng, tab thứ 2 (bên cạnh tab thứ nhất) có 8 khoảng trắng, tab thứ 3 (bên cạnh tab thứ hai) có 12 khoảng trắng, v.v.
Bạn cũng có thể tạo danh sách như thế này:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequencetạo một danh sách các số, với số bắt đầu 2(đối số thứ nhất) tối đa 60(đối số thứ hai), mỗi số khác nhau bởi 2số bên cạnh nó. Và nhớ liên kết newline-and-indentvới RET, để Emacs tự động thụt lề cho bạn.
Nếu bạn muốn nhảy xung quanh, hãy sử dụng Ctags như thế này:
ctags -e -R
-ecó nghĩa là tạo cơ sở dữ liệu thẻ được sử dụng bởi Emacs.
-Rcó nghĩa là tạo đệ quy các thẻ cho các tệp trong thư mục con từ gốc dự án.
Sau đó, bạn có thể sử dụng helm-etags-selectđể nhảy xung quanh hoặc một etagskhách hàng khác trong Emacs nếu bạn không sử dụng Helm.
EDIT : Đây là một thiết lập mẫu:
(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)
Bạn cũng có thể hoàn thành cơ bản company-completekhi nhấn S-TAB:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
Bạn có thể sử dụng <tab>để kích hoạt hoàn thành vì cả hai <tab>và M-ichạy cùng một lệnh tab-to-tab-stopchèn khoảng trắng hoặc tab tùy thuộc vào cài đặt của bạn indent-tabs-mode. Điều tuyệt vời company-modelà bạn có được một mô tả ngắn gọn về ứng cử viên hiện đang nổi bật trong xe buýt nhỏ, nếu có. Ví dụ: nếu bạn có một định nghĩa như thế này:
KeyStrokes word 0
Khi bạn di chuyển con trỏ đến KeyStrokesứng cử viên, nó sẽ in word 0trong bộ thu nhỏ.
asm-modenên làm gì, nhưng không? (Những tính năng nào còn thiếu?)