]> git.eshelyaron.com Git - emacs.git/log
emacs.git
11 years ago* todos.el (todos-edit-done-item-comment): Rename from
Stephen Berman [Sun, 9 Jun 2013 21:22:33 +0000 (23:22 +0200)]
* todos.el (todos-edit-done-item-comment): Rename from
todos-done-item-add-edit-or-delete-comment.
(todos-key-bindings-t): Use it.

11 years ago* todos.el: Fix and improve item date string editing.
Stephen Berman [Sun, 9 Jun 2013 19:16:39 +0000 (21:16 +0200)]
* todos.el: Fix and improve item date string editing.
(todos-date-pattern): Make dayname an explicitly numbered group.
(todos-basic-edit-item-header): Set match for dayname and use it
to ensure attempting to edit day, month or year of a date header
containing a day name is a noop, simplifying and fixing buggy code.

11 years ago* todos.el: Improve commentary.
Stephen Berman [Sat, 8 Jun 2013 23:40:21 +0000 (01:40 +0200)]
* todos.el: Improve commentary.
(todos-item-end): Revert last change, since bug#14565 is now fixed.

11 years ago* todos.el: Reorganize file structure again, to pacify byte-compiler.
Stephen Berman [Fri, 7 Jun 2013 22:55:42 +0000 (00:55 +0200)]
* todos.el: Reorganize file structure again, to pacify byte-compiler.

11 years ago* todos.el: Fix byte-compiler warnings.
Stephen Berman [Wed, 5 Jun 2013 21:43:44 +0000 (23:43 +0200)]
* todos.el: Fix byte-compiler warnings.
(todos-merge-category): Relocate let-bound variable.
(todos-toggle-item-highlighting): Restrict to todos-mode,
todos-archive-mode and todos-filtered-items-mode.
(todos-toggle-item-header, todos-diary-goto-entry)
(todos-insert-sort-button): Let-bind variables that were
mistakenly free.
(todos-convert-legacy-files): Just require todo-mode instead of
conditionalizing it.
(todos-modes-set-2): Check whether hl-line-range-function is void.

11 years ago* todos.el: Further code cleanup. Changes to commentary. Remove
Stephen Berman [Wed, 5 Jun 2013 13:59:14 +0000 (15:59 +0200)]
* todos.el: Further code cleanup.  Changes to commentary.  Remove
autoload cookies.  Handle todo items in Fancy Diary display.
(todos-done-separator): Reinstate length one less than
window-width until bug#2749 is fixed.
(todos-diary-goto-entry): New function, extracted from adapted
definition of diary-goto-entry, which is removed to be added to
diary-lib.el.
(todos-powerset): Rename from todos-powerset-iterative and remove
defalias by this name.  Add doc string and comments.
(todos-modes-set-1, todos-modes-set-2, todos-modes-set-3)
(todos-mode-external-set): Add doc string.

11 years ago* todos.el (todos-add-item-if-new-category): Change default value.
Stephen Berman [Tue, 4 Jun 2013 22:34:11 +0000 (00:34 +0200)]
* todos.el (todos-add-item-if-new-category): Change default value.
(todos-show, todos-jump-to-category, todos-add-file)
(todos-add-category): Update doc string to reflect new default
prompt for item insertion.
(todos-add-file): Add omitted argument to called-interactively-p.
(todos-show): Improve handling of adding first category.

11 years ago* todos.el: Allow prompting for first item on adding a new
Stephen Berman [Tue, 4 Jun 2013 14:51:01 +0000 (16:51 +0200)]
* todos.el: Allow prompting for first item on adding a new
category.  Fix handling of default todo file on adding first file.
(todos-add-item-if-new-category): New defcustom.
(todos-show, todos-jump-to-category, todos-add-category): Use it.
(todos-short-file-name): Return nil if file name is not a string.
(todos-add-file): Recalculate todos-files after adding a file.
(todos-show): If first file was just added, make it the default.

11 years ago* todos.el (todos-read-category, todos-merge-category):
Stephen Berman [Tue, 4 Jun 2013 11:06:18 +0000 (13:06 +0200)]
* todos.el (todos-read-category, todos-merge-category):
Fix argument value to accord with documented change from 2013-05-14.

11 years ago* todos.el: More code cleanup. Update file copyright and author
Stephen Berman [Mon, 3 Jun 2013 13:54:28 +0000 (15:54 +0200)]
* todos.el: More code cleanup.  Update file copyright and author
lines, add commentary.  Reformat so most lines do not exceed 80
columns.  Fix doc strings problems found by checkdoc.
(todos-edit-file): Delete unused argument.
(todos-delete-item): Delete superfluous concat.
(todos-next-button, todos-previous-button): Delete optional
arguments, adjusting interactive spec accordingly, and add them as
non-nil arguments to the invocations of forward-button and
backward-button.

11 years ago* todos.el (todos-y-with-space): New defcustom.
Stephen Berman [Mon, 3 Jun 2013 08:35:37 +0000 (10:35 +0200)]
* todos.el (todos-y-with-space): New defcustom.
(todos-y-or-n-p): New function.
(todos-delete-category, todos-move-category, todos-delete-item)
(todos-done-item-add-edit-or-delete-comment, todos-item-undone)
(todos-find-archive, todos-archive-done-item, todos-search)
(todos-read-category): Use it instead of y-or-n-p.

11 years ago* todos.el (todos-show-categories-table): Correct doc string.
Stephen Berman [Sun, 2 Jun 2013 21:37:57 +0000 (23:37 +0200)]
* todos.el (todos-show-categories-table): Correct doc string.
(todos-sort-categories-alphabetically-or-numerically): Rename from
todos-sort-categories-alphabetically-or-by-priority and adjust uses.
(todos-set-category-number): Rename from
todos-set-category-priority and adjust uses.
(todos-raise-category): Rename from todos-raise-category-priority
and adjust uses.
(todos-lower-category): Rename from todos-lower-category-priority
and adjust uses.

11 years ago* todos.el: Some custom cleanup.
Stephen Berman [Sat, 1 Jun 2013 16:01:47 +0000 (18:01 +0200)]
* todos.el: Some custom cleanup.
(todos-edit): Rename from todos-item-insertion and adjust doc string.
(todos-display): Rename from todos-mode-display.
(todos-item-mark, todos-undo-item-omit-comment): Change :group to
todos-edit.
(todos-indent-to-here): Change :group to todos-display.
(todos, todos-edit, todos-categories, todos-filtered)
(todos-display, todos-faces): Change :version to "24.4".

11 years ago* todos.el (todos-filtered-items-mode-map): Fix omission in
Stephen Berman [Sat, 1 Jun 2013 13:55:35 +0000 (15:55 +0200)]
* todos.el (todos-filtered-items-mode-map): Fix omission in
previous change.
(todos-mode): Comment out invocation of easy-menu-add, since menu
definition was commented out in last change.

11 years ago* todos.el: Move auto-mode-alist entries above provide sexp.
Stephen Berman [Fri, 31 May 2013 23:37:53 +0000 (01:37 +0200)]
* todos.el: Move auto-mode-alist entries above provide sexp.
Update adapted diary-goto-entry, so it also works with todo items
when the buffer in which the included todo file is processed for
the Fancy Diary is not killed.
(todos-insert-item-from-calendar): Move to item editing commands
section of file.  Add doc string, use todos-basic-insert-item and
remove mistaken invocation of todos-show.

11 years ago* todos.el (todos-edit-quit): After editing an item, make sure to
Stephen Berman [Fri, 31 May 2013 13:43:25 +0000 (15:43 +0200)]
* todos.el (todos-edit-quit): After editing an item, make sure to
return to its category.

11 years ago* todos.el: Clean up code. Uncapitalize file name in first line.
Stephen Berman [Fri, 31 May 2013 13:08:21 +0000 (15:08 +0200)]
* todos.el: Clean up code.  Uncapitalize file name in first line.
Require cl-lib instead of cl.  Add section title separators.
Reindent some code and comments.  Comment out Todos mode menu
definition.
(todos-basic-insert-item): Rename from todos-insert-item-1 and
adjust uses.
(todos-basic-edit-item-header): Rename from
todos-edit-item-header-1 and adjust uses.
(todos-display-categories): Rename from todos-display-categories-1
and adjust uses.
(todos-show, todos-basic-insert-item)
(todos-basic-edit-item-header, todos-set-item-priority)
(todos-item-undone, todos-convert-legacy-files)
(todos-check-format, todos-filter-items-1):
Use user-error instead of error.
(todos-add-file, todos-basic-insert-item, todos-mark)
(todos-button, todos-sorted-column, todos-archived-only)
(todos-search, todos-category-string)
(todos-top-priorities-overrides)
(todos-insertion-commands-args-genlist, todos-filter-items)
(todos-filter-items-1, todos-filtered-items-mode-map):
Correct or improve document string.
(todos-edit-file)
(todos-sort-categories-alphabetically-or-by-priority)
(todos-sort-categories-by-todo, todos-sort-categories-by-diary)
(todos-sort-categories-by-done)
(todos-sort-categories-by-archived, todos-next-button)
(todos-previous-button, todos-gen-arglists)
(todos-define-insertion-command)
(todos-insertion-commands-arg-key-list)
(todos-insertion-key-bindings, todos-update-categories-display):
Add document string.
(todos-powerset-recursive): Rename from powerset-recursive and
reformulate slightly.
(todos-powerset-iterative): Rename from powerset-bitwise and
reformulate.
(todos-insertion-commands-args): Use cl-remove-duplicates instead
of remove-duplicates.
(todos-define-insertion-command): Improve doc string of generated defun.
(todos-adjusted-category-label-length)
(todos-insert-category-line, todos-update-categories-display):
Call cl-oddp instead of inlining its definition.
(todos-key-bindings): Remove, replacing by the following.
(todos-key-bindings-t, todos-key-bindings-t+a+f)
(todos-key-bindings-t+a, todos-key-bindings-t+f): New variables.
(todos-mode-map): Use new key-binding variables.
(todos-archive-mode-map, todos-filtered-items-mode-map): Use new
key-binding variables.  Don't suppress digit keys.
(todos-categories-mode-map): Don't suppress digit keys.
(todos-modes-set-1, todos-modes-set-2, todos-modes-set-3)
(todos-mode, todos-archive-mode, todos-mode-external-set):
Use setq-local instead of make-local-variable.

11 years ago* todos.el: Reorganize file structure.
Stephen Berman [Fri, 24 May 2013 09:29:53 +0000 (11:29 +0200)]
* todos.el: Reorganize file structure.

11 years ago* todos.el (todos-edit-quit): Don't allow dateless item.
Stephen Berman [Wed, 22 May 2013 11:23:36 +0000 (13:23 +0200)]
* todos.el (todos-edit-quit): Don't allow dateless item.

11 years ago* todos.el (todos-key-bindings, todos-archive-mode-map)
Stephen Berman [Tue, 21 May 2013 13:49:12 +0000 (15:49 +0200)]
* todos.el (todos-key-bindings, todos-archive-mode-map)
(todos-filtered-items-mode-map): Update bindings.
(todos-find-archive): Rename from todos-show-archive and adjust uses.
(todos-find-filtered-items-file): New command.

11 years ago* todos.el: Use visual-line-mode instead of custom code.
Stephen Berman [Tue, 21 May 2013 10:04:44 +0000 (12:04 +0200)]
* todos.el: Use visual-line-mode instead of custom code.
(todos-line-wrapping-function, todos-wrap-and-indent): Remove.
(todos-wrap-lines, todos-indent-to-here): Update doc string.
(todos-modes-set-1): Use visual-line-mode.

11 years ago* todos.el (todos-read-file-name): Fix previous change to ensure
Stephen Berman [Tue, 21 May 2013 09:23:52 +0000 (11:23 +0200)]
* todos.el (todos-read-file-name): Fix previous change to ensure
it works when invoked outside of a Todos file.

