+2012-11-26 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-11-15 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-forward-category): Fix typo.
+
+2012-10-30 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-define-insertion-command):
+ Let generated insertion commands accept a prefix argument.
+
+2012-10-08 Stephen Berman <Stephen.Berman@rub.de>
+
+ * 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.
+
+2012-10-08 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-24 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-copy-item): New command.
+ (todos-insertion-map): Add key binding for it.
+
+2012-09-24 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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,
+
+2012-09-24 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-23 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-22 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-22 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el: Doubts about todos-ignore-archived-categories.
+ (todos-ignore-archived-categories): Change default value.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-21 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-20 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-19 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-item-start): Restore commented out code
+ to prevent wrongly moving point in widened buffer.
+
+2012-09-19 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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.
+
+2012-09-18 Stephen Berman <stephen.berman@gmx.net>
+
+ * 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): Adjust 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;
+ adjust 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): Adjust 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): Adjust 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.
+
+2012-09-14 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el Remove lots of commented out code; add various
+ comments; further code rearrangement.
+ (todos-insert-item-here-ask-date-time)
+ (todos-insert-item-ask-date-time)
+ (todos-insert-item-ask-dayname-time)
+ (todos-insert-item-for-diary)
+ (todos-insert-item-for-diary-ask-date-time)
+ (todos-make-categories-alist, todos-categories-alist): Remove.
+ (todos-categories-list): Comment out.
+ (todos-make-categories-list): New function replacing
+ todos-make-categories-alist, using category plists to get item
+ counts and taking archive into account.
+ (todos-current-todos-file): New variable.
+ (todos-mode-map): Update key bindings.
+ (todos-save): Add as comment code to make sure todos-categories
+ sexp is current on saving.
+ (todos-quit): Call todos-show on quitting Todos archive buffer.
+ (todos-show): If todos-current-todos-file is not set to Todos
+ file, set it as a new file; set todos-categories from
+ todos-make-categories-alist.
+ (todos-display-categories): Use a different display format for
+ archive file; put point initially on the first button.
+ (todos-toggle-view-done-items): Check the category's `done'
+ property to determine if there are done items.
+ (todos-view-archive): Set todos-current-todos-file to the archive
+ file; jump from the Todos file to the same category in the
+ archive, if it exists, else jump to the first category; use
+ message instead of error.
+ (todos-add-category): Intern a special symbol for the new category
+ and set its property list to holds counts of the numbers of todo,
+ done and archived items in the category; assign the new category
+ the current highest category number.
+ (todos-rename-category): Don't use todos-categories-alist.
+ (todos-delete-category): Check the category's `todo' and `done'
+ properties to determine if it is empty; ensure that the end of the
+ last category is found; after deleting the category, empty its
+ plist and unintern its special symbol.
+ (todos-insert-item-here): Fix argument list of todos-insert-item.
+ (todos-delete-item, todos-raise-item, todos-lower-item):
+ Use message instead of error.
+ (todos-move-item): If the category to be moved to does not exist,
+ add it as a new category.
+ (todos-item-done, todos-reset-separator):
+ Use todos-category-select instead of todos-show.
+ (todos-archive-done-items): Make buffer writeable; conditionalize
+ search for end of category; save after adding to archive in case
+ the file is new, so it can be found.
+ (todos-category-select): Wrap search in if instead of or+and;
+ don't hide done items in an archive.
+ (todos-set-item-priority): Check the category's `todo'
+ property to determine if there are not done todo items.
+ (todos-jump-to-category-noninteractively): Just switch to buffer
+ visiting todos-current-todos-file, since this can be either a
+ Todos file or an archive.
+ (todos-item-counts): Use category's plist instead of an alist.
+ (todos-longest-category-name-length): Argument is now a list of
+ category names, not an alist, so just test each element, not each
+ element's the car.
+ (todos-padded-string): Use todos-categories instead of
+ todos-categories-alist.
+ (todos-insert-category-name): Use category plist to get item
+ counts; take archived items into account.
+
+2012-09-13 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el: Numerous spelling and comment fixes, doc
+ string fixes to conform with checkdoc, further rearrangement of
+ definitions, etc.
+ (todos-previous-line, todos-previous-answer)
+ (todos-insert-item-ask-date, todos-change-date)
+ (todos-date-nodayname-pattern, todos-dayname-date-pattern)
+ (todos-count-items-in-category, todos-count-all-items): Remove.
+ (todos-update-numbered-prefix, todos-item-start-overlays)
+ (todos-add-item-non-interactively): Comment out, also in uses.
+ (todos-done-separator): Change default value.
+ (todos-always-add-time-string): Rename from todos-add-time-string
+ and adjust uses.
+ (todos-read-category): Rename from todos-completing-read and
+ adjust callers; use todos-current-category.
+ (todos-make-categories-alist): Rename from function
+ todos-categories-alist.
+ (todos-categories-alist): New variable.
+ (todos-indent-to-here): New defcustom.
+ (todos-button): New face.
+ (todos-display-categories-alphabetically, todos-raise-category)
+ (todos-lower-category, todos-insert-item-for-diary-ask-date-time)
+ (todos-insert-item-here-ask-date-time)
+ (todos-insert-item-ask-date-time)
+ (todos-insert-item-ask-dayname-time): New commands.
+ (todos-edit-item-header): New command replacing todos-change-date.
+ (todos-category-number, todos-indent, todos-item-counts)
+ (todos-check-category-name, todos-read-date, todos-read-dayname)
+ (todos-read-time, todos-padded-string)
+ (todos-insert-category-name): New functions.
+ (todos-set-item-priority): New function replacing
+ todos-add-item-non-interactively.
+ (todos-mode-map): Remap newline to newline-and-indent.
+ (todos-edit-mode-map): Make sparse keymap; remap newline to
+ newline-and-indent.
+ (todos-categories-mode-map): New keymap.
+ (todos-mode, todos-edit-mode): Make indent-line-function local
+ variable and set to todos-indent.
+ (todos-categories-mode): New major mode.
+ (todos-display-categories): List categories initially in their
+ numerical order; add optional argument to switch to alphabetical
+ listing.
+ (todos-toggle-view-done-items): Simplify implementation.
+ (todos-toggle-display-date-time): Fix regexp search string.
+ (todos-backward-item, todos-forward-item): Use variable
+ todos-item-start.
+ (todos-add-category): Use todos-check-category-name and
+ todos-categories-alist.
+ (todos-rename-category): Use todos-current-category,
+ todos-check-category-name and todos-categories-alist.
+ (todos-delete-category): Use todos-check-category-name and
+ todos-categories-alist and take done items into account.
+ (todos-insert-item): Use separate arguments to handle insertion of
+ date/dayname and time strings, add new argument to mark item for
+ diary inclusion, use new todos-read-* functions,
+ todos-set-item-priority and todos-item-counts.
+ (todos-insert-item-here, todos-insert-item-for-diary)
+ (todos-insert-item-from-calendar): Adapt to new version of
+ todos-insert-item.
+ (todos-delete-item, todos-item-done): Use todos-item-counts.
+ (todos-edit-item): Indent newlines inserted by C-q C-j if nonspace
+ char follows.
+ (todos-lower-item): Ensure only not-done items can be lowered.
+ (todos-move-item): Use todos-current-category, todos-read-category
+ and todos-item-counts.
+ (todos-archive-done-items): Use todos-current-category and
+ todos-item-counts; fix regexp search string.
+ (todos-item-undo): Use todos-current-category,
+ todos-set-item-priority, todos-insert-with-overlays and
+ todos-item-counts; restore if user quits before inserting undone
+ item.
+ (todos-date-pattern): Rewrite without using
+ todos-date-nodayname-pattern and todos-dayname-date-pattern.
+ (todos-date-string-match): Do not make todos-date-pattern an
+ unnumbered group.
+ (todos-time-string-match): Make todos-date-pattern a shy group.
+ (todos-wrap-and-indent): Use todos-indent-to-here.
+ (todos-reset-prefix): Revert to using todos-show instead of
+ todos-category-select.
+ (todos-prefix-overlays): Fix numbering of done items and updating
+ of prefix.
+ (todos-category-select): Use todos-current-category; fix display
+ of separator string; don't move point to top of category.
+ (todos-jump-to-category-noninteractively): Use todos-category-number.
+ (todos-insert-with-overlays): Use todos-item-start unconditionally.
+ (todos-item-start): New variable.
+ (todos-item-start): Use it to define this function.
+ (todos-item-end): Adjust if item is last unfinished one before
+ displayed done items.
+ (todos-remove-item): Use todos-item-start and todos-item-end
+ instead of todos-forward-item and todos-backward-item.
+ (todos-longest-category-name-length): Add argument for list of
+ categories.
+
+2012-09-13 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el: Comment out calendar require, since diary-lib
+ requires calendar. Rearrange file to group definitions according
+ to their use (types of commands, internal functions, etc.)
+ (todos-file-done, todos-insert-threshold, todos-remove-separator)
+ (todos-date-string, todos-time-string, todos-check-overlay)
+ (todos-show-paren-hack, todos-file-item, todos-more-important-p):
+ Comment out.
+ (todos-current-date, todos-item-end-overlays)
+ (todos-list-categories): Remove.
+ (todos-item-end): Remove (the variable, not the function).
+ (todos-prefix-overlays): Rename from todos-item-overlays and adjust
+ callers.
+ (todos-done-separator, todos-done-string, todos-show-with-done)
+ (todos-files, todos-archive-file, todos-categories-buffer)
+ (todos-archived-categories-buffer, todos-wrap-lines)
+ (todos-line-wrapping-function): New defcustoms.
+ (todos-done, todos-done-sep): New faces.
+ (todos-done-face, todos-done-sep-face): Corresponding new variables.
+ (todos-search-string, todos-date-nodayname-pattern)
+ (todos-dayname-date-pattern, todos-date-pattern): New variables.
+ (todos-done-string-match, todos-category-string-match)
+ (todos-check-format, todos-wrap-and-indent, todos-reset-separator)
+ (todos-current-category, todos-count-items-in-category)
+ (todos-done-item-p, todos-categories-alist, todos-count-all-items)
+ (todos-longest-category-name-length): New functions.
+ (todos-categories-list): New buffer-specific function replacing
+ todos-list-categories.
+ (todos-toggle-item-numbering, todos-toggle-view-done-items)
+ (todos-search, todos-view-archive, todos-diary-items)
+ (todos-toggle-display-date-time, todos-insert-item-no-time)
+ (todos-insert-item-ask-date, todos-insert-item-for-diary)
+ (todos-insert-item-from-calendar, todos-edit-quit)
+ (todos-change-date, todos-item-done, todos-archive-done-items)
+ (todos-item-undo): New commands.
+ (todos-archive-mode): New major mode.
+ (todos-archive-mode-map, todos-edit-mode-map): New keymaps.
+ (todos-category-beg): Change value.
+ (todos-number-prefix): Change default value.
+ (todos-edit-buffer): Change from defvar to defcustom.
+ (todos-font-lock-keywords): Use todos-done-string-match and
+ todos-category-string-match.
+ (todos-backward-item, todos-forward-item): Use todos-done-string
+ and todos-date-pattern.
+ (todos-display-categories): Reimplement using buttons from
+ button.el instead of widgets.
+ (todos-top-priorities): Use with-current-buffer; take done items
+ into account; ensure buffers gets fontified.
+ (todos-add-category): Ensure new category does not begin with
+ empty lines.
+ (todos-jump-to-category): Use todos-category-select instead of
+ todos-show.
+ (todos-rename-category): Prompt for new name in body instead of in
+ interactive spec.
+ (todos-insert-item): Don't insert in done items section of
+ category. Add two optional arguments to control insertion: (i) to
+ insert near point without prompting for priority; (ii) to use
+ defaults for date and time strings, to prompt for these, or to
+ choose date from the Calendar.
+ (todos-insert-item-here): Reimplement using todos-insert-item.
+ (todos-delete-item): Don't move point after deleting last item.
+ (todos-raise-item, todos-lower-item): Take done items into account.
+ (todos-move-item): Don't move done items; update item numbering;
+ restore if user quits before inserting moved item.
+ (todos-print): Prompt for confirmation to print.
+ (todos-reset-prefix): Search backward from end of file instead of
+ forward from top.
+ (todos-jump-to-category-noninteractively): Take Todos archive into
+ account.
+ (todos-category-select): Show or hide done items according to
+ todos-show-with-done; if shown, coordinate separator and prefix
+ overlays.
+ (todos-add-item-non-interactively): Replace binary insertion
+ algorithm with prompting for numerical priority.
+ (todos-insert-with-overlays): Remove use of variable todos-item-end.
+ (todos-item-start): Take done items into account; use
+ todos-date-pattern.
+ (todos-item-end): Reimplement using todos-forward-item.
+ (todos-remove-item): Reimplement using todos-forward-item and
+ todos-backward-item; redo overlay handling.
+ (todos-mode-map): Add some new key bindings and change numerous
+ existing bindings; use "i" as prefix key for item insertion
+ commands.
+ (todos-mode): Use todos-wrap-lines and delegate word-wrap and
+ wrap-prefix settings to todos-wrap-and-indent; add to invisibility
+ spec; set buffer-read-only to t and consequently let-bind this
+ variable in all Todos commands that change buffer content.
+ (todos-edit-mode): Make an indepent mode, not derived from text-mode.
+ (todos-save): Don't save top priorities buffer.
+ (todos-show): Make a no-op if called interactively in narrowed
+ Todos mode, since, also to work around item prefix reduplication
+ bug with show-paren-mode enabled; use todos-categories-list.
+
+2012-09-12 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el: Comment out time-stamp require; require
+ calendar and diary-lib.
+ (todos-prefix): Change default value and doc string to reflect new
+ meaning; add :initialize and :set functions.
+ (todos-time-string-format, todos-entry-prefix-function)
+ (todos-initials, todos-entry-timestamp-initials)
+ (todos-prefix-face, todos-category-sep, todos-category-end)
+ (todos-cp): Comment out.
+ (todos-prefix-string): Inherit from font-lock-comment-face.
+ (todos-item-header, todos-item-header-face): Remove.
+ (todos-date, todos-time): New faces.
+ (todos-date-face, todos-time-face): Corresponding new variables.
+ (todos-add-time-string, todos-include-in-diary)
+ (todos-exclusion-start, todos-exclusion-end, todos-number-prefix):
+ New defcustoms.
+ (todos-item-end, todos-item-start-overlays)
+ (todos-item-end-overlays): New variables.
+ (todos-date-string-match, todos-time-string-match): New functions.
+ (todos-font-lock-keywords): Use them.
+ (todos-current-date, todos-date-string, todos-time-string)
+ (todos-toggle-item-diary-inclusion, todos-toggle-diary-inclusion)
+ (todos-reset-prefix, todos-update-numbered-prefix)
+ (todos-check-overlay, todos-item-overlays)
+ (todos-insert-with-overlays, todos-show-paren-hack): New functions.
+ (todos-highlight-item): New command.
+ (todos-category-beg): Change value.
+ (todos-category-select): Use todos-category-beg and todos-item-overlays.
+ (todos-backward-item): Add optional count argument; use it and
+ todos-item-start.
+ (todos-forward-item): Use todos-check-overlay, todos-item-start
+ and variable todos-item-end.
+ (todos-edit-item, todos-delete-item): Use todos-number-prefix,
+ todos-update-numbered-prefix, todos-item-overlays.
+ (todos-add-category, todos-rename-category)
+ (todos-list-categories): Use new category format.
+ (todos-delete-category): Allow deleting non-empty category;
+ use new category format.
+ (todos-add-item-non-interactively): Comment out unnecessary
+ save-excursion; use todos-insert-with-overlays.
+ (todos-insert-item): Comment out unnecessary save-excursion; use
+ new item format for date/time header and diary inclusion marking.
+ (todos-insert-item-here): Use new item format for date/time header
+ and diary inclusion marking; use todos-insert-with-overlays.
+ (todos-raise-item): Make a no-op if point is on an empty line; use
+ todos-insert-with-overlays.
+ (todos-lower-item): Use todos-insert-with-overlays.
+ (todos-top-priorities): Move call to todos-show inside
+ save-excursion; add save-current-buffer after save-restriction.
+ (todos-item-start): Use variable todos-item-end.
+ (todos-item-end): Use todos-check-overlay and variable todos-item-end.
+ (todos-remove-item): Take item overlays into account.
+ (todos-mode): Change calculation of wrap-prefix; make
+ hl-line-range-function a local variable and set it to highlight
+ todo item.
+ (todos-show): Ensure point stays at top of category.
+
+2012-09-12 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-window-configuration): Comment out.
+ (todos-display-categories): Comment out use of
+ todos-window-configuration; use switch-to-buffer instead of
+ pop-to-buffer.
+ (todos-jump-to-category-noninteractively): Comment out use of
+ todos-window-configuration.
+ (todos-edit-item): Don't allow editing of date/time item header.
+ (todos-insert-item, todos-insert-item-here): Insert date/time
+ header in front of new item string.
+ (todos-mode): Tweak wrap-prefix.
+
+2012-09-12 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-file-do, todos-file-done):
+ Change default location to directory "~/.emacs.d/".
+ (todos-completion-ignore-case, todos-categories-buffer):
+ New defcustoms.
+ (todos-prefix-string, todos-item-header): New faces.
+ (todos-prefix-face, todos-item-header-face): Corresponding
+ new variables.
+ (todos-rename-category, todos-delete-category)
+ (todos-display-categories, todos-move-item): New commands.
+ (todos-mode-map): Add key bindings for new commands and for
+ todos-add-category, which had no key binding.
+ (todos-jump-to-category-noninteractively): New function.
+ (todos-top-priorities): Comment out code using a previously
+ deleted variable.
+ (todos-completing-read): Allow SPC to insert a space when entering
+ a new category name; use todos-completion-ignore-case.
+ (todos-font-lock-keywords, todos-window-configuration):
+ New variables.
+ (todos-mode): Make mode-name "TODOS"; make font-lock-defaults,
+ word-wrap, and wrap-prefix local variables.
+
+2012-09-12 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-list-categories): Fix typos.
+ (todos-show): Ensure file is in todos-mode.
+
+2012-09-12 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el (todos-header): Remove defvar.
+ (todos-add-category): Comment out code that inserts and updates
+ the file local variables first line of the file todos-file-do.
+ (todos-list-categories): New function.
+ (todos-show): Use it; remove use of a previously deleted variable.
+
+2012-09-11 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todos.el: New file. This is a copy of todo-mode.el
+ from revision 94343 except for the following changes: replace all
+ occurrences of the namespace prefix "todo-" with "todos-", delete
+ the defvar todo-cats (the old name of todo-categories) and its use
+ in todos-add-category, delete all defaliases of old command names.
+
+2012-09-11 Bastien Guerry <bzg@gnu.org>
+
+ * subr.el (set-temporary-overlay-map): Add a docstring.
+ (bug#12346)
+
+2012-09-11 Bastien Guerry <bzg@gnu.org>
+
+ * minibuffer.el (completion-table-subvert): Fix docstring.
+ (bug#12347)
+
+2012-09-11 Bastien Guerry <bzg@gnu.org>
+
+ * help-fns.el (describe-variable): Fix typo. (bug#12346)
+
+2012-09-10 Michael R. Mauger <mmaug@yahoo.com>
+
+ * progmodes/sql.el: Version 3.1
+ (sql-db2-escape-newlines): New variable.
+ (sql-escape-newlines-filter): Use it.
+
+2012-09-10 Juanma Barranquero <lekktu@gmail.com>
+
+ * custom.el (custom-theme-load-confirm): Remove unneeded assignment.
+
+2012-09-10 Dan Nicolaescu <dann@gnu.org>
+
+ * vc/diff-mode.el (diff-mode-menu): Bind
+ diff-remove-trailing-whitespace.
+
+2012-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp-mode.el (emacs-list-byte-code-comment-re): New var.
+ (emacs-lisp-byte-code-comment)
+ (emacs-lisp-byte-code-syntax-propertize, emacs-lisp-byte-code-mode):
+ New functions.
+ (eval-sexp-add-defvars): Don't skip defvars in column >0.
+ (eval-defun-2): Remove bogus interactive spec.
+ (lisp-indent-line): Remove redundant whole-exp code, now done in
+ indent-according-to-mode.
+ (save-match-data): Remove redundant indent data.
+
+ * emacs-lisp/benchmark.el (benchmark-run, benchmark-run-compiled):
+ Use `declare'.
+
+2012-09-09 Juri Linkov <juri@jurta.org>
+
+ * replace.el (replace-regexp-lax-whitespace): New defcustom.
+ (replace-lax-whitespace, query-replace-regexp)
+ (query-replace-regexp-eval, replace-regexp): Doc fix.
+ (perform-replace, replace-highlight): Let-bind
+ isearch-lax-whitespace to replace-lax-whitespace and
+ isearch-regexp-lax-whitespace to replace-regexp-lax-whitespace.
+
+ * isearch.el (isearch-query-replace): Let-bind
+ replace-lax-whitespace to isearch-lax-whitespace and
+ replace-regexp-lax-whitespace to
+ isearch-regexp-lax-whitespace. (Bug#10885)
+
+2012-09-09 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * eshell/em-unix.el (eshell/sudo): Explicitly drop return value.
+
+2012-09-09 Alan Mackenzie <acm@muc.de>
+
+ * progmodes/cc-engine.el (c-state-cache-init):
+ Initialise c-state-semi-nonlit-pos-cache\(-limit\)? properly.
+ (c-record-parse-state-state):
+ Record c-state-semi-nonlit-pos-cache\(-limit\)?.
+
+2012-09-09 Andreas Schwab <schwab@linux-m68k.org>
+
+ * register.el (register-separator): Rename from
+ separator-register. All uses changed. Doc fix.
+ (register): Fix version.
+
+2012-09-09 Chong Yidong <cyd@gnu.org>
+
+ * replace.el (query-replace-map): Bind four new symbols for
+ requesting window scrolling.
+
+ * subr.el (y-or-n-p): Handle the window-scrolling bindings in
+ query-replace-map (Bug#8948).
+
+ * custom.el (custom-theme-load-confirm): Use y-or-n-p.
+
+ * emacs-lisp/map-ynp.el (map-y-or-n-p): Don't bind scrolling keys
+ since they are now in query-replace-map.
+
+ * window.el (scroll-other-window-down): Make the arg optional.
+
+2012-09-09 Chong Yidong <cyd@gnu.org>
+
+ * files.el (hack-local-variables-confirm): Use quit-window to kill
+ the *Local Variables* buffer.
+
+2012-09-08 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/ruby-mode.el (ruby-toggle-block): Guess the current block,
+ not just expect to be at its beginning. Adjust callees.
+ Succeed when do-end block has no space before the pipe character.
+ (ruby-brace-to-do-end): When the original block is one-liner,
+ convert to multiline. Reindent the result.
+
+2012-09-08 Jambunathan K <kjambunathan@gmail.com>
+
+ * register.el (register): New group.
+ (register-separator): New user option.
+ (increment-register): Route it to `append-to-register', if
+ register contains text. Implication is that `C-x r +' can now be
+ used for appending to a text register (bug#12217).
+ (append-to-register, prepend-to-register): Add separator based on
+ `register-separator.
+
+2012-09-08 Alan Mackenzie <acm@muc.de>
+
+ AWK Mode: make auto-newline work when there's "==" in the pattern.
+ * progmodes/cc-cmds.el (c-point-syntax): Handle virtual semicolons
+ correctly.
+ * progmodes/cc-engine.el (c-guess-basic-syntax CASE 5A.3):
+ Test more rigorously for "=" token.
+
+2012-09-08 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/ruby-mode.el (ruby-match-expression-expansion):
+ Only fail when reached LIMIT.
+
+2012-09-08 Chong Yidong <cyd@gnu.org>
+
+ * dired.el (dired-mode-map): Don't bind M-=.
+
+ * dired-aux.el (dired-diff): Use backup file as default.
+
+2012-09-08 Drew Adams <drew.adams@oracle.com>
+
+ * subr.el (add-to-history): Fix delete usage (Bug#12314).
+
+2012-09-08 Chong Yidong <cyd@gnu.org>
+
+ * subr.el (syntax-after, syntax-class): Doc fix.
+
+2012-09-08 Martin Rudalics <rudalics@gmx.at>
+
+ * window.el (display-buffer-in-previous-window): New buffer
+ display action function.
+
+ * emacs-lisp/debug.el (debugger-bury-or-kill): New option.
+ (debugger-previous-window): New variable.
+ (debug): Rewrite using display-buffer-in-previous-window,
+ quit-restore-window and debugger-bury-or-kill. (Bug#8789)
+
+2012-09-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/byte-run.el (defun): Tweak message. Simplify code.
+
+2012-09-07 Matt McClure <mlm@aya.yale.edu> (tiny change)
+
+ * progmodes/python.el (python-shell-send-string):
+ When default-directory is remote, create temp file on remote
+ filesystem.
+ (python-shell-send-file): When file is remote, pass local view of
+ file paths to remote Python interpreter. (Bug#12340)
+
+2012-09-07 Chong Yidong <cyd@gnu.org>
+
+ * window.el (switch-to-buffer): Doc fix (Bug#12181).
+
+ * files.el (after-find-file): Don't fail on a read-only buffer if
+ require-final-newline is `visit' or `visit-save' (Bug#11156).
+
+ * subr.el (read-char-choice): Allow quitting via ESC ESC.
+
+ * userlock.el (ask-user-about-supersession-threat):
+ Use read-char-choice (Bug#12093).
+
+2012-09-07 Chong Yidong <cyd@gnu.org>
+
+ * subr.el (buffer-narrowed-p): New function.
+
+ * ses.el (ses-widen):
+ * simple.el (count-words--buffer-message):
+ * net/browse-url.el (browse-url-of-buffer): Use it
+
+ * simple.el (count-words-region): Don't signal an error if there
+ is a non-nil prefix arg and the mark is not set.
+
+ * help.el (describe-key-briefly): Allow the message to be seen
+ when invoked from the minibuffer (Bug#7014).
+
+2012-09-07 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/ruby-mode.el (ruby-end-of-defun)
+ (ruby-beginning-of-defun): Simplify, allow indentation before
+ block beginning and end keywords.
+ (ruby-beginning-of-defun): Only consider 3 keywords defun beginners.
+ (ruby-end-of-defun): Expect that the point is at the beginning of
+ the defun.
+
+2012-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args
+ (bug#12367).
+ (cl--make-usage-args): Strip _ from argument names.
+
+2012-09-06 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
+
+ * progmodes/vhdl-mode.el (vhdl-speedbar-initialize): Don't use
+ obsolete alias speedbar-key-map.
+ (vhdl-doc-variable, vhdl-doc-mode): Use called-interactively-p.
+ (vhdl-index-menu-init): Don't use obsolete variable
+ font-lock-maximum-size.
+
+2012-09-06 Chong Yidong <cyd@gnu.org>
+
+ * frame.el (window-system-version): Mark as obsolete.
+
+ * speedbar.el (speedbar-update-flag, speedbar-mode): Remove uses
+ of obsolete variable speedbar-key-map.
+
+2012-09-06 Juri Linkov <juri@jurta.org>
+
+ * replace.el (replace-lax-whitespace): New defcustom.
+ (query-replace, query-replace-regexp, query-replace-regexp-eval)
+ (replace-string, replace-regexp): Mention it in docstrings.
+ (perform-replace, replace-highlight): Let-bind
+ isearch-lax-whitespace and isearch-regexp-lax-whitespace according
+ to the values of replace-lax-whitespace and regexp-flag.
+ Don't let-bind search-whitespace-regexp. (Bug#10885)
+
+ * isearch.el (isearch-query-replace): Let-bind
+ replace-lax-whitespace instead of let-binding
+ replace-search-function and replace-re-search-function.
+ (isearch-lazy-highlight-search): Let-bind isearch-lax-whitespace
+ and isearch-regexp-lax-whitespace to lazy-highlight variables.
+ (isearch-toggle-symbol): Set isearch-regexp to nil
+ in isearch-word mode (like in isearch-toggle-word).
+
+2012-09-06 Juri Linkov <juri@jurta.org>
+
+ * replace.el (replace-search-function)
+ (replace-re-search-function): Set default values to nil.
+ (perform-replace): Let-bind isearch-related variables based on
+ replace-related values, call `isearch-search-fun' and let-bind
+ the result to `search-function'. Remove code that sets
+ `search-function' and `search-string' separately for
+ `delimited-flag'.
+ (replace-highlight): Add new argument `delimited-flag' and
+ rename other arguments to the names used in `perform-replace'.
+ Let-bind `isearch-word' to the argument `delimited-flag'.
+ (Bug#10885, bug#10887)
+
+2012-09-07 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/ruby-mode.el (ruby-indent-beg-re): Add pieces from
+ ruby-beginning-of-indent, simplify, allow all keywords to have
+ indentation before them.
+ (ruby-beginning-of-indent): Adjust for above. Search until the
+ found point is not inside a string or comment.
+ (ruby-font-lock-keywords): Allow symbols to start with "@"
+ character, give them higher priority than variables.
+ (ruby-syntax-propertize-function)
+ (ruby-font-lock-syntactic-keywords): Remove the "not comments"
+ matchers. Expression expansions are not comments when inside a
+ string, and there comment syntax status is irrelevant.
+ (ruby-match-expression-expansion): New function. Check that
+ expression expansion is inside a string, and it's not escaped.
+ (ruby-font-lock-keywords): Use it.
+
+2012-09-05 Martin Rudalics <rudalics@gmx.at>
+
+ * help.el (temp-buffer-max-height): New default value.
+ (temp-buffer-resize-frames): New option.
+ (resize-temp-buffer-window): Optionally resize frame.
+
+ * window.el (fit-frame-to-buffer-bottom-margin): New option.
+ (fit-frame-to-buffer): New function.
+
+2012-09-05 Glenn Morris <rgm@gnu.org>
+
+ * emulation/cua-rect.el (cua--init-rectangles):
+ * textmodes/picture.el (picture-mode-map):
+ * play/blackbox.el (blackbox-mode-map): Remap right-char and left-char
+ like forward-char and backward-char. (Bug#12317)
+
+2012-09-05 Leo Liu <sdl.web@gmail.com>
+
+ * progmodes/flymake.el (flymake-warning-re): New variable.
+ (flymake-parse-line): Use it.
+
+2012-09-05 Glenn Morris <rgm@gnu.org>
+
+ * calendar/holidays.el (holiday-christian-holidays):
+ Rename an entry. (Bug#12289)
+
+2012-09-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/sh-script.el (sh-font-lock-paren): Don't burp at BOB
+ (bug#12222).
+
+2012-09-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * loadup.el: Load macroexp. Remove hack.
+ * emacs-lisp/macroexp.el (macroexp--eval-if-compile): New function.
+ (macroexp--expand-all): Use it to get better warnings.
+ (macroexp--backtrace, macroexp--trim-backtrace-frame)
+ (internal-macroexpand-for-load): New functions.
+ (macroexp--pending-eager-loads): New var.
+ (emacs-startup-hook): New hack to replace one in loadup.el.
+ * emacs-lisp/cl-macs.el (cl--compiler-macro-list*)
+ (cl--compiler-macro-cXXr): Move to top, before they can be used.
+ (cl-psetf): Simplify.
+ (cl-defstruct): Add indent rule.
+
+2012-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * mail/smtpmail.el (smtpmail-send-it): Prefer the From: header
+ over `user-mail-address' for the SMTP MAIL FROM envelope.
+ (smtpmail-via-smtp): Ditto.
+
+2012-09-04 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/ruby-mode.el: Clean up keybindings.
+ (ruby-mode-map): Don't bind ruby-electric-brace,
+ ruby-beginning-of-defun, ruby-end-of-defun, ruby-mark-defun,
+ backward-kill-word, reindent-then-newline-and-indent.
+ (ruby-mark-defun): Remove.
+ (ruby-electric-brace): Remove. Obsoleted by electric-indent-chars.
+ (ruby-mode): Set local beginning-of-defun-function and
+ end-of-defun-function values.
+
+2012-09-03 Martin Rudalics <rudalics@gmx.at>
+
+ * window.el (temp-buffer-window-setup-hook)
+ (temp-buffer-window-show-hook): New hooks.
+ (temp-buffer-window-setup, temp-buffer-window-show)
+ (with-temp-buffer-window): New functions.
+ (fit-window-to-buffer): Remove unused optional argument OVERRIDE.
+ (special-display-popup-frame): Make sure the window used shows BUFFER.
+
+ * help.el (temp-buffer-resize-mode): Fix doc-string.
+ (resize-temp-buffer-window): New optional argument WINDOW.
+
+ * files.el (recover-file, save-buffers-kill-emacs):
+ * dired.el (dired-mark-pop-up): Use with-temp-buffer-window.
+
+2012-09-02 Michael Albinus <michael.albinus@gmx.de>
+
+ * eshell/em-unix.el (eshell/sudo): When we have an ad-hoc
+ remote definition of `default-directory', ensure we can connect.
+
+2012-09-02 Juri Linkov <juri@jurta.org>
+
+ Toggle whitespace matching mode with M-s SPC.
+ http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00008.html
+
+ * isearch.el (search-whitespace-regexp): Doc fix.
+ Remove cons cell customization.
+ (isearch-mode-map): Bind "\M-s " to isearch-toggle-lax-whitespace.
+ (isearch-lax-whitespace, isearch-regexp-lax-whitespace):
+ New variables.
+ (isearch-forward, isearch-forward-regexp): Doc fix.
+ (isearch-toggle-lax-whitespace): New command.
+ (search-forward-lax-whitespace, search-backward-lax-whitespace)
+ (re-search-forward-lax-whitespace)
+ (re-search-backward-lax-whitespace): New functions.
+ (isearch-whitespace-regexp): Remove function.
+ (isearch-query-replace): Let-bind replace-search-function and
+ replace-re-search-function.
+ (isearch-occur): Let-bind search-spaces-regexp according to the
+ value of isearch-lax-whitespace and isearch-regexp-lax-whitespace.
+ (isearch-quote-char): Check isearch-regexp-lax-whitespace in the
+ condition for C-q SPC.
+ (isearch-search-fun-default): Use new functions mentioned above.
+ (isearch-search-forward, isearch-search-backward): Remove functions.
+ (isearch-search): Don't let-bind search-spaces-regexp.
+ (isearch-lazy-highlight-space-regexp): Remove variable.
+ (isearch-lazy-highlight-lax-whitespace)
+ (isearch-lazy-highlight-regexp-lax-whitespace): New variables.
+ (isearch-lazy-highlight-new-loop): Use them.
+ (isearch-lazy-highlight-search): Don't let-bind search-spaces-regexp.
+
+2012-09-02 Chong Yidong <cyd@gnu.org>
+
+ * dired.el (dired-mode-map): Menu string fixes (Bug#11616).
+
+2012-09-02 Glenn Morris <rgm@gnu.org>
+
+ * simple.el (undo): Tweak message in undo-only case. (Bug#12283)
+
+2012-09-01 Glenn Morris <rgm@gnu.org>
+
+ * term.el: Tidy up menu definitions.
+ (term-mode-map): Use easymenu for In/Out, Complete menus.
+ (term-pager-break-map): Initialize in the defvar.
+ (term-terminal-menu, term-signals-menu): Define with easymenu.
+ (term-terminal-menu): Also show it in line-mode. (Bug#11957)
+ (term-pager-menu): New, extracted from term-process-pager.
+ (term-mode, term-char-mode, term-process-pager): Use easymenu-add.
+ (term-update-mode-line): Propertize line/char and page items.
+ (term-process-pager): Move keymap initialization elsewhere.
+
+2012-09-01 Martin Rudalics <rudalics@gmx.at>
+
+ * window.el (switch-to-prev-buffer): Handle additional values of
+ BURY-OR-KILL argument. Don't switch in minibuffer window.
+ (switch-to-next-buffer): Don't switch in minibuffer window.
+ (quit-restore-window): New function based on quit-window.
+ Handle additional values of former KILL argument.
+ (quit-window): Call quit-restore-window with appropriate
+ interpretation of KILL argument.
+ (display-buffer-below-selected): New buffer display action
+ function.
+
+2012-09-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuffer.el (completion-at-point-functions): Complete docstring
+ (bug#12254).
+
+2012-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Better seed support for (random).
+ * play/5x5.el, play/animate.el, play/cookie1.el, play/dissociate.el:
+ * play/doctor.el, play/dunnet.el, play/gomoku.el, play/landmark.el:
+ * play/mpuz.el, play/tetris.el, play/zone.el:
+ * calc/calc-comb.el (math-init-random-base):
+ * play/blackbox.el (bb-init-board):
+ * play/life.el (life):
+ * server.el (server-use-tcp):
+ * type-break.el (type-break):
+ Remove unnecessary call to (random t).
+ * net/sasl.el (sasl-unique-id-function):
+ Change (random t) to (random), now that the latter is more random.
+ * play/life.el (life-initialized): Remove no-longer-needed var.
+
+2012-08-31 Alp Aker <alp.tekin.aker@gmail.com>
+
+ * window.el (switch-to-prev-buffer, switch-to-next-buffer):
+ Consider frame's buffer predicate when choosing the buffer.
+ (Bug#12081)
+
2012-08-30 Richard Stallman <rms@gnu.org>
* simple.el (special-mode-map): Delete binding for `z'.
2012-08-29 Michael Albinus <michael.albinus@gmx.de>
* eshell/esh-ext.el (eshell-external-command): Do not examine
- remote shell scripts. See
- <https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/1035790>.
+ remote shell scripts.
+ See <https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/1035790>.
* net/tramp-sh.el (tramp-remote-path): Add "/sbin" and
"/usr/local/sbin".