date/time prompt: Provide support for HHhMM time input

* lisp/org.el (org-read-date-analyze): Add support for HHhMM time
input, in similar way as for am/pm times.
* doc/org-manual.org (The date/time prompt): Add example to illustrate
the feature.

TINYCHANGE
This commit is contained in:
Gustavo Barros 2020-06-03 08:57:53 -03:00 committed by Bastien Guerry
parent a2403321ac
commit e8562a3327
2 changed files with 14 additions and 0 deletions

View File

@ -6060,6 +6060,7 @@ dash(es) as the separator in the former case and use =+= as the
separator in the latter case, e.g.:
| =11am-1:15pm= | \rArr{} 11:00-13:15 |
| =11h-13h15= | \rArr{} same as above |
| =11am--1:15pm= | \rArr{} same as above |
| =11am+2:15= | \rArr{} same as above |

View File

@ -14104,6 +14104,19 @@ user."
(setq ans (replace-match (format "%02d:%02d" hour minute)
t t ans))))
;; Help matching HHhMM times, similarly as for am/pm times.
(cl-loop for i from 1 to 2 do ; twice, for end time as well
(when (and (not (string-match "\\(\\`\\|[^+]\\)[012]?[0-9]:[0-9][0-9]\\([ \t\n]\\|$\\)" ans))
(string-match "\\(?:\\(?1:[012]?[0-9]\\)?h\\(?2:[0-5][0-9]\\)\\)\\|\\(?:\\(?1:[012]?[0-9]\\)h\\(?2:[0-5][0-9]\\)?\\)\\>" ans))
(setq hour (if (match-end 1)
(string-to-number (match-string 1 ans))
0)
minute (if (match-end 2)
(string-to-number (match-string 2 ans))
0))
(setq ans (replace-match (format "%02d:%02d" hour minute)
t t ans))))
;; Check if a time range is given as a duration
(when (string-match "\\([012]?[0-9]\\):\\([0-6][0-9]\\)\\+\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?" ans)
(setq hour (string-to-number (match-string 1 ans))