diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 7bc7dc1762..bbe11967f0 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el @@ -221,8 +221,7 @@ remember-handler-functions :options '(remember-store-in-mailbox remember-append-to-file remember-store-in-files - remember-diary-extract-entries - org-remember-handler) + remember-diary-extract-entries) :group 'remember) (defcustom remember-all-handler-functions nil @@ -410,16 +409,28 @@ remember-time-format :group 'remember :version "27.1") +(defcustom remember-item-format-function nil + "The function to format a remembered item. +The function receives one argument, the remember text, and +should return the text to be remembered. +If nil, use default format.'" + :type 'function + :group 'remember + :version "28.1") + (defun remember-append-to-file () "Remember, with description DESC, the given TEXT." (let* ((text (buffer-string)) + (buf (find-buffer-visiting remember-data-file)) (desc (remember-buffer-desc)) - (remember-text (concat "\n" remember-leader-text - (format-time-string remember-time-format) - " (" desc ")\n\n" text + (remember-text (concat "\n" + (if remember-item-format-function + (funcall remember-item-format-function text) + (concat remember-leader-text + (format-time-string remember-time-format) + " (" desc ")\n\n" text)) (save-excursion (goto-char (point-max)) - (if (bolp) nil "\n")))) - (buf (find-buffer-visiting remember-data-file))) + (if (bolp) nil "\n"))))) (if buf (with-current-buffer buf (save-excursion @@ -502,6 +513,12 @@ remember-diary-file :type '(choice (const :tag "diary-file" nil) file) :group 'remember) +(defcustom remember-diary-regexp "^DIARY:\\s-*\\(.+\\)" + "Regexp to extract diary entries." + :type '(regexp :tag "Diary entry") + :group 'remember + :version "28.1") + (defvar calendar-date-style) ; calendar.el (defun remember-diary-convert-entry (entry) @@ -534,15 +551,18 @@ remember-diary-convert-entry ;;;###autoload (defun remember-diary-extract-entries () - "Extract diary entries from the region." + "Extract diary entries from the region based on `remember-diary-regexp'." (save-excursion (goto-char (point-min)) (let (list) - (while (re-search-forward "^DIARY:\\s-*\\(.+\\)" nil t) + (while (re-search-forward remember-diary-regexp nil t) (push (remember-diary-convert-entry (match-string 1)) list)) (when list (diary-make-entry (mapconcat 'identity list "\n") - nil remember-diary-file)) + nil remember-diary-file t) + (when remember-save-after-remembering + (with-current-buffer (find-buffer-visiting diary-file) + (save-buffer)))) nil))) ;; Continue processing ;;; Internal Functions: