From: Carsten Dominik <carsten.dominik@gmail.com>
To: David Maus <dmaus@ictsoc.de>
Cc: emacs-orgmode@gnu.org, Josh Berry <des@condordes.net>
Subject: Re: Version 7.5: C-c C-t <anything> fails with "args out of range"
Date: Wed, 9 Mar 2011 07:55:31 +0100 [thread overview]
Message-ID: <DE7FAA0F-91BB-4E46-82F6-44E3C2993B4C@gmail.com> (raw)
In-Reply-To: <87sjuw973f.wl%dmaus@ictsoc.de>
On 9.3.2011, at 06:49, David Maus wrote:
> At Tue, 8 Mar 2011 15:08:57 -0800,
> Josh Berry wrote:
>>
>> Hi list,
>>
>> I just upgraded from org-mode 7.4 to 7.5, and I can't set or change
>> TODO states at all with C-c C-t now; an args-out-of-range error gets
>> raised. I've tried doing a "make clean" in my org-mode checkout, to
>> no avail.
>>
>> I'm running GNU emacs 23.2.1 on Mac OSX (in Aqua), installed via
>> Homebrew. Debugger backtrace is pasted below.
>>
>> [[BTW, please forgive me if this isn't a well-formed bug report; I'm
>> relatively new to Emacs and don't know Elisp. Just let me know if you
>> need anything else.]]
>
> Just a fast comment: Couldn't this be a problem with the macro
> `org-with-wide-buffer'?
>
> #+begin_src emacs-lisp
> (defmacro org-with-wide-buffer (&rest body)
> "Execute body while temporarily widening the buffer."
> `(let ((beg (point-min)) (end (point-max)) (pos (point)))
> (prog2
> (widen)
> ,@body
> (narrow-to-region beg end)
> (goto-char pos))))
> #+end_src
This macro is indeed not written in a stable way and will
fail of the buffer gets modified with @body.
But Emacs already has save-restriction, so there is no
need to re-invent the wheel:
(defmacro org-with-wide-buffer (&rest body)
"Execute body while temporarily widening the buffer."
`(save-excursion
(save-restriction
(widen)
,@body)))
Cheers
- Carsten
>
> What if BODY inserts or deletes characters inside the narrowed region?
> In this case the upper boundary of the region is no longer (point-max)
> before executing body. Thus the buffer might be narrowed to the wrong
> region after executing body. No, wait: If BODY inserts or deletes
> something inside OR above the region the boundaries of the originally
> narrowed region change, don't they?
>
> This would explain the error: Buffer is narrowed to a region that
> happens to end at eob. BODY deletes something inside the region, eob
> is decreased by the number of characters deleted. The call to
> `narrow-to-region' tries to narrow to a region with an upper boundary
> greater than eob -- and that's not possible.
>
> Solution? Not sure. The function must take into account that BODY
> modifies buffer in a way that changes buffer in a way that requires
> adjustment of the region boundaries OR even in a way that removes the
> part of buffer that contained the region.
>
> So something like this would fix it: Store markers of beginning and
> end of region. IIRC they will move with inserts and deletes. After
> executing body narrow to position of these markers if they exist. If
> marker for point-max is gone, use eob. If both are gone... Don't
> narrow at all?
>
> Best,
>
> -- David
> --
> OpenPGP... 0x99ADB83B5A4478E6
> Jabber.... dmjena@jabber.org
> Email..... dmaus@ictsoc.de
next prev parent reply other threads:[~2011-03-09 6:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-08 23:08 Version 7.5: C-c C-t <anything> fails with "args out of range" Josh Berry
2011-03-08 23:25 ` Nick Dokos
2011-03-09 0:35 ` Josh Berry
2011-03-09 2:14 ` Nick Dokos
2011-03-09 3:11 ` Josh Berry
2011-03-09 5:49 ` David Maus
2011-03-09 6:55 ` Carsten Dominik [this message]
2011-03-09 7:16 ` Josh Berry
2011-03-09 9:57 ` Bastien
2011-03-09 9:59 ` Bastien
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DE7FAA0F-91BB-4E46-82F6-44E3C2993B4C@gmail.com \
--to=carsten.dominik@gmail.com \
--cc=des@condordes.net \
--cc=dmaus@ictsoc.de \
--cc=emacs-orgmode@gnu.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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.