11 years ago* todos.el: Fixes concerning filtered items.
Stephen Berman [Mon, 20 May 2013 14:26:08 +0000 (16:26 +0200)]
* todos.el: Fixes concerning filtered items.
(todos-mode-line-control): Make doc string more precise.
(todos-read-file-name): Default to current file when user hits RET
without choosing a file, to avoid creating file with empty base name.
(todos-filter-items): Rename buffer of filtered items files.
(todos-find-item): Save match data to avoid arg out of range error.
(todos-print-buffer): Fix header of filtered items buffer output.

11 years ago* todos.el (todos-done-separator): Use window-width for length, in
Stephen Berman [Fri, 17 May 2013 21:41:09 +0000 (23:41 +0200)]
* todos.el (todos-done-separator): Use window-width for length, in
anticipation of bug#2749 being fixed.

11 years ago* todos.el (todos-category-completions): Restore point after
Stephen Berman [Fri, 17 May 2013 14:26:58 +0000 (16:26 +0200)]
* todos.el (todos-category-completions): Restore point after
ensuring category is properly displayed.

11 years ago* todos.el (todos-filtered-items-mode-map): Update some bindings.
Stephen Berman [Thu, 16 May 2013 18:29:06 +0000 (20:29 +0200)]
* todos.el (todos-filtered-items-mode-map): Update some bindings.
(todos-show): Make it work the same in todos-archive-mode and
todos-filtered-items-mode as in todos-mode.
(todos-quit): When called in todos-archive-mode, switch to
corresponding category in todo file.  When called in todos-mode,
avoid going right back to archive.

11 years ago* todos.el: Improve toggling of item numbering and headers.
Stephen Berman [Thu, 16 May 2013 10:02:26 +0000 (12:02 +0200)]
* todos.el: Improve toggling of item numbering and headers.
(todos-prefix-overlays): Don't reset item numbering for
done items unless in todos-mode.
(todos-archive-mode-map): Add bindings for todos-toggle-item-header.
(todos-toggle-prefix-numbers): Reimplement without using
todos-reset-prefix and make it work in Todos Archive mode and
Todos Filtered Items mode.
(todos-toggle-item-header): Make it work in Todos Archive mode and
Todos Filtered Items mode.

11 years ago* todos.el: Use tab instead of spaces to indent.
Stephen Berman [Wed, 15 May 2013 14:44:07 +0000 (16:44 +0200)]
* todos.el: Use tab instead of spaces to indent.
(todos-indent-to-here): Change default value.
(todos-modes-set-1): Make tab-width a local variable and set it to
todos-indent-to-here.
(todos-insert-item-1, todos-edit-item): Use tab not spaces to indent.
(todos-edit-quit): Use tab not spaces to indent and fix omission of item.

11 years ago* todos.el (todos-jump-to-category): Fix wrong variable left over
Stephen Berman [Wed, 15 May 2013 13:24:45 +0000 (15:24 +0200)]
* todos.el (todos-jump-to-category): Fix wrong variable left over
from previous change.

11 years ago* todos.el: Improve handling of jumping to a category, in
Stephen Berman [Tue, 14 May 2013 21:52:19 +0000 (23:52 +0200)]
* todos.el: Improve handling of jumping to a category, in
particular that of an archive.
(todos-category-completions): Add optional parameter to restrict
completions of archive categories to current archive.  Exclude
archive from completion files.
(todos-read-category): When called from an archive, restrict
category completions to the archive.  Fix mistaken use of all
completion files instead of just those in which the chosen
category occurs.
(todos-archive-mode-map): Add new key binding.
(todos-jump-to-category): Rename second optional parameter and
extend its use to restricting category completions to the current
archive.
(todos-jump-to-archive-category): New command.

11 years ago* todos.el (todos-modes-set-2): Restore point after finding start
Stephen Berman [Mon, 13 May 2013 09:59:59 +0000 (11:59 +0200)]
* todos.el (todos-modes-set-2): Restore point after finding start
and end of hl-line-range-function.

11 years ago* todos.el: Fixes for item marking and marked items.
Stephen Berman [Mon, 13 May 2013 09:42:25 +0000 (11:42 +0200)]
* todos.el: Fixes for item marking and marked items.
(todos-toggle-mark-item): Make no-op if point is not on an item.
Toggle mark even if point is not at start of item.
(todos-item-done): Signal an error if a done item is marked.
Process marked todo items even if point is in done items section.

11 years ago* todos.el (todos-item-undone): Remove item highlighting when user
Stephen Berman [Sat, 11 May 2013 20:50:28 +0000 (22:50 +0200)]
* todos.el (todos-item-undone): Remove item highlighting when user
quits before deciding whether to omit comment.  Fix misplaced
closing paren.  Change two uses of `if' to `when'.

11 years ago* todos.el: Rename numerous commands and defcustoms and adjust all
Stephen Berman [Fri, 10 May 2013 22:57:47 +0000 (00:57 +0200)]
* todos.el: Rename numerous commands and defcustoms and adjust all
uses, change numerous key bindings, make some basic commands
noninteractive and use them to define the commands, unify
archiving commands.
(todos-directory): Rename from todos-files-directory.
(todos-print-buffer-function): Rename from todos-print-function.
(todos-number-prefix): Rename from todos-number-priorities.
(todos-top-priorities-overrides): Rename from todos-priorities-rules.
(todos-top-priorities): Rename from todos-show-priorities.
(todos-insertion-command-name, todos-insertion-key-bindings):
Use "todos-insert-item-".
(todos-key-bindings, todos-archive-mode-map)
(todos-categories-mode-map, todos-filtered-items-mode-map):
Adjust to renamed commands, make bindings more systematic,
reorder entries.
(todos-show-categories-table): Rename from todos-display-categories.
(todos-sort-categories-alphabetically-or-by-priority): Rename from
todos-display-categories-alphabetically-or-by-priority.
(todos-sort-categories-by-todo): Rename from
todos-display-categories-sorted-by-todo.
(todos-sort-categories-by-diary): Rename from
todos-display-categories-sorted-by-diary.
(todos-sort-categories-by-done): Rename from
todos-display-categories-sorted-by-done.
(todos-sort-categories-by-archived): Rename from
todos-display-categories-sorted-by-archived.
(todos-print-buffer): Rename function from todos-print.
(todos-print-buffer-to-file): Rename from todos-print-to-file.
(todos-go-to-source-item): Rename from todos-jump-to-item.
(todos-forward-item, todos-backward-item): Remove interactive form
and move most of doc string and prefix argument error checking to...
(todos-next-item, todos-previous-item): ...these new commands,
which use the preceding functions.
(todos-next-button): Rename from todos-forward-button.
(todos-previous-button): Rename from todos-backward-button.
(todos-toggle-prefix-numbers): Rename from
todos-hide-show-item-numbering.
(todos-toggle-view-done-items): Rename from todos-hide-show-done-items.
(todos-toggle-view-done-only): Rename from todos-show-done-only.
(todos-toggle-item-highlighting): Rename from todos-highlight-item.
(todos-toggle-item-header): Rename from todos-hide-show-date-time.
(todos-toggle-mark-item): Rename from todos-mark-unmark-item.
(todos-filter-top-priorities): Rename from todos-top-priorities.
(todos-filter-top-priorities-multifile): Rename from
todos-top-priorities-multifile.
(todos-filter-diary-items): Rename from todos-diary-items.
(todos-filter-diary-items-multifile): Rename from
todos-diary-items-multifile.
(todos-filter-regexp-items): Rename from todos-regexp-items.
(todos-filter-regexp-items-multifile): Rename from
todos-regexp-items-multifile.
(todos-insert-item-1): Remove interactive form, since
todos-insert-item is generated like other item insertion commands.
(todos-edit-file): Rename from todos-edit-multiline.
(todos-item-undone): Rename from todos-item-undo.
(todos-archive-done-item): Add raw prefix spec to interactive form
and use it to test for archiving all done items in category;
reorder tests in function body accordingly.
(todos-archive-category-done-items): Remove.

11 years ago* todos.el (todos-edit-multiline-item): Make a no-op when point is
Stephen Berman [Sat, 27 Apr 2013 13:28:18 +0000 (15:28 +0200)]
* todos.el (todos-edit-multiline-item): Make a no-op when point is
not on an item.

11 years ago* calendar/todos.el (todos-check-format): Add check of well-formedness of
Stephen Berman [Wed, 24 Apr 2013 22:30:43 +0000 (00:30 +0200)]
* calendar/todos.el (todos-check-format): Add check of well-formedness of
categories sexp.  If it is well-formed but differs from
todos-categories, do not signal an error but display a message.

11 years ago* todos.el: Fixes and improvements related to item relocation.
Stephen Berman [Sun, 21 Apr 2013 22:25:03 +0000 (00:25 +0200)]
* todos.el: Fixes and improvements related to item relocation.
(todos-category-completions): On ensuring proper category display,
if done items in category are visible, keep them visible.
(todos-set-item-priority): Keep top of category in view while
setting priority.
(todos-move-item): Restore prevention of moving within the same
category.  Move done items to top, not end, of done items section.
When user quits before setting priority, make sure to return to
starting file.
(todos-item-undo): Partly reimplement along lines of
todos-move-item, adding highlighting of single item as undo
target, setting priority of multiple undone items, improving
handling of quitting before setting priority.
(todos-unarchive-items): Restore items to top, not end, of
category's done section.

11 years ago* calendar/todos.el: Extend and improve item filtering and handling of
Stephen Berman [Fri, 19 Apr 2013 13:34:47 +0000 (15:34 +0200)]
* calendar/todos.el: Extend and improve item filtering and handling of
saved files of filtered items.
(todos-show-first): Add choices for diary and regexp items.
(todos-absolute-file-name): Handle file names for diary and regexp
items.
(todos-filter-items): New function abstracted from item filtering
commands, with handling of saved files of diary and regexp items.
(todos-filter-items-1): Rename from todos-filter-items.
(todos-filtered-buffer-name): Remove, since functionality is now
incorporated into new function todos-filter-items.
(todos-filtered-items-buffer, todos-top-priorities-buffer)
(todos-diary-items-buffer, todos-regexp-items-buffer):
Make defconsts instead of defcustoms.
(todos-find-item): Restrict calculation and comparison of
priorities to top priority items, in order to handle diary and
regexp items.
(todos-check-filtered-items-file): Rename from
todos-check-top-priorities and adjust message and callers.
(todos-filter-items-filename): Rename from
todos-top-priorities-filename, adjusting caller and extending to
files of filtered diary and regexp items.
(todos-save-filtered-items-buffer): Rename from
todos-save-top-priorities-buffer and adjust caller and uses.  Use
write-file instead of write-region and use existing file name if
previously saved.
(todos-show): Handle initially displaying saved file of filtered
diary or regexp items.
(todos-top-priorities, todos-top-priorities-multifile)
(todos-diary-items, todos-diary-items-multifile)
(todos-regexp-items, todos-regexp-items-multifile): Use new
function todos-filter-items.
(auto-mode-alist): Extend regexp for files assigned to
todos-filtered-items-mode to handle saved diary and regexp items.

11 years ago* calendar/todos.el (todos-insert-item): Fix mistake in logic of
Stephen Berman [Sun, 17 Mar 2013 23:09:13 +0000 (00:09 +0100)]
* calendar/todos.el (todos-insert-item): Fix mistake in logic of
here insertion from last change, and ensure category is set when
command is called from outside Todos buffer.

