From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#24542: 25.1.50; The symbol `@' and sexp scanning Date: Tue, 03 Jan 2017 13:46:26 +0100 Message-ID: <87pok48g65.fsf@web.de> References: <8760pj27wm.fsf@web.de> <87o9zptn3r.fsf@web.de> <87zij95hbr.fsf@users.sourceforge.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1483447700 12470 195.159.176.226 (3 Jan 2017 12:48:20 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 3 Jan 2017 12:48:20 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) Cc: 24542@debbugs.gnu.org To: npostavs@users.sourceforge.net Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jan 03 13:48:13 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cOOVf-0002IA-EK for geb-bug-gnu-emacs@m.gmane.org; Tue, 03 Jan 2017 13:48:11 +0100 Original-Received: from localhost ([::1]:33426 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOOVj-0001Vx-Kg for geb-bug-gnu-emacs@m.gmane.org; Tue, 03 Jan 2017 07:48:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55084) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOOVb-0001UM-3b for bug-gnu-emacs@gnu.org; Tue, 03 Jan 2017 07:48:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOOVW-0000Et-51 for bug-gnu-emacs@gnu.org; Tue, 03 Jan 2017 07:48:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:52884) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOOVW-0000Ep-1x for bug-gnu-emacs@gnu.org; Tue, 03 Jan 2017 07:48:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cOOVV-0004ja-Ow for bug-gnu-emacs@gnu.org; Tue, 03 Jan 2017 07:48:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Jan 2017 12:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 24542 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 24542-submit@debbugs.gnu.org id=B24542.148344762418135 (code B ref 24542); Tue, 03 Jan 2017 12:48:01 +0000 Original-Received: (at 24542) by debbugs.gnu.org; 3 Jan 2017 12:47:04 +0000 Original-Received: from localhost ([127.0.0.1]:40050 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cOOUa-0004iR-CB for submit@debbugs.gnu.org; Tue, 03 Jan 2017 07:47:04 -0500 Original-Received: from mout.web.de ([212.227.17.11]:52470) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cOOUY-0004hs-B9 for 24542@debbugs.gnu.org; Tue, 03 Jan 2017 07:47:02 -0500 Original-Received: from drachen.dragon ([109.84.3.238]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MHY5w-1cNHUj1Ylg-003JqP; Tue, 03 Jan 2017 13:46:42 +0100 In-Reply-To: <87zij95hbr.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net's message of "Mon, 02 Jan 2017 15:37:28 -0500") X-Provags-ID: V03:K0:mRA4ZI9ulb46Y+4UG/Y22DMDrCj81kgcxv0sTweyhtpJufMIg29 9UfTvnBwS1sL3PS8TynW8p7Is/J1YkCQv74K8gYHSxRCzLbI1jiMIgPx8vmCm05b/vQCvrk vUklolYgch5ClZ1kZQfgJ6V/mwamLPusdU6rO59l5HDsAoV9ted6tkoCXzHYPfCf+MHYwBX r4W+sAiKxEZ1RAOly9ilg== X-UI-Out-Filterresults: notjunk:1;V01:K0:Z4CzwUebEAg=:alBoTk+ncgM57i/1RdMdTC mcOwLdPPoji2qoSvltm7N2D1lTdTzJiXwz/hmqCNxk8YUNMaRcqR210jwUzfZyC7zHdzOzxAk gKFGDecr0MkSFE9VI8TvfECKvdbhG3fJ2m3WtG87evBOX7CFaIB+WUgxP8SlryKka5IK8n0QM FKW7somZVMfInbClVJpN0X1bVJps4Fcv3F/Nevl6WgweYUr4F1v+Efrosy08fGKz2AdH6PZwm yAWtW893cXB13sndZ6iuBrco+Ld1mCDkH+Hv/LzZy85zboss3b8qop+bXPlucxmghS5Yu0rAx hSAqhAJxcL3lVeLLxNM67e7+BXM7XrCYnPrgDehwZo8uu+Xhqhu78Ub1SIPhi/m5C63f62Fje mUMMysQ1LvwLmd7VoqdODBgQUAJnPas2MJ1A1elpILb0oEQZhkKolbpjMEvK5tlBBGl/MHP8O mGRT6Em2zLxha/94CFqJT+AuOT3sDqWq6PqjhUqMO/nIvpDrPGqzxXm7unpqFdpcSwKIn+Ely Iy5mlvQX1BzL2HYQkTv6kpHGDOUNHY/86w0crnBpfcHD7aVdVpTj8J2CLVeoq6BI7OIbkYOoX pM/Jn/3Gali7nlktqhvdQfP22VghknkluVio02yN3X9pZiXDepz3rWPIlD+DZIERSXHTNRWCV 6AIu0Gh0dF0tgIihD/mnLBlSPJP0SZ+JJGyLI9dPwXV4WjC5kV5PBFet0n09odTqFFGKXULri b5JPHke+/cW+YHHwcXagtMHQ3OltSAKT7DcvY9wg82wAR8nEYvjIA6onT+2ua8YPpW9ZoXKX X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:127701 Archived-At: npostavs@users.sourceforge.net writes: > >> insert > >> > >> (eq element '@) > >> > >> in an elisp mode buffer (e.g. scratch). Put point at the quote or the > >> "@". Eval > >> > >> (goto-char (scan-sexps (point) 1)) > >> > >> and you get an error like: > >> > >> > >> Debugger entered--Lisp error: (scan-error "Containing expression ends > >> prematurely" 15 16) > > > > It seems that you can replace the symbol `@' in this recipe with any > > symbol whose name has the form "@+", i.e. `@@' or `@@@' or... When the > > symbol contains only one character different from "@", it doesn't seem > > to happen. > > `@' has the prefix syntax flag, the elisp manual says `(elisp) Syntax Flags': > > * `p' identifies an additional prefix character for Lisp syntax. > These characters are treated as whitespace when they appear between > ^^^^^^^^^^^^^^^^^^^^^ > expressions. When they appear within an expression, they are > handled according to their usual syntax classes. > > So (eq element '@) acts the same as (eq element ' ). I don't agree with your interpretation. `@' is an (textual representation of an) expression in the above example, so "these characters" don't "appear between expressions" in this case. Could be that this wording led to a wrong implementation, however. > This could be changed with something the following patch, but I'm not > sure if it's the right thing for non-Lisp languages... > diff --git i/src/syntax.c w/src/syntax.c > index 0ee1c74..253d3fb 100644 > --- i/src/syntax.c > +++ w/src/syntax.c > @@ -2681,7 +2681,16 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) > } > > if (prefix) > - continue; > + { > + int next_c = FETCH_CHAR_AS_MULTIBYTE (from_byte); > + int next_syntax = SYNTAX_WITH_FLAGS (next_c); > + bool next_prefix = SYNTAX_FLAGS_PREFIX (next_syntax); > + enum syntaxcode next_code = syntax_multibyte (next_c, multibyte_symbol_p); > + if (next_prefix > + || next_code == Ssymbol > + || next_code == Sword) > + continue; > + } > > switch (code) > { Thanks for the patch. Can anyone judge whether we can do this? Thanks, Michael.