2012-04-07 38 views
4

假設我有以下標記的文件(或稱之爲標籤):Emacs:有沒有一種方法可以獲得自定義標籤列表 - 並導航通過它們?

test.el:

;; ===== 
;; gnus: 

some code here 

;; ==== 
;; ECB: 

some code here 

;; ===== 
;; code: 

some code here 

(在elisp的)

test.py:

# ======== 
# imports: 

some code here 

# ===== 
# defs: 

some code here 

# ===== 
# args: 

some code here 

(在Python中)

所以我想有一個緩衝區,對於給定的緩衝區/文件,這樣的標記(或稱它爲標記)。它還應該有助於以某種方式通過此標籤導航 - 使用鼠標或鍵盤綁定(類似於rest-modetable of contents功能)。

我想通過修改一些etags函數來解決這個問題。但找不到一個(這是一個解決方案,因爲ECB在緩衝區中很好地顯示了etags - 就像我想的那樣)。

其他一些解決方案可能使用書籤 - 但書籤不是特定於文件的。它們是系統特定的。這是在書籤列表中您擁有所有書籤 - 而我只想獲取給定文件的書籤。

+0

我不使用歐洲央行,但是這是「標籤」在etags/ctags標籤文件?還是特定於ECB的東西?如果是前者,我強烈懷疑你可以對它進行索引評論。儘管如此,還是有書籤的增強功能,所以可能有改進書籤工作流程的方法。 – phils 2012-04-11 05:43:01

+0

現在我已經將大綱小調模式添加到混合中,我對「標記」的定義更加困惑。這是*絕對*不概述術語。你的問題仍然不明確。 – phils 2012-04-17 10:02:29

+0

@phils:你說得對 - 我的編輯與標籤無關。這只是通過自定義標記(或稱爲標籤)攻擊導航問題的另一種方式。也許我應該重新提出這個問題。 – Adobe 2012-04-17 10:04:29

回答

4

使用Emacs Lisp示例代碼,我解決了以下問題,可以將其添加到emacs-lisp模式的掛鉤中,並且應該很容易針對其他語言進行調整。

(make-local-variable 'outline-regexp) 
(setq outline-regexp ";; =+\n;; ") 
(make-local-variable 'outline-heading-end-regexp) 
(setq outline-heading-end-regexp ":\n") 
(outline-minor-mode 1) 

您現在可以使用標準大綱模式,其中有這樣的按鍵組合:

C-c @ C-p -> prevous header 
C-c @ C-n -> next header 

C-c @ C-t -> hide code between headers 
C-c @ C-a -> show all the code between headers 

如果您暫時隱藏頭,你會得到你的緩衝區的輪廓,將你想要的話再次顯示代碼。

對於python,只需要替換;;在#中的正則表達式。

outline-mode附帶Emacs,如果您需要更多信息,請在此處記錄。

+0

它的工作原理!這是驚人的!你好酷! – Adobe 2012-04-20 16:43:00

相關問題