emacs-devel
[Top][All Lists]
Advanced

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

Re: Is this a bug in overlay property list handling?


From: Lennart Borgman (gmail)
Subject: Re: Is this a bug in overlay property list handling?
Date: Tue, 03 Jun 2008 21:46:18 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

Stefan Monnier wrote:
I am not sure if I have hit a bug or if I am doing something wrong. I do
something like this in my code:

  (setq syntax-ppss-last-min
        (copy-tree
         (cons (1- last-pos)
               (if is-main-mode-chunk
                   (mumamo-with-major-mode-fontification main-major
                     `(parse-partial-sexp (point-min) last-pos))
                 (parse-partial-sexp 1 1)))
         ))
  (overlay-put chunk-at-pos 'syntax-ppss-last-min syntax-ppss-last-min)

If I test this immediately after with `overlay-get' the value looks ok.

However, later when I read these values with `overlay-get' it seems like the
property list has got corrupted. The car of the value stored in property
syntax-ppss-last-min is nil.

I use copy-tree to try to avoid surprices like this one.

The `cons' already makes sure you have the only reference to the object
and parse-partial-sexp also returns a fresh value, so the `copy-tree' is
not needed.

Thanks for the explanation.

Maybe I should do something different? Maybe this is a bug in overlay
property list handling?

I'd be very surprised if it's a bug in overlay property handling.
My guess is that it's a bug elsewhere in your code.

Ok, this should make it easier to find this bug.


        Stefan


PS: BTW, please avoid using `1' instead of (point-min), or else add
a comment explaining why (point-min) is not right.

I will add a comment.

Also the
`(parse-partial-sexp (point-min) last-pos) looks odd: you probably
forgot a comma before `last-pos'.

Yes, I did. Thanks.

Maybe mumamo-with-major-mode-fontification should be a macro rather than
a function.

I am not sure now. I will have a look again.




reply via email to

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