* common-lisp-indent'ation of def*
@ 2006-10-23 11:24 Juanma Barranquero
2006-10-25 18:03 ` Richard Stallman
0 siblings, 1 reply; 11+ messages in thread
From: Juanma Barranquero @ 2006-10-23 11:24 UTC (permalink / raw)
Drew Adams sent me the following problem with the common-lisp-indent code:
;; evaluate this
(progn
(unless (assoc "cl-indent" load-history)
(load "cl-indent"))
(set (make-local-variable 'lisp-indent-function)
'common-lisp-indent-function)
(put 'if 'common-lisp-indent-function
'(nil nil &body)))
(if ()
(deffoo bar
()) ;; indent this
(foo bar))
=> Wrong type argument: number-or-marker-p, (8 241)
`lisp-indent-line' fails because `calculate-lisp-indent' is returning
a list with '((8 241) 241), which, according to its docstring, it
shouldn't. The docstring says that the return value is either an
integer, or (COLUMN CONTAINING-SEXP-START).
`common-lisp-indent-function-1' is determining that `deffoo' has no
*lisp-indent-function property, but as it starts with `def', treats it
as a tentative defun, so it sends it to
`common-lisp-indent-call-method', which in turns sends it to
`lisp-indent-259', which returns the weird value.
So, is this a bug in `lisp-indent-line' (and the docstring of
`calculate-lisp-indent'), and '((8 241) 241) should be treated as
valid? Or, OTOH, it is a bug in `common-lisp-indent-function' and
friends?
--
/L/e/k/t/u
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-23 11:24 common-lisp-indent'ation of def* Juanma Barranquero
@ 2006-10-25 18:03 ` Richard Stallman
2006-10-26 20:42 ` Chong Yidong
0 siblings, 1 reply; 11+ messages in thread
From: Richard Stallman @ 2006-10-25 18:03 UTC (permalink / raw)
Cc: emacs-devel
So, is this a bug in `lisp-indent-line' (and the docstring of
`calculate-lisp-indent'), and '((8 241) 241) should be treated as
valid? Or, OTOH, it is a bug in `common-lisp-indent-function' and
friends?
Since the callers of `lisp-indent-line' fail when it returns such a
value, I conclude they agree with its documentation. So I conclude
that the bug is in `common-lisp-indent-function' and its subroutines.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-25 18:03 ` Richard Stallman
@ 2006-10-26 20:42 ` Chong Yidong
2006-10-26 22:10 ` Juanma Barranquero
0 siblings, 1 reply; 11+ messages in thread
From: Chong Yidong @ 2006-10-26 20:42 UTC (permalink / raw)
Cc: Juanma Barranquero, emacs-devel
Richard Stallman <rms@gnu.org> writes:
> So, is this a bug in `lisp-indent-line' (and the docstring of
> `calculate-lisp-indent'), and '((8 241) 241) should be treated as
> valid? Or, OTOH, it is a bug in `common-lisp-indent-function' and
> friends?
>
> Since the callers of `lisp-indent-line' fail when it returns such a
> value, I conclude they agree with its documentation. So I conclude
> that the bug is in `common-lisp-indent-function' and its subroutines.
I concur. I've checked in a fix.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-26 20:42 ` Chong Yidong
@ 2006-10-26 22:10 ` Juanma Barranquero
2006-10-27 0:53 ` Chong Yidong
0 siblings, 1 reply; 11+ messages in thread
From: Juanma Barranquero @ 2006-10-26 22:10 UTC (permalink / raw)
Cc: emacs-devel
On 10/26/06, Chong Yidong <cyd@stupidchicken.com> wrote:
> I concur. I've checked in a fix.
Thanks.
Now I'm seeing something weird. After eval'ing the progn, doing M-C-q
at the start of the if gives:
(if ()
(deffoo bar
()) ;; indent this
(foo bar))
However, hitting TAB in each line gives:
(if ()
(deffoo bar
()) ;; indent this
(foo bar))
Is that expected?
--
/L/e/k/t/u
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-26 22:10 ` Juanma Barranquero
@ 2006-10-27 0:53 ` Chong Yidong
2006-10-27 8:15 ` Juanma Barranquero
0 siblings, 1 reply; 11+ messages in thread
From: Chong Yidong @ 2006-10-27 0:53 UTC (permalink / raw)
Cc: emacs-devel
"Juanma Barranquero" <lekktu@gmail.com> writes:
> Now I'm seeing something weird. After eval'ing the progn, doing M-C-q
> at the start of the if gives:
>
> (if ()
> (deffoo bar
> ()) ;; indent this
> (foo bar))
>
> However, hitting TAB in each line gives:
>
> (if ()
> (deffoo bar
> ()) ;; indent this
> (foo bar))
>
> Is that expected?
No. I've checked in a fix for the fix. I think it's right, but the
code in cl-indent.el is pretty grungy :-(
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-27 0:53 ` Chong Yidong
@ 2006-10-27 8:15 ` Juanma Barranquero
2006-10-27 13:31 ` Stefan Monnier
0 siblings, 1 reply; 11+ messages in thread
From: Juanma Barranquero @ 2006-10-27 8:15 UTC (permalink / raw)
On 10/27/06, Chong Yidong <cyd@stupidchicken.com> wrote:
> I've checked in a fix for the fix.
Yeah, now it works. Thanks.
> I think it's right, but the
> code in cl-indent.el is pretty grungy :-(
That's why I just reported the bug. I love cl*.el, but the code makes me dizzy.
--
/L/e/k/t/u
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-27 8:15 ` Juanma Barranquero
@ 2006-10-27 13:31 ` Stefan Monnier
2006-10-27 14:23 ` Juanma Barranquero
0 siblings, 1 reply; 11+ messages in thread
From: Stefan Monnier @ 2006-10-27 13:31 UTC (permalink / raw)
Cc: emacs-devel
> That's why I just reported the bug. I love cl*.el, but the code makes
> me dizzy.
Yup. Lucky it doesn't have any confusing comments ;-)
Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-27 13:31 ` Stefan Monnier
@ 2006-10-27 14:23 ` Juanma Barranquero
2006-10-28 18:13 ` Richard Stallman
0 siblings, 1 reply; 11+ messages in thread
From: Juanma Barranquero @ 2006-10-27 14:23 UTC (permalink / raw)
Cc: emacs-devel
On 10/27/06, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> Yup. Lucky it doesn't have any confusing comments ;-)
No, and I consider myself lucky if I don't find many more like this one:
;;; Future notes:
;; Once Emacs 19 becomes standard, many things in this package which are
;; messy for reasons of compatibility can be greatly simplified. For now,
;; I prefer to maintain one unified version.
Emacs 19... I *really* wonder if these "messy things" were ever simplified.
--
/L/e/k/t/u
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-27 14:23 ` Juanma Barranquero
@ 2006-10-28 18:13 ` Richard Stallman
2006-10-28 20:00 ` Juanma Barranquero
0 siblings, 1 reply; 11+ messages in thread
From: Richard Stallman @ 2006-10-28 18:13 UTC (permalink / raw)
Cc: monnier, emacs-devel
;;; Future notes:
;; Once Emacs 19 becomes standard, many things in this package which are
;; messy for reasons of compatibility can be greatly simplified. For now,
;; I prefer to maintain one unified version.
Emacs 19... I *really* wonder if these "messy things" were ever simplified.
Probably not. Can you identify the things we were going to change?
That way we could do so, for after the release.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-28 18:13 ` Richard Stallman
@ 2006-10-28 20:00 ` Juanma Barranquero
2006-10-28 22:34 ` David Kastrup
0 siblings, 1 reply; 11+ messages in thread
From: Juanma Barranquero @ 2006-10-28 20:00 UTC (permalink / raw)
On 10/28/06, Richard Stallman <rms@gnu.org> wrote:
> Probably not. Can you identify the things we were going to change?
> That way we could do so, for after the release.
I don't think anyone but the original author can; at least, not
easily. We're talking about 4000+ lines of quite complex code with
almost no comments. It's a little project in itself.
--
/L/e/k/t/u
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: common-lisp-indent'ation of def*
2006-10-28 20:00 ` Juanma Barranquero
@ 2006-10-28 22:34 ` David Kastrup
0 siblings, 0 replies; 11+ messages in thread
From: David Kastrup @ 2006-10-28 22:34 UTC (permalink / raw)
Cc: emacs-devel
"Juanma Barranquero" <lekktu@gmail.com> writes:
> On 10/28/06, Richard Stallman <rms@gnu.org> wrote:
>
>> Probably not. Can you identify the things we were going to change?
>> That way we could do so, for after the release.
>
> I don't think anyone but the original author can; at least, not
> easily. We're talking about 4000+ lines of quite complex code with
> almost no comments. It's a little project in itself.
Sounds like something that could be worth doing for a "Google summer
of code" project if something like this comes up again.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2006-10-28 22:34 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-23 11:24 common-lisp-indent'ation of def* Juanma Barranquero
2006-10-25 18:03 ` Richard Stallman
2006-10-26 20:42 ` Chong Yidong
2006-10-26 22:10 ` Juanma Barranquero
2006-10-27 0:53 ` Chong Yidong
2006-10-27 8:15 ` Juanma Barranquero
2006-10-27 13:31 ` Stefan Monnier
2006-10-27 14:23 ` Juanma Barranquero
2006-10-28 18:13 ` Richard Stallman
2006-10-28 20:00 ` Juanma Barranquero
2006-10-28 22:34 ` David Kastrup
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.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).