2009-05-11 2 views
7

Java 코드를 편집하는 Eclipse에서 open-paren을 입력하면 괄호 쌍을 얻을 수 있습니다. 그런 다음 두 번째 괄호를 "입력"하면 괄호가 추가로 삽입되지 않습니다. 이멕스에서 어떻게 구할 수 있습니까?Emacs typeover skeleton-pair-insert-maybe

이클립스 편집기는 내가 닫은 괄호를 칠 때, 내가 시작한 것을 끝내고 있다는 것을 알기에 충분히 똑똑하다. 커서가 닫기 괄호를지나갑니다. 그런 다음 세미콜론을 입력하면 세미콜론을 지나치게 덮어 쓰고 두 개를 얻지 못합니다.

자바 모드에서 open-paren을 skeleton-pair-insert-maybe에 바인드하면 csharp-mode에서 open-close paren 쌍을 얻을 수 있습니다. 그런데 내가 가까운 괄호를 통해 "입력"하면 두 개의 가깝게 괄호가 붙습니다.

바로 앞의 skeleton-pair-insert-maybe 이후에 닫기 펜을 삽입하지 않도록 emacs를 가르치는 방법이 있습니까? 그리고 그것이 가능하다면 세미콜론을 두 배로 사용하는 것을 피하기위한 유사한 지능은 무엇입니까?

나는 괄호에 대해 물어 보았지만, 큰 따옴표, 중괄호, 대괄호 등에도 동일하게 적용됩니다. skeleton-pair-insert-maybe를 사용하여 삽입 한 것.

답변

4

This post은 원하는 작업을 수행하는 방법을 보여줍니다. 또한 보너스로 설정 방법을 보여주기 때문에 여는 문자 다음에 즉시 백 스페이스하면 커서 뒤의 닫는 문자도 삭제됩니다.

업데이트 : 나는이 대답을 게시 때문에, 나는이 사용 사례에 대한 거의 완벽한 시스템입니다 Autopair을 발견했습니다

. 나는 그것을 많이 사용하고 그것을 사랑했습니다.

+0

간단하고 쉬운 . 내가 원했던 것. – Cheeso

+0

자동 쌍 = 완벽. 내가 원했던 것. – yesudeep

1

나는 이것을 더 많이 수행하는 paredit-mode를 사용합니다.

0

ParEdit은 Common Lisp and Scheme 용으로 설계된주의 사항과 함께 필요에 따라 괄호 부분을 처리하는 것처럼 들립니다. Steve Yegge mentions JDEE for emacs Java development,하지만 개인적인 경험으로는 말할 수 없으며 구조화 된 편집에 대한 문서는 찾을 수 없습니다.

2

내가 한 일을 요약하면이 게시물을보고 내가 원하는 것을 가져갔습니다. 내가 가진 추가 요구 사항이 없었기 때문에 결국 간단 해졌습니다.

(defvar cheeso-skeleton-pair-alist 
    '((?\) . ?\() 
    (?\] . ?\[) 
    (?" . ?"))) 


(defun cheeso-skeleton-pair-end (arg) 
    "Skip the char if it is an ending, otherwise insert it." 
    (interactive "*p") 
    (let ((char last-command-char)) 
    (if (and (assq char cheeso-skeleton-pair-alist) 
      (eq char (following-char))) 
     (forward-char) 
     (self-insert-command (prefix-numeric-value arg))))) 

그리고 내 자바 모드 - 후크에, 나는 근접 괄호와 근접 브래킷이 방법을 바인딩 :

나는이 두 가지 새로운 정의를 사용

(local-set-key (kbd ")") 'cheeso-skeleton-pair-end) 
(local-set-key (kbd "]") 'cheeso-skeleton-pair-end)