枚举组织模式中的所有标签

Che*_*off 6 org-mode

如何:tag:在组织模式文件中生成所有标签(例如,)的枚举列表?假设我有一个表格列表:

* Head1        :foo:bar:
** Subhead1    :foo:
* Head2
** Subhead2    :foo:bar:
Run Code Online (Sandbox Code Playgroud)

我想生成此文件中所有标签的列表以及每个标签的使用次数。说点什么,

:foo:    3
:bar:    2  
Run Code Online (Sandbox Code Playgroud)

Joh*_*hin 5

这是一个较短的版本。

(defun get-tag-counts ()
  (let ((all-tags '()))
    (org-map-entries
     (lambda ()
       (let ((tag-string (car (last (org-heading-components)))))
     (when tag-string   
       (setq all-tags
         (append all-tags (split-string tag-string ":" t)))))))


    ;; now get counts
    (loop for tag in (-uniq all-tags) 
      collect (cons tag (cl-count tag all-tags :test 'string=)))))
Run Code Online (Sandbox Code Playgroud)


Joh*_*hin 0

这是一种方法。

(setq my-hash (make-hash-table :test 'equal))

(org-map-entries
 (lambda ()
   (let ((tag-string (car (last (org-heading-components))))
     (current-count))
     (when tag-string   
       (dolist (tag (split-string tag-string ":" t))

      (setq current-count (gethash tag my-hash))
     (if current-count;
         (puthash tag (+ 1 current-count)  my-hash)
       (puthash tag 1 my-hash))
     )
       )
     )
   )
 )

;; https://github.com/Wilfred/ht.el
(require 'ht)
(ht-map
 (lambda (key value)
   (list key value))
  my-hash)
Run Code Online (Sandbox Code Playgroud)