11 years ago* calendar/todos.el: Item unarchiving fixes and improvements.
Stephen Berman [Fri, 15 Mar 2013 23:32:31 +0000 (00:32 +0100)]
* calendar/todos.el: Item unarchiving fixes and improvements.
(todos-archive-mode-map): Add bindings for item and category
marking/unmarking; make todos-display-categories binding same as
in Todos mode; remove todos-unarchive-category binding.
(todos-unarchive-category): Remove.
(todos-unarchive-items): Fix handling of marked items.  Remove
code for unarchiving whole category, since that is covered by
unarchiving marked items.  Handle unarchiving items to a category
that had been deleted from the todo file by re-adding the
category.  Use todos-category-select to display restored items,
not todos-show.  Remove obsolete or superfluous code.

11 years ago* calendar/todos.el (todos-reset-prefix): Don't remove overlays,
Stephen Berman [Fri, 15 Mar 2013 12:04:16 +0000 (13:04 +0100)]
* calendar/todos.el (todos-reset-prefix): Don't remove overlays,
since it's superfluous and also wrongly removes items marks.
(todos-category-completions): Select current category on visiting
file, to ensure category is properly displayed if user switches to
file via a non-Todos command.
(todos-mark-category): Make implementation cleaner.
(todos-unmark-category): Improve implementation.  Get overlay
property only when there is an overlay.

11 years ago* calendar/todos.el (todos-insert-item): Fix last change to make
Stephen Berman [Thu, 14 Mar 2013 23:58:49 +0000 (00:58 +0100)]
* calendar/todos.el (todos-insert-item): Fix last change to make
sure calling insertion "here" from outside goal todo items section
gives new item top priority.  With priority insertion, if user
cancels before setting priority, restore display.
(todos-find-item): Restore narrowing after searching.
(todos-item-done): Allow adding (same) comment to marked items.
Don't add empty comment to done item.

11 years ago* calendar/todos.el (todos-quit): If quitting
Stephen Berman [Wed, 13 Mar 2013 23:58:32 +0000 (00:58 +0100)]
* calendar/todos.el (todos-quit): If quitting
todos-filtered-items-mode makes todos-mode current, don't call
todos-show, which (here wrongly) prompts for a new Todos file.
(todos-delete-category): Fix incorrect quotation mark.
(todos-set-item-priority): Make prefix argument a no-op with
commands for raising or lowering item priority.  Move mistakenly
place right paren to end of defun, where it belongs.

11 years ago* calendar/todos.el (todos-key-bindings): Add binding for `todos-show'.
Stephen Berman [Mon, 25 Feb 2013 22:55:27 +0000 (23:55 +0100)]
* calendar/todos.el (todos-key-bindings): Add binding for `todos-show'.
(todos-show): Prompt for which todo file to visit when invoked
from Todos mode.

11 years ago* calendar/todos.el: Item insertion and done/undo fixes.
Stephen Berman [Tue, 19 Feb 2013 22:29:28 +0000 (23:29 +0100)]
* calendar/todos.el: Item insertion and done/undo fixes.
(todos-insert-item): Maybe set the insertion file to
todos-global-current-todos-file.  When inserting into a file that
was not being visited on invoking this command, ensure chosen
category is properly selected.  Make item inserted "here" the
first todo item if the command was invoked with point in done
items section or outside of the current category.
(todos-item-done): When done items are shown, put cursor on first
just done item.
(todos-item-undo): Put cursor on undone item.

11 years ago* calendar/todos.el: Improve handling of overlays.
Stephen Berman [Sat, 16 Feb 2013 21:45:53 +0000 (22:45 +0100)]
* calendar/todos.el: Improve handling of overlays.
(todos-get-overlay): New function.
(todos-prefix-overlay): Remove, since subsumed by
todos-get-overlay, and replace by the latter in callers.
(todos-reset-prefix): Apply only to buffer visiting Todos files.
Simplify implementation and use `todos' overlay property.
(todos-reset-done-separator): Use todos-get-overlay and `todos'
overlay property.  Fix logic.
(todos-category-select): Use todos-get-overlay and `todos' overlay
property.
(todos-remove-item): Use todos-get-overlay.  Correct obsolete code.
(todos-prefix-overlays): Use todos-top-priority face also for
non-numerical prefix of top priority items.  Add `todos' overlay
property.
(todos-hide-show-date-time): Simplify, using todos-get-overlay and
`todos' overlay property.

11 years ago* calendar/todos.el (todos-edit-multiline, todos-edit-quit):
Stephen Berman [Thu, 14 Feb 2013 13:02:21 +0000 (14:02 +0100)]
* calendar/todos.el (todos-edit-multiline, todos-edit-quit):
Revert buffer renaming.

11 years ago* calendar/todos.el (todos-edit-quit): On quitting file editing,
Stephen Berman [Mon, 11 Feb 2013 21:54:51 +0000 (22:54 +0100)]
* calendar/todos.el (todos-edit-quit): On quitting file editing,
rename buffer back to current Todos file.  After selecting
category, put point at top instead of recentering.

11 years ago* calendar/todos.el (todos-edit-multiline-item): Revert to using
Stephen Berman [Fri, 8 Feb 2013 22:46:23 +0000 (23:46 +0100)]
* calendar/todos.el (todos-edit-multiline-item): Revert to using
indirect buffer, which makes it easier to return to Todos mode.
(todos-edit-quit): Don't delete and reinsert items that don't need
indenting.  Revert to just killing buffer on quitting single item
editing.  On quitting file editing, select nearest category.

11 years ago* calendar/todos.el: Bug fixes and improvements to item editing
Stephen Berman [Thu, 7 Feb 2013 23:38:36 +0000 (00:38 +0100)]
* calendar/todos.el: Bug fixes and improvements to item editing
and insertion.
(todos-check-format): Compare current value of todos-categories
with actual categories sexp.
(todos-repair-categories-sexp): Add warning to doc string about
category order getting restored to list element order.
(todos-mode-external-set): When todos-categories is nil, as in
Todos Edit mode, set it by reading actual categories sexp.
(todos-edit-mode): Make buffer writeable.
(todos-done-item-section-p): New function.
(todos-insert-item): Use it as part of preventing insertion here
in done items section.  Move check for display of done items only
to just before setting new item's priority, and if cancelled after
toggling to todo items, restore display of done items.
(todos-edit-multiline-item): Don't base on todos-edit-multiline
but just narrow and change mode.
(todos-edit-multiline): Don't make indirect buffer but just widen
and change mode; also remove overlays.
(todos-edit-quit): Restore Todos mode and category display; when
quitting multiline item editing, ensure items above edited item
are visible in window if possible.
(todos-done-item-add-edit-or-delete-comment): If user moved point
during editing, make sure it moves back to edited item before
returning.

11 years ago* calendar/todos.el (todos-reset-done-separator-string):
Stephen Berman [Tue, 5 Feb 2013 23:00:13 +0000 (00:00 +0100)]
* calendar/todos.el (todos-reset-done-separator-string):
Complete the implementation.
(todos-hide-show-done-items): If start of done items sections is
below the bottom of the window, make it visible.
(todos-insert-item): Allow inserting item here to work outside of
the current category, but then at top of category.  After checking
whether only done items are shown, restore point to ensure
inserting item here works correctly.
(todos-set-item-priority): Delete leftover right paren at end.

11 years ago* calendar/todos.el: Bug fixes involving or displaying done items.
Stephen Berman [Mon, 4 Feb 2013 21:54:25 +0000 (22:54 +0100)]
* calendar/todos.el: Bug fixes involving or displaying done items.
(todos-done-separator): Make length of long separator one less
than window-width, in order to avoid following empty line.
(todos-forward-item, todos-backward-item): Make empty line below
last todo item accessible only by invoking without a numerical
prefix argument and make the latter invocations move only to items.
(todos-insert-item): Set todos-current-todos-file after selecting
buffer, in order not to set global value.  If only done items are
shown when this command is invoked, toggle to show todo items to
avoid insertion into done items section.  When done items are
shown, protect from cancelling before setting item priority: this
also needs recentering to display all items.
(todos-set-item-priority): Only call on (not done) todo items.
Check that done items are visible not because file is widened.
Use only `any' argument of called-interactively-p.  Make sure that
giving an undone item lowest priority restores it to the todo
section.
(todos-item-done): If done items are visible on invoking this
command, keep them visible afterwards.  Stop looking for marked
items on reaching the empty line below the last todo item.

11 years ago* calendar/todos.el: Several small fixes and improvements.
Stephen Berman [Sat, 2 Feb 2013 23:06:23 +0000 (00:06 +0100)]
* calendar/todos.el: Several small fixes and improvements.
(todos-done-separator-string): Change default value.
(todos-update-categories-sexp): Remove unnecessary and misquided
setq of todos-default-todos-file.  Use delete-region instead of
kill-region to avoid polluting kill-ring.
(todos-unload-hook): Remove (was not used).
(todos-edit-multiline): Don't generate new edit buffer name on
each invocation---that can cause confusion due to indirect buffer.
(todos-edit-quit): Ensure lines in edit buffer that follow hard
newlines are indented in the file to conform to diary format.
(todos-set-item-priority): If done items in category are visible,
keep them visible.

11 years ago* calendar/todos.el: Fix done separator overlay bug. Remove most
Stephen Berman [Wed, 30 Jan 2013 23:34:31 +0000 (00:34 +0100)]
* calendar/todos.el: Fix done separator overlay bug.  Remove most
FIXME comments.
(todos-reset-and-enable-done-separator): Remove commented out
workaround for done separator overlay bug; fix doc string.
(todos-reset-done-separator): Delete old overlay after adding new
overlay to fix done separator overlay bug; improve implementation.
(todos-prefix-overlays): Improve first line of doc string.

11 years ago* calendar/todos.el: Improve item marking and handling of marked items.
Stephen Berman [Tue, 29 Jan 2013 15:50:45 +0000 (16:50 +0100)]
* calendar/todos.el: Improve item marking and handling of marked items.
(todos-prefix): Add validator to ensure value differs from that of
todos-item-mark.
(todos-item-mark): New defcustom.
(todos-prefix-overlay): New function.
(todos-marked-item-p): Use it.  Adapt implementation to new
handling of marked items.
(todos-insert-with-overlays): When inserting pushes down a marked
item, move its prefix overlay.
(todos-prefix-overlays): Add overlay even when prefix is empty string,
otherwise item marking fails.  Improve handling of marked items.
(todos-mark-unmark-item): Adapt to new handling of marked items
and simplify by removing marking of all items in category.
(todos-mark-category): Adapt to new handling of marked items and
don't use todos-mark-unmark-item.
(todos-unmark-category): Adapt to new handling of marked items.
(todos-delete-item): Remove obsolete handling of marked items and
useless restoration of point.
(todos-set-item-priority): Use new handling of marked items.
(todos-move-item, todos-item-done, todos-item-undo)
(todos-archive-done-item): Remove obsolete handling of marked items.

11 years ago* calendar/todos.el: Improve definitions and use of some faces.
Stephen Berman [Fri, 25 Jan 2013 15:39:38 +0000 (16:39 +0100)]
* calendar/todos.el: Improve definitions and use of some faces.
(todos-top-priority): Use current definition of font-lock-constant-face.
(todos-diary-expired): Make default value contrast more with
default value of todos-date face.
(todos-nondiary, todos-category-string): New faces.
(todos-nondiary-face, todos-category-string-face): Corresponding
new variables.
(todos-done, todos-comment): Switch default values to go better
with default value of todos-date face.
(todos-done-sep): Change default value.
(todos-category-string-matcher-1)
(todos-category-string-matcher-2): Improve doc string.
(todos-font-lock-keywords): Use todos-nondiary-face and
todos-category-string-face.
(todos-done-separator): Propertize string with todos-done-sep face.
(todos-filtered-items-mode): Fix typo.

