GNU bug report logs - #7498
23.2; scheme-mode.el doesn't parse racket file correctly

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: wishlist; Reported by: alexander.haeckel@HIDDEN; dated Sat, 27 Nov 2010 16:15:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 21 Oct 2021 21:25:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 21 17:25:04 2021
Received: from localhost ([127.0.0.1]:58809 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mdfYd-0006Iu-Pe
	for submit <at> debbugs.gnu.org; Thu, 21 Oct 2021 17:25:03 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:10566)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1mdfYb-0006IJ-Rj
 for 7498 <at> debbugs.gnu.org; Thu, 21 Oct 2021 17:25:02 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id EF528100321;
 Thu, 21 Oct 2021 17:24:55 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 4CF45100186;
 Thu, 21 Oct 2021 17:24:54 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1634851494;
 bh=g1icWf/u0vPFYRn2l60s/h4qf9N+BGZcWCX+xDCo4oc=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=AmjNJECilEC5lSs5pWWD89+OszdtF8oilooj27w4p3Fx0pc+YzZTDHswBCK2RQ5/o
 99AhWsSnvz41v54Q0dgttaVTQq1TjcQE1VJtZJxEdyWKh58cVq/nH3RZ78Q6Imp/FW
 opaKNtQr0bJOXYiv4m/N/kl4RedyYrtOJbFYPxj42p1oopvC4FD2MHBwMM1YK89+3Z
 PL3uoAR3ZZpBjdgNoYqb4WJb0wQzeg3lyYKDO79m1Ay+8cC1PLyyB2S5eySgx5Ww4E
 +ixOZWtLoXnY+BxPeapSImFyghU9jiWQ/rsEx+FqXeV0EVuLMFrYxCnv+UEEFh1+mP
 ZnYBQOTD2PBGQ==
Received: from milanesa (unknown [45.72.241.23])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0BF7A120406;
 Thu, 21 Oct 2021 17:24:54 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Stefan Kangas <stefan@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
Message-ID: <jwvilxq9ipm.fsf-monnier+emacs@HIDDEN>
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
 <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
 <CADwFkmnzV-NL5xX6YSpNd2wsnxxUOg=Ht3CLqBHRiMa76hrvBg@HIDDEN>
 <87ilxqt9mp.fsf@HIDDEN>
 <CADwFkmmukQy3CvWGHirJpOBdKH=bJPP1B6cxo8u-mbacTSeMwA@HIDDEN>
