2015-04-22 57 views
3

當標籤已經存在於標題中時,我討厭分配標籤。我想找出一種方法讓組織模式評估標題(最好在我點擊「輸入」後),如果它包含任何與我的org-tag-alist中的標籤相匹配的單詞,請爲這些標籤創建標題。在組織模式下自動分配標籤

舉個例子:

如果我有各種各樣的人的名字和各種項目的名稱,甚至可能像「今天」,「明天」和「下週」已經在我的組織,標籤ALIST然後,當我輸入如下內容:

「TODO請記住明天向Joe詢問XYZ項目的到期日期。」 並點擊確定,標題將被評估,標籤:Joe:XYZ:明天:將會爲該項目生成。

有沒有人看到過這樣的事情,或者有什麼建議可以讓我自己去做?

+0

我只知道內置選項,它們基於當前緩衝區中的標記或全局標記 - 基於這些標記的完成,以及已爲快捷方式指定標記的速度命令:http:/ /orgmode.org/manual/Setting-tags.html#Setting-tags沒有內建函數根據當前標題特別建議標記。你所尋求的肯定是可能的,但有人需要寫一個定製的解決方案。 – lawlist

+0

我對emacs和組織模式比較陌生,但花費了相當多的時間在Web上搜索解決方案,所以我沒有真正期望解決方案是「內置的」。我希望有人看到或寫了一些編碼來做到這一點。看起來Erik已經做到了。 – OldEnough

回答

2

這個函數獲取入口點是一個的標題,將其分解成詞,並作爲標籤添加它發現在任何org-tag-alistorg-tag-persistent-alist

(defun org-auto-tag() 
    (interactive) 
    (let ((alltags (append org-tag-persistent-alist org-tag-alist)) 
     (headline-words (split-string (org-get-heading t t))) 
     ) 
    (mapcar (lambda (word) (if (assoc word alltags) 
          (org-toggle-tag word 'on))) 
      headline-words)) 
    ) 

任何詞,因爲這可能是添加的功能有用像這樣到org-capture-before-finalize-hook來自動標記新捕獲的條目。

+0

謝謝Erik!我會在第二天或第二天試試看看它是如何工作的。 – OldEnough

+0

我可以證實這個作品,但只有當大寫的單詞和標籤是相同的。我所有的標籤都是大寫的,所以在'org-get-heading'周圍添加'upcase'函數是必須的。 – Heikki