11 years ago* calendar/todos.el: Improve handling of saved top priorities items.
Stephen Berman [Wed, 23 Jan 2013 15:23:32 +0000 (16:23 +0100)]
* calendar/todos.el: Improve handling of saved top priorities items.
(todos-find-item): Find done items and items whose priority has
changed or whose text was truncated or augmented; add doc string.
(todos-check-top-priorities): Highlight each item that is not up
to date.
(todos-jump-to-item): Jump to items whose priority has changed or
whose text was truncated or augmented.

11 years ago* calendar/todos.el: Revise handling of initial display and extend
Stephen Berman [Tue, 22 Jan 2013 11:00:33 +0000 (12:00 +0100)]
* calendar/todos.el: Revise handling of initial display and extend
to top priorities file.
(todos-display-categories-first): Remove, replacing by this:
(todos-show-first): New defcustom.
(todos-first-visit): Remove, replacing by this:
(todos-visited): New variable.
(todos-absolute-file-name): Extend possible values of optional
argument to take top priorities files into account.
(todos-modes-set-3, todos-mode): Remove use of todos-first-visit.
(todos-mode-external-set): Call find-file-noselect instead of
find-buffer-visiting, since the latter may fail.
(todos-show): Revise handling of initial display using
todos-show-first and todos-visited and extend to top priorities
file.
(todos-quit): Adapt to new handling of initial display.

11 years ago* calendar/todos.el: Implement saving top priority items buffers,
Stephen Berman [Mon, 14 Jan 2013 12:51:14 +0000 (13:51 +0100)]
* calendar/todos.el: Implement saving top priority items buffers,
improve implementation of item filtering commands and
infrastucture, and fix two bugs.
(todos-prefix-overlays): Use todos-top-priority face only in Todos
mode.
(todos-multiple-filter-files): Get file-truename of Todos file.
(todos-filter-items): Pass a list of files from the caller instead
of building it here, and move handling of cancelled file selection
dialog to callers.  Correct omission of file-wide default number
of top priorities.
(todos-filtered-buffer-name): Treat file-list argument only as a list.
(todos-find-item, todos-check-top-priorities)
(todos-top-priorities-filename)
(todos-save-top-priorities-buffer): New functions.
(todos-save): Use todos-save-top-priorities-buffer.
(todos-jump-to-item): Refactor and use todos-find-item.
(todos-top-priorities): Simplify semantics of prefix argument.
Check if top priorities file exists and if so, visit it, reporting
whether it is up to date.  Add optional argument and use it to
handle multiple files.
(todos-diary-items, todos-regexp-items): Add optional argument and
use it to handle multiple files.
(todos-top-priorities-multifile, todos-diary-items-multifile)
(todos-regexp-items-multifile): Refactor, using corresponding
non-multifile command.
(auto-mode-alist): Add pattern for top priorities files to visit
these in Todos Filtered Items mode.

11 years ago* calendar/todos.el: Fix tabular alignment in Todos Categories mode.
Stephen Berman [Tue, 8 Jan 2013 21:40:41 +0000 (22:40 +0100)]
* calendar/todos.el: Fix tabular alignment in Todos Categories mode.
(todos-adjusted-category-label-length): New function.
(todos-padded-string): Use it.

11 years ago* calendar/todos.el (todos-move-item): Allow moving done items to
Stephen Berman [Tue, 8 Jan 2013 13:06:12 +0000 (14:06 +0100)]
* calendar/todos.el (todos-move-item): Allow moving done items to
done section of another category.

11 years ago* calendar/todos.el: Display numerical priority string of top
Stephen Berman [Sun, 6 Jan 2013 23:29:54 +0000 (00:29 +0100)]
* calendar/todos.el: Display numerical priority string of top
priority items in category in a distinctive face.
(todos-prefix-string): Make doc string more precise.
(todos-top-priority): New defface.
(todos-done, todos-done-sep): Use more compact face definition
\(taken from font-lock.el).
(todos-comment): Give a complete face definition, instead of
inheriting from todos-done.
(todos-font-lock-keywords): Use todos-comment-face for
todos-comment-string-matcher.
(todos-prefix-overlays): Use todos-top-priority as the face
property of top priority items; don't condition reapplying item
prefix overlay on whether the string changed, since that prevents
updating display after changing number of top priorities.
(todos-set-top-priorities): Call todos-prefix-overlays to update
display.

11 years ago* calendar/todos.el (todos-reset-global-current-todos-file)
Stephen Berman [Fri, 4 Jan 2013 23:28:17 +0000 (00:28 +0100)]
* calendar/todos.el (todos-reset-global-current-todos-file)
(todos-display-categories-1): Use absolute name of
todos-default-todos-file.

11 years ago* calendar/todos.el (todos-insert-item): Fix copy and paste error
Stephen Berman [Fri, 4 Jan 2013 22:37:40 +0000 (23:37 +0100)]
* calendar/todos.el (todos-insert-item): Fix copy and paste error
from previous change.

11 years ago* calendar/todos.el: Implement extended category completions.
Stephen Berman [Thu, 3 Jan 2013 22:08:42 +0000 (23:08 +0100)]
* calendar/todos.el: Implement extended category completions.
(todos-default-todos-file): Change default value to correct custom
type.
(todos-category-completions-files): New defcustom.
(todos-reevaluate-category-completions-files-defcustom)
(todos-absolute-file-name, todos-category-completions): New defuns.
(todos-reevaluate-filelist-defcustoms):
Add todos-category-completions-files and
todos-reevaluate-category-completions-files-defcustom.
(todos-allcats-file, todos-all-categories-alist)
(todos-jump-to-category-other-file, todos-jump-to-any-category)
(todos-move-item-to-file): Remove (todos-all-categories-alist both
as defvar and as defun).
(todos-read-category): Rewrite using extended category completions
and better handling of completion against existing or non-existing
categories.
(todos-validate-name): Correct doc string; use local instead of
dynamic variables in function body.
(todos-insert-category-line): Adjust use of todos-jump-to-category
to new argument list.
(todos-key-bindings, todos-menu): Delete entries for removed
commands.
(todos-show): Get absolute name of todos-default-todos-file;
add `nowarn' argument to find-file-noselect; adjust use of
todos-add-category to new argument list.
(todos-jump-to-category): Rewrite using extended category
completions; reverse argument list, adapting FILE argument to new
completion mechanism; add autoload cookie; call todos-show if
there are no Todos files.
(todos-add-category): Rewrite using extended category completions;
add FILE argument to accommodate new completion mechanism.
(todos-merge-category): Adapt to extended category completions,
adding prefix argument.
(todos-insert-item): Adapt to extended category completions; use
todos-read-category instead of todos-jump-to-category in prefix
argument calls; call todos-show if there are no Todos files; if
item is inserted at end of category, recenter to ensure the items
above it are displayed in the window.
(todos-move-item): Adapt to extended category completions, making
argument prefix argument; allow moving within category (for the
sake of code simplification); add `nowarn' argument to
find-file-noselect.
(todos-archive-done-item): Prevent error when attempting to
archive not-done todo item; adjust use of todos-add-category to
new argument list.

11 years ago* calendar/todos.el (todos-archive-done-item): Fix archiving of
Stephen Berman [Sat, 15 Dec 2012 23:33:14 +0000 (00:33 +0100)]
* calendar/todos.el (todos-archive-done-item): Fix archiving of
all done items in a category and resulting display of todo file.

11 years ago* calendar/todos.el (todos-priorities-rules): Fix customization
Stephen Berman [Fri, 14 Dec 2012 17:21:39 +0000 (18:21 +0100)]
* calendar/todos.el (todos-priorities-rules): Fix customization
type to prevent mismatch error.
(todos-set-top-priorities): Fix rule construction; fix input check;
improve prompt.

11 years ago* calendar/todos.el (todos-insert-item): If user exits Calendar
Stephen Berman [Fri, 14 Dec 2012 11:36:02 +0000 (12:36 +0100)]
* calendar/todos.el (todos-insert-item): If user exits Calendar
before choosing a date, cancel item insertion.
(todos-set-date-from-calendar): If user exits Calendar before
choosing a date, clean up properly.

