Commit 903204bb authored by Stephen Berman's avatar Stephen Berman
Browse files

todo-mode.el: Remove dependence on auto-mode-alist.

* calendar/todo-mode.el: Remove dependence on auto-mode-alist,
to avoid errors when trying to create or visit a file foo.todo
located outside to todo-directory, and to allow having such files
without them being tied to Todo mode.
(todo-show, todo-move-category, todo-merge-category, todo-find-archive)
(todo-archive-done-item, todo-find-filtered-items-file)
(todo-filter-items, todo-find-item, todo-diary-goto-entry)
(todo-category-completions, todo-read-category): When visiting a
Todo file, make sure we're in the right mode and the buffer local
variables are set.
(todo-make-categories-list, todo-reset-nondiary-marker)
(todo-reset-done-string, todo-reset-comment-string): After
processing all Todo files, kill the buffers of those files that
weren't being visited before the processing.
(todo-display-as-todo-file, todo-add-to-buffer-list)
(todo-visit-files-commands): Comment out.
(todo-modes-set-3, todo-mode): Comment out additions to find-file-hook.
(auto-mode-alist): Remove add-to-list calls making Todo file
extensions unrestrictedly tied to Todo modes.

* doc/misc/todo-mode.texi: Update in light of changes due to bug#17482.
Replace numerous mistaken uses of literal quotes with proper
Texinfo markup.
(Todo Mode Entry Points): Comment out reference to using find-file
or Dired to visit Todo files, since this has been disabled (bug#17482).
parent 15ad4013
2014-05-23 Stephen Berman <stephen.berman@gmx.net>
* todo-mode.texi: Update in light of changes due to bug#17482.
Replace numerous mistaken uses of literal quotes with proper
Texinfo markup.
(Todo Mode Entry Points): Comment out reference to using find-file
or Dired to visit Todo files, since this has been disabled (bug#17482).
2014-05-06 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Frequently Asked Questions): Mention HISTFILE
......
......@@ -258,15 +258,15 @@ are @kbd{C-c t} for @code{todo-show}, @kbd{C-c j} for
@code{todo-insert-item}, since these commands are bound to @kbd{t},
@kbd{j} and @kbd{i}, respectively, in Todo mode.
You can also visit a Todo file via @code{find-file} or Dired, like any
other file, and since Emacs recognizes it, the buffer will automatically
be in the appropriate Todo mode. Moreover, as long as the command you
use to visit the file is listed in the option
@code{todo-visit-files-commands} (which by default contains
@code{find-file} and @code{dired-find-file}), it will also correctly
display the file's first category on first visiting the file (otherwise
you have to use one of the commands for navigating between categories in
order to get a proper display).
@c You can also visit a Todo file via @code{find-file} or Dired, like any
@c other file, and since Emacs recognizes it, the buffer will automatically
@c be in the appropriate Todo mode. Moreover, as long as the command you
@c use to visit the file is listed in the option
@c @code{todo-visit-files-commands} (which by default contains
@c @code{find-file} and @code{dired-find-file}), it will also correctly
@c display the file's first category on first visiting the file (otherwise
@c you have to use one of the commands for navigating between categories in
@c order to get a proper display).
You can leave Todo mode by typing @kbd{q} (@code{todo-quit}), which
buries the current todo file buffer. Doing this also saves any changes
......@@ -295,7 +295,7 @@ for the shift key for capitalization and the raw prefix argument
number key.
The predefined key bindings in Todo are more or less mnemonic. As a
rule, key sequences beginning with @kbd{C} (capital `C', not the
rule, key sequences beginning with @kbd{C} (capital @samp{C}, not the
control key) are bound to commands applying to categories, sequences
beginning with @kbd{F} apply to (non-archive) file-level commands, and
those beginning with @kbd{A} apply to archives (a special type of Todo
......@@ -669,9 +669,9 @@ down, i.e., lowering their priority, by one.
@samp{region} (@kbd{r}): Use the text of the selected region as the
text of the new item, and insert this in accordance with the item
insertion options and other parameters passed. If the option
`todo-use-only-highlighted-region' is non-nil, then use the region
only when it is highlighted; otherwise, use the region regardless of
highlighting.
@code{todo-use-only-highlighted-region} is non-nil, then use the
region only when it is highlighted; otherwise, use the region
regardless of highlighting.
@end enumerate
Note that the parameters are divided into five numbered groups; within
......@@ -715,9 +715,9 @@ Press a key (so far `i y'): y=>diary:GO! @{ c=>calendar d=>date n=>dayname @} t
@noindent Notice that the pair @samp{k=>nonmarking} is now absent, since it
belongs to the same group as the selected pair @samp{y=>diary}, hence
is no longer available for this sequence. Since @kbd{y} is a
continuation key, it is still available, but now the string ":GO!" is
appended to the pair to remind you that pressing this key again will
complete the sequence.
continuation key, it is still available, but now the string
@samp{:GO!} is appended to the pair to remind you that pressing this
key again will complete the sequence.
......@@ -821,10 +821,10 @@ otherwise it enters the empty string (i.e., no time string).
@noindent
Editing the text of a lengthy item in the minibuffer can be
inconvenient; therefore, if you type `e e' or `e h' on an item whose
text contains more than one logical line, the effect is the same as if
you had typed `e m', that is, you switch a special buffer in Todo Edit
mode.
inconvenient; therefore, if you type @kbd{e e} or @kbd{e h} on an item
whose text contains more than one logical line, the effect is the same
as if you had typed @kbd{e m}, that is, you switch a special buffer in
Todo Edit mode.
When you pass any of the parameters of the preceding group, except for
the @samp{date} parameter, this completes the item editing invocation
......@@ -916,10 +916,10 @@ invocation:
Press a key (so far `e d'): f=>full c=>calendar a=>today n=>dayname y=>year m=>month d=>daynum
@end example
In addition to the item-level invocations `e y', to change the current
item's diary inclusion status, and `e k', to change the current item's
calendar marking status, Todo mode also has two related category-level
commands:
In addition to the item-level invocations @kbd{e y}, to change the
current item's diary inclusion status, and @kbd{e k}, to change the
current item's calendar marking status, Todo mode also has two related
category-level commands:
@table @kbd
......@@ -932,7 +932,7 @@ category.
@end table
@noindent
Like `e k', `C e k' automatically removes @code{todo-nondiary-marker}
Like @kbd{e k}, @kbd{C e k} automatically removes @code{todo-nondiary-marker}
from all items it is present on, since only diary items can bear
@code{diary-nonmarking-symbol}.
......@@ -944,7 +944,7 @@ to be toggles, but to have the same effect on all items in the
category, and take a prefix argument to reverse the effect. (If you
really want to toggle the diary-inclusion and calendar-marking status
of all items in the category, you can do this by marking all the items
and then invoking `e y' or `e k', @pxref{Marked Items}).
and then invoking @kbd{e y} or @kbd{e k}, @pxref{Marked Items}).
@node Relocating and Removing Items, , Editing Item Headers and Text, Item Editing
@subsection Relocating and Removing Items
......@@ -1050,14 +1050,15 @@ Archive Mode}).
@anchor{todo-item-done}
@item d
This command (@code{todo-item-done}) removes the todo item at point from
the todo list, appends to the original header a header consisting of
@code{todo-done-string} (by default ``DONE '') and the current date, and
if @code{todo-always-add-time-string} is enabled, also the current time,
and adds the resulting done item to the top of the done items section of
the category. Invoked with a prefix argument, it also prompts you to
enter a comment, which is appended to the end of the done item, prefixed
with @code{todo-comment-string} (by default ``COMMENT: '').
This command (@code{todo-item-done}) removes the todo item at point
from the todo list, appends to the original header a header consisting
of @code{todo-done-string} (by default @samp{DONE }) and the current
date, and if @code{todo-always-add-time-string} is enabled, also the
current time, and adds the resulting done item to the top of the done
items section of the category. Invoked with a prefix argument, it
also prompts you to enter a comment, which is appended to the end of
the done item, prefixed with @code{todo-comment-string} (by default
@samp{COMMENT: }).
@end table
A category's done items section is located below the last todo (i.e.,
......@@ -1255,7 +1256,7 @@ category in the archive, the archive file is also automatically deleted.
Since it is natural to visit an archive from the corresponding todo
file, it would be convenient to easily return to the todo file when you
have finished browsing the archive. If you type `q' to quit Todo
have finished browsing the archive. If you type @kbd{q} to quit Todo
Archive mode, this switches to the corresponding todo file and shows the
todo category corresponding to the archive category you were just
visiting.
......@@ -1396,13 +1397,13 @@ to sort by archived item counts.
Each row of the table is also buttonized; pressing one of these exits
the buffer (killing it), returns to the buffer of the file from which
you had invoked `F c', and displays the category that was named in the
row button you pressed (i.e., pressing this button jumps to that
category). However, if the category named in the row is in a todo file
and all of its items have been archived, and you have enabled the option
@code{todo-skip-archived-categories}, then pressing the button jumps to
the archive category instead of the empty todo category. You can
recognize such categories by their items counts in the table---all
you had invoked @kbd{F c}, and displays the category that was named in
the row button you pressed (i.e., pressing this button jumps to that
category). However, if the category named in the row is in a todo
file and all of its items have been archived, and you have enabled the
option @code{todo-skip-archived-categories}, then pressing the button
jumps to the archive category instead of the empty todo category. You
can recognize such categories by their items counts in the table---all
columns but the archived one have counts of zero---and in addition,
their lines in the table are also distinguished from the others by a
different face (@pxref{Faces}).
......@@ -1586,7 +1587,7 @@ todo file, and the latter sets the number of top priorities for the
current category. To exclude a category or file from filtering by @kbd{F t t}
and @kbd{F t m}, set the number to @samp{0}.
@item
You can invoke `F t t' and `F t m' with a numeric prefix argument,
You can invoke @kbd{F t t} and @kbd{F t m} with a numeric prefix argument,
which specifies the number of top priorities in each category just for
this invocation, overriding both @code{todo-top-priorities-overrides} and
@code{todo-top-priorities}.
......@@ -1681,7 +1682,7 @@ use the values of @code{todo-top-priorities-overrides} or
Aside from explicitly invoking an item filtering command to display a
saved list of items filtered by a given method from given todo files,
there are two other ways to visit a saved file of filtered items. You
can invoke a command similar to `find-file':
can invoke a command similar to @code{find-file}:
@table @kbd
@item F f
......
2014-05-23 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el: Remove dependence on auto-mode-alist,
to avoid errors when trying to create or visit a file foo.todo
located outside to todo-directory, and to allow having such files
without them being tied to Todo mode (bug#17482).
(todo-show, todo-move-category, todo-merge-category, todo-find-archive)
(todo-archive-done-item, todo-find-filtered-items-file)
(todo-filter-items, todo-find-item, todo-diary-goto-entry)
(todo-category-completions, todo-read-category): When visiting a
Todo file, make sure we're in the right mode and the buffer local
variables are set.
(todo-make-categories-list, todo-reset-nondiary-marker)
(todo-reset-done-string, todo-reset-comment-string): After
processing all Todo files, kill the buffers of those files that
weren't being visited before the processing.
(todo-display-as-todo-file, todo-add-to-buffer-list)
(todo-visit-files-commands): Comment out.
(todo-modes-set-3, todo-mode): Comment out additions to find-file-hook.
(auto-mode-alist): Remove add-to-list calls making Todo file
extensions unrestrictedly tied to Todo modes.
2014-05-23 Stefan Monnier <monnier@iro.umontreal.ca>
 
* emacs-lisp/nadvice.el (advice--member-p): Change second arg.
......
......@@ -566,13 +566,13 @@ less than or equal the category's top priority setting."
;;; Entering and exiting
;; -----------------------------------------------------------------------------
(defcustom todo-visit-files-commands (list 'find-file 'dired-find-file)
"List of file finding commands for `todo-display-as-todo-file'.
Invoking these commands to visit a todo file or todo archive file
calls `todo-show' or `todo-find-archive', so that the file is
displayed correctly."
:type '(repeat function)
:group 'todo)
;; (defcustom todo-visit-files-commands (list 'find-file 'dired-find-file)
;; "List of file finding commands for `todo-display-as-todo-file'.
;; Invoking these commands to visit a todo file or todo archive file
;; calls `todo-show' or `todo-find-archive', so that the file is
;; displayed correctly."
;; :type '(repeat function)
;; :group 'todo)
(defun todo-short-file-name (file)
"Return the short form of todo file FILE's name.
......@@ -740,9 +740,12 @@ corresponding todo file, displaying the corresponding category."
"Choose a regexp items file: "
rxf) 'regexp))))))
(if (file-exists-p fi-file)
(set-window-buffer
(selected-window)
(set-buffer (find-file-noselect fi-file 'nowarn)))
(progn
(set-window-buffer
(selected-window)
(set-buffer (find-file-noselect fi-file 'nowarn)))
(unless (derived-mode-p 'todo-filtered-items-mode)
(todo-filtered-items-mode)))
(message "There is no %s file for %s"
(cond ((eq todo-show-first 'top)
"top priorities")
......@@ -757,6 +760,9 @@ corresponding todo file, displaying the corresponding category."
(unless (todo-check-file file) (throw 'end nil))
(set-window-buffer (selected-window)
(set-buffer (find-file-noselect file 'nowarn)))
(if (equal (file-name-extension (buffer-file-name)) "toda")
(unless (derived-mode-p 'todo-archive-mode) (todo-archive-mode))
(unless (derived-mode-p 'todo-mode) (todo-mode)))
;; When quitting an archive file, show the corresponding
;; category in the corresponding todo file, if it exists.
(when (assoc cat todo-categories)
......@@ -1449,6 +1455,10 @@ the archive of the file moved to, creating it if it does not exist."
(if (member buf (funcall todo-files-function t))
(concat (file-name-sans-extension nfile) ".toda")
nfile))
(if (equal (file-name-extension (buffer-file-name)) "toda")
(unless (derived-mode-p 'todo-archive-mode)
(todo-archive-mode))
(unless (derived-mode-p 'todo-mode) (todo-mode)))
(let* ((nfile-short (todo-short-file-name nfile))
(prompt (concat
(format "Todo file \"%s\" already has "
......@@ -1564,6 +1574,7 @@ archive file and the source category is deleted."
(done-count (todo-get-count 'done cat)))
;; Merge into goal todo category.
(with-current-buffer (get-buffer (find-file-noselect gfile))
(unless (derived-mode-p 'todo-mode) (todo-mode))
(widen)
(goto-char (point-min))
(let ((buffer-read-only nil))
......@@ -2995,6 +3006,7 @@ displayed."
(when place
(set-window-buffer (selected-window)
(set-buffer (find-file-noselect archive)))
(unless (derived-mode-p 'todo-archive-mode) (todo-archive-mode))
(if (member place '(other-archive other-cat))
(setq todo-category-number 1)
(todo-category-number cat))
......@@ -3070,6 +3082,7 @@ this category does not exist in the archive, it is created."
(if (not (or marked all item))
(throw 'end (message "Only done items can be archived"))
(with-current-buffer archive
(unless (derived-mode-p 'todo-archive-mode) (todo-archive-mode))
(let (buffer-read-only)
(widen)
(goto-char (point-min))
......@@ -3091,12 +3104,12 @@ this category does not exist in the archive, it is created."
(todo-update-categories-sexp)
;; If archive is new, save to file now (with
;; write-region to avoid prompt for file to save to)
;; to update todo-archives, and to let auto-mode-alist
;; take effect below on visiting the archive.
;; to update todo-archives, and set the mode for
;; visiting the archive below.
(unless (nth 7 (file-attributes afile))
(write-region nil nil afile t t)
(setq todo-archives (funcall todo-files-function t))
(kill-buffer))))
(todo-archive-mode))))
(with-current-buffer tbuf
(cond
(all
......@@ -3957,7 +3970,9 @@ regexp items."
(setq file (completing-read "Choose a filtered items file: "
falist nil t nil nil (car falist)))
(setq file (cdr (assoc-string file falist)))
(find-file file)))
(find-file file)
(unless (derived-mode-p 'todo-filtered-items-mode)
(todo-filtered-items-mode))))
(defun todo-go-to-source-item ()
"Display the file and category of the filtered item at point."
......@@ -4088,6 +4103,8 @@ multifile commands for further details."
(completing-read "Choose a regexp items file: "
rxf) 'regexp))))
(find-file fname)
(unless (derived-mode-p 'todo-filtered-items-mode)
(todo-filtered-items-mode))
(todo-prefix-overlays)
(todo-check-filtered-items-file))
(t
......@@ -4341,6 +4358,9 @@ its priority has changed, and `same' otherwise."
todo-global-current-todo-file)))
(find-file-noselect file)
(with-current-buffer (find-buffer-visiting file)
(if archive
(unless (derived-mode-p 'todo-archive-mode) (todo-archive-mode))
(unless (derived-mode-p 'todo-mode) (todo-mode)))
(save-restriction
(widen)
(goto-char (point-min))
......@@ -4917,23 +4937,28 @@ the file."
;; Make sure to include newly created archives, e.g. due to
;; todo-move-category.
(when (member archive (funcall todo-files-function t))
(let ((archive-count 0))
(with-current-buffer (find-file-noselect archive)
(widen)
(goto-char (point-min))
(when (re-search-forward
(concat "^" (regexp-quote todo-category-beg)
cat "$")
(point-max) t)
(forward-line)
(while (not (or (looking-at
(concat
(regexp-quote todo-category-beg)
"\\(.*\\)\n"))
(eobp)))
(when (looking-at todo-done-string-start)
(setq archive-count (1+ archive-count)))
(forward-line))))
(let ((archive-count 0)
(visiting (find-buffer-visiting archive)))
(with-current-buffer (or visiting
(find-file-noselect archive))
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(when (re-search-forward
(concat "^" (regexp-quote todo-category-beg)
cat "$")
(point-max) t)
(forward-line)
(while (not (or (looking-at
(concat
(regexp-quote todo-category-beg)
"\\(.*\\)\n"))
(eobp)))
(when (looking-at todo-done-string-start)
(setq archive-count (1+ archive-count)))
(forward-line)))))
(unless visiting (kill-buffer)))
(todo-update-count 'archived archive-count cat))))
((looking-at todo-done-string-start)
(todo-update-count 'done 1 cat))
......@@ -5157,6 +5182,11 @@ Overrides `diary-goto-entry'."
(if (not (and (file-exists-p file)
(find-file-other-window file)))
(message "Unable to locate this diary entry")
;; If it's a Todo file, make sure it's in Todo mode.
(when (and (equal (file-name-directory (file-truename file))
(file-truename todo-directory))
(not (derived-mode-p 'todo-mode)))
(todo-mode))
(when (eq major-mode 'todo-mode) (widen))
(goto-char (point-min))
(when (re-search-forward (format "%s.*\\(%s\\)" date content) nil t)
......@@ -5596,6 +5626,9 @@ have been removed."
(add-to-list 'files curfile))
(dolist (f files listall)
(with-current-buffer (find-file-noselect f 'nowarn)
(if archive
(unless (derived-mode-p 'todo-archive-mode) (todo-archive-mode))
(unless (derived-mode-p 'todo-mode) (todo-mode)))
;; Ensure category is properly displayed in case user
;; switches to file via a non-Todo mode command. And if
;; done items in category are visible, keep them visible.
......@@ -5681,6 +5714,7 @@ categories from `todo-category-completions-files'."
(categories (cond (file0
(with-current-buffer
(find-file-noselect file0 'nowarn)
(unless (derived-mode-p 'todo-mode) (todo-mode))
(let ((todo-current-todo-file file0))
todo-categories)))
((and add (not file))
......@@ -5960,23 +5994,28 @@ the empty string (i.e., no time string)."
(regexp-quote diary-nonmarking-symbol) "\\)?"))
(when (not (equal value oldvalue))
(dolist (f files)
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(widen)
(goto-char (point-min))
(while (not (eobp))
(if (re-search-forward
(concat "^\\(" todo-done-string-start "[^][]+] \\)?"
"\\(?1:" (regexp-quote (car oldvalue))
"\\)" todo-date-pattern "\\( "
diary-time-regexp "\\)?\\(?2:"
(regexp-quote (cadr oldvalue)) "\\)")
nil t)
(progn
(replace-match (nth 0 value) t t nil 1)
(replace-match (nth 1 value) t t nil 2))
(forward-line)))
(todo-category-select)))))))
(let ((buf (find-buffer-visiting f)))
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(widen)
(goto-char (point-min))
(while (not (eobp))
(if (re-search-forward
(concat "^\\(" todo-done-string-start "[^][]+] \\)?"
"\\(?1:" (regexp-quote (car oldvalue))
"\\)" todo-date-pattern "\\( "
diary-time-regexp "\\)?\\(?2:"
(regexp-quote (cadr oldvalue)) "\\)")
nil t)
(progn
(replace-match (nth 0 value) t t nil 1)
(replace-match (nth 1 value) t t nil 2))
(forward-line)))
(if buf
(when (derived-mode-p 'todo-mode 'todo-archive-mode)
(todo-category-select))
(save-buffer)
(kill-buffer)))))))))
(defun todo-reset-done-separator-string (symbol value)
"The :set function for `todo-done-separator-string'."
......@@ -6004,18 +6043,23 @@ the empty string (i.e., no time string)."
(concat "^\\[" (regexp-quote todo-done-string)))
(when (not (equal value oldvalue))
(dolist (f files)
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(widen)
(goto-char (point-min))
(while (not (eobp))
(if (re-search-forward
(concat "^" (regexp-quote todo-nondiary-start)
"\\(" (regexp-quote oldvalue) "\\)")
nil t)
(replace-match value t t nil 1)
(forward-line)))
(todo-category-select)))))))
(let ((buf (find-buffer-visiting f)))
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(widen)
(goto-char (point-min))
(while (not (eobp))
(if (re-search-forward
(concat "^" (regexp-quote todo-nondiary-start)
"\\(" (regexp-quote oldvalue) "\\)")
nil t)
(replace-match value t t nil 1)
(forward-line)))
(if buf
(when (derived-mode-p 'todo-mode 'todo-archive-mode)
(todo-category-select))
(save-buffer)
(kill-buffer)))))))))
(defun todo-reset-comment-string (symbol value)
"The :set function for user option `todo-comment-string'."
......@@ -6025,19 +6069,23 @@ the empty string (i.e., no time string)."
(custom-set-default symbol value)
(when (not (equal value oldvalue))
(dolist (f files)
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(save-excursion
(let ((buf (find-buffer-visiting f)))
(with-current-buffer (find-file-noselect f)
(let (buffer-read-only)
(widen)
(goto-char (point-min))
(while (not (eobp))
(if (re-search-forward
(concat
"\\[\\(" (regexp-quote oldvalue) "\\): [^]]*\\]")
(concat "\\[\\(" (regexp-quote oldvalue)
"\\): [^]]*\\]")
nil t)
(replace-match value t t nil 1)
(forward-line)))
(todo-category-select))))))))
(if buf
(when (derived-mode-p 'todo-mode 'todo-archive-mode)
(todo-category-select))
(save-buffer)
(kill-buffer)))))))))
(defun todo-reset-highlight-item (symbol value)
"The :set function for user option `todo-highlight-item'."
......@@ -6435,20 +6483,20 @@ Added to `pre-command-hook' in Todo mode when user option
`todo-show-current-file' is set to non-nil."
(setq todo-global-current-todo-file todo-current-todo-file))
(defun todo-display-as-todo-file ()
"Show todo files correctly when visited from outside of Todo mode.
Added to `find-file-hook' in Todo mode and Todo Archive mode."
(and (member this-command todo-visit-files-commands)
(= (- (point-max) (point-min)) (buffer-size))
(member major-mode '(todo-mode todo-archive-mode))
(todo-category-select)))
(defun todo-add-to-buffer-list ()
"Add name of just visited todo file to `todo-file-buffers'.
This function is added to `find-file-hook' in Todo mode."
(let ((filename (file-truename (buffer-file-name))))
(when (member filename todo-files)
(add-to-list 'todo-file-buffers filename))))
;; (defun todo-display-as-todo-file ()
;; "Show todo files correctly when visited from outside of Todo mode.
;; Added to `find-file-hook' in Todo mode and Todo Archive mode."
;; (and (member this-command todo-visit-files-commands)
;; (= (- (point-max) (point-min)) (buffer-size))
;; (member major-mode '(todo-mode todo-archive-mode))
;; (todo-category-select)))
;; (defun todo-add-to-buffer-list ()
;; "Add name of just visited todo file to `todo-file-buffers'.
;; This function is added to `find-file-hook' in Todo mode."
;; (let ((filename (file-truename (buffer-file-name))))
;; (when (member filename todo-files)
;; (add-to-list 'todo-file-buffers filename))))
(defun todo-update-buffer-list ()
"Make current Todo mode buffer file car of `todo-file-buffers'.
......@@ -6503,7 +6551,8 @@ Added to `window-configuration-change-hook' in Todo mode."
"Make some settings that apply to multiple Todo modes."
(setq-local todo-categories (todo-set-categories))
(setq-local todo-category-number 1)
(add-hook 'find-file-hook 'todo-display-as-todo-file nil t))
;; (add-hook 'find-file-hook 'todo-display-as-todo-file nil t)
)
(put 'todo-mode 'mode-class 'special)
......@@ -6522,7 +6571,7 @@ Added to `window-configuration-change-hook' in Todo mode."
(setq-local todo-current-todo-file (file-truename (buffer-file-name))))
(setq-local todo-show-done-only nil)
(setq-local todo-categories-with-marks nil)
(add-hook 'find-file-hook 'todo-add-to-buffer-list nil t)
;; (add-hook 'find-file-hook 'todo-add-to-buffer-list nil t)
(add-hook 'post-command-hook 'todo-update-buffer-list nil t)
(when todo-show-current-file
(add-hook 'pre-command-hook 'todo-show-current-file nil t))
......@@ -6591,13 +6640,6 @@ Added to `window-configuration-change-hook' in Todo mode."
(todo-modes-set-1)
(todo-modes-set-2))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.todo\\'" . todo-mode))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.toda\\'" . todo-archive-mode))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.tod[tyr]\\'" . todo-filtered-items-mode))
;; -----------------------------------------------------------------------------
(provide 'todo-mode)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment