emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: Problem with org-toggle-timestamp-type


From: Ben Alexander
Subject: [Orgmode] Re: Problem with org-toggle-timestamp-type
Date: Thu, 30 Oct 2008 17:21:57 +0200

I apologize if this is a repeat. It's in my sent items, but I haven't seen it on the list yet. I edited the message bit, and added a bit more:

Hi!

I cannot figure out how to use version control in general, and git in particular. So I can't generate a proper patch. However, I think there is a mistake with org-toggle-timestamp-type.

Currently, the message always returns "Timestamp is now active" regardless of whether it is or not. I think this is because the message is not inside the save-excursion block, so we can't be sure whether point was outside the timestamp (just in front) or inside (at the very end). Inside save-excursion, I think it is always moved to the end, does the edit, and is moved outside.

Also, I think the sense of the test is backwards. And for some reason (if (equal (char-before) ?]) "in" "") didn't work (went to elisp debugger). I can't read this much lisp, it's beyond me.

So here's the change I made (to org-version 6.10c)


(defun org-toggle-timestamp-type ()
 "Toggle the type (<active> or [inactive]) of a time stamp."
 (interactive)
 (when (org-at-timestamp-p t)
   (save-excursion
     (goto-char (match-beginning 0))
     (insert (if (equal (char-after) ?<) "[" "<")) (delete-char 1)
     (goto-char (1- (match-end 0)))
     (insert (if (equal (char-after) ?>) "]" ">")) (delete-char 1)
     (message "Timestamp is now %sactive"
            (if (equal (char-before) ?>) "" "in")))))

There's something else, and this might very well because my git repo is not what emacs is actually running, and my modified Makefile install target might be foobar.

If I have a timestamp that looks like <2009-01-29 Thu>--<2009-01-29 Thu> and the cursor is in front of the first > symbol and then I hit the S-<up> twice, my timestamp no longer is a range. It now looks like [2009-01-30 Fri]

And if the cursor is in front of the the first < symbol and I hit the S-<up> key once (or if I use M-x org-toggle-timestamp-type), I get
[2009-01-29 Thu]--<2009-01-29 Thu>
but a second time, I get
<2009-01-29 Thu]--<2009-01-29 Thu]

That suggests to me that the regular expression isn't symmetric w.r.t. square brackets and curly brackets. I kinda know perl regex, but am completely unfamiliar with elisp's version.

I tried to look at the org-ts[r]?-regexp-* variables, but my eyes crossed. Plus, I'm very afraid that any change I'd make would add parentheses, and thereby screwup every (match-begin 8) in the code.

TFOM*

Ben

----
footnotes
* TFOM = Thanks for Org-Mode







reply via email to

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