11 years ago* calendar/todos.el: Extend and improve handling of item editing,
Stephen Berman [Wed, 12 Dec 2012 19:53:49 +0000 (20:53 +0100)]
* calendar/todos.el: Extend and improve handling of item editing,
especially of date/time header.
(todos-month-name-array, todos-month-abbrev-array): New defconsts.
(todos-date-pattern): Use explicitly numbered groups.
(todos-read-date): Optionally read and return just one of the date
string components year, month or monthname, day.
(todos-key-bindings): Add bindings for new item header editing
commands.
(todos-edit-item): Exclude date/time header from minibuffer by
default; include it by passing a prefix argument.
(todos-edit-item-header-1): New function containing the guts of
the commands for editing item date/time headers.
(todos-edit-item-header): Use it.  Condition editing of time
string on value of `todos-always-add-time-string'.
(todos-edit-item-date-from-calendar): Use todos-edit-item-header-1.
(todos-edit-item-date-to-today): Rename from
todos-edit-item-date-is-today and use todos-edit-item-header-1.
(todos-edit-item-date): Remove.
(todos-edit-item-date-day-name, todos-edit-item-date-year)
(todos-edit-item-date-month, todos-edit-item-date-day): New commands.

11 years ago* calendar/todos.el (todos-show): Fix a comment.
Stephen Berman [Sun, 2 Dec 2012 23:37:25 +0000 (00:37 +0100)]
* calendar/todos.el (todos-show): Fix a comment.
(todos-add-category): Prompt for a new category if passed category
is the empty string, not nil.

11 years agoFix regex searches for beginning of category.
Stephen Berman [Mon, 26 Nov 2012 16:34:52 +0000 (17:34 +0100)]
Fix regex searches for beginning of category.

* calendar/todos.el (todos-make-categories-list)
(todos-convert-legacy-files, todos-jump-to-item)
(todos-move-category, todos-merge-category)
(todos-archive-done-item, todos-unarchive-items): Include end of
line in regex searches for beginning of category, in order not to
get a category whose name contains the searched for category name.

12 years ago* calendar/todos.el (todos-forward-category): Fix typo.
Stephen Berman [Thu, 15 Nov 2012 13:53:08 +0000 (14:53 +0100)]
* calendar/todos.el (todos-forward-category): Fix typo.

12 years ago* calendar/todos.el (todos-define-insertion-command):
Stephen Berman [Tue, 30 Oct 2012 17:41:14 +0000 (17:41 +0000)]
* calendar/todos.el (todos-define-insertion-command):
Let generated insertion commands accept a prefix argument.

12 years ago* calendar/todos.el (todos-move-item): If user quits before
Stephen Berman [Mon, 8 Oct 2012 12:50:40 +0000 (14:50 +0200)]
* calendar/todos.el (todos-move-item): If user quits before
completing movement, restore display of initial category; If item
is moved to end of target category, make sure the items above it
are displayed in the window.

12 years ago* calendar/todos.el: Fixes to todos-move-item and some of its
Stephen Berman [Sun, 7 Oct 2012 23:45:40 +0000 (01:45 +0200)]
* calendar/todos.el: Fixes to todos-move-item and some of its
subroutines.
(todos-move-item): When there are marked items, point need not be
on an item; remove obsolete use of todos-add-category, since this
is now already done in todos-read-category; fix typo.
(todos-diary-item-p): Exclude empty lines.
(todos-read-category): Restore point and narrowing after adding
new category, to avoid moving to beginning of file when moving
marked items to a new category.
(todos-set-item-priority): Prompt for priority only when the
category has at least one todo item; only use non-nil priority to
calculate insertion location.
(todos-read-category): Don't reset todos-categories when a new
category is added due to todos-move-item or todos-jump-to-item.

12 years ago* calendar/todos.el (todos-copy-item): New command.
Stephen Berman [Sat, 14 Jul 2012 21:18:42 +0000 (22:18 +0100)]
* calendar/todos.el (todos-copy-item): New command.
(todos-insertion-map): Add key binding for it.

12 years ago* calendar/todos.el (todos-undo-item-omit-comment): New defcustom.
Stephen Berman [Fri, 13 Jul 2012 14:15:49 +0000 (15:15 +0100)]
* calendar/todos.el (todos-undo-item-omit-comment): New defcustom.
(todos-item-undo): Use it.
(todos-allcats-file, todos-all-categories-alist): New variables.
(todos-all-categories-alist): New function.
(todos-jump-to-any-category): New command.
(todos-move-item): Remove mark overlays from buffer items were
moved from; update todos-categories-with-marks,

12 years ago* calendar/todos.el: Further code rearrangement; further new and
Stephen Berman [Wed, 27 Jun 2012 11:26:28 +0000 (12:26 +0100)]
* calendar/todos.el: Further code rearrangement; further new and
revised comments.
(todos-reevaluate-filelist-defcustoms): Rename from
todos-reevaluate-defcustoms and adjust callers.
(todos-date-pattern, todos-nondiary-start, todos-nondiary-end)
(todos-date-string-start, todos-done-string-start)
(todos-item-start): Change from defvar to defconst.
(todos-set-top-priorities): Use read-number and simplify.
(todos-insert-item): Check whether date-type argument is a string.
(todos-set-date-from-calendar): Check whether
todos-date-from-calendar is a string; simplify cond clause.
(todos-archive-done-item, todos-unarchive-items):
Use buffer-substring-no-properties.

12 years ago* calendar/todos.el (todos-item-undo): Fix restoration on
Stephen Berman [Sun, 24 Jun 2012 23:53:02 +0000 (00:53 +0100)]
* calendar/todos.el (todos-item-undo): Fix restoration on
cancelling; use buffer-substring-no-properties; comment out code
removing mark overlay; fix insertion of undone items; display any
remaining done items.

12 years ago* calendar/todos.el: Further significant code rearrangement;
Stephen Berman [Sun, 24 Jun 2012 17:31:14 +0000 (18:31 +0100)]
* calendar/todos.el: Further significant code rearrangement;
further comment revision.
(todos-mode-display): New defgroup.
(todos-prefix, todos-number-priorities)
(todos-done-separator-string, todos-done-string)
(todos-comment-string, todos-show-with-done)
(todos-mode-line-function, todos-skip-archived-categories)
(todos-highlight-item, todos-wrap-lines)
(todos-line-wrapping-function): Use it.
(todos-item-insertion): New defgroup.
(todos-include-in-diary, todos-diary-nonmarking)
(todos-nondiary-marker, todos-always-add-time-string)
(todos-use-only-highlighted-region): Use it.
(todos-forward-button, todos-backward-button): New commands.
(todos-categories-mode-map): Use them, replacing forward-button
and backward-button.
(todos-merge-category): Fix and improve implementation; handle
archived items.
(todos-insert-item, todos-set-date-from-calendar): Handle setting
date by calling todos-insert-item-from-calendar.
(todos-delete-item): Fix overlay handling.
(todos-move-item): Highlight item to be moved.
(todos-item-undo): Handle marked items.
(todos-insert-item-from-calendar): Rewrite using
todos-date-from-calendar.

12 years ago* calendar/todos.el: Further comment revision.
Stephen Berman [Thu, 21 Jun 2012 19:39:32 +0000 (20:39 +0100)]
* calendar/todos.el: Further comment revision.
(todos-sorted-column): Change default value, also taking tty into
account.
(todos-reset-done-separator): Fix faulty variable binding.
(todos-reset-and-enable-done-separator): Save match data; comment
out code that causes problems for Edebug.
(todos-item-start): Handle empty line between todo and done items
when done items are hidden.
(todos-read-date): Use a leap year for `*' to allow
calendar-last-day-of-month to return Feb. 29.
(todos-archive-mode, todos-edit-mode, todos-categories-mode)
(todos-filtered-items-mode): Delete faulty parentheses.
(todos-quit): Save Todos and archive files unconditionally.
(todos-forward-item): Accept only positive prefix argument.
(todos-backward-item): Accept only positive prefix argument; don't
move point to beginning of buffer if it is on the first item.
(todos-hide-show-date-time): Remove obsolete interactive spec.
(todos-move-category): Improve prompt string; ensure file moved to
is different from file moved from.
(todos-merge-categories): Remove.
(todos-set-category-priority): New command.
(todos-raise-category-priority, todos-lower-category-priority):
Use it to define these commands.
(todos-set-item-priority): Rewrite and generalize.
(todos-raise-item-priority, todos-lower-item-priority): Use it to
define these commands.

12 years ago* calendar/todos.el (todos-reset-done-separator)
Stephen Berman [Thu, 14 Jun 2012 23:32:09 +0000 (00:32 +0100)]
* calendar/todos.el (todos-reset-done-separator)
(todos-reset-and-enable-done-separator): New functions.
(todos-reset-done-separator-string): Rewrite using
todos-reset-done-separator for string longer than 1 character.
(todos-mode): Add todos-reset-and-enable-done-separator to
window-configuration-change-hook, replacing previous anonymous
function.
(todos-unload-hook): And remove it.

12 years ago* calendar/todos.el (todos-done-separator-string): New defcustom.
Stephen Berman [Thu, 14 Jun 2012 16:45:35 +0000 (17:45 +0100)]
* calendar/todos.el (todos-done-separator-string): New defcustom.
(todos-done-separator): New variable replacing defcustom of the
same name.
(todos-reset-done-separator-string, todos-done-separator):
New functions.
(todos-mode): Make function added to
window-configuration-change-hook do a better job of updating the
done items separator string overlay.
(todos-unload-hook): Remove it here.
(todos-item-undo): Fix search for item's end.

12 years ago* calendar/todos.el: Further comment revision.
Stephen Berman [Sun, 3 Jun 2012 20:10:46 +0000 (21:10 +0100)]
* calendar/todos.el: Further comment revision.
(todos-sorted-column): Change default value.
(todos-item-start): Handle empty category (needed in
todos-filter-items).
(todos-read-date): Don't use calendar-read; make code cleaner.
(todos-multiple-filter-files): Rename this variable from
todos-multiple-files and adjust users.
(todos-multiple-filter-files-widget): Rename from
todos-multiple-files-widget and adjust users.
(todos-multiple-filter-files): Rename this function from
todos-multiple-files and adjust callers.
(todos-filter-items): Remove unused code.
(todos-insert-category-line): Add space so highlighting of last
column is consistent with the others; adjust display of column
highlighting.
(todos-menu): Remove obsolete entry.
(todos-categories-mode-map): Add new bindings.
(todos-display-categories-alphabetically-or-by-priority): New command.
(todos-display-categories-sorted-by-todo)
(todos-display-categories-sorted-by-diary)
(todos-display-categories-sorted-by-done)
(todos-display-categories-sorted-by-archived): Restore and fix
implementation.

12 years ago* calendar/todos.el: Significant code rearrangement; further
Stephen Berman [Sat, 2 Jun 2012 15:23:08 +0000 (16:23 +0100)]
* calendar/todos.el: Significant code rearrangement; further
comment revision.
(todos-filtered-items-buffer): Rename from todos-filter-buffer and
adjust users.
(todos-filtered-buffer-name): Rename from
todos-special-buffer-name and adjust users.
(todos-filtered-items-mode-map): Rename from
todos-filter-items-mode-map and adjust users.
(todos-mode-external-set): Use todos-categories instead of
todos-set-categories (and add comment to check if this DTRT).
(todos-filtered-items-mode): Rename from todos-filter-items-mode
and adjust users.
(todos-add-category): Don't call todos-validate-name, since
todos-read-category does.
(todos-edit-quit): Use todos-repair-categories-sexp.
(todos-done-item-add-edit-or-delete-comment): Rename from
todos-done-item-add-or-edit-comment and adjust users; add optional
argument to prompt to delete comment.
(todos-item-undo): Delete done item comment on undoing if user
confirms.

12 years ago* calendar/todos.el: Further code rearrangement and comment
Stephen Berman [Fri, 1 Jun 2012 23:19:20 +0000 (00:19 +0100)]
* calendar/todos.el: Further code rearrangement and comment
revision.
(todos-item-start): Handle empty line between todo and done items
when done items are displayed.
(todos-key-bindings): Comment out bindings meant only for
todos-archive-mode.
(todos-archive-mode-map): Fix typo.
(todos-archive-mode): Derive from special-mode instead of
todos-mode to prevent its key bindings from being available here.
(todos-archive-done-item): Remove obsolete code; fix item count
updating.
(todos-unarchive-items): Simplify; fix unarchiving of all items in
category; fix item count updating; fix typo.

12 years ago* calendar/todos.el: Further code rearrangement and comment
Stephen Berman [Thu, 31 May 2012 23:41:02 +0000 (00:41 +0100)]
* calendar/todos.el: Further code rearrangement and comment
revision.
(todos-add-to-buffer-list, todos-update-buffer-list): New functions.
(todos-file-buffers): New variable.
(todos-reset-global-current-todos-file): Use it to simplify
implementation of this function.
(todos-filtered): New defgroup.
(todos-filter-buffer, todos-top-priorities-buffer)
(todos-diary-items-buffer, todos-regexp-items-buffer)
(todos-priorities-rules, todos-show-priorities)
(todos-filter-files, todos-filter-done-items): Use it.
(todos-skip-archived-categories): Rename from
todos-ignore-archived-categories and adjust users.
(todos-display-as-todos-file): Rename from todos-after-find-file
and adjust callers.
(todos-reset-highlight-item, todos-mode-external-set)
(todos-jump-to-category, todos-jump-to-item)
(todos-raise-category-priority, todos-insert-item)
(todos-move-item): Use find-file-visiting.
(todos-make-categories-list): Use file-truename.
(todos-display-categories-1): Adjust title text for archive files;
use done label for item counts in archive files.
(todos-modes-set-3): Add todos-display-as-todos-file to
find-file-hook.
(todos-mode): Add todos-add-to-buffer-list to find-file-hook and
todos-update-buffer-list post-command-hook.
(todos-unload-hook): And remove them.
(todos-show): Only when interactively invoked from an archive,
switch to corresponding Todos file.
(todos-archive-done-item): Remove obsolete code; fix handling of
marked items; fix search for existing category; check whether
archive exists and write to file if not; improve display handling.

12 years ago* calendar/todos.el: Further comment revision.
Stephen Berman [Tue, 29 May 2012 21:12:54 +0000 (22:12 +0100)]
* calendar/todos.el: Further comment revision.
(todos-item-end): Replace use of command todos-forward-item by
regexp searches using internal variables.
(todos-raise-category-priority): Improve and comment.
(todos-insert-item): Fix insertion of empty time string.

12 years ago* calendar/todos.el (todos-ignore-archived-categories):
Stephen Berman [Mon, 28 May 2012 23:49:20 +0000 (00:49 +0100)]
* calendar/todos.el (todos-ignore-archived-categories):
Revert last change; remove :initialize and :set functions; change
use and change users accordingly.
(todos-reset-categories, todos-categories-full)
(todos-truncate-categories-list): Remove.
(todos-set-categories, todos-update-categories-sexp):
Use todos-categories instead of todos-categories-full; remove use
of todos-ignore-archived-categories and
todos-truncate-categories-list.
(todos-check-format, todos-repair-categories-sexp):
Use todos-categories instead of todos-categories-full.
(todos-read-category): Improve last change.
(todos-validate-name): Use completing-read.
(todos-categories-category-number): Rename from
todos-category-number and adjust users.
(todos-update-categories-display, todos-mode-external-set)
(todos-delete-category, todos-move-category, todos-merge-category)
(todos-unarchive-items): Remove use of todos-categories-full and
todos-ignore-archived-categories.
(todos-modes-set-3, todos-add-category): Remove use of
todos-categories-full.
(todos-edit-mode): Fix typo.
(todos-forward-category): Use todos-ignore-archived-categories.

