2012-03-14 27 views
1

看來etags使用全局標記堆棧。當我打開兩個使用相同標籤的緩衝區時,我在一個緩衝區(A)中執行find-tags操作,然後在另一個緩衝區(B)中執行find-tags操作。我切換回前一個緩衝區(A)並執行pop-tag-mark操作。它會跳回到緩衝區B的前一個標記!多緩存可以有自己的etags標記堆棧嗎?

有什麼辦法可以解決這個問題嗎?

回答

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)) 
相關問題