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.