アセンブリソースコードのインデントとナビゲーションの改善


13

CコードまたはJavaコードを書くときは非常に規則的ですが、アセンブリ(asm-mode)を使用すると非常に混乱します。

とを使用auto-completeしていyasnippetます。スニペットを作成して使用していますが、コードの編成とインデントが乱れています。

どのパッケージが私を助けますか:

  • コードとコメントを簡単に適切にインデントして、各コードが何をしているかを確認できるようにします。
  • 大量のコードをナビゲートするので、簡単にコード間​​をジャンプできますか?

3
質問をより具体的にしてください。たとえば、何をasm-modeすべきだと思いますか?(不足している機能は?)
コンスタンティン14

2
EmacsWikiは、アセンブリのためにリストされているいくつかのオプションがあります。ただし、質問を編集して、問題とこれまでに行ったことについてより具体的にしてください。「便利なパッケージ」は、多くの領域をカバーしています。
ダン

なぜこの質問を閉じますか?インデントを機能させ(asm-mode他のすべてとは異なる動作をする)、適切な環境を設定する(ジャンプ、コード補完)ことは有効なコンサートです。
火ドゥ

1
この質問を再開したいユーザーについては、このメタディスカッションをご覧ください。質問を整理して明確にするのを手伝ってください。さもないと、他のユーザーが再び閉じて投票する可能性があります。
ダン

回答:


11

組み込みのを使用するだけasm-modeです。アセンブリ言語の構文を強調表示します。gas-modeこれは行わず、AT&T構文では使用できません。

にインデントを設定する場合asm-mode、使用できないtab-widthtab-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番目のタブ(2番目のタブの隣)に12個のスペースがあることを意味します。

次のようなリストも生成できます。

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

number-sequence開始番号2(最初の引数)から60(2番目の引数)までの番号のリストを生成し、各番号は2その隣の番号によって異なります。またnewline-and-indent、RET にバインドすることを忘れないでください。Emacsは自動的にインデントします。

飛び回るには、次のようにCtagsを使用します。

ctags -e -R

-eEmacsが使用するタグデータベースを生成することを意味します。 -Rプロジェクトのルートからサブディレクトリ内のファイルのタグを再帰的に生成することを意味します。

その後、Helmを使用しない場合は、Emacsでhelm-etags-selectジャンプしたり別のetagsクライアントを使用したりできます。

編集:サンプルのセットアップは次のとおりです。

(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と、ミニバッファーに印刷されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.