Date: Thu, 21 Oct 2021 17:24:53 -0400
In-Reply-To: <CADwFkmmukQy3CvWGHirJpOBdKH=bJPP1B6cxo8u-mbacTSeMwA@HIDDEN>
 (Stefan Kangas's message of "Thu, 21 Oct 2021 13:45:53 -0700")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.053 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, Philip Kaludercic <philipk@HIDDEN>,
 Alan Third <alan@HIDDEN>,
 =?windows-1252?Q?Cl=E9ment?= Pit--Claudel <clement.pit@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

We could add to elpa-admin.el some flag that makes it behave the same
for the -devel and the non-devel repositories.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 21 Oct 2021 20:46:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 21 16:46:02 2021
Received: from localhost ([127.0.0.1]:58721 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mdewr-0002v9-US
	for submit <at> debbugs.gnu.org; Thu, 21 Oct 2021 16:46:02 -0400
Received: from mail-pg1-f181.google.com ([209.85.215.181]:46606)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefankangas@HIDDEN>) id 1mdewq-0002ur-9z
 for 7498 <at> debbugs.gnu.org; Thu, 21 Oct 2021 16:46:00 -0400
Received: by mail-pg1-f181.google.com with SMTP id m21so1341082pgu.13
 for <7498 <at> debbugs.gnu.org>; Thu, 21 Oct 2021 13:46:00 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:in-reply-to:references:mime-version:date
 :message-id:subject:to:cc;
 bh=rWKBm7ffdpx/NkSYR/x1jN31OKVqvTtg+znok+hAG5c=;
 b=iYkzcUZgRndM53vp+QB1MnluTtnKCAtWzc+oG/sMlLZe7Y43Wge2p2kerBUBRitXeB
 PCg3Sgx/SGKd0wf+KPKprSkx11Jju3jABCSJubREBDjt5kaKcJZ2x92tPa+bsb+QBxGV
 HIGix/VFo/MhKnfjY6BgXIEa6ovWZe/W+/GH1IhNf21s6nkj8xi1Sq2nzdBW115N1ha5
 w7QcAnDL+LfeS23ycDLQ6epRY7srSOq7uHOAvhfZYUIMc933vP8r5JhK3APx6QXtikFD
 ZCF7m9URKf8Opy7lgpCIzgZqJWjJT5hzzVZQOG7XnIDwBDjUzUDHz5/NV3/ZM/smTYHl
 HQFA==
X-Gm-Message-State: AOAM530jyCfJPOYq74C3pNsOWVhtPDx/MMIdY53LBrhbR0K/5E2kMeTP
 RxiQI2CqUa1pL/RJaLAGLairuRK6iWIXGG/ctFw=
X-Google-Smtp-Source: ABdhPJygTmckAyfqNSUU/pBbg063TS1xXSIUnX21SS7bVCIxde0fywDAumCto3R0aw1+fjR6VnanPBJCWLGYRDRFqm0=
X-Received: by 2002:a63:81c2:: with SMTP id t185mr6225649pgd.114.1634849154518; 
 Thu, 21 Oct 2021 13:45:54 -0700 (PDT)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Thu, 21 Oct 2021 13:45:53 -0700
From: Stefan Kangas <stefan@HIDDEN>
In-Reply-To: <87ilxqt9mp.fsf@HIDDEN>
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
 <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
 <CADwFkmnzV-NL5xX6YSpNd2wsnxxUOg=Ht3CLqBHRiMa76hrvBg@HIDDEN>
 <87ilxqt9mp.fsf@HIDDEN>
MIME-Version: 1.0
Date: Thu, 21 Oct 2021 13:45:53 -0700
Message-ID: <CADwFkmmukQy3CvWGHirJpOBdKH=bJPP1B6cxo8u-mbacTSeMwA@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
To: Philip Kaludercic <philipk@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, Alan Third <alan@HIDDEN>,
 =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= <clement.pit@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

Philip Kaludercic <philipk@HIDDEN> writes:

>> What do you think of adding racket-mode to NonGNU ELPA?  Is doing that
>> something you would be willing to volunteer for?
>
> By coincidence, the racket-mode maintainer just responded to my
> request[0] from a weeks ago, and he isn't that enthusiastic because ELPA
> is stable-by-default, and he prefers a rolling release model.
>
> Of course it would still be possible, but the lack of upstream
> cooperation would make it more difficult.
>
> [0] https://github.com/greghendershott/racket-mode/issues/389#issuecomment-948738602

(I've CC:ed in Stefan Monnier.)

I see no need for us to be strict about such things, any more than
Debian is trying to be strict with the packages they distribute.  So I
would encourage the maintainer to keep his current release model, or
whichever one he happens to prefer, and explain explicitly that we have
no interest in imposing any kind of release model on anyone.

However, it would be very useful if he could periodically update the
"Version" header, for example on the 1st of each month or whatever suits
him, so that the package is automatically updated ("released") on NonGNU
ELPA.

Beyond that, I don't see that we do anything in particular to raise user
expectations on our end, but I don't think that his concerns are
therefore invalid.  One way to manage user expectations could be to add
a brief note to the documentation (e.g. the README and/or Commentary
section) explaining the release model of the package.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 21 Oct 2021 20:18:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 21 16:18:26 2021
Received: from localhost ([127.0.0.1]:58681 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mdeW1-0008PD-8W
	for submit <at> debbugs.gnu.org; Thu, 21 Oct 2021 16:18:26 -0400
Received: from mout01.posteo.de ([185.67.36.65]:57285)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <philipk@HIDDEN>) id 1mdeVy-0008Ov-VM
 for 7498 <at> debbugs.gnu.org; Thu, 21 Oct 2021 16:18:16 -0400
Received: from submission (posteo.de [89.146.220.130]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 92ABE240027
 for <7498 <at> debbugs.gnu.org>; Thu, 21 Oct 2021 22:18:08 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1634847488; bh=9ajP5m5gGFMIEhMaSRrW7gxQ3t92gWBXh/PIIFuf9Ss=;
 h=From:To:Cc:Subject:Autocrypt:Date:From;
 b=NGtojKv1oLHRq/Gr8AHshynuzLRerxrS2uRdtWtbcg7Xd/mJ43BeIeCWtpXOlSdT7
 N1ddMOwJGgpSl79ogWHBlMg/kjtGlNz8BDe2ZIpf/B4yynXMiiy0F/fWTTF+9Sakwx
 CtyUp4Ukka2GMTioE6e+fXwAzBdick/zU6wPlbgMXHPjhJqj8PfVKv7cga2I53TzPX
 0CETwHPYrfTROgrFcJTt6Sr15YmfruE8/OX8hp8/SX5uBGQs9r2Ge7ycHHt79uuurr
 fDRUIOKeS2giJZ8LgNl56rRK/ZELLGmd6PZnUAMyrGkAaUIChoAv33Tdf7AsJVkdFG
 h3S4NoTPTe5Jw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4HZzLl31hRz6tm9;
 Thu, 21 Oct 2021 22:18:07 +0200 (CEST)
From: Philip Kaludercic <philipk@HIDDEN>
To: Stefan Kangas <stefan@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
 <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
 <CADwFkmnzV-NL5xX6YSpNd2wsnxxUOg=Ht3CLqBHRiMa76hrvBg@HIDDEN>
Autocrypt: addr=philipk@HIDDEN; prefer-encrypt=nopreference; keydata=
 mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo
 aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0
 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ
 CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh
 io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF
 AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo
 Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS
 g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB
Date: Thu, 21 Oct 2021 20:18:06 +0000
In-Reply-To: <CADwFkmnzV-NL5xX6YSpNd2wsnxxUOg=Ht3CLqBHRiMa76hrvBg@HIDDEN>
 (Stefan Kangas's message of "Thu, 21 Oct 2021 12:44:57 -0700")
Message-ID: <87ilxqt9mp.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, Alan Third <alan@HIDDEN>,
 =?utf-8?Q?Cl?= =?utf-8?Q?=C3=A9ment?= Pit--Claudel <clement.pit@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Kangas <stefan@HIDDEN> writes:

> Hi Philip,
>
> Stefan Kangas <stefan@HIDDEN> writes:
>
>> Alan Third <alan@HIDDEN> writes:
>>
>>> Cl=C3=A9ment Pit--Claudel <clement.pit@HIDDEN> writes:
>>>
>>>> On 2016-08-12 15:12, Alan Third wrote:
>>>>> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
>>>>>
>>>>> that appear to break things, because scheme-mode sees that closing cu=
rly
>>>>> bracket as a comment. This syntax looks like it=E2=80=99s Racket spec=
ific.
>>>>
>>>> I think this isn't written in "core" Racket; it's Scribble, a dialect
>>>> of Racket that's pretty remote from Scheme. IOW, it's not a trivial
>>>> fix.
>>>
>>> I think since it's not really scheme we can't expect scheme-mode to deal
>>> with it. It may make more sense to have a separate Racket or Scribble
>>> mode (based on Scheme mode, I expect).
>>>
>>> I'll mark this wishlist anyway in case someone feels like giving it a
>>> go.
>>
>> Just to add that racket-mode exists:
>>
>>     https://www.racket-mode.com/
>>
>> Of course, it would be useful to have something built-in or in GNU ELPA.
>> But maybe we could add it to NonGNU ELPA once we get that running.
>
> What do you think of adding racket-mode to NonGNU ELPA?  Is doing that
> something you would be willing to volunteer for?

By coincidence, the racket-mode maintainer just responded to my
request[0] from a weeks ago, and he isn't that enthusiastic because ELPA
is stable-by-default, and he prefers a rolling release model.

Of course it would still be possible, but the lack of upstream
cooperation would make it more difficult.

[0] https://github.com/greghendershott/racket-mode/issues/389#issuecomment-=
948738602

--=20
	Philip Kaludercic




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 21 Oct 2021 19:45:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 21 15:45:05 2021
Received: from localhost ([127.0.0.1]:58641 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mddzt-0005Cl-3X
	for submit <at> debbugs.gnu.org; Thu, 21 Oct 2021 15:45:05 -0400
Received: from mail-pj1-f49.google.com ([209.85.216.49]:56182)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefankangas@HIDDEN>) id 1mddzq-0005BE-Sr
 for 7498 <at> debbugs.gnu.org; Thu, 21 Oct 2021 15:45:03 -0400
Received: by mail-pj1-f49.google.com with SMTP id om14so1268852pjb.5
 for <7498 <at> debbugs.gnu.org>; Thu, 21 Oct 2021 12:45:02 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:in-reply-to:references:user-agent
 :mime-version:date:message-id:subject:to:cc
 :content-transfer-encoding;
 bh=7o7P6gtXtT69gNX6wLbxoDJJdy7oxLq6QpEj+6hp2nQ=;
 b=Tbp5bxjNTVJFffZ+0IvBZ+SOVQfCB6lQqFEytmjAN434ZCH8+sTgmAd+7NpDbyFcCU
 ymTHa2RFnbjNHWY78BM/j6tfmGrBgoWF0R0ooSdxwcej9lRL6oEAr0awvKGQZfnzLkWw
 vv5/fgI3Ee8tBrQTNLA396riywmxAz5ZsyY07Yc5cytUBXz5dMsc8c9PIyKiWx/Z7jo6
 N5rPakaATCIO9RlFxhlMFtFkuyGShE13MKEjnDLi4afYag6ZyQloeY6QEdn9pJCVL4T1
 m/lcVcGK9ad7+bDivsI+GroOxpSY6EOKZQLI5uYlB4FTvIslABMzjfp82DMAf/l0/iOe
 L+ig==
X-Gm-Message-State: AOAM532GWQpSuFBfTzsZoii8Bfs8X5kVttjm036yTiZfd5FbN/3G+h5Y
 Vdlj+VDSNV9yMhCFA3fLXwRAJas6DUS6vnZtobE65ELy
X-Google-Smtp-Source: ABdhPJwqppftVv6Kuj/MDkzB6H2NmznMGE6TX3M+j5of3BYr3Eqeqk/8oaPQ/O9Q3fFNKli2RjfRogJKoVGm3IsXEPE=
X-Received: by 2002:a17:90b:17d2:: with SMTP id
 me18mr9018009pjb.132.1634845497361; 
 Thu, 21 Oct 2021 12:44:57 -0700 (PDT)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Thu, 21 Oct 2021 12:44:57 -0700
From: Stefan Kangas <stefan@HIDDEN>
In-Reply-To: <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
 (Stefan Kangas's message of "Wed, 18 Nov 2020 20:46:15 -0800")
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
 <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Date: Thu, 21 Oct 2021 12:44:57 -0700
Message-ID: <CADwFkmnzV-NL5xX6YSpNd2wsnxxUOg=Ht3CLqBHRiMa76hrvBg@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
To: Alan Third <alan@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, Philip Kaludercic <philipk@HIDDEN>,
 =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= <clement.pit@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

Hi Philip,

Stefan Kangas <stefan@HIDDEN> writes:

> Alan Third <alan@HIDDEN> writes:
>
>> Cl=C3=A9ment Pit--Claudel <clement.pit@HIDDEN> writes:
>>
>>> On 2016-08-12 15:12, Alan Third wrote:
>>>> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
>>>>
>>>> that appear to break things, because scheme-mode sees that closing cur=
ly
>>>> bracket as a comment. This syntax looks like it=E2=80=99s Racket speci=
fic.
>>>
>>> I think this isn't written in "core" Racket; it's Scribble, a dialect
>>> of Racket that's pretty remote from Scheme. IOW, it's not a trivial
>>> fix.
>>
>> I think since it's not really scheme we can't expect scheme-mode to deal
>> with it. It may make more sense to have a separate Racket or Scribble
>> mode (based on Scheme mode, I expect).
>>
>> I'll mark this wishlist anyway in case someone feels like giving it a
>> go.
>
> Just to add that racket-mode exists:
>
>     https://www.racket-mode.com/
>
> Of course, it would be useful to have something built-in or in GNU ELPA.
> But maybe we could add it to NonGNU ELPA once we get that running.

What do you think of adding racket-mode to NonGNU ELPA?  Is doing that
something you would be willing to volunteer for?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 19 Nov 2020 05:25:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 19 00:25:33 2020
Received: from localhost ([127.0.0.1]:37689 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kfcRo-0003Nz-Ui
	for submit <at> debbugs.gnu.org; Thu, 19 Nov 2020 00:25:33 -0500
Received: from static.rcdrun.com ([95.85.24.50]:36805)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <bugs@HIDDEN>) id 1kfcRm-0003Nd-QA
 for 7498 <at> debbugs.gnu.org; Thu, 19 Nov 2020 00:25:31 -0500
Received: from localhost ([::ffff:41.202.241.56])
 (AUTH: PLAIN admin, TLS: TLS1.2,256bits,ECDHE_RSA_AES_256_GCM_SHA384)
 by static.rcdrun.com with ESMTPSA
 id 00000000002C000B.000000005FB601C4.00001403; Thu, 19 Nov 2020 05:25:23 +0000
Date: Thu, 19 Nov 2020 08:25:10 +0300
From: Jean Louis <bugs@HIDDEN>
To: Stefan Kangas <stefan@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
Message-ID: <X7YBtpLhTZrBiMRq@HIDDEN>
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
 <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
User-Agent: Mutt/2.0 (3d08634) (2020-11-07)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, Alan Third <alan@HIDDEN>,
 =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel <clement.pit@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* Stefan Kangas <stefan@HIDDEN> [2020-11-19 07:47]:
> Alan Third <alan@HIDDEN> writes:
> 
> > Clément Pit--Claudel <clement.pit@HIDDEN> writes:
> >
> >> On 2016-08-12 15:12, Alan Third wrote:
> >>> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
> >>>
> >>> that appear to break things, because scheme-mode sees that closing curly
> >>> bracket as a comment. This syntax looks like it’s Racket specific.
> >>
> >> I think this isn't written in "core" Racket; it's Scribble, a dialect
> >> of Racket that's pretty remote from Scheme. IOW, it's not a trivial
> >> fix.
> >
> > I think since it's not really scheme we can't expect scheme-mode to deal
> > with it. It may make more sense to have a separate Racket or Scribble
> > mode (based on Scheme mode, I expect).

scheme-mode allows all kinds of evaluations including with
racket. scheme-program has to be set to racket -i

closing curly bracket on my side is not considered comment.

From scheme.el:

(defconst scheme-sexp-comment-syntax-table
  (let ((st (make-syntax-table scheme-mode-syntax-table)))
    (modify-syntax-entry ?\; "." st)
    (modify-syntax-entry ?\n " " st)
    (modify-syntax-entry ?#  "'" st)
    st))

How can I reproduce that bug? Please send me example.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 19 Nov 2020 04:46:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 18 23:46:26 2020
Received: from localhost ([127.0.0.1]:37502 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kfbpx-0007eN-W8
	for submit <at> debbugs.gnu.org; Wed, 18 Nov 2020 23:46:26 -0500
Received: from mail-ej1-f42.google.com ([209.85.218.42]:35086)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefankangas@HIDDEN>) id 1kfbpt-0007Vu-An
 for 7498 <at> debbugs.gnu.org; Wed, 18 Nov 2020 23:46:23 -0500
Received: by mail-ej1-f42.google.com with SMTP id f23so6034870ejk.2
 for <7498 <at> debbugs.gnu.org>; Wed, 18 Nov 2020 20:46:21 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:in-reply-to:references:user-agent
 :mime-version:date:message-id:subject:to:cc
 :content-transfer-encoding;
 bh=rBKP9CKfFZqyzufO0STzXChDstiaIfmM5lOxX1ByFKA=;
 b=YmxbwyqU3aLigHqTZvSkrfyAbnCMsGLoCRQFLnJbRB9iWQqzOmZctSY8RkdXlMHpWV
 2zc+jnYlmCR89jMzutaGL13icpoQScVC6e6OAjjN/uvhApTOvY0P0hZfwl3xAEYterdZ
 lBsIlmm7vdgfE/WesV2bQghv4nmSlFPxjRRlnbV+8ZovsKXle2HrEOPF25DUfAsK9JCo
 ftU3uzSH7qJr0DvY7ACpPsEREpSOO1DyfGOG64ee1NoH5i0fy8YYx1ugBTVBmGuoudYT
 POGLePFqG9KoAZsSkyVIX7ukLkpIExUQrK1iK0dGBN2g3DGGBeq+ZrrOismfHgggHcht
 HIBA==
X-Gm-Message-State: AOAM530vqaucZktZk0lqJWkLMTqU12rS3ixr/yz9P5zcf+lP/+bQdavd
 09TU0cIsuGlDZ87zhBEQjT4BAfoU6+Jj5FbgjCE=
X-Google-Smtp-Source: ABdhPJyAMcyXjWIDrwAM1dWZK0L5FDKAnwj/R2L3P6JG49q+38i7WfHpwh1LXjlSdgJWC01FOTF4P5NZrVUF8K9AvFY=
X-Received: by 2002:a17:906:11d0:: with SMTP id
 o16mr2403722eja.25.1605761175600; 
 Wed, 18 Nov 2020 20:46:15 -0800 (PST)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Wed, 18 Nov 2020 20:46:15 -0800
From: Stefan Kangas <stefan@HIDDEN>
In-Reply-To: <m2sht75tck.fsf@HIDDEN> (Alan Third's message of
 "Sat, 10 Sep 2016 22:37:47 +0100")
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 <m2sht75tck.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
MIME-Version: 1.0
Date: Wed, 18 Nov 2020 20:46:15 -0800
Message-ID: <CADwFkmk3-ZuPJ5CaUgcFr6KpzNova_kE0wQ5wOFcN9bcdTSi8w@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
To: Alan Third <alan@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.5 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org,
 =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= <clement.pit@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)

Alan Third <alan@HIDDEN> writes:

> Cl=C3=A9ment Pit--Claudel <clement.pit@HIDDEN> writes:
>
>> On 2016-08-12 15:12, Alan Third wrote:
>>> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
>>>
>>> that appear to break things, because scheme-mode sees that closing curl=
y
>>> bracket as a comment. This syntax looks like it=E2=80=99s Racket specif=
ic.
>>
>> I think this isn't written in "core" Racket; it's Scribble, a dialect
>> of Racket that's pretty remote from Scheme. IOW, it's not a trivial
>> fix.
>
> I think since it's not really scheme we can't expect scheme-mode to deal
> with it. It may make more sense to have a separate Racket or Scribble
> mode (based on Scheme mode, I expect).
>
> I'll mark this wishlist anyway in case someone feels like giving it a
> go.

Just to add that racket-mode exists:

    https://www.racket-mode.com/

Of course, it would be useful to have something built-in or in GNU ELPA.
But maybe we could add it to NonGNU ELPA once we get that running.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.
Severity set to 'wishlist' from 'normal' Request was from Alan Third <alan@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 10 Sep 2016 21:37:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 10 17:37:54 2016
Received: from localhost ([127.0.0.1]:55804 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bipyE-0002kh-HI
	for submit <at> debbugs.gnu.org; Sat, 10 Sep 2016 17:37:54 -0400
Received: from mail-wm0-f54.google.com ([74.125.82.54]:35146)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <athird@HIDDEN>) id 1bipyC-0002kT-NF
 for 7498 <at> debbugs.gnu.org; Sat, 10 Sep 2016 17:37:53 -0400
Received: by mail-wm0-f54.google.com with SMTP id a6so390568wmc.0
 for <7498 <at> debbugs.gnu.org>; Sat, 10 Sep 2016 14:37:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=googlemail.com; s=20120113;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version:content-transfer-encoding;
 bh=j1pXPiUGSQPQE+jxGCaKHDhJ6jUDq2aRwQtDaHq0VvI=;
 b=I/Uc26nxLeu62JFLA2lyiT14Rw6ipaerH8qjXBnj/RYHK6ZlIMHNvzOJZz2zS2d8pU
 6sZorB4iQDS21L84R3dnjjoLIAlFAF6ZLNyACyf0sGzVDycx3ejDjZdR65iW04oVfYQa
 7+0mXFG7LJvhvB6x2e0JDY5399x7K1W4PnLv0ZBDVXVJ4hOiHKRgs6bJPtQbsQxluwDu
 aWzKv4dvgHCzR9tJ9TmVwbCOmSMRd/BkwbKccNQFEQwUCMrVcynPX2gHSJjg9LpPadrX
 mgVRLjzYSr5vfXZRVSLx1v1sPlfPOwjQk476qzd3K768nFPXLXVPCRcrA6HZTN2mw3xO
 DfpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version
 :content-transfer-encoding;
 bh=j1pXPiUGSQPQE+jxGCaKHDhJ6jUDq2aRwQtDaHq0VvI=;
 b=lbnGdULhHkxjYsyUOwzwS5Hl7kKWLWonjbpYZxz7ktszCHw5JX2sgUQ6P6xp5QIqFt
 BQb0025x9RMfwbJAZdB01QC6UtgpwIKLZF7n9msdqiaA3NTJEDJrblyEVQd8x6ROAVTZ
 vEzdAjpNMuiYJvOsfbgPsnVfgj/JJ/wyFwDEdsPpra37IvoJRB14qlAY/zgnZ+kwhmxU
 SNvEeBO9kQcSs/0CSEbSsf1jmABMvEf3AqRVUV9pfRovp3JCxTa4jlnBUBbngvlZmuX8
 zAhzf1vQAzF/lYOwBudEj2zB2ZluzarCGzDrRCjlTA1aU05tsW4kTxALE4PCA/PMed5V
 GLfA==
X-Gm-Message-State: AE9vXwNbuoP8HLLqAuQEZEFZcRQlqOttR16s9OXvG4Y4aSKvgik72QekUJnBTqC1FjvHbA==
X-Received: by 10.194.191.162 with SMTP id gz2mr8216111wjc.182.1473543467087; 
 Sat, 10 Sep 2016 14:37:47 -0700 (PDT)
Received: from breton.holly.idiocy.org
 (ip6-2001-08b0-03f8-8129-2914-1213-ae12-f60c.holly.idiocy.org.
 [2001:8b0:3f8:8129:2914:1213:ae12:f60c])
 by smtp.gmail.com with ESMTPSA id t1sm4873174wjv.32.2016.09.10.14.37.46
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 10 Sep 2016 14:37:46 -0700 (PDT)
From: Alan Third <alan@HIDDEN>
To: =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel <clement.pit@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
 <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
Date: Sat, 10 Sep 2016 22:37:47 +0100
In-Reply-To: <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
 (=?utf-8?Q?=22Cl=C3=A9ment?=
 Pit--Claudel"'s message of "Fri, 12 Aug 2016 16:37:51 -0400")
Message-ID: <m2sht75tck.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (darwin)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

Cl=C3=A9ment Pit--Claudel <clement.pit@HIDDEN> writes:

> On 2016-08-12 15:12, Alan Third wrote:
>> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
>>=20
>> that appear to break things, because scheme-mode sees that closing curly
>> bracket as a comment. This syntax looks like it=E2=80=99s Racket specifi=
c.
>
> I think this isn't written in "core" Racket; it's Scribble, a dialect
> of Racket that's pretty remote from Scheme. IOW, it's not a trivial
> fix.

I think since it's not really scheme we can't expect scheme-mode to deal
with it. It may make more sense to have a separate Racket or Scribble
mode (based on Scheme mode, I expect).

I'll mark this wishlist anyway in case someone feels like giving it a
go.
--=20
Alan Third




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 12 Aug 2016 20:38:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Aug 12 16:38:13 2016
Received: from localhost ([127.0.0.1]:55457 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bYJDZ-0002L8-8F
	for submit <at> debbugs.gnu.org; Fri, 12 Aug 2016 16:38:13 -0400
Received: from eggs.gnu.org ([208.118.235.92]:46148)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDX-0002Kv-Ql
 for submit <at> debbugs.gnu.org; Fri, 12 Aug 2016 16:38:12 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDR-0001PU-Oc
 for submit <at> debbugs.gnu.org; Fri, 12 Aug 2016 16:38:06 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM
 autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:52893)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDR-0001PO-LQ
 for submit <at> debbugs.gnu.org; Fri, 12 Aug 2016 16:38:05 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:37111)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDP-00042N-CD
 for bug-gnu-emacs@HIDDEN; Fri, 12 Aug 2016 16:38:04 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDM-0001Oj-6z
 for bug-gnu-emacs@HIDDEN; Fri, 12 Aug 2016 16:38:03 -0400
Received: from mout.kundenserver.de ([212.227.17.24]:53116)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pit@HIDDEN>) id 1bYJDL-0001Od-Sm
 for bug-gnu-emacs@HIDDEN; Fri, 12 Aug 2016 16:38:00 -0400
Received: from [18.26.2.123] ([18.26.2.123]) by mrelayeu.kundenserver.de
 (mreue102) with ESMTPSA (Nemesis) id 0M8QnS-1bKkLM21SM-00vwM5 for
 <bug-gnu-emacs@HIDDEN>; Fri, 12 Aug 2016 22:37:58 +0200
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
To: bug-gnu-emacs@HIDDEN
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= <clement.pit@HIDDEN>
Message-ID: <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
Date: Fri, 12 Aug 2016 16:37:51 -0400
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <m2twepol81.fsf@HIDDEN>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="FhKEmooEvEIF99rkk73qp68oQvpONKJwT"
X-Provags-ID: V03:K0:1gQiyVo5RwQJdfHowJmCGFg+TlzsyMZouLPravKfYSJmrXsl5qJ
 XsNBA+aA6TWSj34Q0qTN2+aNK+M4iNfj+MX1kd+UnfYd43+oj9ZWHTZEvHUCgxrdhHZ4xzd
 Y7zRtxQiHZv2YQG2bh+kVGOhn6pBQgfdDMi4anNUZ4EFwZMkL+3qrP6/q/XaY0Z0dnG8Gw9
 HSRojfC96FNZ9NfbvyK7w==
X-UI-Out-Filterresults: notjunk:1;V01:K0:OnYIfmxKLAs=:DOrxkGz0WNNPh+usZvWSI7
 hT21WBfrHisILYwaWkh9SY7obcsZBuLkW4/L257bO4jkKNMSRqD9pX9jBGrtkvlKEZwrbUqx6
 IOPSeENib98rGu4qmzgtCeffcO5DAMM/Yj0inld7Cij8d9Ol3BURMgg7ovGEUUAlkb6JJEBEn
 f3JKTHAVXWcjqB4w/gXjGoqiCpdroOmxR+KxBsMd2SCD4vlP97iBxJSCx4/n+psA+GquU0YcS
 nhqXvC1LmhU5mN09JJtU1JENFSpWwuhBMc73SZeA5zPN9dfXhBUrygrLNn3xxosHdSuFIFHvI
 Hj5gz6TAqGXu6NG/gSfeF7Kza5qFjP88mODe1PTppu9iyPVf9VcO8TfZNpp5OQrIxir6aVb1v
 rCGZPJgLseqvDYTodr+ur/hbC7UzrqDF5r7JaCWxZ3YW5mDjI8cK7xDhsqCASyQapMxYjUaUk
 fjDnfCJV1vt3PJ4JoQ6vjCVtdLiGZro9mbWVfhBP9tbFjQE5WgA6z4SO+bRI4lQkTUS/ag8/z
 fErwdIrzhVZUygwxo6pyEp0Dw3000QJKXx4TLp/goRFZKfIQxqBAfQsbz65FPgg46PHE1Cynv
 gkZxDMSmTGq9TZTjqYPkzNj9sws6AWValFkxNne0943UQxrs3JZJrosl12tH6s5QPoFKeZOQa
 1yVoD843NIq9HhcKR+F4V/8xJO8BBqI60nGIyiD9LndcohYmwTh2dt6FAKIXDosjFVso=
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--FhKEmooEvEIF99rkk73qp68oQvpONKJwT
Content-Type: multipart/mixed; boundary="Xd8BWiTr6skb8Kc16LiltnVVW5Ibh0xHv"
From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= <clement.pit@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Message-ID: <eb62ecd8-89a0-b937-f923-042a906ae2c9@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file
 correctly
References: <matrix.87sjymg2pz.fsf@HIDDEN>
 <m2twepol81.fsf@HIDDEN>
In-Reply-To: <m2twepol81.fsf@HIDDEN>

--Xd8BWiTr6skb8Kc16LiltnVVW5Ibh0xHv
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 2016-08-12 15:12, Alan Third wrote:
> Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:
>=20
>> I describe the problem from 'emacs -Q':
>> scheme-mode.el isn't able to correctly parse the file:
>> racket-5.0.2/collects/drracket/tool-lib.rkt
>> When I open the file, go to position (79,0)
>> and execute `forward-sexp' I get
>> Scan error: "Unbalanced parentheses", 2852, 65105
>>
>> The expected behaviour is for the point to be moved at the end
>> of the file behind the last closing parenthesis to position (1663,85).=

>> When I move the point at the end of the file behind the last closing
>> parenthesis and do `backward-sexp' the point is moved to line
>> the point is moved to position (152,19) instead to (79,0), where
>> the next character is an opening curly brace.
>=20
> There are lines of the form:
>=20
>     @item{@racket[error-print-width] is set to 250;}
>=20
> that appear to break things, because scheme-mode sees that closing curl=
y
> bracket as a comment. This syntax looks like it=E2=80=99s Racket specif=
ic.

I think this isn't written in "core" Racket; it's Scribble, a dialect of =
Racket that's pretty remote from Scheme. IOW, it's not a trivial fix.

Cl=C3=A9ment.


--Xd8BWiTr6skb8Kc16LiltnVVW5Ibh0xHv--

--FhKEmooEvEIF99rkk73qp68oQvpONKJwT
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJXrjOfAAoJEPqg+cTm90wjnAkQAINf2FjJGJ/eKXAYV2Cfaxta
cOFVhNHG5sF6Y27WtCcUn1m/8zFf5irNNi0qpMxiYJiNPxN1/IFzMxtwGRldqNxO
9H2gnlfFIbRex+IwlQSI3E3jS2LU/VQj9HSWFnOBT+bJc3UdkMGml1l74H2tQNDb
U461NpxFQpxOZclq0f4f2bFA0wSv10fy02vFkGDQ0TbDhfIzxdV5BZkZzanfCYhv
G/I3bk8nY2lxyqyQInpmIeMgwUOXoonJoc9UWIpVRFhYVtXHdeHuwD+eOilyXooC
qtqElUA9a3OFT3eEDm+yRTh8y31ussevb+fJCgJeIA1phOpIJ081JO33aZlNHHy5
PNW07kSHNLUWHwk+6SCaL4W0LGkYoU5f7+HjCPo+JXkZ3z/FcVUap1AqHExgcFsu
7jfge6Mxtey4vXD0aV4SQ8XCJ3p3Ery4wfBUmmjtkCF0GCf00s0baQtsW1wa6UVK
PNUF+jzwl9SQwrazuTssTOnFJ+2QhPZLvZYPnOmYEo7Kfajuzt+MD7e6HIyCRFP+
808ow5kjZroELXhQZ/xpYLQCoE+YzG/rv4FBOI1ISp+8XtvIFAzdMD9SH8GyD59t
LzIPYfI3rWzvB0HXrZxxLobyU9aooZ1wWDY8qkJtaaz4llOXeMjH1o1Y9Cqc4jqY
6gZvbTcuccjrxpg9kXzk
=6K7C
-----END PGP SIGNATURE-----

--FhKEmooEvEIF99rkk73qp68oQvpONKJwT--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at 7498 <at> debbugs.gnu.org:


Received: (at 7498) by debbugs.gnu.org; 12 Aug 2016 19:12:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Aug 12 15:12:23 2016
Received: from localhost ([127.0.0.1]:55432 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bYHsV-0000Bz-MB
	for submit <at> debbugs.gnu.org; Fri, 12 Aug 2016 15:12:23 -0400
Received: from mail-wm0-f45.google.com ([74.125.82.45]:36721)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <athird@HIDDEN>) id 1bYHsT-0000Bl-WF
 for 7498 <at> debbugs.gnu.org; Fri, 12 Aug 2016 15:12:22 -0400
Received: by mail-wm0-f45.google.com with SMTP id q128so44149176wma.1
 for <7498 <at> debbugs.gnu.org>; Fri, 12 Aug 2016 12:12:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=googlemail.com; s=20120113;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version:content-transfer-encoding;
 bh=ryhX+TBFwy+a2VgiEXtVB4HIQlE9g0JBWP9SwQxc+yo=;
 b=OUsC7Cq9Ix5yN/byIqur444qQ9c+ZrNz/riYK0g9PqoPGZjowECr9+GzwMxTTSjac8
 Lajgs4dVRF5eFfrO4VsOeCLEZBbfs0FBXhwUG26JAywzLVCSw272MJgPuxTHvz8uFgxB
 Q+OEd6gDbatTlydb01EN8cEP6G3feadr/6/nY3emSiSbHZ2sWuflw9I3+ChyIsNKOxgb
 za0dXLHhvIhvkLTXazQp0CNGfqvCXrcXt9YqyMKnW37EacdB6J2+QTdNoW2BadkGOdi2
 EEdaDbXbYIeylIAoLrTDap5rcJoiXcLyLOfI2dafXna6xQtvvqXewu/zJ3KxszoPZofr
 JvKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version
 :content-transfer-encoding;
 bh=ryhX+TBFwy+a2VgiEXtVB4HIQlE9g0JBWP9SwQxc+yo=;
 b=l9Tb9HV1+GntsehX/OJ7ZyFp/1n4WNznlyT4AocqW7q6yOC5x2suXZUlRiZJo7o8Ok
 /rQyUihNTxMZdBeQGLO69Mk3KVbwRZCiBPEJBJS8AmS8Vi8o7d+1ppvqnC2Y919Q6ik7
 yhFkqcGYwszE4cZHgSCSzWUpXs6Zo3W5aq9yyjacElLGCDU5tTwS9SbfN7LS4MGKOw7Y
 4Ts1fwC4gKBrFx4tVeq7IRo2bzOR2f0rGf7ySlL/TS5YCUJ0+4zA9Uw543YMIsPCyH4K
 zHOeZhBI+3Uos1DWqubpxdLL2u9WKbM2327lRYe19Jn0Jg9ElYlWjO2pBUPwjufABfPb
 WPmQ==
X-Gm-Message-State: AEkooushAr3R9I3AMl4kSLHvEyXikPCY+ttD1vLSYTMKdyvwmd8bG89ZxPcWTi7ENHgnOg==
X-Received: by 10.28.144.5 with SMTP id s5mr398132wmd.39.1471029136422;
 Fri, 12 Aug 2016 12:12:16 -0700 (PDT)
Received: from breton.holly.idiocy.org
 (ip6-2001-08b0-03f8-8129-c9b0-c9dd-8aa4-da55.holly.idiocy.org.
 [2001:8b0:3f8:8129:c9b0:c9dd:8aa4:da55])
 by smtp.gmail.com with ESMTPSA id h7sm8780855wjd.17.2016.08.12.12.12.15
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 12 Aug 2016 12:12:15 -0700 (PDT)
From: Alan Third <alan@HIDDEN>
To: Alexander Haeckel <alexanderhaeckel@HIDDEN>
Subject: Re: bug#7498: 23.2; scheme-mode.el doesn't parse racket file correctly
References: <matrix.87sjymg2pz.fsf@HIDDEN>
Date: Fri, 12 Aug 2016 20:12:14 +0100
In-Reply-To: <matrix.87sjymg2pz.fsf@HIDDEN> (Alexander Haeckel's
 message of "Sat, 27 Nov 2010 17:18:00 +0100")
Message-ID: <m2twepol81.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (darwin)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 7498
Cc: 7498 <at> debbugs.gnu.org, alexander.haeckel@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

Alexander Haeckel <alexanderhaeckel@HIDDEN> writes:

> I describe the problem from 'emacs -Q':
> scheme-mode.el isn't able to correctly parse the file:
> racket-5.0.2/collects/drracket/tool-lib.rkt
> When I open the file, go to position (79,0)
> and execute `forward-sexp' I get
> Scan error: "Unbalanced parentheses", 2852, 65105
>
> The expected behaviour is for the point to be moved at the end
> of the file behind the last closing parenthesis to position (1663,85).
> When I move the point at the end of the file behind the last closing
> parenthesis and do `backward-sexp' the point is moved to line
> the point is moved to position (152,19) instead to (79,0), where
> the next character is an opening curly brace.

There are lines of the form:

    @item{@racket[error-print-width] is set to 250;}

that appear to break things, because scheme-mode sees that closing curly
bracket as a comment. This syntax looks like it=E2=80=99s Racket specific.

My elisp skills aren=E2=80=99t good enough to tell if this is fixable.
--=20
Alan Third




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 27 Nov 2010 16:14:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 27 11:14:16 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1PMNPh-00021B-Et
	for submit <at> debbugs.gnu.org; Sat, 27 Nov 2010 11:14:16 -0500
Received: from eggs.gnu.org ([140.186.70.92])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <alexanderhaeckel@HIDDEN>) id 1PMNOd-0001zT-EY
	for submit <at> debbugs.gnu.org; Sat, 27 Nov 2010 11:13:21 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <alexanderhaeckel@HIDDEN>) id 1PMNTn-0000GY-Dy
	for submit <at> debbugs.gnu.org; Sat, 27 Nov 2010 11:18:36 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD,
	T_TVD_MIME_NO_HEADERS autolearn=unavailable version=3.3.1
Received: from lists.gnu.org ([199.232.76.165]:44767)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <alexanderhaeckel@HIDDEN>) id 1PMNTm-0000GS-Rm
	for submit <at> debbugs.gnu.org; Sat, 27 Nov 2010 11:18:27 -0500
Received: from [140.186.70.92] (port=38952 helo=eggs.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1PMNTh-0006fF-6k
	for bug-gnu-emacs@HIDDEN; Sat, 27 Nov 2010 11:18:26 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <alexanderhaeckel@HIDDEN>) id 1PMNTc-0000DD-32
	for bug-gnu-emacs@HIDDEN; Sat, 27 Nov 2010 11:18:21 -0500
Received: from karen.lavabit.com ([72.249.41.33]:39141)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <alexanderhaeckel@HIDDEN>) id 1PMNTb-0000Cg-KW
	for bug-gnu-emacs@HIDDEN; Sat, 27 Nov 2010 11:18:16 -0500
Received: from c.earth.lavabit.com (c.earth.lavabit.com [192.168.111.12])
	by karen.lavabit.com (Postfix) with ESMTP id 1AD6411B839
	for <bug-gnu-emacs@HIDDEN>; Sat, 27 Nov 2010 10:18:14 -0600 (CST)
Received: from tentakel (p57B9A738.dip.t-dialin.net [87.185.167.56])
	by lavabit.com with ESMTP id UVK9LG44ZD2G
	for <bug-gnu-emacs@HIDDEN>; Sat, 27 Nov 2010 10:18:14 -0600
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=lavabit; d=lavabit.com;
	b=STmgYOD+h3FYz97G5rfiARKJyJyE4MMQq1l8tvFAG1hwdQEDPYa2t172tjHSJxeFlPA1liIGr0oCWyAT+5eJqa7YAk4VgZr6v1gK+iFykicWWBmePpI6RKhEwz87JHnXS5kUN09o+6GkmI9oNnVL7X5dBtMWcBIcsGIrYOwfY2Y=;
	h=From:To:Subject:Reply-To:Date:Message-ID:User-Agent:MIME-Version:Content-Type;
From: Alexander Haeckel <alexanderhaeckel@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 23.2; scheme-mode.el doesn't parse racket file correctly
Date: Sat, 27 Nov 2010 17:18:00 +0100
Message-ID: <matrix.87sjymg2pz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older,
	4)
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Sat, 27 Nov 2010 11:14:11 -0500
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
Reply-To: alexander.haeckel@HIDDEN
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/debbugs-submit>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org

--=-=-=

I describe the problem from 'emacs -Q':
scheme-mode.el isn't able to correctly parse the file:
racket-5.0.2/collects/drracket/tool-lib.rkt
When I open the file, go to position (79,0)
and execute `forward-sexp' I get
Scan error: "Unbalanced parentheses", 2852, 65105

The expected behaviour is for the point to be moved at the end
of the file behind the last closing parenthesis to position (1663,85).
When I move the point at the end of the file behind the last closing
parenthesis and do `backward-sexp' the point is moved to line
the point is moved to position (152,19) instead to (79,0), where
the next character is an opening curly brace.

This error occurs neither under fundamental-mode nor under lisp-mode.
I attach the problematic file to this report.

Thank you very much,
Alexander Haeckel


--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename=tool-lib.rkt
Content-Transfer-Encoding: quoted-printable
Content-Description: racket-5.0.2/collects/drracket/tool-lib.rkt

#lang at-exp racket/base

#|
This first time this is loaded, it loads all of DrRacket and invokes
the main unit, starting up DrRacket. After that, it just provides
all of the names in the tools library, for use defining keybindings
|#

(require racket/class
         racket/gui/base
         racket/unit=20
         racket/contract
         racket/class
=20=20=20=20=20=20=20=20=20
         ;; these have to be absolute requires for `include-extracted'
         ;; to work with this file.
         drracket/private/link
         drracket/private/drsig
         drracket/private/language-object-contract
=20=20=20=20=20=20=20=20=20
         framework
         framework/splash
=20=20=20=20=20=20=20=20=20
         mrlib/switchable-button
         scribble/srcdoc)

(require (for-syntax racket/base))

(require/doc drracket/private/ts ;; probably this also has to be an absolut=
e require
             racket/base scribble/manual)

(require/doc (for-label errortrace/errortrace-key
                        racket/pretty=20
                        mzlib/pconvert))

(define-values/invoke-unit/infer drracket@)
(provide-signature-elements drracket:tool-cm^) ;; provide all of the classe=
s & interfaces
(provide-signature-elements drscheme:tool-cm^) ;; provide the classes & int=
erfaces w/ drscheme: prefix

(provide drracket:unit:program-editor-mixin)
(define-syntax (drracket:unit:program-editor-mixin stx)
  (syntax-case stx ()
    [(_ a ...)
     #'((drracket:unit:get-program-editor-mixin) a ...)]
    [_ #'(drracket:unit:get-program-editor-mixin)]))

(language-object-abstraction drracket:language:object/c #t)

(define-syntax (provide/dr/doc stx)
  (let* ([munge-id
          (=CE=BB (stx)
            (datum->syntax
             stx
             (string->symbol
              (regexp-replace #rx"^drracket:" (symbol->string (syntax-e stx=
)) "drscheme:"))
             stx))]
         [defthings
           (syntax-case stx ()
             [(_ case ...)
              (map
               (=CE=BB (case)
                 (with-syntax ([(id ctc)
                                (syntax-case case (proc-doc/names proc-doc)
                                  [(proc-doc/names id ctc . stuff)
                                   (identifier? #'id)
                                   #'(id ctc)]
                                  [(proc-doc id ctc . stuff)
                                   (identifier? #'id)
                                   #'(id ctc)]
                                  [_
                                   (raise-syntax-error 'provide/dr/doc "unk=
nown thing" case)])])
                   (with-syntax ([mid (munge-id #'id)])
                     #'(thing-doc mid ctc ("This is provided for backwards =
compatibility; new code should use " (scheme id) " instead.")))))
               (syntax->list #'(case ...)))])])
    (syntax-case stx ()
      [(_  rst ...)
       #`(provide/doc #,@defthings rst ...)])))

(provide/dr/doc
=20
 (proc-doc/names
  drracket:module-language-tools:add-opt-out-toolbar-button
  (-> (-> (is-a?/c top-level-window<%>)
          (is-a?/c area-container<%>)=20
          (is-a?/c switchable-button%))
      symbol?
      void?)
  (make-button id)
  @{Call this function to add another button to DrRacket's toolbar. When bu=
ttons are added this way,
    DrRacket monitors the @tt{#lang} line at the top of the file; when it c=
hanges DrRacket queries
    the language to see if this button should be included.
    These buttons are ``opt out'', meaning that if the language doesn't exp=
licitly ask to not
    have this button (or all such buttons), the button will appear.
=20=20=20=20
    See @racket[read-language] for more details on how language's specify h=
ow to opt out.
    DrRacket will invoke the @tt{get-info} proc from @racket[read-language]=
 with
    @indexed-scheme['drscheme:opt-out-toolbar-buttons]. If the result is a =
list of symbols, the
    listed symbols are opted out. If the result is @racket[#f], all buttons=
 are opted
    out. The default is the empty list, meaning that all opt-out buttons ap=
pear.
    })
=20
 (proc-doc/names
  drracket:module-language:add-module-language
  (-> any)
  ()
  @{Adds the module language to DrRacket. This is called during DrRacket's =
startup.})
=20
 (proc-doc/names
  drracket:module-language:module-language-put-file-mixin
  (-> (implementation?/c text:basic<%>) (implementation?/c text:basic<%>))
  (super%)
  @{Extends @racket[super%] by overriding the @method[editor<%> put-file] m=
ethod
    to use a default name from the buffer, if the buffer contains something=
 like
    @tt{(module name ...)}.})
=20=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;                        ;=20=20
 ;                        ;=20=20
 ;                        ;=20=20
 ;    ;;;  ;     ; ;;;    ;=20=20
 ;   ;   ;  ;   ; ;   ;   ;=20=20
 ;  ;    ;  ;   ;     ;   ;=20=20
 ;  ;;;;;;   ; ;   ;;;;   ;=20=20
 ;  ;        ; ;  ;   ;   ;=20=20
 ;   ;        ;   ;   ;   ;=20=20
 ;    ;;;;    ;    ;;;;;  ;=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
=20
=20
 (proc-doc/names
  drracket:eval:set-basic-parameters
  (-> (listof (is-a?/c snip-class%)) void?)
  (snipclasses)
  @{sets the parameters that are shared between the repl's
    initialization and @racket[drracket:eval:build-user-eventspace/custodia=
n]
=20=20=20=20
    Specifically, it sets these parameters:
    @itemize[
             @item{@racket[current-namespace] has been set to a newly
                    created empty namespace. This namespace has the followi=
ng modules=20
                    copied (with @racket[namespace-attach-module])
                    from DrRacket's original namespace:
                    @itemize[@item{@racket['mzscheme]}@item{@racket['mred]}]
                    }
              @item{@racket[read-curly-brace-as-paren]
                     is @racket[#t]; }
              @item{@racket[read-square-bracket-as-paren]
                     is @racket[#t];}
              @item{@racket[error-print-width] is set to 250;}
              @item{@racket[current-ps-setup]
                     is set to a newly created
                     @racket[ps-setup%]
                     object;}
              @item{the @racket[exit-handler] is set to
                        a parameter that kills the user's custodian; and}
              @item{the snip-class-list, returned by
                    @racket[get-the-snip-class-list]
                    is initialized with all of the snipclasses in DrRacket'=
s eventspace's snip-class-list.}]})
=20
 (proc-doc/names
  drracket:eval:get-snip-classes
  (-> (listof (is-a?/c snip-class%)))
  ()
  @{Returns a list of all of the snipclasses in the current eventspace.})
=20
 (proc-doc/names
  drracket:eval:expand-program
  (-> (or/c port? drracket:language:text/pos?)
      drracket:language-configuration:language-settings?
      boolean?
      (-> void?)
      (-> void?)
      (-> (or/c eof-object? syntax? (cons/c string? any/c))
          (-> any)
          any)
      void?)
  (input language-settings eval-compile-time-part? init kill-termination it=
er)
=20=20
  @{Use this function to expand the contents of the definitions
    window for use with external program processing tools.
=20=20=20=20
    This function uses
    @racket[drracket:eval:build-user-eventspace/custodian]
    to build the user's environment.
    The arguments @racket[language-settings], @racket[init], and
    @racket[kill-termination] are passed to
    @racket[drracket:eval:build-user-eventspace/custodian].
=20=20=20=20
    The @racket[input] argument specifies the source of the program.
=20=20=20=20
    The @racket[eval-compile-time-part?] argument indicates if
    @racket[expand]
    is called or if
    @racket[expand-top-level-with-compile-time-evals]
    is called when the program is expanded.
    Roughly speaking, if your tool will evaluate each expression
    itself by calling
    @racket[eval]
    then pass @racket[#f]. Otherwise, if your tool
    just processes the expanded program, be sure to pass
    @racket[#t].
=20=20=20=20
    This function calls
    @method[drracket:language:language<%> front-end/complete-program]
    to expand the program. Unlike when the @onscreen{Run} is clicked,
    however, it does not call=20
    @method[drracket:language:language<%> front-end/finished-complete-progr=
am].
=20=20=20=20
=20=20=20=20
    The first argument to @racket[iter] is the expanded program
    (represented as syntax) or eof.
    The @racket[iter] argument is called for each expression in the
    expanded program and once more with eof, unless an error is
    raised during expansion.
    It is called from the user's thread.
    If an exception is raised during expansion of the
    user's program, @racket[iter] is not called.
    Consider setting the exception-handler during @racket[init] to
    handle this situation.
=20=20=20=20
    The second argument to @racket[iter] is a thunk that
    continues expanding the rest of the contents of the
    definitions window. If the first argument to @racket[iter] was
    eof, this argument is just the primitive
    @racket[void].
=20=20=20=20
    See also
    @racket[drracket:eval:expand-program/multiple].})
=20
 (proc-doc/names
  drracket:eval:traverse-program/multiple
  (drracket:language-configuration:language-settings?
   (-> void?)
   (-> void?)
   . -> .
   ((or/c port? drracket:language:text/pos?)
    ((or/c eof-object? syntax? (cons/c string? any/c))
     (-> any)
     . -> .
     any)
    boolean?
    . -> .
    void?))
  (language-settings init kill-termination)
=20=20
  @{This function is similar to
    @racket[drracket:eval:expand-program/multiple]
    The only difference is that it does not
    expand the program in the editor; instead
    the processing function can decide how to
    expand the program.})
=20
 (proc-doc/names
  drracket:eval:expand-program/multiple
  (-> drracket:language-configuration:language-settings?
      boolean?
      (-> void?)
      (-> void?)
      (-> (or/c port? drracket:language:text/pos?)
          (-> (or/c eof-object? syntax? (cons/c string? any/c))
              (-> any)
              any)
          boolean?
          void?))
  (language-settings eval-compile-time-part? init kill-termination)
=20=20
  @{This function is just like
    @racket[drracket:eval:expand-program]
    except that it is curried and the second application
    can be used multiple times.
    Use this function if you want to initialize the user's
    thread (and namespace, etc) once but have program text
    that comes from multiple sources.
=20=20=20=20
    The extra boolean argument to the result function
    determines if
    @racket[drracket:language:language front-end/complete-program<%>]
    or
    @racket[drracket:language:language front-end/interaction<%>]
    is called.})
=20
 (proc-doc/names
  drracket:eval:build-user-eventspace/custodian
  (->* (drracket:language-configuration:language-settings?
        (-> void?)
        (-> void?))
       ()
       (values eventspace? custodian?))
  ((language-settings init kill-termination) ())
=20=20
  @{This function creates a custodian and an eventspace (on the
    new custodian) to expand the user's program. It does not
    kill this custodian, but it can safely be shutdown (with
    @racket[custodian-shutdown-all]) after the
    expansion is finished.
=20=20=20=20
    It initializes the
    user's eventspace's main thread with several parameters:
    @itemize[
             @item{ @racket[current-custodian] is set to a new custodian.
                    }@item{
                           In addition, it calls
                           @racket[drracket:eval:set-basic-parameters].
                           }]
=20=20=20=20
    The @racket[language-settings] argument is the current
    language and its settings. See
    @racket[drracket:language-configuration:language-settings]
    for details on that structure.
=20=20=20=20
    If the program is associated with a DrRacket
    frame, get the frame's language settings from the
    @method[drracket:unit:definitions-text<%> get-next-settings]
    method of=20
    @racket[drracket:unit:definitions-text<%>].  Also, the most recently ch=
osen language in
    the language dialog is saved via the framework's
    preferences. Apply
    @racket[preferences:get]
    to
    @racket[drracket:language-configuration:get-settings-preferences-symbol]
    for that @racket[language-settings].
=20=20=20=20
    The @racket[init] argument is called after the user's parameters
    are all set, but before the program is run. It is called on
    the user's thread. The
    @racket[current-directory] and
    @racket[current-load-relative-directory]
    parameters are not set, so if there are appropriate directories,
    the @racket[init] argument is a good place to set them.
=20=20=20=20
    The @racket[kill-termination] argument is called when the main thread of
    the eventspace terminates, no matter if the custodian was
    shutdown, or the thread was killed. This procedure is also
    called when the thread terminates normally. This procedure is
    called from a new, dedicated thread (@italic{i. e.}, not the thread
    created to do the expansion, nor the thread that
    @racket[drracket:eval:build-user-eventspace/custodian] was called from.=
)})
=20
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;       ;          ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
 ;       ;          ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
 ;       ;          ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
 ;    ;; ;    ;;;   ; ;;    ;   ;    ;; ;=20=20
 ;   ;  ;;   ;   ;  ;;  ;   ;   ;   ;  ;;=20=20
 ;  ;    ;  ;    ;  ;    ;  ;   ;  ;    ;=20=20
 ;  ;    ;  ;;;;;;  ;    ;  ;   ;  ;    ;=20=20
 ;  ;    ;  ;       ;    ;  ;   ;  ;    ;=20=20
 ;   ;  ;;   ;      ;;  ;   ;  ;;   ;  ;;=20=20
 ;    ;; ;    ;;;;  ; ;;     ;; ;    ;; ;=20=20
 ;                                      ;=20=20
 ;                                 ;    ;=20=20
 ;                                  ;;;;=20=20=20
=20
 (proc-doc/names
  drracket:debug:error-display-handler/stacktrace
  (->* (string? any/c)
       ((or/c false/c (listof srcloc?))
        #:definitions-text (or/c #f (is-a?/c drracket:unit:definitions-text=
<%>))
        #:interactions-text (or/c #f (is-a?/c drracket:rep:text<%>))
        )
       any/c)
  ((msg exn) ((stack #f)
              (defs #f)
              (ints #f)))
  @{Displays the error message represented by the string, adding
    embellishments like those that appears in the DrRacket REPL,
    specifically a clickable icon for the stack trace (if the srcloc locati=
on is not empty),
    and a clickable icon for the source of the error (read & syntax errors =
show their source
    locations and otherwise the first place in the stack trace is shown).
=20=20=20=20
    If @racket[stack] is false, then the stack traces embedded in the @rack=
et[exn] argument (if any) are used.
    Specifically, this function looks for a stacktrace via
    @racket[errortrace-key] in the continuation marks of @racket[exn] and @=
racket[continuation-mark-set->context].
=20=20=20=20
    If @racket[stack] is not false, that stack is added to the stacks alrea=
dy in the exception.
=20=20=20=20
    This should be called in the same eventspace and on the same thread as =
the error.})
=20
 (proc-doc/names
  drracket:debug:make-debug-error-display-handler
  (-> (-> string? (or/c any/c exn?) any)
      (-> string? (or/c any/c exn?) any))
=20=20
  (oedh)
=20=20
  @{This function implements an error-display-handler in terms
    of another error-display-handler.
=20=20=20=20
    See also Racket's
    @racket[error-display-handler]
    parameter.
=20=20=20=20
    If the current-error-port is the definitions window in
    DrRacket, this error handler inserts some debugging
    annotations, calls @racket[oedh], and then highlights the
    source location of the runtime error.
=20=20=20=20
    It looks for both stack trace information in the continuation
    marks both via the
    @schememodname[errortrace/errortrace-key]=20
    module and via=20
    @racket[continuation-mark-set->context].
=20=20=20=20
    })
=20
 (proc-doc/names
  drracket:debug:hide-backtrace-window
  (-> void?)
  ()
  @{Hides the backtrace window.})
=20
 (proc-doc/names
  drracket:debug:add-prefs-panel
  (-> void?)
  ()
  @{Adds the profiling preferences panel.})
=20
 (proc-doc/names
  drracket:debug:open-and-highlight-in-file
  (->* ((or/c srcloc? (listof srcloc?)))
       ((or/c #f (cons/c (=CE=BB (x) (and (weak-box? x)
                                     (let ([v (weak-box-value x)])
                                       (or (not v)
                                           (is-a?/c v editor<%>)))))
                         number?)))
       void?)
  ((debug-info)
   ((edition-pair #f)))
  @{This function opens a DrRacket to display
    @racket[debug-info]. Only the src the position
    and the span fields of the srcloc are considered.
=20=20=20=20
    The @racket[edition-pair] is used to determine if a
    warning message is shown when before opening the file.
    If the @racket[edition-pair] is not @racket[#f], it is compared
    with the result of @method[text:basic<%> get-edition-number]
    of the editor that is loaded to determine if the file has been
    edited since the source location was recorded. If so, it=20
    puts up a warning dialog message to that effect.})
=20
 (proc-doc/names
  drracket:debug:show-backtrace-window/edition-pairs
  (-> string?
      (listof srcloc?)
      (listof (or/c #f (cons/c (=CE=BB (x) (and (weak-box? x)
                                           (let ([v (weak-box-value x)])
                                             (or (not v)
                                                 (is-a?/c v editor<%>)))))
                               number?)))
      (or/c #f (is-a?/c drracket:unit:definitions-text<%>))
      (or/c #f (is-a?/c drracket:rep:text<%>))
      void?)
  (error-message dis editions-pairs defs ints)
  @{Shows the backtrace window you get when clicking on the bug in
    DrRacket's REPL.
=20=20=20=20
    The @racket[error-message] argument is the text of the error,
    @racket[dis] is the debug information, extracted from the
    continuation mark in the exception record, using
    @racket[errortrace-key].
=20=20=20=20
    The @racket[editions] argument indicates the editions of any editors
    that are open editing the files corresponding to the source locations
=20=20=20=20
    The @racket[defs] argument should be non-@racket[#f] if there are=20
    possibly stacktrace frames that contain unsaved versions of the=20
    definitions window from DrRacket. Similarly, the @racket[ints] argument
    should be non-@racket[#f] if there are possibly stacktrace frames that =
contain
    unsaved versions of the interactions window.
=20=20=20=20
    Use
    @racket[drracket:rep:current-rep] to get the rep during evaluation of a=
 program.
=20=20=20=20
    })
=20
 (proc-doc/names
  drracket:debug:show-backtrace-window
  (->* (string?
        (or/c exn?=20
              (listof srcloc?)
              (non-empty-listof (cons/c string? (listof srcloc?)))))
       ((or/c #f (is-a?/c drracket:rep:text<%>))
        (or/c #f (is-a?/c drracket:unit:definitions-text<%>)))
       void?)
  ((error-message dis)
   ((rep #f)
    (defs #f)))
  @{Shows the backtrace window you get when clicking on the bug in
    DrRacket's REPL.
=20=20=20=20
    This function simply calls @racket[drracket:debug:show-backtrace-window=
/edition-pairs],
    using @racket[drracket:debug:srcloc->edition/pair].
    })
=20
 (proc-doc/names
  drracket:debug:srcloc->edition/pair
  (-> srcloc?
      (or/c #f (is-a?/c drracket:rep:text<%>))
      (or/c #f (is-a?/c drracket:unit:definitions-text<%>))
      (or/c #f (cons/c (let ([weak-box-containing-an-editor?
                              (=CE=BB (x) (and (weak-box? x)
                                          (let ([v (weak-box-value x)])
                                            (or (not v)
                                                (is-a?/c v editor<%>)))))])
                         weak-box-containing-an-editor?)
                       number?)))
  (srcloc ints defs)
  @{Constructs a edition pair from a source location,
    returning the current edition of the editor editing
    the source location (if any).
=20=20=20=20
    The @racket[ints] and @racket[defs] arguments are used to map source lo=
cations,=20
    in the case that the source location corresponds to the definitions
    window (when it has not been saved) or the interactions window.
    })
=20
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;   ;;             ;;                  ;;;               ;;=20=20=20=20
 ;   ;;             ;;                   ;;               ;;=20=20=20=20
 ;   ;;             ;;                   ;;               ;;=20=20=20=20
 ;   ;;;;;;  ;;;;   ;;  ;;;;;         ;;;;;  ;;;;    ;;;; ;;  ;;
 ;   ;;  ;; ;;; ;;  ;;  ;;  ;;       ;; ;;; ;;; ;;  ;;  ; ;; ;=20=20
 ;   ;;  ;; ;;;;;;  ;;  ;;  ;;  ;;;;;;;  ;; ;;;;;;  ;;;;  ;;;;=20=20
 ;   ;;  ;; ;;      ;;  ;;  ;;  ;;;;;;;  ;; ;;      ;;;;  ;;;;;=20
 ;   ;;  ;; ;;;  ;  ;;  ;;  ;;       ;;  ;; ;;;  ; ;  ;;  ;; ;;=20
 ;   ;; ;;;  ;;;;   ;;  ;;;;;        ;;;;;;  ;;;;  ;;;;   ;; ;;;
 ;                      ;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                      ;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                      ;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
=20
 (proc-doc/names
  drracket:help-desk:help-desk
  (->* ()
       ((or/c #f string?)
        (or/c #f string? (list/c string? string?)))
       any)
  (()
   ((search-key #f)
    (search-context #f)))
  @{if @racket[search-key] is a string, calls @racket[perform-search] with
       @racket[search-key] and @racket[search-context].
=20=20=20=20=20=20=20
       Otherwise, calls @racket[send-main-page] with no arguments.})
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;                   ;=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;                       ;=20=20=20
 ;   ;   ;   ; ;;    ;  ;;;;=20
 ;   ;   ;   ;;  ;   ;   ;=20=20=20
 ;   ;   ;   ;   ;   ;   ;=20=20=20
 ;   ;   ;   ;   ;   ;   ;=20=20=20
 ;   ;   ;   ;   ;   ;   ;=20=20=20
 ;   ;  ;;   ;   ;   ;   ;=20=20=20
 ;    ;; ;   ;   ;   ;    ;;=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
=20
=20
 (proc-doc/names
  drracket:unit:get-program-editor-mixin
  (-> ((subclass?/c text%) . -> . (subclass?/c text%)))
  ()
  @{Returns a mixin that must be mixed in to any
    @racket[text%] object that might contain
    program text (and thus can be in the source
    field of some syntax object).
=20=20=20=20
    See also
    @racket[drracket:unit:add-to-program-editor-mixin].})
=20
 (proc-doc/names
  drracket:unit:add-to-program-editor-mixin
  (((subclass?/c text%) . -> . (subclass?/c text%)) . -> . void?)
  (mixin)
  @{@phase[1]
=20=20=20=20=20
     Adds @racket[mixin] to the result of
     @racket[drracket:unit:get-program-editor-mixin].})
=20
 (proc-doc/names
  drracket:unit:open-drscheme-window
  (case->
   (-> (is-a?/c drracket:unit:frame%))
   ((or/c string? false/c) . -> . (is-a?/c drracket:unit:frame%)))
  (() (filename))
=20=20
  @{Opens a DrRacket frame that displays=20
    @racket[filename],
    or nothing if @racket[filename] is @racket[#f] or not supplied.})
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                           ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
 ;                           ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
 ;                           ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
 ;   ; ;;  ;;     ;;;     ;; ;    ;;;    ;;;=20=20
 ;   ;;  ;;  ;   ;   ;   ;  ;;   ;   ;  ;=20=20=20=20=20
 ;   ;   ;   ;  ;     ; ;    ;  ;    ;  ;;=20=20=20=20
 ;   ;   ;   ;  ;     ; ;    ;  ;;;;;;   ;;=20=20=20
 ;   ;   ;   ;  ;     ; ;    ;  ;          ;=20=20
 ;   ;   ;   ;   ;   ;   ;  ;;   ;         ;=20=20
 ;   ;   ;   ;    ;;;     ;; ;    ;;;;  ;;;=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
=20
=20
 (proc-doc/names
  drracket:modes:add-mode
  (string?
   (or/c false/c (is-a?/c mode:surrogate-text<%>))
   ((is-a?/c drracket:rep:text%) number? . -> . boolean?)
   ((or/c false/c (listof string?)) . -> . boolean?)
   . -> .
   drracket:modes:mode?)
  (name surrogate repl-submit matches-language)
  @{Adds a mode to DrRacket. Returns a mode value
    that identifies the mode.
=20=20=20=20
    The first argument, @racket[name], is the name
    of the mode, used in DrRacket's GUI to allow
    the user to select this mode.
=20=20=20=20
    The @racket[surrogate] argument is set to the
    definitions text and the interactions text
    (via the
    @racket[mode:host-text set-surrogate<%>]
    method) whenever this mode is enabled.
=20=20=20=20
    The @racket[repl-submit] procedure is called
    whenever the user types a return in the interactions
    window. It is passed the interactions editor
    and the position where the last prompt occurs.
    If it=20
    returns @racket[#t], the text after the last
    prompt is treated as a program fragment and
    evaluated, according to the language settings.
    If it returns @racket[#f], the text is
    assumed to be an incomplete program fragment, and
    the keystroke is not treated specially.
=20=20=20=20
    The @racket[matches-language] predicate is called whenever
    the language changes. If it returns @racket[#t]
    this mode is installed. It is passed the list of strings
    that correspond to the names of the language in the
    language dialog.
=20=20=20=20
    Modes are tested in the opposite order that they are
    added. That is, the last mode to be added gets tested
    first when the filename changes or when the language
    changes.
=20=20=20=20
    See also
    @racket[drracket:modes:get-modes].})
=20
 (proc-doc/names
  drracket:modes:mode?
  (any/c . -> . boolean?)
  (val)
  @{Determines if @racket[val] is a mode.})
=20
 (proc-doc/names
  drracket:modes:get-modes
  (-> (listof drracket:modes:mode?))
  ()
  @{Returns all of the modes currently added to DrRacket.
=20=20=20=20
    See also
    @racket[drracket:modes:add-mode].})
=20
 (proc-doc/names
  drracket:modes:mode-name
  (drracket:modes:mode? . -> . string?)
  (mode)
  @{Extracts the name of the mode.
=20=20=20=20
    See also
    @racket[drracket:modes:add-mode].})
=20
 (proc-doc/names
  drracket:modes:mode-surrogate
  (drracket:modes:mode? . -> . (or/c false/c (is-a?/c mode:surrogate-text<%=
>)))
  (mode)
  @{Extracts the surrogate of the mode.
=20=20=20=20
    See also
    @racket[drracket:modes:add-mode].})
=20
 (proc-doc/names
  drracket:modes:mode-repl-submit
  (drracket:modes:mode? . -> . any)
  (mode)
  @{Extracts the repl submission predicate of the mode.
=20=20=20=20
    See also
    @racket[drracket:modes:add-mode].})
=20
 (proc-doc/names
  drracket:modes:mode-matches-language
  (drracket:modes:mode? . -> . ((or/c false/c (listof string?)) . -> . bool=
ean?))
  (mode)
  @{Extracts the language matching predicate of the mode.
=20=20=20=20
    See also
    @racket[drracket:modes:add-mode].})
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;   ; ;   ;;;   ; ;;=20=20=20
 ;   ;;   ;   ;  ;;  ;=20=20
 ;   ;   ;    ;  ;    ;=20
 ;   ;   ;;;;;;  ;    ;=20
 ;   ;   ;       ;    ;=20
 ;   ;    ;      ;;  ;=20=20
 ;   ;     ;;;;  ; ;;=20=20=20
 ;               ;=20=20=20=20=20=20
 ;               ;=20=20=20=20=20=20
 ;               ;=20=20=20=20=20=20
=20
=20
 (proc-doc/names
  drracket:rep:get-welcome-delta=20
  (-> (is-a?/c style-delta%))
  ()
  @{Returns a style delta that matches the style and color of the=20
    phrase ``Welcome to'' in the beginning of the interactions window.})
=20
 (proc-doc/names
  drracket:rep:get-dark-green-delta
  (-> (is-a?/c style-delta%))
  ()
  @{Returns a style delta that matches the style and color of the=20
    name of a language in the interactions window.})
=20
 (proc-doc/names
  drracket:rep:get-drs-bindings-keymap
  (-> (is-a?/c keymap%))
  ()
  @{Returns a keymap that binds various DrRacket-specific
    keybindings. This keymap is used in the definitions
    and interactions window.
=20=20=20=20
    Defaultly binds C-x;o to a function that switches
    the focus between the definitions and interactions
    windows. Also binds f5 to Execute and f1 to Help Desk.})
=20
 (proc-doc/names
  drracket:rep:current-rep
  (-> (or/c false/c (is-a?/c drracket:rep:text%)))
  ()
=20=20
  @{This is a parameter whose value should not be set by tools.
    It is initialized to the repl that controls this evaluation
    in the user's thread.
=20=20=20=20
    It only returns @racket[#f] if the program not running
    in the context of a repl (eg, the test suite window).})
=20
 (proc-doc/names
  drracket:rep:current-value-port
  (-> (or/c false/c port?))
  ()
  @{This is a parameter whose value is a port that
    prints in the REPL in blue. It is used to print
    the values of toplevel expressions in the REPL.
=20=20=20=20
    It is only initialized on the user's thread.})
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                          ;                                          ;=20=
=20
 ;                          ;                                          ;=20=
=20
 ;                  ;      ;                   ;                       ;=20=
=20
 ;    ;; ;    ;;;  ;;;;    ;     ;;;  ;     ; ;;;;   ;;;   ; ;;     ;; ;=20=
=20
 ;   ;  ;;   ;   ;  ;      ;    ;   ;  ;   ;   ;    ;   ;  ;;  ;   ;  ;;=20=
=20
 ;  ;    ;  ;    ;  ;      ;   ;    ;   ; ;    ;   ;    ;  ;   ;  ;    ;=20=
=20
 ;  ;    ;  ;;;;;;  ;     ;    ;;;;;;    ;     ;   ;;;;;;  ;   ;  ;    ;=20=
=20
 ;  ;    ;  ;       ;     ;    ;        ; ;    ;   ;       ;   ;  ;    ;=20=
=20
 ;   ;  ;;   ;      ;     ;     ;      ;   ;   ;    ;      ;   ;   ;  ;;=20=
=20
 ;    ;; ;    ;;;;   ;;  ;       ;;;; ;     ;   ;;   ;;;;  ;   ;    ;; ;=20=
=20
 ;       ;               ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;  ;    ;               ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;;;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
=20
=20
 (proc-doc/names
  drracket:get/extend:extend-tab
  (case->
   ((make-mixin-contract drracket:unit:tab<%>) . -> . void?)
   ((make-mixin-contract drracket:unit:tab<%>) boolean? . -> . void?))
  ((mixin) (mixin before?))
=20=20
  @{This class implements the tabs in DrRacket. One is created for each tab
    in a frame (each frame always has at least one tab, even if the tab bar=
 is not shown)
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#t].})
=20
 (proc-doc/names
  drracket:get/extend:extend-interactions-text
  (case->
   ((make-mixin-contract drracket:rep:text<%>) . -> . void?)
   ((make-mixin-contract drracket:rep:text<%>) boolean? . -> . void?))
  ((mixin) (mixin before?))
=20=20
  @{This text is used in the bottom window of DrRacket frames.
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#t].})
=20
 (proc-doc/names
  drracket:get/extend:get-interactions-text
  (-> (implementation?/c drracket:rep:text<%>))
  ()
=20=20
  @{Once this function is called,=20
    @racket[drracket:get/extend:extend-interactions-text]=20
    raises an error, disallowing any more extensions.})
=20
 (proc-doc/names
  drracket:get/extend:extend-definitions-text
  (case->
   ((make-mixin-contract drracket:unit:definitions-text<%>) . -> . void?)
   ((make-mixin-contract drracket:unit:definitions-text<%>) boolean? . -> .=
 void?))
  ((mixin) (mixin before?))
=20=20
  @{This text is used in the top window of DrRacket frames.
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#f].})
=20
 (proc-doc/names
  drracket:get/extend:get-definitions-text
  (-> (implementation?/c drracket:unit:definitions-text<%>))
  ()
=20=20
  @{Once this function is called,
    @racket[drracket:get/extend:extend-definitions-text]=20
    raises an error, disallowing any more extensions.})
=20
 (proc-doc/names
  drracket:get/extend:extend-interactions-canvas
  (case->
   ((make-mixin-contract drracket:unit:interactions-canvas%) . -> . void?)
   ((make-mixin-contract drracket:unit:interactions-canvas%) boolean? . -> =
 void?))
  ((mixin) (mixin before?))
=20=20
  @{This canvas is used in the bottom window of DrRacket frames.
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#f].})
=20
 (proc-doc/names
  drracket:get/extend:get-interactions-canvas
  (-> (subclass?/c drracket:unit:interactions-canvas%))
  ()
=20=20
  @{Once this function is called,=20
    @racket[drracket:get/extend:extend-interactions-canvas]
    raises an error, disallowing any more extensions.})
=20
 (proc-doc/names
  drracket:get/extend:extend-definitions-canvas
  (case->
   ((make-mixin-contract drracket:unit:definitions-canvas%) . -> . void?)
   ((make-mixin-contract drracket:unit:definitions-canvas%) boolean? . -> .=
 void?))
  ((mixin) (mixin before?))
=20=20
  @{This canvas is used in the top window of DrRacket frames.
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#f].})
=20
 (proc-doc/names
  drracket:get/extend:get-definitions-canvas
  (-> (subclass?/c drracket:unit:definitions-canvas%))
  ()
=20=20
  @{Once this function is called,=20
    @racket[drracket:get/extend:extend-definitions-canvas]
    raises an error, disallowing any more extensions.})
=20
 (proc-doc/names
  drracket:get/extend:extend-unit-frame
  (case->
   ((make-mixin-contract drracket:unit:frame%) . -> . void?)
   ((make-mixin-contract drracket:unit:frame%) boolean? . -> . void?))
  ((mixin) (mixin before?))
=20=20
  @{This is the frame that implements the main DrRacket window.
=20=20=20=20
    The argument, @racket[before], controls if the mixin is applied before =
or
    after already installed mixins.
    If unsupplied, this is the same as supplying @racket[#f].})
=20
 (proc-doc/names
  drracket:get/extend:get-unit-frame
  (-> (subclass?/c drracket:unit:frame%))
  ()
=20=20
  @{Once this function is called,=20
    @racket[drracket:get/extend:extend-unit-frame]
    raises an error, disallowing any more extensions.})
=20
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;    ;                       ;;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
 ;  ;;;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;  ;;;; ;;; ;;;;;;;    ;;;   ;;; ;;; ;;   ;; ;;;=20
 ;  ;;;; ;;;;;;;;;;;;  ;;;;;  ;;; ;;;;;;; ;;;;;;;=20
 ;  ;;;  ;;;  ;;  ;;; ;;;  ;; ;;; ;;; ;;; ;;; ;;;=20
 ;  ;;;  ;;;    ;;;;; ;;;     ;;; ;;; ;;; ;;; ;;;=20
 ;  ;;;  ;;;  ;;; ;;; ;;;  ;; ;;; ;;; ;;; ;;; ;;;=20
 ;  ;;;; ;;;  ;;; ;;;  ;;;;;  ;;; ;;; ;;; ;;;;;;;=20
 ;   ;;; ;;;   ;;;;;;   ;;;   ;;; ;;; ;;;  ;; ;;;=20
 ;                                            ;;;=20
 ;                                        ;;;;;;=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
=20
 (proc-doc/names
  drracket:tracing:annotate
  (-> syntax? syntax?)
  (stx)
  @{Call this function to add tracing annotations to the a fully-expanded
    expression. When the program runs, DrRacket will pop open the tracing
    window to display the trace.})
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;   ;;;    ; ;;     ;; ;   ;   ;   ;;;     ;; ;    ;;;=20=20
 ;   ;  ;   ;   ;;  ;   ;  ;;   ;   ;  ;   ;   ;  ;;   ;   ;=20
 ;   ;      ;   ;   ;  ;    ;   ;   ;      ;  ;    ;  ;    ;=20
 ;   ;   ;;;;   ;   ;  ;    ;   ;   ;   ;;;;  ;    ;  ;;;;;;=20
 ;   ;  ;   ;   ;   ;  ;    ;   ;   ;  ;   ;  ;    ;  ;=20=20=20=20=20=20
 ;   ;  ;   ;   ;   ;   ;  ;;   ;  ;;  ;   ;   ;  ;;   ;=20=20=20=20=20
 ;   ;   ;;;;;  ;   ;    ;; ;    ;; ;   ;;;;;   ;; ;    ;;;;=20
 ;                          ;                      ;=20=20=20=20=20=20=20=
=20=20
 ;                     ;    ;                 ;    ;=20=20=20=20=20=20=20=
=20=20
 ;                      ;;;;                   ;;;;=20=20=20=20=20=20=20=20=
=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                           ;;; ;                                    ;=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                          ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;                          ;                                    ;=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
 ;    ;;;    ;;;    ; ;;   ;;;;  ;    ;; ;   ;   ;   ; ;  ;;;   ;;;;  ;    =
;;;    ; ;;=20=20=20
 ;   ;   ;  ;   ;   ;;  ;   ;    ;   ;  ;;   ;   ;   ;;  ;   ;   ;    ;   ;=
   ;   ;;  ;=20=20
 ;  ;      ;     ;  ;   ;   ;    ;  ;    ;   ;   ;   ;       ;   ;    ;  ; =
    ;  ;   ;=20=20
 ;  ;      ;     ;  ;   ;   ;    ;  ;    ;   ;   ;   ;    ;;;;   ;    ;  ; =
    ;  ;   ;=20=20
 ;  ;      ;     ;  ;   ;   ;    ;  ;    ;   ;   ;   ;   ;   ;   ;    ;  ; =
    ;  ;   ;=20=20
 ;   ;   ;  ;   ;   ;   ;   ;    ;   ;  ;;   ;  ;;   ;   ;   ;   ;    ;   ;=
   ;   ;   ;=20=20
 ;    ;;;    ;;;    ;   ;   ;    ;    ;; ;    ;; ;   ;    ;;;;;   ;;  ;    =
;;;    ;   ;=20=20
 ;                                       ;=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20
 ;                                  ;    ;=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20
 ;                                   ;;;;=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20
=20
 (proc-doc/names
  drracket:language-configuration:get-languages
  (-> (listof (is-a?/c drracket:language:language<%>)))
  ()
  @{This can only be called after all of the tools initialization phases ha=
ve completed.
=20=20=20=20
    Returns the list of all of the languages installed in DrRacket.})
=20
 (proc-doc/names
  drracket:language-configuration:add-language
  ((and/c (is-a?/c drracket:language:language<%>) drracket:language:object/=
c)
   . -> . void?)
  (language)
=20=20
  @{@phase[2]
=20=20=20=20=20
     Adds @racket[language] to the languages offerend by DrRacket.})
=20
 (proc-doc/names
  drracket:language-configuration:get-settings-preferences-symbol
  (-> symbol?)
  ()
  @{Returns the symbol that is used to store the user's language
    settings. Use as an argument to either
    @racket[preferences:get]
    or
    @racket[preferences:set].})
=20
 (proc-doc/names
  drracket:language-configuration:language-settings
  ((or/c (is-a?/c drracket:language:language<%>) drracket:language:object/c)
   any/c
   . -> .
   drracket:language-configuration:language-settings?)
  (language settings)
=20=20
  @{This is the constructor for a record consisting of two
    elements, a language and its settings.=20
=20=20=20=20
    The settings is a language-specific record that holds a
    value describing a parameterization of the language.
=20=20=20=20
    It has two selectors,
    @racket[drracket:language-configuration:language-settings-language]
    and=20
    @racket[drracket:language-configuration:language-settings-settings], an=
d a predicate,
    @racket[drracket:language-configuration:language-settings?]})
=20
 #;
 (proc-doc/names
  drracket:language-configuration:make-language-settings
  ((or/c (is-a?/c drracket:language:language<%>) drracket:language:object/c)
   any/c
   . -> .
   drracket:language-configuration:language-settings?)
  (language settings)
=20=20
  @{This is an alias for @racket[drrracket:language-configuration:language-=
settings]})
=20
 (proc-doc/names
  drracket:language-configuration:language-settings-settings
  (-> drracket:language-configuration:language-settings?
      any/c)
  (ls)
  @{Extracts the settings field of a language-settings.})
=20
 (proc-doc/names
  drracket:language-configuration:language-settings-language
  (drracket:language-configuration:language-settings?
   . -> .
   (or/c (is-a?/c drracket:language:language<%>) drracket:language:object/c=
))
  (ls)
=20=20
  @{Extracts the language field of a language-settings.})
=20
 (proc-doc/names
  drracket:language-configuration:language-settings?
  (any/c . -> . boolean?)
  (val)
=20=20
  @{Determines if the argument is a language-settings or not.})
=20
 (proc-doc/names
  drracket:language-configuration:language-dialog
  (->* (boolean? drracket:language-configuration:language-settings?)
       ((or/c false/c (is-a?/c top-level-window<%>)))
       (or/c false/c drracket:language-configuration:language-settings?))
  ((show-welcome? language-settings-to-show)
   ((parent #t)))
  @{Opens the language configuration dialog.
    See also
    @racket[drracket:language-configuration:fill-language-dialog].
=20=20=20=20
    The @racket[show-welcome?] argument determines if
    if a ``Welcome to DrRacket'' message and some
    natural language buttons are shown.
=20=20=20=20
    The @racket[language-settings-to-show] argument
    must be some default language settings that the dialog
    is initialized to.
    If unsure of a default, the currently set language
    in the user's preferences can be obtained via:
    @schemeblock[
                 (preferences:get (drracket:language-configuration:get-sett=
ings-preferences-symbol))
                                                                           =
                         ]
=20=20=20=20
    The @racket[parent] argument is used as the parent
    to the dialog.
=20=20=20=20
    The result if @racket[#f] when the user cancells the dialog, and
    the selected language if they hit ok.})
=20
 (proc-doc/names
  drracket:language-configuration:fill-language-dialog
  (->*
   ((is-a?/c vertical-panel%)
    (is-a?/c area-container<%>)
    drracket:language-configuration:language-settings?)
   ((or/c false/c (is-a?/c top-level-window<%>))
    (-> symbol? void?))
   (values (-> (is-a?/c drracket:language:language<%>))
           (-> any/c)
           (-> any/c (is-a?/c mouse-event%) any)))
  ((panel button-panel language-setting)
   ((re-center #f)
    (ok-handler void)))
  @{This procedure accepts two parent panels and
    fills them with the contents of the language dialog.
    It is used to include language configuration controls
    in some larger context in another dialog.
=20=20=20=20
    The @racket[panel] argument is the main panel where the
    language controls will be placed.
    The function adds buttons to the @racket[button-panel]
    to revert a language to its default settings and to
    show the details of a language.
=20=20=20=20
    The @racket[language-setting] is the default
    language to show in the dialog.
=20=20=20=20
    The @racket[re-center] argument is used when the @onscreen{Show Details}
    button is clicked. If that argument is a @racket[top-level-window<%>],
    the @onscreen{Show Details} callback will recenter the window each time
    it is clicked. Otherwise, the argument is not used.
=20=20=20=20
    @racket[ok-handler] is a function that is in charge of interfacing the =
OK
    button. It should accept a symbol message: @racket['enable] and
    @racket['disable] to toggle the button, and @racket['execute] to run
    the desired operation. (The language selection dialog also uses an
    internal @racket['enable-sync] message.)
=20=20=20=20
    The first two results of the function return a language object
    and a settings for that language, as chosen by the user using the dialo=
g.
    The final function should be called when keystrokes are typed in the
    enclosing frame. It is used to implement the shortcuts that choose the
    two radio buttons in the language dialog.
    })
=20
 (proc-doc
  drracket:language:register-capability
  (->i ([s symbol?]
        [the-contract contract?]
        [default (the-contract) the-contract])
       ()
       [res void?])
  @{Registers a new capability with a default value for each language
    and a contract on the values the capability might have.
=20=20=20=20
    By default, these capabilities are registered as DrRacket starts up:
    @(let-syntax ([cap (syntax-rules ()
                         [(cap key contract default desc ...)
                          (item @racket['key : contract =3D default]
                                "--- " desc ...)])])
       (itemize
        @cap[drracket:check-syntax-button boolean? #t]{controls the visibli=
ty of the check syntax button}
        @cap[drracket:language-menu-title
             string?
             (string-constant scheme-menu-name)]{
                                                 controls the name of the m=
enu just to the right of the language
                                                 menu (defaultly named ``Ra=
cket'')}
        @cap[drscheme:define-popup
             (or/c #f
                   (list/c string? string? string?)
                   (cons/c string? string?))
             (list "(define" "(define ...)" "=CE=B4")]{
                                                  specifies the prefix that=
 the define popup should look for and what
                                                  label it should have, or =
@racket[#f] if it should not appear at all.
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
                                                  If the list of three stri=
ngs alternative is used, the first string is
                                                  the prefix that is looked=
 for when finding definitions. The second
                                                  and third strings are use=
d as the label of the control, in horizontal
                                                  and vertical mode, respec=
tively.
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
                                                  The pair of strings alter=
native is deprecated. If it is used,=20
                                                  the pair @racket[(cons a-=
str b-str)] is the same as @racket[(list a-str b-str "=CE=B4")].}
        @cap[drscheme:help-context-term (or/c false/c string?) #f]{
                                                                   specifie=
s a context query for documentation searches that are
                                                                   initiate=
d in this language, can be @racket[#f] (no change to the
                                                                   user's s=
etting) or a string to be used as a context query (note: the
                                                                   context =
is later maintained as a cookie, @racket[""] is different
                                                                   from @ra=
cket[#f] in that it clears the stored context)}
        @cap[drscheme:special:insert-fraction boolean? #t]{
                                                           determines if th=
e insert fraction menu item in the special menu is
                                                           visible}
        @cap[drscheme:special:insert-lambda boolean? #t]{
                                                         determines if the =
insert lambda menu item in the special menu is
                                                         visible}
        @cap[drscheme:special:insert-large-letters boolean? #t]{
                                                                determines =
if the insert large letters menu item in the special menu
                                                                is visible}
        @cap[drscheme:special:insert-image boolean? #t]{
                                                        determines if the i=
nsert image menu item in the special menu is
                                                        visible}
        @cap[drscheme:special:insert-comment-box boolean? #t]{
                                                              determines if=
 the insert comment box menu item in the special menu
                                                              is visible}
        @cap[drscheme:special:insert-gui-tool boolean? #t]{
                                                           determines if th=
e insert gui menu item in the special menu is
                                                           visible}
        @cap[drscheme:special:slideshow-menu-item boolean? #t]{
                                                               determines i=
f the insert pict box menu item in the special menu is
                                                               visible}
        @cap[drscheme:special:insert-text-box boolean? #t]{
                                                           determines if th=
e insert text box menu item in the special menu is
                                                           visible}
        @cap[drscheme:special:xml-menus boolean? #t]{
                                                     determines if the inse=
rt scheme box, insert scheme splice box, and
                                                     the insert xml box men=
u item in the special menu are visible}
        @cap[drscheme:autocomplete-words (listof string?) '()]{
                                                               determines t=
he list of words that are used when completing words in
                                                               this languag=
e}
        @cap[drscheme:tabify-menu-callback
             (or/c false/c (-> (is-a?/c text%) number? number? void?))
             (=CE=BB (t a b) (send t tabify-selection a b))]{
                                                        is used as the call=
back when the ``Reindent'' or ``Reindent All''
                                                        menu is selected. T=
he first argument is the editor, and the second
                                                        and third are a ran=
ge in the editor.}
                                                       ))})
=20
 (proc-doc/names
  drracket:language:capability-registered?=20
  (-> symbol? boolean?)
  (s)
  @{Indicates if
    @racket[drracket:language:register-capability]
    has been called with @racket[s].})
 (proc-doc
  drracket:language:get-capability-default
  (->i ([s (and/c symbol? drracket:language:capability-registered?)])
       ()
       [res (s) (drracket:language:get-capability-contract s)])
  @{Returns the default for a particular capability.})
 (proc-doc/names
  drracket:language:get-capability-contract
  (-> (and/c symbol? drracket:language:capability-registered?)
      contract?)
  (s)
  @{Returns the contract for a given capability, which was specified
    when @racket[drracket:language:register-capability] was called.})
=20
=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20
 ;   ;   ;;;    ; ;;     ;; ;   ;   ;   ;;;     ;; ;    ;;;=20=20
 ;   ;  ;   ;   ;;  ;   ;  ;;   ;   ;  ;   ;   ;  ;;   ;   ;=20
 ;   ;      ;   ;   ;  ;    ;   ;   ;      ;  ;    ;  ;    ;=20
 ;   ;   ;;;;   ;   ;  ;    ;   ;   ;   ;;;;  ;    ;  ;;;;;;=20
 ;   ;  ;   ;   ;   ;  ;    ;   ;   ;  ;   ;  ;    ;  ;=20=20=20=20=20=20
 ;   ;  ;   ;   ;   ;   ;  ;;   ;  ;;  ;   ;   ;  ;;   ;=20=20=20=20=20
 ;   ;   ;;;;;  ;   ;    ;; ;    ;; ;   ;;;;;   ;; ;    ;;;;=20
 ;                          ;                      ;=20=20=20=20=20=20=20=
=20=20
 ;                     ;    ;                 ;    ;=20=20=20=20=20=20=20=
=20=20
 ;                      ;;;;                   ;;;;=20=20=20=20=20=20=20=20=
=20=20
=20
=20
 (proc-doc/names
  drracket:language:add-snip-value
  (->* ((-> any/c boolean?)
        (-> any/c (is-a?/c snip%)))
       ((-> any/c))
       void?)
  ((test-value convert-value)
   ((setup-thunk void)))
  @{Registers a handler to convert values into snips as they are printed in=
 the REPL.
=20=20=20=20
    The @racket[test-snip] argument is called to determine if this handler =
can convert the value=20
    and the @racket[convert-value] argument is called to build a snip.=20
    The (optional) @racket[setup-thunk] is called just after the user's nam=
espace and other=20
    setings are built, but before any of the user's code is evaluated.
=20=20=20=20
    All three functions are called on the user's thread and with the user's=
 settings.})
=20
 (proc-doc/names
  drracket:language:extend-language-interface
  (-> interface?
      (make-mixin-contract drracket:language:language<%>)
      void?)
  (interface default-implementation)
=20=20
  @{@phase[1]
=20=20=20=20=20
     Each language added passed to
     @racket[drracket:language-configuration:add-language]
     must implement @racket[interface].=20
=20=20=20=20=20
     The @racket[default-implementation] is a mixin
     that provides a default implementation of=20
     @racket[interface]. Languages that are unaware of
     the specifics of @racket[extension] use
     @racket[default-implementation] via
     @racket[drracket:language:get-default-mixin].})
=20
 (proc-doc
  drracket:language:get-default-mixin
  (-> (make-mixin-contract drracket:language:language<%>))
=20=20
  @{@phase[2]
=20=20=20=20=20
     The result of this function is the composite of all of the=20
     @racket[default-implementation] arguments passed
     to
     @racket[drracket:language:extend-language-interface].})
=20
 (proc-doc/names
  drracket:language:get-language-extensions
  (-> (listof interface?))
  ()
  @{@phase[2]
=20=20=20=20=20
     Returns a list of the interfaces passed to
     @racket[drracket:language:extend-language-interface].})
=20
 (proc-doc/names
  drracket:language:put-executable
  ((is-a?/c top-level-window<%>)=20
   path?=20
   (or/c boolean? (symbols 'launcher 'standalone 'distribution))=20
   boolean?=20
   string?=20
   . -> . (or/c false/c path?))
  (parent program-filename mode mred? title)
  @{Calls the GRacket primitive
    @racket[put-file]
    with arguments appropriate for creating an executable
    from the file @racket[program-filename].=20
=20=20=20=20
    The arguments @racket[mred?] and @racket[mode] indicates
    what type of executable this should be (and the dialog
    may be slightly different on some platforms, depending
    on these arguments). For historical reasons, @racket[#f]
    is allowed for @racket[mode] as an alias for @racket['launcher], and
    @racket[#t] is allowed for @racket[mode] as an alias for @racket['stand=
-alone].
=20=20=20=20
    The @racket[title] argument is used as the title to the primitive
    @racket[put-file]
    or
    @racket[get-directory]
    primitive.})
=20
 (proc-doc/names
  drracket:language:create-executable-gui
  ((or/c false/c (is-a?/c top-level-window<%>))
   (or/c false/c string?)
   (or/c (=CE=BB (x) (eq? x #t)) (symbols 'launcher 'standalone 'distributi=
on))
   (or/c (=CE=BB (x) (eq? x #t)) (symbols 'mzscheme 'mred))
   . -> .
   (or/c false/c
         (list/c (symbols 'no-show 'launcher 'stand-alone 'distribution)
                 (symbols 'no-show 'mred 'mzscheme)
                 string?)))
  (parent program-name show-type show-base)
  @{Opens a dialog to prompt the user about their choice of executable.
    If @racket[show-type] is @racket[#t], the user is prompted about
    a choice of executable: stand-alone,
    launcher, or distribution; otherwise, the symbol determines the type.
    If @racket[show-base]
    is @racket[#t], the user is prompted about a choice of base
    binary: mzscheme or mred; otherwise the symbol determines the base.
=20=20=20=20
    The @racket[program-name] argument is used to construct the default
    executable name in a platform-specific manner.
=20=20=20=20
    The @racket[parent] argument is used for the parent of the dialog.
=20=20=20=20
    The result of this function is @racket[#f] if the user cancel's
    the dialog and a list of three items indicating what options
    they chose. If either @racket[show-type] or @racket[show-base]
    was not @racket[#t], the corresponding result will be @racket['no-show],
    otherwise it will indicate the user's choice.})
=20
 (proc-doc/names
  drracket:language:create-module-based-stand-alone-executable=20
  ((or/c path? string?)
   (or/c path? string?) any/c any/c any/c boolean? boolean?
   . -> .
   void?)
  (program-filename
   executable-filename
   module-language-spec
   transformer-module-language-spec
   init-code
   gui?
   use-copy?)
=20=20
  @{This procedure creates a stand-alone executable in the file
    @racket[executable-filename] that runs the program
    @racket[program-filename].=20
=20=20=20=20
    The arguments
    @racket[module-language-spec] and
    @racket[transformer-module-language-spec] specify the=20
    settings of the initial namespace, both the transformer
    portion and the regular portion. Both may be @racket[#f]
    to indicate there are no initial bindings.
=20=20=20=20
    The @racket[init-code] argument is an s-expression representing
    the code for a module. This module is expected to provide
    the identifer @racket[init-code], bound to a procedure of no
    arguments. That module is required and the @racket[init-code]
    procedure is executed to initialize language-specific
    settings before the code in @racket[program-filename] runs.
=20=20=20=20
    The @racket[gui?] argument indicates if a GRacket or Racket
    stand-alone executable is created.
=20=20=20=20
    The @racket[use-copy?] argument indicates if the initial
    namespace should be populated with
    @racket[namespace-require/copy] or
    @racket[namespace-require]. })
=20
 (proc-doc/names
  drracket:language:create-module-based-distribution
  ((or/c path? string?)
   (or/c path? string?) any/c any/c any/c boolean? boolean?
   . -> .
   void?)
  (program-filename
   distribution-filename
   module-language-spec
   transformer-module-language-spec
   init-code
   gui?
   use-copy?)
=20=20
  @{Like
    @racket[drracket:language:create-module-based-stand-alone-executable], =
but packages the stand-alone executable into a distribution.})
=20
 (proc-doc/names
  drracket:language:create-distribution-for-executable
  ((or/c path? string?)=20
   boolean?
   (-> path? void?)
   . -> .
   void?)
  (distribution-filename
   gui?
   make-executable)
=20=20
  @{Creates a distribution where the given @racket[make-executable] procedu=
re
                                           creates the stand-alone executab=
le to be distributed.=20
                                           The @racket[make-executable] pro=
cedure is given the name of the=20
                                           executable to create. The @racke=
t[gui?] argument is needed in case the
                                           executable's name (which @racket=
[drracket:language:create-distribution-for-executable]=20
                                           must generate) depends on the ty=
pe of executable. During the distribution-making=20
                                           process, a progress dialog is sh=
own to the user, and the user can click an=20
                                           @onscreen{Abort} button that sen=
ds a break to the current thread.})
=20
 (proc-doc/names
  drracket:language:create-module-based-launcher
  ((or/c path? string?) (or/c path? string?) any/c any/c any/c boolean? boo=
lean?
                        . -> .
                        void?)
  (program-filename
   executable-filename
   module-language-spec
   transformer-module-language-spec
   init-code
   gui?
   use-copy?)
=20=20
  @{This procedure is identical to=20
    @racket[drracket:language:create-module-based-stand-alone-executable], =
except that it creates a launcher instead of a
    stand-alone executable.})
=20
 (proc-doc/names
  drracket:language:simple-module-based-language-convert-value
  (-> any/c drracket:language:simple-settings? any)
  (value settings)
  @{The result can be either one or two values. The first result is
    the converted value. The second result is @racket[#t] if the converted
    value should be printed with @racket[write] (or @racket[pretty-write]),
    @racket[#f] if the converted result should be printed with
    @racket[print] (or @racket[pretty-print]); the default second
    result is @racket[#t].

    The default implementation of this method depends on the=20
    @racket[simple-settings-printing-style] field of @racket[settings].
    If it is @racket['print], the
    result is @racket[(values value #f)]. If it is @racket['write] or @rack=
et['trad-write],
    the result is just @racket[value]. Otherwise, the result is produce by=
=20
    adjusting the @racket[constructor-style-printing] and @racket[show-shar=
ing]=20
    parameters based on @racket[settings], setting @racket[current-print-co=
nvert-hook]
    to ignore snips, and then applying @racket[print-convert] to @racket[va=
lue].})
=20
 (proc-doc/names
  drracket:language:setup-printing-parameters
  (-> (-> any) drracket:language:simple-settings? (or/c number? 'infinity) =
any)
  (thunk settings width)
  @{Sets all of the @racket[pretty-print] and @racket[print-convert] parame=
ters
    either to the defaults to values based on @racket[settings]
    and then invokes @racket[thunk], returning what it returns.})
=20
 (proc-doc/names
  drracket:language:text/pos-text
  (drracket:language:text/pos? . -> . (is-a?/c text%))
  (text/pos)
=20=20
  @{Selects the @racket[text%] from a text/pos.})
=20
 (proc-doc/names
  drracket:language:text/pos-start
  (drracket:language:text/pos? . -> . number?)
  (text/pos)
=20=20
  @{Selects the starting position from a text/pos.})
=20
 (proc-doc/names
  drracket:language:text/pos-end
  (drracket:language:text/pos? . -> . number?)
  (text/pos)
=20=20
  @{Selects the ending position from a text/pos.})
=20
 (proc-doc/names
  drracket:language:text/pos?
  (any/c . -> . boolean?)
  (val)
=20=20
  @{Returns @racket[#t] if @racket[val] is a text/pos, and @racket[#f]
            otherwise.})
=20
 (proc-doc/names
  drracket:language:text/pos
  ((is-a?/c text%) number? number?
                   . -> .
                   drracket:language:text/pos?)
  (text start end)
=20=20
  @{Constructs a text/pos.})
=20
 (proc-doc/names
  drracket:language:make-text/pos
  ((is-a?/c text%) number? number?
                   . -> .
                   drracket:language:text/pos?)
  (text start end)
=20=20
  @{An alias for @racket[drracket:language:text/pos]})
=20
 (proc-doc/names
  drracket:language:simple-settings-case-sensitive=20
  (drracket:language:simple-settings? . -> . boolean?)
  (simple-settings)
=20=20
  @{Extracts the case-sensitive setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings-printing-style
  (drracket:language:simple-settings?
   . -> .
   (symbols 'constructor 'quasiquote 'write 'print))
  (simple-settings)
=20=20
  @{Extracts the printing-style setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings-fraction-style
  (drracket:language:simple-settings?
   . -> .
   (symbols 'mixed-fraction
            'mixed-fraction-e
            'repeating-decimal
            'repeating-decimal-e))
  (simple-settings)
=20=20
  @{Extracts the fraction-style setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings-show-sharing
  (drracket:language:simple-settings?
   . -> .
   boolean?)
  (simple-settings)
=20=20
  @{Extracts the show-sharing setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings-insert-newlines
  (drracket:language:simple-settings?
   . -> .
   boolean?)
  (simple-settings)
=20=20
  @{Extracts the insert-newline setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings-annotations
  (drracket:language:simple-settings?
   . -> .
   (symbols 'none 'debug 'debug/profile 'test-coverage))
  (simple-settings)
=20=20
  @{Extracts the debugging setting from a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings?
  (any/c . -> . boolean?)
  (val)
=20=20
  @{Determines if @racket[val] is a simple-settings.})
=20
 (proc-doc/names
  drracket:language:simple-settings
  (-> boolean?
      (symbols 'constructor 'quasiquote 'write 'trad-write 'print)
      (symbols 'mixed-fraction 'mixed-fraction-e 'repeating-decimal 'repeat=
ing-decimal-e)
      boolean?
      boolean?
      (symbols 'none 'debug 'debug/profile 'test-coverage)
      drracket:language:simple-settings?)
  (case-sensitive
   printing-style
   fraction-style
   show-sharing
   insert-newlines
   annotations)
=20=20
  @{Constructs a simple settings.})
=20
 (proc-doc/names
  drracket:language:make-simple-settings
  (-> boolean?
      (symbols 'constructor 'quasiquote 'write 'trad-write 'print)
      (symbols 'mixed-fraction 'mixed-fraction-e 'repeating-decimal 'repeat=
ing-decimal-e)
      boolean?
      boolean?
      (symbols 'none 'debug 'debug/profile 'test-coverage)
      drracket:language:simple-settings?)
  (case-sensitive
   printing-style
   fraction-style
   show-sharing
   insert-newlines
   annotations)
=20=20
  @{An alias for @racket[drracket:language:simple-settings].})
=20
 (proc-doc/names
  drracket:language:simple-settings->vector
  (drracket:language:simple-settings? . -> . vector?)
  (simple-settings)
=20=20
  @{Constructs a vector whose elements are the fields of @racket[simple-set=
tings].}))

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable










In GNU Emacs 23.2.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.12.12)
 of 2010-06-22 on tentakel
Windowing system distributor `The X.Org Foundation', version 11.0.10402000
configured using `configure  '--without-cedet' '--with-x''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: de_DE.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Scheme

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  yas/global-mode: t
  minibuffer-depth-indicate-mode: t
  icicle-mode: t
  show-paren-mode: t
  display-time-mode: t
  Info-breadcrumbs-in-mode-line-mode: t
  semantic-decoration-mode: t
  semantic-mru-bookmark-mode: t
  semantic-idle-completions-mode: t
  semantic-idle-summary-mode: t
  semantic-idle-scheduler-mode: t
  senator-minor-mode: t
  semantic-stickyfunc-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: (only . t)
  auto-fill-mode: t

Recent input:
C-x C-f / u s r <tab> l o c <tab> <backspace> <backspace>=20
<backspace> <backspace> <backspace> <backspace> <backspace>=20
<backspace> <backspace> <backspace> <backspace> d o=20
n w <tab> <backspace> <backspace> w n <tab> s r <tab>=20
e m a <tab> <backspace> <backspace> <backspace> <backspace>=20
<backspace> <backspace> l i s <tab> <tab> r a <tab>=20
/ c o <tab> t o o l - <tab> <backspace> <backspace>=20
<backspace> <backspace> <backspace> d r r <tab> t o=20
o <tab> - <tab> <return> =C2=BC s c h e m e - m o d e <return>=20
=C2=BC g o t o - l i n e <return> 7 9 <return> M-> <up>=20
<right> <right> <right> <right> <right> C-M-b =C2=BC C-g=20
C-g C-g C-h f s c h e m e - m o d e <return> <down-mouse-1>=20
<mouse-movement> <drag-mouse-1> =C2=BC r e p o r <tab>=20
<return>

Recent messages:
Turning OFF Icicle mode...done
Turning ON Icicle mode...done
Computing completion candidates... [13 times]
Loading semanticdb-file...done [4 times]
Mark set [5 times]
Quit [2 times]
C-h (Type ? for further options)- [2 times]
Type C-x 1 to delete the help window, C-M-v to scroll help. [3 times]
Mark set
Computing completion candidates...

Load-path shadows:
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui hides /usr/loc=
al/share/emacs/site-lisp/predictive/completion-ui
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-dynamic hides =
/usr/local/share/emacs/site-lisp/predictive/completion-ui-dynamic
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-popup-frame hi=
des /usr/local/share/emacs/site-lisp/predictive/completion-ui-popup-frame
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-tooltip hides =
/usr/local/share/emacs/site-lisp/predictive/completion-ui-tooltip
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-echo hides /us=
r/local/share/emacs/site-lisp/predictive/completion-ui-echo
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-menu hides /us=
r/local/share/emacs/site-lisp/predictive/completion-ui-menu
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-sources hides =
/usr/local/share/emacs/site-lisp/predictive/completion-ui-sources
/usr/local/share/emacs/site-lisp/completion-ui/completion-ui-hotkeys hides =
/usr/local/share/emacs/site-lisp/predictive/completion-ui-hotkeys
/usr/local/share/emacs/site-lisp/yasnippet/current/yasnippet hides /usr/loc=
al/share/emacs/site-lisp/yasnippet/yasnippet-0.5.10/yasnippet
/usr/local/share/emacs/site-lisp/cedet/current/speedbar/sb-image hides /usr=
/local/share/emacs/23.2/lisp/sb-image
/usr/local/share/emacs/site-lisp/cedet/current/common/ezimage hides /usr/lo=
cal/share/emacs/23.2/lisp/ezimage
/usr/local/share/emacs/site-lisp/cedet/current/speedbar/dframe hides /usr/l=
ocal/share/emacs/23.2/lisp/dframe
/usr/local/share/emacs/site-lisp/cedet/current/speedbar/speedbar hides /usr=
/local/share/emacs/23.2/lisp/speedbar
/usr/local/share/emacs/site-lisp/scheme hides /usr/local/share/emacs/23.2/l=
isp/progmodes/scheme
/usr/local/share/emacs/site-lisp/cc-mode/cc-langs hides /usr/local/share/em=
acs/23.2/lisp/progmodes/cc-langs
/usr/local/share/emacs/site-lisp/cc-mode/cc-defs hides /usr/local/share/ema=
cs/23.2/lisp/progmodes/cc-defs
/usr/local/share/emacs/site-lisp/cc-mode/cc-vars hides /usr/local/share/ema=
cs/23.2/lisp/progmodes/cc-vars
/usr/local/share/emacs/site-lisp/cc-mode/cc-bytecomp hides /usr/local/share=
/emacs/23.2/lisp/progmodes/cc-bytecomp
/usr/local/share/emacs/site-lisp/cc-mode/cc-cmds hides /usr/local/share/ema=
cs/23.2/lisp/progmodes/cc-cmds
/usr/local/share/emacs/site-lisp/cc-mode/cc-styles hides /usr/local/share/e=
macs/23.2/lisp/progmodes/cc-styles
/usr/local/share/emacs/site-lisp/cc-mode/cc-fonts hides /usr/local/share/em=
acs/23.2/lisp/progmodes/cc-fonts
/usr/local/share/emacs/site-lisp/cc-mode/cc-mode hides /usr/local/share/ema=
cs/23.2/lisp/progmodes/cc-mode
/usr/local/share/emacs/site-lisp/cc-mode/cc-menus hides /usr/local/share/em=
acs/23.2/lisp/progmodes/cc-menus
/usr/local/share/emacs/site-lisp/cc-mode/cc-engine hides /usr/local/share/e=
macs/23.2/lisp/progmodes/cc-engine
/usr/local/share/emacs/site-lisp/cc-mode/cc-align hides /usr/local/share/em=
acs/23.2/lisp/progmodes/cc-align
/usr/local/share/emacs/site-lisp/cc-mode/cc-awk hides /usr/local/share/emac=
s/23.2/lisp/progmodes/cc-awk
/usr/local/share/emacs/site-lisp/cperl-mode hides /usr/local/share/emacs/23=
2/lisp/progmodes/cperl-mode
/usr/local/share/emacs/site-lisp/cc-mode/cc-compat hides /usr/local/share/e=
macs/23.2/lisp/progmodes/cc-compat
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-comp hides /usr/=
local/share/emacs/23.2/lisp/emacs-lisp/eieio-comp
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-opt hides /usr/l=
ocal/share/emacs/23.2/lisp/emacs-lisp/eieio-opt
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-speedbar hides /=
usr/local/share/emacs/23.2/lisp/emacs-lisp/eieio-speedbar
/usr/local/share/emacs/site-lisp/predictive/avl-tree hides /usr/local/share=
/emacs/23.2/lisp/emacs-lisp/avl-tree
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-datadebug hides =
/usr/local/share/emacs/23.2/lisp/emacs-lisp/eieio-datadebug
/usr/local/share/emacs/site-lisp/dvc/contrib/ewoc hides /usr/local/share/em=
acs/23.2/lisp/emacs-lisp/ewoc
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-base hides /usr/=
local/share/emacs/23.2/lisp/emacs-lisp/eieio-base
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio-custom hides /us=
r/local/share/emacs/23.2/lisp/emacs-lisp/eieio-custom
/usr/local/share/emacs/site-lisp/cedet/current/eieio/eieio hides /usr/local=
/share/emacs/23.2/lisp/emacs-lisp/eieio
/usr/local/share/emacs/site-lisp/cedet/current/eieio/chart hides /usr/local=
/share/emacs/23.2/lisp/emacs-lisp/chart

Features:
(shadow sort mail-extr message sendmail ecomplete mml mml-sec mm-decode
mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp
ietf-drums mailabbrev nnheader mm-util mail-prsvr gmm-utils mailheader
canlock sha1 hex-util hashcash mail-utils emacsbug
semantic-analyze-complete ede-linux ede-emacs ede-cpp-root
semantic-complete semanticdb-typecache semantic-dep semantic-tag-file
semanticdb-file cedet-files semantic-scm semantic-scm-by scheme bzr-core
tla-core tla-autoconf tla-defs dvc-log vc vc-dispatcher dvc-unified
dvc-tips add-log diff-mode ediff xdarcs-core xgit-core xhg-core
xmtn-minimal face-remap tramp-imap tramp-gw tramp-fish tramp-smb
tramp-cache tramp-ftp tramp-cmds tramp auth-source gnus-util netrc
time-date shell password-cache format-spec tramp-compat trampver
semantic-el semantic-bovine bovine-debug semantic-debug paredit
yasnippet dvc-autoloads dvc-core dvc-lisp dvc-buffers dvc-ui
dvc-register dvc-utils dvc-emacs ewoc dvc-defs dvc-site mb-depth
two-column bookmark pp icicles icicles-mode dired+ dired-x ediff-merg
ediff-diff ediff-wind ediff-mult ediff-help ediff-init ediff-util
dired-aux dired icicles-cmd2 icicles-cmd1 cus-edit cus-start cus-load
icicles-mcmd help-mode view icicles-mac icicles-fn wid-edit+ icicles-var
icicles-opt ffap icicles-face hexrgb filesets mailcrypt rfc822 w3m-load
matlab-load jka-compr paren tex-site malabar-mode malabar-refactor
malabar-semanticdb eieio-opt semanticdb-search malabar-test
malabar-jump-to-project malabar-codegen malabar-misc malabar-import
malabar-reflection arc-mode archive-mode malabar-project malabar-groovy
fringe-helper ansi-color malabar-util srecode-getset subword
malabar-annotations malabar-abbrevs skeleton malabar-variables compile
comint wisent-malabar-java-wy wisent-comp wisent-java semantic-java
semantic-doc wisent-java-wy semantic-ia semantic-find cc-subword cc-cmds
cc-engine cc-vars cc-defs bbdb-autoloads bbdb regexp-opt timezone time
easy-mmode info+ thingatpt+ thingatpt sb-info info srecode-mode
cogre-srecode semantic-edit srecode-template-mode srecode-template
srecode-template-wy semantic-wisent wisent srecode-map srecode-insert
srecode-args srecode-dictionary srecode-find srecode-ctxt
srecode-compile srecode-table semantic-decorate-include semanticdb-find
semanticdb-ref semantic-decorate-mode semantic-decorate pulse
semantic-mru-bookmark semanticdb-mode semantic-idle eldoc senator ring
warnings which-func semantic-imenu semantic-sb imenu cedet
cedet-contrib-load contrib-loaddefs cogre-load cogre-loaddefs
speedbar-load speedbar-loaddefs ede-load ede-loaddefs ede-speedbar
ede-files ede ede-base ede-auto eieio-speedbar semantic-ia-sb
semantic-analyze semantic-scope semantic-analyze-fcn semantic-sort
semanticdb-el semanticdb semantic-ctxt semantic-format
semantic-util-modes semantic-util semantic semantic-lex semantic-tag
working fame speedbar sb-image ezimage dframe easymenu assoc
eieio-custom wid-edit ede-source eieio-base srecode-load srecode
srecode-loaddefs semantic-load semantic-fw semantic-loaddefs mode-local
find-func derived eieio-load eieio-loaddefs cedet-load cedet-compat
cedet-loaddefs eieio byte-opt bytecomp byte-compile inversion cl cl-19
uniquify advice help-fns advice-preload edmacro kmacro tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd font-setting
tool-bar dnd fontset image fringe lisp-mode register page menu-bar
rfn-eshadow timer select scroll-bar mldrag mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind font-render-setting gtk
x-toolkit x multi-tty emacs)

--=20
"I can't understand why people are frightened of new ideas.
 I'm frightened of the old ones.=E2=80=9D
 - John Cage

--=-=-=--





Acknowledgement sent to alexander.haeckel@HIDDEN:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs@HIDDEN:
bug#7498; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Thu, 21 Oct 2021 21:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.