emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: Date Prompt Bug (or Anomoly)


From: Daniel E. Doherty
Subject: Re: [Orgmode] Re: Date Prompt Bug (or Anomoly)
Date: Wed, 09 Jun 2010 03:31:34 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4

On 06/08/2010 05:27 PM, Nick Dokos wrote:

Carsten and Nick,

Many thanks, that did it.  (I wasn't re-making the .elc's---'Doh).

Dan
Daniel E. Doherty<address@hidden>  wrote:

Carsten,

When I tried this last Saturday, I was reluctant to reply since the git
server appeared to be down and your message made me think I did not have
the latest git version.  I tried it again today, and still no joy.  I am
using org-mode version 6.36a on emacs 23.1 on ubuntu.

The latest entry in the Changelog file is
,----
| 2010-06-08  Christian Egli<address@hidden>
|
|       * org-taskjuggler.el (org-export-taskjuggler-old-level):
|       define local variable to avoid compiler warning.
`----

The following is straight from an org file:

,----
| Attempted on:<2010-06-08 Tue>.
| Entering "3/21":<2021-07-03 Sat>.
| Entering "7/21":<2021-07-07 Wed>.
`----

I assume that the fix would be in the function org-read-date-analyze,
but I see no recent Changelog entries mentioning it.  Is it possible
this got lost while the git server was down?

No, it is fixed by the following commit, but 6.36a is too old to include
it. Either you did not get the updates you thought you did, or you did
not remake your org, or you did not reload the newly made org. Try

      git show 420dd96768262cb15c8bcf4fa6386361e0327add

in your git repository to see whether you have the update. If you don't,
pull again. If you do have it, do

         make clean; make

and in emacs

         M-x org-reload

Then
         M-x org-version

should say something like:

         Org-mode version 6.36trans (release_6.36.155.g420d)

HTH,
Nick

---------------------------------------------------------------------------
commit 420dd96768262cb15c8bcf4fa6386361e0327add
Author: Carsten Dominik<address@hidden>
Date:   Fri Jun 4 12:29:31 2010 +0200

     Fix the date prompt for american-style dates

     * lisp/org.el (org-read-date-analyze): Fix regular expression for
     matching american dates

     Daniel E. Doherty writes:

     >  In playing around with the date prompt (C-.), I ran across the following
     >  puzzling behavior from rather simple inputs.
     >
     >  I entered the following on June 1, 2010.  Here is a date entered as
     >  "3/15":<2011-03-15 Tue>.  It interpreted it as the upcoming March 15 as
     >  expected.
     >
     >  But here is a date entered as "5/21":<2021-06-05 Sat>.  Note how it
     >  interpreted the "21" as the year 2021, not at all what I expected from
     >  the documentation or the analogous "3/15" example.
     >
     >  Maybe there is some underlying logic here that I'm not getting.  Perhaps
     >  it has to do with how 2-digit years are interpreted?
     >
     >  What's going on here?  I am using org-version 6.36trans on emacs 23.1.

     What was going on here is that the regular expression for matching
     american-style dates was wrong.  It was looking for month numbers in
     the second field and day numbers in the first field - wrong, of
     course.

diff --git a/lisp/org.el b/lisp/org.el
index 64044b4..48fd215 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -13942,10 +13942,15 @@ The prompt will suggest to enter an ISO date, but you 
can also enter anything
  which will at least partially be understood by `parse-time-string'.
  Unrecognized parts of the date will default to the current day, month, year,
  hour and minute.  If this command is called to replace a timestamp at point,
-of to enter the second timestamp of a range, the default time is taken from the
-existing stamp.  For example,
+of to enter the second timestamp of a range, the default time is taken
+from the existing stamp.  Furthermore, the command prefers the future,
+so if you are giving a date where the year is not given, and the day-month
+combination is already past in the current year, it will assume you
+mean next year.  For details, see the manual.  A few examples:
+
    3-2-5         -->  2003-02-05
    feb 15        -->  currentyear-02-15
+  2/15          -->  currentyear-02-15
    sep 12 9      -->  2009-09-12
    12:45         -->  today 12:45
    22 sept 0:34  -->  currentyear-09-22 0:34
@@ -14191,7 +14196,7 @@ user."
                               t nil ans)))
      ;; Help matching american dates, like 5/30 or 5/30/7
      (when (string-match
-          "^ 
*\\([0-3]?[0-9]\\)/\\([0-1]?[0-9]\\)\\(/\\([0-9]+\\)\\)?\\([^/0-9]\\|$\\)" ans)
+          "^ 
*\\(0?[1-9]\\|1[012]\\)/\\(0?[1-9]\\|[12][0-9]\\|3[01]\\)\\(/\\([0-9]+\\)\\)?\\([^/0-9]\\|$\\)"
 ans)
        (setq year (if (match-end 4)
                     (string-to-number (match-string 4 ans))
                   (progn (setq kill-year t)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]