어셈블리 소스 코드에서 들여 쓰기 및 탐색 향상


13

C 또는 Java 코드를 작성할 때 매우 규칙적이지만 어셈블리 ( asm-mode)를 사용하면 구성이 잘못됩니다.

그리고를 사용 auto-complete하고 yasnippet있습니다. 스 니펫을 만들어 사용하고 있지만 코드 구성과 들여 쓰기가 구성되지 않았습니다.

어떤 패키지가 도움이 될까요?

  • 코드와 주석을 쉽게 들여 쓰기하여 각 코드가 무엇을하고 있는지 확인할 수 있습니다.
  • 대량의 코드를 탐색하여 코드 사이를 쉽게 이동할 수 있습니까?

3
보다 구체적인 질문을 작성하십시오. 예를 들어, 어떻게해야한다고 생각 asm-mode하나 그렇지 않습니까? (어떤 기능이 누락 되었습니까?)
Constantine

2
EmacsWiki는 조립에 나열된 몇 가지 옵션이 있습니다. 그러나 문제와 지금까지 한 일에 대해 구체적으로 질문을 편집하십시오. "유용한 패키지"는 많은 근거를 다룹니다.
Dan

왜이 질문을 닫습니까? 들여 쓰기 작업 ( asm-mode다른 모든 것과 다르게 동작)을 만들고 적절한 환경 (점프, 코드 완성)을 구성하는 것은 유효한 콘서트입니다.
Tu Do

1
이 질문을 다시하고 싶은 사용자는 이 메타 토론을 참조하십시오 . 질문을 정리하고 명확하게하는 데 도움을 주거나 다른 사용자가 투표를 다시 닫을 가능성은 결코 쉬운 일이 아닙니다.
Dan

답변:


11

내장을 사용하십시오 asm-mode. 모든 어셈블리 언어에 대한 구문 강조를 제공합니다. gas-mode이를 수행하지 않으며 AT & T 구문과 함께 사용할 수 없습니다.

에 들여 쓰기를 설정 asm-mode하려면 사용할 수 tab-width없지만 tab-stop-list1 탭, 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 개의 공백이 있고 두 번째 탭 (첫 번째 탭 옆에 있음)에는 8 개의 공백이 있고 3 번째 탭 (두 번째 탭 옆에 있음)에는 12 개의 공백이 있음 등을 의미합니다.

다음과 같이 목록을 생성 할 수도 있습니다.

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

number-sequence시작 번호 2(첫 번째 인수) 부터 60두 번째 인수 까지 의 숫자 목록을 생성합니다 . 각 숫자는 2옆의 숫자 와 다릅니다 . newline-and-indentRET 에 바인딩 해야하므로 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.