[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#636: Please fix before the release of 23.1
From: |
Ulrich Mueller |
Subject: |
bug#636: Please fix before the release of 23.1 |
Date: |
Mon, 11 Aug 2008 09:18:55 +0200 |
>>>>> On Sun, 10 Aug 2008, Chong Yidong wrote:
> Thanks for pinpointing this.
> In fact, it's apparently not a problem with cc-mode, but with Emacs.
> Here's a stripped-down recipe:
> 1. Create a file foo.el in your lisp path with the following contents:
> (defconst foo
> (let ((beginning-of-defun-function
> (lambda (&optional arg)
> (not (eq arg nil)))))
> (progn
> (beginning-of-defun 1))))
> (provide 'foo)
Calling beginning-of-defun will move point, right?
And since beginning-of-defun-function is essentially defined as a
no-op, point will just be moved to the beginning-of-line. (In fact,
eval-buffer on foo.el results in an infinite loop.)
> By the way, replacing `progn' with `save-excursion' makes the bug go
> away (this makes cc-def.el work too). Why? I don't know.
Indeed. If we agree that the bug is in cc-defs.el, then the following
patch should fix it:
--- progmodes/cc-defs.el 27 Jun 2008 21:12:46 -0000 1.58
+++ progmodes/cc-defs.el 11 Aug 2008 07:11:04 -0000
@@ -1445,7 +1445,7 @@
(let ((beginning-of-defun-function
(lambda (&optional arg)
(not (eq arg nil)))))
- (if (beginning-of-defun 1)
+ (if (save-excursion (beginning-of-defun 1))
(setq list (cons 'argumentative-bod-function list))))
(let ((buf (generate-new-buffer " test"))
Ulrich
bug#636: Please fix before the release of 23.1,
Ulrich Mueller <=
bug#636: Please fix before the release of 23.1, Michael Olson, 2008/08/11
bug#636: Please fix before the release of 23.1, Chong Yidong, 2008/08/11
bug#636: Please fix before the release of 23.1, Alan Mackenzie, 2008/08/11