슬프게도, Emacs의 괄호 일치 구조는 다중 문자 토큰의 많은 부분을 이해하지 못합니다. Emacs-23.4에 추가 된 새로운 라이브러리 SMIE는 부분적으로이 문제를 해결하기위한 것입니다. 주요 모드는 언어의 문법을 기술합니다 (매우 제한된 종류의 문법으로). 그 후에 C-M-f 및 C-M-b와 같은 것들은 논리 요소를 뛰어 넘는 방법을 알게됩니다. begin
에서 일치하는 end
으로 건너 뜁니다. 린디 댄서 (LindyDancer)가 지적했듯이, 그러한 것들은 일반적으로 들여 쓰기에 필요하며 실제로 SMIE의 주된 동기는 일반 들여 쓰기 엔진을 제공하는 것이 었습니다.
이제 Verilog는 SMIE를 사용하지 않지만 유사한 탐색 명령을 구현합니다. 이 예상치 못한 순간에 버퍼의 끝을 부딪 경우 verilog-forward-sexp
당신에게 적절한 경고/오류를 줄 것이다한다면 당신은 아마 나도 몰라
(defun sm-verilog-check-parens()
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(verilog-forward-sexp))))
상점 같은 것을 시도 할 수 있습니다.
이와 비슷한 항목은 일반적으로 들여 쓰기 엔진에서 처리됩니다. 예를 들어 전체 버퍼를 표시하고'indent-region'을 실행하여 구문을 검사 할 수 있습니다. 파일의 끝 부분이 들여 쓰기가 잘못되면 시작/끝 불일치가 발생합니다. – Lindydancer
@Lindydancer 감사합니다.하지만 여러 편집자가 동시에 여러 사람이 편집하는 코드 작업을하고 있습니다. 따라서 코드의 다른 부분이 여러 가지 방법으로 들여 쓰기되어 있습니다. 또한 파일 중 일부는 매우 길어서 모든'indent-region '을 선택하는 데 오랜 시간이 걸릴 수 있습니다 ... – kiteflyingmonkey
이 경우 필자는 사용자 정의 패키지를 작성하여 일치하는 시작/끝 쌍을 찾습니다. 사소한 일은 아니지만, 새로운 일이라면 elisp에서 좋은 운동이 될 것이라고 생각합니다. – Lindydancer