Most of this change is to boilerplate commentary such as license URLs.
This change was prompted by ftp://ftp.gnu.org's going-away party,
planned for November. Change these FTP URLs to https://ftp.gnu.org
instead. Make similar changes for URLs to other organizations moving
away from FTP. Also, change HTTP to HTTPS for URLs to gnu.org and
fsf.org when this works, as this will further help defend against
man-in-the-middle attacks (for this part I omitted the MS-DOS and
MS-Windows sources and the test tarballs to keep the workload down).
HTTPS is not fully working to lists.gnu.org so I left those URLs alone
for now.
* lisp/calendar/todo-mode.el (todo-get-overlay): Wrap in
save-excursion. This fixes a regression introduced by the fix
for bug#27609, whereby trying to raise the priority of the
first item or lower the priority of the last item, which
should be noops, moves point to the item's start. Clarify
comment.
* test/lisp/calendar/todo-mode-tests.el
(todo-test-raise-lower-priority): Add test cases for trying to
raise first item and lower last item.
(with-todo-test): Clear abbreviated-home-dir, since we change HOME.
(todo-test-toggle-item-header02): Remove ":expected-result
:failed" and tests of point after todo-next-item, since the
effect when using Todo mode is not reproducible in the test
environment. Add commentary about this.
* lisp/calendar/todo-mode.el (todo-reevaluate-filelist-defcustoms)
(todo-reevaluate-default-file-defcustom)
(todo-reevaluate-category-completions-files-defcustom)
(todo-reevaluate-filter-files-defcustom): Delete these functions.
(todo-update-filelist-defcustoms): New function. This replaces
todo-reevaluate-filelist-defcustoms, using the 'custom-type'
property instead of re-evaluating the defcustoms.
(todo-add-file, todo-rename-file, todo-delete-file)
(todo-delete-category, todo-move-category)
(todo-convert-legacy-files, todo-check-file): Replace call of
todo-reevaluate-filelist-defcustoms by
todo-update-filelist-defcustoms.
(todo-show, todo-category-completions): Replace call of
todo-reevaluate-* function by use of 'custom-type' property.
Adjust code accordingly and make various minor improvements.
* lisp/calendar/todo-mode.el: Enable lexical-binding.
(dayname, monthname, day, month, year): Make forward defvars
of these keywords from macros defined in calendar.el; wrap
them in with-no-warnings.
(todo-files, todo-files-function, todo-date-pattern)
(todo-mode-line-function, todo-show, todo-forward-category)
(todo-edit-item--header, todo-set-category-number)
(todo-adjusted-category-label-length)
(todo-total-item-counts, todo-filter-items)
(todo-print-buffer-function, todo-convert-legacy-date-time)
(todo-category-number, todo-category-completions)
(todo-read-file-name, todo-read-category)
(todo-validate-name, todo-read-date)
(todo-set-show-current-file, todo-modes-set-1)
(todo-modes-set-2, todo-modes-set-3, todo-mode):
Use #' instead of ' to quote functions.
(todo-files): Use \' instead of $ in regexp.
(todo--files-type-list): New function.
(todo-default-todo-file, todo-category-completions-files)
(todo-filter-files, todo-multiple-filter-files)
(todo-reevaluate-default-file-defcustom)
(todo-reevaluate-category-completions-files-defcustom)
(todo-reevaluate-filter-files-defcustom): Use it.
(todo-show, todo-rename-file, todo-move-category)
(todo-edit-item--text, todo-edit-quit, todo-edit-item--header)
(todo-item-undone, todo-unarchive-items, todo-search)
(todo-filter-items, todo-filter-items-1, todo-find-item)
(todo-category-select, todo-read-date)
(todo-nondiary-marker-matcher, todo-date-string-matcher)
(todo-diary-expired-matcher, todo-convert-legacy-files)
(todo-read-category): Reformat to avoid code hiding behind a
more deeply embedded element.
(todo-forward-category, todo-set-category-number):
Use 'funcall' instead of 'apply'.
(todo-toggle-mark-item, todo-edit-item--diary-inclusion)
(todo-edit-category-diary-inclusion)
(todo-insert-sort-button, todo-insert-category-line)
(todo-multiple-filter-files): Mark unused local variables.
(todo-edit-item--header, todo-move-item, todo-print-buffer)
(todo-edit-item--header, todo-move-item, todo-check-file)
(todo-edit-item--next-key): Remove unused local variables.
(todo-insert-sort-button, todo-insert-category-line):
Use a closure instead of a backquoted lambda.
(todo-update-categories-display, todo-print-buffer): Simplify code.
(todo-print-buffer-function): Document calling convention.
(todo-category-completions): Use cl-pushnew instead of add-to-list.
(todo-mode-map, todo-archive-mode-map)
(todo-categories-mode-map, todo-filtered-items-mode-map):
Remove superfluous call of suppress-keymap, since it's already
in the parent special-mode-map.
* lisp/calendar/todo-mode.el (todo-quit): Use quit-window instead of
bury-buffer to exit todo-mode. This restores the desired behavior
of not immediately returning to the exited todo-mode buffer on
quitting another buffer, which a dired bug fix had changed (see
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00739.html).
* lisp/calendar/todo-mode.el (todo--item-headers-hidden): New variable.
(todo-toggle-item-header): Use it. Make this command a noop
if the file has no items.
(todo-move-item, todo-item-done): Instead of concatenating the
items to move into one string, make a list of them to
facilitate handling hidden headers. Adjust insertion accordingly.
(todo-archive-done-item): Handle hidden headers in archive file.
(todo-unarchive-items): Handle hidden headers in todo file.
(todo-backward-item): Use todo--item-headers-hidden and handle
moving backward work when item date-time headers are hidden.
(todo-remove-item): Delete date-time header overlay.
(todo-get-overlay, todo-insert-with-overlays): Make them work
with hidden date-time headers.
(todo-modes-set-2): Make todo--item-headers-hidden buffer local.
* lisp/calendar/todo-mode.el (todo-toggle-mark-item): Calculate
current category only once.
(todo-mark-category): Update number of marked items to avoid
spurious duplication in todo-categories-with-marks alist and
corruption of the todo-categories alist. Handle empty line
when there are no todo items and done items are shown.
(todo-set-item-priority): Make noop if called from
todo-raise-item-priority or todo-lower-item-priority when
point is on a done todo item or an empty line.
(todo-move-item): Use markers instead of integer positions to
correctly handle deleting the now moved items from the source
category (without markers an infinite loop arises when moving
marked item to a preceding category).
(todo-unarchive-items): Put point on the (first) restored done
item, instead of leaving it at the end of the done items
separator string.
(todo-revert-buffer): Ensure buffer remains read-only after
reverting.
* lisp/calendar/todo-mode.el (todo-hl-line-range): New named function,
replacing an anonymous function for the sake of `describe-variable'.
(todo-modes-set-2): Use it as buffer-local value of hl-line-range-function
and remove boundp test of this variable, so its value is available on
invoking `todo-toggle-item-highlighting'.
This failed due to commit ea3ae33b from 2013-05-16, which prevented
quitting todo-mode buffer after visiting todo-archive buffer from
making the archive buffer current again. Avoid this now by simply
killing the archive buffer, since there's no need to keep it a live
buffer. Consequently, quitting a todo-mode buffer can now use
bury-buffer without an argument, which ensures that is will not
becomes current on quitting the buffer that replaced it in the window.
* lisp/calendar/todo-mode.el (todo-quit): Kill todo-archive-mode
buffer instead of burying it. This now allows exiting the
todo-mode buffer by bury-buffer without an argument, so do that.
* lisp/calendar/todo-mode.el (todo-jump-to-category): When jumping
from Todo Categories mode to a category with only archived items
and todo-skip-archived-categories is non-nil, make sure the
archive file buffer is in Todo Archive mode to prevent
todo-category-select from raising an error, and don't set
todo-current-todo-file, since that makes todo-show display the
archived category. Remove a no-op call to kill-buffer, which is
already called in todo-insert-category-line.
* lisp/calendar/todo-mode.el (todo-move-category): Use moved
category's existing categories sexp instead of invoking
todo-update-categories-sexp in file moved to, in order to take
archived items into account. If the moved category has archived
items, handle the source archive buffer properly. Remove
superfluous code.
* lisp/calendar/todo-mode.el (todo-edit-item--header): Prevent out of
range error by making sure the value of the numerical month date
component cannot be nil. Prevent wrong type error on trying to edit
day number in February by making sure numerical instead of string
value of the year component is passed to todo-read-date.
(todo-read-date): When using the numerical month date component make
sure to use `*' for an arbitrary month instead of its numerical value.
If FOO might contain quotes that are part of a file or variable
name, the quotes should not be translated when showing FOO’s name
in a diagnostic. So, for example, (message (concat (FOO ": bar")))
is not quite right, as it would translate FOO’s quotes.
Change it to (message "%s: bar" FOO) instead.
* lisp/allout.el (allout-process-exposed):
* lisp/calc/calc-ext.el (calc-do-prefix-help):
* lisp/calc/calc-store.el (calc-store-into):
* lisp/calendar/todo-mode.el (todo-category-completions):
* lisp/cedet/semantic/complete.el (semantic-completion-message):
* lisp/org/ob-latex.el (convert-pdf):
* lisp/org/org-crypt.el (org-crypt-check-auto-save):
* lisp/org/ox-latex.el (org-latex-compile):
* lisp/org/ox-man.el (org-man-compile):
* lisp/org/ox-odt.el (org-odt--export-wrap):
* lisp/org/ox-texinfo.el (org-texinfo-compile):
* lisp/progmodes/ruby-mode.el (ruby-in-ppss-context-p):
* lisp/progmodes/verilog-mode.el (verilog-batch-execute-func)
(verilog-signals-combine-bus, verilog-read-defines)
(verilog-getopt-file, verilog-expand-dirnames)
(verilog-modi-lookup, verilog-modi-modport-lookup-one):
* lisp/term/ns-win.el (ns-spi-service-call):
Use %s to avoid translating quotes of file names etc. in diagnostics.
This patch should not change behavior. It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
Respect text-quoting-style preference in diagnostic formats by
using curved quotes (which are translated as per text-quoting-style)
instead of grave accent and apostrophe (which are not).
* lisp/calendar/appt.el (appt-display-message):
* lisp/calendar/diary-lib.el (diary-check-diary-file)
(diary-mail-entries, diary-from-outlook):
* lisp/calendar/icalendar.el (icalendar-export-region)
(icalendar--convert-float-to-ical)
(icalendar--convert-date-to-ical)
(icalendar--convert-ical-to-diary)
(icalendar--convert-recurring-to-diary)
(icalendar--add-diary-entry):
* lisp/calendar/time-date.el (format-seconds):
* lisp/calendar/timeclock.el (timeclock-mode-line-display)
(timeclock-make-hours-explicit):
* lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category)
(todo-item-mark, todo-check-format)
(todo-insert-item--next-param, todo-edit-item--next-key)
(todo-mode):
Use curved quotes in diagnostic format strings.
* lisp/calendar/icalendar.el (icalendar-import-format-sample):
* test/automated/icalendar-tests.el (icalendar--import-format-sample):
Just use straight quoting for simple test case.
Fixes: debbugs:19187
* calendar/todo-mode.el: (todo-revert-buffer): New function.
(todo-modes-set-1): Use it as the buffer-local value of
revert-buffer-function.
* todo-mode.texi (Marked Items): Correct omission of item deletion
from commands applying to both todo and done items.
* calendar/todo-mode.el: Fix handling of marked items and make
minor code improvements.
(todo-edit-item): If there are marked items, ensure user can only
invoke editing commands that work with marked items.
(todo-edit-item--text): When there are marked items, make it a
noop if invoked with point not on an item; otherwise, ensure it
applies only to item at point.
(todo-item-undone): If there are marked not-done items, return
point to its original position before signaling user error.
(todo--user-error-if-marked-done-item): New function.
(todo-edit-item--header, todo-edit-item--diary-inclusion)
(todo-item-done): Use it.
marking multiple consecutive items.
(todo-toggle-mark-item): Don't try to mark the empty lines at the
end of the todo and done items sections. Note in doc string that
items marked by passing a numeric prefix argument can include the
last todo and first done items.
(todo-mark-category): Don't try to mark the empty line between the
todo and done items sections.
refer to the Todo mode Info manual. Update the comment on
requiring cl-lib.
(todo-find-filtered-items-file): Add todo-prefix overlays.
(todo-filter-items): Reorder a let-bound variable to avoid a
wrong-type-argument error on canceling the file choice dialog.
(todo-insert-item--basic): If user cancels item insertion to
another category before setting priority, show original category
whether it is in the same or a different file.
(todo-set-item-priority): After selecting category, instead of
moving point to top, which extends an active region, restore it.
* 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).
(todo-delete-file): When deleting an archive but not its todo
file, make sure to update the todo file's category sexp.
(todo-move-category): Keep the moved category's name unless the
file moved to already has a category with that name. If the
numerically last category of the source file was moved, make the
first category current to avoid selecting a nonexisting category.
(todo-merge-category): Fix implementation to make merging to a
category in another file work as documented. Eliminate now
insufficient and unnecessary renaming of archive category, correct
document string accordingly, and clarify it. If the numerically
last category of the source file was merged, make the first
category current to avoid selecting a nonexisting category.
(todo-archive-done-item): When there are marked items and point
happens to be on an unmarked item, ignore the latter. Don't leave
point below last item after archiving marked items.
(todo-unarchive-items): Fix logic to ensure unarchiving an item
from an archive with only one category deletes the archive only
when the category is empty after unarchiving. Make sure the todo
file's category sexp is updated.
(todo-read-file-name): Allow an existing file name even when it is
not required (todo-move-category needs this to work as documented).
(todo-add-file): Call todo-validate-name to reject the name of an
existing todo file (needed due to fix in todo-read-file-name).
(todo-reset-nondiary-marker): Also reset in filtered items files.
(todo-reset-done-string, todo-reset-comment-string): Also reset in
regexp filtered items files.
(todo-reset-highlight-item): Also reset in filtered items files.
Fix incorrect variable reference in document string.
* calendar/todo-mode.el (todo-insert-item--apply-args): When all
four slots of the parameter list are filled, make sure to pass it
to the argument list of todo-insert-item--basic.