Compare commits
No commits in common. "159c8c0eb692878751af8ce30ff7bd697bbc4c08" and "25a7051c12c0bade9693fe403f933b53b2bb6b78" have entirely different histories.
159c8c0eb6
...
25a7051c12
|
@ -620,46 +620,33 @@ query for it."
|
|||
(insert body)
|
||||
(org-update-statistics-cookies nil)))
|
||||
|
||||
(defun db/org-update-headline-log-note (&optional new-headline)
|
||||
(defun db/org-update-headline-log-note (new-headline)
|
||||
"Replace headline of item at point with NEW-HEADLINE.
|
||||
Interactively query for HEADLINE when not provided."
|
||||
(interactive)
|
||||
(interactive "sNew Headline: ")
|
||||
|
||||
(unless (derived-mode-p 'org-mode 'org-agenda-mode)
|
||||
(user-error "Neither in an Org mode nor Org agenda buffer, aborting"))
|
||||
|
||||
(unless new-headline
|
||||
(setq new-headline (read-string "New Headline: ")))
|
||||
|
||||
(unless (stringp new-headline)
|
||||
(user-error "New headline must be string"))
|
||||
;; We should check this before asking the user for the new headline, but how?
|
||||
(unless (derived-mode-p 'org-mode)
|
||||
(user-error "Not in an Org mode buffer, aborting"))
|
||||
|
||||
(when (string-match-p "\n" new-headline)
|
||||
(user-error "New headline contains newlines, aborting"))
|
||||
|
||||
(save-window-excursion
|
||||
(save-mark-and-excursion
|
||||
(when (derived-mode-p 'org-agenda-mode)
|
||||
(org-agenda-goto))
|
||||
(when (org-before-first-heading-p)
|
||||
(user-error "Point is before first headline, aborting"))
|
||||
|
||||
(when (org-before-first-heading-p)
|
||||
(user-error "Point is before first headline, aborting"))
|
||||
(let ((old-headline (org-entry-get (point) "ITEM")))
|
||||
(org-edit-headline new-headline)
|
||||
|
||||
(let ((old-headline (org-entry-get (point) "ITEM")))
|
||||
(org-edit-headline new-headline)
|
||||
|
||||
;; This simulates manually adding a note. It may also work by directly
|
||||
;; using `org-add-note', but this function makes use of `post-command-hook'
|
||||
;; in a way I do not understand. So let's try it that way.
|
||||
(move-marker org-log-note-marker (point))
|
||||
(let ((org-log-note-purpose 'note))
|
||||
(org-add-log-note nil)
|
||||
(insert ; This goes into the *Org Note* buffer.
|
||||
(format "Changed headline from: %s" old-headline))
|
||||
(org-store-log-note)))))
|
||||
|
||||
(when (derived-mode-p 'org-agenda-mode)
|
||||
(org-agenda-redo)))
|
||||
;; This simulates adding a note by manually. It may also work by directly
|
||||
;; using `org-add-note', but this function makes use of `post-command-hook'
|
||||
;; in a way I do not understand. So let's try it that way.
|
||||
(move-marker org-log-note-marker (point))
|
||||
(let ((org-log-note-purpose 'note))
|
||||
(org-add-log-note nil)
|
||||
(insert ; This goes into the *Org Note* buffer.
|
||||
(format "Changed headline from: %s" old-headline))
|
||||
(org-store-log-note))))
|
||||
|
||||
|
||||
;;; Calendar
|
||||
|
|
Loading…
Reference in New Issue
Block a user