Thụt tốt hơn và điều hướng trong mã nguồn lắp ráp


13

Khi tôi viết mã C hoặc Java, nó cực kỳ đều đặn, nhưng với assembly ( asm-mode), nó rất vô tổ chức.

Tôi đang sử dụng auto-completeyasnippet. Tôi đã tạo các đoạn mã và đang sử dụng chúng, nhưng tổ chức mã và thụt lề bị vô tổ chức.

Gói nào sẽ giúp tôi:

  • dễ dàng thụt lề mã và nhận xét đúng, để tôi có thể thấy mỗi đoạn mã đang làm gì;
  • điều hướng khối lượng lớn mã đó, để tôi có thể dễ dàng nhảy giữa các đoạn mã?

3
Hãy cố gắng làm cho câu hỏi của bạn cụ thể hơn. Ví dụ: bạn nghĩ asm-modenên làm gì, nhưng không? (Những tính năng nào còn thiếu?)
Constantine

2
Các EmacsWiki có một vài tùy chọn được liệt kê để lắp ráp. Nhưng vui lòng chỉnh sửa câu hỏi của bạn để cụ thể hơn về vấn đề và những gì bạn đã làm cho đến nay. "Bất kỳ gói hữu ích" bao gồm rất nhiều nền tảng.
Dân

Tại sao đóng câu hỏi này? Làm cho thụt lề hoạt động ( asm-modehành xử khác với mọi thứ khác) và cấu hình một môi trường tốt (nhảy xung quanh, hoàn thành mã) là một buổi hòa nhạc hợp lệ.
Từ Đỗ

1
Đối với người dùng muốn mở lại câu hỏi này, vui lòng xem thảo luận meta này . Vui lòng giúp làm sạch câu hỏi và làm rõ câu hỏi, nếu không, đây là một cơ hội không hề nhỏ mà những người dùng khác sẽ bỏ phiếu để đóng lại câu hỏi.
Dân

Câu trả lời:


11

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>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ỏ.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.