From: Carsten Dominik <carsten.dominik@gmail.com>
To: Eric S Fraga <e.fraga@ucl.ac.uk>
Cc: Tassilo Horn <tassilo@member.fsf.org>, emacs-orgmode@gnu.org
Subject: Re: bug#9695: allowed date range
Date: Thu, 13 Oct 2011 10:27:12 +0200 [thread overview]
Message-ID: <D5DADA52-90E0-4513-A501-E845169000D2@gmail.com> (raw)
In-Reply-To: <87lisp9vsm.fsf@pinto.chemeng.ucl.ac.uk>
[-- Attachment #1: Type: text/plain, Size: 1763 bytes --]
On 13.10.2011, at 09:48, Eric S Fraga wrote:
> Tassilo Horn <tassilo@member.fsf.org> writes:
>
>> Ivan Kanis <ivan.kanis@googlemail.com> writes:
>>
>> Hi!
>>
>>> After investigating further <2011-10-17 >--<2011-10-30 > works but not
>>> <2011-10-17>--<2011-10-30>. The regexp for a timestamp is defined in
>>> org-ts-regexp :
>>>
>>> "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)>"
>>>
>>> Shouldn't the trailing space be optional?
>>
>> In your regex, there is no trailing whitespace, but are right that it is
>> in the original definition.
>>
>> ,----[ C-h v org-ts-regexp RET ]
>> | org-ts-regexp is a variable defined in `org.el'.
>> | Its value is
>> | "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)>"
>> | ^
>> `----
>>
>> Strangely, that timestamp regex didn't change for 3 years...
>>
>> Oh, now I see what's wrong. All time stamps consist of the date and
>> then the day's name abbreviation, which is missing with your example.
>> Correct would be
>>
>> <2011-10-17 Mon>--<2011-10-30 Sun>
>>
>> Bye,
>> Tassilo
>
> Although the day is optional according to the regexp. I would
> definitely like to have the regexp with the space optional as well as
> there are cases where I want to type the date in directly (not in org
> mode for whatever reason).
I am attaching a patch which will make time stamps without a day name
like <2011-10-12> work correctly. Furthermore, pressing C-c C-c on
a time stamp will fill in or fix the day name.
However, I am not sure if this patch is complete, or if it
has side effects. So it would be good if a few people could
apply it and test it during their daily work for a few weeks,
and then report problems in this thread.
- Carsten
[-- Attachment #2: time-stamp-no-space.patch --]
[-- Type: application/octet-stream, Size: 3415 bytes --]
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index e026d93..5dbe4dc 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -1117,7 +1117,7 @@ the clocking selection, associated with the letter `d'."
(looking-at
(concat "^[ \t]* " org-clock-string
" \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}"
- " +\\sw+\.? +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")))
+ " *\\sw+\.? +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")))
(message "Matched %s" (match-string 1))
(setq ts (concat "[" (match-string 1) "]"))
(goto-char (match-end 1))
@@ -1249,7 +1249,7 @@ line and position cursor in that line."
(re-search-forward
(concat "^[ \t]* " org-clock-string
" \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}"
- " +\\sw+ +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")
+ " *\\sw+ +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")
end t))
(beginning-of-line 1)
(throw 'exit t))
diff --git a/lisp/org.el b/lisp/org.el
index b26e1a3..83cf4c3 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4645,7 +4645,7 @@ means to push this value onto the list in the variable.")
"\\|" org-deadline-string
"\\|" org-closed-string
"\\|" org-clock-string "\\)\\)?"
- " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^]\r\n>]*?[]>]\\|<%%([^\r\n>]*>\\)")
+ " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^]\r\n>]*?[]>]\\|<%%([^\r\n>]*>\\)")
org-planning-or-clock-line-re
(concat "\\(?:^[ \t]*\\(" org-scheduled-string
"\\|" org-deadline-string
@@ -5094,15 +5094,15 @@ This should be called after the variable `org-link-types' has changed."
(org-make-link-regexps)
-(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)>"
+(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^\r\n>]*?\\)>"
"Regular expression for fast time stamp matching.")
-(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^]\r\n>]*?\\)[]>]"
+(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^]\r\n>]*?\\)[]>]"
"Regular expression for fast time stamp matching.")
(defconst org-ts-regexp0 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) *\\([^]+0-9>\r\n -]*\\)\\( \\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
"Regular expression matching time strings for analysis.
This one does not require the space after the date, so it can be used
on a string that terminates immediately after the date.")
-(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) +\\([^]+0-9>\r\n -]*\\)\\( \\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
+(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) *\\([^]+0-9>\r\n -]*\\)\\( \\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
"Regular expression matching time strings for analysis.")
(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,16\\}>")
"Regular expression matching time stamps, with groups.")
@@ -17931,6 +17931,8 @@ This command does many different things, depending on context:
(fboundp org-finish-function))
(funcall org-finish-function))
((run-hook-with-args-until-success 'org-ctrl-c-ctrl-c-hook))
+ ((org-in-regexp org-ts-regexp-both)
+ (org-timestamp-change 0 'day))
((or (looking-at org-property-start-re)
(org-at-property-p))
(call-interactively 'org-property-action))
[-- Attachment #3: Type: text/plain, Size: 409 bytes --]
> In those cases, it is easy to type
> 2011-01-01 or whatever but it's not necessarily trivial to determine the
> day of the week...
>
> Actually, interesting thought experiment: does org actually do any
> consistency checks, comparing the date and the day of the week?
>
> --
> : Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) in Emacs 24.0.90.1
> : using Org-mode version 7.7 (release_7.7.380.g54d7df)
>
next prev parent reply other threads:[~2011-10-13 8:27 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87ty7kd8oh.fsf@kanis.fr>
2011-10-12 6:53 ` bug#9695: allowed date range Ivan Kanis
2011-10-13 7:28 ` Tassilo Horn
2011-10-13 7:48 ` Eric S Fraga
2011-10-13 7:57 ` Tassilo Horn
2011-10-13 8:02 ` Carsten Dominik
2011-10-13 10:15 ` Eric S Fraga
2011-10-13 8:27 ` Carsten Dominik [this message]
2011-10-13 10:14 ` Eric S Fraga
2011-10-13 13:04 ` Tassilo Horn
2011-10-16 13:45 ` Michael Brand
2011-11-09 18:18 ` Carsten Dominik
2011-11-09 21:32 ` Michael Brand
2011-11-03 17:22 ` Michael Brand
[not found] ` <87ehyiitv7.fsf@googlemail.com>
2012-03-23 1:30 ` Glenn Morris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D5DADA52-90E0-4513-A501-E845169000D2@gmail.com \
--to=carsten.dominik@gmail.com \
--cc=e.fraga@ucl.ac.uk \
--cc=emacs-orgmode@gnu.org \
--cc=tassilo@member.fsf.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).