[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: scheme.el bug & fix
From: |
Kim F. Storm |
Subject: |
Re: scheme.el bug & fix |
Date: |
17 Feb 2003 11:19:05 +0100 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 |
Luc Teirlinck <address@hidden> writes:
> Stefan Monnier wrote:
>
> It turns out the problem is that
>
> (with-syntax-table st (modify-syntex-entry foo bar))
>
> does not modify `st' because `with-syntax-table' does not use `st'
> but a copy of it. Actually it's even documented in the docstring.
> This sounds silly. Does anybody have an idea why it is defined that way ?
> If not, any objection the patch below which should also improve
> (very marginally) the performance of Emacs ?
>
> Are you sure that you are not going to break plenty of existing code
> this way?
I just checked all 28 occurrences of with-syntax-table and only
the following would break:
autoconf.el: autoconf-current-defun-function
All other occurrences don't modify the syntax table *), so the copy
operation is indeed wasteful in the normal case. antlr-mode.el and
cc-defs.el even define their own versions of the macro, and they don't
copy the syntax table either.
*) except for scheme.el which expects to be able to modify the syntax
table, so it would be fixed rather than broken by the change...
Maybe we should make a new macro with-copy-of-syntax-table which does
copy the table, and change the original macro not to copy.
> Is there any reason why scheme.el can not possibly define its syntax
> table in a more standard and more natural way? I do not believe that
> with-syntax-table was meant to be used the way scheme .el uses it.
But if you e.g. use with-current-buffer, you are working on that
buffer, not a copy of it... So I find the "copy of" behaviour
quite surprising.
> (I believe it is meant to very temporarily change the syntax table of
> the current buffer, not to be used to actually define syntax tables.)
But it is primarily used to temporarily *use* an existing syntax table,
not temporarily *modify* a syntax table.
--
Kim F. Storm <address@hidden> http://www.cua.dk
- scheme.el bug & fix, David PONCE, 2003/02/14
- Re: scheme.el bug & fix, Stefan Monnier, 2003/02/16
- Re: scheme.el bug & fix, Luc Teirlinck, 2003/02/16
- Re: scheme.el bug & fix, Stefan Monnier, 2003/02/17
- Re: scheme.el bug & fix, Luc Teirlinck, 2003/02/17
- Re: scheme.el bug & fix, Stefan Monnier, 2003/02/18
- Re: scheme.el bug & fix, Richard Stallman, 2003/02/19
- Re: scheme.el bug & fix, Stefan Monnier, 2003/02/19
- Re: scheme.el bug & fix, Miles Bader, 2003/02/19
- Re: scheme.el bug & fix, Richard Stallman, 2003/02/20
- Re: scheme.el bug & fix, Stefan Monnier, 2003/02/20