2012-03-14 3 views
1

etags는 글로벌 마크 스택을 사용하는 것으로 보입니다.멀티 버퍼에는 자체 etags 표시가 있습니까?

동일한 TAGS를 사용하는 두 개의 버퍼를 열면 하나의 버퍼 (A)에서 find-tags 작업을 수행 한 다음 다른 버퍼 (B)에서 find-tags 작업을 수행합니다. 다시 이전 버퍼 (A)로 전환하고 pop-tag-mark 작업을 수행합니다. 버퍼 B의 이전 마크 인 마크로 다시 점프합니다!

이 문제를 해결할 수있는 방법이 있습니까?

답변

0

우선, 이는 완전히 설계된 것입니다. 파일 내에서 점프하는 경우 imenu이 더 적합합니다.

(defun my-pop-tag-mark (arg) 
    "call `pop-tag-mark' without argument. 

Pop to the next mark in the current buffer wit C-u prefix." 
    (interactive "P") 
    (when (consp arg) 
    (let ((buf (current-buffer)) 
      index) 
     (loop for marker in (ring-elements find-tag-marker-ring) 
      for i from 0 below (ring-length find-tag-marker-ring) 
      do (when (eq (setq temp (marker-buffer marker)) 
         (current-buffer)) 
       (setq index i) 
       (return))) 
     (if index 
      (ring-insert find-tag-marker-ring (ring-remove find-tag-marker-ring index)) 
     (error "no marker found in current buffer.")))) 
    (pop-tag-mark)) 
:

이제

의이 디자인을 수정하려고하자