annotate lisp/calendar/todo-mode.el @ 19102:b605b8dbb880

Cleaned up variables, prefix and cursor position.
author Oliver Seidel <os10000@seidel-space.de>
date Sun, 03 Aug 1997 12:47:26 +0000
parents 31ba6200863a
children 96a5705f73d5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
1 ;; todomode.el -- major mode for editing Todo-List files
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
2
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
3 ;; ---------------------------------------------------------------------------
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
4
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
5 ;; Note: You may copy this file freely for non-commercial use; otherwise,
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
6 ;; please contact (address) O Seidel, Lessingstr 8, Eschborn, FRG
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
7 ;; (e-mail ) Oliver.Seidel@cl.cam.ac.uk (2 Aug 1997)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
8
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
9 ;; $Id: todomode.el,v 1.2 1997/08/03 12:15:28 os10000 Exp os10000 $
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
10 ;;
19101
31ba6200863a It appears to work.
Oliver Seidel <os10000@seidel-space.de>
parents: 19100
diff changeset
11 ;; $Log: todomode.el,v $
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
12 ;; Revision 1.2 1997/08/03 12:15:28 os10000
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
13 ;; It appears to work.
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
14 ;;
19101
31ba6200863a It appears to work.
Oliver Seidel <os10000@seidel-space.de>
parents: 19100
diff changeset
15 ;; Revision 1.1 1997/08/03 12:15:13 os10000
31ba6200863a It appears to work.
Oliver Seidel <os10000@seidel-space.de>
parents: 19100
diff changeset
16 ;; Initial revision
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
17 ;;
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
18
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
19 ;; ---------------------------------------------------------------------------
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
20
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
21 ;; Description:
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
22 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
23 ;; To get this to work, make emacs execute the line "(require 'todomode)"
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
24 ;; and maybe initialise the variables below on startup.
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
25 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
26 ;; Then you have the following facilities available:
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
27 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
28 ;; M-x todo-mode will enter the todo list screen, here type
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
29 ;; p for the previous entry
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
30 ;; n for the next entry
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
31 ;; q to save the list and exit the buffer
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
32 ;; e to edit the current entry
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
33 ;; i to insert a new entry
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
34 ;; k to kill the current entry
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
35 ;; f to file the current entry, including a
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
36 ;; comment and timestamp
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
37 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
38 ;; I would recommend to add the following bindings to your global keymap:
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
39 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
40 ;; (global-set-key "\C-ct" 'todo-mode)
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
41 ;; (global-set-key "\C-ci" 'todo-cmd-inst)
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
42 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
43 ;; This will enable you to quickly find the todo-list, or to simply add an
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
44 ;; entry, without changing to it and getting sidetracked from your current
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
45 ;; project.
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
46 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
47 ;; I would also recommend that you execute the command
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
48 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
49 ;; (setq todo-prefix "*/* ")
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
50 ;;
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
51 ;; to have all your entries prefixed in such a way that the diary displays
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
52 ;; them every day.
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
53
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
54 ;; ---------------------------------------------------------------------------
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
55
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
56 ;; User-configurable variables:
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
57
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
58 (defvar todo-prefix "" "TODO mode prefix when creating entries")
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
59 (defvar todo-file-do "~/.todo-do" "TODO mode filename of list file")
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
60 (defvar todo-file-done "~/.todo-done" "TODO mode filename of archive file")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
61 (defvar todo-mode-hook nil "Hooks invoked when the *TODO* buffer is created.")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
62
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
63 ;; ---------------------------------------------------------------------------
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
64
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
65 (require 'time-stamp)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
66
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
67 (defvar todo-begin (point-min) "TODO mode beginning of line")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
68 (defvar todo-end (point-min) "TODO mode end of line")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
69
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
70 (setq todo-mode-map (make-keymap))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
71 (suppress-keymap todo-mode-map)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
72 (define-key todo-mode-map "p" 'todo-cmd-prev)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
73 (define-key todo-mode-map "n" 'todo-cmd-next)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
74 (define-key todo-mode-map "q" 'todo-cmd-done)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
75 (define-key todo-mode-map "e" 'todo-cmd-edit)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
76 (define-key todo-mode-map "i" 'todo-cmd-inst)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
77 (define-key todo-mode-map "k" 'todo-cmd-kill)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
78 (define-key todo-mode-map "f" 'todo-cmd-file)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
79
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
80 (defun todo-cmd-prev () "Select previous entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
81 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
82 (forward-line -1)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
83 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
84 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
85 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
86
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
87 (defun todo-cmd-next () "Select next entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
88 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
89 (forward-line 1)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
90 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
91 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
92 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
93
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
94 (defun todo-cmd-done () "Done with todo list for now."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
95 (interactive)
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
96 (beginning-of-line nil)
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
97 (message "")
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
98 (save-buffer)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
99 (bury-buffer)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
100 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
101
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
102 (defun todo-line () "Find current line in buffer."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
103 (end-of-line nil) (setq todo-end (point))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
104 (beginning-of-line nil) (setq todo-begin (point))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
105 (buffer-substring todo-begin todo-end)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
106 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
107
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
108 (defun todo-cmd-edit () "Edit current todo list entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
109 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
110 (setq todo-entry (todo-line))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
111 (delete-region todo-begin todo-end)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
112 (insert (read-from-minibuffer "Edit: " todo-entry))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
113 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
114 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
115 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
116
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
117 (defvar todo-prv-lne 0 "previous line that I asked about.")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
118 (defvar todo-prv-ans 0 "previous answer that I got.")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
119
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
120 (defun todo-ask (lne) "Ask whether entry is more important than at LNE."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
121 (if (not (equal todo-prv-lne lne) )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
122 (progn
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
123 (setq todo-prv-lne lne)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
124 (goto-line todo-prv-lne)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
125 (setq todo-prv-ans (y-or-n-p (concat "More important than '" (todo-line) "'? ")))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
126 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
127 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
128 todo-prv-ans
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
129 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
130
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
131 (defun todo-cmd-inst () "Insert new todo list entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
132 (interactive)
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
133 (beginning-of-line nil)
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
134 (setq todo-entry (concat "*/* " (read-from-minibuffer "New TODO entry: ")))
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
135 (save-window-excursion
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
136 (find-file todo-file-do)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
137 (setq todo-prv-lne 0)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
138 (let* ((todo-fst 1)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
139 (todo-lst (+ 1 (count-lines (point-min) (point-max)))))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
140 (while (< todo-fst todo-lst)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
141 (setq todo-cur (/ (+ todo-fst todo-lst) 2))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
142 (setq todo-ans (if (< todo-cur todo-lst) (todo-ask todo-cur) nil))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
143 (if todo-ans
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
144 (setq todo-lst todo-cur)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
145 (setq todo-fst (+ todo-cur 1)))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
146 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
147 (goto-line todo-fst)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
148 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
149 (insert (concat todo-entry "\n"))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
150 (forward-char -1)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
151 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
152 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
153 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
154 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
155
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
156 (defun todo-cmd-kill () "Delete current todo list entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
157 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
158 (if (> (count-lines (point-min) (point-max)) 0)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
159 (progn
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
160 (setq todo-entry (todo-line))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
161 (setq todo-answer (y-or-n-p (concat "Permanently remove '" todo-entry "'? ")))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
162 (if todo-answer (progn (delete-region todo-begin (+ 1 todo-end)) (forward-char -1)))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
163 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
164 (message "No entry to delete.")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
165 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
166 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
167 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
168 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
169
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
170 (defun todo-cmd-file () "File away the current todo list entry."
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
171 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
172 (if (> (count-lines (point-min) (point-max)) 0)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
173 (progn
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
174 (setq time-stamp-format " %2d, %y, %02I:%02M%p %b")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
175 (setq tmp (time-stamp-string))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
176 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
177 (insert (concat (substring tmp 19 22) (substring tmp 0 19)))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
178 (end-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
179 (insert (concat " (" (read-from-minibuffer "Comment: ") ")"))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
180 (todo-line)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
181 (append-to-file todo-begin (+ 1 todo-end) todo-file-done)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
182 (delete-region todo-begin (+ 1 todo-end))
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
183 (forward-char -1)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
184 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
185 (message "No entry to delete.")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
186 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
187 (beginning-of-line nil)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
188 (message "")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
189 )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
190
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
191 ;; ---------------------------------------------------------------------------
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
192
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
193 (defun todo-mode ()
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
194 "Major mode for editing TODO lists.\n\n\\{todo-mode-map}"
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
195 (interactive)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
196 (find-file todo-file-do)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
197 (setq major-mode 'todo-mode)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
198 (setq mode-name "TODO")
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
199 (use-local-map todo-mode-map)
19102
b605b8dbb880 Cleaned up variables, prefix and cursor position.
Oliver Seidel <os10000@seidel-space.de>
parents: 19101
diff changeset
200 (beginning-of-line nil)
19100
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
201 (run-hooks 'todo-mode-hook) )
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
202
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
203 (provide 'todomode)
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
204
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
205 ;; ---------------------------------------------------------------------------
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
206
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
207 ;;; todomode.el ends here
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
208
0cbf5673993f Initial revision
Oliver Seidel <os10000@seidel-space.de>
parents:
diff changeset
209 ;; ---------------------------------------------------------------------------