12 years ago* calendar/todos.el: Doubts about todos-ignore-archived-categories.
Stephen Berman [Sun, 27 May 2012 23:54:30 +0000 (00:54 +0100)]
* calendar/todos.el: Doubts about todos-ignore-archived-categories.
(todos-ignore-archived-categories): Change default value.

12 years ago* calendar/todos.el: Further comment revision.
Stephen Berman [Sun, 27 May 2012 22:40:56 +0000 (23:40 +0100)]
* calendar/todos.el: Further comment revision.
(todos-reset-global-current-todos-file):
Try to make this not slow down kill-buffer.
(todos-update-categories-sexp): Handle the case where there is no
categories sexp yet, i.e. after inserting the first item in the
file, so todos-display-categories works.
(todos-read-file-name): Improve implementation.
(todos-validate-name): Use variable todos-files.
(todos-category-number): New variable.
(todos-insert-category-line, todos-update-categories-display)
(todos-raise-category-priority): Use it.
(todos-add-file): Remove unused remnant code.

12 years ago* calendar/todos.el: Further comment revision.
Stephen Berman [Fri, 25 May 2012 16:42:08 +0000 (17:42 +0100)]
* calendar/todos.el: Further comment revision.
(todos-set-item-top-priority): New command.
(todos-reset-global-current-todos-file):
Use todos-files-function instead of todos-files.
(todos-read-category): Add optional argument to test whether
caller adds new category; if so, don't prompt for new category and
don't restore original todos-categories list.
(todos-categories-mode-map): Update to renamed commands.
(todos-filter-items-mode-map): Add binding for new command.
(todos-mode): Fix typo.
(todos-show): If called from archive file, show corresponding
category in Todos file, if it exists.
(todos-jump-to-category): Remove code to add new category, since
todos-read-category can do that.
(todos-add-file): Remove obsolete code; visit new file in selected
window.
(todos-add-category): Simplify.
(todos-rename-category): Use force-mode-line-update instead of
setting mode-line-buffer-identification.
(todos-delete-category): Improve logic of prompts; use
todos-categories-full and check todos-ignore-archived-categories.
(todos-raise-category-priority, todos-lower-category-priority):
Rename from todos-{raise,lower}-category and adjust callers.
(todos-move-category, todos-merge-category):
Set todos-categories-full; on setting todos-categories check
todos-ignore-archived-categories.
(todos-insert-item): Let-bind use-empty-active-region and use
use-region-p instead of transient-mark-mode.
(todos-raise-item-priority): Improve implementation.
(todos-archive-done-item): Rename from
todos-archive-done-item-or-items and adjust callers; confine to
Todos mode.
(todos-unarchive-items): On setting todos-categories check
todos-ignore-archived-categories.

12 years ago* calendar/todos.el (todos-key-bindings): Remove binding of
Stephen Berman [Tue, 22 May 2012 23:22:20 +0000 (00:22 +0100)]
* calendar/todos.el (todos-key-bindings): Remove binding of
deleted command.
(todos-menu): Remove entry of deleted command.
(todos-show-archive): Fix last change.
(todos-done-item-add-or-edit-comment): Rename from
todos-comment-done-item and adjust callers; prompt to edit an
existing comment.

12 years ago* calendar/todos.el: (todos-set-show-current-file): Rename from
Stephen Berman [Tue, 22 May 2012 11:04:58 +0000 (12:04 +0100)]
* calendar/todos.el: (todos-set-show-current-file): Rename from
todos-toggle-show-current-file and adjust callers.
(todos-number-priorities): Rename from todos-number-prefix and
adjust users.
(todos-update-count): Rename from todos-set-count and adjust
callers.
(todos-hide-show-item-numbering): Rename from
todos-toggle-item-numbering and adjust callers.
(todos-hide-show-done-items): Rename from
todos-toggle-view-done-items and adjust callers.
(todos-show-done-only): Rename from todos-toggle-show-done-only.
(todos-view-archived-items): Comment out.
(todos-show-archive): Prompt to choose another archive file if
current Todos file lacks an archive; prompt to visit archive
anyway when current category has no archived items.

12 years ago* calendar/todos.el: Further comment revision and code
Stephen Berman [Sun, 20 May 2012 23:23:52 +0000 (00:23 +0100)]
* calendar/todos.el: Further comment revision and code
rearrangement.
(todos-item-end): Revert last change.
(todos-key-bindings, todos-menu, todos-archive-mode-map)
(todos-filter-items-mode-map): Use renamed commands.
(todos-hide-show-date-time): Rename from
todos-toggle-display-date-time.
(todos-mark-unmark-item): Rename from todos-toggle-mark-item and
adjust caller.
(todos-backward-item): Exempt special handling only from
todos-regexp-items-buffer instead of todos-filter-items-mode.
(todos-raise-item-priority): Don't allow item reprioritizing in
Todos filter items mode except for top priority items.

12 years ago* calendar/todos.el: Add and revise further doc strings and
Stephen Berman [Sat, 19 May 2012 00:21:36 +0000 (01:21 +0100)]
* calendar/todos.el: Add and revise further doc strings and
comments.
(todos-filter-function, todos-custom-items)
(todos-custom-items-multifile): Remove.
(todos-filter-done-items): New defcustom.
(todos-item-end, todos-backward-item): Handle todos-filter-items-mode.
(todos-filter-items): Check return value of caller first; tag
archived items for todos-jump-to-item; delete categories sexp
before processing filter; check todos-filter-done-items for
whether to leave done items; remove custom filter; fix regexp for
file and category tags; don't invoke buffer fontification.
(powerset-recursive): Fix typo.
(todos-key-bindings): Remove unused bindings.
(todos-top-priorities-multifile, todos-diary-items-multifile)
(todos-regexp-items-multifile): Use variable todos-multiple-files.
(todos-jump-to-item): Fix regexp; handle archive tags; take
todos-filter-done-items into account.
(todos-insert-item-from-calendar): Relocate to end of file
together with key-binding as addition to calendar.el.

