[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/excorporate cd392a1 40/93: excorporate-diary: Escape li
From: |
Stefan Monnier |
Subject: |
[elpa] externals/excorporate cd392a1 40/93: excorporate-diary: Escape literal percent signs |
Date: |
Sun, 29 Nov 2020 15:43:05 -0500 (EST) |
branch: externals/excorporate
commit cd392a1c0ae7d2e161f096a0c8113c58ff33062b
Author: Thomas Fitzsimmons <fitzsim@fitzsim.org>
Commit: Thomas Fitzsimmons <fitzsim@fitzsim.org>
excorporate-diary: Escape literal percent signs
* packages/excorporate/excorporate-diary.el
(exco-diary--fix-percent-signs): New function.
(excorporate-diary-enable): Add exco-diary--fix-percent-signs to
diary-fancy-display-mode-hook.
(excorporate-diary-disable): Remove exco-diary--fix-percent-signs
from diary-fancy-display-mode-hook.
---
excorporate-diary.el | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/excorporate-diary.el b/excorporate-diary.el
index e3435be..fe5887e 100644
--- a/excorporate-diary.el
+++ b/excorporate-diary.el
@@ -109,6 +109,17 @@ initialize for today's date, nil otherwise."
;; connnection-callback loop.
(basic-save-buffer-1))))))
+;; Literal percent signs (%) are not supported in a diary entry since
+;; they're interpreted as format strings by `diary-sexp-entry', so
+;; encode them during entry insertion, then unescape them during
+;; display. This is needed so that, e.g., encoded meeting URLs that
+;; contain literal percent signs (%) work with `browse-url'.
+(defun exco-diary--fix-percent-signs ()
+ "Replace percent-sign placeholders with percent signs."
+ (goto-char (point-min))
+ (while (re-search-forward "<EXCO_PERCENT_SIGN>" nil t)
+ (replace-match "%")))
+
(defun exco-diary-insert-meeting (finalize
subject start _end _location
_main-invitees _optional-invitees
@@ -138,6 +149,14 @@ Call FINALIZE after the meeting has been inserted."
excorporate-diary-transient-file)))
(with-temp-buffer
(insert icalendar-text)
+ ;; Escape literal percent signs (%). Use less-than sign (<)
+ ;; and greater-than sign (>) which are forbidden URL
+ ;; characters, so that in the plain text diary file,
+ ;; percent-encoded URLs become completely invalid rather than
+ ;; slightly wrong.
+ (goto-char (point-min))
+ (while (re-search-forward "%" nil t)
+ (replace-match "<EXCO_PERCENT_SIGN>"))
(icalendar-import-buffer file t))))
(funcall finalize))
@@ -229,6 +248,7 @@ ARGUMENTS are the arguments to `diary-view-entries'."
#'exco-diary-diary-view-entries-override)
(add-hook 'diary-list-entries-hook #'diary-sort-entries)
(add-hook 'diary-list-entries-hook #'diary-include-other-diary-files)
+ (add-hook 'diary-fancy-display-mode-hook #'exco-diary--fix-percent-signs)
(unless (eq diary-display-function 'diary-fancy-display)
(warn (format
(concat "Excorporate diary support needs diary-fancy-display"
@@ -243,6 +263,7 @@ ARGUMENTS are the arguments to `diary-view-entries'."
(interactive)
(advice-remove #'diary #'exco-diary-diary-around)
(advice-remove #'diary-view-entries #'exco-diary-diary-view-entries-override)
+ (remove-hook 'diary-fancy-display-mode-hook #'exco-diary--fix-percent-signs)
(with-current-buffer (find-file-noselect diary-file)
(dolist (file (list excorporate-diary-transient-file
excorporate-diary-today-file))
- [elpa] externals/excorporate 37b25ff 09/93: packages/excorporate: Acknowledge Erik Hetzner, (continued)
- [elpa] externals/excorporate 37b25ff 09/93: packages/excorporate: Acknowledge Erik Hetzner, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate fae1f5e 05/93: packages/excorporate: Update manual, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 9cc18b1 10/93: packages/excorporate: Require soap-client 3.1.1, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 09f998e 11/93: packages/excorporate: Bump version to 0.7.2, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate f35c2f1 13/93: packages/excorporate/excorporate-org.el: Allow quitting window, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate e6cb302 15/93: packages/excorporate: Interoperate with LaTeX preview, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate bdf9d5a 16/93: packages/excorporate: Bump version to 0.7.4, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate fd9a7bb 25/93: excorporate-calfw.el: Enable clean byte-compiling in GNU ELPA, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 12f3501 28/93: packages/excorporate: Extend exco-connection-iterate, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate de3ad68 46/93: Excorporate: Document new configuration wizard, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate cd392a1 40/93: excorporate-diary: Escape literal percent signs,
Stefan Monnier <=
- [elpa] externals/excorporate acbc123 22/93: excorporate.texi: Increase authentication success likelihood, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate a1ec101 26/93: excorporate.el: Require org for org-trim, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 836db8c 35/93: packages/excorporate: Bump version to 0.8.1, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 0d20739 41/93: excorporate-diary: Fix documentation string, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 6d8fa65 19/93: packages/excorporate: Acknowledge Fabio Leimgruber, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 3e13cee 24/93: excorporate-calfw.el: Rename from excorporate-calfw.el.txt, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 33ee501 31/93: packages/excorporate: Update documentation for Diary support, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 882f2e0 44/93: excorporate-diary: Suppress compilation warning, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate d0a8709 39/93: excorporate-diary: Always use diary-fancy-display, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 44e056d 43/93: excorporate-org: Support multiple calendars, Stefan Monnier, 2020/11/29