Montaj kaynak kodunda daha iyi girinti ve gezinme


13

C veya Java kodu yazdığımda son derece düzenli, ancak assembly ( asm-mode) ile çok dağınık.

Ben kullanıyorum auto-completeve yasnippet. Parçacıklar oluşturdum ve kullanıyorum, ancak kod organizasyonu ve girinti düzensiz.

Hangi paketler bana yardımcı olacak:

  • kolayca kod ve yorumları düzgün girintili, böylece her kod parçası ne yaptığını görebilirsiniz;
  • kod büyük kütlesi gezinmek, böylece kolayca kod parçaları arasında atlamak?

3
Lütfen sorunuzu daha belirgin hale getirmeye çalışın. Örneğin: sizce asm-modene yapmalı, ama yapmamalı? (Hangi özellikler eksik?)
Konstantin

2
EmacsWiki montaj için listelenen birkaç seçenek vardır. Ancak lütfen sorun ve şimdiye kadar yaptıklarınızla ilgili daha ayrıntılı olacak şekilde sorunuzu düzenleyin. "Herhangi bir yararlı paket" çok fazla zemin kaplar.
Dan

Bu soruyu neden kapatıyorsunuz? Girinti çalışmaları yapmak ( asm-modeher şeyden farklı davranır) ve iyi bir ortam yapılandırmak (atlama, kod tamamlama) geçerli bir konserdir.
Tu Do

1
Bu sorunun yeniden açılmasını isteyen kullanıcılar için lütfen bu meta tartışmaya bakın . Lütfen soruyu temizlemeye ve açıklığa kavuşturmaya yardımcı olun, aksi takdirde diğer kullanıcıların tekrar kapatmak için oy kullanması önemsiz bir şanstır.
Dan

Yanıtlar:


11

Sadece yerleşik olanı kullanın asm-mode. Herhangi bir montaj dili için sözdizimi vurgulama sağlar. gas-modebunu yapmaz ve AT&T sözdizimi ile kullanılamaz.

Girintisini ayarlamak asm-modeistiyorsanız, kullanamayacağınızı tab-widthancak tab-stop-list1 sekmesinin, 2 sekmesinin, 3 sekmesinin ... görüntüleyebileceği boşlukları belirttiğini unutmayın :

(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))

Yukarıdaki örnek, yumruk sekmesinin 4 boşluğa, 2. sekmenin (ilk sekmenin yanında) 8 boşluğa, 3. sekmenin (ikinci sekmenin yanında) 12 boşluğa sahip olduğu anlamına gelir ...

Listeyi şu şekilde de oluşturabilirsiniz:

(setq tab-stop-list (number-sequence 2 60 2))

number-sequencebir sayı listesi oluşturur, başlangıç ​​numarası 2(ilk argüman) yukarı 60(ikinci argüman), her 2sayı yanındaki sayıya göre farklılık gösterir . Ve newline-and-indentRET'e bağlanmayı unutmayın , böylece Emacs sizin için otomatik olarak girintili olur.

Atlamak istiyorsanız, aşağıdaki gibi Ctags kullanın:

ctags -e -R

-eEmacs tarafından kullanılacak etiket veritabanı oluşturmak anlamına gelir. -Rproje kökünden alt dizinlerdeki dosyalar için özyinelemeli olarak etiket oluşturmak anlamına gelir.

Bundan sonra, Helm kullanmıyorsanız Emacs'ta helm-etags-selectatlamak için veya başka bir etagsmüşteri kullanabilirsiniz.

EDIT : İşte örnek bir kurulum:

(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)

Aşağıdakilere company-completebasarken temel tamamlama da yapabilirsiniz S-TAB:

(define-key asm-mode-map (kbd "<backtab>") 'company-complete)

Sen kullanabilirsiniz <tab>hem çünkü tetik tamamlanmasına <tab>ve M-iaynı komutunu çalıştırın tab-to-tab-stopekler boşluk veya sekme sizin ayarına bağlı olduğunu indent-tabs-mode. Güzel olan şey company-mode, eğer varsa, minibuffer'da şu anda vurgulanan adayın kısa bir açıklamasını almanızdır. Örneğin, böyle bir tanımınız varsa:

KeyStrokes  word    0

İmleci KeyStrokesadaya taşıdığınızda word 0, minibuffer'a yazdırır .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.