12 years ago* calendar/todos.el Add and revise further doc strings and
Stephen Berman [Thu, 17 May 2012 21:20:44 +0000 (22:20 +0100)]
* calendar/todos.el Add and revise further doc strings and
comments; major code rearrangement.
(todos-merged-files, todos-prompt-merged-files)
(todos-print-priorities, todos-tmp-buffer-name)
(todos-top-priorities-widgets, todos-update-merged-files)
(todos-merged-top-priorities, todos-merged-diary-items)
(todos-merged-regexp-items, todos-merged-custom-items)
(todos-raw-mode, todos-change-default-file)
(todos-toggle-diary-inclusion, todos-toggle-item-diary-nonmarking)
(todos-toggle-diary-nonmarking, todos-validate-category-name):
Remove.
(todos-category-string-matcher): Comment out.
(todos-categories): New defgroup.
(todos-initial-file, todos-filter-buffer)
(todos-top-priorities-buffer, todos-categories-category-label)
(todos-diary-items-buffer, todos-regexp-items-buffer)
(todos-custom-items-buffer, todos-filter-files)
(todos-highlight-item, todos-todo-mode-date-time-regexp):
New defcustoms.
(todos-diary-expired): New face.
(todos-print-buffer, todos-multiple-files)
(todos-multiple-files-widget, todos-key-bindings): New variables.
(todos-short-file-name, todos-reevaluate-default-file-defcustom)
(todos-special-buffer-name)
(todos-reevaluate-filter-files-defcustom)
(todos-reset-highlight-item, todos-reevaluate-defcustoms)
(todos-nondiary-marker-matcher, todos-diary-nonmarking-matcher)
(todos-diary-expired-matcher, todos-category-string-matcher-1)
(todos-category-string-matcher-2, todos-repair-categories-sexp)
(todos-validate-name, todos-multiple-files)
(todos-display-categories-1, todos-update-categories-display)
(todos-modes-set-3, todos-mode-external-set): New functions.
(todos-set-top-priorities-in-file)
(todos-set-top-priorities-in-category)
(todos-top-priorities-multifile, todos-diary-items-multifile)
(todos-regexp-items-multifile, todos-custom-items-multifile)
(todos-convert-legacy-files, todos-jump-to-item)
(todos-edit-multiline-item, todos-edit-item-date-from-calendar)
(todos-edit-item-diary-inclusion)
(todos-edit-category-diary-inclusion)
(todos-edit-item-diary-nonmarking)
(todos-edit-category-diary-nonmarking): New commands.
(todos, todos-faces): Update :version.
(todos-done-separator, todos-completion-ignore-case):
Change default value.
(todos-done-separator): Change :set function.
(todos-indent-to-here): Add :validate function to :type.
(todos-prefix-string, todos-mark, todos-button)
(todos-sorted-column, todos-archived-only, todos-search)
(todos-done, todos-done-sep): Provide full face definitions
instead of inheriting.
(todos-edit-buffer, todos-categories-buffer): Change from
defcustom to defvar.
(todos-category-beg, todos-category-done): Change from defvar to
defconst.
(todos-files): Check if todos-files-directory exists.
(todos-default-todos-file, todos-mode-line-control, todos-print):
Use todos-short-file-name.
(todos-font-lock-keywords): Use todos-nondiary-marker-matcher,
todos-diary-nonmarking-matcher, todos-category-string-matcher-1,
todos-category-string-matcher-2, todos-diary-expired-matcher.
(todos-category-select): Use todos-done-string-start, and
condition search on todos-show-with-done; don't make display
overlay for done items separator string if there already is one;
use todos-highlight-item, require hl-line and activate
hl-line-mode here in order to avoid a hang if done in todos-mode
or the mode hook.
(todos-update-categories-sexp): Use todos-categories-full if set,
otherwise todos-categories.
(todos-make-categories-list): Don't test for archive file when
processing a legacy todo-mode file.
(todos-check-format): Add check for todos-categories sexp.
(todos-diary-item-p): Use todos-nondiary-start instead of
todos-date-pattern.
(todos-marked-item-p): Rename from todos-item-marked-p.
(todos-read-file-name): Don't accept empty name; validate.
(todos-read-category): Validate new name before prompting whether
to add new category; force quit if user answers no.
(todos-filter-items): Improve implementation.
(todos-set-top-priorities): Rewrite as a noninteractive function
using minibuffer input instead of widgets.
(todos-insert-sort-button): Call todos-display-sorted with
argument nil to display categories in numerical order, instead of
calling todos-display-categories.
(powerset-recursive): Borrow and slightly reformulate the (GDFL'd)
Common Lisp powerset function at
http://rosettacode.org/wiki/Power_set#Common_Lisp.
(powerset-bitwise): Implement in Emacs Lisp the (GDFL'd) C
powerset function at http://rosettacode.org/wiki/Power_set#C.
(todos-powerset): Defalias to powerset-bitwise.
(todos-mode-map): Generate from todos-key-bindings instead of
listing each key definition.
(todos-categories-mode-map): Add two bindings.
(todos-filter-items-mode-map): Add some bindings, remove others.
(todos-mode): Derive from special-mode; use todos-modes-set-3; add
function setting todos-done-separator to
window-configuration-change-hook.
(todos-unload-hook): Remove function setting todos-done-separator
from window-configuration-change-hook.
(todos-archive-mode): Derive from todos-mode; use todos-modes-set-3.
(todos-edit-mode): Derive from text-mode; use todos-mode-external-set.
(todos-categories-mode): Derive from special-mode; use
todos-mode-external-set.
(todos-filter-items-mode): Derive from special-mode.
(todos-quit): Save archive file if it hasn't yet been saved.
(todos-display-categories): Delegate all functionality to
todos-display-categories-1 and todos-update-categories-display.
(todos-toggle-view-done-items): Improve implementation.
(todos-highlight-item): Require hl-line.
(todos-toggle-display-date-time): Remove argument and make it
apply only to whole file.
(todos-top-priorities, todos-diary-items, todos-regexp-items)
(todos-custom-items): Use todos-special-buffer-name.
(todos-add-file): Use todos-short-file-name and
todos-reevaluate-defcustoms; remove validation, since it's now
done in todos-read-file-name.
(todos-add-category): Also update todos-categories-full if non-nil.
(todos-delete-category): Delete file after confirmation if only
category is deleted.
(todos-move-category): Use todos-short-file-name and
todos-reevaluate-defcustoms.
(todos-insert-item): Fix getting date from the calendar and
insertion of time string.
(todos-set-date-from-calendar): Enter calendar buffer, suppressing
display of diary entries.
(todos-edit-multiline): Add optional argument to restrict editing
buffer to current item, otherwise make entire buffer (i.e. whole
file) editable.
(todos-edit-quit): When whole file is editable, check file format
validity before killing buffer, and if valid, recalculate
categories sexp to be safe.
(todos-edit-item-header): Allow choosing date from calendar.
(todos-item-done): Handle marked items.

12 years ago* calendar/todos.el (todos-item-start): Restore commented out code
Stephen Berman [Fri, 2 Dec 2011 23:46:31 +0000 (00:46 +0100)]
* calendar/todos.el (todos-item-start): Restore commented out code
to prevent wrongly moving point in widened buffer.

12 years ago* calendar/todos.el: Remove old commentary from todo-mode.el; add
Stephen Berman [Fri, 2 Dec 2011 13:27:28 +0000 (14:27 +0100)]
* calendar/todos.el: Remove old commentary from todo-mode.el; add
and revise further doc strings and comments; require cl.el at
compile time for remove-duplicates; use function powerset from
http://rosettacode.org/wiki/Power_set#Common_Lisp (GFDL); further
code rearrangement.  Add adapted version of diary-goto-entry as comment.
(todos-file-top, todos-archived-categories-buffer)
(todos-save-top-priorities-too, todos-toggle-item-diary-inclusion)
(todos-save-top-priorities, todos-reset-separator)
(todos-switch-todos-file, todos-item-string-start, todos-counts)
(todos-string-count-lines, todos-string-multiline-p)
(todos-display-categories-alphabetically): Remove.
(todos-insert-item-ask-date, todos-insert-item-ask-date-time)
(todos-insert-item-ask-date-time-for-diary)
(todos-insert-item-ask-date-time-for-diary-here)
(todos-insert-item-ask-date-time-here)
(todos-insert-item-ask-date-maybe-notime)
(todos-insert-item-ask-date-maybe-notime-for-diary)
(todos-insert-item-ask-date-maybe-notime-for-diary-here)
(todos-insert-item-ask-date-maybe-notime-here)
(todos-insert-item-ask-date-for-diary)
(todos-insert-item-ask-date-for-diary-here)
(todos-insert-item-ask-date-here, todos-insert-item-ask-dayname)
(todos-insert-item-ask-dayname-time)
(todos-insert-item-ask-dayname-time-for-diary)
(todos-insert-item-ask-dayname-time-for-diary-here)
(todos-insert-item-ask-dayname-time-here)
(todos-insert-item-ask-dayname-maybe-notime)
(todos-insert-item-ask-dayname-maybe-notime-for-diary)
(todos-insert-item-ask-dayname-maybe-notime-for-diary-here)
(todos-insert-item-ask-dayname-maybe-notime-here)
(todos-insert-item-ask-dayname-for-diary)
(todos-insert-item-ask-dayname-for-diary-here)
(todos-insert-item-ask-dayname-here, todos-insert-item-ask-time)
(todos-insert-item-ask-time-for-diary)
(todos-insert-item-ask-time-for-diary-here)
(todos-insert-item-ask-time-here)
(todos-insert-item-maybe-notime)
(todos-insert-item-maybe-notime-for-diary)
(todos-insert-item-maybe-notime-for-diary-here)
(todos-insert-item-maybe-notime-here)
(todos-insert-item-for-diary, todos-insert-item-for-diary-here)
(todos-insert-item-here): Remove; all of these are now generated
on loading (some with the same name, most with other names.)
(todos-item-counts, todos-display-categories-alphabetically)
(todos-display-categories-sorted-by-todo)
(todos-display-categories-sorted-by-diary)
(todos-display-categories-sorted-by-done)
(todos-display-categories-sorted-by-archived): Comment out.
(todos-comment-string, todos-mode-line-function)
(todos-filter-function, todos-priorities-rules)
(todos-visit-files-commands, todos-categories-totals-label)
(todos-use-only-highlighted-region, todos-diary-nonmarking):
New defcustoms.
(todos-mark, todos-comment): New faces.
(todos-comment-face): Corresponding new variable.
(todos-categories-full, todos-global-current-todos-file)
(todos-first-visit, todos-insertion-commands-args-genlist)
(todos-insertion-commands-args, todos-insertion-commands-names)
(todos-insertion-commands, todos-insertion-commands-arg-key-list)
(todos-top-priorities-widgets, todos-date-from-calendar)
(todos-item-mark, todos-categories-with-marks): New variables.
(todos-mode-line-control, todos-reset-global-current-todos-file)
(todos-gen-arglists, todos-insertion-command-name)
(todos-insertion-key-bindings, todos-unload-hook)
(todos-filter-items, todos-set-date-from-calendar)
(todos-comment-string-matcher, todos-after-find-file)
(todos-reset-nondiary-marker, todos-reset-done-string)
(todos-reset-comment-string, todos-show-current-file)
(todos-item-marked-p, todos-total-item-counts): New functions.
(todos-define-insertion-command): New macro.
(todos-toggle-mark-item, todos-mark-category)
(todos-unmark-category, todos-set-top-priorities)
(todos-merged-diary-items, todos-regexp-items)
(todos-merged-regexp-items, todos-custom-items)
(todos-merged-custom-items, todos-comment-done-item)
(todos-archive-category-done-items, todos-unarchive-items)
(todos-print-to-file): New commands.
(todos-done-separator): Change :set function.
(todos-done-string): Uncomment :initialize and :set functions.
(todos-files): Use file-truename.
(todos-show-current-file): Rename from
todos-auto-switch-todos-file and change :set function accordingly.
(todos-font-lock-keywords): Use todos-comment-string-matcher;
change names of other matcher functions to new *-matcher.
(todos-category-number): Change initial value.
(todos-insertion-map): Use todos-insertion-key-bindings to
generate key definitions.
(todos-mode-map): Don't suppress digit keys, so they can supply
prefix arguments; add new and change some existing bindings.
(todos-archive-mode-map): Change a key binding.
(todos-categories-mode-map): Comment out a key binding.
(todos-filter-items-mode-map): Rename from
todos-top-priorities-mode-map.
(todos-mode): Make todos-current-todos-file,
todos-categories-full, todos-categories, todos-first-visit,
todos-category-number, todos-show-done-only,
todos-categories-with-marks local variables and set them; add
todos-show-current-file to pre-command-hook, todos-after-find-file
to post-command-hook and todos-reset-global-current-todos-file to
kill-buffer-hook.
(todos-archive-mode): Make todos-current-todos-file,
todos-categories and todos-category-number local variables and set
them; add todos-after-find-file to post-command-hook.
(todos-raw-mode): New derived major mode.
(todos-categories-mode): Don't set font-lock-defaults and
buffer-read-only; make todos-current-todos-file and
todos-categories local variables and set them.
(todos-filter-items-mode): Rename from todos-top-priorities-mode-map.
(todos-quit): Don't reset todos-categories on quitting
todos-categories-mode; handle quitting todos-filter-items-mode.
(todos-show): Simplify; when visiting an archive file switch to
corresponding Todos file; use todos-first-visit.
(todos-view-archived-items): Simplify; call todos-category-number.
(todos-show-archive): Rename from todos-switch-to-archive and
adjust callers; simplify.
(todos-toggle-display-date-time): Add optional argument to toggle
display in entire file.
(todos-top-priorities): Use todos-filter-items, which now contains
the previous core of this command.
(todos-merged-top-priorities, todos-diary-items):
Use todos-filter-items.
(todos-forward-category): Add optional argument to go to the
previous category.
(todos-backward-category): Use todos-forward-category.
(todos-jump-to-category): Refine implementation.
(todos-forward-item, todos-backward-item): Fix movement from todo
to done item and vice versa.
(todos-add-file): Remove argument and simplify.
(todos-rename-category): Use todos-current-todos-file and
todos-mode-line-function; set todos-categories with
todos-set-categories.
(todos-delete-category): Ask what to do if category has archived items.
(todos-raise-category): Ensure modified todos-categories is added
to file's categories sexp.
(todos-move-category): Improve implementation, especially handling
of archived categories.
(todos-merge-category): Tweak; set item counts.
(todos-insert-item): Improve handling of various argument values;
add new argument values to control marking of diary items and to
use region for item body.
(todos-insert-item-from-calendar): Use todos-global-current-todos-file.
(todos-delete-item, todos-edit-item-header): Handle marked items.
(todos-edit-item): Incorporate functionality of removed
todos-string-multiline-p.
(todos-edit-multiline): Use set-window-buffer instead of
switch-to-buffer.
(todos-edit-quit): Don't save on quitting; use todos-show instead
of todos-category-select.
(todos-raise-item-priority): Add argument to lower priority;
improve handling of top priority items in todos-filter-items-mode;
restore marks.
(todos-lower-item-priority): Use todos-raise-item-priority.
(todos-set-item-priority): Increment maximum number if item is new.
(todos-move-item): Handle marked items; delay changing category
moved from till after movement to avoid restoring if user cancels
before insertion.
(todos-item-done): Add optional argument to insert comment; fix
item counts and update sexp.
(todos-item-undo): Fix item counts and update.
(todos-archive-done-item-or-items): Rename from
todos-archive-done-items; add optional argument to archive all
items in category; handle marked items.
(todos-unarchive-category): Use todos-unarchive-items.
(todos-toggle-diary-inclusion): Incorporate functionality of
removed todos-toggle-item-diary-inclusion; handle marked items.
(todos-print): Add optional argument to print to file.
(todos-done-string-start): Don't use todos-nondiary-start.
(todos-date-string-matcher, todos-time-string-matcher)
(todos-done-string-matcher, todos-category-string-matcher): Rename
from *-match and adjust callers.
(todos-wrap-and-indent): Use set instead of setq for local variables.
(todos-prefix-overlays): Improve overlay handling.
(todos-reset-categories): Fix and complete implementation.
(todos-toggle-show-current-file): Rename from
todos-toggle-switch-todos-file-noninteractively.
(todos-category-select): Use todos-mode-line-function.
(todos-item-start): Comment out code used by removed function.
(todos-remove-item): Handle presence of both prefix/number and
mark overlays.
(todos-get-count): Simplify.
(todos-set-count): Change argument list and adjust callers; simplify.
(todos-set-categories): Handle new archive files; use
todos-categories-full and todos-ignore-archived-categories.
(todos-truncate-categories-list): Use todos-categories-full.
(todos-update-categories-sexp): Use kill-region instead of
kill-line; use todos-categories-full.
(todos-read-file-name): Add argument to require existing file and
adjust callers; use file-truename.
(todos-read-category): Remove argument to require existing
category and delegate it to completing-read in function body.
(todos-validate-category-name): Make empty string prompt only for
initial category name.
(todos-read-date): Use = instead of eq for testing if month = 13,
and if it is, set monthname to *.
(todos-display-categories): Use todos-global-current-todos-file;
use set-window-buffer instead of switch-to-buffer; add a line
showing item count totals.
(todos-padded-string): Use the longest of category name or label.
(todos-descending-counts): Rename from
todos-descending-counts-store and adjust users.
(todos-insert-category-line): Adjust format; use mapconcat; kill
buffer after jumping to category.

13 years ago* calendar/todos.el Add and revise various doc strings, remove
Stephen Berman [Mon, 16 May 2011 00:00:28 +0000 (01:00 +0100)]
* calendar/todos.el Add and revise various doc strings, remove
further commented out code; add further comments; further code
rearrangement.
(todos-file-do, todos-archive-file, todos-mode-hook)
(todos-edit-mode-hook, todos-exclusion-start, todos-exclusion-end)
(todos-view-archive, todos-search-string)
(todos-jump-to-category-noninteractively, todos-initial-setup):
Remove.
(todos-files): Remove this defcustom.
(todos-initial-category, todos-display-categories-first)
(todos-auto-switch-todos-file, todos-default-todos-file)
(todos-categories-category-label, todos-categories-todo-label)
(todos-categories-diary-label, todos-categories-done-label)
(todos-categories-archived-label)
(todos-categories-number-separator, todos-categories-align)
(todos-ignore-archived-categories, todos-nondiary-marker):
New defcustoms.
(todos-prefix, todos-done-separator, todos-file-top)
(todos-categories-buffer, todos-archived-categories-buffer)
(todos-edit-buffer, todos-always-add-time-string, todos-button):
Change default value.
(todos-done-string): Add todos-reset-done-string as :set function,
but keep this commented out.
(todos-files, todos-archives, todos-insertion-map)
(todos-category-done, todos-nondiary-start, todos-nondiary-end)
(todos-show-done-only, todos-date-string-start)
(todos-done-string-start): New variables.
(todos-files-directory, todos-files-function, todos-merged-files)
(todos-prompt-merged-files, todos-files, todos-modes-set-1)
(todos-modes-set-2, todos-reset-done-string, todos-reset-categories)
(todos-toggle-switch-todos-file-noninteractively)
(todos-switch-todos-file, todos-counts, todos-get-count)
(todos-set-count, todos-set-categories)
(todos-truncate-categories-list, todos-update-categories-sexp)
(todos-read-file-name, todos-sort, todos-display-sorted)
(todos-label-to-key, todos-insert-sort-button): New functions.
(todos-display-categories-sorted-by-todo)
(todos-display-categories-sorted-by-diary)
(todos-display-categories-sorted-by-done)
(todos-display-categories-sorted-by-archived)
(todos-update-merged-files, todos-switch-to-archive)
(todos-choose-archive, todos-merged-top-priorities)
(todos-jump-to-category-other-file, todos-clear-matches)
(todos-add-file, todos-change-default-file, todos-move-category)
(todos-merge-category, todos-merge-categories)
(todos-edit-item-time, todos-move-item-to-file)
(todos-unarchive-category, todos-toggle-item-diary-nonmarking)
(todos-toggle-diary-nonmarking): New commands.
(todos-toggle-show-done-only): New command replacing todos-view-archive.
(todos-faces): New defgroup; use in all face definitions.
(todos-sorted-column, todos-archived-only, todos-search): New faces.
(todos-font-lock-keywords): Use subexpression 1 with matcher
todos-category-string-match.
(todos-mode-map, todos-archive-mode-map, todos-edit-mode-map)
(todos-categories-mode-map): Add new key bindings; change some
existing bindings.
(todos-top-priorities-mode-map): New keymap.
(todos-menu): Add submenues and new entries.
(auto-mode-alist): Add extension of Todos and Todos archive files.
(todos-mode, todos-archive-mode): Make derived mode; use
todos-modes-set-1, todos-modes-set-2, todos-auto-switch-todos-file
and todos-switch-todos-file; make todos-show-done-only local
variable.
(todos-edit-mode): Make derived mode; use todos-modes-set-1.
(todos-categories-mode): Make derived mode.
(todos-top-priorities-mode): New derived major mode.
(todos-save): Remove unused code.
(todos-quit): Handle todos-categories-mode; save archive buffer.
(todos-show): Add optional argument to prompt for a Todos file; if
called interactively or with prefix arg or from an archive, don't
make a no-op but reset todos-current-todos-file, todos-categories
and todos-category-number; use todos-read-file-name,
todos-display-categories-first, todos-ignore-archived-categories.
(todos-display-categories): Change argument name; refactor code
for inserting table labels and lines, using
todos-ignore-archived-categories, todos-sort,
todos-categories-number-separator, todos-insert-sort-button,
todos-categories-*-labels, and todos-insert-category-line.
(todos-display-categories-alphabetically): Use todos-display-sorted.
(todos-toggle-view-done-items): Use todos-done-string-start and
todos-get-count.
(todos-toggle-display-date-time): Use todos-done-string-start.
(todos-top-priorities): Remove autoload cookie; partially rewrite:
new argument list; allow combining top priorities of multiple
Todos files; change display to include category (and file) name as
part of item header; use todos-top-priorities-mode.
(todos-diary-items): Reimplement using only todos-top-priorities.
(todos-forward-category, todos-backward-category): Accommodate to
1-based numbering of categories; move point to top of category.
(todos-jump-to-category): Rewrite, adding optional arguments to
provide a category in non-interactive uses and to prompt for which
Todos file to jump to.
(todos-search): Reimplement; highlight each match as found, say
how many matches remain and prompt whether to go to next one; at
end of search prompt whether to remove highlighting.
(todos-add-category): Remove autoload cookie; assign new category
the highest category number; associate zero-initialized vector of
item counts, instead of property list, with new category; use
todos-validate-category-name and todos-update-categories-sexp.
(todos-rename-category): Use todos-validate-category-name and
todos-update-categories-sexp; take archive files into account.
(todos-delete-category): Use todos-get-count and
todos-update-categories-sexp, let-bind variable that were
mistakenly global; use delete-region instead of kill-region;
accommodate to 1-based numbering of categories; move point to top
of category.
(todos-raise-category): Handle item count vectors; use
todos-insert-category-line and todos-update-categories-sexp.
(todos-insert-item): Use nil time-string argument to omit time
string; use todos-nondiary-start and todos-nondiary-end and
todos-update-categories-sexp; if category named to insert into
does not exist, add it; take new diary items into account.
(todos-insert-item-ask-date, todos-insert-item-ask-date-time)
(todos-insert-item-ask-date-time-for-diary)
(todos-insert-item-ask-date-time-for-diary-here)
(todos-insert-item-ask-date-time-here)
(todos-insert-item-ask-date-maybe-notime)
(todos-insert-item-ask-date-maybe-notime-for-diary)
(todos-insert-item-ask-date-maybe-notime-for-diary-here)
(todos-insert-item-ask-date-maybe-notime-here)
(todos-insert-item-ask-date-for-diary)
(todos-insert-item-ask-date-for-diary-here)
(todos-insert-item-ask-date-here, todos-insert-item-ask-dayname)
(todos-insert-item-ask-dayname-time)
(todos-insert-item-ask-dayname-time-for-diary)
(todos-insert-item-ask-dayname-time-for-diary-here)
(todos-insert-item-ask-dayname-time-here)
(todos-insert-item-ask-dayname-maybe-notime)
(todos-insert-item-ask-dayname-maybe-notime-for-diary)
(todos-insert-item-ask-dayname-maybe-notime-for-diary-here)
(todos-insert-item-ask-dayname-maybe-notime-here)
(todos-insert-item-ask-dayname-for-diary)
(todos-insert-item-ask-dayname-for-diary-here)
(todos-insert-item-ask-dayname-here, todos-insert-item-ask-time)
(todos-insert-item-ask-time-for-diary)
(todos-insert-item-ask-time-for-diary-here)
(todos-insert-item-ask-time-here)
(todos-insert-item-maybe-notime)
(todos-insert-item-maybe-notime-for-diary)
(todos-insert-item-maybe-notime-for-diary-here)
(todos-insert-item-maybe-notime-here)
(todos-insert-item-for-diary, todos-insert-item-for-diary-here):
New insertion commands.
(todos-insert-item-from-calendar): Use todos-current-todos-file.
(todos-delete-item): Handle diary items;
use todos-update-categories-sexp.
(todos-edit-item): Check if point is with item string;
use read-string instead of read-from-minibuffer;
use todos-date-string-start; after editing put point at start of
item text.
(todos-edit-multiline): Narrow to item before invoking
todos-edit-mode; show key binding of todos-edit-quit in a message.
(todos-edit-quit): Use todos-save; kill buffer.
(todos-edit-item-header): Add optional argument to prompt for
editing only date string or only time string;
use todos-date-string-start.
(todos-edit-item-date, todos-edit-item-date-is-today)
(todos-raise-item-priority, todos-lower-item-priority): Rename
from todos-{raise, lower}-item and make them DTRT in
todos-top-priorities-mode.
(todos-set-item-priority): Make interactive; use todos-get-count
and todos-insert-with-overlays; interactively, just relocate the
item within its category.
(todos-move-item): Add optional argument to prompt for a category
in another Todos file; handle diary items; fix restoration after
cancelling before inserting.
(todos-item-done): Handle diary items; simplify handling of
insertion in done items section.
(todos-item-undo): Handle diary items.
(todos-archive-done-items): Accommodate to new handling of archive
files (in parallel with Todos files); handle diary items; use
todos-done-string-start.
(todos-toggle-item-diary-inclusion): Use todos-nondiary-start,
todos-nondiary-end and todos-item-counts.
(todos-toggle-diary-inclusion): Use todos-category-done instead of
todos-category-end.
(todos-print): Remove autoload cookie; rewrite to make overlays,
line wrapping and wrap prefixes printable.
(todos-date-pattern): Make parenthesized groups shy.
(todos-date-string-match): Use todos-date-string-start; make
todos-date-pattern an explicitly numbered group.
(todos-time-string-match): Use todos-date-string-start.
(todos-done-string-match): Use todos-done-string-start.
(todos-category-string-match): Rewrite to match new category and
category+filename patterns in todos-top-priorities-mode.
(todos-prefix-overlays): Use todos-done-string-start and
todos-category-done.
(todos-reset-prefix): Handle archive files; restore point after
changing prefix.
(todos-reset-separator): Handle archive files.
(todos-category-number): Make category number one more than its
list index.
(todos-current-category): Accommodate to 1-based numbering of
categories.
(todos-category-select): Simplify handling of done items and done
separator string overlay.
(todos-item-start): Use todos-date-string-start and
todos-done-string-start.
(todos-item-start, todos-item-end): Fix wrong parenthesizing.
(todos-item-string): Restore point after getting item bounds; use
buffer-substring-no-properties.
(todos-done-item-p): Use todos-done-string-start.
(todos-make-categories-list): Add optional argument to force
looping through file to get categories and their item counts,
otherwise set todos-categories from sexp in first line; use
vectors of item counts instead of plists; count diary items.
(todos-item-counts): Use todos-counts, todos-set-counts,
todos-get-counts, and todos-update-categories-sexp instead of
getting and setting properties; handle diary items.
(todos-read-category): Add argument to set prompt; don't offer
default category.
(todos-validate-category-name): Rename from
todos-check-category-name; take into account whether there are
already categories or not.
(todos-read-date): Accept `*' as an unspecified month, day, or year.
(todos-padded-string): Accommodate new structure of
todos-categories as alists; use todos-categories-align.
(todos-descending-counts-store): New variable.
(todos-insert-category-line): Rename from
todos-insert-category-name and reimplement using labels and
todos-get-counts instead of properties; use
todos-ignore-archived-categories; highlight sorted column.