org-occur

今天才知道 org-occur是做什么的

但发现M-g n不好按 于是乎

;;; org-occur

(add-hook 'org-occur-hook 'chong-org-occur 'append)

(defun org-occur-overlay-current ()
  (let ((pos (point)) start end over)
    (mapc
     (lambda (ov)
       (setq start (overlay-start ov)
             end (overlay-end ov))
       (when (and (<= start pos)(>= end pos))
         (setq over ov)))
     org-occur-highlights)
    over))

(defvar chong-org-occur-keymap
  (let ((map (make-keymap))
        )
    (define-key map "n" 'next-error)
    (define-key map "p" 'previous-error)
    map))

(defun chong-org-occur-add-map ()
  (let ((ov (org-occur-overlay-current)))
    (unless (overlay-get ov 'keymap)
      (overlay-put
       ov
       'keymap chong-org-occur-keymap
       ))))

(defun chong-org-occur ()
  (org-occur-next-match 1)
  (chong-org-occur-add-map)
  )

(defun chong-org-next-error ()
  (chong-org-occur-add-map)
  )

(add-hook 'next-error-hook 'chong-org-next-error)

(provide 'chong-org)

自己给我自己结贴