2014-05-16 2 views
0

이멕스에서 Etags을 사용할 때 문제가 있습니다. 매번 \ M +을 탭합니다.어떻게 Emacs에서 쿼리하지 않고 정의로 건너 뛸 수 있습니까?

찾기 태그 (기본 FUNCTION_NAME) :하십시오 해상력 지점으로 이동하는 쿼리는 항상 같이 진열되어

그리고 탭 그것을 확인하기 위해 '입력'해야합니다.

하지만 대부분의 경우 기본값을 선택할 수 있습니다. 그래서이 메시지를 부 풀릴 수있는 방법이 있습니까? 그 이유는 다음과 같았습니다. (defun find-tag (tagname &optional next-p regexp-p) (interactive (find-tag-interactive "Find tag: ")) ... )

왜 태그를 선택해야합니까? 왜 기본 언어가 그 아래의 단어가되지 않을까요? 이 선을 그냥 지울 수 있을까요? (interactive) 또는 좋은 해결책이 있습니까?

답변

0

Emacs의 awesome C-h f을 통해 etags 소스에서 몇 가지 오류가 발생하는 즉시 검색 할 기본 태그는 find-tag-default이라는 함수를 통해 결정됩니다.

(defun find-tag-under-point() 
    (interactive) 
    (find-tag (find-tag-default))) 

그런 다음 당신은 당신이 define-key 또는 global-set-key 또는 local-set-key를 통해 원하는대로 키에이 바인딩 할 수 있습니다 :

이 방금 다음 함수를 정의 할 수 있습니다 의미합니다.

은 (당신이 함수가 M-x 호출하거나 키에 바인딩 할 수있는 "명령"으로하려는 경우 interactive 형태는 항상 필요하다.)

+0

왜 이것을 다운 그레이드 했습니까? 그것은 다른 솔루션과 같은 솔루션입니다. (그리고 전에 게시했습니다.) 코드를 적게 넣고 작동하는지 테스트했습니다. – TaylanUB

-1

당신은 find-tag을 통해 자신의 기능을 쓰기 (또는 수 마찬가지로 어떤 대화 형 기능)

(defun find-tag-under-point (&optional arg) 
    (interactive "P") 
    (cond ((eq arg 9) 
    (let ((current-prefix-arg nil)) 
     (call-interactively 'find-tag))) 
    (arg 
    (call-interactively 'find-tag)) 
    (t 
    (find-tag (find-tag-default))))) 

(global-set-key (kbd "M-.") 'find-tag-under-point) 

그런 다음 바로 가기 키 C-9M-.은 평소와 마찬가지로 find-tag (이전 함수)을 호출하지만 기본적으로 find-tag-under-point (new-function)의 동작이 원합니다.

+0

고마워요! 하지만 이맥스가 질의를해야만하는 이유가 무엇입니까? 기본 태그를 선택할 수 있습니까? – ruanhao

+1

그럴리가. 'find-tag' 또는 익명 함수 대신에 다른 명명 된 함수를 사용해야합니다. (global-set-key (kbd "M-.") (lambda() (interactive)))))') – artscan

+0

내 대답은 본질적으로 똑같은 일이지만 질의가없고 기본값을 선택하는 것만으로도 분명히 @ruanhao가 원하는 것입니다. 왜 내 대답은 downvoted 모르겠어요. – TaylanUB