annotate lisp/textmodes/remember-diary.el @ 86820:3565c4272a41

(prog-mode): Remove. (css-mode): Derive from fundamental-mode rather than prog-mode.
author Glenn Morris <rgm@gnu.org>
date Thu, 29 Nov 2007 04:30:58 +0000
parents 2a9d361b3986
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
85772
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
1 ;;; remember-diary --- extracting diary information from buffers
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
2
85782
c0f20db3e35a Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 85772
diff changeset
3 ;; Copyright (C) 1999, 2000, 2001, 2004, 2007 Free Software Foundation, Inc.
85772
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
4
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
5 ;; Author: Sacha Chua <sacha@free.net.ph>
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
6 ;; Created: 24 Mar 2004
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
7 ;; Keywords: data memory todo pim diary
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
8 ;; URL: http://gna.org/projects/remember-el/
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
9
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
11
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 3, or (at your option)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
15 ;; any later version.
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
16
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
21
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02110-1301, USA.
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
26
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
28
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
29 ;; This module recognizes entries of the form
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
30 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
31 ;; DIARY: ....
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
32 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
33 ;; and puts them in your ~/.diary (or remember-diary-file) together
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
34 ;; with an annotation. Planner-style dates (yyyy.mm.dd) are converted
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
35 ;; to yyyy-mm-dd so that diary can understand them.
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
36 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
37 ;; For example:
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
38 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
39 ;; DIARY: 2003.08.12 Sacha's birthday
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
40 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
41 ;; is stored as
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
42 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
43 ;; 2003.08.12 Sacha's birthday [[/home/sacha/notebook/emacs/emacs-wiki/remember-diary.el]]
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
44 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
45 ;; To use, add the following to your .emacs:
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
46 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
47 ;; (require 'remember-diary)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
48 ;; ;; This should be before other entries that may return t
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
49 ;; (add-to-list 'remember-handler-functions 'remember-diary-extract-entries)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
50 ;;
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
51
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
52 (require 'remember)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
53 (require 'diary-lib)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
54
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
55 ;;; Code:
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
56 (defcustom remember-diary-file diary-file
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
57 "*File for extracted diary entries."
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
58 :type 'file
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
59 :group 'remember)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
60
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
61 (defun remember-diary-convert-entry (entry)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
62 "Translate MSG to an entry readable by diary."
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
63 (save-match-data
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
64 (when remember-annotation
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
65 (setq entry (concat entry " " remember-annotation)))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
66 (if (string-match "\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)" entry)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
67 (replace-match
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
68 (if european-calendar-style
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
69 (concat (match-string 3 entry) "/"
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
70 (match-string 2 entry) "/"
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
71 (match-string 1 entry))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
72 (concat (match-string 2 entry) "/"
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
73 (match-string 3 entry) "/"
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
74 (match-string 1 entry)))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
75 t t entry)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
76 entry)))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
77
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
78 ;;;###autoload
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
79 (defun remember-diary-extract-entries ()
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
80 "Extract diary entries from the region."
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
81 (save-excursion
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
82 (goto-char (point-min))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
83 (let (list)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
84 (while (re-search-forward "^DIARY:\\s-*\\(.+\\)" nil t)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
85 (add-to-list 'list (remember-diary-convert-entry (match-string 1))))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
86 (when list
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
87 (make-diary-entry (mapconcat 'identity list "\n")
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
88 nil remember-diary-file))
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
89 nil))) ;; Continue processing
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
90
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
91 (provide 'remember-diary)
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
92
85806
2a9d361b3986 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 85782
diff changeset
93 ;; arch-tag: bda8a3f8-9a9b-46aa-8493-d71d7f1e445d
85772
6b9c41aaadf8 Check in Remember Mode
Michael Olson <mwolson@gnu.org>
parents:
diff changeset
94 ;;; remember-diary.el ends here