[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: syntax-after
From: |
Juri Linkov |
Subject: |
Re: syntax-after |
Date: |
Sat, 13 Nov 2004 12:57:54 +0200 |
User-agent: |
Gnus/5.110002 (No Gnus v0.2) Emacs/21.3.50 (gnu/linux) |
Richard Stallman <address@hidden> writes:
> It seems really gratuitous. There are already 2 ways to represent the
> syntax info of a char: as a cons cell and as a string. Both are
> documented
> in the elisp manual.
>
> The above change introduces yet a third representation, and an
> undocumented
> one at that. Was that really necessary?
>
> It is not new. My change makes it compatible with char-syntax, which
> is why I did it. It is also more comparible with the way
> modify-syntax-entry works, since the same character is used now by both.
>
> This change reduces the number of representations of the syntax by
> one, as far as I know. Or is there some other function that uses the
> old representation of syntax-after? If so, perhaps it should be
> changed too.
Actually, with the change in `syntax-after' there are 4 representations now:
modify-syntax-entry aref(syntax-table) char-syntax syntax-after
"w" (2) ?w (?w)
"w p" (1048578) ?w args-out-of-range
". 124b" (2818049) ?. args-out-of-range
"(]" (4 . ?\]) ?\( (?\( . ?\])
(Note that `syntax-after' fails with args-out-of-range on some syntaxes.)
It seems you wanted to add syntax flags to the returned value which
are not available from `char-syntax'.
I think a better solution that would reduce the number of
representations is to implement a new function `syntax-to-string'
returning a syntax string (e.g. ". 124b"). All flags can be accessed
from this string easily either with a regexp or with `substring' or `aref'
when needed.
As I see in the Emacs source tree `char-syntax' is mostly used
in combination with `char-after':
(eq (char-syntax (char-after point)) ?w)
where only syntax class character is needed, and not flags.
For such cases `syntax-after' would serve as a replacement to make
code simpler:
(defun syntax-after (point)
(char-syntax (char-after point)))
> I just saw that the above change caused Juri to install a fix to
> descr-text.el that replaces a call to syntax-after with a copy of its
> (previous) body.
>
> That is strange, I searched for all the calls and only found them in
> paren.el.
Since `describe-char' calls `internal-describe-syntax-value' which
accepts the internal syntax representation, I think no special
function for that code is needed, because there are too few cases
where the internal syntax representation is used (another one I know
is `describe-syntax' command).
--
Juri Linkov
http://www.jurta.org/emacs/
- syntax-after, Stefan Monnier, 2004/11/11
- Re: syntax-after, Juri Linkov, 2004/11/11
- Re: syntax-after, Richard Stallman, 2004/11/12
- Re: syntax-after,
Juri Linkov <=
- Re: syntax-after, Stefan, 2004/11/13
- Re: syntax-after, Richard Stallman, 2004/11/16
- Re: syntax-after, Stefan Monnier, 2004/11/22
- Re: syntax-after, Kim F. Storm, 2004/11/22
- Re: syntax-after, Stefan Monnier, 2004/11/22
- Re: syntax-after, Juri Linkov, 2004/11/23
- Re: syntax-after, Stefan, 2004/11/23
- Re: syntax-after, Richard Stallman, 2004/11/23