update packages
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
|
||||
;; Author: Erik Sjöstrand <sjostrand.erik@gmail.com>
|
||||
;; URL: http://github.com/Kungsgeten/org-brain
|
||||
;; Package-Version: 20201214.822
|
||||
;; Package-Commit: 2f36f303e96e384e17d156e0d6489211808d4a36
|
||||
;; Package-Version: 20210706.1519
|
||||
;; Package-Commit: 46ca9f766322cff31279ecdf02251ff24a0e9431
|
||||
;; Keywords: outlines hypermedia
|
||||
;; Package-Requires: ((emacs "25.1") (org "9.2"))
|
||||
;; Version: 0.94
|
||||
@@ -2266,14 +2266,18 @@ If interactive, also prompt for ENTRY."
|
||||
|
||||
;;;###autoload
|
||||
(defun org-brain-ensure-ids-in-buffer ()
|
||||
"Run `org-brain-get-id' on all headlines in current buffer.
|
||||
"Run `org-brain-get-id' on all headlines in current buffer
|
||||
taking into account the ignore tags such as :childess:
|
||||
Only works if in an `org-mode' buffer inside `org-brain-path'.
|
||||
Suitable for use with `before-save-hook'."
|
||||
(interactive)
|
||||
(and (eq major-mode 'org-mode)
|
||||
(string-prefix-p (file-truename org-brain-path)
|
||||
(file-truename (buffer-file-name)))
|
||||
(org-map-entries #'org-brain-get-id t 'file)))
|
||||
(let ((match (format "-%s-%s|-%s+TAGS={%s}" ; "-nobrain-childless|-nobrain+TAGS={childless}"
|
||||
org-brain-exclude-tree-tag org-brain-exclude-children-tag
|
||||
org-brain-exclude-tree-tag org-brain-exclude-children-tag)))
|
||||
(org-map-entries #'org-brain-get-id match 'file))))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-brain-agenda ()
|
||||
@@ -2382,6 +2386,7 @@ Unless WANDER is t, `org-brain-stop-wandering' will be run."
|
||||
(setq-local indent-tabs-mode nil)
|
||||
(read-only-mode 1)
|
||||
(setq-local default-directory (file-name-directory (org-brain-entry-path entry)))
|
||||
(setq list-buffers-directory (org-brain-vis-title entry))
|
||||
(org-brain-maybe-switch-brain)
|
||||
(unless (eq org-brain--vis-entry entry)
|
||||
(setq org-brain--vis-entry entry)
|
||||
@@ -2434,6 +2439,19 @@ Unless WANDER is t, `org-brain-stop-wandering' will be run."
|
||||
(pop-to-buffer "*org-brain*")
|
||||
(pop-to-buffer-same-window "*org-brain*")))))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-brain-visualize-dwim ()
|
||||
"Switch to the *org-brain* buffer.
|
||||
If there's no such buffer, or if already there, run `org-brain-visualize'."
|
||||
(interactive)
|
||||
(if (and (not (org-brain-maybe-switch-brain))
|
||||
(not (eq major-mode 'org-brain-visualize-mode))
|
||||
(get-buffer "*org-brain*"))
|
||||
(if org-brain-open-same-window
|
||||
(pop-to-buffer "*org-brain*")
|
||||
(pop-to-buffer-same-window "*org-brain*"))
|
||||
(call-interactively #'org-brain-visualize)))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-brain-visualize-entry-at-pt ()
|
||||
"Use `org-brain-visualize' on the `org-brain-entry-at-pt'.
|
||||
@@ -2779,11 +2797,26 @@ point before the buffer was reverted."
|
||||
(revert-buffer)
|
||||
(when button-entry (org-brain-jump-to-visualize-button button-entry)))))
|
||||
|
||||
(defun org-brain--bookmark-handler (bookmark)
|
||||
"Visualize the entry stored in BOOKMARK."
|
||||
(org-brain-visualize (cdr (assoc 'brain-entry bookmark)) nil)
|
||||
(switch-to-buffer "*org-brain*"))
|
||||
|
||||
(defun org-brain-make-bookmark-record ()
|
||||
"Make a bookmark out of `org-brain--vis-entry'.
|
||||
Used as `bookmark-make-record-function' in `org-brain-visualize-mode'."
|
||||
(if-let ((entry org-brain--vis-entry))
|
||||
(cons (org-brain-title org-brain--vis-entry)
|
||||
`((handler . org-brain--bookmark-handler)
|
||||
(brain-entry . ,org-brain--vis-entry)))
|
||||
(user-error "For some reason `org-brain--vis-entry' is nil")))
|
||||
|
||||
(define-derived-mode org-brain-visualize-mode
|
||||
special-mode "Org-brain Visualize"
|
||||
"Major mode for `org-brain-visualize'.
|
||||
\\{org-brain-visualize-mode-map}"
|
||||
(setq-local revert-buffer-function #'org-brain-visualize-revert))
|
||||
(setq-local revert-buffer-function #'org-brain-visualize-revert)
|
||||
(setq-local bookmark-make-record-function #'org-brain-make-bookmark-record))
|
||||
|
||||
;;;;; Keybindings
|
||||
|
||||
@@ -2859,11 +2892,60 @@ point before the buffer was reverted."
|
||||
|
||||
;;;;; Drawing helpers
|
||||
|
||||
(defun org-brain--visually-sort (lst)
|
||||
"Sort LST destructively according to org-brain-visualize-sort-function."
|
||||
(sort lst org-brain-visualize-sort-function))
|
||||
|
||||
(defun org-brain--visually-sorted (lst)
|
||||
"Sorted LST according to org-brain-visualize-sort-function."
|
||||
(org-brain--visually-sort (copy-sequence lst)))
|
||||
|
||||
(defun org-brain--maybe-visually-sort (entry lst)
|
||||
"Sorted LST unless ENTRY has a :nosort: tag."
|
||||
(if (member org-brain-no-sort-children-tag (org-brain-get-tags entry))
|
||||
lst
|
||||
(org-brain--visually-sort lst)))
|
||||
|
||||
(defun org-brain--visually-sorted-parents (entry)
|
||||
"List of parents, sorted unless ENTRY has a :nosort: tag."
|
||||
(org-brain--maybe-visually-sort entry (org-brain-parents entry)))
|
||||
|
||||
(defun org-brain--visually-sorted-children (entry)
|
||||
"List of children, sorted unless ENTRY has a :nosort: tag."
|
||||
(org-brain--maybe-visually-sort entry (org-brain-children entry)))
|
||||
|
||||
(defun org-brain--visually-sorted-friends (entry)
|
||||
"List of friends, sorted unless ENTRY has a :nosort: tag."
|
||||
(org-brain--maybe-visually-sort entry (org-brain-friends entry)))
|
||||
|
||||
(defun org-brain--visually-sorted-siblings (entry)
|
||||
"List of siblings, sorted unless ENTRY has a :nosort: tag."
|
||||
(let ((siblings (org-brain-siblings entry)))
|
||||
(if (member org-brain-no-sort-children-tag (org-brain-get-tags entry))
|
||||
siblings
|
||||
(sort siblings (lambda (x y)
|
||||
(funcall org-brain-visualize-sort-function
|
||||
(car x) (car y)))))))
|
||||
|
||||
(defun org-brain--visually-sorted-siblings-from (pair)
|
||||
"List of siblings for a parent, sorted unless the parent in PAIR has a :nosort: tag, or empty list if the parent has a :nosiblings: tag."
|
||||
(let ((parent (car pair)))
|
||||
(unless (member org-brain-exclude-siblings-tag (org-brain-get-tags parent))
|
||||
(org-brain--maybe-visually-sort parent (cdr pair)))))
|
||||
|
||||
(defun org-brain--visually-sorted-pins ()
|
||||
"List of pins visually sorted."
|
||||
(org-brain--visually-sorted org-brain-pins))
|
||||
|
||||
(defun org-brain--visually-sorted-selected ()
|
||||
"Visually sorted selection list."
|
||||
(org-brain--visually-sorted org-brain-selected))
|
||||
|
||||
(defun org-brain--vis-pinned ()
|
||||
"Insert pinned entries.
|
||||
Helper function for `org-brain-visualize'."
|
||||
(insert "PINNED:")
|
||||
(dolist (pin (sort (copy-sequence org-brain-pins) org-brain-visualize-sort-function))
|
||||
(dolist (pin (org-brain--visually-sorted-pins))
|
||||
(insert " ")
|
||||
(org-brain-insert-visualize-button pin 'org-brain-pinned 'pinned))
|
||||
(insert "\n"))
|
||||
@@ -2873,7 +2955,7 @@ Helper function for `org-brain-visualize'."
|
||||
Helper function for `org-brain-visualize'."
|
||||
(unless (null org-brain-selected)
|
||||
(insert "SELECTED:")
|
||||
(dolist (selection (sort (copy-sequence org-brain-selected) org-brain-visualize-sort-function))
|
||||
(dolist (selection (org-brain--visually-sorted-selected))
|
||||
(insert " ")
|
||||
(org-brain-insert-visualize-button selection 'org-brain-selected-list))
|
||||
(insert "\n")))
|
||||
@@ -2910,15 +2992,11 @@ Helper function for `org-brain-visualize'."
|
||||
(defun org-brain--vis-parents-siblings (entry)
|
||||
"Insert parents and siblings of ENTRY.
|
||||
Helper function for `org-brain-visualize'."
|
||||
(when-let ((siblings (org-brain-siblings entry)))
|
||||
(when-let ((siblings (org-brain--visually-sorted-siblings entry)))
|
||||
(let ((parent-positions nil)
|
||||
(max-width 0))
|
||||
(dolist (parent (sort siblings (lambda (x y)
|
||||
(funcall org-brain-visualize-sort-function
|
||||
(car x) (car y)))))
|
||||
(let* ((parent-tags (org-brain-get-tags (car parent)))
|
||||
(children-links (unless (member org-brain-exclude-siblings-tag parent-tags)
|
||||
(cdr parent)))
|
||||
(dolist (parent siblings)
|
||||
(let* ((children-links (org-brain--visually-sorted-siblings-from parent))
|
||||
(sibling-middle (ceiling (/ (length children-links) 2.0)))
|
||||
(base-line (if org-brain-show-history 5 4))
|
||||
(col-start (+ 3 max-width))
|
||||
@@ -2936,9 +3014,7 @@ Helper function for `org-brain-visualize'."
|
||||
'org-brain-sibling) 'sibling)
|
||||
(setq max-width (max max-width (current-column)))
|
||||
(newline (forward-line 1)))
|
||||
(if (member org-brain-no-sort-children-tag parent-tags)
|
||||
children-links
|
||||
(sort children-links org-brain-visualize-sort-function)))
|
||||
children-links)
|
||||
(org-goto-line base-line)
|
||||
(forward-line (1- sibling-middle))
|
||||
(picture-forward-column col-start)
|
||||
@@ -2996,15 +3072,13 @@ Helper function for `org-brain-visualize'."
|
||||
"Insert children of ENTRY.
|
||||
Helper function for `org-brain-visualize'."
|
||||
(let ((tags (org-brain-get-tags entry t)))
|
||||
(when-let ((children (org-brain-children entry))
|
||||
(when-let ((children (org-brain--visually-sorted-children entry))
|
||||
(fill-col (if (member org-brain-each-child-on-own-line-tag
|
||||
(org-brain-get-tags entry))
|
||||
0
|
||||
(eval org-brain-child-linebreak-sexp))))
|
||||
(insert "\n\n")
|
||||
(dolist (child (if (member org-brain-no-sort-children-tag tags)
|
||||
children
|
||||
(sort children org-brain-visualize-sort-function)))
|
||||
(dolist (child children)
|
||||
(let ((child-title (org-brain-title child))
|
||||
(face (if (member entry (org-brain-local-parent child))
|
||||
'org-brain-local-child
|
||||
@@ -3017,9 +3091,9 @@ Helper function for `org-brain-visualize'."
|
||||
(defun org-brain--vis-friends (entry)
|
||||
"Insert friends of ENTRY.
|
||||
Helper function for `org-brain-visualize'."
|
||||
(when-let ((friends (org-brain-friends entry)))
|
||||
(when-let ((friends (org-brain--visually-sorted-friends entry)))
|
||||
(org-brain--insert-wire " <-> ")
|
||||
(dolist (friend (sort friends org-brain-visualize-sort-function))
|
||||
(dolist (friend friends)
|
||||
(let ((column (current-column)))
|
||||
(org-brain-insert-visualize-button friend 'org-brain-friend 'friend)
|
||||
(picture-move-down 1)
|
||||
@@ -3075,7 +3149,8 @@ Each button is indented, starting at level determined by INDENT."
|
||||
(insert (org-brain-map-create-indentation indent))
|
||||
(org-brain-insert-visualize-button entry 'org-brain-child (if (> max-level 0) 'grandchild 'child))
|
||||
(insert "\n")
|
||||
(dolist (child (and (> max-level 0) (sort (org-brain-children entry) org-brain-visualize-sort-function)))
|
||||
(dolist (child (and (> max-level 0)
|
||||
(org-brain--visually-sorted-children entry)))
|
||||
(org-brain-insert-recursive-child-buttons child (1- max-level) (1+ indent))))
|
||||
|
||||
(defun org-brain-tree-depth (tree)
|
||||
@@ -3109,7 +3184,7 @@ raw entry data."
|
||||
Also insert buttons for grand-parents, up to MAX-LEVEL.
|
||||
Each button is indented, starting at level determined by INDENT."
|
||||
(dolist (parent (and (> max-level 0)
|
||||
(sort (org-brain-parents entry) org-brain-visualize-sort-function)))
|
||||
(org-brain--visually-sorted-parents entry)))
|
||||
(org-brain-insert-recursive-parent-buttons parent (1- max-level) (1- indent)))
|
||||
(insert (org-brain-map-create-indentation indent))
|
||||
(org-brain-insert-visualize-button entry 'org-brain-parent (if (> max-level 0) 'grandparent 'parent))
|
||||
@@ -3122,30 +3197,25 @@ Will also insert grand-parents up to PARENT-MAX-LEVEL, and
|
||||
children up to CHILDREN-MAX-LEVEL.
|
||||
Return the position of ENTRY in the buffer."
|
||||
(insert "FRIENDS:")
|
||||
(dolist (friend (sort (org-brain-friends entry) org-brain-visualize-sort-function))
|
||||
(dolist (friend (org-brain--visually-sorted-friends entry))
|
||||
(insert " ")
|
||||
(org-brain-insert-visualize-button friend 'org-brain-friend 'friend))
|
||||
(setq-local org-brain--visualize-header-end-pos (point))
|
||||
(insert "\n\n")
|
||||
(let ((indent (1- (org-brain-tree-depth (org-brain-recursive-parents entry parent-max-level))))
|
||||
(entry-pos))
|
||||
(dolist (parent (sort (org-brain-siblings entry) (lambda (x y)
|
||||
(funcall org-brain-visualize-sort-function
|
||||
(car x) (car y)))))
|
||||
(dolist (parent (org-brain--visually-sorted-siblings entry))
|
||||
(org-brain-insert-recursive-parent-buttons (car parent) (1- parent-max-level) (1- indent))
|
||||
(let* ((parent-tags (org-brain-get-tags (car parent)))
|
||||
(children-links (unless (member org-brain-exclude-siblings-tag parent-tags)
|
||||
(cdr parent))))
|
||||
(dolist (sibling (sort children-links org-brain-visualize-sort-function))
|
||||
(insert (org-brain-map-create-indentation indent))
|
||||
(org-brain-insert-visualize-button sibling 'org-brain-sibling 'sibling)
|
||||
(insert "\n"))))
|
||||
(dolist (sibling (org-brain--visually-sorted-siblings-from parent))
|
||||
(insert (org-brain-map-create-indentation indent))
|
||||
(org-brain-insert-visualize-button sibling 'org-brain-sibling 'sibling)
|
||||
(insert "\n")))
|
||||
(insert (org-brain-map-create-indentation indent))
|
||||
(setq entry-pos (point))
|
||||
(insert (propertize (org-brain-title entry)
|
||||
'face 'org-brain-title
|
||||
'aa2u-text t) "\n")
|
||||
(dolist (child (sort (org-brain-children entry) org-brain-visualize-sort-function))
|
||||
(dolist (child (org-brain--visually-sorted-children entry))
|
||||
(org-brain-insert-recursive-child-buttons child (1- children-max-level) (1+ indent)))
|
||||
entry-pos))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user