From MAILER-DAEMON Sun Jan 01 00:39:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNYrY-00017b-NC for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 00:39:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNYrX-00017V-Eo for emacs-devel@gnu.org; Sun, 01 Jan 2017 00:39:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNYrW-0000ss-PK for emacs-devel@gnu.org; Sun, 01 Jan 2017 00:39:19 -0500 Received: from mail-wj0-x22f.google.com ([2a00:1450:400c:c01::22f]:36382) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cNYrV-0000pQ-51; Sun, 01 Jan 2017 00:39:17 -0500 Received: by mail-wj0-x22f.google.com with SMTP id c11so199805488wjx.3; Sat, 31 Dec 2016 21:39:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sLWRanDZIs++iLdrJsdKG1Bq4Gq4VYAyDFpaFpIt0nw=; b=TmtLJp17mkP6cDx4mx58VrXbPvLZ2+t1eeRnhE0G+H4ld7693/eoaETxsiNyeL0/A0 0VZe/XtAsWrO+Dkody0VK1OMc568o/nxSbx7fKkKp+h/Iuf9htNGZHVixq3XG6X73JL+ L3frc43UzB21twJ6yNKJyfP3TfKLytSxoDQJPWdzXe9XhIPCBS0SaFGMNdvd3K9tMBNP 5i4sKuShffgyMnag+fr1ft3LEB6CeV3BcVGZFjlD90FWCDGNhB9jAQZSjrikDuOyol7C cG8Tnu11+4FT/F4zcuELzeK513n4dxB7PViC2rjDJYkofu/CUfPYwy9fn09uwb5VNAD+ fKtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sLWRanDZIs++iLdrJsdKG1Bq4Gq4VYAyDFpaFpIt0nw=; b=Ig/jITWv4qZOtq17gqvQY6MZsX84tTErx1Bg9Zn/UOmOVr8bthqes8tRN6d7mCA5Jl n+FdrhfMboMR5XFYvVEtAcP9Ld0vOYR05GHxwCzq68nJtD34VFEWWP/LqDUSD3jb+DQs vYItB89Hv0TTgiqFuGAj5J2vHqdz9RBfUHYkO0xmCXFZMBddSm97UO4wfP0AMaPrk5cg x02JtorZcp9h0h1GQ5y83CBhVJtxUWry2YPK6UdEXtza/exqhREHeXvtERpI5+jwbfFz woBa0xuyhEO7LJFjSBUxUTKeyRfBj6MaSC8acNImU3NoPmlS1deBsyyaI6PqZ+HV/YPh 0T2w== X-Gm-Message-State: AIkVDXKyxX+wV6TA9afOScdMtKXoX3r74dLwwEU8lq8jvWrMASzVyg7V6XsF787l0qJQtt6o2glojRnYkcGLtw== X-Received: by 10.194.141.98 with SMTP id rn2mr45527465wjb.1.1483249155806; Sat, 31 Dec 2016 21:39:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.135.165 with HTTP; Sat, 31 Dec 2016 21:39:15 -0800 (PST) In-Reply-To: <87mvfbzrfa.fsf@elephly.net> References: <831tbxn5id.fsf@gnu.org> <87oaf1bvsb.fsf@wanadoo.es> <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87mvfbzrfa.fsf@elephly.net> From: =?UTF-8?Q?Elias_M=C3=A5rtenson?= Date: Sun, 1 Jan 2017 13:39:15 +0800 Message-ID: Subject: Re: official Emacs Docker image To: Ricardo Wurmus Cc: Richard Stallman , John Wiegley , emacs-devel Content-Type: multipart/alternative; boundary=089e0122ae9a0b9d48054501dbe0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 05:39:20 -0000 --089e0122ae9a0b9d48054501dbe0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 1 January 2017 at 06:04, Ricardo Wurmus wrote: > > Richard Stallman writes: > > > However, I don't see any ethical issue about making and distributing > > Docker images of Emacs as long as we get the details right: for > > instance, use an endorsed free GNU/Linux distro. > > We could use Guix to generate the image contents from scratch, i.e. we > wouldn=E2=80=99t even have to use a =E2=80=9Cbase image=E2=80=9D (usually= a minimal GNU/Linux > system). The idea is to export the package closure for the =E2=80=9Cemac= s=E2=80=9D > package from the Guix store (this includes all runtime dependencies) and > wrap up the files in a plain docker image. > Arguably there should be a fully free distribution that could be the base for more than just Emacs. --089e0122ae9a0b9d48054501dbe0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 1= January 2017 at 06:04, Ricardo Wurmus <rekado@elephly.net>= wrote:

Richard Stallman <rms@gnu.org> wri= tes:

> However, I don't see any ethical issue about making and distributi= ng
> Docker images of Emacs as long as we get the details right: for
> instance, use an endorsed free GNU/Linux distro.

We could use Guix to generate the image contents from scratch, i.e. = we
wouldn=E2=80=99t even have to use a =E2=80=9Cbase image=E2=80=9D (usually a= minimal GNU/Linux
system).=C2=A0 The idea is to export the package closure for the =E2=80=9Ce= macs=E2=80=9D
package from the Guix store (this includes all runtime dependencies) and wrap up the files in a plain docker image.

<= div>Arguably there should be a fully free distribution that could be the ba= se for more than just Emacs.
--089e0122ae9a0b9d48054501dbe0-- From MAILER-DAEMON Sun Jan 01 04:04:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNc3g-0007py-FR for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 04:04:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNc3d-0007pr-TZ for emacs-devel@gnu.org; Sun, 01 Jan 2017 04:04:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNc3d-0005Ih-4P for emacs-devel@gnu.org; Sun, 01 Jan 2017 04:04:01 -0500 Received: from sender-of-o52.zoho.com ([135.84.80.217]:21361) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cNc3Z-0005DK-1N; Sun, 01 Jan 2017 04:03:57 -0500 Received: from localhost (x4d0c817f.dyn.telefonica.de [77.12.129.127]) by mx.zohomail.com with SMTPS id 1483261433405477.0133119231783; Sun, 1 Jan 2017 01:03:53 -0800 (PST) References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87mvfbzrfa.fsf@elephly.net> User-agent: mu4e 0.9.18; emacs 25.1.1 From: Ricardo Wurmus To: Elias =?utf-8?Q?M=C3=A5rtenson?= Cc: Richard Stallman , John Wiegley , emacs-devel Subject: Re: official Emacs Docker image In-reply-to: Date: Sun, 01 Jan 2017 10:03:50 +0100 Message-ID: <87inpzyww9.fsf@elephly.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 135.84.80.217 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 09:04:03 -0000 Elias Mårtenson writes: > On 1 January 2017 at 06:04, Ricardo Wurmus wrote: > >> >> Richard Stallman writes: >> >> > However, I don't see any ethical issue about making and distributing >> > Docker images of Emacs as long as we get the details right: for >> > instance, use an endorsed free GNU/Linux distro. >> >> We could use Guix to generate the image contents from scratch, i.e. we >> wouldn’t even have to use a “base image” (usually a minimal GNU/Linux >> system). The idea is to export the package closure for the “emacs” >> package from the Guix store (this includes all runtime dependencies) and >> wrap up the files in a plain docker image. >> > > Arguably there should be a fully free distribution that could be the base > for more than just Emacs. GuixSD is a fully free GNU distribution and it comes with the tools that are needed to determine runtime dependencies that can then turned into a Docker image. Since Guix is a functional package manager and thus can account for the full closure of a package it doesn’t require a base image and can be the base itself. -- Ricardo GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC http://elephly.net From MAILER-DAEMON Sun Jan 01 05:15:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNdAV-0004gZ-1H for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 05:15:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59536) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNdAT-0004fY-9k for emacs-devel@gnu.org; Sun, 01 Jan 2017 05:15:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNdAS-0002Z1-AW for emacs-devel@gnu.org; Sun, 01 Jan 2017 05:15:09 -0500 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:35687) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cNdAP-0002Uz-By; Sun, 01 Jan 2017 05:15:05 -0500 Received: by mail-wm0-x22d.google.com with SMTP id a197so349177092wmd.0; Sun, 01 Jan 2017 02:15:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=1z0GKgUwS9iMJ1+35a5aU5jrYsjWYudV+nl2T0Z3GsY=; b=n8ItZTc6CUD2L1I3NHs7/kSzwjQye3+wMB8j1VrYQaPbFJ1pCZVRwYNWEi3vA9Vs1w giv99/gVffCcH/kjpjdT/ukT/KgYdj7edYYBVrUE9DqwGN+HkP7jJHV+p5ZimLTeUmUG ZySBAEc3utzJ0sFM+E9XWPAx6jV0ZJunPJuIdGXOlOpzKIEZUC25Nf2RoOU5e4MnHPfO pEwI0RmO/a0v8yH+XI/E1GJIIULUWmhy+AbW98bJPb56vn6FfnmIGGbYdX+DwwoVrEli 97Su2XBfU6LDSwrX/janBpo3LTeZ3rUX3GHuq9Ev8FaXUIlh2xxCjHwfbGTG0nFoj1rd BxWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=1z0GKgUwS9iMJ1+35a5aU5jrYsjWYudV+nl2T0Z3GsY=; b=jpxBTIq/PbNqMZz4Xbzc91GUli+Z1gm/vgKBiqZcF6628FisrGfTaybk2lLqFjPiTj rutv8urYNuOZWTjZKGupf8yJvj6MDnu6J22Xm2SHfIt3INwbxHABJHwP7HM7HetE0cjO jR1BRqna6km79pYkF9N+hwcdU4uizj4HVdvtL/kWQlfH6ZKgQ8SnKN8IM8jiho3bz0G7 wvel6tssCTdLoua/l0i4Gg2FgCZj7JkknURZtFbFfO4NJlPGMys5/vpPcVLCY0ddH613 fv7hmFD/H7PmF28DJKSinb+S8jai5rI+zGhCrl5WiAJTe6ST7EWUd+A54iaKX7kreij0 IZGw== X-Gm-Message-State: AIkVDXLGip7pJheYWli+yzyNPejS6IGhHuX+U794LSNiDCitu39Xn7FsjWdUHZ9JDTKVxwUCFSGoGf9IuVKJ4w== X-Received: by 10.28.111.139 with SMTP id c11mr49633052wmi.139.1483265704306; Sun, 01 Jan 2017 02:15:04 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.135.165 with HTTP; Sun, 1 Jan 2017 02:15:03 -0800 (PST) In-Reply-To: <87inpzyww9.fsf@elephly.net> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87mvfbzrfa.fsf@elephly.net> <87inpzyww9.fsf@elephly.net> From: =?UTF-8?Q?Elias_M=C3=A5rtenson?= Date: Sun, 1 Jan 2017 18:15:03 +0800 Message-ID: Subject: Re: official Emacs Docker image To: Ricardo Wurmus Cc: Richard Stallman , John Wiegley , emacs-devel Content-Type: multipart/alternative; boundary=001a1147e07269bde0054505b55e X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 10:15:10 -0000 --001a1147e07269bde0054505b55e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 1 January 2017 at 17:03, Ricardo Wurmus wrote: > > Elias M=C3=A5rtenson writes: > > > Arguably there should be a fully free distribution that could be the ba= se > > for more than just Emacs. > > GuixSD is a fully free GNU distribution and it comes with the tools that > are needed to determine runtime dependencies that can then turned into a > Docker image. Since Guix is a functional package manager and thus can > account for the full closure of a package it doesn=E2=80=99t require a ba= se > image and can be the base itself. I have to admit that I don't fully know what Guix is, but based on what you say, it would still make sense to have a base (Guix, in this case) that other containers base themselves on. That way the storage can be shared between containers. --001a1147e07269bde0054505b55e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 1= January 2017 at 17:03, Ricardo Wurmus <rekado@elephly.net>= wrote:

Elias M=C3=A5rtenson <lokedhs@gmail= .com> writes:

> Arguably there should be a fully free distribution that could be t= he base
> for more than just Emacs.

GuixSD is a fully free GNU distribution and it comes with the t= ools that
are needed to determine runtime dependencies that can then turned into a Docker image.=C2=A0 Since Guix is a functional package manager and thus can=
account for the full closure of a package it doesn=E2=80=99t require a base=
image and can be the base itself.

I have to= admit that I don't fully know what Guix is, but based on what you say,= it would still make sense to have a base (Guix, in this case) that other c= ontainers base themselves on. That way the storage can be shared between co= ntainers.
--001a1147e07269bde0054505b55e-- From MAILER-DAEMON Sun Jan 01 09:43:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNhMO-0001kF-8k for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 09:43:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhML-0001k8-LH for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:43:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNhMI-00054x-Jm for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:43:41 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:46240) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhMI-00053G-Dl for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:43:38 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v01EhSU8020636; Sun, 1 Jan 2017 09:43:31 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id A91ACAE0F8; Sun, 1 Jan 2017 09:43:27 -0500 (EST) From: Stefan Monnier To: Ken Raeburn Cc: emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master 064701d 2/3: Increase the obarray size. Message-ID: References: <20161230230257.13334.59525@vcs.savannah.gnu.org> <20161230230257.E6F992201CD@vcs.savannah.gnu.org> <57C3B925-FFD1-4484-9B26-963B80893AA1@raeburn.org> Date: Sun, 01 Jan 2017 09:43:27 -0500 In-Reply-To: <57C3B925-FFD1-4484-9B26-963B80893AA1@raeburn.org> (Ken Raeburn's message of "Sat, 31 Dec 2016 15:54:58 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5906=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5906> : inlines <5614> : streams <1727194> : uri <2350752> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 14:43:42 -0000 > I got a slight improvement over the old setting when loading dumped.elc, > not a huge one, but I didn=E2=80=99t compare against a value in the 8k ne= ighborhood. Yeah, I guess it doesn't matter that much in the end. > Really, I think an obarray should be an opaque object able to automatical= ly > resize itself (hash table?) or reorganize itself (tree?), and not pretend= to > be sort of like a fixed-size array with some symbols visible and some > symbols hiding invisibly inside it, but it doesn=E2=80=99t seem crucial e= nough to > performance to actually do anything about it right now. Indeed, I'd be happy to try and get rid of our obarrays and use our hash-tables for that instead (I've already changed a few packages over the years to use hash0tables rather than obarrays). Stefan From MAILER-DAEMON Sun Jan 01 09:47:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNhPZ-0002nG-JG for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 09:47:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55830) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhPX-0002m2-BF for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:46:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNhPU-00078g-BR for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:46:59 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:54234) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhPU-000783-5G for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:46:56 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v01Ekfwo022845; Sun, 1 Jan 2017 09:46:46 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 65903AE0F8; Sun, 1 Jan 2017 09:46:41 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Alan Mackenzie Subject: Re: [Emacs-diffs] master 620e5a3: Give eval-and-compile a correct edebug spec. Fixes bug #16184 properly. Message-ID: References: <20170101083108.2233.90060@vcs.savannah.gnu.org> <20170101083108.D4487220152@vcs.savannah.gnu.org> Date: Sun, 01 Jan 2017 09:46:41 -0500 In-Reply-To: <20170101083108.D4487220152@vcs.savannah.gnu.org> (Alan Mackenzie's message of "Sun, 1 Jan 2017 08:31:08 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.1 X-NAI-Spam-Rules: 3 Rules triggered GEN_SPAM_FEATRE=0.1, EDT_SA_DN_PASS=0, RV5906=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5906> : inlines <5614> : streams <1727195> : uri <2350753> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 14:47:00 -0000 > - (declare (debug t) (indent 0)) > + (declare (debug (&rest def-form)) (indent 0)) Ha, good catch, thanks! Stefan From MAILER-DAEMON Sun Jan 01 09:55:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNhYA-00047A-G9 for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 09:55:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57000) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhY8-000473-BL for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:55:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNhY5-00026b-95 for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:55:52 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:48797) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNhY5-00026D-3Q for emacs-devel@gnu.org; Sun, 01 Jan 2017 09:55:49 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v01EtjSX023388; Sun, 1 Jan 2017 09:55:47 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id C2493AE0F8; Sun, 1 Jan 2017 09:55:44 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Philipp Stephani Subject: Re: [Emacs-diffs] master 93be35e: Fix encoding of JSON surrogate pairs Message-ID: References: <20170101122441.9380.61243@vcs.savannah.gnu.org> <20170101122441.55FB1220152@vcs.savannah.gnu.org> Date: Sun, 01 Jan 2017 09:55:44 -0500 In-Reply-To: <20170101122441.55FB1220152@vcs.savannah.gnu.org> (Philipp Stephani's message of "Sun, 1 Jan 2017 12:24:41 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.1 X-NAI-Spam-Rules: 3 Rules triggered TRK_NCM1=0.1, EDT_SA_DN_PASS=0, RV5906=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5906> : inlines <5614> : streams <1727196> : uri <2350755> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 14:55:53 -0000 > + ;; Special-case UTF-16 surrogate pairs, > + ;; cf. https://tools.ietf.org/html/rfc7159#section-7. Note that > + ;; this clause overlaps with the next one and therefore has to > + ;; come first. > + ((looking-at > + (rx (group (any "Dd") (any "89ABab") (= 2 (any "0-9A-Fa-f"))) > + "\\u" (group (any "Dd") (any "C-Fc-f") (= 2 (any "0-9A-Fa-f"))))) > + (json-advance 10) > + (json--decode-utf-16-surrogates > + (string-to-number (match-string 1) 16) > + (string-to-number (match-string 2) 16))) > ((looking-at "[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]") Wouldn't it be better to move the surrogate-handling into the hex-handling branch? Stefan From MAILER-DAEMON Sun Jan 01 14:10:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNlWY-0002Qa-SH for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 14:10:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50534) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNlWV-0002QC-OC for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:10:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNlWS-0006Et-Jr for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:10:27 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:45009) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cNlWS-0006DS-Df for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:10:24 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 8FD36207AC for ; Sun, 1 Jan 2017 14:10:20 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Sun, 01 Jan 2017 14:10:20 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=ZmK0AvbTtCXndl Z+almMJs+8nwQ=; b=bPxvBLN+rsIs855aGbu/BJhbCCPI8FSjTNIdkPSALODNQg ABVkoMLJniqSZiKmNPk40C15JdlfKQfuUJSiXM5FTkzYaxoa4akGK1T/jfBoy4vN aHs59sznVbu7rw4aP3XbBSTsq3wWEedGc9K6cPXqLmU4dKbQrVDyRnD/Dl4cE= X-ME-Sender: X-Sasl-enc: jOE6o71eIBdhJFp0/n5Uh0K5cX2wnNEQ8M4mQDgoBcj5 1483297820 Received: from ebox.rath.org (ebox.rath.org [45.79.69.51]) by mail.messagingengine.com (Postfix) with ESMTPA id 517E224189 for ; Sun, 1 Jan 2017 14:10:20 -0500 (EST) Received: from vostro.rath.org (vostro [192.168.12.4]) by ebox.rath.org (Postfix) with ESMTPS id A565D3EE for ; Sun, 1 Jan 2017 19:10:19 +0000 (UTC) Received: by vostro.rath.org (Postfix, from userid 1000) id 696E2102471; Sun, 1 Jan 2017 11:10:19 -0800 (PST) From: Nikolaus Rath To: emacs-devel@gnu.org Subject: Please review Gnus bug 20670 Mail-Copies-To: never Mail-Followup-To: emacs-devel@gnu.org Date: Sun, 01 Jan 2017 11:10:19 -0800 Message-ID: <87eg0megv8.fsf@vostro.rath.org> User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 19:10:28 -0000 Hello, Could someone take a look at the Gnus patch in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20670? The patch has been sitting there for more than a year. It would be great to either see it committed, or to have some feedback on the issues that prevent that. I've been using the patch locally ever since writing it and did not encounter any problems. Best, -Nikolaus --=20 GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F =C2=BBTime flies like an arrow, fruit flies like a Banana.=C2= =AB From MAILER-DAEMON Sun Jan 01 14:16:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNlck-000485-MJ for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 14:16:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNlci-00047s-Jl for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:16:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNlcf-0002yu-E2 for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:16:52 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:59880) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cNlcf-0002xp-AP for emacs-devel@gnu.org; Sun, 01 Jan 2017 14:16:49 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id DA0A820836 for ; Sun, 1 Jan 2017 14:16:46 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Sun, 01 Jan 2017 14:16:46 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= smtpout; bh=ehmnF9BDP0iOY5kf3AbeT/AG7Nc=; b=ilnfdK08tWaCF9WasJBZ 1FtGJ+cGKLuc6tfmC+N//jFAFkNccprYQwXDEftep3GV0b4FDLHyPqk3BdypC/8h saQZ8gU3K0jkyFsQCTYUeChSQ2useKCBllPg8P+TGx7pOMU34Yae7CfHyBg3qCVR H4bmldNlj6H1ZT26MC0FOSM= X-ME-Sender: X-Sasl-enc: G0+6Xes7OnhGwgyGCnaSkg0C4FajAsKNHymmtDYBo7LR 1483298206 Received: from ebox.rath.org (ebox.rath.org [45.79.69.51]) by mail.messagingengine.com (Postfix) with ESMTPA id 9D48B2423F for ; Sun, 1 Jan 2017 14:16:46 -0500 (EST) Received: from vostro.rath.org (vostro [192.168.12.4]) by ebox.rath.org (Postfix) with ESMTPS id F40D73EE for ; Sun, 1 Jan 2017 19:16:45 +0000 (UTC) Received: by vostro.rath.org (Postfix, from userid 1000) id B1CE0102471; Sun, 1 Jan 2017 11:16:45 -0800 (PST) From: Nikolaus Rath To: emacs-devel Subject: Re: Please review Gnus bug 20670 References: <87eg0megv8.fsf@vostro.rath.org> Mail-Copies-To: never Mail-Followup-To: emacs-devel Date: Sun, 01 Jan 2017 11:16:45 -0800 In-Reply-To: <87eg0megv8.fsf@vostro.rath.org> (Nikolaus Rath's message of "Sun, 01 Jan 2017 11:10:19 -0800") Message-ID: <8760lyegki.fsf@vostro.rath.org> User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 19:16:53 -0000 Hello, Actually, the same applies to https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D21057 (Add support for IMAP namespaces) https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20672 (Support hiding deleted IMAP messages) Best, -Nikolaus On Jan 01 2017, Nikolaus Rath wrote: > Hello, > > Could someone take a look at the Gnus patch in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20670? > > The patch has been sitting there for more than a year. It would be great > to either see it committed, or to have some feedback on the issues that > prevent that. > > I've been using the patch locally ever since writing it and did not > encounter any problems. > > Best, > -Nikolaus > --=20 > GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F > Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F > > =C2=BBTime flies like an arrow, fruit flies like a Banana.= =C2=AB --=20 GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F =C2=BBTime flies like an arrow, fruit flies like a Banana.=C2= =AB From MAILER-DAEMON Sun Jan 01 18:54:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNpxB-0005Ta-4B for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 18:54:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48299) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNpx8-0005TR-Ov for emacs-devel@gnu.org; Sun, 01 Jan 2017 18:54:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNpx8-0004FF-2L for emacs-devel@gnu.org; Sun, 01 Jan 2017 18:54:14 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:32986) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNpx7-0004FB-VZ; Sun, 01 Jan 2017 18:54:14 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cNpx6-0003WK-Ct; Sun, 01 Jan 2017 18:54:12 -0500 From: Glenn Morris To: emacs-devel@gnu.org Cc: Paul Eggert Subject: Re: master bcf244e 9/9: Merge from origin/emacs-25 References: <20170101091842.9320.638@vcs.savannah.gnu.org> <20170101091856.14F2B220152@vcs.savannah.gnu.org> X-Spook: JFK Uzbekistan National Guard Crash Federal Emergency X-Ran: K]`ESLm}%]/NYk!w)$ (Paul Eggert's message of "Sun, 1 Jan 2017 09:18:47 +0000 (UTC)") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jan 2017 23:54:15 -0000 Thanks for doing the merging. In this case it seems to have resurrected several files that had been deleted on master: create mode 100644 lisp/gnus/gnus-ems.el create mode 100644 lisp/gnus/gnus-sync.el create mode 100644 lisp/gnus/messcompat.el create mode 100644 lisp/nxml/nxml-glyph.el create mode 100644 lisp/nxml/nxml-uchnm.el create mode 100644 lisp/obsolete/awk-mode.el create mode 100644 lisp/obsolete/iso-acc.el create mode 100644 lisp/obsolete/iso-insert.el create mode 100644 lisp/obsolete/iso-swed.el create mode 100644 lisp/obsolete/resume.el create mode 100644 lisp/obsolete/scribe.el create mode 100644 lisp/obsolete/spell.el create mode 100644 lisp/obsolete/swedish.el create mode 100644 lisp/obsolete/sym-comp.el (Can't git perform better than this?) From MAILER-DAEMON Sun Jan 01 23:39:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNuPY-0004sX-Cr for mharc-emacs-devel@gnu.org; Sun, 01 Jan 2017 23:39:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44396) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNuPW-0004sQ-4f for emacs-devel@gnu.org; Sun, 01 Jan 2017 23:39:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNuPT-00065w-1z for emacs-devel@gnu.org; Sun, 01 Jan 2017 23:39:50 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:36420) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cNuPS-00064c-RY; Sun, 01 Jan 2017 23:39:46 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E8D98160083; Sun, 1 Jan 2017 20:39:43 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 4WdbTa1Jeia2; Sun, 1 Jan 2017 20:39:43 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 21502160084; Sun, 1 Jan 2017 20:39:43 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 1agUBxowLTvq; Sun, 1 Jan 2017 20:39:43 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.178.162]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id ECFCA160083; Sun, 1 Jan 2017 20:39:42 -0800 (PST) Subject: Re: master bcf244e 9/9: Merge from origin/emacs-25 To: Glenn Morris , emacs-devel@gnu.org References: <20170101091842.9320.638@vcs.savannah.gnu.org> <20170101091856.14F2B220152@vcs.savannah.gnu.org> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <62f2eef7-77bf-eb74-75ff-4862e98f55bb@cs.ucla.edu> Date: Sun, 1 Jan 2017 20:39:42 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 04:39:51 -0000 Glenn Morris wrote: > In this case it seems to have resurrected several files that had been > deleted on master: Thanks, I deleted those files from master. > (Can't git perform better than this?) It is a bit tricky in general when one branch deletes a file and another = branch=20 changes it. I think git merge uses the changed file in that case, under t= he=20 theory that this is more often better than deleting the file. Presumably gitmerge could be taught about this situation. From MAILER-DAEMON Mon Jan 02 05:21:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNzkH-0007hO-HI for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 05:21:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNzkF-0007h7-8u for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:21:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNzkC-0003bF-0N for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:21:35 -0500 Received: from mail-lf0-x22f.google.com ([2a00:1450:4010:c07::22f]:35691) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cNzkB-0003b8-Og for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:21:31 -0500 Received: by mail-lf0-x22f.google.com with SMTP id b14so267995542lfg.2 for ; Mon, 02 Jan 2017 02:21:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:cc:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=9laWHnnxpY5/blovjL1d25e8CZklW0+iaSBDS2I8O6g=; b=UYcmXj98ZtiD1sTPFsHGuGXx2EYI6s8FJi7joEcs9ahj4QY+OV2Du87tObt8cSSvFi I27ZXBA1XeSGmsey4FPakqPpyw1P0IoCY1MeFOLaX6AJsoKZuSFmiNL29r63R/7qJrs0 tDErr6aCFPll/EU//3JUiyN0ScVJEDBF1WMwdWfW9DgEz243lu/GvdFN6J19JJ+Jt9go p9TVN5cFye5XJOm66GNC6G+PYz8CKYJU0VGL6ug5G5wivqruk28IxRJ/YLYSHPO7gOuz 25jDyNKpNr6UtZDk09/2DwqH0awkpeIqLF5k3RuTfr1A6NnyqbGY5EjvE1u45fYbXlxM pjew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:cc:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=9laWHnnxpY5/blovjL1d25e8CZklW0+iaSBDS2I8O6g=; b=dL5VNagdGv5bdWNYTxL5g+GPOVf+ywSX3A+T0DhWYZYgyJOc2kRxe/AcoCieGiOLTe d2ggJH6rkeFlHuuQ/gG6mq0IIpKN9sLswOGpB3REn8dwDFqM25/G/KlLUw5DSmw/N5wa W2p3y7xaoONpmNfZDuK3md/Dw7/H72sSzd5MTqDFceGqi6O3eR4PZMyo96Cr87S7zIRa H5XnBJ8QFl4wNKbxRBDvkYZgkfQzzuvpEawVg7QvE8dY9wutkFPQqWLZzRHvh6QlY9k0 W3R34jClprEmIPZpPuyOtWdV7c8X6ZhkbS/spSKuwAYuxo5/byZIkxrmQVLk6otag5ig d46Q== X-Gm-Message-State: AIkVDXKRVCcy1rA9vVAJ3UIFGKlAd6aZjNB5wCvEg8vZwJvxn5b/JePH/9Ei5rA5HJDEBQ== X-Received: by 10.46.7.26 with SMTP id 26mr21507012ljh.18.1483352489271; Mon, 02 Jan 2017 02:21:29 -0800 (PST) Received: from [192.168.199.6] (broadband-95-84-209-126.nationalcablenetworks.ru. [95.84.209.126]) by smtp.gmail.com with ESMTPSA id z1sm15684749lja.27.2017.01.02.02.21.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 02:21:28 -0800 (PST) From: Nikolay Kudryavtsev X-Google-Original-From: Nikolay Kudryavtsev Subject: Re: Patches for Emacs 25.2 To: Dmitry Gutov References: <877f96t9oc.fsf@gmx.de> <837f96xgp5.fsf@gnu.org> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> Cc: Michael Albinus , emacs-devel@gnu.org Message-ID: <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> Date: Mon, 2 Jan 2017 13:21:30 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 10:21:36 -0000 You're right, master indeed uses the local name. I was pretty sure that was impossible. So, I tried to figure out how does that work. The answer - it does not. Master tries to write to a file on a local machine, which does not exist. So I don't think we can replace absolute filename with the local one. P. S. Happy new year. -- Best Regards, Nikolay Kudryavtsev From MAILER-DAEMON Mon Jan 02 05:32:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cNzuV-0002OW-VL for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 05:32:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45705) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cNzuT-0002OI-Ns for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:32:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cNzuQ-0005rr-GW for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:32:09 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:32924) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cNzuQ-0005rj-8u for emacs-devel@gnu.org; Mon, 02 Jan 2017 05:32:06 -0500 Received: by mail-lf0-x243.google.com with SMTP id y21so39775561lfa.0 for ; Mon, 02 Jan 2017 02:32:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=cp4Lz8ILLtWp3lmKyUWWZATluEw2UjRV37AGMiLm2t0=; b=l9TCo7BR7+0f63b5zRNgNJO9a25SAIOfQKZDCJifatUvp/S0QD+byGA8wH554TgL3F E7HuTLKre1wY+HJLsriFpLO2oaeds4dGaisNY/nYano+9rhEOoMCpZt9/EStJwX1543z +45FGSdUUzzCrj0539pGqo2aweo5pLVa6VhjesOiGLoZ5l1+L4Es6M8mroY/19qK1U6O BHoM/oroVLdv3t5qqiVb6pdz5PztdJzO6k4tie8/a9fbpKO1gCYn6/jbLOW3iQ34wP3x WzPA1Ze0vi0qYHv+ri+MoCIFC+JY8Q0ITpBMkznek8S9oXET14/J0CCNP5tRiivZZmVW AdGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=cp4Lz8ILLtWp3lmKyUWWZATluEw2UjRV37AGMiLm2t0=; b=osK2PpeYtj8M1150DNrFKJyo6Ze3Att8x5nQAxDg94MyT1OhWimlD39YqaW9Qdbfen aBLGHWrH+pcegPmnlmaSA3myARtz9+mhPb2i5BWdkBumqRwmgynn2erWDS6HehG6eW43 vPsckBFvvxEgoeztj8PPJM6AA/M4VRYC1et+QGLs5DjBYEE1XprvuD2b3/FqsvicGH17 23w5OxtMTep6zWAMG1g8G68l8qN2WBdtMtPxljVX8OXboEjzV2EI93vcxQhho1MMQpIO uIcMg6DBlixgXgk9xrblGr1c2fX5OS2BtbbW4QocVPim0YTtUsA65HWFUiEhcWbV3hoV AXlQ== X-Gm-Message-State: AIkVDXL511CiDWWXctu3InndBdwkNIv74PCJRZhJlhJRglDRe0k7wj4TEvx+25IQhnR04A== X-Received: by 10.46.71.15 with SMTP id u15mr19414542lja.74.1483353124696; Mon, 02 Jan 2017 02:32:04 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id s63sm15749505lja.19.2017.01.02.02.32.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 02:32:03 -0800 (PST) Sender: DG Subject: Re: Patches for Emacs 25.2 To: Nikolay Kudryavtsev References: <877f96t9oc.fsf@gmx.de> <837f96xgp5.fsf@gnu.org> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> Cc: Michael Albinus , emacs-devel@gnu.org From: Dmitry Gutov Message-ID: Date: Mon, 2 Jan 2017 13:32:02 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Thunderbird/50.0 MIME-Version: 1.0 In-Reply-To: <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 10:32:10 -0000 On 02.01.2017 13:21, Nikolay Kudryavtsev wrote: > You're right, master indeed uses the local name. I was pretty sure that > was impossible. So, I tried to figure out how does that work. The answer > - it does not. Master tries to write to a file on a local machine, which > does not exist. So I don't think we can replace absolute filename with > the local one. Thank you for testing. Michael, what do you say to this? > P. S. Happy new year. Happy new year to you, too. :) From MAILER-DAEMON Mon Jan 02 06:41:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO0zB-0002Ui-BN for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 06:41:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO0z7-0002TP-UG for emacs-devel@gnu.org; Mon, 02 Jan 2017 06:41:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO0z3-0005jG-2Q for emacs-devel@gnu.org; Mon, 02 Jan 2017 06:41:01 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:49823) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO0z2-0005ha-Nc for emacs-devel@gnu.org; Mon, 02 Jan 2017 06:40:57 -0500 Received: from [192.168.178.35] ([95.119.34.237]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.183]) with ESMTPSA (Nemesis) id 0LfAa0-1cqguY45Rw-00omfK for ; Mon, 02 Jan 2017 12:40:53 +0100 To: "emacs-devel@gnu.org" From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Subject: region-active-p et al Message-ID: <63474c32-666d-dc16-d5de-98164172fb71@online.de> Date: Mon, 2 Jan 2017 12:50:35 +0100 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:ZagdLonZdQgk1+X+zG4gyKeyDubqufsRNkdVF2psMX2moiS+UQ6 799GrDJ+C3Ex8caUYkTk/Kv58MAQ+bPDnlA+sk1nwUH1/A+FRMozTxOBmNzmZxrhK8xwMbI s+JOegEUw3KieFHSqXNbISXWsCZTIKyTFyRrqbF8LXgxR5tOfWgTy94zkp/Pu5Ghb6eDkNO I3ZXJ+tUQ3olPXfGpiHNQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:8DJdNP0r5S4=:/nYcZkMkp0qG7dULpriFME tj8FxcnBhKr7RpBhwLTgAsOlYbhNpBmPHmUC01Rhf0Bbtr+6yOR8KMFgGS714JMjGdQJCVFo5 pH7PcwFtzZWgZXRLygn9RLLUxdqSTAvtDbVJ5FOBXnH8xY36Up1bMMEemIiQHi0gfoqvsS8x9 GwVj1+3A1bh2Hx+Mn0sZDypY6OtkBAsN7kuDHG9Y05iHQks5fYMABurKuozGQK4/J79KdrSoC MMcKACzrxsOdjw6XL/qdOYXytsB5soe6kYs2UnLkOGT0PkRkVUIqOMmMtvnTUlQN/aaAMgXIW hzt2Pjdt/4JIpvP1/YBOJOg/FSm3bvcGJIbfo3qF10kPEsfEfkR4kKllHzdG3evddY+JA2AOm YUPVS2ybc1iVpZ1CRQpu7Mp1yzS/k7QUnBGtrfebtmnz2naL8yxDtfcrFLn7NKOSsm3ScOwpX Tmc4AiwAf2boB6bTfIEs1vOW/vnBYgV3N99G5HnaZCsX1C0A+623p17zVV/gPVnhY4CTfhOAZ ElXLRPGzn/+FiZuUQygyquh0w6rgo6bx28MSKDGNM2xWpyZZGEENTtIRX50Icwp5LQ8IUcGxI r4KOoleHZwYIiHcZ/wQGQiYoqJAWROgq/V6qRNzmELOn/21vbkKmo52c4gh8qAR1OelQarsHa ydXsfpYzzr7EF0z3Pr0155SchwXt1l9nOtkG5v0nBsrWLqfLNaEmldPERHsJrtFN+fIYw35c9 gCUS/vecNC5cdt1l X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.13 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 11:41:04 -0000 Happy new year! Got a bug-report at https://gitlab.com/python-mode-devs/python-mode/issues/27 which points me at a quirk in region-active-p: Questioning transient-mark-mode does not belong here. It's a user/convenience thing whilst region-active-p is a core thing. A work-around in python-mode.el would ask (and (mark) (not (eq (mark) (point)))) instead of region-active-p resp. use-region-p. Cheers, Andreas From MAILER-DAEMON Mon Jan 02 07:23:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO1dq-0000cx-AA for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO1dn-0000cp-VN for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO1dk-0000ri-Rq for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:03 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:32863) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO1dk-0000rL-MH for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:00 -0500 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id D68B120849; Mon, 2 Jan 2017 07:22:59 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Mon, 02 Jan 2017 07:22:59 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= smtpout; bh=/N3jQ0T0Ek1wlQepP3bfwZqjpb8=; b=Cq7UN6oekYNMm+CSgpbE ujO5dRLgP2r9t8zJpqX8bc+unELE3GlRlUY73JCy8i4TUpIbTOmwMluZ4aRV0qgx nGcHa97DGOYxyZR7NGqNjtZEUO9JDLrnxhwMxg463+fEnA3X/fnTUURYjaqAsOla BpCV5UXOcavRj5NE/igpwZk= X-ME-Sender: X-Sasl-enc: goiMq6rRmxOoxfJ9eYt800dQXETnhtFKDMH7/Ot5O5ve 1483359779 Received: from thinkpad-t440p (p5dec8659.dip0.t-ipconnect.de [93.236.134.89]) by mail.messagingengine.com (Postfix) with ESMTPA id DC4097E8C3; Mon, 2 Jan 2017 07:22:58 -0500 (EST) From: Tassilo Horn To: =?utf-8?B?U2HFoW8gxb1pdmFub3ZpxIc=?= Cc: emacs-devel@gnu.org Subject: Re: [PATCH] Fix RefTeX to show table of contents for dtx files References: <1de25256-ff37-a170-31aa-af2c4467953a@guest.arnes.si> Date: Mon, 02 Jan 2017 13:22:57 +0100 In-Reply-To: <1de25256-ff37-a170-31aa-af2c4467953a@guest.arnes.si> (=?utf-8?Q?=22Sa=C5=A1o=09=C5=BDivanovi=C4=87=22's?= message of "Fri, 30 Dec 2016 11:49:41 +0100") Message-ID: <87k2adzm5a.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 12:23:05 -0000 Sa=C5=A1o =C5=BDivanovi=C4=87 writes: Hi Sa=C5=A1o, > I've fixed a tiny bug in RefTeX: TOC was not shown for dtx files. Good catch, thanks! I've committed your patch with a slight modification. Instead of this > - (when toc-entry > + (when (and toc-entry > + (equal > + (equal (char-after bound) ?%) > + (string-suffix-p ".dtx" file) > + )) I used (when (and toc-entry (eq ;; Either both are t or both are nil. (=3D (char-after bound) ?%) (string-suffix-p ".dtx" file))) which looks a bit more clear to me. I've seen that this is your first patch to Emacs, and given that it's less than 15 lines of code, I can commit it for you as-is. However, if you plan to contribute more in the future, a copyright assignment will be due. Bye, Tassilo From MAILER-DAEMON Mon Jan 02 07:23:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO1ds-0000dr-4T for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO1dp-0000cv-C7 for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO1dm-0000s2-8V for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:05 -0500 Received: from mout.gmx.net ([212.227.15.15]:60260) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO1dl-0000qy-UO for emacs-devel@gnu.org; Mon, 02 Jan 2017 07:23:02 -0500 Received: from detlef.gmx.de ([93.197.215.230]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LrNIC-1cVpiH14KC-013AXl; Mon, 02 Jan 2017 13:22:57 +0100 From: Michael Albinus To: Dmitry Gutov Cc: Nikolay Kudryavtsev , emacs-devel@gnu.org Subject: Re: Patches for Emacs 25.2 References: <877f96t9oc.fsf@gmx.de> <837f96xgp5.fsf@gnu.org> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> Date: Mon, 02 Jan 2017 13:22:55 +0100 In-Reply-To: (Dmitry Gutov's message of "Mon, 2 Jan 2017 13:32:02 +0300") Message-ID: <87zij96480.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:s+TJHT/EIvPeWXx92Gnm4vSD7jbsxS/fye41x6LJvWxYUTzpG2l NpzU9cuGRkSN09LQErfJwwcErHzuTVtzQzHRl9cKpY63PXRINBrGB/ZmnHk7xfgdFVRvAVi +moP+MOGdn5tHZDmuLMF2HU2f8+6opddrO1pickTSRLYW+vaimvvJNsap03IlLe0wItwWpH ff2ovu/umeNga6rKSG/RQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:KOcbm0HGIMc=:WpZx4D6bZEHeT94T04i7bX emKD31CuKpEZdvgSYAdoH9zvPPlHnAtcJDqhxrhuFnJdKAWLn7teGb6lHwuRmYv1GR6U2ZAdR uCKfiMzt+61KMo8gP7PcZ5aOhxI6FasggzZlCQQiBmp33RJOz1z2Yfn2XOZwMnw9Tg9oEJpqC OovK+I15fH7FZQX+5XOCnKtUc3xhGo8I+RHtLKDA5fLMbjL4/WidMErOlbQZaJDC9dPqhs45w VHzWZfESP0BZTOPCM50QK4DCZMTm0reHFTntoTB17hz570OJaz2OP/l0qO+ixrDkgzlXd6gyV V2c7+hNK6sJRT8TvARbF6NlnCTiDmjlfvUvJQeR32DOI9WhUfViAoUuf/w3q9pIWVbLNaBvDn 2WYLPhZ2kdqGsFsYgWxjun/VNYsnKQIlibbbii2/lVhtm042pCu3AmSQ9jGeuECFmvv5ylQ1p IoOiOt/0Q++zedafMYc3iC0GCuVj8af5Trzypj1bcTB8Uix9YqiG6gayczwVcUziHRs0K3Bsh BY3GuvAEmlT5vGgJQWSunnF3XmL+a0RD7o0lg6bLx2JZxNPuzMVHXr2HvPEia0UgJMzDNIRx0 lDvRI5vB47NGIca59wS7D3lqO8GXtZDk/d0M4z9P80pJec5P+flxZ9/ioSc9wlM1yKyNUxNln 0lsgzT4+m9vTckIs+3C2XPxOVD21Kc3vT36/1Oi0cUGuHRyNljmB+vzC9OcnH8D95NntMrqpa 5iUZrWMEMAuZ9/VzcgokMC1RNS9G98tVft+S26gtXdTWnFw25LaNNhExHiub74/e4vpgXp5P5 ax4K3uE X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.15 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 12:23:06 -0000 Dmitry Gutov writes: > On 02.01.2017 13:21, Nikolay Kudryavtsev wrote: >> You're right, master indeed uses the local name. I was pretty sure that >> was impossible. So, I tried to figure out how does that work. The answer >> - it does not. Master tries to write to a file on a local machine, which >> does not exist. So I don't think we can replace absolute filename with >> the local one. > > Thank you for testing. Michael, what do you say to this? I say that I don't understand it. Nikolay, could you pls give an example and explain in detail what happens? Note, that I don't own an MS Windows machine. And if I hijack one, temporarily, it does not run git. So I have no chance to test anything for the blamed scenario. What I could do is code reading across the example. But this looks different to the Emacs 25.2 issue. Nikolay did propose a patch in bug#23076, and I did propose another version of that patch (Message-ID: <877f95deig.fsf@gmx.de>), which was later modified to the patch applied in master. So we have to decided, which of the two offered patches shall go into the emacs-25 branch, and whether it works. Again, I cannot test myself. That's why I gave it to Nikolay, several times already. Best regards, Michael. From MAILER-DAEMON Mon Jan 02 10:33:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO4cT-0003l0-81 for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 10:33:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39017) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO4cP-0003ie-Rk for emacs-devel@gnu.org; Mon, 02 Jan 2017 10:33:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO4cM-0004Zv-Nv for emacs-devel@gnu.org; Mon, 02 Jan 2017 10:33:49 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO4cM-0004Zl-Ln; Mon, 02 Jan 2017 10:33:46 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4413 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cO4cL-0006iL-HI; Mon, 02 Jan 2017 10:33:46 -0500 Date: Mon, 02 Jan 2017 17:33:53 +0200 Message-Id: <83pok5fpcu.fsf@gnu.org> From: Eli Zaretskii To: Andreas =?utf-8?Q?R=C3=B6hler?= CC: emacs-devel@gnu.org In-reply-to: <63474c32-666d-dc16-d5de-98164172fb71@online.de> (message from Andreas =?utf-8?Q?R=C3=B6hler?= on Mon, 2 Jan 2017 12:50:35 +0100) Subject: Re: region-active-p et al Reply-to: Eli Zaretskii References: <63474c32-666d-dc16-d5de-98164172fb71@online.de> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 15:33:51 -0000 > From: Andreas Röhler > Date: Mon, 2 Jan 2017 12:50:35 +0100 > > Happy new year! And the same to you. > Got a bug-report at > https://gitlab.com/python-mode-devs/python-mode/issues/27 which points > me at a quirk in region-active-p: > > Questioning transient-mark-mode does not belong here. It's a > user/convenience thing whilst > region-active-p is a core thing. Actually, both region-active-p and use-region-p are explicitly documented to pay attention to transient-mark-mode. These two functions exist to allow applications to change their behavior when an active region (not just any region) exists. If python-mode wants to act on region regardless of transient-mark-mode, it should look at the mark, and not use these two functions. They are not meant for that use case. From MAILER-DAEMON Mon Jan 02 10:51:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO4tn-0005rT-C3 for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 10:51:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO4ge-0007Lq-SV for emacs-devel@gnu.org; Mon, 02 Jan 2017 10:38:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO4gZ-0005oY-VV for emacs-devel@gnu.org; Mon, 02 Jan 2017 10:38:12 -0500 Received: from avs4.arnes.si ([193.2.1.77]:54896) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO4gZ-0005nW-Kd; Mon, 02 Jan 2017 10:38:07 -0500 Received: from localhost (scanner2.arnes.si [193.2.0.11]) by avs4.arnes.si (Postfix) with ESMTP id 5FB6310B546; Mon, 2 Jan 2017 16:37:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=guest.arnes.si; h=content-transfer-encoding:content-type:content-type :in-reply-to:mime-version:user-agent:date:date:message-id:from :from:references:subject:subject:received:received:received :received; s=one; t=1483371474; x=1485963475; bh=6zMRxKWJKb4Jiso 8oZ3brDL37foIt0ceGp74MaXw/J8=; b=fQz0a8mC9PYotIQnasRBa/1JMi5uc4u 9quUFHN797JGyIoCjjc/S7Aq9yiM3F0rEf3CEuNshuEWxsY1P/q2Bgjz/v9NRt4s 8LY7z0KHrhPLQqTeWXf+aeAJICjCgTOlIkdSKUZQwHlrwJ4zFPUlLdehIGe6nCA6 liifz0q+Yl0E= Received: from avs4.arnes.si ([193.2.1.77]) by localhost (scanner2.arnes.si [193.2.0.12]) (amavisd-new, port 10012) with ESMTP id c-cDamcoCNYf; Mon, 2 Jan 2017 16:37:54 +0100 (CET) Received: from scanner2.arnes.si (scanner2.arnes.si [193.2.0.11]) by avs4.arnes.si (Postfix) with ESMTP id 4DEB522C09; Mon, 2 Jan 2017 16:37:54 +0100 (CET) X-Virus-Scanned: amavisd-new at guest.arnes.si Received: from avs4.arnes.si ([193.2.1.77]) by scanner2.arnes.si (scanner2.arnes.si [193.2.0.12]) (amavisd-new, port 10010) with ESMTP id 4_f_F26nTWfi; Mon, 2 Jan 2017 16:37:53 +0100 (CET) Received: from [192.168.64.102] (89-212-39-22.dynamic.t-2.net [89.212.39.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: szivan@mail.arnes.si) by avs4.arnes.si (Postfix) with ESMTPSA; Mon, 2 Jan 2017 16:37:53 +0100 (CET) Subject: Re: [PATCH] Fix RefTeX to show table of contents for dtx files To: Tassilo Horn References: <1de25256-ff37-a170-31aa-af2c4467953a@guest.arnes.si> <87k2adzm5a.fsf@gnu.org> Cc: emacs-devel@gnu.org From: =?UTF-8?B?U2HFoW8gxb1pdmFub3ZpxIc=?= Message-ID: <8755209c-85cf-570f-525b-69486a0fffaf@guest.arnes.si> Date: Mon, 2 Jan 2017 16:41:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87k2adzm5a.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 193.2.1.77 X-Mailman-Approved-At: Mon, 02 Jan 2017 10:51:44 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 15:38:14 -0000 Hi Tassilo! Thanks for the prompt reply and commit! On 02. 01. 2017 13:22, Tassilo Horn wrote: > Sa=C5=A1o =C5=BDivanovi=C4=87 writes: > > Hi Sa=C5=A1o, > >> I've fixed a tiny bug in RefTeX: TOC was not shown for dtx files. > > Good catch, thanks! > > I've committed your patch with a slight modification. Instead of this > >> - (when toc-entry >> + (when (and toc-entry >> + (equal >> + (equal (char-after bound) ?%) >> + (string-suffix-p ".dtx" file) >> + )) > > I used > > (when (and toc-entry > (eq ;; Either both are t or both are nil. > (=3D (char-after bound) ?%) > (string-suffix-p ".dtx" file))) > > which looks a bit more clear to me. Fine with me. You see that my lisp is pretty rudimentary ... > > I've seen that this is your first patch to Emacs, and given that it's > less than 15 lines of code, I can commit it for you as-is. However, if > you plan to contribute more in the future, a copyright assignment will > be due. Gladly. Best, Sa=C5=A1o > > Bye, > Tassilo > From MAILER-DAEMON Mon Jan 02 13:43:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO7aG-0001Dm-Ue for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 13:43:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO7aD-0001C4-Ua for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:43:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO7aA-0005rZ-S6 for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:43:45 -0500 Received: from mail-lf0-x229.google.com ([2a00:1450:4010:c07::229]:35376) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cO7aA-0005rJ-JE for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:43:42 -0500 Received: by mail-lf0-x229.google.com with SMTP id b14so273838896lfg.2 for ; Mon, 02 Jan 2017 10:43:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:cc:message-id:date:user-agent :mime-version:in-reply-to; bh=nlWfVngsf8p9f9KANPflG7Vo+hBduZqtdQt+MYToUPg=; b=DGZZ1DISiFumtVW/+Srg4cZGpQb340T4FtpU/i1bZIpSHgLfpVZJ3OaiZXVmX3+PWc 91sUbjofUw32AbZpTkn9OJByTFUsq0d1uJLuBAKMz6iDlJO4fLPbTagNGg5y0IEnoTQe 2kGdJWhZdao8bh9HDX8v3j6dPO2TSPIebPsFSoj1oWhm/f3d2lKvel9DeYEv/OVY0mY6 wS1PiKH5mxjkuaodYAdo8f3/xRHXomYiM0c31rB78SO1xLW5V8PWNVdUy3eGFiTGzsCb qDiiDtBP6YfSM6EKwUYB0p1Qgum6ucq/XjZynzZ5W9nIhlTPFqlrU/MfCVpR9Q4WOGy9 BqRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:cc:message-id:date :user-agent:mime-version:in-reply-to; bh=nlWfVngsf8p9f9KANPflG7Vo+hBduZqtdQt+MYToUPg=; b=N9EFT5KZ3tUb7YW6KR7cfCvTtpoHb5NduAwAJvZusihbJi5HhZC0WFpMgXru5yS2xj 82qILmq5TFwbyA7a5ZsPbZgcDcmnFBD2SG/5OqJ7smxGEEpKZ64gLVLcSysaN8dzG4pI NHV7f8xJ2l8gPJvJmAIEHoeSQMH7R+ILE5oij1caq6JeVLZfh4C4lEhJYxeM08SmkUqa sGo1c1yS6MlrF4yOiYqCpp8ifN1JMQqW55evkNkY1o66NcS5XKLhKgmEVQKpBj71SWNI uPnz9LXs87WfZFfZHxXFcddFiPS1ypp1RLcmCSlYe3fBFbGCcBNHaJhVXGNZ/qMINlTB PVew== X-Gm-Message-State: AIkVDXIBv4+32HSNHGR4PvavkS3C/bEBIjqgbYMosSUr0bqWhAtE9A5gcD3KcY1uEC37xQ== X-Received: by 10.46.9.21 with SMTP id 21mr21734401ljj.0.1483382620958; Mon, 02 Jan 2017 10:43:40 -0800 (PST) Received: from [192.168.199.6] (broadband-95-84-209-126.nationalcablenetworks.ru. [95.84.209.126]) by smtp.gmail.com with ESMTPSA id e6sm8945537lji.34.2017.01.02.10.43.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 10:43:40 -0800 (PST) From: Nikolay Kudryavtsev X-Google-Original-From: Nikolay Kudryavtsev Subject: Re: Patches for Emacs 25.2 To: Michael Albinus References: <877f96t9oc.fsf@gmx.de> <837f96xgp5.fsf@gnu.org> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> Cc: Dmitry Gutov , emacs-devel@gnu.org Message-ID: <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> Date: Mon, 2 Jan 2017 21:43:39 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <87zij96480.fsf@gmx.de> Content-Type: multipart/mixed; boundary="------------0ACF15F4D6C02D5C70718491" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 18:43:47 -0000 This is a multi-part message in MIME format. --------------0ACF15F4D6C02D5C70718491 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hello, Michael. Just to be clear - we're talking about the current master. That one does not work. My original patch, or your rewrite in this thread works. So here's what happens. 1. Msg-file has a local name as its value. Let's say I'm trying to commit into repository /pscp:server:/home/user/git-test/. Make-nearby-temp-file creates a file "/pscp:server:/home/user/git-test/git-msg23408zHn". Msg-file becomes "/home/user/git-test/git-msg23408zHn". 2. We concat a git command like "git commit /home/user/git-test/git-msg23408zHn". No problem here, since we need a local name. 3. (write-region (car args) nil msg-file) happens and it fails, because local name "/home/user/git-test/git-msg23408zHn" expands to "c:/home/user/git-test/git-msg23408Ncz" which is a file on a local machine and it does not exist. The fix would be having absolute name for msg-file(/pscp:server:/home/user/git-test/git-msg23408zHn) and then using (or (file-remote-p msg-file 'localname) msg-file) for git commit. Everywhere else we need the absolute name. I've attached those changes as patch. -- Best Regards, Nikolay Kudryavtsev --------------0ACF15F4D6C02D5C70718491 Content-Type: text/plain; charset=UTF-8; name="remote-vc-git-master-fixed.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="remote-vc-git-master-fixed.patch" ZGlmZiAtLWdpdCBsaXNwL3ZjL3ZjLWdpdC5lbCBsaXNwL3ZjL3ZjLWdpdC5lbA0KaW5kZXgg YzY3MDI4MC4uNjE2YzE1MCAxMDA2NDQNCi0tLSBsaXNwL3ZjL3ZjLWdpdC5lbA0KKysrIGxp c3AvdmMvdmMtZ2l0LmVsDQpAQCAtNzA3LDE0ICs3MDcsMTYgQEANCiAgICAgICAgICAgOzsg bWVzc2FnZS4gIEhhbmRsZSBhbHNvIHJlbW90ZSBmaWxlcy4NCiAgICAgICAgICAgKGlmIChl cSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkNCiAgICAgICAgICAgICAgIChsZXQgKChkZWZh dWx0LWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlMSkpKQ0KLSAgICAgICAg ICAgICAgICAoZmlsZS1sb2NhbC1uYW1lIChtYWtlLW5lYXJieS10ZW1wLWZpbGUgImdpdC1t c2ciKSkpKSkpDQorICAgICAgICAgICAgICAgIChtYWtlLW5lYXJieS10ZW1wLWZpbGUgImdp dC1tc2ciKSkpKSkNCiAgICAgKGNsLWZsZXQgKChib29sZWFuLWFyZy1mbg0KICAgICAgICAg ICAgICAgIChhcmd1bWVudCkNCiAgICAgICAgICAgICAgICAobGFtYmRhICh2YWx1ZSkgKHdo ZW4gKGVxdWFsIHZhbHVlICJ5ZXMiKSAobGlzdCBhcmd1bWVudCkpKSkpDQogICAgICAgOzsg V2hlbiBvcGVyYXRpbmcgb24gdGhlIHdob2xlIHRyZWUsIGJldHRlciBwYXNzICItYSIgdGhh biAiLiIsIHNpbmNlICIuIg0KICAgICAgIDs7IGZhaWxzIHdoZW4gd2UncmUgY29tbWl0dGlu ZyBhIG1lcmdlLg0KICAgICAgIChhcHBseSAndmMtZ2l0LWNvbW1hbmQgbmlsIDAgKGlmIG9u bHkgZmlsZXMpDQotICAgICAgICAgICAgIChuY29uYyAoaWYgbXNnLWZpbGUgKGxpc3QgImNv bW1pdCIgIi1GIiBtc2ctZmlsZSkNCisgICAgICAgICAgICAgKG5jb25jIChpZiBtc2ctZmls ZSAobGlzdCAiY29tbWl0IiAiLUYiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG9yIChmaWxlLXJlbW90ZS1wIG1zZy1maWxlICdsb2NhbG5hbWUpDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy1maWxlKSkNCiAg ICAgICAgICAgICAgICAgICAgICAgKGxpc3QgImNvbW1pdCIgIi1tIikpDQogICAgICAgICAg ICAgICAgICAgICAobGV0ICgoYXJncw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs b2ctZWRpdC1leHRyYWN0LWhlYWRlcnMNCg== --------------0ACF15F4D6C02D5C70718491-- From MAILER-DAEMON Mon Jan 02 13:54:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO7kK-0003sE-Dg for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 13:54:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO7kI-0003s6-35 for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:54:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO7kD-0008Tk-82 for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:54:10 -0500 Received: from mout.gmx.net ([212.227.17.20]:59343) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO7kC-0008Te-Td for emacs-devel@gnu.org; Mon, 02 Jan 2017 13:54:05 -0500 Received: from detlef.gmx.de ([93.197.215.230]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MBZ9u-1cFqYO1jpW-00AVDE; Mon, 02 Jan 2017 19:54:02 +0100 From: Michael Albinus To: Nikolay Kudryavtsev Cc: Dmitry Gutov , emacs-devel@gnu.org Subject: Re: Patches for Emacs 25.2 References: <877f96t9oc.fsf@gmx.de> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> Date: Mon, 02 Jan 2017 19:54:01 +0100 In-Reply-To: <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> (Nikolay Kudryavtsev's message of "Mon, 2 Jan 2017 21:43:39 +0300") Message-ID: <87ful15m46.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:0PUODiM3Lpw9q7Xaaz3dGrWHh0dkIl5hxpyzONtGkWsv1kcNTCa dKx36Fk8DwoDQrXINyIVsiyKFYIsfK+UKKkfhQDAuZZ0ZFkL2Kr6PielKLPgcUlp6lhVhAm DkiJTlbk1UC+bQQHCIPum+KWjiaefNP+3hubY/g7fYXWPlRuPXzZikZA43fBYfmC/PCUcX2 XM1DiOvp6PpY5ZQqnNKdw== X-UI-Out-Filterresults: notjunk:1;V01:K0:ZSEiaqi7xio=:QY8I3r6ogheK61GiImGGOn He/AkqAmWzTzb0ApfhXhPm7TcriBBwqWJNAwipnFmRv5Bg90ovRAxolsljqg4DP9QvAVfQjkz AOCmK8lQJFgYlz9pCcg/XLSLmTtleFdu9Szsrn8ziKDdfyoIb9yy/hwe8ACPGF4qE5zFzIRuv jxXwDHXXM73/ntd5r8QqxXyxzmS/0LDohY4T/eaxjC2B7fRhqzt9wUbS0tYp2M0O/d4a0zx2D Unss2cBzO14XWFZd7Yu9GsKQOwCClE6i8zy6+QLNpyHCTgaUm5KbQkmij2+QXTiLj+NHHrkL3 YiBq0klEgi05Mg1q5txSBSazF2UGmSA6SI/Z+G3fsY+FJOko79GDoIJrTQF5F5F4aXw0c1Axg TaXorbByprFbq59VlQefCK0ZmV1cuYOj9/oeQKzipUtilBRY/8S2J6K/weo83CH51GAdPJLKj SXcDDM3eyVdn8uBRtM+Uak+lBvIt9BFQArlaU0h2uSTsF8SnlaWqb7YLbyn/Ps0i1xk1Qabps 51lGl/IshUWZfYbcsD8x45NNTB4KplETQrw32PVbr68t4BmQ+oKEFYnEfNjf2pOYsUlc1U4Us 1OEB3g6ha8g/YtMIgZAAoXoa7iLb2fayZuHRr94elQX1IG3bocYKtZqVvfID+85noId5VNLA3 fLGSmbG1v08VzdG3u/jFUHHMap4u5t+L4CVOcSGyN32P0DhBMAWTIeCNhKvFV55fZgJilavdq 5RzmPKsPNURR1+sMiYbARvVYmiPTLORStw1qRgAzSfRE5aTH459kQz2SFsmdZe9ovogh6YcKv Rz1ZbxL X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 18:54:11 -0000 Nikolay Kudryavtsev writes: > Hello, Michael. Hi Nikolay, > Just to be clear - we're talking about the current master. That one > does not work. My original patch, or your rewrite in this thread > works. Thanks for the reply; I'll review it later. But this message is about *Emacs 25.2*, and whether a backport of the patch in master shall be applied there. Any of your original patch or my rewrite could do; it's your decision. Eli is waiting for this answer (or not; perhaps it is too late). Best regards, Michael. From MAILER-DAEMON Mon Jan 02 14:08:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO7y1-0006jp-09 for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 14:08:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52384) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO7xy-0006jY-Ba for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:08:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO7xu-0006ng-C6 for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:08:18 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:33774) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cO7xu-0006nD-4t for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:08:14 -0500 Received: by mail-lf0-x242.google.com with SMTP id y21so40742562lfa.0 for ; Mon, 02 Jan 2017 11:08:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FXfghSL5NHWEBReyn3d5fMYrRA/K0f1PB2xvh+UicVA=; b=sZcE5LYamZlTCHWAduIPfJzkhxXv+5uf3G638/tjnTn02wQ00Lp5ygmFQ7bAqzFkHj 2UWxkewgTbRp8i8rL2xOvBEwVGpA6aHFhfpdob12Hf4tFIfTlKszDQnGco4zW4szdss/ r/QwN7+kerO3s/n/LmZLREw8+151M5c3OY5fktWi0OMbAQe0ABSfRdp+3BesQaNlrKtv uV5tNwd1O+WVK2w6pnzlCh7JfAlhzfmDBZWZR1oqHs2dXEai4kVEGPMWYguCVLbijvA6 RV7qlUdqTggw2C9xesAJhgPNm/Zx+izE0Vq7tDWixd1y3Nj39jjdRLNAEgwzAthw+zKE y8gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FXfghSL5NHWEBReyn3d5fMYrRA/K0f1PB2xvh+UicVA=; b=cWJIzMvyi4HWyE8wniTGvVNConadPPwJcFdz8mL3B80TDJPR7otes+0r0xL+wwqhuv KHasA2/jQK+poqsKmvXZ42qv+icX/BBB+HiPK5u8lkqshYPiJdYpc6+IeqbgMq70nZUT Hdh9WLlvB5ysLzsQ+mVSJcy3mbNMDMl9Kgs+NfBNmDOShO60lHlMUhOUKG7AhSBDbZ06 bL6UINRGQ4e0UNk0iV/t9H01FoPgQ5zGOfs7YF+zZP6+YifA3hZU9/jDcfo1x00N340e gMViouhZnQHj1GwWklS7vJeRsCtEHjg9SFO5YF6uIufk4df728rOnaQo2gFLR4YBJDfY 2w+w== X-Gm-Message-State: AIkVDXI0Sks/HByoaEIqheY3fcq/uLig2COnzLSueDedZ3SBtpmM+qVtO+oknrk6dcCZLg== X-Received: by 10.25.196.72 with SMTP id u69mr17487282lff.32.1483384092732; Mon, 02 Jan 2017 11:08:12 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id r21sm15840812lff.4.2017.01.02.11.08.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 11:08:11 -0800 (PST) Sender: DG Subject: Re: Patches for Emacs 25.2 To: Michael Albinus , Nikolay Kudryavtsev References: <877f96t9oc.fsf@gmx.de> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> <87ful15m46.fsf@gmx.de> Cc: emacs-devel@gnu.org From: Dmitry Gutov Message-ID: <0993f894-bd76-d01c-fafa-7ebc183e778c@yandex.ru> Date: Mon, 2 Jan 2017 22:08:10 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Thunderbird/50.0 MIME-Version: 1.0 In-Reply-To: <87ful15m46.fsf@gmx.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 19:08:19 -0000 On 02.01.2017 21:54, Michael Albinus wrote: > But this message is about *Emacs 25.2*, and whether a backport of the > patch in master shall be applied there. Not really, my question was why the code in master is different. I was uneasy to accept the patch against 25.2 without clearly knowing the reason of the difference. > Eli is waiting for this answer (or not; perhaps it is too late). I imagine he's waiting for my choice now. From MAILER-DAEMON Mon Jan 02 14:13:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO83K-0000AK-Gz for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 14:13:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53360) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO83H-000095-GH for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:13:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO83D-0000oe-JK for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:13:47 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:34080) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cO83D-0000nA-AP; Mon, 02 Jan 2017 14:13:43 -0500 Received: by mail-lf0-x242.google.com with SMTP id d16so28459898lfb.1; Mon, 02 Jan 2017 11:13:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=Tx9zMQy2b77mHZTd1/mJE0lnOn6Q6BgCtrlHmSH1RzE=; b=FL9zlyoQeaxF5fbhruWdkLxLJsWuqC1cDRToxIrXQrW58iD5z5UbB+EDWbJTU1PG1y ooocrWqSlZ1Ujz6KE5DshBRYmOPgqsV2WFs3fGjInA9dVmp3fH7BNmgQ3lYbX7EtRJ83 NJWPnB3a4K7/wCeHgIt7ClwXGKnkIoAlftKP7KjWnD/kHvL+fK/TwqDMxWQKzhXiX8Pi BsDKyJ2oG0zW2VDUtUsuU0WolGAjzCOMjEckmjQLOZKcarX/Ji/CdEvRfAPCt2S5cq9m e2WIlQ0oYe65KDXWR9e61YTcDHAdKhNvvB7QDM+cvsODPmoeAHgX88ilzgNXLIM39iaq g+IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Tx9zMQy2b77mHZTd1/mJE0lnOn6Q6BgCtrlHmSH1RzE=; b=fgYFq7yCmc4heEKwCek9sTo43NvGNqSwaJBxIgNleyX6X7YE6IQcmIY7g2ABeyqSDn vbwsONgyOCE5hir+1a0EDZ9iyu0AlHl82VOy4hSwRrGs0rDmbXMGDc4Cn2l3OysXKu3G /6gkPdu4ao62sW/HaZeEN+ggNOX9YU1ssQPhWuR2Mr1akZp0/Jz4dQyRGeP3kqglhQtF 6fPVuAWoq5l5yF5u7sdQQkjlD7+pbUS0JQyWpTRTil22LL4uAtXBy2eLgJmb2tXfskUU Qp4SrZCF7OjUCK9gEkxTlZS3QyOewE6125Uc2mbp964D5nq6uL3pxguPc0g95Q3Ub6Wj Chkw== X-Gm-Message-State: AIkVDXKfV25iCDtKgYLjUxqHrp7oYOsGoJdh2ql5yd54tLvBawOb555QePeIHMFiFXKsEg== X-Received: by 10.25.15.39 with SMTP id e39mr21695129lfi.117.1483384421968; Mon, 02 Jan 2017 11:13:41 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id d135sm16027149lfg.12.2017.01.02.11.13.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 11:13:41 -0800 (PST) Sender: DG Subject: Re: Patches for Emacs 25.2 To: Michael Albinus , Nikolay Kudryavtsev References: <877f96t9oc.fsf@gmx.de> <837f96xgp5.fsf@gnu.org> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> Cc: Eli Zaretskii , emacs-devel@gnu.org From: Dmitry Gutov Message-ID: Date: Mon, 2 Jan 2017 22:13:40 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Thunderbird/50.0 MIME-Version: 1.0 In-Reply-To: <877f95deig.fsf@gmx.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 19:13:48 -0000 On 18.10.2016 15:32, Michael Albinus wrote: > I don't decide whether such a patch shall be applied; it shall be > decided by the vc maintainer. But in case of, the patch could be written > shorter: Trying this patch again, I'm getting these byte-compilation warnings: 712 22 warning reference to free variable method (emacs-lisp) 712 29 warning reference to free variable user (emacs-lisp) 712 34 warning reference to free variable host (emacs-lisp) 713 50 warning reference to free variable v (emacs-lisp) 1503 1 warning the following functions are not known to be defined: with-parsed-tramp-file-name, tramp-make-tramp-file-name, tramp-make-tramp-temp-file (emacs-lisp) Which probably means that we need to load Tramp somehow at least during compilation, for the macro. And also declare the missing functions. From MAILER-DAEMON Mon Jan 02 14:54:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO8gz-0007JK-I1 for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 14:54:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO8gx-0007JD-TV for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:54:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO8gu-0007vk-U2 for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:54:48 -0500 Received: from mout.gmx.net ([212.227.15.18]:57776) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO8gu-0007v1-J3 for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:54:44 -0500 Received: from detlef.gmx.de ([93.197.215.230]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M6AbC-1chJVb1U9y-00yAUm; Mon, 02 Jan 2017 20:54:41 +0100 From: Michael Albinus To: Nikolay Kudryavtsev Cc: Dmitry Gutov , emacs-devel@gnu.org Subject: Re: Patches for Emacs 25.2 References: <877f96t9oc.fsf@gmx.de> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> Date: Mon, 02 Jan 2017 20:54:39 +0100 In-Reply-To: <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> (Nikolay Kudryavtsev's message of "Mon, 2 Jan 2017 21:43:39 +0300") Message-ID: <878tqt5jb4.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:GuQ3eK+wdFGdmGO22Ln9J/b83iyQGGwW+iKxqjWPHq6TKdn8g9Y BzKU9uNx9OfIrCWi5a4gb+YVLk+g8Il6mass7FA+GD3P0PEcjlMicIbSbVQxBDU8LVc6YLK cMcf6pyCAqQgRBx+d/OhMFJOgjLn/Jf3dLU4cUrkom9iyN/VSvGFDFMXJLxiDffoZ4LBune oCQ2xw1IBM5gLv81y7lJw== X-UI-Out-Filterresults: notjunk:1;V01:K0:H7+Zcndqa68=:NuB3NaeZIy9Xt3WkbY8eKZ 2GGMFOA35bdBgD6zlAF2AixB6lAWJc4eCw92XsncZFftgKCM7FNIBSHWA3sU1FGqGY1vT0B+Z qefh2DA8NMtmTJlch9kXWE+0FPLyTqmp4TbvsYdAu7maq/+kGtBPDEAub7qKTd5hOLYZ+AStx JI9MMYhfbO5vUOqILhlaITLpukaz+cNCEki4trl+XYNaN6vCDGXCOlyXLXJIyoCoFC/c0lilw CD6mYTsXSolmqanmEd6RQSsM1UVZ9Io6lp7d+A1VYU9vMdjd95KL7F/nFGk0Np+O0oYNIdNTo g/yRR6N1bO1A+XaWaQ3GAwSJO4Z2MMCjPTEzAIlkwAVXc1JUGqPius9xcUwZ4FHzi8VSvlC8y BqB3XNYDkBE0YDgp42z+cLIcayS1l4SaqaBMHtmZkxRKViN9DQZ2nqfjkD0RbB8flBge0fyYs Lz+C3sIc9L22BV9x/FldequggYpZuKwLl0paL6YcAv+zT3tQiUzCKbwRP8Rp4ivhj5jBH0HWa SGRyi66KPSnwvv7vlBellwf7mHFqn4mYwgJAWWRLoFDsBsVLClvRaLXFZjLt3HrtvQJqCpYK4 8FwEb3nLEpJjAqrPEWThbP97Pzem6FTPmAAvX4Sjt9Gis+1GAhwdtn6HXpKVFqsPLJ8tJMUXh yXRCw9FnB1okvZNQ58SDJJ1IqQTQ47dF5bdo5j3hRkLlG1ObbBaycao7YgQUtblt1szzq+8Rp WyqHO1n5Te2+04YGtyCXddrsXEaYGRvvRUkH8zGbqtvAsFTUjI3ETybW+neiWwKd/qa8vrXgj k60Z+kR X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.18 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 19:54:49 -0000 Nikolay Kudryavtsev writes: > Hello, Michael. Hi Nikolay, > - (nconc (if msg-file (list "commit" "-F" msg-file) > + (nconc (if msg-file (list "commit" "-F" > + (or (file-remote-p msg-file 'localname) > + msg-file)) What's wrong with (nconc (if msg-file (list "commit" "-F" (file-local-name msg-file)) > Best Regards, > Nikolay Kudryavtsev Best regards, Michael. From MAILER-DAEMON Mon Jan 02 14:56:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO8ib-0007uu-SD for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 14:56:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59690) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO8ia-0007t3-9O for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:56:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO8iX-0000Jg-8p for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:56:28 -0500 Received: from mout.gmx.net ([212.227.17.22]:58342) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cO8iW-0000JQ-Ua for emacs-devel@gnu.org; Mon, 02 Jan 2017 14:56:25 -0500 Received: from detlef.gmx.de ([93.197.215.230]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MaE4a-1c4PyU0wp6-00Jtmc; Mon, 02 Jan 2017 20:56:18 +0100 From: Michael Albinus To: Dmitry Gutov Cc: Nikolay Kudryavtsev , emacs-devel@gnu.org Subject: Re: Patches for Emacs 25.2 References: <877f96t9oc.fsf@gmx.de> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> <87ful15m46.fsf@gmx.de> <0993f894-bd76-d01c-fafa-7ebc183e778c@yandex.ru> Date: Mon, 02 Jan 2017 20:56:16 +0100 In-Reply-To: <0993f894-bd76-d01c-fafa-7ebc183e778c@yandex.ru> (Dmitry Gutov's message of "Mon, 2 Jan 2017 22:08:10 +0300") Message-ID: <874m1h5j8f.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:4vPIDKWA0h2lilSJhQXWBGEkRu37/eYqLpboSOw3oYyj0KQ2I12 K31hte1nI7NL5sxWLPyjDvWJguxnZGAcDcx7zbQEy+YfMppjb8uasVWXlQEgoTINwDzCrWb T+NgaoF87slaG5BfkBIV0vHzPi88FUttGRWWNLrvnsWCiqXC+trhZ0KIz8mNzQ2YYmoL3ox 9NrSPDDt4cvgzihXYLffA== X-UI-Out-Filterresults: notjunk:1;V01:K0:ZNs6qTkqSHs=:+U2ch1bfNJEl1RqATwDASs zAxxzUG3S1ZQ7SU3TaO7H6MAWP6d36vIxTTmQD1SavWw2lvv8gxB0llZH7Wd10A8AE94aYf0I cLIGcO2ZKWCfN5xB2Sx4Li1c5VHqzpN2jRgsqr9AXgltbe6FMAMvZnXBMxqSM60oPBXByvmAL QFTCCHNeBXG/LcRgnEHxfXcgkC1uUfmtGzPM+7sQzYIrIRKVRJ8rQk4P4CYFjUpG9TGb/Jp83 Ocj62T8ihf1C0XHi7epSQ5/sSnsr1W7vnBGWEMIMJlVtyB6i29gEDd0PBHjJzh0bUZunmLc1C mZze/70bahwiWjD9xRyP3tkcb39jPg/nhPf0R31e3qsYlais6DhrSIELYpJjZs5k00eW/kgLJ hS3siHZRcm27Ec+GV8fRkzltgJRxDMbQrrZh5NPMhtkJacJOFhVF6oAiRRsh65BaljP8GY9WM MAf5nv1yPv4SFYa39tjT6hhVNgZ+3QTCkXDpy5G2J2nA90S7O/HzhZJmiCY9csAeALtybiPk0 tYlvYudxc01GHbfbBGPckH5R7NnkLBBH9xA4IGmnW3ZdrT5N8AdL4gkDE+JOwPsw9Gjtco6Rg sZ4xJ3Vo9VkWZwD2PVhb78r0EL0tL3b3mOWU3xfghpx4zDuaDGKs5SuzBAz5LsSzZVJ4gxazv dxz9yWd8Hd1APFm88dJBwFbyG7RF4Bfzf67v9D/zMe6PJAEH1uaNj34Pk+wNk0o7jUNkIsfMi XPeJlsdAxNekWZ0EywzaN+jVYok9vKpV/zhB5LyvaxuHdnL3epvB2B5ujDi6ryCqj4/V+XirW 7J7urAZNwWyJKA0uFufyApt49XyaUrC21yUxqG2QRTt1A6czlTDEFxMIBgmVlzdswT3Am37gS rAEMk2cOVhePp2ap4R11xorKpBTQzYiXyM5i+mvEHMHZ0Kh6zpLtYH3fKYmkiomexLqeUvvZC kZ8gsnR6mWp0kIyXVZIJ4QsfBDR7pIZ91Z2sNfdJ85QEA4nbOZBVoB9/Esu8XXIV6SEImSdzc Hzl+EUr+y9NGw+pzWU9AtLQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 19:56:29 -0000 Dmitry Gutov writes: > On 02.01.2017 21:54, Michael Albinus wrote: > >> But this message is about *Emacs 25.2*, and whether a backport of the >> patch in master shall be applied there. > > Not really, my question was why the code in master is different. I was > uneasy to accept the patch against 25.2 without clearly knowing the > reason of the difference. The code in master uses newly introduced functions, which are not available in Emacs 25. Best regards, Michael. From MAILER-DAEMON Mon Jan 02 15:08:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO8u7-000756-Rq for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 15:08:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34139) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO8u5-00072Z-1J for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:08:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO8u1-0005BN-TB for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:08:20 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:36142) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cO8u1-0005BF-Kg for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:08:17 -0500 Received: by mail-lf0-x243.google.com with SMTP id t196so24200572lff.3 for ; Mon, 02 Jan 2017 12:08:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=+bLruGN2OX3+dRApS16F2+IyrPx8AwGGK4CsZPQh+wM=; b=tL9BmOIYC8c5Wyur7CJPE1T55gTe7eK3Zce7l7qK6dSj4VPKpRdlmaecdxTK4gouxI xyicpQmdamgFv8e6TQqKUcpQHfRCAyJ6Tx5vuEXxJGSkM6DhGtO0dCeQ4ccdPF1KvoDi 1jjFEN5D3cYFycNSPWwn9ToBOril17mqCwNZHmkRWuTF+skJL5O3gYbsbSOYoWFHZnU3 kfye/XRt5xuX5KVkAuGyiiwaA1UsjG91M8IB/TsUmiiNeBjUHdLX/TLYBLylSf2a2F9/ e/bemfNiDsqP26quaQeQecNSGtfrZUt0CY3snd2skQvK8+myT4jnXiM0Ga6vPVhr3CSY rUcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=+bLruGN2OX3+dRApS16F2+IyrPx8AwGGK4CsZPQh+wM=; b=AJFB67HwkXRJEx+XyxFizz2s5DJw7ivgoBQS2b0t3wmkeS1D3xPpLcXkbvnUAPJfni 8oFNmJknx5r7LMoHGrTLbVJ9mB+bC+8JV6t/lbLOJDDzObDqxQS8w+EDwm7y5ZdEnget 7r3mbHohDWnFJUsxB+xj8OR71ngYl9ba58yxQGMJvffEP5V2ChRrKev03YP6aVgG9+Fv QbqehzeiBssFoHU9AF+PoBBV4M3rYzpzXzuPcCO36PTO2lWi15gSMNf6NkiHvouDsX8d QrS0FS0Uh5e715XoaE4pHmHLEDHSiDMPWoJCfATcSvk4A/z7WM/FMC2OGdzda+5NQzSO DXgw== X-Gm-Message-State: AIkVDXIG3a0v8waQiRpBkJWhmjY+VeyLBWx/acMiy67xD+kR5NFLs6BynN4bqaln8Ig/ug== X-Received: by 10.25.74.79 with SMTP id x76mr16704484lfa.146.1483387696268; Mon, 02 Jan 2017 12:08:16 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id a184sm16174291lfb.34.2017.01.02.12.08.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 12:08:15 -0800 (PST) Sender: DG Subject: Re: Patches for Emacs 25.2 To: Michael Albinus References: <877f96t9oc.fsf@gmx.de> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> <87ful15m46.fsf@gmx.de> <0993f894-bd76-d01c-fafa-7ebc183e778c@yandex.ru> <874m1h5j8f.fsf@gmx.de> Cc: Nikolay Kudryavtsev , emacs-devel@gnu.org From: Dmitry Gutov Message-ID: Date: Mon, 2 Jan 2017 23:08:03 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Thunderbird/50.0 MIME-Version: 1.0 In-Reply-To: <874m1h5j8f.fsf@gmx.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 20:08:22 -0000 On 02.01.2017 22:56, Michael Albinus wrote: > The code in master uses newly introduced functions, which are not > available in Emacs 25. We were discussing the use of local vs. remote file names, in particular with write-region. Newly introduced functions are tangential. From MAILER-DAEMON Mon Jan 02 15:52:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cO9ar-0002oh-8S for mharc-emacs-devel@gnu.org; Mon, 02 Jan 2017 15:52:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cO9ap-0002oQ-7s for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:52:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cO9al-00072w-Bk for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:52:31 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:33422) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cO9al-00072Y-56 for emacs-devel@gnu.org; Mon, 02 Jan 2017 15:52:27 -0500 Received: by mail-lf0-x243.google.com with SMTP id y21so40922589lfa.0 for ; Mon, 02 Jan 2017 12:52:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:cc:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=nBkv7KoNuGLTyFMX58iW4xeH+NiX2zdciLjRaxAGXpY=; b=fnzjYv/pWyJK4Q/4z4dBg53I+P4F5GTBKuhhNrcIh400LRt0AvKn5bP0GMxtR47Y/G 0rJlQ/DPH1SR6Tr0k70Pch9aV0+ThUTMoGCVpq3EOaMD/HySq8MH23yELbCjdMcrfjlN 3cEdz4DzB4oo0SdZF9MuqnYzUL7x+oscNzEo5EOnyshsumeNIp00sbWs7sl8DB9/VDXu +obazPVY48ky6dmoA0qkalnMDcbuawaI/dtqdptgImQ3spqWYGaBTKcxwdQ6Y0TxYQ6E RUetcHqMx9ZlE7zB/E27A0+LkODgtRQ2IYI3fGRQjfEtkkCmyRAMF7dErVS5l4dfFzmH COzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:cc:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=nBkv7KoNuGLTyFMX58iW4xeH+NiX2zdciLjRaxAGXpY=; b=a2aVuw1RRKCVOdvupAYwGp4y0MrmkciY8GHFeHBh7IuE/S/N0DHFu5aALke5kqC2J3 jPQ+NToUwzyZbI8G+RfuKOrQR3OS8RjpQHhFRDX04QIohc+NMBHVNDX1S3J9ksmli2zD KpTEHDvyMTB7rP2TqOxvz+3a4ei0Q4l9mz+R0yIT7ilekSfcT5G5o6fovhoC6iTKxc7N dbjaxNcGYh+NoI+C26GuwYPUn/rKf3d4kf4q/ihU1M3RQ94+m0AXb5USGozZ+43JXfie jvec+q1ghdFhtyhna3YxVEub+pFVuQSEbdXXXS4ovH6+zN3AVI6g4TlNrp2BvjraY0dB RrWQ== X-Gm-Message-State: AIkVDXJQwcksi+2grkVSNQe3tvhDeVUmjpX9AN+8cYjlq2SWXLRwjvnq6a9nr+FHjjF0qA== X-Received: by 10.25.56.22 with SMTP id f22mr18190957lfa.0.1483390345759; Mon, 02 Jan 2017 12:52:25 -0800 (PST) Received: from [192.168.199.6] (broadband-95-84-209-126.nationalcablenetworks.ru. [95.84.209.126]) by smtp.gmail.com with ESMTPSA id o91sm9292931lfg.17.2017.01.02.12.52.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 12:52:25 -0800 (PST) From: Nikolay Kudryavtsev X-Google-Original-From: Nikolay Kudryavtsev Subject: Re: Patches for Emacs 25.2 To: Michael Albinus References: <877f96t9oc.fsf@gmx.de> <87zim2rtck.fsf@gmx.de> <9181f38b-8d6c-c61e-90b0-d44a9e048c9e@gmail.com> <87wph6qd1d.fsf@gmx.de> <831szexb54.fsf@gnu.org> <83shrtx5dv.fsf@gnu.org> <752ec49c-da5b-bf86-e31d-294c362c04cb@gmail.com> <877f95deig.fsf@gmx.de> <6f656e32-a44c-f874-3290-f47b8828078e@yandex.ru> <87oa1r64vg.fsf@gmx.de> <2d749ac6-636b-14f2-e5a9-dcc0e9ba7541@yandex.ru> <8760nzfunl.fsf@gmx.de> <05d06a0a-e6df-5d54-01bf-7bb9447a2f7e@yandex.ru> <158f0095-926f-2b8e-034c-4a05a1f08175@yandex.ru> <3e723e03-6fff-7500-aa91-e8de73519490@gmail.com> <52d971c7-2c28-84f7-437f-3aa0ce0b62bb@gmail.com> <87zij96480.fsf@gmx.de> <27731f0d-8eb5-9647-f4b6-19141b1aa9bd@gmail.com> <878tqt5jb4.fsf@gmx.de> Cc: Dmitry Gutov , emacs-devel@gnu.org Message-ID: Date: Mon, 2 Jan 2017 23:52:24 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <878tqt5jb4.fsf@gmx.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jan 2017 20:52:32 -0000 > (nconc (if msg-file (list "commit" "-F" (file-local-name msg-file)) Yeah, this seems like a better way. Just haven't thought of it. -- Best Regards, Nikolay Kudryavtsev From MAILER-DAEMON Tue Jan 03 05:19:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOMC4-0001ln-FN for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 05:19:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56570) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOMC0-0001kE-E8 for emacs-devel@gnu.org; Tue, 03 Jan 2017 05:19:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOMBv-0001bX-Bo for emacs-devel@gnu.org; Tue, 03 Jan 2017 05:19:44 -0500 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:33926) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOMBv-0001bC-24 for emacs-devel@gnu.org; Tue, 03 Jan 2017 05:19:39 -0500 Received: by mail-pg0-x243.google.com with SMTP id b1so33141655pgc.1 for ; Tue, 03 Jan 2017 02:19:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=/7YFoZDNMpXl+9byIuRkCjuNZZzrvz1nle7SZ8vlTmk=; b=pWubeIvDTY0ORUZ6IE0ekMLqDZ9Ov8Y/va9Zj6MAHt77Tzb31Su43TFewKwM5WGOYR HJP/dvwFbZ20kmiWGhvR5R+88HEfuZT8IuAFupQRXRgBm6kX5abh7qUNKDodXWLFTSPa 7LEF0CwUgHVv+RXOzIZyV2w28U9cicO/ivrskeKvxslQIngTr0jgcY/oS23pcJOr3UJr adYP5ZjWbSnUxHwqiyxdnycDCiiVgxaiQbdtQbvyPs8NN0EdRqpKOi9SMW/DlzYYfz6n lFKjZ5ase7/SD2kHcdMm0XhUtvepe0P+KE5U2slU8EHpYqbVDTlqnmIHo/Ap5lIwHdHr +WjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=/7YFoZDNMpXl+9byIuRkCjuNZZzrvz1nle7SZ8vlTmk=; b=tbvRc7u0ObaYx5epzWIAvP5DVHrcx/KnnDyVABgxzAzqUT7A66FDgWuG/vXaeWBY/H mPVF1z/FY2CDc/+ul9kvYMeilD4sHBK0iBgGivKAEqYOVbFmjMKiIV7tzuqcPUYSG/2a a+LyyjpsGInjnRSDixAnfmbLCQZMzALwuh2lA1AiyzNujyO3UXxnbCMK+YtesMX5P+/c gKcaYVeyL9C6I549y7YZ5dKAo8VrWw8oHT4wkfebAnpXtYM6ZUrK3JK7YSqs8rN2Yl13 pJ9Y1KKCYf4qZSkVCBgboVd7RhivZ2pjVYe1GQfNTl1EYcLS5cUI6tSHBHVNSitx6kQA 3muw== X-Gm-Message-State: AIkVDXJWOzeCxWlrHMsDmnCc4l+RHG1q7gLU3RyUTy30R4x2POtW5A/JpJJD1lQhLVplPQ== X-Received: by 10.84.132.35 with SMTP id 32mr134921881ple.44.1483438778109; Tue, 03 Jan 2017 02:19:38 -0800 (PST) Received: from calancha-pc (217.225.128.101.dy.bbexcite.jp. [101.128.225.217]) by smtp.gmail.com with ESMTPSA id u3sm138742386pfk.3.2017.01.03.02.19.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 02:19:37 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Tue, 3 Jan 2017 19:19:35 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Juri Linkov cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region In-Reply-To: <87d1g55h8d.fsf@mail.linkov.net> Message-ID: References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 10:19:46 -0000 (Re-send with emacs-devel@gnu.org as CC) On Mon, 2 Jan 2017, Juri Linkov wrote: >>> If you need to see whether matching lines are before or after >>> the current line, then what do you think about showing and highlighting >>> the current line in the output *Occur* buffer? >> Inserting the current line, which might not match the regexp, in *Occur*; >> i am not sure about it. >> Please, try the second part of the patch, and let me know if looks >> useful for you. > > I tried it, and I'm not sure - the problem is that it's not obvious > that the highlighted line is the current line. Maybe better to put the cursor > in *Occur* on the first matching line after the current line? But I doubt whether > users will like this change in cursor positioning. See the updated patch. Play with it and let me know how you see it. In my case, just the first part of the patch, i.e., to run `occur' restricted to the region is all that i need. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >From d2334a303db81f69b09dfe09d3332905dab6be68 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Tue, 3 Jan 2017 19:00:08 +0900 Subject: [PATCH 1/3] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional args START, END; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 48 +++++++++++++++++++++++++++++++------ 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index d91204b21b..cb01e03971 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -301,6 +301,8 @@ substituted by a home directory by writing it as "/foo:/:/~/file". * Editing Changes in Emacs 26.1 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..cedf8e0c67 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines start end) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. @@ -1369,6 +1374,13 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. +Optional args START and END, if non-nil, mean restrict search to the +specified region. + When START is non-nil and END is nil, END defaults to the last + accessible position in the current buffer. + When END is non-nil and START is nil, START defaults to the first + accessible position in the current buffer. + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1398,23 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (list (and (use-region-p) (region-beginning)) + (and (use-region-p) (region-end))))) + (let ((in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) (defvar ido-ignore-item-temp-list) @@ -1545,13 +1572,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1713,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (= matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1723,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) -- 2.11.0 >From 5a27c052cc1469c72a57d624010a2a8d0c0543b9 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Tue, 3 Jan 2017 19:00:29 +0900 Subject: [PATCH 2/3] Show current line highlighted in *Occur* buffer * lisp/replace.el (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. --- lisp/replace.el | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lisp/replace.el b/lisp/replace.el index cedf8e0c67..448ac2cf3c 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1364,6 +1364,8 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) (defun occur (regexp &optional nlines start end) "Show all lines in the current buffer containing a match for REGEXP. @@ -1410,7 +1412,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1581,6 +1589,9 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1687,6 +1698,12 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and (not orig-line-shown-p) + (>= curr-line orig-line)) + (insert + (concat + (propertize orig-line-str 'face 'query-replace) "\n")) + (setq orig-line-shown-p t)) (insert data))) (goto-char endpt)) (if endpt @@ -1700,6 +1717,12 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (unless orig-line-shown-p + (with-current-buffer out-buf + (insert + (concat + (propertize orig-line-str 'face 'query-replace) "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf -- 2.11.0 >From 366d7e5118d1411b7b43925c3a95bcb50a04db90 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Tue, 3 Jan 2017 19:00:47 +0900 Subject: [PATCH 3/3] occur: Set point on the first matching line after the current one * lisp/replace.el (occur-current-line-face): New face. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'occur-current-line-face'. --- lisp/replace.el | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index 448ac2cf3c..0c67fe3640 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1081,6 +1081,12 @@ occur-mode-find-occurrence-hook :type 'hook :group 'matching) +(defface occur-current-line-face + '((t (:inherit lazy-highlight))) + "Face for highlighting the current line in *Occur* buffer." + :group 'matching + :version "26.1") + (put 'occur-mode 'mode-class 'special) (define-derived-mode occur-mode special-mode "Occur" "Major mode for output from \\[occur]. @@ -1366,6 +1372,7 @@ occur--region-end (defvar occur--matches-threshold nil) (defvar occur--orig-line nil) (defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) (defun occur (regexp &optional nlines start end) "Show all lines in the current buffer containing a match for REGEXP. @@ -1517,7 +1524,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1569,6 +1577,10 @@ occur-1 (if (= count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1581,7 +1593,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1598,6 +1611,7 @@ occur-engine (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1698,12 +1712,17 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf - (when (and (not orig-line-shown-p) + (when (and (not multi-occur-p) + (not orig-line-shown-p) (>= curr-line orig-line)) (insert (concat - (propertize orig-line-str 'face 'query-replace) "\n")) - (setq orig-line-shown-p t)) + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1718,11 +1737,16 @@ occur-engine (goto-char (point-max))) (setq prev-line (1- curr-line))) ;; Insert original line if haven't done yet. - (unless orig-line-shown-p + (when (and (not multi-occur-p) + (not orig-line-shown-p)) (with-current-buffer out-buf (insert (concat - (propertize orig-line-str 'face 'query-replace) "\n")))) + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1756,8 +1780,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) -- 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.5) of 2017-01-03 Repository revision: 975b2acfe6a4e246631c372063d7bdef0f832d3d From MAILER-DAEMON Tue Jan 03 08:36:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOPG8-0000io-81 for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 08:36:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOPG6-0000if-7f for emacs-devel@gnu.org; Tue, 03 Jan 2017 08:36:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOPG5-0003y0-8S for emacs-devel@gnu.org; Tue, 03 Jan 2017 08:36:10 -0500 Received: from mail-pg0-x236.google.com ([2607:f8b0:400e:c05::236]:36459) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOPG5-0003xg-28 for emacs-devel@gnu.org; Tue, 03 Jan 2017 08:36:09 -0500 Received: by mail-pg0-x236.google.com with SMTP id f188so214983919pgc.3 for ; Tue, 03 Jan 2017 05:36:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=play-bow.org; s=google; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=XhYDFExYExoauu+mHPgRlP8Uxghl/epguQ269o7LY7c=; b=PTZoBRfiv4jKBw4VbasxJukOIrgOZU3vyAzLHSl+qWLuCnDeCehd37QrVYPE0FnsgS vkYb767XxuXussRvqJ7oTaim2sRIr4UZhsMul0kuUV3pTnpsav+ch55aY1SyVtmdKL7g 6KCl1V8BPaTZaPS7eQShOoAXskPSwoPrY6j/8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=XhYDFExYExoauu+mHPgRlP8Uxghl/epguQ269o7LY7c=; b=Ge5aXaEFuBtWzXZU7hiHpdsO9lC0+u9mU8LKy2VdnlugYp7vpFJZK24JmTyVg3g1FZ 7b1jPf/GLFHYH3he6p/K7a9xmcPeicSfA+jp1jirm/YkMV5ls+I8jG4iVieO5cW9GAd4 CGhtVZbqfczDRMo661wt17OFRh05lfLe2g/qn8GrtUja8S5zC+DUGdQdqOcuZnRnki8k uK6LS2GqU+sRcPH1YCu+ejWzHhSbbevL1L3qoDzZZbpCaZc1zTl+Fg48efvvU6OvtqYT mSnEYIEcZl2YsjriyHIUYV+97okWaqvX4ZkDOU5n8R1o6Q/hz/Bma7W9Q3D3F8NHZJfV +qBw== X-Gm-Message-State: AIkVDXKtco98akU9OlIVmvGeM7UtbXkwJBOCBI11HY2VYm4nf+XecPnG/nR/1o5DtR0N4g== X-Received: by 10.84.134.3 with SMTP id 3mr134534543plg.90.1483450566313; Tue, 03 Jan 2017 05:36:06 -0800 (PST) Received: from ?IPv6:2602:30a:2ce4:c900:8432:5694:7dc5:93eb? ([2602:30a:2ce4:c900:8432:5694:7dc5:93eb]) by smtp.gmail.com with ESMTPSA id p25sm140061270pfk.20.2017.01.03.05.36.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 05:36:05 -0800 (PST) From: Bob Halley Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: UI input unresponsive on macOS Message-Id: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> Date: Tue, 3 Jan 2017 05:36:01 -0800 To: emacs-devel@gnu.org X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 13:36:11 -0000 I was running from the master branch with a build containing the recent = macOS event changes, e0e5b0f4a4ce1d19ee0240c514dedd873d4165dc, and the = UI became unresponsive to the mouse and keyboard. I had to kill Emacs = by hand. I was in the middle of something so I rolled back to my prior Emacs = build. I also am not sure how to debug this. If someone tells me how = to gather info that=E2=80=99s useful should this happen again, I=E2=80=99m= willing to reinstate the build and report if it fails. /Bob From MAILER-DAEMON Tue Jan 03 09:15:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOPrs-0002NN-Fv for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 09:15:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOPrn-0002KI-GQ for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:15:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOPrk-00040c-BO for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:15:07 -0500 Received: from ocolin.muc.de ([193.149.48.4]:19210 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cOPrj-00040G-WB for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:15:04 -0500 Received: (qmail 92790 invoked by uid 3782); 3 Jan 2017 14:15:00 -0000 Received: from acm.muc.de (p548C6A5F.dip0.t-ipconnect.de [84.140.106.95]) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 03 Jan 2017 15:14:59 +0100 Received: (qmail 4842 invoked by uid 1000); 3 Jan 2017 14:14:44 -0000 Date: Tue, 3 Jan 2017 14:14:44 +0000 To: emacs-devel@gnu.org Subject: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170103141444.GA4649@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 14:15:11 -0000 Hello, Emacs. I'm in Emacs 25.1. I want to M-x compile-defun the function `edebug'. When I attempt this, I get the "warning" messages: Warning: Unused lexical variable `edebug-break' Warning: Unused lexical variable `edebug-global-break' Warning: Unused lexical variable `edebug-break-condition' Warning: Unused lexical variable `edebug-break-data' Warning: Unused lexical variable `edebug-breakpoints' . These variables are dynamic ones, declared earlier on in the file like this: (defvar edebug-breakpoints) , i.e. without initialising expressions. I tried C-x C-e on each such declaration, then repeating the compile-defun, to no avail. lexical-binding is set in edebug.el. Emacs should be able to compile successfully in such circumstances, surely?. What am I doing wrong, here? -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Tue Jan 03 09:36:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOQCY-0006Qw-HK for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 09:36:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46165) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOQCW-0006P3-9l for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:36:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOQCR-0000gT-R3 for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:36:32 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:36639) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOQCR-0000fq-Fq for emacs-devel@gnu.org; Tue, 03 Jan 2017 09:36:27 -0500 Received: by mail-wm0-x233.google.com with SMTP id c85so200796987wmi.1 for ; Tue, 03 Jan 2017 06:36:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=l1sS+b3emZRryDHKvemwjL8fu1LNXXCV1DmXt9AUE1w=; b=juAIc8AxVbZKiLRr7UUWFRnmsg/NIB2RYw98XENJoSyBi7zdGpMLAvMR9oLrT80ZPd R4jmCCKcV2urb2b75FdaFlVd5j/NOeeINbrp8mi3ajVneiUT/SFWFkYWFMbkyP0JPsWK 38EW7ww0JzMkMSPMf6xf7Ob17K4yZ2llucVtp4Ze4fD+C0Ehyxdzf9U+/fFf/NGX3FDU oeCbCcgh83t/qUyb2EkqOHwSsAl4N1wWgn6uqZ7Vylh5mJhslTbrFh+9fnX41MEjtLrM daxasRTzoBGNR/uzOxk43Xh+xeWmA+8YaRuto1gIR4vVZWgTF/ByBM5gwGnJRTNgPWcO kthQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=l1sS+b3emZRryDHKvemwjL8fu1LNXXCV1DmXt9AUE1w=; b=UgWUpay2k+w63YB7Dmg5OE4HAha7BJgH5rvRJIhwoCnLoB1rB51tuiSQ/s18yohOSu xvYOfOat2nTW1/rJnP9xWtKLT41vJNN5/Mx1wsL5Z49p0em/6Cru/5mhhlF5gma0HNHh 91pSQQD3iR8oFLN1ohV7TRLh1wpzP0o9B678u6MNPv9LIxh6kagQxb6JA8yqk1pkk71q 1bRpZAzlTxGlWaoye7Tc991VrM+wjn/Bc64h+Ddpmz2P75NQWzAjzZTLy4DTu/V5XO8B wyoIVxPaSeDiRoJ5g01506K5cA2vG9Bj8gWyOGndS/GNMidRKh/xtclRfexxZOkVu2fk FtVw== X-Gm-Message-State: AIkVDXJnnIVqVVi0WK6qmQq13wV73rhQ4F4DFlFyYqxu17eBM8GF2Cp+k6GSjAZRkX+0Yw== X-Received: by 10.28.156.210 with SMTP id f201mr56150567wme.86.1483454184768; Tue, 03 Jan 2017 06:36:24 -0800 (PST) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-8471-fd78-dc83-6a18.holly.idiocy.org. [2001:8b0:3f8:8129:8471:fd78:dc83:6a18]) by smtp.gmail.com with ESMTPSA id cl10sm92993085wjb.4.2017.01.03.06.36.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 06:36:23 -0800 (PST) Sender: Alan Third Date: Tue, 3 Jan 2017 14:36:21 +0000 From: Alan Third To: Bob Halley Cc: emacs-devel@gnu.org Subject: Re: UI input unresponsive on macOS Message-ID: <20170103143621.GA41725@breton.holly.idiocy.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="mP3DRpeJDSE+ciuQ" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> User-Agent: Mutt/1.7.1 (2016-10-04) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 14:36:33 -0000 --mP3DRpeJDSE+ciuQ Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Jan 03, 2017 at 05:36:01AM -0800, Bob Halley wrote: > I was running from the master branch with a build containing the > recent macOS event changes, > e0e5b0f4a4ce1d19ee0240c514dedd873d4165dc, and the UI became > unresponsive to the mouse and keyboard. I had to kill Emacs by hand. > > I was in the middle of something so I rolled back to my prior Emacs > build. I also am not sure how to debug this. If someone tells me how > to gather info that’s useful should this happen again, I’m willing > to reinstate the build and report if it fails. Hi Bob, I’m working on coming up with a better solution. Can you try the attached patch? So far the only problem I’ve seen is that emacsclient doesn’t return to the shell when it exits. I suspect it’s because I’m not monitoring write or exeption fds correctly. If you spot any other problems, either reply here or to bug 25265. Additionally, if anyone has any better ideas of how to deal with ns_select, please feel free to let me know. -- Alan Third --mP3DRpeJDSE+ciuQ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Improve-NS-event-handling-bug-25265.patch" >From 9663d300d231242fc77f93a35219d56ba9c90601 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Tue, 3 Jan 2017 14:16:37 +0000 Subject: [PATCH] Improve NS event handling (bug#25265) * src/nsterm.h: Remove reference to timeout_handler. * src/nsterm.m (ns_select): Monitor fd changes using NSFileHandler. --- src/nsterm.h | 1 - src/nsterm.m | 62 +++++++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/nsterm.h b/src/nsterm.h index dc222a7..8b5b691 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -392,7 +392,6 @@ char const * nstrace_fullscreen_type_name (int); - (void)sendEvent: (NSEvent *)theEvent; - (void)showPreferencesWindow: (id)sender; - (BOOL) openFile: (NSString *)fileName; -- (void)timeout_handler: (NSTimer *)timedEntry; - (BOOL)fulfillService: (NSString *)name withArg: (NSString *)arg; #ifdef NS_IMPL_GNUSTEP - (void)sendFromMainThread:(id)unused; diff --git a/src/nsterm.m b/src/nsterm.m index 98fd8ab..51cccd0 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -4098,28 +4098,55 @@ overwriting cursor (usually when cursor on a tab) */ return pselect(nfds, readfds, writefds, exceptfds, timeout, sigmask); - result = pselect(nfds, readfds, writefds, exceptfds, - &(struct timespec){.tv_sec = 0, .tv_nsec = 100}, - sigmask); - [outerpool release]; outerpool = [[NSAutoreleasePool alloc] init]; + /* Set up one NSFileHandle for each fd we want to monitor. */ + for (int i = 0 ; i < nfds ; i++) + { + if ((readfds != NULL && FD_ISSET(i, readfds)) + || (writefds != NULL && FD_ISSET(i, writefds)) + || (exceptfds != NULL &&FD_ISSET(i, exceptfds))) + { + NSFileHandle *fh = [[NSFileHandle alloc] initWithFileDescriptor: i + closeOnDealloc: NO]; + /* Send a notification to EmacsApp:fileHandleDataAvailable, + which will raise an appDefined event. */ + /* NOTE: I don't think this will pick up writes and + exceptions, so ns_select may not always behave correctly. + I've yet to see a problem, though. */ + [fh waitForDataInBackgroundAndNotify]; + [fh autorelease]; + } + } + if (timeout) { double time = timespectod (*timeout); - timeout_date = [NSDate dateWithTimeIntervalSinceNow:time]; + timeout_date = [NSDate dateWithTimeIntervalSinceNow: time]; } /* Listen for a new NSEvent. */ - ns_event = [NSApp nextEventMatchingMask:NSEventMaskAny - untilDate:timeout_date - inMode:NSDefaultRunLoopMode - dequeue:NO]; + ns_event = [NSApp nextEventMatchingMask: NSEventMaskAny + untilDate: timeout_date + inMode: NSDefaultRunLoopMode + dequeue: NO]; if (ns_event != nil) { - raise (SIGIO); + if ([ns_event type] == NSEventTypeApplicationDefined + && [ns_event data1] == -3) + { + result = pselect(nfds, readfds, writefds, exceptfds, + &(struct timespec){.tv_sec = 0, .tv_nsec = 0}, + sigmask); + } + else + { + raise (SIGIO); + errno = EINTR; + return -1; + } } return result; @@ -5132,6 +5159,12 @@ - (void)applicationDidFinishLaunching: (NSNotification *)notification object:nil]; #endif + [[NSNotificationCenter defaultCenter] + addObserver: self + selector: @selector (fileHandleDataAvailable:) + name: NSFileHandleDataAvailableNotification + object: nil]; + ns_send_appdefined (-2); } @@ -5315,14 +5348,9 @@ - (void)applicationDidResignActive: (NSNotification *)notification ========================================================================== */ - -- (void)timeout_handler: (NSTimer *)timedEntry -/* -------------------------------------------------------------------------- - The timeout specified to ns_select has passed. - -------------------------------------------------------------------------- */ +- (void)fileHandleDataAvailable: (NSNotification *)notification { - /*NSTRACE ("timeout_handler"); */ - ns_send_appdefined (-2); + ns_send_appdefined (-3); } - (void)sendFromMainThread:(id)unused -- 2.10.2 --mP3DRpeJDSE+ciuQ-- From MAILER-DAEMON Tue Jan 03 10:39:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cORBa-0005c7-OW for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 10:39:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60171) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cORBY-0005bm-M2 for emacs-devel@gnu.org; Tue, 03 Jan 2017 10:39:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cORBX-0000r5-UC for emacs-devel@gnu.org; Tue, 03 Jan 2017 10:39:36 -0500 Received: from mail-pg0-x235.google.com ([2607:f8b0:400e:c05::235]:35311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cORBX-0000qo-NX for emacs-devel@gnu.org; Tue, 03 Jan 2017 10:39:35 -0500 Received: by mail-pg0-x235.google.com with SMTP id i5so151170425pgh.2 for ; Tue, 03 Jan 2017 07:39:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=play-bow.org; s=google; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=9XfZcmg7gcQ/xmBAWG8cp2Zqx9HZK3pI71tdIQ15ifs=; b=CdA8JGY7ihvnFHeznqoOWQUeuX7ZwrQ4HsyopntC1JQkf9+rIaWHsmJi/YWcqYWXFV ZEQmCWwws9ggB5OEGFRB5V9UU9rWufsJRUImStI1Qgd/GuW3IgdlVnNsIGs8je7tCsTy xP3rlZSiFwQRNY1SMYsR6+AIYPxEXwfwHjplk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=9XfZcmg7gcQ/xmBAWG8cp2Zqx9HZK3pI71tdIQ15ifs=; b=ZQV2C3h/zm9iyjVdHFHhVKGrmMhFOuqlBL7iBigo6LelgsnSWNGYtSJGwABk4uANgY ko22YMsPdrTdjw20mrjkTAqUKPmYYQC/sM+bE8zybBDLBXwSb7YAxF/QrH8HpyreHliD olI5QZxlVR7a8Sj0rn5vbc11g6A1fV7FnMQJqK9pBWQhd1WheCyn0ayMZ15ogDSC7Sly dnU1WW+SzXWYBqCO8cWS7wC4Drs2IIqMSpMFDhM8pGKsalfq3Um0kd0/SIbH6zjPd0Sb shYYC3VyDkJFttmNsiiFAmxl/FXwdyFbnwvuuSYBlCGlzQ17YqwAxx1JfGJ2he21VHPZ Bp6A== X-Gm-Message-State: AIkVDXJpHfX64u+9EWPkTMVJmXklDEReOKFWq76jGm83QFXNBrG8pcjZodk+ZA10/G8IDQ== X-Received: by 10.99.238.17 with SMTP id e17mr117778988pgi.58.1483457974628; Tue, 03 Jan 2017 07:39:34 -0800 (PST) Received: from ?IPv6:2602:30a:2ce4:c900:94a1:fb60:1504:7ece? ([2602:30a:2ce4:c900:94a1:fb60:1504:7ece]) by smtp.gmail.com with ESMTPSA id s197sm142258800pgc.38.2017.01.03.07.39.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 07:39:33 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: UI input unresponsive on macOS From: Bob Halley In-Reply-To: <20170103143621.GA41725@breton.holly.idiocy.org> Date: Tue, 3 Jan 2017 07:39:32 -0800 Cc: emacs-devel@gnu.org Content-Transfer-Encoding: 7bit Message-Id: <1BD97BF1-9A33-48EF-B921-8CF48381F04F@play-bow.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> To: Alan Third X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 15:39:37 -0000 > Can you try the attached patch? Will do, thanks! /Bob From MAILER-DAEMON Tue Jan 03 11:24:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cORt9-0001ZD-SJ for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 11:24:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45788) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cORt7-0001Xc-I5 for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:24:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cORt6-0004XT-Ry for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:24:37 -0500 Received: from mail-oi0-x233.google.com ([2607:f8b0:4003:c06::233]:34225) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cORt6-0004XL-Mu for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:24:36 -0500 Received: by mail-oi0-x233.google.com with SMTP id 3so330487306oih.1 for ; Tue, 03 Jan 2017 08:24:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=xczV8BlghimRt8G3R3iGujrEvxfqL6Nwy1Znv7uj93Y=; b=n8iXJZXDYoLw0OUDG+lZWGnkBiwyQHnGJbhVk+ZZHsr0sT66AwURrMoWkYp6FLc3vW HMHP3hbUKFamZJMhJLum9/jZccSqHdICeOJUSzoNfCA8cDBWyYwVdkuP2SGd+MZxekPz STH8OFD1TkxI8H8XiHy2TG388fNzUe2AZyPqzds6IVi6klZH8icaz92/Hq/WkyLZ0xMj vLQ0gVReP1xdW2aPeCLvlH0g8U+HsDRsCwFSCSLzm2YZ6zRYeO9r/vKEmo4vNgIVyz+X /vIaCV6fGUAIQI9MtvY9tHWr4OOYOoiSKRDoyBdUg/SKs7QzmQBc2tAQ8GpnKnTlTJFB 3K6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xczV8BlghimRt8G3R3iGujrEvxfqL6Nwy1Znv7uj93Y=; b=OZAoHPevgYXG5MnXZ8oJX9w9u88foo+ScrV+k3sDsYpljdO4npPMDHDbNAS2cLiJ2/ fzpWUcVI7w4ZTGNeNZBI+kkDvdN6qhc0OuyPv7lytTWtNkkwbuGGTiZyChhQO4C0W2Dz IbLLTNOuk6hfNz4KNQ6XDMFmLo8bJWC6iA6hWiTWPYcb/Z0nm98UwCOlZ+QZ764o8jCi GaM7K63vxkrJFgqRLZz15Xr5CAn0FJjFNjhVzFNPPXEr9877n8RwdFWed+n9JpE+ZQiJ BtJJ+B7A/Z4y3FRCoiVhkp7hZIef2b/C6/ABksKEGup0s4BE9DFYWfMPAt9ffO41bk51 temw== X-Gm-Message-State: AIkVDXLEy33N00YSOz5AAKLg5f7BiGRQOSurMcvFSYEIduNvLEykFFZNa1Fcth1pz0rpkNmE7ToVQI6N9lqSsw== X-Received: by 10.157.17.212 with SMTP id y20mr26477080oty.230.1483460674227; Tue, 03 Jan 2017 08:24:34 -0800 (PST) MIME-Version: 1.0 From: Philipp Stephani Date: Tue, 03 Jan 2017 16:24:23 +0000 Message-ID: Subject: Small patch for ffap.el To: Emacs developers Content-Type: multipart/mixed; boundary=94eb2c18ff8a86b00e0545331a1e X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 16:24:38 -0000 --94eb2c18ff8a86b00e0545331a1e Content-Type: multipart/alternative; boundary=94eb2c18ff8a86b0090545331a1c --94eb2c18ff8a86b0090545331a1c Content-Type: text/plain; charset=UTF-8 Hi, attached is a small patch that documents the fact that functions in ffap-alist can use the match data. This is already used by ffap.el itself, e.g. in ffap-rfc. --94eb2c18ff8a86b0090545331a1c Content-Type: text/html; charset=UTF-8
Hi,

attached is a small patch that documents the fact that functions in ffap-alist can use the match data. This is already used by ffap.el itself, e.g. in ffap-rfc.
--94eb2c18ff8a86b0090545331a1c-- --94eb2c18ff8a86b00e0545331a1e Content-Type: text/plain; charset=US-ASCII; name="0001-Document-that-functions-in-ffap-alist-can-use-the-matc.txt" Content-Disposition: attachment; filename="0001-Document-that-functions-in-ffap-alist-can-use-the-matc.txt" Content-Transfer-Encoding: base64 Content-ID: <159652514174e7b385a1> X-Attachment-Id: 159652514174e7b385a1 RnJvbSA4ZGQ2MjRjOGFjMTc5ZDUzODFlMDBjMDQzNThkMzUzODY2ZjYwZjlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFR1ZSwgMyBKYW4gMjAxNyAxNzoxOTozNiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIERvY3Vt ZW50IHRoYXQgZnVuY3Rpb25zIGluICdmZmFwLWFsaXN0JyBjYW4gdXNlIHRoZSBtYXRjaAogZGF0 YQoKKiBsaXNwL2ZmYXAuZWwgKGZmYXAtYWxpc3QpOiBEb2N1bWVudCB0aGF0IGZmYXAgc2V0cyB0 aGUgbWF0Y2ggZGF0YQp3aGlsZSB3YWxraW5nICdmZmFwLWFsaXN0Jy4KLS0tCiBsaXNwL2ZmYXAu ZWwgfCA1ICsrKystCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9mZmFwLmVsIGIvbGlzcC9mZmFwLmVsCmluZGV4IDc2ZTg2 ZWYuLmMxZmFiNzAgMTAwNjQ0Ci0tLSBhL2xpc3AvZmZhcC5lbAorKysgYi9saXNwL2ZmYXAuZWwK QEAgLTc5Miw3ICs3OTIsMTAgQEAgZmZhcC1hbGlzdAogICBLRVkgaXMgYSBzeW1ib2wsIGFuZCBp dCBlcXVhbHMgYG1ham9yLW1vZGUnLCBvcgogICBLRVkgaXMgYSBzdHJpbmcsIGl0IHNob3VsZCBt YXRjaCBOQU1FIGFzIGEgcmVnZXhwLgogT24gYSBtYXRjaCwgKEZVTkNUSU9OIE5BTUUpIGlzIGNh bGxlZCBhbmQgc2hvdWxkIHJldHVybiBhIGZpbGUsIGFuCi1VUkwsIG9yIG5pbC4gIElmIG5pbCwg c2VhcmNoIHRoZSBhbGlzdCBmb3IgZnVydGhlciBtYXRjaGVzLiIpCitVUkwsIG9yIG5pbC4gIElm IG5pbCwgc2VhcmNoIHRoZSBhbGlzdCBmb3IgZnVydGhlciBtYXRjaGVzLgorV2hpbGUgY2FsbGlu ZyBGVU5DVElPTiwgdGhlIG1hdGNoIGRhdGEgaXMgc2V0IGFjY29yZGluZyB0byBLRVkgaWYgS0VZ CitpcyBhIHN0cmluZywgc28gdGhhdCBGVU5DVElPTiBjYW4gdXNlIGBtYXRjaC1zdHJpbmcnIGFu ZCBmcmllbmRzCit0byBleHRyYWN0IHN1YnN0cmluZ3MuIikKIAogKHB1dCAnZmZhcC1hbGlzdCAn cmlza3ktbG9jYWwtdmFyaWFibGUgdCkKIAotLSAKMi44LjAucmMzLjIyNi5nMzlkNDAyMAoK --94eb2c18ff8a86b00e0545331a1e-- From MAILER-DAEMON Tue Jan 03 11:41:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOS9J-00049P-NP for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 11:41:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50926) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOS9G-000491-TV for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:41:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOS9D-0001IJ-PP for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:41:18 -0500 Received: from mail-pg0-x231.google.com ([2607:f8b0:400e:c05::231]:34082) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOS9D-0001Hz-KE for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:41:15 -0500 Received: by mail-pg0-x231.google.com with SMTP id y62so164432901pgy.1 for ; Tue, 03 Jan 2017 08:41:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=iZ+UyeFMWbGS7GLIqdpOLiJqO4YNE7W0yrED1cln5v4=; b=dck7W7B62XC5QIv/D8hL3Oe/zxQ4An1GdWocYJXZsXRTmtiq9lahke75xeHMKyx/w8 x0Qa1fWOZQpff4nHFV+1rx063LR/4souo7a6/o2QncQ+q0eG+YZCI6V5t/uSr/QwFBgR QrirVDUr+w7BQZnXSDm1bv/OvOfZbIdu6/S42EN9BRaknYUTVfzkbNAtcLja5n8t2I8B BPcdA3qjBgesJxeKiF5cqCZ0sxhHgQNJiFPLAxTZPbIbX5ANRtAmiIZg5KAiJIvwxSFN pZX5cltuipJ+BWQo7S0x06ASTVBc5EHjGsD5JHBMDwX9OXcmItmWiEeFpqxTRQ4MaxQf 9m2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=iZ+UyeFMWbGS7GLIqdpOLiJqO4YNE7W0yrED1cln5v4=; b=kdsd1NzRc0Pi6Z1mkb1Ftglb/51jFoWYwYDEoBHoBzp0N8wvKYbEQ43GCcZxfLE++D cyKCveJdchraE/moX8Xcm3OSdAz0VpGj4BupkuLZaAh/qT89Ee6Zeb+v3bnbNxV9VGYq KYaHXe5L9a/6fsT7VThoAUO6uGkVWY9eaBkK4a13vh214N5dlXe4Hw8q9KMHYfzY1AjI ffPCjsvmXXXUEeSxM2GRWPF+8TuHNbB2kz1+fkuDVILVKE38pescagthHdiwdtj17CZy Dl5JHVDQBfg++lYjzLhyU0W4H9EkvJGNd06Eoh5adpafwUJ7ZAZHNYUirYR3cuOMIGse vfXA== X-Gm-Message-State: AIkVDXJgNMnfy/Evm+KzVEd1LZFpfnua/dMSOXaW7iEKCnxs3M0Yo6oScSDM8uWtYJvXwQ== X-Received: by 10.84.218.3 with SMTP id q3mr137019499pli.80.1483461673454; Tue, 03 Jan 2017 08:41:13 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id g28sm77883847pgn.13.2017.01.03.08.41.12 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 03 Jan 2017 08:41:12 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 516E74E1D0D; Tue, 3 Jan 2017 08:41:23 -0800 (PST) To: Philipp Stephani Cc: Emacs developers Subject: Re: Small patch for ffap.el In-Reply-To: (Philipp Stephani's message of "Tue, 03 Jan 2017 16:24:23 +0000") Date: Tue, 03 Jan 2017 08:41:21 -0800 Message-ID: References: User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.1.90 (darwin) Mail-Followup-To: Philipp Stephani , Emacs developers MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 16:41:19 -0000 >>>>> "PS" == Philipp Stephani writes: PS> attached is a small patch that documents the fact that functions in PS> ffap-alist can use the match data. This is already used by ffap.el itself, PS> e.g. in ffap-rfc. Thanks, pushed to master. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Tue Jan 03 11:45:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOSDc-0005Nv-CA for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 11:45:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52330) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOSDa-0005Mp-1j for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:45:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOSDZ-0002WX-2A for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:45:46 -0500 Received: from mail-vk0-x22b.google.com ([2607:f8b0:400c:c05::22b]:33750) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOSDY-0002WS-TM for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:45:44 -0500 Received: by mail-vk0-x22b.google.com with SMTP id 137so276652304vkl.0 for ; Tue, 03 Jan 2017 08:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ykajZNJcTHWm3z4dLeIqLaX5uiWlTN0GKh/2NEvnauU=; b=WUuXvtnmTZm9F8oeQWlTRIpM+pwCvc8xPmgVZNB8j27eUq74YOjWCHQXqsQZi9k5AT brAdsDRIcC3zq0alyNgdaearghtjxgn8FK2P1ipVT3E+xjWgDRxyc6+98S1BPQb566kJ SjaJf90BhuFJgMcrEEJ/wJxR116DjD6lMjWvLMKi294z/1ZaqQCyCK2D9rNoBxEY+qAd 5CIaR4hiNlaxipaNfNuEuAoSV2flp08qYwELAAWXe7YER24vl4dQAVgjyC0rrduvjMqm NkbvZjshL/D6KKLYPl5KX90abQnTtz5Uj2ruqZHZzn7GEgfNQAQMJ2elZUN0D4orPfRR GjTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ykajZNJcTHWm3z4dLeIqLaX5uiWlTN0GKh/2NEvnauU=; b=i6N3HP0eSUPt+UyhpqzLUrI4n/aqEZTwNeKLNqdSGjltckBXtrhZW3ZhAexoluhz5V ISEAEZsJ1F4kalsFcTZBGr++Be22lj85COLVWQjU2mT31h2ArvTecddJVDG2icdLGu0f aMJ0fqoMJxTR7j6G2V0Ns0e+s9rPIC3S8jz/zRtB5klH85MlnuG63UrsuNmUMDhSlksh 8ywvIbatIeVBeR/FxYbEUe2MJ/TXOP+JQt1CCM5AHnLHO7S8QfVecj9Yi31BI/TjBIDH Wu9zJpi6Mvf8UGRkCppylKS18l/qvkUfCbJyBGkCGiRIdrL2UGfH6NvYJz1OO0hihfNn IclQ== X-Gm-Message-State: AIkVDXLhpdQIaznoFvSCiNn5fEn7AEybfFBdyMQLAHk+UuWxXzyJRi/tfCcRdu1IxOG9enyc07NhA5RyQAqv0w== X-Received: by 10.31.7.204 with SMTP id 195mr22702531vkh.175.1483461944173; Tue, 03 Jan 2017 08:45:44 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kaushal Modi Date: Tue, 03 Jan 2017 16:45:33 +0000 Message-ID: Subject: Re: Small patch for ffap.el To: Philipp Stephani , Emacs developers Content-Type: multipart/alternative; boundary=001a1143d6f4386c730545336622 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 16:45:47 -0000 --001a1143d6f4386c730545336622 Content-Type: text/plain; charset=UTF-8 The commit title is literally that.. "Small patch for ffap.el". Definitely it should be more descriptive than that :) On Tue, Jan 3, 2017 at 11:41 AM John Wiegley wrote: > >>>>> "PS" == Philipp Stephani writes: > > PS> attached is a small patch that documents the fact that functions in > PS> ffap-alist can use the match data. This is already used by ffap.el > itself, > PS> e.g. in ffap-rfc. > > Thanks, pushed to master. > > -- > John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F > http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 > > -- Kaushal Modi --001a1143d6f4386c730545336622 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
The commit title is literally that.. "Small patch for= ffap.el". Definitely it should be more descriptive than that :)=C2=A0=

On Tue, Jan 3, 2017 at = 11:41 AM John Wiegley <jwiegley@gm= ail.com> wrote:
>>>= >> "PS" =3D=3D Philipp Stephani <p.stephani2@gmail.c= om> writes:

PS> attached is a small patch that documents the fact that functions in<= br class=3D"gmail_msg"> PS> ffap-alist can use the match data. This is already used by ffap.el i= tself,
PS> e.g. in ffap-rfc.

Thanks, pushed to master.

--
John Wiegley=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = GPG fingerprint =3D 4710 CF98 AF9B 327B B80F
http://newartisans.com=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 60E1 46C4 BD1A = 7AC1 4BA2

--

Kaushal Modi

--001a1143d6f4386c730545336622-- From MAILER-DAEMON Tue Jan 03 11:59:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOSRG-0002Ah-Ve for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 11:59:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOSRB-0002Aa-97 for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:59:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOSR9-00050P-Or for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:59:49 -0500 Received: from mail-pg0-x22d.google.com ([2607:f8b0:400e:c05::22d]:35561) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOSR9-00050I-EL for emacs-devel@gnu.org; Tue, 03 Jan 2017 11:59:47 -0500 Received: by mail-pg0-x22d.google.com with SMTP id i5so151797680pgh.2 for ; Tue, 03 Jan 2017 08:59:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=play-bow.org; s=google; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=55QNzuwGqpPTKwfv1EalHYh5x+p/EI3uQQNe5kqKGKM=; b=LlkwthOUdaXlvMkmGbpjwjkag21phfpNk3Sp4+MyyZfX4uQQO3J2l5X8/ZUl2kYAGw 3OQoPHsKAieqNGCZMfQbW0NzVQuWez3h3u4V5TfvPLyVM8VQXU0l8vqAX8c76x6ogyEb iVADdn5SOloTSbBFhnz6OrbRiqnLKnSu4oKdk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=55QNzuwGqpPTKwfv1EalHYh5x+p/EI3uQQNe5kqKGKM=; b=fG1Y3n9b3xj08rLE7y/qDyUA6DYIdOgrLqeitOB20cT9n5g6pH2TYDv61Ix2bN+3LB PprLhdWMcdniJSsz3ku3y6/PPstZlUsc/QLN//QXIg/gzOoN7ZKhxUdNAs5UAGs+C673 BVheNLyRtDpEE5b9j3c1HlOuGp/crnXWh0RuZeUTpC80fvuUyC0jQwq3bT6LazX+S8KP +KQSgxbks+0N689JuP1syqtIOWWH6I0bczHtyQZMFb+BKThzZilAjfgPzDDpYvcgiPzA P09tSPWlkviOwnv6kaTBSlkqpU2OxVLYcJBl3n80Nc1ukyT/DqcYiIty+e37Gl6ODsDK AbSA== X-Gm-Message-State: AIkVDXIk9E3TWCy2tWxFypksfPZE/W63j9aMfk+J+sVZSht8h5AafeDuMEl6W1VHYwzqOw== X-Received: by 10.99.125.17 with SMTP id y17mr104936582pgc.27.1483462786096; Tue, 03 Jan 2017 08:59:46 -0800 (PST) Received: from ?IPv6:2602:30a:2ce4:c900:a985:22e7:3566:a17a? ([2602:30a:2ce4:c900:a985:22e7:3566:a17a]) by smtp.gmail.com with ESMTPSA id 65sm141215268pfl.21.2017.01.03.08.59.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 08:59:45 -0800 (PST) From: Bob Halley Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_8E728D30-818A-43CC-9CD8-724F29109EB3" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: UI input unresponsive on macOS Date: Tue, 3 Jan 2017 08:59:43 -0800 In-Reply-To: <20170103143621.GA41725@breton.holly.idiocy.org> Cc: emacs-devel@gnu.org To: Alan Third References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 16:59:54 -0000 --Apple-Mail=_8E728D30-818A-43CC-9CD8-724F29109EB3 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > Can you try the attached patch? It didn=E2=80=99t fix things, but I did find a way to reproduce the = problem at will. If start emacs, and then you run open -a /Applications/Emacs.app whatever_file_here For a file which isn=E2=80=99t open, then the UI becomes unresponsive to = input. Typing C-G seems to unstick it eventually, but there can be very = long delays (I timed one at 49 seconds) before it beeps and the UI = becomes responsive. I=E2=80=99ve seen it spontaneously complete too, = again after a long time (at least 30 seconds), but usually it does not = complete. If I look at it with lldb, all of the threads are blocked, and thread 1 = looks like: (lldb) bt * thread #1: tid =3D 0x4ad0a2, 0x00007fff9f7ebaff = CoreFoundation`__CFRunLoopCollectSources0 + 31, stop reason =3D signal = SIGSTOP * frame #0: 0x00007fff9f7ebaff = CoreFoundation`__CFRunLoopCollectSources0 + 31 frame #1: 0x00007fff9f7b91f2 = CoreFoundation`__CFSetApplyFunction_block_invoke + 18 frame #2: 0x00007fff9f7a54ba CoreFoundation`CFBasicHashApply + 122 frame #3: 0x00007fff9f7b9199 CoreFoundation`CFSetApplyFunction + 185 frame #4: 0x00007fff9f7eb8be CoreFoundation`__CFRunLoopDoSources0 + = 110 frame #5: 0x00007fff9f7eaf76 CoreFoundation`__CFRunLoopRun + 934 frame #6: 0x00007fff9f7ea974 CoreFoundation`CFRunLoopRunSpecific + = 420 frame #7: 0x00007fff9ed76acc HIToolbox`RunCurrentEventLoopInMode + = 240 frame #8: 0x00007fff9ed76809 HIToolbox`ReceiveNextEventCommon + 184 frame #9: 0x00007fff9ed76736 = HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71 frame #10: 0x00007fff9d31cae4 AppKit`_DPSNextEvent + 1120 frame #11: 0x00007fff9da9721f AppKit`-[NSApplication(NSEvent) = _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2789 frame #12: 0x00000001001b3866 Emacs`ns_select(nfds=3D4, = readfds=3D0x00007fff5fbfee00, writefds=3D0x00007fff5fbfed80, = exceptfds=3D0x0000000000000000, timeout=3D, = sigmask=3D) + 678 at nsterm.m:4130 [opt] frame #13: 0x00000001001a04a8 = Emacs`really_call_select(arg=3D0x00007fff5fbfeba0) + 88 at thread.c:520 = [opt] frame #14: 0x000000010011ec7c = Emacs`flush_stack_call_func(func=3D, arg=3D) + = 44 at alloc.c:5137 [opt] frame #15: 0x00000001001a0447 = Emacs`thread_select(func=3D, max_fds=3D, = rfds=3D, wfds=3D, efds=3D, = timeout=3D, sigmask=3D0x0000000000000000) + 55 at = thread.c:543 [opt] frame #16: 0x000000010018400e = Emacs`wait_reading_process_output(time_limit=3D, = nsecs=3D, read_kbd=3D, = do_display=3D, wait_for_cell=3D0, wait_proc=3D, = just_wait_proc=3D) + 4142 at process.c:5350 [opt] frame #17: 0x0000000100008005 Emacs`sit_for(timeout=3D, = reading=3D, display_option=3D1) + 261 at dispnew.c:5763 = [opt] frame #18: 0x00000001000c3ab7 Emacs`read_char(commandflag=3D1, = map=3D4431829235, prev_event=3D0, used_mouse_menu=3D0x00007fff5fbff7df, = end_time=3D0x0000000000000000) + 5511 at keyboard.c:2725 [opt] frame #19: 0x00000001000c062f = Emacs`read_key_sequence(keybuf=3D, bufsize=3D30, = prompt=3D, dont_downcase_last=3D, = can_return_switch_frame=3D, = fix_current_buffer=3D, prevent_redisplay=3D) + = 1839 at keyboard.c:9139 [opt] frame #20: 0x00000001000bed32 Emacs`command_loop_1 + 1202 at = keyboard.c:1373 [opt] frame #21: 0x000000010013d347 = Emacs`internal_condition_case(bfun=3D(Emacs`command_loop_1 at = keyboard.c:1264), handlers=3D, hfun=3D(Emacs`cmd_error at = keyboard.c:943)) + 87 at eval.c:1326 [opt] frame #22: 0x00000001000cde20 = Emacs`command_loop_2(ignore=3D) + 48 at keyboard.c:1115 = [opt] frame #23: 0x000000010013cbfe = Emacs`internal_catch(tag=3D, func=3D(Emacs`command_loop_2 = at keyboard.c:1111), arg=3D0) + 78 at eval.c:1092 [opt] frame #24: 0x00000001000bdf7e Emacs`command_loop + 158 at = keyboard.c:1094 [opt] frame #25: 0x00000001000bde8f Emacs`recursive_edit_1 + 111 at = keyboard.c:700 [opt] frame #26: 0x00000001000be0c3 Emacs`Frecursive_edit + 227 at = keyboard.c:771 [opt] frame #27: 0x00000001000bcc9d Emacs`main(argc=3D0, = argv=3D) + 6157 at emacs.c:1684 [opt] frame #28: 0x00007fffb4d43255 libdyld.dylib`start + 1 The other threads didn=E2=80=99t look interesting, but I could be wrong = :) Sometimes when I =E2=80=9Ccontinue=E2=80=9D in the debugger it unsticks = whatever is stuck, though the file I was trying to open never opens. > So far the only problem I=E2=80=99ve seen is > that emacsclient doesn=E2=80=99t return to the shell when it exits. Yeah, I see that too. /Bob --Apple-Mail=_8E728D30-818A-43CC-9CD8-724F29109EB3 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
Can you try the attached patch?

It didn=E2=80=99t fix things, but I did find a way = to reproduce the problem at will.

If = start emacs, and then you run

  =   open -a = /Applications/Emacs.app whatever_file_here

For = a file which isn=E2=80=99t open, then the UI becomes unresponsive to input. =  Typing C-G seems to unstick it eventually, but there can be very = long delays (I timed one at 49 seconds) before it beeps and the UI = becomes responsive.  I=E2=80=99ve seen it spontaneously complete = too, again after a long time (at least 30 seconds), but usually it does = not complete.

If = I look at it with lldb, all of the threads are blocked, and thread 1 = looks like:

(lldb) bt
* = thread #1: tid =3D 0x4ad0a2, 0x00007fff9f7ebaff = CoreFoundation`__CFRunLoopCollectSources0 + 31, stop reason =3D signal = SIGSTOP
  * frame #0: 0x00007fff9f7ebaff = CoreFoundation`__CFRunLoopCollectSources0 + 31
  =   frame #1: 0x00007fff9f7b91f2 = CoreFoundation`__CFSetApplyFunction_block_invoke + 18
  =   frame #2: 0x00007fff9f7a54ba CoreFoundation`CFBasicHashApply + = 122
    frame #3: 0x00007fff9f7b9199 = CoreFoundation`CFSetApplyFunction + 185
  =   frame #4: 0x00007fff9f7eb8be CoreFoundation`__CFRunLoopDoSources0 = + 110
    frame #5: = 0x00007fff9f7eaf76 CoreFoundation`__CFRunLoopRun + 934
  =   frame #6: 0x00007fff9f7ea974 CoreFoundation`CFRunLoopRunSpecific = + 420
    frame #7: = 0x00007fff9ed76acc HIToolbox`RunCurrentEventLoopInMode + = 240
    frame #8: 0x00007fff9ed76809 = HIToolbox`ReceiveNextEventCommon + 184
  =   frame #9: 0x00007fff9ed76736 = HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + = 71
    frame #10: 0x00007fff9d31cae4 = AppKit`_DPSNextEvent + 1120
  =   frame #11: 0x00007fff9da9721f AppKit`-[NSApplication(NSEvent) = _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + = 2789
    frame #12: = 0x00000001001b3866 Emacs`ns_select(nfds=3D4, readfds=3D0x00007fff5fbfee00,= writefds=3D0x00007fff5fbfed80, exceptfds=3D0x0000000000000000, = timeout=3D<unavailable>, sigmask=3D<unavailable>) + 678 at = nsterm.m:4130 [opt]
    frame #13: = 0x00000001001a04a8 Emacs`really_call_select(arg=3D0x00007fff5fbfeba0) + = 88 at thread.c:520 [opt]
  =   frame #14: 0x000000010011ec7c = Emacs`flush_stack_call_func(func=3D<unavailable>, = arg=3D<unavailable>) + 44 at alloc.c:5137 [opt]
  =   frame #15: 0x00000001001a0447 = Emacs`thread_select(func=3D<unavailable>, = max_fds=3D<unavailable>, rfds=3D<unavailable>, = wfds=3D<unavailable>, efds=3D<unavailable>, = timeout=3D<unavailable>, sigmask=3D0x0000000000000000) + 55 at = thread.c:543 [opt]
    frame #16: = 0x000000010018400e = Emacs`wait_reading_process_output(time_limit=3D<unavailable>, = nsecs=3D<unavailable>, read_kbd=3D<unavailable>, = do_display=3D<unavailable>, wait_for_cell=3D0, = wait_proc=3D<unavailable>, just_wait_proc=3D<unavailable>) + = 4142 at process.c:5350 [opt]
  =   frame #17: 0x0000000100008005 = Emacs`sit_for(timeout=3D<unavailable>, = reading=3D<unavailable>, display_option=3D1) + 261 at = dispnew.c:5763 [opt]
    frame #18: = 0x00000001000c3ab7 Emacs`read_char(commandflag=3D1, map=3D4431829235, = prev_event=3D0, used_mouse_menu=3D0x00007fff5fbff7df, = end_time=3D0x0000000000000000) + 5511 at keyboard.c:2725 = [opt]
    frame #19: = 0x00000001000c062f Emacs`read_key_sequence(keybuf=3D<unavailable>, = bufsize=3D30, prompt=3D<unavailable>, = dont_downcase_last=3D<unavailable>, = can_return_switch_frame=3D<unavailable>, = fix_current_buffer=3D<unavailable>, = prevent_redisplay=3D<unavailable>) + 1839 at keyboard.c:9139 = [opt]
    frame #20: = 0x00000001000bed32 Emacs`command_loop_1 + 1202 at keyboard.c:1373 = [opt]
    frame #21: = 0x000000010013d347 = Emacs`internal_condition_case(bfun=3D(Emacs`command_loop_1 at = keyboard.c:1264), handlers=3D<unavailable>, hfun=3D(Emacs`cmd_error = at keyboard.c:943)) + 87 at eval.c:1326 [opt]
  =   frame #22: 0x00000001000cde20 = Emacs`command_loop_2(ignore=3D<unavailable>) + 48 at = keyboard.c:1115 [opt]
    frame #23: = 0x000000010013cbfe Emacs`internal_catch(tag=3D<unavailable>, = func=3D(Emacs`command_loop_2 at keyboard.c:1111), arg=3D0) + 78 at = eval.c:1092 [opt]
    frame #24: = 0x00000001000bdf7e Emacs`command_loop + 158 at keyboard.c:1094 = [opt]
    frame #25: = 0x00000001000bde8f Emacs`recursive_edit_1 + 111 at keyboard.c:700 = [opt]
    frame #26: = 0x00000001000be0c3 Emacs`Frecursive_edit + 227 at keyboard.c:771 = [opt]
    frame #27: = 0x00000001000bcc9d Emacs`main(argc=3D0, argv=3D<unavailable>) + = 6157 at emacs.c:1684 [opt]
  =   frame #28: 0x00007fffb4d43255 libdyld.dylib`start + = 1

The other threads didn=E2=80=99t look interesting, but I = could be wrong :)

Sometimes when I =E2=80=9Ccontinue= =E2=80=9D in the debugger it unsticks whatever is stuck, though the file = I was trying to open never opens.

= So far the only problem I=E2=80=99ve seen is
that emacsclient doesn=E2=80=99t return to the shell when it = exits.

Yeah, I see = that too.

/Bob


= --Apple-Mail=_8E728D30-818A-43CC-9CD8-724F29109EB3-- From MAILER-DAEMON Tue Jan 03 12:37:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOT1t-0006i3-Ay for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 12:37:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36055) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOT1r-0006e3-2T for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:37:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOT1n-0004qj-6J for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:37:43 -0500 Received: from [195.159.176.226] (port=42171 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOT1m-0004qT-Vz for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:37:39 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOT1a-000077-Ju for emacs-devel@gnu.org; Tue, 03 Jan 2017 18:37:26 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Region argument (was: [patch] Run occur command restricted to a region) Date: Tue, 03 Jan 2017 12:37:20 -0500 Lines: 12 Message-ID: References: <87vau3jl6f.fsf@gmail.com> <8337h6vhr7.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:lusvMNv9Ruv9VScqDDtE8xRvx/w= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 17:37:44 -0000 > I think our convention for functions that act on the region is to > accept BEG and END arguments, so that the function could be called > from Lisp. Indeed. Note also that in order to support rectangular regions (which are currently poorly supported, but which we'd like to see supported more generally), we should change/tweak this convention. Stefan From MAILER-DAEMON Tue Jan 03 12:40:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOT4b-00087d-Sg for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 12:40:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36992) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOT4Z-000863-LO for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:40:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOT4V-0005sB-Lt for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:40:31 -0500 Received: from [195.159.176.226] (port=47209 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOT4V-0005qp-Eb for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:40:27 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOT4A-0000px-GA for emacs-devel@gnu.org; Tue, 03 Jan 2017 18:40:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: The current state of the comment-cache branch Date: Tue, 03 Jan 2017 12:39:11 -0500 Lines: 7 Message-ID: References: <20161227175500.GD2324@acm.fritz.box> <83y3z0ukth.fsf@gnu.org> <871swsf1es.fsf@thinkpad.rath.org> <83pokcugit.fsf@gnu.org> <87y3yzehc2.fsf@thinkpad.rath.org> <83d1gbv1rt.fsf@gnu.org> <87wpei7jye.fsf@thinkpad.rath.org> <83shp6tyqr.fsf@gnu.org> <20161229194454.GB3387@acm.fritz.box> <2ddc3f91-acf9-803a-f99d-9ccb63f748b9@online.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:Jfch+VlzRTD9UyLvUJipXPw1oZo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 17:40:32 -0000 > Alongside with some other impediments removed, for example allowing > all chars being an abbrev. The restriction to word chars in abbrevs as removed a long time ago. Stefan From MAILER-DAEMON Tue Jan 03 12:47:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOTBd-0001GQ-Mb for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 12:47:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOTBY-0001F0-JF for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:47:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOTBV-00088N-H4 for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:47:44 -0500 Received: from [195.159.176.226] (port=32786 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOTBV-000884-9A for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:47:41 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOTBA-0008Ey-B6 for emacs-devel@gnu.org; Tue, 03 Jan 2017 18:47:20 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: with-url Date: Tue, 03 Jan 2017 12:47:15 -0500 Lines: 8 Message-ID: References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:mcW/8w3N4pKnKSg4dVpn2xIacsA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 17:47:45 -0000 > 1) Return a Promise value. Emacs could use a standardized Promise structure > in other places, too. We have url-future (which got a "url-" prefix because we wanted to experiment with it before making it global). Stefan From MAILER-DAEMON Tue Jan 03 12:49:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOTCy-00021w-71 for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 12:49:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOTCu-00020y-JU for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:49:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOTCq-000086-Cs for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:49:08 -0500 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:36969) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOTCq-00007n-54 for emacs-devel@gnu.org; Tue, 03 Jan 2017 12:49:04 -0500 Received: by mail-wm0-x229.google.com with SMTP id t79so435821568wmt.0 for ; Tue, 03 Jan 2017 09:49:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=qtg1Vg42h6+yLWOHCA3gt8Yfnz7V0FM3PuYlUHuOQOg=; b=fWM9OGfEG/w+e9TNI1lCtN9boa6WlAkkPuX0JhN1NmN1GTjmJZbXjIYOjg0yDt8Nd7 UxitY/qVMD26Pduwt/bf1e4SPiusCeXEzvrpL7zotmtNz+7pzOwhnvg7ouo41T+SovBK TvDsHzXDguvB/Vw8khfX0AAxXH2AVcU99TfZkLN9BJSLXesh4Fp+rk7CzeXLJcCIig8m tCuTCmO7uL8KRXIwFG3T1/Kz1kH4m61IUQ343nfHBSLB4IyexElXa9LGMm4iNJzBG9QR qmENUPWlh8R1mZpjpEQEhL7/EDhlyo8WEVj/4/wgoKYjoq96AC7lzkyWwc2DepcgHxgj 66ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=qtg1Vg42h6+yLWOHCA3gt8Yfnz7V0FM3PuYlUHuOQOg=; b=NxVhn393Az7CwGJS3TbhLf9i1kFffhFhydtZPDVgvOiMItJSzvu/M8slVA3UByV1iy 7fFp9PAxOQ11t5Zd9lrgsg8B5rULbirAA+kXiBDCjElsy5+HCQG+UBOuGpGPHNfVwd+/ OUDoC75T0ZhYDcZ7DOvxvslTiTM2p3IHb648nL//iw1F/TM7EsBq1u4MiRIN+t+Xd/ES QoEwRFbtwnyGzgmNRBNVZ4DTeOsYa/Ubd0QvCfbyXWWvfQNGBg1X1bHoX9NvRaafaCOC N44owdpLri8uhwHIgEtpUF4HkuHIpGOrfw7rIabp21fcFKjTx6sHUH5B2fZ/2EtLO+vI CvQg== X-Gm-Message-State: AIkVDXIboSip6Qsy5AeO5zY0paNpaPxMibx1ynJGLGT8/XbfNwVxrGZjZZJan9oTB57+XQ== X-Received: by 10.28.37.70 with SMTP id l67mr53464622wml.128.1483465742948; Tue, 03 Jan 2017 09:49:02 -0800 (PST) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-8471-fd78-dc83-6a18.holly.idiocy.org. [2001:8b0:3f8:8129:8471:fd78:dc83:6a18]) by smtp.gmail.com with ESMTPSA id e6sm94342478wjw.33.2017.01.03.09.49.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 09:49:02 -0800 (PST) Sender: Alan Third Date: Tue, 3 Jan 2017 17:49:00 +0000 From: Alan Third To: Bob Halley Cc: emacs-devel@gnu.org Subject: Re: UI input unresponsive on macOS Message-ID: <20170103174900.GA49916@breton.holly.idiocy.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.7.1 (2016-10-04) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 17:49:09 -0000 On Tue, Jan 03, 2017 at 08:59:43AM -0800, Bob Halley wrote: > > > Can you try the attached patch? > > It didn’t fix things, but I did find a way to reproduce the problem at will. > > If start emacs, and then you run > > open -a /Applications/Emacs.app whatever_file_here I didn’t even know you could do that. I wonder if I’ve accidentally clobbered some notification or event somewhere. I’ll have to try and work out how this works. > For a file which isn’t open, then the UI becomes unresponsive to > input. Typing C-G seems to unstick it eventually, but there can be > very long delays (I timed one at 49 seconds) before it beeps and the > UI becomes responsive. I’ve seen it spontaneously complete too, > again after a long time (at least 30 seconds), but usually it does > not complete. I had some trouble with that sort of thing before. What was happening then was that a time‐out in ns_select was being reached before it would react. I had thought I’d fixed that particular problem for most cases in the last patch, though. > Sometimes when I “continue” in the debugger it unsticks whatever is > stuck, though the file I was trying to open never opens. One of the bugs I had with an earlier version of this code would go away when I put a breakpoint on the relevant function. Debugging can be hard. :) Thanks for your help. -- Alan Third From MAILER-DAEMON Tue Jan 03 13:34:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOTuo-0000kR-MQ for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 13:34:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOTum-0000ih-QC for emacs-devel@gnu.org; Tue, 03 Jan 2017 13:34:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOTuj-0002fy-JS for emacs-devel@gnu.org; Tue, 03 Jan 2017 13:34:28 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57907) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOTuj-0002fu-GG; Tue, 03 Jan 2017 13:34:25 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2174 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cOTug-0001SQ-OF; Tue, 03 Jan 2017 13:34:25 -0500 Date: Tue, 03 Jan 2017 20:34:14 +0200 Message-Id: <83a8b8f0wp.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Tue, 03 Jan 2017 12:37:20 -0500) Subject: Re: Region argument (was: [patch] Run occur command restricted to a region) Reply-to: Eli Zaretskii References: <87vau3jl6f.fsf@gmail.com> <8337h6vhr7.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 18:34:29 -0000 > From: Stefan Monnier > Date: Tue, 03 Jan 2017 12:37:20 -0500 > > Note also that in order to support rectangular regions (which are > currently poorly supported, but which we'd like to see supported more > generally), we should change/tweak this convention. We could start by having Someone™ "in the know" (hint, hint) describe the new conventions in the ELisp manual. Right now, there's nothing there about rectangular regions. Nothing at all. From MAILER-DAEMON Tue Jan 03 13:35:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOTvz-0001k7-7r for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 13:35:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49639) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOTvx-0001iP-DJ for emacs-devel@gnu.org; Tue, 03 Jan 2017 13:35:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOTvu-00031G-23 for emacs-devel@gnu.org; Tue, 03 Jan 2017 13:35:41 -0500 Received: from [195.159.176.226] (port=39439 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOTvt-000316-Qt for emacs-devel@gnu.org; Tue, 03 Jan 2017 13:35:37 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOTvj-0002wh-1S for emacs-devel@gnu.org; Tue, 03 Jan 2017 19:35:27 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Date: Tue, 03 Jan 2017 13:35:19 -0500 Lines: 7 Message-ID: References: <20170103141444.GA4649@acm.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:BKUFWA8DZLn8YR+XhxCcbTQN4Yo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 18:35:42 -0000 > I want to M-x compile-defun the function `edebug'. Looks like `compile-defun` is another function that needs to be changed to use `eval-sexp-add-defvars`. Stefan From MAILER-DAEMON Tue Jan 03 14:00:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOUJa-0001I6-Iy for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 14:00:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56029) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOUJY-0001Hw-87 for emacs-devel@gnu.org; Tue, 03 Jan 2017 14:00:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOUJV-0000Yt-7E for emacs-devel@gnu.org; Tue, 03 Jan 2017 14:00:04 -0500 Received: from [195.159.176.226] (port=57688 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOUJV-0000Yf-0G for emacs-devel@gnu.org; Tue, 03 Jan 2017 14:00:01 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOUJL-00071N-2W for emacs-devel@gnu.org; Tue, 03 Jan 2017 19:59:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Region argument Date: Tue, 03 Jan 2017 13:59:46 -0500 Lines: 8 Message-ID: References: <87vau3jl6f.fsf@gmail.com> <8337h6vhr7.fsf@gnu.org> <83a8b8f0wp.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:3Erg5DTdouTCztYqDwmkpmFRRu0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 19:00:05 -0000 > We could start by having Someone™ "in the know" (hint, hint) describe > the new conventions in the ELisp manual. I remember we discussed a new convention, but I'm not sure if we did end up implementing one. Stefan From MAILER-DAEMON Tue Jan 03 14:19:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOUcd-0005MV-Cu for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 14:19:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39111) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOUcb-0005KT-1L for emacs-devel@gnu.org; Tue, 03 Jan 2017 14:19:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOUcX-00087z-TW for emacs-devel@gnu.org; Tue, 03 Jan 2017 14:19:45 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59436) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOUcX-00087t-QE; Tue, 03 Jan 2017 14:19:41 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2224 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cOUcV-0002wJ-V5; Tue, 03 Jan 2017 14:19:41 -0500 Date: Tue, 03 Jan 2017 21:19:37 +0200 Message-Id: <8360lweyt2.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Tue, 03 Jan 2017 13:59:46 -0500) Subject: Re: Region argument Reply-to: Eli Zaretskii References: <87vau3jl6f.fsf@gmail.com> <8337h6vhr7.fsf@gnu.org> <83a8b8f0wp.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 19:19:46 -0000 > From: Stefan Monnier > Date: Tue, 03 Jan 2017 13:59:46 -0500 > > > We could start by having Someone™ "in the know" (hint, hint) describe > > the new conventions in the ELisp manual. > > I remember we discussed a new convention, but I'm not sure if we did end > up implementing one. Then what exactly are we talking about here? If a new convention doesn't exist, we obviously cannot change the existing convention to a new one, can we? From MAILER-DAEMON Tue Jan 03 16:32:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOWhT-0004bE-KK for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 16:32:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43645) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOWhR-0004b6-Ac for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:32:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOWhJ-0007Ut-Pb for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:32:48 -0500 Received: from ocolin.muc.de ([193.149.48.4]:22784 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cOWhJ-0007UZ-El for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:32:45 -0500 Received: (qmail 83696 invoked by uid 3782); 3 Jan 2017 21:32:43 -0000 Received: from acm.muc.de (p548C6A5F.dip0.t-ipconnect.de [84.140.106.95]) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 03 Jan 2017 22:32:43 +0100 Received: (qmail 5695 invoked by uid 1000); 3 Jan 2017 21:32:28 -0000 Date: Tue, 3 Jan 2017 21:32:28 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170103213228.GB2085@acm.fritz.box> References: <20170103141444.GA4649@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 21:32:54 -0000 Hello, Stefan. On Tue, Jan 03, 2017 at 01:35:19PM -0500, Stefan Monnier wrote: > > I want to M-x compile-defun the function `edebug'. > Looks like `compile-defun` is another function that needs to be changed > to use `eval-sexp-add-defvars`. It looks like you've already done that, possibly on 2015-10-29. Looking at the source (now I know what to look for), eval-sexp-add-defvars is also in Emacs 25.1's source for compile-defun. So, something else has gone wrong..... I think the something else might be in Fdefvar. At its outermost level Fdefvar contains: ############################################### (Lisp_Object args) { Lisp_Object sym, tem, tail; sym = XCAR (args); tail = XCDR (args); if (CONSP (tail)) { ...... /* Do it before evaluating the initial value, for self-references. */ XSYMBOL (sym)->declared_special = 1; ...... } ############################################### , so the question becomes why is setting the declared_special flag done inside the "if (CONSP (tail))" rather than outside? I.e. why is it only done when a variable has an initialisation? > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Tue Jan 03 16:48:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOWwY-0008M4-S8 for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 16:48:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47377) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOWwX-0008Is-1u for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:48:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOWwP-00039T-Bu for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:48:24 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:42859) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOWwP-000392-6V for emacs-devel@gnu.org; Tue, 03 Jan 2017 16:48:21 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v03LmFZm019225; Tue, 3 Jan 2017 16:48:16 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 135FDAE6B9; Tue, 3 Jan 2017 16:48:15 -0500 (EST) From: Stefan Monnier To: Alan Mackenzie Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> Date: Tue, 03 Jan 2017 16:48:15 -0500 In-Reply-To: <20170103213228.GB2085@acm.fritz.box> (Alan Mackenzie's message of "Tue, 3 Jan 2017 21:32:28 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5908=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5908> : inlines <5617> : streams <1727522> : uri <2352001> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jan 2017 21:48:30 -0000 > It looks like you've already done that, possibly on 2015-10-29. Looking > at the source (now I know what to look for), eval-sexp-add-defvars is > also in Emacs 25.1's source for compile-defun. Oh, indeed. Not sure why you're seeing what you're seeing, then. At least on Emacs's master branch I can't seem to reproduce your problem (don't have a fresh emacs-25 build to try it right now). > , so the question becomes why is setting the declared_special flag done > inside the "if (CONSP (tail))" rather than outside? I.e. why is it only > done when a variable has an initialisation? Because this code is only relevant when you evaluate (defvar ), whereas here we're not evaluating it, we're only processing it for the byte-compiler. There's also the important difference that a (defvar ) only has effect for the code in the same file rather than having a global effect, so you can do (defvar toto) and then use `toto` as a dynamically-scoped variable in your file without wreaking havoc in all other files which happen to also use `toto` as a (lexical) variable. Stefan From MAILER-DAEMON Tue Jan 03 21:00:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOash-0004Wu-SU for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 21:00:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOasf-0004Wm-If for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:00:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOasc-0001g6-Dh for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:00:45 -0500 Received: from hapkido.dreamhost.com ([66.33.216.122]:54634) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cOasb-0001d0-RD for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:00:42 -0500 Received: from homiemail-a75.g.dreamhost.com (sub3.mail.dreamhost.com [69.163.253.7]) by hapkido.dreamhost.com (Postfix) with ESMTP id 61FA79CAA0 for ; Tue, 3 Jan 2017 18:00:35 -0800 (PST) Received: from homiemail-a75.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a75.g.dreamhost.com (Postfix) with ESMTP id 67E6C5EC079; Tue, 3 Jan 2017 18:00:33 -0800 (PST) Received: from localhost.linkov.net (m83-179-248-12.cust.tele2.ee [83.179.248.12]) (Authenticated sender: jurta@jurta.org) by homiemail-a75.g.dreamhost.com (Postfix) with ESMTPA id 994465EC072; Tue, 3 Jan 2017 18:00:32 -0800 (PST) From: Juri Linkov To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Region argument Organization: LINKOV.NET References: <87vau3jl6f.fsf@gmail.com> <8337h6vhr7.fsf@gnu.org> <83a8b8f0wp.fsf@gnu.org> Date: Wed, 04 Jan 2017 02:57:08 +0200 In-Reply-To: (Stefan Monnier's message of "Tue, 03 Jan 2017 13:59:46 -0500") Message-ID: <87y3yr60y8.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 66.33.216.122 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 02:00:46 -0000 >> We could start by having Someone=E2=84=A2 "in the know" (hint, hint) d= escribe >> the new conventions in the ELisp manual. > > I remember we discussed a new convention, but I'm not sure if we did en= d > up implementing one. IIRC, the missing piece is just a small function: (defun region () (funcall region-extract-function 'bounds)) to provide all info including former region-beginning and region-end for ordinary regions as well as a list of boundaries in case of rectangular regions. Then it could be used in the interactive spec: (defun occur (regexp &optional nlines region) (interactive (nconc (occur-read-primary-args) (list (and (use-region-p) (region))))) (occur-1 regexp nlines (list (current-buffer)))) Here nconc for occur-read-primary-args complicates the issue a little, but in the general case what is needed is only (interactive (list (and (use-region-p) (region)))) From MAILER-DAEMON Tue Jan 03 21:27:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cObIW-00018q-Mk for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 21:27:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cObIU-00018W-Bp for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:27:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cObIR-0005ad-6j for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:27:26 -0500 Received: from mail-pf0-x22e.google.com ([2607:f8b0:400e:c00::22e]:35321) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cObIR-0005a8-1H for emacs-devel@gnu.org; Tue, 03 Jan 2017 21:27:23 -0500 Received: by mail-pf0-x22e.google.com with SMTP id i88so79286431pfk.2 for ; Tue, 03 Jan 2017 18:27:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:message-id:user-agent:mime-version; bh=L/rruJgtO/U9goj+E5sN9h0cInjEj9maSs8Sup5xqww=; b=VLsikBdNqjmMcUPgDanC10yfBXIbibbrYCYDqMo8jwKxvvSNrKfMvL5YgSX54+imPr s8qWdhCxQFVwnD3WcCyu66eb+fw+QFRh8+kLYS03UVdFBk6RxO8PJzpgqpa8tzpVxqfV fCxtBw/nqJLJmvT43e4ML30ktiDok8NwWEiP9ciIjSeGNsycwSFUendMkG561j7b7X3f knMKCmFjokdVm/sA7ujxatWrJy3khdHKyYlb4wngALQ9QOMNeTZIIKCQXuS+sJAuJ6qO uChrdVXf6b/60jfXHR+zgwRnkooj0HPUPEbvkjHNz6VRJzjZYojYcIj5h9JLwdiMbN95 W/1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:message-id:user-agent :mime-version; bh=L/rruJgtO/U9goj+E5sN9h0cInjEj9maSs8Sup5xqww=; b=tfLheySuPjw020rO+ID11AcwN/UO4LK0cVdg9kNIqyi3fz+CXG8rbt1T6KsdotJYcn ns3nSm3QDojdvVJMZGhWRXEjj47sYWH64m3CVl/UtODKdm3+BQ3gtFoND3EUcXY1fwMA VMdVmtLKpVTzQ98Q0N9lckQooMrsKfkYBIP2YoCnhlFBLqpw7XimlMwfannwJbgbipBL z/NmxstDWAykvGyxYe0cUR/66g3AHy9iwyyHcu+I3GCPbjRngKyaSXN+Uyt18eOVIGJr 9JkrGFW4U2RN8XZ2SoXv9vSwlPAgi0ZRAwijUpo9dxXa5D1E0iYz4xOovn7l7/Q4mjsq KSYg== X-Gm-Message-State: AIkVDXL63GWdvL0KchKerNb3tbRdKXsRVh9F9aPEtz9THgtH/N/7UjxlCba/HbeZBOoa0Q== X-Received: by 10.99.159.26 with SMTP id g26mr120270229pge.62.1483496842177; Tue, 03 Jan 2017 18:27:22 -0800 (PST) Received: from calancha-pc ([106.171.65.16]) by smtp.gmail.com with ESMTPSA id c77sm35387066pfb.39.2017.01.03.18.27.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jan 2017 18:27:21 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Wed, 4 Jan 2017 11:27:17 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Stefan Merten cc: Tino Calancha , Emacs developers Subject: [Emacs-diffs] master 9ed3685a77: Lots of refactorings and a few minor improvements. Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 02:27:27 -0000 >Lots of refactorings and a few minor improvements. > >User visible improvements and changes: >* Improve and debug `rst-forward-section` and `rst-backward-section`. >* Auto-enumeration may be used with all styles for list insertion. >* Improve and debug `rst-toc-insert`. >* Adapt change in Emacs to use customization group `text` instead of `wp`. >* Bind `n` and `p` in `rst-toc-mode`. >* `z` in `toc-mode` returns to the previous window configuration. >* Require Emacs version >= 24.1. > >Lots of refactorings including: >* Silence byte compiler. >* Use lexical binding. >* Use `cl-lib`. >* Add tests and raise test coverage. This is not a standard Emacs commit message: i need to go throughout the whole diffs to know exactly what entities have being modified. Tino From MAILER-DAEMON Tue Jan 03 22:05:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cObtP-0006Ko-51 for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 22:05:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cObtM-0006Kf-Px for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:05:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cObtH-0008Sp-TB for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:05:32 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:45270) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cObtH-0008S8-NP for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:05:27 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 097CA16006F; Tue, 3 Jan 2017 19:05:25 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id nAniqDcnDf6P; Tue, 3 Jan 2017 19:05:24 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 5E4E4160071; Tue, 3 Jan 2017 19:05:24 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 2PX9ofAE9kVq; Tue, 3 Jan 2017 19:05:24 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.178.162]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 4028716006F; Tue, 3 Jan 2017 19:05:24 -0800 (PST) Subject: Re: [Emacs-diffs] master 9ed3685a77: Lots of refactorings and a few minor improvements. To: Stefan Merten References: Cc: Tino Calancha , Emacs developers From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Tue, 3 Jan 2017 19:05:23 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 03:05:33 -0000 Tino Calancha wrote: > This is not a standard Emacs commit message: i need to go throughout > the whole diffs to know exactly what entities have being modified. Yes. Please see the section "Commit messages" in the file CONTRIBUTING for the commit-message format that is preferred for Emacs changes. From MAILER-DAEMON Tue Jan 03 22:53:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOcdK-0005HU-Fj for mharc-emacs-devel@gnu.org; Tue, 03 Jan 2017 22:53:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48623) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOcdI-0005HM-C1 for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:53:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOcdH-0007VG-EC for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:53:00 -0500 Received: from mail-oi0-x22d.google.com ([2607:f8b0:4003:c06::22d]:33577) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOcdH-0007SE-9b for emacs-devel@gnu.org; Tue, 03 Jan 2017 22:52:59 -0500 Received: by mail-oi0-x22d.google.com with SMTP id 128so335907833oig.0 for ; Tue, 03 Jan 2017 19:52:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=mIg/S0ySTb7Bi23FxZ5k3ROFZ9wonE4tr84nrX0HoQY=; b=GYrnpUBN2hjYaRozVuyaSj2zRJvuGGXDAfUWaz8B8Hg2copjUktJ9g/RQmbQ9z0R9l SRPztc9DA0UqMvV4M56k9dG/YLx+3vbUrM8BrZU2FHfcA4BCGCtIyNyqkZL6FbSIR9GU 0WGlwWPdyAxzvnNDZyQlkWHW7zixKCmQXpwRaz1j+dzSzzJgAwC86D50qyvE2cd6t2qN aw7OFVy55VsWKXt/TW7sYJQNpNuZqzFuXkN4zTgJQsoLuz25qOR/nZuloqeu1acl7+uK Qhwu5P3Phv+87WVTE2+3Tr2KoHw98Coa1Dfyb0ONvUwrc29QkjEMRQyn7NAIO7gKj3qU mkoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=mIg/S0ySTb7Bi23FxZ5k3ROFZ9wonE4tr84nrX0HoQY=; b=Tm4o20H/Sga9X9ztZp2OXjUGeLJOQZMXL1WiszaC3LtUsY3vQwVql/rbX8mv/vAxVp 69NoZAeJshs1Zo7ssno/TWR6GV2MbzbHlGo2a2UsuLTteJt/yN8Xtx0ZB1jx6WjmKng9 jRF0J67OyvFC+ii7hmCr5AEz3Y5r0qVA2l7QUtrSowg03DvLLJtbRQABS6EXA0+/BqRk JtQRie2/xemjpUAoi82mo5fIHOmgAuUq6fDC3CMeg2DpOmNRIOvUmUTMck8S9qTdBK9q OM/wrpHdXN9tDcg9Xud3UXt1EfsX670Z7IrUexpKdpCMeTVZvL7c6C1EIbX9fF8DEDY5 lXLQ== X-Gm-Message-State: AIkVDXLVaIAzC59qh8/rUs3KJzFsPYF6zprsX2r3J0ppyZ+AZ2TpYkX1s8yG3I65/y79BeVRVnrTC76dzTZMJA== X-Received: by 10.202.196.198 with SMTP id u189mr31106466oif.64.1483501976911; Tue, 03 Jan 2017 19:52:56 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.77.208 with HTTP; Tue, 3 Jan 2017 19:52:56 -0800 (PST) In-Reply-To: <20170103174900.GA49916@breton.holly.idiocy.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> <20170103174900.GA49916@breton.holly.idiocy.org> From: =?UTF-8?B?R29uZy1ZaSBMaWFvIOW7luWuruavhQ==?= Date: Tue, 3 Jan 2017 21:52:56 -0600 Message-ID: Subject: Re: UI input unresponsive on macOS To: Alan Third Cc: Bob Halley , emacs-devel@gnu.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 03:53:01 -0000 I have similar issue on Linux/Gtk3. I am wondering if this is a threading/concurrency issue. On Tue, Jan 3, 2017 at 11:49 AM, Alan Third wrote: > On Tue, Jan 03, 2017 at 08:59:43AM -0800, Bob Halley wrote: >> >> > Can you try the attached patch? >> >> It didn=E2=80=99t fix things, but I did find a way to reproduce the prob= lem at will. >> >> If start emacs, and then you run >> >> open -a /Applications/Emacs.app whatever_file_here > > I didn=E2=80=99t even know you could do that. I wonder if I=E2=80=99ve ac= cidentally > clobbered some notification or event somewhere. I=E2=80=99ll have to try = and > work out how this works. > >> For a file which isn=E2=80=99t open, then the UI becomes unresponsive to >> input. Typing C-G seems to unstick it eventually, but there can be >> very long delays (I timed one at 49 seconds) before it beeps and the >> UI becomes responsive. I=E2=80=99ve seen it spontaneously complete too, >> again after a long time (at least 30 seconds), but usually it does >> not complete. > > I had some trouble with that sort of thing before. What was happening > then was that a time=E2=80=90out in ns_select was being reached before it > would react. I had thought I=E2=80=99d fixed that particular problem for = most > cases in the last patch, though. > >> Sometimes when I =E2=80=9Ccontinue=E2=80=9D in the debugger it unsticks = whatever is >> stuck, though the file I was trying to open never opens. > > One of the bugs I had with an earlier version of this code would go > away when I put a breakpoint on the relevant function. Debugging can > be hard. :) > > Thanks for your help. > > -- > Alan Third > From MAILER-DAEMON Wed Jan 04 05:09:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOiVH-0002jt-Mr for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 05:09:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36591) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOiVF-0002iI-Qb for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:09:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOiVA-0000Pt-Nc for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:09:05 -0500 Received: from smtp204.alice.it ([82.57.200.100]:11347) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOiVA-0000O9-F7 for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:09:00 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp204.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586293E10145B4FA; Wed, 4 Jan 2017 11:08:47 +0100 To: Emacs developers , Paul Eggert From: Angelo Graziosi Subject: Last commit breaks macOS build Message-ID: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> Date: Wed, 4 Jan 2017 11:08:32 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.100 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 10:09:06 -0000 This commit: 44c588a25ce231ce05fb535cd6d7162e91214f45 (Port recent autogen.sh changes to Darwin) breaks the build on macOS: ./autogen.sh [...] Your system has the required tools. Interfering nt/gnulib.mk from lib/gnulib.mk ... sed: 46: "This is of m...": command c expects \ followed by text and the 'configure' is not created... Angelo From MAILER-DAEMON Wed Jan 04 05:43:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOj30-0002dL-9S for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 05:43:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOj2x-0002dD-TT for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:43:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOj2x-0004QI-1j for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:43:55 -0500 Received: from mail-oi0-x236.google.com ([2607:f8b0:4003:c06::236]:36725) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOj2w-0004QC-Rm for emacs-devel@gnu.org; Wed, 04 Jan 2017 05:43:54 -0500 Received: by mail-oi0-x236.google.com with SMTP id v84so538158313oie.3 for ; Wed, 04 Jan 2017 02:43:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=lcDbMTJhV6/R5fzRP4VxeqEaEIcHnJieT5yua94pHTI=; b=YgMnfnqvKmOncjNPUZhhKUBwdsNGDLz7b50HTdc/JoUtve/rCbvHWiFXxCIsd7UKzU lY41BSexJ7mHhDSvviVnHjOvQiR1Ja7lJRi/SfODewrV6AfkeDviQWY6eKV10NO/jQ6/ exmp12D0YkY9zh+h3pKurP2/iRuoWe7flw+TaTRyn7+bP2V6gZbNpWmFjAGSImbU/VCf VGHmfDGqtL/bxeJZ4Sbwv4wJBKCn0gKW2EJCe05yQOwjadmKZkgKwa06q3+fsltqVEbO UpnxK83QSOuQeqchMzv3kuXC24MDHU8G7v+Zaabjwpgd872whAOBX7frOvkgU+L0s9K8 Zo5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=lcDbMTJhV6/R5fzRP4VxeqEaEIcHnJieT5yua94pHTI=; b=rtFOdGiHaFLdp64GArfWbtIsPGIY/fwur/0JI4HNLxsuqJrajncuD06u/2HmGl/Go0 nl+lv+AP2doSun34nEMInyq32QaQXh2sczXYnYjMW3SoQKhgxWYcnqJej5IY4lj1450p +qqbWVUvw9plgy95g2MQof/Pe9970oEvYe318VwztvMXtKVYFnmECQLzasJqD5uXft9G v85FOqUYIt4MB4QKMJnPsBgtjNzNPWdyZnl/m9xoyi7N+LdV1Hk4WG4vTjgmT5HnoVIy 7Ah5Evs/T8wtdn4dFg03gL1pmGsm4pMd/mHOdzknqidFbF576OM/o3RKG5u3nf75Ro5Q wc5w== X-Gm-Message-State: AIkVDXL1CQF4/mPSZH0/mKiHu7KtR4eCrjMgB+QNCeyYqMpqbg4IkqDdus9IcQQ9CjiSoytESn55IbKstgA5Qg== X-Received: by 10.157.17.89 with SMTP id p25mr35772902otp.239.1483526633848; Wed, 04 Jan 2017 02:43:53 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Wed, 04 Jan 2017 10:43:43 +0000 Message-ID: Subject: Re: Small patch for ffap.el To: Emacs developers Content-Type: multipart/alternative; boundary=001a114098ce0686450545427604 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 10:43:56 -0000 --001a114098ce0686450545427604 Content-Type: text/plain; charset=UTF-8 John Wiegley schrieb am Di., 3. Jan. 2017 um 17:41 Uhr: > >>>>> "PS" == Philipp Stephani writes: > > PS> attached is a small patch that documents the fact that functions in > PS> ffap-alist can use the match data. This is already used by ffap.el > itself, > PS> e.g. in ffap-rfc. > > Thanks, pushed to master. > > > Thanks, since this is only a doc fix I've also pushed it to emacs-25. --001a114098ce0686450545427604 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


John W= iegley <jwiegley@gmail.com>= schrieb am Di., 3. Jan. 2017 um 17:41=C2=A0Uhr:
>>>>> "PS" =3D=3D Philipp Stephani &= lt;p.stephani2@gmail.com> writes:

PS> attached is a small patch that documents the fact that functions in<= br class=3D"gmail_msg"> PS> ffap-alist can use the match data. This is already used by ffap.el i= tself,
PS> e.g. in ffap-rfc.

Thanks, pushed to master.



Thanks, since this= is only a doc fix I've also pushed it to emacs-25.=C2=A0
--001a114098ce0686450545427604-- From MAILER-DAEMON Wed Jan 04 08:40:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOlnf-0004zV-Ph for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 08:40:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOlnc-0004ws-QB for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:40:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOlnX-0004mc-VI for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:40:16 -0500 Received: from ocolin.muc.de ([193.149.48.4]:55937 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cOlnX-0004kK-Kc for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:40:11 -0500 Received: (qmail 25378 invoked by uid 3782); 4 Jan 2017 13:40:09 -0000 Received: from acm.muc.de (p548C6D63.dip0.t-ipconnect.de [84.140.109.99]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 04 Jan 2017 14:40:08 +0100 Received: (qmail 7447 invoked by uid 1000); 4 Jan 2017 13:39:49 -0000 Date: Wed, 4 Jan 2017 13:39:48 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170104133948.GA7373@acm.fritz.box> References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 13:40:18 -0000 Hello, Stefan. On Tue, Jan 03, 2017 at 04:48:15PM -0500, Stefan Monnier wrote: > > It looks like you've already done that, possibly on 2015-10-29. Looking > > at the source (now I know what to look for), eval-sexp-add-defvars is > > also in Emacs 25.1's source for compile-defun. > Oh, indeed. Not sure why you're seeing what you're seeing, then. > At least on Emacs's master branch I can't seem to reproduce your problem > (don't have a fresh emacs-25 build to try it right now). For what it's worth, I can't reproduce the problem any more. I must have got my Emacs 25.1 into a strange state, somehow. > > , so the question becomes why is setting the declared_special flag done > > inside the "if (CONSP (tail))" rather than outside? I.e. why is it only > > done when a variable has an initialisation? > Because this code is only relevant when you evaluate (defvar ), > whereas here we're not evaluating it, we're only processing it for the > byte-compiler. Understood. Thanks. > There's also the important difference that a (defvar ) only > has effect for the code in the same file rather than having a global > effect, so you can do (defvar toto) and then use `toto` as > a dynamically-scoped variable in your file without wreaking havoc in all > other files which happen to also use `toto` as a (lexical) variable. Ouch! There seems to be a clash between symbols (which are global, dynamic) and lexical variables (which are local and "invisible"): the only way to mark a variable as lexical is at the global level. However, I'm seeing something else strange (still on 25.1). I do this: (i) M-x load-library edebug. (ii) visit edebug.el. (iii) instrument `edebug' for edebugging (yes, I know ;-). (iv) M-: (edebug). (v) step through the function to just after the let bindings. (vi) e (special-variable-p 'edebug-breakpoints). This last returns nil. This suggests edebug-breakpoints has been bound as a lexical variable, rather than a dynamic one. (There is a defvar for it earlier in the file.) This is surely not right. What is going on here? Is it, perhaps, a bug? However, edebug.elc still seems to work, though I haven't successfully mananged to run `edebug' recently. > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 04 08:57:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOm3q-0002nY-8P for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 08:57:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOm3n-0002l7-RB for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:57:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOm3m-00036t-R9 for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:56:59 -0500 Received: from mail-vk0-x242.google.com ([2607:f8b0:400c:c05::242]:34147) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOm3m-00036g-Lo for emacs-devel@gnu.org; Wed, 04 Jan 2017 08:56:58 -0500 Received: by mail-vk0-x242.google.com with SMTP id p9so32879698vkd.1 for ; Wed, 04 Jan 2017 05:56:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xJmNi3kQArTjRelcCqSQAaHHfZIMOBFQ8Z7snGfCpS8=; b=gLaxktqjxzmD6q8rJ/JjD/0N3ZuBBnQT/CniopzXh38WGxc4rboM9A+ijcyZFhDb5J NXkg995zBLPGzRNjCtcIUid5MYWsawfocecF7zUIJ/vrtfeOBoF2Gh2MovUcwO361tbq HsLaDQriNxfNn3bI9JYzuJuh4WDaCCJZrpbUWgXw0oumlZjTmHvfsof9tix7o3/ln/oX h8A5LgD27kigu0EE7oJ4JaSID3xrjj2f/fgZj4fz8HTxNYjlkvPRpYw6dBCefWzO/k4v txr+cdgPfUJ1BaIaUhuQfywcB43jGxrdgjqQ6w46+y+BioDUT32a33KcjUSsLVq5TJJG m+aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xJmNi3kQArTjRelcCqSQAaHHfZIMOBFQ8Z7snGfCpS8=; b=Gy2BNmFx5jAMWGxk1FM7B18minE6Pd8nUnzAbmpq8W/mxk3J/ejpZe4rEFRxaP6BNG grWm7/YfFnu1zVRTq4h9TzJFJ5Fe+0Ca5WPT6HfIYbDlknhknbq7Te03D15mTDpXPJgL h84PniVS6a4UxrTixOQPv7T7tqDfqKVSdL+MHTxfbJk4/iLYwYMxM/mtf27nvoIndLh0 NGqrnwqEK7bow1MeW976oPlX5hJFNdN4Tvj61E2WemuZF5/7LTaMjyM/pCNcWYG1c7MK XN4gQcONocaxw4Cv/6I80yYGFyfCLDJrROA8Idhe6Ic9SomJ8KzTFQW0VPlBduMtVHiO WTJw== X-Gm-Message-State: AIkVDXIc9aE9yH5YkpocK5LV7ZdsVsNkUqBfZIhbYLKPeXZ2xmTa6TShDYoyJcVd7vzU5vOisK3yXG53KAcs8w== X-Received: by 10.31.102.134 with SMTP id a128mr18058196vkc.104.1483538217948; Wed, 04 Jan 2017 05:56:57 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kaushal Modi Date: Wed, 04 Jan 2017 13:56:47 +0000 Message-ID: Subject: Re: [Emacs-diffs] master 9ed3685a77: Lots of refactorings and a few minor improvements. To: Stefan Merten Cc: Emacs developers , Paul Eggert , Tino Calancha Content-Type: multipart/alternative; boundary=94eb2c0946467ddac80545452873 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 13:57:01 -0000 --94eb2c0946467ddac80545452873 Content-Type: text/plain; charset=UTF-8 With these many changes, I believe it is worth to make another commit with a proper change log as explained here: http://git.savannah.gnu.org/cgit/emacs.git/tree/CONTRIBUTE#n44 One should be able to understand which files (and functions) are touched by that commit just by reading the commit log. On Tue, Jan 3, 2017 at 10:05 PM Paul Eggert wrote: > Tino Calancha wrote: > > > This is not a standard Emacs commit message: i need to go throughout > > the whole diffs to know exactly what entities have being modified. > > Yes. Please see the section "Commit messages" in the file CONTRIBUTING for > the > commit-message format that is preferred for Emacs changes. > > -- Kaushal Modi --94eb2c0946467ddac80545452873 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
With these many changes, I believe it is worth to make ano= ther commit with a proper change log as explained here:=C2=A0http://git.sav= annah.gnu.org/cgit/emacs.git/tree/CONTRIBUTE#n44

One should be = able to understand which files (and functions) are touched by that commit j= ust by reading the commit log.

On Tue, Jan 3, 2017 at 10:05 PM Paul Eggert <eggert@cs.ucla.edu> wrote:
Tino Calancha wrote:

> This is not a standard Emacs commit message: i need to go throughout > the whole diffs to know exactly what entities have being modified.

Yes. Please see the section "Commit messages" in the file CONTRIB= UTING for the
commit-message format that is preferred for Emacs changes.

--

Kaushal Modi

--94eb2c0946467ddac80545452873-- From MAILER-DAEMON Wed Jan 04 10:23:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOnPi-0002Mg-BF for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 10:23:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52754) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOnPf-0002MS-Tf for emacs-devel@gnu.org; Wed, 04 Jan 2017 10:23:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOnPc-00011z-Pf for emacs-devel@gnu.org; Wed, 04 Jan 2017 10:23:39 -0500 Received: from [195.159.176.226] (port=42136 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOnPc-00011V-I3 for emacs-devel@gnu.org; Wed, 04 Jan 2017 10:23:36 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOnPU-0007jz-Ov for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:23:28 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Date: Wed, 04 Jan 2017 10:23:16 -0500 Lines: 25 Message-ID: References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:qynJI/TgCX6rUcBa47X8lkeaoE8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 15:23:41 -0000 > Ouch! There seems to be a clash between symbols (which are global, > dynamic) and lexical variables (which are local and "invisible"): the > only way to mark a variable as lexical is at the global level. Yes, there are some subtleties there. The main issue is that every occurrence of an identifier, whether a binding occurrence or a "use" can be lexical or dynamic, but we don't want the coders to have to constantly specify which uses and which bindings are lexical and which are dynamic. So we offer ways to "mark" symbols are "this one uses dynamic scoping". There are 2 such ways: - *Evaluation* of (defvar VAR VAL . REST) marks this variable as being dynamically scoped in all the code that will be compiled in this session. - *Compilation* of (defvar VAR . REST) marks this variable as being dynamically scoped in the current compilation unit. > (vi) e (special-variable-p 'edebug-breakpoints). > > This last returns nil. This suggests edebug-breakpoints has been bound > as a lexical variable, rather than a dynamic one. (There is a defvar > for it earlier in the file.) This is surely not right. special-variable-p only indicates if (defvar VAR VAL . REST) was evaluated. Stefan From MAILER-DAEMON Wed Jan 04 10:37:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOndV-0006jT-L9 for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 10:37:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOndS-0006jM-QH for emacs-devel@gnu.org; Wed, 04 Jan 2017 10:37:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOndO-0007Fm-Az for emacs-devel@gnu.org; Wed, 04 Jan 2017 10:37:54 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44715) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOndO-0007Fi-7e; Wed, 04 Jan 2017 10:37:50 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3281 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cOndN-0005h2-9O; Wed, 04 Jan 2017 10:37:49 -0500 Date: Wed, 04 Jan 2017 17:38:02 +0200 Message-Id: <83zij6esyt.fsf@gnu.org> From: Eli Zaretskii To: Gong-Yi Liao =?utf-8?B?5buW5a6u5q+F?= CC: alan@idiocy.org, halley@play-bow.org, emacs-devel@gnu.org In-reply-to: (message from Gong-Yi Liao =?utf-8?B?5buW5a6u5q+F?= on Tue, 3 Jan 2017 21:52:56 -0600) Subject: Re: UI input unresponsive on macOS Reply-to: Eli Zaretskii References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> <20170103174900.GA49916@breton.holly.idiocy.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 15:37:55 -0000 > From: Gong-Yi Liao 廖宮毅 > Date: Tue, 3 Jan 2017 21:52:56 -0600 > Cc: Bob Halley , emacs-devel@gnu.org > > I have similar issue on Linux/Gtk3. I am wondering if this is a > threading/concurrency issue. Unlikely, at least not in the same way as the Darwin users are experiencing. Please describe your problems in a separate thread and in more detail, preferably via "M-x report-emacs-bug RET". Thanks. From MAILER-DAEMON Wed Jan 04 13:23:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOqDb-0007Up-6e for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 13:23:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45827) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOqDY-0007Ud-Vd for Emacs-devel@gnu.org; Wed, 04 Jan 2017 13:23:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOqDV-0000QH-Ru for Emacs-devel@gnu.org; Wed, 04 Jan 2017 13:23:20 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:50668) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cOqDV-0000P0-LM for Emacs-devel@gnu.org; Wed, 04 Jan 2017 13:23:17 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D44FC1600A2; Wed, 4 Jan 2017 10:23:14 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id OVt9QheujYIp; Wed, 4 Jan 2017 10:23:13 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E5E8E1600AA; Wed, 4 Jan 2017 10:23:13 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id eRHhjXldCFSq; Wed, 4 Jan 2017 10:23:13 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.178.162]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id C554F1600A5; Wed, 4 Jan 2017 10:23:13 -0800 (PST) Subject: Re: [Emacs-diffs] master 9ed3685a77: Lots of refactorings and a few minor improvements. To: Stefan Merten , Tino Calancha , Kaushal Modi References: <492.1483523991@eskebo.fritz.box> <4331.1483545171@eskebo.fritz.box> From: Paul Eggert Organization: UCLA Computer Science Department Cc: Emacs Development Message-ID: <28fe59fd-191f-64c0-2333-7462403d976c@cs.ucla.edu> Date: Wed, 4 Jan 2017 10:23:10 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <4331.1483545171@eskebo.fritz.box> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 18:23:22 -0000 Stefan Merten wrote: > I got the impression, that lately few people care about these rules I'm afraid that impression is incorrect. Many developers care (hence this= thread=20 :-). > See for example: > > http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/textmodes/rst.el= ?id=3D92e5b41c7c5898820356fc66456804a45bbe7852 > http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/textmodes/rst.el= ?id=3Dc61ee94959ba96b2a327df0684593f7e569e30be Those examples merely rename locals or adjust comments, and typically thi= s=20 doesn't need to be mentioned in ChangeLogs. Your changes did more than th= at. > I hope the commit message below is what you require. Much better, thanks. My main problem with it is that "Refactor by removin= g old=20 functions, introducing new functions and change existing functions" is to= o=20 vague. Please write for an audience that includes people who have code th= at=20 calls (say) rst-comment-region and want to know how to adjust the code af= ter=20 your changes to the API. At this point, by the way, the commit is done. We're talking about what y= ou=20 should do next time. (You can change the ChangeLog.3 file later if you li= ke, but=20 that's not urgent.) From MAILER-DAEMON Wed Jan 04 13:30:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOqKJ-0000JH-Ty for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 13:30:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOqKH-0000Iq-Bl for emacs-devel@gnu.org; Wed, 04 Jan 2017 13:30:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOqKG-0003dT-F7 for emacs-devel@gnu.org; Wed, 04 Jan 2017 13:30:17 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46957) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOqKG-0003dK-CA; Wed, 04 Jan 2017 13:30:16 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cOqKE-0007Hq-Nj; Wed, 04 Jan 2017 13:30:14 -0500 From: Glenn Morris To: emacs-devel@gnu.org Cc: Stefan Merten Subject: Re: master 9ed3685: Lots of refactorings and a few minor improvements. References: <20170103221540.4171.87517@vcs.savannah.gnu.org> <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> X-Spook: TTP fissionable War on Terrorism UN ammunition al-Qaida X-Ran: D_XBbVe4O;7t-zp_<|1HGE+x6:7J5dP_<[.168$EirDnT@rzPOgVP7k%8-^=Id+%8T=-'w X-Hue: cyan X-Attribution: GM Date: Wed, 04 Jan 2017 13:30:14 -0500 In-Reply-To: <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> (Stefan Merten's message of "Tue, 3 Jan 2017 22:15:41 +0000 (UTC)") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 18:30:18 -0000 Stefan Merten wrote: > branch: master > commit 9ed3685a778843cbc0df3ca2490f79eb4e2ebefe > Author: Stefan Merten > Commit: Stefan Merten [In rst-package-emacs-version-alist:] > + ("1.5.1" . "26.2") Hi - don't you want 26.1 there? I also note that Emacs 25.1 seems to contain 1.4.1, and 24.5 1.4.0, which does not seem to agree with the above alist either? From MAILER-DAEMON Wed Jan 04 15:01:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOrkF-0008G2-2s for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 15:01:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38723) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOrkD-0008ER-34 for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:01:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOrkC-0007D6-9H for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:01:09 -0500 Received: from mail-wj0-x234.google.com ([2a00:1450:400c:c01::234]:36753) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOrkC-0007Bs-2M for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:01:08 -0500 Received: by mail-wj0-x234.google.com with SMTP id ew7so5325805wjc.3 for ; Wed, 04 Jan 2017 12:01:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=McAqsqHzkqqcPwFo52itXNgTkQtGHhXkrWxQ5w32jcU=; b=FXXC9Qld9aHy6EQgaJ4Lvw8PcMrx8qgyj1peUxYwsdANTTvLhX/243vsBfY2E0byyg enanI04l1ueV1Oqa7iouqrjkZP1SQ+dgMDrpF+Lr7LvsKw2vnJZuGK1/QewtRjxEj/AX jJ683YDochenFfnuvEbUyFRvTV2xaUhni714cRpiT3x2NPwHW//CR8V3PMYxbVBOODxL WEboSlCDG2A7XzaEB6isTrkW2L//f9wdjVjEvzBcmGkdJt7rWZ0ISgcXO+eYCePcPziO 9ewS22g3WH4rO3wr0Xx6SU1FChf5qM2szSsN90+XuQ/1co6X+CJd/ZO0pvmr4gGnMsEs 4oqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=McAqsqHzkqqcPwFo52itXNgTkQtGHhXkrWxQ5w32jcU=; b=XuGJmnWYiKssRO4GjZnNWxftLPd5wbw2IDMT3g7ssQpqwV0Q+6e5OqJir3CKOUO4nm x8drV5mxv+019YuzgpqKxrfH6RuR8dr1xvrxjSKUnaDqz2e/wTfg71k4H+2CS+LmZCEU woVMYGmrwzp78Azc0Rlm6ZQvmE8xePYy9Xqiazraazyv8d7JXPcw3qzwxojlgHfIPNNv dQl0BmXdCRFafT2wEcmnnohBDzmqvPRHs6Ob9O1TGsaBGP7y9Fz4wrA8WIlECJrQcmQi F7EbccKz+QfYCj1JXmXKr/zKJeHRw4BrzDJJ7YuNbH7X2XxNo2GD5TLUOQACMPQddqop 9uoA== X-Gm-Message-State: AIkVDXIQ7EMSMwCU0XP9Hbop860nynkqPhi+0jPO28bSfPCFCAiu1YOparkQ/Su19HIl5BqN9mznSYGsjsknIQ== X-Received: by 10.194.151.132 with SMTP id uq4mr55695571wjb.229.1483560064945; Wed, 04 Jan 2017 12:01:04 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.163.196 with HTTP; Wed, 4 Jan 2017 12:00:24 -0800 (PST) From: aditya siram Date: Wed, 4 Jan 2017 14:00:24 -0600 Message-ID: Subject: Occasional Crash When Running `rgrep` To: "emacs-devel@gnu.org Development" Content-Type: multipart/alternative; boundary=089e0115ff88ac94cb05454a3eea X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 20:01:10 -0000 --089e0115ff88ac94cb05454a3eea Content-Type: text/plain; charset=UTF-8 Hi, Of late I've been getting occasional Emacs crashes with the following backtrace: $ emacs -nw Fatal error 11: Segmentation fault Backtrace: emacs[0x4fbdb2] emacs[0x4e3389] emacs[0x4fa83e] emacs[0x4faa43] emacs[0x4faaaf] /usr/lib/libpthread.so.0(+0x11080)[0x7f1ebfa42080] emacs(re_search_2+0x38c)[0x53168c] emacs[0x526c12] emacs[0x527565] emacs[0x527747] emacs[0x554416] emacs[0x58a32b] emacs[0x553e7d] emacs[0x55426b] emacs[0x58a32b] emacs[0x553e7d] emacs[0x55426b] emacs[0x58a32b] emacs[0x553e7d] emacs[0x55426b] emacs[0x58a32b] emacs[0x55426b] emacs[0x5544dc] emacs[0x552695] emacs[0x554351] emacs[0x58a32b] emacs[0x55426b] emacs[0x58a32b] emacs[0x55426b] emacs[0x58a32b] emacs[0x55426b] emacs[0x552de6] emacs[0x42abca] emacs[0x437f5f] emacs[0x438087] emacs[0x43c3ea] emacs[0x440ca2] emacs[0x43f105] emacs[0x44a3c8] emacs[0x44d00a] emacs[0x460b9e] ... Segmentation fault (core dumped) I can't reproduce this minimally but it seems to happen when (1) I'm using emacsclient, the above crashed during an `emacsclient -c` session, and (2) when running some kind of file search, I usually use rgrep. Thanks! -deech --089e0115ff88ac94cb05454a3eea Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,
Of late I've been get= ting occasional Emacs crashes with the following backtrace:
$ emacs -nw<= br>Fatal error 11: Segmentation fault
Backtrace:
emacs[0x4fbdb2]
e= macs[0x4e3389]
emacs[0x4fa83e]
emacs[0x4faa43]
emacs[0x4faaaf]
= /usr/lib/libpthread.so.0(+0x11080)[0x7f1ebfa42080]
emacs(re_search_2+0x3= 8c)[0x53168c]
emacs[0x526c12]
emacs[0x527565]
emacs[0x527747]
e= macs[0x554416]
emacs[0x58a32b]
emacs[0x553e7d]
emacs[0x55426b]
= emacs[0x58a32b]
emacs[0x553e7d]
emacs[0x55426b]
emacs[0x58a32b]emacs[0x553e7d]
emacs[0x55426b]
emacs[0x58a32b]
emacs[0x55426b]emacs[0x5544dc]
emacs[0x552695]
emacs[0x554351]
emacs[0x58a32b]<= br>emacs[0x55426b]
emacs[0x58a32b]
emacs[0x55426b]
emacs[0x58a32b]=
emacs[0x55426b]
emacs[0x552de6]
emacs[0x42abca]
emacs[0x437f5f= ]
emacs[0x438087]
emacs[0x43c3ea]
emacs[0x440ca2]
emacs[0x43f10= 5]
emacs[0x44a3c8]
emacs[0x44d00a]
emacs[0x460b9e]
...
Segme= ntation fault (core dumped)

I can't reproduce this minimal= ly but it seems to happen when (1) I'm using emacsclient, the above cra= shed during an `emacsclient -c` session, and (2) when running some kind of = file search, I usually use rgrep.

Thanks!
-deech
<= /div> --089e0115ff88ac94cb05454a3eea-- From MAILER-DAEMON Wed Jan 04 15:04:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOrnb-0002iC-24 for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 15:04:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39732) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOrnZ-0002h1-Cf for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:04:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOrnY-0000mz-GC for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:04:37 -0500 Received: from mail-wj0-x230.google.com ([2a00:1450:400c:c01::230]:36595) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOrnY-0000mp-9p for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:04:36 -0500 Received: by mail-wj0-x230.google.com with SMTP id ew7so5396545wjc.3 for ; Wed, 04 Jan 2017 12:04:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=WjED8gUw22mvkinOK0qockUwzusaISjqPMC5HO8tBG0=; b=AZRR2A1bJw7pcvNxbGc6dH7abIKjUaqUhgGIAqkUczLuifqFCzCmMubYW+OL58uW/j bFvEGyq4JfPfYeEbm6an/1y6CglUPn8FaH1/Q4ICE//VvZzQNxKZ10QxHsvP/C1D0ehh BE+DUIA3buhBlnXlUYYGfLvu/MbvJ/L1NL3Ub9nViDhYdZqO7BV32YjXVBEjtcvAlf4P fsUd12O3wLnQDxPFbxk0SYMiyENby3KhLoa/ezpKqycL54FkssNWnHdO3IGdZQPqyzht 9Zxz3r0GUXFSCC2PbQzHVVyKIJ1V8J4LwkUaIOPiakc56TIyGg83pJBzvrPzMFtvqI3d GUKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=WjED8gUw22mvkinOK0qockUwzusaISjqPMC5HO8tBG0=; b=RzvlMTHHqxbN2O+XO7PQpIO6XQFYZHaQvR6Dj7Dy3uBGSJFlRt+YQbPYGIwSnWHxrw 3GVwqAou8lcLaAUAnyLwpBTnoHOVy7OsUaoNR6LK6yp4bfLjsI5B8Q+WB0tXjL66De4L x5+6faxGbINdZmLM8sTBmBK0lw/WK/MTEXKheKcxneQmopU3QiKyMqnuSmNfRCI3l2CX U2Y2K3afrsUTQ1jnldcyxSmr5yBt03zF3+t2fFgaQx49Q937HGQKTOtr4d0AB178p/b4 eFQnbhlWt+a9MQLXVptXFEJtStmBy7LeQDeXeQ3NVZBsgCG2SxbPF4VhmDn+B1Sdnkei f5Cw== X-Gm-Message-State: AIkVDXJgDCqPisHm6vYNCt2zSWFZpTT4lbOp8WDGePNz9T8R/G7vfwbc0pdW3q5kqBLFO85P99wV2WHjJWbEmQ== X-Received: by 10.194.134.66 with SMTP id pi2mr56240764wjb.61.1483560275053; Wed, 04 Jan 2017 12:04:35 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.163.196 with HTTP; Wed, 4 Jan 2017 12:03:54 -0800 (PST) In-Reply-To: References: From: aditya siram Date: Wed, 4 Jan 2017 14:03:54 -0600 Message-ID: Subject: Re: Occasional Crash When Running `rgrep` To: "emacs-devel@gnu.org Development" Content-Type: multipart/alternative; boundary=089e01228fbe32931905454a4b1d X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 20:04:38 -0000 --089e01228fbe32931905454a4b1d Content-Type: text/plain; charset=UTF-8 I forgot to include the relevant version info, sorry: $ emacs --version GNU Emacs 25.1.1 Copyright (C) 2016 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of GNU Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. $ uname -r 4.4.38-1-lts 2017-01-04 14:00 GMT-06:00 aditya siram : > Hi, > Of late I've been getting occasional Emacs crashes with the following > backtrace: > $ emacs -nw > Fatal error 11: Segmentation fault > Backtrace: > emacs[0x4fbdb2] > emacs[0x4e3389] > emacs[0x4fa83e] > emacs[0x4faa43] > emacs[0x4faaaf] > /usr/lib/libpthread.so.0(+0x11080)[0x7f1ebfa42080] > emacs(re_search_2+0x38c)[0x53168c] > emacs[0x526c12] > emacs[0x527565] > emacs[0x527747] > emacs[0x554416] > emacs[0x58a32b] > emacs[0x553e7d] > emacs[0x55426b] > emacs[0x58a32b] > emacs[0x553e7d] > emacs[0x55426b] > emacs[0x58a32b] > emacs[0x553e7d] > emacs[0x55426b] > emacs[0x58a32b] > emacs[0x55426b] > emacs[0x5544dc] > emacs[0x552695] > emacs[0x554351] > emacs[0x58a32b] > emacs[0x55426b] > emacs[0x58a32b] > emacs[0x55426b] > emacs[0x58a32b] > emacs[0x55426b] > emacs[0x552de6] > emacs[0x42abca] > emacs[0x437f5f] > emacs[0x438087] > emacs[0x43c3ea] > emacs[0x440ca2] > emacs[0x43f105] > emacs[0x44a3c8] > emacs[0x44d00a] > emacs[0x460b9e] > ... > Segmentation fault (core dumped) > > I can't reproduce this minimally but it seems to happen when (1) I'm using > emacsclient, the above crashed during an `emacsclient -c` session, and (2) > when running some kind of file search, I usually use rgrep. > > Thanks! > -deech > --089e01228fbe32931905454a4b1d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I forgot to include the relevant version info, sorry:
$= emacs --version
GNU Emacs 25.1.1
Copyright (C) 2016 Free Software Fo= undation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may r= edistribute copies of GNU Emacs
under the terms of the GNU General Publi= c License.
For more information about these matters, see the file named = COPYING.
$ uname -r
4.4.38-1-lts


2017-01-04 14:00 GMT-06:00 aditya siram = <aditya.siram@gmail.com>:
Hi,
Of late I've bee= n getting occasional Emacs crashes with the following backtrace:
$ emacs= -nw
Fatal error 11: Segmentation fault
Backtrace:
emacs[0x4fbdb2]=
emacs[0x4e3389]
emacs[0x4fa83e]
emacs[0x4faa43]
emacs[0x4faaaf= ]
/usr/lib/libpthread.so.0(+0x11080)[0x7f1ebfa42080]
emacs(re_se= arch_2+0x38c)[0x53168c]
emacs[0x526c12]
emacs[0x527565]
emacs= [0x527747]
emacs[0x554416]
emacs[0x58a32b]
emacs[0x553e7d]
emac= s[0x55426b]
emacs[0x58a32b]
emacs[0x553e7d]
emacs[0x55426b]
ema= cs[0x58a32b]
emacs[0x553e7d]
emacs[0x55426b]
emacs[0x58a32b]
em= acs[0x55426b]
emacs[0x5544dc]
emacs[0x552695]
emacs[0x554351]
e= macs[0x58a32b]
emacs[0x55426b]
emacs[0x58a32b]
emacs[0x55426b]
= emacs[0x58a32b]
emacs[0x55426b]
emacs[0x552de6]
emacs[0x42abca]emacs[0x437f5f]
emacs[0x438087]
emacs[0x43c3ea]
emacs[0x440ca2]emacs[0x43f105]
emacs[0x44a3c8]
emacs[0x44d00a]
emacs[0x460b9e]<= br>...
Segmentation fault (core dumped)

I can't reprodu= ce this minimally but it seems to happen when (1) I'm using emacsclient= , the above crashed during an `emacsclient -c` session, and (2) when runnin= g some kind of file search, I usually use rgrep.

Thanks!
-deech

--089e01228fbe32931905454a4b1d-- From MAILER-DAEMON Wed Jan 04 15:05:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOroI-0003FF-Jr for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 15:05:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOroG-0003Da-9z for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:05:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOroC-0001Dl-B1 for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:05:20 -0500 Received: from ocolin.muc.de ([193.149.48.4]:59143 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cOroC-0001DC-0j for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:05:16 -0500 Received: (qmail 38731 invoked by uid 3782); 4 Jan 2017 20:05:13 -0000 Received: from acm.muc.de (p548C6D63.dip0.t-ipconnect.de [84.140.109.99]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 04 Jan 2017 21:05:13 +0100 Received: (qmail 1351 invoked by uid 1000); 4 Jan 2017 20:04:58 -0000 Date: Wed, 4 Jan 2017 20:04:58 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170104200458.GA2052@acm.fritz.box> References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 20:05:21 -0000 Hello, Stefan On Wed, Jan 04, 2017 at 10:23:16AM -0500, Stefan Monnier wrote: > > Ouch! There seems to be a clash between symbols (which are global, > > dynamic) and lexical variables (which are local and "invisible"): the > > only way to mark a variable as lexical is at the global level. > Yes, there are some subtleties there. The main issue is that every > occurrence of an identifier, whether a binding occurrence or a "use" can > be lexical or dynamic, but we don't want the coders to have to > constantly specify which uses and which bindings are lexical and which > are dynamic. So we offer ways to "mark" symbols are "this one uses > dynamic scoping". There are 2 such ways: > - *Evaluation* of (defvar VAR VAL . REST) marks this variable as being > dynamically scoped in all the code that will be compiled in this session. > - *Compilation* of (defvar VAR . REST) marks this variable as being > dynamically scoped in the current compilation unit. > > (vi) e (special-variable-p 'edebug-breakpoints). > > This last returns nil. This suggests edebug-breakpoints has been bound > > as a lexical variable, rather than a dynamic one. (There is a defvar > > for it earlier in the file.) This is surely not right. > special-variable-p only indicates if (defvar VAR VAL . REST) was evaluated. So it would seem. There is a bug in the elisp manual, which says that a variable being declared by defvar will cause special-variable-p to return t for it. The doc string looks right, though far from helpful for anybody who doesn't already know variable binding inside out, and even a bit cryptic for those who do. special-variable-p would appear to be a near useless function, since it doesn't do what it's name says. "Defining Variables" in the elisp manual states that "(defvar foo)" makes foo a special variable; yet "(special-variable-p 'foo)" returns nil. This has got to be a bug, of some sort. There appears to be no way of checking whether a variable's binding is (or will be) lexical. I can foresee quite a bit of confusion happening over all this, if it hasn't happened already. Am I missing something, or is this all really as incoherent as it appears to me? > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 04 15:10:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOrt4-0006lK-Uy for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 15:10:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOrt2-0006ji-Aa for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:10:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOrsy-0004FB-CE for emacs-devel@gnu.org; Wed, 04 Jan 2017 15:10:16 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48025) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOrsy-0004Eq-9O; Wed, 04 Jan 2017 15:10:12 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3984 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cOrsv-000711-Ev; Wed, 04 Jan 2017 15:10:12 -0500 Date: Wed, 04 Jan 2017 22:10:10 +0200 Message-Id: <83inpuegd9.fsf@gnu.org> From: Eli Zaretskii To: aditya siram CC: emacs-devel@gnu.org In-reply-to: (message from aditya siram on Wed, 4 Jan 2017 14:03:54 -0600) Subject: Re: Occasional Crash When Running `rgrep` Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 20:10:17 -0000 > From: aditya siram > Date: Wed, 4 Jan 2017 14:03:54 -0600 > > I forgot to include the relevant version info, sorry: > $ emacs --version > GNU Emacs 25.1.1 > Copyright (C) 2016 Free Software Foundation, Inc. > GNU Emacs comes with ABSOLUTELY NO WARRANTY. > You may redistribute copies of GNU Emacs > under the terms of the GNU General Public License. > For more information about these matters, see the file named COPYING. > $ uname -r > 4.4.38-1-lts > > 2017-01-04 14:00 GMT-06:00 aditya siram : > > Hi, > Of late I've been getting occasional Emacs crashes with the following backtrace: > $ emacs -nw > Fatal error 11: Segmentation fault > Backtrace: > emacs[0x4fbdb2] Can you convert this to a human-readable backtrace with file names and line numbers, using the method described in the node "Crashing" of the Emacs user manual? Otherwise, it's hard to do anything useful with this information. Thanks. From MAILER-DAEMON Wed Jan 04 16:09:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOson-00007C-F3 for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 16:09:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36254) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOsok-000070-P6 for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:09:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOsok-0003q8-0L for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:09:54 -0500 Received: from mail-wj0-x233.google.com ([2a00:1450:400c:c01::233]:34600) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOsoj-0003oV-P7 for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:09:53 -0500 Received: by mail-wj0-x233.google.com with SMTP id tn15so20351116wjb.1 for ; Wed, 04 Jan 2017 13:09:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=ylC9cZn/1MdgOBykZL/qCSXKzr1Joxr3VRsFXO/BLjc=; b=GLxe9Yylg3M4ILkdbnFpBIxZPQVBATJClbX36Eesnw6B0tptXM2iZCCGNCcsVOMLT+ yOBD6NcuvQl07UEUV5HfwiB0VRJrbACIwPKSpKCnh1o293lScNRksBcK6XxkDBX8Dye1 Shzcfm9GFFUu7iWMzAX6IjvxUjGMsIKYztRyIR84YlUOU99ss3wOulbzJoYTGS8MY7/d cClvFehDJx34fhcfXkmHQjJRaqb+KlFNsxgmVUFzWqzCqOCCqbXRsidboraai1C8yb2K LnvT0lVAH8kUdY9fLzugATyggYE0iMVOVlYmG9kNyxQR1K0Ogs1TR4tNZM9M1cgcLY4+ xGKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=ylC9cZn/1MdgOBykZL/qCSXKzr1Joxr3VRsFXO/BLjc=; b=j1EjA624Kg77rpphJ4A7NvTcSn5chd3uvVOAxtkla14Gt+l6BPuYin7lG3ScrZNgQi QfOWOfRDBSa7Cm7hnc4wMi9/jSW4bjebEkrHFMUgqyaxQLXNSsVtyuuFpPqkXim651ai 47Vfm88aXSdGZBobGbDVey+l/9XL13oMz5gvqyX+ARl+ke8l/aXuMWY94pyxxPfInXkK ujOjW29lsJyYMhqdhsocJv5rQEMki0LD36bbeFGh+M923oogLJvsFxfiUNVtoDbG553K Aho/IS34+SUCahvKd96lt7l9EwGq0kYYUomAczT+Nrx29k0r6IEWvABvIffGcDAqVoIH yYpg== X-Gm-Message-State: AIkVDXKgw4+87lwmuTlQscMmYnkP0XSIY7KSll921ESXLfSzgQ9RpuaAgxUqnP0B3OIpvw== X-Received: by 10.194.205.225 with SMTP id lj1mr67381117wjc.122.1483564191222; Wed, 04 Jan 2017 13:09:51 -0800 (PST) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-a8e3-5e33-3cc0-222b.holly.idiocy.org. [2001:8b0:3f8:8129:a8e3:5e33:3cc0:222b]) by smtp.gmail.com with ESMTPSA id 197sm96778757wmy.16.2017.01.04.13.09.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Jan 2017 13:09:50 -0800 (PST) Sender: Alan Third Date: Wed, 4 Jan 2017 21:09:48 +0000 From: Alan Third To: Bob Halley Cc: emacs-devel@gnu.org Subject: Re: UI input unresponsive on macOS Message-ID: <20170104210948.GA76254@breton.holly.idiocy.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170103143621.GA41725@breton.holly.idiocy.org> User-Agent: Mutt/1.7.1 (2016-10-04) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 21:09:55 -0000 On Tue, Jan 03, 2017 at 02:36:21PM +0000, Alan Third wrote: > On Tue, Jan 03, 2017 at 05:36:01AM -0800, Bob Halley wrote: > > I was running from the master branch with a build containing the > > recent macOS event changes, > > e0e5b0f4a4ce1d19ee0240c514dedd873d4165dc, and the UI became > > unresponsive to the mouse and keyboard. I had to kill Emacs by hand. > > > > I was in the middle of something so I rolled back to my prior Emacs > > build. I also am not sure how to debug this. If someone tells me how > > to gather info that’s useful should this happen again, I’m willing > > to reinstate the build and report if it fails. > > Hi Bob, I’m working on coming up with a better solution. I’ve reverted this change for now. -- Alan Third From MAILER-DAEMON Wed Jan 04 16:35:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOtDH-0006pF-M3 for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 16:35:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42196) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOtDF-0006p8-I0 for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:35:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOtDE-0005CG-Kv for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:35:13 -0500 Received: from relay2-d.mail.gandi.net ([2001:4b98:c:538::194]:50883) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cOtDA-00056x-0F; Wed, 04 Jan 2017 16:35:08 -0500 Received: from mfilter43-d.gandi.net (mfilter43-d.gandi.net [217.70.178.174]) by relay2-d.mail.gandi.net (Postfix) with ESMTP id BAB55C5A5A; Wed, 4 Jan 2017 22:35:05 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mfilter43-d.gandi.net Received: from relay2-d.mail.gandi.net ([IPv6:::ffff:217.70.183.194]) by mfilter43-d.gandi.net (mfilter43-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id kzeLCyBCkbjp; Wed, 4 Jan 2017 22:35:03 +0100 (CET) X-Originating-IP: 94.227.10.94 Received: from [192.168.1.102] (94-227-10-94.access.telenet.be [94.227.10.94]) (Authenticated sender: toon@iotcl.com) by relay2-d.mail.gandi.net (Postfix) with ESMTPSA id B9AA3C5A49; Wed, 4 Jan 2017 22:35:02 +0100 (CET) From: Toon Claes Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_C926DDF2-9FE9-46CE-AD4F-38D1F54F2AF9" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: lldb support Date: Wed, 4 Jan 2017 22:35:01 +0100 In-Reply-To: <8337izfe1z.fsf@gnu.org> Cc: dancol@dancol.org, emacs-devel@gnu.org, rms@gnu.org, perry@piermont.com To: Eli Zaretskii References: <20161107150552.20e98985@jabberwock.cb.piermont.com> <20161107220815.606cd583@jabberwock.cb.piermont.com> <6c239d49-a92c-1495-7121-4808295a4fc2@dancol.org> <20161109205724.02e086af@jabberwock.cb.piermont.com> <83h97gf19d.fsf@gnu.org> <83fumzfhtv.fsf@gnu.org> <8337izfe1z.fsf@gnu.org> X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4b98:c:538::194 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 21:35:14 -0000 --Apple-Mail=_C926DDF2-9FE9-46CE-AD4F-38D1F54F2AF9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 10 Nov 2016, at 18:19, Eli Zaretskii wrote: >=20 > These could be the result of not activating the MI mode in lldb-mi, > because of the previous error message. How about asking the lldb-mi > maintainers what should be the correct invocation of this tool? >=20 > Thanks. Sorry for the late reply. But I did contact the llvm-dev mailing list (because I was not allowed = to post on the lldb-dev mailing list) and I got this reply from Adrian = Prantl: > The subset of MI commands that lldb-mi currently understands is very = narrow and was added to support one specific consumer (I think it might = have been Eclipse, but I could be misremembering). In any case, it looks = like lldb-mi is missing the implementation for certain MI commands that = Emacs is expecting. Adding these shouldn't be too much work if you're = building on top of the LLDB scripting API. (see http://lists.llvm.org/pipermail/llvm-dev/2017-January/108663.html = ) So I think it would be best to submit patches to lldb instead of emacs. -- Toon --Apple-Mail=_C926DDF2-9FE9-46CE-AD4F-38D1F54F2AF9 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii On 10 Nov 2016, at 18:19, Eli Zaretskii <eliz@gnu.org> wrote:

These could be the result of not activating = the MI mode in lldb-mi,
because of the previous error = message.  How about asking the lldb-mi
maintainers = what should be the correct invocation of this tool?

Thanks.

Sorry for the late reply.
But I did contact the llvm-dev mailing list (because I was = not allowed to post on the lldb-dev mailing list) and I got this reply = from Adrian Prantl:
The subset of MI commands that lldb-mi currently understands = is very narrow and was added to support one specific consumer (I think = it might have been Eclipse, but I could be misremembering). In any case, = it looks like lldb-mi is missing the implementation for certain MI = commands that Emacs is expecting. Adding these shouldn't be too much = work if you're building on top of the LLDB scripting API.

So I = think it would be best to submit patches to lldb instead of = emacs.


-- Toon

= --Apple-Mail=_C926DDF2-9FE9-46CE-AD4F-38D1F54F2AF9-- From MAILER-DAEMON Wed Jan 04 16:49:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOtRC-0003ok-Ia for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 16:49:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOtRA-0003oc-Jr for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:49:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOtR7-00019q-FC for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:49:36 -0500 Received: from [195.159.176.226] (port=41943 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOtR7-00019e-81 for emacs-devel@gnu.org; Wed, 04 Jan 2017 16:49:33 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOtQy-0000oq-Re for emacs-devel@gnu.org; Wed, 04 Jan 2017 22:49:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Date: Wed, 04 Jan 2017 16:49:15 -0500 Lines: 13 Message-ID: References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> <20170104200458.GA2052@acm.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:AaqinbCIdB5omfsCtEOPvg/lrHs= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 21:49:37 -0000 > special-variable-p would appear to be a near useless function, since it > doesn't do what it's name says. It's useful for the compiler, but it's mostly internal, indeed. > There appears to be no way of checking whether a variable's binding is > (or will be) lexical. In which context do you need/want to do that (I ask because how to do it (and even if it can be done) depends on the details)? Stefan From MAILER-DAEMON Wed Jan 04 17:03:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOteE-0002Xl-Ol for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 17:03:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48304) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOteC-0002XE-6p for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:03:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOte9-0006tw-3v for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:03:04 -0500 Received: from ocolin.muc.de ([193.149.48.4]:39459 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cOte8-0006td-Td for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:03:01 -0500 Received: (qmail 61560 invoked by uid 3782); 4 Jan 2017 22:02:58 -0000 Received: from acm.muc.de (p548C6D63.dip0.t-ipconnect.de [84.140.109.99]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 04 Jan 2017 23:02:57 +0100 Received: (qmail 2144 invoked by uid 1000); 4 Jan 2017 22:02:43 -0000 Date: Wed, 4 Jan 2017 22:02:43 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170104220243.GC2052@acm.fritz.box> References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> <20170104200458.GA2052@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 22:03:05 -0000 Hello, Stefan. On Wed, Jan 04, 2017 at 04:49:15PM -0500, Stefan Monnier wrote: > > special-variable-p would appear to be a near useless function, since it > > doesn't do what it's name says. > It's useful for the compiler, but it's mostly internal, indeed. OK. > > There appears to be no way of checking whether a variable's binding is > > (or will be) lexical. > In which context do you need/want to do that (I ask because how to do > it (and even if it can be done) depends on the details)? I honestly don't know. I presume that there will be code (other than the byte compiler) which will want to make a distinction. Maybe there's not. After (defvar foo), the byte compiler seems able to handle foo as a dynamic variable. I'm still trying to figure out how, given that that flag denoting a special variable in the struct symbol doesn't get set. I'm just thoroughly confused about the whole business of whether (defvar foo) creates a special variable or not. At the moment, I'm not even quite sure any more exactly what a special variable is. I knew this morning. :-( > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 04 17:27:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOu1g-0003ky-5K for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 17:27:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOu1d-0003jI-TY for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:27:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOu1Z-0007BV-1C for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:27:17 -0500 Received: from [195.159.176.226] (port=57741 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOu1Y-0007Az-Qs for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:27:12 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cOu1I-0008MA-H3 for emacs-devel@gnu.org; Wed, 04 Jan 2017 23:26:56 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Date: Wed, 04 Jan 2017 17:26:53 -0500 Lines: 26 Message-ID: References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> <20170104200458.GA2052@acm.fritz.box> <20170104220243.GC2052@acm.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:o2CbXyP7nWVn2ylVUt61jmVvh3I= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 22:27:18 -0000 >> In which context do you need/want to do that (I ask because how to do >> it (and even if it can be done) depends on the details)? > I honestly don't know. I presume that there will be code (other than > the byte compiler) which will want to make a distinction. There might, indeed, but it's very rare: in most cases rather than determining which kind of binding will happen, you want to decide/impose which binding will happen. I'm not sure how Common-Lip handles it, but AFAICT there is no equivalent to special-variable-p there, so they don't seem to offer a way to find out whether a binding will be lexical or dynamic. > After (defvar foo), the byte compiler seems able to handle foo as > a dynamic variable. I'm still trying to figure out how, The byte-compiler *sees* the defvar, which lets it keep a note internally (in a data-structure which keeps track of the current context, which also includes information about which vars that are let-bound in the surrounding code were bound lexically, so as to know when we see a reference to var `foo' whether we should look for `foo' in the dynamic context or in the lexical context (and if so, where in that context)). Stefan From MAILER-DAEMON Wed Jan 04 17:44:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOuIO-0005eZ-7g for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 17:44:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56333) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOuIM-0005dT-9V for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:44:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOuII-00057j-Cw for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:44:34 -0500 Received: from userp1040.oracle.com ([156.151.31.81]:28155) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cOuII-00055z-2k for emacs-devel@gnu.org; Wed, 04 Jan 2017 17:44:30 -0500 Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v04MiRKt000424 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2017 22:44:28 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id v04MiQn9025264 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 4 Jan 2017 22:44:27 GMT Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by aserv0121.oracle.com (8.13.8/8.13.8) with ESMTP id v04MiO5i020372; Wed, 4 Jan 2017 22:44:25 GMT MIME-Version: 1.0 Message-ID: <7a8a35b8-e354-4bff-a514-954344bded90@default> Date: Wed, 4 Jan 2017 14:44:23 -0800 (PST) From: Drew Adams Sender: Drew Adams To: Stefan Monnier , emacs-devel@gnu.org Subject: RE: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> <20170104200458.GA2052@acm.fritz.box> <20170104220243.GC2052@acm.fritz.box> In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6753.5000 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Source-IP: userv0021.oracle.com [156.151.31.71] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 156.151.31.81 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jan 2017 22:44:35 -0000 I _almost_ wanted to offer this, as a way to check dynamic vs lexical: `symbol-value', wrapping with `condition-case', checking for `void-variable' error and returning `nil' in that case. But if there are a dynamic var and a lexical var with the same name, `symbol-value' just sees the former - no real way to test the latter. From MAILER-DAEMON Wed Jan 04 22:21:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOycJ-0004ab-3u for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 22:21:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53915) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOycF-0004aC-8n for emacs-devel@gnu.org; Wed, 04 Jan 2017 22:21:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOycC-00079V-1i for emacs-devel@gnu.org; Wed, 04 Jan 2017 22:21:23 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:43158) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cOycB-00077D-OR for emacs-devel@gnu.org; Wed, 04 Jan 2017 22:21:19 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 06F481600B3; Wed, 4 Jan 2017 19:21:17 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id fkUVVUf6JRw0; Wed, 4 Jan 2017 19:21:12 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 2BF9B1600BE; Wed, 4 Jan 2017 19:21:12 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id BsxFsH4Q3Og5; Wed, 4 Jan 2017 19:21:12 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.178.162]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 081B51600B3; Wed, 4 Jan 2017 19:21:12 -0800 (PST) Subject: Re: Last commit breaks macOS build To: Angelo Graziosi , Emacs developers References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Wed, 4 Jan 2017 19:21:11 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> Content-Type: multipart/mixed; boundary="------------89D8A8479545919128B36039" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 03:21:25 -0000 This is a multi-part message in MIME format. --------------89D8A8479545919128B36039 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Angelo Graziosi wrote: > Interfering nt/gnulib.mk from lib/gnulib.mk ... Did it really say "Interfering"? :-) > sed: 46: "This is of m...": command c expects \ followed by text > > and the 'configure' is not created... This is caused by our recent attempt to better-automate MS-Windows builds= . I=20 fixed one nonportable construct, but evidently there are others. It's time to break out a bigger hammer. Please try the attached patch. I = have=20 tested it on Fedora, but not on MS-Windows and so have not installed it y= et. --------------89D8A8479545919128B36039 Content-Type: text/x-diff; name="0001-Use-GNU-Make-instead-of-sed-Automake-for-nt-lib.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename*0="0001-Use-GNU-Make-instead-of-sed-Automake-for-nt-lib.patch" =46rom d59053569fb37f80487810f6e18da0ac9030a0da Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 4 Jan 2017 19:13:14 -0800 Subject: [PATCH] Use GNU Make instead of sed+Automake for nt lib Problem reported by Angelo Graziosi. Instead of continuing to hack something in autogen.sh, which is a pain to port and which is a prepass to Automake, this patch uses GNU Make instead, so that there is no need to have anything in autogen.sh and no need for an nt/gnulib.mk file. * .gitignore: Remove nt/gnulib.mk. * Makefile.in (gnulib_mk, $(srcdir)/nt/gnulib.mk): Remove. (AUTOMAKE_INPUTS): Use $(srcdir)/lib/gnulib.mk, not gnulib_mk. * autogen.sh: Do not build nt/gnulib.mk. * configure.ac (GNULIB_MK): Remove. (SYSTEM_TYPE): Subst. (MT): New macro. Subst it. * lib/Makefile.am: Do not include ../nt/gnulib.mk. Use $(SYSTEM_TYPE), not BUILDING_FOR_WINDOWSNT. (libgnu_a_SOURCES_not, EXTRA_libgnu_a_SOURCES_not): New macros. (libgnu_a_SOURCES, EXTRA_libgnu_a_SOURCES) [windows-nt]: Filter out unwanted modules. * make-dist: Omit removed files. * nt/Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0) (am__v_GEN_1, ${srcdir}/gnulib.mk): Remove. * nt/gnulib-modules-to-delete.cfg: Remove. --- .gitignore | 1 - Makefile.in | 8 +---- autogen.sh | 10 +------ configure.ac | 22 ++++---------- lib/Makefile.am | 19 ++++++++---- make-dist | 2 +- nt/Makefile.in | 10 ------- nt/gnulib-modules-to-delete.cfg | 66 -----------------------------------= ------ 8 files changed, 23 insertions(+), 115 deletions(-) delete mode 100644 nt/gnulib-modules-to-delete.cfg diff --git a/.gitignore b/.gitignore index e8eb4fd..85c06c9 100644 --- a/.gitignore +++ b/.gitignore @@ -288,6 +288,5 @@ lib/SYS/ /site-lisp/ nt/emacs.rc nt/emacsclient.rc -nt/gnulib.mk src/gdb.ini /var/ diff --git a/Makefile.in b/Makefile.in index b9aaf5b..3cb1f5e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -98,9 +98,6 @@ configuration=3D ### The nt/ subdirectory gets built only for MinGW NTDIR=3D@NTDIR@ =20 -### $(srcdir)/nt/gnulib.mk for MinGW, else $(srcdir)/lib/gnulib.mk -gnulib_mk=3D@GNULIB_MK@ - # 'make' verbosity. AM_DEFAULT_VERBOSITY =3D @AM_DEFAULT_VERBOSITY@ =20 @@ -454,13 +451,10 @@ $(srcdir)/aclocal.m4: cd $(srcdir) && ACLOCAL_PATH=3D'$(ACLOCAL_PATH)' $(ACLOCAL) -I m4 =20 AUTOMAKE_INPUTS =3D $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am \ - $(gnulib_mk) + $(srcdir)/lib/gnulib.mk $(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS) cd $(srcdir) && $(AUTOMAKE) --gnu -a -c lib/Makefile =20 -$(srcdir)/nt/gnulib.mk: $(srcdir)/lib/Makefile.in - $(MAKE) -C $(srcdir)/nt gnulib.mk - # Regenerate files that this makefile would have made, if this makefile # had been built by Automake. The name 'am--refresh' is for # compatibility with subsidiary Automake-generated makefiles. diff --git a/autogen.sh b/autogen.sh index f6bfde6..7381bc3 100755 --- a/autogen.sh +++ b/autogen.sh @@ -220,17 +220,9 @@ do_git=3D fi =20 echo 'Your system has the required tools.' - - ## Create nt/gnulib.mk if it doesn't exist, as autoreconf will need it= =2E - if test ! -f nt/gnulib.mk; then - echo 'Inferring nt/gnulib.mk from lib/gnulib.mk ...' - metascript=3D'/^[^#]/s|^.*$|/^## begin *gnulib module &/,/^## end= *gnulib module &/c ## gnulib module & removed|' - script=3D`sed "$metascript" nt/gnulib-modules-to-delete.cfg` || ex= it - sed "$script" lib/gnulib.mk > nt/gnulib.mk || exit - fi - echo "Running 'autoreconf -fi -I m4' ..." =20 + ## Let autoreconf figure out what, if anything, needs doing. ## Use autoreconf's -f option in case autoreconf itself has changed. autoreconf -fi -I m4 || exit $? diff --git a/configure.ac b/configure.ac index 262f367..7fd4988 100644 --- a/configure.ac +++ b/configure.ac @@ -771,22 +771,6 @@ AC_DEFUN test "x$GCC_TEST_OPTIONS" !=3D x && CC=3D"$CC $GCC_TEST_OPTIONS" fi =20 -dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the -dnl alternative to lib/gnulib.mk, so as to avoid generating header files= -dnl that clash with MinGW. -case $opsys in - mingw32 ) - GNULIB_MK=3D'$(srcdir)/nt/gnulib.mk' - ;; - * ) - GNULIB_MK=3D'$(srcdir)/lib/gnulib.mk' - ;; - -esac -AC_SUBST([GNULIB_MK]) - -AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" =3D "xmingw32"]= ) - # Avoid gnulib's tests for -lcrypto, so that there's no static dependenc= y on it. AC_DEFUN([gl_CRYPTO_CHECK]) # Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOF= OLLOW, @@ -1555,7 +1539,13 @@ AC_DEFUN AC_SUBST(LIB_MATH) AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE", [The type of system you are compiling for; sets 'system-type'.]) +AC_SUBST([SYSTEM_TYPE]) =20 +# The empty (MT) string. +# Use this in Makefile.am before GNU Make conditionals; +# otherwise, Automake gets confused. +MT=3D +AC_SUBST([MT]) =20 pre_PKG_CONFIG_CFLAGS=3D$CFLAGS pre_PKG_CONFIG_LIBS=3D$LIBS diff --git a/lib/Makefile.am b/lib/Makefile.am index e6d90dd..141838c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -29,13 +29,22 @@ SUFFIXES =3D AM_CFLAGS =3D $(PROFILING_CFLAGS) $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)= DEFAULT_INCLUDES =3D -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/sr= c =20 -if BUILDING_FOR_WINDOWSNT -include ../nt/gnulib.mk -else include gnulib.mk =20 -libgnu_a_SOURCES +=3D openat-die.c save-cwd.c -endif +@MT@ifeq ($(SYSTEM_TYPE), windows-nt) +@MT@ libgnu_a_SOURCES_not =3D \ +@MT@ acl-errno-valid.c acl-internal.c allocator.c \ +@MT@ careadlinkat.c get-permissions.c pipe2.c \ +@MT@ set-permissions.c tempname.c unistd.c +@MT@ libgnu_a_SOURCES :=3D \ +@MT@ $(filter-out $(libgnu_a_SOURCES_not), $(libgnu_a_SOURCES)) +@MT@ EXTRA_libgnu_a_SOURCES_not =3D \ +@MT@ acl_entries.c dirfd.c fcntl.c mkostemp.c openat-proc.c secure_ge= tenv.c +@MT@ EXTRA_libgnu_a_SOURCES :=3D \ +@MT@ $(filter-out $(EXTRA_libgnu_a_SOURCES_not), $(EXTRA_libgnu_a_SOU= RCES)) +@MT@else +@MT@ libgnu_a_SOURCES +=3D openat-die.c save-cwd.c +@MT@endif =20 if HYBRID_MALLOC_LIB noinst_LIBRARIES +=3D libegnu.a diff --git a/make-dist b/make-dist index 41203b2..2d1a218 100755 --- a/make-dist +++ b/make-dist @@ -482,7 +482,7 @@ files=3D (cd nt ln emacs-x86.manifest emacs-x64.manifest ../${tempdir}/nt ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt - ln *.in gnulib.mk gnulib-modules-to-delete.cfg ../${tempdir}/nt + ln *.in ../${tempdir}/nt ln mingw-cfg.site epaths.nt INSTALL.W64 ../${tempdir}/nt ln ChangeLog.*[0-9] INSTALL README README.W32 ../${tempdir}/nt) =20 diff --git a/nt/Makefile.in b/nt/Makefile.in index 89f4460..7e911db 100644 --- a/nt/Makefile.in +++ b/nt/Makefile.in @@ -54,11 +54,6 @@ am__v_CCLD_ =3D am__v_CCLD_0 =3D @echo " CCLD " $@; am__v_CCLD_1 =3D =20 -AM_V_GEN =3D $(am__v_GEN_@AM_V@) -am__v_GEN_ =3D $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 =3D @echo " GEN " $@; -am__v_GEN_1 =3D - AM_V_RC =3D $(am__v_RC_@AM_V@) am__v_RC_ =3D $(am__v_RC_@AM_DEFAULT_V@) am__v_RC_0 =3D @echo " RC " $@; @@ -260,8 +255,3 @@ runemacs${EXEEXT}: emacs.res ../src/emacs.res: emacs.rc ${srcdir}/icons/emacs.ico \ ${srcdir}/icons/hand.cur ${srcdir}/$(EMACS_MANIFEST) $(AM_V_RC)${WINDRES} -I ${srcdir} -O coff -o $@ $< - -${srcdir}/gnulib.mk: ${srcdir}/gnulib-modules-to-delete.cfg ${srcdir}/..= /lib/gnulib.mk - $(AM_V_GEN)sed '/^[^#]/s|^.*$$|/^## begin *gnulib module &/,/^## end = *gnulib module &/c ## gnulib module & removed|' < $< | \ - sed -f- ${srcdir}/../lib/gnulib.mk > $@-t && \ - ${srcdir}/../build-aux/move-if-change $@-t $@ diff --git a/nt/gnulib-modules-to-delete.cfg b/nt/gnulib-modules-to-delet= e.cfg deleted file mode 100644 index 09bea0e..0000000 --- a/nt/gnulib-modules-to-delete.cfg +++ /dev/null @@ -1,66 +0,0 @@ -# This is the list of modules to be deleted from ../lib/gnulib.mk. -# -# We delete them because they either conflict with MinGW headers or -# headers in nt/inc, or because those modules won't compile with -# MinGW, or because Emacs already has the corresponding facilities as -# part of Emacs sources, and their implementation is incompatible with -# Gnulib's. -# -# In general, do NOT remove anything from ../lib/gnulib.mk that -# doesn't need to be removed, to minimize the differences from -# upstream gnulib.mk and thus make the maintenance easier. Every -# header file whose generation is controlled by configure-time tests -# does NOT need to be removed; instead, force the configure script to -# accept whatever MinGW has to offer, by defining the appropriate -# Autoconf variable in the nt/mingw-cfg.site file. Headers that are -# generated conditionally have the tell-tale "if GL_GENERATE_foo_H" -# condition before their Makefile snippet in this file. Likewise, do -# NOT remove gnulib modules which introduce header files that don't -# exist in MinGW and in nt/inc/, since they cannot possibly clash -# with anything. Gnulib modules that introduce source *.c files also -# need not be removed; if they define functions that could clash with -# the w32 substitutes in Emacs, disable their compilation by defining -# suitable variables in nt/mingw-cfg.site. -# ----------------------------------------------------------------------= -# -# Copyright (C) 2017 Free Software Foundation, Inc. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This file is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this file. If not, see . -# -# As a special exception to the GNU General Public License, -# this file may be distributed as part of a program that -# contains a configuration script generated by Autoconf, under -# the same distribution terms as the rest of that program. -# -acl-permissions -allocator -at-internal -careadlinkat -dirent -dirfd -fcntl -fcntl-h -inttypes-incomplete -mkostemp -pipe2 -secure_getenv -signal-h -stdio -stdlib -sys_select -sys_stat -sys_time -sys_types -tempname -unistd --=20 2.7.4 --------------89D8A8479545919128B36039-- From MAILER-DAEMON Wed Jan 04 23:35:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cOzlb-0001FC-5x for mharc-emacs-devel@gnu.org; Wed, 04 Jan 2017 23:35:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35295) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOzlY-0001Eo-Vj for emacs-devel@gnu.org; Wed, 04 Jan 2017 23:35:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOzlX-00012m-NV for emacs-devel@gnu.org; Wed, 04 Jan 2017 23:35:04 -0500 Received: from mail-oi0-x243.google.com ([2607:f8b0:4003:c06::243]:34498) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOzlV-0000zC-Kg; Wed, 04 Jan 2017 23:35:02 -0500 Received: by mail-oi0-x243.google.com with SMTP id 3so48648152oih.1; Wed, 04 Jan 2017 20:34:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ZkoN9rEnHjD5A0oKQFZ34COOk5n/soaP8I437eHJWC4=; b=dIQSp22o8UcTndeJ1V7fqleI5CogA/rCAo1J8keossbkrhGnrNJFeMKdt3uwds8pbq oOP9e5xzMVmZPUlUVsGiIvb8NRD5LFUyNMmrTswsfxCPlSEZpId/jBMH7Ls4Qgoog40c H9BZopMoYnh5qiKkMRLOfOeXIa5dI+k9h5fVIVNUsS+jycdmunZAel5iMcIiIl5J8hzu i2fWhKiZ511/4gRmTs6awWACLhWrgtcEpcpikeyKG8YU58kG2w1e7mjLvIyVB6vGtYa4 5FpRDrrczmyQeJkJEVBGBdiat/rekIWT6Q5uUnZXAdW3CxA+i4AIOYcM9bhFVoxH2O8K sWQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ZkoN9rEnHjD5A0oKQFZ34COOk5n/soaP8I437eHJWC4=; b=mNn5nt8h4cpq/WU1/XYDzOC01b5vOEDrt38Ex5AvU+xLMyuOmINB9FGp/+RmPtAdiv RDelSXZrdc/Jc70paFp4j0wnGnFs9ph2ztBQF7jbv10O10ZAjTV3a9iF9c3bJI2Rbyzj ZolIWMC+OkEXD1aEuA9hg8pBRWSOoWRdi+u/sZ1inW8LrIPFASbEzMG2Ip+lhuDAw8E4 0+h/A9fq13tYfNmFRrw8v/5awWLfjJyl417DLtNi1hM1Xbnlfj3i7Ll/p73UIe0y1BlG mc0LULwsMYTDBdKenhGWqV9upi5EmQ8CgqM+sHSHxvTqk/kzE6y/DoQ/HmjwVkhNTf8J 48lQ== X-Gm-Message-State: AIkVDXLetFmMyt3ZVRcgbeOrzd6OwweQSa57uW83/jXPgHFxXYdWqdLISsq5Ce6DDMVOCcybDaPpZfUHYS98nA== X-Received: by 10.202.196.198 with SMTP id u189mr33486329oif.64.1483590898820; Wed, 04 Jan 2017 20:34:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.77.208 with HTTP; Wed, 4 Jan 2017 20:34:58 -0800 (PST) In-Reply-To: <83zij6esyt.fsf@gnu.org> References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> <20170103174900.GA49916@breton.holly.idiocy.org> <83zij6esyt.fsf@gnu.org> From: =?UTF-8?B?R29uZy1ZaSBMaWFvIOW7luWuruavhQ==?= Date: Wed, 4 Jan 2017 22:34:58 -0600 Message-ID: Subject: Re: UI input unresponsive on macOS To: Eli Zaretskii Cc: Alan Third , Bob Halley , emacs-devel@gnu.org Content-Type: multipart/mixed; boundary=001a113e389084a0e50545516c48 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 04:35:06 -0000 --001a113e389084a0e50545516c48 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable When I M-X gnus, Emacs runs (with or without -Q at command line) normally; but when I use (make-thread #'gnus "gnus") Emacs just hangs by the dialog whose screenshot is attached as a png file. On Wed, Jan 4, 2017 at 9:38 AM, Eli Zaretskii wrote: >> From: Gong-Yi Liao =E5=BB=96=E5=AE=AE=E6=AF=85 >> Date: Tue, 3 Jan 2017 21:52:56 -0600 >> Cc: Bob Halley , emacs-devel@gnu.org >> >> I have similar issue on Linux/Gtk3. I am wondering if this is a >> threading/concurrency issue. > > Unlikely, at least not in the same way as the Darwin users are > experiencing. > > Please describe your problems in a separate thread and in more detail, > preferably via "M-x report-emacs-bug RET". > > Thanks. --001a113e389084a0e50545516c48 Content-Type: image/png; name="Screenshot from 2017-01-04 22-33-36.png" Content-Disposition: attachment; filename="Screenshot from 2017-01-04 22-33-36.png" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ixjvobub0 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 6tzBAAAAAElFTkSuQmCC --001a113e389084a0e50545516c48-- From MAILER-DAEMON Thu Jan 05 04:30:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cP4Nr-0007cH-E1 for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 04:30:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40931) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cP4Np-0007c8-LS for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:30:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cP4No-0004g8-OL for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:30:53 -0500 Received: from mail-ua0-x231.google.com ([2607:f8b0:400c:c08::231]:34152) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cP4No-0004fY-KN for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:30:52 -0500 Received: by mail-ua0-x231.google.com with SMTP id 34so333665715uac.1 for ; Thu, 05 Jan 2017 01:30:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=eCdOEfPlRpgDiuLER3lgdJPWfompJ782x/rF39/KQxY=; b=e9hOj/7WxfTKGY9Iu67MShTUlrCuNUDXH79TlYxxrXC3f3+pZwWb0OLTfY8Wy90R99 0herJvhnVAz4qa0ivTE0MUXoOhUpsjG7LkdvM+LmcQ7sxz5fwn2hjXNOl9r2peKoMuZR MCHLCf8a2+54ek9xDZYOaTxmeYKeq9A7QA7sebbnHKjg5s0QTNYqjg2VVQG4nQPuwRcm 2fMVshX4J6tkQw2yf7WZvjI2kiihTIw1AQFp/IxfKza9LKfLJn40ILucd4ETjNaFLmqA JbrvZu4xLrohMqbx89dcieWBvacneQYCxxWx07IkxkWVRt/QQ8bB38J9Xzpb921O28nz Xg1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=eCdOEfPlRpgDiuLER3lgdJPWfompJ782x/rF39/KQxY=; b=EBJSK1cRa7UUI8DtyGhv1LZfUl1xez3dYgnBHEC56rjJ79LAOg2S1oTveDpPJuyxBU /bbaXfVH+hdUSBc+65ttLroGGMRE73diRURQXC8dqW+kZPnuQzg27pEOiVkDboW4scT6 mhQ53OmJynrZIu8B0vdghcRmgIe2FCz/k4vhmQq8gsBsMXHjWvbnv1dXqc/8PrUA70wM CgIKXgd03AGVS68T+qeTWTpDLFC+oIPh6HvEgDojGdhJPtRn7PHiDnA27BMyCHm3ba1S RU/EmKc2XSrI822qtMWwAe3Ib64gPi2DXTYqBJUy0si6T5Z5rNXySiOvWBzG3on+QEdE 2tmA== X-Gm-Message-State: AIkVDXIJi3CGZMb5KSD/AzhmPEvfFD73NO3R3RBWYOkCxDv0fwBAPFUuJLidfqErwCreQqQD1yUVCcR4QLuDuQ== X-Received: by 10.159.36.209 with SMTP id 75mr3233361uar.51.1483608650024; Thu, 05 Jan 2017 01:30:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.71.29 with HTTP; Thu, 5 Jan 2017 01:30:19 -0800 (PST) In-Reply-To: References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> From: Richard Copley Date: Thu, 5 Jan 2017 09:30:19 +0000 Message-ID: Subject: Re: Last commit breaks macOS build To: Paul Eggert Cc: Angelo Graziosi , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 09:30:55 -0000 On 5 January 2017 at 03:21, Paul Eggert wrote: > Angelo Graziosi wrote: > >> Interfering nt/gnulib.mk from lib/gnulib.mk ... > > > Did it really say "Interfering"? :-) > >> sed: 46: "This is of m...": command c expects \ followed by text >> >> and the 'configure' is not created... > > > This is caused by our recent attempt to better-automate MS-Windows builds. I > fixed one nonportable construct, but evidently there are others. > > It's time to break out a bigger hammer. Please try the attached patch. I > have tested it on Fedora, but not on MS-Windows and so have not installed it > yet. Hi Paul, In MSYS2 on Windows, with the patch I get this error: gcc -DHAVE_CONFIG_H -I. -I../../repo/emacs/lib -I../src -I../../repo/emacs/src -march=native -mtune=native -D_WIN32_WINNT=_WIN32_WINNT_WIN7 -DUSE_CRT_DLL=1 -I /g/emacs/build/../repo/emacs/nt/inc -fno-common /* -W... */ -Og -g -ggdb -MT set-permissions.o -MD -MP -MF .deps/set-permissions.Tpo -c -o set-permissions.o ../../repo/emacs/lib/set-permissions.c ../../repo/emacs/lib/set-permissions.c: In function 'set_acls': ../../repo/emacs/lib/set-permissions.c:500:6: error: #error Must have acl_delete_def_file (see POSIX 1003.1e draft 17). # error Must have acl_delete_def_file (see POSIX 1003.1e draft 17). ^~~~~ ../../repo/emacs/lib/set-permissions.c:539:13: warning: implicit declaration of function 'acl_delete_def_file' [-Wimplicit-function-declaration] ret = acl_delete_def_file (name); ^~~~~~~~~~~~~~~~~~~ ../../repo/emacs/lib/set-permissions.c:539:7: warning: nested extern declaration of 'acl_delete_def_file' [-Wnested-externs] ret = acl_delete_def_file (name); ^~~ Without the patch, set-permissions.c isn't compiled. From MAILER-DAEMON Thu Jan 05 04:54:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cP4kl-00045d-N2 for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 04:54:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47076) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cP4kj-00045Q-A4 for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:54:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cP4kg-0003FL-6l for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:54:33 -0500 Received: from smtp201.alice.it ([82.57.200.97]:39552) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cP4kf-0003F1-Q8 for emacs-devel@gnu.org; Thu, 05 Jan 2017 04:54:30 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp201.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586293A601F8D0AC; Thu, 5 Jan 2017 10:54:27 +0100 Subject: Re: Last commit breaks macOS build To: Richard Copley , Paul Eggert References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> Cc: Emacs developers From: Angelo Graziosi Message-ID: <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> Date: Thu, 5 Jan 2017 10:54:16 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.97 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 09:54:34 -0000 Hi Paul, really I spoke of macOS build not MSWINDOWS (MSW).. But now, as Richard reported, it seems that also MSW build is broken... In any case > On 5 January 2017 at 03:21, Paul Eggert >> Did it really say "Interfering"? :-) Yes, I copy/pasted it.. You should consider that macOS does not use GNU sed but another version (unix/BSD?), and what works on GNU/Linux not always works in the same manne on macOS... Angelo From MAILER-DAEMON Thu Jan 05 05:54:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cP5h2-0001yy-Jl for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 05:54:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36028) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cP5h0-0001wO-7y for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:54:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cP5gx-0002Mh-69 for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:54:46 -0500 Received: from ocolin.muc.de ([193.149.48.4]:55670 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cP5gw-0002MZ-WF for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:54:43 -0500 Received: (qmail 61633 invoked by uid 3782); 5 Jan 2017 10:54:41 -0000 Received: from acm.muc.de (p548C6DF0.dip0.t-ipconnect.de [84.140.109.240]) by colin.muc.de (tmda-ofmipd) with ESMTP; Thu, 05 Jan 2017 11:54:40 +0100 Received: (qmail 7892 invoked by uid 1000); 5 Jan 2017 10:54:27 -0000 Date: Thu, 5 Jan 2017 10:54:27 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Can't M-x compile-defun `edebug' because dynamic variables are falsely taken as lexical. Message-ID: <20170105105426.GB3835@acm.fritz.box> References: <20170103141444.GA4649@acm.fritz.box> <20170103213228.GB2085@acm.fritz.box> <20170104133948.GA7373@acm.fritz.box> <20170104200458.GA2052@acm.fritz.box> <20170104220243.GC2052@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 10:54:47 -0000 Hello, Stefan. On Wed, Jan 04, 2017 at 05:26:53PM -0500, Stefan Monnier wrote: > >> In which context do you need/want to do that (I ask because how to do > >> it (and even if it can be done) depends on the details)? > > I honestly don't know. I presume that there will be code (other than > > the byte compiler) which will want to make a distinction. > There might, indeed, but it's very rare: in most cases rather than > determining which kind of binding will happen, you want to decide/impose > which binding will happen. OK. > I'm not sure how Common-Lip handles it, but AFAICT there is no > equivalent to special-variable-p there, so they don't seem to offer > a way to find out whether a binding will be lexical or dynamic. > > After (defvar foo), the byte compiler seems able to handle foo as > > a dynamic variable. I'm still trying to figure out how, > The byte-compiler *sees* the defvar, which lets it keep a note > internally (in a data-structure which keeps track of the current > context, which also includes information about which vars that are > let-bound in the surrounding code were bound lexically, so as to know > when we see a reference to var `foo' whether we should look for `foo' in > the dynamic context or in the lexical context (and if so, where in that > context)). Thanks, I'll have a look at that sometime. > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Thu Jan 05 10:23:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cP9tE-0007hO-Id for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 10:23:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cP56L-0004vy-P1 for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:16:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cP56H-0004rG-He for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:16:53 -0500 Received: from mail-wj0-x244.google.com ([2a00:1450:400c:c01::244]:36755) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cP56H-0004pX-8A for emacs-devel@gnu.org; Thu, 05 Jan 2017 05:16:49 -0500 Received: by mail-wj0-x244.google.com with SMTP id j10so78706129wjb.3 for ; Thu, 05 Jan 2017 02:16:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:to; bh=n25FjurPtm65zKFmEJFusI/eUM5zvaCXR0UMXsjTHK0=; b=U/UzF5vu3okm9IG9Hm3HbfG9uYs0/qklwGjBk2C4CgEtXxCr6LGHKZRrhliODnBBHm oTvlo9yjzzeruanQpMS+YzqxyA3wCMtjN8xb0WdmptMORlnNMhuu1jBXoVawe9PCcEgq nop9jU2MURWzF0qSBe0VenTZhnDD4SGNdxZdjjIOmA9yhNqIE9ueJXopAwPJ1D9hqobn nhIItJazO2Zu+7x3YSeml5vz4SvJU39e3E3jEGv4P6VxcwNkDLryWnAfUPcxDGR2ahKJ RTYLCUrnf7JZNrJVaa9XRBZLGDSNrzZtFNnjcFSx8CNY7NKEes5nS1WV3Z9wsvlGjhxv /CCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=n25FjurPtm65zKFmEJFusI/eUM5zvaCXR0UMXsjTHK0=; b=nF4HFpbfXRf7ObG13DZKyF/3VFcBgjc5TaAhbjEVxwBW/7Rt98E5eyjWzCbuDhfcso Id0pvqapTx1USTR816lutv99ZAe30UG9djSxG29TNT5clTCh59UaWzRnlpsoUKGPChxD JSFSzxCKFdzdzy6kOwqErOu2spGrWog07J87sw8TlSJmgkTdU8AY7fYcl/Z2//0oDoHw hEUfXuYMq9H2FvmMRa/uaIyfGGTTrRELUi3mmtYvpeDKYbR43LCMsr0AsxEp72x7Z/Pc ZHwgQ2cjsUSKP4BXnMhGN49/tcECTfw0WmLcJqYRoH3f4WeumulVOE1LzHM6cWGmy9l6 9FAQ== X-Gm-Message-State: AIkVDXJiWbTFmgNe1/sMpN/wq8LiR9U5n5N+hzE7CUaS4dC9m2DSspisE2G5mtpNjU5Q3w== X-Received: by 10.194.66.101 with SMTP id e5mr58193993wjt.172.1483611406445; Thu, 05 Jan 2017 02:16:46 -0800 (PST) Received: from [192.168.1.3] ([62.73.83.227]) by smtp.gmail.com with ESMTPSA id js10sm102909861wjb.19.2017.01.05.02.16.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Jan 2017 02:16:45 -0800 (PST) From: Kaloyan Ivanov Content-Type: multipart/alternative; boundary="Apple-Mail=_74D34BE7-F8BB-4879-81B0-44C6D5A2060C" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Build is broken on macOS Message-Id: <7994F8F9-FB70-42A0-B17A-FB2957A65FC6@gmail.com> Date: Thu, 5 Jan 2017 12:16:43 +0200 To: emacs-devel@gnu.org X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::244 X-Mailman-Approved-At: Thu, 05 Jan 2017 10:23:39 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 10:16:55 -0000 --Apple-Mail=_74D34BE7-F8BB-4879-81B0-44C6D5A2060C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Commit d88cdad2847726438c7d1de9fd2651c4be9243aa doesn=E2=80=99t build on = macOS The sed on El Capitan balks at the script constructed in autopen.sh. This patch fixes that on macOS, can someone please test it on other = platforms - don=E2=80=99t know if it works there as it should. =E2=80=9C diff --git a/autogen.sh b/autogen.sh index f6bfde6..e6d7ef4 100755 --- a/autogen.sh +++ b/autogen.sh @@ -224,7 +224,8 @@ do_git=3D ## Create nt/gnulib.mk if it doesn't exist, as autoreconf will need = it. if test ! -f nt/gnulib.mk; then echo 'Inferring nt/gnulib.mk from lib/gnulib.mk ...' - metascript=3D'/^[^#]/s|^.*$|/^## begin *gnulib module &/,/^## = end *gnulib module &/c ## gnulib module & removed|' + metascript=3D'/^[^#]/s|^.*$|/^## begin *gnulib module &/,/^## = end *gnulib module &/c\ + ## gnulib module & removed|' script=3D`sed "$metascript" nt/gnulib-modules-to-delete.cfg` || = exit sed "$script" lib/gnulib.mk > nt/gnulib.mk || exit fi =E2=80=9C to ./configure it quicker, you need to add --without-makeinfo (default = makeinfo is 4.8, >4.13 is required) and --with-gnutls=3Dno if you = don=E2=80=99t have gnutls installed See also: https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00048.html=20= --Apple-Mail=_74D34BE7-F8BB-4879-81B0-44C6D5A2060C Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Commit d88cdad2847726438c7d1de9fd2651c4be9243aa doesn=E2=80=99t = build on macOS

The sed on El Capitan balks at the = script constructed in autopen.sh.
This patch fixes that on macOS, = can someone please test it on other platforms - don=E2=80=99t know = if it works there as it should.
=E2=80=9C
diff --git a/autogen.sh b/autogen.sh
index f6bfde6..e6d7ef4 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ = -224,7 +224,8 @@ = do_git=3D
   ## Create nt/gnulib.mk if = it doesn't exist, as autoreconf will need it.
   if test ! -f nt/gnulib.mk; then
       echo 'Inferring nt/gnulib.mk from = lib/gnulib.mk ...'
-  =     metascript=3D'/^[^#]/s|^.*$|/^## begin  *gnulib = module &/,/^## end  *gnulib module &/c ## gnulib module = & removed|'
+  =     metascript=3D'/^[^#]/s|^.*$|/^## begin  *gnulib = module &/,/^## end  *gnulib module &/c\
+ ## gnulib module & removed|'
       script=3D`sed "$metascript" = nt/gnulib-modules-to-delete.cfg` || exit
       sed "$script" lib/gnulib.mk > = nt/gnulib.mk || exit
   fi
=E2=80=9C

to ./configure it quicker, you need to = add --without-makeinfo (default = makeinfo is 4.8, >4.13 is required) = and --with-gnutls=3Dno if you don=E2=80=99= t have gnutls installed

See also:
= --Apple-Mail=_74D34BE7-F8BB-4879-81B0-44C6D5A2060C-- From MAILER-DAEMON Thu Jan 05 10:37:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPA6r-0001nb-El for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 10:37:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPA6o-0001lf-Hv for emacs-devel@gnu.org; Thu, 05 Jan 2017 10:37:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPA6k-0006o0-Cq for emacs-devel@gnu.org; Thu, 05 Jan 2017 10:37:42 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60405) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPA6k-0006nq-9A; Thu, 05 Jan 2017 10:37:38 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4906 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPA6j-00057M-Do; Thu, 05 Jan 2017 10:37:37 -0500 Date: Thu, 05 Jan 2017 17:37:54 +0200 Message-Id: <83d1g1ecvh.fsf@gnu.org> From: Eli Zaretskii To: Gong-Yi Liao =?utf-8?B?5buW5a6u5q+F?= CC: alan@idiocy.org, halley@play-bow.org, emacs-devel@gnu.org In-reply-to: (message from Gong-Yi Liao =?utf-8?B?5buW5a6u5q+F?= on Wed, 4 Jan 2017 22:34:58 -0600) Subject: Re: UI input unresponsive on macOS Reply-to: Eli Zaretskii References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> <20170103174900.GA49916@breton.holly.idiocy.org> <83zij6esyt.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 15:37:43 -0000 > From: Gong-Yi Liao 廖宮毅 > Date: Wed, 4 Jan 2017 22:34:58 -0600 > Cc: Alan Third , Bob Halley , emacs-devel@gnu.org > > When I M-X gnus, Emacs runs (with or without -Q at command line) > normally; but when I use > > (make-thread #'gnus "gnus") > > Emacs just hangs by the dialog whose screenshot is attached as a png file. The image seems to indicate that Emacs is waiting for you to answer the question. Did you try to click "Yes" or "No" on the dialog Emacs pops up? From MAILER-DAEMON Thu Jan 05 10:42:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPABJ-0005JG-Bc for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 10:42:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPABH-0005Hx-0a for emacs-devel@gnu.org; Thu, 05 Jan 2017 10:42:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPABG-0000gV-4p for emacs-devel@gnu.org; Thu, 05 Jan 2017 10:42:19 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60467) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPABG-0000gL-1Z; Thu, 05 Jan 2017 10:42:18 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4917 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPABF-0005V3-31; Thu, 05 Jan 2017 10:42:17 -0500 Date: Thu, 05 Jan 2017 17:42:33 +0200 Message-Id: <83a8b5ecnq.fsf@gnu.org> From: Eli Zaretskii To: Angelo Graziosi CC: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> (message from Angelo Graziosi on Thu, 5 Jan 2017 10:54:16 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 15:42:19 -0000 > From: Angelo Graziosi > Date: Thu, 5 Jan 2017 10:54:16 +0100 > Cc: Emacs developers > > Hi Paul, > > really I spoke of macOS build not MSWINDOWS (MSW).. But now, as Richard > reported, it seems that also MSW build is broken... No, it's not broken because Paul didn't install his changes. Richard was just giving him a heads-up. (Thanks, Richard!) From MAILER-DAEMON Thu Jan 05 11:14:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPAgk-0007ZA-13 for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 11:14:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAgh-0007W0-Kz for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:14:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPAgd-0004Y6-Si for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:14:47 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60837) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAgd-0004Y2-Pw; Thu, 05 Jan 2017 11:14:43 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1041 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPAgd-0007sv-4j; Thu, 05 Jan 2017 11:14:43 -0500 Date: Thu, 05 Jan 2017 18:14:59 +0200 Message-Id: <837f69eb5o.fsf@gnu.org> From: Eli Zaretskii To: Kaloyan Ivanov CC: emacs-devel@gnu.org In-reply-to: <7994F8F9-FB70-42A0-B17A-FB2957A65FC6@gmail.com> (message from Kaloyan Ivanov on Thu, 5 Jan 2017 12:16:43 +0200) Subject: Re: Build is broken on macOS Reply-to: Eli Zaretskii References: <7994F8F9-FB70-42A0-B17A-FB2957A65FC6@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 16:14:48 -0000 > From: Kaloyan Ivanov > Date: Thu, 5 Jan 2017 12:16:43 +0200 > > Commit d88cdad2847726438c7d1de9fd2651c4be9243aa doesn’t build on macOS > > The sed on El Capitan balks at the script constructed in autopen.sh. > This patch fixes that on macOS, can someone please test it on other platforms - don’t know if it works there > as it should. Thanks. Your version doesn't do exactly what the Sed script is supposed to do, at least not on GNU/Linux and on MS-Windows. So please try the current master and see if the alternative solution I pushed solves the macOS problem. From MAILER-DAEMON Thu Jan 05 11:16:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPAi9-0000OX-1x for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 11:16:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42463) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAi6-0000Mz-AM for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:16:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPAi3-0004xx-4g for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:16:14 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60854) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAi3-0004xt-0x; Thu, 05 Jan 2017 11:16:11 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1043 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPAi2-00084Y-1b; Thu, 05 Jan 2017 11:16:10 -0500 Date: Thu, 05 Jan 2017 18:16:26 +0200 Message-Id: <8360lteb39.fsf@gnu.org> From: Eli Zaretskii To: Angelo Graziosi CC: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> (message from Angelo Graziosi on Thu, 5 Jan 2017 10:54:16 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 16:16:15 -0000 > From: Angelo Graziosi > Date: Thu, 5 Jan 2017 10:54:16 +0100 > Cc: Emacs developers > > You should consider that macOS does not use GNU sed but another version > (unix/BSD?), and what works on GNU/Linux not always works in the same > manne on macOS... That's my fault, not Paul's. Sorry about that. Could you please try the current master? I attempted to fix this problem. From MAILER-DAEMON Thu Jan 05 11:24:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPAqL-0007pk-KO for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 11:24:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAqI-0007nA-Ka for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:24:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPAqE-00088O-8T for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:24:42 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60927) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPAqE-00088J-53; Thu, 05 Jan 2017 11:24:38 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1053 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPAqD-000092-As; Thu, 05 Jan 2017 11:24:37 -0500 Date: Thu, 05 Jan 2017 18:24:53 +0200 Message-Id: <834m1deap6.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: angelo.graziosi@alice.it, emacs-devel@gnu.org In-reply-to: (message from Paul Eggert on Wed, 4 Jan 2017 19:21:11 -0800) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 16:24:43 -0000 > From: Paul Eggert > Date: Wed, 4 Jan 2017 19:21:11 -0800 > > This is caused by our recent attempt to better-automate MS-Windows builds. I > fixed one nonportable construct, but evidently there are others. Yes, sorry about that. Mea culpa. > It's time to break out a bigger hammer. Please try the attached patch. I have > tested it on Fedora, but not on MS-Windows and so have not installed it yet. I'd prefer to avoid the need for the people who maintain the MS-Windows build to understand the structure of lib/gnulib.mk in too many details, such as what files comprise each Gnulib package, and what is the meaning of the likes of EXTRA_libgnu_a_SOURCES. OTOH, I'd prefer not to bother people who merge from Gnulib with understanding what parts the MS-Windows build needs to avoid. Having a simple list of Gnulib packages to remove from lib/gnulib.mk, similar to nt/gnulib-modules-to-delete.cfg, is therefore preferable to a much more detailed list that you propose to maintain manually in lib/Makefile.am. It is also simpler, since the syntax of Makefile.am doesn't need to be familiar to whoever modifies the list of modules. Is it possible to use a similar plain list of modules while solving this with GNU Make features? If not, I think we should stick with the current solution. It's not a bad one, I think, once we clean up the portability issues. (I just tried to solve a couple of such issues.) Thanks. From MAILER-DAEMON Thu Jan 05 11:37:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPB2e-0002dn-9J for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 11:37:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPB2c-0002bn-5W for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:37:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPB2Y-0004Ge-6D for emacs-devel@gnu.org; Thu, 05 Jan 2017 11:37:26 -0500 Received: from smtp204.alice.it ([82.57.200.100]:20681) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPB2X-0004F1-D2; Thu, 05 Jan 2017 11:37:22 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp204.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586E1CF90010CA57; Thu, 5 Jan 2017 17:37:18 +0100 Subject: Re: Last commit breaks macOS build To: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org From: Angelo Graziosi Message-ID: <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> Date: Thu, 5 Jan 2017 17:37:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <8360lteb39.fsf@gnu.org> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.100 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 16:37:27 -0000 Il 05/01/2017 17:16, Eli Zaretskii ha scritto: >> From: Angelo Graziosi >> Date: Thu, 5 Jan 2017 10:54:16 +0100 >> Cc: Emacs developers >> >> You should consider that macOS does not use GNU sed but another version >> (unix/BSD?), and what works on GNU/Linux not always works in the same >> manne on macOS... > > That's my fault, not Paul's. Sorry about that. > > Could you please try the current master? I attempted to fix this > problem. > On macOS same issue with master-003954e67fbe97c6ac786983912f572c48a331f5. Maybe this can help: http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00071.html From MAILER-DAEMON Thu Jan 05 12:01:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPBPe-0005u2-4p for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 12:01:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55480) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPBPX-0005qJ-Jn for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:01:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPBPW-0004ma-RF for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:01:07 -0500 Received: from mail-oi0-x231.google.com ([2607:f8b0:4003:c06::231]:33646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPBPV-0004lm-D0; Thu, 05 Jan 2017 12:01:05 -0500 Received: by mail-oi0-x231.google.com with SMTP id 128so392000801oig.0; Thu, 05 Jan 2017 09:01:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SiL4mlZXWhinKbaH46awWaOb5YGC5MdEw/W1LdmV2WU=; b=i+8Ij+Q/HO8jWbMTsoahF4szjnv/Z7pw4VdeuUOGPR430R719LemMPoeM4nBBKwmJJ k9+3HWzAghZXpEfY2f17QcJm8Fc57SvYYZdVoUaCC5C4adRkqEOCWAGq5HuZwjF/nXcq ZcRPIC9yUCiFV9VwHm7i44TSylYPUE8IbWX7mos6qPLjCle2lpj9oCTiJq8jd9BwjWZM YdPKCstH+RnvoBvIOuNno1tuVHSnikvevCusIGhpS8YcOdkkeSb+xFAUonp3lOIG3Lpu Uaspx0nxHwiug8larwnQFx6tjXiJzCwvvgkDqqC0gXE+QoVspwAMnFNGi5OJT9kiL73d TP0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SiL4mlZXWhinKbaH46awWaOb5YGC5MdEw/W1LdmV2WU=; b=EofTKLr9E8t5gjRNigeYuK4SDNVo+Cnx7OqUOSe8tdGy8e62jvswwmXGP0aCCrF3Mt 0whzGnqwOBUDjdNggRRLuBNXJNMmAs4Sd6383HqVuPrdcluFqnn/9pRceZyxGq9BJfm5 FwdJ4RIg+ltcvX2YfXjrLCcCP0LAQ6FQfo1RVI+5Amp8XuzcEB4KH7hL9ug/hb3tG8jS 55H8dwSXFj0bIxeD0NjPEgyaJI8JPSS6Z8J+sk0P508qlLDmxUHkYWYMWLoz+QCUAUwN H2R3mMb9v+xFRmCVPJ64NKD2vgMi7qlN2uDAvYhXpXeDG+sRLlVtq3adBGOccTzaKLL1 j8jA== X-Gm-Message-State: AIkVDXJz2R5aG2iA4JesSg/bItqB7KuZsTQM8mRafCEoVyYKRL/XtvXxQ1s3CoJCXzZGmmtudOxa1k5HTBlzcQ== X-Received: by 10.157.56.132 with SMTP id p4mr32692584otc.176.1483635663787; Thu, 05 Jan 2017 09:01:03 -0800 (PST) MIME-Version: 1.0 References: <72DF4592-73FE-452D-9CF3-C892E73BD36E@play-bow.org> <20170103143621.GA41725@breton.holly.idiocy.org> <20170103174900.GA49916@breton.holly.idiocy.org> <83zij6esyt.fsf@gnu.org> <83d1g1ecvh.fsf@gnu.org> In-Reply-To: <83d1g1ecvh.fsf@gnu.org> From: =?UTF-8?B?R29uZy1ZaSBMaWFvIOW7luWuruavhQ==?= Date: Thu, 05 Jan 2017 17:00:53 +0000 Message-ID: Subject: Re: UI input unresponsive on macOS To: Eli Zaretskii Cc: alan@idiocy.org, emacs-devel@gnu.org, halley@play-bow.org Content-Type: multipart/alternative; boundary=001a11c0160cb75d4105455bd8bc X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 17:01:12 -0000 --001a11c0160cb75d4105455bd8bc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I did clicked both buttons but none of them responsive and the UI hanged. On Thu, Jan 5, 2017, 09:38 Eli Zaretskii wrote: > > From: Gong-Yi Liao =E5=BB=96=E5=AE=AE=E6=AF=85 > > Date: Wed, 4 Jan 2017 22:34:58 -0600 > > Cc: Alan Third , Bob Halley , > emacs-devel@gnu.org > > > > When I M-X gnus, Emacs runs (with or without -Q at command line) > > normally; but when I use > > > > (make-thread #'gnus "gnus") > > > > Emacs just hangs by the dialog whose screenshot is attached as a png > file. > > The image seems to indicate that Emacs is waiting for you to answer > the question. Did you try to click "Yes" or "No" on the dialog Emacs > pops up? > --001a11c0160cb75d4105455bd8bc Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I did clicked both buttons but none of them responsive and the UI hanged.


On Th= u, Jan 5, 2017, 09:38 Eli Zaretskii <eli= z@gnu.org> wrote:
> Fro= m: Gong-Yi Liao =E5=BB=96=E5=AE=AE=E6=AF=85 <gongyi.liao@gmail.com>
> Date: Wed, 4 Jan 2017 22:34:58 -0600
> Cc: Alan Third <
alan@idiocy.org>, Bob Halley <halley@play= -bow.org>, emacs-devel@gnu.org
>
> When I M-X gnus, Emacs runs (with or without -Q at command line)
> normally; but when I use
>
> (make-thread #'gnus "gnus")
>
> Emacs just hangs by the dialog whose screenshot is attached as a png f= ile.

The image seems to indicate that Emacs is waiting for you to answer
the question.=C2=A0 Did you try to click "Yes" or "No" = on the dialog Emacs
pops up?
--001a11c0160cb75d4105455bd8bc-- From MAILER-DAEMON Thu Jan 05 12:04:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPBSd-0008Q7-MB for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 12:04:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56075) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPBSb-0008O3-K5 for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:04:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPBSY-00061S-HE for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:04:17 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33330) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPBSY-00061M-EQ; Thu, 05 Jan 2017 12:04:14 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1094 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPBSX-0005Pr-FI; Thu, 05 Jan 2017 12:04:13 -0500 Date: Thu, 05 Jan 2017 19:04:28 +0200 Message-Id: <831swhe8v7.fsf@gnu.org> From: Eli Zaretskii To: Angelo Graziosi CC: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> (message from Angelo Graziosi on Thu, 5 Jan 2017 17:37:00 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 17:04:18 -0000 > Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > From: Angelo Graziosi > Date: Thu, 5 Jan 2017 17:37:00 +0100 > > > Could you please try the current master? I attempted to fix this > > problem. > > > > On macOS same issue with master-003954e67fbe97c6ac786983912f572c48a331f5. Could you please show the error messages you see with the latest master? > Maybe this can help: > http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00071.html That didn't work on other systems, so we cannot use it as-is. Thanks. From MAILER-DAEMON Thu Jan 05 12:22:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPBjm-0007AT-Ct for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 12:22:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59974) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPBjj-00077y-Dl for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:22:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPBjf-0003us-1b for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:21:59 -0500 Received: from smtp201.alice.it ([82.57.200.97]:5973) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPBje-0003sl-78; Thu, 05 Jan 2017 12:21:54 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp201.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586E1CC60013C2E0; Thu, 5 Jan 2017 18:21:52 +0100 Subject: Re: Last commit breaks macOS build To: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org From: Angelo Graziosi Message-ID: <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> Date: Thu, 5 Jan 2017 18:21:50 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <831swhe8v7.fsf@gnu.org> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.97 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 17:22:00 -0000 Il 05/01/2017 18:04, Eli Zaretskii ha scritto: >> Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org >> From: Angelo Graziosi >> Date: Thu, 5 Jan 2017 17:37:00 +0100 >> >>> Could you please try the current master? I attempted to fix this >>> problem. >>> >> >> On macOS same issue with master-003954e67fbe97c6ac786983912f572c48a331f5. > > Could you please show the error messages you see with the latest > master? > Now it fails in similar way: ./autogen.sh [...] Your system has the required tools. Interfering nt/gnulib.mk from lib/gnulib.mk ... sed: 46: "# This is the list of m ...": extra characters after \ at the end of c command > >> Maybe this can help: >> http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00071.html > > That didn't work on other systems, so we cannot use it as-is. As I wrote, on macOS sed could behave differently.. it is not a GNU sed.. > > Thanks. > From MAILER-DAEMON Thu Jan 05 12:51:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPCCi-0002yh-2L for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 12:51:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40180) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCCg-0002w5-7J for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:51:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPCCd-000053-4B for emacs-devel@gnu.org; Thu, 05 Jan 2017 12:51:54 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34024) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCCd-00004z-1i; Thu, 05 Jan 2017 12:51:51 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1573 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPCCc-0004VV-7M; Thu, 05 Jan 2017 12:51:50 -0500 Date: Thu, 05 Jan 2017 19:52:06 +0200 Message-Id: <83zij5cs3d.fsf@gnu.org> From: Eli Zaretskii To: Angelo Graziosi CC: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> (message from Angelo Graziosi on Thu, 5 Jan 2017 18:21:50 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 17:51:55 -0000 > Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > From: Angelo Graziosi > Date: Thu, 5 Jan 2017 18:21:50 +0100 > > > Could you please show the error messages you see with the latest > > master? > > > > Now it fails in similar way: > > ./autogen.sh > [...] > Your system has the required tools. > Interfering nt/gnulib.mk from lib/gnulib.mk ... > sed: 46: "# This is the list of m ...": extra characters after \ at the > end of c command How about now? > >> Maybe this can help: > >> http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00071.html > > > > That didn't work on other systems, so we cannot use it as-is. > > As I wrote, on macOS sed could behave differently.. it is not a GNU sed.. Yes, and as I wrote, I'm trying to find a solution that will work on all systems. Thanks. From MAILER-DAEMON Thu Jan 05 13:18:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPCcW-0001pB-DQ for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 13:18:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCcV-0001p5-4F for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:18:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPCcR-0007wC-E4 for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:18:35 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:39667) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPCcN-0007vK-Kb; Thu, 05 Jan 2017 13:18:27 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tvbXH64ymz3hjRg; Thu, 5 Jan 2017 19:18:23 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tvbXH5SxrzvkSV; Thu, 5 Jan 2017 19:18:23 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id NzTZr5a6-JCa; Thu, 5 Jan 2017 19:18:22 +0100 (CET) X-Auth-Info: 5FjXRhCM2eamHbWbJzOfSW8wtEzX0ptnRmc8eqf157j3V9tbpIxlKhHw7Hp+p8m0 Received: from igel.home (ppp-88-217-26-238.dynamic.mnet-online.de [88.217.26.238]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Thu, 5 Jan 2017 19:18:22 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 228082C46ED; Thu, 5 Jan 2017 19:18:22 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: Angelo Graziosi , rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org Subject: Re: Last commit breaks macOS build References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> X-Yow: Here I am in the POSTERIOR OLFACTORY LOBULE but I don't see CARL SAGAN anywhere!! Date: Thu, 05 Jan 2017 19:18:22 +0100 In-Reply-To: <83zij5cs3d.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 05 Jan 2017 19:52:06 +0200") Message-ID: <87mvf52wwh.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 18:18:35 -0000 On Jan 05 2017, Eli Zaretskii wrote: > How about now? echo is not portable wrt backslashes. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Thu Jan 05 13:24:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPCiY-0005CJ-5U for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 13:24:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCiW-0005CC-N1 for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:24:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPCiT-0002gP-Ky for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:24:48 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34357) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCiT-0002gL-I4; Thu, 05 Jan 2017 13:24:45 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2278 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPCiQ-0006Oy-La; Thu, 05 Jan 2017 13:24:45 -0500 Date: Thu, 05 Jan 2017 20:24:42 +0200 Message-Id: <83y3ypcql1.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <87mvf52wwh.fsf@linux-m68k.org> (message from Andreas Schwab on Thu, 05 Jan 2017 19:18:22 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 18:24:49 -0000 > From: Andreas Schwab > Cc: Angelo Graziosi , rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > Date: Thu, 05 Jan 2017 19:18:22 +0100 > > On Jan 05 2017, Eli Zaretskii wrote: > > > How about now? > > echo is not portable wrt backslashes. Suggestions for how to fix this are welcome. I have no access to a macOS system, so I'm flying blind. From MAILER-DAEMON Thu Jan 05 13:32:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPCpl-0000YO-Oa for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 13:32:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47830) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCpj-0000Y1-K5 for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:32:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPCpi-0004qi-Sh for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:32:15 -0500 Received: from mail-out.m-online.net ([2001:a60:0:28:0:1:25:1]:50177) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPCpf-0004oj-3U; Thu, 05 Jan 2017 13:32:11 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tvbr80Th5z3hkFg; Thu, 5 Jan 2017 19:32:08 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tvbr76vHLzvkVF; Thu, 5 Jan 2017 19:32:07 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id ABkjN61AGN42; Thu, 5 Jan 2017 19:32:05 +0100 (CET) X-Auth-Info: +ncAsHR2KmRMZTw1KUA+UcKUpUI6cg7OOSTE+QGZfkX1oL4I/Oq/fSOLfsuJJZds Received: from igel.home (ppp-88-217-26-238.dynamic.mnet-online.de [88.217.26.238]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Thu, 5 Jan 2017 19:32:05 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 652302C46F8; Thu, 5 Jan 2017 19:32:05 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org Subject: Re: Last commit breaks macOS build References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> X-Yow: I FORGOT to do the DISHES!! Date: Thu, 05 Jan 2017 19:32:05 +0100 In-Reply-To: <83y3ypcql1.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 05 Jan 2017 20:24:42 +0200") Message-ID: <87inpt2w9m.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 2001:a60:0:28:0:1:25:1 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 18:32:16 -0000 On Jan 05 2017, Eli Zaretskii wrote: >> From: Andreas Schwab >> Cc: Angelo Graziosi , rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org >> Date: Thu, 05 Jan 2017 19:18:22 +0100 >> >> On Jan 05 2017, Eli Zaretskii wrote: >> >> > How about now? >> >> echo is not portable wrt backslashes. > > Suggestions for how to fix this are welcome. I have no access to a > macOS system, so I'm flying blind. That has nothing to do with macos. $ echo '\\' \\ $ shopt -s xpg_echo $ echo '\\' \ Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Thu Jan 05 13:38:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPCvp-0002Iu-Sg for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 13:38:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCvo-0002Ik-0b for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:38:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPCvk-0007Xh-2o for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:38:32 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34488) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPCvj-0007XX-VD; Thu, 05 Jan 2017 13:38:27 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2291 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPCvh-00078D-1p; Thu, 05 Jan 2017 13:38:27 -0500 Date: Thu, 05 Jan 2017 20:38:19 +0200 Message-Id: <83wpe9cpyc.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <87inpt2w9m.fsf@linux-m68k.org> (message from Andreas Schwab on Thu, 05 Jan 2017 19:32:05 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 18:38:33 -0000 > From: Andreas Schwab > Cc: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > Date: Thu, 05 Jan 2017 19:32:05 +0100 > > $ echo '\\' > \\ > $ shopt -s xpg_echo > $ echo '\\' > \ So you are saying that autogen.sh should do shopt -u xpg_echo to countermand a possible user setting? Strangely, whether I set xpg_echo or not, the current autogen.sh produces the same nt/gnulib.mk, although the effect on 'echo' is as you indicate above. So why doesn't that option have effect here? What am I missing? Thanks. From MAILER-DAEMON Thu Jan 05 13:53:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPDAG-0007I2-QY for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 13:53:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52081) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPDAD-0007Hb-OX for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:53:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPDAD-0004Nc-0V for emacs-devel@gnu.org; Thu, 05 Jan 2017 13:53:25 -0500 Received: from mail-out.m-online.net ([212.18.0.10]:54666) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPDA9-0004N0-6W; Thu, 05 Jan 2017 13:53:21 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tvcJb1zsLz3hhtg; Thu, 5 Jan 2017 19:53:19 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tvcJb1R99zvkV8; Thu, 5 Jan 2017 19:53:19 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id cDmoGjPD94pR; Thu, 5 Jan 2017 19:53:18 +0100 (CET) X-Auth-Info: BwGqK54PRTXYdJIlHLj6lz4/2BHmi6SkmnN1MQm3QxLrf2rj3bV85IiEue5xOwAl Received: from igel.home (ppp-88-217-26-238.dynamic.mnet-online.de [88.217.26.238]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Thu, 5 Jan 2017 19:53:18 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id A90772C46FB; Thu, 5 Jan 2017 19:53:17 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org Subject: Re: Last commit breaks macOS build References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> X-Yow: Sign my PETITION. Date: Thu, 05 Jan 2017 19:53:17 +0100 In-Reply-To: <83wpe9cpyc.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 05 Jan 2017 20:38:19 +0200") Message-ID: <87eg0h2vaa.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 18:53:26 -0000 On Jan 05 2017, Eli Zaretskii wrote: > Strangely, whether I set xpg_echo or not, the current autogen.sh > produces the same nt/gnulib.mk, although the effect on 'echo' is as > you indicate above. So why doesn't that option have effect here? Because you are relying on unspecified behaviour of the sed script. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Thu Jan 05 14:38:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPDrn-0001DH-NN for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 14:38:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPDrj-0001Bi-VF for emacs-devel@gnu.org; Thu, 05 Jan 2017 14:38:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPDrg-00024U-SZ for emacs-devel@gnu.org; Thu, 05 Jan 2017 14:38:23 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35057) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPDrg-00024Q-Ph; Thu, 05 Jan 2017 14:38:20 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3375 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPDrd-0001Ay-MG; Thu, 05 Jan 2017 14:38:20 -0500 Date: Thu, 05 Jan 2017 21:38:09 +0200 Message-Id: <83vattcn6m.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: <87eg0h2vaa.fsf@linux-m68k.org> (message from Andreas Schwab on Thu, 05 Jan 2017 19:53:17 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> <87eg0h2vaa.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 19:38:25 -0000 > From: Andreas Schwab > Cc: angelo.graziosi@alice.it, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > Date: Thu, 05 Jan 2017 19:53:17 +0100 > > On Jan 05 2017, Eli Zaretskii wrote: > > > Strangely, whether I set xpg_echo or not, the current autogen.sh > > produces the same nt/gnulib.mk, although the effect on 'echo' is as > > you indicate above. So why doesn't that option have effect here? > > Because you are relying on unspecified behaviour of the sed script. Thanks. From MAILER-DAEMON Thu Jan 05 17:42:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPGjm-0007I2-N4 for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 17:42:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36489) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPGjk-0007Ge-NJ for emacs-devel@gnu.org; Thu, 05 Jan 2017 17:42:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPGjf-000589-TV for emacs-devel@gnu.org; Thu, 05 Jan 2017 17:42:20 -0500 Received: from smtp204.alice.it ([82.57.200.100]:48303) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPGjf-00057v-Gk; Thu, 05 Jan 2017 17:42:15 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp204.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586E1CF9001C6B8C; Thu, 5 Jan 2017 23:42:11 +0100 Subject: Re: Last commit breaks macOS build To: Eli Zaretskii , Andreas Schwab References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> <87eg0h2vaa.fsf@linux-m68k.org> <83vattcn6m.fsf@gnu.org> Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org From: Angelo Graziosi Message-ID: Date: Thu, 5 Jan 2017 23:41:56 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <83vattcn6m.fsf@gnu.org> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.100 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2017 22:42:21 -0000 Last commit ( d1d9b376306edb77632968cbbd7dfa456f00046c) builds on macOS, MSW and GNU/Linux.. Thanks, Angelo. From MAILER-DAEMON Thu Jan 05 21:58:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPKjV-0000uY-Ia for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 21:58:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49406) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPKjT-0000uQ-5c for emacs-devel@gnu.org; Thu, 05 Jan 2017 21:58:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPKjQ-0003Wl-4y for emacs-devel@gnu.org; Thu, 05 Jan 2017 21:58:19 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:33738) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPKjP-0003VK-Vo for emacs-devel@gnu.org; Thu, 05 Jan 2017 21:58:16 -0500 Received: by mail-qk0-x244.google.com with SMTP id n21so61034035qka.0 for ; Thu, 05 Jan 2017 18:58:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=ewKOQLgjpNd1WsgXsv/QdHwvpPQsMQh9V9KbUj7EZaY=; b=rVoOVDvkYjr3R5IN/+Dfj8cHY9j0WLWR8QITnAvPrd3bE7itNrMUzy2tv3uh55CUF2 Ni3ZotBL9VbtyWJmfkunejIwCSrryBu7peAkOlCDW2OdSbEb9uzEnSGKuN07Jmm/5p2/ AsJ2Q32y0oTjkJLZXuJlufYZ1mPEpNqOcjg84RbS1nvZhfw1SBaT+B8j2T+/2l6GTt/w Bm08v1HKuvc5V7r/9MRx5vqCc0UuSfLMrHtXc9dXUseKFluoPs0Q7HIU8nyb/wB5Qq5j 7g2eujlcx9QJonFWEKnIVfQuPl+/pWUPC4Pcvqnb4PzudxM6nvTONpyDuOzJqGNaN9sV YyBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=ewKOQLgjpNd1WsgXsv/QdHwvpPQsMQh9V9KbUj7EZaY=; b=mgKE7UUjJSWFhJU2tj6kYu967tjR6DnBQ7CJZouQ44EJ5xOph1bRO5IhvFdACoHc0c bLEd2z3YP5BEcod/Ks6rKpe5L9D8ut/RxC/sUyxa8MfhGmimvgizZbE513HEzmS5rYYi L9qRgjp9FpshUB1tJqDlq20zeV2iO+kW7ujGA88z3O4QMIUVjIDfD6s5v1QU5XgTlVV6 EV+UznK+03pFzgElT21I0YJU6RdI9H43G1yT/RKg6GTXjTAhnd9xYlTbb5ZdCBgaVodQ AQgMXWoHxWAa2QMqDksmVKlKdlX96N63RtvRE5o0l5iPu2OM+Skj/HpHbgczb0yTi9wm y4Zw== X-Gm-Message-State: AIkVDXIT/KB5GLhQHs+OGhbbQ2z4S4NZN05uX4RVji/55cIcP0yhU1D32ACnn6nSqqaODqEy X-Received: by 10.55.122.134 with SMTP id v128mr68610399qkc.111.1483671493745; Thu, 05 Jan 2017 18:58:13 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id e63sm49542474qkc.29.2017.01.05.18.58.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Jan 2017 18:58:12 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 231A560D63; Thu, 5 Jan 2017 21:58:11 -0500 (EST) Date: Thu, 5 Jan 2017 21:58:11 -0500 From: Mark Oteiza To: Dima Kogan Cc: Tino Calancha , emacs-devel@gnu.org, 25105@debbugs.gnu.org Subject: Re: [Emacs-diffs] master 2c8a7e5: Improve diff-mode navigation/manipulation Message-ID: <20170106025811.GA1101@holos.localdomain> References: <874m2q1oca.fsf@gmail.com> <878trtoluv.fsf@udel.edu> <874m2gfb9b.fsf@secretsauce.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <874m2gfb9b.fsf@secretsauce.net> User-Agent: Mutt/1.7.2+12 (2bc2ec9ac664) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 02:58:20 -0000 On 06/12/16 at 11:29pm, Dima Kogan wrote: > Mark Oteiza writes: > > > Fixing C-c C-a to DTRT is great, thanks, but I don't think the > > off-by-one navigation changes to "n" and "p" (diff-hunk-next, > > diff-hunk-prev) make sense. While it may have made fixing the issues > > mentioned in the commit message easier, the changes to what "n" and "p" > > do at the beginning and end of a diff are not documented, and I didn't > > see any discussion of it in the associated bug. > > > > I contend that the new behavior is inconsistent with the behavior of > > other outline/thing-with-headers type things in Emacs. outline-mode, > > org-mode, and rst-mode are the first ones that come to mind. > > Can you give a specific example of interaction in any of these modes > that is analogous to the off-by-one behavior you're referring to? I wrote about how your changes are make diff-mode _not_ analogous. > The > fundamental question is what hunk diff-mode should think the point is > looking at, when it is in some non-diff message above the first hunk. > The answer I chose for the new navigation logic is "first hunk". You > could also choose "invalid hunk, not a hunk at all", which would imply > that C-c C-a and M-ret and such shouldn't work there. Better suggestions > welcome. One might argue that C-c C-a and friends in a file header should apply all hunks in a file, or perhaps that there should actually be diff-apply-file commands, etc. The way n and p worked was not a bug, yet you gratuitously changed them, and broke auto-refinement. Why do I have to now hit two keys to refine the first hunk, and one key to refine the second? > > It's also not clear how the introduced oddity with auto-refine is going > > to be resolved, unless a way is found to autorefine the first hunk > > without there being any user interaction. Then opening a diff has > > inconsistent auto-refining from the start. > > I don't use auto-refinement, so didn't notice the breakage. Will look at > it in a bit. It's on by default, so this statement perplexes me. From MAILER-DAEMON Thu Jan 05 23:23:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPM3b-0005pQ-7A for mharc-emacs-devel@gnu.org; Thu, 05 Jan 2017 23:23:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59712) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPM3Y-0005oR-Q7 for emacs-devel@gnu.org; Thu, 05 Jan 2017 23:23:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPM3X-0006ww-Ma for emacs-devel@gnu.org; Thu, 05 Jan 2017 23:23:08 -0500 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:35398) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPM3X-0006wX-Fs for emacs-devel@gnu.org; Thu, 05 Jan 2017 23:23:07 -0500 Received: by mail-wm0-x231.google.com with SMTP id a197so11393132wmd.0 for ; Thu, 05 Jan 2017 20:23:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=gEVDyzyVIO2OP+iejfzco8S7l9s8pA85BIS8pEZhZbw=; b=vdrz6zxkvNq8dpOjUpvBxw2dhdy35n4oiVOQcbzCmgBdGgkEx7ufhrR5o6fce8mY1q +M8rPTEVSz7B9nRZNKEG5PSsLBtrxjbxNQlouNFCopnIbosYO5Shf6aKAI6cfICTAexy arM8wD+EbKnxnAFBbWL3Zoan5hC2RGJyK7xX04T9D9bCs/9hTJu0irEy2CgXrDYeGpfr vAXXbAmB0XLIoiYZLPW4TYZ4/Tumw2SFUybxhQgTiYtrtHb542O6dWC26lXtOJ+3Ru88 TQL03L7Z8xLED2h8cCZMrPfo4B/ogqPKwbG2nKZfKIdL61EUT14LZLifOaTBEocZoThd er3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=gEVDyzyVIO2OP+iejfzco8S7l9s8pA85BIS8pEZhZbw=; b=G22GeLlICQHblLzgboxPHAOofUH0I0WjuhnLfZKpf+sxpTaiPY5eHaKJH0AXRi/ASu PndLW4ih5DUP56Y3TtGMOlCndKhdRHaL3JXrNxJtX3U8t3m1OKj0UC8WMtd7c1uD0Gs8 /JixtR4yBtA1rkgCrxfZs0XqOnl42tyNQGVQWs29Fmt2QsGnG5Dnf66H+Pj6jCQUmkUw mlgWgRwGXFJFDzc9zf9qNJqD1bXt9xC15FYJnIJyDQAKdeay0txfUL5P+JH6sr1NzhTa qSYJqgVYiLm6ZToKB76vIl1KU06sOXxJ1WufQnBdwf7ihiz7ANkS+dq+6O1TqxdtWrUe +b7w== X-Gm-Message-State: AIkVDXJpHjeAdocLwJE8OYfZnUrAKAUwKL0kQstHHJvD7E7MHovxvAHmhHkFhSc60fO86DyrY4FXVuWtyHdaEQ== X-Received: by 10.28.95.193 with SMTP id t184mr1184016wmb.93.1483676584739; Thu, 05 Jan 2017 20:23:04 -0800 (PST) MIME-Version: 1.0 Sender: steve.purcell@gmail.com Received: by 10.28.73.212 with HTTP; Thu, 5 Jan 2017 20:23:02 -0800 (PST) Received: by 10.28.73.212 with HTTP; Thu, 5 Jan 2017 20:23:02 -0800 (PST) In-Reply-To: References: From: Steve Purcell Date: Fri, 6 Jan 2017 17:23:02 +1300 X-Google-Sender-Auth: dFngdPctmgkHqMpKWYiwRRzuJEQ Message-ID: Subject: Problem with new cl-lib 0.6 in ELPA To: emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=001a114a4892cbab9c0545655fea X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 04:23:09 -0000 --001a114a4892cbab9c0545655fea Content-Type: text/plain; charset=UTF-8 The new cl-lib version now declares a package dependency on Emacs 21, which actually renders it completely uninstallable in Emacs < 24, since the only versions of package.el usable in Emacs 23.x have no concept of built-in packages like "emacs". This is going to make a huge number of packages uninstallable for users of those older Emacs versions. Could someone fix this please? (Incidentally, my fledgling package-lint.el detects some potential issues like this.) Cheers, and Happy New Year to all! --001a114a4892cbab9c0545655fea Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
The new cl-lib version now declares a package dependency = on Emacs 21, which actually renders it completely uninstallable in Emacs &l= t; 24, since the only versions of package.el usable in Emacs 23.x have no c= oncept of built-in packages like "emacs".

This is going to make a huge number of packages unins= tallable for users of those older Emacs versions. Could someone fix this pl= ease? (Incidentally, my fledgling package-lint.el detects some potential is= sues like this.)

Cheers,= and Happy New Year to all!
--001a114a4892cbab9c0545655fea-- From MAILER-DAEMON Fri Jan 06 02:44:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPPCn-0004dO-1d for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 02:44:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34913) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPPCk-0004cy-Ds for emacs-devel@gnu.org; Fri, 06 Jan 2017 02:44:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPPCh-0004bs-DM for emacs-devel@gnu.org; Fri, 06 Jan 2017 02:44:50 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42972) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPPCh-0004bm-9Y; Fri, 06 Jan 2017 02:44:47 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4178 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPPCf-0000GD-QH; Fri, 06 Jan 2017 02:44:46 -0500 Date: Fri, 06 Jan 2017 09:45:04 +0200 Message-Id: <83showd43j.fsf@gnu.org> From: Eli Zaretskii To: Angelo Graziosi CC: schwab@linux-m68k.org, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: (message from Angelo Graziosi on Thu, 5 Jan 2017 23:41:56 +0100) Subject: Re: Last commit breaks macOS build Reply-to: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> <87eg0h2vaa.fsf@linux-m68k.org> <83vattcn6m.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 07:44:51 -0000 > Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org > From: Angelo Graziosi > Date: Thu, 5 Jan 2017 23:41:56 +0100 > > Last commit ( d1d9b376306edb77632968cbbd7dfa456f00046c) builds on macOS, > MSW and GNU/Linux.. Great, thanks for testing. From MAILER-DAEMON Fri Jan 06 02:51:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPPJU-0006Ig-Lj for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 02:51:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36679) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPPJT-0006Ia-3m for emacs-devel@gnu.org; Fri, 06 Jan 2017 02:51:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPPJQ-0008Q6-1m for emacs-devel@gnu.org; Fri, 06 Jan 2017 02:51:47 -0500 Received: from mail-lf0-x236.google.com ([2a00:1450:4010:c07::236]:33511) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPPJP-0008P1-QF for emacs-devel@gnu.org; Fri, 06 Jan 2017 02:51:43 -0500 Received: by mail-lf0-x236.google.com with SMTP id k86so49925129lfi.0 for ; Thu, 05 Jan 2017 23:51:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=0nZNohvFORlr57rwKlpihmWO4VPzqhP+KqB/GDr1iQA=; b=iR1UKSips8chocEXGWm6puq+Aqqv8XWr6hkmg//db6eL134nqSNTXP79iWYfvqnN2T 0ui3SLX1Xz+EczrgfPbbDL10AfE24mk+v91997vTiMNL55fUO7pQdcDVgvTl02UC7i8T v0ZmWkMEhhjtU85U3/NzkOLlW5sN8Ph+8iSyBeXrpcEBNY0N82QnL3FWoHMxL72uzp6D 7VPcyQvXmf+2ysN88afHYziVbv1W3oZIkIMuvq8HmUxM2tx3M2In84CF0DvEe0CaVm6d Fmxftq/cULAbSl+8Lg5LRxD30vpJpBRalQfCGsvTNbinmNUte/U0/SQ+leFZPvKtc/eq 6MmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=0nZNohvFORlr57rwKlpihmWO4VPzqhP+KqB/GDr1iQA=; b=Vrjwt6ITAJFA5nfA6YtQp84u+0yUPb/rahuY9e8AzQpR3cQA3Cw/mrfmn6gAAgHQA1 i13v7mHFxEO/6AJTEy4yr7smcPIR3TzlXKx0T5Eu7VkmhflxynqzoNP+Q3p7v9+RHGeI fm2oryIpZvN2Zsu29DTu/6OsSYOgQgBg2zkLn2BsgZgMyIVW88z71sO4qQfX5KdT5gkw +BMUx+za1qWOZQSPy2aDuKO6uOi9TyLvOiI4ysZPz+474qWpD2xf7dc9aJ7490Tfsr3i NErPi283rVJQ3ZRAcws2Dc53nHmrenZWeFqWF8CFahzuS96vGRqOxx+JZfkuFSDNs6tg IiVA== X-Gm-Message-State: AIkVDXJgrSX/KiUF7Z3cXyypBYjVqKRFfOY/VmBuqBI4l/hFFCby0kisseY8jx5ZaVaLFw== X-Received: by 10.46.74.10 with SMTP id x10mr25321954lja.8.1483689100586; Thu, 05 Jan 2017 23:51:40 -0800 (PST) Received: from localhost.localdomain ([147.30.60.228]) by smtp.gmail.com with ESMTPSA id h15sm2070804ljb.46.2017.01.05.23.51.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Jan 2017 23:51:39 -0800 (PST) Date: Fri, 6 Jan 2017 13:51:32 +0600 From: Alexander Kuleshov To: emacs-devel Subject: emacs 26.0.50.1 - add DNS keywords and remove duplications Message-ID: <20170106075132.GA3272@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="AWniW0JNca5xppdA" Content-Disposition: inline X-Operating-System: Linux User-Agent: Mutt/1.6.0-rc0 ((null)) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 07:51:48 -0000 --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello everyone, I've attached the patch which adds TLSA (RFC 6698) and NSEC3 (RFC 5155) to dns-mode-types. Additioanlly these RFCs were added to comments and duplication of NSAP was removed. Thank you. --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Add-DNS-keywords-and-remove-duplications.patch" >From f241e2f0e424d43ebce14d8d4a7bc29b9fafd029 Mon Sep 17 00:00:00 2001 From: Alexander Kuleshov Date: Fri, 23 Dec 2016 16:53:41 +0600 Subject: emacs 26.0.50.1 - add DNS keywords and remove duplications * lisp/textmodes/dns-mode.el (dns-mode-types): Add two TLSA and NSEC" DNS related keywords and remove duplication of "NSAP". --- lisp/textmodes/dns-mode.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index 521b1f3..7159c71 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -32,6 +32,9 @@ ;; RFC 1034, "DOMAIN NAMES - CONCEPTS AND FACILITIES", P. Mockapetris. ;; RFC 1035, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", P. Mockapetris. +;; RFC 5155, "DNS Security (DNSSEC) Hashed Authenticated Denial of Existence" +;; RFC 6698, "The DNS-Based Authentication of Named Entities (DANE) +;; Transport Layer Security (TLS) Protocol: TLSA" ;;; Release history: @@ -50,13 +53,13 @@ dns-mode-classes (defconst dns-mode-types '("A" "NS" "MD" "MF" "CNAME" "SOA" "MB" "MG" "MR" "NULL" "WKS" "PTR" "HINFO" "MINFO" "MX" "TXT" - "RP" "AFSDB" "X25" "ISDN" "RT" "NSAP" "NSAP" + "RP" "AFSDB" "X25" "ISDN" "RT" "NSAP" "SIG" "KEY" "PX" "GPOS" "AAAA" "LOC" "NXT" "EID" "NIMLOC" "SRV" "ATMA" "NAPTR" "KX" "CERT" "A6" "DNAME" "SINK" "OPT" "APL" "DS" "SSHFP" "RRSIG" "NSEC" "DNSKEY" "UINFO" "UID" "GID" "UNSPEC" "TKEY" "TSIG" "IXFR" "AXFR" "MAILB" - "MAILA") + "MAILA" "TLSA" "NSEC3" ) "List of strings with known DNS types.") ;; Font lock. -- 2.8.0.rc3.1353.gea9bdc0 --AWniW0JNca5xppdA-- From MAILER-DAEMON Fri Jan 06 09:11:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPVEY-0006PA-Aq for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 09:11:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPVEW-0006Nx-1Y for emacs-devel@gnu.org; Fri, 06 Jan 2017 09:11:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPVES-0000KY-TH for emacs-devel@gnu.org; Fri, 06 Jan 2017 09:11:03 -0500 Received: from [195.159.176.226] (port=54447 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPVES-0000KB-Mt for emacs-devel@gnu.org; Fri, 06 Jan 2017 09:11:00 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cPVEL-0008Ls-Ps for emacs-devel@gnu.org; Fri, 06 Jan 2017 15:10:53 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Problem with new cl-lib 0.6 in ELPA Date: Fri, 06 Jan 2017 09:10:50 -0500 Lines: 9 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:qmRM9mcVdkRo2rC9Ab9o17gZEMc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 14:11:04 -0000 > The new cl-lib version now declares a package dependency on Emacs 21, which > actually renders it completely uninstallable in Emacs < 24, since the only > versions of package.el usable in Emacs 23.x have no concept of built-in > packages like "emacs". Duh, yes, thank you. Sorry 'bout that. Stefan From MAILER-DAEMON Fri Jan 06 10:57:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPWtC-0005LJ-JJ for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 10:57:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47538) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPWtA-0005JE-8e for emacs-devel@gnu.org; Fri, 06 Jan 2017 10:57:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPWt9-0005Wc-4x for emacs-devel@gnu.org; Fri, 06 Jan 2017 10:57:08 -0500 Received: from sender163-mail.zoho.com ([74.201.84.163]:21304) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPWt3-0005Su-Hf; Fri, 06 Jan 2017 10:57:01 -0500 Received: from localhost (141.80.148.253 [141.80.148.253]) by mx.zohomail.com with SMTPS id 1483718214793372.72019646118304; Fri, 6 Jan 2017 07:56:54 -0800 (PST) References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87mvfbzrfa.fsf@elephly.net> <87inpzyww9.fsf@elephly.net> User-agent: mu4e 0.9.18; emacs 25.1.1 From: Ricardo Wurmus To: Elias =?utf-8?Q?M=C3=A5rtenson?= Cc: Richard Stallman , John Wiegley , emacs-devel Subject: Re: official Emacs Docker image In-reply-to: Date: Fri, 06 Jan 2017 16:56:50 +0100 Message-ID: <87wpe8chbx.fsf@elephly.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 74.201.84.163 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 15:57:09 -0000 Elias Mårtenson writes: > On 1 January 2017 at 17:03, Ricardo Wurmus wrote: > >> >> Elias Mårtenson writes: >> >> > Arguably there should be a fully free distribution that could be the base >> > for more than just Emacs. >> >> GuixSD is a fully free GNU distribution and it comes with the tools that >> are needed to determine runtime dependencies that can then turned into a >> Docker image. Since Guix is a functional package manager and thus can >> account for the full closure of a package it doesn’t require a base >> image and can be the base itself. > > > I have to admit that I don't fully know what Guix is, but based on what you > say, it would still make sense to have a base (Guix, in this case) that > other containers base themselves on. That way the storage can be shared > between containers. Guix is a functional package manager. Given a package it can extract the “closure” of the package, i.e. the package and all its dependencies, recursively. Since commit 03476a23f Guix can build Docker images without requiring Docker, simply by recursively exporting a package along with its dependencies, all the way down to things like the glibc. Here’s how to build a Docker image of Emacs (along with coreutils and bash, so that M-x shell and a couple more things work out of the box): guix environment --ad-hoc emacs-no-x-toolkit coreutils bash guix archive --export -f docker $GUIX_ENVIRONMENT The generated archive can the be loaded with “docker load”. A user can then run Emacs with the usual “docker run … $imageid /bin/emacs” invocation. For simpler packages it would be sufficient to do something like this: guix archive --export -f docker $(guix build the-package) -- Ricardo GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC http://elephly.net From MAILER-DAEMON Fri Jan 06 13:48:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPZYf-0003UQ-Ue for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 13:48:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPZYc-0003Sn-TQ for emacs-devel@gnu.org; Fri, 06 Jan 2017 13:48:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPZYc-0005VN-4g for emacs-devel@gnu.org; Fri, 06 Jan 2017 13:48:06 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:33859) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPZYY-0005NF-CD; Fri, 06 Jan 2017 13:48:02 -0500 Received: by mail-wm0-x242.google.com with SMTP id c85so6979651wmi.1; Fri, 06 Jan 2017 10:48:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=18mMpRDuU2SnPLTQIxH8GZvH1Oy2534f37ZItYA9mdU=; b=V77lbYxU1r6oG+5hF7LcYh4wDmQm2u2C5k9h6Rvh8rzXCBcIy5wx8/xCATNinBU/Iy K8XgJ9RytgtyUbh5T8lNQAWeRYnVASgD0jqn0p6vzNI0jOc2/oVR3DqczrwRWJWcrQ+o IKlvFBtKxdHSTLATFE3ZBPuDLrDuICSFFVot7od0dX8ID4evNpOhaoTMGVpdQLSPW+HO mPWpRgOdsvKWg3FhbjMZuiyJhofNsEAchBr7wg51pfNMp+g9OOUDtgjTZfWv29ZWFCWv 0OYFiilHQHJCRpeWE4FyFbaBv0QPUm+SAF13YVX2CIW0NlY99ji75RVPktIYl30YOv1Y QJng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=18mMpRDuU2SnPLTQIxH8GZvH1Oy2534f37ZItYA9mdU=; b=gV0amliyWuh7UUg1k8+M7HzULGdXYzQM4muqjWACOmsuvpfY5PV13syzOU0cnY/exw xdj4wYPWQRiCoW5Er/64y/R6Wb93BGw1OAP6mB4DJSYHECjtcdfso6DEKUtKj+Xt2ayB XZGk8ci4s+pWcnUs9lS0nj+efr+/W/Od6zibHsEeYPpJ4AaYYYzNyRXdOMGS4yeDMexw j4sHguqhXshEFg/6jqPMU6qszcXKPf4+3dsoQXzwnXy03OB01b9RaoEVCK7/GoAWtpXm 0w7SMaXxjipoQerfnUc9cblbtEXkyQ30v1BFsUqiV4Lk+lcse0zUoYxXdoRA2fp9C7zh AwtQ== X-Gm-Message-State: AIkVDXLJhTAmTdyo46POK3hn7aj+i7R5zOSN626sNOLhN6hb3anML//fFsWaouhlAi82Zg== X-Received: by 10.223.142.111 with SMTP id n102mr2268274wrb.11.1483728479464; Fri, 06 Jan 2017 10:47:59 -0800 (PST) Received: from [192.168.1.3] ([79.100.75.233]) by smtp.gmail.com with ESMTPSA id bf2sm109423388wjc.48.2017.01.06.10.47.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Jan 2017 10:47:58 -0800 (PST) From: Kaloyan Ivanov Message-Id: <937A884C-9174-444B-A56C-BCFB0BF2BFE1@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_7FCCFE57-2D15-4B95-880B-D7677F459068" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: Build is broken on macOS Date: Fri, 6 Jan 2017 20:47:56 +0200 In-Reply-To: <837f69eb5o.fsf@gnu.org> Cc: emacs-devel@gnu.org To: Eli Zaretskii References: <7994F8F9-FB70-42A0-B17A-FB2957A65FC6@gmail.com> <837f69eb5o.fsf@gnu.org> X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 18:48:07 -0000 --Apple-Mail=_7FCCFE57-2D15-4B95-880B-D7677F459068 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 A bit late, but just to confirm - the issue with autogen.sh seems fixed = now. Latest commit 8f0376309ee37e4f1da21d78971c4df2df5fd7b6 builds perfectly = fine on macOS Sierra. > On Jan 5, 2017, at 6:14 PM, Eli Zaretskii wrote: >=20 >> From: Kaloyan Ivanov >> Date: Thu, 5 Jan 2017 12:16:43 +0200 >>=20 >> Commit d88cdad2847726438c7d1de9fd2651c4be9243aa doesn=E2=80=99t build = on macOS >>=20 >> The sed on El Capitan balks at the script constructed in autopen.sh. >> This patch fixes that on macOS, can someone please test it on other = platforms - don=E2=80=99t know if it works there >> as it should. >=20 > Thanks. Your version doesn't do exactly what the Sed script is > supposed to do, at least not on GNU/Linux and on MS-Windows. So > please try the current master and see if the alternative solution I > pushed solves the macOS problem. --Apple-Mail=_7FCCFE57-2D15-4B95-880B-D7677F459068 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 A bit late, but just to confirm - the issue with autogen.sh = seems fixed now.
Latest commit 8f0376309ee37e4f1da21d78971c4df2df5fd7b6 builds = perfectly fine on macOS Sierra.

On = Jan 5, 2017, at 6:14 PM, Eli Zaretskii <eliz@gnu.org> wrote:

From: Kaloyan Ivanov = <klnvnv@gmail.com>
Date: Thu, 5 Jan 2017 = 12:16:43 +0200

Commit = d88cdad2847726438c7d1de9fd2651c4be9243aa doesn=E2=80=99t build on = macOS

The sed on El Capitan balks at the = script constructed in autopen.sh.
This patch fixes that on = macOS, can someone please test it on other platforms - don=E2=80=99t = know if it works there
as it should.

Thanks.  Your version = doesn't do exactly what the Sed script is
supposed to do, = at least not on GNU/Linux and on MS-Windows.  So
please= try the current master and see if the alternative solution I
pushed solves the macOS problem.

= --Apple-Mail=_7FCCFE57-2D15-4B95-880B-D7677F459068-- From MAILER-DAEMON Fri Jan 06 18:34:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPe1M-0006OP-2r for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 18:34:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57979) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPe1J-0006NL-S4 for emacs-devel@gnu.org; Fri, 06 Jan 2017 18:34:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPe1F-0003Fh-Uc for emacs-devel@gnu.org; Fri, 06 Jan 2017 18:34:01 -0500 Received: from smtp202.alice.it ([82.57.200.98]:14599) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPe1F-0003FL-Hv; Fri, 06 Jan 2017 18:33:57 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp202.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 586E1CDD00570534; Sat, 7 Jan 2017 00:33:54 +0100 Subject: Re: Last commit breaks macOS build To: Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> <87eg0h2vaa.fsf@linux-m68k.org> <83vattcn6m.fsf@gnu.org> <83showd43j.fsf@gnu.org> Cc: schwab@linux-m68k.org, rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org From: Angelo Graziosi Message-ID: <72df92d3-af60-1005-fc5e-e039619e1f91@alice.it> Date: Sat, 7 Jan 2017 00:33:40 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <83showd43j.fsf@gnu.org> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.98 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 23:34:02 -0000 Il 06/01/2017 08:45, Eli Zaretskii ha scritto: >> Cc: rcopley@gmail.com, eggert@cs.ucla.edu, emacs-devel@gnu.org >> From: Angelo Graziosi >> Date: Thu, 5 Jan 2017 23:41:56 +0100 >> >> Last commit ( d1d9b376306edb77632968cbbd7dfa456f00046c) builds on macOS, >> MSW and GNU/Linux.. > > Great, thanks for testing. > Yes but, maybe, someone can clarify the following... I see that now autogen.sh prints the message: Inferring nt/gnulib.mk from lib/gnulib.mk ... Now, if I understand, 'nt' should refer to the build on MSW: Why, then, the same message in the build on GNU/Linux and on macOS? TIA, Angelo. From MAILER-DAEMON Fri Jan 06 18:43:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPeAQ-0007x3-1R for mharc-emacs-devel@gnu.org; Fri, 06 Jan 2017 18:43:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPeAO-0007ww-KL for emacs-devel@gnu.org; Fri, 06 Jan 2017 18:43:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPeAN-0000ZC-Ri for emacs-devel@gnu.org; Fri, 06 Jan 2017 18:43:24 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:44420) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPeAK-0000U3-1A; Fri, 06 Jan 2017 18:43:20 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 97F6716004E; Fri, 6 Jan 2017 15:43:17 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id snTQwQ8TF8vY; Fri, 6 Jan 2017 15:43:16 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id A909C16005D; Fri, 6 Jan 2017 15:43:16 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 4utTd5oxMRRc; Fri, 6 Jan 2017 15:43:16 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8C92316004E; Fri, 6 Jan 2017 15:43:16 -0800 (PST) Subject: Re: Last commit breaks macOS build To: Angelo Graziosi , Eli Zaretskii References: <103c5ca4-dba4-9cf1-1c15-535684235be9@alice.it> <1f69c5da-eb8a-740e-873f-4809a04e2d77@alice.it> <8360lteb39.fsf@gnu.org> <51ffb0cd-ce29-e2ae-a1ee-2fc01c299710@alice.it> <831swhe8v7.fsf@gnu.org> <6d04ad51-6ecc-4a01-a8f1-53217f219e38@alice.it> <83zij5cs3d.fsf@gnu.org> <87mvf52wwh.fsf@linux-m68k.org> <83y3ypcql1.fsf@gnu.org> <87inpt2w9m.fsf@linux-m68k.org> <83wpe9cpyc.fsf@gnu.org> <87eg0h2vaa.fsf@linux-m68k.org> <83vattcn6m.fsf@gnu.org> <83showd43j.fsf@gnu.org> <72df92d3-af60-1005-fc5e-e039619e1f91@alice.it> Cc: schwab@linux-m68k.org, rcopley@gmail.com, emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <8cc0ec3d-81b0-df0a-f6a7-9e59d69c8190@cs.ucla.edu> Date: Fri, 6 Jan 2017 15:43:16 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <72df92d3-af60-1005-fc5e-e039619e1f91@alice.it> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2017 23:43:25 -0000 On 01/06/2017 03:33 PM, Angelo Graziosi wrote: > > Now, if I understand, 'nt' should refer to the build on MSW: Why, > then, the same message in the build on GNU/Linux and on macOS? Becuase nt/gnulib.mk is built by the developer with special tools like 'autoconf', not by the builder who merely starts with a tarball and runs 'configure; make' and should not need the special tools. The whole thing is a bit of a mess, and the mess is largely caused by Emacs using Automake, and Automake is needed only because of Gnulib (because Gnulib assumes Automake for portability to older systems lacking GNU Make). I'll look into fixing this so that Gnulib no longer assumes Automake, so that Emacs can stop relying on Automake. Since Emacs assumes GNU Make, it doesn't need Automake (except for the Gnulib code, which I think I can fix). From MAILER-DAEMON Sat Jan 07 02:54:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPlpW-0006gJ-AS for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 02:54:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55658) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPlpT-0006ei-Un for emacs-devel@gnu.org; Sat, 07 Jan 2017 02:54:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPlpQ-0006dP-TH for emacs-devel@gnu.org; Sat, 07 Jan 2017 02:54:20 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43744) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPlpQ-0006dL-QI; Sat, 07 Jan 2017 02:54:16 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1948 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPlpQ-0005lB-0B; Sat, 07 Jan 2017 02:54:16 -0500 Date: Sat, 07 Jan 2017 09:54:37 +0200 Message-Id: <834m1bcnk2.fsf@gnu.org> From: Eli Zaretskii To: Kaloyan Ivanov CC: emacs-devel@gnu.org In-reply-to: <937A884C-9174-444B-A56C-BCFB0BF2BFE1@gmail.com> (message from Kaloyan Ivanov on Fri, 6 Jan 2017 20:47:56 +0200) Subject: Re: Build is broken on macOS Reply-to: Eli Zaretskii References: <7994F8F9-FB70-42A0-B17A-FB2957A65FC6@gmail.com> <837f69eb5o.fsf@gnu.org> <937A884C-9174-444B-A56C-BCFB0BF2BFE1@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 07:54:20 -0000 > From: Kaloyan Ivanov > Date: Fri, 6 Jan 2017 20:47:56 +0200 > Cc: emacs-devel@gnu.org > > A bit late, but just to confirm - the issue with autogen.sh seems fixed now. Thanks for the confirmation. From MAILER-DAEMON Sat Jan 07 04:40:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPnUJ-0002cU-AD for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 04:40:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPnUG-0002c6-BC for emacs-devel@gnu.org; Sat, 07 Jan 2017 04:40:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPnUD-0006no-3x for emacs-devel@gnu.org; Sat, 07 Jan 2017 04:40:32 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:45480) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPnUD-0006nk-0L; Sat, 07 Jan 2017 04:40:29 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2124 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cPnUC-0007Qi-9b; Sat, 07 Jan 2017 04:40:28 -0500 Date: Sat, 07 Jan 2017 11:40:49 +0200 Message-Id: <83tw9bb42m.fsf@gnu.org> From: Eli Zaretskii To: raeburn@raeburn.org CC: emacs-devel@gnu.org In-reply-to: <83y3z2wphb.fsf@gnu.org> (message from Eli Zaretskii on Mon, 26 Dec 2016 19:48:48 +0200) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <871szqwu51.fsf@users.sourceforge.net> <831szqhbc2.fsf@gnu.org> <87d1itt79z.fsf_-_@users.sourceforge.net> <7baa18d4-2b09-caa8-005e-29008a383ad1@cs.ucla.edu> <83mvhwrgd5.fsf@gnu.org> <8539f38f-9a11-44c3-4de7-bb974c96206c@cs.ucla.edu> <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 09:40:33 -0000 Ken, I tried to get rid of calling dump-emacs in the raeburn-startup branch, see the changes below. The resulting code builds and produces dumped.elc, but then fails to compile the *.el files: ... Loading d:/gnu/git/emacs/no-unexec/lisp/leim/leim-list.el (source)... Finding pointers to doc strings... Finding pointers to doc strings...done Dumping under the name emacs Dumping into dumped.elc...preparing... Dumping into dumped.elc...generating... Dumping into dumped.elc...printing... Dumping into dumped.elc...saving... Dumping into dumped.elc...done mv -f emacs.exe bootstrap-emacs.exe make -C ../lisp compile-first EMACS="../src/bootstrap-emacs.exe" make[2]: Entering directory `/d/gnu/git/emacs/no-unexec/lisp' ELC emacs-lisp/macroexp.elc Loading ../src/dumped.elc... Multiple args to , are not supported: ((\, (quote set-window-parameter)) temp (\, (quote set-window-parameter)) end) ELC emacs-lisp/cconv.elc Loading ../src/dumped.elc... Multiple args to , are not supported: ((\, (quote set-window-parameter)) temp (\, (quote set-window-parameter)) end) This could be related to the fact that the original code produced the first dumped.elc in the top-level directory, not in src/, and I needed to fix that, since otherwise bootstrap-emacs would exit immediately (see the changes below). In the original version, src/dumped.elc was only produced after all the necessary Lisp files were byte-compiled already. So it seems like the current build process on this branch still somehow depends on a dumped emacs executable, until it byte-compiles all the preloaded Lisp files, and produces dumped.elc from that. IOW, the first dumped.elc produced before byte-compiling those files is not up to the job of running Emacs for byte-compiling Lisp files. How can we fix that, so that unexec and its call can be really removed from the sources? Or did I miss something? Thanks. diff --git a/lisp/loadup.el b/lisp/loadup.el index 54d19c1..873d804 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -453,27 +453,30 @@ ;; confused people installing Emacs (they'd install the file ;; under the name `xemacs'), and it's inconsistent with every ;; other GNU program's build process. - (dump-emacs "emacs" "temacs") - (message "%d pure bytes used" pure-bytes-used) - ;; Recompute NAME now, so that it isn't set when we dump. - (if (not (or (eq system-type 'ms-dos) - ;; Don't bother adding another name if we're just - ;; building bootstrap-emacs. - (equal (last command-line-args) '("bootstrap")))) - (let ((name (concat "emacs-" emacs-version)) - (exe (if (eq system-type 'windows-nt) ".exe" ""))) - (while (string-match "[^-+_.a-zA-Z0-9]+" name) - (setq name (concat (downcase (substring name 0 (match-beginning 0))) + ;; (dump-emacs "emacs" "temacs") + ;; (message "%d pure bytes used" pure-bytes-used) + (let ((exe (if (memq system-type '(windows-nt ms-dos)) ".exe" ""))) + (copy-file (expand-file-name (concat "temacs" exe) invocation-directory) + (expand-file-name (concat "emacs" exe) invocation-directory) + t) + ;; Recompute NAME now, so that it isn't set when we dump. + (if (not (or (eq system-type 'ms-dos) + ;; Don't bother adding another name if we're just + ;; building bootstrap-emacs. + (equal (last command-line-args) '("bootstrap")))) + (let ((name (concat "emacs-" emacs-version))) + (while (string-match "[^-+_.a-zA-Z0-9]+" name) + (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) - (setq name (concat name exe)) - (message "Adding name %s" name) - ;; When this runs on Windows, invocation-directory is not - ;; necessarily the current directory. - (add-name-to-file (expand-file-name (concat "emacs" exe) - invocation-directory) - (expand-file-name name invocation-directory) - t))) + (setq name (concat name exe)) + (message "Adding name %s" name) + ;; When this runs on Windows, invocation-directory is not + ;; necessarily the current directory. + (add-name-to-file (expand-file-name (concat "emacs" exe) + invocation-directory) + (expand-file-name name invocation-directory) + t)))) (message "Dumping into dumped.elc...preparing...") ;; Dump the current state into a file so we can reload it! @@ -555,6 +558,7 @@ obarray) (message "Dumping into dumped.elc...printing...") (with-current-buffer (generate-new-buffer "dumped.elc") + (setq default-directory invocation-directory) (insert ";ELC\^W\^@\^@\^@\n;;; Compiled\n;;; in Emacs version " emacs-version "\n") (let ((print-circle t) From MAILER-DAEMON Sat Jan 07 05:29:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPoFA-0003AD-8Z for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 05:29:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44789) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPoF8-00039v-Ht for emacs-devel@gnu.org; Sat, 07 Jan 2017 05:28:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPoF4-0006Pa-KB for emacs-devel@gnu.org; Sat, 07 Jan 2017 05:28:58 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:57732) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPoF4-0006PE-9L; Sat, 07 Jan 2017 05:28:54 -0500 Received: from eskebo.homelinux.merten-home.de ([94.222.143.176]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.129]) with ESMTPSA (Nemesis) id 0LnGP8-1cyLaH2ItK-00hb0o; Sat, 07 Jan 2017 11:28:51 +0100 Received: by eskebo.homelinux.merten-home.de (Postfix, from userid 1000) id 0915FC0135; Sat, 7 Jan 2017 11:28:50 +0100 (CET) From: Stefan Merten To: Glenn Morris cc: emacs-devel@gnu.org Subject: Emacs versions for rst.el (was: Re: master 9ed3685: Lots of refactorings and a few minor improvements.) In-reply-to: References: <20170103221540.4171.87517@vcs.savannah.gnu.org> <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> Comments: In-reply-to Glenn Morris message dated "Wed, 04 Jan 2017 13:30:14 -0500." X-Mailer: MH-E 8.6; nmh 1.6; GNU Emacs 24.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <19152.1483784930.1@eskebo.fritz.box> Date: Sat, 07 Jan 2017 11:28:50 +0100 Message-ID: <19153.1483784930@eskebo.fritz.box> X-Provags-ID: V03:K0:PBP3Rk14J4YioDV7PAETtsnKg0O7hePz03ZvklHs08gMmuMo5WK y4gNxEAdOZrhh+RMipIZydfzzrCCEa+KSKMjCIaADTg/A7PmL1aexzMbnhf8Tw7KcD5ZEoq 3uqzpZFMlouqqn4Mnx+QvKUyTdxFOrIrxeMOJPVyqxxvZy4EGUJ5KQH2AQy26fQmUfo0ZPN Zt4zdQ/4iuXwptG3+Uxqg== X-UI-Out-Filterresults: notjunk:1;V01:K0:8JuFZwrxogI=:O8fN3cyCgaXFTnI4P0VvCZ bhSI4ZfAhK0MoU+DaS5r5qYgSq6fSuHMVl6dkvvSvuzI5gaSoARLc7kHJcZpEvQjPOuFqqMth ww/Pykdjd7JDoHW+7XWgXwoHJ6R6Qv+xi90Di0tG0LcQyw515FCh02gLX1i8BhL0WjkimKFxw 1LjIY5jhb3aEJFCheSPiXz5zE3u4VRS0Fn42mwZ1FH9NFJmQiYQaIWEwdkNDJNZt0djuZdUXM BsUj+vDMh0jnAXOnjXwwkoTT7S0KZg22LZIvoTPQhNC6xcaH3KN1RAymFavo5Fzjd3DaJDT/O zNwx0v1tRNQNrmK42ubN4JXu+Vak/KELsmAKmL0Q0Ri5Uf/4URdgYQo2QciT4AU3aZ3D7EtmN AxyWNpD9IFBwpQpGKXLuNSwrMGSs3liycT/DvtQhZBk/WAQ3Rw0q8Ot+1KS4fMzzRFbLR5qxD FCTfp0VJAUI2w1C0LT/LN5B/8keK1dnwh/EKNEI2MsDRnKVqmZpF/R8pBEYdT3iStQnGyq0zU n5MGG9COw2b21kDlcMZArZ7YblFEhhJoktvKKRH6Vq3Z+7EnM8CodNSgT+AbKBxkBpqgT7bWz yJW870PguaoMN+7Joewq2AtFLxKJ9e1j34abh1Jl6UYIW+Xi1NdNSs243fL6uBYwV+WTwP0Yp GaWQgAFmWUihjHfWfl8Qm4daYJsBqwi2SGFuimL+wN/kWB7Mni3587+ywITZJzwRWwra7XXiH l3/cdS/yS7ZD1D7r X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 10:28:59 -0000 Hi Glenn! 3 days ago Glenn Morris wrote: >> branch: master >> commit 9ed3685a778843cbc0df3ca2490f79eb4e2ebefe >> Author: Stefan Merten >> Commit: Stefan Merten > > [In rst-package-emacs-version-alist:] > >> + ("1.5.1" . "26.2") > > > Hi - don't you want 26.1 there? > > I also note that Emacs 25.1 seems to contain 1.4.1, and 24.5 1.4.0, > which does not seem to agree with the above alist either? I'm not following Emacs releases and so what I put in there is more or less a rough guess. When I commit something to the Emacs `master` then I'm convinced that it should go into the next available release. However, I do not know when which release is prepared and what commit may go in and which not. Some time ago I understood this is a complicated processes with deadlines and the like and I happily leave this up to the Emacs community :-) . HTH Stefan From MAILER-DAEMON Sat Jan 07 05:46:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPoVy-0007tl-0i for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 05:46:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52286) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPoVu-0007tA-Sn for Emacs-devel@gnu.org; Sat, 07 Jan 2017 05:46:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPoVo-0007R8-Jt for Emacs-devel@gnu.org; Sat, 07 Jan 2017 05:46:18 -0500 Received: from mout.kundenserver.de ([217.72.192.74]:64876) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPoVo-0007Qp-9O for Emacs-devel@gnu.org; Sat, 07 Jan 2017 05:46:12 -0500 Received: from eskebo.homelinux.merten-home.de ([94.222.143.176]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.145]) with ESMTPSA (Nemesis) id 0LvQBP-1cZGRK2083-010gBX; Sat, 07 Jan 2017 11:45:57 +0100 Received: by eskebo.homelinux.merten-home.de (Postfix, from userid 1000) id 86580C0135; Sat, 7 Jan 2017 11:45:55 +0100 (CET) From: Stefan Merten To: Paul Eggert cc: Tino Calancha , Kaushal Modi , Emacs Development Subject: Refactoring in rst.el (was: Re: [Emacs-diffs] master 9ed3685a77: Lots of refactorings and a few minor improvements.) In-reply-to: <28fe59fd-191f-64c0-2333-7462403d976c@cs.ucla.edu> References: <492.1483523991@eskebo.fritz.box> <4331.1483545171@eskebo.fritz.box> <28fe59fd-191f-64c0-2333-7462403d976c@cs.ucla.edu> Comments: In-reply-to Paul Eggert message dated "Wed, 04 Jan 2017 10:23:10 -0800." X-Mailer: MH-E 8.6; nmh 1.6; GNU Emacs 24.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Sat, 07 Jan 2017 11:45:55 +0100 Message-ID: <19306.1483785955@eskebo.fritz.box> X-Provags-ID: V03:K0:3Hnd9j/QZWXUCNGPleqrfDUm+ile2AJ4ZexEhPd2uaTvcWEb7PW 28JRz7z0/RbpoUI3V1QDH4uVTMG5QZ3cQdfmxu2/s7sIuLz+iBSj5doqVBBGVApkkZdhWU9 rrJ46u6BDthqZB6LP06tJFjjmukDFNBuYWeMtQPjVixFqZbVWmSwDlG4TIoszi8TmXyDBli z2tb7qVnU2TADlqcu1fDw== X-UI-Out-Filterresults: notjunk:1;V01:K0:A71u7IUxZoo=:dAeSGQ8vtn//ccyyGNl0w5 Z3+UdXBFw4f0MzIreYxzxeLA+1Sl3C8xl/f4xTdauNrSQrPL7881oaCN3h7wrR33Bgunc1FbP xDaL65JVuK+w3X5m6yIJM25NMpMoeeJTETFW+n4g4WY9RE6PtQNpp4lizBWUBY+D0C+x5NyTU Ifd0AB3C/ZiviJXOmWrpGDwwjzfRAsdLQgQiNJDDh26UxlOmVxU+H6soxU/Un/jnWJYUU4S+C pOOjq0HEA0GeshDm4fBqAlpjrWnIhd3aJ5Vn2lYsVCgkUqGZyQ+RD7d86Ekv0RT6jAA4zs2ja 4pnwKCiwmhuL6o49Zczji0Q625iZFoKi6NyOXyAUNBFSAs2n4vM011Vto+ySzwm/YG4Gx2rbI z5UqtiofaMP28b6Q/7SIk/4e9kLSGymt+XbbYEjDGTHJYuruiskaFox44YApCzGssgD0GhZTw 59B9Vrd4ze0g6T7vSw4wVJJDNHpdfdkeKNCC5817qCQb1lS1AMmTXfuIB/wqFn29qIgL5dvwE QuDqG/JcQhiDw8RBSE/y2WsPtKDeuGuu231lB0Wlvnd9KCyiiVvKUciJ427PcKyAjE+2G0ryl /xWNaOefagJoxa6/bMfCEipTOSLYgNF2jYxx3fXipDc6KIlH6ZF5g35kBg8im2VIPzOPIupvR HO9sjlXIkAiMKlkChYyCfLOzDOvHBxlSQ4KVXAnReQ705KgnTTjxrdenf+nATOJNXsKR3xiZ0 DBL6Neh3CqH49Xyd X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.74 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 10:46:20 -0000 Hi Paul! 3 days ago Paul Eggert wrote: > Stefan Merten wrote: >> I got the impression, that lately few people care about these rules >=20 > I'm afraid that impression is incorrect. Many developers care (hence > this thread :-). Thanks for reassuring. As you can see in the log I once did care but this time thought it is no longer worth the hassle. >> I hope the commit message below is what you require. >=20 > Much better, thanks. My main problem with it is that "Refactor by > removing old functions, introducing new functions and change existing > functions" is too vague. Please write for an audience that includes > people who have code that calls (say) rst-comment-region and want to > know how to adjust the code after your changes to the API. Which raises the question what the API of `rst.el` is. So far I was convinced that nobody will use any function from `rst.el` - so I'd think that nobody is impacted by refactoring even if I change signatures of functions. Of course I may be wrong. Apart from that I'd think the interactive functions are the *real* interface of `rst.el` which is interesting. Refactoring, however, by definition does not impact this behavior. Debugging and those minor changes in behavior which I did during refactoring I did document, however. Where key bindings are impacted I defined aliases for renamed functions so older key bindings should continue to work. In other languages you have this public / private concept. I remember that in Emacs you started using a double dash in identifiers to mark them private. For example rst-comment-region would be part of the public interface, while rst--comment-region would be an internal function not meant for public use. Is that correct? Are the examples valid? If so, I'd probably like to mark internal functions this way. That would be a good idea IMHO. Gr=FC=DFe Stefan From MAILER-DAEMON Sat Jan 07 06:43:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPpPH-0004eu-IC for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 06:43:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPpPF-0004em-Kh for emacs-devel@gnu.org; Sat, 07 Jan 2017 06:43:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPpPC-00072J-Hh for emacs-devel@gnu.org; Sat, 07 Jan 2017 06:43:29 -0500 Received: from [195.159.176.226] (port=46093 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cPpPC-00071u-CG for emacs-devel@gnu.org; Sat, 07 Jan 2017 06:43:26 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cPpP2-0002Th-3b for emacs-devel@gnu.org; Sat, 07 Jan 2017 12:43:16 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: message.el and mml-secure-bcc-is-safe Date: Sat, 07 Jan 2017 12:43:06 +0100 Lines: 12 Message-ID: <87tw9b9jud.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:xHtOob/J1Try33NsJkb1xVd5apg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 11:43:30 -0000 I'd like to manipulate the mml tags on the message inside the 'message-send-hook depending on the recipient. By reading though message.el, this seems to be possible as the hook is ran early enough. However, I notice that (mml-secure-bcc-is-safe) is called before the hook. If I plan to modify the tags, it actually makes sense to run it just afterwards instead so that it checks the final headers and tags. Could we move (mml-secure-bcc-is-safe) just after the hook? It makes more sense to me, unless there's some specific reason to do so. From MAILER-DAEMON Sat Jan 07 12:19:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPudz-0003QO-PH for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 12:19:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41258) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPudx-0003PL-VG for Emacs-devel@gnu.org; Sat, 07 Jan 2017 12:19:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPudt-0008UE-Vm for Emacs-devel@gnu.org; Sat, 07 Jan 2017 12:19:01 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:54772) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPudt-0008Tt-Ox for Emacs-devel@gnu.org; Sat, 07 Jan 2017 12:18:57 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 4305916007F; Sat, 7 Jan 2017 09:18:56 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id thUJ9tl6zSy2; Sat, 7 Jan 2017 09:18:55 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 844B2160084; Sat, 7 Jan 2017 09:18:55 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Lu1IighHrH6B; Sat, 7 Jan 2017 09:18:55 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.178.162]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 5CC1516007F; Sat, 7 Jan 2017 09:18:55 -0800 (PST) Subject: Re: Refactoring in rst.el To: Stefan Merten References: <492.1483523991@eskebo.fritz.box> <4331.1483545171@eskebo.fritz.box> <28fe59fd-191f-64c0-2333-7462403d976c@cs.ucla.edu> <19306.1483785955@eskebo.fritz.box> Cc: Tino Calancha , Kaushal Modi , Emacs Development From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <95b7096e-9a9d-f0c9-54b4-9f7850ca676c@cs.ucla.edu> Date: Sat, 7 Jan 2017 09:18:52 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <19306.1483785955@eskebo.fritz.box> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 17:19:02 -0000 Stefan Merten wrote: > Which raises the question what the API of `rst.el` is. When in doubt, document the change in the ChangeLog. > I remember > that in Emacs you started using a double dash in identifiers to mark > them private. Yes. The part in front of the double-dash is the module name. > If so, I'd probably like to mark internal functions this way. That > would be a good idea IMHO. Yes, that's a reasonable change. It'd be a change to the API, and should be documented in the ChangeLog and in any other documentation to the package. After that happens, it's a good idea to document even changes to the internal API, for benefit of those maintaining the code in question. From MAILER-DAEMON Sat Jan 07 17:02:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPz49-0004ZR-Db for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 17:02:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50769) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPz45-0004Z9-Qd for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:02:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPz42-0002nF-N4 for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:02:17 -0500 Received: from relay5-d.mail.gandi.net ([2001:4b98:c:538::197]:52189) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cPz42-0002lm-GI for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:02:14 -0500 Received: from mfilter41-d.gandi.net (mfilter41-d.gandi.net [217.70.178.173]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id ECD5741C097; Sat, 7 Jan 2017 23:02:12 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mfilter41-d.gandi.net Received: from relay5-d.mail.gandi.net ([IPv6:::ffff:217.70.183.197]) by mfilter41-d.gandi.net (mfilter41-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id N0HsadHmLwhu; Sat, 7 Jan 2017 23:02:11 +0100 (CET) X-Originating-IP: 188.97.129.96 Received: from [192.168.3.110] (dslb-188-097-129-096.188.097.pools.vodafone-ip.de [188.97.129.96]) (Authenticated sender: forum@alexander.shukaev.name) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id E354D41C090; Sat, 7 Jan 2017 23:02:10 +0100 (CET) Subject: Re: CC Mode version number for Emacs 25.2 To: Alan Mackenzie References: <20161218161335.GA30217@acm.fritz.box> <96d507b2-3e3b-0cad-31e6-1fcb0e110ffc@Alexander.Shukaev.name> <949b8c43-eb42-60fe-5b0c-5cf2a98d7839@Alexander.Shukaev.name> <20161222163427.GA10987@acm.fritz.box> Cc: emacs-devel@gnu.org From: Alexander Shukaev Message-ID: <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> Date: Sat, 7 Jan 2017 23:02:10 +0100 MIME-Version: 1.0 In-Reply-To: <20161222163427.GA10987@acm.fritz.box> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4b98:c:538::197 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 22:02:20 -0000 On 12/22/2016 05:34 PM, Alan Mackenzie wrote: > Hello, Alexander. > > On Thu, Dec 22, 2016 at 12:08:21AM +0100, Alexander Shukaev wrote: >> On 12/20/2016 12:13 AM, Alexander Shukaev wrote: >>> On 12/18/2016 05:13 PM, Alan Mackenzie wrote: >>>> Hello, Emacs. > >>>> The version of CC Mode within Emacs 25.1 is 5.33. This is unfortunate, >>>> since that version is at a much earlier stage of development than the >>>> standalone CC Mode release 5.33. > >>>> This conflict in the use of "5.33" has led to some confusion amongst >>>> people reporting bugs. > >>>> I would thus like to change the version number in Emacs 25.2 to >>>> "5.32.99", to minimise further confusion. I think it would be best to >>>> make an entry about this in NEWS, too. Incidentally, the actual code in >>>> CC Mode in the Emacs 25 has not changed since the realease of 25.1. > >>>> Does anybody have any objections to this renumbering? > > >>> Hi, > >>> How to actually install this up-to-date version through 'package.el'? > >>> Regards, >>> Alexander > > >> Did my mail get lost or? > > Sorry, just got a bit distracted by other things for a day or two. > > CC Mode is not available through package.el. There's either the version > in an Emacs release (which is frozen at pretest time, typically several > months before the release), or there's the stand alone version (which can > be any age) available from http://cc-mode.sourceforge.net/. The latest > stand alone version, 5.33, was released in August 2016. > > Alternatively, you can use the head of the VCS repository either at > savannah (for the entire Emacs version) or at sourceforge (for just CC > Mode). > Hello Alan, To me that looks like a major problem. It means that I have three options to keep track of your package: 1. Install it manually by copying corresponding '*.el' files into my Emacs configuration repository and shadow `load-path' on my own properly. 2. Make your repository to be a submodule of mine (what does not work for me since you are using Mercurial, while I use Git) and shadow `load-path' on my own properly. 3. Use `el-get' to do that management for me. All of these I find unacceptable: #1 smells like 90's (or earlier), #2 already mentioned, #3 requires another dependency that I don't want to deal with at the moment. All of that brings up a simple question: why such a widespread and useful package is not packaged on MELPA and other popular online archives? Kind regards, Alexander From MAILER-DAEMON Sat Jan 07 17:40:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cPzf3-00045i-6J for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 17:40:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cPzf0-00045V-Pg for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:40:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cPzex-00013b-K8 for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:40:26 -0500 Received: from gproxy2-pub.mail.unifiedlayer.com ([69.89.18.3]:43039) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cPzex-0000kz-88 for emacs-devel@gnu.org; Sat, 07 Jan 2017 17:40:23 -0500 Received: (qmail 1723 invoked by uid 0); 7 Jan 2017 22:40:03 -0000 Received: from unknown (HELO cmgw3) (10.0.90.84) by gproxy2.mail.unifiedlayer.com with SMTP; 7 Jan 2017 22:40:03 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id Vafx1u0092f2jeq01ag02S; Sat, 07 Jan 2017 15:40:03 -0700 X-Authority-Analysis: v=2.1 cv=YpOcGeoX c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=4nXyJo8MRZXKlb7mYUcA:9 a=Nl9A1IP8OdsA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=R2pzl+r18esv3Tx2R0QVzAb5hlH/THQqOuZMqoo10Ns=; b=TD2MmfKVIF1Fijx7T+TgzeODrz GtOAC305v0vAG6ShZkAfOS/5q7+LrBKvmpW1Awt3BPyYXdoLg5YbZJRwdI+YF6E7GgXvnSC1eBzni zTO44KTtMKbezr34Z1GI3lzWh; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:50218 helo=bapiya) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.86_1) (envelope-from ) id 1cPzeX-0005nA-5g; Sat, 07 Jan 2017 15:39:57 -0700 From: Tom Tromey To: Steve Purcell Cc: emacs-devel@gnu.org Subject: Re: Problem with new cl-lib 0.6 in ELPA References: Date: Sat, 07 Jan 2017 15:39:56 -0700 In-Reply-To: (Steve Purcell's message of "Fri, 6 Jan 2017 17:23:02 +1300") Message-ID: <87a8b2335v.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cPzeX-0005nA-5g X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (bapiya) [174.16.146.181]:50218 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 69.89.18.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 22:40:27 -0000 Steve> The new cl-lib version now declares a package dependency on Emacs Steve> 21, which actually renders it completely uninstallable in Emacs < Steve> 24, since the only versions of package.el usable in Emacs 23.x Steve> have no concept of built-in packages like "emacs". Something is weird here, because "emacs" as a package was in package.el at the very beginning. This is also documented in (info "(elisp) Library Headers") Tom From MAILER-DAEMON Sat Jan 07 18:20:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQ0HT-0002f1-Hg for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 18:20:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ0HR-0002cq-QX for emacs-devel@gnu.org; Sat, 07 Jan 2017 18:20:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQ0HQ-000801-SY for emacs-devel@gnu.org; Sat, 07 Jan 2017 18:20:09 -0500 Received: from mail-ua0-x22f.google.com ([2607:f8b0:400c:c08::22f]:36400) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQ0HO-0007tq-D8; Sat, 07 Jan 2017 18:20:06 -0500 Received: by mail-ua0-x22f.google.com with SMTP id 96so11324555uaq.3; Sat, 07 Jan 2017 15:20:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=lJdARRYe1rkfM//abLWH9F4okG+ld0LratZINOeDYOw=; b=kRvw4tvr28dY2qFdR+QZH+DTEJLkvcMBn2huuq11G4eRtIO/I0jRIJoPD2riOdZJRp +9+OlzADiujbTa3eJOnkor9NcAOmSxJ4tobvK+5VQVPpTcs+A/whjf4sv2cfTAnWd/r5 IK+m5SFpdW0mvafP/C7i9Ge/Fxg3ie6PDoasMMNLLi9Xn6qgCX7XzQaBYHIBEsq/H452 IEt1K9mGFZLSXrAQqpLhC9REMoJEYcGuRXSJfOLtIZT+7t7/+iObekQYm4t5ZyrD8C2X uGoE+c7sxjH5inCPi33qQQ1HymIu3Arn0/ASQQcgbN3HQcYEIr39otMSdr/PBrcjkco1 wHFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=lJdARRYe1rkfM//abLWH9F4okG+ld0LratZINOeDYOw=; b=RcD6AfaNM3bCwygAA/VKU3SFTXVFtNBMcVdRt17evN2ljtUihEx/Li9+SYlubfCz3j RfzmD/ZI1SwfHcIP7m+QhWs60ejqQK5ZCTVS9gRf/NH0jhVTVM3/HSX/iyM2aCEjbK8W I82fvg7mnz8CspqpCu3rdJlQ/Q/NiNnPCAtRSnQEnefI2a+201IOLGpVUre66WWrkA6m QcTWF9sACgEiX1/SQ1tG4qulqz2djUMZ/WeWnsqgfhkyVb6gK+JqjIIhWl13m14ZQivs 2kj234VtHsxPrcW55KnXSKQ9jLN1w530nTBU8KZ3S9P5ksvvVsYyed9bKJ4GhDjI6EOG Kykg== X-Gm-Message-State: AIkVDXIIhxCtDvwJH2NNYVB0sDKGNGjjnWjqHVz9OhonGg93tbdeu/jaQ/kWZSIiZAmT+AnLjfAfLzvWmwSwdg== X-Received: by 10.176.23.89 with SMTP id k25mr44975890uaf.49.1483831203728; Sat, 07 Jan 2017 15:20:03 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.125.9 with HTTP; Sat, 7 Jan 2017 15:19:33 -0800 (PST) In-Reply-To: <87wpe8chbx.fsf@elephly.net> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87mvfbzrfa.fsf@elephly.net> <87inpzyww9.fsf@elephly.net> <87wpe8chbx.fsf@elephly.net> From: Philippe Vaucher Date: Sun, 8 Jan 2017 00:19:33 +0100 Message-ID: Subject: Re: official Emacs Docker image To: Ricardo Wurmus Cc: =?UTF-8?Q?Elias_M=C3=A5rtenson?= , John Wiegley , Richard Stallman , emacs-devel Content-Type: multipart/alternative; boundary=f40304361e12ce129b0545895ff5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 23:20:10 -0000 --f40304361e12ce129b0545895ff5 Content-Type: text/plain; charset=UTF-8 > > Since commit 03476a23f Guix can build Docker images without requiring > Docker, simply by recursively exporting a package along with its > dependencies, all the way down to things like the glibc. > That is very interesting! Thank you for mentionning that. Philippe --f40304361e12ce129b0545895ff5 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Since commit 03476a23f Guix c= an build Docker images without requiring
Docker, simply by recursively exporting a package along with its
dependencies, all the way down to things like the glibc.

That is very interesting! Thank you for mentionning that.=

Philippe
--f40304361e12ce129b0545895ff5-- From MAILER-DAEMON Sat Jan 07 18:54:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQ0ow-0000P5-16 for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 18:54:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ0ot-0000Oo-VT for emacs-devel@gnu.org; Sat, 07 Jan 2017 18:54:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQ0oq-0004FE-U8 for emacs-devel@gnu.org; Sat, 07 Jan 2017 18:54:44 -0500 Received: from purcellpeople.com ([85.214.32.38]:34084 helo=h1189701.stratoserver.net) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQ0oq-0004AJ-Nb for emacs-devel@gnu.org; Sat, 07 Jan 2017 18:54:40 -0500 Received: from [100.104.150.48] (115-189-98-11.mobile.spark.co.nz [115.189.98.11]) by h1189701.stratoserver.net (Postfix) with ESMTPSA id 8E33627AC09D; Sun, 8 Jan 2017 00:54:32 +0100 (CET) Date: Sun, 08 Jan 2017 12:54:19 +1300 Subject: Re: Problem with new cl-lib 0.6 in ELPA Message-ID: X-Android-Message-ID: From: Steve Purcell To: Tom Tromey Cc: emacs-devel@gnu.org Importance: Normal X-Priority: 3 X-MSMail-Priority: Normal MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 85.214.32.38 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jan 2017 23:54:45 -0000 PGRpdiBkaXI9J2F1dG8nPjxkaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48ZGl2IGNs YXNzPSJnbWFpbF9xdW90ZSI+T24gOC8wMS8yMDE3IDExOjM5IEFNLCBUb20gVHJvbWV5ICZsdDt0 b21AdHJvbWV5LmNvbSZndDsgd3JvdGU6PGJyIHR5cGU9ImF0dHJpYnV0aW9uIj48YmxvY2txdW90 ZSBjbGFzcz0icXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHgg I2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48cCBkaXI9Imx0ciI+U3RldmUmZ3Q7IFRoZSBu ZXcgY2wtbGliIHZlcnNpb24gbm93IGRlY2xhcmVzIGEgcGFja2FnZSBkZXBlbmRlbmN5IG9uIEVt YWNzCjxicj4KU3RldmUmZ3Q7IDIxLCB3aGljaCBhY3R1YWxseSByZW5kZXJzIGl0IGNvbXBsZXRl bHkgdW5pbnN0YWxsYWJsZSBpbiBFbWFjcyAmbHQ7Cjxicj4KU3RldmUmZ3Q7IDI0LCBzaW5jZSB0 aGUgb25seSB2ZXJzaW9ucyBvZiBwYWNrYWdlLmVsIHVzYWJsZSBpbiBFbWFjcyAyMy54Cjxicj4K U3RldmUmZ3Q7IGhhdmUgbm8gY29uY2VwdCBvZiBidWlsdC1pbiBwYWNrYWdlcyBsaWtlICJlbWFj cyIuCjxicj4KCjxicj4KU29tZXRoaW5nIGlzIHdlaXJkIGhlcmUsIGJlY2F1c2UgImVtYWNzIiBh cyBhIHBhY2thZ2Ugd2FzIGluIHBhY2thZ2UuZWwKPGJyPgphdCB0aGUgdmVyeSBiZWdpbm5pbmcu Jm5ic3A7IFRoaXMgaXMgYWxzbyBkb2N1bWVudGVkIGluIAo8YnI+CihpbmZvICIoZWxpc3ApIExp YnJhcnkgSGVhZGVycyIpPGJyPjwvcD48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9kaXY+PGRp diBkaXI9ImF1dG8iPjxicj48L2Rpdj48ZGl2IGRpcj0iYXV0byI+SSdtIG5vdCBhd2FyZSB0aGF0 IHRoZXJlIGlzIGFueSB2ZXJzaW9uIG9mIHBhY2thZ2UuZWwgY29tcGF0aWJsZSB3aXRoIDIzLjQg d2hpY2ggc3VwcG9ydHMgYm90aCBtdWx0aXBsZSBhcmNoaXZlcyBhbmQgdGhlICJlbWFjcyIgcHNl dWRvLXBhY2thZ2UuPC9kaXY+PGRpdiBkaXI9ImF1dG8iPjxicj48L2Rpdj48ZGl2IGRpcj0iYXV0 byI+VGhlIHByb2JsZW0gcmVwb3J0ZWQgb24gdGhpcyB0aHJlYWQgb2NjdXJyZWQgaW4gdGhlIGNv bnRleHQgb2YgYSBUcmF2aXMgYnVpbGQgb24gMjMuNCB3aGljaCB1c2VkIHRoZSBtb3N0IHJlY2Vu dCBwYWNrYWdlLmVsIGZyb20gdGhlIGVtYWNzIHRyZWUga25vd24gdG8gYmUgY29tcGF0aWJsZSB3 aXRoIHRoYXQgb2xkZXIgRW1hY3MgdmVyc2lvbi4gVGhlIGpvYiBmYWlsdXJlIHJlcG9ydGVkIHRo YXQgdGhlIHBhY2thZ2UgZW1hY3MtMjEgd2FzIHVuYXZhaWxhYmxlOjwvZGl2PjxkaXYgZGlyPSJh dXRvIj48YnI+PC9kaXY+PGRpdiBkaXI9ImF1dG8iPmh0dHBzOi8vdHJhdmlzLWNpLm9yZy9wdXJj ZWxsL2VtYWNzLmQvam9icy8xODk0MTA0MTY8YnI+PC9kaXY+PGRpdiBkaXI9ImF1dG8iPjxicj48 L2Rpdj48ZGl2IGRpcj0iYXV0byI+SGVyZSdzIHRoZSBwYWNrYWdlLmVsIHZlcnNpb24gaW4gcXVl c3Rpb246Jm5ic3A7aHR0cDovL3JlcG8ub3IuY3ovdy9lbWFjcy5naXQvYmxvYl9wbGFpbi9iYTA4 YjI0MTg2NzExZWFlYjM3NDhmM2QxZjIzZTJjMmQ5ZWQwZDA5Oi9saXNwL2VtYWNzLWxpc3AvcGFj a2FnZS5lbDwvZGl2PjxkaXYgZGlyPSJhdXRvIj48YnI+PC9kaXY+PGRpdiBkaXI9ImF1dG8iPkl0 J3MgYW4gdW5mb3J0dW5hdGUgc2l0dWF0aW9uLCBiZWNhdXNlIHdlJ2QgZWl0aGVyIGhhdmUgdG8g YmFja3BvcnQgYSBiZXR0ZXIgcGFja2FnZS5lbCwgb3Igd2UgbXVzdCBjb250aW51ZSB0byBhdm9p ZCBhZGRpbmcgc3VjaCBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGRlcGVuZGVuY2llcyB0byB0aGUg ZXh0ZW50IHdlIGNhcmUgYWJvdXQgMjMueC4gKHBhY2thZ2UuZWwgYWxyZWFkeSBoYXMgYXQgbGVh c3Qgb25lIG90aGVyIHVuZm9ydHVuYXRlIGNvbXBhdGliaWxpdHkgcXVpcmssIGluIHRoYXQgcmVj ZW50IHZlcnNpb25zIGFsbG93IHRoZSB2ZXJzaW9uIG51bWJlciB0byBiZSBvbWl0dGVkIGluIFBh Y2thZ2UtUmVxdWlyZXMgaGVhZGVycywgd2hpbGUgb2xkZXIgdmVyc2lvbnMgY29uc2lkZXIgdGhh dCBpbnZhbGlkLik8L2Rpdj48L2Rpdj4= From MAILER-DAEMON Sat Jan 07 20:51:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQ2da-0002Ww-LQ for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 20:51:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49843) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ2dY-0002Wq-Do for emacs-devel@gnu.org; Sat, 07 Jan 2017 20:51:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQ2dV-0001Ne-CL for emacs-devel@gnu.org; Sat, 07 Jan 2017 20:51:08 -0500 Received: from mail-qk0-f173.google.com ([209.85.220.173]:34447) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQ2dV-0001Mc-7Y for emacs-devel@gnu.org; Sat, 07 Jan 2017 20:51:05 -0500 Received: by mail-qk0-f173.google.com with SMTP id a20so111399919qkc.1 for ; Sat, 07 Jan 2017 17:51:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=ntOWhBRrKLLPTVcp9uUIZrsZs0IOS1Ic1bm6lkjyz+4=; b=eLwjrLl5H7vFQSxwhRlAYpb9lMt1KuPX7VSEFhL1Zx6TtacRzTWyyXzjLbxXD8WTJs YLkUEPO8PDhluPvlpmkmfSfiJoxNqhxmDXluczOjxOLoqIDMlyyO2EYGvj7WmwYelrDX Y9vhVIj+mHIkJkBvRvYLNBdvYuvB8uf0W7Dd1qB8simqLG1BjbMLKs+RxzPhmoOR5CDk 2R1v1nQUaISw0CNikojjjP6PZ+mkfWcYTC0XpnIqwA+jLcAgq/ldAn109oCvEKFP9Hsd rVzrG2WCyUH1isAmD6BOoaQ17VZZBVDxqQIPCW0abBx7Clh/K3TzHl4CaXhCPfIAFfJx P+/Q== X-Gm-Message-State: AIkVDXLqPWQWd8/Js80TfxlQLo5Bush0QMBhkXXT65OLXUQ1kM6A5GeOnviu+FMtdVCYLQ== X-Received: by 10.55.48.9 with SMTP id w9mr77987199qkw.49.1483840262923; Sat, 07 Jan 2017 17:51:02 -0800 (PST) Received: from [192.168.1.202] (pool-100-0-32-98.bstnma.fios.verizon.net. [100.0.32.98]) by smtp.googlemail.com with ESMTPSA id t7sm54071832qtd.13.2017.01.07.17.51.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 07 Jan 2017 17:51:01 -0800 (PST) Subject: Re: Improving representation of EIEIO objects in backtraces/error messages To: Eric Abrahamsen , emacs-devel@gnu.org References: <87ful6o8x4.fsf@ericabrahamsen.net> <7b792dd9-491a-b442-f837-e85326a6c924@siege-engine.com> <87wpefakpe.fsf@ericabrahamsen.net> From: Eric Ludlam Message-ID: <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> Date: Sat, 7 Jan 2017 20:51:00 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87wpefakpe.fsf@ericabrahamsen.net> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.220.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 01:51:10 -0000 On 12/31/2016 03:48 PM, Eric Abrahamsen wrote: > Eric Ludlam writes: > >> On 12/29/2016 02:02 PM, Eric Abrahamsen wrote: ... >> CEDET includes a 'data-debug' package. If you enable that it provides a >> way to navigate giant data structures as you might get with EIEIO. It >> is also a part of Emacs now, though I'm not that familiar with how it >> all was merged. >> >> I have this in my .emacs file to take advantage of it: >> >> (require 'data-debug) >> (global-set-key "\M-:" 'data-debug-eval-expression) > > That's interesting, thanks! I'll play with it a bit, it might be nice to > add the slot names in with the values. The slot names should be included in the display. At least they are for me in my older Emacs. It may be that the eieio-support doesn't work quite right after the EIEIO change in Emacs? In CEDET, eieio-datadebug is separate, but with EIEIO as a piece of core emacs with Data Debug, maybe the current tenuous load should be replaced by merging eieio-datadebug into data-debug. ... >> In the CEDET repository, you can get cedet-edebug.el. It includes >> these two snippets that bind "A" to data debug. >> >> ;;;###autoload >> (add-hook 'edebug-setup-hook [...] > These are all good for me as a developer, but I would also like to > protect users from backtraces that might, ahem, arise from my code. Do > you have any opinion on the discussion in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25295 ? Anything would be > welcome. I'm not familiar with Emacs C level expression printing. That's why I just stopped using built ins and added my own top level commands to get things done. The ideas represented in the thread where some special vector-form could fork off to a special printer sounds like a pretty nice idea though. That way more than just EIEIO objects could be simplified. In the above thread, someone mentioned giving up an object's ability to customize it's print output. This is a super handy feature where you can take some key differentiator of your object that is short to put into the short form print output. Taking advantage of that feature makes using the short print output even better. Of course, the developer needs to implement the method to make it work. I usually go add a new print-object method when I'm debugging so I can figure out what's going on. Eric From MAILER-DAEMON Sat Jan 07 22:33:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQ4EH-0001HS-11 for mharc-emacs-devel@gnu.org; Sat, 07 Jan 2017 22:33:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58683) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ4EF-0001HL-1E for emacs-devel@gnu.org; Sat, 07 Jan 2017 22:33:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQ4EA-0004a4-4S for emacs-devel@gnu.org; Sat, 07 Jan 2017 22:33:07 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52844) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ4EA-0004Zy-0w; Sat, 07 Jan 2017 22:33:02 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3829 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cQ4E9-0003E6-4V; Sat, 07 Jan 2017 22:33:01 -0500 Date: Sun, 08 Jan 2017 05:33:25 +0200 Message-Id: <83lgumb4ze.fsf@gnu.org> From: Eli Zaretskii To: Alexander Shukaev CC: acm@muc.de, emacs-devel@gnu.org In-reply-to: <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> (message from Alexander Shukaev on Sat, 7 Jan 2017 23:02:10 +0100) Subject: Re: CC Mode version number for Emacs 25.2 Reply-to: Eli Zaretskii References: <20161218161335.GA30217@acm.fritz.box> <96d507b2-3e3b-0cad-31e6-1fcb0e110ffc@Alexander.Shukaev.name> <949b8c43-eb42-60fe-5b0c-5cf2a98d7839@Alexander.Shukaev.name> <20161222163427.GA10987@acm.fritz.box> <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 03:33:08 -0000 > From: Alexander Shukaev > Date: Sat, 7 Jan 2017 23:02:10 +0100 > Cc: emacs-devel@gnu.org > > 1. Install it manually by copying corresponding '*.el' files into my > Emacs configuration repository and shadow `load-path' on my own properly. > 2. Make your repository to be a submodule of mine (what does not work > for me since you are using Mercurial, while I use Git) and shadow > `load-path' on my own properly. > 3. Use `el-get' to do that management for me. > > All of these I find unacceptable: #1 smells like 90's (or earlier), #2 > already mentioned, #3 requires another dependency that I don't want to > deal with at the moment. How is the smell of it relevant when you want software that will work for you? IOW, it looks like both #1 and #2 are possible and easy, and you just want Alan to provide CC Mode though package.el regardless. It's his choice, and his labor, you know. We should be grateful to him for maintaining CC Mode. From MAILER-DAEMON Sun Jan 08 04:39:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQ9wx-0005wB-9C for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 04:39:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQ9wv-0005w4-0n for emacs-devel@gnu.org; Sun, 08 Jan 2017 04:39:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQ9wt-0002bU-Qa for emacs-devel@gnu.org; Sun, 08 Jan 2017 04:39:37 -0500 Received: from mail-lf0-x22d.google.com ([2a00:1450:4010:c07::22d]:33986) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQ9wp-0002YX-TT; Sun, 08 Jan 2017 04:39:32 -0500 Received: by mail-lf0-x22d.google.com with SMTP id v186so24069505lfa.1; Sun, 08 Jan 2017 01:39:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:message-id:user-agent :mime-version:content-transfer-encoding; bh=avdOsYskrXuP19IGaHP3a0RrxtYtDdywxumk095fzqQ=; b=VDWm0qd6SsKcFNkRGViC3aChHqHuTGP0M4hIf4GPsaJ4VTjnDKnJ7I3nY/AQ1O57Iw 0CPDPatm/3IYaHE1Q84e3ZwK8KrI2jS+snhZABx8UTLXd3rIPokahnAZ/dRlqf6IfqcZ H9kiRCIboBQsNW4mZkQGs9IsXykbDQ9Kh4C/ve58Hv3UMboQlQGGkDsusnlYOLcBpYBY YXbKwcwU0+g9eWAfuNMJAkgSJlAhT8rzRDUdu3ECDWSNXpbvDq3k7iMziML/tatUsCD2 cKAmUdn3UK0m2+26R+hP5EkASQa/j5tN+Rg2i0kaJBkN6aFfiKL7zTrxSC3svZNxu2Uq thjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:message-id :user-agent:mime-version:content-transfer-encoding; bh=avdOsYskrXuP19IGaHP3a0RrxtYtDdywxumk095fzqQ=; b=A7SVhuXIdpb1DylsXHi8xnuCuRK75IlQXiFp5JItFZowQAV+P01mAypdGNMWdw6PqK zdPBcOz1+blprgnpILdMjKWUaTXZ+MhdyorutacKTFX7dHeoYkEglxxRlGrE5j6GTBrm OWoM0LvcIslm5JiD0TgHeq7zpSG0oimmXYxuAKaAfkDaiiCjxyt3rYciRiJbNFVMQ2Ou s0FZnffGoD30smDJGxWWfZR8vEVmTl9XpY7wA6G6ejt+UgWMDPpDhKFNDkE4jzaAS7Hw KkrrSnZlyWD6ZJgckpLIU1IFWBXZUB0+ARNMuH8B7Da2MXhsOiNlRhwVZo0tOxuEyDIy qlxg== X-Gm-Message-State: AIkVDXLF75wpIdG+GntICmieLmK5Lnr7GEjTqtvyPMvaHIId1QBetnr8dOIAFEqNK+2U9w== X-Received: by 10.25.39.211 with SMTP id n202mr30033001lfn.90.1483868368526; Sun, 08 Jan 2017 01:39:28 -0800 (PST) Received: from gmail.com ([46.48.49.226]) by smtp.gmail.com with ESMTPSA id 9sm20558465ljn.20.2017.01.08.01.39.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 08 Jan 2017 01:39:27 -0800 (PST) From: Dmitri Paduchikh To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: bug#25365: 25.1; Coding system for bookmarks and desktop References: <87mvf57kdx.fsf@gmail.com> <83pojzavhg.fsf@gnu.org> Date: Sun, 08 Jan 2017 14:39:26 +0500 Message-ID: <87d1fxzy9d.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 09:39:38 -0000 Eli Zaretskii wrote: >> From: Dmitri Paduchikh >> Date: Thu, 05 Jan 2017 17:37:30 +0500 >> >> It appears that all Cyrillic text in my bookmarks file has been >> corrupted. I wasn't able to reproduce such a corruption using emacs-Q, >> so probably this is due to interference with my settings which I will >> have to investigate. But in my opinion there is a problem with >> bookmark.el as well since it ignores completely coding system when >> saving bookmarks. Thus I have written the following two advices to fix >> its behavior. It seems that they work as needed. >> >> (advice-add 'bookmark-write-file :around >> #'(lambda (f &rest args) >> (let ((coding-system-for-write (or coding-system-for-write 'utf-8-emacs))) >> (apply f args))) >> '((name . "coding"))) > Thanks, I used something similar in the patch below, except that I > think we should honor the existing coding cookie in the bookmark file, > instead of forcing the user to override the default each time the file > is saved. So we should record the encoding when we load the file, and > apply it when saving. This way, the user could specify the > non-default encoding only once, using "C-x RET c", and have that value > honored by Emacs thereafter. Thank you for taking a look. As far as I understand bookmark.el may load bookmarks from several files. Using the coding system from last read file makes the choice of coding system for future write dependent on the order of bookmark load and thus difficult to keep track for user. Also setting coding system through coding-system-for-write will make non-encodable characters replaced by spaces. The safety check is being done somewhere else - I am not familiar with the exact details yet. Hopefully you have taken this into account. As I am concerned these complications are not needed at all. Encoding arbitrary data when writing a file (i.e. with utf-8-emacs) and specifying coding system in the file header for the data to be correctly decoded back - is all that is needed in my opinion. [...] > I installed the patch below on the master branch. Please try it > (after removing your advices) and see if it gives good results. If > you see problems, please reopen this bug with the details. Will check it out. Though I think that the situation will not repeat after I have fixed my configuration. >> Besides, although desktop.el specifies coding system in its file, it is >> old one - emacs-mule. Shouldn't this be utf-8-emacs these days instead? > I'm not sure how many users share the desktop files with older Emacs > versions that didn't support utf-8-emacs. There's nothing wrong with > using emacs-mule in recent Emacs versions, for files that aren't > supposed to be read by programs that are not Emacs. I am worried by its ability to encode arbitrary characters after switch to UTF-8. If there are such characters which emacs-mule does not encode they can be silently replaced by spaces upon writing of desktop data. PS. Not sure whether it makes sense to send messages to a closed bug, and so continuing in emacs-devel. With best regards Dmitri Paduchikh From MAILER-DAEMON Sun Jan 08 04:58:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQAFR-0000L2-Cx for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 04:58:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37940) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQAFO-0000Kw-IW for emacs-devel@gnu.org; Sun, 08 Jan 2017 04:58:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQAFI-000187-9e for emacs-devel@gnu.org; Sun, 08 Jan 2017 04:58:42 -0500 Received: from ocolin.muc.de ([193.149.48.4]:31208 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cQAFI-00017n-06 for emacs-devel@gnu.org; Sun, 08 Jan 2017 04:58:36 -0500 Received: (qmail 73919 invoked by uid 3782); 8 Jan 2017 09:58:33 -0000 Received: from acm.muc.de (p548C751E.dip0.t-ipconnect.de [84.140.117.30]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 08 Jan 2017 10:58:32 +0100 Received: (qmail 4089 invoked by uid 1000); 8 Jan 2017 09:58:19 -0000 Date: Sun, 8 Jan 2017 09:58:19 +0000 To: Alexander Shukaev Cc: emacs-devel@gnu.org Subject: Re: CC Mode version number for Emacs 25.2 Message-ID: <20170108095819.GA3998@acm.fritz.box> References: <20161218161335.GA30217@acm.fritz.box> <96d507b2-3e3b-0cad-31e6-1fcb0e110ffc@Alexander.Shukaev.name> <949b8c43-eb42-60fe-5b0c-5cf2a98d7839@Alexander.Shukaev.name> <20161222163427.GA10987@acm.fritz.box> <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 09:58:44 -0000 Hello, Alexander. On Sat, Jan 07, 2017 at 11:02:10PM +0100, Alexander Shukaev wrote: > On 12/22/2016 05:34 PM, Alan Mackenzie wrote: > > Hello, Alexander. [ .... ] > > CC Mode is not available through package.el. There's either the > > version in an Emacs release (which is frozen at pretest time, > > typically several months before the release), or there's the stand > > alone version (which can be any age) available from > > http://cc-mode.sourceforge.net/. The latest stand alone version, > > 5.33, was released in August 2016. > > Alternatively, you can use the head of the VCS repository either at > > savannah (for the entire Emacs version) or at sourceforge (for just > > CC Mode). > Hello Alan, > To me that looks like a major problem. It means that I have three > options to keep track of your package: > 1. Install it manually by copying corresponding '*.el' files into my > Emacs configuration repository and shadow `load-path' on my own properly. > 2. Make your repository to be a submodule of mine (what does not work > for me since you are using Mercurial, while I use Git) and shadow > `load-path' on my own properly. > 3. Use `el-get' to do that management for me. > All of these I find unacceptable: #1 smells like 90's (or earlier), #2 > already mentioned, #3 requires another dependency that I don't want to > deal with at the moment. All of that brings up a simple question: why > such a widespread and useful package is not packaged on MELPA and other > popular online archives? Largely because of the extra work involved in creating and maintaining these extra copies of CC Mode (much of which would be about finding out how to do it). I already maintain CC Mode in three places (CC Mode at SourceForge, the Emacs repostitory, the XEmacs package repository). If I were to add a fourth, just how much testing would that involve each time I fix a bug or add a feature? If you don't like this situation, you could do the work yourself to set up and maintain CC Mode in ELPA or MELPA. This would have to be a long term commitment, by the way (otherwise the ELPA/MELPA versions would fall into disrepair, adversely affecting the reputation of CC Mode). I could certainly work together with you to assist in this. > Kind regards, > Alexander -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 08 08:40:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQDhu-0008A3-VR for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 08:40:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34595) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQDhs-00089v-3v for emacs-devel@gnu.org; Sun, 08 Jan 2017 08:40:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQDhp-0004ax-1f for emacs-devel@gnu.org; Sun, 08 Jan 2017 08:40:20 -0500 Received: from [195.159.176.226] (port=45062 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQDho-0004al-RT for emacs-devel@gnu.org; Sun, 08 Jan 2017 08:40:16 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cQDhX-0002pA-Mx for emacs-devel@gnu.org; Sun, 08 Jan 2017 14:39:59 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: CC Mode version number for Emacs 25.2 Date: Sun, 08 Jan 2017 08:39:48 -0500 Lines: 17 Message-ID: References: <20161218161335.GA30217@acm.fritz.box> <96d507b2-3e3b-0cad-31e6-1fcb0e110ffc@Alexander.Shukaev.name> <949b8c43-eb42-60fe-5b0c-5cf2a98d7839@Alexander.Shukaev.name> <20161222163427.GA10987@acm.fritz.box> <68e12441-2523-c226-17f5-7fd4dab7d36c@Alexander.Shukaev.name> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:34IrL1VZO3EkGTYiDIdMbgqzKq8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 13:40:21 -0000 > such a widespread and useful package is not packaged on MELPA and other > popular online archives? Actually, it should be pretty easy to provide a GNU ELPA package built right out of the emacs.git, like we do for let-alist, ntlm, and soap-client. It should "just" need the right lines to elpa.git's externals-list: ("cc-mode" :core ("lisp/progmodes/cc-mode.el" "lisp/progmodes/cc-lang.el" "lisp/progmodes/cc-awk.el" "lisp/progmodes/cc-defs.el" ...)) Plus the usual header lines in cc-mode.el. Stefan From MAILER-DAEMON Sun Jan 08 10:45:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQFew-0005BU-3c for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 10:45:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQFer-0005BG-Ro for emacs-devel@gnu.org; Sun, 08 Jan 2017 10:45:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQFem-0000G5-IN for emacs-devel@gnu.org; Sun, 08 Jan 2017 10:45:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57857) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQFem-0000Fz-F1; Sun, 08 Jan 2017 10:45:16 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4617 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cQFel-0005nB-34; Sun, 08 Jan 2017 10:45:15 -0500 Date: Sun, 08 Jan 2017 17:45:10 +0200 Message-Id: <83k2a5blo9.fsf@gnu.org> From: Eli Zaretskii To: Dmitri Paduchikh CC: emacs-devel@gnu.org In-reply-to: <87d1fxzy9d.fsf@gmail.com> (message from Dmitri Paduchikh on Sun, 08 Jan 2017 14:39:26 +0500) Subject: Re: bug#25365: 25.1; Coding system for bookmarks and desktop Reply-to: Eli Zaretskii References: <87mvf57kdx.fsf@gmail.com> <83pojzavhg.fsf@gnu.org> <87d1fxzy9d.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 15:45:24 -0000 > From: Dmitri Paduchikh > Cc: emacs-devel@gnu.org > Date: Sun, 08 Jan 2017 14:39:26 +0500 > > As far as I understand bookmark.el may load bookmarks from several > files. Using the coding system from last read file makes the choice > of coding system for future write dependent on the order of bookmark > load and thus difficult to keep track for user. It's deterministic, at least. And the user can now force the encoding she likes with "C-x RET c M-x bookmark-save RET". Finally, for user to have a good reason for specifying an encoding of the bookmark file is already a rare use case, since the default utf-8-emacs should be good for everyone. So I think we are okay, as even rare uses cases have a solution now. > Also setting coding system through coding-system-for-write will make > non-encodable characters replaced by spaces. This option exists for users who really know what they are doing; the default utf-8-emacs encoding is safe for any and all characters Emacs supports. > As I am concerned these complications are not needed at all. Letting users override the encoding for any I/O us standard Emacs operation, so I think saving bookmarks should provide it as well. > Encoding arbitrary data when writing a file (i.e. with utf-8-emacs) > and specifying coding system in the file header for the data to be > correctly decoded back - is all that is needed in my opinion. That's the default, which most users will have no reason to change, so we are again okay. But if there are users out there who had their bookmark files encoded otherwise, Emacs will now honor their encoding, instead of silently rewriting the file in utf-8-emacs. > > I installed the patch below on the master branch. Please try it > > (after removing your advices) and see if it gives good results. If > > you see problems, please reopen this bug with the details. > > Will check it out. Though I think that the situation will not repeat after I > have fixed my configuration. I'm more bothered by some unintended consequences in normal usage, since I myself don't use bookmarks in my day-to-day use patterns. > > I'm not sure how many users share the desktop files with older Emacs > > versions that didn't support utf-8-emacs. There's nothing wrong with > > using emacs-mule in recent Emacs versions, for files that aren't > > supposed to be read by programs that are not Emacs. > > I am worried by its ability to encode arbitrary characters after switch to > UTF-8. No worries: emacs-mule can encode any character supported by Emacs. The fact that the internal encoding changed doesn't affect that. > PS. Not sure whether it makes sense to send messages to a closed bug, There's nothing wrong with that, the discussion is recorded even after the bug is closed. Thanks. From MAILER-DAEMON Sun Jan 08 12:24:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQHDB-0001SU-LV for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 12:24:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQHD9-0001SH-9L for emacs-devel@gnu.org; Sun, 08 Jan 2017 12:24:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQHD6-00016e-0n for emacs-devel@gnu.org; Sun, 08 Jan 2017 12:24:51 -0500 Received: from mail.ericabrahamsen.net ([50.56.99.223]:59981) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQHD5-00014L-R6 for emacs-devel@gnu.org; Sun, 08 Jan 2017 12:24:47 -0500 Received: from localhost (71-212-13-2.tukw.qwest.net [71.212.13.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id CCE51BE35C for ; Sun, 8 Jan 2017 17:24:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ericabrahamsen.net; s=mail; t=1483896280; bh=ABUP0dO21Ykfzc/caIylSKGri202UUQgK+/+oLIOsZg=; h=From:To:Subject:References:Date:In-Reply-To:From; b=umJJGlkDlRdWdSgTadCOXffdZsA1XHHGkMSpSByWXNkEJIxLaUNCw4K48e2sNtCBz ye6AR0X25fTC1/Yq5I2WTkLFB4a17haNomQHRMH1uHkpbHGi4YD7OtDHO2AfAQ/bfo 2vcyscZi1HSMgtKJ/DHDc7LUbsyisRqkYILfHg1Y= From: Eric Abrahamsen To: emacs-devel@gnu.org Subject: Re: Improving representation of EIEIO objects in backtraces/error messages References: <87ful6o8x4.fsf@ericabrahamsen.net> <7b792dd9-491a-b442-f837-e85326a6c924@siege-engine.com> <87wpefakpe.fsf@ericabrahamsen.net> <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> Date: Sun, 08 Jan 2017 09:24:38 -0800 In-Reply-To: <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> (Eric Ludlam's message of "Sat, 7 Jan 2017 20:51:00 -0500") Message-ID: <87wpe55usp.fsf@ericabrahamsen.net> User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 50.56.99.223 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 17:24:52 -0000 Eric Ludlam writes: > On 12/31/2016 03:48 PM, Eric Abrahamsen wrote: >> Eric Ludlam writes: >> >>> On 12/29/2016 02:02 PM, Eric Abrahamsen wrote: > ... >>> CEDET includes a 'data-debug' package. If you enable that it provides a >>> way to navigate giant data structures as you might get with EIEIO. It >>> is also a part of Emacs now, though I'm not that familiar with how it >>> all was merged. >>> >>> I have this in my .emacs file to take advantage of it: >>> >>> (require 'data-debug) >>> (global-set-key "\M-:" 'data-debug-eval-expression) >> >> That's interesting, thanks! I'll play with it a bit, it might be nice to >> add the slot names in with the values. > > The slot names should be included in the display. At least they are > for me in my older Emacs. It may be that the eieio-support doesn't > work quite right after the EIEIO change in Emacs? > > In CEDET, eieio-datadebug is separate, but with EIEIO as a piece of > core emacs with Data Debug, maybe the current tenuous load should be > replaced by merging eieio-datadebug into data-debug. My mistake, I'd only loaded data-debug, not eieio-datadebug. The slots are showing now. > ... >>> In the CEDET repository, you can get cedet-edebug.el. It includes >>> these two snippets that bind "A" to data debug. >>> >>> ;;;###autoload >>> (add-hook 'edebug-setup-hook > [...] > >> These are all good for me as a developer, but I would also like to >> protect users from backtraces that might, ahem, arise from my code. Do >> you have any opinion on the discussion in >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25295 ? Anything would be >> welcome. > > I'm not familiar with Emacs C level expression printing. That's why I > just stopped using built ins and added my own top level commands to > get things done. > > The ideas represented in the thread where some special vector-form > could fork off to a special printer sounds like a pretty nice idea > though. That way more than just EIEIO objects could be simplified. > > In the above thread, someone mentioned giving up an object's ability > to customize it's print output. This is a super handy feature where > you can take some key differentiator of your object that is short to > put into the short form print output. Taking advantage of that > feature makes using the short print output even better. Of course, > the developer needs to implement the method to make it work. I > usually go add a new print-object method when I'm debugging so I can > figure out what's going on. That was me saying that -- I just meant that, if I had to choose between customizable object representation in *some* places, and non-customizable representation in *all* places, I would go with the latter. But with any luck we'll be able to get both. I agree that a customizable object-print is a very nice thing. Eric From MAILER-DAEMON Sun Jan 08 14:03:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQIkN-0007L9-1n for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 14:03:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQIkI-0007JS-QQ for emacs-devel@gnu.org; Sun, 08 Jan 2017 14:03:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQIkG-00051q-K2 for emacs-devel@gnu.org; Sun, 08 Jan 2017 14:03:10 -0500 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:38659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQIkD-0004xm-Dk; Sun, 08 Jan 2017 14:03:05 -0500 Received: by mail-wm0-x229.google.com with SMTP id k184so93626702wme.1; Sun, 08 Jan 2017 11:03:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=BdKCkdwZ8PjEYFdwMg2AuDt9cRGw9tkzf3oJWQ1Rz3o=; b=ipUvoTVcw5UAOvVumOdh+UwhXpAkH5DF/Q/VAetq8ykia0MAPtBTf4U+cXKYHNpWbW KNO8kb+LcSmARVQpH8t00vVXI5RquWvHb13FlbpWzHRCtB3HpIGvW2vdJP2c6ueiqIjs WsM1fRu9IZXtMHPCTf18mlrXwGkqfoJ9rV1c9PnSRbHWlfllFLkQ8kpdAGlNYNYzLak5 GxcFukdfK7b98+irT97mXavyoGvsEWzs+lS8pkW6oovdKtcYqTjeI+j4yFqrT8vpeZt4 f/mkpaF0FClB1yVeE0uMFFGo4zFUg387rQJAiXZ2/9ARgd99hxA91kCWqIi5y/2T3fH9 grYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=BdKCkdwZ8PjEYFdwMg2AuDt9cRGw9tkzf3oJWQ1Rz3o=; b=AyYRgQL9kFyYfOf+pyobyVlZzlXGMMu1B4BudyBKUclrCzj6vhZ49gBJ813GA56g58 9U+ojPfeZkpTDSTwboqpYFsGcpW56Et/6XosT1nRFnSAsOq81A/Nr3F63mxASavRrse3 LyUBN53wOJj+5+9O5vTuhdJVSXIMHubpLFmWc7RKHLcCphC/2dDkP2QyJjgwls4AMHZi hGPBL320rGM1sV/ZzFw+TzdqFrjm8U4UsBslyAkIuMskhA9aLxPNHNr8glAe6EROwdf+ 80wpf8gSCLd+brARnI9eQzCQFN/dLayx22oshG4ZDZeG+1sTSfIVadzSVssw9qT7f08r yWaA== X-Gm-Message-State: AIkVDXJgr5mc3VVFE6NCJJyo2IqlU4NyZuEJZg1jnbC22iZaowHD3IrcIFYINzRBrQnsovIaEP6gzU4AwegDXA== X-Received: by 10.28.68.6 with SMTP id r6mr2920121wma.57.1483902182424; Sun, 08 Jan 2017 11:03:02 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.163.196 with HTTP; Sun, 8 Jan 2017 11:02:21 -0800 (PST) In-Reply-To: <83inpuegd9.fsf@gnu.org> References: <83inpuegd9.fsf@gnu.org> From: aditya siram Date: Sun, 8 Jan 2017 13:02:21 -0600 Message-ID: Subject: Re: Occasional Crash When Running `rgrep` To: Eli Zaretskii Cc: "emacs-devel@gnu.org Development" Content-Type: multipart/alternative; boundary=001a1148e84a7707eb054599e670 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 19:03:13 -0000 --001a1148e84a7707eb054599e670 Content-Type: text/plain; charset=UTF-8 It took a couple of day for it to happen again, but here's the human readable backtrace: Jan 08 13:01:55 deech-thinkpad systemd-coredump[25660]: Process 27577 (emacs) of user 1000 dumped core. Stack trace of thread 27577: #0 0x00007efc14652f5f raise (libpthread.so.0) #1 0x00000000004e33b1 terminate_due_to_signal (emacs-25.1) #2 0x00000000004fa83e handle_fatal_signal (emacs-25.1) #3 0x00000000004faa43 deliver_thread_signal (emacs-25.1) #4 0x00000000004faaaf deliver_fatal_thread_signal (emacs-25.1) #5 0x00007efc14653080 __restore_rt (libpthread.so.0) #6 0x00000000004a9fa0 turn_on_face (emacs-25.1) #7 0x00000000004ae0f2 tty_write_glyphs (emacs-25.1) #8 0x000000000041904a update_frame_line (emacs-25.1) #9 0x000000000041c866 update_frame_1 (emacs-25.1) #10 0x000000000041e08e update_frame (emacs-25.1) #11 0x0000000000450cd4 redisplay_internal (emacs-25.1) #12 0x00000000004ed1db read_char (emacs-25.1) #13 0x00000000004efba0 read_key_sequence (emacs-25.1) #14 0x00000000004f16c6 command_loop_1 (emacs-25.1) #15 0x0000000000552c32 internal_condition_case (emacs-25.1) #16 0x00000000004e37ec command_loop_2 (emacs-25.1) #17 0x0000000000552bd3 internal_catch (emacs-25.1) #18 0x00000000004e3750 command_loop (emacs-25.1) #19 0x00000000004e7d77 recursive_edit_1 (emacs-25.1) #20 0x000000000050ef5f read_minibuf (emacs-25.1) #21 0x000000000050f6df Fread_from_minibuffer (emacs-25.1) #22 0x00000000005543c0 Ffuncall (emacs-25.1) #23 0x000000000058a32b exec_byte_code (emacs-25.1) #24 0x000000000055426b Ffuncall (emacs-25.1) #25 0x000000000058a32b exec_byte_code (emacs-25.1) #26 0x000000000055426b Ffuncall (emacs-25.1) #27 0x00000000005555c8 Fapply (emacs-25.1) #28 0x0000000000554351 Ffuncall (emacs-25.1) #29 0x000000000058a32b exec_byte_code (emacs-25.1) #30 0x000000000055426b Ffuncall (emacs-25.1) #31 0x00000000005555c8 Fapply (emacs-25.1) #32 0x0000000000554351 Ffuncall (emacs-25.1) #33 0x000000000058a32b exec_byte_code (emacs-25.1) #34 0x000000000055426b Ffuncall (emacs-25.1) #35 0x000000000058a32b exec_byte_code (emacs-25.1) #36 0x0000000000553358 apply_lambda (emacs-25.1) #37 0x000000000055366f eval_sub (emacs-25.1) #38 0x00000000005564cd Fprogn (emacs-25.1) #39 0x0000000000553841 eval_sub (emacs-25.1) #40 0x0000000000553fed Fprogn (emacs-25.1) #41 0x000000000055426b Ffuncall (emacs-25.1) #42 0x000000000055019a Ffuncall_interactively (emacs-25.1) #43 0x0000000000554351 Ffuncall (emacs-25.1) #44 0x0000000000550b07 Fcall_interactively (emacs-25.1) #45 0x000000000055442a Ffuncall (emacs-25.1) #46 0x000000000058a32b exec_byte_code (emacs-25.1) #47 0x000000000055426b Ffuncall (emacs-25.1) #48 0x000000000055452a call1 (emacs-25.1) #49 0x00000000004f18c1 command_loop_1 (emacs-25.1) #50 0x0000000000552c32 internal_condition_case (emacs-25.1) #51 0x00000000004e37ec command_loop_2 (emacs-25.1) #52 0x0000000000552bd3 internal_catch (emacs-25.1) #53 0x00000000004e37a9 command_loop (emacs-25.1) #54 0x00000000004e7d77 recursive_edit_1 (emacs-25.1) #55 0x00000000004e80b8 Frecursive_edit (emacs-25.1) #56 0x0000000000414fee main (emacs-25.1) #57 0x00007efc13e92291 __libc_start_main (libc.so.6) #58 0x0000000000415b5a _start (emacs-25.1) Stack trace of thread 27578: #0 0x00007efc13f5148d poll (libc.so.6) #1 0x00007efc17f6b786 n/a (libglib-2.0.so.0) #2 0x00007efc17f6b89c g_main_context_iteration (libglib-2.0.so.0) #3 0x00007efc17f6b8e1 n/a (libglib-2.0.so.0) #4 0x00007efc17f930d5 n/a (libglib-2.0.so.0) #5 0x00007efc14649454 start_thread (libpthread.so.0) #6 0x00007efc13f5a7df __clone (libc.so.6) Thanks! -deech On Wed, Jan 4, 2017 at 2:10 PM, Eli Zaretskii wrote: > > From: aditya siram > > Date: Wed, 4 Jan 2017 14:03:54 -0600 > > > > I forgot to include the relevant version info, sorry: > > $ emacs --version > > GNU Emacs 25.1.1 > > Copyright (C) 2016 Free Software Foundation, Inc. > > GNU Emacs comes with ABSOLUTELY NO WARRANTY. > > You may redistribute copies of GNU Emacs > > under the terms of the GNU General Public License. > > For more information about these matters, see the file named COPYING. > > $ uname -r > > 4.4.38-1-lts > > > > 2017-01-04 14:00 GMT-06:00 aditya siram : > > > > Hi, > > Of late I've been getting occasional Emacs crashes with the following > backtrace: > > $ emacs -nw > > Fatal error 11: Segmentation fault > > Backtrace: > > emacs[0x4fbdb2] > > Can you convert this to a human-readable backtrace with file names and > line numbers, using the method described in the node "Crashing" of the > Emacs user manual? Otherwise, it's hard to do anything useful with > this information. > > Thanks. > --001a1148e84a7707eb054599e670 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2Pkl0IHRvb2sgYSBjb3VwbGUgb2YgZGF5IGZvciBpdCB0 byBoYXBwZW4gYWdhaW4sIGJ1dCBoZXJlJiMzOTtzIHRoZSBodW1hbiByZWFkYWJsZSBiYWNrdHJh Y2U6PGJyPkphbiAwOCAxMzowMTo1NSBkZWVjaC10aGlua3BhZCBzeXN0ZW1kLWNvcmVkdW1wWzI1 NjYwXTogUHJvY2VzcyAyNzU3NyAoZW1hY3MpIG9mIHVzZXIgMTAwMCBkdW1wZWQgY29yZS48YnI+ PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFN0YWNrIHRyYWNlIG9mIHRocmVhZCAyNzU3Nzo8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzDCoCAweDAwMDA3ZWZjMTQ2NTJmNWYgcmFp c2UgKGxpYnB0aHJlYWQuc28uMCk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIzHCoCAweDAwMDAwMDAwMDA0ZTMzYjEgdGVybWluYXRlX2R1 ZV90b19zaWduYWwgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMywqAgMHgwMDAwMDAwMDAwNGZhODNlIGhhbmRsZV9m YXRhbF9zaWduYWwgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMzwqAgMHgwMDAwMDAwMDAwNGZhYTQzIGRlbGl2ZXJf dGhyZWFkX3NpZ25hbCAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzTCoCAweDAwMDAwMDAwMDA0ZmFhYWYgZGVsaXZl cl9mYXRhbF90aHJlYWRfc2lnbmFsIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjNcKgIDB4MDAwMDdlZmMxNDY1MzA4 MCBfX3Jlc3RvcmVfcnQgKGxpYnB0aHJlYWQuc28uMCk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzbCoCAweDAwMDAwMDAwMDA0YTlmYTAg dHVybl9vbl9mYWNlIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjN8KgIDB4MDAwMDAwMDAwMDRhZTBmMiB0dHlfd3Jp dGVfZ2x5cGhzIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjOMKgIDB4MDAwMDAwMDAwMDQxOTA0YSB1cGRhdGVfZnJh bWVfbGluZSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIznCoCAweDAwMDAwMDAwMDA0MWM4NjYgdXBkYXRlX2ZyYW1l XzEgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICMxMCAweDAwMDAwMDAwMDA0MWUwOGUgdXBkYXRlX2ZyYW1lIChlbWFj cy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAjMTEgMHgwMDAwMDAwMDAwNDUwY2Q0IHJlZGlzcGxheV9pbnRlcm5hbCAoZW1hY3Mt MjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgIzEyIDB4MDAwMDAwMDAwMDRlZDFkYiByZWFkX2NoYXIgKGVtYWNzLTI1LjEpPGJyPsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxMyAw eDAwMDAwMDAwMDA0ZWZiYTAgcmVhZF9rZXlfc2VxdWVuY2UgKGVtYWNzLTI1LjEpPGJyPsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxNCAweDAw MDAwMDAwMDA0ZjE2YzYgY29tbWFuZF9sb29wXzEgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxNSAweDAwMDAwMDAw MDA1NTJjMzIgaW50ZXJuYWxfY29uZGl0aW9uX2Nhc2UgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxNiAweDAwMDAw MDAwMDA0ZTM3ZWMgY29tbWFuZF9sb29wXzIgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxNyAweDAwMDAwMDAwMDA1 NTJiZDMgaW50ZXJuYWxfY2F0Y2ggKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMxOCAweDAwMDAwMDAwMDA0ZTM3NTAg Y29tbWFuZF9sb29wIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjMTkgMHgwMDAwMDAwMDAwNGU3ZDc3IHJlY3Vyc2l2 ZV9lZGl0XzEgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICMyMCAweDAwMDAwMDAwMDA1MGVmNWYgcmVhZF9taW5pYnVm IChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAjMjEgMHgwMDAwMDAwMDAwNTBmNmRmIEZyZWFkX2Zyb21fbWluaWJ1ZmZl ciAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIzIyIDB4MDAwMDAwMDAwMDU1NDNjMCBGZnVuY2FsbCAoZW1hY3MtMjUu MSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIzIzIDB4MDAwMDAwMDAwMDU4YTMyYiBleGVjX2J5dGVfY29kZSAoZW1hY3MtMjUuMSk8YnI+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzI0 IDB4MDAwMDAwMDAwMDU1NDI2YiBGZnVuY2FsbCAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzI1IDB4MDAwMDAwMDAw MDU4YTMyYiBleGVjX2J5dGVfY29kZSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzI2IDB4MDAwMDAwMDAwMDU1NDI2 YiBGZnVuY2FsbCAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzI3IDB4MDAwMDAwMDAwMDU1NTVjOCBGYXBwbHkgKGVt YWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICMyOCAweDAwMDAwMDAwMDA1NTQzNTEgRmZ1bmNhbGwgKGVtYWNzLTI1LjEpPGJy PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMy OSAweDAwMDAwMDAwMDA1OGEzMmIgZXhlY19ieXRlX2NvZGUgKGVtYWNzLTI1LjEpPGJyPsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMzMCAweDAw MDAwMDAwMDA1NTQyNmIgRmZ1bmNhbGwgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMzMSAweDAwMDAwMDAwMDA1NTU1 YzggRmFwcGx5IChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjMzIgMHgwMDAwMDAwMDAwNTU0MzUxIEZmdW5jYWxsIChl bWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAjMzMgMHgwMDAwMDAwMDAwNThhMzJiIGV4ZWNfYnl0ZV9jb2RlIChlbWFjcy0y NS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAjMzQgMHgwMDAwMDAwMDAwNTU0MjZiIEZmdW5jYWxsIChlbWFjcy0yNS4xKTxicj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjMzUgMHgw MDAwMDAwMDAwNThhMzJiIGV4ZWNfYnl0ZV9jb2RlIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjMzYgMHgwMDAwMDAw MDAwNTUzMzU4IGFwcGx5X2xhbWJkYSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzM3IDB4MDAwMDAwMDAwMDU1MzY2 ZiBldmFsX3N1YiAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzM4IDB4MDAwMDAwMDAwMDU1NjRjZCBGcHJvZ24gKGVt YWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICMzOSAweDAwMDAwMDAwMDA1NTM4NDEgZXZhbF9zdWIgKGVtYWNzLTI1LjEpPGJy PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICM0 MCAweDAwMDAwMDAwMDA1NTNmZWQgRnByb2duIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjNDEgMHgwMDAwMDAwMDAw NTU0MjZiIEZmdW5jYWxsIChlbWFjcy0yNS4xKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjNDIgMHgwMDAwMDAwMDAwNTUwMTlhIEZmdW5j YWxsX2ludGVyYWN0aXZlbHkgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICM0MyAweDAwMDAwMDAwMDA1NTQzNTEgRmZ1 bmNhbGwgKGVtYWNzLTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICM0NCAweDAwMDAwMDAwMDA1NTBiMDcgRmNhbGxfaW50ZXJhY3Rp dmVseSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIzQ1IDB4MDAwMDAwMDAwMDU1NDQyYSBGZnVuY2FsbCAoZW1hY3Mt MjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgIzQ2IDB4MDAwMDAwMDAwMDU4YTMyYiBleGVjX2J5dGVfY29kZSAoZW1hY3MtMjUuMSk8 YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg IzQ3IDB4MDAwMDAwMDAwMDU1NDI2YiBGZnVuY2FsbCAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzQ4IDB4MDAwMDAw MDAwMDU1NDUyYSBjYWxsMSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzQ5IDB4MDAwMDAwMDAwMDRmMThjMSBjb21t YW5kX2xvb3BfMSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzUwIDB4MDAwMDAwMDAwMDU1MmMzMiBpbnRlcm5hbF9j b25kaXRpb25fY2FzZSAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzUxIDB4MDAwMDAwMDAwMDRlMzdlYyBjb21tYW5k X2xvb3BfMiAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIzUyIDB4MDAwMDAwMDAwMDU1MmJkMyBpbnRlcm5hbF9jYXRj aCAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIzUzIDB4MDAwMDAwMDAwMDRlMzdhOSBjb21tYW5kX2xvb3AgKGVtYWNz LTI1LjEpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICM1NCAweDAwMDAwMDAwMDA0ZTdkNzcgcmVjdXJzaXZlX2VkaXRfMSAoZW1hY3MtMjUu MSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIzU1IDB4MDAwMDAwMDAwMDRlODBiOCBGcmVjdXJzaXZlX2VkaXQgKGVtYWNzLTI1LjEpPGJy PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICM1 NiAweDAwMDAwMDAwMDA0MTRmZWUgbWFpbiAoZW1hY3MtMjUuMSk8YnI+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzU3IDB4MDAwMDdlZmMxM2U5 MjI5MSBfX2xpYmNfc3RhcnRfbWFpbiAobGliYy5zby42KTxicj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjNTggMHgwMDAwMDAwMDAwNDE1YjVh IF9zdGFydCAoZW1hY3MtMjUuMSk8YnI+PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFN0YWNrIHRyYWNlIG9mIHRocmVhZCAyNzU3ODo8YnI+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzDC oCAweDAwMDA3ZWZjMTNmNTE0OGQgcG9sbCAobGliYy5zby42KTxicj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjMcKgIDB4MDAwMDdlZmMxN2Y2 Yjc4NiBuL2EgKGxpYmdsaWItMi4wLnNvLjApPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMywqAgMHgwMDAwN2VmYzE3ZjZiODljIGdfbWFp bl9jb250ZXh0X2l0ZXJhdGlvbiAobGliZ2xpYi0yLjAuc28uMCk8YnI+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzPCoCAweDAwMDA3ZWZjMTdm NmI4ZTEgbi9hIChsaWJnbGliLTIuMC5zby4wKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjNMKgIDB4MDAwMDdlZmMxN2Y5MzBkNSBuL2Eg KGxpYmdsaWItMi4wLnNvLjApPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICM1wqAgMHgwMDAwN2VmYzE0NjQ5NDU0IHN0YXJ0X3RocmVhZCAo bGlicHRocmVhZC5zby4wKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAjNsKgIDB4MDAwMDdlZmMxM2Y1YTdkZiBfX2Nsb25lIChsaWJjLnNv LjYpPGJyPjxicj48L2Rpdj5UaGFua3MhPGJyPjwvZGl2Pi1kZWVjaDxicj48L2Rpdj48ZGl2IGNs YXNzPSJnbWFpbF9leHRyYSI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBXZWQsIEph biA0LCAyMDE3IGF0IDI6MTAgUE0sIEVsaSBaYXJldHNraWkgPHNwYW4gZGlyPSJsdHIiPiZsdDs8 YSBocmVmPSJtYWlsdG86ZWxpekBnbnUub3JnIiB0YXJnZXQ9Il9ibGFuayI+ZWxpekBnbnUub3Jn PC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUi IHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRk aW5nLWxlZnQ6MWV4Ij4mZ3Q7IEZyb206IGFkaXR5YSBzaXJhbSAmbHQ7PGEgaHJlZj0ibWFpbHRv OmFkaXR5YS5zaXJhbUBnbWFpbC5jb20iPmFkaXR5YS5zaXJhbUBnbWFpbC5jb208L2E+Jmd0Ozxi cj4NCiZndDsgRGF0ZTogV2VkLCA0IEphbiAyMDE3IDE0OjAzOjU0IC0wNjAwPGJyPg0KPHNwYW4g Y2xhc3M9IiI+Jmd0Ozxicj4NCiZndDsgSSBmb3Jnb3QgdG8gaW5jbHVkZSB0aGUgcmVsZXZhbnQg dmVyc2lvbiBpbmZvLCBzb3JyeTo8YnI+DQomZ3Q7ICQgZW1hY3MgLS12ZXJzaW9uPGJyPg0KJmd0 OyBHTlUgRW1hY3MgMjUuMS4xPGJyPg0KJmd0OyBDb3B5cmlnaHQgKEMpIDIwMTYgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuPGJyPg0KJmd0OyBHTlUgRW1hY3MgY29tZXMgd2l0aCBBQlNP TFVURUxZIE5PIFdBUlJBTlRZLjxicj4NCiZndDsgWW91IG1heSByZWRpc3RyaWJ1dGUgY29waWVz IG9mIEdOVSBFbWFjczxicj4NCiZndDsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZS48YnI+DQomZ3Q7IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRo ZXNlIG1hdHRlcnMsIHNlZSB0aGUgZmlsZSBuYW1lZCBDT1BZSU5HLjxicj4NCiZndDsgJCB1bmFt ZSAtcjxicj4NCiZndDsgNC40LjM4LTEtbHRzPGJyPg0KJmd0Ozxicj4NCiZndDsgMjAxNy0wMS0w NCAxNDowMCBHTVQtMDY6MDAgYWRpdHlhIHNpcmFtICZsdDs8YSBocmVmPSJtYWlsdG86YWRpdHlh LnNpcmFtQGdtYWlsLmNvbSI+YWRpdHlhLnNpcmFtQGdtYWlsLmNvbTwvYT4mZ3Q7Ojxicj4NCiZn dDs8YnI+DQomZ3Q7wqAgSGksPGJyPg0KJmd0O8KgIE9mIGxhdGUgSSYjMzk7dmUgYmVlbiBnZXR0 aW5nIG9jY2FzaW9uYWwgRW1hY3MgY3Jhc2hlcyB3aXRoIHRoZSBmb2xsb3dpbmcgYmFja3RyYWNl Ojxicj4NCiZndDvCoCAkIGVtYWNzIC1udzxicj4NCiZndDvCoCBGYXRhbCBlcnJvciAxMTogU2Vn bWVudGF0aW9uIGZhdWx0PGJyPg0KJmd0O8KgIEJhY2t0cmFjZTo8YnI+DQomZ3Q7wqAgZW1hY3Nb MHg0ZmJkYjJdPGJyPg0KPGJyPg0KPC9zcGFuPkNhbiB5b3UgY29udmVydCB0aGlzIHRvIGEgaHVt YW4tcmVhZGFibGUgYmFja3RyYWNlIHdpdGggZmlsZSBuYW1lcyBhbmQ8YnI+DQpsaW5lIG51bWJl cnMsIHVzaW5nIHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIHRoZSBub2RlICZxdW90O0NyYXNoaW5n JnF1b3Q7IG9mIHRoZTxicj4NCkVtYWNzIHVzZXIgbWFudWFsP8KgIE90aGVyd2lzZSwgaXQmIzM5 O3MgaGFyZCB0byBkbyBhbnl0aGluZyB1c2VmdWwgd2l0aDxicj4NCnRoaXMgaW5mb3JtYXRpb24u PGJyPg0KPGJyPg0KVGhhbmtzLjxicj4NCjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+DQo= --001a1148e84a7707eb054599e670-- From MAILER-DAEMON Sun Jan 08 15:33:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQK9g-0005m4-IR for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 15:33:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQK9e-0005kd-3M for emacs-devel@gnu.org; Sun, 08 Jan 2017 15:33:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQK9b-0006aj-1Y for emacs-devel@gnu.org; Sun, 08 Jan 2017 15:33:26 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60938) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQK9a-0006aa-UT; Sun, 08 Jan 2017 15:33:22 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1226 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cQK9Z-00008A-T4; Sun, 08 Jan 2017 15:33:22 -0500 Date: Sun, 08 Jan 2017 22:33:16 +0200 Message-Id: <83r34di96b.fsf@gnu.org> From: Eli Zaretskii To: aditya siram CC: emacs-devel@gnu.org In-reply-to: (message from aditya siram on Sun, 8 Jan 2017 13:02:21 -0600) Subject: Re: Occasional Crash When Running `rgrep` Reply-to: Eli Zaretskii References: <83inpuegd9.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 20:33:27 -0000 > From: aditya siram > Date: Sun, 8 Jan 2017 13:02:21 -0600 > Cc: "emacs-devel@gnu.org Development" > > It took a couple of day for it to happen again, but here's the human readable backtrace: > Jan 08 13:01:55 deech-thinkpad systemd-coredump[25660]: Process 27577 (emacs) of user 1000 dumped > core. > > Stack trace of thread 27577: > #0 0x00007efc14652f5f raise (libpthread.so.0) > #1 0x00000000004e33b1 terminate_due_to_signal (emacs-25.1) > #2 0x00000000004fa83e handle_fatal_signal (emacs-25.1) > #3 0x00000000004faa43 deliver_thread_signal (emacs-25.1) > #4 0x00000000004faaaf deliver_fatal_thread_signal (emacs-25.1) > #5 0x00007efc14653080 __restore_rt (libpthread.so.0) > #6 0x00000000004a9fa0 turn_on_face (emacs-25.1) > #7 0x00000000004ae0f2 tty_write_glyphs (emacs-25.1) > #8 0x000000000041904a update_frame_line (emacs-25.1) > #9 0x000000000041c866 update_frame_1 (emacs-25.1) > #10 0x000000000041e08e update_frame (emacs-25.1) > #11 0x0000000000450cd4 redisplay_internal (emacs-25.1) > #12 0x00000000004ed1db read_char (emacs-25.1) > #13 0x00000000004efba0 read_key_sequence (emacs-25.1) > #14 0x00000000004f16c6 command_loop_1 (emacs-25.1) > #15 0x0000000000552c32 internal_condition_case (emacs-25.1) > #16 0x00000000004e37ec command_loop_2 (emacs-25.1) > #17 0x0000000000552bd3 internal_catch (emacs-25.1) > #18 0x00000000004e3750 command_loop (emacs-25.1) > #19 0x00000000004e7d77 recursive_edit_1 (emacs-25.1) > #20 0x000000000050ef5f read_minibuf (emacs-25.1) > #21 0x000000000050f6df Fread_from_minibuffer (emacs-25.1) Thanks. This doesn't look like Emacs was running rgrep, did it? I suggest to try the latest pretest of Emacs 25.2, it could be that this problem is already fixed. From MAILER-DAEMON Sun Jan 08 16:20:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQKtD-0005BF-07 for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 16:20:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41991) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQKt9-0005B9-TQ for emacs-devel@gnu.org; Sun, 08 Jan 2017 16:20:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQKt8-0001xV-HV for emacs-devel@gnu.org; Sun, 08 Jan 2017 16:20:27 -0500 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:35862) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQKt6-0001x8-Gi; Sun, 08 Jan 2017 16:20:24 -0500 Received: by mail-wm0-x22b.google.com with SMTP id c85so80834209wmi.1; Sun, 08 Jan 2017 13:20:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=n3aHolY9ySU68w9uXFrGB1F7+zXs55TFNPkbvEGe0dA=; b=BcaWWwEb1Kjw8Q6/It8RnEefzak15KbD5tbK5OaU74QKzDV3R6Ekvk4QG+iyI/Phib TxlZ3mpyN5ydF7RNepxovwTPVMF025JJyaUSWsIlUMRdCczbTdzrCm66brE4JSI+j1RX WRq1SnwmMIusDW3YnrCSjMuLbkthy9uFUEObnnszBjsISYmSRBxTLwbMgz7F6UVzJnMZ 2bxCkq7YT4zPxoZ5QEwE/xws3Xq3w+9y63r8jyiy7UgacskklFpArVKW8YEEExLKOBcO cSmeBHGiBbQH+mF26FPtDzJaI01He3YuFS9YTZmcXniyzt2C2YMAisrVTHTaMSdR8hvM hKcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=n3aHolY9ySU68w9uXFrGB1F7+zXs55TFNPkbvEGe0dA=; b=FWoZhjd+B3YjqkK5Mw+/TAsGrdJre3gx2d3RDU0lNTNggEacoY3NvTIcbAen2k3FgK kQWoFK2KhThFwdlf3DMwO01wIS0WaAjkbfuAGdGoEq2Z0fD5aoLK/XpErCNUVWCfQVR0 Ws5BwEIgOYPDzKM1rhJKf3dd8eW7xSqpAHWeiT4ElbyzRgyVSz5loF0PxbqaGbhQI+Bj gOtPeR5YmumrHt6RALPF1Yy/w0iA5IGbUl6SkLMCntycX8X2bJtl8Xkx5qy+ZErpwgfn UXvkEwhXFxLFXh1dLQl9Ip+Yjg/6uH9cu22DZs4yJR+X873o7+3n+qvasWpDG4H1APWi RZfg== X-Gm-Message-State: AIkVDXL9lduoH/qX/rakgoA8U0IsnCbR1xTxLs6AmNzwCnhewxI133A7LYA1sZ6Vmw3cdjRkulr00FgSMwqaHw== X-Received: by 10.28.168.12 with SMTP id r12mr3003898wme.57.1483910423081; Sun, 08 Jan 2017 13:20:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.163.196 with HTTP; Sun, 8 Jan 2017 13:19:42 -0800 (PST) In-Reply-To: <83r34di96b.fsf@gnu.org> References: <83inpuegd9.fsf@gnu.org> <83r34di96b.fsf@gnu.org> From: aditya siram Date: Sun, 8 Jan 2017 15:19:42 -0600 Message-ID: Subject: Re: Occasional Crash When Running `rgrep` To: Eli Zaretskii Cc: "emacs-devel@gnu.org Development" Content-Type: multipart/alternative; boundary=001a114cc80ca57a7405459bd1a1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jan 2017 21:20:29 -0000 --001a114cc80ca57a7405459bd1a1 Content-Type: text/plain; charset=UTF-8 Yeah, it wasn't running 'rgrep'. I guess any intuition I had about why this is happening is completely wrong. I'll try the pretest. Thanks! On Sun, Jan 8, 2017 at 2:33 PM, Eli Zaretskii wrote: > > From: aditya siram > > Date: Sun, 8 Jan 2017 13:02:21 -0600 > > Cc: "emacs-devel@gnu.org Development" > > > > It took a couple of day for it to happen again, but here's the human > readable backtrace: > > Jan 08 13:01:55 deech-thinkpad systemd-coredump[25660]: Process 27577 > (emacs) of user 1000 dumped > > core. > > > > Stack trace of thread 27577: > > #0 0x00007efc14652f5f raise (libpthread.so.0) > > #1 0x00000000004e33b1 terminate_due_to_signal (emacs-25.1) > > #2 0x00000000004fa83e handle_fatal_signal (emacs-25.1) > > #3 0x00000000004faa43 deliver_thread_signal (emacs-25.1) > > #4 0x00000000004faaaf deliver_fatal_thread_signal (emacs-25.1) > > #5 0x00007efc14653080 __restore_rt (libpthread.so.0) > > #6 0x00000000004a9fa0 turn_on_face (emacs-25.1) > > #7 0x00000000004ae0f2 tty_write_glyphs (emacs-25.1) > > #8 0x000000000041904a update_frame_line (emacs-25.1) > > #9 0x000000000041c866 update_frame_1 (emacs-25.1) > > #10 0x000000000041e08e update_frame (emacs-25.1) > > #11 0x0000000000450cd4 redisplay_internal (emacs-25.1) > > #12 0x00000000004ed1db read_char (emacs-25.1) > > #13 0x00000000004efba0 read_key_sequence (emacs-25.1) > > #14 0x00000000004f16c6 command_loop_1 (emacs-25.1) > > #15 0x0000000000552c32 internal_condition_case (emacs-25.1) > > #16 0x00000000004e37ec command_loop_2 (emacs-25.1) > > #17 0x0000000000552bd3 internal_catch (emacs-25.1) > > #18 0x00000000004e3750 command_loop (emacs-25.1) > > #19 0x00000000004e7d77 recursive_edit_1 (emacs-25.1) > > #20 0x000000000050ef5f read_minibuf (emacs-25.1) > > #21 0x000000000050f6df Fread_from_minibuffer (emacs-25.1) > > Thanks. This doesn't look like Emacs was running rgrep, did it? > > I suggest to try the latest pretest of Emacs 25.2, it could be that > this problem is already fixed. > --001a114cc80ca57a7405459bd1a1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Yeah, it wasn't running 'rgrep'. I guess = any intuition I had about why this is happening is completely wrong. I'= ll try the pretest.
Thanks!
On Sun, Jan 8, 2017 at 2:33 PM, Eli Zaretskii = <eli= z@gnu.org> wrote:
> Fro= m: aditya siram <aditya.siram@= gmail.com>
> Date: Sun, 8 Jan 2017 13:02:21 -0600
> Cc: "emacs-devel@gnu.org Development" <emacs-devel= @gnu.org>
>
> It took a couple of day for it to happen again, but here's the hum= an readable backtrace:
> Jan 08 13:01:55 deech-thinkpad systemd-coredump[25660]: Process 27577 = (emacs) of user 1000 dumped
> core.
>
> Stack trace of thread 27577:
> #0 0x00007efc14652f5f raise (libpthread.so.0)
> #1 0x00000000004e33b1 terminate_due_to_signal (emacs-25.1)
> #2 0x00000000004fa83e handle_fatal_signal (emacs-25.1)
> #3 0x00000000004faa43 deliver_thread_signal (emacs-25.1)
> #4 0x00000000004faaaf deliver_fatal_thread_signal (emacs-25.1)
> #5 0x00007efc14653080 __restore_rt (libpthread.so.0)
> #6 0x00000000004a9fa0 turn_on_face (emacs-25.1)
> #7 0x00000000004ae0f2 tty_write_glyphs (emacs-25.1)
> #8 0x000000000041904a update_frame_line (emacs-25.1)
> #9 0x000000000041c866 update_frame_1 (emacs-25.1)
> #10 0x000000000041e08e update_frame (emacs-25.1)
> #11 0x0000000000450cd4 redisplay_internal (emacs-25.1)
> #12 0x00000000004ed1db read_char (emacs-25.1)
> #13 0x00000000004efba0 read_key_sequence (emacs-25.1)
> #14 0x00000000004f16c6 command_loop_1 (emacs-25.1)
> #15 0x0000000000552c32 internal_condition_case (emacs-25.1)
> #16 0x00000000004e37ec command_loop_2 (emacs-25.1)
> #17 0x0000000000552bd3 internal_catch (emacs-25.1)
> #18 0x00000000004e3750 command_loop (emacs-25.1)
> #19 0x00000000004e7d77 recursive_edit_1 (emacs-25.1)
> #20 0x000000000050ef5f read_minibuf (emacs-25.1)
> #21 0x000000000050f6df Fread_from_minibuffer (emacs-25.1)

Thanks.=C2=A0 This doesn't look like Emacs was running rgre= p, did it?

I suggest to try the latest pretest of Emacs 25.2, it could be that
this problem is already fixed.

--001a114cc80ca57a7405459bd1a1-- From MAILER-DAEMON Sun Jan 08 22:23:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQQYs-0005aj-P2 for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 22:23:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35023) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQPK5-0000Nt-RL for emacs-devel@gnu.org; Sun, 08 Jan 2017 21:04:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQPK2-0008Aw-Nd for emacs-devel@gnu.org; Sun, 08 Jan 2017 21:04:33 -0500 Received: from icgriddb04.seas.upenn.edu ([158.130.57.72]:49282) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQPK2-0008Ah-JI for emacs-devel@gnu.org; Sun, 08 Jan 2017 21:04:30 -0500 Received: from [10.13.0.6] (helo=ofb.net) by ICGRIDDB04.SEAS.upenn.edu with esmtp (Exim 4.87) (envelope-from ) id 1cQPK1-0005Ya-4e for emacs-devel@gnu.org; Sun, 08 Jan 2017 21:04:29 -0500 Received: from thutmose (unknown [24.7.113.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ofb.net (Postfix) with ESMTPSA id D4DE8412AE; Sun, 8 Jan 2017 18:04:23 -0800 (PST) Received: from frederik by thutmose with local (Exim 4.87) (envelope-from ) id 1cQPJk-0005eA-Qh; Sun, 08 Jan 2017 18:04:13 -0800 Date: Sun, 8 Jan 2017 18:04:12 -0800 From: frederik@ofb.net To: emacs-devel@gnu.org Subject: accumulated "(package-initialize)" lines Message-ID: <20170109020412.GA20121@ofb.net> Reply-To: frederik@ofb.net MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.7.2 (2016-11-26) Sender: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 158.130.57.72 X-Mailman-Approved-At: Sun, 08 Jan 2017 22:23:52 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 02:04:35 -0000 Hi all, I'm not subscribed to this list and hope my message gets through; please Cc me on replies. I noticed that my ~/.emacs files on various systems start accumulating multiple sections that say: ;; Added by Package.el. This must come before configurations of ;; installed packages. Don't delete this line. If you don't want it, ;; just comment it out by adding a semicolon to the start of the line. ;; You may delete these explanatory comments. (package-initialize) Apparently whatever code inserts that line isn't able to check correctly that the line has already been inserted. I got various kinds of advice on #emacs IRC like "write to emacs-devel and ask them to revert that 'feature'" and "I just patch it out of emacs". I'm not sure where I stand on the question of add-ons that add stuff to my configuration files, but it would be nice if they worked correctly. And it sounds like this feature has been an annoyance to some of your more experienced users, which makes me wonder if their opinions aren't being given enough weight. Thanks, Frederick Eaton From MAILER-DAEMON Sun Jan 08 23:39:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQRjd-00016e-JE for mharc-emacs-devel@gnu.org; Sun, 08 Jan 2017 23:39:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQRjb-00016T-Dy for emacs-devel@gnu.org; Sun, 08 Jan 2017 23:39:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQRjY-0004Xl-Bb for emacs-devel@gnu.org; Sun, 08 Jan 2017 23:39:03 -0500 Received: from [195.159.176.226] (port=54085 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQRjY-0004Xb-4q for emacs-devel@gnu.org; Sun, 08 Jan 2017 23:39:00 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cQRjR-0001OS-AB for emacs-devel@gnu.org; Mon, 09 Jan 2017 05:38:53 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: accumulated "(package-initialize)" lines Date: Sun, 08 Jan 2017 23:38:49 -0500 Lines: 22 Message-ID: References: <20170109020412.GA20121@ofb.net> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:Q5WORwvNvcxJzOFZ69f8r9/zphI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 04:39:04 -0000 > I noticed that my ~/.emacs files on various systems start accumulating > multiple sections that say: > > ;; Added by Package.el. This must come before configurations of > ;; installed packages. Don't delete this line. If you don't want it, > ;; just comment it out by adding a semicolon to the start of the line. > ;; You may delete these explanatory comments. > (package-initialize) I'd recommend you reach right away for the M-x report-emacs-bug. > And it sounds like this feature has been an annoyance to some of your > more experienced users, which makes me wonder if their opinions aren't > being given enough weight. They haven't been nearly loud enough, I guess: I haven't even noticed those sentiments. But in your case (where they accumulate), it's not even a question of liking or not, it's just a clear cut misbehavior. Stefan From MAILER-DAEMON Mon Jan 09 02:13:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQU8b-00067s-Su for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 02:13:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54545) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQTWX-0008LQ-GQ for emacs-devel@gnu.org; Mon, 09 Jan 2017 01:33:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQTWS-0003lQ-Gj for emacs-devel@gnu.org; Mon, 09 Jan 2017 01:33:41 -0500 Received: from mail-pg0-x22c.google.com ([2607:f8b0:400e:c05::22c]:35648) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQTWS-0003kX-A0 for emacs-devel@gnu.org; Mon, 09 Jan 2017 01:33:36 -0500 Received: by mail-pg0-x22c.google.com with SMTP id 194so11356306pgd.2 for ; Sun, 08 Jan 2017 22:33:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:mime-version:to:from:subject:date:importance; bh=DoJQaG2h6DlKr1Wgmk6HFOONHe/UO45Uq3LZ+KTXnaQ=; b=oBJJ2uqjI4edInkCEGTgeKWp5cQd95HKsjRsSS61IlT9dGILnY91vX2DoX28jSROds mfL5zrA6nE/bbHchuCR4XtMWtn7wLtrAiMn6uGd/CU1DKkksel8kb9btVn9N1BRG5PcQ J4SQ4ln17TiJqylrPkMkwMPJ1Qkq6RIPcGx+RAi5BRev95eOuieM3mVdkr9sDoJpVE2B mj7+LE2/h2yCM8oi2lAZyGEhUou9LilxxV2+D+Oq91VMJ2Fg2AglUvwH4cwYZgpzp0km 60m3UIWngarPP2BD8MlA9bGVW4dyFX7nGjEGHL1TWThRnVGagIcnVsNg+dOMz1fKkor2 WihQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:mime-version:to:from:subject:date :importance; bh=DoJQaG2h6DlKr1Wgmk6HFOONHe/UO45Uq3LZ+KTXnaQ=; b=eclpJ6E3HPN9ra4x251bJBxNtQ81OybpwFHGRrb0u801a51ukomXZzSgwwtKOQ+FeV z3JVW60UB7TvmR6DEhEn3BlGWGpIf6Wzd8yT8z17grwRdIGHefrRDit0ItKWCWZ0W2hU /eO/+Azb1VAGmoMTCnL9FpTYusFcwH98MozN+BaP5m5/1lywcxlNUI2tg05n8BfBOfKM 1OygOy5epD3ke8tj188Ce4Q/o1QsNYDPnieVceBeVXx6tJdwhyT+RpGB0a3s0pOqKo3x kdGRauJWw7bGg7xXIZH4nncEltu+Bsfb7Ec9gBJa/gt6OS1UCN2f3/rKbsGgtRm6NxWZ jK4g== X-Gm-Message-State: AIkVDXLQ9EZrfh4u1vC9ivQbh01I0MvzW8DkY37B7yL9SyVERtdpkXaPzunrbBTSDknqjA== X-Received: by 10.84.162.204 with SMTP id o12mr193122588plg.17.1483943613702; Sun, 08 Jan 2017 22:33:33 -0800 (PST) Received: from ?IPv6:::ffff:192.168.1.69? (d75-156-70-135.bchsia.telus.net. [75.156.70.135]) by smtp.gmail.com with ESMTPSA id t129sm169951688pgc.32.2017.01.08.22.33.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Jan 2017 22:33:33 -0800 (PST) Message-ID: <58732ebd.8778630a.25994.c3c9@mx.google.com> MIME-Version: 1.0 To: "phillip.lord@russet.org.uk" , "emacs-devel@gnu.org" From: Subject: Re: Regarding performance issues with the Emacs 25.1 Windows-build Date: Sun, 8 Jan 2017 22:33:27 -0800 Importance: normal X-Priority: 3 Content-Type: multipart/alternative; boundary="_83A9B199-94FC-4318-9EAC-2BCB00DD6E00_" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::22c X-Mailman-Approved-At: Mon, 09 Jan 2017 02:13:00 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 06:33:42 -0000 --_83A9B199-94FC-4318-9EAC-2BCB00DD6E00_ Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hi, I encountered huge lags when using org mode (detailed below) on build =E2= =80=9Cemacs-25.1-2-x86_64-w64-mingw32.zip=E2=80=9D with =E2=80=9Cemacs-25-x= 86_64-deps.zip=E2=80=9D (from ftp.gnu.org). With the same configuration and the same org file, everything is fine on Ma= c (emacs 25) and on Windows (emacs 24.5), so I think I might post is here. = I am sorry if this is the wrong place. Reproducing it is a little bit tricky. It seems to happen when certain utf8 symbols are displayed in the buffer. By saying "certain utf8 symbols=E2=80=9D, I refer to those that are not wit= h the common width, so it depends on the font you are using. What I did is the following. I am using the latest org mode (version 9) and have turned on =E2=80=9Corg-= pretty-entities=E2=80=9D , which replaces some latex codes (eg. \alpha) wit= h their corresponding utf-8 symbols. The font I use in emacs is =E2=80=9CHack=E2=80=9D. With this font, greek le= tters are all OK, they have the same width as the English letters. One example to show the lag is =E2=80=9C\gg=E2=80=9D. Simply open an org file and put in =E2=80=9C\gg=E2=80=9D followed by a spac= e and some other letters. =E2=80=9C\gg=E2=80=9D will be displayed as a utf8= symbol. Then try to move the cursor quickly. You should experience huge lags. Any help is appreciated. Best, jsj --_83A9B199-94FC-4318-9EAC-2BCB00DD6E00_ Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8"

Hi,

&nb= sp;

I encountered huge lags when using org mo= de (detailed below) on build =E2=80=9Cemacs-25.1-2-x86_64-w64-mingw32.zip= =E2=80=9D with =E2=80=9Cemacs-25-x86_64-deps.zip=E2=80=9D (from ftp.gnu.org).

With the same = configuration and the same org file, everything is fine on Mac (emacs 25) a= nd on Windows (emacs 24.5), so I think I might post is here. I am sorry if = this is the wrong place.

 

Reproducing it is a little bit tricky.

It seems to happen when certain utf8 symbols are displayed in the buffe= r.

By saying "certain utf8 symbols=E2=80=9D, I= refer to those that are not with the common width, so it depends on the fo= nt you are using.

What I did is the following.

<= p class=3DMsoNormal> 

I am using th= e latest org mode (version 9) and have turned on =E2=80=9Corg-pretty-entiti= es=E2=80=9D , which replaces some latex codes (eg. \alpha) with their corre= sponding utf-8 symbols.

The font I use in emacs is = =E2=80=9CHack=E2=80=9D. With this font, greek letters are all OK, they have= the same width as the English letters.

One example= to show the lag is =E2=80=9C\gg=E2=80=9D.

Simply o= pen an org file and put in =E2=80=9C\gg=E2=80=9D followed by a space and so= me other letters. =E2=80=9C\gg=E2=80=9D will be displayed as a utf8 symbol.=

Then try to move the cursor quickly. You should ex= perience huge lags.

 

Any help is appreciated.

 

Best,

jsj

= --_83A9B199-94FC-4318-9EAC-2BCB00DD6E00_-- From MAILER-DAEMON Mon Jan 09 02:40:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQUZI-0001rj-Pn for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 02:40:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36218) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQUZG-0001rc-9C for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:40:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQUZF-0002EP-3E for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:40:34 -0500 Received: from mail-ua0-x233.google.com ([2607:f8b0:400c:c08::233]:36183) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQUZE-0002Dm-TR for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:40:32 -0500 Received: by mail-ua0-x233.google.com with SMTP id 96so30877319uaq.3 for ; Sun, 08 Jan 2017 23:40:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=cna4s9I39skqtz2Oj40HeDuGNUi8ilHUp3mVsSFXykA=; b=ijlR5Hk/Vaf8fonNX4Ucvy3NdfR2K5q4Wxeb3VEgIlnLcmVKe2IVT2CGl1LrOvqy+L 8ixKGUQLf0/VDHtnHmUFrtjq0M1yck6zJXs7jXsklFzpus4IRbAKFqtAAAuKmkML9TUk vpj8frIW5tL8UL7dX4vtTiDbjY/xKgYwSMtkxnVumkSq/TJpSSv2hmx2BmiuN9qn0xVJ Sy5nGc0FYg2VqtZFcdpTyskq828iWe+ZFVaIeuEis9bHrzgwPEah6V6DxPKE0k3D4TeL wsjO5ejhBa68vbeidH5RT4lbAkD6FtSyEiOlleEEBRnbaLt2LKxjftAluob3alDLy+FH 8vRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=cna4s9I39skqtz2Oj40HeDuGNUi8ilHUp3mVsSFXykA=; b=U8+lv3X4MwArObT+ayQmPYtYQhdvTe1FiAkg6kujrD5cqNUE9VHTRBde0ZHB+jGkG6 KzYPMDkNYFCS1XccK/aaN7kuHF6iFDYgl2p4Nt3nCpQX84M8VdEeIWv7dORfCDsBN8pf BXS5VE+Y92NMXdhc5VxIuw46fM5WGv/3+H48kswi2e40SM4hXH6TTL39iZeu+7e8YbxA Xa2CmG285QW8MIIY8x2xCJMyOe8Q/1GbrwEXY2Pb+RxktGJNt3Z18w50HBNJVDnklgT6 TsQqZ13PTOLYJFqoqcaoMTyEMLpB5Wi65Nh1SJRbpu0oseDBa9T5iM+yX591RO8MUd4l SAkg== X-Gm-Message-State: AIkVDXLDVUxOSHWfVAzzQz+1QH3j3Vb2sQPVpqyb+7XNEkusnJCy2fF+tnNwoTQHvqKJESiKL45GYlmZhMak0w== X-Received: by 10.176.81.51 with SMTP id e48mr554955uaa.100.1483947630545; Sun, 08 Jan 2017 23:40:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.71.29 with HTTP; Sun, 8 Jan 2017 23:40:00 -0800 (PST) In-Reply-To: <58732ebd.8778630a.25994.c3c9@mx.google.com> References: <58732ebd.8778630a.25994.c3c9@mx.google.com> From: Richard Copley Date: Mon, 9 Jan 2017 07:40:00 +0000 Message-ID: Subject: Re: Regarding performance issues with the Emacs 25.1 Windows-build To: jsj.register@gmail.com Cc: "phillip.lord@russet.org.uk" , "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 07:40:35 -0000 On 9 January 2017 at 06:33, wrote: > I encountered huge lags when using org mode (detailed below) on build > =E2=80=9Cemacs-25.1-2-x86_64-w64-mingw32.zip=E2=80=9D with =E2=80=9Cemacs= -25-x86_64-deps.zip=E2=80=9D (from > ftp.gnu.org). > > With the same configuration and the same org file, everything is fine on = Mac > (emacs 25) and on Windows (emacs 24.5), so I think I might post is here. = I > am sorry if this is the wrong place. > > > > Reproducing it is a little bit tricky. > > It seems to happen when certain utf8 symbols are displayed in the buffer. > > By saying "certain utf8 symbols=E2=80=9D, I refer to those that are not w= ith the > common width, so it depends on the font you are using. > > What I did is the following. > > > > I am using the latest org mode (version 9) and have turned on > =E2=80=9Corg-pretty-entities=E2=80=9D , which replaces some latex codes (= eg. \alpha) with > their corresponding utf-8 symbols. > > The font I use in emacs is =E2=80=9CHack=E2=80=9D. With this font, greek = letters are all OK, > they have the same width as the English letters. > > One example to show the lag is =E2=80=9C\gg=E2=80=9D. > > Simply open an org file and put in =E2=80=9C\gg=E2=80=9D followed by a sp= ace and some other > letters. =E2=80=9C\gg=E2=80=9D will be displayed as a utf8 symbol. > > Then try to move the cursor quickly. You should experience huge lags. Try installing the Symbola font, if you don't already have it. (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D25279) From MAILER-DAEMON Mon Jan 09 02:57:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQUpu-0007o8-W3 for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 02:57:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38691) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQUps-0007nh-8Z for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:57:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQUpn-0002TC-AG for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:57:44 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:32993) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQUpn-0002S8-2o for emacs-devel@gnu.org; Mon, 09 Jan 2017 02:57:39 -0500 Received: by mail-lf0-x242.google.com with SMTP id k62so8279300lfg.0 for ; Sun, 08 Jan 2017 23:57:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=5EmViAP/JLMvtie69/kxycHXhhNRy8Nvv6HwTHc2w0E=; b=qB0zXHKWvzyszefonIOjlMJAwpaW/qHroNL6jmuC+pHDTpXvVYuLn/uO/Lpp6k2MOp 8y8+fKzlBzI+o+VF+oxqZxDhH4uFvQzzo/kBhUo6LlNWn7WYaAFDQHNiviRBoTsitv5/ EU4QlQVYr2nDA6Ya5yJrKkCzosOLMEMqzg4CnLAxtEe4TUxJ4GWH7LTU6Hc7N3HS3D1/ WyPXGF7HVmtPfUxbNqoy98HW+5arPaROBCHgyNeiVmm2BqqrikMenGjkfGXbhlgeCmCb ILJ7QpfwXk31W7DnPNZCdi40EyUM5TSIG6SM0VTU7pNUW+VtBvFC/lGUci790+O5mcnV JzaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=5EmViAP/JLMvtie69/kxycHXhhNRy8Nvv6HwTHc2w0E=; b=clPMi+SYlVC04W63yDj/OA9dl3SV2Lp6S/38naWTjHPUZI4/LGlgFxoK85lTL0Y2tY iEDKVdIfvGblCZuNS6WaeEO56mrug8zBB5Rjr8IUIxw8h0KdHdIl4jjQ/Wwud4fMw6Qk vYow42l0VTkWPLjghCxRXYfNsMj+GIQnTBjgmUo6m39DRI6OA+SNLXwWc5BVz15vRBRR MoCHWqG6HAOtwvIL5QRY/2xhPvI1dScP7X66rnIYYjoJgOOW9ergLCoEFS2KmceFH2Cs /8N/Nu08ZnHCfEZmRC8XsZ51NUEWpcDz9bTUrVb5ORflBiN67MeEWUr9ckHSGj+nwEUO AKlQ== X-Gm-Message-State: AIkVDXIR3pnhqfZEjx6RLfmPrTl0QJAj0ksG1t/ZsTtJwA7enGEKd/xMdErpnmP2vjeGzA== X-Received: by 10.25.77.83 with SMTP id a80mr2667612lfb.140.1483948656132; Sun, 08 Jan 2017 23:57:36 -0800 (PST) Received: from [192.168.1.73] ([37.19.36.146]) by smtp.gmail.com with ESMTPSA id a71sm834791lfe.36.2017.01.08.23.57.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Jan 2017 23:57:35 -0800 (PST) From: Nikolay Kudryavtsev X-Google-Original-From: Nikolay Kudryavtsev Subject: Re: Regarding performance issues with the Emacs 25.1 Windows-build To: jsj.register@gmail.com, "phillip.lord@russet.org.uk" , "emacs-devel@gnu.org" References: <58732ebd.8778630a.25994.c3c9@mx.google.com> Message-ID: <609321cd-aea7-88a8-e507-526c878cb4b7@gmail.com> Date: Mon, 9 Jan 2017 10:57:34 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <58732ebd.8778630a.25994.c3c9@mx.google.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 07:57:45 -0000 It's probably another case of 24565 aka 15876. Try setting inhibit-compacting-font-caches to t, if you're using something newer than 25.1 release. For 25.1 you can replace default fontset for a range of characters like this: (set-fontset-font t '(#x21d2 . #x21d2) (font-spec :family "FreeSerif")) -- Best Regards, Nikolay Kudryavtsev From MAILER-DAEMON Mon Jan 09 05:28:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQXCA-0008PF-LG for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 05:28:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQXC8-0008NY-5H for emacs-devel@gnu.org; Mon, 09 Jan 2017 05:28:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQXC4-0001Zn-47 for emacs-devel@gnu.org; Mon, 09 Jan 2017 05:28:52 -0500 Received: from mail-qt0-x236.google.com ([2607:f8b0:400d:c0d::236]:33321) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQXC3-0001Yi-Uz for emacs-devel@gnu.org; Mon, 09 Jan 2017 05:28:48 -0500 Received: by mail-qt0-x236.google.com with SMTP id v23so131559798qtb.0 for ; Mon, 09 Jan 2017 02:28:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=CTEtj/EmqepbcJ2t3RXpdTSlAtt4viNh3V1cfDzuWNY=; b=qqhf8ioWUKGAIrVgJZE12cjRy0Kebyzk2fzNz+h/KkqHZOz9kVsbfS+Iz2S5hZM5m/ gMko57HPK9H/opijKmuqDJlopHcQuT1Dp3Pf95eYr31yO2u+leqsBN8m/EjeLYuXJJUP 2ZGdQaEy6YGo5YEMoYqrIl1neOmQHpRHoZo5ly4QKf1/gb/eiCkVUE1+0AlUJijBzour waFoXHF2aWLC10IleQZu7tSw0hVk5x1uaAivlrOFFCn8ijxMgN1OUbiTt55IQZ6napnl dCoJ9Gk/SW+aaj3pHguxwi2zZz4Ngz75OeRXwHkDNiWRGwj2CEGoCIduW6ktZYcDzM4h j/Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=CTEtj/EmqepbcJ2t3RXpdTSlAtt4viNh3V1cfDzuWNY=; b=Pz+3EEs9v3M3g9X68A9jpXN9h4QMtHhs1WEyPgOm9GsfFED4pD9hdDGqwEFpWX+y/F /hWs9qEeKDNQGoaItvBcb6Cr5dzOM8VA2dXHfcHwG9xg1mt7elQ9lzpZ7IAI18tQCe7W bxhigh8r5RSnQwlMdV2QaGXEFEMvm/z0apdW1USJ3HRQbl1TJQe+SQsZfqWVG2/vIRwf i2N0lkN71QpSuI2j82xJ14rvkEQxf372rvS32KTogtvf6nI3VUUVDpfWiHd2aiVOrY6f duTLnFDg2ptjNSE7FFN3C7bGf8X0sLpdV1ogQt2fg+W3i4Wk2JpXoBkIwTVCVZUmSJh7 afww== X-Gm-Message-State: AIkVDXJslovxU6fKc/FRf9lzcOk74V+qzi7TkztyfMyuiFtD2mytrTD+q4UdX460zSDK5w== X-Received: by 10.200.51.6 with SMTP id t6mr71039621qta.75.1483957725703; Mon, 09 Jan 2017 02:28:45 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id 30sm56957216qth.14.2017.01.09.02.28.44 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Jan 2017 02:28:44 -0800 (PST) Subject: Re: Skipping unexec via a big .elc file Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: <83tw9bb42m.fsf@gnu.org> Date: Mon, 9 Jan 2017 05:28:43 -0500 Cc: Emacs developers Content-Transfer-Encoding: quoted-printable Message-Id: <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> References: <871szqwu51.fsf@users.sourceforge.net> <831szqhbc2.fsf@gnu.org> <87d1itt79z.fsf_-_@users.sourceforge.net> <7baa18d4-2b09-caa8-005e-29008a383ad1@cs.ucla.edu> <83mvhwrgd5.fsf@gnu.org> <8539f38f-9a11-44c3-4de7-bb974c96206c@cs.ucla.edu> <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 10:28:53 -0000 > On Jan 7, 2017, at 04:40, Eli Zaretskii wrote: >=20 > Ken, >=20 > I tried to get rid of calling dump-emacs in the raeburn-startup > branch, see the changes below. The resulting code builds and produces > dumped.elc, but then fails to compile the *.el files: I=E2=80=99ve been looking into it this weekend. It appears that in some = of my builds I=E2=80=99m seeing in dumped.elc stuff along the lines of: (setplist 'window-parameter '(gv-expander (closure (t) #19=3D(do &rest = args) (gv--defsetter 'window-parameter (lambda #20=3D(val &rest args) = `(,'set-window-parameter . #21=3D(,@args ,val))) . #22=3D(do args))) = side-effect-free t)) That=E2=80=99s with my #N# patch removed; that patch obfuscates the code = but I don=E2=80=99t think it should be changing the meaning. The comma-quote-symbol syntax looks strange to me, could that be causing = it? > This could be related to the fact that the original code produced the > first dumped.elc in the top-level directory, not in src/, and I needed > to fix that, since otherwise bootstrap-emacs would exit immediately > (see the changes below). In the original version, src/dumped.elc was > only produced after all the necessary Lisp files were byte-compiled > already. In the GNU/Linux build, the dumped.elc file is generated in the src = directory of the build tree. So that part of your patch didn=E2=80=99t = alter anything for my testing as far as I can see. But the GNU/Linux build supports building in a separate tree from the = source tree, a mode I usually do my builds in, and at startup we look = for dumped.elc in the src directory of the source tree, not the build = tree. So I still have to tweak it manually. > So it seems like the current build process on this branch still > somehow depends on a dumped emacs executable, until it byte-compiles > all the preloaded Lisp files, and produces dumped.elc from that. IOW, > the first dumped.elc produced before byte-compiling those files is not > up to the job of running Emacs for byte-compiling Lisp files. How can > we fix that, so that unexec and its call can be really removed from > the sources? Or did I miss something? A workaround might be to use loadup.el instead of dumped.elc during that = stage. But that doesn=E2=80=99t fix the problem. Ken= From MAILER-DAEMON Mon Jan 09 21:04:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQlni-0000Wo-NJ for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 21:04:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53904) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQlnf-0000Wf-Lj for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:04:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQlnc-0006N0-HA for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:04:35 -0500 Received: from [195.159.176.226] (port=47235 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQlnc-0006FK-Bc for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:04:32 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cQlnS-0001Lg-2A for emacs-devel@gnu.org; Tue, 10 Jan 2017 03:04:22 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Problem with new cl-lib 0.6 in ELPA Date: Mon, 09 Jan 2017 21:04:17 -0500 Lines: 21 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:mXzYMwcZGvet70h9Jz2lLg+Ilqo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 02:04:36 -0000 Steve> The new cl-lib version now declares a package dependency on Emacs Steve> 21, which actually renders it completely uninstallable in Emacs < Steve> 24, since the only versions of package.el usable in Emacs 23.x Steve> have no concept of built-in packages like "emacs". > > Something is weird here, because "emacs" as a package was in package.el > at the very beginning. This is also documented in > (info "(elisp) Library Headers") > > I'm not aware that there is any version of package.el compatible with > 23.4 which supports both multiple archives and the "emacs" > pseudo-package. AFAIK most ELPA packages don't care very much about being installable with package.el in Emacs<24, but I don't see any reason why we can't make a package.el that works in Emacs<24 and is "up-to-date" in the sense that it supports the `emacs` package and the new version-less dependencies. Stefan From MAILER-DAEMON Mon Jan 09 21:25:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQm8B-0003uq-At for mharc-emacs-devel@gnu.org; Mon, 09 Jan 2017 21:25:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57719) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQm88-0003uS-Dd for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:25:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQm83-00042I-GS for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:25:44 -0500 Received: from [195.159.176.226] (port=59479 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQm83-000426-9Z for emacs-devel@gnu.org; Mon, 09 Jan 2017 21:25:39 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cQm7v-0006dW-Jt for emacs-devel@gnu.org; Tue, 10 Jan 2017 03:25:31 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Skipping unexec via a big .elc file Date: Mon, 09 Jan 2017 21:25:23 -0500 Lines: 37 Message-ID: References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:RjBsdV6z2xZl5gOXY+fKczJvI3g= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 02:25:45 -0000 > `(,'set-window-parameter . #21=(,@args ,val))) . #22=(do args))) > side-effect-free t)) > > The comma-quote-symbol syntax looks strange to me, could that be causing it? The ,' is a result of evaluation of code like ``(,',setter ,@args ,val) so, it's indeed strange, but only to the extent that nested backquotes are "strange". Eli wrote: > Multiple args to , are not supported: ((\, (quote set-window-parameter)) temp (\, (quote set-window-parameter)) end) Hmm... I don't understand this. This message seems to come from backquote.el: ((eq (car s) backquote-unquote-symbol) (if (<= level 0) (cond ((> (length s) 2) ;; We could support it with: (cons 2 `(list . ,(cdr s))) ;; But let's not encourage such uses. (error "Multiple args to , are not supported: %S" s)) (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1) (nth 1 s)))) (backquote-delay-process s (1- level)))) but then `s` should have \, in its car, whereas the above message indicates that (car s) is (\, (quote set-window-parameter)) which implies we should not have entered this branch. Maybe I'm just too tired to read this code right, tho. Stefan From MAILER-DAEMON Tue Jan 10 01:08:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQpbX-00010l-Am for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 01:08:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40173) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQpbU-0000y5-HB for emacs-devel@gnu.org; Tue, 10 Jan 2017 01:08:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQpbT-0005ot-1E for emacs-devel@gnu.org; Tue, 10 Jan 2017 01:08:16 -0500 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]:33897) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQpbS-0005oL-Li for emacs-devel@gnu.org; Tue, 10 Jan 2017 01:08:14 -0500 Received: by mail-lf0-x244.google.com with SMTP id q89so7596686lfi.1 for ; Mon, 09 Jan 2017 22:08:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=GeVGbz6xBK3N1Tkr+RdzcjN2n1CA4oMLSYftKQo97h4=; b=cXQht/XqYj2h3WsC0fmWLHKQKt71r08GSrj1ZgonO3Iiy5HE3QcxONJp5Weh7BUN8n r1QAsQTMvfFcdR4Bv7FV42bSyPHCWnK26yRyz88+wM3XgtNhD4C/0I6zBZl7sJZbOYfR atFObIe+WwmQ4uT+eH6xK+K56PiptgibAFgk053zZKZ6Wspr7XEZZw9HEvhtwF1rbDCp oRdhdl4AaokbYbED4rZPrNimdDPA9uYGCX+W4vNJWbgDSzlmMfSB28wjk07d2KgvPiFb qJHBEREc/Nh5Gp0gnnHYwMNHHgca3zt2jEA3NYRFr3A2NL5Rx8ljqJBaj95eExvEkmQM rCvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=GeVGbz6xBK3N1Tkr+RdzcjN2n1CA4oMLSYftKQo97h4=; b=ejH5f8TQl8zdzhqI4V7ktGbQ6+0SS071YiEXLXc/vFXoErJvUFj3RiOhNUrgAfWpOl CXw65IUiTi9FtZqbOnG1TFY8RPuU8RlpA9rtgKeIMY8sMfAHOpqCI0YaIdGCvk8Zilkz MJsdF0Hve4hhwaJnSGjot8gX61ASO6Aq2SrVkQLn0bQxiYdeKRZGEwaV0dqCNp6JKWPW pXhxA4KaGPC8JV3HF+Mg8O52AVu0iPT5Lp8UsfOPC9aAQ0OiLjAyLfHa3UUrzSxujJeC ANqen54MFA82MrujmyWveZw9j3gKqTDJHqq58zzGOs/o/fP+BVXr/Id6qPHiZOZ6rGW5 Hq1Q== X-Gm-Message-State: AIkVDXJA8+5ULhmqiS8k9S7CYqXw1Jx/qxfrDIVYUdRRu7IViGBlY1CwS4WrVFacF6Px7bfJhJSVWdozrfJ4HQ== X-Received: by 10.46.70.18 with SMTP id t18mr464626lja.6.1484028490709; Mon, 09 Jan 2017 22:08:10 -0800 (PST) MIME-Version: 1.0 From: Johannes Choo Date: Tue, 10 Jan 2017 06:07:59 +0000 Message-ID: Subject: New Package: greek-polytonic.el (First-time contributor) To: emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=f403045f771e067fcc0545b74f16 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 06:08:18 -0000 --f403045f771e067fcc0545b74f16 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi all, I'd like to contribute a new package greek-polytonic.el to ELPA, or where ever it is more appropriate. It's a single file located at https://github.com/jhanschoo/quail-greek-polytonic/blob/master/greek-polyto= nic.el , and I'd like instructions on next steps. I have no problem with giving the FSF full copyright rights. Rationale: Polytonic Greek input is of interest primarily to classicists, people who want to reproduce Ancient Greek quotations, and for input of Katharevousa Greek. There already exist several input methods for Polytonic Greek in the greek.el file distributed with Emacs, but this file improves over them in the following 2 ways: 1) Mapping based on "standard" Win and Mac layouts=E2=80=94The existing inp= ut methods' mappings are modeled after ad-hoc polytonic input schemes devised by classicists, in conjunction with specialized software. The mappings I use are modeled after Mac and Windows polytonic Greek keyboard mappings, (in turn modeled after monotonic Greek), and hence require less context-switching to use for people accustomed to modern and popular Greek keyboards. 2) Input of combining character sequences possible=E2=80=94While the existi= ng input methods allow for the input of bare letters and precomposed letter+diacritics, but not for Unicode letter+diacritic sequences that are not represented by precomposed characters. For example, the sequence ++ is not represented by any precomposed character, but appears frequently in critical editions of classics. greek-polytonic.el allows for the input of combining characters themselves, and substitutes such sequences with their Unicode-canonical precomposed equivalents if they exist; hence input from this method satisfies Unicode-NFC (Normalization Form Canonical Composition), while allowing input of sequences that have no corresponding precomposed character. Though it is to be admitted that font support and Emacs's display support for such decomposed sequences is still rudimentary and the sequence may visually appear funky. While I consider this package functionally complete, there are several avenues for further work when I have time and if there is interest: =E2=80=94Allow "prefix" input of diacritics =C3=A0 la most other input meth= ods. (currently only "postfix" diacritic input is supported) =E2=80=94Allow input of greek numeral modifiers, of archaic letters, and of= greek "symbols". =E2=80=94Allow input of non-combining versions of diacritics. Thanks for your attention and hard work. Bests, Johannes Choo --=20 Johannes Choo B. Comp student at National University of Singapore NUSHackers Coreteam --f403045f771e067fcc0545b74f16 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi all,

I'd like to contribute a ne= w package greek-polytonic.el to ELPA, or where ever it is more appropriate.= It's a single file located at=C2=A0https://github.c= om/jhanschoo/quail-greek-polytonic/blob/master/greek-polytonic.el=C2=A0= , and I'd like instructions on next steps. I have no problem with givin= g the FSF full copyright rights.

Rationale: Polyto= nic Greek input is of interest primarily to classicists, people who want to= reproduce Ancient Greek quotations, and for input of Katharevousa Greek. T= here already exist several input methods for Polytonic Greek in the greek.e= l file distributed with Emacs, but this file improves over them in the foll= owing 2 ways:

1) Mapping based on "standard&q= uot; Win and Mac layouts=E2=80=94The existing input methods' mappings a= re modeled after ad-hoc polytonic input schemes devised by classicists, in = conjunction with specialized software. The mappings I use are modeled after= Mac and Windows polytonic Greek keyboard mappings, (in turn modeled after = monotonic Greek), and hence require less context-switching to use for peopl= e accustomed to modern and popular Greek keyboards.

2) Input of combining character sequences possible=E2=80=94While the exis= ting input methods allow for the input of bare letters and precomposed lett= er+diacritics, but not for Unicode letter+diacritic sequences that are not = represented by precomposed characters. For example, the sequence <alpha&= gt;+<combining macron>+<combining acute accent> is not represen= ted by any precomposed character, but appears frequently in critical editio= ns of classics. greek-polytonic.el allows for the input of combining charac= ters themselves, and substitutes such sequences with their Unicode-canonica= l precomposed equivalents if they exist; hence input from this method satis= fies Unicode-NFC (Normalization Form Canonical Composition), while allowing= input of sequences that have no corresponding precomposed character. Thoug= h it is to be admitted that font support and Emacs's display support fo= r such decomposed sequences is still rudimentary and the sequence may visua= lly appear funky.

While I consider this package fu= nctionally complete, there are several avenues for further work when I have= time and if there is interest:
=E2=80=94Allow "prefix"= input of diacritics =C3=A0 la most other input methods. (currently only &q= uot;postfix" diacritic input is supported)
=E2=80=94Allo= w input of greek numeral modifiers, of archaic letters, and of greek "= symbols".
=E2=80=94Allow input of non-combining versions of = diacritics.

Thanks for your attention and hard wor= k.

Bests,
Johannes Choo
--
Johannes Choo
B. Comp student at National Universit= y of Singapore
NUSHackers Coreteam
--f403045f771e067fcc0545b74f16-- From MAILER-DAEMON Tue Jan 10 02:28:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQqrY-0003IB-6B for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 02:28:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQqrV-0003I3-IQ for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:28:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQqrS-0007YU-CL for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:28:53 -0500 Received: from mail-pf0-x229.google.com ([2607:f8b0:400e:c00::229]:35715) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQqrS-0007YO-3m for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:28:50 -0500 Received: by mail-pf0-x229.google.com with SMTP id f144so33181509pfa.2 for ; Mon, 09 Jan 2017 23:28:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:mime-version:to:cc:from:subject:date:importance :in-reply-to:references; bh=Yc+BCMMbkQyMIraDHzoeUFGGDvNJgu/G4TMIJBKh5A4=; b=cNwgbSqDLUXwUT7vTe0ftY2vn3n4Ffm3h0Huw7PWIRc0Gxgkq4uNFTd2wQGgOwyzH2 29oFusTXuPw3CntMQ6+LvKULMlnhUjvPnCYbrYQNrJL/hHXgpuROFQAJ5bSXu8AU7coh pdzW9//NTU3g+0v4Q+M41AfYJ4ZFix1Re0oiqboLQPoFzSIoNvrllPQSc/KG/T65LQ7N IUh9fXXpG8tLyPQHBIpZzgMqYpgYCo6P3UsVIc+w2c/eXRLbL7VBK/4ajfo395QyzI1c NZl1im07vIjCyQAYGLnY6mI7T6lp5aNI26oO3b4PnN+cM3FZTt0YyDGPFSU54tNOH2TY ViUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:mime-version:to:cc:from:subject:date :importance:in-reply-to:references; bh=Yc+BCMMbkQyMIraDHzoeUFGGDvNJgu/G4TMIJBKh5A4=; b=YjUbHi6XzSxc2EqeBQuXgaJub6XcFruoFnYttcKwFLwo0T8Gurs0V6/DrmP5spjzGE AzdLy0jRLusepGS9PPa/RBMiujFbCP0Kb3zwD69bhz9dEI9eXPeZoN5zaBrQbgmaepop 2k1NO0+WUWxNZ5SEP/gUvLS3EQraZHl23bGeHUoVrl7VcfJtaqPXr9gbmOxmhZCX5ijG 5HHY5OfxndLnZut2CtRgtWxYw6X6arW+KUd3IC/8c2HdXsEjChV8IaTp8NIOO07pa0HX S0Q//g0XA27+q955nHPq5NH0HASqJCEvbkAYHm5q2gIgWNFm3WdbyQeiXwu9c5chX9hT lJEQ== X-Gm-Message-State: AIkVDXJnKJ1AU6B+MF1/pCNB0y+dvBrpb7KQMo1xtQD2XefStRD/Cbksg6mTHaq/WOfQWQ== X-Received: by 10.98.3.7 with SMTP id 7mr2218914pfd.9.1484033327736; Mon, 09 Jan 2017 23:28:47 -0800 (PST) Received: from ?IPv6:::ffff:192.168.1.69? (d75-156-70-135.bchsia.telus.net. [75.156.70.135]) by smtp.gmail.com with ESMTPSA id s3sm2682833pfe.27.2017.01.09.23.28.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Jan 2017 23:28:47 -0800 (PST) Message-ID: <58748d2f.03a3620a.b0248.9df7@mx.google.com> MIME-Version: 1.0 To: Richard Copley Cc: "emacs-devel@gnu.org" From: Subject: RE: Regarding performance issues with the Emacs 25.1 Windows-build Date: Mon, 9 Jan 2017 23:28:39 -0800 Importance: normal X-Priority: 3 In-Reply-To: References: <58732ebd.8778630a.25994.c3c9@mx.google.com> Content-Type: multipart/alternative; boundary="_E4C24380-4C02-498B-9BD7-01D0BDF154C1_" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 07:28:54 -0000 --_E4C24380-4C02-498B-9BD7-01D0BDF154C1_ Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Thanks for the suggestion and the information. Problem solved. jsj From: Richard Copley Sent: Sunday, January 8, 2017 11:40 PM To: jsj.register@gmail.com Cc: phillip.lord@russet.org.uk; emacs-devel@gnu.org Subject: Re: Regarding performance issues with the Emacs 25.1 Windows-build On 9 January 2017 at 06:33, wrote: > I encountered huge lags when using org mode (detailed below) on build > =E2=80=9Cemacs-25.1-2-x86_64-w64-mingw32.zip=E2=80=9D with =E2=80=9Cemacs= -25-x86_64-deps.zip=E2=80=9D (from > ftp.gnu.org). > > With the same configuration and the same org file, everything is fine on = Mac > (emacs 25) and on Windows (emacs 24.5), so I think I might post is here. = I > am sorry if this is the wrong place. > > > > Reproducing it is a little bit tricky. > > It seems to happen when certain utf8 symbols are displayed in the buffer. > > By saying "certain utf8 symbols=E2=80=9D, I refer to those that are not w= ith the > common width, so it depends on the font you are using. > > What I did is the following. > > > > I am using the latest org mode (version 9) and have turned on > =E2=80=9Corg-pretty-entities=E2=80=9D , which replaces some latex codes (= eg. \alpha) with > their corresponding utf-8 symbols. > > The font I use in emacs is =E2=80=9CHack=E2=80=9D. With this font, greek = letters are all OK, > they have the same width as the English letters. > > One example to show the lag is =E2=80=9C\gg=E2=80=9D. > > Simply open an org file and put in =E2=80=9C\gg=E2=80=9D followed by a sp= ace and some other > letters. =E2=80=9C\gg=E2=80=9D will be displayed as a utf8 symbol. > > Then try to move the cursor quickly. You should experience huge lags. Try installing the Symbola font, if you don't already have it. (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D25279) --_E4C24380-4C02-498B-9BD7-01D0BDF154C1_ Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8"

Thanks for the suggestion and the in= formation.

Problem solved.

=  

jsj

=  

From: Richard Copley
Sent: Sunday, January 8, 2017 11:40 PM=
To: jsj.register@gmail= .com
Cc: philli= p.lord@russet.org.uk; emacs-deve= l@gnu.org
Subject: Re: Regarding performance issues with the = Emacs 25.1 Windows-build

 

On 9 January 2017 at 06:33,=C2=A0 <jsj.register@gm= ail.com> wrote:

> I encountered huge lags whe= n using org mode (detailed below) on build

> =E2= =80=9Cemacs-25.1-2-x86_64-w64-mingw32.zip=E2=80=9D with =E2=80=9Cemacs-25-x= 86_64-deps.zip=E2=80=9D (from

> ftp.gnu.org).

> 

> Wi= th the same configuration and the same org file, everything is fine on Mac<= /p>

> (emacs 25) and on Windows (emacs 24.5), so I t= hink I might post is here. I

> am sorry if this = is the wrong place.

> 

> 

> = ;

> Reproducing it is a little bit tricky.=

> 

>= It seems to happen when certain utf8 symbols are displayed in the buffer.<= /p>

> 

> = By saying "certain utf8 symbols=E2=80=9D, I refer to those that are no= t with the

> common width, so it depends on the = font you are using.

> 

> What I did is the following.

&g= t; 

> 

> 

> I am usin= g the latest org mode (version 9) and have turned on

> =E2=80=9Corg-pretty-entities=E2=80=9D , which replaces some latex co= des (eg. \alpha) with

> their corresponding utf-= 8 symbols.

> 

> The font I use in emacs is =E2=80=9CHack=E2=80=9D. With this fon= t, greek letters are all OK,

> they have the sam= e width as the English letters.

> 

> One example to show the lag is =E2=80=9C\gg= =E2=80=9D.

> 

> Simply open an org file and put in =E2=80=9C\gg=E2=80=9D followe= d by a space and some other

> letters. =E2=80=9C= \gg=E2=80=9D will be displayed as a utf8 symbol.

&g= t; 

> Then try to move the curso= r quickly. You should experience huge lags.

&n= bsp;

Try installing the Symbola font, if you = don't already have it.

 

(https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D25279)

 

= --_E4C24380-4C02-498B-9BD7-01D0BDF154C1_-- From MAILER-DAEMON Tue Jan 10 02:30:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQqt0-0003rh-9F for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 02:30:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQqsw-0003r6-HH for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:30:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQqst-0008Ku-DF for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:30:22 -0500 Received: from mail-pf0-x235.google.com ([2607:f8b0:400e:c00::235]:33334) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQqst-0008Jy-6T for emacs-devel@gnu.org; Tue, 10 Jan 2017 02:30:19 -0500 Received: by mail-pf0-x235.google.com with SMTP id y143so21917022pfb.0 for ; Mon, 09 Jan 2017 23:30:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:mime-version:to:from:subject:date:importance:in-reply-to :references; bh=vdyS/ARAJTbBWXKjg3J7qX2XgEeSX1Z0z2fKY5lGOLk=; b=iw067/Vwjz9rghjSMXtEo5yvYrTzgWAX0syBiFGkGF6yOqZ/v/C2/4px1iicKZFrL5 +a/PsgYOmQaNB4kmD49yxieD2QJ7zTvkGzR73eSqwG5uxtJEEoHuyLzOmqeZhrmqDS/n f47KwNt34qsbtEucUHv7XI1iie97zQaJOybRdpzK+GOmdlEfHHiYBVOlirEs3JZxQc07 /el/dbHmDZOoskq3cQMd7QcnU3oU6axT8rQZRkTi/Ef66w0ZN4dRy2fCFZy9Lcyn1fQI FM3TISRfujz6ruid20BUpb0epyIviyHLbt2OLSr97DMpjzjAsNU4aO5gdWvjChwoxdmo YpVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:mime-version:to:from:subject:date :importance:in-reply-to:references; bh=vdyS/ARAJTbBWXKjg3J7qX2XgEeSX1Z0z2fKY5lGOLk=; b=nzr8NKjuY/kghatQIGpfunHc5L2qHMaTnLrXF7jpLHYiEhyHHm/wDq8Xxenz3stlHT hb7ux3eXy82kP5sJEe7JTKqb7VbbVO+H/dlNkRDFXll8gln65WLz4ne1ihNCc3qsCcB8 q2FIGNEoSjWzzgMN/vLxN2DhuU43qXN+LPbQ8CAzviXqDYMahWD6Hs9puRR2HBs6U31b fXN9eZF2M7+PKpST1i40L1yw9Tcnd60Sc3wkw2rjqrZ03dYUm7V9ivI537A7xvpZqSqp /pPHN1R+OE3k7wdzTIsx3MN+iAWLqciBTO5bmZ8mtqjckZysZv3GK3BSTWV9v3WLd95f earA== X-Gm-Message-State: AIkVDXLqxyFj21YI51KKGUJ9RsTsC6b58l81wfKbZ0vSKx2MuW8FzChcHVZm7vmm07fO6g== X-Received: by 10.99.37.2 with SMTP id l2mr2384054pgl.160.1484033418269; Mon, 09 Jan 2017 23:30:18 -0800 (PST) Received: from ?IPv6:::ffff:192.168.1.69? (d75-156-70-135.bchsia.telus.net. [75.156.70.135]) by smtp.gmail.com with ESMTPSA id i10sm2680551pgd.37.2017.01.09.23.30.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Jan 2017 23:30:17 -0800 (PST) Message-ID: <58748d89.0a9d630a.62e80.a0b6@mx.google.com> MIME-Version: 1.0 To: Nikolay Kudryavtsev , "emacs-devel@gnu.org" From: Subject: RE: Regarding performance issues with the Emacs 25.1 Windows-build Date: Mon, 9 Jan 2017 23:30:10 -0800 Importance: normal X-Priority: 3 In-Reply-To: <609321cd-aea7-88a8-e507-526c878cb4b7@gmail.com> References: <58732ebd.8778630a.25994.c3c9@mx.google.com> <609321cd-aea7-88a8-e507-526c878cb4b7@gmail.com> Content-Type: multipart/alternative; boundary="_4D8CB124-87EC-4687-BD8F-E4AB897C50C0_" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 07:30:23 -0000 --_4D8CB124-87EC-4687-BD8F-E4AB897C50C0_ Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Thanks for pointing to the two issues. Problem is solved with font symbola. jsj From: Nikolay Kudryavtsev Sent: Sunday, January 8, 2017 11:57 PM To: jsj.register@gmail.com; phillip.lord@russet.org.uk; emacs-devel@gnu.org Subject: Re: Regarding performance issues with the Emacs 25.1 Windows-build It's probably another case of 24565 aka 15876. Try setting inhibit-compacting-font-caches to t, if you're using=20 something newer than 25.1 release. For 25.1 you can replace default fontset for a range of characters like=20 this: (set-fontset-font t '(#x21d2 . #x21d2) (font-spec :family "FreeSerif")) --=20 Best Regards, Nikolay Kudryavtsev --_4D8CB124-87EC-4687-BD8F-E4AB897C50C0_ Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8"

Thanks for pointing to the two issue= s.

Problem is solved with font symbola.

 

jsj

 

 

From: = Nikolay Kudryavtsev
Sent: Sunday, January 8, 2017 11:57 PMTo: jsj.register@gmail.co= m; phillip.lord@russet.or= g.uk; emacs-devel@gnu.orgSubject: Re: Regarding performance issues with the Emacs 25.1 Windo= ws-build

 

It's probably another case of 24565 aka 15876.

 

Try setting inhibit-compacting-= font-caches to t, if you're using

something newer = than 25.1 release.

 

For 25.1 you can replace default fontset for a range of character= s like

this:

 

(set-fontset-font t '(#x21d2 . #x21d2) (font-s= pec :family "FreeSerif"))

 

--

Best Regards,

Nikolay Kudryavtsev

 

 

= --_4D8CB124-87EC-4687-BD8F-E4AB897C50C0_-- From MAILER-DAEMON Tue Jan 10 04:46:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQt0o-0005Zs-EQ for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 04:46:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQt0m-0005VG-C0 for emacs-devel@gnu.org; Tue, 10 Jan 2017 04:46:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQt0j-0006wy-9a for emacs-devel@gnu.org; Tue, 10 Jan 2017 04:46:36 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:48128) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQt0j-0006wU-3F for emacs-devel@gnu.org; Tue, 10 Jan 2017 04:46:33 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tyRxG5RSQz3hjTY; Tue, 10 Jan 2017 10:46:26 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tyRxG4mWMzvkQ9; Tue, 10 Jan 2017 10:46:26 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id Z7n_ad59N7aP; Tue, 10 Jan 2017 10:46:25 +0100 (CET) X-Auth-Info: 4FyXL/VWGcAehWtsca3HZTj1GKF1+tn61mz7bedBEoWYbIwTTBSAfHZIrHtag4uS Received: from igel.home (ppp-88-217-20-245.dynamic.mnet-online.de [88.217.20.245]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Tue, 10 Jan 2017 10:46:25 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 162A82C1C61; Tue, 10 Jan 2017 10:46:25 +0100 (CET) From: Andreas Schwab To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> X-Yow: I can't decide which WRONG TURN to make first!! I wonder if BOB GUCCIONE has these problems! Date: Tue, 10 Jan 2017 10:46:25 +0100 In-Reply-To: (Stefan Monnier's message of "Mon, 09 Jan 2017 21:25:23 -0500") Message-ID: <87inpni6xa.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 09:46:37 -0000 On Jan 09 2017, Stefan Monnier wrote: > Eli wrote: >> Multiple args to , are not supported: ((\, (quote set-window-parameter)) temp (\, (quote set-window-parameter)) end) > > Hmm... I don't understand this. This message seems to come from > backquote.el: > > ((eq (car s) backquote-unquote-symbol) > (if (<= level 0) > (cond > ((> (length s) 2) > ;; We could support it with: (cons 2 `(list . ,(cdr s))) > ;; But let's not encourage such uses. > (error "Multiple args to , are not supported: %S" s)) > (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1) > (nth 1 s)))) > (backquote-delay-process s (1- level)))) > > but then `s` should have \, in its car, whereas the above message > indicates that (car s) is (\, (quote set-window-parameter)) which > implies we should not have entered this branch. That can only mean that something clobbered backquote-unquote-symbol. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Tue Jan 10 05:13:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQtR9-0007JO-24 for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49938) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQtR7-0007I5-17 for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQtR6-0002pJ-4E for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:49 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57514) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQtR0-0002ny-VR; Tue, 10 Jan 2017 05:13:43 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id B5D71160112; Tue, 10 Jan 2017 02:13:41 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id j5aK6t6FfFGb; Tue, 10 Jan 2017 02:13:41 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 03CAD160110; Tue, 10 Jan 2017 02:13:41 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id bDwLKaMr56Kf; Tue, 10 Jan 2017 02:13:40 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id D8C111600F3; Tue, 10 Jan 2017 02:13:40 -0800 (PST) From: Paul Eggert To: bug-gnulib@gnu.org, emacs-devel@gnu.org Cc: Paul Eggert Subject: [PATCH 2/4] dfa: omit unnecessary ptrdiff_t check Date: Tue, 10 Jan 2017 02:13:30 -0800 Message-Id: <20170110101332.15354-2-eggert@cs.ucla.edu> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170110101332.15354-1-eggert@cs.ucla.edu> References: <20170110101332.15354-1-eggert@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 10:13:50 -0000 * lib/dfa.c (alloc_position_set): Do not worry about ptrdiff_t overflow, since xnmalloc does that now. --- ChangeLog | 4 ++++ lib/dfa.c | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index beeefb7..91cdc6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2017-01-09 Paul Eggert + dfa: omit unnecessary ptrdiff_t check + * lib/dfa.c (alloc_position_set): Do not worry about ptrdiff_t + overflow, since xnmalloc does that now. + dfa: omit unnecessary allocation * lib/dfa.c (dfaanalyze): Do not allocate follow set, since an all-zero follow set works just fine. diff --git a/lib/dfa.c b/lib/dfa.c index b27bef4..509d6d1 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -2007,8 +2007,6 @@ static void alloc_position_set (position_set *s, size_t size) { s->elems = xnmalloc (size, sizeof *s->elems); - if (PTRDIFF_MAX < SIZE_MAX / sizeof *s->elems && PTRDIFF_MAX < size) - xalloc_die (); s->alloc = size; s->nelem = 0; } -- 2.9.3 From MAILER-DAEMON Tue Jan 10 05:13:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQtRB-0007M4-GQ for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49971) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQtR9-0007JT-5M for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQtR8-0002pw-8A for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:51 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57552) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQtR6-0002pE-7D; Tue, 10 Jan 2017 05:13:48 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 4C14B160110; Tue, 10 Jan 2017 02:13:47 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id UjI_MrbX-Q7f; Tue, 10 Jan 2017 02:13:46 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 27104160101; Tue, 10 Jan 2017 02:13:46 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 7l0PZvY8laNY; Tue, 10 Jan 2017 02:13:46 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 07A751600F3; Tue, 10 Jan 2017 02:13:46 -0800 (PST) From: Paul Eggert To: bug-gnulib@gnu.org, emacs-devel@gnu.org Cc: Paul Eggert Subject: [PATCH 4/4] dfa: minor simplification with emptyset Date: Tue, 10 Jan 2017 02:13:32 -0800 Message-Id: <20170110101332.15354-4-eggert@cs.ucla.edu> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170110101332.15354-1-eggert@cs.ucla.edu> References: <20170110101332.15354-1-eggert@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 10:13:52 -0000 * lib/dfa.c (build_state): Simplify by using emptyset. --- ChangeLog | 5 +++++ lib/dfa.c | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0b73b5..8fda293 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-01-10 Paul Eggert + + dfa: minor simplification with emptyset + * lib/dfa.c (build_state): Simplify by using emptyset. + 2017-01-09 Paul Eggert dfa: shrink constraints from 4 bits to 3 diff --git a/lib/dfa.c b/lib/dfa.c index 28678c2..5df27ea 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -2760,10 +2760,7 @@ build_state (state_num s, struct dfa *d, unsigned char uc) matches.w[j] &= d->syntax.letters.w[j] | d->syntax.newline.w[j]; /* If there are no characters left, there's no point in going on. */ - size_t j; - for (j = 0; j < CHARCLASS_WORDS && !matches.w[j]; j++) - continue; - if (j == CHARCLASS_WORDS) + if (emptyset (&matches)) continue; /* If we have reset the bit that made us declare "matched", reset -- 2.9.3 From MAILER-DAEMON Tue Jan 10 05:13:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQtRC-0007NK-Lc for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQtRA-0007KJ-2B for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQtR8-0002q7-Qt for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:52 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57544) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQtR5-0002p1-U3; Tue, 10 Jan 2017 05:13:48 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E0583160112; Tue, 10 Jan 2017 02:13:46 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 95O0t1UJ6AYe; Tue, 10 Jan 2017 02:13:42 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E0D69160110; Tue, 10 Jan 2017 02:13:42 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id vhwryZdhTmtR; Tue, 10 Jan 2017 02:13:42 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id BFE881600F3; Tue, 10 Jan 2017 02:13:42 -0800 (PST) From: Paul Eggert To: bug-gnulib@gnu.org, emacs-devel@gnu.org Cc: Paul Eggert Subject: [PATCH 3/4] dfa: shrink constraints from 4 bits to 3 Date: Tue, 10 Jan 2017 02:13:31 -0800 Message-Id: <20170110101332.15354-3-eggert@cs.ucla.edu> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170110101332.15354-1-eggert@cs.ucla.edu> References: <20170110101332.15354-1-eggert@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 10:13:53 -0000 * lib/dfa.c (newline_constraint, letter_constraint) (other_constraint, prev_newline_dependent) (prev_letter_dependent, NO_CONSTRAINT, BEGLINE_CONSTRAINT) (ENDLINE_CONSTRAINT, BEGWORD_CONSTRAINT, ENDWORD_CONSTRAINT) (LIMWORD_CONSTRAINT, NOTLIMWORD_CONSTRAINT): Constraints need only 3 bits, not 4. Using smaller integers shrinks the code a bit and makes grep a tad faster on x86-64. --- ChangeLog | 9 +++++++++ lib/dfa.c | 32 ++++++++++++++++---------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 91cdc6d..e0b73b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2017-01-09 Paul Eggert + dfa: shrink constraints from 4 bits to 3 + * lib/dfa.c (newline_constraint, letter_constraint) + (other_constraint, prev_newline_dependent) + (prev_letter_dependent, NO_CONSTRAINT, BEGLINE_CONSTRAINT) + (ENDLINE_CONSTRAINT, BEGWORD_CONSTRAINT, ENDWORD_CONSTRAINT) + (LIMWORD_CONSTRAINT, NOTLIMWORD_CONSTRAINT): + Constraints need only 3 bits, not 4. Using smaller integers + shrinks the code a bit and makes grep a tad faster on x86-64. + dfa: omit unnecessary ptrdiff_t check * lib/dfa.c (alloc_position_set): Do not worry about ptrdiff_t overflow, since xnmalloc does that now. diff --git a/lib/dfa.c b/lib/dfa.c index 509d6d1..28678c2 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -137,13 +137,13 @@ enum /* Sometimes characters can only be matched depending on the surrounding context. Such context decisions depend on what the previous character was, and the value of the current (lookahead) character. Context - dependent constraints are encoded as 12-bit integers. Each bit that + dependent constraints are encoded as 9-bit integers. Each bit that is set indicates that the constraint succeeds in the corresponding context. - bit 8-11 - valid contexts when next character is CTX_NEWLINE - bit 4-7 - valid contexts when next character is CTX_LETTER - bit 0-3 - valid contexts when next character is CTX_NONE + bit 6-8 - valid contexts when next character is CTX_NEWLINE + bit 3-5 - valid contexts when next character is CTX_LETTER + bit 0-2 - valid contexts when next character is CTX_NONE succeeds_in_context determines whether a given constraint succeeds in a particular context. Prev is a bitmask of possible @@ -152,17 +152,17 @@ enum static int newline_constraint (int constraint) { - return (constraint >> 8) & 0xf; + return (constraint >> 6) & 7; } static int letter_constraint (int constraint) { - return (constraint >> 4) & 0xf; + return (constraint >> 3) & 7; } static int other_constraint (int constraint) { - return constraint & 0xf; + return constraint & 7; } static bool @@ -178,12 +178,12 @@ succeeds_in_context (int constraint, int prev, int curr) static bool prev_newline_dependent (int constraint) { - return ((constraint ^ constraint >> 2) & 0x111) != 0; + return ((constraint ^ constraint >> 2) & 0111) != 0; } static bool prev_letter_dependent (int constraint) { - return ((constraint ^ constraint >> 1) & 0x111) != 0; + return ((constraint ^ constraint >> 1) & 0111) != 0; } /* Tokens that match the empty string subject to some constraint actually @@ -192,13 +192,13 @@ prev_letter_dependent (int constraint) the constraints corresponding to the special tokens previously defined. */ enum { - NO_CONSTRAINT = 0x777, - BEGLINE_CONSTRAINT = 0x444, - ENDLINE_CONSTRAINT = 0x700, - BEGWORD_CONSTRAINT = 0x050, - ENDWORD_CONSTRAINT = 0x202, - LIMWORD_CONSTRAINT = 0x252, - NOTLIMWORD_CONSTRAINT = 0x525 + NO_CONSTRAINT = 0777, + BEGLINE_CONSTRAINT = 0444, + ENDLINE_CONSTRAINT = 0700, + BEGWORD_CONSTRAINT = 0050, + ENDWORD_CONSTRAINT = 0202, + LIMWORD_CONSTRAINT = 0252, + NOTLIMWORD_CONSTRAINT = 0525 }; /* The regexp is parsed into an array of tokens in postfix form. Some tokens -- 2.9.3 From MAILER-DAEMON Tue Jan 10 05:13:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQtRG-0007RY-U2 for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50030) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQtRB-0007MF-Mj for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQtRA-0002rY-Ts for emacs-devel@gnu.org; Tue, 10 Jan 2017 05:13:53 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57506) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQtR0-0002nw-VP; Tue, 10 Jan 2017 05:13:43 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 16A1C160101; Tue, 10 Jan 2017 02:13:40 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id vYTUeUqSW5nr; Tue, 10 Jan 2017 02:13:39 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 55EAF160110; Tue, 10 Jan 2017 02:13:39 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 7S8sJa70kKhN; Tue, 10 Jan 2017 02:13:39 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 35DB21600F3; Tue, 10 Jan 2017 02:13:39 -0800 (PST) From: Paul Eggert To: bug-gnulib@gnu.org, emacs-devel@gnu.org Cc: Paul Eggert Subject: [PATCH 1/4] dfa: omit unnecessary allocation Date: Tue, 10 Jan 2017 02:13:29 -0800 Message-Id: <20170110101332.15354-1-eggert@cs.ucla.edu> X-Mailer: git-send-email 2.9.3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 10:13:57 -0000 * lib/dfa.c (dfaanalyze): Do not allocate follow set, since an all-zero follow set works just fine. --- ChangeLog | 4 ++++ lib/dfa.c | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f0cd277..beeefb7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2017-01-09 Paul Eggert + dfa: omit unnecessary allocation + * lib/dfa.c (dfaanalyze): Do not allocate follow set, since + an all-zero follow set works just fine. + dfa: omit unused local * lib/dfa.c (build_state): Fix up recent change. diff --git a/lib/dfa.c b/lib/dfa.c index e8cb6bb..b27bef4 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -2501,8 +2501,6 @@ dfaanalyze (struct dfa *d, bool searchflag) firstpos->index = lastpos->index = i; firstpos->constraint = lastpos->constraint = NO_CONSTRAINT; - /* Allocate the follow set for this position. */ - alloc_position_set (&d->follows[i], 1); break; } #ifdef DEBUG -- 2.9.3 From MAILER-DAEMON Tue Jan 10 08:48:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cQwn5-000352-Hg for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 08:48:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43874) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQwn3-00033g-1C for emacs-devel@gnu.org; Tue, 10 Jan 2017 08:48:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQwn2-0003an-Ci for emacs-devel@gnu.org; Tue, 10 Jan 2017 08:48:41 -0500 Received: from mail-wj0-x22e.google.com ([2a00:1450:400c:c01::22e]:33061) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQwn2-0003aR-6x for emacs-devel@gnu.org; Tue, 10 Jan 2017 08:48:40 -0500 Received: by mail-wj0-x22e.google.com with SMTP id kq3so37245128wjc.0 for ; Tue, 10 Jan 2017 05:48:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=bQ9ZzZAlv21gRJf9bGdxzA3Z8gsLj6ThG9fyOdTsDdg=; b=eVGE1YHQJqNtlFf3T+b6LXhfBF3fJ9t6WncnQtu7gzvlfhn+NxlT4mZMCNR7RglL17 RITUfIXnC0N1evk6WTzUGXLq3jo6IBFSePgYoEpOH5dAnddd4HFmbhHQgL7umtqgNdkt jacGwVl0to1YEvdE1g0Zm4TecRTehRZGG0dkicum7b8a0YxuUDk1E89lr+l64jhNYZN9 KVU15LSrPW6GWCCkJcak4kXaei8ugp6tks7FQuhirChSY9QKYDytT2kzdW0pYcTPbHlr iCRbt3+3f6kqVeHQO6yWPN0wuOea7hS7n19qKTI0dz7yCSHVSKaRSXoAV6cLViAjNhEZ 9ZeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=bQ9ZzZAlv21gRJf9bGdxzA3Z8gsLj6ThG9fyOdTsDdg=; b=cgyWCIN7w+jU2G99dGZlkjibON6HTgEa/xH+WHeCy+GVkjbIWMcfHTEEZXcSrdq6bq V3YzT/QCU63eiUcHXpHUDlCHc6KHSF1noHKvAwqsYoWpmklEaPmKQTOtk6sKW8XNzFSo RWpjYQuzJSicQV+toAfJxM/BuGjzis3tdNy3y0OcOP+eZ301bUHVdhthwKd/2udsq+R5 7kET70lrqRVV3x7JxdEcrjIftA6iS/RhFFJOXmBubxTBH0tq2HUR3K+gFBnXPkUfCDOk GnMs++dDYesk0nNzrKPxlEO1asqJzxB7/cKrUYx9siEFKyVnd5oZBlz/UpiW50EHibWm nUJA== X-Gm-Message-State: AIkVDXKe0rUGy7DAAPJEGyCG2l6Sgnp2/ut0tOZZJzJWH/E8mb+ZdcyrlAJq+TeHNhE044y47/mZy0cVlt5AXA== X-Received: by 10.194.0.97 with SMTP id 1mr1206516wjd.223.1484056118810; Tue, 10 Jan 2017 05:48:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.179.214 with HTTP; Tue, 10 Jan 2017 05:48:23 -0800 (PST) In-Reply-To: <20170106075132.GA3272@localhost.localdomain> References: <20170106075132.GA3272@localhost.localdomain> From: Simon Leinen Date: Tue, 10 Jan 2017 14:48:23 +0100 Message-ID: Subject: Re: emacs 26.0.50.1 - add DNS keywords and remove duplications To: Alexander Kuleshov Cc: emacs-devel Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 13:48:41 -0000 > I've attached the patch which adds TLSA (RFC 6698) and NSEC3 > (RFC 5155) to dns-mode-types. Cool, that looks correct and useful - we use both these record types, though NSEC3 records are usually in machine-generated include files. My only (cosmetic) suggestion for improvement would be to delete the space between "NSEC3" and the closing parenthesis. > Additioanlly these RFCs were added to comments and duplication > of NSAP was removed. -- Simon. From MAILER-DAEMON Tue Jan 10 12:19:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cR05X-0007n9-E0 for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 12:19:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37317) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR05W-0007n3-0b for emacs-devel@gnu.org; Tue, 10 Jan 2017 12:19:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cR05R-0004eR-Bc for emacs-devel@gnu.org; Tue, 10 Jan 2017 12:19:57 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33894) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR05R-0004eJ-8U; Tue, 10 Jan 2017 12:19:53 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2246 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cR05Q-0004Sy-Az; Tue, 10 Jan 2017 12:19:52 -0500 Date: Tue, 10 Jan 2017 19:19:51 +0200 Message-Id: <8360lmesso.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab , Ken Raeburn CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <87inpni6xa.fsf@linux-m68k.org> (message from Andreas Schwab on Tue, 10 Jan 2017 10:46:25 +0100) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 17:19:59 -0000 > From: Andreas Schwab > Date: Tue, 10 Jan 2017 10:46:25 +0100 > Cc: emacs-devel@gnu.org > > On Jan 09 2017, Stefan Monnier wrote: > > > Eli wrote: > >> Multiple args to , are not supported: ((\, (quote set-window-parameter)) temp (\, (quote set-window-parameter)) end) > > > > Hmm... I don't understand this. This message seems to come from > > backquote.el: > > > > ((eq (car s) backquote-unquote-symbol) > > (if (<= level 0) > > (cond > > ((> (length s) 2) > > ;; We could support it with: (cons 2 `(list . ,(cdr s))) > > ;; But let's not encourage such uses. > > (error "Multiple args to , are not supported: %S" s)) > > (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1) > > (nth 1 s)))) > > (backquote-delay-process s (1- level)))) > > > > but then `s` should have \, in its car, whereas the above message > > indicates that (car s) is (\, (quote set-window-parameter)) which > > implies we should not have entered this branch. > > That can only mean that something clobbered backquote-unquote-symbol. Yes, the value of backquote-unquote-symbol at this point is indeed this: (\, (quote set-window-parameter)) I guess something is wrong with reading dumped.elc? From MAILER-DAEMON Tue Jan 10 22:30:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cR9cE-0007jh-Jl for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 22:30:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR7cb-00012m-Qw for emacs-devel@gnu.org; Tue, 10 Jan 2017 20:22:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cR7cY-0002o1-L1 for emacs-devel@gnu.org; Tue, 10 Jan 2017 20:22:37 -0500 Received: from mail-dm3nam03on0129.outbound.protection.outlook.com ([104.47.41.129]:61952 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cR7cY-0002nB-8U for emacs-devel@gnu.org; Tue, 10 Jan 2017 20:22:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Honeywell.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=yd+z8X/gHospBEmlHY/kaD4kkjmi2L+FEfl+pJcTgYY=; b=krsnugnLKIUt4aEUHR2guNv5uzctBKk2rGer3804RA3v+CGivUI6/dxb7o56wjRvyQj5c5FdDKQis/CwQ7z3nHFFZGV67f2FvcTsX9Tu2KYUKPovrhDvYLlbLEMRQmQur9PF6PBhNTTEQKk2CZ6pq39xjI/tauNiPhE48yClZkg= Received: from DM2PR0701MB1311.namprd07.prod.outlook.com (10.161.225.25) by DM2PR0701MB1309.namprd07.prod.outlook.com (10.161.225.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Tue, 10 Jan 2017 23:49:47 +0000 Received: from DM2PR0701MB1311.namprd07.prod.outlook.com ([10.161.225.25]) by DM2PR0701MB1311.namprd07.prod.outlook.com ([10.161.225.25]) with mapi id 15.01.0803.021; Tue, 10 Jan 2017 23:49:47 +0000 From: "Driscoll, Kevin R" To: "emacs-devel@gnu.org" Subject: FW: calc-yank.el Thread-Topic: calc-yank.el Thread-Index: AdJjlUUb1SevJ3YvQCS2qbTNFa0BDACbgyqAACky2vA= Date: Tue, 10 Jan 2017 23:49:47 +0000 Message-ID: References: <20170103205239.GA5869@belanger-laptop> In-Reply-To: <20170103205239.GA5869@belanger-laptop> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=kevin.driscoll@honeywell.com; x-originating-ip: [199.64.6.149] x-ms-office365-filtering-correlation-id: 223a0ae6-4596-44d0-8aa7-08d439b35c7e x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM2PR0701MB1309; x-microsoft-exchange-diagnostics: 1; DM2PR0701MB1309; 7:v+T+sFIMfoU0SuYFeFxiMDz/HG8aiz0PNACvQD2nboljWYxl/8zdr8RFmvxu3eTnCYgRgeCQiwe88//z+ctGP+dkscyWqwk3FGHYqAfWkvYCP5ULJZGWGudgM9EMJ6Z4u9na84JQVb2EE4HJxNPTJ2WuEXVspkbmM6sUCtIz3ULSeSLOZAk9qY56fzYazx4PPvJJ7W11fVlYZ2cjIorvzwxBakCNoRQ4gtysNxPFoIXVaPtpKRo5iUkuJcR4wQqri178/U8LiGc47VaNxlzRpstbL29LcLP/GT6HVpONlG8r5sJ/tMBbfLwIYybcUa+uDxfE1pR1jR9MHgFcBtzHM7V3gs0Ch5Ei/6zdY0/S1ohphirxHcwmtFvcvnUaqjCEvL4T62elLjcOlsZLIqTUX4p1vYN9SsnB0Hv0OwbsrsMDclN0/csaob4FXgQZai1ChLs1lCxyQbyj8qGGOgQeMA==; 20:yK7Y52T+ii5On4D3yQErIMWZuXUbGympT9ad3wgJYll6CEv8V8aB71Qxo7JDLyS5JZgDn3bgM4SEQ35Gd+X7VIOoFTmRE2f6SGxeNhfumO7BxAO06G21bs8g9Uk7wTK8OExb39+/b2gxJQ8mq8fDTkiMW8qtT9ueuFVKrlbcwis= x-recptdomain: NotTLSDomain x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(22074186197030)(93747276172241); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123558021)(20161123564025)(20161123562025)(6072148); SRVR:DM2PR0701MB1309; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0701MB1309; x-forefront-prvs: 01834E39B7 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(7916002)(39860400002)(39410400002)(39840400002)(39450400003)(39850400002)(189002)(13464003)(199003)(106356001)(77096006)(6506006)(7736002)(7696004)(2950100002)(8936002)(3280700002)(122556002)(9686003)(6916009)(68736007)(74316002)(229853002)(107886002)(2906002)(6116002)(6436002)(305945005)(99286003)(102836003)(2900100001)(97736004)(38730400001)(189998001)(25786008)(5640700003)(86362001)(110136003)(3846002)(2351001)(33656002)(76176999)(54356999)(55016002)(2473003)(450100001)(50986999)(92566002)(2501003)(3660700001)(81156014)(81166006)(5660300001)(105586002)(8676002)(101416001)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR0701MB1309; H:DM2PR0701MB1311.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: honeywell.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Honeywell.com X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2017 23:49:47.8246 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 96ece526-9c7d-48b0-8daf-8b93c90a5d18 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0701MB1309 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.129 X-Mailman-Approved-At: Tue, 10 Jan 2017 22:30:21 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 01:22:39 -0000 Q29udHJhcnkgdG8gdGhlIGhlYWRlciBvZiB0aGUgY2FsYy15YW5rLmVsIGZpbGUsIGpheS5wLmJl bGFuZ2VyIGlzIG5vIGxvbmdlciB0aGUgbWFpbnRhaW5lciBvZiBjYWxjLXlhbmsuDQpUaGlzIHNo b3VsZCBiZSB1cGRhdGVkLiAgQW5kLCBwbGVhc2UgY29uc2lkZXIgbXkgY2hhbmdlIHN1Z2dlc3Rp b24gYmVsb3cuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBKYXkgQmVsYW5n ZXIgW21haWx0bzpqYXkucC5iZWxhbmdlckBnbWFpbC5jb21dIA0KU2VudDogVHVlc2RheSwgSmFu dWFyeSAwMywgMjAxNyAxNDo1Mw0KVG86IERyaXNjb2xsLCBLZXZpbiBSIDxrZXZpbi5kcmlzY29s bEBob25leXdlbGwuY29tPg0KU3ViamVjdDogUmU6IGNhbGMteWFuay5lbA0KDQpIaSBLZXZpbiwN Cg0KSSdtIGEgbGl0dGxlIHN1cnByaXNlZCB0aGF0IGRpZ2l0LWdyb3VwZWQgbnVtYmVycyBhcmVu J3QgaGFuZGxlZCBwcm9wZXJseSBhbHJlYWR5LiAgQnV0IHlvdXIgc29sdXRpb24gbG9va3Mgd2Vs bCB0aG91Z2h0IG91dC4NCkhvd2V2ZXIsIEknbSBub3QgdXNpbmcgRW1hY3Mgb3IgbWFpbnRhaW5p bmcgQ2FsYyBhbnkgbW9yZS4NCllvdSBzaG91bGQgc2VuZCB0aGlzIHRvIGVtYWNzLWRldmVsQGdu dS5vcmcsIGFuZCB0aGV5IHNob3VsZCBtYWtlIHRoZSBjaGFuZ2VzLg0KDQpKYXkNCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NClRvOiBKYXkgQmVsYW5nZXIgW21haWx0bzpqYXkucC5iZWxh bmdlckBnbWFpbC5jb21dDQpGcm9tOiBEcmlzY29sbCwgS2V2aW4gUiA8a2V2aW4uZHJpc2NvbGxA aG9uZXl3ZWxsLmNvbT4NClN1YmplY3Q6IFJlOiBjYWxjLXlhbmsuZWwNCg0KUGxlYXNlIGNvbnNp ZGVyIHRoZSBjaGFuZ2VzIHRvIGNhbGMteWFuay5lbCBiZXR3ZWVuIHRoZSBjb21tZW50ZWQgbGlu ZXMgYmVsb3cuICAgVGhpcyBhbGxvd3MgdGhlIHlhbmtpbmcgb2YgZGlnaXQtZ3JvdXBlZCBudW1i ZXJzLiAgSXTigJlzIGEgcmVhbCBwYWluIG5vdCBoYXZpbmcgdGhhdCBjYXBhYmlsaXR5LCBnaXZl biB0aGF0IG1vc3QgbGFyZ2UgbnVtYmVycyB0byBiZSBpbXBvcnRlZCBpbnRvIGNhbGMgZnJvbSB0 ZXh0IGFyZSBncm91cGVkLiAgV2hpbGUgdGhpcyBjb3VsZCBpbnRlcmZlcmUgd2l0aCB5YW5raW5n IHZlY3RvcnMsIHRoZSBncmFicyBhcmUgYWN0dWFsbHkgc2ltcGxlciBhbHRlcm5hdGl2ZXMgZm9y IHZlY3RvcnMuICBUbyBtaW5pbWl6ZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIG9uIHRoZSB1 bnN1c3BlY3RpbmcsIGEgbmlsLWRlZmF1bHQgY2FsYy15YW5rLWdyb3VwZWQgbW9kZSBmbGFnIGNv dWxkIGJlIGFkZGVkIGFuZCB0aGUg4oCY4oCZY2FsYy1ncm91cC1kaWdpdHPigJnigJkgYmVsb3cg Y291bGQgYmUgcmVwbGFjZWQgd2l0aCDigJxjYWxjLXlhbmstZ3JvdXBlZOKAnSBvciDigJwoYW5k IGNhbGMtZ3JvdXAtZGlnaXRzIGNhbGMteWFuay1ncm91cGVkKeKAnS4gIFRoaXMgZG9lc27igJl0 IGhhbmRsZSByYWRpeCA+IDEwOyB5YW5raW5nIHRoZXNlIGFyZSB2ZXJ5IHJhcmUgZm9yIGdyb3Vw ZWQgbnVtYmVycyBhbmQgdGhlcmXigJlzIG5vdCBhIHN0YW5kYXJkIGZvcm1hdCAoMTYjIHZzIDB4 KS4NCg0KKGRlZnVuIGNhbGMteWFuayAoKQ0KICAoaW50ZXJhY3RpdmUpDQogIChjYWxjLXdyYXBw ZXINCiAgIChjYWxjLXBvcC1wdXNoLXJlY29yZC1saXN0DQogICAgMCAieWFuayINCiAgICAobGV0 ICgodGhpbmcgKGlmIChmYm91bmRwICdjdXJyZW50LWtpbGwpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGN1cnJlbnQta2lsbCAwIHQpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjYXIga2lsbC1yaW5nLXlhbmstcG9pbnRlcikpKSkNCiAgICAgIChp ZiAoZXEgKGNhci1zYWZlIGNhbGMtbGFzdC1raWxsKSB0aGluZykNCiAgICAgICAgICAgICAgICAg IChjZHIgY2FsYy1sYXN0LWtpbGwpDQogICAgICAgICAgICAgICAgKGlmIChzdHJpbmdwIHRoaW5n KQ0KOyAgICAgICAgICAgICAgICAgICAobGV0ICgodmFsIChtYXRoLXJlYWQtZXhwcnMgKGNhbGMt Y2xlYW4tbmV3bGluZXMgdGhpbmcpKSkpDQogICAgICAgICAgICAgICAgICAgIChsZXQgKCh2YWwg KG1hdGgtcmVhZC1leHBycw0KICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGMtY2xlYW4tbmV3 bGluZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgY2FsYy1ncm91cC1kaWdpdHMNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZw0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXFwoWzAtOV1cXCkiIGNhbGMtZ3Jv dXAtY2hhciANCiJcXChbMC05XVwNClwpIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJcXDFcXDIiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGluZykNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoaW5nKSkpKSkNCjsNCiAgICAgICAgICAgICAgICAgICAgICAo aWYgKGVxIChjYXItc2FmZSB2YWwpICdlcnJvcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocHJvZ24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRx IHZhbCAobWF0aC1yZWFkLWV4cHJzIHRoaW5nKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoZXEgKGNhci1zYWZlIHZhbCkgJ2Vycm9yKQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJCYWQgZm9ybWF0IGluIA0K eWFua2VkDQpkYXRhIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsKSkpKSkpKSkNCg0KLS0NCktl dmluIFIuIERyaXNjb2xsLCBFbmdpbmVlcmluZyBGZWxsb3cgICAgICAgICAgIEtldmluLkRyaXNj b2xsQEhvbmV5d2VsbC5jb20NClBob25lOiArMSA3NjMtOTU0LTY3ODkgICAgICBDZWxsOiArMSA2 MTItODAxLTk1MjAgICAgICAgRkFYOiArMSA3NjMtOTU0LTU0NzMNCkhvbmV5d2VsbDsgTU4xMC0x MjJCOyAxOTg1IERvdWdsYXMgRHIuIE4uOyBHb2xkZW4gVmFsbGV5OyBNTiANCjU1NDIyLTM5OTI7 IFVTQQ0K From MAILER-DAEMON Tue Jan 10 22:52:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cR9xn-0000ni-4t for mharc-emacs-devel@gnu.org; Tue, 10 Jan 2017 22:52:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR9xk-0000fA-3j for emacs-devel@gnu.org; Tue, 10 Jan 2017 22:52:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cR9xi-0007z8-IL for emacs-devel@gnu.org; Tue, 10 Jan 2017 22:52:36 -0500 Received: from mail-vk0-x233.google.com ([2607:f8b0:400c:c05::233]:33198) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cR9xi-0007yk-BE for emacs-devel@gnu.org; Tue, 10 Jan 2017 22:52:34 -0500 Received: by mail-vk0-x233.google.com with SMTP id 137so372801884vkl.0 for ; Tue, 10 Jan 2017 19:52:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=Gp4GnaF5veqmiZmsuljmlxVCd+UK28YTtSMzA+REeiw=; b=WFeYru37OAiwjB5GwN3Jlis21a0nYe1Sc+BPzb9R/XKO5USxR1T6KGXp3tXvLyBni6 NmKs0mLdVUjRNk7kQSOAL2x9crEISVIq1SJDTb4J40liNsuoRh2VRSfe+X1jT0raxPVU 4zZ7OcWIcLXshNJR3c32kzHM32DID0AleUKZxlWJRA6JJfApPiUldxMtyw7oPoSAlHWI FnJhB+eaOoklacDBuBId7Z1ydBGbUu6SmcyFY6p9N4ednmM4MQNoULGMFh5ETK+vMmiL 9uAPSIxGQscklOrljt/v1kzKmRIh6B2gUaI2uZo1ErVqFP7MnytZFJUitzM6JAedmTyP kWlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=Gp4GnaF5veqmiZmsuljmlxVCd+UK28YTtSMzA+REeiw=; b=EpXYIVqf1kCgk4RDvgZQv2EucEkbkHAOk6BRpQSQwBVCM4F+yRMkknRydTZa9UfX1Z iRq1Xq6idTQjPrEkQ8Z17tpsjvOcUnTEHXJb0vD2uJ0pCEN61xRQQoXU0zgaWFHvDDy2 dRQqP+EYTlU5dSCAZu6/+41ietg4fwWvIB2xLn9O4KDHuJfkC7TbijNCUSKmIpTUd5xx WsDzBvVt4CJozFMYWW60lhGzEgDY3xP47AWrOQzZ4tZ90AYe247Lx7sQ2f9YqJ32gYQL LP0eWeho7HdKPI3ou5QRXe6T8CVKmDJZRTINmqWg9yLUgxlzQAoNHMH3WOKDe6HafTOS UttA== X-Gm-Message-State: AIkVDXJxmEwhxU/A8LEkWax5R8etFTpl1hNXlGfOXz/tQSWcNu50Sc+15g9l8wZi6F88KYKdOyjp5ZvngrTykw== X-Received: by 10.31.102.134 with SMTP id a128mr2641776vkc.104.1484106753405; Tue, 10 Jan 2017 19:52:33 -0800 (PST) MIME-Version: 1.0 References: <20170103205239.GA5869@belanger-laptop> In-Reply-To: From: Kaushal Modi Date: Wed, 11 Jan 2017 03:52:22 +0000 Message-ID: Subject: Re: FW: calc-yank.el To: "Driscoll, Kevin R" , "emacs-devel@gnu.org" Content-Type: multipart/alternative; boundary=94eb2c094646d8773f0545c987d8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 03:52:37 -0000 --94eb2c094646d8773f0545c987d8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Kevin, Can you please provide a git formatted patch with respect to the master branch? I expanded the calc-yank function last year to support different radixes: http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3Dec0d4d24fd11b5040de= 9f7657b486c3b1e743071 On Tue, Jan 10, 2017, 10:36 PM Driscoll, Kevin R < kevin.driscoll@honeywell.com> wrote: > Contrary to the header of the calc-yank.el file, jay.p.belanger is no > longer the maintainer of calc-yank. > This should be updated. And, please consider my change suggestion below. > > -----Original Message----- > From: Jay Belanger [mailto:jay.p.belanger@gmail.com] > Sent: Tuesday, January 03, 2017 14:53 > To: Driscoll, Kevin R > Subject: Re: calc-yank.el > > Hi Kevin, > > I'm a little surprised that digit-grouped numbers aren't handled properly > already. But your solution looks well thought out. > However, I'm not using Emacs or maintaining Calc any more. > You should send this to emacs-devel@gnu.org, and they should make the > changes. > > Jay > > -----Original Message----- > To: Jay Belanger [mailto:jay.p.belanger@gmail.com] > From: Driscoll, Kevin R > Subject: Re: calc-yank.el > > Please consider the changes to calc-yank.el between the commented lines > below. This allows the yanking of digit-grouped numbers. It=E2=80=99s = a real > pain not having that capability, given that most large numbers to be > imported into calc from text are grouped. While this could interfere wit= h > yanking vectors, the grabs are actually simpler alternatives for vectors. > To minimize the impact of this change on the unsuspecting, a nil-default > calc-yank-grouped mode flag could be added and the =E2=80=98=E2=80=99calc= -group-digits=E2=80=99=E2=80=99 > below could be replaced with =E2=80=9Ccalc-yank-grouped=E2=80=9D or =E2= =80=9C(and calc-group-digits > calc-yank-grouped)=E2=80=9D. This doesn=E2=80=99t handle radix > 10; yan= king these are > very rare for grouped numbers and there=E2=80=99s not a standard format (= 16# vs 0x). > > (defun calc-yank () > (interactive) > (calc-wrapper > (calc-pop-push-record-list > 0 "yank" > (let ((thing (if (fboundp 'current-kill) > (current-kill 0 t) > (car kill-ring-yank-pointer)))) > (if (eq (car-safe calc-last-kill) thing) > (cdr calc-last-kill) > (if (stringp thing) > ; (let ((val (math-read-exprs (calc-clean-newlines > thing)))) > (let ((val (math-read-exprs > (calc-clean-newlines > (if calc-group-digits > (replace-regexp-in-string > (concat "\\([0-9]\\)" calc-group-char > "\\([0-9]\ > \)") > "\\1\\2" > thing) > thing))))) > ; > (if (eq (car-safe val) 'error) > (progn > (setq val (math-read-exprs thing)) > (if (eq (car-safe val) 'error) > (error "Bad format in > yanked > data") > val)) > val)))))))) > > -- > Kevin R. Driscoll, Engineering Fellow > Kevin.Driscoll@Honeywell.com > Phone: +1 763-954-6789 Cell: +1 612-801-9520 FAX: +1 > 763-954-5473 > Honeywell; MN10-122B; 1985 Douglas Dr. N.; Golden Valley; MN > 55422-3992; USA > --=20 Kaushal Modi --94eb2c094646d8773f0545c987d8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi Kevin,

Can you please provide a git formatted patch with respect to= the master branch?

I expanded the calc-yank function last year to support=C2=A0= different radixes: http://git.savannah.g= nu.org/cgit/emacs.git/commit/?id=3Dec0d4d24fd11b5040de9f7657b486c3b1e743071=


On Tue, Jan 10, 2017, 10:36= PM Driscoll, Kevin R <k= evin.driscoll@honeywell.com> wrote:
Contrary to the header of the calc-yank.el file, jay.p.belanger is = no longer the maintainer of calc-yank.
This should be updated.=C2=A0 And, please consider my change suggestion bel= ow.

-----Original Message-----
From: Jay Belanger [mailto:jay.p.belanger@gmail.com]
Sent: Tuesday, January 03, 2017 14:53
To: Driscoll, Kevin R <kevin.driscoll@honeywell.com> Subject: Re: calc-yank.el

Hi Kevin,

I'm a little surprised that digit-grouped numbers aren't handled pr= operly already.=C2=A0 But your solution looks well thought out.
However, I'm not using Emacs or maintaining Calc any more.
You should send this to emacs-devel@gnu.org, and they should make the= changes.

Jay

-----Original Message-----
To: Jay Belanger [mailto:jay.p.belanger@gmail.com]
From: Driscoll, Kevin R <kevin.driscoll@honeywell.com>=
Subject: Re: calc-yank.el

Please consider the changes to calc-yank.el between the commented lines bel= ow.=C2=A0 =C2=A0This allows the yanking of digit-grouped numbers.=C2=A0 It= =E2=80=99s a real pain not having that capability, given that most large nu= mbers to be imported into calc from text are grouped.=C2=A0 While this coul= d interfere with yanking vectors, the grabs are actually simpler alternativ= es for vectors.=C2=A0 To minimize the impact of this change on the unsuspec= ting, a nil-default calc-yank-grouped mode flag could be added and the =E2= =80=98=E2=80=99calc-group-digits=E2=80=99=E2=80=99 below could be replaced = with =E2=80=9Ccalc-yank-grouped=E2=80=9D or =E2=80=9C(and calc-group-digits= calc-yank-grouped)=E2=80=9D.=C2=A0 This doesn=E2=80=99t handle radix > = 10; yanking these are very rare for grouped numbers and there=E2=80=99s not= a standard format (16# vs 0x).

(defun calc-yank ()
=C2=A0 (interactive)
=C2=A0 (calc-wrapper
=C2=A0 =C2=A0(calc-pop-push-record-list
=C2=A0 =C2=A0 0 "yank"
=C2=A0 =C2=A0 (let ((thing (if (fboundp 'current-kill)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(current-kill 0 = t)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(car kill-ring-yank-poi= nter))))
=C2=A0 =C2=A0 =C2=A0 (if (eq (car-safe calc-last-kill) thing)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cdr calc-la= st-kill)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (stringp thing)=
;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(let = ((val (math-read-exprs (calc-clean-newlines thing))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let = ((val (math-read-exprs
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (calc-clean-newlines
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(if calc-group-digits
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(replace-regexp-in-string
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "\\([0-9]\\)" calc-group-= char
"\\([0-9]\
\)")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "\\1\\2"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 thing)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0thing)))))
;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (if (eq (car-safe val) 'error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq val (math-read-e= xprs thing))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (eq (car-safe val)= 'error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 (error "Bad format in
yanked
data")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 val))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 val))))))))

--
Kevin R. Driscoll, Engineering Fellow=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0Kevin.Driscoll@Honeywell.com
Phone: +1 763-954-6789=C2=A0 =C2=A0 =C2=A0 Cell: +1 612-801-9520=C2=A0 =C2= =A0 =C2=A0 =C2=A0FAX: +1 763-954-5473
Honeywell; MN10-122B; 1985 Douglas Dr. N.; Golden Valley; MN
55422-3992; USA
--

Kaushal Modi

--94eb2c094646d8773f0545c987d8-- From MAILER-DAEMON Wed Jan 11 01:32:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRCSr-0007oQ-W7 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 01:32:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRCSo-0007nm-S7 for emacs-devel@gnu.org; Wed, 11 Jan 2017 01:32:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRCSl-0003Ba-Pg for emacs-devel@gnu.org; Wed, 11 Jan 2017 01:32:50 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:36727) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRCSl-0003BO-KP for emacs-devel@gnu.org; Wed, 11 Jan 2017 01:32:47 -0500 Received: by mail-qt0-x244.google.com with SMTP id l7so18906947qtd.3 for ; Tue, 10 Jan 2017 22:32:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xn4MhOinw1KMTP7/90zwo+7HVG0wF5QG4BDH2eVonWI=; b=CtFc0GDY1dP81pKna49PuqTtFsY8jEOQEz3R4DdwFFxJmtGFPRupImySEszOPIJPVd X6suHH3XlI2P2Kv6hCYNOnN76Kv45zfE0vJBtj9hkDaUdzc7TrDL0BWcCMw5WhRekrbQ Z9r0LKLGRHi+K+rNBTikfihu6do4S7QBOWsanyNY1pPjwMD6QMMuRkcEJwZXLdMGA1CK 1mNjK9AQMD02S02CC7+seXL6zAKgUk16lm2NC0pTYXh0ulKMbJspwplUuVkLIhsjGgVa yzKcbYGVR2wf3hr2FnI2n59R1IYQBupYsVSBGXHuXw9HZhpF9/xZBAiiWsFpIxPl4PES fhwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xn4MhOinw1KMTP7/90zwo+7HVG0wF5QG4BDH2eVonWI=; b=iHOBvRjTIt5+qf6yIBuiyx1RFXUHDT4v5L6wh2MqwmbUnfwUPep9PW7JTZPWixUETg /g0N+HL6bX+yOEY9jpw8K2VLaIjtAy3/0Jih2fYBcZfvdGppg8nN7jWJEbDZ0xGpLcLI 5SmqhyAtAKg3N2wJkbvNXYQOLd+5dE6tRDr411Kemjf7ywGyyJ8+/oxQJPjyTRxkH2wU YcTueEIgq3mQw9nVKxyOyy4Sf8QUAkvS8qEI75bCVhhfuwhGkdc9rIQP69PJLIgDqEyA KA01yyIeGJcWm/fxEWLhlLeF3DWf/Zev/sxP7kaz3WVQYuZ149i+CTXrq8236lMbbpc0 8GUA== X-Gm-Message-State: AIkVDXKN+pZQy+5hSezmgVXE2WAB56tyzBFb23vK5w7rYQwHqgVxV+s0pAKec16tjU2ngw== X-Received: by 10.237.37.165 with SMTP id x34mr6238860qtc.218.1484116366111; Tue, 10 Jan 2017 22:32:46 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id d67sm3406059qkg.17.2017.01.10.22.32.44 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 10 Jan 2017 22:32:45 -0800 (PST) Subject: Re: Skipping unexec via a big .elc file Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: <8360lmesso.fsf@gnu.org> Date: Wed, 11 Jan 2017 01:32:43 -0500 Cc: Andreas Schwab , monnier@iro.umontreal.ca, emacs-devel@gnu.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 06:32:52 -0000 > On Jan 10, 2017, at 12:19, Eli Zaretskii wrote: >=20 >> From: Andreas Schwab >> Date: Tue, 10 Jan 2017 10:46:25 +0100 >> Cc: emacs-devel@gnu.org >>=20 >> On Jan 09 2017, Stefan Monnier wrote: >>=20 >>> Eli wrote: >>>> Multiple args to , are not supported: ((\, (quote = set-window-parameter)) temp (\, (quote set-window-parameter)) end) >>>=20 >>> Hmm... I don't understand this. This message seems to come from >>> backquote.el: >>>=20 >>> ((eq (car s) backquote-unquote-symbol) >>> (if (<=3D level 0) >>> (cond >>> ((> (length s) 2) >>> ;; We could support it with: (cons 2 `(list . ,(cdr s))) >>> ;; But let's not encourage such uses. >>> (error "Multiple args to , are not supported: %S" s)) >>> (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1) >>> (nth 1 s)))) >>> (backquote-delay-process s (1- level)))) >>>=20 >>> but then `s` should have \, in its car, whereas the above message >>> indicates that (car s) is (\, (quote set-window-parameter)) which >>> implies we should not have entered this branch. >>=20 >> That can only mean that something clobbered backquote-unquote-symbol. >=20 > Yes, the value of backquote-unquote-symbol at this point is indeed > this: >=20 > (\, (quote set-window-parameter)) >=20 > I guess something is wrong with reading dumped.elc? At the moment it=E2=80=99s looking to me like it might be a problem with = my #N# patch for writing out symbols. It got a little more of a speedup = reading dumped.elc, but if I drop that change, I get a lot further in = trying to bootstrap the tree with your change. It still fails while = processing the =E2=80=9Cleim=E2=80=9D directory, though. Indeed, looking at dumped.elc, I see: (#35# '#5646# '#218#) where 35 is set-default, 5646 is backquote-unquote-symbol, and 218 is = ,=E2=80=99set-window-parameter thanks to = "#218=3D,=E2=80=99#897=3Dset-window-parameter" being read from = dumped.elc. I suspect 218 was supposed to be just the comma, but the = special printing of comma forms was still applied but is not compatible = with the #N# handling, so comma and related symbols should just be = excluded from that hack. I=E2=80=99ll test that out, but in the meantime, commenting out the = binding in loadup.el of print-symbols-as-references should make things = work again (bootstrapping up until partway through the leim directory). Ken= From MAILER-DAEMON Wed Jan 11 03:35:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRENh-00030B-L0 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 03:35:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRENe-0002yd-PV for emacs-devel@gnu.org; Wed, 11 Jan 2017 03:35:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRENd-0003MY-4a for emacs-devel@gnu.org; Wed, 11 Jan 2017 03:35:38 -0500 Received: from mail-ua0-x232.google.com ([2607:f8b0:400c:c08::232]:34485) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRENc-0003Lr-UA for emacs-devel@gnu.org; Wed, 11 Jan 2017 03:35:37 -0500 Received: by mail-ua0-x232.google.com with SMTP id 35so71614234uak.1 for ; Wed, 11 Jan 2017 00:35:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=EqndQwKComaVGtsqqSq7w9ibNHlW7wjikVZkleg/Gnw=; b=P4hdEcAOA1758aYDziVBlBtezrohl0KOUsrwmGRS+stKJ53FmLeuiMDb2xwGCvLEpq mDn6/CSfnWlimXY5NmGKXF4nuy2ZyfocQHdcUIGsDwBiqfbJXnPBq4S3NPYJLUYt3A+e hVYxl/8Sw+hx6seOqMY2m3SRk21vfxbYdMY7vWjP3i/jbmMQEScKs5H13UwvTpjWlRcr bnBULbq7Emq/gsUZ/zwUzSBYt50jz0xrewKuNddHXxFF67R25nkby7/vwYAZ03Wb+JZW ZJLrodxs/ccbxjLyKeRfjyzjFgX+n4UglFJiG0lI4smIpBqZUwsif3JRzle0JIbnGjtK E3CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=EqndQwKComaVGtsqqSq7w9ibNHlW7wjikVZkleg/Gnw=; b=pemICleSDMIlXUt4YkIwqzaAPajXl4GgR/UpW0LZ2PVDoAMiSaH5LyMCXVT3Wgp8xt 35cVC8Q93QrnUS/wILy7SksGLO5rimIlQcVWTxceRbxepWUFfqlj1gPkU5ke+1j3TqXr sMgGkHnIPSxGCs3bJrXUHr+H9GK8ZsMcAAKdr3Oeko//nyAAdOJ/PkEOWoPpEvqtETrF qu1hD4a+OiaM6uh9TFfp0l5gD4MHxLwDe4CTLSxQEqylv6jEJfDzK4QNFvyuswajFFZc gjrWdHfAjWttDkk4WLcLe8OetWdQsbeAtg3+5TyAxygIXqVkOWsJJgFJHLsA7PkTkdPA d04w== X-Gm-Message-State: AIkVDXLbBXnvy4S2aNfa9salZpbbGcwJm4qxPnEkAnomfAsgZDbZFWQiyCoNlqD7ZKeFKm58yBzeSqr19EEP0w== X-Received: by 10.176.3.44 with SMTP id 41mr4114814uat.157.1484123736145; Wed, 11 Jan 2017 00:35:36 -0800 (PST) MIME-Version: 1.0 Sender: bastian.beischer@gmail.com Received: by 10.103.0.7 with HTTP; Wed, 11 Jan 2017 00:35:35 -0800 (PST) In-Reply-To: References: <20170103205239.GA5869@belanger-laptop> From: Bastian Beischer Date: Wed, 11 Jan 2017 09:35:35 +0100 X-Google-Sender-Auth: 2Z-RvpGohlrF8YULfeka_99lis4 Message-ID: Subject: Re: FW: calc-yank.el To: Kaushal Modi Cc: "Driscoll, Kevin R" , "emacs-devel@gnu.org" Content-Type: multipart/alternative; boundary=001a113d0df618b9130545cd7c0c X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 08:35:40 -0000 --001a113d0df618b9130545cd7c0c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, on a related note, I would really appreciate some feedback on this bug report: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D23629 Cheers Bastian On Wed, Jan 11, 2017 at 4:52 AM, Kaushal Modi wrote: > Hi Kevin, > > Can you please provide a git formatted patch with respect to the master > branch? > > I expanded the calc-yank function last year to support different radixes= : > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3D > ec0d4d24fd11b5040de9f7657b486c3b1e743071 > > On Tue, Jan 10, 2017, 10:36 PM Driscoll, Kevin R < > kevin.driscoll@honeywell.com> wrote: > >> Contrary to the header of the calc-yank.el file, jay.p.belanger is no >> longer the maintainer of calc-yank. >> This should be updated. And, please consider my change suggestion below= . >> >> -----Original Message----- >> From: Jay Belanger [mailto:jay.p.belanger@gmail.com] >> Sent: Tuesday, January 03, 2017 14:53 >> To: Driscoll, Kevin R >> Subject: Re: calc-yank.el >> >> Hi Kevin, >> >> I'm a little surprised that digit-grouped numbers aren't handled properl= y >> already. But your solution looks well thought out. >> However, I'm not using Emacs or maintaining Calc any more. >> You should send this to emacs-devel@gnu.org, and they should make the >> changes. >> >> Jay >> >> -----Original Message----- >> To: Jay Belanger [mailto:jay.p.belanger@gmail.com] >> From: Driscoll, Kevin R >> Subject: Re: calc-yank.el >> >> Please consider the changes to calc-yank.el between the commented lines >> below. This allows the yanking of digit-grouped numbers. It=E2=80=99s= a real >> pain not having that capability, given that most large numbers to be >> imported into calc from text are grouped. While this could interfere wi= th >> yanking vectors, the grabs are actually simpler alternatives for vectors= . >> To minimize the impact of this change on the unsuspecting, a nil-default >> calc-yank-grouped mode flag could be added and the =E2=80=98=E2=80=99cal= c-group-digits=E2=80=99=E2=80=99 >> below could be replaced with =E2=80=9Ccalc-yank-grouped=E2=80=9D or =E2= =80=9C(and calc-group-digits >> calc-yank-grouped)=E2=80=9D. This doesn=E2=80=99t handle radix > 10; ya= nking these are >> very rare for grouped numbers and there=E2=80=99s not a standard format = (16# vs 0x). >> >> (defun calc-yank () >> (interactive) >> (calc-wrapper >> (calc-pop-push-record-list >> 0 "yank" >> (let ((thing (if (fboundp 'current-kill) >> (current-kill 0 t) >> (car kill-ring-yank-pointer)))) >> (if (eq (car-safe calc-last-kill) thing) >> (cdr calc-last-kill) >> (if (stringp thing) >> ; (let ((val (math-read-exprs (calc-clean-newlines >> thing)))) >> (let ((val (math-read-exprs >> (calc-clean-newlines >> (if calc-group-digits >> (replace-regexp-in-string >> (concat "\\([0-9]\\)" calc-group-char >> "\\([0-9]\ >> \)") >> "\\1\\2" >> thing) >> thing))))) >> ; >> (if (eq (car-safe val) 'error) >> (progn >> (setq val (math-read-exprs thing)) >> (if (eq (car-safe val) 'error) >> (error "Bad format in >> yanked >> data") >> val)) >> val)))))))) >> >> -- >> Kevin R. Driscoll, Engineering Fellow >> Kevin.Driscoll@Honeywell.com >> Phone: +1 763-954-6789 <+1%20763-954-6789> Cell: +1 612-801-9520 >> <+1%20612-801-9520> FAX: +1 763-954-5473 <+1%20763-954-5473> >> Honeywell; MN10-122B; 1985 Douglas Dr. N.; Golden Valley; MN >> 55422-3992; USA >> > -- > > Kaushal Modi > --=20 Bastian Beischer RWTH Aachen University of Technology @RWTH Aachen Office: 28 C 203 Phone: +49-241-80-27205 E-mail: beischer@physik.rwth-aachen.de Address: I. Physikalisches Institut B, Sommerfeldstr. 14, D-52074 Aachen @CERN Office: Bdg 32-4-B12 Phone: +41-22-76-75750 E-mail: bastian.beischer@cern.ch Address: CERN, CH-1211 Geneve 23 --001a113d0df618b9130545cd7c0c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,

on a related note, I would = really appreciate some feedback on this bug report:


Chee= rs
Bastian

On Wed, Jan 11, 2017 at 4:52 AM, Kaushal Modi <= kaushal.modi@gmail.com> wrote:

Hi Kevin,

Can you please provide a git formatted patch with respect to= the master branch?

I expanded the calc-yank function last year to support=C2=A0= different radixes: htt= p://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3Dec0d4d24fd11= b5040de9f7657b486c3b1e743071


On Tue, Jan 10, 2017, 10:36= PM Driscoll, Kevin R <kevin.driscoll@honeywell.com> wrote:
Contrary to the header of the calc-yank.el file, = jay.p.belanger is no longer the maintainer of calc-yank.
This should be updated.=C2=A0 And, please consider my change suggestion bel= ow.

-----Original Message-----
From: Jay Belanger [mailto:jay.p.belanger@gmai= l.com]
Sent: Tuesday, January 03, 2017 14:53
To: Driscoll, Kevin R <kevin.driscoll@h= oneywell.com>
Subject: Re: calc-yank.el

Hi Kevin,

I'm a little surprised that digit-grouped numbers aren't handled pr= operly already.=C2=A0 But your solution looks well thought out.
However, I'm not using Emacs or maintaining Calc any more.
You should send this to emacs-devel@gnu.org, an= d they should make the changes.

Jay

-----Original Message-----
To: Jay Belanger [mailto:jay.p.belanger@gmail= .com]
From: Driscoll, Kevin R <kevin.driscoll= @honeywell.com>
Subject: Re: calc-yank.el

Please consider the changes to calc-yank.el between the commented lines bel= ow.=C2=A0 =C2=A0This allows the yanking of digit-grouped numbers.=C2=A0 It= =E2=80=99s a real pain not having that capability, given that most large nu= mbers to be imported into calc from text are grouped.=C2=A0 While this coul= d interfere with yanking vectors, the grabs are actually simpler alternativ= es for vectors.=C2=A0 To minimize the impact of this change on the unsuspec= ting, a nil-default calc-yank-grouped mode flag could be added and the =E2= =80=98=E2=80=99calc-group-digits=E2=80=99=E2=80=99 below could be replaced = with =E2=80=9Ccalc-yank-grouped=E2=80=9D or =E2=80=9C(and calc-group-digits= calc-yank-grouped)=E2=80=9D.=C2=A0 This doesn=E2=80=99t handle radix > = 10; yanking these are very rare for grouped numbers and there=E2=80=99s not= a standard format (16# vs 0x).

(defun calc-yank ()
=C2=A0 (interactive)
=C2=A0 (calc-wrapper
=C2=A0 =C2=A0(calc-pop-push-record-list
=C2=A0 =C2=A0 0 "yank"
=C2=A0 =C2=A0 (let ((thing (if (fboundp 'current-kill)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(current-kill 0 = t)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(car kill-ring-yank-poi= nter))))
=C2=A0 =C2=A0 =C2=A0 (if (eq (car-safe calc-last-kill) thing)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cdr calc-la= st-kill)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (stringp thing)=
;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(let = ((val (math-read-exprs (calc-clean-newlines thing))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let = ((val (math-read-exprs
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (calc-clean-newlines
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(if calc-group-digits
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(replace-regexp-in-string
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (concat "\\([0-9]\\)" calc-group-= char
"\\([0-9]\
\)")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "\\1\\2"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 thing)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0thing)))))
;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (if (eq (car-safe val) 'error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq val (math-read-e= xprs thing))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (eq (car-safe val)= 'error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 (error "Bad format in
yanked
data")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 val))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 val))))))))

--
Kevin R. Driscoll, Engineering Fellow=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0Kevin.Driscoll@Honeywell.com
Phone: +1 763-954-6789=C2=A0 =C2=A0 =C2=A0 Cell: +1 612-801-9520=C2= =A0 =C2=A0 =C2=A0 =C2=A0FAX: +1 763-954-5473
Honeywell; MN10-122B; 1985 Douglas Dr. N.; Golden Valley; MN
55422-3992; USA
--
Kaushal Modi




--
Bastian= Beischer
RWTH Aachen University of Technology

@RWTH Aachen
Of= fice: 28 C 203
Phone: +49-241-80-27205
E-mail: beischer@physik.rwth-aachen.d= e
Address: I. Physikalisches Institut B, Sommerfeldstr. 14, D-52074 = Aachen

@CERN
Office: Bdg 32-4-B12
Phone: +41-22-76-75750
E-= mail: bastian= .beischer@cern.ch
Address: CERN, CH-1211 Geneve 23
--001a113d0df618b9130545cd7c0c-- From MAILER-DAEMON Wed Jan 11 06:12:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRGpv-0001q5-0j for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 06:12:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45385) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRGps-0001pf-Tc for emacs-devel@gnu.org; Wed, 11 Jan 2017 06:12:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRGps-0005jn-2g for emacs-devel@gnu.org; Wed, 11 Jan 2017 06:12:56 -0500 Received: from mail-io0-x236.google.com ([2607:f8b0:4001:c06::236]:35899) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRGpr-0005jg-Uk for emacs-devel@gnu.org; Wed, 11 Jan 2017 06:12:56 -0500 Received: by mail-io0-x236.google.com with SMTP id j13so72537401iod.3 for ; Wed, 11 Jan 2017 03:12:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4oIgNRJj0bmSfTZxAc/8UdM5qHepZTRWJFSMIvPpkiU=; b=P93oaggTgR9+KGL5c7yIZOw2qx//2FVj+bZele3+q2rxIFcXYRIQxaweJJQrgNYotu dTjjSkLQzRXwov5O0VNGKNUsiU7EEzvevH/OlfDQ1Auun8I/y7ypX/CrPtJVaHpkzt9N H4R/brtb+d+cHn0bQEs9LZVZNG33wCQCx8fGHXt3B3BEO7tWSgfV1zXkMosmJ7zQ+gOE uf8tQdXRQ578OW0b0XwERqoGSLo8W659ZCnG3BZpHEsx5NJ8ma2LgJcrZKYbYaWQbPx7 X2bm68mkcC+BGBw+am3wDsK8DP2PythOJe6nMKFRUUqQBRHLxuHbfyKYFiOt5qecbDso uVHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4oIgNRJj0bmSfTZxAc/8UdM5qHepZTRWJFSMIvPpkiU=; b=f/4a4OMpZ7j5QRU5/WiVZ+zgicoXwX0+/B09OFeZLuIsMCOklupUQgOE5SBKOMqBWu kAQObEBKb7h3mo4Ei8XbCnZiyr1R3UjVSTUACoqSSHunyuw20ato9FZEBRfiGtuc6sGY y7r3O4IZBji+pZ52c47W2XKZjhKdAGxMfa5zfqu6UM76tpSMyNtTs5NnlMeNrhaj7cYE 0l76+2sHIvgWHiQktkbTJAjDWBOUTd/vtnLfSFwzTNKsI3zyU0Cz1lnlSgDMfHNaEM+g zHAvd1bYnZo1wXsEDPjnjciOx0qQBvdOwPrK+wUsm7PoRNUBOVgF6V1qAI80BaITUraO 0kvg== X-Gm-Message-State: AIkVDXJjcdQcVr1bnJTKdpSvFPv17NXmllju/ZMiXJBLR2lSRp9jEab0xxCYb2hGmdSQuQksUDvvg1jMZgS7vQ== X-Received: by 10.107.184.6 with SMTP id i6mr7817165iof.153.1484133175131; Wed, 11 Jan 2017 03:12:55 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.141.9 with HTTP; Wed, 11 Jan 2017 03:12:34 -0800 (PST) In-Reply-To: References: <20170106075132.GA3272@localhost.localdomain> From: Alexander Kuleshov Date: Wed, 11 Jan 2017 17:12:34 +0600 Message-ID: Subject: Re: emacs 26.0.50.1 - add DNS keywords and remove duplications To: Simon Leinen Cc: emacs-devel Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 11:12:58 -0000 On Tue, Jan 10, 2017 at 7:48 PM, Simon Leinen wrote: >> I've attached the patch which adds TLSA (RFC 6698) and NSEC3 >> (RFC 5155) to dns-mode-types. > > Cool, that looks correct and useful - we use both these record types, > though NSEC3 records are usually in machine-generated include files. > > My only (cosmetic) suggestion for improvement would be to delete the > space between "NSEC3" and the closing parenthesis. > >> Additioanlly these RFCs were added to comments and duplication >> of NSAP was removed. Yes, I will send suggested fixed in v2 Thanks From MAILER-DAEMON Wed Jan 11 07:55:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRIQh-0006kG-TB for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 07:55:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45681) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRIQf-0006k1-8B for emacs-devel@gnu.org; Wed, 11 Jan 2017 07:55:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRIQc-0007sr-4h for emacs-devel@gnu.org; Wed, 11 Jan 2017 07:55:01 -0500 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]:33133) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRIQb-0007qm-TV for emacs-devel@gnu.org; Wed, 11 Jan 2017 07:54:58 -0500 Received: by mail-lf0-x244.google.com with SMTP id k62so14750146lfg.0 for ; Wed, 11 Jan 2017 04:54:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=0L31iPrnlLkYsEZR7V0O7Sp5OgtqU2EAjNa6niue7nA=; b=UYr8w0FROW7gojamjjGfITSZsRaNFJWrp49wuSibzrunJ2O3JbxQa8W5F6lEt6mUxo CFDWFfECl1PQWQuOHmUmFsvIAM4SIhYI9zKhIGOAvo5QnNL4A/w2zwHIQtf+MJTNIHDq V1e3GSFyuJzae3KjeKGilOuYWOGGQHKVraSCRJ5/A/D+XJzif39Q9EfqQvG+3xtXbvEL UGZTn3GtTR1x51MOwlVsHWOlYf7W/c3IJ/HjkZSZTUfaMF/0In/onZRXX1yGXM2042uR Lc6pr6jcwXeCwXrxKtDrRhShXNlbgIeaJ7alnENFDTwc8Ow050GjEIU/NdpjQxjGKAGL Dokg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=0L31iPrnlLkYsEZR7V0O7Sp5OgtqU2EAjNa6niue7nA=; b=kEwy5l8hxdChf8P9VEsFwOYjSffoH2jU5WkgEjeEaza8bbtCJzMJUc7d8GfTCO9ZNX Ydh1gLIwOYWdCIx/deeC/7LAg2AsVmND9svDlBEJ+sDcJjeXoyo34drO3RKIOTsDfKS5 YvwCoLOsKLiQcxBcp5srDcHHDcftX2bpdupC9BeGtxfbcG0Z5X714qzaH4GG7nwELnnc Ya00ThJDfbcSIxm2wRweshUFbuPfMUHX7zAd0qmW4Yb3I7DP2joE3dcX48sNm5salFRQ 8ktcuXOKZ7+ODMnaBzG9jM55MzhoREKKKbkrrYztpQ6NtdBt4vb5lpDTMpBri24ll7Jr Z2hw== X-Gm-Message-State: AIkVDXKb/Qy/xdPvlMCFgPAGjxy7WxhcwqPTYKY61iclsZOIsoxEoGcSuZUBFqVXkCrERQ== X-Received: by 10.25.99.29 with SMTP id x29mr3159333lfb.104.1484139296059; Wed, 11 Jan 2017 04:54:56 -0800 (PST) Received: from localhost.localdomain ([2.133.56.245]) by smtp.gmail.com with ESMTPSA id 87sm1004519lft.27.2017.01.11.04.54.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jan 2017 04:54:55 -0800 (PST) Date: Wed, 11 Jan 2017 18:54:47 +0600 From: Alexander Kuleshov To: emacs-devel Subject: [PATCH v2] emacs 26.0.50.1 - add DNS keywords and remove duplications Message-ID: <20170111125447.GA29704@localhost.localdomain> References: <20170106075132.GA3272@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="AWniW0JNca5xppdA" Content-Disposition: inline In-Reply-To: X-Operating-System: Linux X-Date: Wed Jan 11 18:50:48 +06 2017 User-Agent: Mutt/1.6.0-rc0 ((null)) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 12:55:02 -0000 --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello everyone, I've attached the patch v2 which adds TLSA (RFC 6698) and NSEC3 (RFC 5155) to dns-mode-types. Additioanlly these RFCs were added to comments and duplication of NSAP was removed. Changes since v1: * empty space removed before and the "NSEC3" closing parenthesis suggested by Simon Leinen Thank you. --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Add-DNS-keywords-and-remove-duplications.patch" >From a1f8f976a128b2fe8f6df9e3199c2bab4beb37c5 Mon Sep 17 00:00:00 2001 From: Alexander Kuleshov Date: Fri, 23 Dec 2016 16:53:41 +0600 Subject: [PATCH] Add DNS keywords and remove duplications * lisp/textmodes/dns-mode.el (dns-mode-types): Add two TLSA and NSEC" DNS related keywords and remove duplication of "NSAP". --- lisp/textmodes/dns-mode.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index 521b1f3..d6f0b73 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -32,6 +32,9 @@ ;; RFC 1034, "DOMAIN NAMES - CONCEPTS AND FACILITIES", P. Mockapetris. ;; RFC 1035, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", P. Mockapetris. +;; RFC 5155, "DNS Security (DNSSEC) Hashed Authenticated Denial of Existence" +;; RFC 6698, "The DNS-Based Authentication of Named Entities (DANE) +;; Transport Layer Security (TLS) Protocol: TLSA" ;;; Release history: @@ -50,13 +53,13 @@ dns-mode-classes (defconst dns-mode-types '("A" "NS" "MD" "MF" "CNAME" "SOA" "MB" "MG" "MR" "NULL" "WKS" "PTR" "HINFO" "MINFO" "MX" "TXT" - "RP" "AFSDB" "X25" "ISDN" "RT" "NSAP" "NSAP" + "RP" "AFSDB" "X25" "ISDN" "RT" "NSAP" "SIG" "KEY" "PX" "GPOS" "AAAA" "LOC" "NXT" "EID" "NIMLOC" "SRV" "ATMA" "NAPTR" "KX" "CERT" "A6" "DNAME" "SINK" "OPT" "APL" "DS" "SSHFP" "RRSIG" "NSEC" "DNSKEY" "UINFO" "UID" "GID" "UNSPEC" "TKEY" "TSIG" "IXFR" "AXFR" "MAILB" - "MAILA") + "MAILA" "TLSA" "NSEC3") "List of strings with known DNS types.") ;; Font lock. -- 2.8.0.rc3.1353.gea9bdc0 --AWniW0JNca5xppdA-- From MAILER-DAEMON Wed Jan 11 09:19:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRJkJ-0002Iv-LN for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 09:19:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37856) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRJkH-0002Ig-Cs for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:19:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRJkE-0001RC-2W for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:19:21 -0500 Received: from mail.agora-net.com ([67.59.132.6]:58814) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRJkD-0001R0-UQ for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:19:18 -0500 Received: from ttn by mail.agora-net.com with local (Exim 4.82) (envelope-from ) id 1cRJkC-0002HN-LP for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:19:16 -0500 Received: from ttn by zigzag.favinet with local (Exim 4.80) (envelope-from ) id 1cRJpz-0004ty-J5 for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:25:15 +0100 From: Thien-Thi Nguyen To: emacs-devel@gnu.org Subject: Re: Obsolescence warnings References: <20161224023808.12868.71069@vcs.savannah.gnu.org> <20161224023808.9EE8D2201BC@vcs.savannah.gnu.org> Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org Date: Wed, 11 Jan 2017 15:25:06 +0100 In-Reply-To: (Stefan Monnier's message of "Sat, 24 Dec 2016 00:02:03 -0500") Message-ID: <87h955r7wd.fsf@zigzag.favinet> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Sender: Thien-Thi Nguyen X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: ttn@gnuvola.org X-SA-Exim-Scanned: No (on mail.agora-net.com); SAEximRunCond expanded to false X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 67.59.132.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 14:19:22 -0000 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable () Stefan Monnier () Sat, 24 Dec 2016 00:02:03 -0500 To the extent that it affects the end-user and is caught during execution, this mechanism needs to be very careful not to get in the way, although it should be visible enough that we can reasonably expect that the user will likely see those messages. Here's an idea: (defun message-with-properties (plist fmt &rest args) "Like =E2=80=98message=E2=80=99 for FMT and ARGS, and also propertize w/ = PLIST. Return the propertized, formatted string." (with-current-buffer (get-buffer "*Messages*") (let* ((beg (goto-char (point-max))) (str (apply #'message fmt args)) (end (+ beg (length str) 1)) (inhibit-read-only t)) (add-text-properties beg end plist) (buffer-substring beg end)))) (message-with-properties '(face font-lock-warning-face) "obsolete: %S" 'obsolete-thing) We can then tell people to look for easily visible "obsolete" in *Messages*, and they can do that at their own convenience, or we can programmatically collect such blurbs for a more concentrated presentation, later. In the meantime, this can be tweaked a bit for other (ab)uses, such as =E2=80=98C-u C-h e=E2=80=99 doing filtering bas= ed on various properties, etc. WDYT? =2D-=20 Thien-Thi Nguyen ----------------------------------------------- (defun responsep (query) (pcase (context query) (`(technical mailing-list) t) ...)) 748E A0E8 1CB8 A748 9BFA =2D-------------------------------------- 6CE4 6703 2224 4C80 7502 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAlh2QEUACgkQZwMiJEyAdQKjtwCgsaGduO7JPcxjnauy59XMoI2E hrsAoMAiRQ+sYumogwtDPJoaoFmxdR24 =4EOU -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Wed Jan 11 09:35:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRJza-0001Zf-Gd for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 09:35:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42033) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRJzY-0001Y1-Pz for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:35:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRJzT-0000Vs-7V for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:35:08 -0500 Received: from [195.159.176.226] (port=58448 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRJzT-0000P7-0E for emacs-devel@gnu.org; Wed, 11 Jan 2017 09:35:03 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cRJyw-0000uk-5Z for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:34:30 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Obsolescence warnings Date: Wed, 11 Jan 2017 09:33:57 -0500 Lines: 40 Message-ID: References: <20161224023808.12868.71069@vcs.savannah.gnu.org> <20161224023808.9EE8D2201BC@vcs.savannah.gnu.org> <87h955r7wd.fsf@zigzag.favinet> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:klJZD5Wu3qhdE2bRtnsGRqiYtyg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 14:35:09 -0000 > (message-with-properties > '(face font-lock-warning-face) > "obsolete: %S" 'obsolete-thing) > We can then tell people to look for easily visible "obsolete" in > *Messages*, and they can do that at their own convenience, or we > can programmatically collect such blurbs for a more concentrated > presentation, later. I think this is the easy part. The harder parts are: - perform the obsolescence checks (we don't do that currently for faces, and we don't do it for (setq ) in the user's ~/.emacs either). - perform those checks efficiently. - display them in an effective and friendly way. For the last part, for example, I use locally (advice-add obsolete-name :before (lambda (&rest _) (message "Warning: %s is obsolete!" obsolete-name)) '((name . obsolescence-warning))) in `make-obsolete`. It kinda works. But for some obsolete functions, it leads occasionally to a deluge of messages which can be not just annoying but can also hide the useful info. So it's not friendly. In other cases, the obsolescence message is actually never shown because it's immediately replaced with another message. Another problem with it is that it doesn't tell me where that obsoleted function was called, so I then have to chase down the source: you can't expect an end user to do that, so his bug-report will often be rather useless. So it's not really effective either. I guess we could live with something like that where we only activate it in the master branch (i.e. version numbers of the form NN.50.OO), but even then people will get annoyed and will want to turn it off. Stefan From MAILER-DAEMON Wed Jan 11 10:44:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRL4D-0007nU-RD for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 10:44:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60116) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRL4B-0007mQ-Ic for emacs-devel@gnu.org; Wed, 11 Jan 2017 10:44:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRL47-0007wG-Lv for emacs-devel@gnu.org; Wed, 11 Jan 2017 10:43:59 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:55718) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRL47-0007vJ-Ak for emacs-devel@gnu.org; Wed, 11 Jan 2017 10:43:55 -0500 Received: from [18.189.99.164] ([18.189.99.164]) by mrelayeu.kundenserver.de (mreue101 [212.227.15.184]) with ESMTPSA (Nemesis) id 0M8zYj-1cJxjR2qUf-00CQb2 for ; Wed, 11 Jan 2017 16:43:52 +0100 To: Emacs developers From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Subject: How does one set up a syntax table for (* and //? Message-ID: Date: Wed, 11 Jan 2017 10:44:04 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:XMlADozDsfYQ61cyjqTyOILtkLjH+xBViOc9DAKWSO6bNUVnkaf exac5KKdPGZ+GnE5ANZaTuw48PW9QAa3g48ySSyfkzp2B0NF1XE8Rqcq5AJYycOKrtxJhvk DInui60na3JayQiM/+R+ObSZHF21H+591mZNfBJlH6AY3x6OTGdxjSN8PTtPMxu4wsJz8ym Md59ZiT0MLS1Ej00LUtug== X-UI-Out-Filterresults: notjunk:1;V01:K0:tEnQ28jKMFw=:3GQFdJ9jRfH/Ch3FTg4v6G 6P0ObHYtH9asCtatcUXY+A/scfriNHfs19CA97FNc38LYn5ppD8T9DBKslfY2WwnqasmF/l9s VadWOg0SNy69xrjlN8nsNp5qpJYJWzneXPxclD8ylSd7FPK9NXUpr1PVt2tlSJNckhHoBcGrN FDtZPXKFZMDU+L6HGYLk/BUePzT7hiAaWJuW9RvISvEJkfQGHVk3Od2IbGBHmb435py6jR2Mr GJDbNWxv3bsBIy7sfIZvKPC0wdvKHlqkn5d2w//dc3UJPm3Nq6Tx515Lcx6V+hY0+tNOefmAc mhT5MdZ00aHiYh6fA0IxWSKuHYk1xk5bJ+fOnYy737/uwhbV58ryiA3G1l4n3dYwVK3NYdKrc 3CcLGowYGIm3F9zhRHOb1l4LPOwiyG1cs7wlxOc9F97ULYe9c+OcqDVZAdTORQR1Fz5t+cUic MKaKXwHsYBcenb1ZSMFzshun/WkpivL3I3+nT1VfxHikILD43rOdFyoQo1yzxUJ6d3pdSUwc7 t43Vdcbsn2AP7CO01vlAsd1wmFiKuCZ9ncWVGKtLxDYKsJeyVptk22VYLEfFVKyFgg6grUjZq JysHlOPOeLPHzfHi5yBfOy400n+3X83z5uOIOYy2obo0Zoc257/pMzLGTBZlxIoxuei+9P7mO Q7IPBvVkeoRdVUkHUn4Az0k3k3+y+lK8yzQ0VrfFNuPZnkabbBtmq66DT3ZYWUII7SEfLgr5X 6IEu+dxi6rR0Ht8q X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.75 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 15:44:00 -0000 Hi Emacs devel, As far as I can tell from the docs, the following syntax table should recognize // … line comments and nestable (* … *) comments properly: (defvar example-syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?* ". 23" table) (modify-syntax-entry ?/ ". 12c" table) (modify-syntax-entry ?\n "> c" table) (modify-syntax-entry ?\( "()1n" table) (modify-syntax-entry ?\) ")(4n" table) table)) Yet it does not: (with-current-buffer (get-buffer-create "test") (erase-buffer) (prog-mode) (set-syntax-table example-syntax-table) (insert "// line comment\n") (insert "regular text\n") (insert "(* nested (* comments *) *)\n") (insert "regular text\n") (insert "(// another line comment,\nwhich incorrectly extends past the newline?\n") (pop-to-buffer (current-buffer))) In this example, the last line (“which incorrectly extends past the newline?”), is considered to be a comment, because the sequence "(/" is treated as a multiline comment opener. How can I work around this? Did I miss something in the manual? Thanks! Clément. From MAILER-DAEMON Wed Jan 11 12:22:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRMbl-0002xl-7z for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 12:22:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRMbj-0002vT-16 for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:22:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRMbf-0003On-Po for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:22:43 -0500 Received: from ocolin.muc.de ([193.149.48.4]:55464 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cRMbf-0003NS-FE for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:22:39 -0500 Received: (qmail 4548 invoked by uid 3782); 11 Jan 2017 17:22:34 -0000 Received: from acm.muc.de (p548C6F69.dip0.t-ipconnect.de [84.140.111.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 11 Jan 2017 18:22:34 +0100 Received: (qmail 10415 invoked by uid 1000); 11 Jan 2017 17:22:20 -0000 Date: Wed, 11 Jan 2017 17:22:20 +0000 To: emacs-devel@gnu.org Subject: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Message-ID: <20170111172220.GA10374@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:22:44 -0000 Hello, Emacs. I'm getting this error while trying to build under GNU/Linux: automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such file or directory Makefile:456: recipe for target 'lib/Makefile.in' failed . Doesn't *.mk belong to w32 builds? I updated master at ~ 17:00 +0000 today. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 11 12:30:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRMjf-0001PU-8j for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 12:30:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41046) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRMja-0001Kx-Ox for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:30:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRMjX-0006aS-Lp for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:30:50 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:34427) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRMjX-0006XB-FF for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:30:47 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cRMjI-0008T5-SI; Wed, 11 Jan 2017 18:30:36 +0100 From: Lars Ingebrigtsen To: Alan Mackenzie Cc: emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAElBMVEXGm3w2IiCJWkZkPDMK BgcRDhEP7TMcAAACQElEQVQ4jWWUTXLbMAyFUardm2a4p4FmL5KjA6SVDkBTuP9V+kDKyUyKGdsU Pj38WRC1TXXX/436A2A/VH3EpX1O3ZtE0nic+3dJNzCsee9D66F3HLwGMtCafXDdem9e7dDqAH+f PbQMSfe6bT7g1yudyHDs+ysNLo9ZlUkvCxWW5zlSq3UezVsSXwTA5/zy5yKB6yfAPSNIrYGclCkZ 4NNWIldnaEt+eaUKAeQwClBqM0whxwNsTUwUL7CSsJuKxiD5BWgRSc5S5LtnrnX0gUDOJfEs6VFz khjKC6yMKHIjSsRIo3e5AKNQokq0Arl31aHgWuxm5CUqbiXeWgwA/AjVAPKSK7wyv4/Oe8qlLNaz eLQihfkxwZKDxabkqmMWToxvA9kjjlXliksuFwPLGGJIcFreQpLRHVswgHbH3cVyoNILbFZVS2xt kdioGAXArNzuEw1zpuIqBjIafLrhZkLJSM+uomDBSJ7mTigu3DB6osUUxBNApKHe4IOUkVIGsBwO j2goE0BV0gZgSZy2EH1hSgYqTwDJD9UQtTGtCGT5DVjYBc82VuueDMAxq0K65dSG1eoY5Sif30ZV iX7p/iFQoY8JIv1Znugu2zIcGrkMgqFgcQz4c6zIyWVMbIJuRZl/P85a8Ei6kRybROXncYHAd7K/ CkPEYlH9vc99O9uDudAEOab8tl/2galDIAa83vxIYZJWbLhiz+65f5mdj+sNQnq+fHh1QDTF2ijO SseajxUHtXcIWruCjb0/X3e1fwE2ujuVndtmAAAAAElFTkSuQmCC Date: Wed, 11 Jan 2017 18:30:32 +0100 In-Reply-To: <20170111172220.GA10374@acm.fritz.box> (Alan Mackenzie's message of "Wed, 11 Jan 2017 17:22:20 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:30:52 -0000 Alan Mackenzie writes: > I'm getting this error while trying to build under GNU/Linux: > > automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such > file or directory You have to say "sh ./autogen.sh" to get things working again after some recent changes. It would be nice if the Makefile could detect these things and do the right thing automatically. It would save a lot of people a lot of time. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 11 12:40:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRMse-0003Vc-K5 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 12:40:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRMsc-0003S9-CQ for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:40:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRMsb-0000xC-FH for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:40:10 -0500 Received: from mail-ua0-x235.google.com ([2607:f8b0:400c:c08::235]:35485) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRMsb-0000ws-BM for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:40:09 -0500 Received: by mail-ua0-x235.google.com with SMTP id y9so185694429uae.2 for ; Wed, 11 Jan 2017 09:40:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=GaIkOrj1AHiw0P5K8uzZ8cluFAgOPH+lRHataPWj+ms=; b=lOMWCLcRkKKppfFHxyCqfXEBTA2eIieZOHP1zXSzfJYfXPDrVtFOhyA5Whp0OU/Nm0 WgHyYXs7QxZpzK+FlVvNguMKn0H0dYDnQjh/J3NQnkLWqFwJAJBDZjbi24ndmiHc5Gx3 j04ZQUTdkkBMV1s28OezdCNXUmxE9Fvx2AThSgQRjwgsb0RtU28/cUSVeb8cd9pgquYx FgqjfZJXH3Kz5d8ReywyMakwj3rbEzoF9aoKDqOan06ma/6OpxcD0ARvRtBCoESA6QJt Y9EpqbkLt1aXwXjOAMSiQ9g79dbuurfhd+WUDdj4dG2vfBTnJ/oLJexX3vxcmnslNl0e oVdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=GaIkOrj1AHiw0P5K8uzZ8cluFAgOPH+lRHataPWj+ms=; b=P4U28zZYcf6cj5hl5h8qYxLUCtH2liLwVdqqfrvPXi9znPklpOkF34J8iYZzFqab4y XzkufpwY48MOzCmUDXduW7poc/mwtv1d/eFP8CGaKNJBbn44eYbUwY94y4KGAko7acil ZicyP2mBj2lhgSaD+/ogUpq+2y3Of5OA0ahbICRZCCU0kr5kCOGJE+DyRLeYrwf+iv4+ vO5abU3g7DofBs3/bzFN5qQL55UsaWO5F4c0m5gHRXw8/fYzroY5ePY9u2dv0FCxUOtO muMTQP5dTSAMlTI2vfWq1iho5LPRsAbM7VWByWGaCraBe1NYLkElfrimHMBuekgXOsq9 uahQ== X-Gm-Message-State: AIkVDXKFo5KHfjZ3vhRELeF6m4+DXhAA+jN2o/OW6OpfGN0yxJxaoZWCtgPMeDLnVkW0UNSdCKVUdaeN/Yy2wQ== X-Received: by 10.176.5.138 with SMTP id e10mr4215982uae.109.1484156408436; Wed, 11 Jan 2017 09:40:08 -0800 (PST) MIME-Version: 1.0 References: <20170111172220.GA10374@acm.fritz.box> In-Reply-To: <20170111172220.GA10374@acm.fritz.box> From: Kaushal Modi Date: Wed, 11 Jan 2017 17:39:57 +0000 Message-ID: Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" To: Alan Mackenzie , emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=94eb2c124794841ef20545d517f3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:40:11 -0000 --94eb2c124794841ef20545d517f3 Content-Type: text/plain; charset=UTF-8 I faced the same; got fixed after re-running autogen.sh. On Wed, Jan 11, 2017 at 12:26 PM Alan Mackenzie wrote: > Hello, Emacs. > > I'm getting this error while trying to build under GNU/Linux: > > automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such file > or directory > Makefile:456: recipe for target 'lib/Makefile.in' failed > > . Doesn't *.mk belong to w32 builds? > > I updated master at ~ 17:00 +0000 today. > > -- > Alan Mackenzie (Nuremberg, Germany). > > -- Kaushal Modi --94eb2c124794841ef20545d517f3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I faced the same; got fixed after re-running autogen.sh.
On Wed, Jan 11, 2017 at= 12:26 PM Alan Mackenzie <acm@muc.de&g= t; wrote:
Hello, Emacs.

I'm getting this error while trying to build under GNU/Linux:

=C2=A0 =C2=A0 automake-1.15: error: cannot open < lib/../nt/g= nulib.mk: No such file or directory
=C2=A0 =C2=A0 Makefile:456: recipe for target 'lib/Makefile.in' fai= led

.=C2=A0 Doesn't *.mk belong to w32 builds?

I updated master at ~ 17:00 +0000 today.

--
Alan Mackenzie (Nuremberg, Germany).

--

Kaushal Modi

--94eb2c124794841ef20545d517f3-- From MAILER-DAEMON Wed Jan 11 12:41:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRMu9-0004lQ-1G for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 12:41:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRMu6-0004jE-EG for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:41:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRMu3-0001La-Ay for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:41:42 -0500 Received: from [195.159.176.226] (port=47825 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRMu3-0001LS-4q for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:41:39 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cRMti-0001Cm-VJ for emacs-devel@gnu.org; Wed, 11 Jan 2017 18:41:18 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Eric Abrahamsen Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Date: Wed, 11 Jan 2017 09:41:01 -0800 Lines: 17 Message-ID: <878tqh7avm.fsf@ericabrahamsen.net> References: <20170111172220.GA10374@acm.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:W5CXClb+klRVjud2oslnUABcmcM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:41:43 -0000 Alan Mackenzie writes: > Hello, Emacs. > > I'm getting this error while trying to build under GNU/Linux: > > automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such file or directory > Makefile:456: recipe for target 'lib/Makefile.in' failed > > . Doesn't *.mk belong to w32 builds? > > I updated master at ~ 17:00 +0000 today. I got this, also under GNU/Linux, and I think I had to go the full ./autogen.sh route in order to build. Ie, start from the very beginning. Eric From MAILER-DAEMON Wed Jan 11 12:54:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRN6o-0008Ra-TI for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 12:54:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46688) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRN6n-0008QK-7d for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:54:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRN6i-0001M2-Rv for emacs-devel@gnu.org; Wed, 11 Jan 2017 12:54:49 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54218) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRN6i-0001Lp-Os; Wed, 11 Jan 2017 12:54:44 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3798 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRN6h-0005jT-IT; Wed, 11 Jan 2017 12:54:44 -0500 Date: Wed, 11 Jan 2017 19:54:44 +0200 Message-Id: <83y3yhcwij.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: emacs-devel@gnu.org In-reply-to: <20170111172220.GA10374@acm.fritz.box> (message from Alan Mackenzie on Wed, 11 Jan 2017 17:22:20 +0000) Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Reply-to: Eli Zaretskii References: <20170111172220.GA10374@acm.fritz.box> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:54:50 -0000 > Date: Wed, 11 Jan 2017 17:22:20 +0000 > From: Alan Mackenzie > > I'm getting this error while trying to build under GNU/Linux: > > automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such file or directory > Makefile:456: recipe for target 'lib/Makefile.in' failed Re-run autogen.sh. > . Doesn't *.mk belong to w32 builds? No, it belongs to gnulib. From MAILER-DAEMON Wed Jan 11 13:23:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRNYH-0003MT-7V for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:23:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54179) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNYE-0003JO-39 for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:23:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRNYA-000510-Sd for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:23:10 -0500 Received: from ocolin.muc.de ([193.149.48.4]:20488 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cRNYA-0004yN-In for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:23:06 -0500 Received: (qmail 18238 invoked by uid 3782); 11 Jan 2017 18:23:05 -0000 Received: from acm.muc.de (p548C6F69.dip0.t-ipconnect.de [84.140.111.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 11 Jan 2017 19:23:04 +0100 Received: (qmail 25377 invoked by uid 1000); 11 Jan 2017 18:22:51 -0000 Date: Wed, 11 Jan 2017 18:22:51 +0000 To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Message-ID: <20170111182251.GB10374@acm.fritz.box> References: <20170111172220.GA10374@acm.fritz.box> <83y3yhcwij.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83y3yhcwij.fsf@gnu.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:23:11 -0000 Hello, Eli. Also Lars and Kaushal. On Wed, Jan 11, 2017 at 07:54:44PM +0200, Eli Zaretskii wrote: > > Date: Wed, 11 Jan 2017 17:22:20 +0000 > > From: Alan Mackenzie > > I'm getting this error while trying to build under GNU/Linux: > > automake-1.15: error: cannot open < lib/../nt/gnulib.mk: No such file or directory > > Makefile:456: recipe for target 'lib/Makefile.in' failed > Re-run autogen.sh. Thanks. I've done that, and my build now builds. But it's _very_ noisy (in terms of warning messages), and very slow: almost 11 minutes. It seems only a couple of years ago since a make bootstrap was taking me between 4 and 5 minutes. > > . Doesn't *.mk belong to w32 builds? > No, it belongs to gnulib. OK, I'll need to learn about that. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 11 13:30:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRNfD-0002nf-Gx for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:30:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNfB-0002lB-4L for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:30:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRNfA-00080b-B1 for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:30:21 -0500 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:34091) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRNf5-0007zk-P8; Wed, 11 Jan 2017 13:30:15 -0500 Received: by mail-pg0-x241.google.com with SMTP id b1so54360469pgc.1; Wed, 11 Jan 2017 10:30:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=SLZhni2MJJaF9Kc+V7YjOklz8RdObidAgP1HIt7dM2Y=; b=FLrMhCsnbiQ+yBL0Y7GjOxn5P4vgMn5gQvc6jCyzrSj6jhLqcbLI2VH500g0gqthxw SY3+TbT5JhcENv9fJGlY2LQ6Dh94WEA8QYAgZyaYPmu0b1DXG+PkCQpD897nSDw+OTL4 GLF3/eT+SSsWAqPiBV1zPixWE9As07YJZdlraVTX8B8UdOlLJG1ytGZuaeu64kR9lHxG 9ViZ3U9qEgC7IsNMqpuGXjNK2b1jkCN42ye8K0LlI6BM/iVWXXjiQdOWIa2wRKq62f+s hBRHXyzhmir2n2HASsThZxpHyhraVW9aS4jHvM7Z6PfjFXIB8m6HS6N5g2W2co6Z0U8K el6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=SLZhni2MJJaF9Kc+V7YjOklz8RdObidAgP1HIt7dM2Y=; b=mASvlz56M3Q+X7Wvgh4GRTjbiwAxZqCAwZ6VbBgICAOaJK2YXaA4V7VjO3FDUQICgg zx31F8MFFqNnvkx8OGrLg5RvYZ2UQrVhUnqzh8/XaCzGCztJv5eW2YAWWvJr2eHbH3Lv Wvgpf1GGQByzFSraZ8d8e8xFws1kuMVH3qQMqovYfJ6N3R4C3Sg/U4ases/DpFCpFBBh m7uqtxjLnbQyU//4VVAp6XdCL7BPCi9rgIlSH0rRruOZ6b+4kQ4INZ6FghYNKutZnlBg +MwQ2lAtDSvaTFwKe0uFyR4dV1TzNmZIERadl8SCs5wwfLJuxhL95wMp30eFzGQ83iHS F/kw== X-Gm-Message-State: AIkVDXLs0Cj9+XZPj5dkhDLG6OqIAXz7SG8JZXXXSlIedc5NBWpM04wqtxLpN/Zfu1an3w== X-Received: by 10.99.60.76 with SMTP id i12mr12533594pgn.170.1484159414599; Wed, 11 Jan 2017 10:30:14 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id s65sm15592192pgb.25.2017.01.11.10.30.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Jan 2017 10:30:13 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id E33D4A34782; Wed, 11 Jan 2017 10:30:50 -0800 (PST) To: Alexander Kuleshov Cc: emacs-devel , Eli Zaretskii Subject: Re: [PATCH v2] emacs 26.0.50.1 - add DNS keywords and remove duplications In-Reply-To: <20170111125447.GA29704@localhost.localdomain> (Alexander Kuleshov's message of "Wed, 11 Jan 2017 18:54:47 +0600") Date: Wed, 11 Jan 2017 10:30:48 -0800 Message-ID: References: <20170106075132.GA3272@localhost.localdomain> <20170111125447.GA29704@localhost.localdomain> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Alexander Kuleshov , emacs-devel , Eli Zaretskii MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:30:22 -0000 >>>>> "AK" == Alexander Kuleshov writes: AK> I've attached the patch v2 which adds TLSA (RFC 6698) and NSEC3 AK> (RFC 5155) to dns-mode-types. I've installed this, but due to a Git mishap (I'm new to "worktree"), it went to the emacs-25 branch instead of master. Eli, please revert if it shouldn't be on that branch. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Wed Jan 11 13:43:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRNsF-000742-UA for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:43:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59765) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNsD-00071z-Ud for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:43:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRNsD-0005DL-C3 for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:43:50 -0500 Received: from mail-oi0-x243.google.com ([2607:f8b0:4003:c06::243]:36734) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRNsC-0005Ci-4L; Wed, 11 Jan 2017 13:43:48 -0500 Received: by mail-oi0-x243.google.com with SMTP id u143so27570066oif.3; Wed, 11 Jan 2017 10:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=7DCCLkAu8ZaJXA9YTjAtw8ENPg9dFFIJmYsw2RaQAEg=; b=BtHU24DBkM8w70SfcVSN95FOTTs9MV1TcTSzBcGWLCRkX5V7y23uUsRG8ijk9jueCU IdBl3BjFR+1Ngzp0R6dqjzbwOTGdUX7DurKBunV1Aqzs8PURdf2+SwvrkLG2ZqR0Gdvt 6auuxzZ/qLxlniUaV5PGbX+DJR59nEl8LNnHr9Y+Z4E95scZm08Q3eHmjkyEVlmhDRSG r8yE7qMqfk3iDSIne0r3O92AG/8mgxKKDqCs1M+rFQ6FtF7IromER9UCAs5FtKP3Mu6Q lWc03HKxrpjP7Wor0YBr8MuStpf/PLiZ1fLors+5Zn4p5DSnRnuiacubsjVQ89SeKjdz dFSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=7DCCLkAu8ZaJXA9YTjAtw8ENPg9dFFIJmYsw2RaQAEg=; b=L/LtyikX/3CkIrh9B3aEkQVW+yZIobnepWaaUyqwD951Y0PgVXjZ/35VMOCPIL1AHy xLY5FfNhMyMRRTGacLViuESlB3PmhngLomhG4hyotLJIm19n3AvnU+hAQkr0YZ5gX5NC UcH3Ho/SAAkIj2cEf6m5jzCndFaKf6n4g2YdQsNoA5dtlsZjWFwFMvbp28LnZlWjAvSB 84Aunu4K02BWy8CGfOhC+9DnxwxGzsJI6lzCvWfllG05ZRRgN7CG3AOgfXsfqWcks9kT k8LEjXBSxNC+jFN7ISWJ1AKAnIFlXMSU4wefV+oZoK8NFtjQ2vouJcr79sG3P3pLN+Ai dL5w== X-Gm-Message-State: AIkVDXIBI4XhIdUmz4MsgyGB4HKNaAcAx54KbBiuORVQUZlG3qZLRN/mciVt2AzKB1jXlmaCx7wz+FSA67laCA== X-Received: by 10.157.39.226 with SMTP id c89mr4492360otb.139.1484160226729; Wed, 11 Jan 2017 10:43:46 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Wed, 11 Jan 2017 10:43:46 -0800 (PST) In-Reply-To: <20170111182251.GB10374@acm.fritz.box> References: <20170111172220.GA10374@acm.fritz.box> <83y3yhcwij.fsf@gnu.org> <20170111182251.GB10374@acm.fritz.box> From: Noam Postavsky Date: Wed, 11 Jan 2017 13:43:46 -0500 X-Google-Sender-Auth: dhH_RO6NCq6GUMOpVOUWhN_5f4E Message-ID: Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" To: Alan Mackenzie Cc: Eli Zaretskii , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:43:50 -0000 On Wed, Jan 11, 2017 at 1:22 PM, Alan Mackenzie wrote: > > Thanks. I've done that, and my build now builds. But it's _very_ noisy > (in terms of warning messages), and very slow: almost 11 minutes. It > seems only a couple of years ago since a make bootstrap was taking me > between 4 and 5 minutes. 'make bootstrap' doesn't rebuild quite *everything* (compare extraclean vs bootstrap-clean). The extra time might be coming from some of those other things which are triggered now due to copyright header updates for 2017. From MAILER-DAEMON Wed Jan 11 13:49:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRNxr-0004uV-MU for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:49:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNxl-0004qD-1e for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:49:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRNxg-0007ee-UH for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:49:33 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54872) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNxg-0007eY-R3; Wed, 11 Jan 2017 13:49:28 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3854 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRNxe-0006D5-1x; Wed, 11 Jan 2017 13:49:28 -0500 Date: Wed, 11 Jan 2017 20:49:15 +0200 Message-Id: <83vatlctzo.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: acm@muc.de, emacs-devel@gnu.org In-reply-to: (message from Lars Ingebrigtsen on Wed, 11 Jan 2017 18:30:32 +0100) Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Reply-to: Eli Zaretskii References: <20170111172220.GA10374@acm.fritz.box> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:49:38 -0000 > From: Lars Ingebrigtsen > Date: Wed, 11 Jan 2017 18:30:32 +0100 > Cc: emacs-devel@gnu.org > > You have to say "sh ./autogen.sh" to get things working again after some > recent changes. > > It would be nice if the Makefile could detect these things and do the > right thing automatically. It would save a lot of people a lot of time. gnulib.mk is needed to produce Makefile.in, which is needed to produce Makefile, so Makefile cannot detect these things. From MAILER-DAEMON Wed Jan 11 13:50:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRNyi-0005f0-BT for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:50:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33760) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNye-0005co-9U for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:50:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRNyb-000842-9e for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:50:28 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54892) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRNyb-00083w-6v; Wed, 11 Jan 2017 13:50:25 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3855 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRNya-0006PF-0L; Wed, 11 Jan 2017 13:50:24 -0500 Date: Wed, 11 Jan 2017 20:50:26 +0200 Message-Id: <83tw95ctxp.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: emacs-devel@gnu.org In-reply-to: <20170111182251.GB10374@acm.fritz.box> (message from Alan Mackenzie on Wed, 11 Jan 2017 18:22:51 +0000) Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Reply-to: Eli Zaretskii References: <20170111172220.GA10374@acm.fritz.box> <83y3yhcwij.fsf@gnu.org> <20170111182251.GB10374@acm.fritz.box> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:50:29 -0000 > Date: Wed, 11 Jan 2017 18:22:51 +0000 > Cc: emacs-devel@gnu.org > From: Alan Mackenzie > > > Re-run autogen.sh. > > Thanks. I've done that, and my build now builds. But it's _very_ noisy > (in terms of warning messages), and very slow: almost 11 minutes. It > seems only a couple of years ago since a make bootstrap was taking me > between 4 and 5 minutes. Did you use "make -jN", with some suitable value of N? From MAILER-DAEMON Wed Jan 11 13:53:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRO1u-0000t3-4T for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:53:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35181) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRO1s-0000rJ-1N for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:53:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRO1p-0001IJ-2M for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:53:48 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54960) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRO1o-0001IE-VT; Wed, 11 Jan 2017 13:53:44 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3860 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRO1m-0006fm-LM; Wed, 11 Jan 2017 13:53:44 -0500 Date: Wed, 11 Jan 2017 20:53:32 +0200 Message-Id: <83shopctsj.fsf@gnu.org> From: Eli Zaretskii To: John Wiegley CC: kuleshovmail@gmail.com, emacs-devel@gnu.org In-reply-to: (message from John Wiegley on Wed, 11 Jan 2017 10:30:48 -0800) Subject: Re: [PATCH v2] emacs 26.0.50.1 - add DNS keywords and remove duplications Reply-to: Eli Zaretskii References: <20170106075132.GA3272@localhost.localdomain> <20170111125447.GA29704@localhost.localdomain> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:53:49 -0000 > From: John Wiegley > Cc: emacs-devel , Eli Zaretskii > Date: Wed, 11 Jan 2017 10:30:48 -0800 > > I've installed this, but due to a Git mishap (I'm new to "worktree"), it went > to the emacs-25 branch instead of master. > > Eli, please revert if it shouldn't be on that branch. Reverted. From MAILER-DAEMON Wed Jan 11 13:57:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRO5b-0003cy-6i for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 13:57:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37199) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRO5Y-0003b4-Gj for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:57:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRO5V-00043d-GW for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:57:36 -0500 Received: from ocolin.muc.de ([193.149.48.4]:44237 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cRO5V-000425-6K for emacs-devel@gnu.org; Wed, 11 Jan 2017 13:57:33 -0500 Received: (qmail 26025 invoked by uid 3782); 11 Jan 2017 18:57:31 -0000 Received: from acm.muc.de (p548C6F69.dip0.t-ipconnect.de [84.140.111.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 11 Jan 2017 19:57:31 +0100 Received: (qmail 21117 invoked by uid 1000); 11 Jan 2017 18:57:17 -0000 Date: Wed, 11 Jan 2017 18:57:17 +0000 To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Message-ID: <20170111185717.GD10374@acm.fritz.box> References: <20170111172220.GA10374@acm.fritz.box> <83y3yhcwij.fsf@gnu.org> <20170111182251.GB10374@acm.fritz.box> <83tw95ctxp.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83tw95ctxp.fsf@gnu.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 18:57:37 -0000 Hello, Eli. On Wed, Jan 11, 2017 at 08:50:26PM +0200, Eli Zaretskii wrote: > > Date: Wed, 11 Jan 2017 18:22:51 +0000 > > Cc: emacs-devel@gnu.org > > From: Alan Mackenzie > > > Re-run autogen.sh. > > Thanks. I've done that, and my build now builds. But it's _very_ noisy > > (in terms of warning messages), and very slow: almost 11 minutes. It > > seems only a couple of years ago since a make bootstrap was taking me > > between 4 and 5 minutes. > Did you use "make -jN", with some suitable value of N? Yes, I've been using make -j5 for many, many years, ever since I first installed Gentoo. The build time seems effectively to have doubled in a very small number of years. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 11 14:16:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cROO7-0003IA-ME for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 14:16:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42135) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROO5-0003Gb-Rv for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:16:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cROO4-0003wy-UF for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:16:45 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:37003) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cROO0-0003qu-C7; Wed, 11 Jan 2017 14:16:40 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tzJXj0LCQz3hnLT; Wed, 11 Jan 2017 20:16:37 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tzJXh73KpzvkcK; Wed, 11 Jan 2017 20:16:36 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id eDamAB58mnYI; Wed, 11 Jan 2017 20:16:36 +0100 (CET) X-Auth-Info: sNmq1L3A6GqexBf+H5Py4OpjihjheJgZ7vt+tw27PodJz8giYz10r9KDkojooMbQ Received: from igel.home (ppp-88-217-21-164.dynamic.mnet-online.de [88.217.21.164]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Wed, 11 Jan 2017 20:16:35 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 774082C366A; Wed, 11 Jan 2017 20:16:35 +0100 (CET) From: Andreas Schwab To: Alexander Kuleshov Cc: emacs-devel , Eli Zaretskii Subject: Re: [PATCH v2] emacs 26.0.50.1 - add DNS keywords and remove duplications References: <20170106075132.GA3272@localhost.localdomain> <20170111125447.GA29704@localhost.localdomain> X-Yow: I'm having a BIG BANG THEORY!! Date: Wed, 11 Jan 2017 20:16:35 +0100 In-Reply-To: (John Wiegley's message of "Wed, 11 Jan 2017 10:30:48 -0800") Message-ID: <8760ll9zl8.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 19:16:46 -0000 On Jan 11 2017, John Wiegley wrote: > I've installed this, but due to a Git mishap (I'm new to "worktree"), it went > to the emacs-25 branch instead of master. It is always a good idea to run git status -sb before pushing. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Wed Jan 11 14:35:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cROgQ-00037Q-EU for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 14:35:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45257) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROgO-00035k-Rx for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:35:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cROgL-0003JD-G2 for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:35:40 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:35905) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cROgL-0003I6-8m; Wed, 11 Jan 2017 14:35:37 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cROgH-0000qy-4t; Wed, 11 Jan 2017 20:35:35 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: acm@muc.de, emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEUCAQEFBAMTERAJBwYD AgIGBQR8enGLhgn3AAACcUlEQVQ4jWWUTXLbMAyFmRlP90jFAxi0uC8ZaS1O6QNQDLyvFPH+R+gD 5aSZKRLLJj78PBK0TYRx/N9Mf04iVQOcLkSwruZ0lw6eQa+FkgWobawszDWMwpF59PyWFczb4Rss tja3zbettdsJomth333YPcC8x7nQCcbY6rHP4ZB5cx2UnAEeZ75HCa//bm7HkEyswuO6rczOb9Hj gZUo6LItWVWN7WBVLGkprKfV83WF0uI9s6j70ncuD99GvLw+mgxfYArY1srej94HlgKSFNRJiCzq 9y7yD0AYEfXO/UFocjfxVANQo74/M+wT4CNJIZsT/AmVxDBDYTc9SBzBubgaF1rgsR2PdtpeueTl x4GMtmIEez95nNpWV984jMZxmwCa0zretT0GLfmBjF0Qo4B5RSlhTbwZN2+NAQ5uSEZz4Y0/Ljej znD23XjWKgjc89Vww+x8V8rcFQBseVTgg05wYyhvDh8hbYQqD70dbPKKg9cM3/444yCv1/BHee2t GCm7MxynuLqHir3WT4DbArn7FNx7Tty3odrYre5mwvMI2fF3e9O7q3MoOhCdF849L+ZyMbguEe7U R0hDHjAbYxYA/RLAkagApoyRLSdAhYQh52RpIHAaFrgNgGS1S05IIrXc71XpAO1yyohGxs9cFciE 2ouC0yilIot5Mf3GoPmnoVP+veD6QHvVm0TvXwxytQdZBC3QhCaQB+GqNxub713sVM96uhPEv5ha lq5KXXiHhrsmXMykN7XHPjOIlrNHsUs/hzwM2uAuwwneKeMvCdnBljKQKEaAkaoV4JCKr4etvwhb Rqhx04QR1PL9J2nC6y+2xAl5q/CTjAAAAABJRU5ErkJggg== Date: Wed, 11 Jan 2017 20:35:32 +0100 In-Reply-To: <83vatlctzo.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 11 Jan 2017 20:49:15 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 19:35:41 -0000 Eli Zaretskii writes: > gnulib.mk is needed to produce Makefile.in, which is needed to produce > Makefile, so Makefile cannot detect these things. There is a Makefile there, and of course it can detect these things if we want it to. If there is no Makefile there, then nobody has said "make" before, and in that case, things will work fine. For instance, if you check in "make"-breaking changes, then you could also check in something that has the necessary commands to make "make" work again. We just have to establish some kind of mechanism -- for instance, a special directive in the commit message? Or something else. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 11 14:44:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cROpP-0004mX-DW for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 14:44:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROpM-0004k2-L4 for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:44:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cROpJ-0007TH-ET for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:44:56 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55506) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROpJ-0007T8-BW; Wed, 11 Jan 2017 14:44:53 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3898 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cROpH-0004ox-PS; Wed, 11 Jan 2017 14:44:53 -0500 Date: Wed, 11 Jan 2017 21:44:46 +0200 Message-Id: <83pojtcrf5.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: emacs-devel@gnu.org In-reply-to: <20170111185717.GD10374@acm.fritz.box> (message from Alan Mackenzie on Wed, 11 Jan 2017 18:57:17 +0000) Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Reply-to: Eli Zaretskii References: <20170111172220.GA10374@acm.fritz.box> <83y3yhcwij.fsf@gnu.org> <20170111182251.GB10374@acm.fritz.box> <83tw95ctxp.fsf@gnu.org> <20170111185717.GD10374@acm.fritz.box> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 19:44:57 -0000 > Date: Wed, 11 Jan 2017 18:57:17 +0000 > Cc: emacs-devel@gnu.org > From: Alan Mackenzie > > > Did you use "make -jN", with some suitable value of N? > > Yes, I've been using make -j5 for many, many years, ever since I first > installed Gentoo. > > The build time seems effectively to have doubled in a very small number > of years. The worst offender is ucs-normalize.el, which is now byte-compiled using bootstrap-emacs, i.e with a byte-compiler that's interpreted from Lisp source. From MAILER-DAEMON Wed Jan 11 14:53:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cROxG-0004yD-P1 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 14:53:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49312) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROxC-0004u5-8c for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:53:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cROx8-00040m-KC for emacs-devel@gnu.org; Wed, 11 Jan 2017 14:53:02 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55585) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cROx8-00040i-GZ; Wed, 11 Jan 2017 14:52:58 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3919 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cROx5-0005RO-Nu; Wed, 11 Jan 2017 14:52:58 -0500 Date: Wed, 11 Jan 2017 21:52:44 +0200 Message-Id: <83o9zdcr1v.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: acm@muc.de, emacs-devel@gnu.org In-reply-to: (message from Lars Ingebrigtsen on Wed, 11 Jan 2017 20:35:32 +0100) Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" Reply-to: Eli Zaretskii References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 19:53:05 -0000 > From: Lars Ingebrigtsen > Cc: acm@muc.de, emacs-devel@gnu.org > Date: Wed, 11 Jan 2017 20:35:32 +0100 > > Eli Zaretskii writes: > > > gnulib.mk is needed to produce Makefile.in, which is needed to produce > > Makefile, so Makefile cannot detect these things. > > There is a Makefile there No, there's GNUmakefile, which just includes Makefile if that exists (which it does in this case). > For instance, if you check in "make"-breaking changes, then you could > also check in something that has the necessary commands to make "make" > work again. I couldn't find a way of doing that without significant changes in our Makefiles, something for which I had no time, sorry. Running autogen.sh every once in a while is not a big deal, really. > We just have to establish some kind of mechanism -- for > instance, a special directive in the commit message? Or something else. I don't think I understand what you have in mind. What directive? From MAILER-DAEMON Wed Jan 11 15:09:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRPCq-0002qn-T9 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 15:09:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52134) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRPCo-0002oy-MH for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:09:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRPCn-0004Ev-TX for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:09:10 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55736) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRPCc-00049H-In; Wed, 11 Jan 2017 15:08:58 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cRPCb-0003dj-Nq; Wed, 11 Jan 2017 15:08:57 -0500 From: Glenn Morris To: Lars Ingebrigtsen Cc: Eli Zaretskii , acm@muc.de, emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> X-Spook: IDEA Saudi Arabia Radiation Bosnia Adriatic encryption X-Ran: "Za#+I`"th@1HYjX2!I6v\.)/qQ:W${&^1/H3aHUUA0"B3TcG0d-e~9WM X-Hue: black X-Attribution: GM Date: Wed, 11 Jan 2017 15:08:57 -0500 In-Reply-To: (Lars Ingebrigtsen's message of "Wed, 11 Jan 2017 20:35:32 +0100") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 20:09:12 -0000 Lars Ingebrigtsen wrote: > There is a Makefile there, and of course it can detect these things if > we want it to. Works for me after 25d3297. (Updated Makefile.in triggers re-generation of Makefile via config.status, updated rule for lib/Makefile.in triggers generation of nt/gnulib.mk.) From MAILER-DAEMON Wed Jan 11 15:34:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRPb9-0004a6-V1 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 15:34:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57965) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRPb7-0004Z3-DJ for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:34:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRPb4-0006pT-3i for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:34:17 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:36387) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRPb3-0006pC-QI; Wed, 11 Jan 2017 15:34:14 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cRPaz-0007je-6y; Wed, 11 Jan 2017 21:34:11 +0100 From: Lars Ingebrigtsen To: Glenn Morris Cc: Eli Zaretskii , acm@muc.de, emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVfYGDIyMfV1dPAv779 /fx9fXvx8fAwLi+YmJizs7Ksq6v////4+fjl5eUDAACAKCNSAAABY0lEQVQ4jWPYjQMwjErgkdhz DavEnqWhHR3LMCW2NExb5O1yYwmGRELLVYbu3btv3EaT2MboFTqDBWhgL5qEg20AKwOPi3fGidOo Eq1TQ9sjdFxOGuiuRpHYU8YwITSgINY0tG0aisSullDWhnfv3i0OL5BEkdigncEVB5R4pXDrForE 9tNb0oDi7x6oCmp6I0u47969GSTxLtd2czayxPHdu3eCJVK8N6JIbPfevQks4b1752kUy29vk6kD ij/d7ZSJYvnWKZZq64AStdt0dqFIbGISFrxY9+650cUjiqhBwnhQ0Ma5Q1NRNgk1SHZfUGzWBmpU VErURpXYySYGDDElJR1NtGDfvQDo/Es6dzfORpfYyOm9KTv3WONudIndJzjEzgh3ZaNJgHzrtKJj kfduVIktSAKoOnBKYAEkS2zBJbGHZIltmBJbcElAwF7cEqtWrVo5EwSAjFUzZxqDgaCxKQAjBxKG zTXd0wAAAABJRU5ErkJggg== Date: Wed, 11 Jan 2017 21:34:08 +0100 In-Reply-To: (Glenn Morris's message of "Wed, 11 Jan 2017 15:08:57 -0500") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 20:34:19 -0000 Glenn Morris writes: > (Updated Makefile.in triggers re-generation of Makefile via config.status, > updated rule for lib/Makefile.in triggers generation of nt/gnulib.mk.) So would that, in general, be the way to make "make" work again automatically? That is, if you make a change that requires full regeneration, you should also update Makefile.in? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 11 15:36:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRPdJ-0006Q2-A5 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 15:36:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58403) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRPdG-0006Js-4F for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:36:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRPdC-0007IE-W9 for emacs-devel@gnu.org; Wed, 11 Jan 2017 15:36:30 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:36461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRPdC-0007I0-PK; Wed, 11 Jan 2017 15:36:26 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cRPd9-0007dI-Tx; Wed, 11 Jan 2017 21:36:25 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: acm@muc.de, emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> <83o9zdcr1v.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVfYGDIyMfV1dPAv779 /fx9fXvx8fAwLi+YmJizs7Ksq6v////4+fjl5eUDAACAKCNSAAABY0lEQVQ4jWPYjQMwjErgkdhz DavEnqWhHR3LMCW2NExb5O1yYwmGRELLVYbu3btv3EaT2MboFTqDBWhgL5qEg20AKwOPi3fGidOo Eq1TQ9sjdFxOGuiuRpHYU8YwITSgINY0tG0aisSullDWhnfv3i0OL5BEkdigncEVB5R4pXDrForE 9tNb0oDi7x6oCmp6I0u47969GSTxLtd2czayxPHdu3eCJVK8N6JIbPfevQks4b1752kUy29vk6kD ij/d7ZSJYvnWKZZq64AStdt0dqFIbGISFrxY9+650cUjiqhBwnhQ0Ma5Q1NRNgk1SHZfUGzWBmpU VErURpXYySYGDDElJR1NtGDfvQDo/Es6dzfORpfYyOm9KTv3WONudIndJzjEzgh3ZaNJgHzrtKJj kfduVIktSAKoOnBKYAEkS2zBJbGHZIltmBJbcElAwF7cEqtWrVo5EwSAjFUzZxqDgaCxKQAjBxKG zTXd0wAAAABJRU5ErkJggg== Date: Wed, 11 Jan 2017 21:36:20 +0100 In-Reply-To: <83o9zdcr1v.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 11 Jan 2017 21:52:44 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 20:36:32 -0000 Eli Zaretskii writes: >> For instance, if you check in "make"-breaking changes, then you could >> also check in something that has the necessary commands to make "make" >> work again. > > I couldn't find a way of doing that without significant changes in our > Makefiles, something for which I had no time, sorry. Running > autogen.sh every once in a while is not a big deal, really. Well, as you can see: Every single time things like this happens, people get confused and can't build Emacs until somebody reminds them. So if it's not a big deal, it's a thing, at least. >> We just have to establish some kind of mechanism -- for >> instance, a special directive in the commit message? Or something else. > > I don't think I understand what you have in mind. What directive? That would be something we would decide on. If just updating Makefile.in makes these problems go away, then that's the directive. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 11 16:20:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRQKD-0001wc-2A for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 16:20:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRQK8-0001tQ-Bv for emacs-devel@gnu.org; Wed, 11 Jan 2017 16:20:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRQK4-0001J8-PP for emacs-devel@gnu.org; Wed, 11 Jan 2017 16:20:48 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:37107) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRQJz-0001GJ-HO; Wed, 11 Jan 2017 16:20:39 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3tzMHm6jRRz3hncL; Wed, 11 Jan 2017 22:20:36 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3tzMHm4xYQzvkcr; Wed, 11 Jan 2017 22:20:36 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id hI9zO3gNKcNd; Wed, 11 Jan 2017 22:20:32 +0100 (CET) X-Auth-Info: IXidhkZU+Z5zr/23sUvoe3QcDM69lFBAFZDELnATg9wRSEf8lCAsriaZvW2lzocM Received: from igel.home (ppp-88-217-21-164.dynamic.mnet-online.de [88.217.21.164]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Wed, 11 Jan 2017 22:20:32 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id EBE1D2C366C; Wed, 11 Jan 2017 22:20:31 +0100 (CET) From: Andreas Schwab To: Lars Ingebrigtsen Cc: Eli Zaretskii , acm@muc.de, emacs-devel@gnu.org Subject: Re: Build failure in master for GNU: "error: cannot open < lib/../nt/gnulib.mk: No such file or directory" References: <20170111172220.GA10374@acm.fritz.box> <83vatlctzo.fsf@gnu.org> <83o9zdcr1v.fsf@gnu.org> X-Yow: .. Do you like ``TENDER VITTLES?''? Date: Wed, 11 Jan 2017 22:20:31 +0100 In-Reply-To: (Lars Ingebrigtsen's message of "Wed, 11 Jan 2017 21:36:20 +0100") Message-ID: <87y3yh8fa8.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 21:20:52 -0000 On Jan 11 2017, Lars Ingebrigtsen wrote: > Eli Zaretskii writes: >> I don't think I understand what you have in mind. What directive? > > That would be something we would decide on. If just updating > Makefile.in makes these problems go away, then that's the directive. :-) Something like `touch nt/gnulib.mk' will do. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Wed Jan 11 18:06:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRRyP-0000EH-9J for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 18:06:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRRyN-0000EB-HV for emacs-devel@gnu.org; Wed, 11 Jan 2017 18:06:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRRyM-00071F-QB for emacs-devel@gnu.org; Wed, 11 Jan 2017 18:06:27 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57707) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRRyK-00070h-4u; Wed, 11 Jan 2017 18:06:24 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cRRyJ-0006oh-Ol; Wed, 11 Jan 2017 18:06:23 -0500 From: Glenn Morris To: Stefan Merten Cc: emacs-devel@gnu.org Subject: Re: Emacs versions for rst.el References: <20170103221540.4171.87517@vcs.savannah.gnu.org> <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> <19153.1483784930@eskebo.fritz.box> X-Spook: Drug Cain and Abel Keylogger Execution Bosnia computer X-Ran: [mTeYt3-x5VU_0+_Dg^l (Stefan Merten's message of "Sat, 07 Jan 2017 11:28:50 +0100") Message-ID: <93mvexfb80.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 23:06:28 -0000 Stefan Merten wrote: >> [In rst-package-emacs-version-alist:] >> >>> + ("1.5.1" . "26.2") >> >> >> Hi - don't you want 26.1 there? >> >> I also note that Emacs 25.1 seems to contain 1.4.1, and 24.5 1.4.0, >> which does not seem to agree with the above alist either? > > I'm not following Emacs releases and so what I put in there is more or > less a rough guess. When I commit something to the Emacs `master` then > I'm convinced that it should go into the next available release. The Emacs version number tells you what to use. Eg current version of master = 26.0.50 -> next release from master will be 26.1. So you should have used 26.1 in place of 26.2. No need to guess, or to follow development lists. From MAILER-DAEMON Wed Jan 11 19:47:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRTYW-0006mi-C6 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 19:47:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60560) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRTYT-0006fQ-Q4 for emacs-devel@gnu.org; Wed, 11 Jan 2017 19:47:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRTYQ-0005mS-Ox for emacs-devel@gnu.org; Wed, 11 Jan 2017 19:47:49 -0500 Received: from mail-qk0-f194.google.com ([209.85.220.194]:35254) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRTYQ-0005lH-Kh for emacs-devel@gnu.org; Wed, 11 Jan 2017 19:47:46 -0500 Received: by mail-qk0-f194.google.com with SMTP id u25so638759qki.2 for ; Wed, 11 Jan 2017 16:47:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=KMGIEmZozFuqX7w5r4fXn6anaRxFW30pdjlxsQ7FvZM=; b=BvmparHsyOF5xyR2Zm9hXrSSNqChFiHGZ7fY8WFtOBzYzk2OtpwyIUfgaSDnMGqPUm TgbBHIX/qH32xQTQgiPHUJltJyVn3TSNR0fbURpTAuZAkEzhqqj7ifmEa6R7HEKEZuNT nTXq49Ha/ErspUlhuTCK3dx9AHjcEM8z2vUoiLzizSl8hvMIczHcb45oDITRErbonAJQ 9SbGuJCPsHQMXTdkktz9sAVstvulwdZvxXq4XKsvn9uHubg+bK5INqLA1+rwiBUp/p2m UYV95xRxbTgZhwCrV+5coNXUh1pc179FsLpx5S60kmuJWGo5gZ/CcsKxG3iOsLVMV2v3 KeDw== X-Gm-Message-State: AIkVDXLXFXrKezit+ySOLYR+DgWDkmwqoDWIAVoTpk+KluYXmOfiLqE2coIPpvhId+TbYw== X-Received: by 10.55.64.67 with SMTP id n64mr1758714qka.137.1484182065695; Wed, 11 Jan 2017 16:47:45 -0800 (PST) Received: from [192.168.1.202] (pool-100-0-32-98.bstnma.fios.verizon.net. [100.0.32.98]) by smtp.googlemail.com with ESMTPSA id x62sm5367588qkg.31.2017.01.11.16.47.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jan 2017 16:47:44 -0800 (PST) Subject: Re: Improving representation of EIEIO objects in backtraces/error messages To: Eric Abrahamsen , emacs-devel@gnu.org References: <87ful6o8x4.fsf@ericabrahamsen.net> <7b792dd9-491a-b442-f837-e85326a6c924@siege-engine.com> <87wpefakpe.fsf@ericabrahamsen.net> <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> <87wpe55usp.fsf@ericabrahamsen.net> From: Eric Ludlam Message-ID: <8227a10b-bd55-b1ca-178b-c4757320b733@siege-engine.com> Date: Wed, 11 Jan 2017 19:47:43 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87wpe55usp.fsf@ericabrahamsen.net> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.220.194 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 00:47:50 -0000 On 01/08/2017 12:24 PM, Eric Abrahamsen wrote: >> The slot names should be included in the display. At least they are >> for me in my older Emacs. It may be that the eieio-support doesn't >> work quite right after the EIEIO change in Emacs? >> >> In CEDET, eieio-datadebug is separate, but with EIEIO as a piece of >> core emacs with Data Debug, maybe the current tenuous load should be >> replaced by merging eieio-datadebug into data-debug. > > My mistake, I'd only loaded data-debug, not eieio-datadebug. The slots > are showing now. > It should be loaded automatically with data-debug. At the end of my version it says: ;; eieio customizations (eval-after-load "eieio" '(require 'eieio-datadebug)) plus a similar line for semantic. Perhaps something got lost during the merge that should be fixed. Eric From MAILER-DAEMON Wed Jan 11 20:19:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRU3Z-00029O-4P for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 20:19:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRU3W-00029H-VL for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:19:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRU3W-0006ay-6M for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:19:54 -0500 Received: from mail-oi0-x22c.google.com ([2607:f8b0:4003:c06::22c]:33538) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRU3W-0006al-14 for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:19:54 -0500 Received: by mail-oi0-x22c.google.com with SMTP id w204so6713360oiw.0 for ; Wed, 11 Jan 2017 17:19:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=vya7b/xrzP9gCqG9td/YyY71yg4zwXPJligtVLn3hxM=; b=QYLLOqJZItf46GFg+n72X/hHS38AMiyuGan2MmVxO+/T0qjNHruNXDeNsRAEeoeKOC LxRozsxCixlKYR4tnrSN5pWdC+KkqY0wQ0Xuc4NnsvsP/t6lEyc2Zk2rjNkOz2xX9SnV vdrEDM8RjF+RoC0cA7EMm1yWoDgkcQN3va6/1JMtRz/p1vPyuQHBg7Z7FP0/Gm5/0wCi kjGtnMnm7QKt2C5DGdbwNN0S9EiM1Gpq89v8gABjXFbm0NByNdSi8VD+Bo+YJsufTWMC u9wqSp0gppDxATYYL70gen9sEzTkZfSaRD3OnfVkKvzOzUR2yS2DKsA9qSJQSFkqEjIH LbmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=vya7b/xrzP9gCqG9td/YyY71yg4zwXPJligtVLn3hxM=; b=boMt0iOiCt3gxOkGIbBqX8+KTLgYGPVskFzeyg6nW0LDwSvOeyshAHyL5osGs99l0A FmO2pnPrSRiip0qpsH7Qm94T4Kg3Ruh68vsVmhjnAKGEq7mBX125pGZ0/UjhLqJp/Tzq 1ahoBIdh7j4q2RIhSO3SZripCiOCjtJ2UI1AsMNHcAIvdb6CQ8hX8Wqjd7/U3WQxAMKg eZXoowy6hiYYTgH93OX4QxxAT90WETAbbYYO/0gGmkrGufKxLs3nA9WHgWboYuUNWgEB Dtbi0dUkCPgZdwfvXkWY1hZV6kg16lEnPBft/Tu3AXJnKRuQgQARj/8xoE8xh9bkp6av gGOg== X-Gm-Message-State: AIkVDXJrX6IwRNcA1C0WOAYbvMf0CPag07DNrrSQDGv47nYfMOikAGERzmA0zffE+FD4j6lshnjYcI9HMXLsrg== X-Received: by 10.157.58.119 with SMTP id j110mr5429441otc.208.1484183993303; Wed, 11 Jan 2017 17:19:53 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Wed, 11 Jan 2017 17:19:52 -0800 (PST) In-Reply-To: References: From: Noam Postavsky Date: Wed, 11 Jan 2017 20:19:52 -0500 X-Google-Sender-Auth: acbgTLWQuOKmnhWVydq8UsWUru8 Message-ID: Subject: Re: How does one set up a syntax table for (* and //? To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 01:19:55 -0000 On Wed, Jan 11, 2017 at 10:44 AM, Cl=C3=A9ment Pit--Claudel wrote: > > As far as I can tell from the docs, the following syntax table should rec= ognize // =E2=80=A6 line comments and nestable (* =E2=80=A6 *) comments pro= perly: > > (defvar example-syntax-table > (let ((table (make-syntax-table))) > (modify-syntax-entry ?* ". 23" table) > (modify-syntax-entry ?/ ". 12c" table) > (modify-syntax-entry ?\n "> c" table) > (modify-syntax-entry ?\( "()1n" table) > (modify-syntax-entry ?\) ")(4n" table) > table)) [...] > In this example, the last line (=E2=80=9Cwhich incorrectly extends past t= he newline?=E2=80=9D), is considered to be a comment, because the sequence = "(/" is treated as a multiline comment opener. You don't want "a" style comment chars combining with "c" style comment chars. Unfortunately, Emacs doesn't implement that. I think you'll have to implement these kind of comments with a syntax-propertize-function. From MAILER-DAEMON Wed Jan 11 20:31:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRUFD-0000hL-T8 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 20:31:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40119) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRUFB-0000ZF-7D for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:31:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRUF7-0001pG-9o for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:31:57 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:51237) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRUF6-0001nz-Ue for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:31:53 -0500 Received: from [18.111.103.8] ([18.111.103.8]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.168]) with ESMTPSA (Nemesis) id 0LkGC3-1d2T0z1E9j-00cNhG; Thu, 12 Jan 2017 02:31:38 +0100 Subject: Re: How does one set up a syntax table for (* and //? To: Noam Postavsky References: Cc: Emacs developers From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <18d576b9-fe12-c09a-32f9-ad0da86f2d27@gmail.com> Date: Wed, 11 Jan 2017 20:31:44 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="2XPWwDGIDftUF6JGQ3xHDnMCNQmn4GSor" X-Provags-ID: V03:K0:ukbVApLl9cGFbvyIiqJomL96Sk/JlpAdGako1qlVeubCgVGyLhr CpcqLFQUinDfnu5/8vzLIwzjvREwlJZO3htd/q2tvq5OK/4tVwUHY+T9FpNIUQxGxsXQKt9 FuIjlEuH3id62EPUacR0/7BbTf7xCY3vuN6MzF+oEJPsbS7CGpajgiWz6pK6XNNjm1jl/r4 KdizQc7Xvop7YheLJN+OA== X-UI-Out-Filterresults: notjunk:1;V01:K0:JuTdstn4TFg=:gvbH42GaI80IaQASKIQteN g339D6jo50TT22LzJm3cRpwGOBK8P5QlQgJGf5ATBlic+0vbNs/Qpae58gcxPwbNhv0c3yD1q 4EowVP9oXEU048AwdhMcCPj736xDV33N4UclZoazvRrqtOto9rtrrfnd/mjemFBbEi5s6O8KP Qfz2iv6BJ6uwz+Rd3aXzEytSayw4cydvkdjFVwCfP5aMJUG13UszdhNVfxLpZiw4bqD6AcJLB 4MdnuL+JLCqiNgjGISU9UmgrXyAqMQ1vPYTSdtO3CtuniqsDuFWay+GXurS3af9RCPzmRzlLE LQ6ETd4zxd61hPy1PaLy3d22aGERNOUJiyTiv4KIud+ZugrXgViOK0H0Ly7rkxC0vjbFsltzV LqqOVQjVgJQ8tL74UZNeEO0+PJ8ZP7KwYukqPgtBDayCYNjrjUm+PB65Xmc8Kxzh0h7zoIBxI 30gI9CcESzk2Xr3BM5LoCuwmR21HmgxCeWeYhQY7eU/AZbAHS5P4TVOufIdfa3O+d1bOyoG7p mndYFD0K7MznvhQ8e4NEDZsJQXMJXiGxoX8tLNGhmRAgC/WGH9cSA4WOT+911Php4GFK7nQL2 uXiHAMf9rHZ/Q//0Mw4kGatVZIQR2KKL7+qNXo8j1zVePDMHUPX3Y2i7hCIAga0ub7JeswtKX s1kWpVKxWasV3wSKzGXJt3vP3eXAWEt3JDBrJXn5Q7PMVLVtI9a3F4Tp1borg4fkRY/k= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 01:31:58 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --2XPWwDGIDftUF6JGQ3xHDnMCNQmn4GSor Content-Type: multipart/mixed; boundary="h2J5LeSO5tNxMSArRjp9pQMTmSnTiImio"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Noam Postavsky Cc: Emacs developers Message-ID: <18d576b9-fe12-c09a-32f9-ad0da86f2d27@gmail.com> Subject: Re: How does one set up a syntax table for (* and //? References: In-Reply-To: --h2J5LeSO5tNxMSArRjp9pQMTmSnTiImio Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2017-01-11 20:19, Noam Postavsky wrote: > On Wed, Jan 11, 2017 at 10:44 AM, Cl=C3=A9ment Pit--Claudel > wrote: >> >> As far as I can tell from the docs, the following syntax table should = recognize // =E2=80=A6 line comments and nestable (* =E2=80=A6 *) comment= s properly: >> >> (defvar example-syntax-table >> (let ((table (make-syntax-table))) >> (modify-syntax-entry ?* ". 23" table) >> (modify-syntax-entry ?/ ". 12c" table) >> (modify-syntax-entry ?\n "> c" table) >> (modify-syntax-entry ?\( "()1n" table) >> (modify-syntax-entry ?\) ")(4n" table) >> table)) > [...] >> In this example, the last line (=E2=80=9Cwhich incorrectly extends pas= t the newline?=E2=80=9D), is considered to be a comment, because the sequ= ence "(/" is treated as a multiline comment opener. >=20 > You don't want "a" style comment chars combining with "c" style > comment chars. Unfortunately, Emacs doesn't implement that. I think > you'll have to implement these kind of comments with a > syntax-propertize-function. Yeah, that's what I was afraid of. Is there code that depends on this (a mixing with c)? If not, could we co= nsider changing the semantics of "c" instead? This mixing isn't clear fro= m the documentation, AFAICT. I guess such a change would break the hypothetical situation in which one= would need to be able to say that a character is an opener for both "a" = and "c", but a closer for only "c", though. Cheers, Cl=C3=A9ment. --h2J5LeSO5tNxMSArRjp9pQMTmSnTiImio-- --2XPWwDGIDftUF6JGQ3xHDnMCNQmn4GSor 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 iQIcBAEBCAAGBQJYdtyGAAoJEPqg+cTm90wj40YP/RrjUqFIjpVkciLnAQl6kso9 ursocsHITqz/0dbA6DjPFt0Ibg3HNMHp4/APJWoftZ5WBC/BmxdVGxqMrdQObGdz qq71l+rNpoyJKKI0g6F007ecZ3VJo77TooXwnrzvGw+uv1z8eOq2giZpUpG75uvq 5rf7k81mQMVxQyYxhoNMZhRlPB76cXILvvbVIuEskTdoa/0WsMpJYI2nnvQY57uy 8yg+Jd+P3t2/gMAqnes5Nie16QQ6txv6muEOCJcjXg6BA688x5Ey9v+o6QbbQ12d APPzfn44SJR3VjfLCcX9n5GaRESqBX0Oy/3qhNTjepJNjIjs1ta/CQqDpgY76Ie0 xJSJzg0eID8GPJSaIgUAUmoj0VzTpN+VDUl3tgVvHVNd5fEzqd+CZavIdjLSa2qi Lhev1zjQjTrt6XvDRtwE0zI8NAi2bdRofRCe0E8CN7YjqhJE9nGJhlqI6WiBMAwe L38K+1frv3gWysiO//9KW9daQQDHjBj+QGjK2gHVyzfNRomlT1h+6T5AwLs7S2hN kvrc1lztJX+yo0llGUI0vpzXhzC5K2JTZq3ATLtA65WILztjdXnCb+XkVLpE3HW9 jrjMWsgXaxcHdT3iTCj3vYSMAsrDiMj7UtplClPE6n5Ea8rcc9HjQg3MuV/QWFWB 5XinR9PrBc4uUgyJiG11 =Kyd5 -----END PGP SIGNATURE----- --2XPWwDGIDftUF6JGQ3xHDnMCNQmn4GSor-- From MAILER-DAEMON Wed Jan 11 20:37:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRUKe-0002jl-U9 for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 20:37:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41843) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRUKc-0002je-AB for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:37:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRUKY-0004f6-Cw for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:37:34 -0500 Received: from [195.159.176.226] (port=38807 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRUKY-0004dY-5f for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:37:30 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cRUK6-0001cN-Tq for emacs-devel@gnu.org; Thu, 12 Jan 2017 02:37:02 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Eric Abrahamsen Subject: Re: Improving representation of EIEIO objects in backtraces/error messages Date: Wed, 11 Jan 2017 17:36:44 -0800 Lines: 30 Message-ID: <87wpe1dpoz.fsf@ericabrahamsen.net> References: <87ful6o8x4.fsf@ericabrahamsen.net> <7b792dd9-491a-b442-f837-e85326a6c924@siege-engine.com> <87wpefakpe.fsf@ericabrahamsen.net> <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> <87wpe55usp.fsf@ericabrahamsen.net> <8227a10b-bd55-b1ca-178b-c4757320b733@siege-engine.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:6ql/fz45R44Hg+DSFwgWOkNnWoo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 01:37:35 -0000 Eric Ludlam writes: > On 01/08/2017 12:24 PM, Eric Abrahamsen wrote: >>> The slot names should be included in the display. At least they are >>> for me in my older Emacs. It may be that the eieio-support doesn't >>> work quite right after the EIEIO change in Emacs? >>> >>> In CEDET, eieio-datadebug is separate, but with EIEIO as a piece of >>> core emacs with Data Debug, maybe the current tenuous load should be >>> replaced by merging eieio-datadebug into data-debug. >> >> My mistake, I'd only loaded data-debug, not eieio-datadebug. The slots >> are showing now. >> > > It should be loaded automatically with data-debug. At the end of my > version it says: > > ;; eieio customizations > (eval-after-load "eieio" > '(require 'eieio-datadebug)) > > plus a similar line for semantic. Perhaps something got lost during > the merge that should be fixed. > > Eric Yup, that's not how it looks in the current Emacs tree: http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/cedet/data-debug.el From MAILER-DAEMON Wed Jan 11 20:47:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRUUF-0006B1-2c for mharc-emacs-devel@gnu.org; Wed, 11 Jan 2017 20:47:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43352) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRUUC-0006Av-BJ for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:47:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRUUB-0007w6-Ab for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:47:28 -0500 Received: from mail-oi0-x241.google.com ([2607:f8b0:4003:c06::241]:33996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRUUB-0007w0-5j for emacs-devel@gnu.org; Wed, 11 Jan 2017 20:47:27 -0500 Received: by mail-oi0-x241.google.com with SMTP id 3so856907oih.1 for ; Wed, 11 Jan 2017 17:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=evwB+9drFlWEBCSioM0C8zsPxXYw8zyAaVzBIU3pD5A=; b=Qd5t4IbVEhLgeDMtkod+4R0YSxrQ8qyQszthJT8Afdd3eC6COkj3dVK+lYXUZ9OVo/ igWOp60DcQceTFTqcJspNcj65GdP2pajTqvx28Ms5DTeoLXUQj1mBp7bmTonzjSAD0nR TmHopd+KcK9mTd+dgQa2te012p60mD9USJ7w/WDyqd9wr7k+OnoADeJx5hFQXpZf0SnN ARhLGbGKcwNhoNLk6JpdcTRS3el+MrSGxcG2d55rvKXHwPJmgGhbtfV0G7Q0Bq9zr7M8 tJF7ZuWHPicvK8NHY7/cg37A5CqyaFN5b58V1zbwknt8vQirWa3hfoCEenhvES5A5Iag hRqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=evwB+9drFlWEBCSioM0C8zsPxXYw8zyAaVzBIU3pD5A=; b=H0fzactXHqM2QMz00mgWTbGYAwIoledZwZiFfhNfxUiXK53TxFi3aOLu0d/qrqfds2 M4EkEiKDOCsvCR7f8SsSDRp0y/HQ+JLph0Q4+WXrEZMIXJwFmkUY67SuBlCZ8U6dwQ5n c5QfdIFzfRVkCQPe7sBCpcAO8h5vDQ1CcVOwe2R0x/45jkuVkFPCHAoQ9WjW47QkGMQg 1vIlRfLAOVJJ7FvT30WL9X8Q8cqiKJdnwPUwDRH0dlwQlSaa3w8d4EtHYBevaQ0fa9qV 9JRLibaj3CwKrIpcCUZq6emwHDbHtMo5ba2bIsTF6SQ3bW9c60K2JJGgeb+7aupcHW6n 8dCQ== X-Gm-Message-State: AIkVDXLNPVBp/mOxIObdy6BcKauuF0XsxS4DMKadjZIAAZsZt43Ov0/AVdY5JF9HUNYGA7XGY+dvuL5oct8hnQ== X-Received: by 10.157.53.115 with SMTP id l48mr5446340ote.19.1484185646337; Wed, 11 Jan 2017 17:47:26 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Wed, 11 Jan 2017 17:47:25 -0800 (PST) In-Reply-To: <8227a10b-bd55-b1ca-178b-c4757320b733@siege-engine.com> References: <87ful6o8x4.fsf@ericabrahamsen.net> <7b792dd9-491a-b442-f837-e85326a6c924@siege-engine.com> <87wpefakpe.fsf@ericabrahamsen.net> <56e042cf-ee2d-03b0-ceba-f1483fa2b01c@siege-engine.com> <87wpe55usp.fsf@ericabrahamsen.net> <8227a10b-bd55-b1ca-178b-c4757320b733@siege-engine.com> From: Noam Postavsky Date: Wed, 11 Jan 2017 20:47:25 -0500 X-Google-Sender-Auth: 5OSYgxYN4BRO0AqpraOEJnOZDgM Message-ID: Subject: Re: Improving representation of EIEIO objects in backtraces/error messages To: Eric Ludlam Cc: Eric Abrahamsen , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 01:47:29 -0000 On Wed, Jan 11, 2017 at 7:47 PM, Eric Ludlam wrote: > > It should be loaded automatically with data-debug. At the end of my version > it says: > > ;; eieio customizations > (eval-after-load "eieio" > '(require 'eieio-datadebug)) > > plus a similar line for semantic. Perhaps something got lost during the > merge that should be fixed. See also #23792 "25.0.95; CEDET included in Emacs should be merged with upstream" https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23792 From MAILER-DAEMON Thu Jan 12 03:17:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRaa4-0003Ol-2K for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 03:17:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRaZx-0003Nf-Mh for emacs-devel@gnu.org; Thu, 12 Jan 2017 03:17:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRaZt-0001HV-Bd for emacs-devel@gnu.org; Thu, 12 Jan 2017 03:17:49 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33555) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRaZt-0001Fp-5v for emacs-devel@gnu.org; Thu, 12 Jan 2017 03:17:45 -0500 Received: by mail-qk0-x243.google.com with SMTP id 11so1681741qkl.0 for ; Thu, 12 Jan 2017 00:17:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=g5Y1/AHj0iQcjV7JArRH2mpcCotVY9uQibBmhATjG9I=; b=ZaCrbDwpV6U5lN/dOIf4CbvvAmpkDd5bIdPY7/rKKQ0d7LXocfrlOUOcUZRKbuIKm6 PScTe0Ju9LvwwMqG1aDJOwwI4T8B9I4qTRvpUdC5LOfF8CgRxuD0A/j4dsn+2d4ZMoOk SprWDCs9uKBzJrDhiN3y4yWjZVSThjbKDBOl2qlLUnB5i3iIHcLh4E1VFEHZH0UKIxEr 5LHdja5CiS0kN4lEkqZ+M5t0DH8eT0tTvgCZrzfLchx5o2oddpUSZrJTJjolZjz6VfHu kcAnalio++yDIlsP/+WbjkuPaDimimPgixZv4g3WcMscDwk+B483teNHt589LSZRhNBK rw6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=g5Y1/AHj0iQcjV7JArRH2mpcCotVY9uQibBmhATjG9I=; b=VPgovYvR2hGW727kfa9/xyndQV/RE6wHq5ycwTlmA7RsQKTDEqU07h90YBLD58ewjE tUIEx1epeLeCRv1q2eInKu13T/M/663WHQolmVGNsog2EIs1xGVgx/mbiSh/tpqq9s2P RBO/EnDrZL3UXJaDvq7zNJI+uXv0zw2qr93sqApjx2D2o82iK3dCD09aEAVEPMqsFEwJ BfTbFeLSfMhjq3f6+TLuRwoCguSkvEPhG6H2K/R4He0OYBYppI0xIem/LDI3MJ7dtztV 3gBHffTPmOvU0A/p8YMQOstLkRlnQUdfbn7qW0X2Fy9LQZyek+FTJI/RaTGvdC4Sby40 u8Qg== X-Gm-Message-State: AIkVDXI+E3MgI1iSubN4T4vqeREr5byjbWRretsuZRoBH6n4TRuxjetjL39GrfH51mHrgA== X-Received: by 10.55.39.193 with SMTP id n184mr12129590qkn.315.1484209063472; Thu, 12 Jan 2017 00:17:43 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id x62sm6074032qkg.31.2017.01.12.00.17.41 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jan 2017 00:17:41 -0800 (PST) Subject: Re: Skipping unexec via a big .elc file Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: Date: Thu, 12 Jan 2017 03:17:40 -0500 Cc: Andreas Schwab , monnier@iro.umontreal.ca, emacs-devel@gnu.org Content-Transfer-Encoding: quoted-printable Message-Id: <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 08:17:53 -0000 On Jan 11, 2017, at 01:32, Ken Raeburn wrote: > Indeed, looking at dumped.elc, I see: > (#35# '#5646# '#218#) > where 35 is set-default, 5646 is backquote-unquote-symbol, and 218 is = ,=E2=80=99set-window-parameter thanks to = "#218=3D,=E2=80=99#897=3Dset-window-parameter" being read from = dumped.elc. I suspect 218 was supposed to be just the comma, but the = special printing of comma forms was still applied but is not compatible = with the #N# handling, so comma and related symbols should just be = excluded from that hack. There were other instances that made it clear that =E2=80=9C#218#=E2=80=9D= was being printed where =E2=80=9C,=E2=80=9D was intended, including = with the lack of space before whatever followed that=E2=80=99s normal = for a comma (e.g., =E2=80=9C#218##219#=E2=80=9D where #219# referred to = some ordinary symbol). I=E2=80=99ve just uploaded a workaround for that (including a comma-dot = sequence that I=E2=80=99m not familiar with, but which seems to get the = same treatment as comma and comma-at), and a bug fix I found relating to = one of my earlier changes. Now, with your patch to avoid unexec, it=E2=80=99s successfully = compiling in the lisp directory but fails in leim, which I haven=E2=80=99t= dug into yet: make[2]: Entering directory '/home/raeburn/dev/emacs/s/lisp' make -C ../leim all EMACS=3D"../src/emacs" make[3]: Entering directory '/home/raeburn/dev/emacs/s/leim' /bin/mkdir -p ../lisp/leim/ja-dic GEN ../lisp/leim/ja-dic/ja-dic.el Loading ../src/dumped.elc... Reading file "/home/raeburn/dev/emacs/s/leim/SKK-DIC/SKK-JISYO.L" ... Processing OKURI-ARI entries ... Debugger entered--Lisp error: (search-failed "^\\cH") re-search-forward("^\\cH") (let ((from (point)) to) (search-forward ";; okuri-nasi") = (beginning-of-line) (setq to (point)) (narrow-to-region from to) = (skkdic-convert-okuri-ari skkbuf buf) (widen) (goto-char to) = (forward-line 1) (setq from (point)) (re-search-forward "^\\cH") (setq = to (match-beginning 0)) (narrow-to-region from to) = (skkdic-convert-postfix skkbuf buf) (widen) (goto-char to) = (skkdic-convert-prefix skkbuf buf) (skkdic-collect-okuri-nasi) = (skkdic-convert-okuri-nasi skkbuf buf) (save-current-buffer (set-buffer = buf) (goto-char (point-max)) (insert ";;\n(provide 'ja-dic)\n\n" ";; = Local Variables:\n" ";; version-control: never\n" ";; = no-update-autoloads: t\n" ";; coding: utf-8\n" ";; End:\n\n" ";;; = ja-dic.el ends here\n"))) =E2=80=A6 From MAILER-DAEMON Thu Jan 12 04:37:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRbox-0002G9-5f for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 04:37:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRbop-0002Fc-Np for emacs-devel@gnu.org; Thu, 12 Jan 2017 04:37:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRbom-0003qX-Hw for emacs-devel@gnu.org; Thu, 12 Jan 2017 04:37:15 -0500 Received: from mail-lf0-x236.google.com ([2a00:1450:4010:c07::236]:35143) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRbom-0003qR-7o for emacs-devel@gnu.org; Thu, 12 Jan 2017 04:37:12 -0500 Received: by mail-lf0-x236.google.com with SMTP id m78so9112282lfg.2 for ; Thu, 12 Jan 2017 01:37:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=cqK/a1b03XLGq7sOLXQ21iZKCplqJmJzkeSkRgJPKFc=; b=jx3j4jItyeeMx/YDEYwSG+QvYR9bYutWlHhNva6UMYfhrWzRjukYQOgZLC0HM2jR83 RIJnjCmklJ8XxkNANc2JqCCFfNCFhymFBg5irMh0ge1ovWo5BKSBxpyQksyHcSYq9uRG 8MZ0VXSn0QY8VF9zoolXP1IehL9TRIFsPEN9unbpHKrBbqXuLHbeaB9c9RPS3b2TZW2G Dnv6U7ad4/fWOIYTCtKDbBX4WgVdIYvoAE/Fxb7STDDzIhGvBlmXM0KJLb/aFUoZQgPD U8vO+bm6rH4prHmCOX9YAo1ZT/5ymbAtGDmpjGq1SC2B8ebBUyTt95mz77ISZ+cJME7T cUYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=cqK/a1b03XLGq7sOLXQ21iZKCplqJmJzkeSkRgJPKFc=; b=Yz33NnaKG0SWvrHrwJrdcTLwuMY1sQlw+QVaRc9ex48CPo9bSUxlfP6n40bVC9RyMv 3zBvBrj5q4BnxEcDUR5RBl0jaggXFY/0VuFzGDYKItcVyFpscWTXNF4TJvOGKHyKl/Hi wrgDX+Vw5TICXp7UhS9oWs/mPDPDBUxtRM0DbI+t2q5Klvg1m46gRhW4YSPzPe9oIk3/ rEh91lCZO0cfJqXfmeV6dGuhIZN8nbC2eP11ImIO+rpXcA00fIh/VUWAP8ODicMQemSj 9sWKYTCs83j0/fZIrhJd6Pl4avqRVLhlQM5PcI2nbsSbbyR25tw4l7udzV2WXDJsji+6 o7Rg== X-Gm-Message-State: AIkVDXLgGgjssIOoKWZ5hGwAIvZiyeBPOfJKjJ7wfd2X66lxYiTeKMFz88lAhvapg7mlUg== X-Received: by 10.25.202.83 with SMTP id h19mr4747173lfj.33.1484213830502; Thu, 12 Jan 2017 01:37:10 -0800 (PST) Received: from localhost.localdomain ([2.135.53.233]) by smtp.gmail.com with ESMTPSA id t126sm2168324lff.31.2017.01.12.01.37.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Jan 2017 01:37:09 -0800 (PST) Date: Thu, 12 Jan 2017 15:37:01 +0600 From: Alexander Kuleshov To: emacs-devel Subject: [PATCH] 26.0.50.3, add $TTL directove to dns-mode.el Message-ID: <20170112093701.GA2306@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="AWniW0JNca5xppdA" Content-Disposition: inline X-Operating-System: Linux X-Date: Thu Jan 12 13:42:02 +06 2017 User-Agent: Mutt/1.6.0-rc0 ((null)) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 09:37:21 -0000 --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello everyone, This simple patch adds `$TTL` directive to dns-mode-font-lock-keywords from the lisp/text-modes/dns-mode.el. The global `$TTL` directive (time-to-live) specifies the duration in seconds that the record may be cached by any resolver. In general it should looks: $TTL amount-of-ttl (in seconds) Additionally d/D/h/H/w/W/m/M/s/S maybe added to amount-of-ttl where d/D - days, h/H - hours and etc.. Thank you. --AWniW0JNca5xppdA Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Add-support-for-TTL-dns-directive.patch" >From 2209894bc51367570c38a3428be6f4f1e2bc25a2 Mon Sep 17 00:00:00 2001 From: Alexander Kuleshov Date: Thu, 12 Jan 2017 15:26:02 +0600 Subject: [PATCH] Add support for $TTL dns directive * lisp/text-modes/dns-mode.el (dns-mode-font-lock-keywords): Add $TTL directive. --- lisp/textmodes/dns-mode.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index 02cb2a2..6a3cfcb 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -79,6 +79,7 @@ dns-mode-class-face (defcustom dns-mode-font-lock-keywords `(("^$ORIGIN" 0 ,dns-mode-control-entity-face) ("^$INCLUDE" 0 ,dns-mode-control-entity-face) + ("^$TTL\s+[0-9]+[WwDdHhMmSs]?" 0 ,dns-mode-control-entity-face) ("^$[a-z0-9A-Z]+" 0 ,dns-mode-bad-control-entity-face) (,(regexp-opt dns-mode-classes) 0 ,dns-mode-class-face) (,(regexp-opt dns-mode-types) 0 ,dns-mode-type-face)) -- 2.8.0.rc3.1353.gea9bdc0 --AWniW0JNca5xppdA-- From MAILER-DAEMON Thu Jan 12 08:03:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRf2c-0003JZ-42 for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 08:03:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52868) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRf2Z-0003JO-Uu for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:03:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRf2V-0005mb-EO for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:03:39 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:4447) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRf2V-0005lq-8q for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:03:35 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BvBAAu3EVY/8CvSC1dGwEBAQMBAQEJAQEBgzgBAQEBAR+EW7hbGYYJAoISQhEBAgEBAQEBAQFiKIRpBnkQCw0nBwsUGIkzrRQqAosYAQEBBwIBJIsZhRSFFQWPfIpqknMBiCYlhhWSDzUheBMOhBCBYyCJLQEBAQ X-IPAS-Result: A0BvBAAu3EVY/8CvSC1dGwEBAQMBAQEJAQEBgzgBAQEBAR+EW7hbGYYJAoISQhEBAgEBAQEBAQFiKIRpBnkQCw0nBwsUGIkzrRQqAosYAQEBBwIBJIsZhRSFFQWPfIpqknMBiCYlhhWSDzUheBMOhBCBYyCJLQEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="285922553" Received: from unknown (HELO pastel.home) ([45.72.175.192]) by smtp.teksavvy.com with ESMTP; 12 Jan 2017 08:03:32 -0500 Received: by pastel.home (Postfix, from userid 20848) id 1132A641F8; Thu, 12 Jan 2017 08:03:30 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Ken Raeburn Subject: Re: [Emacs-diffs] scratch/raeburn-startup 9919e41 2/2: Exclude comma symbols from print-symbols-as-references processing. Message-ID: References: <20170112064008.416.54060@vcs.savannah.gnu.org> <20170112064008.F1C782201C9@vcs.savannah.gnu.org> Date: Thu, 12 Jan 2017 08:03:30 -0500 In-Reply-To: <20170112064008.F1C782201C9@vcs.savannah.gnu.org> (Ken Raeburn's message of "Thu, 12 Jan 2017 06:40:08 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 13:03:40 -0000 > + && ! EQ (Qcomma, obj) \ > + && ! EQ (Qcomma_at, obj) \ > + && ! EQ (Qcomma_dot, obj))) I can't think of any reason why the same problem wouldn't affect `quote' and ` Stefan From MAILER-DAEMON Thu Jan 12 08:56:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRfrJ-0007eT-GE for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 08:56:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRfrF-0007be-Tj for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:56:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRfrB-00064L-3N for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:56:01 -0500 Received: from [195.159.176.226] (port=35302 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRfrA-000640-SH for emacs-devel@gnu.org; Thu, 12 Jan 2017 08:55:57 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cRfqy-00081Q-8q for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:55:44 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: How does one set up a syntax table for (* and //? Date: Thu, 12 Jan 2017 08:55:42 -0500 Lines: 9 Message-ID: References: <18d576b9-fe12-c09a-32f9-ad0da86f2d27@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:IWNjehW3HfpAUO/ZJsgzrrIvvH4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 13:56:03 -0000 > Is there code that depends on this (a mixing with c)? If not, could we > consider changing the semantics of "c" instead? This mixing isn't clear from > the documentation, AFAICT. `c` is a fairly recent introduction (introduced for opascal.el, FWIW), so maybe it's not too late to change its semantics. Stefan From MAILER-DAEMON Thu Jan 12 12:39:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRjL8-0003vA-Ma for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 12:39:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRjL6-0003ti-KO for emacs-devel@gnu.org; Thu, 12 Jan 2017 12:39:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRjL3-0001jY-HY for emacs-devel@gnu.org; Thu, 12 Jan 2017 12:39:04 -0500 Received: from [195.159.176.226] (port=50644 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRjL3-0001jD-A8 for emacs-devel@gnu.org; Thu, 12 Jan 2017 12:39:01 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cRjKr-0000L7-SX for emacs-devel@gnu.org; Thu, 12 Jan 2017 18:38:49 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Sam Steingold Subject: Re: Emacs and ImageMagick-7 issues Date: Thu, 12 Jan 2017 12:38:36 -0500 Organization: disorganization Lines: 29 Message-ID: References: <18005ddf-2b73-4ffc-31df-83f081e78603@alice.it> Reply-To: sds@gnu.org Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (darwin) X-Attribution: Sam X-Disclaimer: You should not expect anyone to agree with me. Cancel-Lock: sha1:qjSiZIwBWjGgx4wTXKmfnfxHWjU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 17:39:05 -0000 > * Angelo Graziosi [2016-10-02 22:14:01 +0200]: > > Just for the record I want to flag the following. > > A few months ago, on MSYS2-MinGW64, there was the upgrade from > ImageMagick 6.x to version 7.x. After this, 'configure' stopped to add > support for ImageMagick when building Emacs: > > Does Emacs use imagemagick? no > > (with version 6.x it is 'yes'). > > This seems related to the fact that ImageMagick people has changed many > file name, adding 'Magick' ahead. For example, 'configure' search for > Wand.pc but there is MagickWand.pc etc. As consequence, also image.c > seems broken related to ImageMagick-7. > > I think this will regard also other systems when they will upgrade to > ImageMagick-7, unless that people will revert the naming convention. I wonder what the plans are wrt ImageMagick-7. Thank you! -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1504 http://steingoldpsychology.com http://www.childpsy.net http://think-israel.org http://iris.org.il http://www.memritv.org UNIX is as friendly to you as you are to it. Windows is hostile no matter what. From MAILER-DAEMON Thu Jan 12 14:31:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRl5Z-0000IZ-MD for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 14:31:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRl5T-0000IE-OM for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:31:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRl5Q-00035W-Md for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:31:03 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36734) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRl5Q-00035C-GF for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:31:00 -0500 Received: by mail-qk0-x242.google.com with SMTP id a20so4129017qkc.3 for ; Thu, 12 Jan 2017 11:31:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=1diU0e0fwOvcasti/pYqm/8ZCW+yGvTgBammoRXKYP0=; b=OnQvd3bhZppuuqZynrfltuotsgh+jXuYNeqaiMWC2Fem/kST+R3e/uMuO3Hco8oySY cIcG+cG5krm+Aj7nkFjYmcIMEAnQOEiQvjRnjBLj/ParOLqsdXHTKfHhDQaPrE9dtUrb R5uidAitwtWd5ZOvzRWv1ztL1qSQJo05nNKqKhsyWn4FVZf/L39a4OsY7DRjNxnjK+RE M82xNB5lcgenJWW889rilx4CZbrddkpP06QX8Cc2qZotRkJJ607J/xy5Bn9AFaTH5gr9 OCh/SkJ9EOl8bfspQUx9neLUWkxSVudacQ5V5ZSMW561WFYq5afpuj7mSf/kUt+F3lWH d+Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=1diU0e0fwOvcasti/pYqm/8ZCW+yGvTgBammoRXKYP0=; b=oRb23JCMv+9cZmnxaYeaVRYfqoKAIBCqNX6yjFDKSW+9J45HzcN/k2IqJsV/qFxXcf j/xi7PJTRyqoAizlMZ453mQvZrF0vZl2Bn25zuU35A8PaVZTEEZMQtXA+dKXh2dUGPGJ KrU24esxvNlGDKvWXxK8e74EAej7V+6wynfih5l17NWTauQs5M6b6ZFbsdkMj0D8iDCJ OsYaSZMNklXIJgVWtYcgcanONkY7jVvoQIY+ophhCpWdxFalYL5IFv6EdIjDEpXojnct iwPnZWcj0noqdeI1LhrP1AwGe+0yPZCoWkLbYjWmTeSk7/aLXoxEUVb9Ci6AJm4w9A1T uxuw== X-Gm-Message-State: AIkVDXLMUfMtKix+d3YgOHmN5Jh3nYvRqigsz7f0KJGaLYHRmnjPYO9AAhVL24AYHfCblg== X-Received: by 10.55.164.85 with SMTP id n82mr12866629qke.316.1484249459657; Thu, 12 Jan 2017 11:30:59 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id k26sm7348920qtc.36.2017.01.12.11.30.58 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jan 2017 11:30:59 -0800 (PST) Subject: Re: [Emacs-diffs] scratch/raeburn-startup 9919e41 2/2: Exclude comma symbols from print-symbols-as-references processing. Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: Date: Thu, 12 Jan 2017 14:30:58 -0500 Cc: emacs-devel@gnu.org Content-Transfer-Encoding: quoted-printable Message-Id: <6091F7D6-39C3-4B74-AD0D-C6DC96F94253@raeburn.org> References: <20170112064008.416.54060@vcs.savannah.gnu.org> <20170112064008.F1C782201C9@vcs.savannah.gnu.org> To: Stefan Monnier X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 19:31:08 -0000 On Jan 12, 2017, at 08:03, Stefan Monnier = wrote: >> + && ! EQ (Qcomma, obj) = \ >> + && ! EQ (Qcomma_at, obj) = \ >> + && ! EQ (Qcomma_dot, obj))) >=20 > I can't think of any reason why the same problem wouldn't affect = `quote' > and ` They=E2=80=99re winding up in the table, too, but they get written out = using printchar, while the comma symbols are written out using = print_object, which will use the =E2=80=9C#=E2=80=9D forms. Or, rather, = pairs starting with quote and ` are written out that way. Otherwise, my = dumped.elc has #1=3Dquote and #954=3D\`, and #1# and #954# are emitted = like any other symbol. Changing the printing of the comma symbols to use printchar probably = would=E2=80=99ve worked as well. In fact, thinking on it, it might be = cleaner, special-casing not the symbols but the generation of the = special output syntax. I=E2=80=99ll have another look at that tonight. Ken= From MAILER-DAEMON Thu Jan 12 14:32:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRl7D-00016k-Fe for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 14:32:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35323) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRl78-00016c-KC for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:32:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRl75-0003kA-Hk for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:32:46 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:32968) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRl75-0003k4-Bw for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:32:43 -0500 Received: by mail-wm0-x244.google.com with SMTP id r144so6054944wme.0 for ; Thu, 12 Jan 2017 11:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:user-agent:mime-version; bh=zLPBVNy/M4u+ShFrAtYr3vON3NxiZHWWR8qGjTKwswA=; b=BuVI8uMIndmkfeAQD00sf2M8bs/g6tE76RPLjyQMjLKyT1x9XLau2S8XczB4RA/nsx dgxFgxFjrUUpJlHD1InC1cz6EjCkPzBmI9FiXhl6MgFVnQlPMH7fTvClcmQSkreaH6BY /lNmjQlQoAp5C16gmqSWvnnT3Gd5oZhB1b+TXi/nOAi8yCHo+tSZUalStGPpqC9XTjar 8Nr+ZM/Q7qSOGFdqVnu0rOY7di0MmYJEkxRl7hlpLBP/jtoh7QK3qQGYVWrv3N8panm9 0rv79a2wiAImPVvHIjmAvRXvodoKep2QczECuXtHZjIppjEqizuXkr81g8Wd6s8fqFrW NTxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=zLPBVNy/M4u+ShFrAtYr3vON3NxiZHWWR8qGjTKwswA=; b=uGc2p3/1Tvc6nC0r8U4gZ4YRlvIKHbVS7qfjSjQYFINc2/DzV2kPmlt0Zr4BNJqOSc QKI7tjyG+bypS6il1jaVpxhxBmBbMDwm77QU31joUWcIP9sVSOYZCcxAqdOd4hrzJI7f qqW933pj2XQSnAa9rb7Zeab03vGifNusymijSbcZHYvrzsXqpK/5v2froI3dlpFnhsIj XZ1AAmRXPtH26rga8/kvhm8kqi3oJ2/uB/j9i79gNykP1GpuDp5L2b1zrXjeutlmFwDm xdRqCGuKx6jxFCA7Fxbve95Lj/rqiLFujd6eIIGkUdIUbvM/7UBcUXYRWKPAwaTulRLa 220Q== X-Gm-Message-State: AIkVDXIQWMAlZAz9Em6RlHzLDZY2w2fzGa82iMk+cNjysHwena/FpXINiAnZi+AiQlTTww== X-Received: by 10.28.87.85 with SMTP id l82mr1349809wmb.135.1484249561884; Thu, 12 Jan 2017 11:32:41 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id 63sm5046669wmg.2.2017.01.12.11.32.40 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 12 Jan 2017 11:32:41 -0800 (PST) From: Edward John Steere To: emacs-devel@gnu.org Subject: CEDET Merge Date: Thu, 12 Jan 2017 21:32:36 +0200 Message-ID: <87r348ul9n.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 19:32:47 -0000 Hello Everyone, I've been working on a branch in upstream CEDET which brings it up to date with the changes which have been made in Emacs core. I started this work with the intention of simplifying the merge process from CEDET upstream into core so that users can benefit from improvements to CEDET more easily. I found that the divergence between the two versions of CEDET has grown quite a bit and all of my work has been dedicated to getting it to run on Emacs master (26?). My branch now passes all of CEDETs tests when built against Emacs @512e988. I'd like to get these changes synchronised with Emacs core and have my branch merged to upstream (i.e. CEDET on source forge). This could be the first step with the second being a repackaging of upstream so that it only contains the parts which are under active development and can be installed via ELPA. May I contribute my changes to a branch on the Savannah repository for review/commentary? (If yes, then It'll take a little bit of time to merge the changes in my branch of CEDET back into Emacs core before I actually push them up.) Kind regards, Edward Steere From MAILER-DAEMON Thu Jan 12 14:45:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRlJp-0007Rx-GX for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 14:45:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38932) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRlJm-0007PZ-3G for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:45:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRlJh-0001Cp-8z for emacs-devel@gnu.org; Thu, 12 Jan 2017 14:45:50 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42243) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRlJh-0001Ce-1d; Thu, 12 Jan 2017 14:45:45 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2574 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRlJe-0003Ws-58; Thu, 12 Jan 2017 14:45:44 -0500 Date: Thu, 12 Jan 2017 21:45:33 +0200 Message-Id: <83h954cbaa.fsf@gnu.org> From: Eli Zaretskii To: Edward John Steere CC: emacs-devel@gnu.org In-reply-to: <87r348ul9n.fsf@gmail.com> (message from Edward John Steere on Thu, 12 Jan 2017 21:32:36 +0200) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 19:45:51 -0000 > From: Edward John Steere > Date: Thu, 12 Jan 2017 21:32:36 +0200 > > May I contribute my changes to a branch on the Savannah repository for > review/commentary? Yes, of course. Thanks for working on this. From MAILER-DAEMON Thu Jan 12 15:10:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRlhU-00045q-LC for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 15:10:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43988) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRlhR-000438-BT for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:10:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRlhP-0001lZ-UN for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:10:17 -0500 Received: from mail-vk0-x244.google.com ([2607:f8b0:400c:c05::244]:34517) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRlhP-0001lT-Pl for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:10:15 -0500 Received: by mail-vk0-x244.google.com with SMTP id r136so2246336vke.1 for ; Thu, 12 Jan 2017 12:10:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=/t9JqvDNEBhO4ijTJrjoi8EfUqgeySw+wZbMjbptOog=; b=laSlhx3YIsPdR41jbbXiUy/MBJCDOQhVOo+F7MpjZbepkyTLCjYdLBqL0VS9QUtEVp PZnecsePN2EzeWzyGglH33JWy8QCe9kW5XeyVl4tkS5D1fai4XPIxXwXYRXFx2o3eEsL KzyQlnLo2Fz+F0NBHK38LP1Kym53WP+IOTa449Td/iitPJWf9SXgo+ah3FKUwSPw6p0B +pNC8CM1WSBNQAKYIN0S8OR6I/d9XPZvDG7oM2tF2SzjghbLPy0WU2NA8Nf8RZc0lttB HMhL0Y/L0x+a7GjgnQ+ct77vs6q3xXsMq3by/5moU+Jsm03AlUpXUEgez6vV1UEJFrAt dKuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=/t9JqvDNEBhO4ijTJrjoi8EfUqgeySw+wZbMjbptOog=; b=o6qvBIgdnvlcde10rKaqTUhjl5DBPzrhaqQDTxJDeszMyP0Hu2KfiJg6jPYfNYhkWi pA0hVAQUTl1rnCY0XFQN7V/OCPMP/YeeW0Uole6Z8SMqy3bgLQpXCbyLeJwYoMVXyTus 6GDyQ4mgXI4QjEYB+/sfuN0GdmsyAl39Oe+e0zemozN0FS6SLLQTrKEi9bXWFhvVeCtb bXt61JrYetlxj6oLKPDYIKm5+ELsuHt3OVOGoGlBhp+bYMfhzaNCkMpF9eR7d5h7rPzO AW8bxRtmk0y20COoVfopCD8jsKb9Fsjq1WQa4kRwWceCxr6+s9ay+8j5fib80gVuR+Zc kYrQ== X-Gm-Message-State: AIkVDXLMgApA5z0DDUX/bLWAQcRzOIIZYnhKjfgwVzPR6i7Q6eAjBt8IdNrKPA/JNiJ0xaS5AQnvsoIqVErP0A== X-Received: by 10.31.54.86 with SMTP id d83mr3032941vka.146.1484251814956; Thu, 12 Jan 2017 12:10:14 -0800 (PST) MIME-Version: 1.0 Sender: bastian.beischer@gmail.com Received: by 10.103.0.7 with HTTP; Thu, 12 Jan 2017 12:10:14 -0800 (PST) In-Reply-To: <87r348ul9n.fsf@gmail.com> References: <87r348ul9n.fsf@gmail.com> From: Bastian Beischer Date: Thu, 12 Jan 2017 21:10:14 +0100 X-Google-Sender-Auth: VNFSvEPvZc53pY0aussX3_px0vc Message-ID: Subject: Re: CEDET Merge To: Edward John Steere Cc: Emacs-Devel Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 20:10:18 -0000 Hey Edward, On Thu, Jan 12, 2017 at 8:32 PM, Edward John Steere wrote: > Hello Everyone, > > I've been working on a branch in upstream CEDET which brings it up to > date with the changes which have been made in Emacs core. I started > this work with the intention of simplifying the merge process from CEDET > upstream into core so that users can benefit from improvements to CEDET > more easily. I found that the divergence between the two versions of > CEDET has grown quite a bit and all of my work has been dedicated to > getting it to run on Emacs master (26?). > > My branch now passes all of CEDETs tests when built against Emacs > @512e988. I'd like to get these changes synchronised with Emacs core > and have my branch merged to upstream (i.e. CEDET on source forge). > > This could be the first step with the second being a repackaging of > upstream so that it only contains the parts which are under active > development and can be installed via ELPA. > > May I contribute my changes to a branch on the Savannah repository for > review/commentary? (If yes, then It'll take a little bit of time to > merge the changes in my branch of CEDET back into Emacs core before I > actually push them up.) It's great to hear that you have been working on this. I'm also very interested in getting CEDET upstream and CEDET in emacs synchronized again. Please see also this bug report: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23792 This also contains a patch for the emacs sources which I've come up with half a year ago, but it's probably incomplete and even wrong in places. But maybe we can compare what we did. Do you have a git repository cloned from CEDET upstream which contains your work somewhere? Or did you start by modifying the built-in CEDET in emacs? > > Kind regards, > > Edward Steere > Cheers Bastian -- Bastian Beischer RWTH Aachen University of Technology @RWTH Aachen Office: 28 C 203 Phone: +49-241-80-27205 E-mail: beischer@physik.rwth-aachen.de Address: I. Physikalisches Institut B, Sommerfeldstr. 14, D-52074 Aachen @CERN Office: Bdg 32-4-B12 Phone: +41-22-76-75750 E-mail: bastian.beischer@cern.ch Address: CERN, CH-1211 Geneve 23 From MAILER-DAEMON Thu Jan 12 15:11:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRlil-0005EE-3R for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 15:11:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRlih-00058H-Fy for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:11:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRlif-0002DM-Gn for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:11:35 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:38132) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRlic-0002B8-HS; Thu, 12 Jan 2017 15:11:30 -0500 Received: by mail-wm0-x233.google.com with SMTP id r144so38024473wme.1; Thu, 12 Jan 2017 12:11:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=TD3khJ3pTEmPUv+fSIHbcuq3WBQYTn2V57r+k91DlnA=; b=YZQlTw6j0WJqM7a5QRF854sR63ZWB7Q/bfZvfkkhRqJAwTvTQt5cuHOwVz2mF3FNR1 SDig0YVUFHpnGpD/VLHBKUWIL7DpJd+5daRiwwJ6T+X/KickaZKxqryedPIkUss3nKAM oJ/1TpthUYcPqJ1TlhWeNVzNWJ/gszdmpbRvpPP41DSO2zhOd7GO1VPs1DcOmB+XlSeE krNh8cYx6a5mHVepr1FY94M8W1f8p6riwXDxuOTn11OT66moKD+99RO7CR/LjPkv4DoB WYp/Rf/WO8kBvzJ2LcaWlJ/3881ErrahoGFv47Fu79USAQUDyBiWZy3wCrJNjHCcOOX+ PRQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=TD3khJ3pTEmPUv+fSIHbcuq3WBQYTn2V57r+k91DlnA=; b=EJiEIV9GJ+q2nbsmkPaVdy6Hqy3rg/rEJ15KN8dpeclGJpFqSHQh0TdFmrWNKrEdeG b9kYTLQV0oqfzJpu4eNh/7x/oRGqUg3ajHi4WdHeIhB1P4Or0rmPlkTBjZ9rTGMaw7rt oPAIQo99OjbHxpLVUL1zKk8pzhxMn+F6ENUJOtQd8QX2EwH1RQ+HtJvL57ampk1kgW3F eT6RO+9QCkaSaNDwcbyEMqjGe0l1li3wE/17HcjiNWZC0J0pd4g9ugtszeSEtiYa9305 m4UpuOOX5vq3o9kTq6NVzqjk0n5xFV5ZYVdefacuFIAsejdyTXSf7WC+OgbhEJ4kr/ot 2cfg== X-Gm-Message-State: AIkVDXJJm+jJDhyCATAcAr9N5CO4HvvdIUItUOToVGUwVd6q/+wGaevCryUyJdp5uriizvCHWR0KgS/kSB91JQ== X-Received: by 10.223.166.167 with SMTP id t36mr8655053wrc.18.1484251888897; Thu, 12 Jan 2017 12:11:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Thu, 12 Jan 2017 12:11:08 -0800 (PST) In-Reply-To: References: <18005ddf-2b73-4ffc-31df-83f081e78603@alice.it> From: Fabrice Popineau Date: Thu, 12 Jan 2017 21:11:08 +0100 Message-ID: Subject: Re: Emacs and ImageMagick-7 issues To: sds@gnu.org Cc: Emacs developers Content-Type: multipart/mixed; boundary=001a1140a1009899330545eb526f X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 20:11:37 -0000 --001a1140a1009899330545eb526f Content-Type: multipart/alternative; boundary=001a1140a10098992c0545eb526d --001a1140a10098992c0545eb526d Content-Type: text/plain; charset=UTF-8 2017-01-12 18:38 GMT+01:00 Sam Steingold : > > > Attached is a diff file for Emacs-25 and ImageMagick-7 in case it can help (and provided I did no mistake). -- Fabrice --001a1140a10098992c0545eb526d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

= 2017-01-12 18:38 GMT+01:00 Sam Steingold <sds@gnu.org>:

>

Attached is a diff file for Emacs-25 and ImageMa= gick-7 in case it can help
(and provided I = did no mistake).


--
Fabrice
--001a1140a10098992c0545eb526d-- --001a1140a1009899330545eb526f Content-Type: text/plain; charset=US-ASCII; name="emacs-25-imagemagick7.diff" Content-Disposition: attachment; filename="emacs-25-imagemagick7.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ixut854y0 ZGlmZiAtLWdpdCBhL2xpc3AvbG9hZHVwLmVsIGIvbGlzcC9sb2FkdXAuZWwKaW5kZXggYzYxMDdk My4uY2Y2MmQ3YiAxMDA2NDQKLS0tIGEvbGlzcC9sb2FkdXAuZWwKKysrIGIvbGlzcC9sb2FkdXAu ZWwKQEAgLTI3MSw2ICsyNzEsNyBAQAogICAgICAgKGxvYWQgInRlcm0vdzMyLXdpbiIpCiAgICAg ICAobG9hZCAiZGlzcC10YWJsZSIpCiAgICAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRv d3MtbnQpCisgICAgICAgIChsb2FkICJpbWFnZSIpCiAgICAgICAgIChsb2FkICJ3MzItZm5zIikK ICAgICAgICAgKGxvYWQgImxzLWxpc3AiKQogICAgICAgICAobG9hZCAiZG9zLXczMiIpKSkpCmRp ZmYgLS1naXQgYS9saXNwL3Rlcm0vdzMyLXdpbi5lbCBiL2xpc3AvdGVybS93MzItd2luLmVsCmlu ZGV4IDNmZjA1MDkuLjhlZjAzMzMgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzItd2luLmVsCisr KyBiL2xpc3AvdGVybS93MzItd2luLmVsCkBAIC0yNzEsNiArMjcxLDggQEAgbGliZ251dGxzLXZl cnNpb24KICAgICAgICAnKGdkay1waXhidWYgImxpYmdka19waXhidWYtMi4wLTAuZGxsIikKICAg ICAgICAnKGdsaWIgImxpYmdsaWItMi4wLTAuZGxsIikKICAgICAgICAnKGdvYmplY3QgImxpYmdv YmplY3QtMi4wLTAuZGxsIikKKyAgICAgICAnKG1hZ2lja3dhbmQgImxpYk1hZ2lja1dhbmQtNy5R MTZIRFJJLTAuZGxsIiAibGliTWFnaWNrV2FuZC03LlExNi0wLmRsbCIpCisgICAgICAgJyhtYWdp Y2tjb3JlICJsaWJNYWdpY2tDb3JlLTcuUTE2SERSSS0wLmRsbCIgImxpYk1hZ2lja0NvcmUtNy5R MTYtMC5kbGwiKQogICAgICAgIChpZiAoPj0gbGliZ251dGxzLXZlcnNpb24gMzA0MDApCiAgICAg ICAgICAgICcoZ251dGxzICJsaWJnbnV0bHMtMzAuZGxsIikKICAgICAgICAgICcoZ251dGxzICJs aWJnbnV0bHMtMjguZGxsIiAibGliZ251dGxzLTI2LmRsbCIpKQpkaWZmIC0tZ2l0IGEvc3JjL2lt YWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCBiNzI0ZGE4Li4xNThkN2M3IDEwMDY0NAotLS0gYS9z cmMvaW1hZ2UuYworKysgYi9zcmMvaW1hZ2UuYwpAQCAtMzE1OSw2ICszMjU1LDggQEAgc3RhdGlj IGJvb2wgeHBtX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpOwogI2Rl ZmluZSBYSW1hZ2UgeHBtX1hJbWFnZQogI2RlZmluZSBEaXNwbGF5IHhwbV9EaXNwbGF5CiAjZGVm aW5lIFBJWEVMX0FMUkVBRFlfVFlQRURFRkVECisjdW5kZWYgY2xvc2UKKyN1bmRlZiBvcGVuCiAj aW5jbHVkZSAiWDExL3hwbS5oIgogI3VuZGVmIEZPUl9NU1cKICN1bmRlZiBYQ29sb3IKQEAgLTgy NDAsMTYgKzgzODAsMjQ5IEBAIGltYWdlbWFnaWNrX2ltYWdlX3AgKExpc3BfT2JqZWN0IG9iamVj dCkKIC8qIFRoZSBHSUYgbGlicmFyeSBhbHNvIGRlZmluZXMgRHJhd1JlY3RhbmdsZSwgYnV0IGl0 cyBuZXZlciB1c2VkIGluIEVtYWNzLgogICAgVGhlcmVmb3JlIHJlbmFtZSB0aGUgZnVuY3Rpb24g c28gaXQgZG9lc24ndCBjb2xsaWRlIHdpdGggSW1hZ2VNYWdpY2suICAqLwogI2RlZmluZSBEcmF3 UmVjdGFuZ2xlIERyYXdSZWN0YW5nbGVHaWYKKyNpZmRlZiBfX01JTkdXNjRfXworI2luY2x1ZGUg PEltYWdlTWFnaWNrLTcvTWFnaWNrV2FuZC9NYWdpY2tXYW5kLmg+CisjZWxzZQogI2luY2x1ZGUg PHdhbmQvTWFnaWNrV2FuZC5oPgorI2VuZGlmCiAKIC8qIEltYWdlTWFnaWNrIDYuNS4zIHRocm91 Z2ggNi42LjUgaGlkIFBpeGVsR2V0TWFnaWNrQ29sb3IgZm9yIHNvbWUgcmVhc29uLgogICAgRW1h Y3Mgc2VlbXMgdG8gd29yayBmaW5lIHdpdGggdGhlIGhpZGRlbiB2ZXJzaW9uLCBzbyB1bmhpZGUg aXQuICAqLworI2lmZGVmIF9fTUlOR1c2NF9fCisjaW5jbHVkZSA8SW1hZ2VNYWdpY2stNy9NYWdp Y2tDb3JlL3ZlcnNpb24uaD4KKyNlbHNlCiAjaW5jbHVkZSA8bWFnaWNrL3ZlcnNpb24uaD4KKyNl bmRpZgogI2lmIDB4NjUzIDw9IE1hZ2lja0xpYlZlcnNpb24gJiYgTWFnaWNrTGliVmVyc2lvbiA8 PSAweDY2NQogZXh0ZXJuIFdhbmRFeHBvcnQgdm9pZCBQaXhlbEdldE1hZ2lja0NvbG9yIChjb25z dCBQaXhlbFdhbmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWFnaWNrUGl4ZWxQYWNrZXQgKik7CiAjZW5kaWYKIAorI2lmZGVmIFdJTkRPV1NOVAorREVG X0RMTF9GTiAoTWFnaWNrV2FuZCAqLCBDbG9uZU1hZ2lja1dhbmQsIChjb25zdCBNYWdpY2tXYW5k ICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja1dhbmQgKiwgRGVzdHJveU1hZ2lja1dhbmQsIChNYWdp Y2tXYW5kICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja1dhbmQgKiwgRGVzdHJveVBpeGVsSXRlcmF0 b3IsIChQaXhlbEl0ZXJhdG9yICopKTsKK0RFRl9ETExfRk4gKFBpeGVsV2FuZCAqLCBEZXN0cm95 UGl4ZWxXYW5kLCAoUGl4ZWxXYW5kICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBl LCBNYWdpY2tDcm9wSW1hZ2UsIChNYWdpY2tXYW5kICosIGNvbnN0IHNpemVfdCwgY29uc3Qgc2l6 ZV90LCBjb25zdCBzc2l6ZV90LCBjb25zdCBzc2l6ZV90KSk7CisjaWZkZWYgSEFWRV9NQUdJQ0tF WFBPUlRJTUFHRVBJWEVMUworREVGX0RMTF9GTiAoTWFnaWNrQm9vbGVhblR5cGUsIE1hZ2lja0V4 cG9ydEltYWdlUGl4ZWxzLCAoTWFnaWNrV2FuZCAqLCBjb25zdCBzc2l6ZV90LCBjb25zdCBzc2l6 ZV90LCBjb25zdCBzaXplX3QsIGNvbnN0IHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBTdG9y YWdlVHlwZSwgdm9pZCAqKSk7CisjZW5kaWYKK0RFRl9ETExfRk4gKGNoYXIgKiwgTWFnaWNrR2V0 RXhjZXB0aW9uLCAoY29uc3QgTWFnaWNrV2FuZCAqLCBFeGNlcHRpb25UeXBlICopKTsKK0RFRl9E TExfRk4gKE1hZ2lja1dhbmQgKiwgTWFnaWNrR2V0SW1hZ2UsIChNYWdpY2tXYW5kICopKTsKK0RF Rl9ETExfRk4gKERpc3Bvc2VUeXBlLCBNYWdpY2tHZXRJbWFnZURlbGF5LCAoTWFnaWNrV2FuZCAq KSk7CitERUZfRExMX0ZOIChEaXNwb3NlVHlwZSwgTWFnaWNrR2V0SW1hZ2VEaXNwb3NlLCAoTWFn aWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChzaXplX3QsIE1hZ2lja0dldEltYWdlSGVpZ2h0LCAo TWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29sZWFuVHlwZSwgTWFnaWNrR2V0 SW1hZ2VQYWdlLCAoTWFnaWNrV2FuZCAqLCBzaXplX3QgKiwgc2l6ZV90ICosIHNzaXplX3QgKiwg c3NpemVfdCAqKSk7CitERUZfRExMX0ZOIChjaGFyICosIE1hZ2lja0dldEltYWdlU2lnbmF0dXJl LCAoTWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChzaXplX3QsIE1hZ2lja0dldEltYWdlV2lk dGgsIChNYWdpY2tXYW5kICopKTsKK0RFRl9ETExfRk4gKHNpemVfdCwgTWFnaWNrR2V0TnVtYmVy SW1hZ2VzLCAoTWFnaWNrV2FuZCAqKSk7CisjaWZkZWYgSEFWRV9NQUdJQ0tNRVJHRUlNQUdFTEFZ RVJTCitERUZfRExMX0ZOIChNYWdpY2tXYW5kICosIE1hZ2lja01lcmdlSW1hZ2VMYXllcnMsIChN YWdpY2tXYW5kICosIGNvbnN0IExheWVyTWV0aG9kKSk7CisjZWxzZQorREVGX0RMTF9GTiAoTWFn aWNrV2FuZCAqLCBNYWdpY2tGbGF0dGVuSW1hZ2VzLCAoTWFnaWNrV2FuZCAqKSk7CisjZW5kaWYK K0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBNYWdpY2tSZWFkSW1hZ2UsIChNYWdpY2tX YW5kICosIGNvbnN0IGNoYXIgKikpOworREVGX0RMTF9GTiAoTWFnaWNrQm9vbGVhblR5cGUsIE1h Z2lja1JlYWRJbWFnZUJsb2IsIChNYWdpY2tXYW5kICosIGNvbnN0IHZvaWQgKiwgY29uc3Qgc2l6 ZV90KSk7CitERUZfRExMX0ZOICh2b2lkICosIE1hZ2lja1JlbGlucXVpc2hNZW1vcnksICh2b2lk ICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBNYWdpY2tSb3RhdGVJbWFnZSwg KE1hZ2lja1dhbmQgKiwgY29uc3QgUGl4ZWxXYW5kICosIGNvbnN0IGRvdWJsZSkpOworREVGX0RM TF9GTiAoTWFnaWNrQm9vbGVhblR5cGUsIE1hZ2lja1NjYWxlSW1hZ2UsIChNYWdpY2tXYW5kICos IGNvbnN0IHNpemVfdCwgY29uc3Qgc2l6ZV90KSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29sZWFu VHlwZSwgTWFnaWNrU2V0RmlsZW5hbWUsIChNYWdpY2tXYW5kICosIGNvbnN0IGNoYXIgKikpOwor REVGX0RMTF9GTiAoTWFnaWNrQm9vbGVhblR5cGUsIE1hZ2lja1NldEltYWdlQmFja2dyb3VuZENv bG9yLCAoTWFnaWNrV2FuZCAqLCBjb25zdCBQaXhlbFdhbmQgKikpOworREVGX0RMTF9GTiAoTWFn aWNrQm9vbGVhblR5cGUsIE1hZ2lja1NldEl0ZXJhdG9ySW5kZXgsIChNYWdpY2tXYW5kICosIGNv bnN0IHNzaXplX3QpKTsKK0RFRl9ETExfRk4gKHZvaWQsIE1hZ2lja1dhbmRHZW5lc2lzLCAodm9p ZCkpOworREVGX0RMTF9GTiAodm9pZCwgTWFnaWNrV2FuZFRlcm1pbnVzLCAodm9pZCkpOworREVG X0RMTF9GTiAoTWFnaWNrV2FuZCAqLCBOZXdNYWdpY2tXYW5kLCAodm9pZCkpOworREVGX0RMTF9G TiAoUGl4ZWxJdGVyYXRvciAqLCBOZXdQaXhlbEl0ZXJhdG9yLCAoTWFnaWNrV2FuZCAqKSk7CitE RUZfRExMX0ZOIChQaXhlbFdhbmQgKiwgTmV3UGl4ZWxXYW5kLCAodm9pZCkpOworREVGX0RMTF9G TiAoZG91YmxlLCBQaXhlbEdldEFscGhhLCAoY29uc3QgUGl4ZWxXYW5kICopKTsKK0RFRl9ETExf Rk4gKHZvaWQsIFBpeGVsR2V0TWFnaWNrQ29sb3IsIChjb25zdCBQaXhlbFdhbmQgKiwgUGl4ZWxJ bmZvICopKTsKK0RFRl9ETExfRk4gKFBpeGVsV2FuZCAqKiwgUGl4ZWxHZXROZXh0SXRlcmF0b3JS b3csIChQaXhlbEl0ZXJhdG9yICosIHNpemVfdCAqKSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29s ZWFuVHlwZSwgUGl4ZWxTZXRJdGVyYXRvclJvdywgKFBpeGVsSXRlcmF0b3IgKiwgY29uc3Qgc3Np emVfdCkpOworREVGX0RMTF9GTiAodm9pZCwgUGl4ZWxTZXRQaXhlbENvbG9yLCAoUGl4ZWxXYW5k ICosIGNvbnN0IFBpeGVsSW5mbyAqKSk7CitERUZfRExMX0ZOICh2b2lkLCBQaXhlbFNldFJlZCwg KFBpeGVsV2FuZCAqLCBjb25zdCBkb3VibGUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIFBpeGVsU2V0 R3JlZW4sIChQaXhlbFdhbmQgKiwgY29uc3QgZG91YmxlKSk7CitERUZfRExMX0ZOICh2b2lkLCBQ aXhlbFNldEJsdWUsIChQaXhlbFdhbmQgKiwgY29uc3QgZG91YmxlKSk7CitERUZfRExMX0ZOIChN YWdpY2tCb29sZWFuVHlwZSwgUGl4ZWxTeW5jSXRlcmF0b3IsIChQaXhlbEl0ZXJhdG9yICopKTsK KworREVGX0RMTF9GTiAoRXhjZXB0aW9uSW5mbyAqLCBEZXN0cm95RXhjZXB0aW9uSW5mbywgKEV4 Y2VwdGlvbkluZm8gKikpOworREVGX0RMTF9GTiAoY2hhciAqLCBEZXN0cm95U3RyaW5nLCAoY2hh ciAqKSk7CitERUZfRExMX0ZOIChFeGNlcHRpb25JbmZvICosIEFjcXVpcmVFeGNlcHRpb25JbmZv LCAoKSk7CitERUZfRExMX0ZOIChjaGFyICoqLCBHZXRNYWdpY2tMaXN0LCAoY29uc3QgY2hhciAq LCBzaXplX3QgKiwgRXhjZXB0aW9uSW5mbyAqKSk7CisKK3N0YXRpYyBib29sCitpbml0X2ltYWdl bWFnaWNrX2Z1bmN0aW9ucyAodm9pZCkKK3sKKyAgSE1PRFVMRSBtYWdpY2t3YW5kLCBtYWdpY2tj b3JlOworCisgIC8qIE92ZXJyaWRlIEltYWdlTWdpY2sgc2V0dGluZ3MgdG8gdXNlIHRoZSBvbmUg cGFja2FnZWQgd2l0aCBFbWFjcy4gKi8KKyAgY2hhciBidWZbNTEyXTsKKyAgY2hhciAqdmFyX2Zv cm1hdFtdID0geworICAgICJNQUdJQ0tfQ09ORklHVVJFX1BBVEg9JXMvbGliL0ltYWdlTWFnaWNr LTcuMC4zL2NvbmZpZy1RMTZIRFJJLyIsCisgICAgIk1BR0lDS19DT0RFUl9NT0RVTEVfUEFUSD0l cy9saWIvSW1hZ2VNYWdpY2stNy4wLjMvbW9kdWxlcy1RMTZIRFJJL2NvZGVycy8iLAorICAgICJN QUdJQ0tfRklMVEVSX01PRFVMRV9QQVRIPSVzL2xpYi9JbWFnZU1hZ2ljay03LjAuMy9tb2R1bGVz LVExNkhEUkkvZmlsdGVycy8iLAorI2lmIDAKKyAgICAiTUFHSUNLX0RPQ1VNRU5UQVRJT05fUEFU SD0lcy9zaGFyZS9kb2MvSW1hZ2VNYWdpY2stNy8iLAorICAgICJNQUdJQ0tfRVhFQ1VUQUJMRV9Q QVRIPSVzL2JpbiIsCisgICAgIk1BR0lDS19TSEFSRV9QQVRIPSVzL3NoYXJlL0ltYWdlTWFnaWNr LTciLAorICAgICJNQUdJQ0tfU0hBUkVBUkNIX1BBVEg9JXMvbGliL0ltYWdlTWFnaWNrLTcuMC4z L2NvbmZpZy1RMTZIRFJJIiwKKyNlbmRpZgorICAgIE5VTEwKKyAgfTsKKyAgLyogRklYTUU6IGFz c3VtZXMgZW1hY3MgaXMgaW4gYmluIGRpcmVjdG9yeSAqLworICBjaGFyICplbWFjc19kaXIgPSBT U0RBVEEoRmRpcmVjdG9yeV9maWxlX25hbWUoRmV4cGFuZF9maWxlX25hbWUoYnVpbGRfc3RyaW5n KCIuLi8iKSwgVmludm9jYXRpb25fZGlyZWN0b3J5KSkpOworCisgIGZvciAoaW50IGkgPSAwOyB2 YXJfZm9ybWF0W2ldICE9IE5VTEw7IGkrKykgeworICAgIHNwcmludGYoYnVmLCB2YXJfZm9ybWF0 W2ldLCBlbWFjc19kaXIpOworICAgIHhwdXRlbnYoYnVmKTsKKyAgfTsKKworICBpZiAoIShtYWdp Y2tjb3JlID0gdzMyX2RlbGF5ZWRfbG9hZCAoUW1hZ2lja2NvcmUpKQorICAgICAgfHwgIShtYWdp Y2t3YW5kID0gdzMyX2RlbGF5ZWRfbG9hZCAoUW1hZ2lja3dhbmQpKSkKKyAgICByZXR1cm4gMDsK KworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgQ2xvbmVNYWdpY2tXYW5kKTsKKyAgTE9BRF9E TExfRk4gKG1hZ2lja3dhbmQsIERlc3Ryb3lNYWdpY2tXYW5kKTsKKyAgTE9BRF9ETExfRk4gKG1h Z2lja3dhbmQsIERlc3Ryb3lQaXhlbEl0ZXJhdG9yKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dh bmQsIERlc3Ryb3lQaXhlbFdhbmQpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNr Q3JvcEltYWdlKTsKKyNpZmRlZiBIQVZFX01BR0lDS0VYUE9SVElNQUdFUElYRUxTCisgIExPQURf RExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tFeHBvcnRJbWFnZVBpeGVscyk7CisjZW5kaWYKKyAg TE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja0dldEV4Y2VwdGlvbik7CisgIExPQURfRExM X0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tHZXRJbWFnZSk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3 YW5kLCBNYWdpY2tHZXRJbWFnZURlbGF5KTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1h Z2lja0dldEltYWdlRGlzcG9zZSk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tH ZXRJbWFnZUhlaWdodCk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tHZXRJbWFn ZVBhZ2UpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrR2V0SW1hZ2VTaWduYXR1 cmUpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrR2V0SW1hZ2VXaWR0aCk7Cisg IExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tHZXROdW1iZXJJbWFnZXMpOworI2lmZGVm IEhBVkVfTUFHSUNLTUVSR0VJTUFHRUxBWUVSUworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwg TWFnaWNrTWVyZ2VJbWFnZUxheWVycyk7CisjZWxzZQorICBMT0FEX0RMTF9GTiAobWFnaWNrd2Fu ZCwgTWFnaWNrRmxhdHRlbkltYWdlcyk7CisjZW5kaWYKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dh bmQsIE1hZ2lja1JlYWRJbWFnZSk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tS ZWFkSW1hZ2VCbG9iKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja1JlbGlucXVp c2hNZW1vcnkpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrUm90YXRlSW1hZ2Up OworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrU2NhbGVJbWFnZSk7CisgIExPQURf RExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tTZXRGaWxlbmFtZSk7CisgIExPQURfRExMX0ZOICht YWdpY2t3YW5kLCBNYWdpY2tTZXRJbWFnZUJhY2tncm91bmRDb2xvcik7CisgIExPQURfRExMX0ZO IChtYWdpY2t3YW5kLCBNYWdpY2tTZXRJdGVyYXRvckluZGV4KTsKKyAgTE9BRF9ETExfRk4gKG1h Z2lja3dhbmQsIE1hZ2lja1dhbmRHZW5lc2lzKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQs IE1hZ2lja1dhbmRUZXJtaW51cyk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBOZXdNYWdp Y2tXYW5kKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE5ld1BpeGVsSXRlcmF0b3IpOwor ICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTmV3UGl4ZWxXYW5kKTsKKyAgTE9BRF9ETExfRk4g KG1hZ2lja3dhbmQsIFBpeGVsR2V0QWxwaGEpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwg UGl4ZWxHZXRNYWdpY2tDb2xvcik7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQaXhlbEdl dE5leHRJdGVyYXRvclJvdyk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQaXhlbFNldEl0 ZXJhdG9yUm93KTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIFBpeGVsU2V0UGl4ZWxDb2xv cik7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQaXhlbFNldFJlZCk7CisgIExPQURfRExM X0ZOIChtYWdpY2t3YW5kLCBQaXhlbFNldEdyZWVuKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dh bmQsIFBpeGVsU2V0Qmx1ZSk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQaXhlbFN5bmNJ dGVyYXRvcik7CisKKyAgTE9BRF9ETExfRk4gKG1hZ2lja2NvcmUsIERlc3Ryb3lFeGNlcHRpb25J bmZvKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja2NvcmUsIERlc3Ryb3lTdHJpbmcpOworICBMT0FE X0RMTF9GTiAobWFnaWNrY29yZSwgQWNxdWlyZUV4Y2VwdGlvbkluZm8pOworICBMT0FEX0RMTF9G TiAobWFnaWNrY29yZSwgR2V0TWFnaWNrTGlzdCk7CisKKyAgcmV0dXJuIDE7Cit9CisKKyN1bmRl ZiBDbG9uZU1hZ2lja1dhbmQKKyN1bmRlZiBEZXN0cm95TWFnaWNrV2FuZAorI3VuZGVmIERlc3Ry b3lQaXhlbEl0ZXJhdG9yCisjdW5kZWYgRGVzdHJveVBpeGVsV2FuZAorI3VuZGVmIE1hZ2lja0Ny b3BJbWFnZQorI3VuZGVmIE1hZ2lja0V4cG9ydEltYWdlUGl4ZWxzCisjdW5kZWYgTWFnaWNrR2V0 RXhjZXB0aW9uCisjdW5kZWYgTWFnaWNrR2V0SW1hZ2UKKyN1bmRlZiBNYWdpY2tHZXRJbWFnZURl bGF5CisjdW5kZWYgTWFnaWNrR2V0SW1hZ2VEaXNwb3NlCisjdW5kZWYgTWFnaWNrR2V0SW1hZ2VI ZWlnaHQKKyN1bmRlZiBNYWdpY2tHZXRJbWFnZVBhZ2UKKyN1bmRlZiBNYWdpY2tHZXRJbWFnZVNp Z25hdHVyZQorI3VuZGVmIE1hZ2lja0dldEltYWdlV2lkdGgKKyN1bmRlZiBNYWdpY2tHZXROdW1i ZXJJbWFnZXMKKyN1bmRlZiBNYWdpY2tNZXJnZUltYWdlTGF5ZXJzCisjdW5kZWYgTWFnaWNrRmxh dHRlbkltYWdlcworI3VuZGVmIE1hZ2lja1JlYWRJbWFnZQorI3VuZGVmIE1hZ2lja1JlYWRJbWFn ZUJsb2IKKyN1bmRlZiBNYWdpY2tSZWxpbnF1aXNoTWVtb3J5CisjdW5kZWYgTWFnaWNrUm90YXRl SW1hZ2UKKyN1bmRlZiBNYWdpY2tTY2FsZUltYWdlCisjdW5kZWYgTWFnaWNrU2V0RmlsZW5hbWUK KyN1bmRlZiBNYWdpY2tTZXRJbWFnZUJhY2tncm91bmRDb2xvcgorI3VuZGVmIE1hZ2lja1NldEl0 ZXJhdG9ySW5kZXgKKyN1bmRlZiBNYWdpY2tXYW5kR2VuZXNpcworI3VuZGVmIE1hZ2lja1dhbmRU ZXJtaW51cworI3VuZGVmIE5ld01hZ2lja1dhbmQKKyN1bmRlZiBOZXdQaXhlbEl0ZXJhdG9yCisj dW5kZWYgTmV3UGl4ZWxXYW5kCisjdW5kZWYgUGl4ZWxHZXRBbHBoYQorI3VuZGVmIFBpeGVsR2V0 TWFnaWNrQ29sb3IKKyN1bmRlZiBQaXhlbEdldE5leHRJdGVyYXRvclJvdworI3VuZGVmIFBpeGVs U2V0SXRlcmF0b3JSb3cKKyN1bmRlZiBQaXhlbFNldFBpeGVsQ29sb3IKKyN1bmRlZiBQaXhlbFNl dFJlZAorI3VuZGVmIFBpeGVsU2V0R3JlZW4KKyN1bmRlZiBQaXhlbFNldEJsdWUKKyN1bmRlZiBQ aXhlbFN5bmNJdGVyYXRvcgorI3VuZGVmIERlc3Ryb3lFeGNlcHRpb25JbmZvCisjdW5kZWYgRGVz dHJveVN0cmluZworI3VuZGVmIEFjcXVpcmVFeGNlcHRpb25JbmZvCisjdW5kZWYgR2V0TWFnaWNr TGlzdAorCisjZGVmaW5lIENsb25lTWFnaWNrV2FuZCBmbl9DbG9uZU1hZ2lja1dhbmQKKyNkZWZp bmUgRGVzdHJveU1hZ2lja1dhbmQgZm5fRGVzdHJveU1hZ2lja1dhbmQKKyNkZWZpbmUgRGVzdHJv eVBpeGVsSXRlcmF0b3IgZm5fRGVzdHJveVBpeGVsSXRlcmF0b3IKKyNkZWZpbmUgRGVzdHJveVBp eGVsV2FuZCBmbl9EZXN0cm95UGl4ZWxXYW5kCisjZGVmaW5lIE1hZ2lja0Nyb3BJbWFnZSBmbl9N YWdpY2tDcm9wSW1hZ2UKKyNkZWZpbmUgTWFnaWNrRXhwb3J0SW1hZ2VQaXhlbHMgZm5fTWFnaWNr RXhwb3J0SW1hZ2VQaXhlbHMKKyNkZWZpbmUgTWFnaWNrR2V0RXhjZXB0aW9uIGZuX01hZ2lja0dl dEV4Y2VwdGlvbgorI2RlZmluZSBNYWdpY2tHZXRJbWFnZSBmbl9NYWdpY2tHZXRJbWFnZQorI2Rl ZmluZSBNYWdpY2tHZXRJbWFnZURlbGF5IGZuX01hZ2lja0dldEltYWdlRGVsYXkKKyNkZWZpbmUg TWFnaWNrR2V0SW1hZ2VEaXNwb3NlIGZuX01hZ2lja0dldEltYWdlRGlzcG9zZQorI2RlZmluZSBN YWdpY2tHZXRJbWFnZUhlaWdodCBmbl9NYWdpY2tHZXRJbWFnZUhlaWdodAorI2RlZmluZSBNYWdp Y2tHZXRJbWFnZVBhZ2UgZm5fTWFnaWNrR2V0SW1hZ2VQYWdlCisjZGVmaW5lIE1hZ2lja0dldElt YWdlU2lnbmF0dXJlIGZuX01hZ2lja0dldEltYWdlU2lnbmF0dXJlCisjZGVmaW5lIE1hZ2lja0dl dEltYWdlV2lkdGggZm5fTWFnaWNrR2V0SW1hZ2VXaWR0aAorI2RlZmluZSBNYWdpY2tHZXROdW1i ZXJJbWFnZXMgZm5fTWFnaWNrR2V0TnVtYmVySW1hZ2VzCisjZGVmaW5lIE1hZ2lja01lcmdlSW1h Z2VMYXllcnMgZm5fTWFnaWNrTWVyZ2VJbWFnZUxheWVycworI2RlZmluZSBNYWdpY2tGbGF0dGVu SW1hZ2VzIGZuX01hZ2lja0ZsYXR0ZW5JbWFnZXMKKyNkZWZpbmUgTWFnaWNrUmVhZEltYWdlIGZu X01hZ2lja1JlYWRJbWFnZQorI2RlZmluZSBNYWdpY2tSZWFkSW1hZ2VCbG9iIGZuX01hZ2lja1Jl YWRJbWFnZUJsb2IKKyNkZWZpbmUgTWFnaWNrUmVsaW5xdWlzaE1lbW9yeSBmbl9NYWdpY2tSZWxp bnF1aXNoTWVtb3J5CisjZGVmaW5lIE1hZ2lja1JvdGF0ZUltYWdlIGZuX01hZ2lja1JvdGF0ZUlt YWdlCisjZGVmaW5lIE1hZ2lja1NjYWxlSW1hZ2UgZm5fTWFnaWNrU2NhbGVJbWFnZQorI2RlZmlu ZSBNYWdpY2tTZXRGaWxlbmFtZSBmbl9NYWdpY2tTZXRGaWxlbmFtZQorI2RlZmluZSBNYWdpY2tT ZXRJbWFnZUJhY2tncm91bmRDb2xvciBmbl9NYWdpY2tTZXRJbWFnZUJhY2tncm91bmRDb2xvcgor I2RlZmluZSBNYWdpY2tTZXRJdGVyYXRvckluZGV4IGZuX01hZ2lja1NldEl0ZXJhdG9ySW5kZXgK KyNkZWZpbmUgTWFnaWNrV2FuZEdlbmVzaXMgZm5fTWFnaWNrV2FuZEdlbmVzaXMKKyNkZWZpbmUg TWFnaWNrV2FuZFRlcm1pbnVzIGZuX01hZ2lja1dhbmRUZXJtaW51cworI2RlZmluZSBOZXdNYWdp Y2tXYW5kIGZuX05ld01hZ2lja1dhbmQKKyNkZWZpbmUgTmV3UGl4ZWxJdGVyYXRvciBmbl9OZXdQ aXhlbEl0ZXJhdG9yCisjZGVmaW5lIE5ld1BpeGVsV2FuZCBmbl9OZXdQaXhlbFdhbmQKKyNkZWZp bmUgUGl4ZWxHZXRBbHBoYSBmbl9QaXhlbEdldEFscGhhCisjZGVmaW5lIFBpeGVsR2V0TWFnaWNr Q29sb3IgZm5fUGl4ZWxHZXRNYWdpY2tDb2xvcgorI2RlZmluZSBQaXhlbEdldE5leHRJdGVyYXRv clJvdyBmbl9QaXhlbEdldE5leHRJdGVyYXRvclJvdworI2RlZmluZSBQaXhlbFNldEl0ZXJhdG9y Um93IGZuX1BpeGVsU2V0SXRlcmF0b3JSb3cKKyNkZWZpbmUgUGl4ZWxTZXRQaXhlbENvbG9yIGZu X1BpeGVsU2V0UGl4ZWxDb2xvcgorI2RlZmluZSBQaXhlbFNldFJlZCBmbl9QaXhlbFNldFJlZAor I2RlZmluZSBQaXhlbFNldEdyZWVuIGZuX1BpeGVsU2V0R3JlZW4KKyNkZWZpbmUgUGl4ZWxTZXRC bHVlIGZuX1BpeGVsU2V0Qmx1ZQorI2RlZmluZSBQaXhlbFN5bmNJdGVyYXRvciBmbl9QaXhlbFN5 bmNJdGVyYXRvcgorI2RlZmluZSBEZXN0cm95RXhjZXB0aW9uSW5mbyBmbl9EZXN0cm95RXhjZXB0 aW9uSW5mbworI2RlZmluZSBEZXN0cm95U3RyaW5nIGZuX0Rlc3Ryb3lTdHJpbmcKKyNkZWZpbmUg QWNxdWlyZUV4Y2VwdGlvbkluZm8gZm5fQWNxdWlyZUV4Y2VwdGlvbkluZm8KKyNkZWZpbmUgR2V0 TWFnaWNrTGlzdCBmbl9HZXRNYWdpY2tMaXN0CisKKyNlbmRpZiAvKiAhV0lORE9XU05UICovCisK IC8qIExvZyBJbWFnZU1hZ2ljayBlcnJvciBtZXNzYWdlLgogICAgVXNlZnVsIHdoZW4gYSBJbWFn ZU1hZ2ljayBmdW5jdGlvbiByZXR1cm5zIHRoZSBzdGF0dXMgYE1hZ2lja0ZhbHNlJy4gICovCiAK QEAgLTg0MDIsNyArODc3NSw3IEBAIGltYWdlbWFnaWNrX2NvbXB1dGVfYW5pbWF0ZWRfaW1hZ2Ug KE1hZ2lja1dhbmQgKnN1cGVyX3dhbmQsIGludCBpbm8pCiAgICAgICBQaXhlbFdhbmQgKipzb3Vy Y2UsICoqZGVzdDsKICAgICAgIHNpemVfdCBzb3VyY2Vfd2lkdGgsIHNvdXJjZV9oZWlnaHQ7CiAg ICAgICBzc2l6ZV90IHNvdXJjZV9sZWZ0LCBzb3VyY2VfdG9wOwotICAgICAgTWFnaWNrUGl4ZWxQ YWNrZXQgcGl4ZWw7CisgICAgICBQaXhlbEluZm8gcGl4ZWw7CiAgICAgICBEaXNwb3NlVHlwZSBk aXNwb3NlOwogICAgICAgcHRyZGlmZl90IGxpbmVzID0gMDsKIApAQCAtODQ2Nyw3ICs4ODQwLDcg QEAgaW1hZ2VtYWdpY2tfY29tcHV0ZV9hbmltYXRlZF9pbWFnZSAoTWFnaWNrV2FuZCAqc3VwZXJf d2FuZCwgaW50IGlubykKICAgICAgICAgICAgICAgaWYgKGRpc3Bvc2UgPT0gQmFja2dyb3VuZERp c3Bvc2UgfHwgUGl4ZWxHZXRBbHBoYSAoc291cmNlW3hdKSkKIAkJewogICAgICAgICAgICAgICAg ICAgUGl4ZWxHZXRNYWdpY2tDb2xvciAoc291cmNlW3hdLCAmcGl4ZWwpOwotCQkgIFBpeGVsU2V0 TWFnaWNrQ29sb3IgKGRlc3RbeCArIHNvdXJjZV9sZWZ0XSwgJnBpeGVsKTsKKyAgICAgICAgICAg ICAgICAgIFBpeGVsU2V0UGl4ZWxDb2xvciAoZGVzdFt4ICsgc291cmNlX2xlZnRdLCAmcGl4ZWwp OwogCQl9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgUGl4ZWxTeW5jSXRlcmF0b3IgKGRlc3Rf aXRlcmF0b3IpOwpAQCAtODUxMiw3ICs4ODg1LDcgQEAgaW1hZ2VtYWdpY2tfbG9hZF9pbWFnZSAo c3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAgTWFnaWNrV2FuZCAqaW1hZ2Vf d2FuZDsKICAgUGl4ZWxJdGVyYXRvciAqaXRlcmF0b3I7CiAgIFBpeGVsV2FuZCAqKnBpeGVscywg KmJnX3dhbmQgPSBOVUxMOwotICBNYWdpY2tQaXhlbFBhY2tldCAgcGl4ZWw7CisgIFBpeGVsSW5m byAgcGl4ZWw7CiAgIExpc3BfT2JqZWN0IGltYWdlOwogICBMaXNwX09iamVjdCB2YWx1ZTsKICAg TGlzcF9PYmplY3QgY3JvcDsKQEAgLTg4ODksNiArOTI2MiwxMSBAQCBhbmQgYGltYWdlbWFnaWNr LXR5cGVzLWluaGliaXQnLiAgKi8pCiAgIGNoYXIgKippbXR5cGVzOwogICBzaXplX3QgaTsKIAor I2lmIFdJTkRPV1NOVAorICAgICAgICAgIGlmICghaW5pdF9pbWFnZW1hZ2lja19mdW5jdGlvbnMg KCkpCisgICAgICAgICAgICByZXR1cm4gUW5pbDsKKyNlbmRpZgorCiAgIGV4ID0gQWNxdWlyZUV4 Y2VwdGlvbkluZm8oKTsKICAgaW10eXBlcyA9IEdldE1hZ2lja0xpc3QgKCIqIiwgJm51bWYsIGV4 KTsKICAgRGVzdHJveUV4Y2VwdGlvbkluZm8oZXgpOwpAQCAtOTkwMiwxMiArMTAzNDcsMTYgQEAg bm9uLW51bWVyaWMsIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGxpbWl0IG9uIHRoZSBzaXplIG9mIGlt YWdlcy4gICovKTsKICNpZiBkZWZpbmVkIChIQVZFX0lNQUdFTUFHSUNLKQogICBERUZTWU0gKFFp bWFnZW1hZ2ljaywgImltYWdlbWFnaWNrIik7CiAgIEFERF9JTUFHRV9UWVBFIChRaW1hZ2VtYWdp Y2spOworI2lmIGRlZmluZWQgSEFWRV9OVEdVSSAmJiAhZGVmaW5lZCBDWUdXSU4KKyAgREVGU1lN IChRbWFnaWNrd2FuZCwgIm1hZ2lja3dhbmQiKTsKKyAgREVGU1lNIChRbWFnaWNrY29yZSwgIm1h Z2lja2NvcmUiKTsKKyNlbmRpZiAvKiBIQVZFX05UR1VJICovCiAjZW5kaWYKIAogI2lmIGRlZmlu ZWQgKEhBVkVfUlNWRykKICAgREVGU1lNIChRc3ZnLCAic3ZnIik7CiAgIEFERF9JTUFHRV9UWVBF IChRc3ZnKTsKLSNpZmRlZiBIQVZFX05UR1VJCisjaWYgZGVmaW5lZCAoSEFWRV9OVEdVSSkgJiYg IWRlZmluZWQgKENZR1dJTikKICAgLyogT3RoZXIgbGlicmFyaWVzIHVzZWQgZGlyZWN0bHkgYnkg c3ZnIGNvZGUuICAqLwogICBERUZTWU0gKFFnZGtfcGl4YnVmLCAiZ2RrLXBpeGJ1ZiIpOwogICBE RUZTWU0gKFFnbGliLCAiZ2xpYiIpOwo= --001a1140a1009899330545eb526f-- From MAILER-DAEMON Thu Jan 12 15:14:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRllB-0008ED-4u for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 15:14:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRll8-0008CM-KX for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:14:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRll7-0003M5-K8 for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:14:06 -0500 Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]:35604) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRll3-0003Jc-Kx; Thu, 12 Jan 2017 15:14:01 -0500 Received: by mail-wm0-x230.google.com with SMTP id r126so35871432wmr.0; Thu, 12 Jan 2017 12:14:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=C1jWUEtI12OnFjaoo7OU0gWK6wXDjuN68UkEpWxb2dA=; b=TuN+dquIzATmI//4afDPFJs4Rw849ZHD6/bmOFY8DiX4/LYLcGKiLW3SU+ExUrIovU i+0ByQl7k+6N8DZFzKxk5gz1LDVpi7IgOyin36PQeVcAOFuLyCtzUai6a5EPUs8FHAnq KwIH/7zl1icPQCltc7YR/xSViv3MkPhLO3VfBYNgbPj3dr0AG6MdQyESCWwCdEytvbLZ PAKn8pK6Vrv/lOVKH6pxRdvSepfxksGZhN2E+hzKCpPw3FJW4chALIMBu95YRlUbex07 9gc3cBKz8YR45KBAiniFQxZh4Yx0SJ/Odv6jAKGWY/2mNfh2py50jW3kKwTGwfB1YrGS EP3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=C1jWUEtI12OnFjaoo7OU0gWK6wXDjuN68UkEpWxb2dA=; b=tlUHDVacou/ut3CRv77KehWUqi2E+/TbMDP1eh3OIEsUWBqDv4Gaz6hd96PglaEs4b W2P3BiS/mgADhgP+rtzx2VzgVdvyoI0gaGJ1iU5MFfFCK6cloi+v76RgozdwJgNdbGY+ itFWtpxNvRYsanylXp6AwJKvamOEl73kk5pIt205jpkH0/CV5T7v03i+dXwEAex6vVgF ChjsXAw2VSjzgay0LLKqwpRTNTTIDAkFWvp4g0aeJT9xRYQVRkUndg1x0vY/gmKSoEzQ hHvi+25hwEntZMo06QkWbuljUCjZx9RLswshc/aiTaypzvA6S/PO/9zU8ugZW0QDIK0+ CsRw== X-Gm-Message-State: AIkVDXJH2Qbfu+z3uobXtX5F8ZztFCqfRi/tsbNiUe6xGv9XK0IlOtqnLFeSGxtXcmhTgBydMdOAd+ksPJP9QQ== X-Received: by 10.28.54.13 with SMTP id d13mr10336792wma.133.1484252040442; Thu, 12 Jan 2017 12:14:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Thu, 12 Jan 2017 12:13:40 -0800 (PST) In-Reply-To: References: <18005ddf-2b73-4ffc-31df-83f081e78603@alice.it> From: Fabrice Popineau Date: Thu, 12 Jan 2017 21:13:40 +0100 Message-ID: Subject: Re: Emacs and ImageMagick-7 issues To: sds@gnu.org Cc: Emacs developers Content-Type: multipart/alternative; boundary=001a1143678ea0b8920545eb5b45 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 20:14:07 -0000 --001a1143678ea0b8920545eb5b45 Content-Type: text/plain; charset=UTF-8 I forgot those few lines : diff --git a/configure.ac b/configure.ac index 4e80eed..c99477a 100644 --- a/configure.ac +++ b/configure.ac @@ -2407,7 +2406,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" if test "${with_imagemagick}" != "no"; then ## 6.3.5 is the earliest version known to work; see Bug#17339. ## 6.8.2 makes Emacs crash; see Bug#13867. - IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2" + IMAGEMAGICK_MODULE="MagickWand >= 6.3.5 MagickWand != 6.8.2" EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE]) AC_SUBST(IMAGEMAGICK_CFLAGS) AC_SUBST(IMAGEMAGICK_LIBS) Regards, Fabrice --001a1143678ea0b8920545eb5b45 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I forgot those few lines :

diff --git a/configure.ac b/configure.ac<= /div>
index 4e80eed..c99477a 100644
--- a/configure.ac
@@ -2407,7 +2406,7 @@ if test &q= uot;${HAVE_X11}" =3D "yes" || test "${HAVE_NS}" = =3D "yes" || test "${HAVE_W32}"
=C2=A0 =C2=A0if test "${with_imagemagick}" !=3D "no= "; then
=C2=A0 =C2=A0 =C2=A0## 6.3.5 i= s the earliest version known to work; see Bug#17339.
=C2=A0 =C2=A0 =C2=A0## 6.8.2 makes Emacs crash; see Bug#13867.
- =C2=A0 =C2=A0IMAGEMAGICK_MODULE=3D"Wan= d >=3D 6.3.5 Wand !=3D 6.8.2"
+ =C2= =A0 =C2=A0IMAGEMAGICK_MODULE=3D"MagickWand >=3D 6.3.5 MagickWand != =3D 6.8.2"
=C2=A0 =C2=A0 =C2=A0EMACS_C= HECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE])
=C2=A0 =C2=A0 =C2=A0AC_SUBST(IMAGEMAGICK_CFLAGS)
=C2=A0 =C2=A0 =C2=A0AC_SUBST(IMAGEMAGICK_LIBS)

=
Regards,

Fabrice

--001a1143678ea0b8920545eb5b45-- From MAILER-DAEMON Thu Jan 12 15:27:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRly7-00045h-3v for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 15:27:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRly4-000408-Rs for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:27:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRlxz-0000Re-Qc for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:27:28 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:38819) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRlxz-0000Qo-KG; Thu, 12 Jan 2017 15:27:23 -0500 Received: by mail-wm0-x232.google.com with SMTP id r144so38662435wme.1; Thu, 12 Jan 2017 12:27:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=sPdYeH7qhYn8KRloKZBEfBQiWs9HDGHrHz2FI5nXIGw=; b=M2Mu1nKOXUBjK8poDIDbDibiWFXclIUChGqfBGpK0Opu8XKNmSZDM9GY1cjRXz8UHJ RI5T/tGrkvoNy8/1wB2Ubwp2axJpJ53OMdjgqhNvgEAVQYx/E3IGxAKUA3OcPk7E4KUx dSH7kbf45UH+zJM/IgRc9/cIke/96sJ46ef82HGXj6NBUxCSrs60AvIKEZJldEem2mdj 35XoNgTSG7kQ7CVxec9pf+Imcei23sUOEfnPooomFKMywNP5uWJ4fAGCOCHnTuwKKEZL hojE8IMLf8M3sYfTp4AI+dtfAlxFj1yA7VW4LSSbTaz5knYdTiF08AiAj7Z45RyUmf9d 6Nkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=sPdYeH7qhYn8KRloKZBEfBQiWs9HDGHrHz2FI5nXIGw=; b=uEPYEl/HVEIdFOpaKAWE2MWmequAwsiNiemffr9tn31z6bmol33jms6i/1neVIIUxl UI8ODnuDPFJaezwuHXlS8bihfqipTfwv1qfygI1xUjfHiLv0dFlRZuzIdgvfZ6bV8sf/ tMhpjDwcktyVDqQvVp/QdIxozVtv7XGtbG+dXJDnIRE/mbXm/zHr5QZZrzytjUKn/7m4 F2m5u7nYh95HC8k7u1OenVCy7qpCCRIe2yyDTpCIGLiVM+MvngEHz4Wlwj/OrN1Pz0Tr 4oRZThtvI+Xzeu4SLRmX2AlNwvFy5Kaz9p6Db/hCnlsUyscw5AQLM16Hx6wh/9u2rWl5 1xCA== X-Gm-Message-State: AIkVDXIBgZRY8qg1EEg4hLaO202JXjoAaNR+itJnZb1741FgYAcL8HD0v9q85d6CufN0Og== X-Received: by 10.223.166.170 with SMTP id t39mr9894703wrc.15.1484252842320; Thu, 12 Jan 2017 12:27:22 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id 14sm5352715wmk.1.2017.01.12.12.27.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 12 Jan 2017 12:27:21 -0800 (PST) From: Edward John Steere To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <83h954cbaa.fsf@gnu.org> Date: Thu, 12 Jan 2017 22:27:00 +0200 In-Reply-To: <83h954cbaa.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 12 Jan 2017 21:45:33 +0200") Message-ID: <87pojsm3cb.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 20:27:29 -0000 >> From: Edward John Steere >> Date: Thu, 12 Jan 2017 21:32:36 +0200 >> >> May I contribute my changes to a branch on the Savannah repository for >> review/commentary? > > Yes, of course. Thanks for working on this. Great I'll get to work on it and follow up when it's ready. From MAILER-DAEMON Thu Jan 12 15:40:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRmAX-0004A0-HT for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 15:40:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRmAV-000491-Kx for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:40:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRmAR-0005K9-7d for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:40:19 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:37674) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRmAR-0005Jd-1u for emacs-devel@gnu.org; Thu, 12 Jan 2017 15:40:15 -0500 Received: by mail-wm0-x233.google.com with SMTP id c206so39328552wme.0 for ; Thu, 12 Jan 2017 12:40:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=iujXnPfKR0tfG8pH5lbyxrdYneEy8wtuaKKsHO5zJdE=; b=mcW8OBaRSqwM230z91TTpFmWuWWs1NKceB0ujzGQbkI/0kwcsX3ze2c2MwSnNp6Bbk iMIS34ALqIF8NyxVEYoPX5h1zh4X8kYfPL+pUzvgLFrNRoyKtodzZYL2105Pc7KCScuf AdM5rl2IWXkOf9FzK0TmbNk1mWYwJn13fKC3Z3d56rADZgUywLr/Lqj01Y/+Foo0zkUI /ecwHRSMPifLJKtavmItGEVjnhEZXUQJOLlE3XFHRivnobfJIyjdvo3yWPBu0SEweXDw Nf3P/GiOIdj+YNcJ9haFfCR60hPrTz1CTVVDl732FRQHg0zW59gZWFMMlatSoYDCgA11 g1XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=iujXnPfKR0tfG8pH5lbyxrdYneEy8wtuaKKsHO5zJdE=; b=nlNznVk49Ua22GeCyjxR2RjNqrqgkHCU5xxNVzOtENoTCoCp78WQ1tcfeYIgWo3xGz +DqN3YPqU/lLZWxoW7aamrtl6G3hD26DmYsH5bztpsMuy9i7953zMPQR1k6om+N+w2Ri Uli6PfuNYRP8ra0Ipd3ud+H0rF0LzrLmBmKcoGr3zW8gymqfYncJBH4/jM5h9NJ6TSdq qB5J9XRswNU4wmBr247OIDRo0tX+AdbFdDi5+Vr+b3RVAvPIi1kHaiGR8CzrnFAYlqVv OXsD3PhHrD+FuT5IdJycLLTMnzCqMr82Ic/bRTH0bMb8An0Ocr8O0M/Z0o1lTCOMXmFP 3SEQ== X-Gm-Message-State: AIkVDXLieYCHnBFwZMb1b+6PlsEkVdT2DxqbXQDMgugVx9kzRDUWjdyLqQQLQjbkAPAOmQ== X-Received: by 10.28.136.68 with SMTP id k65mr14745wmd.48.1484253613828; Thu, 12 Jan 2017 12:40:13 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id c187sm5363665wmd.13.2017.01.12.12.40.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 12 Jan 2017 12:40:13 -0800 (PST) From: Edward John Steere To: Bastian Beischer Cc: Emacs-Devel Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> Date: Thu, 12 Jan 2017 22:40:07 +0200 In-Reply-To: (Bastian Beischer's message of "Thu, 12 Jan 2017 21:10:14 +0100") Message-ID: <87lgugm2qg.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 20:40:20 -0000 Hi Bastian, > It's great to hear that you have been working on this. I'm also very > interested in getting CEDET upstream and CEDET in emacs synchronized > again. Please see also this bug report: > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23792 I remember seeing your post a while ago, but had forgotten about it. I'll take a look now. > This also contains a patch for the emacs sources which I've come up > with half a year ago, but it's probably incomplete and even wrong in > places. But maybe we can compare what we did. > > Do you have a git repository cloned from CEDET upstream which contains > your work somewhere? Or did you start by modifying the built-in CEDET > in emacs? I tried various approaches (with varying degrees of success) before going for something rather brute force: I diffed every file in CEDET from Emacs core to it's corresponding file in upstream (creating a diff file per file-pair) and applied the changes to upstream by hand. At the moment my changes are living on a private repository. I'd like to do some tidying up with regards to commits before I make them available. I'll get to work on that tomorrow. > Cheers > Bastian Kind regards, Edward Steere From MAILER-DAEMON Thu Jan 12 16:11:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRmeM-0001UN-CN for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 16:11:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRmeJ-0001Tt-Tr for emacs-devel@gnu.org; Thu, 12 Jan 2017 16:11:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRmeG-0005CZ-PA for emacs-devel@gnu.org; Thu, 12 Jan 2017 16:11:07 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:58147) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRmeG-0005BW-KA for emacs-devel@gnu.org; Thu, 12 Jan 2017 16:11:04 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 58A1C20C76 for ; Thu, 12 Jan 2017 16:11:01 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Thu, 12 Jan 2017 16:11:01 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h= content-type:date:from:message-id:mime-version:subject:to :x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=yAZ T8OT8zjkKy+a2aUOEkwSW5n0=; b=NPLszFGLVCU5SgiPCQL1r6OdQVFri4eK4dw SUS7iMZYTVADSQ/k2sMpw0dbLHDlrwByJZIT+7aG86kaWD5zBRXoIlsZvLKLBD4L NfSaKtbL8marv+hQ5hFoSenxeQUSzyTWT2ok5xEi3ZcCAkRwyJProBaOfM1o8F5O WNXpKsew= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=smtpout; bh=yAZT8OT8zjkKy+a2aUOEkwSW5n0=; b=S5WOE E9vX2GeOGGzKDIwV4g2H10GTixi4V7Q9wOQgbTcka6m0G5jLQlvmTWVLnumGozsE KJc3gHnbfqBogbxBIexv+OvcKD+oebLxuVIQq1Ri4eViVem6OT3UoYXrV2QEMO2P +4w8XaFZpP+ympuynKexbQ7XS61geI2aDXFBfg= X-ME-Sender: X-Sasl-enc: drDO9PhInB7Hv5+QIwY9Zv3+8l50Ch0ITpbLM+0KBc2e 1484255460 Received: from genserv (unknown [5.150.202.248]) by mail.messagingengine.com (Postfix) with ESMTPA id B98A47E188 for ; Thu, 12 Jan 2017 16:11:00 -0500 (EST) From: Joakim Jalap To: emacs-devel@gnu.org Subject: Overlay tree. Stuck again Date: Thu, 12 Jan 2017 22:10:44 +0100 Message-ID: <874m14rnl7.fsf@fastmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2017 21:11:09 -0000 Hello Emacs Devs. As ever, I've been hacking on the overlay tree branch. Now it's turned sour again though. For those it may concern this is the problem: The overlays in the tree are ordered first by their start position, if that is the same we look at the end position, if that is also equal we order by memory address. However the nodes can be updated "externally" from the trees point of view. For example if there is a delete in the buffer those overlays which were in the deleted portion of the buffer will now be crowded at the from_char of the delete. But those could have any address, so they will probably be out of order. The problem is how to get them in order again. As far as I've gotten is to gather all the affected nodes (which I think are only those of length zero which start (and end) at from_char) into an array and sort that. But I can't figure out how to get them into the tree again while keeping all the pointers correct. My feeble attempts can be seen at https://github.com/jockej/emacs-mirror1, branch arne-without-parent. I've been wrestling with this for a while now. I'm starting to think this whole approach is... not so good. But if anyone has a brilliant idea I'd be glad to hear it :) Happy hacking! -- Joakim From MAILER-DAEMON Thu Jan 12 20:33:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRqkK-0006Vh-64 for mharc-emacs-devel@gnu.org; Thu, 12 Jan 2017 20:33:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRqkH-0006VQ-I3 for emacs-devel@gnu.org; Thu, 12 Jan 2017 20:33:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRqkE-00062y-74 for emacs-devel@gnu.org; Thu, 12 Jan 2017 20:33:33 -0500 Received: from mout.kundenserver.de ([212.227.126.133]:63706) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cRqkD-00061Q-Sa for emacs-devel@gnu.org; Thu, 12 Jan 2017 20:33:30 -0500 Received: from [18.111.103.8] ([18.111.103.8]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.168]) with ESMTPSA (Nemesis) id 0M53xy-1cehw01BqY-00zFrB for ; Fri, 13 Jan 2017 02:33:26 +0100 Subject: Re: How does one set up a syntax table for (* and //? To: emacs-devel@gnu.org References: <18d576b9-fe12-c09a-32f9-ad0da86f2d27@gmail.com> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: Date: Thu, 12 Jan 2017 20:33:19 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="uJ1oTeP2BHgohPvwntUdi1eEhxmntVTC7" X-Provags-ID: V03:K0:EC0WxjqjLa5CZiYWXlLijZ3ZXowI3n2AvYMHmsbJIKDl9Nhazxh osu1EOY4xKPM2l7wEaPQBCLTyGwL4/t6jEj00zoEEQ90keoHtIoBHYloYnDSHLq65x+HbFo QrVHaDSWxMXhwmZvViyA54+hy5MKuR5+vjZmMCw2PhTVUbaw/BCA83cIVdmBHNTXBA+MICT MHYC+u+PTXji+f6XAzTyA== X-UI-Out-Filterresults: notjunk:1;V01:K0:PMC7VQslFIE=:MUJ965Lh3K4vEBHwfvqVf2 wkXtAhFmXaptrVNjZoGzDAWe7+CXwtb99cK6EibOEeWZ+JGGXV/i9YF2CBxg9GJ+8OM3O+y3X jxAWzTdAbX5aqFBftFq2SFQiEcaOhrcZZmIpptAOQP5ptE9bKSg4rDAbkWP6O7Ud0cJ8si1iZ ztkaoEvFjOlP3WJ9WDj978R3FVT8s5J2gmqKadTyPzO3p1vAs0Y6VD4tAuB4uNcUlb4f+tcvg 5Fugh4sjSPpha3LGJy9bzKu09SB/G0n2eibMzKJbk8y+uB3KoVftLUhEdu2tjp7Nb9YtBfkot r6LnOhT7W6/59OpxqCECK8YHSzJ+JLtDRg6uWIFLWdX7kzjnMkAnBw/2PGfM7AUVnqlhwh20l UHzDitXasrFHWCSXANQ3qfbygnESXr9NeKqiW4ed8tdShZKVP2/D+2pMW9V84m9Hry0HDd+NC hIz4AGHExQSSX1YzTsn9bugSLjP2JT9Tg0nEGjnitiLyGjTRh3BPPJNssYGrwCGwvHlhwRTKk RcxXi6Mw1DUE0SN6pH0xg5JJnbbULN1ibJ8TNBdJuKtPkkSbDtSWJf4uMjmapBFuh0jEQLmcs 1lUsUvGKJWY04caeZFgWHZhvBkKtWn+Q9dq8cug+c72Jocv/siUuhPRZ2aWtOAcB70eggeOUK 0zkQ4VUIjF+9TjYYqBDH3IZ/Tg10Sj4mu8hcexm2EiVpGsNj9svv5+ZiFa70WWhljjPQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.133 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 01:33:34 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --uJ1oTeP2BHgohPvwntUdi1eEhxmntVTC7 Content-Type: multipart/mixed; boundary="OTd59vGUGJotLeKXdKr4UDarfhWpOPCQJ"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: emacs-devel@gnu.org Message-ID: Subject: Re: How does one set up a syntax table for (* and //? References: <18d576b9-fe12-c09a-32f9-ad0da86f2d27@gmail.com> In-Reply-To: --OTd59vGUGJotLeKXdKr4UDarfhWpOPCQJ Content-Type: multipart/mixed; boundary="------------ABDE126075D4834782812FBE" This is a multi-part message in MIME format. --------------ABDE126075D4834782812FBE Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 2017-01-12 08:55, Stefan Monnier wrote: >> Is there code that depends on this (a mixing with c)? If not, could we= >> consider changing the semantics of "c" instead? This mixing isn't clea= r from >> the documentation, AFAICT. >=20 > `c` is a fairly recent introduction (introduced for opascal.el, FWIW), > so maybe it's not too late to change its semantics. That would be nice :) In the meantime, I implemented Noam's suggestion in= the attached patch. Cl=E9ment. --------------ABDE126075D4834782812FBE Content-Type: text/x-diff; name="0001-Use-a-syntax-propertize-function-to-properly-handle-.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename*0="0001-Use-a-syntax-propertize-function-to-properly-handle-.pa"; filename*1="tch" =46rom 3a9be64827bbed8e34d38803b5c44d8d4f6cd688 Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Cl=3DC3=3DA9ment=3D20Pit--Claudel?=3D Date: Thu, 12 Jan 2017 20:26:04 -0500 Subject: [PATCH] Use a syntax-propertize-function to properly handle '(//= ' comments Fixes #42. --- fstar-mode.el | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/fstar-mode.el b/fstar-mode.el index b9d1899..8582f9e 100755 --- a/fstar-mode.el +++ b/fstar-mode.el @@ -423,15 +423,30 @@ If MUST-FIND-TYPE is nil, the :type part is not nec= essary." ;; Comments and strings (modify-syntax-entry ?\\ "\\" table) (modify-syntax-entry ?\" "\"" table) - (modify-syntax-entry ?* ". 23" table) - (modify-syntax-entry ?/ ". 12b" table) - (modify-syntax-entry ?\n "> b" table) - (modify-syntax-entry ?\^m "> b" table) - (modify-syntax-entry ?\( "()1n" table) - (modify-syntax-entry ?\) ")(4n" table) + ;; =E2=80=98/=E2=80=99 is handled by a `syntax-propertize-function'.= For background on this + ;; see http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg0014= 4.html. + ;; The comment enders are left here, since they don't match the =E2=80= =98(*=E2=80=99 openers. + ;; (modify-syntax-entry ?/ ". 12c" table) + (modify-syntax-entry ?\n ">" table) + (modify-syntax-entry ?\^m ">" table) + (modify-syntax-entry ?\( "()1nb" table) + (modify-syntax-entry ?* ". 23b" table) + (modify-syntax-entry ?\) ")(4nb" table) table) "Syntax table for F*.") =20 +(defconst fstar-mode-syntax-propertize-function + (let ((opener-1 (string-to-syntax ". 1")) + (opener-2 (string-to-syntax ". 2"))) + (syntax-propertize-rules + ("//" (0 (let* ((pt (match-beginning 0)) + (state (syntax-ppss pt))) + (goto-char (match-end 0)) ;; syntax-ppss adjusts point + (unless (or (nth 3 state) (nth 4 state)) + (put-text-property pt (+ pt 1) 'syntax-table opener-1)= + (put-text-property (+ pt 1) (+ pt 2) 'syntax-table ope= ner-2) + (ignore (goto-char (point-at-eol)))))))))) + ;;; Mode map =20 (defvar fstar-mode-map @@ -1228,7 +1243,8 @@ into blocks; process it as one large block instead.= " (setq-local comment-continue " *") (setq-local comment-end "*)") (setq-local comment-start-skip "\\(//+\\|(\\*+\\)[ \t]*") - (setq-local font-lock-syntactic-face-function #'fstar-syntactic-face-f= unction)) + (setq-local font-lock-syntactic-face-function #'fstar-syntactic-face-f= unction) + (setq-local syntax-propertize-function fstar-mode-syntax-propertize-fu= nction)) =20 ;;; Main mode =20 --=20 2.7.4 --------------ABDE126075D4834782812FBE-- --OTd59vGUGJotLeKXdKr4UDarfhWpOPCQJ-- --uJ1oTeP2BHgohPvwntUdi1eEhxmntVTC7 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 iQIcBAEBCAAGBQJYeC5kAAoJEPqg+cTm90wjVqUQALGcD/pRfO9ORFB9pmjgH1e8 myHIQJ159kp+JcOjminGI0TbxVkCH+3XBVRUltIfQaca8KWTYMvMe7WRhd6C4YCK DTQsjBk5rW827cg4bkEvkrDmBaK4zIcFIkZe13MjnfT1uQmJR37D5o1w+/S98LyP a75DNdTxsXH2KPnNFiZcIKUBuNknwswRwd+9pNEU14PSvFg8tTDMs6jQb5uGLqWi 0y9XTcpJuMX+4n/eTlv6DlPm0RMaZMkH3DOoFFlldAJ3XM5fjOAfr2o2I8mySGDF R9tk4uCmCuu1GXFK0GXiHxkhLq2oi35y/K0CVqQFIOziZXO3FBmrclox89smjAii 8Bix2KWLzo0uzUUj1TkdzihYKzN6TPyHBvwt389Q93eSukwCJFrTpBRp747+/1LH t+noHSu6g/zhnh7FmGP4w4JTuiyA9MAS4eQcbQpE/i+YZCxrfO1n2U0J1ukr9NoK zV2Fjwwuk35wNeAkrm3TSOx5kZW3XMyUnZSnq9K2jJduGg6EZjMy1P9r0BIVa7xL QqX0xO8TFcVBaItqSqZk0hpzFJZgmDNj/70mN99nVuKIkF98LY+a6A0zGUgFtZK5 S6S6kgZF6Pv9Lp4U4bH/Eurel3fAX3xQ+QGcmUTR+uqzZihUfOtw4lTPjsHaOqmT P361t1LIut0l5nAlmE4n =1m0c -----END PGP SIGNATURE----- --uJ1oTeP2BHgohPvwntUdi1eEhxmntVTC7-- From MAILER-DAEMON Fri Jan 13 02:21:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRwAj-0005qn-CL for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 02:21:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33201) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRwAf-0005nn-0H for emacs-devel@gnu.org; Fri, 13 Jan 2017 02:21:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRwAZ-0007gV-UB for emacs-devel@gnu.org; Fri, 13 Jan 2017 02:21:08 -0500 Received: from gproxy8-pub.mail.unifiedlayer.com ([67.222.33.93]:56840) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cRwAZ-0007bH-Fm for emacs-devel@gnu.org; Fri, 13 Jan 2017 02:21:03 -0500 Received: (qmail 27933 invoked by uid 0); 13 Jan 2017 07:20:42 -0000 Received: from unknown (HELO CMOut01) (10.0.90.82) by gproxy8.mail.unifiedlayer.com with SMTP; 13 Jan 2017 07:20:42 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by CMOut01 with id XjLb1u00F2f2jeq01jLebi; Fri, 13 Jan 2017 00:20:41 -0700 X-Authority-Analysis: v=2.1 cv=V+Huj4Xi c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=_TmCtjw2wG6EYjFO-OsA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From; bh=032c8je1ZVpoUoldBGuac/PGDHZo0v4oGII5ln//EpY=; b=ntoPQW7cohNVw4lfTUK9X8oJFF Lk/+KExDU+krrrDNIGx3g1uRbGmOo3kOK1pnkMg3XgBv7PiXVjxl5I7f1yialt6WFaeRmzIjAfo2U rRQhDoH1EFCrZr/Twq4wpQYVK; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:48986 helo=bapiya) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.86_1) (envelope-from ) id 1cRwA8-0007z4-AD; Fri, 13 Jan 2017 00:20:36 -0700 From: Tom Tromey To: Emacs discussions Subject: correct way to install a bug fix? X-Attribution: Tom Date: Fri, 13 Jan 2017 00:20:33 -0700 Message-ID: <87eg074e9q.fsf@tromey.com> MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cRwA8-0007z4-AD X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (bapiya) [174.16.146.181]:48986 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.222.33.93 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 07:21:10 -0000 Hi. I have a few Emacs bug fixes that I would like to push. However, I don't know the correct way to do this. On the one hand, admin/notes/git-workflow seems to advise pushing to master and then cherry-picking to the release branch, adding "Backport:" to the commit message. On the other hand, admin/notes/repo says that fixes should be installed on the release branch and then someone will sync them to master; and it says that installing manually on more than one branch is bad. Which should I do? thanks, Tom From MAILER-DAEMON Fri Jan 13 03:08:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRwuk-0002Ne-EY for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 03:08:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41042) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRwui-0002Lj-MT for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:08:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRwuh-00079g-W1 for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:08:44 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51160) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRwuc-00078e-Fg; Fri, 13 Jan 2017 03:08:38 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3010 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRwuZ-0001A2-IQ; Fri, 13 Jan 2017 03:08:36 -0500 Date: Fri, 13 Jan 2017 10:08:43 +0200 Message-Id: <83fukncrg4.fsf@gnu.org> From: Eli Zaretskii To: Fabrice Popineau CC: sds@gnu.org, emacs-devel@gnu.org In-reply-to: (message from Fabrice Popineau on Thu, 12 Jan 2017 21:11:08 +0100) Subject: Re: Emacs and ImageMagick-7 issues Reply-to: Eli Zaretskii References: <18005ddf-2b73-4ffc-31df-83f081e78603@alice.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 08:08:45 -0000 > From: Fabrice Popineau > Date: Thu, 12 Jan 2017 21:11:08 +0100 > Cc: Emacs developers > > Attached is a diff file for Emacs-25 and ImageMagick-7 in case it can help > (and provided I did no mistake). Please rebase on master (Emacs 26), as it's too late for the release branch. From MAILER-DAEMON Fri Jan 13 03:12:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRwyp-0004Bk-1W for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 03:12:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41728) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRwym-0004Be-CZ for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:12:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRwyh-0008Db-Dy for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:12:56 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51224) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRwyh-0008DV-Ag; Fri, 13 Jan 2017 03:12:51 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3014 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRwyg-0006B5-Jf; Fri, 13 Jan 2017 03:12:51 -0500 Date: Fri, 13 Jan 2017 10:12:58 +0200 Message-Id: <83eg07cr91.fsf@gnu.org> From: Eli Zaretskii To: Joakim Jalap CC: emacs-devel@gnu.org In-reply-to: <874m14rnl7.fsf@fastmail.com> (message from Joakim Jalap on Thu, 12 Jan 2017 22:10:44 +0100) Subject: Re: Overlay tree. Stuck again Reply-to: Eli Zaretskii References: <874m14rnl7.fsf@fastmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 08:12:57 -0000 > From: Joakim Jalap > Date: Thu, 12 Jan 2017 22:10:44 +0100 > > However the nodes can be updated "externally" from the trees point of > view. For example if there is a delete in the buffer those overlays > which were in the deleted portion of the buffer will now be crowded at > the from_char of the delete. But those could have any address, so they > will probably be out of order. The problem is how to get them in order > again. > > As far as I've gotten is to gather all the affected nodes (which I think > are only those of length zero which start (and end) at from_char) into > an array and sort that. But I can't figure out how to get them into the > tree again while keeping all the pointers correct. This might be a silly idea, but did you try removing them from the tree, and then re-adding them? (I assume that adding a node will produce an ordered tree.) Apologies if I'm missing something obvious. From MAILER-DAEMON Fri Jan 13 03:39:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRxOP-0005Yo-8l for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 03:39:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47535) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRxON-0005YY-MM for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:39:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRxOK-0003Qo-Ip for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:39:23 -0500 Received: from mail-pf0-x236.google.com ([2607:f8b0:400e:c00::236]:34971) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRxOK-0003QQ-CD for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:39:20 -0500 Received: by mail-pf0-x236.google.com with SMTP id f144so28146682pfa.2 for ; Fri, 13 Jan 2017 00:39:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:message-id:user-agent:mime-version; bh=lAH4W7wpK0y6bpJnjDsejDih3CsTE+EI5M/CnGXUISw=; b=UDwO6yE9b+7LG1oQzZZ5ZVwlMF0D2zd/qUSAON5pn1oLZ/np6GV/CnS1caDQKsVGjP jWckYEOK990X9CbsJSyq6i34Q8Ra+ZO9+EYW/EqWgCLMAKKpH41Tnda2a6+ecrb/rHBD QTiE6btFm67YQQcQWKB8jze0y/N1AkSYvOJRbKwPzFZGhVwKETzz6AuD8YDbym5WkRiX gznUCVOnDHG1IYmI6tSVsWi7IUxw9lBsZdPvpPb278+hPBOgw39J7PJmfdM2qS92mhKE PHcxqRYhS2dj5FmJMLGL3gzaz7CyJKXEG5AW4LXQ8MjHrvuYR6Wdz1LCiTCGuiUQHnRW ZXAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:message-id:user-agent :mime-version; bh=lAH4W7wpK0y6bpJnjDsejDih3CsTE+EI5M/CnGXUISw=; b=iD22YU/f9nYiqwuyfclJHUiNL7mOilyebeGFl5H/itLtHNQncIRfO8P3VlOHU5ulzk hkY+tCtSVEAn2AebFXqBgf047kd+eN6xL1MV4fmBRH3w2uPXcGOBBDqjbnZTZASvyDID wcAvGvn/qQrSDlMNaTRltcyBfNAFORpeVgEYdb0coCv2ioezYTXO0B7BmYGTdhnm6/y1 L2ZObYKhFUEPGNCZwsg8kUgWJXs5PAp7rTGUFe3TdH79fz3kacKLK2qAuvuZtxyj4J7d gdeUfa5cJtNOkq9nGv5sYy0m6Wy5JYk/ZICoYfZQRaYO8l2OidutcM5ttgZ40ciAc0hs Yuww== X-Gm-Message-State: AIkVDXJVd8TWVG9l7dOSYhPz22fa0zZq0/W7xe0HnG4a4phMDUJahYOSFKss+lUOhNjKRg== X-Received: by 10.84.198.3 with SMTP id o3mr28063606pld.170.1484296759032; Fri, 13 Jan 2017 00:39:19 -0800 (PST) Received: from calancha-pc (217.225.128.101.dy.bbexcite.jp. [101.128.225.217]) by smtp.gmail.com with ESMTPSA id e11sm27345313pgp.10.2017.01.13.00.39.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jan 2017 00:39:18 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Fri, 13 Jan 2017 17:39:15 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Emacs developers cc: Tino Calancha Subject: Anaphoric macros: increase visibility Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 08:39:24 -0000 Hi, I think anaphoric macros are a nice idiom; occasionally they allow to write very concise and clear expressions. AFAICS, in the Emacs tree they are just introduced in ibuf-macs.el (`ibuffer-aif', `ibuffer-awhen'). To use these macros in Emacs code we must: 1) Define them again (code duplication). 2) Or require ibuf-macs, which it sounds not conventional. It might have sense to move these general purpose macros into a more visible location (subr.el or subr-x.el). We might add other useful macros as well, e.g., awhile. What do you think? Tino From MAILER-DAEMON Fri Jan 13 03:46:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRxVY-0000DW-7K for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 03:46:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49125) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRxVW-0000DQ-Lw for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:46:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRxVT-0005zl-Iv for emacs-devel@gnu.org; Fri, 13 Jan 2017 03:46:46 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51584) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRxVT-0005zh-Fn; Fri, 13 Jan 2017 03:46:43 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3035 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cRxVS-0005Jx-PF; Fri, 13 Jan 2017 03:46:43 -0500 Date: Fri, 13 Jan 2017 10:46:49 +0200 Message-Id: <83a8avcpom.fsf@gnu.org> From: Eli Zaretskii To: Tom Tromey CC: emacs-devel@gnu.org In-reply-to: <87eg074e9q.fsf@tromey.com> (message from Tom Tromey on Fri, 13 Jan 2017 00:20:33 -0700) Subject: Re: correct way to install a bug fix? Reply-to: Eli Zaretskii References: <87eg074e9q.fsf@tromey.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 08:46:47 -0000 > From: Tom Tromey > Date: Fri, 13 Jan 2017 00:20:33 -0700 > > On the one hand, admin/notes/git-workflow seems to advise pushing to > master and then cherry-picking to the release branch, adding "Backport:" > to the commit message. > > On the other hand, admin/notes/repo says that fixes should be installed > on the release branch and then someone will sync them to master; and it > says that installing manually on more than one branch is bad. > > Which should I do? In general, the latter. (git-workflow only says what you cite under "Backporting", which describes a situation where a commit pushed to master is later regarded as appropriate for the release branch, which is not your use case.) However, we are very close to releasing Emacs 25.2 from the release branch, so currently the release branch is is only open for changes that fit one of the following criteria: . documentation changes . fixes for bugs that were introduced by Emacs 25.1 . very safe fixes for bugs introduced in v24.5 If your bugfixes don't fit any of these, please push to master. Thanks. From MAILER-DAEMON Fri Jan 13 05:03:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRyiF-0006zN-Kq for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 05:03:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33376) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRyiA-0006zH-QY for emacs-devel@gnu.org; Fri, 13 Jan 2017 05:03:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRyi6-00030E-K5 for emacs-devel@gnu.org; Fri, 13 Jan 2017 05:03:54 -0500 Received: from smtp204.alice.it ([82.57.200.100]:21859) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRyi5-0002x7-G2; Fri, 13 Jan 2017 05:03:50 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp204.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 58760B2000755A48; Fri, 13 Jan 2017 11:03:44 +0100 To: eliz@gnu.org, sds@gnu.org, Fabrice Popineau , Emacs developers References: Subject: Re: Emacs and ImageMagick-7 issues From: Angelo Graziosi Message-ID: Date: Fri, 13 Jan 2017 11:03:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------52E309B72F2F5DF3BDE866E0" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.100 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 10:03:57 -0000 This is a multi-part message in MIME format. --------------52E309B72F2F5DF3BDE866E0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Eli Zaretskii wrote: > Please rebase on master (Emacs 26), as it's too late for the release > branch. I have adapted Fabrice patches (attached) to master and with it I have built Emacs master last night (r128068.55b5265) on MSYS2/MINGW64 (with the PKGBUILD for mingw-w64-emacs-git). I do not know if I did all OK and have not tested every thing. For example, now when I visit a PNG buffer, it fits window width by default. If I do (on menu bar) Image - Fit to Window Height, it fits but there is a BELL sound and this message on minibuffer: Assertion failed: (= (cdr size) (- (nth 3 (window-inside-pixel-edges)) (nth 1 (window-inside-pixel-edges)))), 821, 814 user-error: Minibuffer window is not active I tried with a few JPG files and they didn't display. In the minibuffer: Cannot display image: ((= (cdr size) (- (nth 3 (window-inside-pixel-edges)) (nth 1 (window-inside-pixel-edges)))) 821 814) After a while I retried with the same PNG file (which before was displayed) but now it was not. Same "Cannot display..." I wonder if this is to be expected or if it is a consequence of the patches... Ciao, Angelo. --------------52E309B72F2F5DF3BDE866E0 Content-Type: text/plain; charset=UTF-8; name="emacs-master-imagemagick7.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="emacs-master-imagemagick7.diff" diff --git a/configure.ac b/configure.ac index 4e80eed..c99477a 100644 --- a/configure.ac +++ b/configure.ac @@ -2462,7 +2462,7 @@ if test "${with_imagemagick}" != "no"; then ## 6.3.5 is the earliest version known to work; see Bug#17339. ## 6.8.2 makes Emacs crash; see Bug#13867. - IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2" + IMAGEMAGICK_MODULE="MagickWand >= 6.3.5 MagickWand != 6.8.2" EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE]) AC_SUBST(IMAGEMAGICK_CFLAGS) AC_SUBST(IMAGEMAGICK_LIBS) diff --git a/lisp/loadup.el b/lisp/loadup.el index c6107d3..cf62d7b 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -280,6 +280,7 @@ (load "term/w32-win") (load "disp-table") (when (eq system-type 'windows-nt) + (load "image") (load "w32-fns") (load "ls-lisp") (load "dos-w32")))) diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index 3ff0509..8ef0333 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -271,6 +271,8 @@ '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll") '(glib "libglib-2.0-0.dll") '(gobject "libgobject-2.0-0.dll") + '(magickwand "libMagickWand-7.Q16HDRI-0.dll" "libMagickWand-7.Q16-0.dll") + '(magickcore "libMagickCore-7.Q16HDRI-0.dll" "libMagickCore-7.Q16-0.dll") (if (>= libgnutls-version 30400) '(gnutls "libgnutls-30.dll") '(gnutls "libgnutls-28.dll" "libgnutls-26.dll")) diff --git a/src/image.c b/src/image.c index b724da8..158d7c7 100644 --- a/src/image.c +++ b/src/image.c @@ -3166,6 +3166,8 @@ #ifdef CYGWIN #include "noX/xpm.h" #else /* not CYGWIN */ +#undef close +#undef open #include "X11/xpm.h" #endif /* not CYGWIN */ #undef FOR_MSW @@ -8244,16 +8246,249 @@ /* The GIF library also defines DrawRectangle, but its never used in Emacs. Therefore rename the function so it doesn't collide with ImageMagick. */ #define DrawRectangle DrawRectangleGif +#ifdef __MINGW64__ +#include +#else #include +#endif /* ImageMagick 6.5.3 through 6.6.5 hid PixelGetMagickColor for some reason. Emacs seems to work fine with the hidden version, so unhide it. */ +#ifdef __MINGW64__ +#include +#else #include +#endif #if 0x653 <= MagickLibVersion && MagickLibVersion <= 0x665 extern WandExport void PixelGetMagickColor (const PixelWand *, MagickPixelPacket *); #endif +#ifdef WINDOWSNT +DEF_DLL_FN (MagickWand *, CloneMagickWand, (const MagickWand *)); +DEF_DLL_FN (MagickWand *, DestroyMagickWand, (MagickWand *)); +DEF_DLL_FN (MagickWand *, DestroyPixelIterator, (PixelIterator *)); +DEF_DLL_FN (PixelWand *, DestroyPixelWand, (PixelWand *)); +DEF_DLL_FN (MagickBooleanType, MagickCropImage, (MagickWand *, const size_t, const size_t, const ssize_t, const ssize_t)); +#ifdef HAVE_MAGICKEXPORTIMAGEPIXELS +DEF_DLL_FN (MagickBooleanType, MagickExportImagePixels, (MagickWand *, const ssize_t, const ssize_t, const size_t, const size_t, const char *, const StorageType, void *)); +#endif +DEF_DLL_FN (char *, MagickGetException, (const MagickWand *, ExceptionType *)); +DEF_DLL_FN (MagickWand *, MagickGetImage, (MagickWand *)); +DEF_DLL_FN (DisposeType, MagickGetImageDelay, (MagickWand *)); +DEF_DLL_FN (DisposeType, MagickGetImageDispose, (MagickWand *)); +DEF_DLL_FN (size_t, MagickGetImageHeight, (MagickWand *)); +DEF_DLL_FN (MagickBooleanType, MagickGetImagePage, (MagickWand *, size_t *, size_t *, ssize_t *, ssize_t *)); +DEF_DLL_FN (char *, MagickGetImageSignature, (MagickWand *)); +DEF_DLL_FN (size_t, MagickGetImageWidth, (MagickWand *)); +DEF_DLL_FN (size_t, MagickGetNumberImages, (MagickWand *)); +#ifdef HAVE_MAGICKMERGEIMAGELAYERS +DEF_DLL_FN (MagickWand *, MagickMergeImageLayers, (MagickWand *, const LayerMethod)); +#else +DEF_DLL_FN (MagickWand *, MagickFlattenImages, (MagickWand *)); +#endif +DEF_DLL_FN (MagickBooleanType, MagickReadImage, (MagickWand *, const char *)); +DEF_DLL_FN (MagickBooleanType, MagickReadImageBlob, (MagickWand *, const void *, const size_t)); +DEF_DLL_FN (void *, MagickRelinquishMemory, (void *)); +DEF_DLL_FN (MagickBooleanType, MagickRotateImage, (MagickWand *, const PixelWand *, const double)); +DEF_DLL_FN (MagickBooleanType, MagickScaleImage, (MagickWand *, const size_t, const size_t)); +DEF_DLL_FN (MagickBooleanType, MagickSetFilename, (MagickWand *, const char *)); +DEF_DLL_FN (MagickBooleanType, MagickSetImageBackgroundColor, (MagickWand *, const PixelWand *)); +DEF_DLL_FN (MagickBooleanType, MagickSetIteratorIndex, (MagickWand *, const ssize_t)); +DEF_DLL_FN (void, MagickWandGenesis, (void)); +DEF_DLL_FN (void, MagickWandTerminus, (void)); +DEF_DLL_FN (MagickWand *, NewMagickWand, (void)); +DEF_DLL_FN (PixelIterator *, NewPixelIterator, (MagickWand *)); +DEF_DLL_FN (PixelWand *, NewPixelWand, (void)); +DEF_DLL_FN (double, PixelGetAlpha, (const PixelWand *)); +DEF_DLL_FN (void, PixelGetMagickColor, (const PixelWand *, PixelInfo *)); +DEF_DLL_FN (PixelWand **, PixelGetNextIteratorRow, (PixelIterator *, size_t *)); +DEF_DLL_FN (MagickBooleanType, PixelSetIteratorRow, (PixelIterator *, const ssize_t)); +DEF_DLL_FN (void, PixelSetPixelColor, (PixelWand *, const PixelInfo *)); +DEF_DLL_FN (void, PixelSetRed, (PixelWand *, const double)); +DEF_DLL_FN (void, PixelSetGreen, (PixelWand *, const double)); +DEF_DLL_FN (void, PixelSetBlue, (PixelWand *, const double)); +DEF_DLL_FN (MagickBooleanType, PixelSyncIterator, (PixelIterator *)); + +DEF_DLL_FN (ExceptionInfo *, DestroyExceptionInfo, (ExceptionInfo *)); +DEF_DLL_FN (char *, DestroyString, (char *)); +DEF_DLL_FN (ExceptionInfo *, AcquireExceptionInfo, ()); +DEF_DLL_FN (char **, GetMagickList, (const char *, size_t *, ExceptionInfo *)); + +static bool +init_imagemagick_functions (void) +{ + HMODULE magickwand, magickcore; + + /* Override ImageMgick settings to use the one packaged with Emacs. */ + char buf[512]; + char *var_format[] = { + "MAGICK_CONFIGURE_PATH=%s/lib/ImageMagick-7.0.3/config-Q16HDRI/", + "MAGICK_CODER_MODULE_PATH=%s/lib/ImageMagick-7.0.3/modules-Q16HDRI/coders/", + "MAGICK_FILTER_MODULE_PATH=%s/lib/ImageMagick-7.0.3/modules-Q16HDRI/filters/", +#if 0 + "MAGICK_DOCUMENTATION_PATH=%s/share/doc/ImageMagick-7/", + "MAGICK_EXECUTABLE_PATH=%s/bin", + "MAGICK_SHARE_PATH=%s/share/ImageMagick-7", + "MAGICK_SHAREARCH_PATH=%s/lib/ImageMagick-7.0.3/config-Q16HDRI", +#endif + NULL + }; + /* FIXME: assumes emacs is in bin directory */ + char *emacs_dir = SSDATA(Fdirectory_file_name(Fexpand_file_name(build_string("../"), Vinvocation_directory))); + + for (int i = 0; var_format[i] != NULL; i++) { + sprintf(buf, var_format[i], emacs_dir); + xputenv(buf); + }; + + if (!(magickcore = w32_delayed_load (Qmagickcore)) + || !(magickwand = w32_delayed_load (Qmagickwand))) + return 0; + + LOAD_DLL_FN (magickwand, CloneMagickWand); + LOAD_DLL_FN (magickwand, DestroyMagickWand); + LOAD_DLL_FN (magickwand, DestroyPixelIterator); + LOAD_DLL_FN (magickwand, DestroyPixelWand); + LOAD_DLL_FN (magickwand, MagickCropImage); +#ifdef HAVE_MAGICKEXPORTIMAGEPIXELS + LOAD_DLL_FN (magickwand, MagickExportImagePixels); +#endif + LOAD_DLL_FN (magickwand, MagickGetException); + LOAD_DLL_FN (magickwand, MagickGetImage); + LOAD_DLL_FN (magickwand, MagickGetImageDelay); + LOAD_DLL_FN (magickwand, MagickGetImageDispose); + LOAD_DLL_FN (magickwand, MagickGetImageHeight); + LOAD_DLL_FN (magickwand, MagickGetImagePage); + LOAD_DLL_FN (magickwand, MagickGetImageSignature); + LOAD_DLL_FN (magickwand, MagickGetImageWidth); + LOAD_DLL_FN (magickwand, MagickGetNumberImages); +#ifdef HAVE_MAGICKMERGEIMAGELAYERS + LOAD_DLL_FN (magickwand, MagickMergeImageLayers); +#else + LOAD_DLL_FN (magickwand, MagickFlattenImages); +#endif + LOAD_DLL_FN (magickwand, MagickReadImage); + LOAD_DLL_FN (magickwand, MagickReadImageBlob); + LOAD_DLL_FN (magickwand, MagickRelinquishMemory); + LOAD_DLL_FN (magickwand, MagickRotateImage); + LOAD_DLL_FN (magickwand, MagickScaleImage); + LOAD_DLL_FN (magickwand, MagickSetFilename); + LOAD_DLL_FN (magickwand, MagickSetImageBackgroundColor); + LOAD_DLL_FN (magickwand, MagickSetIteratorIndex); + LOAD_DLL_FN (magickwand, MagickWandGenesis); + LOAD_DLL_FN (magickwand, MagickWandTerminus); + LOAD_DLL_FN (magickwand, NewMagickWand); + LOAD_DLL_FN (magickwand, NewPixelIterator); + LOAD_DLL_FN (magickwand, NewPixelWand); + LOAD_DLL_FN (magickwand, PixelGetAlpha); + LOAD_DLL_FN (magickwand, PixelGetMagickColor); + LOAD_DLL_FN (magickwand, PixelGetNextIteratorRow); + LOAD_DLL_FN (magickwand, PixelSetIteratorRow); + LOAD_DLL_FN (magickwand, PixelSetPixelColor); + LOAD_DLL_FN (magickwand, PixelSetRed); + LOAD_DLL_FN (magickwand, PixelSetGreen); + LOAD_DLL_FN (magickwand, PixelSetBlue); + LOAD_DLL_FN (magickwand, PixelSyncIterator); + + LOAD_DLL_FN (magickcore, DestroyExceptionInfo); + LOAD_DLL_FN (magickcore, DestroyString); + LOAD_DLL_FN (magickcore, AcquireExceptionInfo); + LOAD_DLL_FN (magickcore, GetMagickList); + + return 1; +} + +#undef CloneMagickWand +#undef DestroyMagickWand +#undef DestroyPixelIterator +#undef DestroyPixelWand +#undef MagickCropImage +#undef MagickExportImagePixels +#undef MagickGetException +#undef MagickGetImage +#undef MagickGetImageDelay +#undef MagickGetImageDispose +#undef MagickGetImageHeight +#undef MagickGetImagePage +#undef MagickGetImageSignature +#undef MagickGetImageWidth +#undef MagickGetNumberImages +#undef MagickMergeImageLayers +#undef MagickFlattenImages +#undef MagickReadImage +#undef MagickReadImageBlob +#undef MagickRelinquishMemory +#undef MagickRotateImage +#undef MagickScaleImage +#undef MagickSetFilename +#undef MagickSetImageBackgroundColor +#undef MagickSetIteratorIndex +#undef MagickWandGenesis +#undef MagickWandTerminus +#undef NewMagickWand +#undef NewPixelIterator +#undef NewPixelWand +#undef PixelGetAlpha +#undef PixelGetMagickColor +#undef PixelGetNextIteratorRow +#undef PixelSetIteratorRow +#undef PixelSetPixelColor +#undef PixelSetRed +#undef PixelSetGreen +#undef PixelSetBlue +#undef PixelSyncIterator +#undef DestroyExceptionInfo +#undef DestroyString +#undef AcquireExceptionInfo +#undef GetMagickList + +#define CloneMagickWand fn_CloneMagickWand +#define DestroyMagickWand fn_DestroyMagickWand +#define DestroyPixelIterator fn_DestroyPixelIterator +#define DestroyPixelWand fn_DestroyPixelWand +#define MagickCropImage fn_MagickCropImage +#define MagickExportImagePixels fn_MagickExportImagePixels +#define MagickGetException fn_MagickGetException +#define MagickGetImage fn_MagickGetImage +#define MagickGetImageDelay fn_MagickGetImageDelay +#define MagickGetImageDispose fn_MagickGetImageDispose +#define MagickGetImageHeight fn_MagickGetImageHeight +#define MagickGetImagePage fn_MagickGetImagePage +#define MagickGetImageSignature fn_MagickGetImageSignature +#define MagickGetImageWidth fn_MagickGetImageWidth +#define MagickGetNumberImages fn_MagickGetNumberImages +#define MagickMergeImageLayers fn_MagickMergeImageLayers +#define MagickFlattenImages fn_MagickFlattenImages +#define MagickReadImage fn_MagickReadImage +#define MagickReadImageBlob fn_MagickReadImageBlob +#define MagickRelinquishMemory fn_MagickRelinquishMemory +#define MagickRotateImage fn_MagickRotateImage +#define MagickScaleImage fn_MagickScaleImage +#define MagickSetFilename fn_MagickSetFilename +#define MagickSetImageBackgroundColor fn_MagickSetImageBackgroundColor +#define MagickSetIteratorIndex fn_MagickSetIteratorIndex +#define MagickWandGenesis fn_MagickWandGenesis +#define MagickWandTerminus fn_MagickWandTerminus +#define NewMagickWand fn_NewMagickWand +#define NewPixelIterator fn_NewPixelIterator +#define NewPixelWand fn_NewPixelWand +#define PixelGetAlpha fn_PixelGetAlpha +#define PixelGetMagickColor fn_PixelGetMagickColor +#define PixelGetNextIteratorRow fn_PixelGetNextIteratorRow +#define PixelSetIteratorRow fn_PixelSetIteratorRow +#define PixelSetPixelColor fn_PixelSetPixelColor +#define PixelSetRed fn_PixelSetRed +#define PixelSetGreen fn_PixelSetGreen +#define PixelSetBlue fn_PixelSetBlue +#define PixelSyncIterator fn_PixelSyncIterator +#define DestroyExceptionInfo fn_DestroyExceptionInfo +#define DestroyString fn_DestroyString +#define AcquireExceptionInfo fn_AcquireExceptionInfo +#define GetMagickList fn_GetMagickList + +#endif /* !WINDOWSNT */ + /* Log ImageMagick error message. Useful when a ImageMagick function returns the status `MagickFalse'. */ @@ -8406,7 +8641,7 @@ PixelWand **source, **dest; size_t source_width, source_height; ssize_t source_left, source_top; - MagickPixelPacket pixel; + PixelInfo pixel; DisposeType dispose; ptrdiff_t lines = 0; @@ -8471,7 +8706,7 @@ if (dispose == BackgroundDispose || PixelGetAlpha (source[x])) { PixelGetMagickColor (source[x], &pixel); - PixelSetMagickColor (dest[x + source_left], &pixel); + PixelSetPixelColor (dest[x + source_left], &pixel); } } PixelSyncIterator (dest_iterator); @@ -8516,7 +8751,7 @@ MagickWand *image_wand; PixelIterator *iterator; PixelWand **pixels, *bg_wand = NULL; - MagickPixelPacket pixel; + PixelInfo pixel; Lisp_Object image; Lisp_Object value; Lisp_Object crop; @@ -8912,6 +9147,11 @@ char **imtypes; size_t i; +#if WINDOWSNT + if (!init_imagemagick_functions ()) + return Qnil; +#endif + ex = AcquireExceptionInfo (); imtypes = GetMagickList ("*", &numf, ex); DestroyExceptionInfo (ex); @@ -9926,12 +10166,16 @@ #if defined (HAVE_IMAGEMAGICK) DEFSYM (Qimagemagick, "imagemagick"); ADD_IMAGE_TYPE (Qimagemagick); +#if defined HAVE_NTGUI && !defined CYGWIN + DEFSYM (Qmagickwand, "magickwand"); + DEFSYM (Qmagickcore, "magickcore"); +#endif /* HAVE_NTGUI */ #endif #if defined (HAVE_RSVG) DEFSYM (Qsvg, "svg"); ADD_IMAGE_TYPE (Qsvg); -#ifdef HAVE_NTGUI +#if defined (HAVE_NTGUI) && !defined (CYGWIN) /* Other libraries used directly by svg code. */ DEFSYM (Qgdk_pixbuf, "gdk-pixbuf"); DEFSYM (Qglib, "glib"); --------------52E309B72F2F5DF3BDE866E0-- From MAILER-DAEMON Fri Jan 13 05:54:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cRzVZ-0004lv-UK for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 05:54:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRzVX-0004ld-H8 for emacs-devel@gnu.org; Fri, 13 Jan 2017 05:54:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRzVS-0006a7-Lk for emacs-devel@gnu.org; Fri, 13 Jan 2017 05:54:55 -0500 Received: from smtp202.alice.it ([82.57.200.98]:57992) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRzVR-0006ZY-S1; Fri, 13 Jan 2017 05:54:50 -0500 Received: from [192.168.1.101] (95.235.230.214) by smtp202.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 58760B09007C0208; Fri, 13 Jan 2017 11:54:47 +0100 Subject: Re: Emacs and ImageMagick-7 issues To: eliz@gnu.org, sds@gnu.org, Fabrice Popineau , Emacs developers References: From: Angelo Graziosi Message-ID: <0eead875-d46b-1973-0165-5e42a2522ccb@alice.it> Date: Fri, 13 Jan 2017 11:54:31 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.98 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 10:54:56 -0000 OK, now I have some more news. Start Emacs and visit a PNG or JPG etc, file. For example foo-01.png. It is displayed correctly and fitted to the windows *width*. Now do the same with another graphical file. For example foo-02.png. It also is displayed correctly and fitted to the window WIDTH. Close foo-02.png and for foo-01.png click Image - Fit to Window Height. It complains with a BELL sound and with the message: > > Assertion failed: (= (cdr size) (- (nth 3 (window-inside-pixel-edges)) > (nth 1 (window-inside-pixel-edges)))), 821, 814 > user-error: Minibuffer window is not active but the file is displayed correctly, at least in appearance! If now one re-visit foo-02.png it is visited in Fundamental mode and with the message: > Cannot display image: ((= (cdr size) (- (nth 3 > (window-inside-pixel-edges)) (nth 1 (window-inside-pixel-edges)))) 821 814) It seems that this build of Emacs does not like "Image - Fit to Window Height". The graphical format (PNJ, JPG..) seems irrelevant.. I did the same steps with my build on GNU/Linux Mint 18.1, on which there is installed ImageMagick-6 not -7. On this system all works as expected without errors/issues... > > Ciao, > Angelo. From MAILER-DAEMON Fri Jan 13 06:56:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS0T6-0004uP-UE for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 06:56:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS0T4-0004tv-BR for emacs-devel@gnu.org; Fri, 13 Jan 2017 06:56:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS0Sz-0006pp-Og for emacs-devel@gnu.org; Fri, 13 Jan 2017 06:56:26 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:41754) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cS0Sv-0006nw-RS; Fri, 13 Jan 2017 06:56:17 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 3B77C20A5A; Fri, 13 Jan 2017 06:56:17 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Fri, 13 Jan 2017 06:56:17 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=zcJ1+idLsz0kX7wYl4n2r3YTJ4Q=; b=5l/Jbl t/sUoCoJddNdinl4L2Pq7jgKywICCwoyKLTQxWBl4FXGp2K7/GG1ujpsB4U7aip8 YcDzbFBensiciw2qnDVUlqi0zIjl5ZBJCKgW/3zLbr1yCF1dW1XR20K4fVTI19NE GIEbb579YIGWT/CxRI1QS4B/cZcvPBC14l3Wo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=zcJ1+idLsz0kX7 wYl4n2r3YTJ4Q=; b=hPR5jQ/3cxNPvXHmGGrkuTrg/OBzGKGib4W5WcPGYFT6Y3 bpubR8mIbsHm+NpPPoEz9XudhmrmA3rfuDzl+gYfAkTnm+elxGPukEmeAIxngzc8 6sul9cMbgDHcT6K4iG5jNLJLghRHnNee2aC8b2fI42B+ARCXwAaHm6nx9MARI= X-ME-Sender: X-Sasl-enc: S8vixS3At16FVZ9vOeHVZx2Uwe+KdR0N8+o5e+yyUFiL 1484308576 Received: from genserv (unknown [5.150.202.248]) by mail.messagingengine.com (Postfix) with ESMTPA id 984DF7E1D0; Fri, 13 Jan 2017 06:56:16 -0500 (EST) From: Joakim Jalap To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Overlay tree. Stuck again References: <874m14rnl7.fsf@fastmail.com> <83eg07cr91.fsf@gnu.org> Date: Fri, 13 Jan 2017 12:56:15 +0100 In-Reply-To: <83eg07cr91.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 13 Jan 2017 10:12:58 +0200") Message-ID: <87ziivqilc.fsf@fastmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 11:56:27 -0000 Eli Zaretskii writes: >> From: Joakim Jalap >> Date: Thu, 12 Jan 2017 22:10:44 +0100 >> >> However the nodes can be updated "externally" from the trees point of >> view. For example if there is a delete in the buffer those overlays >> which were in the deleted portion of the buffer will now be crowded at >> the from_char of the delete. But those could have any address, so they >> will probably be out of order. The problem is how to get them in order >> again. >> >> As far as I've gotten is to gather all the affected nodes (which I think >> are only those of length zero which start (and end) at from_char) into >> an array and sort that. But I can't figure out how to get them into the >> tree again while keeping all the pointers correct. > > This might be a silly idea, but did you try removing them from the > tree, and then re-adding them? (I assume that adding a node will > produce an ordered tree.) Yes, that is the "big hammer" approach :) I hae thought about it, but I think the problem is that it will be too expensive. When I traverse the tree to adjust the overlays for a delete I traverse the whole tree at once (and gather the problematic overlays in an array). If I would remove the problematic overlays instead, I would have to do so with the first one detected (because that's the only time we know the tree is in OK shape). But then the tree might change because of rebalancing, so then I think I would have to restart the adjusting traversal from the root. After all of this I would then have to insert each of the problematic overlays one by one, which is of course also possibly expensive. So I think this approach will be too slow, unfortunately. However, I just had another idea about how to do this (about the 43rd I guess), so I will try that and report back in a few weeks :) Thanks, -- Joakim From MAILER-DAEMON Fri Jan 13 08:02:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS1Ud-0006PL-OR for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 08:02:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37505) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS1UX-0006IM-Dn for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:02:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS1UT-0005yp-G2 for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:02:01 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:36441) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cS1UM-0005yA-Fc; Fri, 13 Jan 2017 08:01:50 -0500 Received: by mail-pf0-x241.google.com with SMTP id b22so8376436pfd.3; Fri, 13 Jan 2017 05:01:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=wiaQNkxUfI+OTj01BL4nPOszV43AW4j6nk8AOFQH9J8=; b=JQLHrbWvZ36ttMmt6pLQnPx1zjq9wf4rqepYJ3xpalYxNvvzMREhOxCy0YuzbVg8Bx d+xQwxEmftzdhdr9t8rmB1N3x/rW5hnwWLBfZZHEXT8oWU03jgP+jVgn3hR25fUrkk5H NAHRh7UoDQTMLywPPuVb2GJTcPOnlq6mXgFTPULiEi+3sU3pGEp/OxIq8+yMa9xuJmNT Jd67MB42oezKQiTFYVrpLIsPXwN2aa5qBiuJB728mEWx0lbK7bhvXRubzs2knvvjsUX9 YB6cq2MzRMuneEXd87MrlRhAtMglrWTPQilLDErQGXqRGwZsjYL3NTPl81niOl0LSfM3 +xjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=wiaQNkxUfI+OTj01BL4nPOszV43AW4j6nk8AOFQH9J8=; b=AnxvBZuwCiGdO2aHEzPRObAL1NzjL56QbToD2KBz2NFjI6gKNQ9NDSuFN9y80MfBcb 6ePswiSvLcoKELd48RAVcBiIIFPzFSX//aLRuIlpf/mvL4BAIevQI9av8Kuvj9a8u5Ax P2XbS6VEk4OTm1k1d20jo7mTx1vU/1w6HSbtL8L8JMtd1kbchQKQ7kgeEMQwnAVMZCcz EYWM+FMp4veJofJ2Ys03OOklrgoYE1oMjRV3PlLdoLJC4v0oJo3TdKjjClQ3xU4ermwv 0UGepOhVrYD1nnINcrSmG7nJ8uxA7YK/y3JIOH7UwEbUjPSQiEYt7dEKbjM47s8+2adL 44IQ== X-Gm-Message-State: AIkVDXLjbHsSpStap0m4xaTy7Pc7ol/co+bXJoLnKJKUBIFDHoWjAKktb+wqTuRcjlrf3w== X-Received: by 10.98.78.66 with SMTP id c63mr22669713pfb.138.1484312509270; Fri, 13 Jan 2017 05:01:49 -0800 (PST) Received: from calancha-pc (217.225.128.101.dy.bbexcite.jp. [101.128.225.217]) by smtp.gmail.com with ESMTPSA id 21sm29312870pfy.4.2017.01.13.05.01.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jan 2017 05:01:48 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Fri, 13 Jan 2017 22:01:44 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Angelo Graziosi cc: eliz@gnu.org, sds@gnu.org, Fabrice Popineau , Emacs developers , Tino Calancha Subject: Re: Emacs and ImageMagick-7 issues In-Reply-To: <0eead875-d46b-1973-0165-5e42a2522ccb@alice.it> Message-ID: References: <0eead875-d46b-1973-0165-5e42a2522ccb@alice.it> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 13:02:06 -0000 On Fri, 13 Jan 2017, Angelo Graziosi wrote: > Start Emacs and visit a PNG or JPG etc, file. For example foo-01.png. It is > displayed correctly and fitted to the windows *width*. Now do the same with > another graphical file. For example foo-02.png. It also is displayed > correctly and fitted to the window WIDTH. > > Close foo-02.png and for foo-01.png click Image - Fit to Window Height. It > complains with a BELL sound and with the message: > >> >> Assertion failed: (= (cdr size) (- (nth 3 (window-inside-pixel-edges)) >> (nth 1 (window-inside-pixel-edges)))), 821, 814 >> user-error: Minibuffer window is not active > > but the file is displayed correctly, at least in appearance! If now one > re-visit foo-02.png it is visited in Fundamental mode and with the message: > >> Cannot display image: ((= (cdr size) (- (nth 3 >> (window-inside-pixel-edges)) (nth 1 (window-inside-pixel-edges)))) 821 814) > > It seems that this build of Emacs does not like "Image - Fit to Window > Height". The graphical format (PNJ, JPG..) seems irrelevant.. Hi Angelo, that sounds like: http://debbugs.gnu.org/24393 Regards, Tino From MAILER-DAEMON Fri Jan 13 08:22:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS1oV-00031G-LC for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 08:22:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41819) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS1oT-0002zP-NU for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:22:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS1oS-0003oJ-RN for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:22:37 -0500 Received: from smtp2.supelec.fr ([160.228.120.31]:51895) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS1oO-0003o0-01; Fri, 13 Jan 2017 08:22:32 -0500 Received: from localhost (localhost [127.0.0.1]) by smtp2.supelec.fr (Postfix) with ESMTP id 7316180220; Fri, 13 Jan 2017 14:22:29 +0100 (CET) X-Virus-Scanned: amavisd-new at smtp2.supelec.fr Received: from smtp2.supelec.fr ([127.0.0.1]) by localhost (smtp2.supelec.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rlCtusyfYrHL; Fri, 13 Jan 2017 14:22:29 +0100 (CET) Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by smtp2.supelec.fr (Postfix) with ESMTPSA id 4B74E8021F; Fri, 13 Jan 2017 14:22:29 +0100 (CET) Received: by mail-wm0-f42.google.com with SMTP id c85so64685602wmi.1; Fri, 13 Jan 2017 05:22:29 -0800 (PST) X-Gm-Message-State: AIkVDXLTQrKc1I5mwB08tYMFT2iGPZQj7RKg5SAPt5EH2Ryap8ydoq/e6eZHVNAVnBj/U92elQwo0CQ6urVdpw== X-Received: by 10.223.166.167 with SMTP id t36mr12057441wrc.18.1484313749112; Fri, 13 Jan 2017 05:22:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Fri, 13 Jan 2017 05:22:08 -0800 (PST) In-Reply-To: <87ziivqilc.fsf@fastmail.com> References: <874m14rnl7.fsf@fastmail.com> <83eg07cr91.fsf@gnu.org> <87ziivqilc.fsf@fastmail.com> From: Fabrice Popineau Date: Fri, 13 Jan 2017 14:22:08 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Overlay tree. Stuck again To: Joakim Jalap Cc: Eli Zaretskii , Emacs developers Content-Type: multipart/alternative; boundary=001a1140a100c062420545f9b96e X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 160.228.120.31 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 13:22:38 -0000 --001a1140a100c062420545f9b96e Content-Type: text/plain; charset=UTF-8 2017-01-13 12:56 GMT+01:00 Joakim Jalap : > However, I just had another idea about how to do this (about the 43rd I > guess), so I will try that and report back in a few weeks :) > > And the 42nd wasn't the right answer? Or what was the question? (Sorry, couldn't resist). Fabrice --001a1140a100c062420545f9b96e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-13 12:56 GMT+01:00 Joakim Jalap <joakim.jalap@fastma= il.com>:
However, I just ha= d another idea about how to do this (about the 43rd I
guess), so I will try that and report back in a few weeks :)


And the 42nd wasn't the right answ= er? Or what was the question?

(Sorry, couldn't= resist).

Fabrice

--001a1140a100c062420545f9b96e-- From MAILER-DAEMON Fri Jan 13 08:31:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS1x8-0003w9-Tg for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 08:31:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43046) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS1x5-0003uQ-Ng for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:31:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS1x2-0006gl-Ki for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:31:31 -0500 Received: from smtp201.alice.it ([82.57.200.97]:45643) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS1x0-0006fM-Gd; Fri, 13 Jan 2017 08:31:28 -0500 Received: from [192.168.1.102] (79.45.0.124) by smtp201.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 58760AF900C53AC0; Fri, 13 Jan 2017 14:31:21 +0100 Subject: Re: Emacs and ImageMagick-7 issues To: Tino Calancha References: <0eead875-d46b-1973-0165-5e42a2522ccb@alice.it> Cc: eliz@gnu.org, sds@gnu.org, Fabrice Popineau , Emacs developers From: Angelo Graziosi Message-ID: <03313fc8-86b1-5dac-c17c-4203514d24f5@alice.it> Date: Fri, 13 Jan 2017 14:31:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.97 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 13:31:33 -0000 Il 13/01/2017 14:01, Tino Calancha ha scritto: > > > On Fri, 13 Jan 2017, Angelo Graziosi wrote: > >> Start Emacs and visit a PNG or JPG etc, file. For example foo-01.png. >> It is displayed correctly and fitted to the windows *width*. Now do >> the same with another graphical file. For example foo-02.png. It also >> is displayed correctly and fitted to the window WIDTH. >> >> Close foo-02.png and for foo-01.png click Image - Fit to Window >> Height. It complains with a BELL sound and with the message: >> >>> >>> Assertion failed: (= (cdr size) (- (nth 3 (window-inside-pixel-edges)) >>> (nth 1 (window-inside-pixel-edges)))), 821, 814 >>> user-error: Minibuffer window is not active >> >> but the file is displayed correctly, at least in appearance! If now >> one re-visit foo-02.png it is visited in Fundamental mode and with the >> message: >> >>> Cannot display image: ((= (cdr size) (- (nth 3 >>> (window-inside-pixel-edges)) (nth 1 (window-inside-pixel-edges)))) >>> 821 814) >> >> It seems that this build of Emacs does not like "Image - Fit to Window >> Height". The graphical format (PNJ, JPG..) seems irrelevant.. > Hi Angelo, > > that sounds like: > http://debbugs.gnu.org/24393 Hmm.. as I wrote the master build I did a few days ago on GNU/Linux Mint 18.1 with ImageMagick-6 does not show these issues.. They seem related to ImageMagick-7 and/or MSYS2/MinGW64 builds.. From MAILER-DAEMON Fri Jan 13 08:50:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS2F2-0006eq-TO for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 08:50:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47044) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS2F0-0006cV-5U for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:50:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS2Ez-0005Kr-C6 for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:50:02 -0500 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:34973) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cS2Er-0005H3-Te; Fri, 13 Jan 2017 08:49:54 -0500 Received: by mail-pf0-x244.google.com with SMTP id f144so8548940pfa.2; Fri, 13 Jan 2017 05:49:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=BKF92g2vwEVRcL4yLpYUt7flHkxT9EPzwQmrCaC5SHo=; b=TanXnwFhwM32Ox8XrxVWRMZWmLwLj4BS/t8Dn6SHhdj+LOwI9BWXFxt4V5EFV2GZjx 9z6leSCoiLeZAJc4LNjZE3hTSwo36YLCHuhe2Kjtn8G2sg0AbxQWwKIzStv+vKP/joAg 0AiqDHhWPp7/zavuwOfCs/V634H2dLcu7rpQn/xFLNQMCUa6qOgcRs3xQQij/uQGat6q yjkP3vU4rnLGcfmM/bj8c/mBNWBTdaqeuUYT4pQN/hBzj4Xg8scGwWW4K2ELwka8UoMO 1hEAJ7Ur5wZ51y5O3xKoRakW3dz6k6NkR3SCYxuWe3jgNgUYqYv5udtq4Mblz2TpNI3L bfzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=BKF92g2vwEVRcL4yLpYUt7flHkxT9EPzwQmrCaC5SHo=; b=UZ0MCLOPM91T7GPuYRXdoBeMKq+2VEWI+/CGKLTLvhVfKJpnN9AhI5iPVvwylYfUAr bPdXprnIzr4ryzQsm4Si9H7i7hPzSO3wJB0LKj2DXSbGYfU9CL2WLrU9LwXOtbYA5NuX KTlkvE2eF5AsVT5DwaI2ZL/jfB/ptNGAzcbTfD1NT0bd669olrQPeIwhn/NK3aODK3M/ gnWm5HH4X8XyX2z6PjnDtDJb7ckKko0fzKcy7UVVRwFgUZsHcd42Gp4m1j69gPmImPpu lJS3s6+h42/ifV/C+41A4SzlkMAZ1ECFIsjnxwIvLTfuscMrlw82y8vpf/oEEJdp4xtu UDig== X-Gm-Message-State: AIkVDXKEmikMuhHPnh6YqHcDvqsOwklVN5lW0Yb3uvXBljDJRZr5DEwpH+Ikrew6i6Wu1w== X-Received: by 10.84.216.17 with SMTP id m17mr29575002pli.82.1484315392813; Fri, 13 Jan 2017 05:49:52 -0800 (PST) Received: from calancha-pc (217.225.128.101.dy.bbexcite.jp. [101.128.225.217]) by smtp.gmail.com with ESMTPSA id p25sm29627881pfd.0.2017.01.13.05.49.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jan 2017 05:49:52 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Fri, 13 Jan 2017 22:49:49 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Angelo Graziosi cc: Tino Calancha , eliz@gnu.org, sds@gnu.org, Fabrice Popineau , Emacs developers Subject: Re: Emacs and ImageMagick-7 issues In-Reply-To: <03313fc8-86b1-5dac-c17c-4203514d24f5@alice.it> Message-ID: References: <0eead875-d46b-1973-0165-5e42a2522ccb@alice.it> <03313fc8-86b1-5dac-c17c-4203514d24f5@alice.it> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 13:50:03 -0000 On Fri, 13 Jan 2017, Angelo Graziosi wrote: >> that sounds like: >> http://debbugs.gnu.org/24393 > > Hmm.. as I wrote the master build I did a few days ago on GNU/Linux Mint 18.1 > with ImageMagick-6 does not show these issues.. They seem related to > ImageMagick-7 and/or MSYS2/MinGW64 builds.. I see. Sorry for the fake, i am in wine-time, it's friday ;-) From MAILER-DAEMON Fri Jan 13 08:54:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS2Ja-0002PH-RY for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 08:54:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48876) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS2JY-0002NR-E6 for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:54:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS2JU-0007FD-B6 for emacs-devel@gnu.org; Fri, 13 Jan 2017 08:54:44 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38456) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS2JU-0007F9-7h; Fri, 13 Jan 2017 08:54:40 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3384 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cS2JT-0004Wt-9u; Fri, 13 Jan 2017 08:54:40 -0500 Date: Fri, 13 Jan 2017 15:54:41 +0200 Message-Id: <8360ljcbfi.fsf@gnu.org> From: Eli Zaretskii To: Joakim Jalap CC: emacs-devel@gnu.org In-reply-to: <87ziivqilc.fsf@fastmail.com> (message from Joakim Jalap on Fri, 13 Jan 2017 12:56:15 +0100) Subject: Re: Overlay tree. Stuck again Reply-to: Eli Zaretskii References: <874m14rnl7.fsf@fastmail.com> <83eg07cr91.fsf@gnu.org> <87ziivqilc.fsf@fastmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 13:54:45 -0000 > From: Joakim Jalap > Cc: emacs-devel@gnu.org > Date: Fri, 13 Jan 2017 12:56:15 +0100 > > > This might be a silly idea, but did you try removing them from the > > tree, and then re-adding them? (I assume that adding a node will > > produce an ordered tree.) > > Yes, that is the "big hammer" approach :) I hae thought about it, but I > think the problem is that it will be too expensive. I suggest to implement it and time it. You might be surprised. Even if you are right, and it is indeed too expensive, you will at the very least have a base-line performance figure against which you could compare the alternative solutions. > However, I just had another idea about how to do this (about the 43rd I > guess), so I will try that and report back in a few weeks :) Thanks. From MAILER-DAEMON Fri Jan 13 09:20:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS2iQ-00013Q-3G for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 09:20:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54579) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS2iO-00013E-BL for emacs-devel@gnu.org; Fri, 13 Jan 2017 09:20:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS2iL-0007NV-4V for emacs-devel@gnu.org; Fri, 13 Jan 2017 09:20:24 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:36048) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cS2iL-0007NN-0z for emacs-devel@gnu.org; Fri, 13 Jan 2017 09:20:21 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 91F5520B11; Fri, 13 Jan 2017 09:20:20 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Fri, 13 Jan 2017 09:20:20 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=vUDVeaR45dc8FI5FDJgI9GYuazE=; b=GMxMFx RCHd/5Nsq0gwEyR5bI2J/a/sVbDVTrtrJKog6MHuM15BGn5ObeLXoG+NsoQUBNdU VhfhuOMngxFyHk618ZsLNyg/hz+ZkLuzc3UY2xwYuCmyyB456H34mBiMkiCqVLx2 4KyTfb+mcCCitSr+/ZC7+rPF9AXt6H6/o6NyE= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=vUDVeaR45dc8FI 5FDJgI9GYuazE=; b=NNukCRDD0NC7VRQbJiAq5A6Bp1VC7fKqSDSvrYWivnWs3v /51QSFybIuO8Mu5lrWZ1UEiF0fbodMgz9rnptkX4M/SOCwea589qQhtUSZENCtIl h7LgiWEYCNsniI8I+VmmNQYQF1mbRnyOsz8ujBUfBESxV+QAgPKmOVt9YVhbY= X-ME-Sender: X-Sasl-enc: PuygdUZrzNFUAqGQHEsWGLFhNOZXCw0v2x1N5AZ/VTvP 1484317220 Received: from genserv (unknown [5.150.202.248]) by mail.messagingengine.com (Postfix) with ESMTPA id EDFE17E057; Fri, 13 Jan 2017 09:20:19 -0500 (EST) From: Joakim Jalap To: Fabrice Popineau Cc: Emacs developers Subject: Re: Overlay tree. Stuck again References: <874m14rnl7.fsf@fastmail.com> <83eg07cr91.fsf@gnu.org> <87ziivqilc.fsf@fastmail.com> Date: Fri, 13 Jan 2017 15:20:18 +0100 In-Reply-To: (Fabrice Popineau's message of "Fri, 13 Jan 2017 14:22:08 +0100") Message-ID: <87r347qbx9.fsf@fastmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 14:20:25 -0000 Fabrice Popineau writes: > 2017-01-13 12:56 GMT+01:00 Joakim Jalap : > > However, I just had another idea about how to do this (about the 43rd I > guess), so I will try that and report back in a few weeks :) > > And the 42nd wasn't the right answer? Or what was the question? When the 42nd failed I decided to ask emacs-devel ;) > (Sorry, couldn't resist). Understandable :) From MAILER-DAEMON Fri Jan 13 09:26:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS2oi-0005HK-LH for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 09:26:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56479) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS2of-0005Fo-9Z for emacs-devel@gnu.org; Fri, 13 Jan 2017 09:26:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS2oe-0000uJ-Fv for emacs-devel@gnu.org; Fri, 13 Jan 2017 09:26:53 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:49801) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cS2oa-0000r6-NI; Fri, 13 Jan 2017 09:26:48 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 09EC320A34; Fri, 13 Jan 2017 09:26:46 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Fri, 13 Jan 2017 09:26:46 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=Q8PTGrllO4+3+bhBkmZIusvE/3E=; b=gc8UcV /ysgyqmDljN75w3gVEmJt98wkWc4IpzIoEAMb5Tpw8W1B+N62bjJiBXA7BsifmXR c0FNCLGw1haUs+KyaU0LzqxPs901RUpnKZCh8ljqVpOpaBxAleXStSjHDPf3BZgC NpefdnF8RYPXGRWqNE+KvXtDcyhkGtFhq2oc0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=Q8PTGrllO4+3+b hBkmZIusvE/3E=; b=ltXrveheA8yV8BNIlV4iy/PuTpHFo9MlnLsU4XPwSZi1t9 E57Z/t9VasRZU/M/wK6rWrwt+Ld/17ExLc/q9A4JONUwT3PUJ+bFfI1u2xOWk7cC rNbAt6KPYvsTX8oql+Gm3GFwg3EJWY7eg6ayJYRayRpBLC8HNt9oqyalLRr9A= X-ME-Sender: X-Sasl-enc: oPnOX7iG9GLcB2IDWMzGLAJ+x0EF4VZbaI1Oh55FysCu 1484317605 Received: from genserv (unknown [5.150.202.248]) by mail.messagingengine.com (Postfix) with ESMTPA id 5C6A47E3B9; Fri, 13 Jan 2017 09:26:45 -0500 (EST) From: Joakim Jalap To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Overlay tree. Stuck again References: <874m14rnl7.fsf@fastmail.com> <83eg07cr91.fsf@gnu.org> <87ziivqilc.fsf@fastmail.com> <8360ljcbfi.fsf@gnu.org> Date: Fri, 13 Jan 2017 15:26:44 +0100 In-Reply-To: <8360ljcbfi.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 13 Jan 2017 15:54:41 +0200") Message-ID: <87k29zqbmj.fsf@fastmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 14:26:54 -0000 Eli Zaretskii writes: >> From: Joakim Jalap >> Cc: emacs-devel@gnu.org >> Date: Fri, 13 Jan 2017 12:56:15 +0100 >> >> > This might be a silly idea, but did you try removing them from the >> > tree, and then re-adding them? (I assume that adding a node will >> > produce an ordered tree.) >> >> Yes, that is the "big hammer" approach :) I hae thought about it, but I >> think the problem is that it will be too expensive. > > I suggest to implement it and time it. You might be surprised. Even > if you are right, and it is indeed too expensive, you will at the very > least have a base-line performance figure against which you could > compare the alternative solutions. > If the 43rd fails I will try it :) Actually I'm afraid it will be too slow anyway. It seems a lot of the use of overlays is not as "static" as one would like. For example magit deletes and recreates its overlays every time point moves, even if they stay in the same place. For such uses I guess a linked list will be a lot faster than a self balancing tree. But first I will try to make it work at all :) From MAILER-DAEMON Fri Jan 13 14:49:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cS7qR-0001JY-CZ for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 14:49:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cS7qP-0001Di-9n for emacs-devel@gnu.org; Fri, 13 Jan 2017 14:49:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cS7qM-0007tU-7q for emacs-devel@gnu.org; Fri, 13 Jan 2017 14:49:01 -0500 Received: from mout.web.de ([212.227.17.11]:64729) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cS7qL-0007sm-Sf for emacs-devel@gnu.org; Fri, 13 Jan 2017 14:48:58 -0500 Received: from drachen.dragon ([188.110.141.66]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M8iH2-1cIB8z2h6S-00C9t2; Fri, 13 Jan 2017 20:48:53 +0100 From: Michael Heerdegen To: Tino Calancha Cc: Emacs developers Subject: Re: Anaphoric macros: increase visibility References: Date: Fri, 13 Jan 2017 20:48:52 +0100 In-Reply-To: (Tino Calancha's message of "Fri, 13 Jan 2017 17:39:15 +0900 (JST)") Message-ID: <87wpdyivvf.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:aIHzbnij/1KwRdrq/ntBrlnC0Mi8eVd8Od2ludTZ0XLbfHvEVnR gJAoBVODMHVVnMP0V8VPxaxMlo2arkf+XytAqdizO+X9Y1K6EVC3e/OqL38XsA65F78KVLL 4ILmqkNLOyvANUEu+ejZ0mZzHQVNjhev8PdRoG+uPxPvliJ65qaAIZX3CbEHamMEs/939xA 1kspu5l6To3vL44WosEhQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:k5gNN/HUR2g=:9rkYMW9w7dP/rypeUupWO9 clpd2DkhPaetsLiPvxjs4ddv6vt3c7K1015AnOgFj+5XO969j+s7LwDrtuwp7bT0ltIB7OKz8 /N0eVXpi/fVKxWSOMTaKA9iWdrdBVtR3KV+/TG/G0NMgytLoY7GM0BLB4XtreQw5G/KLAPztP HdLO6Jm2gyuATH3Wjvej/JtK09GPU6moQV4+VN9wNADdoLe1H1xhFldMZwYa1Ayiz3WgcyTuw 9yVLf9UTgrr4kmtvoluRUezhmrC8cC9+DjexB1uMmT1vvSFnJw8z6iDAAM6TYzCJupH8GIV4h SITOfyTK9jyJVa4SiWpPZF9i7lovJSmU2dDiPY+g4R7jCYIzbLvAHI3Ek/EX+ggNOM1NcS5GF CdHjTeFKJ1IZZJO8PAkPlk1t8lYYoJGdOY07KnlIK+kFYUpxyf822jxAmaOF32msNTd29aT0d Rw+35I/vLExg0Up6Q6W1/qEW7oMIqLZVjvS4UImiCZ0S2FAu/W2HrEd0Lc3OWpf/mGNtC1+g2 BbVa7vxYdbGVXmvui8XTTuHTqWkr6L1dVQHtWPkLEBbqvcQ/VgsxulqdE3G3DUP9nMsnzf1Ir IiAxs9LTDAu4TU8KYgsojyCG7vDUfNZkcCDMZs5wyytTUCLHMjGhB5a6vH6qIxMc3t9w18VZ7 +bX4SIDrsGQqK31It45RkGVVPitcjN+hZPmzZ+JN1G6YH6D3Wl8PphVZ+kgpzmePm7+B/24ho ixHoiZL9YaoreCysaTB2kcve4mP0RImkZ20UFuMkIywLW4p/IaF7PqeDC4OHaaoOz4zW/fGQ+ lcXEodD X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.11 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 19:49:02 -0000 Tino Calancha writes: > Hi, > > I think anaphoric macros are a nice idiom; occasionally > they allow to write very concise and clear expressions. > > AFAICS, in the Emacs tree they are just introduced in ibuf-macs.el > (`ibuffer-aif', `ibuffer-awhen'). We also already have `if-let' and `when-let' in "subr-x". They are like `aif' and `awhen' but you specify "it" explicitly. Michael. From MAILER-DAEMON Fri Jan 13 18:17:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSB6Z-00088m-53 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 18:17:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47420) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSB6W-00088Z-95 for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:17:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSB6V-0008KS-4x for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:17:52 -0500 Received: from mail-qt0-x231.google.com ([2607:f8b0:400d:c0d::231]:34380) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSB6V-0008KO-0g for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:17:51 -0500 Received: by mail-qt0-x231.google.com with SMTP id l7so61457551qtd.1 for ; Fri, 13 Jan 2017 15:17:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=7a/Gh5dLYZnEbCvAil2C7VlL79WZOIZH7i++OXXSfxw=; b=ip5FA0bU9J5XWD0gIfDf8oD2rK4bUgocYbJIqm/4WBeZLvpTMp0Jm8cBEmrClYHRzf IyWi5I5yAmuzKg+QLMr3s8XJ1B5dR8O7ukgqWZIQ7V062rP1QqNASiwLasxTGdvgXQIc A1VGbxe81uQRdmL2ss/WlUa0IP0p7prXh58x2zpcAQtmJFImt8jcOA0KTMyS71JHVzt7 nX9Rikk5bmWBCiuKHjQaiXgZcaBivKKYd7/Oj2/8fNVdtxOzPrgXcsFI/3YVqRTlZM6H UY1CVzO1jQNlKCRRpoy79lnef3V1tmez6bq1X1BX56gdgqox5RfIuGITWtbJWPnOIE2I dZxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=7a/Gh5dLYZnEbCvAil2C7VlL79WZOIZH7i++OXXSfxw=; b=aIeVZTDDqLeIAHLidXbmkA0eBl3zO914qHCo8YW7K/yBZXcBgIQuDejmI9B+KFKPZ3 hCh99MaNwUiS0PrW92vRXt+oOorpSRq/XHemOk+XJi1vt1WongYZMU6JjDASqfj9do7/ qpjRl9QAvU1WZMCmZs1ldAp7GDcbMB63O/E5htwNuFVqqJ/+ZRhAmZrsJUXqFo8qHRri TtR6h37Go5XMpPDGmQCCREU9Vl8UEGjIzZ1Fd+BcjedbsyNHzfD1Ohm3LW1MBlRgo1lK 8Ss4d1Y5cxZ3s7cxCVyeO9VzE3wiy5m4RENtnIio8Jx0IdzK/WEkbtvoalPPQF7hhv1i IpOA== X-Gm-Message-State: AIkVDXImgnrCI/Dro+F67TPs0yRgSKnaQwUV6scWOUmUEFdQr9L93lXAf7GDE3oq+HAIA8FVwsxh75omep3PwQ== X-Received: by 10.200.49.106 with SMTP id h39mr21882386qtb.257.1484349470564; Fri, 13 Jan 2017 15:17:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.237.57.169 with HTTP; Fri, 13 Jan 2017 15:17:30 -0800 (PST) From: Edward Hart Date: Fri, 13 Jan 2017 23:17:30 +0000 Message-ID: Subject: [ELPA] New package: cobol-mode To: emacs-devel@gnu.org Cc: Simon Sobisch , joakim.jalap@fastmail.com, monnier@iro.umontreal.ca Content-Type: multipart/alternative; boundary=001a1142d35cea68a20546020a9d X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 23:17:53 -0000 --001a1142d35cea68a20546020a9d Content-Type: text/plain; charset=UTF-8 Hi everyone, I'd like to submit cobol-mode.el, a major mode for COBOL, everyone's favourite legacy programming language. It features syntax highlighting for most modern COBOL dialects, indentation, code skeletons, rulers and basic formatting functions. It works with both fixed and free source format code. It is currently hosted at https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca. Apologies to those who have been waiting over a year for me to submit this. Regards, Edward Hart --001a1142d35cea68a20546020a9d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi everyone,

I'd like to submit cob= ol-mode.el, a major mode for COBOL, everyone's favourite legacy program= ming language. It features syntax highlighting for most modern COBOL dialec= ts, indentation, code skeletons, rulers and basic formatting functions. It = works with both fixed and free source format code.

It is currently hosted at=C2=A0https://gist.github.com/Edward-H/6768e7dc53ea3dd2adc= a.

Apologies to those who have been waiting ov= er a year for me to submit this.

Regards,
Edward Hart
--001a1142d35cea68a20546020a9d-- From MAILER-DAEMON Fri Jan 13 18:35:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSBNL-0005dj-I1 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 18:35:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49748) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSBNH-0005bm-CK for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:35:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSBNE-0005B0-Ce for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:35:11 -0500 Received: from disu.se ([71.19.156.204]:58470) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSBND-00058M-VJ for emacs-devel@gnu.org; Fri, 13 Jan 2017 18:35:08 -0500 Received: from mail-qt0-f180.google.com (mail-qt0-f180.google.com [209.85.216.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by disu.se (Postfix) with ESMTPSA id B4A80C0DB for ; Sat, 14 Jan 2017 00:35:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=disu.se; s=mail; t=1484350508; bh=dDbVk5HzzIi2rm4mTjYCDctfKXdIT2SD59YuaI6ntE0=; l=348; h=From:Date:Subject:To:From; b=JAdaHEttZPgY2NjgteyTOapy2RkWtZFqL1QjWzjhc1BoUN3+uabLtfgkGDWeFaEXt 7EyPsTvTI2S5luNSf52Ijk9ksVAzJX197rdnDu+NM+LfKWW2Kgv19z2KKRVhZPAzZM S8icqdBaHaZrpJVxs4T49fzDponrhYRoIeAEGzqQ= Received: by mail-qt0-f180.google.com with SMTP id x49so61389781qtc.2 for ; Fri, 13 Jan 2017 15:35:05 -0800 (PST) X-Gm-Message-State: AIkVDXIW9Yw7EHV1jY6iWvJnL47JKnJdDwR8nhKN0LULwE1svhlLYgUduatWuSzw9dULdZHvngNZ8XS+1UGnrQ== X-Received: by 10.200.51.26 with SMTP id t26mr22231582qta.106.1484350505048; Fri, 13 Jan 2017 15:35:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.55.115.134 with HTTP; Fri, 13 Jan 2017 15:35:04 -0800 (PST) From: Nikolai Weibull Date: Sat, 14 Jan 2017 00:35:04 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: `whitespace-line-column' is off by one To: Emacs Developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 71.19.156.204 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jan 2017 23:35:12 -0000 Hi! The documentation for `whitespace-line-column' says that it=E2=80=99s used = to =E2=80=9Cspecify column beyond which the line is highlighted=E2=80=9D. In = fact, the column specified is included, so it=E2=80=99s not quite =E2=80=9Cbeyond=E2= =80=9D. Inside `whitespace-color-on', rem should be (+ 1 rem) inside the call to `format'. From MAILER-DAEMON Fri Jan 13 19:27:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSCCH-00069X-I8 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 19:27:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55536) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSCCF-00069R-84 for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:27:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSCCA-0004NO-9r for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:27:51 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:40367) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSCCA-0004NG-5h for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:27:46 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 31E582090D for ; Fri, 13 Jan 2017 19:27:44 -0500 (EST) Received: from web5 ([10.202.2.215]) by compute2.internal (MEProxy); Fri, 13 Jan 2017 19:27:44 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=smtpout; bh=heWegBK2CyNKV6RSHD57Ng0tS ek=; b=oYxFV3NaLymkEHki+Ig6TqNmAlpVA6JYMvGULfLiDWUv390bysQqzFDs5 FN4iUO5ig/NEMWWAG/gMrIzRV6b+ExpSA0XFkb62EHOBtGZbu+3nD2t+h9Fi/23+ +LTuTArJLQM+7UDQKlvbzGu+I7paAa6Boyxwx1FL2u3I9qa53g= X-ME-Sender: Received: by mailuser.nyi.internal (Postfix, from userid 99) id 0279E6ABF3; Fri, 13 Jan 2017 19:27:43 -0500 (EST) Message-Id: <1484353663.1309303.847275520.34F44A3C@webmail.messagingengine.com> From: Dan LaManna To: emacs-devel@gnu.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" X-Mailer: MessagingEngine.com Webmail Interface - ajax-d492654e Date: Fri, 13 Jan 2017 19:27:43 -0500 Subject: Performing a 4 way diff with ediff X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 00:27:52 -0000 Hi all, I've been using ediff to resolve merge conflicts in git and it has the typical windows: ours, theirs, and merged results. However, I often want to see a 4th window (I believe this is called a 4 way diff) which is the common ancestor of ours and theirs (A and B). I believe such functionality exists in vimdiff - is there an ediff (or other emacs tool) offering similar functionality to this? Thanks, Dan From MAILER-DAEMON Fri Jan 13 19:55:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSCcX-000648-J1 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 19:55:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSCcU-00063p-M7 for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:54:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSCcQ-00040f-Do for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:54:58 -0500 Received: from mail-io0-x22f.google.com ([2607:f8b0:4001:c06::22f]:35393) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSCcQ-00040b-9h for emacs-devel@gnu.org; Fri, 13 Jan 2017 19:54:54 -0500 Received: by mail-io0-x22f.google.com with SMTP id j18so56263084ioe.2 for ; Fri, 13 Jan 2017 16:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=YWq+HIZ4YyT7/J2mTnlsi5B8Y3zLSWi3/u8RT+j9GZE=; b=bj2WLc3pkQGzAtDPvJD5RwT73ftvUg0g/SO0WNbv4wAilyu1aIOQowUgKVKTMWzhKj d7vBUoNnin4mzlTO5T3Iv5udwOZbKZNpKlzmnezqSrR/wjdqZAC0RFsv71K7ZRoBrKxx 5g7mTSYf0AfoVISt1gdscuQckN1DKfigEAlgxat64ozG3kHE7sfEWojM4EzIUBRYmAdW WAVmRcKLJkxAsQ9fWR5CSSXIyQC4PEtiZI6/44vO3x7SLR3iSFm85MuuO0CJvfXaVN1I Vhw4rsA3nUd2IfmWIR05t0q8WmKJeuLyNhej7tYXQXAcHuN1ueYik8dEZ2mjDQSrcp3S Dgzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=YWq+HIZ4YyT7/J2mTnlsi5B8Y3zLSWi3/u8RT+j9GZE=; b=lyAluyz/s7Ccm1yGDFgnqbf2Y/rjY4Y9qW1mUoyX1Lea3ZW8ScP09jnrwBOdV46JZV UO/xYKXY/a4BUTimzBZ0z0SGb9uFZoLJQYtNFuw3AHin74KmUIt++VNi3km8tY+Z3VIu e2lbSwYWvXji9Drn13AU0GxGf3SLdYu0lumQ+IUW0ohlseV/g4TrXNUaThLIind9cc54 vVZbNNi8MHDXlCs0oRY98quITYvRvFHSfOH622+X+1PhiFGOip+UPAiWgg2hOhErtlQN oEXlETyTzHUoLIr0Sc5gxK1srWK8LgGqsh80VQS1gRt/f9xhLIKVMiIJp6xwR9G5t9FR 2CDA== X-Gm-Message-State: AIkVDXLoZo8ksy1X79i3Yb5E3QjJcY5tH2cbSe7mhKuPudHASG+FE01LZLJrmYk+XBCN1Q== X-Received: by 10.107.140.193 with SMTP id o184mr20668641iod.17.1484355293320; Fri, 13 Jan 2017 16:54:53 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id g186sm1790003itb.4.2017.01.13.16.54.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 13 Jan 2017 16:54:52 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 336BFC7F0F9; Fri, 13 Jan 2017 16:55:38 -0800 (PST) To: Dan LaManna Cc: emacs-devel@gnu.org Subject: Re: Performing a 4 way diff with ediff In-Reply-To: <1484353663.1309303.847275520.34F44A3C@webmail.messagingengine.com> (Dan LaManna's message of "Fri, 13 Jan 2017 19:27:43 -0500") Date: Fri, 13 Jan 2017 16:55:36 -0800 Message-ID: References: <1484353663.1309303.847275520.34F44A3C@webmail.messagingengine.com> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Dan LaManna , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 00:55:00 -0000 >>>>> "DL" == Dan LaManna writes: DL> I've been using ediff to resolve merge conflicts in git and it has the DL> typical windows: ours, theirs, and merged results. However, I often want DL> to see a 4th window (I believe this is called a 4 way diff) which is the DL> common ancestor of ours and theirs (A and B). I believe such functionality DL> exists in vimdiff - is there an ediff (or other emacs tool) offering DL> similar functionality to this? Based on this stack overflow answer, maybe not yet: http://stackoverflow.com/questions/15587595/can-ediff-merge-simultaneously-show-the-ancestor-a-b-and-merge-buffers -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Fri Jan 13 20:00:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSCi7-00089H-6q for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 20:00:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59290) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSCi5-00089A-De for emacs-devel@gnu.org; Fri, 13 Jan 2017 20:00:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSCi4-0006Ky-JQ for emacs-devel@gnu.org; Fri, 13 Jan 2017 20:00:45 -0500 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:33558) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSCi2-0006KW-TR; Fri, 13 Jan 2017 20:00:43 -0500 Received: by mail-wm0-x231.google.com with SMTP id n129so15832329wmn.0; Fri, 13 Jan 2017 17:00:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=Vg6dVZp9NaJ6F86tydfhiZv5NSfeo+FwxrrKN0z4xpM=; b=ZukYSy8TcPZCSPDiJVANV6BOX7W/zK5w58XrdABnS17TY+kg4C7CVwziaubDGnDUnH +fqjBR+Ioy6GmDatl2SZH82FUWOSR5dyWebmWT60QrgJrIAJU+kWg2PY56LcFBKR7/N2 qaK6AbUypj/ODgFqD+f/QKCI49iXyr9hZSeyU48ya2HDuOQro0ee1SnV3gNGsTDFK6zs QftsKYJE6DWJU9DYp88/cOmCI6G05Uywa4zhzBU9hVyL1hYg5sitgGAslgRWzYV9W/I3 po5qXtJUiUW6pywpdXylhfyfDYHXVq1Zympo6iX6L9aUwMPR1Pnj05IyCYXHodbrDSpC JLyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=Vg6dVZp9NaJ6F86tydfhiZv5NSfeo+FwxrrKN0z4xpM=; b=i4W0nC9Bp39wbw9vyb8GqVQd3he97vbmMYfhdcYhjplZmrBAiWouTCMx+lH+EU8OJD FsMjRibJ35cZD5+g58zyAYo2W09klSrZxy+Lzm/bUpX619efTlxMOMePQ63n5hWi83Sz 89ou7TOIhDxS0TPYM2SsYIGtA8fJZJvepN8gCPhMGdc2v6q4V8SezOcpdUZ72vSY+rJ8 HilqeuMLajx0XhsStm3K5T4ld2vPsUa0nYnKFk3DIscZ+ICgvryOoRRMMoIg5L9u9LUs QrHu/PQU51eA0PhIHERV0YXuf6+qhNGEPeRA9pZt9C8DKb6YG+fE6ap11mFc0zt3L521 VI8Q== X-Gm-Message-State: AIkVDXI+8hiH9BLIgOWpXUJWW7CaijA+ViSTyzNDqebNOqSYlxQLdiWGN3Ccl3qbe+d7nXSNyZtLTCJsOsH7dg== X-Received: by 10.223.148.135 with SMTP id 7mr13832816wrr.150.1484355641343; Fri, 13 Jan 2017 17:00:41 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.148.110 with HTTP; Fri, 13 Jan 2017 16:59:59 -0800 (PST) In-Reply-To: <57A6F574.7090101@gmx.at> References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> From: Juanma Barranquero Date: Sat, 14 Jan 2017 01:59:59 +0100 Message-ID: Subject: Re: About the 'minibuffer' frame parameter To: martin rudalics Cc: Drew Adams , Eli Zaretskii , Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 01:00:46 -0000 [Answering to something from a few months ago...] > IIUC =E2=80=98frameset--record-minibuffer-relationships=E2=80=99 is an at= tempt to fix > what gets reported via =E2=80=98frame-parameters=E2=80=99. It must have = been a hair > raising experience for Juanma to code that. It had its moments (so the long comment/rant section), but it was also fun. > I slowly begin to understand why Juanma gave up coding for Emacs :-( I didn't gave up, life just dealt me a really weird couple of years. Juanma From MAILER-DAEMON Fri Jan 13 21:30:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSE77-0005jL-1o for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 21:30:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSE74-0005j1-E8 for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:30:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSE71-0004JW-6R for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:30:38 -0500 Received: from [195.159.176.226] (port=42328 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSE70-0004Fz-PM for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:30:35 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSE6o-00022S-Lq for emacs-devel@gnu.org; Sat, 14 Jan 2017 03:30:22 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Rolf Ade Subject: Re: Anaphoric macros: increase visibility Date: Sat, 14 Jan 2017 03:30:19 +0100 Organization: Me Lines: 31 Message-ID: <87k29y2x1g.fsf@pointsman.de> References: <87wpdyivvf.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:Bf4A07k5UHvUiFVxWqFSiXDhk4I= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 02:30:39 -0000 Michael Heerdegen writes: > We also already have `if-let' and `when-let' in "subr-x". They are like > `aif' and `awhen' but you specify "it" explicitly. Since you mention them ... I probably miss something obvious but from looking at the documentation of if-let if-let is a Lisp macro in ‘subr-x.el’. (if-let BINDINGS THEN &rest ELSE) Process BINDINGS and if all values are non-nil eval THEN, else ELSE. Argument BINDINGS is a list of tuples whose car is a symbol to be bound and (optionally) used in THEN, and its cadr is a sexp to be evalled to set symbol’s value. In the special case you only want to bind a single value, BINDINGS can just be a plain tuple. and of if-when when-let is a Lisp macro in ‘subr-x.el’. (when-let BINDINGS &rest BODY) Process BINDINGS and if all values are non-nil eval BODY. Argument BINDINGS is a list of tuples whose car is a symbol to be bound and (optionally) used in BODY, and its cadr is a sexp to be evalled to set symbol’s value. In the special case you only want to bind a single value, BINDINGS can just be a plain tuple. I don't get, why there is a need for if-when? From MAILER-DAEMON Fri Jan 13 21:49:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSEOy-0003H1-Qr for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 21:49:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSEOv-0003Ga-Sd for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:49:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSEOs-0000bp-Pz for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:49:05 -0500 Received: from [195.159.176.226] (port=52345 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSEOs-0000Zj-Iy for emacs-devel@gnu.org; Fri, 13 Jan 2017 21:49:02 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSEOX-0006cO-EQ for emacs-devel@gnu.org; Sat, 14 Jan 2017 03:48:41 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Rolf Ade Subject: Re: Anaphoric macros: increase visibility Date: Sat, 14 Jan 2017 03:48:25 +0100 Organization: Me Lines: 6 Message-ID: <87eg062w7a.fsf@pointsman.de> References: <87wpdyivvf.fsf@web.de> <87k29y2x1g.fsf@pointsman.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:iHCe6vxE0hg6EV+cCFOtQ0sTJwM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 02:49:07 -0000 Rolf Ade writes: > I don't get, why there is a need for if-when? ... for when-let, of course ... From MAILER-DAEMON Fri Jan 13 22:03:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSEcy-0000OF-D3 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 22:03:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSEcw-0000O8-0d for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:03:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSEcv-0005ga-90 for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:03:34 -0500 Received: from mail-oi0-x22b.google.com ([2607:f8b0:4003:c06::22b]:32899) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSEcv-0005gW-33 for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:03:33 -0500 Received: by mail-oi0-x22b.google.com with SMTP id w204so74907940oiw.0 for ; Fri, 13 Jan 2017 19:03:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=YBBCUoZqlwhsfzz+7ml3evSeGvCmSQk5e6ju1mbEEnI=; b=IvEcNgpFkmTCanhLuJ7TusLJMuZIDzCbK9Qq3PzoKYEuoJwLZy4xqsv3tczMCv0avj j4Rmca4UJEE8ETjS4dmeqcn7ceJb0BHZ44dIXBsCXBVgihnS8MedPHRLHuyu1nWG6NCI PDWjeaDJLlzSZj0Ovk/pyR/KHNW5s+ISY0duMSVRj/wCMJcUJK/CgTIlWGFz0228hFfr lyaxShLKyxvbCcL+7pnSC1wc0KRydTume/h1RPJ3UZ9hspIR3qB/aUvUUhRwYb7diqdP d8y7bvn/DLLAQx/z7vcCrJtt8K2ciG+ibWM8FPZbJfkmw9KCoBJhtDgsWt8U1UEhDSiT u/3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=YBBCUoZqlwhsfzz+7ml3evSeGvCmSQk5e6ju1mbEEnI=; b=Fk72L05AOrXh/h6zE3/rrLu5gSWOYl0LVN1nR0/UaKAuVfQkCJDtk2WWge1z91as6l i9UiK2TWEItpCPSs8lr3ilrK55VR1jCqwgN8N4OehsSJkwfdeGqHZkcem4kR1jtwX8ax AEj+45etpr8O23roDDJSKaciiulW4j8udtKZeEAfN9ZJt5yU/vrKOTUywUqSum0UchvM 97rjIsDnoXx++Tw8X4pN37uX7XIJIVK4UxoUR1ccqSk2FGR3lKgKfjy4mT2mNUuzNtqD z7mvRWgSFpSy34eO9TiksIZVFZn1MS1WY0d9Qjufudlt6XC7rtKBulEDcyzispeGbtit Pb+A== X-Gm-Message-State: AIkVDXKuPIOnEcAREYj4iEFpwqkUmOrMBkdwF7D9XUWoP9MVW5FnchADPl3TOS+aEUKu6iyzUvYrz7wWIJ06pA== X-Received: by 10.202.172.136 with SMTP id v130mr11547894oie.167.1484363011805; Fri, 13 Jan 2017 19:03:31 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Fri, 13 Jan 2017 19:03:31 -0800 (PST) In-Reply-To: <87k29y2x1g.fsf@pointsman.de> References: <87wpdyivvf.fsf@web.de> <87k29y2x1g.fsf@pointsman.de> From: Noam Postavsky Date: Fri, 13 Jan 2017 22:03:31 -0500 X-Google-Sender-Auth: wHG3Dtstc3eB21qjIA3Jjsgd-EI Message-ID: Subject: Re: Anaphoric macros: increase visibility To: Rolf Ade Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 03:03:34 -0000 On Fri, Jan 13, 2017 at 9:30 PM, Rolf Ade wrote: > > Michael Heerdegen writes: >> We also already have `if-let' and `when-let' in "subr-x". They are like >> `aif' and `awhen' but you specify "it" explicitly. > > Since you mention them ... I probably miss something obvious but from > looking at the documentation of if-let > > (if-let BINDINGS THEN &rest ELSE) > > and of when-let > > (when-let BINDINGS &rest BODY) > > I don't get, why there is a need for when-let? > Just like there is both `if' and `when', it's useful to have both `if-let' and `when-let'. From MAILER-DAEMON Fri Jan 13 22:31:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSF3t-0000lf-By for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 22:31:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSF3r-0000kj-OQ for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:31:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSF3o-00061C-M6 for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:31:23 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35804) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSF3o-000615-Gw for emacs-devel@gnu.org; Fri, 13 Jan 2017 22:31:20 -0500 Received: by mail-pg0-x242.google.com with SMTP id 204so97292pge.2 for ; Fri, 13 Jan 2017 19:31:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=8zGGPbVFwqYgR1jKeJftcdno8jYe2uvCH9N/Hn5T+NY=; b=ffeNkv8IMCTGA3lNho7GgdnetC5vVDpyaHtVMETS5ggoq44zjoxFiuVG66sAA029pv uXpLyXDf7AxFNAPcDZk54XpTvHw6p7sa99To4N/e7GqB6dtPJI9A7YNtdhw6GuDF3YIl WscT9QFevvaz4PAWxV/MRZZLp9AVkgMXL2TwptursMua0zzlt3gsvRCH0dkp5OcttDC2 BrzsSmxPc5dTzX16kJr6qH1ucEdAf0orszjHHnlCOGsyXqQdQyHd3S6Y3PWNsqH1pzsz OpUhTw5NERTP7CIhukQ+vzTChDlKlt/b8EX7Ruw1iSKGC4Di9j2RA8LYsvOEvo/98RNh tEQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:face:date :in-reply-to:message-id:user-agent:mime-version; bh=8zGGPbVFwqYgR1jKeJftcdno8jYe2uvCH9N/Hn5T+NY=; b=L6qh8QqNEOLvdVc6KlDrv5IgGQiZbAwVRTeoE2IX7InbHXWsmOGg11fCvTzqUaDGv0 m+ZHsc/daK7pDKUJJwlxNdzrEuq4Ww/INIosHkcwH/WgMeqtO5gwbvQ8oj6BM0dzIFec elo4NrQm6tIgjryOYwIYCk4Ekq4/bMp8RZAQVo9+sMePozKYMbF53dhSMbcBm/+ThlLR GqVlwwOkEkczMgeu2+bKC5krDtMexlbGPFn8yU//CH3QTfugVEIa7OvZQn9+xQr29msi 5yAQYNT8sPhivAzqI8FOx91FlbpLnsIrbfdv9onE26fFYB5hOns+RV0Gqu9d2HTyQOX2 qnGw== X-Gm-Message-State: AIkVDXITon0cs22sXeLgDlsS35I7hSMyBvBEdoyNghL7AAzHz70dHpeQQ0l2WjBxFwYjSw== X-Received: by 10.98.63.15 with SMTP id m15mr26226069pfa.71.1484364679457; Fri, 13 Jan 2017 19:31:19 -0800 (PST) Received: from Zeuss-MacBook-Air.local ([112.208.39.58]) by smtp.gmail.com with ESMTPSA id y23sm32082646pfi.66.2017.01.13.19.31.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 13 Jan 2017 19:31:18 -0800 (PST) From: Leo Liu To: Edward Hart Cc: emacs-devel@gnu.org Subject: Re: [ELPA] New package: cobol-mode References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAGFBMVEUzRVhbQj4eZqO6SjnT eWpxnMetm5b6/PmidmqrAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1F B9cBBwMLBfKABCMAAAFoSURBVCjPtZI9a8MwEIaFoc7aYDdelQMna0Em3tsSr0XUeE2Q6a22a+v+ fk8fSSBkbDUI6dHpfe9OEvRgiD+ApqKPJgJeB6iUUXWESjUe/ig38AJrhqqvaU2nTIXbNvOQ40fe qdry4kyGoVWsfCQalXpHnJGM01wjWdYbMlXNFdsZDO69m9aqNqxEJqTEgbM5OF7wlEfIoll1Ked4 LbM5X2EdILLokEdmI8z7g5cKED0cuTC930TYhy7ZDekkXVGw/L60TguJePPxcJF48lpsSUWEA/Ju jGFNgJOXc4Hz7TmAdBeu5Ve4AEjOi2/2jfd3cAJZ+IbNrvdjgBZY01b+HTuG3cLws6BJZqVOj/pp T0OqVwx3rFq+QmJwx3loK5JSLEhDIt62+mtC2C+SrAUxEbV6C6v2BRbd6pILBKFpepKZJHgGgrKF sptSUUoczpwg2pQ7ZH1tgs0ou/917mzz6Cs2//C978cv5l07L02orIEAAAAASUVORK5CYII= Date: Sat, 14 Jan 2017 11:31:15 +0800 In-Reply-To: (Edward Hart's message of "Fri, 13 Jan 2017 23:17:30 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (macOS 10.12.2) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 03:31:24 -0000 On 2017-01-13 23:17 +0000, Edward Hart wrote: > Hi everyone, > > I'd like to submit cobol-mode.el, a major mode for COBOL, everyone's > favourite legacy programming language. It features syntax highlighting for > most modern COBOL dialects, indentation, code skeletons, rulers and basic > formatting functions. It works with both fixed and free source format code. > > It is currently hosted at > https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca. That looks like a good addition to GNU ELPA. BTW, is it possible to make it use cl-lib instead? Leo From MAILER-DAEMON Fri Jan 13 23:13:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSFj2-0008WV-S4 for mharc-emacs-devel@gnu.org; Fri, 13 Jan 2017 23:13:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51993) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSFj0-0008WJ-5i for emacs-devel@gnu.org; Fri, 13 Jan 2017 23:13:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSFiy-0005b6-Q1 for emacs-devel@gnu.org; Fri, 13 Jan 2017 23:13:54 -0500 Received: from mail-ua0-x22b.google.com ([2607:f8b0:400c:c08::22b]:35411) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSFiy-0005ag-Kf for emacs-devel@gnu.org; Fri, 13 Jan 2017 23:13:52 -0500 Received: by mail-ua0-x22b.google.com with SMTP id y9so50482584uae.2 for ; Fri, 13 Jan 2017 20:13:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=C8ZFkSF8UjSsLs+Ij5gnzzmkya1z5SXlUGxqjBRhcHo=; b=f9/RplKpnODBRxUC1EF6nxzeD3ZcP30NnisFvpdZspkiYMNLRNLOmKimEz9zprnbTU 0q6KlDYNiBOhlCmLg5AMZWJpPgwCH6QwOxPtXBby7PP3UotalbbV/I4rCcyXq8/Ei3r9 opUEAwjNnTOYj5tNASvBXniYmdbr4mWORDO+riODOOHj8CECGhYRLzGcsKpQ2umLUJ8P 7zeFBKldalK/6OO/rlAsxeA3//UnVt7AO03W9nbgzyLy77Z6AWKlhprm38XpKUD77cbT gPu/agmzy24W6lbtCuYg0oSqWSb89DoDd0C2xTGewLtI+bWbS8dswmImfShlZIqZTByN ArxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=C8ZFkSF8UjSsLs+Ij5gnzzmkya1z5SXlUGxqjBRhcHo=; b=WWLoJzSxz2OKy7xr0PNfUOVw50HyzF8GGDS2gB/mVPLEjw5VIaaGkuhDo9B2RGDZoR oROWbopfVBaiBSpD46c5EB7f+n9Oy3rYbKsiEXkj8HuNMuUcPkTQFBBaCUDLhPLDqxcN e+sthvNOsopRYtpBrSfXCIKVslbtznPAqQ8tgeXHjY/phO2TG5YNP3exJ1ZKOjKnADTa a6FXAx/xdfIfJeZAJAFTTsOmnC7m7t4U3pmxbaQ50xrco59RnT2BfWode0oYcchw2qWg 8WCqubirNQDR3DMUHpxRDn9o0wZCqGymOeWS1YhwgGXmGtK/qj8R2PwR5v3L9IHHDCQi 3vNg== X-Gm-Message-State: AIkVDXK3Mya25eNvNKl6wvDyN7ETUwdvQ94tvSnqq4ywGJ01l2aZ7QScjePggxFdQ2MAHJHc6dtyM+IzrAoAFA== X-Received: by 10.176.81.124 with SMTP id f57mr11971180uaa.18.1484367230592; Fri, 13 Jan 2017 20:13:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.71.22 with HTTP; Fri, 13 Jan 2017 20:13:20 -0800 (PST) In-Reply-To: References: <87wpdyivvf.fsf@web.de> <87k29y2x1g.fsf@pointsman.de> From: Richard Copley Date: Sat, 14 Jan 2017 04:13:20 +0000 Message-ID: Subject: Re: Anaphoric macros: increase visibility To: Noam Postavsky Cc: Rolf Ade , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 04:13:55 -0000 On 14 January 2017 at 03:03, Noam Postavsky wrote: > On Fri, Jan 13, 2017 at 9:30 PM, Rolf Ade wrote: >> >> Michael Heerdegen writes: >>> We also already have `if-let' and `when-let' in "subr-x". They are like >>> `aif' and `awhen' but you specify "it" explicitly. >> >> Since you mention them ... I probably miss something obvious but from >> looking at the documentation of if-let >> >> (if-let BINDINGS THEN &rest ELSE) >> >> and of when-let >> >> (when-let BINDINGS &rest BODY) >> >> I don't get, why there is a need for when-let? >> > > Just like there is both `if' and `when', it's useful to have both > `if-let' and `when-let'. > Rolf, `when' and `when-let' are macros that expand to the corresponding `if' form without an ELSE, so strictly the `when' forms are redundant, as you suggest. But they make the code easier and quicker to read (and feel a little more natural to write), because you know the ELSE is null without having to think about it. Finding the ELSE (if any) of an `if' form can be quite a pain. The unusual indentation of the THEN clause exists for the same reason, but it's a bit ugly, which is a second (maybe less important) motivation for `when'. From MAILER-DAEMON Sat Jan 14 00:27:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSGsg-0005A3-8s for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 00:27:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSGse-00059x-15 for emacs-devel@gnu.org; Sat, 14 Jan 2017 00:27:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSGsa-0001WG-U9 for emacs-devel@gnu.org; Sat, 14 Jan 2017 00:27:56 -0500 Received: from mail-pf0-x232.google.com ([2607:f8b0:400e:c00::232]:32906) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSGsa-0001WC-Nb for emacs-devel@gnu.org; Sat, 14 Jan 2017 00:27:52 -0500 Received: by mail-pf0-x232.google.com with SMTP id y143so40012883pfb.0 for ; Fri, 13 Jan 2017 21:27:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=PGn4+IggamV6eiwdImvpAyRVZlPNokW9klZoHZWkC80=; b=gsECVD7MRzHZOjBgGpPpUlpCQX/xIZ/mdM+wKH35m9JxkU5lqIMYGzv2kMZh2Aqzzv BVZK31eGAzCRrE1FJ6nZ5kFtqolYeITtAfqxf3P6S/yo/soxQziSEW4E1Xn6bAWSSZ5C zws+sjxP/i4qL+Ct9SmnKc7L5kU/quBgJe+BXedCgSDUR/GjJB2wdesfclscGQgclBjb 47ZvxWxGKtUuOQ9iYB9Wop4Fzm5z+Ni/Z5DnY6KQYiZUKRDxdf8dFa0pX7kExinVWRdB nYqd+vTR+IlEtViFjFlCk7gvnjgfjPWZAEWc+HcNt4Poq6Y2ZZXnHcpwuk9Sq79nxGzS QeYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=PGn4+IggamV6eiwdImvpAyRVZlPNokW9klZoHZWkC80=; b=uKH/GqlRIRAiqNabNuGrJX3WgvYSDQO2c4pLPVRhBvjuK1xHycTpKwzlLBJKJaEBq1 uG55TsFCZpk+CyrQ2ZzhVqf82F3SrInJc3jg/sBu9cxieYGauK55vvO8Y/hr5AylzgZ8 DXubhn4dhLKrvMYC9t8/yKBqniEcBw5Rj3ZgzjLJ05WumaP4/smV/irJe/K1zSRhTMmd ismF7ZvlyFr9qGtEJC70JxtypQR/1z74EejETgQGnZBl1yGLqUorPx2bdj/E1tbAISmi RPxZszaIOSq33W7gOd6Rwf3x5vxjp1i38kHhPB7gbqL47YRleUSKRpr92b3PsJUHzO6R QV5w== X-Gm-Message-State: AIkVDXJDL3whHfaogzCEqsjuRMnxMjNmmzGRFKZIg25vz6yuw7nTUnfDdX9SslqrNEVBHw== X-Received: by 10.98.212.23 with SMTP id a23mr1705638pfh.18.1484371671810; Fri, 13 Jan 2017 21:27:51 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id o12sm32679686pfg.15.2017.01.13.21.27.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jan 2017 21:27:51 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Sat, 14 Jan 2017 14:27:47 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Michael Heerdegen cc: Tino Calancha , Emacs developers Subject: Re: Anaphoric macros: increase visibility In-Reply-To: <87wpdyivvf.fsf@web.de> Message-ID: References: <87wpdyivvf.fsf@web.de> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 05:27:57 -0000 On Fri, 13 Jan 2017, Michael Heerdegen wrote: > Tino Calancha writes: > >> Hi, >> >> I think anaphoric macros are a nice idiom; occasionally >> they allow to write very concise and clear expressions. >> >> AFAICS, in the Emacs tree they are just introduced in ibuf-macs.el >> (`ibuffer-aif', `ibuffer-awhen'). > > We also already have `if-let' and `when-let' in "subr-x". They are like > `aif' and `awhen' but you specify "it" explicitly. They looks also fun. Thanks. I wonder if it has sense to increase that family with a while-let (maybe others in case they are useful). >From 60f26b512b191add12a0c91dc4d7ff95aba080d9 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sat, 14 Jan 2017 14:25:42 +0900 Subject: [PATCH] * lisp/emacs-lisp/subr-x.el (while-let): New macro. --- lisp/emacs-lisp/subr-x.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 7736225b5f..5e7fdfaa09 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -141,6 +141,15 @@ when-let (declare (indent 1) (debug if-let)) (list 'if-let bindings (macroexp-progn body))) +(defmacro while-let (bindings &rest body) + "Process BINDINGS and eval BODY while all values are non-nil. +Argument BINDINGS is a list of tuples whose car is a symbol to be +bound and (optionally) used in BODY, and its cadr is a sexp to be +evalled to set symbol's value. In the special case you only want +to bind a single value, BINDINGS can just be a plain tuple." + (declare (indent 1) (debug t)) + `(while (when-let ,bindings (prog1 t ,@body)))) + (defsubst hash-table-empty-p (hash-table) "Check whether HASH-TABLE is empty (has 0 elements)." (zerop (hash-table-count hash-table))) -- 2.11.0 From MAILER-DAEMON Sat Jan 14 01:25:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSHmH-0004Ro-9V for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 01:25:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34840) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSHmF-0004Rh-2h for emacs-devel@gnu.org; Sat, 14 Jan 2017 01:25:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSHmB-0005O9-UE for emacs-devel@gnu.org; Sat, 14 Jan 2017 01:25:23 -0500 Received: from mail-lf0-x22c.google.com ([2a00:1450:4010:c07::22c]:33462) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSHmB-0005NA-Lo for emacs-devel@gnu.org; Sat, 14 Jan 2017 01:25:19 -0500 Received: by mail-lf0-x22c.google.com with SMTP id k86so51871169lfi.0 for ; Fri, 13 Jan 2017 22:25:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=fOzyB8QH0NHO4WvKnQuSkgqLLeujvUrGu+aS+bUYkvI=; b=fD5vFQJZISuCAuhtheGUcf403E1EHKqRzSg+8SKOg3fKtwl0qqHhMsPh7Lnx41jJhS 2M6M6VOG5iY08OO02hzSLCCtq2YZ2WVnQxUpq/tBmvBIrdbJg4I3qrCL7+cM81BntRo2 VFS43wOHnF0TaLF9t0oTGSFc4ppxj65OhR+Ts8HwKy0iYMlbgHvcKir3FknH2jkJcU4u /j+QumrVv2CzG+ZPUqEfpRWVMCTtvYzROckEnYJePPXgS2G1kiOAgNr3MlHRSRsly7fH 4SEqlP8O+Q8qL4uZB3rFuXwJcXOqd/hTFJlv1XegnYZmaXNyo8H6YID/Od+ekKCELNqg HnIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=fOzyB8QH0NHO4WvKnQuSkgqLLeujvUrGu+aS+bUYkvI=; b=XA66qoZFHFIhDtrcJxUUfEvfANEnfxxZSWmFbO0XDiTIs7Vch3K5hIcCxjBGJronc6 pO6LostA/OpSbFlK0ccVW3/bwjc+ckcTOxWp1RQ9gh+YY6nP2rNxzA/Z450yxnPV4ULY 0syWIVMkBepYBtfiIq1dHU8SxnCKXaAxbgiSC0Q/wBMsC2Laa9CsfGJEca50WJML1Ahl vj+Fn9ZwdVa0tiZoCEr1Gcku7g/ZIZiiFeKvNPM0VW874IJ4eBP028wPOMA0EzxrplSP gxc7Lg/LkRmS038uYuC+jyMHVzVEeCZN8jMzC+tM5h/2gIsbfgTfqXpBYhE8/0RyFrnO nfSg== X-Gm-Message-State: AIkVDXL04bvfKOkTAzRvAnEqEBjizCPWGkCvUoA6OxoJ9x4FFkPU9R4vN+1eN5wtWFPN7A== X-Received: by 10.25.24.156 with SMTP id 28mr9031560lfy.162.1484375117978; Fri, 13 Jan 2017 22:25:17 -0800 (PST) Received: from gmail.com ([46.48.49.226]) by smtp.gmail.com with ESMTPSA id j11sm4218073lfd.23.2017.01.13.22.25.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 13 Jan 2017 22:25:16 -0800 (PST) From: Dmitri Paduchikh To: Michael Heerdegen Cc: Tino Calancha , Emacs developers Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> Date: Sat, 14 Jan 2017 11:25:15 +0500 In-Reply-To: <87wpdyivvf.fsf@web.de> (Michael Heerdegen's message of "Fri, 13 Jan 2017 20:48:52 +0100") Message-ID: <87h9529n04.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 06:25:24 -0000 Michael Heerdegen wrote: > Tino Calancha writes: >> Hi, >> >> I think anaphoric macros are a nice idiom; occasionally >> they allow to write very concise and clear expressions. >> >> AFAICS, in the Emacs tree they are just introduced in ibuf-macs.el >> (`ibuffer-aif', `ibuffer-awhen'). > We also already have `if-let' and `when-let' in "subr-x". They are like > `aif' and `awhen' but you specify "it" explicitly. This explicitness argument seems to be standard criticism against anaphoric macros. But it's easy to fix by providing new names for these macros: if-it, when-it, and so on. Besides being more explicit these names are more readable than aif and awhen. Comparing if-it, when-it with if-let, when-let, it seems clear that they represent different tradeoffs of simplicity vs. flexibility. With best regards Dmitri Paduchikh From MAILER-DAEMON Sat Jan 14 02:47:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSJ3X-00087Q-Rh for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 02:47:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42312) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSJ3V-00086r-AX for emacs-devel@gnu.org; Sat, 14 Jan 2017 02:47:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSJ3S-0006QB-AB for emacs-devel@gnu.org; Sat, 14 Jan 2017 02:47:17 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51947) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSJ3S-0006Q2-6f; Sat, 14 Jan 2017 02:47:14 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4425 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSJ3Q-0003m4-Ab; Sat, 14 Jan 2017 02:47:13 -0500 Date: Sat, 14 Jan 2017 09:47:21 +0200 Message-Id: <83r346axrq.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: rudalics@gmx.at, drew.adams@oracle.com, emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sat, 14 Jan 2017 01:59:59 +0100) Subject: Re: About the 'minibuffer' frame parameter Reply-to: Eli Zaretskii References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 07:47:18 -0000 > From: Juanma Barranquero > Date: Sat, 14 Jan 2017 01:59:59 +0100 > Cc: Drew Adams , Eli Zaretskii , > Emacs developers > > > I slowly begin to understand why Juanma gave up coding for Emacs :-( > > I didn't gave up, life just dealt me a really weird couple of years. Are we lucky to have you back? From MAILER-DAEMON Sat Jan 14 02:57:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSJD0-0003kn-VO for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 02:57:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43549) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSJCy-0003ke-00 for emacs-devel@gnu.org; Sat, 14 Jan 2017 02:57:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSJCu-0000rm-WB for emacs-devel@gnu.org; Sat, 14 Jan 2017 02:57:04 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:35349) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSJCu-0000ra-QO for emacs-devel@gnu.org; Sat, 14 Jan 2017 02:57:00 -0500 Received: by mail-pf0-x241.google.com with SMTP id f144so10969676pfa.2 for ; Fri, 13 Jan 2017 23:57:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=S9j11Iq6b9xXpBi7Vp9sT9eB4mnoK2rQFi38gHYUbWI=; b=kKhX33miTUjkBVqKPr1c5MoIuknGQBKZI21FIgKn/7ATABWA0X11TWnduXyoaICpF4 w1Mdjj5nO17vFQE9gllPYAqj7us5LMyWbyFyrdO1tO8EDg2MVtmQLUswlex9FQDMf60w xMJM+2XDD/HnKzh8AcWr7hVjc924D6k0K5YFzcurOl26vyk4gpBcX0niP85r2HTbXT46 XEWW9h/gUryMJVCbF8/BaZ+jZCgFoqzfXkUn1RdSsDTAM+S6fi/IaH7PgK1jpOujduIZ oWkGw3RvX7FXWVgDq07ID7zUvEevAgo2CrhqXTYBz4eoAxTFdkhqzCv3/wGl/GrVZdDH LMCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=S9j11Iq6b9xXpBi7Vp9sT9eB4mnoK2rQFi38gHYUbWI=; b=bWhRcpv4Sc2e4GsAqkX6np5K+oHw3mwgY2dDujEw1TnKKxSZLAsaXkPA9N/ZHyR1/g ZpvqHIKYi5NcOC6w7HAaVDpSEclJ+JAxJiSBZGmrS2mbjHqOkv3BUWTTe3WKZoEEqtkZ dh+OwVqWpAnnaYVzQcdmbAJPPQKVCKTyn6N7UGQBImd+a48/Esi6wgNAc1zSAb0LUxQ9 VxVA5AAWbU455Bp4DIuXaFD7siruGxItgAdaa8Dro4MYrwrH7pD8ka/vMIbpj2IH5u9g ATLgdwvoHIYniV7yHoz4EpuUEkuJp5XnPa9YmCko8wNfAJesI7R+Jrv93wi8J0J7TNA9 iKvg== X-Gm-Message-State: AIkVDXJPg2JMwOEwv4jR5+wShBgkkdwjQU/Vj2Ihcin0ztC6f1rUMfPzQ3Mt1/9t0KKxUQ== X-Received: by 10.84.143.34 with SMTP id 31mr14958628ply.81.1484380619619; Fri, 13 Jan 2017 23:56:59 -0800 (PST) Received: from calancha-pc ([103.5.140.157]) by smtp.gmail.com with ESMTPSA id w76sm27905678pfd.74.2017.01.13.23.56.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jan 2017 23:56:59 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Sat, 14 Jan 2017 16:56:56 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Dmitri Paduchikh cc: Michael Heerdegen , Tino Calancha , Emacs developers Subject: Re: Anaphoric macros: increase visibility In-Reply-To: <87h9529n04.fsf@gmail.com> Message-ID: References: <87wpdyivvf.fsf@web.de> <87h9529n04.fsf@gmail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 07:57:05 -0000 On Sat, 14 Jan 2017, Dmitri Paduchikh wrote: >Comparing if-it, when-it with if-let, when-let, it seems >clear that they represent different tradeoffs of simplicity vs. flexibility. Do we need to choose? We could have defined both kinds of anaphoric macros. A) The simpler one is easier to read/understand. B) The more flexible one allow us to write uniformly several related forms. If i need > 1 binding i would use B), and if i just need one binding probably i would rather prefer A). >This explicitness argument seems to be standard criticism against anaphoric >macros. But it's easy to fix by providing new names for these macros: if-it, >when-it, and so on. Besides being more explicit these names are more readable >than aif and awhen. Although I prefer your names, i.e., if-it than aif, it might be argued that there are historical reasons in favour of the latter. Regards, Tino From MAILER-DAEMON Sat Jan 14 04:19:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSKUc-0004TY-Cq for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 04:19:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSKUa-0004SO-BO for emacs-devel@gnu.org; Sat, 14 Jan 2017 04:19:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSKUZ-0006Uq-Mr for emacs-devel@gnu.org; Sat, 14 Jan 2017 04:19:20 -0500 Received: from mail-wm0-x22a.google.com ([2a00:1450:400c:c09::22a]:36599) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSKUY-0006Uc-8K; Sat, 14 Jan 2017 04:19:18 -0500 Received: by mail-wm0-x22a.google.com with SMTP id c85so95220078wmi.1; Sat, 14 Jan 2017 01:19:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=J4D58fRkR16h7ySbMSegYtWKOYZ5qeZOA0ZN9+v12Tc=; b=PDD+Tbj33cIUuO/mYypK/1rEnVPsv3usTqFYK5yhm9pdYZDyFk/FA5Os110qiZevCY dIWemaXQ+n8MusP7LEIyHg8fZHPrsyGQ8DYz9+7spsyn6YgV+MTASi/pHBT6u9ItxwfA TfiCC/4XK4vQ8bFW4yhD08ezZjMDEaiiRP25q+QOLQEYMEGj2t4bhpTmnUh0PfVXMdxs vmGR1qrR+kQ8qNBGNJ61UA87dy/Gg7aEaAHIMPF023lBfmOLqZMOn0O0VCmmn5vHGrEL jcrWWr3ILlAPh1SgdDgAEi1ejwKJdRWBd1jYntJrTjYjO122PzfW2tPZ5XbBDEO3UbjK zD8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=J4D58fRkR16h7ySbMSegYtWKOYZ5qeZOA0ZN9+v12Tc=; b=Jk9f/S+czJIx0/byONbKjyjXtEYxFQEw6dccesESCHHrIQh9viBrO70X3wQefG8/4D zUtekF8RrrID9sgE5PJblqMUfE1iNZd1vry1rzEWB9GoIwxK2Ja7A26Dy8znDpNDrJNa R7A6DGPkmSDC6MYez8eBVQQiVbxPmMgkWxIz6i8CRhnhTs1f/OZRV6FQsYFz3VJBbbfA U9GZCnIkaxQvUg2yXy1gSuzDhMj2cnh23UbyW3InNAs3NAQtPRpFTnccVHQ48IQuhW9l Qm1fH42Tr678ZH/xSeUUalDrlFKOaBQIf90qg8ihP6rqAchI5PxW+pkZeLNvwhTYNHam gDow== X-Gm-Message-State: AIkVDXL6Z7hGc3fQsfNWzjEilbz6SKalbw9yDfcjwze0R0e2xK8f9pZJ+bjhpyWvMPj1eyQwB63gkknXGHHFVQ== X-Received: by 10.28.195.70 with SMTP id t67mr5475313wmf.98.1484385557074; Sat, 14 Jan 2017 01:19:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 14 Jan 2017 01:18:36 -0800 (PST) In-Reply-To: <83r346axrq.fsf@gnu.org> References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 14 Jan 2017 10:18:36 +0100 Message-ID: Subject: Re: About the 'minibuffer' frame parameter To: Eli Zaretskii Cc: martin rudalics , Drew Adams , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 09:19:21 -0000 On Sat, Jan 14, 2017 at 8:47 AM, Eli Zaretskii wrote: > Are we lucky to have you back? I think so. But first I'll have to spend a little time setting my building environment. Juanma From MAILER-DAEMON Sat Jan 14 05:15:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSLNN-0007oJ-0j for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 05:15:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57125) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSLNK-0007oD-JW for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:15:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSLNH-00079R-78 for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:15:54 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:32914) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSLNG-00079E-WE for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:15:51 -0500 Received: by mail-lf0-x243.google.com with SMTP id x1so2619746lff.0 for ; Sat, 14 Jan 2017 02:15:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Ub/choagCKBzFL01A4zoeUdWfUiIw6PTSWUbhHMoBl8=; b=MQoFIG9BI8BqNHDHqMjOtXS6IalZR7P79+bbIjPsxaB/kpCR3UadlPwE8DJ1FrpwiE uLD+jpFo54YQ7m4e6KSz6u2tgzQRXGMcH1Rs78x7othphirQwj47+yz4c4Qc79PDiFko lr7cl+94zBTI3C5YKyAahsrs2t55445MPmIGwe6OPamQDM+aGkjKYr4v9bDqfkqYKIut mArclfixGKXMmfiS1wbHvFuCodMga5Q3AoT4pTxi4fdV6GhRBthg0rBKarT3hJLTblTT IRhpbJiYucVsuQd7qTCY3GRwbJGuLsp8xZkTtD5oy5+EQaLYjt8PIe43doaLHo/aJdVB NlOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=Ub/choagCKBzFL01A4zoeUdWfUiIw6PTSWUbhHMoBl8=; b=pUUQUtdRas+lHq4DvxxKy6mV0p5koAte7uO7eCa0De7RNONaLa2OeIRlJeuVKb92ws mfaCbAsU8hYPOvwgSlW/VNTffNxhEzfEbWH2RFBMKjA9sO2CLEdUgf+EF2QKBOYR+/Fc qyONRalxCCjiL4pbwGdokMnlUdu2xxfXghB+JNmmvL6WwhSSic9HBvyN5sM5bM62q3F/ p1az/V0LiY6ZhaA0CkrNxqHH8esT586pthf08X2i6p/3+/CuUofBuFV02h0T4tWVXtF5 XEBm1ixDDSOaiyMUnToCZAdMZeeq0kYVLM1u0TwhgRBZvvr/oEvb15pj/Wo5/mJPce69 52iw== X-Gm-Message-State: AIkVDXKOQ+kgN8RzJ1sm1z5Ps+3Iot8DlnMm4nHU0iUwBIPwpqRYw7XwGV7nOUNtoPnSjg== X-Received: by 10.25.242.7 with SMTP id q7mr7680155lfh.19.1484388949688; Sat, 14 Jan 2017 02:15:49 -0800 (PST) Received: from gmail.com ([46.48.49.226]) by smtp.gmail.com with ESMTPSA id s63sm3201773lja.49.2017.01.14.02.15.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 14 Jan 2017 02:15:48 -0800 (PST) From: Dmitri Paduchikh To: Tino Calancha Cc: Michael Heerdegen , Emacs developers Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> <87h9529n04.fsf@gmail.com> Date: Sat, 14 Jan 2017 15:15:47 +0500 In-Reply-To: (Tino Calancha's message of "Sat, 14 Jan 2017 16:56:56 +0900 (JST)") Message-ID: <87d1fq9cbw.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 10:15:55 -0000 Tino Calancha wrote: > On Sat, 14 Jan 2017, Dmitri Paduchikh wrote: >>Comparing if-it, when-it with if-let, when-let, it seems >>clear that they represent different tradeoffs of simplicity vs. flexibility. > Do we need to choose? We could have defined both kinds of anaphoric > macros. I am not disagree with that. Just wanted to note that existing names of anaphoric macros are not best ones. [...] > Although I prefer your names, i.e., if-it than aif, it might be argued that > there are historical reasons in favour of the latter. Well, aif, awhen are at least more discoverable through C-h f aif for those who used to these names. They can be aliases. With best regards Dmitri Paduchikh From MAILER-DAEMON Sat Jan 14 05:41:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSLm6-0000t0-1D for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 05:41:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSLm2-0000sr-56 for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:41:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSLlz-0005q3-0d for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:41:26 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53966) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSLly-0005pz-SX; Sat, 14 Jan 2017 05:41:22 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4812 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSLlx-0001rK-OC; Sat, 14 Jan 2017 05:41:22 -0500 Date: Sat, 14 Jan 2017 12:41:32 +0200 Message-Id: <83k29xc49v.fsf@gnu.org> From: Eli Zaretskii To: Ken Raeburn CC: schwab@linux-m68k.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> (message from Ken Raeburn on Thu, 12 Jan 2017 03:17:40 -0500) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 10:41:29 -0000 > From: Ken Raeburn > Date: Thu, 12 Jan 2017 03:17:40 -0500 > Cc: Andreas Schwab , > monnier@iro.umontreal.ca, > emacs-devel@gnu.org > > I’ve just uploaded a workaround for that (including a comma-dot sequence that I’m not familiar with, but which seems to get the same treatment as comma and comma-at), and a bug fix I found relating to one of my earlier changes. > > Now, with your patch to avoid unexec, it’s successfully compiling in the lisp directory but fails It does fail for me while byte compiling 2 files: ELC leim/ja-dic/ja-dic.elc Loading ../src/dumped.elc... In toplevel form: leim/ja-dic/ja-dic.el:76:1:Error: Args out of range: " s ", 2432, 2432 Makefile:282: recipe for target `leim/ja-dic/ja-dic.elc' failed make[2]: *** [leim/ja-dic/ja-dic.elc] Error 1 ELC net/eww.elc Loading ../src/dumped.elc... In toplevel form: net/eww.el:29:1:Error: Undefined category: > Makefile:282: recipe for target `net/eww.elc' failed make[2]: *** [net/eww.elc] Error 1 The line number in the error message is bogus, it points to a require line (that's a known issue with byte-compiler error reporting, I think). Running the latter compilation under GDB, I see this: Thread 1 hit Breakpoint 3, Fsignal (error_symbol=21616, data=-4611686018320478144) at eval.c:1471 1471 signal_or_quit (error_symbol, data, false); (gdb) pp error_symbol error (gdb) pp data ("Undefined category: >") (gdb) bt #0 Fsignal (error_symbol=21616, data=-4611686018320478144) at eval.c:1471 #1 0x0114c616 in xsignal (error_symbol=21616, data=-4611686018320478144) at lisp.h:3872 #2 0x01221129 in xsignal1 (error_symbol=21616, arg=-9223372036747839088) at eval.c:1606 #3 0x01221df8 in verror ( m=0x167d0c5 "Undefined category: %c", ap=0x826bb4 ">") at eval.c:1791 #4 0x01221e16 in error ( m=0x167d0c5 "Undefined category: %c") at eval.c:1803 #5 0x011108b2 in Fmodify_category_entry (character=4611686018427387937, category=4611686018427387966, table=-6917529027624565016, reset=0) at category.c:368 #6 0x01225980 in Ffuncall (nargs=3, args=0x826d88) at eval.c:2726 #7 0x0128959c in exec_byte_code (bytestr=-9223372036747840008, vector=-6917529027534179736, maxdepth=4611686018427387911, args_template=0, nargs=0, args=0x0) at bytecode.c:639 #8 0x012886b0 in Fbyte_code (bytestr=-9223372036747840008, vector=-6917529027534179736, maxdepth=4611686018427387911) at bytecode.c:319 #9 0x012238ef in eval_sub (form=-4611686018320476528) at eval.c:2194 #10 0x01269693 in readevalloop (readcharfun=28056, stream=0x77c5fd00 , sourcename=-9223372036747840088, printflag=false, unibyte=0, readfun=0, start=0, end=0) at lread.c:1980 #11 0x01266f73 in Fload (file=-9223372036747853616, noerror=0, nomessage=55328, nosuffix=0, must_suffix=0) at lread.c:1367 #12 0x01223a45 in eval_sub (form=-4611686018320474720) at eval.c:2202 #13 0x0121c562 in Fprogn (body=-4611686018320474624) at eval.c:432 #14 0x0121c277 in Fif (args=-4611686018320475808) at eval.c:390 #15 0x012232ef in eval_sub (form=-4611686018320475824) at eval.c:2141 #16 0x01268a56 in readevalloop_eager_expand_eval (val=-4611686018320474576, macroexpand=62241920) at lread.c:1792 #17 0x01269679 in readevalloop (readcharfun=-6917529027540611248, stream=0x0, sourcename=-9223372036754301328, printflag=false, unibyte=0, readfun=0, start=0, end=0) at lread.c:1978 #18 0x01269b55 in Feval_buffer (buffer=-6917529027540611248, printflag=0, filename=-9223372036754305384, unibyte=0, do_allow_print=55328) at lread.c:2044 #19 0x01225a39 in Ffuncall (nargs=6, args=0x828098) at eval.c:2731 #20 0x0128959c in exec_byte_code (bytestr=-9223372036760655744, vector=-6917529027547213384, maxdepth=4611686018427387910, args_template=0, nargs=0, args=0x0) at bytecode.c:639 #21 0x01226fc8 in funcall_lambda (fun=-6917529027547213024, nargs=4, arg_vector=0x8286c0) at eval.c:2957 #22 0x01225e1f in Ffuncall (nargs=5, args=0x8286b8) at eval.c:2764 #23 0x01225110 in call4 (fn=64816760, arg1=-9223372036754305384, arg2=-9223372036754305384, arg3=0, arg4=55328) at eval.c:2599 #24 0x01266b7c in Fload (file=-9223372036754314936, noerror=0, nomessage=55328, nosuffix=0, must_suffix=55328) at lread.c:1311 #25 0x012391ce in Frequire (feature=76025368, filename=0, noerror=0) at fns.c:2894 #26 0x012258f2 in Ffuncall (nargs=2, args=0x829068) at eval.c:2722 #27 0x0122429d in Fapply (nargs=2, args=0x829068) at eval.c:2300 #28 0x012256f3 in Ffuncall (nargs=3, args=0x829060) at eval.c:2695 #29 0x0128959c in exec_byte_code (bytestr=-9223372036754937720, vector=-6917529027541241920, maxdepth=4611686018427387913, args_template=4611686018427388161, nargs=1, args=0x829648) at bytecode.c:639 #30 0x012268de in funcall_lambda (fun=-6917529027541241752, nargs=1, arg_vector=0x829640) at eval.c:2879 #31 0x01225e1f in Ffuncall (nargs=2, args=0x829638) at eval.c:2764 #32 0x0128959c in exec_byte_code (bytestr=-9223372036754938152, vector=-6917529027541242792, maxdepth=4611686018427387908, args_template=4611686018427388161, nargs=1, args=0x829bb0) at bytecode.c:639 #33 0x012268de in funcall_lambda (fun=-6917529027541242744, nargs=1, arg_vector=0x829ba8) at eval.c:2879 #34 0x01225e1f in Ffuncall (nargs=2, args=0x829ba0) at eval.c:2764 #35 0x0128959c in exec_byte_code (bytestr=-9223372036754938216, vector=-6917529027541242960, maxdepth=4611686018427387909, args_template=4611686018427388161, nargs=1, args=0x82a108) at bytecode.c:639 #36 0x012268de in funcall_lambda (fun=-6917529027541242912, nargs=1, arg_vector=0x82a100) at eval.c:2879 #37 0x01225e1f in Ffuncall (nargs=2, args=0x82a0f8) at eval.c:2764 #38 0x0128959c in exec_byte_code (bytestr=-9223372036755022888, vector=-6917529027541352232, maxdepth=4611686018427387914, args_template=4611686018427388418, nargs=2, args=0x82a698) at bytecode.c:639 #39 0x012268de in funcall_lambda (fun=-6917529027541352128, nargs=2, arg_vector=0x82a688) at eval.c:2879 #40 0x01225e1f in Ffuncall (nargs=3, args=0x82a680) at eval.c:2764 #41 0x0128959c in exec_byte_code (bytestr=-9223372036754938232, vector=-6917529027541242864, maxdepth=4611686018427387908, args_template=4611686018427388161, nargs=1, args=0x82abd8) at bytecode.c:639 #42 0x012268de in funcall_lambda (fun=-6917529027541242840, nargs=1, arg_vector=0x82abd0) at eval.c:2879 #43 0x01225e1f in Ffuncall (nargs=2, args=0x82abc8) at eval.c:2764 #44 0x0128959c in exec_byte_code (bytestr=-9223372036754939440, vector=-6917529027541248760, maxdepth=4611686018427387909, args_template=4611686018427388161, nargs=1, args=0x82b180) at bytecode.c:639 #45 0x012268de in funcall_lambda (fun=-6917529027541248584, nargs=1, arg_vector=0x82b178) at eval.c:2879 #46 0x01225e1f in Ffuncall (nargs=2, args=0x82b170) at eval.c:2764 #47 0x0128959c in exec_byte_code (bytestr=-9223372036754939488, vector=-6917529027541248536, maxdepth=4611686018427387920, args_template=4611686018427388161, nargs=1, args=0x82b848) at bytecode.c:639 #48 0x012268de in funcall_lambda (fun=-6917529027541248088, nargs=1, arg_vector=0x82b840) at eval.c:2879 #49 0x01225e1f in Ffuncall (nargs=2, args=0x82b838) at eval.c:2764 #50 0x0128959c in exec_byte_code (bytestr=-9223372036754945616, vector=-6917529027541250008, maxdepth=4611686018427387920, args_template=4611686018427388417, nargs=1, args=0x82bf80) at bytecode.c:639 #51 0x012268de in funcall_lambda (fun=-6917529027541249216, nargs=1, arg_vector=0x82bf78) at eval.c:2879 #52 0x01225e1f in Ffuncall (nargs=2, args=0x82bf70) at eval.c:2764 #53 0x0128959c in exec_byte_code (bytestr=-9223372036754832632, vector=-6917529027541134088, maxdepth=4611686018427387912, args_template=4611686018427388161, nargs=1, args=0x82c548) at bytecode.c:639 #54 0x012268de in funcall_lambda (fun=-6917529027541133960, nargs=1, arg_vector=0x82c540) at eval.c:2879 #55 0x01225e1f in Ffuncall (nargs=2, args=0x82c538) at eval.c:2764 #56 0x0128959c in exec_byte_code (bytestr=-9223372036754832680, vector=-6917529027541140920, maxdepth=4611686018427387914, args_template=4611686018427388160, nargs=0, args=0x82cba8) at bytecode.c:639 #57 0x012268de in funcall_lambda (fun=-6917529027541140760, nargs=0, arg_vector=0x82cba8) at eval.c:2879 #58 0x01225e1f in Ffuncall (nargs=1, args=0x82cba0) at eval.c:2764 #59 0x0128959c in exec_byte_code (bytestr=-9223372036757936560, vector=-6917529027544929360, maxdepth=4611686018427387927, args_template=4611686018427388161, nargs=1, args=0x82d5b8) at bytecode.c:639 #60 0x012268de in funcall_lambda (fun=-6917529027544928504, nargs=1, arg_vector=0x82d5b0) at eval.c:2879 #61 0x01225e1f in Ffuncall (nargs=2, args=0x82d5a8) at eval.c:2764 #62 0x0128959c in exec_byte_code (bytestr=-9223372036760992488, vector=-6917529027547292792, maxdepth=4611686018427387925, args_template=4611686018427387904, nargs=0, args=0x82e258) at bytecode.c:639 #63 0x012268de in funcall_lambda (fun=-6917529027547291064, nargs=0, arg_vector=0x82e258) at eval.c:2879 #64 0x01225e1f in Ffuncall (nargs=1, args=0x82e250) at eval.c:2764 #65 0x0128959c in exec_byte_code (bytestr=-9223372036756613024, vector=-6917529027542917320, maxdepth=4611686018427387916, args_template=4611686018427387904, nargs=0, args=0x82e850) at bytecode.c:639 #66 0x012268de in funcall_lambda (fun=-6917529027542916696, nargs=0, arg_vector=0x82e850) at eval.c:2879 #67 0x012263b2 in apply_lambda (fun=-6917529027542916696, args=0, count=21) at eval.c:2816 #68 0x01223de3 in eval_sub (form=-4611686018332481616) at eval.c:2233 #69 0x01222b56 in Feval (form=-4611686018332481616, lexical=0) at eval.c:2010 #70 0x01223886 in eval_sub (form=-4611686018328424112) at eval.c:2191 #71 0x0121c562 in Fprogn (body=-4611686018328424080) at eval.c:432 #72 0x012232ef in eval_sub (form=-4611686018328424240) at eval.c:2141 #73 0x01269693 in readevalloop (readcharfun=28056, stream=0x77c5fce0 , sourcename=-9223372036838132000, printflag=false, unibyte=0, readfun=0, start=0, end=0) at lread.c:1980 #74 0x01266f73 in Fload (file=-9223372036838132176, noerror=0, nomessage=0, nosuffix=0, must_suffix=0) at lread.c:1367 #75 0x01223a45 in eval_sub (form=-4611686018340754848) at eval.c:2202 #76 0x012205e2 in internal_lisp_condition_case (var=0, bodyform=-4611686018340754848, handlers=-4611686018340754768) at eval.c:1285 #77 0x0121fe64 in Fcondition_case (args=-4611686018340754736) at eval.c:1211 #78 0x012232ef in eval_sub (form=-4611686018340754720) at eval.c:2141 #79 0x01222b56 in Feval (form=-4611686018340754720, lexical=0) at eval.c:2010 #80 0x01155640 in top_level_2 () at keyboard.c:1127 #81 0x01220675 in internal_condition_case (bfun=0x115560a , handlers=21616, hfun=0x1154dc1 ) at eval.c:1314 #82 0x011556a6 in top_level_1 (ignore=0) at keyboard.c:1135 #83 0x0121f7fd in internal_catch (tag=57512, func=0x1155646 , arg=0) at eval.c:1080 #84 0x01155522 in command_loop () at keyboard.c:1096 #85 0x011547f3 in recursive_edit_1 () at keyboard.c:703 #86 0x01154a8f in Frecursive_edit () at keyboard.c:774 #87 0x01152244 in main (argc=7, argv=0xa440d8) at emacs.c:1698 Lisp Backtrace: "modify-category-entry" (0x826d90) "byte-code" (0x827270) "load" (0x827a90) "if" (0x827cc0) "eval-buffer" (0x8280a0) "load-with-code-conversion" (0x8286c0) "require" (0x829070) "apply" (0x829068) "byte-compile-file-form-require" (0x829640) "byte-compile-file-form" (0x829ba8) 0x5f36be0 PVEC_COMPILED "byte-compile-recurse-toplevel" (0x82a688) "byte-compile-toplevel-file-form" (0x82abd0) 0x5f355b8 PVEC_COMPILED "byte-compile-from-buffer" (0x82b840) "byte-compile-file" (0x82bf78) "batch-byte-compile-file" (0x82c540) "batch-byte-compile" (0x82cba8) "command-line-1" (0x82d5b0) "command-line" (0x82e258) "normal-top-level" (0x82e850) "eval" (0x82eb30) "progn" (0x82ed20) "load" (0x82f500) "condition-case" (0x82f7d0) (gdb) fr 11 #11 0x01266f73 in Fload (file=-9223372036747853616, noerror=0, nomessage=55328, nosuffix=0, must_suffix=0) at lread.c:1367 1367 readevalloop (Qget_file_char, stream, hist_file_name, (gdb) pp file "kinsoku" (gdb) So it is loading kinsoku.el, and the code which triggers this is this: (while (< idx len) (setq ch (aref kinsoku-bol idx) idx (1+ idx)) (modify-category-entry ch ?>))) The category '>' is defined in characters.el. Surprisingly, characters.elc in this branch is identical to the file on master, so byte compilation (see below) is off the hook here. What else could explain that this category is deemed unknown? Running the ja-dic.el compilation under GDB, I see this: Thread 1 hit Breakpoint 3, Fsignal (error_symbol=9464, data=-4611686018325493760) at eval.c:1471 1471 signal_or_quit (error_symbol, data, false); args-out-of-range (gdb) pp data (" s " 2432 2432) (gdb) bt #0 Fsignal (error_symbol=9464, data=-4611686018325493760) at eval.c:1471 #1 0x0114c616 in xsignal (error_symbol=9464, data=-4611686018325493760) at lisp.h:3872 #2 0x0122120b in xsignal3 (error_symbol=9464, arg1=-9223372036754289936, arg2=4611686018427390336, arg3=4611686018427390336) at eval.c:1618 #3 0x011f8170 in args_out_of_range_3 (a1=-9223372036754289936, a2=4611686018427390336, a3=4611686018427390336) at data.c:169 #4 0x0122f302 in validate_subarray (array=-9223372036754289936, from=4611686018427390336, to=4611686018427390336, size=4, ifrom=0x828da8, ito=0x828da4) at fns.c:1257 #5 0x0122f3a1 in Fsubstring (string=-9223372036754289936, from=4611686018427390336, to=4611686018427390336) at fns.c:1282 #6 0x0128a8b7 in exec_byte_code (bytestr=-9223372036754295792, vector=-6917529027540600688, maxdepth=4611686018427387908, args_template=0, nargs=0, args=0x0) at bytecode.c:958 #7 0x01226fc8 in funcall_lambda (fun=-6917529027540652976, nargs=1, arg_vector=0x829398) at eval.c:2957 #8 0x01225e1f in Ffuncall (nargs=2, args=0x829390) at eval.c:2764 #9 0x0128959c in exec_byte_code (bytestr=-9223372036754295728, vector=-6917529027540600592, maxdepth=4611686018427387912, args_template=0, nargs=0, args=0x0) at bytecode.c:639 #10 0x01226fc8 in funcall_lambda (fun=-6917529027540600496, nargs=15663, arg_vector=0x60c72d0) at eval.c:2957 #11 0x01225e1f in Ffuncall (nargs=15664, args=0x60c72c8) at eval.c:2764 #12 0x012246e8 in Fapply (nargs=2, args=0x829970) at eval.c:2343 #13 0x01224f2d in apply1 (fn=-6917529027540600496, arg=-4611686018326943040) at eval.c:2559 #14 0x0121f650 in Fmacroexpand (form=-4611686018326943056, environment=-4611686018327011424) at eval.c:1035 #15 0x0122588f in Ffuncall (nargs=3, args=0x829b48) at eval.c:2718 #16 0x0128959c in exec_byte_code (bytestr=-9223372036758992784, vector=-6917529027545329872, maxdepth=4611686018427387914, args_template=4611686018427388418, nargs=2, args=0x82a110) at bytecode.c:639 #17 0x012268de in funcall_lambda (fun=-6917529027545333672, nargs=2, arg_vector=0x82a100) at eval.c:2879 #18 0x01225e1f in Ffuncall (nargs=3, args=0x82a0f8) at eval.c:2764 #19 0x0128959c in exec_byte_code (bytestr=-9223372036755022888, vector=-6917529027541352232, maxdepth=4611686018427387914, args_template=4611686018427388418, nargs=2, args=0x82a698) at bytecode.c:639 #20 0x012268de in funcall_lambda (fun=-6917529027541352128, nargs=2, arg_vector=0x82a688) at eval.c:2879 #21 0x01225e1f in Ffuncall (nargs=3, args=0x82a680) at eval.c:2764 #22 0x0128959c in exec_byte_code (bytestr=-9223372036754938232, vector=-6917529027541242864, maxdepth=4611686018427387908, args_template=4611686018427388161, nargs=1, args=0x82abd8) at bytecode.c:639 #23 0x012268de in funcall_lambda (fun=-6917529027541242840, nargs=1, arg_vector=0x82abd0) at eval.c:2879 #24 0x01225e1f in Ffuncall (nargs=2, args=0x82abc8) at eval.c:2764 #25 0x0128959c in exec_byte_code (bytestr=-9223372036754939440, vector=-6917529027541248760, maxdepth=4611686018427387909, args_template=4611686018427388161, nargs=1, args=0x82b180) at bytecode.c:639 #26 0x012268de in funcall_lambda (fun=-6917529027541248584, nargs=1, arg_vector=0x82b178) at eval.c:2879 #27 0x01225e1f in Ffuncall (nargs=2, args=0x82b170) at eval.c:2764 #28 0x0128959c in exec_byte_code (bytestr=-9223372036754939488, vector=-6917529027541248536, maxdepth=4611686018427387920, args_template=4611686018427388161, nargs=1, args=0x82b848) at bytecode.c:639 #29 0x012268de in funcall_lambda (fun=-6917529027541248088, nargs=1, arg_vector=0x82b840) at eval.c:2879 #30 0x01225e1f in Ffuncall (nargs=2, args=0x82b838) at eval.c:2764 #31 0x0128959c in exec_byte_code (bytestr=-9223372036754945616, vector=-6917529027541250008, maxdepth=4611686018427387920, args_template=4611686018427388417, nargs=1, args=0x82bf80) at bytecode.c:639 #32 0x012268de in funcall_lambda (fun=-6917529027541249216, nargs=1, arg_vector=0x82bf78) at eval.c:2879 #33 0x01225e1f in Ffuncall (nargs=2, args=0x82bf70) at eval.c:2764 #34 0x0128959c in exec_byte_code (bytestr=-9223372036754832632, vector=-6917529027541134088, maxdepth=4611686018427387912, args_template=4611686018427388161, nargs=1, args=0x82c548) at bytecode.c:639 #35 0x012268de in funcall_lambda (fun=-6917529027541133960, nargs=1, arg_vector=0x82c540) at eval.c:2879 #36 0x01225e1f in Ffuncall (nargs=2, args=0x82c538) at eval.c:2764 #37 0x0128959c in exec_byte_code (bytestr=-9223372036754832680, vector=-6917529027541140920, maxdepth=4611686018427387914, args_template=4611686018427388160, nargs=0, args=0x82cba8) at bytecode.c:639 #38 0x012268de in funcall_lambda (fun=-6917529027541140760, nargs=0, arg_vector=0x82cba8) at eval.c:2879 #39 0x01225e1f in Ffuncall (nargs=1, args=0x82cba0) at eval.c:2764 #40 0x0128959c in exec_byte_code (bytestr=-9223372036757936560, vector=-6917529027544929360, maxdepth=4611686018427387927, args_template=4611686018427388161, nargs=1, args=0x82d5b8) at bytecode.c:639 #41 0x012268de in funcall_lambda (fun=-6917529027544928504, nargs=1, arg_vector=0x82d5b0) at eval.c:2879 #42 0x01225e1f in Ffuncall (nargs=2, args=0x82d5a8) at eval.c:2764 #43 0x0128959c in exec_byte_code (bytestr=-9223372036760992488, vector=-6917529027547292792, maxdepth=4611686018427387925, args_template=4611686018427387904, nargs=0, args=0x82e258) at bytecode.c:639 #44 0x012268de in funcall_lambda (fun=-6917529027547291064, nargs=0, arg_vector=0x82e258) at eval.c:2879 #45 0x01225e1f in Ffuncall (nargs=1, args=0x82e250) at eval.c:2764 #46 0x0128959c in exec_byte_code (bytestr=-9223372036756613024, vector=-6917529027542917320, maxdepth=4611686018427387916, args_template=4611686018427387904, nargs=0, args=0x82e850) at bytecode.c:639 #47 0x012268de in funcall_lambda (fun=-6917529027542916696, nargs=0, arg_vector=0x82e850) at eval.c:2879 #48 0x012263b2 in apply_lambda (fun=-6917529027542916696, args=0, count=21) at eval.c:2816 #49 0x01223de3 in eval_sub (form=-4611686018332481616) at eval.c:2233 #50 0x01222b56 in Feval (form=-4611686018332481616, lexical=0) at eval.c:2010 #51 0x01223886 in eval_sub (form=-4611686018328424112) at eval.c:2191 #52 0x0121c562 in Fprogn (body=-4611686018328424080) at eval.c:432 #53 0x012232ef in eval_sub (form=-4611686018328424240) at eval.c:2141 #54 0x01269693 in readevalloop (readcharfun=28056, stream=0x77c5fce0 , sourcename=-9223372036838132000, printflag=false, unibyte=0, readfun=0, start=0, end=0) at lread.c:1980 #55 0x01266f73 in Fload (file=-9223372036838132176, noerror=0, nomessage=0, nosuffix=0, must_suffix=0) at lread.c:1367 #56 0x01223a45 in eval_sub (form=-4611686018340754848) at eval.c:2202 #57 0x012205e2 in internal_lisp_condition_case (var=0, bodyform=-4611686018340754848, handlers=-4611686018340754768) at eval.c:1285 #58 0x0121fe64 in Fcondition_case (args=-4611686018340754736) at eval.c:1211 #59 0x012232ef in eval_sub (form=-4611686018340754720) at eval.c:2141 #60 0x01222b56 in Feval (form=-4611686018340754720, lexical=0) at eval.c:2010 #61 0x01155640 in top_level_2 () at keyboard.c:1127 #62 0x01220675 in internal_condition_case (bfun=0x115560a , handlers=21616, hfun=0x1154dc1 ) at eval.c:1314 #63 0x011556a6 in top_level_1 (ignore=0) at keyboard.c:1135 #64 0x0121f7fd in internal_catch (tag=57512, func=0x1155646 , arg=0) at eval.c:1080 #65 0x01155522 in command_loop () at keyboard.c:1096 #66 0x011547f3 in recursive_edit_1 () at keyboard.c:703 #67 0x01154a8f in Frecursive_edit () at keyboard.c:774 #68 0x01152244 in main (argc=7, argv=0xa440d8) at emacs.c:1698 Lisp Backtrace: "skkdic-extract-conversion-data" (0x829398) 0x5fd3950 PVEC_COMPILED "macroexpand" (0x829b50) "macroexp-macroexpand" (0x82a100) "byte-compile-recurse-toplevel" (0x82a688) "byte-compile-toplevel-file-form" (0x82abd0) 0x5f355b8 PVEC_COMPILED "byte-compile-from-buffer" (0x82b840) "byte-compile-file" (0x82bf78) "batch-byte-compile-file" (0x82c540) "batch-byte-compile" (0x82cba8) "command-line-1" (0x82d5b0) "command-line" (0x82e258) "normal-top-level" (0x82e850) "eval" (0x82eb30) "progn" (0x82ed20) "load" (0x82f500) "condition-case" (0x82f7d0) (gdb) fr 5 #5 0x0122f3a1 in Fsubstring (string=-9223372036754289936, from=4611686018427390336, to=4611686018427390336) at fns.c:1282 1282 validate_subarray (string, from, to, size, &ifrom, &ito); (gdb) pp string " s " (gdb) The error seems to come from this function in ja-dic-cnv.el: (defun skkdic-extract-conversion-data (entry) (string-match "^\\cj+[a-z]* " entry) (let ((kana (substring entry (match-beginning 0) (1- (match-end 0)))) (i (match-end 0)) candidates) (while (string-match "[^ ]+" entry i) (setq candidates (cons (match-string 0 entry) candidates)) (setq i (match-end 0))) (cons (skkdic-get-kana-compact-codes kana) candidates))) The call to 'substring' is the one that errors out. So this again points to some problem with categories, as "\\cj" is in the regexp. > make[2]: Entering directory '/home/raeburn/dev/emacs/s/lisp' > make -C ../leim all EMACS="../src/emacs" > make[3]: Entering directory '/home/raeburn/dev/emacs/s/leim' > /bin/mkdir -p ../lisp/leim/ja-dic > GEN ../lisp/leim/ja-dic/ja-dic.el > Loading ../src/dumped.elc... > Reading file "/home/raeburn/dev/emacs/s/leim/SKK-DIC/SKK-JISYO.L" ... > Processing OKURI-ARI entries ... > Debugger entered--Lisp error: (search-failed "^\\cH") > re-search-forward("^\\cH") > (let ((from (point)) to) (search-forward ";; okuri-nasi") (beginning-of-line) (setq to (point)) (narrow-to-region from to) (skkdic-convert-okuri-ari skkbuf buf) (widen) (goto-char to) (forward-line 1) (setq from (point)) (re-search-forward "^\\cH") (setq to (match-beginning 0)) (narrow-to-region from to) (skkdic-convert-postfix skkbuf buf) (widen) (goto-char to) (skkdic-convert-prefix skkbuf buf) (skkdic-collect-okuri-nasi) (skkdic-convert-okuri-nasi skkbuf buf) (save-current-buffer (set-buffer buf) (goto-char (point-max)) (insert ";;\n(provide 'ja-dic)\n\n" ";; Local Variables:\n" ";; version-control: never\n" ";; no-update-autoloads: t\n" ";; coding: utf-8\n" ";; End:\n\n" ";;; ja-dic.el ends here\n"))) Not sure why I didn't see the error with okuri-nasi, perhaps the previous build attempts already generated that. If I do touch leim/SKK-DIC/SKK-JISYO.L the next "make" indeed fails as on your system. One other thing I noticed is that most of the *.elc files produced by this build are different from those I see on master. The differences are sometimes just a few bytes (e.g., in mule-diag.elc), but sometimes much larger (e.g., files.elc). Perhaps this points to some subtle problem in byte compilation? But even if so, that cannot explain the failure to compile eww.el and ja-dic.el. HTH From MAILER-DAEMON Sat Jan 14 05:42:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSLnQ-0002cd-EC for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 05:42:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSLnL-0002c6-NH for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:42:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSLnK-0006Lv-To for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:42:47 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53987) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSLnK-0006Lo-QH; Sat, 14 Jan 2017 05:42:46 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4814 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSLnJ-0001xI-Sa; Sat, 14 Jan 2017 05:42:46 -0500 Date: Sat, 14 Jan 2017 12:42:56 +0200 Message-Id: <83inphc47j.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: rudalics@gmx.at, drew.adams@oracle.com, emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sat, 14 Jan 2017 10:18:36 +0100) Subject: Re: About the 'minibuffer' frame parameter Reply-to: Eli Zaretskii References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 10:42:50 -0000 > From: Juanma Barranquero > Date: Sat, 14 Jan 2017 10:18:36 +0100 > Cc: martin rudalics , Drew Adams , > Emacs developers > > On Sat, Jan 14, 2017 at 8:47 AM, Eli Zaretskii wrote: > > > Are we lucky to have you back? > > I think so. But first I'll have to spend a little time setting my > building environment. Great, thanks. From MAILER-DAEMON Sat Jan 14 05:55:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSM05-0006lb-Rk for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 05:55:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSM03-0006lV-Gm for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:55:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSM02-0001Eh-SU for emacs-devel@gnu.org; Sat, 14 Jan 2017 05:55:55 -0500 Received: from mail-out.m-online.net ([212.18.0.10]:56109) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSLzz-0001Du-2d; Sat, 14 Jan 2017 05:55:51 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3v0xHQ3NCrz3hk9G; Sat, 14 Jan 2017 11:55:46 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3v0xHQ1v73zvkjT; Sat, 14 Jan 2017 11:55:46 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id nOJDRXkZyZqe; Sat, 14 Jan 2017 11:55:44 +0100 (CET) X-Auth-Info: E2nBD6jNf2SfcXAXP7szMoVWEorkQUrVvyBdrTSLDQ2JxWtyz/KCz60/6nY1MmNx Received: from linux.local (ppp-88-217-30-182.dynamic.mnet-online.de [88.217.30.182]) by mail.mnet-online.de (Postfix) with ESMTPA; Sat, 14 Jan 2017 11:55:44 +0100 (CET) Received: by linux.local (Postfix, from userid 501) id 47B341E5484; Sat, 14 Jan 2017 11:55:42 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: Ken Raeburn , monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file References: <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> X-Yow: Did you GAIN WEIGHT in th' past 5 MINUTES or am I just DREAMING of two BROCCOLI FLORETS lying in an empty GAS TANK? Date: Sat, 14 Jan 2017 11:55:42 +0100 In-Reply-To: <83k29xc49v.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 14 Jan 2017 12:41:32 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 10:55:56 -0000 On Jan 14 2017, Eli Zaretskii wrote: > The line number in the error message is bogus, it points to a require > line (that's a known issue with byte-compiler error reporting, I > think). It's not bogus, since the error was raised while the byte-compiler evaluated the form there. Lisp errors don't carry line number information so there isn't much the byte-compiler can do. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Sat Jan 14 06:06:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSM9o-0002sn-Lf for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 06:06:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSM9m-0002rk-Jo for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:05:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSM9j-0003pD-GK for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:05:58 -0500 Received: from mout.gmx.net ([212.227.17.22]:49428) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSM9j-0003ov-6p; Sat, 14 Jan 2017 06:05:55 -0500 Received: from [192.168.1.100] ([212.95.7.4]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MVIva-1bw20E3Pwc-00YlRF; Sat, 14 Jan 2017 12:05:44 +0100 Message-ID: <587A0604.8000501@gmx.at> Date: Sat, 14 Jan 2017 12:05:40 +0100 From: martin rudalics MIME-Version: 1.0 To: Juanma Barranquero , Eli Zaretskii CC: Drew Adams , Emacs developers Subject: Re: About the 'minibuffer' frame parameter References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:QZ5bYHlB08DXcSQLze3ptp9Tdr4ecd3teN5EmqTxNGr4L2XKoPW BKR5HREwP4YUek59cm44fP/HyJHygcrYy8QyfkT798KqzjBeugqxdfJhN8ieKeSrQXGEc66 o9AkNnvqd60bCubeQFEP+yWdU2oU0BdCrlk3JH6QLR7weBQTiPJhxdKzc9ixybrGO+tlCaA PXV2JDPsannjXXSZRU9cQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:lsIsXUnJqHk=:gtTdCT+L6w6MU8FbXMqyRC P03cDFX3s1VoRG89yvILQvXs20oNUId2s98xn7NlUJrhdYd8hiIBdxxiEXq2Mv4zPMcm23k7u RWXi8KUodAzOJa97JaWWKsy46/N7pOTNAAAdgC/uBGkM213H1GR1LVr4GkfPGoXTeVQtZuOME 3CnVcPiDqwLGLtsJ5hmHBcoBK8dc19KAhFhTKqSrKf+s93tgw193xg0Rkd2wOy7OZHXalczGf FgJpDKl7Rm6GEiHJRoQQDxB+nHpjCS99mA4tAeqMvC+A1s8CmYU+dIy8DcvvUvlfaiJoEeEq9 NoHYUoyBP9Uw3bFu9PQo3oydqGbqBpqSI4IKhAOX/yf7uh3QQ8p2g5KzhXWv7wct1nspOB/iX 9xl/RKf7X0dSWtxaHI2sbNf4K38OSb/N5sdi/WOilaa5bXnFxWBzx4YqUKasyoeVpUVgORX2v szgeIb7y/WLyeG8O0qKx+JHxdwl8gsa0KjroVH+zpG99WzJT2Wkd2pG0rEtVUllv6ABOKpTC/ rpTT2qR151Z1Jm3Bkb0MrvxgZ3gYAOw+ja3HSLWXgHB0IAiyt+WkAmN4vWJibwH0Sg5o+oCPE bxZF8hRzP7+t+DBe54+5TzMs/tRcFAV/tPsKkgbvSxHTGNMT+WHubNuPivwH5/R2wULlSVUET QGGewEPz94aoP5wNoGHj4UO0+fuuEXPwo4uj5OgnR+5tfaxbQhpHufTpadngi9m3PhKmKjwyJ cM7yvU3ObBSVVINRVdt0XMElwqdJNoIUre5M4CPCX6lGzvSe+tPYkn5wyo7l3xBDrkVVzQJhb jptN+wiC4gtm1E7ij7ERPC5s1RvKZB1DI63mpYf8ayS7xl6JZfhH9UMeEYiUt+jwSA04tCGlh kx4Yyua1TIFlciXsR0hj6SkPAcvDGqOPFyKr4Jd0fPGm26JF9LVpW0yuD7hJJZhfL1zAsKyme iEH0pwUmv8Qnwu4BeKkzYoj6SoKMkP/oBG8a4zZNcnpBljaa60X2kopT37CCFIyAZWuQRzXBf qlzhP1pv9FWzUlBzqKH6EliSUSEXWjxdlhe0uuMSzSckm/FL8Tld0vpUlvrcN45kLQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 11:05:59 -0000 > I think so. But first I'll have to spend a little time setting my > building environment. We've been missing you. martin From MAILER-DAEMON Sat Jan 14 06:07:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSMAz-0004jH-4o for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 06:07:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35954) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSMAw-0004gv-M8 for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:07:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSMAt-00048W-IF for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:07:10 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54161) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSMAt-00048S-F6; Sat, 14 Jan 2017 06:07:07 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4834 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSMAs-0001Vq-LR; Sat, 14 Jan 2017 06:07:07 -0500 Date: Sat, 14 Jan 2017 13:07:17 +0200 Message-Id: <83eg05c32y.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: (message from Andreas Schwab on Sat, 14 Jan 2017 11:55:42 +0100) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 11:07:11 -0000 > From: Andreas Schwab > Cc: Ken Raeburn , monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Sat, 14 Jan 2017 11:55:42 +0100 > > On Jan 14 2017, Eli Zaretskii wrote: > > > The line number in the error message is bogus, it points to a require > > line (that's a known issue with byte-compiler error reporting, I > > think). > > It's not bogus, since the error was raised while the byte-compiler > evaluated the form there. It's "bogus" in the sense that it isn't useful for finding the code which triggered the error. From MAILER-DAEMON Sat Jan 14 06:27:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSMUU-0004Vb-9w for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 06:27:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38347) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSMUR-0004RM-RH for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:27:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSMUN-0003JT-DY for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:27:19 -0500 Received: from ocolin.muc.de ([193.149.48.4]:24869 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cSMUN-0003J3-7a for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:27:15 -0500 Received: (qmail 65258 invoked by uid 3782); 14 Jan 2017 11:27:13 -0000 Received: from acm.muc.de (p548C6A03.dip0.t-ipconnect.de [84.140.106.3]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sat, 14 Jan 2017 12:27:12 +0100 Received: (qmail 4868 invoked by uid 1000); 14 Jan 2017 11:26:58 -0000 Date: Sat, 14 Jan 2017 11:26:58 +0000 To: Eli Zaretskii Cc: Andreas Schwab , raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file Message-ID: <20170114112658.GA4824@acm.fritz.box> References: <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83eg05c32y.fsf@gnu.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 11:27:20 -0000 Hello, Eli. On Sat, Jan 14, 2017 at 01:07:17PM +0200, Eli Zaretskii wrote: > > From: Andreas Schwab > > Cc: Ken Raeburn , monnier@iro.umontreal.ca, emacs-devel@gnu.org > > Date: Sat, 14 Jan 2017 11:55:42 +0100 > > On Jan 14 2017, Eli Zaretskii wrote: > > > The line number in the error message is bogus, it points to a require > > > line (that's a known issue with byte-compiler error reporting, I > > > think). > > It's not bogus, since the error was raised while the byte-compiler > > evaluated the form there. > It's "bogus" in the sense that it isn't useful for finding the code > which triggered the error. Just as a matter of interest, I spent quite a bit of time in the summer trying to fix this. My approach was this: (i) The modified reader created an association list between each cons it creates and the source code position. (ii) Each time a compiler function transformed such a cons, instead of the function returning the transformed form, it did setcar/setcdr into the original cons to preserve the mapping in the association table. (iii) On emitting an error/warning, the compiler would look up the source code position in the association list. I'm confident that such an approach would work. However, it was an enormous amount of work to adapt the compiler, and I got distracted by other things, so haven't managed to produce anything workable, yet. At least there's already a reliable test suite for this, namely make bootstrap. :-) -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sat Jan 14 06:38:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSMf3-0007xW-Ou for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 06:38:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39813) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSMf2-0007xN-3f for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:38:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSMf1-0007VA-Gm for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:38:16 -0500 Received: from mail-lf0-x22e.google.com ([2a00:1450:4010:c07::22e]:35408) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSMf1-0007Uq-9Y for emacs-devel@gnu.org; Sat, 14 Jan 2017 06:38:15 -0500 Received: by mail-lf0-x22e.google.com with SMTP id m78so54315403lfg.2 for ; Sat, 14 Jan 2017 03:38:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=qQaJuR5Fv8LP5VBm0Jozhbim8nTfdGjPNZ3yK6vWAHQ=; b=sANjloGjEOTzb64IBa+j6+dM/8XpiPZmMxPm6tx/n9rIrL5yNAopK/tpGwkS/q9sti a9TfHkvfJrmxoPmBM3tygem54a2sjasfSgcjEQwDWIjFKO/m7xeVFVH3V+yxL8uog6+N ZJwBrA9ZD9NnoQWtjCI9c50o18hEjwsaGeVgrhz2Tjz3n8pIwISWkPNMTGJkG+SfIp7C Ogt8ZI7KfGdqNyXyqJigmrHvY6sjUFGHG81FLj1ZzVGUshxe8UZ5wUSa2eb5uXUG+1UN 6AsAcS2TLDCOoET6s2UieNamK5USgndEBnsAO2SeucLA1dBb/rfPUQ73g37OavVFQ2yE J7rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=qQaJuR5Fv8LP5VBm0Jozhbim8nTfdGjPNZ3yK6vWAHQ=; b=I+JMH1tQXnwVgRQeGEOlrRk5VFjppnqDmJkPzymbXo5znrLq6JdhxlHFxGSStEQW+W Q5xRshDVk2pD+B9noYszJrYhjQ+GVjCFxGXtud97Pppaofxdeb3tgHawtyBi3lu0QNah RFuRRA4zmrtueprvX4GNjtPFnacJkr9TGpvY/eX+yED2vwdDSXrMbq3OIMkPqi7+6T3f 8TVgVwxjk4nLygx2U6mn+IBKCAiy/LPbCqfZh/+SJIXkJlilmtPgt9ADENyadsiKNtz8 PFPKOIXGQcbAKU6xyRn8qwCTzd9cfzLiynwdr+6Ilvu45sosWYw+f7wMBfAqrFIt8QDL fpgQ== X-Gm-Message-State: AIkVDXLwcuVLnW/Mmg3nRIMqEfCk60Wh4IWy7GMBd2NgrtcTFQVtV1ITXA5BJrWfdhynHD7cpfttzSfhnOi2KQ== X-Received: by 10.25.35.194 with SMTP id j185mr8260114lfj.21.1484393893411; Sat, 14 Jan 2017 03:38:13 -0800 (PST) MIME-Version: 1.0 Received: by 10.114.182.77 with HTTP; Sat, 14 Jan 2017 03:37:32 -0800 (PST) In-Reply-To: References: From: Rostislav Svoboda Date: Sat, 14 Jan 2017 12:37:32 +0100 Message-ID: Subject: Re: [ELPA] New package: cobol-mode To: Leo Liu Cc: Edward Hart , "emacs-devel@gnu.org Development" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 11:38:16 -0000 > I'd like to submit cobol-mode.el, a major mode for COBOL Thanks, if noone else then I will definitely have a look! From MAILER-DAEMON Sat Jan 14 07:19:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSNIt-0003iD-Cp for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 07:19:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSNIp-0003i6-0w for emacs-devel@gnu.org; Sat, 14 Jan 2017 07:19:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSNIo-0007zG-5F for emacs-devel@gnu.org; Sat, 14 Jan 2017 07:19:22 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:53987) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSNIk-0007yG-DC; Sat, 14 Jan 2017 07:19:18 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3v0z7j6Cdbz3hjQL; Sat, 14 Jan 2017 13:19:13 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3v0z7j57pPzvkkK; Sat, 14 Jan 2017 13:19:13 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id C0Ydhc40TRWl; Sat, 14 Jan 2017 13:19:12 +0100 (CET) X-Auth-Info: y4iTvpQRM5AI4XPszKhTMQ5lTOEusgTXXXlqZAPvhEk9RQM7YehUcvi+Z0q58bwz Received: from igel.home (ppp-88-217-30-182.dynamic.mnet-online.de [88.217.30.182]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sat, 14 Jan 2017 13:19:12 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 1E6602C3320; Sat, 14 Jan 2017 13:19:12 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file References: <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> X-Yow: ..Am I in a SOAP OPERA?? Date: Sat, 14 Jan 2017 13:19:12 +0100 In-Reply-To: <83eg05c32y.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 14 Jan 2017 13:07:17 +0200") Message-ID: <87inphx29r.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 12:19:26 -0000 On Jan 14 2017, Eli Zaretskii wrote: >> From: Andreas Schwab >> Cc: Ken Raeburn , monnier@iro.umontreal.ca, emacs-devel@gnu.org >> Date: Sat, 14 Jan 2017 11:55:42 +0100 >> >> On Jan 14 2017, Eli Zaretskii wrote: >> >> > The line number in the error message is bogus, it points to a require >> > line (that's a known issue with byte-compiler error reporting, I >> > think). >> >> It's not bogus, since the error was raised while the byte-compiler >> evaluated the form there. > > It's "bogus" in the sense that it isn't useful for finding the code > which triggered the error. It is as bogus as every Lisp error. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Sat Jan 14 07:23:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSNMU-0005Sd-MX for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 07:23:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44567) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSNMR-0005SV-Ld for emacs-devel@gnu.org; Sat, 14 Jan 2017 07:23:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSNMO-0000jC-Fy for emacs-devel@gnu.org; Sat, 14 Jan 2017 07:23:07 -0500 Received: from mailgw.mycpanelcloud.co.uk ([185.116.214.205]:17030) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSNMO-0000j3-4G for emacs-devel@gnu.org; Sat, 14 Jan 2017 07:23:04 -0500 Received: from localhost (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 0BFEAC523C for ; Sat, 14 Jan 2017 12:22:40 +0000 (GMT) X-Virus-Scanned: by SpamTitan at mycpanelcloud.co.uk Received: from mailgw.mycpanelcloud.co.uk (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 607B0C5143 for ; Sat, 14 Jan 2017 12:22:35 +0000 (GMT) Received: from cloud103.planethippo.com (cloud103.planethippo.com [31.216.48.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTPS id 54F86C4E50 for ; Sat, 14 Jan 2017 12:22:35 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=russet.org.uk; s=default; h=Content-Type:MIME-Version:Message-ID:Date: Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ZcgQ3mTu790GzFX1DbNDiBqWaOWAX5Ff5nhrKt0/RSE=; b=0cCCkAzC+qBzOD3eJzHcjyJL5t IpFMNRNg+SusqfTJe7tEeJkIPRhcnyc4GwPLiH+7ju0eN7JJGYv+mPLMgM29JTo+c8Sndn4/WpiTV BARYteD7rFtCRKs6YsQvCWDtjFwdbtpqpgSWywpKcMn9xvOJPhoVS+7pzN0LxHfJGsdJMw76nGpM8 zM3glkIoRD5Rp1gzMPggN72SlxGdz798LtUzY5DBEONlxFkoXXwslFsTr4joWpBxAVlW/nvfGwTJK veqCx0HhERpZIwkT9iUgvljxYLFk3qHqaS9RQmElq/ZECZ2HI+dkeFaeejJuC5RgPioUFBgZ+cNrz iaJ9tiVw==; Received: from cpc6-benw10-2-0-cust167.gate.cable.virginm.net ([92.238.179.168]:32866 helo=russet.org.uk) by cloud103.planethippo.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cSNMH-001fnd-1o for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:22:57 +0000 From: phillip.lord@russet.org.uk (Phillip Lord) To: emacs-devel@gnu.org Subject: standard output/error/input streams Date: Sat, 14 Jan 2017 12:22:50 +0000 Message-ID: <87wpdxu8yt.fsf@russet.org.uk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud103.planethippo.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - russet.org.uk X-Get-Message-Sender-Via: cloud103.planethippo.com: authenticated_id: phillip.lord@russet.org.uk X-Authenticated-Sender: cloud103.planethippo.com: phillip.lord@russet.org.uk X-detected-operating-system: by eggs.gnu.org: FreeBSD 8.x [fuzzy] X-Received-From: 185.116.214.205 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 12:23:08 -0000 I've worked up the patch that I made to add input streams for writing to the system standard out. There was some discussion about this in Jul. https://lists.gnu.org/archive/html/emacs-devel/2016-07/msg00910.html The new version is on feature/stdout-stderr-stream. Additions since last time. I've updated the names (external-standard-output, external-standard-error) and I have also added an input stream (external-standard-input). The main motivation for this is the same as last time; it gives a communication channel with Emacs which does not involve buffers at any point. Although, if you search for "Emacs" and "standard output", other people would like the same thing for other reasons. Can I add this to master? Phil From MAILER-DAEMON Sat Jan 14 08:02:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSNyT-0000QT-U3 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 08:02:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49690) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSNyR-0000QF-V8 for emacs-devel@gnu.org; Sat, 14 Jan 2017 08:02:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSNyO-0005wE-TE for emacs-devel@gnu.org; Sat, 14 Jan 2017 08:02:24 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:39291) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSNyO-0005vt-Mj for emacs-devel@gnu.org; Sat, 14 Jan 2017 08:02:20 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 65AE620881; Sat, 14 Jan 2017 08:02:18 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute4.internal (MEProxy); Sat, 14 Jan 2017 08:02:18 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=4qWrq2fq/U2yX5wAWWI/yrCYfHQ=; b=M1zMZX f7myFQ2cXHKODpSZgWQjfoXD6QP0FxDIaguBzPEW91eOJc7AD0ZhuloDftglcqoi 7HPaRUIBaHd9VkZm9G1IWPAKn4WZ+bF5zOMShJGrgiOO6SlnoS9eYJhjo0rc7JMZ r8e0bVohAKGHsVv5yS84eozbg28sMWqtkNuRU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=4qWrq2fq/U2yX5 wAWWI/yrCYfHQ=; b=Xds33qgTTMYnNX5JnrwrlaOE+I9cLGyXKj7jEbj7Rd4wCN 8IEPocnkozeyGuFhq1C5RMNA1gd1VfxSYhCk+xZkqThPZ59SAc1E6I7cFhWpXN0H PulIUjV+IQSEqFNxAbCBTY1JHD/O6w2OGQFf+F2udHGk8k1eqV/DvPNIctIuQ= X-ME-Sender: X-Sasl-enc: z2eBuj6Bz0yX3mbOoMGIy7EraAZm4+kvhy+ucIeU819K 1484398938 Received: from genserv (unknown [5.150.202.248]) by mail.messagingengine.com (Postfix) with ESMTPA id 90E0B24240; Sat, 14 Jan 2017 08:02:17 -0500 (EST) From: Joakim Jalap To: Edward Hart Cc: emacs-devel@gnu.org, Simon Sobisch , monnier@iro.umontreal.ca Subject: Re: [ELPA] New package: cobol-mode References: Date: Sat, 14 Jan 2017 14:02:16 +0100 In-Reply-To: (Edward Hart's message of "Fri, 13 Jan 2017 23:17:30 +0000") Message-ID: <87bmv9re07.fsf@fastmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.26 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 13:02:25 -0000 Edward Hart writes: > Hi everyone, > > I'd like to submit cobol-mode.el, a major mode for COBOL, everyone's favourite legacy programming language. It features syntax highlighting for most modern COBOL dialects, > indentation, code skeletons, rulers and basic formatting functions. It works with both fixed and free source format code. > > It is currently hosted at https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca. Terrific! :) I will be looking to add imenu support whenever I find the time :) > Apologies to those who have been waiting over a year for me to submit this. There's a Swedish saying: "The one who waits for something good never waits too long" :) From MAILER-DAEMON Sat Jan 14 08:05:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSO1m-00013i-Bx for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 08:05:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50683) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSO1k-00013c-AE for emacs-devel@gnu.org; Sat, 14 Jan 2017 08:05:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSO1h-0007Tl-4v for emacs-devel@gnu.org; Sat, 14 Jan 2017 08:05:48 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54953) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSO1h-0007TU-2D; Sat, 14 Jan 2017 08:05:45 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4982 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSO1g-0007XH-48; Sat, 14 Jan 2017 08:05:44 -0500 Date: Sat, 14 Jan 2017 15:05:54 +0200 Message-Id: <83a8atbxl9.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <87inphx29r.fsf@linux-m68k.org> (message from Andreas Schwab on Sat, 14 Jan 2017 13:19:12 +0100) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> <87inphx29r.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 13:05:49 -0000 > From: Andreas Schwab > Date: Sat, 14 Jan 2017 13:19:12 +0100 > Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org > > >> > The line number in the error message is bogus, it points to a require > >> > line (that's a known issue with byte-compiler error reporting, I > >> > think). > >> > >> It's not bogus, since the error was raised while the byte-compiler > >> evaluated the form there. > > > > It's "bogus" in the sense that it isn't useful for finding the code > > which triggered the error. > > It is as bogus as every Lisp error. On the contrary: most of them provide useful information about the error locus. This one clearly didn't. From MAILER-DAEMON Sat Jan 14 09:02:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSOuK-0004GP-8Q for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 09:02:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSOuI-0004Bn-Ir for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:02:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSOuH-0000Yf-Uj for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:02:10 -0500 Received: from mail-wm0-x22a.google.com ([2a00:1450:400c:c09::22a]:37622) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSOuG-0000YL-Dn; Sat, 14 Jan 2017 09:02:08 -0500 Received: by mail-wm0-x22a.google.com with SMTP id c206so110206024wme.0; Sat, 14 Jan 2017 06:02:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+DP0epVLShXHhuVRTGRrWhaGZqxouiGvO9QYay4WmMA=; b=KTUNI/ISC31b+McsbWx3sOIoJGQ//8QOfE6uEydpldRwgGeG8T2ghBIA1QICu/WyqL 1PBljIrrPXrBGkQHByd7jyw7GJAPaRB1L2J16yzhGUjwmN8OpBRLt/Q6k/P/UmJo5d2m kYOeWZkfLGKfkgOfsQY/8OH/26AuMDsFLtzmQOkOdRul+/uyBwXgDBK4pR2TlsTecorj DhAOYKrPo3ZnQONszV/dQF6E4Fhjehm3IDtPfDbgSPeGC15xIp52I6yNBUGfc+PJ3JQB oRisngEAnYuoIutwrSG/nzriaIhBQooeUYIAUId4WGSc1A70wfu0LZor1CPdw8JB9j45 Cihw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+DP0epVLShXHhuVRTGRrWhaGZqxouiGvO9QYay4WmMA=; b=hET6fmhmsXESfbMvoGXlyEJtvSDSTOpVJYtZsH2CLQ3ANG7jFVFQQqF12bcOqGec3a 913jLJrldaEKCR6SYqsaqjxzL1bOaGtifN1CkWNb+iqvRN9+CrT4FOYAgoNnLhVmWfkK Q0uOLr8KldYhUf5S88svkIQ/CqW4ksbTRjNlHr3jbPDkQDuloZGRES2QyvpQaCtxYslv TOTPLhdSU2H0FDZ+a6QJqWdvRkaTPbeuk/SGTdoMCXcIL/V19YnhyVQIJctbtleiErXG IW0G93lAAintBGcpd7rrzviZ8WIG/BQMkxTV6h7eaEFB10nPq+IwgSj353tlOyWFGa37 RnVw== X-Gm-Message-State: AIkVDXI+QTquzmDSvLJEuH5WGDsTK0cvuLi6QED/kS2HiHpM/DfbIkncVTCQp4m/DPNhGUE3p+/IPpej0VdMKQ== X-Received: by 10.28.99.66 with SMTP id x63mr5775051wmb.4.1484402527234; Sat, 14 Jan 2017 06:02:07 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 14 Jan 2017 06:01:26 -0800 (PST) In-Reply-To: <587A0604.8000501@gmx.at> References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> <587A0604.8000501@gmx.at> From: Juanma Barranquero Date: Sat, 14 Jan 2017 15:01:26 +0100 Message-ID: Subject: Re: About the 'minibuffer' frame parameter To: martin rudalics Cc: Eli Zaretskii , Drew Adams , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 14:02:11 -0000 On Sat, Jan 14, 2017 at 12:05 PM, martin rudalics wrote: > We've been missing you. Thanks, I've been missing Emacs and its motley crew. From MAILER-DAEMON Sat Jan 14 09:03:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSOvQ-00051Z-HE for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 09:03:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSOvP-00051T-0V for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:03:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSOvO-0001Xr-4a for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:03:19 -0500 Received: from mail-ot0-x230.google.com ([2607:f8b0:4003:c0f::230]:33223) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSOvO-0001Xm-0G for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:03:18 -0500 Received: by mail-ot0-x230.google.com with SMTP id 73so18946789otj.0 for ; Sat, 14 Jan 2017 06:03:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=+LgU8HslfdJ1K0YbS1aY5cUK+XyQMBBtddDSq0RWJFA=; b=gBtlcz2S8q7g0ZX5P9t8r+kbSITqNyKlNlbvbBOC9/gEgb1LGdbMeztaNAJax2LRGd ZWqbwV85m82ebTTWpyMtAz2FN3rB+Sy6YttrLjse0wS8wvHI8xsxI873wf1YLMzfJSXG yuVG1r0RV4q25D5cTA/2yjT5EIKwCE3SnS+h5bNDfy0IdBpNBFStBc3pbnqWf53R5+dR aU/ZG46hr0nFJa51LjRkeKI98Dq6Ape8VqQMclM4HFdFU+YTeqfWfULOCz6Pzg1ZD/vs X5YzctWD/6ZHHXpHRW6fx3NVY/vHM9cjiiqfaVypXoNfwNGj/nFaMxAULJ2df+Zbwl+y cqyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=+LgU8HslfdJ1K0YbS1aY5cUK+XyQMBBtddDSq0RWJFA=; b=s9eylFDaHuBTdUrmwm9xxFGmeGiCMQJB3oZSNMOdTM5mT2uxV4nIfIGjpy2lvGHNBM +5bYMi/Elmcw2R9fEmzkQXE3/Y8LikC1s8AWNLy79/rf0TbocoeZnvQAvfxXlhubR/ni mY1Vdfhw94kiFz5pYnYESzGqtF1b9UcSvNgdyRpXOGIGnHjWkD3VWpBJVcJdUf0pgPZ9 aI7s++vzF5gwlOLKaaJDUSeiNMkZ0SDAJx+YcvpRCxQoeip6JFSHVbRcLxXvdKRvxHWX uvztq4+ahQ60462H4yHW7u7Kpb2UmSPv2NMN7I0e8xNrDZaaXlyER4ASOgwNu8l8IziU mJ0A== X-Gm-Message-State: AIkVDXI+WDzVh+U7oXndNH51JbZ35pAZztpkjlZZ10U0vXB64OJjy+H1FRb5o5dpJqSse8Nnh4knGC5SmH0a7A== X-Received: by 10.157.35.98 with SMTP id k31mr11238327otd.109.1484402597277; Sat, 14 Jan 2017 06:03:17 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Sat, 14 Jan 2017 06:03:16 -0800 (PST) In-Reply-To: <87wpdxu8yt.fsf@russet.org.uk> References: <87wpdxu8yt.fsf@russet.org.uk> From: Noam Postavsky Date: Sat, 14 Jan 2017 09:03:16 -0500 X-Google-Sender-Auth: -bNPxcrtNMaElV9BdlxZwM2vXeo Message-ID: Subject: Re: standard output/error/input streams To: Phillip Lord Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 14:03:19 -0000 On Sat, Jan 14, 2017 at 7:22 AM, Phillip Lord wrote: > > > The new version is on feature/stdout-stderr-stream. +DEFUN ("external-standard-error", Fexternal_standard_error, Sexternal_standard_error, 1, 1, 0, + doc: /* Output character CHARACTER to system standard error. */) + (Lisp_Object character) +{ + return Fexternal_debugging_output (character); +} This could be just an alias instead, no? From MAILER-DAEMON Sat Jan 14 09:31:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSPN1-0004fO-1i for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 09:31:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSPMy-0004Y8-FF for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:31:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSPMv-00019E-3f for emacs-devel@gnu.org; Sat, 14 Jan 2017 09:31:48 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55787) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSPMu-00019A-WA; Sat, 14 Jan 2017 09:31:45 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1092 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSPMt-0004Pd-Vz; Sat, 14 Jan 2017 09:31:44 -0500 Date: Sat, 14 Jan 2017 16:31:54 +0200 Message-Id: <838tqdbtlx.fsf@gnu.org> From: Eli Zaretskii To: phillip.lord@russet.org.uk (Phillip Lord) CC: emacs-devel@gnu.org In-reply-to: <87wpdxu8yt.fsf@russet.org.uk> (phillip.lord@russet.org.uk) Subject: Re: standard output/error/input streams Reply-to: Eli Zaretskii References: <87wpdxu8yt.fsf@russet.org.uk> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 14:31:49 -0000 > From: phillip.lord@russet.org.uk (Phillip Lord) > Date: Sat, 14 Jan 2017 12:22:50 +0000 > > I've worked up the patch that I made to add input streams for writing to > the system standard out. There was some discussion about this in Jul. > > https://lists.gnu.org/archive/html/emacs-devel/2016-07/msg00910.html > > The new version is on feature/stdout-stderr-stream. Thanks. Some of the concerns I expressed here: https://lists.gnu.org/archive/html/emacs-devel/2016-07/msg00938.html are still relevant, and at the very least should be reflected in the docs. > Can I add this to master? I think this still "needs work", see my comments below: +@cindex @code{external-standard-input} +@defun external-standard-input &optional char No need to explicitly index a function that is introduced in a @defun: the latter automatically adds an index entry. +This function reads a single character from the system standard input +(as opposed to @var{standard-input}) and functions as a stream. Note, Two spaces between sentences, please (here and elsewhere). +however, that if Emacs is running in a terminal its use can be +unpredictable. I think we should explain more about the issue here, so that the reader understands what she is up against. (I think this function will simply not work on a TTY frame.) +These functions are predominately useful for debugging, as they are a +mechanism for producing output that does not change any buffer. Note, +however, that if Emacs is running in a terminal their use can affect +the display unpredictably. Likewise here. This should also mention the problems with stdout/stderr disposition in GUI sessions. +(defvar external-standard-input-pushback nil + "Pushback character for `external-standard-input'.") Isn't this an internal variable? If so, it should use double hyphen in its name. And what is the purpose of this pushback? I didn't see any code that sets it in patch. +DEFUN ("external-standard-input-read-char",Fexternal_standard_input_read_char, Sexternal_standard_input_read_char, 0, 0, 0, + doc: /* Read a single character from the system standard input. + +Returns -1 if standard input is at the end.*/) + (void) +{ + int c; + Lisp_Object val; + + c = getchar(); + XSETINT(val,c); + + return val; +} This implementation has a number of issues: . getchar reads a _byte_, not a character, so unless input is plain-ASCII, what you return here is a raw byte, not a character in the Emacs sense of that word. That is inconsistent with every other input facility we have, and could very well get the user in trouble. . getchar doesn't return until you type RET, at least on my system, which might come as a surprise to users. . (nitpicking) our coding style keeps one space between the function/macro name and the opening parenthesis. (Same issue exists elsewhere in the patch.) +DEFUN ("external-standard-input-read-line", Fexternal_standard_input_read_line, Sexternal_standard_input_read_line, 0, 0, 0, + doc: /* Read a line from the system standard input.*/) This function doesn't seem to be documented in the ELisp manual. + if (len || c == '\n' || c == '\r') + { + val = make_string (line, len); + xfree (line); What about EOL decoding, as in all the other Emacs input functions? Also, make_string has its own ideas about when to produce unibyte strings and when multibyte strings. You should instead decode the input text using coding-system-for-read (if non-nil) or locale-coding-system (or maybe what terminal-coding-system returns). +DEFUN ("external-standard-output", Fexternal_standard_output, Sexternal_standard_output, 1, 1, 0, + doc: /* Output character CHARACTER to system standard output. */) + (Lisp_Object character) +{ + CHECK_NUMBER (character); + printchar_to_stream (XINT(character), stdout); printchar_to_stream converts the output text via standard-display-table, if that is non-nil; do we really want that for functionality that is supposed to be a debugging aid? It also sends its argument to the debugger on MS-Windows -- is that desirable? From MAILER-DAEMON Sat Jan 14 10:12:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSQ0Q-0003U7-MI for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 10:12:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43639) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSQ0O-0003Tj-Ex for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:12:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSQ0N-000054-JK for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:12:32 -0500 Received: from mail-out.m-online.net ([2001:a60:0:28:0:1:25:1]:48206) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSQ0J-0008KE-Mp; Sat, 14 Jan 2017 10:12:27 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3v12zX1wVgz3hhx9; Sat, 14 Jan 2017 16:12:24 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3v12zX0Yt8zvkp3; Sat, 14 Jan 2017 16:12:24 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id E4ZqOW_eR-Fn; Sat, 14 Jan 2017 16:12:22 +0100 (CET) X-Auth-Info: lSAD7ZeHaVCOe38RqUPI5SN7yz4ZCbjFRurPeFk3tLv0Z2sbwREqwAvbA3gKtH/L Received: from igel.home (ppp-88-217-30-182.dynamic.mnet-online.de [88.217.30.182]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sat, 14 Jan 2017 16:12:22 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 606442C3E0B; Sat, 14 Jan 2017 16:12:22 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file References: <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> <87inphx29r.fsf@linux-m68k.org> <83a8atbxl9.fsf@gnu.org> X-Yow: I am covered with pure vegetable oil and I am writing a best seller! Date: Sat, 14 Jan 2017 16:12:22 +0100 In-Reply-To: <83a8atbxl9.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 14 Jan 2017 15:05:54 +0200") Message-ID: <87d1fpwu95.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 2001:a60:0:28:0:1:25:1 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 15:12:33 -0000 On Jan 14 2017, Eli Zaretskii wrote: >> From: Andreas Schwab >> Date: Sat, 14 Jan 2017 13:19:12 +0100 >> Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org >> >> >> > The line number in the error message is bogus, it points to a require >> >> > line (that's a known issue with byte-compiler error reporting, I >> >> > think). >> >> >> >> It's not bogus, since the error was raised while the byte-compiler >> >> evaluated the form there. >> > >> > It's "bogus" in the sense that it isn't useful for finding the code >> > which triggered the error. >> >> It is as bogus as every Lisp error. > > On the contrary: most of them provide useful information about the > error locus. This one clearly didn't. It accurately tells you the form that caused the error, something you never get from a Lisp error. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Sat Jan 14 10:30:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSQIC-0000JT-To for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 10:30:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46532) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSQI9-0000IA-6D for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:30:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSQI8-0005h8-CH for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:30:53 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:36497) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSQI4-0005Zj-Kh; Sat, 14 Jan 2017 10:30:48 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DVQgAu3EVY/8CvSC1dGgEBAQECAQEBAQgBAQEBgzgBAQEBAR+EW4VUnAKXBYYiAoISQhEBAgEBAQEBAQFiKEIBBA0BhBQBBAF5BQsLDScSFBgxiHoIrRQqAosYAQEBBwIlixmKCx4Fj3yKapJziCclhhWSDzUheBMOhXMgg2OCToJ8AQEB X-IPAS-Result: A0DVQgAu3EVY/8CvSC1dGgEBAQECAQEBAQgBAQEBgzgBAQEBAR+EW4VUnAKXBYYiAoISQhEBAgEBAQEBAQFiKEIBBA0BhBQBBAF5BQsLDScSFBgxiHoIrRQqAosYAQEBBwIlixmKCx4Fj3yKapJziCclhhWSDzUheBMOhXMgg2OCToJ8AQEB X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="286089800" Received: from unknown (HELO pastel.home) ([45.72.175.192]) by smtp.teksavvy.com with ESMTP; 14 Jan 2017 10:30:47 -0500 Received: by pastel.home (Postfix, from userid 20848) id EF9E86135A; Sat, 14 Jan 2017 10:30:45 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Cc: Ken Raeburn , schwab@linux-m68k.org, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file Message-ID: References: <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> Date: Sat, 14 Jan 2017 10:30:45 -0500 In-Reply-To: <83k29xc49v.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 14 Jan 2017 12:41:32 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 15:30:55 -0000 > leim/ja-dic/ja-dic.el:76:1:Error: Args out of range: " s ", 2432, 2432 [...] > The line number in the error message is bogus, it points to a require > line (that's a known issue with byte-compiler error reporting, I > think). I don't think it's "bogus": it says that the error occurred while compiling that `require` line, i.e. while loading the corresponding file. You can set byte-compile-debug (along with debug-on-error) to get a backtrace which will be more useful. Stefan From MAILER-DAEMON Sat Jan 14 10:56:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSQhL-0002BW-RO for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 10:56:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51885) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSQhK-0002BL-Ad for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:56:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSQhJ-0005EW-P4 for emacs-devel@gnu.org; Sat, 14 Jan 2017 10:56:54 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:29910) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSQhE-0005Cp-4Z; Sat, 14 Jan 2017 10:56:48 -0500 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v0EFufIE027883 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 14 Jan 2017 15:56:42 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v0EFueRg015791 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 14 Jan 2017 15:56:41 GMT Received: from abhmp0014.oracle.com (abhmp0014.oracle.com [141.146.116.20]) by aserv0121.oracle.com (8.13.8/8.13.8) with ESMTP id v0EFucus011524; Sat, 14 Jan 2017 15:56:39 GMT MIME-Version: 1.0 Message-ID: Date: Sat, 14 Jan 2017 07:56:38 -0800 (PST) From: Drew Adams Sender: Drew Adams To: martin rudalics , Juanma Barranquero , Eli Zaretskii Cc: Emacs developers Subject: RE: About the 'minibuffer' frame parameter References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> <587A0604.8000501@gmx.at> In-Reply-To: <587A0604.8000501@gmx.at> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6753.5000 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Source-IP: userv0022.oracle.com [156.151.31.74] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 141.146.126.69 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 15:56:55 -0000 > > I think so. But first I'll have to spend a little time setting my > > building environment. >=20 > We've been missing you. +1 From MAILER-DAEMON Sat Jan 14 11:24:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSR7n-0001sD-T4 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 11:24:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54421) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSR7l-0001s2-9J for emacs-devel@gnu.org; Sat, 14 Jan 2017 11:24:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSR7g-0006LG-B7 for emacs-devel@gnu.org; Sat, 14 Jan 2017 11:24:13 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:64746) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSR7g-0006Kg-1d; Sat, 14 Jan 2017 11:24:08 -0500 Received: from eskebo.homelinux.merten-home.de ([88.69.7.88]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.145]) with ESMTPSA (Nemesis) id 0MaaU5-1c8r0O1ucz-00KAks; Sat, 14 Jan 2017 17:24:05 +0100 Received: by eskebo.homelinux.merten-home.de (Postfix, from userid 1000) id 07F52C1D16; Sat, 14 Jan 2017 16:21:52 +0100 (CET) From: Stefan Merten To: Glenn Morris cc: emacs-devel@gnu.org Subject: Re: Emacs versions for rst.el In-reply-to: <93mvexfb80.fsf@fencepost.gnu.org> References: <20170103221540.4171.87517@vcs.savannah.gnu.org> <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> <19153.1483784930@eskebo.fritz.box> <93mvexfb80.fsf@fencepost.gnu.org> Comments: In-reply-to Glenn Morris message dated "Wed, 11 Jan 2017 18:06:23 -0500." X-Mailer: MH-E 8.6; nmh 1.6; GNU Emacs 24.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Sat, 14 Jan 2017 16:21:52 +0100 Message-ID: <4207.1484407312@eskebo> X-Provags-ID: V03:K0:wb7358Bfu5PwQ2qKeHFo9X066ZD8a4dQuu5SDf+dwtYTdq+SF9F Dpg1auUFpvbsvbMJbAUA/8Pt2eGAb0SHxU/WvxuKL68q2s7dM6UdHqdE9wuMb/Rqki7F5V0 ONbxsfR1BMakvuMwh5G0uUqVrK0lmz2szb9ERilgZxf7IIn6JvPCiDZYLe3ZqKRNu86nYZb muvjvopijXxAuon+gHD4g== X-UI-Out-Filterresults: notjunk:1;V01:K0:tTKk2xdxvHM=:51CmartAafYS9JDqLD+fyt IOv8L5uCo0SeIamFcpQupI/DP64TosTuEIbq5wXYqZJJUQRU/5A+cWa43kQTb9sKfhpNK458Z ymEkw6ShAfrXrw+UBquVhAceZovftkGwnpvlVpRUpWYO1jGhh+bPTIH1jHSP3oiHJG/v8Wtf0 TbszjXXdNMzg+jVp3VtMLmjpY6lZaXewhZfiqGP77wwkEmwJt+L+crUTFPlLNM4vbrxunpbeH EwUZM72QdmHTg70zYSEEyNRaYNu9CAeb14qKxkFJs8HGi8XkJKvwBylJTfamD6jYIt3CqkQK6 MqGZBg/K4L2IHq9l5lpnRxksHdGok6AvlQRXiynQcPoi8EopyOcrdhBT1FKeCuz+Lf+OyXod9 ZeTpwFTdjqrl6pIkCrA9grC0WlWOzQigQ9kCSAkkERMRJes/We+FN7ZMNnVij3ilomNFZzCzK 91t7MBItLQuX15anEtxNE0W33K29TDXG6fWi0jPf3TFGNUTfCoJdUe8j+/YaKSz02VP5x4PAa uF7CjgwyLdtIiot06tQ+nruJfXTWxa4RaubXvLr1cw4PUGcAuUpCenqUJW+wi7ceKDL0bpXBT 3Zk0zRyvkp/aRevtCduX4vvLmdCiw0f1SAzOqrfJx/gQXNF8oFtqteTgwsd/TN7x0QEseG3i9 9cT2p+wIGhB0hbiSwSK1PEVbnHCPY4ZbJ/OofT0m8my0GH8jxvOvAXYvslGT3ut8Jnu4yNGvn agnusAKu61V4pljc X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 16:24:14 -0000 Hi Glenn! 2 days ago Glenn Morris wrote: >> I'm not following Emacs releases and so what I put in there is more or >> less a rough guess. When I commit something to the Emacs `master` then >> I'm convinced that it should go into the next available release. >=20 > The Emacs version number tells you what to use. Where do I find it? > Eg current version of master =3D 26.0.50 -> next release from master will > be 26.1. So you should have used 26.1 in place of 26.2. No need to > guess, or to follow development lists. Can you give me a quick command to find this out? Is it documented somewhere? Gr=FC=DFe Stefan From MAILER-DAEMON Sat Jan 14 11:34:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSRHb-0004z2-UP for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 11:34:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSRHa-0004xw-3F for Emacs-devel@gnu.org; Sat, 14 Jan 2017 11:34:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSRHW-0001F5-TE for Emacs-devel@gnu.org; Sat, 14 Jan 2017 11:34:22 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:59007) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSRHW-0001EM-Ji for Emacs-devel@gnu.org; Sat, 14 Jan 2017 11:34:18 -0500 Received: from eskebo.homelinux.merten-home.de ([88.69.7.88]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.129]) with ESMTPSA (Nemesis) id 0M0v6Z-1cik6b2cU3-00v9kB; Sat, 14 Jan 2017 17:34:06 +0100 Received: by eskebo.homelinux.merten-home.de (Postfix, from userid 1000) id 67130C1D14; Sat, 14 Jan 2017 16:18:05 +0100 (CET) From: Stefan Merten To: Paul Eggert cc: Tino Calancha , Kaushal Modi , Emacs Development Subject: Re: Refactoring in rst.el In-reply-to: <95b7096e-9a9d-f0c9-54b4-9f7850ca676c@cs.ucla.edu> References: <492.1483523991@eskebo.fritz.box> <4331.1483545171@eskebo.fritz.box> <28fe59fd-191f-64c0-2333-7462403d976c@cs.ucla.edu> <19306.1483785955@eskebo.fritz.box> <95b7096e-9a9d-f0c9-54b4-9f7850ca676c@cs.ucla.edu> Comments: In-reply-to Paul Eggert message dated "Sat, 07 Jan 2017 09:18:52 -0800." X-Mailer: MH-E 8.6; nmh 1.6; GNU Emacs 24.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Sat, 14 Jan 2017 16:18:05 +0100 Message-ID: <4102.1484407085@eskebo> X-Provags-ID: V03:K0:AgEb0mc82vq4qyE1Ic2Iqmjd6Ra1BPEEX2Ub4WnNgt/mKM26XKL iEdc9pLSeM9eLK3SzRPkTaGAz/uUDfEzcWD5FraemfDqYACQCmGEiXH1QlNmkvX52Q4GPor PX0bnfe51gGwDfc2t0URmiOm7qfAWw47HnisvsJK2Nr+HZ+COoUepcPcb7KbWGmXfum9A4j Py6zzvpuiluZpHCKvvK7g== X-UI-Out-Filterresults: notjunk:1;V01:K0:GZeSLuWhANw=:gMJlJuiBmJk/YeHx/q80dM DkwBz7OXcOpVHBovE6z9YdbMmWzv+6d6s8x897VuZG6S1wb2LYW5WJ4y96tGHvwOns8sG9//Y DBu+uqtABA7cTrL2qAalnOwX5MJLTELizmjclF7six2enY7vyyHZr9LQb1Ug8JKzM84ByOhZt O0EVIU6xMMneiTfortAO5UL6e45yCaq3qTCCq6PECmvIftQOX3sK/nawRLeuS9/9LSFqyqtSf 6tmVDev1rnE5U3+u0mCy6a2ld1rw/PE9drmuISHMZhyjim01ALUYWtMoK/opBF8lzhS4v+imf TR6fQSjSp+MN5uEjz8dcy0T09bl8VtOY46Eui5pRO2M/6NyMIs0+sCyGLXlDTMRDqZxBTZHGo DE48E5UUJwaE+sk2KyI485MfUZ1PO5kCPUyJgkL8FbWz8bGhOACNbHOpLR4ozhEO7gfPldh3P 3u+q/HGYIPD+ls+pPZPgZBkPhKwWNR1FRjFNT70HQKqku0ZhG7vZVVhu1J/x+3mbC9YBgY3HT CfynT8T7m4C8/BXJO2CStJOjqEWlNKRNxgy4xxturJmWehz65qd/DVSc+1MAlyL8dKIcgMLmp mUJz/B7CcnQhNuxCehb+DgLBBBPG2qNWjSIB6gsfsqcXSq6RZWML2QCPHPZqe+MWniCRz7s3/ blDdeJlygx8TVBgxXenA1pkA+EHtE6WqbZOTv1J2naU1vaB4oPIg+573wjG6Xwsx8DuzxreZy vi9Ug5UkhXdZaLEf X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 16:34:23 -0000 Hi Paul! Last week (7 days ago) Paul Eggert wrote: > Stefan Merten wrote: >> I remember >> that in Emacs you started using a double dash in identifiers to mark >> them private. [...] >> If so, I'd probably like to mark internal functions this way. That >> would be a good idea IMHO. [...] > After that happens, it's a good idea to document even changes to the > internal API, for benefit of those maintaining the code in question. Do you know of anybody who is maintaining the code (beyond me)? Gr=FC=DFe Stefan From MAILER-DAEMON Sat Jan 14 12:37:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSH6-0004tz-IW for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 12:37:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36810) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSH2-0004ts-Tv for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:37:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSGz-000635-Nu for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:37:52 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSGz-000631-LG; Sat, 14 Jan 2017 12:37:49 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1254 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSSGw-0007YI-Mu; Sat, 14 Jan 2017 12:37:49 -0500 Date: Sat, 14 Jan 2017 19:37:24 +0200 Message-Id: <837f5xbl0r.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab CC: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <87d1fpwu95.fsf@linux-m68k.org> (message from Andreas Schwab on Sat, 14 Jan 2017 16:12:22 +0100) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> <87inphx29r.fsf@linux-m68k.org> <83a8atbxl9.fsf@gnu.org> <87d1fpwu95.fsf@linux-m68k.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 17:37:53 -0000 > From: Andreas Schwab > Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Sat, 14 Jan 2017 16:12:22 +0100 > > >> It is as bogus as every Lisp error. > > > > On the contrary: most of them provide useful information about the > > error locus. This one clearly didn't. > > It accurately tells you the form that caused the error, something you > never get from a Lisp error. It's accurate, but utterly useless. From MAILER-DAEMON Sat Jan 14 12:41:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSKH-0005oE-7j for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 12:41:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37730) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSKF-0005o5-0r for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:41:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSKB-0006vU-Vj for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:41:11 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58463) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSKB-0006vO-Sl; Sat, 14 Jan 2017 12:41:07 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1258 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSSK8-0007tu-Rm; Sat, 14 Jan 2017 12:41:07 -0500 Date: Sat, 14 Jan 2017 19:40:53 +0200 Message-Id: <8360lhbkuy.fsf@gnu.org> From: Eli Zaretskii To: Stefan Merten CC: rgm@gnu.org, emacs-devel@gnu.org In-reply-to: <4207.1484407312@eskebo> (message from Stefan Merten on Sat, 14 Jan 2017 16:21:52 +0100) Subject: Re: Emacs versions for rst.el Reply-to: Eli Zaretskii References: <20170103221540.4171.87517@vcs.savannah.gnu.org> <20170103221541.47B2D2201B8@vcs.savannah.gnu.org> <19153.1483784930@eskebo.fritz.box> <93mvexfb80.fsf@fencepost.gnu.org> <4207.1484407312@eskebo> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 17:41:12 -0000 > From: Stefan Merten > Comments: In-reply-to Glenn Morris > message dated "Wed, 11 Jan 2017 18:06:23 -0500." > Date: Sat, 14 Jan 2017 16:21:52 +0100 > Cc: emacs-devel@gnu.org > > > The Emacs version number tells you what to use. > > Where do I find it? M-x emacs-version RET > > Eg current version of master = 26.0.50 -> next release from master will > > be 26.1. So you should have used 26.1 in place of 26.2. No need to > > guess, or to follow development lists. > > Can you give me a quick command to find this out? Is it documented > somewhere? See above. Yes, in the Emacs user manual, node "Understanding Bug Reporting". From MAILER-DAEMON Sat Jan 14 12:42:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSLY-0007N9-G9 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 12:42:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSLW-0007N2-Vu for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:42:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSLT-0007C9-Tm for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:42:31 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58488) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSLT-0007C5-Qp; Sat, 14 Jan 2017 12:42:27 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1259 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSSLQ-00081E-SM; Sat, 14 Jan 2017 12:42:27 -0500 Date: Sat, 14 Jan 2017 19:42:18 +0200 Message-Id: <834m11bksl.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: raeburn@raeburn.org, schwab@linux-m68k.org, emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 14 Jan 2017 10:30:45 -0500) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 17:42:31 -0000 > From: Stefan Monnier > Date: Sat, 14 Jan 2017 10:30:45 -0500 > Cc: Ken Raeburn , schwab@linux-m68k.org, > emacs-devel@gnu.org > > You can set byte-compile-debug (along with debug-on-error) to get > a backtrace which will be more useful. That doesn't help when one is presented with a build log. From MAILER-DAEMON Sat Jan 14 12:51:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSUE-0002fm-1H for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 12:51:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSUB-0002fQ-Ks for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:51:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSU6-0002is-QX for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:51:27 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58592) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSU6-0002io-NZ; Sat, 14 Jan 2017 12:51:22 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1263 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSSU3-0000MC-Ta; Sat, 14 Jan 2017 12:51:22 -0500 Date: Sat, 14 Jan 2017 19:51:19 +0200 Message-Id: <831sw5bkdk.fsf@gnu.org> From: Eli Zaretskii To: phillip.lord@russet.org.uk CC: emacs-devel@gnu.org In-reply-to: <838tqdbtlx.fsf@gnu.org> (message from Eli Zaretskii on Sat, 14 Jan 2017 16:31:54 +0200) Subject: Re: standard output/error/input streams Reply-to: Eli Zaretskii References: <87wpdxu8yt.fsf@russet.org.uk> <838tqdbtlx.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 17:51:28 -0000 > Date: Sat, 14 Jan 2017 16:31:54 +0200 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org > > . getchar doesn't return until you type RET, at least on my system, > which might come as a surprise to users. One other problem with this is that until getchar returns, Emacs is stuck, and nothing runs. That's not a good thing, IMO, so I think the implementation should go via wait_reading_process_output and stuff (which will have a nice side effect of letting some other thread run while Emacs waits for input). From MAILER-DAEMON Sat Jan 14 12:53:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSVu-0004Jk-An for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 12:53:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41269) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSVs-0004IW-3Z for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:53:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSVn-0003Ty-9y for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:53:12 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:54022) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSSVn-0003Tj-2h for emacs-devel@gnu.org; Sat, 14 Jan 2017 12:53:07 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AwKQAu3EVY/8CvSC1dGgEBAQECAQEBAQgBAQEBgzgBAQEBAR9ahAGFVJwCJgGSR4QXKYVzBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCzQSFBgNJIh6CA6tBotEAQEBAQYCAR8FixmKKQWPfIpqhkuDEQWJKIR9gxSGOpIPNiB4Ew6FcyCJLQEBAQ X-IPAS-Result: A0AwKQAu3EVY/8CvSC1dGgEBAQECAQEBAQgBAQEBgzgBAQEBAR9ahAGFVJwCJgGSR4QXKYVzBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCzQSFBgNJIh6CA6tBotEAQEBAQYCAR8FixmKKQWPfIpqhkuDEQWJKIR9gxSGOpIPNiB4Ew6FcyCJLQEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="286094924" Received: from 45-72-175-192.cpe.teksavvy.com (HELO pastel.home) ([45.72.175.192]) by smtp.teksavvy.com with ESMTP; 14 Jan 2017 12:53:04 -0500 Received: by pastel.home (Postfix, from userid 20848) id D1C5E64DF6; Sat, 14 Jan 2017 12:53:04 -0500 (EST) From: Stefan Monnier To: Edward Hart Cc: emacs-devel@gnu.org, Simon Sobisch , joakim.jalap@fastmail.com Subject: Re: [ELPA] New package: cobol-mode Message-ID: References: Date: Sat, 14 Jan 2017 12:53:04 -0500 In-Reply-To: (Edward Hart's message of "Fri, 13 Jan 2017 23:17:30 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 17:53:13 -0000 > I'd like to submit cobol-mode.el, a major mode for COBOL, everyone's > favourite legacy programming language. It features syntax highlighting for > most modern COBOL dialects, indentation, code skeletons, rulers and basic > formatting functions. It works with both fixed and free source format code. > It is currently hosted at > https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca. I pushed it to elpa.git along with a few tweaks (you hopefully received the corresponding commit-diffs). I had to add a whole bunch of `eval-and-compile` to get the code to compile (because `syntax-propertize-rules` needs to compute the regexps during macro-expansion, and hence during compilation), and I'm pretty sure the result is not really correct, since some of those eval-and-compile are around defcustoms, which means that the code is compiled using a specific value of those defcustoms and won't be re-compiled to accommodate the user's later preferences. Please take a look at it (as well as a few other FIXMEs I've added such as one for `in-string-p` which doesn't exist (well there's one defined in thingatpt.el but you don't require that package)). Feel free to ask further questions to solve those problems, Stefan From MAILER-DAEMON Sat Jan 14 13:04:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSgO-00083s-LT for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 13:04:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSgM-00083m-Je for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:04:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSgL-0006D2-OV for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:04:02 -0500 Received: from mout.kundenserver.de ([212.227.126.130]:49460) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSSgG-0006CP-00; Sat, 14 Jan 2017 13:03:56 -0500 Received: from eskebo.homelinux.merten-home.de ([88.69.7.88]) by mrelayeu.kundenserver.de (mreue003 [212.227.15.129]) with ESMTPSA (Nemesis) id 0MH3Li-1cEhJb3aBG-00Dmci; Sat, 14 Jan 2017 19:03:53 +0100 Received: by eskebo.homelinux.merten-home.de (Postfix, from userid 1000) id AA533C133F; Sat, 14 Jan 2017 19:03:52 +0100 (CET) From: Stefan Merten To: Eli Zaretskii cc: rgm@gnu.org, emacs-devel@gnu.org Subject: Re: Emacs versions for rst.el MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Sat, 14 Jan 2017 19:03:52 +0100 Message-ID: <5226.1484417032@eskebo.fritz.box> X-Provags-ID: V03:K0:8BWLmkLLqude8s4mQWlIP6Chnl3IGJUhKn6Azx8szm5dHYPboi1 CledtxdGqK5/avp95nT0bCd8ZAMV1sQcAsOA1xIGDUqu7BM4J3EvzTG4wRkIBM09rYDDT82 H7en1b4HDjp9Zy57LGOitlyFFKvng7tKnGc7IUxo6ZzoCvcZeWt6vzwUVMf8wRIb2MuPq/B w+p5myhck+JDky4KE5pTg== X-UI-Out-Filterresults: notjunk:1;V01:K0:Ln4W3VZ4B4A=:6Rh6aLErWO/YHgAz8B3p6i LQO7WitR8W+rci0BOyyIe4On9vwo1lvwDm8WxJKSfWbek0peYuJib7TsUsUqlrt++vtEV3Bm1 lMIaSLGynlA0jh4WoW5C46K74PBlYryazCSo9mbBquZsot4/fmcbXJfwkTUH4ZcbS11yCBtAR VLPaJrAhOLEnDIMxBPTVL404UGHGCQ9f++sqSksoEql5xiujXHdvee2ZR3gm42WmizKylPTtK 6ajKNDB88AoTVSbR+A/foVw0epDHanFxbpOl2x/f0xIo7X7wYDccE7/N5kTMKQlCDSr3pq/SO E2G2vTutSgj6J635WD1C4M4/5dGsm8g+JBjJEta5hS3KYyFKo5IGPIFqciL1SKp/Ekx3W6WNC jfovfLwcBZ2vzk1pVe5HIMWs6WfTA3wjhYJWrn8Fu6JMpeCTBbAJ92hcJRJDP+vBaij3iryu8 d86PKw5tOvvo60e6h456BSPXfcG6NURA0e2DABKNpmZM2riwmFVl4pOdCDA1UcPIWFNrBBU6B lRq10LfcbCYXrB7Gr/zRJb3rFyArahfio9E4r2046a7HrkskvlArmG3kqtWoDTVuIn8hPt2No 3t4iJpJxoTBtB5cCzIEmcXvZekj9Hou1uO6R0qSzgMs0/rJ4cGbbGeyG2hKmNTyO1tbW9YnWg 4jWCdw1mU/H7iKo8LsOk9d1LUz2XuvhUv3lNKvG+gm3GyA360aw6eiQWnAs5HBlPQEMOxXlML QXipXdBIOPmJGBeT X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.130 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 18:04:03 -0000 Hi all! 18 minutes ago Eli Zaretskii wrote: >> > The Emacs version number tells you what to use. >>=20 >> Where do I find it? >=20 > M-x emacs-version RET Results in 24.5.1 for me :-) . According to your information the next version is then 24.6... Seriously: Can you *please* give me some *useful* information on how to determine the next Emacs release in the development tree? May be this can be obtained by some git command? Gr=FC=DFe Stefan From MAILER-DAEMON Sat Jan 14 13:12:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSo4-0002V6-Ii for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 13:12:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44024) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSo2-0002T5-FP for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:11:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSny-0008Di-Fc for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:11:58 -0500 Received: from [195.159.176.226] (port=41352 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSSny-0008DR-7u for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:11:54 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSSne-0004aK-53 for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:11:34 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Skipping unexec via a big .elc file Date: Sat, 14 Jan 2017 13:11:26 -0500 Lines: 17 Message-ID: References: <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <834m11bksl.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:CUIyzYvLEJHW3hKoq+Sv2eO1ytA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 18:11:59 -0000 >> You can set byte-compile-debug (along with debug-on-error) to get >> a backtrace which will be more useful. > That doesn't help when one is presented with a build log. Not directly, no, indeed. Usually I then fire an interactive Emacs, set the vars and call byte-compile-file to reproduce the problem in an environment where I can investigate the backtrace comfortably. My point was simply that this is an *evaluation* error more than an error in the compiled code, so the poverty of the info is due to the poverty of info we get when running Elisp code (and this is indeed somewhat linked to the byte-compiler since the byte-compiler doesn't preserve the source location in the bytecode it emits). Stefan From MAILER-DAEMON Sat Jan 14 13:15:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSSrC-0003QD-05 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 13:15:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44464) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSSrA-0003Ne-1c for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:15:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSSr9-0000tp-7U for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:15:12 -0500 Received: from mail-ua0-x22e.google.com ([2607:f8b0:400c:c08::22e]:35269) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSSr6-0000rY-Oa; Sat, 14 Jan 2017 13:15:08 -0500 Received: by mail-ua0-x22e.google.com with SMTP id y9so57827231uae.2; Sat, 14 Jan 2017 10:15:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mTolbGvqDIxq6TOh86p3azJZfRCP3PPBfxv9IbDqM3I=; b=E+U4okeYqDRGLCNyu6NGYjJnTaVUdzgicXA3+oIPAZopCj2VUUDsXiEtLpYO9BBGGH 4jf97dVdDVAGYqh2LHPjVGd8yakvZZ9uljQSDut/+l3QihZAAenickQehh7mfzPTpexY TgjSSeI3tit2ntt5F3D5fiiZuujnMMRdj5fBobp0Iw0zcTRR07FTveCh0f6+iWJtn+i1 oZUfTDFu7IPjLdrKynD3ozeHo9Dq9ASQSSC3HBW1OkL5rcCk5oDBd8CN8O1Xew/eH7Hi QyRih6x2Rh09djNeJUa6RQanBFUYnoj5r+/8W7qTKbfFl0npu7M/bIN62Syyjm5zWWIo 4Ftg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mTolbGvqDIxq6TOh86p3azJZfRCP3PPBfxv9IbDqM3I=; b=RF2C6o2hi5/vVLTxDn5M/3IVrJlpwGlSen9EauuWpwe5CXpknsGpMMSnzC6WRz8g2k mdryhkKZjT9afSi7UAh7nProUIgPZXK3vCJWlsL9Z0OQhzYzwV73kRgby3eZx7sL3jI7 HAdDG1lhRjFJ4//Tdj9MEbinS/A9yfHKthTonVdeLBziOQSVZ1D8HV//Uv53fXE2y7W8 5nIIJAZCfOEXvt+AYjzqF+lXw2O2M0eFI99St/nKPV+fsLsT2DXefnolHpVyOqyw5CXM q6V+oZvGEyihDRPEo1EAuEQNZCS5ZKm75H1u/QJpBuTp6gR31a8xVsEFDxiDqyNsCuSX a1mA== X-Gm-Message-State: AIkVDXI++2AAl4/gj9V8fFvQcz6Cz0+PqEG7cnWwXuNo0USubN1rS237m1gU8nEUCdlKp9TjL8urpw5qK+mr1Q== X-Received: by 10.176.7.2 with SMTP id h2mr3860638uah.52.1484417707924; Sat, 14 Jan 2017 10:15:07 -0800 (PST) MIME-Version: 1.0 References: <5226.1484417032@eskebo.fritz.box> In-Reply-To: <5226.1484417032@eskebo.fritz.box> From: Kaushal Modi Date: Sat, 14 Jan 2017 18:14:57 +0000 Message-ID: Subject: Re: Emacs versions for rst.el To: Stefan Merten , Eli Zaretskii Cc: rgm@gnu.org, emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=94eb2c0472102de43d054611eea3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 18:15:13 -0000 --94eb2c0472102de43d054611eea3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable You need to git clone the master branch, build emacs and do M-x emacs-version in that. On Sat, Jan 14, 2017, 1:04 PM Stefan Merten wrote: > Hi all! > > 18 minutes ago Eli Zaretskii wrote: > >> > The Emacs version number tells you what to use. > >> > >> Where do I find it? > > > > M-x emacs-version RET > > Results in 24.5.1 for me :-) . According to your information the next > version is then 24.6... > > Seriously: Can you *please* give me some *useful* information on how > to determine the next Emacs release in the development tree? May be > this can be obtained by some git command? > > > Gr=C3=BC=C3=9Fe > > Stefan > > -- Kaushal Modi --94eb2c0472102de43d054611eea3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

You need to git clone the master branch, build emacs and do = M-x emacs-version in that.


On Sat, Jan 14, 2017, 1:04 = PM Stefan Merten <stefan@merten= -home.de> wrote:
Hi all!

18 minutes ago Eli Zaretskii wrote:
>> > The Emacs version number tells you what to use.
>>
>> Where do I find it?
>
> M-x emacs-version RET

Results in 24.5.1 for me :-) . According to your information the next
version is then 24.6...

Seriously: Can you *please* give me some *useful* information on how
to determine the next Emacs release in the development tree? May be
this can be obtained by some git command?


=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 Gr=C3=BC=C3=9Fe

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 Stefan

--

Kaushal Modi

--94eb2c0472102de43d054611eea3-- From MAILER-DAEMON Sat Jan 14 13:50:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSTPn-0006K6-7U for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 13:50:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48308) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSTPl-0006Jz-25 for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:50:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSTPk-0002YE-0r for emacs-devel@gnu.org; Sat, 14 Jan 2017 13:50:57 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:35461) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSTPg-0002Vm-A3; Sat, 14 Jan 2017 13:50:52 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3v17qW5yg2z3hjGj; Sat, 14 Jan 2017 19:50:47 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3v17qW4dfzzvknY; Sat, 14 Jan 2017 19:50:47 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id bSKuAfrJV2ea; Sat, 14 Jan 2017 19:50:46 +0100 (CET) X-Auth-Info: n6GpZzXdkPnEwYQ8IenCQHoIEQ501yLK+0enr/NW/fE8kdkV8YLbKxAHhxl0q83d Received: from igel.home (ppp-88-217-30-182.dynamic.mnet-online.de [88.217.30.182]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sat, 14 Jan 2017 19:50:46 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 8190F2C3E22; Sat, 14 Jan 2017 19:50:45 +0100 (CET) From: Andreas Schwab To: Eli Zaretskii Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Skipping unexec via a big .elc file References: <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <83eg05c32y.fsf@gnu.org> <87inphx29r.fsf@linux-m68k.org> <83a8atbxl9.fsf@gnu.org> <87d1fpwu95.fsf@linux-m68k.org> <837f5xbl0r.fsf@gnu.org> X-Yow: --``I love KATRINKA because she drives a PONTIAC. We're going away now. I fed the cat. - Zippy'' Date: Sat, 14 Jan 2017 19:50:45 +0100 In-Reply-To: <837f5xbl0r.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 14 Jan 2017 19:37:24 +0200") Message-ID: <874m11wk56.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 18:50:57 -0000 On Jan 14 2017, Eli Zaretskii wrote: >> From: Andreas Schwab >> Cc: raeburn@raeburn.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org >> Date: Sat, 14 Jan 2017 16:12:22 +0100 >> >> >> It is as bogus as every Lisp error. >> > >> > On the contrary: most of them provide useful information about the >> > error locus. This one clearly didn't. >> >> It accurately tells you the form that caused the error, something you >> never get from a Lisp error. > > It's accurate, but utterly useless. No, it isn't. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Sat Jan 14 14:01:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSTaB-0002UH-Mx for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 14:01:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49605) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSTa9-0002Nw-Mm for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:01:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSTa9-0005yw-0j for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:01:41 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59098) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSTa5-0005ya-QP; Sat, 14 Jan 2017 14:01:37 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cSTa3-0000yT-R2; Sat, 14 Jan 2017 14:01:35 -0500 From: Glenn Morris To: Stefan Merten Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: Emacs versions for rst.el References: <5226.1484417032@eskebo.fritz.box> X-Spook: Metro ANC Transportation security Suicide attack radar X-Ran: d+w["6u&'F4D_7S!'b*?b7TuAS3l(/e1dhAc/%%(=X^['RXD9&k[2F7]vozx|)YV-z (Stefan Merten's message of "Sat, 14 Jan 2017 19:03:52 +0100") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 19:01:42 -0000 Stefan Merten wrote: > Seriously: Can you *please* give me some *useful* information on how > to determine the next Emacs release in the development tree? Start of the top-level README file, or etc/NEWS (which is where you should be putting any new rst features). From MAILER-DAEMON Sat Jan 14 14:03:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSTbf-0003YS-Ht for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 14:03:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSTba-0003YG-Au for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:03:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSTbW-0006vD-Jy for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:03:10 -0500 Received: from [195.159.176.226] (port=38252 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSTbW-0006v0-Cn for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:03:06 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSTb5-0002Xb-49 for emacs-devel@gnu.org; Sat, 14 Jan 2017 20:02:39 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Emacs versions for rst.el Date: Sat, 14 Jan 2017 14:02:34 -0500 Lines: 11 Message-ID: References: <5226.1484417032@eskebo.fritz.box> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:x+f/uWETTPjmPMuYDoHb4Y0RvnM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 19:03:14 -0000 > You need to git clone the master branch, build emacs and do M-x > emacs-version in that. Actually you don't need to build&run it, you can just look for AC_INIT(GNU Emacs, 26.0.50, bug-gnu-emacs@gnu.org in configure.ac instead. Stefan From MAILER-DAEMON Sat Jan 14 14:41:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSUD5-0007yP-Dd for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 14:41:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55093) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSUD3-0007x2-1Q for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:41:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSUD2-0001uP-Cw for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:41:53 -0500 Received: from mail-yw0-x22f.google.com ([2607:f8b0:4002:c05::22f]:33762) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSUD2-0001uJ-78 for emacs-devel@gnu.org; Sat, 14 Jan 2017 14:41:52 -0500 Received: by mail-yw0-x22f.google.com with SMTP id l75so49167162ywb.0 for ; Sat, 14 Jan 2017 11:41:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Y8jLZCpA8g9d0j77P74oMThM6c4jnP9NVdzK2mIh2b8=; b=h1LIs+AnCkpTHtpYzDYF+YaxRYFE6+Bg2Lq7aKXEEwV4vDJkR0wJApPK+gkMlMZo4+ QqQDmMR2nWdlkLLcN7fi87+hUmLrq0gm6nYYx0f2jAdCSUAPF1FZSqnVN2wMI4p1ByTu kH0mG8w9oTdktcItSbs85S0gavVsJAi0Jb1aSujNUa+PKtmELUYgCjVkgYlBrpxZz5CE VQf9fO28TFKrtJBYC3GqA9Z6datY56rY8lXvkVfe2lyRzILpD4OUIZw97WWKAgN1swMw dHPeSGQlxU8RNyjSQD9aF3ExT2CzSKT1muXi4gezOjdE/N6wLfaemRQ/UO/A10c6MGZR qE+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Y8jLZCpA8g9d0j77P74oMThM6c4jnP9NVdzK2mIh2b8=; b=OpcXs12N2aho0hLZpcwcA5zPygi1V3i4WnNRdfCztO/OsWThxlRqPvrPq2mK/9bK/z ZyAxGQ2A82LrUe3eF6b6/G5u1OmU2/SE+g/j8CgJyvskL6WvdtVhu5rC1CkoOaeTEQf8 w8/vts3IOLwA4cQztHsitbNDMVFaf+xDRGwCGI7JWcDQzbd20Lre4nf7R6yAfuY425oT akEOjWnepiSoG5y4XWyPrzduhZqqoS7TbDonwE3eR7DmRUGuqPpEUKAaH6yUpTInMQUM aGHlvJKC3SbBvNsh5Z7l5eOdZ4PUzZ0xTL1T8Dztc0PkGD/NVg0yJOOPR3iCUoeaLhFp 6NmQ== X-Gm-Message-State: AIkVDXIGl8ZoY6s660xbVUpE+MNlv19fBoqTIlVUg0PAkJSEZ9seqq7h/b1f/qxbshCHNTcx4IwTwSm/weJ7kw== X-Received: by 10.129.71.10 with SMTP id u10mr21639421ywa.115.1484422911171; Sat, 14 Jan 2017 11:41:51 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.130.3 with HTTP; Sat, 14 Jan 2017 11:41:50 -0800 (PST) From: Tianxiang Xiong Date: Sat, 14 Jan 2017 11:41:50 -0800 Message-ID: Subject: Proposal: alias `clear-buffer` to `erase-buffer` To: Emacs developers Content-Type: multipart/alternative; boundary=001a114d77965123db0546132497 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 19:41:53 -0000 --001a114d77965123db0546132497 Content-Type: text/plain; charset=UTF-8 The `erase-buffer` function is the only function that "clears" data, but begins with the word "erase". This makes it difficult to discover for new users. The most widely used term seems to be "clear" instead of "erase". See: - `clear-string` - `clear-rectangle` - `clear-abbrev-table` and more. `erase-buffer` should be called `clear-buffer`. We can create an alias in `subr.el` and mark `erase-buffer` as deprecated, though it'll never be safe to remove due to the amount of code that uses it. --001a114d77965123db0546132497 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
The `erase-buffer` function is the only function that &quo= t;clears" data, but begins with the word "erase". This makes= it difficult to discover for new users.

The most widely= used term seems to be "clear" instead of "erase". See:= =C2=A0

- `clear-string`
- `clear-rectang= le`
- `clear-abbrev-table`

and more.

`erase-buffer` should be called `clear-buffer`. We ca= n create an alias in `subr.el` and mark `erase-buffer` as deprecated, thoug= h it'll never be safe to remove due to the amount of code that uses it.=
--001a114d77965123db0546132497-- From MAILER-DAEMON Sat Jan 14 15:08:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSUcf-0008LI-ER for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 15:08:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57818) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSUcc-0008Kr-UG for emacs-devel@gnu.org; Sat, 14 Jan 2017 15:08:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSUcZ-0001zU-Oi for emacs-devel@gnu.org; Sat, 14 Jan 2017 15:08:18 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59569) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSUcZ-0001zQ-LO; Sat, 14 Jan 2017 15:08:15 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1362 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSUcW-0005H4-Mg; Sat, 14 Jan 2017 15:08:15 -0500 Date: Sat, 14 Jan 2017 22:08:06 +0200 Message-Id: <83ziit9zh5.fsf@gnu.org> From: Eli Zaretskii To: Stefan Merten CC: rgm@gnu.org, emacs-devel@gnu.org In-reply-to: <5226.1484417032@eskebo.fritz.box> (message from Stefan Merten on Sat, 14 Jan 2017 19:03:52 +0100) Subject: Re: Emacs versions for rst.el Reply-to: Eli Zaretskii References: <5226.1484417032@eskebo.fritz.box> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 20:08:19 -0000 > From: Stefan Merten > cc: rgm@gnu.org, emacs-devel@gnu.org > Date: Sat, 14 Jan 2017 19:03:52 +0100 > > > M-x emacs-version RET > > Results in 24.5.1 for me :-) . According to your information the next > version is then 24.6... > > Seriously: Can you *please* give me some *useful* information on how > to determine the next Emacs release in the development tree? Sorry, I couldn't imagine you were making changes to the code without actually testing it with the current Emacs sources of the branch into which you push the changes. The above command needs to be run inside Emacs that's built from the branch where you are pushing. From MAILER-DAEMON Sat Jan 14 15:14:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSUiI-0002HS-UL for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 15:14:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58886) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSUiH-0002GS-5N for emacs-devel@gnu.org; Sat, 14 Jan 2017 15:14:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSUiE-00049w-0R for emacs-devel@gnu.org; Sat, 14 Jan 2017 15:14:09 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59641) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSUiD-00049q-TB; Sat, 14 Jan 2017 15:14:05 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1364 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSUi9-0005hh-9C; Sat, 14 Jan 2017 15:14:05 -0500 Date: Sat, 14 Jan 2017 22:13:42 +0200 Message-Id: <83y3yd9z7t.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 14 Jan 2017 13:11:26 -0500) Subject: Re: Skipping unexec via a big .elc file Reply-to: Eli Zaretskii References: <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> <834m11bksl.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 20:14:10 -0000 > From: Stefan Monnier > Date: Sat, 14 Jan 2017 13:11:26 -0500 > > >> You can set byte-compile-debug (along with debug-on-error) to get > >> a backtrace which will be more useful. > > That doesn't help when one is presented with a build log. > > Not directly, no, indeed. Usually I then fire an interactive Emacs, set > the vars and call byte-compile-file to reproduce the problem in an > environment where I can investigate the backtrace comfortably. There's more than one way of tracking the real locus of the problem. My point is that either way, it's an annoyance which makes investigation of such problems significantly less efficient than when the byte compiler points out the source file and the line number where it happens, or close thereabouts (which is what happens most of the time). I gather that we are in violent agreement about that. From MAILER-DAEMON Sat Jan 14 19:29:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSYhj-0005LB-9o for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 19:29:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSYhh-0005Ki-Ao for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:29:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSYhe-0008Km-02 for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:29:49 -0500 Received: from mout.web.de ([212.227.15.14]:65062) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSYhd-0008KB-Ne for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:29:45 -0500 Received: from drachen.dragon ([188.110.141.66]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MCZTG-1cJF1q3G42-009PHq; Sun, 15 Jan 2017 01:29:41 +0100 From: Michael Heerdegen To: Dmitri Paduchikh Cc: Tino Calancha , Emacs developers Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> <87h9529n04.fsf@gmail.com> <87d1fq9cbw.fsf@gmail.com> Date: Sun, 15 Jan 2017 01:29:39 +0100 In-Reply-To: <87d1fq9cbw.fsf@gmail.com> (Dmitri Paduchikh's message of "Sat, 14 Jan 2017 15:15:47 +0500") Message-ID: <87vathqi6k.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:4jynwY1FJV7V87Nd4N9XpnnAnBo+tEjknfgawcv9mHVaGRZI1a4 7FO3P9duKjf4POoxGg+qZnPufmjMoYn1P9b6jG91/uR5V5NptDb+46szTpam2WUGmxiFtC1 PhsKH8rcBXRrl6dCEQlTZHT/IGihOz+eS3CdefvkPRmRYtcHa0WXmezlBq0VvTrIsx+OoPT +qLWZJzkVL5W9JQ8K2SJg== X-UI-Out-Filterresults: notjunk:1;V01:K0:yz8mK32HrAI=:zGLb6ohvjJJ+WQpsoMAO0M +gPyyjsYJsaJjkkh6q7HvgkQmEK+VRX35RzASFJdVUvoymD1P+Nsur6W+bt1WWNHCoHFjvaEj 0EpPcDsWSlaRwgzQNmIOgI8fmQ57oSl3rlGqNQYn8Gp06QYxBL4IVN6em7esMiWYyxkcJm32J v5Z+a4T1lAyus8GK8ZBC4HFaeDFwKVGlq7XiaNLjSc+/MUyvJEDqsl1tgfTflMkw6sDCT+NDI ndwmFYzdai5BXtBTpkQb6w7nzWq/tDMiGCH+NUuTYzCS4lx0izf1JH8MTE1uWOkAcHyr43UWj UpIoZAgmYTrj7RxED1gc5wx9a9npV+Iuu9W8a9MPjrz5tEIdomGjqjc9R14WEi+174bAaQbJz /cMN4gu/U5qeH4MGFNOgZrxRdKhlW5nbHyO4Zr7GIT5yF99N17yR+eEaz1BZl5B9kJ2OdvBpT CdO8TeF9eLGpLZ3mo7k4TruPR8sfa6hko+5Q9VhlcHbfv3V9egqdYe1yWDG3KKg765v+jP2Fz +dl5IK2D4EL4/gbD9V7EDEA8FoOvbGrikB8pjeUWeLaO9LAe9afu3wLpIlpGcAPsMFITUwQj7 iMmE6NExi786IAnHlr0aQj4T+a2e0rfdINyYOCaHjrj57ikh+xy2L31FyCtexgxkilezhLoIN qPqydI4gEqy0uAiJSivI0ob6iqQTSIGRjuCdCws13YgebyZ1V1qLXASCh7Oo+NUzfn+tDvvbh 62iVUS/ybJkqQKDu9rByywMhgLJ9aT+9F/8TxG2W4tQ8tq8fa1QU/5Ei0G1EYryaSGtHhRMJ+ 5YQ88BU X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.14 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 00:29:50 -0000 Dmitri Paduchikh writes: > Well, aif, awhen are at least more discoverable through C-h f aif for > those who used to these names. They can be aliases. I think that would potentially cause confusion. BTW, AFAIR the fact that `when-let' and `if-let' are not so discoverable and hidden in subr-x was not unwanted because we wanted to experiment with this stuff and see if we like it before we advertise it much. There must be some discussion about this in the archives... Michael. From MAILER-DAEMON Sat Jan 14 19:39:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSYqt-0008EX-98 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 19:39:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSYqr-0008EQ-R6 for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:39:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSYqo-0003A7-Ns for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:39:17 -0500 Received: from mout.web.de ([217.72.192.78]:52309) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSYqo-00039o-EZ for emacs-devel@gnu.org; Sat, 14 Jan 2017 19:39:14 -0500 Received: from drachen.dragon ([188.110.141.66]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MMmx9-1cMoM43Hvb-008aNI; Sun, 15 Jan 2017 01:39:11 +0100 From: Michael Heerdegen To: Tino Calancha Cc: Emacs developers Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> Date: Sun, 15 Jan 2017 01:39:10 +0100 Message-ID: <87k29xqhqp.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:UhtaLi2eQ/Ijf6wNjUNX/6LSts9H9R+pbpHFIEpNJKNy+2uvWhh QN/3HY6IsacdkYhKagTlkTsBWkkDO+j5Pb6HV5h40m5trKsDVAl+fgtBfbtdydKIICECZMQ 0rU6bax/09/PTe5fb+3YDmLi7i6kl6fWLZF31cgLmJxsyP7XX4xXMEw6inYeh6nTwCwSrbJ nURBHD+ZTRSB8/GyB6Pww== X-UI-Out-Filterresults: notjunk:1;V01:K0:/GO05CkkzTE=:IkxtboICTZICJG4mkYXayK zgh1mwSW9cCoCu60gHpjmedr1QbWBtGGXMzmK55YC+uBKRubr+YEtV7BoPAFV/Bync6AaOs8m C7b/XFVJeblMSlc71Co0b+xnb2bA9qz/ywG4z8Hui46QapgtXEBE/i3ReqLTKBu4qsDb32zW+ jUtQIpYwRS2eZM8HCiLOP3asqNFD/o2yZFzaJt6D4YDsnSedoVupLqCXsDC0Tbwu1ue60IfJg K4hZ0GW1YqMb8hdFffmrfUMc8Dv948DvWBbJPQH5U7M7FX5ziyj8OEVBnfVobdzi1WeP3gmIg OeAK92BBQl3oRaQrchwvsEUdXrg7+vA77yDqSlj6OIfJSdqFm2vsM0jAHHy3PQHzONC/7OrJE UHavQbm6h268kLSVDOfeUmYK0Gz26+A2acs/5u68C0Gj2b0aafk8qftVlZH+uoSv/s/XKxa2X dZxbo4H8tGEQctUDYdPx6RJLd/S/tbi+x12ZH6qpoCupqAsSS6O9OIQ/3SX29nGUvmbJtv19v wrVZSEUAwn23xVet9oyKetrl0b9QlT08x+tay8+Hl0DS9tMjWmSnTmcOiKAzcCK3efThd8GUB WxjefGxJGOWHdYL4EgS2jOUfWT32FjS/CYg+fAjNFNVWgC9XzMzy5Jb/u8nTHe7JmZfYCEHvT yhSlZmuNxjNZHoTkCGHDkO5J66krjG2uvLPd26e3um1eIBSefE0fF3aPjfy6exR9lYerx83dn mKi2ZMVxugmZUmgMbgwHsA8KYHjgczrtXmMl0val5t38BkYIcqajr0CK6jr2d95pn7Fa8j93m R/3SuF2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.78 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 00:39:18 -0000 Hi Tino, > I wonder if it has sense to increase that family with a while-let > (maybe others in case they are useful). > > From 60f26b512b191add12a0c91dc4d7ff95aba080d9 Mon Sep 17 00:00:00 2001 > From: Tino Calancha > Date: Sat, 14 Jan 2017 14:25:42 +0900 > Subject: [PATCH] * lisp/emacs-lisp/subr-x.el (while-let): New macro. Maybe. I'm using `when-let' and `if-let' a lot, but I'm still not sure in which direction we should develop this approach. I personally prefer `when-let' and `if-let' over `awhen' and `aif'. I sometimes think that `if-let*' would be a better name for `if-let' because bindings can refer (and naturally most of the time do) refer to other bindings. I also often think that `and-let' (or `and-let*' ...) would be a better name for `when-let' (because the expressions for the bindings are `and'ed, sot the whole thing feels more like `and' to me). And I often think that it would be cool to couple them with pcase pattern matching. OTOH we already have `pcase-let', but I can't get along with its semantics, e.g. (pcase-let ((`(,a ,b) '(1 2 3))) (list a b)) ==> (1 2) although the pattern doesn't match. Anyway, I think we should have an imagination of where the travel should end before adding more *-let macros. Regards, Michael. From MAILER-DAEMON Sat Jan 14 21:03:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSaAo-0005ZK-Lr for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 21:03:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaAm-0005ZE-Mh for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:03:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSaAj-0008Ba-KD for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:03:56 -0500 Received: from mail-lf0-x22c.google.com ([2a00:1450:4010:c07::22c]:35509) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSaAj-0008BQ-Cd for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:03:53 -0500 Received: by mail-lf0-x22c.google.com with SMTP id m78so61147844lfg.2 for ; Sat, 14 Jan 2017 18:03:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=pJan4+G/zFySIl3Z0I8syIKWHivj9v/O5I7fHhd2tNc=; b=R1642VVdkNLeeVTWEl302QIRkcrScNcGTo3BuCwOatIr/25taU5Zb2/bfQIO/fAad9 Zh+nOnCG3iAtQjS31ddKjmJilDWo25VXggprTnMSeiegV+ANpeON3WfiQ1Mdwx3FsVh2 T43XVpsOXphi30+UReB43dGqR27o3LB76SW4nFfejZtX9kW0ovjDrGRfkfr+GdQ9g+xY mIe79m8/mKno2XmMC9o4defz1ER5GrErifnTdPc6xR0xHl8EiBCHDMKvJDKbGwJfWxqV q4YGoJ5ZNU/9tMOewZQOElWGg0HreDVzYXAbgR0r4/138Jgzi/hgtnKFbZfTvMiN3s1p vtaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=pJan4+G/zFySIl3Z0I8syIKWHivj9v/O5I7fHhd2tNc=; b=IlRjY48sFGN24T4DFoH3O2WOG5muM9x2qwWdG7qlZaCmgMcE3WFsLVx+jBKV9/MZes O1IDBM7gyqO/m6t9RmvV+VqLsIeCKgS2hEhz/g8dZmuaQb/ZZVxLYL2hQpGEqAr4lWtd WPe5EuNOY+Xh2WiX+qWUWHjg3vGg/X+H3Bi/TBFoooW28gaWPs2Dn9G1UP9k/Ir0wZFD PNHdWqKNpxGlq4gQdBKvNbSs80ufum47ONQZXgszY6n52K/BWPeUyYgRhHX2Jj+mLoiz 713vGkM4kjLiSB7VhtP2bO/uh5WHbxL1tODuhu1m2KeHke0XKfwAYcFY40pJnXVJLyE1 K7+Q== X-Gm-Message-State: AIkVDXJQ/5rLKHYxLagK8cALuiGONjgYDZArKZdYEmzFUlSscgEAfb5hdltDGPzs25x6mg== X-Received: by 10.25.92.2 with SMTP id q2mr9904777lfb.121.1484445831697; Sat, 14 Jan 2017 18:03:51 -0800 (PST) Received: from gmail.com ([46.48.49.226]) by smtp.gmail.com with ESMTPSA id 66sm5462637lfy.42.2017.01.14.18.03.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 14 Jan 2017 18:03:50 -0800 (PST) From: Dmitri Paduchikh To: Michael Heerdegen Cc: Emacs developers , Tino Calancha Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> <87h9529n04.fsf@gmail.com> <87d1fq9cbw.fsf@gmail.com> <87vathqi6k.fsf@web.de> Date: Sun, 15 Jan 2017 07:03:49 +0500 In-Reply-To: <87vathqi6k.fsf@web.de> (Michael Heerdegen's message of "Sun, 15 Jan 2017 01:29:39 +0100") Message-ID: <87d1fpnkoq.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 02:03:57 -0000 Michael Heerdegen wrote: > Dmitri Paduchikh writes: >> Well, aif, awhen are at least more discoverable through C-h f aif for >> those who used to these names. They can be aliases. > I think that would potentially cause confusion. I meant making aif and awhen aliases to the proposed names if-it and when-it. What confusion do you foresee? With best regards Dmitri Paduchikh From MAILER-DAEMON Sat Jan 14 21:17:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSaNQ-0004RZ-Ve for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 21:17:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaNN-0004Me-1p for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:16:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSaNJ-00040H-US for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:16:57 -0500 Received: from mout.web.de ([217.72.192.78]:63248) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSaNJ-0003zq-LR for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:16:53 -0500 Received: from drachen.dragon ([92.77.164.93]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MT8o6-1c2hnw2Bss-00SAyT; Sun, 15 Jan 2017 03:16:50 +0100 From: Michael Heerdegen To: Dmitri Paduchikh Cc: Emacs developers , Tino Calancha Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> <87h9529n04.fsf@gmail.com> <87d1fq9cbw.fsf@gmail.com> <87vathqi6k.fsf@web.de> <87d1fpnkoq.fsf@gmail.com> Date: Sun, 15 Jan 2017 03:16:49 +0100 In-Reply-To: <87d1fpnkoq.fsf@gmail.com> (Dmitri Paduchikh's message of "Sun, 15 Jan 2017 07:03:49 +0500") Message-ID: <87d1fpqd7y.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:tjh+7Y2xdokEs73quSHvdRtEynfQf3IpYF6dt0XjINPyqD8DTti uWXt/li8vc55yIk7JLy4ju7SCN8ktO3B/TyFS2D2L5bR2QUnw1QQiNCSvZEpNx8a+gxpDMd iYIKA0pPGq8bP+1StCmQTGV6NGEjNXtFc6bXChkDqe1KG+ioP3nGhsrOLDzw4lPsmthSbJy 4pXB2ZKJ9VgNxa3xxZucQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:bQTCZEYTpuQ=:NruWNHFtyuqZWvuOdgVMcH /hWgkzQYlYO6MOHKKagkKLrLbOUcFzdxWEtORNUtWYl55SNKIwrfGHsqttKPWZzz8QQORP2B4 KiiwQ7CBpyAOk6VAJ4ezWZTm+3VtXl4ZJTsgUnQTHt7Cwcu2GaMRw+EMgSmE8mvK7nrrkkUEX KPIs0axhuhw1OSyAd8mJbL0FRfB+dNHc1YKaMEST5Vx7ABMetJx6dkLhWfCwdBevuOaqIUcdh c3h+O8SLWhFdSs9s6onOodG3MKt7PgPMmqUfvn2LMKlr74kVQSXK/dTtOkKJuVoyyvFH8yFV5 G8vW56v8VIGczxC32Sjw4BOSODuRsRoH4t5AXAiD/DjWFhzJlB+Qo6Wl6mVohmVXzNW3CJADN Y7gkpaNEQrLmlWcdLCTVwtIxwkKHwm6Gww0fBwAgfGoLji22fjz5F4BqT5CNtXJqhugILy7E8 sQZJSlqXB6Sg5S/+8ANmYOnLU6/TTpe2wgK2UgnMbF5oHJl1wtwQDrkkz54d71zuno0OVpunL Qpp2v5vFpCrqTsM8dA/edXLO5yCGiio90xiTWY3FP+1UJa/+6jXghBRLqrBot9KUdL83FdNzM 9jMSkZ1VXpLSjBJcP7AwOKAXVtbOK3Ym4FPVl0bYU9zZVhkzCBMYGuFXSPtEL2KS+fYbLDgTB TwWViNPEYmtWjRoKRw5arnMxds9YIZ5SZ5ja0t2iTVdq4WlDPF+FECyg1Rqzv2TO8vcoFU7nv bzAbZ2/DMsITyrJ/zg6IdldtRHzGHgAlGnddXIpAOPFU4vqIHaFQSObGw71kjfaswcZn3l+3S sXMFLZS X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.78 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 02:16:57 -0000 Dmitri Paduchikh writes: > I meant making aif and awhen aliases to the proposed names if-it and > when-it. What confusion do you foresee? My own, I just misinterpreted your words, sorry. Michael. From MAILER-DAEMON Sat Jan 14 21:24:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSaUW-0006iz-Pi for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 21:24:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaUU-0006iq-BV for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:24:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSaUR-0006qn-8U for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:24:18 -0500 Received: from mail-qk0-x231.google.com ([2607:f8b0:400d:c09::231]:35199) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSaUR-0006qO-1X for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:24:15 -0500 Received: by mail-qk0-x231.google.com with SMTP id u25so89849580qki.2 for ; Sat, 14 Jan 2017 18:24:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=awqPHCvk+BbRGShsUNc9F8Jw0yUCWps5xaEdMPokI2E=; b=1StmqlrZdWdNmpnopMas3MS8KawvTyg0npBP/ApJ4ZCLQQna8w5nrM2hmX7mJaF8Xp xyFKeevcgze4dygPU6dEjHHTCPVcqZppYgoUx70Z2pvesRgEtcl6f9P55ZCpQsZ2W0ub S2X+S4tsMZYnxIggOi6Ly2L8TUw/QYB2DMzNRxiH3ZM/u+k2YPRUJcE1C0NUpgYxoYvx R7CPzEgBP3js90Mj/WnWdERn2oTEMgADfAWdCTfj2o1hlxAr6fiSKEfx8I1TB0akrNLw f0Z3pVyBYCn4e9Qf8CVzHHf1S98TvWl9+zan9EPhcN0MgxzNK9SOe8w7+A2DVQSqFjjU ldUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=awqPHCvk+BbRGShsUNc9F8Jw0yUCWps5xaEdMPokI2E=; b=gBRXNbVlPyVvmCD/2NpZoiWLRrqTZYrFwe7x+zw2BXu33aOzUknCeNxIBvCDKPc8B1 k7nvqzIpXstYRiDNiZTj6NzFf2I2X4bGuOI7mmMJvJWqrSdNkwAU8LLTYFF/xXPRsTO1 H/NkO8owznZ9AUNAcxeeNF0OdCdasxAoZ4kP5QwzlZTw2W+mYEp2Fm3Hwkgc9wYRZgVN 5+EBNMV2HY1RI55KWcIjYSVGTzTCHjl6+E38RTOtHhi6K1uabRmy6rZzBWsfOD/ybtCM vETtqB330a5SjNCD/N2wcrd/iJuzx5tdmPVcWEKRXGD3buFo4P7GGSofiWG76GF7zhR2 HyLA== X-Gm-Message-State: AIkVDXIVSk2C4+6x1M8LtvnpQXex4iwNJKX6bZTAaNJGi27il+0eFIEX+XcvrqcP12J1sY/9 X-Received: by 10.55.159.20 with SMTP id i20mr24007731qke.317.1484447054286; Sat, 14 Jan 2017 18:24:14 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id y23sm12841938qtc.38.2017.01.14.18.24.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 14 Jan 2017 18:24:13 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 4E4A466372; Sat, 14 Jan 2017 21:24:12 -0500 (EST) From: Mark Oteiza To: Michael Heerdegen Cc: Tino Calancha , Emacs developers Subject: On the naming/behavior of {if, when}-let (was Re: Anaphoric macros: increase visibility) References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> Date: Sat, 14 Jan 2017 21:24:12 -0500 In-Reply-To: <87k29xqhqp.fsf@web.de> (Michael Heerdegen's message of "Sun, 15 Jan 2017 01:39:10 +0100") Message-ID: <878tqd12nn.fsf_-_@udel.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 02:24:19 -0000 Michael Heerdegen writes: > I sometimes think that > `if-let*' would be a better name for `if-let' because bindings can refer > (and naturally most of the time do) refer to other bindings. There was a thread some time ago (I'd have to go dig for it) where someone asked why the names lacked the *. Seeing how they are implemented on top of let*, this should be a no brainer, right? Further, I think it's even more bizarre that if-let and when-let grew the single tuple special case, where one can write (if-let (foo bar) (message "%S" foo) (message "oh no")) ^^^^^^^^^ What makes these binding things special? May as well add brackets and whatever else from other lisps. =E2=80=A6 and yet there is no _actual_ if-let to the effect of: (let ((a foo) (b bar)) (if (and a b) 'yes 'no)) Though, for the above, I remember there being an argument against this being useful. IDK, I've written things like this before. > I also > often think that `and-let' (or `and-let*' ...) would be a better name > for `when-let' (because the expressions for the bindings are `and'ed, > sot the whole thing feels more like `and' to me). I'd also like an and-let* (presumably aliased to when-let*). From MAILER-DAEMON Sat Jan 14 21:26:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSaWd-0007No-81 for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 21:26:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaWb-0007Nh-VE for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:26:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSaWY-0007dW-S5 for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:26:29 -0500 Received: from mout.web.de ([212.227.17.12]:63234) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSaWY-0007d5-Hw for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:26:26 -0500 Received: from drachen.dragon ([92.77.164.93]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MUnYm-1bwcqS0XjI-00YC0g; Sun, 15 Jan 2017 03:26:24 +0100 From: Michael Heerdegen To: Tino Calancha Cc: Emacs developers Subject: Re: Anaphoric macros: increase visibility References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> Date: Sun, 15 Jan 2017 03:26:23 +0100 In-Reply-To: <87k29xqhqp.fsf@web.de> (Michael Heerdegen's message of "Sun, 15 Jan 2017 01:39:10 +0100") Message-ID: <878tqdqcs0.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:C0JdaUmcpTl664IPEetB5loHA3arQBWbgvNChlrj/7AdzoDk7vW E8aWivpWaQrXIk+cFkzb1DQ01OwjnkQ/JldXFvZ8FuZ700ZtKuxfB1pBjk02uIKEmpyPrjl 4D0S0Y5Qey5N/Tky4OhZiafa8hP68IcHdhivEGYEUqyxGaIwD+clM5HEQ+nx1PCH8Cb7imr YuWStzTQi7el2pGfCJATA== X-UI-Out-Filterresults: notjunk:1;V01:K0:sD+Y+JSWbek=:6GlYK9lKZIcxp46YeJocMb +nuC/wZw0oiL8QIeM9DFIMLJ6HH+bVqPtZrGrLM5lfbHnR6zDXPFOkXm9fL4I/GEpMMNTNvgh cTngO1GZLqo7dNdGgSDSRUt3J/lOR/rcN8GzU+QU3ADkZGG7tg+Ce24xQZWPSXt7yvED/nVs5 VcEW0P2X20hdyXlwSrJW8Dro80z8jTkstq7/j5Q7Nad+dCBqzHmPeavKi+yNX6RpwyWvtZvIh jtDL+l118+dZItSClxqH33MB+YfIn+7P1LFU2JzTPrZ+haEBSIZLRGl7mx++zbneec9KBsJTY de36jZEfs0822pwwDDIT22O7TmxiMC5vWzFJBeSTPpSP3H/Fh1xQ4mG33wTfSUIpQJMKe51Kr q2YZxpIFBARPaSME3fXqRkI36eRmFrA/3Vm1X3DpJVBn2qAyEQZWsB9iqSDcNQg03TqwPFwYc 5kHkUsXvoMe2J9J8WQSmqNvGDy+OruVhmNc/FX/n6EJtitgQ/jd08lKLiue2GuKDJqFyc8FmQ ajRZbz4Q+GjLg36WYvbmiH6BVJ4+z8vJuH4ddJcg8JaJmttT2f6vvrRxR3Lh8A/WoQJIe2xcx yCnRjyHr3pPf3QXNwPimmHNDZrIGwVULFoPTM/hRhuK4DsiNjgzm4YiIrpfH4Ar3TYRTXSuag HQ8vvrC0h7e74uPX5+qCEEkhcNAa54NPVSXTynulMhcHwKUTeFV158qfkxV+KIuuADPCk2BRu x6aiuciiJ3JnbfaJUsX5rYH/NPN1kFAnH5D2zxgQsjuGJNfazAN3lrqL5NR3IIk2XztIlDSlR 2Z7cjSO X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 02:26:30 -0000 Michael Heerdegen writes: > And I often think that it would be cool to couple them with pcase > pattern matching. OTOH we already have `pcase-let', but I can't get > along with its semantics, e.g. > > (pcase-let ((`(,a ,b) '(1 2 3))) > (list a b)) > > ==> (1 2) > > although the pattern doesn't match. I think I would prefer something like #+begin_src emacs-lisp (defmacro pwhen (pairs &rest body) (declare (indent 1)) `(pcase nil ((and ,@(mapcar (lambda (pair) (cons 'let pair)) pairs)) ,@body))) #+end_src This is similar to `when-let' but instead of a non-nil test, you can use any test you want (via pattern matching). There would not be an implicit test for whether a matched expression evals to something non-nil, however. Example: #+begin_src emacs-lisp (defun test-pwhen (thing) (pwhen ((`(,x ,y) thing) ((pred identity) x)) (message "passed with x: %S and y:%S" x y))) #+end_src (test-pwhen 37) ==> nil (test-pwhen '(1 2 3)) ==> nil (test-pwhen '(nil 32)) ==> nil (test-pwhen '(1 2)) ==> "passed with x: 1 and y:2" Michael. From MAILER-DAEMON Sat Jan 14 21:28:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSaYK-0000ML-Ij for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 21:28:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35664) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaYI-0000FO-5a for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:28:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSaYF-0008TN-2t for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:28:14 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:57786) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSaYE-0008T9-TE for emacs-devel@gnu.org; Sat, 14 Jan 2017 21:28:11 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0F2S3Iv017481; Sat, 14 Jan 2017 21:28:03 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 7AABFAE582; Sat, 14 Jan 2017 21:28:03 -0500 (EST) From: Stefan Monnier To: Edward Hart Cc: emacs-devel@gnu.org, Simon Sobisch , joakim.jalap@fastmail.com Subject: Re: [ELPA] New package: cobol-mode Message-ID: References: Date: Sat, 14 Jan 2017 21:28:03 -0500 In-Reply-To: (Stefan Monnier's message of "Sat, 14 Jan 2017 12:53:04 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5919=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5919> : inlines <5627> : streams <1729121> : uri <2358292> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 02:28:15 -0000 > Please take a look at it (as well as a few other FIXMEs I've added such > as one for `in-string-p` which doesn't exist (well there's one defined > in thingatpt.el but you don't require that package)). Feel free to ask > further questions to solve those problems, One more thing: the code mentions using auto-complete, but I don't see any completion code in cobol-mode, so I'm wondering what kind of completion offers auto-complete in cobol-mode (e.g. completion of keywords or dabbrev-style completion?). It'd be good to provide some completion-at-point-function so that it works for the built-in completion (via `completion-at-point`) as well as company (and IIUC auto-complete also supports completion-at-point-functions nowadays). Stefan From MAILER-DAEMON Sat Jan 14 22:01:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSb4P-0000YB-RJ for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 22:01:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39311) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSb4N-0000Y4-Ss for emacs-devel@gnu.org; Sat, 14 Jan 2017 22:01:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSb4N-0007LO-4q for emacs-devel@gnu.org; Sat, 14 Jan 2017 22:01:23 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34628) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSb4E-0007Cc-4n; Sat, 14 Jan 2017 22:01:14 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cSb4D-0008Gu-DW; Sat, 14 Jan 2017 22:01:13 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Juanma Barranquero CC: eliz@gnu.org, rudalics@gmx.at, drew.adams@oracle.com, emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sat, 14 Jan 2017 10:18:36 +0100) Subject: Re: About the 'minibuffer' frame parameter Reply-to: rms@gnu.org References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> Message-Id: Date: Sat, 14 Jan 2017 22:01:13 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 03:01:24 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Thank you for rejoining us. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sat Jan 14 22:02:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSb5P-0001ZP-7U for mharc-emacs-devel@gnu.org; Sat, 14 Jan 2017 22:02:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSb5M-0001Y2-LI for emacs-devel@gnu.org; Sat, 14 Jan 2017 22:02:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSb5L-0008Tb-UW for emacs-devel@gnu.org; Sat, 14 Jan 2017 22:02:24 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34681) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSb5K-0008RO-Nd; Sat, 14 Jan 2017 22:02:22 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cSb5K-0001eE-2x; Sat, 14 Jan 2017 22:02:22 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Tianxiang Xiong CC: emacs-devel@gnu.org In-reply-to: (message from Tianxiang Xiong on Sat, 14 Jan 2017 11:41:50 -0800) Subject: Re: Proposal: alias `clear-buffer` to `erase-buffer` Reply-to: rms@gnu.org References: Message-Id: Date: Sat, 14 Jan 2017 22:02:22 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 03:02:25 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] I find it useful that 'erase' completes to this command. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sun Jan 15 05:25:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cShzt-000520-AW for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 05:25:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49304) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cShzr-0004zi-7Q for emacs-devel@gnu.org; Sun, 15 Jan 2017 05:25:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cShzo-0008A2-0i for emacs-devel@gnu.org; Sun, 15 Jan 2017 05:25:11 -0500 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:36846) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cShzn-00089O-QI for emacs-devel@gnu.org; Sun, 15 Jan 2017 05:25:07 -0500 Received: by mail-pg0-x244.google.com with SMTP id 75so2762041pgf.3 for ; Sun, 15 Jan 2017 02:25:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=JMlVWH3TnqzG/0w1jposeOLJchPg7EVSse82Wd//m8k=; b=CPEN0MRAJsNkB4aLhJbVw4dV+xTvv1f7tyFI9Agmz06m0KViOdNfzOW8oQhHXOUDVU nq5CtpJ5S4aRiWXy35+7fNgcv3kpt9m2ExP17CBbd8Z1TY2KaPoWMc0X1MOrMgkxYQvW vtcFPKfftuXS+XiQ7/t1QbnptMKaeqOzvBI9LRXp6Bo2Kf7W/xVhMSDCqUo4+HmRzgti C0CCvC25bAdzdB4WBq/ZsGKnF1a6Okz022lKPEBtYPwrsrQH62VaSzEXntlaISLd0WeM WMo16Oxt/sf+3eMRLUIURZtIiJAG/VsdTYcGfdN9b11Xl+JqKrJIhza8zC9fmbnTA4zh RLpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=JMlVWH3TnqzG/0w1jposeOLJchPg7EVSse82Wd//m8k=; b=VjDZF6ZX9ye3u3ADat8KcfelvUm2abdGENnlI5f3Dqo7VxeQerDabs2X6f1KTx0E9l NQ5mvcrOZjGBTbl1ILRKCc0LSrGL80E5HGfQo3xhWtCie92nvw7udfahrU1LCNdooMfp RLtFnzq0WZ0Vw82pxBnVFMACkeT0REZn6iPJ6utqGdoH0W6AnNWQgZrI7UhJeBU+j3eZ zIwlV9rm4RqIRi1Vxr9c/3yBj6X9T6swgNoTTzmPPkSUwvNZizuYwhDqtZfMxUFi1rak 1y/KXF44GUMin1oAQAzPmSVqVYMUvwQkTs8Lxp13u0g+pNAqdR25MW/UhqfRv6KfPOR5 oaag== X-Gm-Message-State: AIkVDXJq9fANpeqYdhhFduVVJvF4ivPdDknSQ7YqNlfv6L5FDDzDVIMpmBaHy6tCvtFEbg== X-Received: by 10.84.168.129 with SMTP id f1mr30871572plb.7.1484475906817; Sun, 15 Jan 2017 02:25:06 -0800 (PST) Received: from calancha-pc ([106.171.65.225]) by smtp.gmail.com with ESMTPSA id u14sm39904115pfg.18.2017.01.15.02.25.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jan 2017 02:25:06 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Sun, 15 Jan 2017 19:24:56 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Michael Heerdegen cc: Tino Calancha , Mark Oteiza , Dmitri Paduchikh , Emacs developers Subject: Re: Anaphoric macros: increase visibility In-Reply-To: <87k29xqhqp.fsf@web.de> Message-ID: References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 10:25:12 -0000 Hi Michael, >I sometimes think that `if-let*' would be a better name for `if-let' >because bindings can refer (and naturally most of the time do) refer to other bindings. +1 >I also often think that `and-let' (or `and-let*' ...) would be a better name >for `when-let' (because the expressions for the bindings are `and'ed, >sot the whole thing feels more like `and' to me). I am in the middle of the 2 names: *) and-let* suggests me that the bindings are `and'ed **) but when-let* suggests me that the second argument is a list of expressions, i.e., not just a form. > (pcase-let ((`(,a ,b) '(1 2 3))) > (list a b)) > > ==> (1 2) > > although the pattern doesn't match. I can be bitten with that pitfall as well. >I think I would prefer something like > >#+begin_src emacs-lisp >(defmacro pwhen (pairs &rest body) > (declare (indent 1)) > `(pcase nil ((and ,@(mapcar (lambda (pair) (cons 'let pair)) pairs)) ,@body))) >#+end_src It might be useful. >I'm using `when-let' and `if-let' a lot, but I'm still not sure >in which direction we should develop this approach. >I think we should have an imagination of where the travel should >end before adding more *-let macros. A possible starting point is puting all together in subr-x.el after a heading ;;; Anaphoric macros. and perform the improvements in naming discussed in this thread: 1) Move `ibuffer-aif', `ibuffer-awhen' to subr-x.el and rename as `if-it', `when-it'. Add aliases to them `aif', `awhen'. 2) `if-let' --> `if-let*'. Add alias `if-let' for backward compatibility. 3) `when-let' --> `when-let*' (or `and-let*'). Add alias. Once they are all together is easier to see what macro is missing which could be useful. Tino From MAILER-DAEMON Sun Jan 15 10:33:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSmo7-0000LI-PF for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 10:33:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSmo5-0000LA-Cb for emacs-devel@gnu.org; Sun, 15 Jan 2017 10:33:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSmo2-0002vd-9F for emacs-devel@gnu.org; Sun, 15 Jan 2017 10:33:21 -0500 Received: from [195.159.176.226] (port=48053 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSmo2-0002vA-2R for emacs-devel@gnu.org; Sun, 15 Jan 2017 10:33:18 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSmnk-0008Gl-Lq for emacs-devel@gnu.org; Sun, 15 Jan 2017 16:33:00 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Anaphoric macros: increase visibility Date: Sun, 15 Jan 2017 10:32:38 -0500 Lines: 13 Message-ID: References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:TaSO9M9u8cHFNI7o2RE/LOeNl44= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 15:33:22 -0000 Tino writes: >> (pcase-let ((`(,a ,b) '(1 2 3))) >> (list a b)) >> ==> (1 2) >> although the pattern doesn't match. > I can be bitten with that pitfall as well. I think the problem is in the name: it really should be called just `let`. It does not do any *match*, instead the pcase pattern is only used to specify how to *extract* the data we want. Stefan From MAILER-DAEMON Sun Jan 15 14:32:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSqXI-00039L-2g for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 14:32:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48631) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSqXF-00039C-5P for emacs-devel@gnu.org; Sun, 15 Jan 2017 14:32:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSqXE-0004Mx-Dx for emacs-devel@gnu.org; Sun, 15 Jan 2017 14:32:13 -0500 Received: from mail-io0-x22d.google.com ([2607:f8b0:4001:c06::22d]:34902) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSqXE-0004Mr-8z for emacs-devel@gnu.org; Sun, 15 Jan 2017 14:32:12 -0500 Received: by mail-io0-x22d.google.com with SMTP id j18so78624121ioe.2 for ; Sun, 15 Jan 2017 11:32:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=i/RRTQeFMlR0kk5XShcLkn/BGacNfLrotuyFYR4b6cU=; b=R1uDosBBCJkDsKBcfdK5V1mV+78LEoYKU2SIIZxhp7u6ps9P4/AjT1/Q+gZPYTb7yq bEchkdkkKQkrvqpisEhuGvfNgnkCcD8zW4mvBCXfiUvbfs0Mimcx/idwmgeBO9d/YU/n D57vTXb0Mk55cdmDPM3TtmKaHa9SQajFd1+uW0pfALW3wB5gbQJz6NHw7Roa9y1P2ICD oGHnOvUTbyBzT/KIS+CmNbentVDIoFDb+1HLoj/NJLgXLXCS5DtZv9PA+RIvmRkjEhF1 wTtUIhKFZycNZxzOO+QdeGl5NcU2ef/7Vbb2UzGKE25Cd6fXDb/Qh0gVgk6/nBmylNQl a5OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=i/RRTQeFMlR0kk5XShcLkn/BGacNfLrotuyFYR4b6cU=; b=KsBQ2A3hQk/Ry1M8UcXbmuVHh4GGsBERwpqaWp9eSroXUN+772/tg7e7FLcTYcw2mK uVnDbWkboXM9ykG+2C1TsqZUiW29nHcUAQUIozDsviSDMq+hXHMkA2KnSinuAVIOm3Mp IDO5/g9sDgONkkYUXfHK3q9bU43fouvlzk5VovW2f5NafyOdnlUOC4LgKKX5GbqHvByQ aFxOjl99MoiAAOxvp4OXrBEqPd4ENKoEuv6uzI8vDfPrf7yh57wrHLTWAqaEYWHeO6Nw e2yafoUoKxH6AWT+It5ARt0MkZfKggEtbFOfBbpG399+neeHQ9sCy+/TT7OPhxtUIv2K U4kw== X-Gm-Message-State: AIkVDXJW+rdwc5KPkFAJIAaYkBRzVBRj6Hujqe574ewlx9Id5Kz91sTAhZNQrQNmm/TwhRNXZarHg4I4u7Y8rw== X-Received: by 10.107.167.204 with SMTP id q195mr3585846ioe.170.1484508730871; Sun, 15 Jan 2017 11:32:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.172.7 with HTTP; Sun, 15 Jan 2017 11:32:10 -0800 (PST) From: Constantin Kulikov Date: Sun, 15 Jan 2017 22:32:10 +0300 Message-ID: Subject: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. To: emacs-devel Content-Type: multipart/alternative; boundary=001a11414d7091d8690546271f5f X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 19:32:14 -0000 --001a11414d7091d8690546271f5f Content-Type: text/plain; charset=UTF-8 For example: emacs -Q M-: (set-frame-parameter nil 'buffer-predicate #'(lambda (b) (message "f-b-p: %s" b))) RET M-: (with-temp-buffer nil) RET C-x b *Messages* RET See that all buffers listed except of the *temp*(no window buffers were changed). Why? This is inefficient, especially for the with-temp-buffer which is used very frequently in emacs and in side packages. --001a11414d7091d8690546271f5f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
For example:

emacs -Q

M-: (set-frame-parameter n= il 'buffer-predicate #'(lambda (b) (message "f-b-p: %s" b= ))) RET
M-: (with-temp= -buffer nil) RET
C-x b= *Messages* RET

See that all buffers listed except of the *temp*(no window = buffers were changed). Why?
This is inefficient, especially for t= he with-temp-buffer which is used very frequently in emacs and in side pack= ages.
--001a11414d7091d8690546271f5f-- From MAILER-DAEMON Sun Jan 15 15:31:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSrSN-0000vc-PK for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 15:31:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSrSL-0000u1-Jr for emacs-devel@gnu.org; Sun, 15 Jan 2017 15:31:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSrSG-0001TB-Nl for emacs-devel@gnu.org; Sun, 15 Jan 2017 15:31:13 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41331) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSrSG-0001T7-K1; Sun, 15 Jan 2017 15:31:08 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2686 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cSrSE-0005q9-Nq; Sun, 15 Jan 2017 15:31:08 -0500 Date: Sun, 15 Jan 2017 22:31:10 +0200 Message-Id: <83inpg9ib5.fsf@gnu.org> From: Eli Zaretskii To: Constantin Kulikov CC: emacs-devel@gnu.org In-reply-to: (message from Constantin Kulikov on Sun, 15 Jan 2017 22:32:10 +0300) Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 20:31:14 -0000 > From: Constantin Kulikov > Date: Sun, 15 Jan 2017 22:32:10 +0300 > > For example: > > emacs -Q > > M-: (set-frame-parameter nil 'buffer-predicate #'(lambda (b) (message "f-b-p: %s" b))) RET > M-: (with-temp-buffer nil) RET > C-x b *Messages* RET > > See that all buffers listed except of the *temp*(no window buffers were changed). Why? Because it needs to find another buffer to become the current one. And it only searches until it finds the first buffer that is not already visible in some window. Your recipe just leaves it with too few buffers, so it looks to you like it goes over all of them. > This is inefficient, especially for the with-temp-buffer which is used very frequently in emacs and in side > packages. As long as with-temp-buffer calls kill-buffer, there's no way around it, because kill-buffer is a command that must fit user expectations. We could perhaps introduce a new kill-temp-buffer primitive to avoid the overhead. From MAILER-DAEMON Sun Jan 15 15:34:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSrVj-000395-QV for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 15:34:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57543) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSrVg-00035x-PB for emacs-devel@gnu.org; Sun, 15 Jan 2017 15:34:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSrVf-0002im-Mz for emacs-devel@gnu.org; Sun, 15 Jan 2017 15:34:40 -0500 Received: from mail-ot0-x22a.google.com ([2607:f8b0:4003:c0f::22a]:35702) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSrVf-0002ho-IZ for emacs-devel@gnu.org; Sun, 15 Jan 2017 15:34:39 -0500 Received: by mail-ot0-x22a.google.com with SMTP id 65so33900552otq.2 for ; Sun, 15 Jan 2017 12:34:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=fWc6uJKcph8l0Cxkm0sGC1sHha2ZooxcfnbuXG/Egjs=; b=bwirRBmYxtQEhZfY9lc8/le/gEbdmgO5rRd5w5kChwpmRMAeqWHlejc61xlgljszPO NcShGx4A9yRufRPmXTIvJTvVkDpZJIA0DX85KcUixzs5EQYM2QuyYip4QGg2CO9K+e+b POxk2MDe08aAE2bCKYjnN36CIqvEsI6W5qqB6R4S4Un+FlWcwXnkV8SuLsBY72UZ/Y2y 2RFkHVN6mLoSzFFp97s7ncR9wvUQRpFR2glLI75/jrebDtxexl+wEKvTFhCuCbGflr8U J3qY2d99RUtFn/fveQqWzZWfEjDIJn1jNqrCPaRnYBOpxLhygpQ3z40urUXzr49t74nW Z/Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fWc6uJKcph8l0Cxkm0sGC1sHha2ZooxcfnbuXG/Egjs=; b=EgZCmHZeHwKlBnqBkhLHlhT+2Juhein463vWGi1KGZd8KNox5Fa2mfe9NSZ9RjTW6n xmJCYoGJgqCU0mqhuJdEDvNUXwDHpEna/N0ljEu39iOprNU1g7C9B/7jLqNF708Uz+z8 jO9pOec4rJAEtVtnBKhRzmdZ9IUxhAvpjOs+v9mCZlsFlZZYiYZbp1A3wIMokQho02xh woKyHF6p4SeWvEIj5teTcwoDmagQ3OJ7vbFG0Ee3O4h3dprTwzw1q2J6Akuc9oo+LydN 7tdxvNTVGsS3xY3tK2YwCdy9UQsPktz1DZJgCfSTZAwSqKWPBJZ5R2C5HGIrOwE6d3PS /lOw== X-Gm-Message-State: AIkVDXJ118rDHEmNRlmN483rAC/FbopmZE2D2Swmf8R92u7XeSi6qQ9w2Y6RmQJeW4k4nQhzERBAAfyD5OwAHA== X-Received: by 10.157.40.121 with SMTP id h54mr12941779otd.179.1484512478648; Sun, 15 Jan 2017 12:34:38 -0800 (PST) MIME-Version: 1.0 References: <20170101122441.9380.61243@vcs.savannah.gnu.org> <20170101122441.55FB1220152@vcs.savannah.gnu.org> In-Reply-To: From: Philipp Stephani Date: Sun, 15 Jan 2017 20:34:27 +0000 Message-ID: Subject: Re: [Emacs-diffs] master 93be35e: Fix encoding of JSON surrogate pairs To: Stefan Monnier , emacs-devel@gnu.org Cc: Philipp Stephani Content-Type: multipart/alternative; boundary=001a1142d768f45f6d054627fea2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Jan 2017 20:34:41 -0000 --001a1142d768f45f6d054627fea2 Content-Type: text/plain; charset=UTF-8 Stefan Monnier schrieb am So., 1. Jan. 2017 um 15:56 Uhr: > > + ;; Special-case UTF-16 surrogate pairs, > > + ;; cf. https://tools.ietf.org/html/rfc7159#section-7. Note that > > + ;; this clause overlaps with the next one and therefore has to > > + ;; come first. > > + ((looking-at > > + (rx (group (any "Dd") (any "89ABab") (= 2 (any "0-9A-Fa-f"))) > > + "\\u" (group (any "Dd") (any "C-Fc-f") (= 2 (any > "0-9A-Fa-f"))))) > > + (json-advance 10) > > + (json--decode-utf-16-surrogates > > + (string-to-number (match-string 1) 16) > > + (string-to-number (match-string 2) 16))) > > ((looking-at "[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]") > > Wouldn't it be better to move the surrogate-handling into the > hex-handling branch? > Maybe, I don't have a strong preference. The current solution avoids an additional nested conditional though. --001a1142d768f45f6d054627fea2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Stefan= Monnier <monnier@iro.umontr= eal.ca> schrieb am So., 1. Jan. 2017 um 15:56=C2=A0Uhr:
> +=C2=A0 =C2=A0 =C2=A0;; Special-case UTF-1= 6 surrogate pairs,
> +=C2=A0 =C2=A0 =C2=A0;; cf. ht= tps://tools.ietf.org/html/rfc7159#section-7.=C2=A0 Note that
> +=C2=A0 =C2=A0 =C2=A0;; this clause overlaps with the next one and the= refore has to
> +=C2=A0 =C2=A0 =C2=A0;; come first.
> +=C2=A0 =C2=A0 =C2=A0((looking-at
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(rx (group (any "Dd") (any "= ;89ABab") (=3D 2 (any "0-9A-Fa-f")))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"\\u" (group (any = "Dd") (any "C-Fc-f") (=3D 2 (any "0-9A-Fa-f")= ))))
> +=C2=A0 =C2=A0 =C2=A0 (json-advance 10)
> +=C2=A0 =C2=A0 =C2=A0 (json--decode-utf-16-surrogates
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(string-to-number (match-string 1) 16)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(string-to-number (match-string 2) 16))) >=C2=A0 =C2=A0 =C2=A0 =C2=A0((looking-at "[0-9A-Fa-f][0-9A-Fa-f][0-= 9A-Fa-f][0-9A-Fa-f]")

Wouldn't it be better to move the surrogate-handling into the
hex-handling branch?

Maybe, I don't have a strong preferenc= e. The current solution avoids an additional nested conditional though.=C2= =A0
--001a1142d768f45f6d054627fea2-- From MAILER-DAEMON Sun Jan 15 21:32:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSx5z-0000BS-HS for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 21:32:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSx5w-00009n-SJ for emacs-devel@gnu.org; Sun, 15 Jan 2017 21:32:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSx5v-0000xg-K2 for emacs-devel@gnu.org; Sun, 15 Jan 2017 21:32:28 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:39115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSx5r-0000tk-QC; Sun, 15 Jan 2017 21:32:23 -0500 Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0G2WKx0008516; Sun, 15 Jan 2017 21:32:20 -0500 Received: by ceviche.home (Postfix, from userid 20848) id F3A7C661CB; Sun, 15 Jan 2017 21:32:19 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Thien-Thi Nguyen Subject: Re: [elpa] master cf9edfa 3/5: [gnugo slog] Clear =?utf-8?Q?=E2=80=98inhibit-point-motion-hooks=E2=80=99=2E?= Message-ID: References: <20170115231126.7513.20697@vcs.savannah.gnu.org> <20170115231126.DB46722017C@vcs.savannah.gnu.org> Date: Sun, 15 Jan 2017 21:32:19 -0500 In-Reply-To: <20170115231126.DB46722017C@vcs.savannah.gnu.org> (Thien-Thi Nguyen's message of "Sun, 15 Jan 2017 23:11:26 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.4 X-NAI-Spam-Rules: 4 Rules triggered PHONE_800=0.3, BOUNCE_SUBJ_UTF8=0.1, EDT_SA_DN_PASS=0, RV5920=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5920> : inlines <5627> : streams <1729264> : uri <2358816> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 02:32:30 -0000 > + ;; GNU Emacs 25.1 looks askance at =E2=80=98intangible=E2=80=99, sigh. > + (setq-local inhibit-point-motion-hooks nil) How 'bout the patch below (which additionally gets you rid of the place where you modify a string in-place, which I find very untoward). >From the bit of testing I've done, the intangibility on your board is a bit flimsy (C-f/C-b can move off the board), but I haven't tried to change that. Stefan diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el index a9e03aaa4..6a3eb0b65 100644 --- a/packages/gnugo/gnugo.el +++ b/packages/gnugo/gnugo.el @@ -636,6 +636,9 @@ when you are sure the command cannot fail." :nogrid) (save-excursion (gnugo-refresh))))) =20 +(defconst gnugo--intangible + (if (fboundp 'cursor-intangible-mode) 'cursor-intangible 'intangible)) + (defun gnugo-propertize-board-buffer () (erase-buffer) (insert (substring (gnugo--q "showboard") 3)) @@ -703,7 +706,7 @@ when you are sure the command cannot fail." (gnugo-position gnugo-yin)))) (unless (=3D (1- other-edge) p) (add-text-properties (1+ p) (+ 2 p) ispc-props) - (put-text-property p (+ 2 p) 'intangible ival))) + (put-text-property p (+ 2 p) gnugo--intangible ival))) (add-text-properties (1+ other-edge) right-empty grid-props) (goto-char right-empty) (when (looking-at "\\s-+\\(WH\\|BL\\).*capt.* \\([0-9]+\\).*$") @@ -725,7 +728,7 @@ when you are sure the command cannot fail." =20 (defun gnugo-merge-showboard-results () (let ((aft (substring (gnugo--q "showboard") 3)) - (adj 1) ; string to buffer position adjust= ment + (adj (point-min)) ; String to buffer position adjustment. =20 (sync "[0-9]* stones$") ;; Note: `sync' used to start w/ "[0-9]+", but that is too @@ -797,8 +800,9 @@ when you are sure the command cannot fail." (delete-char 1) ;; do this last to avoid complications w/ font lock ;; (this also means we cannot include `intangible' in `front-stick= y') - (when (setq very-strange (get-text-property (1+ cut) 'intangible)) - (put-text-property cut (1+ cut) 'intangible very-strange)))))) + ;; FIXME: This care is probably not needed for cursor-intangible. + (when (setq very-strange (get-text-property (1+ cut) gnugo--intang= ible)) + (put-text-property cut (1+ cut) gnugo--intangible very-strange))= )))) =20 (defsubst gnugo--move-prop (node) (or (assq :B node) @@ -1249,34 +1253,36 @@ its move." (setq cur gnugo-mode-line) (gnugo-put :mode-line cur) (gnugo-put :mode-line-form - (cond ((stringp cur) - (setq cur (copy-sequence cur)) - (let (acc cut c) - (while (setq cut (string-match "~[bwpmtu]" cur)) - (aset cur cut ?%) - (setq c (aref cur (cl-incf cut))) - (aset cur cut ?s) - (push - `(,(intern (format "squig-%c" c)) - ,(cl-case c - (?b '(or (gnugo-get :black-captures) 0)) - (?w '(or (gnugo-get :white-captures) 0)) - (?p '(gnugo-current-player)) - (?t '(let ((ws (gnugo-get :waiting-start))) - (if ws - (cadr (time-since ws)) - "-"))) - (?u '(or (gnugo-get :last-waiting) "-")) - (?m '(let ((tree (gnugo-get :sgf-gametree)) - (monkey (gnugo-get :monkey))) - (gethash (car (aref monkey 0)) - (gnugo--tree-mnum tree) - ;; should be unnecessary - "?"))))) - acc)) - `(let ,(delete-dups (copy-sequence acc)) - (format ,cur ,@(reverse (mapcar 'car acc)))))) - (t cur)))) + (if (not (stringp cur)) + cur + (let* ((acc ()) + (fmt + (replace-regexp-in-string + "~[bwpmtu]" + (lambda (match) + (prog1 "%s" + (let ((c (aref match 1))) + (push + `(,(intern (format "squig-%c" c)) + ,(cl-case c + (?b '(or (gnugo-get :black-captures) 0)) + (?w '(or (gnugo-get :white-captures) 0)) + (?p '(gnugo-current-player)) + (?t '(let ((ws (gnugo-get :waiting-start)= )) + (if ws + (cadr (time-since ws)) + "-"))) + (?u '(or (gnugo-get :last-waiting) "-")) + (?m '(let ((tree (gnugo-get :sgf-gametree= )) + (monkey (gnugo-get :monkey))) + (gethash (car (aref monkey 0)) + (gnugo--tree-mnum tree) + ;; should be unnecessary + "?"))))) + acc)))) + cur t t))) + `(let ,(delete-dups (copy-sequence acc)) + (format ,fmt ,@(reverse (mapcar #'car acc)))))))) (let ((form (gnugo-get :mode-line-form))) (setq mode-line-process (and form @@ -2145,8 +2151,8 @@ In this mode, keys do not self insert." (setq font-lock-defaults '(gnugo-font-lock-keywords t) truncate-lines t) (add-hook 'kill-buffer-hook 'gnugo-cleanup nil t) - ;; GNU Emacs 25.1 looks askance at =E2=80=98intangible=E2=80=99, sigh. - (setq-local inhibit-point-motion-hooks nil) + (if (eq gnugo--intangible 'cursor-intangible) + (cursor-intangible-mode 1)) (setq-local gnugo-state (gnugo--mkht :size (1- 42))) (setq-local gnugo-btw nil) (add-to-list 'minor-mode-alist '(gnugo-btw gnugo-btw)) @@ -2404,10 +2410,10 @@ See `gnugo-board-mode' for a full list of commands." =20 ;;;-----------------------------------------------------------------------= ---- -;;; The remainder of this file defines a simplified SGF-handling library. -;;; When/if it should start to attain generality, it should be split off i= nto -;;; a separate file (probably named sgf.el) w/ funcs and vars renamed sans= the -;;; "gnugo/" prefix. +;; The remainder of this file defines a simplified SGF-handling library. +;; When/if it should start to attain generality, it should be split off in= to +;; a separate file (probably named sgf.el) w/ funcs and vars renamed sans = the +;; "gnugo/" prefix. =20 (defconst gnugo/sgf-*r4-properties* '((AB "Add Black" setup list stone) From MAILER-DAEMON Sun Jan 15 21:44:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSxHU-0003R1-Ru for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 21:44:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46542) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSxHS-0003Qj-Jk for emacs-devel@gnu.org; Sun, 15 Jan 2017 21:44:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSxHN-0004EE-OH for emacs-devel@gnu.org; Sun, 15 Jan 2017 21:44:22 -0500 Received: from mail-pg0-x230.google.com ([2607:f8b0:400e:c05::230]:34314) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSxHN-0004EA-IZ for emacs-devel@gnu.org; Sun, 15 Jan 2017 21:44:17 -0500 Received: by mail-pg0-x230.google.com with SMTP id 14so11210359pgg.1 for ; Sun, 15 Jan 2017 18:44:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=KxbRpIxeFBqz8zYXoGJD+EtSYwBrIztE1DuMadX6qis=; b=uVtR1wPuBdwaH2rbreKXmbFRIZlpfE1t4gQ6Y/sLTi2Af2NYIUBN+mQgQJ5slvsn7d Qresae6GYefde5sorxRRR+CdeS2PSnjZYqZKcDwB/cYv21RRcSdJfzitdbqkgpnWvaxR SxAEd6L+gaffulqoTM0+RW73doVoQPVa6TBfJyAz3o8wkScpEj066TgM2LdGYW03Ra+O DnnUd3Csk+16M/nsLtq3Clu+kUrpfx5l1w4C0Y0QbJ7y0gMoKwgguuVdUkmr4ZoFIuIG EDe9AU/RehHhO/T1ZJzSU8Y9733Ihs4yVetBORZBmmbJk6v+fCBZjm6j5z/kizUDKvRc l2XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=KxbRpIxeFBqz8zYXoGJD+EtSYwBrIztE1DuMadX6qis=; b=MvrCiGf6QG/Tyj1+dUVNRVBhd7MDSSewBcllp9ET4IfjfYBRxlO8X6QzNYXviy9arM xe6zzaMVPSppJf7q+E9SncNuwVC8SUMggd0QseEgGVFbjY6S2DQUvWme4t5/t3skdyVG 9lU8eXq2to5dD277I6fe9phsu57Grm0lj7Lgg+TI4QhZoMtzkynZ8lUl3YO3BMQ/CRtM 5ZwN6iyFYTmCh5s/eVEbFe00kOKHYFfh9ysTnp5xXCBa6viI21TkDtov+1521c1C+fBY mo98jZCZ6WGTNGielxDqz02KkgYFWq+YO7XMMAUKj8F+cJQJqyEoBzDp8401cDm5pH3z EVGA== X-Gm-Message-State: AIkVDXKiBseTyaDEau58/kLvvzUXX/2Z/P18sEq/3rpPrwF2emWc4mKC0EuRXfYa4vMOUg== X-Received: by 10.98.201.135 with SMTP id l7mr34710107pfk.67.1484534656397; Sun, 15 Jan 2017 18:44:16 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id b67sm11344303pfj.81.2017.01.15.18.44.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jan 2017 18:44:15 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Mon, 16 Jan 2017 11:44:13 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Stefan Monnier cc: emacs-devel@gnu.org Subject: Re: Anaphoric macros: increase visibility In-Reply-To: Message-ID: References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 02:44:23 -0000 On Sun, 15 Jan 2017, Stefan Monnier wrote: > Tino writes: >>> (pcase-let ((`(,a ,b) '(1 2 3))) >>> (list a b)) >>> ==> (1 2) >>> although the pattern doesn't match. >> I can be bitten with that pitfall as well. > > I think the problem is in the name: it really should be called just `let`. > It does not do any *match*, instead the pcase pattern is only used to > specify how to *extract* the data we want. I see. Then, `pcase-let' is somehow similar than `-let' in dash.el. From MAILER-DAEMON Sun Jan 15 23:00:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSySs-0001P6-Bd for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 23:00:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSySq-0001NR-Q7 for emacs-devel@gnu.org; Sun, 15 Jan 2017 23:00:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSySm-0002hb-Ui for emacs-devel@gnu.org; Sun, 15 Jan 2017 23:00:12 -0500 Received: from [195.159.176.226] (port=41428 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cSySm-0002g5-Nm for emacs-devel@gnu.org; Sun, 15 Jan 2017 23:00:08 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cSyST-0005kP-OX for emacs-devel@gnu.org; Mon, 16 Jan 2017 04:59:49 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Anaphoric macros: increase visibility Date: Sun, 15 Jan 2017 22:59:26 -0500 Lines: 16 Message-ID: References: <87wpdyivvf.fsf@web.de> <87k29xqhqp.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:hB7/xFUzmWUGWjqNnVA8xDUXi/U= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 04:00:13 -0000 >> I think the problem is in the name: it really should be called just `let`. >> It does not do any *match*, instead the pcase pattern is only used to >> specify how to *extract* the data we want. > I see. Then, `pcase-let' is somehow similar than `-let' in dash.el. That's right. It's called `pcase-let` because it's in the `pcase` package (because it uses pcase pattern syntax and implementation) and hence must use the `pcase-` prefix. The main advantage of the pcase pattern syntax is its regularity which makes it extensible (see for example the (re-match REGEXP) pcase-macro I recently posted which lets you match against a regexp and extract submatches into variables at the same time). Stefan From MAILER-DAEMON Sun Jan 15 23:50:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cSzF8-0003GA-26 for mharc-emacs-devel@gnu.org; Sun, 15 Jan 2017 23:50:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33587) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cSzF5-0003Ed-9X for emacs-devel@gnu.org; Sun, 15 Jan 2017 23:50:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cSzF4-00007z-MQ for emacs-devel@gnu.org; Sun, 15 Jan 2017 23:50:03 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:40693) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cSzF0-00006t-Vf; Sun, 15 Jan 2017 23:49:59 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DBBQAu3EVY//XrjBhdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW6F8AZRWgggZhgMEAgKCEUETAQIBAQEBAQEBYiiEaQZWIxALNAcLFBgNiSatFItEAQEBBwIBJIsZhRSFFQWPfIpqknOIJ4Y6FJF7IQIzeBMOhBCBYyCJLQEBAQ X-IPAS-Result: A0DBBQAu3EVY//XrjBhdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW6F8AZRWgggZhgMEAgKCEUETAQIBAQEBAQEBYiiEaQZWIxALNAcLFBgNiSatFItEAQEBBwIBJIsZhRSFFQWPfIpqknOIJ4Y6FJF7IQIzeBMOhBCBYyCJLQEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="286173065" Received: from 24-140-235-245.cpe.teksavvy.com (HELO pastel.home) ([24.140.235.245]) by smtp.teksavvy.com with ESMTP; 15 Jan 2017 23:49:56 -0500 Received: by pastel.home (Postfix, from userid 20848) id BC56061562; Sun, 15 Jan 2017 23:49:56 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Ian Dunn Subject: Re: [Emacs-diffs] emacs-25 24a5f57: * lisp/net/eww.el (eww-tag-meta): Handle single quoted URLs (Bug#25445). Message-ID: References: <20170116042508.6705.40178@vcs.savannah.gnu.org> <20170116042508.8F443220134@vcs.savannah.gnu.org> Date: Sun, 15 Jan 2017 23:49:56 -0500 In-Reply-To: <20170116042508.8F443220134@vcs.savannah.gnu.org> (Noam Postavsky's message of "Mon, 16 Jan 2017 04:25:08 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 04:50:04 -0000 > (when (or (string-match "^\\([0-9]+\\) *;.*url=\"\\([^\"]+\\)\"" refresh) > + (string-match "^\\([0-9]+\\) *;.*url='\\([^']+\\)'" refresh) > (string-match "^\\([0-9]+\\) *;.*url=\\([^ ]+\\)" refresh)) BTW, this can be consolidated into (string-match (eval-when-compile (concat "^\\([0-9]+\\) *;.*url=" "\\(?:\"\\(?2:[^\"]+\\)\"" "\\|'\\(?2:[^']+\\)'" "\\|\\(?2:[^ ]+\\)" "\\)")) refresh) -- Stefan From MAILER-DAEMON Mon Jan 16 03:14:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT2Qh-0005iN-CC for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 03:14:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35259) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT2Qf-0005hU-Sc for emacs-devel@gnu.org; Mon, 16 Jan 2017 03:14:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT2Qe-0001it-Uc for emacs-devel@gnu.org; Mon, 16 Jan 2017 03:14:13 -0500 Received: from mail-io0-x236.google.com ([2607:f8b0:4001:c06::236]:35955) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cT2Qd-0001id-Hj; Mon, 16 Jan 2017 03:14:11 -0500 Received: by mail-io0-x236.google.com with SMTP id j13so86401011iod.3; Mon, 16 Jan 2017 00:14:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=0OPj/F+TT3Ron+TzR2zJmwt+2RLVzyar0uWwhvN3NDA=; b=VErZ/2bBNbMAuzm3l1Iyds912D2VYT4X+EcpqdaJDzrhFkkRq8nTvNRnF14zS94E4p MhLGBeK0Eyp2OPfAbsrHTMXkhTSzQIGS2sS/Eijw7I5m6cqOMQLrN0qhiVTRlROSgtvP e9Y/i0upFxcKEHi+EwU62FfXrQjUNikZKky8UDiVB4PaDV9RnMpIECnkqAKXC3GRndy3 GLDlwRy46Grpq2WFeP1nI8aS68blhieo00SnFe5m076wG/2Gpw7wbJenjOffGDrIUg07 17UpL5Gl9Mn9+XJdlXf5F1pQWa+wlaZHHwhLmWG3RVgIdVivVsL9lq4eUANGLMUs3hVS u2Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=0OPj/F+TT3Ron+TzR2zJmwt+2RLVzyar0uWwhvN3NDA=; b=KO6EPJHH7bRAF8bE1R2XW/V2qp/8dRE7UsqWe1f2T+M/BgpTnr185IFzAdtI5P4S/j eCIBUDCs3JX5y8e1PN0KR8pSnreyE/ipksk69/BU11wHkp6ARxfvLpYh23tOm9Hw2ceP e3mWj2EfqQ2eZgHVOXQvXAP9AMn9JYuss1jfurHOf/1BTzma5DNwWYPxMX0kQFUmKJ5n TlZGm+7V5c8eEgcrmTOsi2smq3j/5e8Jmha2uQDpC9GvxviViDNkVY7Vktm/Y+ItUUL8 P04zgQkzuk/zSJG5lCW1sW8chlMpp16RlLGnb4s48MM55rLMoeysJeqHP5tBQHQCQnvh B5pQ== X-Gm-Message-State: AIkVDXIR+hbkYu3BgWd7YMbMEu3ZosX4kIF5V+1v3ycUF6HMjcV2YLv8pfR103GPq1m5x9E8KaqRvPppzU+QYg== X-Received: by 10.107.147.134 with SMTP id v128mr28297645iod.75.1484554450759; Mon, 16 Jan 2017 00:14:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.172.7 with HTTP; Mon, 16 Jan 2017 00:14:10 -0800 (PST) In-Reply-To: <83inpg9ib5.fsf@gnu.org> References: <83inpg9ib5.fsf@gnu.org> From: Constantin Kulikov Date: Mon, 16 Jan 2017 11:14:10 +0300 Message-ID: Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. To: Eli Zaretskii Cc: emacs-devel Content-Type: multipart/alternative; boundary=94eb2c055d18aff69d054631c418 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 08:14:14 -0000 --94eb2c055d18aff69d054631c418 Content-Type: text/plain; charset=UTF-8 > it needs to find another buffer to become the current one The current in what sense? In the sense of 1)(current-buffer) or 2) (windown-buffer (selected-window))? If 1) then why require that this buffer is not visible? If 2) then why call the buffer-predicate in the case where the killed buffer was not shown in any window? What I understand of how kill-buffer must work: First call kill-buffer hooks Then find windows with the buffer and replace it, here the call to buffer-predicate it legit if the buffer was visible in any window. Then really kill the buffer. At this point we can set selected window buffer as current because we already have called the replace-buffer-in-window. If there is no selected window, then we can take the first buffer in (buffer-list) as current or create the *sctatch* and set it as current. I can not see why there is a need to call buffer-predicate when killing a buffer that was not visible in any window.) --94eb2c055d18aff69d054631c418 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
> it needs to find ano= ther buffer to become the current one
The current in what sense? In the sense of 1)(current-buffer) or= 2) (windown-buffer (selected-window))?
If 1) then why require that this buffer is not visible?
If 2) then why call the buffe= r-predicate in the case where the killed buffer was not shown in any window= ?

What I understand of how ki= ll-buffer must work:
First call kill-buffer hooks
Then find= windows with the buffer and replace it, here the call to buffer-predicate = it legit if the buffer was visible in any window.
Then really kill the buffer.
At this= point we can set selected window buffer as current because we already have= called the replace-buffer-in-window.
If th= ere is no selected window, then we can take the first buffer in (buffer-lis= t) as current
or create the *sctatch* and s= et it as current.

I can not see why there is a need to call buffer-predicate when= killing a buffer that was not visible in any window.)
--94eb2c055d18aff69d054631c418-- From MAILER-DAEMON Mon Jan 16 04:44:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT3qV-0007L6-OU for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 04:44:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT3qS-0007JN-W6 for emacs-devel@gnu.org; Mon, 16 Jan 2017 04:44:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT3qP-0007nn-1X for emacs-devel@gnu.org; Mon, 16 Jan 2017 04:44:57 -0500 Received: from mout.gmx.net ([212.227.17.22]:61309) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT3qO-0007ml-Nj for emacs-devel@gnu.org; Mon, 16 Jan 2017 04:44:52 -0500 Received: from detlef.gmx.de ([93.197.214.201]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Mcxtm-1cC4xI2Kri-00IF5C for ; Mon, 16 Jan 2017 10:44:46 +0100 From: Michael Albinus To: emacs-devel@gnu.org Subject: Patch for Emacs 25.2 Date: Mon, 16 Jan 2017 10:44:45 +0100 Message-ID: <87o9z7s5iq.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Provags-ID: V03:K0:pUsPbwc9o/14aj/SnBDpzaq7SxZX71QW+dOfWhhUYXgRA/oBlZd +GamNNnDEKJL1NzTQBKgeleVurOMd0dnG3be7lugoP6iO6I7VHzwFRM15LXT+K0YbxYKQcB OghzvGYaL7gCf4iZJokZNa6DAFps7PJCfcV+uGiW7FOjY2ZVsrjE63/uq9rd/cqeZkE9zmF k6pERTPmsVMvmZ2wWVmbA== X-UI-Out-Filterresults: notjunk:1;V01:K0:RLixx3lNC4Q=:oe1NQbl5SmL1pXiW9ycae5 pTPl+TUmNQ0VPZV6UgHY4Pnre7WQEo72oPVbLtko1TA1NuVVIgC236tw812iXIWAIEM/0c8pL A8QX8JyXxf6cP1n5bLdOX+AJA9E3ajv+UzDlDJNoHKXkggCLKDXLhDREZ2SUAI712kzUOOMna t/Gg8FMFiVUtyYZE1onsURMdAV0OgbqCMZ27TMpyJ9+hXlI2LHDjwZog8JrLAqA8nhK5OAGwM /MOFL53uqQHKmqJrqk3uVohjUQ6YQlbGcyJFH3K1SHEcP4uqHupJuKtSUOY3QV0gdUFEfNg3t DiBZ7jl6+pQLEL4XrA7uR766NcFV/NPZG6/AwBV3Yh/fA1PrH6LvuXAcdd1943fghIohEnXyF ki9rUSdVrEasluPZaLCHKGrARKr4gfuLus+f6ktQud9L/Vy/ZrI1jvzynOkDrkDXhwpFXwMMp TgkAHzRBLcz9lQwPeJ3lN1MdVuwAQgZkRJPlMnl48OgmrhxIjwZwtD3dm0INI4L2fWPyNygtX 07UZLZl5zTFckvMRda8jxUJcsP32l01C3OZLmvdA6rfurlreFi4vdvDLdCrD6He6xlWfZbsGd DUeivyilY1Nq9L4sepmGOk2t1cR2lIz+V2mKah2Qf7byuVsiK9NBKZ7YvxPgs0m4iTHdqr0M6 ehN2YKZ6O+GnVKeEd/PHpcHD+W94zWZGik8E3vmr/7Fub7OSKYkVasNOSczmLeufh/OUlold6 GP5ajnPj8kAGqqvbKY6i8duEPojraKmto4dMsnifw19zpqThwu+2fMnJhfTcwSeXkWWiaOEdB LWVxdDwlDPEMtw0P4qg+IUurNTT2dF5lQH1s5Jc+bZC7/z4Halxj+QdRBwy7pNMY5O5gGGy7h l4Tz5u5x5RwnzmBWwLGmdCMGYmm9lJCGlnzHD/r/US9P1teced/lTxwGwrt+8bqrfcIAzJ4Iu sj+nS+nYpK1fulpURXMAplQ1D6qjUS4/TomTvz4dNSBok8okGMObwmfqQFjUGHpHatujWJWIY MA== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 09:44:58 -0000 --=-=-= Content-Type: text/plain Hi, enclosed is a patch of tramp.el, which fixes a bug introduced by Emacs 25.1, commit e3a0f3daf12e208e88d712b09ef82096849b9431. Working on this, I found a related bug in files.el, which would be solved by the appended patch as well. Both changes are simple, so I'm asking whether they could be applied to Emacs 25.2. I've adapted also tramp-tests.el, and all tests pass for both GNU/Linux and MS Windows. Best regards, Michael. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment diff --git a/lisp/files.el b/lisp/files.el index a6fe381..0d0d6e2 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -5940,8 +5940,8 @@ make-auto-save-file-name ;; Make sure auto-save file names don't contain characters ;; invalid for the underlying filesystem. (if (and (memq system-type '(ms-dos windows-nt cygwin)) - ;; Don't modify remote (ange-ftp) filenames - (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result))) + ;; Don't modify remote filenames. + (not (file-remote-p result))) (convert-standard-filename result) result)))) @@ -5978,8 +5978,8 @@ make-auto-save-file-name ((file-writable-p "/var/tmp/") "/var/tmp/") ("~/"))))) (if (and (memq system-type '(ms-dos windows-nt cygwin)) - ;; Don't modify remote (ange-ftp) filenames - (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" fname))) + ;; Don't modify remote filenames. + (not (file-remote-p fname))) ;; The call to convert-standard-filename is in case ;; buffer-name includes characters not allowed by the ;; DOS/Windows filesystems. make-temp-file writes to the diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index b4242c0..f350f2a 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4102,7 +4102,11 @@ tramp-handle-make-auto-save-file-name (file-exists-p tramp-auto-save-directory)) (make-directory tramp-auto-save-directory t)) - (let ((system-type 'not-windows) + (let ((system-type + (if (and (stringp tramp-auto-save-directory) + (file-remote-p tramp-auto-save-directory)) + 'not-windows + system-type)) (auto-save-file-name-transforms (if (and (null tramp-auto-save-directory) (boundp 'auto-save-file-name-transforms)) diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el index 83a780d..2c59591 100644 --- a/test/automated/tramp-tests.el +++ b/test/automated/tramp-tests.el @@ -1775,13 +1775,17 @@ tramp-test--shell-command-to-string-asynchronously (should (string-equal (make-auto-save-file-name) - ;; This is taken from original `make-auto-save-file-name'. - (expand-file-name - (format - "#%s#" - (subst-char-in-string - ?/ ?! (replace-regexp-in-string "!" "!!" tmp-name1))) - temporary-file-directory))))) + ;; This is taken from original `make-auto-save-file-name'. + ;; We call `convert-standard-filename', because on + ;; MS Windows the (local) colons must be replaced by + ;; exclamation marks. + (convert-standard-filename + (expand-file-name + (format + "#%s#" + (subst-char-in-string + ?/ ?! (replace-regexp-in-string "!" "!!" tmp-name1))) + temporary-file-directory)))))) ;; No mapping. (let (tramp-auto-save-directory auto-save-file-name-transforms) --=-=-=-- From MAILER-DAEMON Mon Jan 16 08:28:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT7KZ-00014l-Cs for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 08:28:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT7KX-00012k-7Y for emacs-devel@gnu.org; Mon, 16 Jan 2017 08:28:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT7KT-0000KW-1f for emacs-devel@gnu.org; Mon, 16 Jan 2017 08:28:13 -0500 Received: from petton.fr ([89.234.186.68]:47542) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT7KR-0000Gq-Ou; Mon, 16 Jan 2017 08:28:08 -0500 From: Nicolas Petton To: Emacs Devel Cc: rms@gnu.org Subject: Download buttons on the Emacs homepage Date: Mon, 16 Jan 2017 14:27:56 +0100 Message-ID: <87tw8znnhf.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484573279; bh=7l9De5mt4ax6LXlqorn4PRH/Dhs0E0HZWSbkFBPFyxQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=uP0UGGtdY8c2uju6RDkXSKrJt5k6bujZWrT6s5YaCp6Hx/tac5SnCgJ1kz/stZ7klezHQ+w+sE7oFCNsTA0IStAL43zWvwf3CatgBzHLGMCS7ojD9tTooyWPeI+H81qMO9lazssLs1QU9Q5Wu31UL0lgir3IYv3Fwse5H0uQDDI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 89.234.186.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 13:28:14 -0000 --=-=-= Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" --==-=-= Content-Type: text/plain Hi guys, After discussing with Richard, I added download buttons to the homepage of Emacs (see the attached screenshot). They take a bit of vertical space, but I hope it will make it much easier for users to get to the correct download section for their OS. When clicking a download button, the user gets redirected to the appropriate download section of download.html, which explains why non-free systems are bad and why Emacs has support for them. I hope you like the change :-) Cheers, Nico --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYfMpcAAoJECM1h6R8IHkQiJ0IAKRlMmgTImFOqrPs7/P8FD+A NzL3c5Lb7tKa3zbL1A0TmVE4jzlqKh0puXMO986C8yK59IvLjEN3qnzM9C5ayMcA mEbI5utU+chI51O6WqwmdxsAmuaqhyzQfQk/xBKAq+cqz1ED4AMzhsdnwIPuSpji H3dDXPXkFjoX/x1f0FaL07T2GnEq9dWtVl1a2c2Hppc4VH5teZl9hVvTsYKu4kL4 MuxCK9irrL7iiZSRZvbj5tHwVjCSMi6Nv0AWusmoDUkvxJVJI26qM07fqDH5mKnp 4tpwQF4NeaatvgYzbJXUKlRvksFUL6UgJs3pZH5Sc5R/ZRz0P81Ilbm5U6IUwrM= =c1os -----END PGP SIGNATURE----- --==-=-=-- --=-=-= Content-Type: image/png Content-Disposition: attachment; filename="Screenshot from 2017-01-16 14-24-18.png" Content-Transfer-Encoding: base64 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 XEy3rt0atYyIiIg4PyXyREREREREREREnICG1oqIiIiIiIiIiDgBJfJEREREREREREScgBJ5IiIi IiIiIiIiTkCJPBERERERERERESegRJ6IiIiIiIiIiIgTUCJPRERERERERETECSiRJyIiIiIiIiIi 4gSUyBMREREREREREXECSuSJiIiIiIiIiIg4ASXyREREREREREREnIASeSIiIiIiIiIiIk7AJTNl d2vHICIiIiIiIiIiIna4hEfFtnYMIiIiIiIiIiIiYoeG1oqIiIiIiIiIiDgBJfJERERERERERESc gBJ5IiIiIiIiIiIiTkCJPBERERERERERESegRJ6IiIiIiIiIiIgTUCJPRERERERERETECSiRJyIi IiIiIiIi4gSUyBMREREREREREXECSuSJiIiIiIiIiIg4ASXyREREREREREREnIASeSIiIiIiIiIi Ik5AiTwREREREREREREnoESeiIiIiIiIiIiIE1AiT0RERERERERExAkokSciIiIiIiIiIuIElMgT ERERERERERFxAi5gaO0YRERERERERERExA71yBMREREREREREXECSuSJiIiIiIiIiIg4ASXyRERE REREREREnIASeSIiIiIiIiIiIk5AiTwREREREREREREnoESeiIiIiIiIiIiIE1AiT0RERERERERE xAkokSciIiIiIiIiIuIElMgTERERERERERFxAkrkiYiIiIiIiIiIOAEl8kRERERERERERJyAEnki IiIiIiIiIiJOQIk8ERERERERERERJ6BEnoiIiIiIiIiIiBNQIk9ERERERERERMQJKJEnIiIiIiIi IiLiBJTIExERERERERERcQJK5ImIiIiIiIiIiDgBJfJEREREREREREScgBJ5IiIiIiIiIiIiTkCJ PBERERERERERESegRJ6IiIiIiIiIiIgTUCJPRERERERERETECSiRJyIiIiIiIiIi4gSUyBMRERER EREREXECSuSJiIiIiIiIiIg4ASXyREREREREREREnIASeSIiIiIiIiIiIk5AiTwREREREREREREn oESeiIiIiIiIiIiIE1AiT0RERERERERExAkokSciIiIiIiIiIuIElMgTERERERERERFxAkrkiYiI iIiIiIiIOAEl8kRERERERERERJyAEnkiIiIiIiIiIiJOQIk8ERERERERERERJ6BEnoiIiIiIiIiI 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 0g7DXb1gbNFcuEDcIhbIQn+eCsIwfM8wramCqpoUqqhV9ETOAfDrB3bTuqOXdJkTJs8abDQUL3TJ BeewxP8r6pa1oZqnInEu9uZFBdH9mONCLYLVAsEuyL/VYSJtdPnox4U5eMUOPR3P7VNGhWEZKhA2 raJ/pJu8zaBwmH/mDKqrKyatpTYikUhQW6Irr6urZ9L2PZ283vvV1DiN888/a8LrH1/xDHBioqcg vJn59ZPP8Z93P/hGH2MU3gnMozudCdIf+fDt/N3f/H8sWDB30tYcHh7hb7/yLVY8vnLS1hQEQRAE aa0VBEEQxkQphTWGssokLWfV03ukg8xAP/mRLIl0iqgpVRElt4ZCig1mBjlaYf0oJKLwtVRxKqo7 cmCADasOkU4HIh7WLwrUKHyJzmEtaEvc9BuIjCquUEXXjUrXZdSSgTAZ1igIBLrw/iAKuQge6+i9 KBL2osfRolEzbrQeoWvRQdMzchTfgqsNsxc0kEwmTujDbqnMmjWjpCHzXV095HI5ksnT44Y5Hbzj 5mvZsGHruDUrn3+JO+/8EKlUkvLyshOaFSgIbzaOtHfwne/eXXL9jKbpXHvtFZx15iJaWmZQUVEx qrX1+edf4qtf+/dTPlfqBP5cyWazp7zfiXDGGfP5h6/8KWvWvMrDjzzO1m07T3lNay3f+e6PmTmz kfPPm/gvFARBEARhItzRc3sEQRAEIUApDWiqqyuZf2YdW57qxFjDSG8fyeYZWM+LxtMBgYPPmjCF ViuMAcd1GOzNkRn2SSROzlmxe3MnxjMoV4eJtJHwFsVpmNBpVwi6MKjYsaci7100Ry82BEZhFFGL sMGiQ5HNRJEUgfxmiRNmA7Nh5OyL5vEF4mEkMEYttzYMvVCqSNxTYE2wrrXgJBx6RjownqGupYyG mVUYE4RgBL8Hk8fsObPYsnXiD6bGGA4cPMLCU3amnMh/Y0zWf4+Mvc6ySy+mprpq3PbC4aFhnl+1 hhtvuIra2poShLwSzlyicG18v7T1xsEvMcBAKeeU95oaTseZ3oh/Jqdyvddf8yf3Pkwul5twFa01 n/rEHdx22ztwnPH+zCn1/OOfK50uPXgnm8mdwL6Tg1KKZcsuZtmyi2k7fJQXXljDiy++wp69rSfk KC/G9w3/9u8/5pvf+KtJbd8VBEEQ3p7ITxJBEARhTILkWo3rODS2VKPSHr4HA51dECXXFjnQrCnM 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 RESOOcEpsQ6BgI3tOMFStfXVaevft23qfD5Kiyspya+mtKSSqkovtdU+bL9NXZ0fl8sKBgM9LmLj o4hLjKZQ0/TWAAAgAElEQVRzSjzJXRNJSIjGsiwsywyucxdqHwwM08AyTRWxEBERERGRY4oCeSIi ckyrD+rVr3dnO3bwtW0H4244mJYVzJgjmDVnmsG19gzDwLadfe0Q3M8OZe2ZpoVhhgphNMi6U/BO RERERESORa727oCIiMiRHBhYcxwzHKSrz86DfQE+A/D7HXDAwcE0jGC2nWFgGgaGaWFZrnDgrr6t +mOJiIiIiIgcqxTIExGRDqVhYC+YfWcedXsiIiIiIiIdwdE9/YiIiIiIiIiIiEibUCBPRERERERE RESkA1AgT0REREREREREpANQIE9ERERERERERKQDUCBPRERERERERESkA1AgT0REREREREREpANw YbR3F0RERERERERERKQxysgTERERERERERHpABTIExERERERERER6QAUyBMREREREREREekAFMgT ERERERERERHpABTIExERERERERER6QAUyBMREREREREREekAFMgTERERERERERHpABTIExERERER ERER6QAUyBMREREREREREekAXGC0dx9ERERERERERESkEcrIExERERERERER6QAUyBMRERERERER EekAFMgTERERERERERHpABTIExERERERERER6QAUyBMREREREREREekAFMgTERERERERERHpABTI ExERERERERER6QAUyBMREREREREREekAFMgTERERERERERHpABTIExERERERERER6QAUyBMRERER EREREekAFMgTERERERERERHpABTIExERERERERER6QAUyBMREREREREREekAFMgTERERERERERHp ABTIExERERERERER6QAUyBMREREREREREekAFMgTERERERERERHpABTIExERERERERER6QAUyBMR EREREREREekAFMgTERERERERERHpABTIExERERERERER6QAUyBMREREREREREekAXO3dAREREZFN m3L5+z+epqKikosvOZdzzprc6D51dXUUFhTjjnLTtWtKq/Vt69YdfPb5XAryi7joonMYMKBvqx1L 5LuqOT/jHY3GJBERaQvKyBMREZF29/LLb7JnTz6VlVU8/+9Xqa6qPuL2u3fnc8mlN3LLbb9m9ux5 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 7ndUawu2ll2781i3biNlZeW43W7S09MYNGgACfFxTWqno533gWzbJidnC3vyCiivqKS2poa42Fi6 pqXSv38fkhIT2qVfPr+fNWs2UJBfSFVVNUlJiWRkpDNgQN8mPywf2O6SJSvZvWsPMTHR9O7dk4ED +zepzZa65s8//yrvvv8JAL/8xa3hytatxXEctm7dQW7uNkrLKzCATkmJ9O7dk6yszCZ/rl5vHWvX bmDXnvzwfdOrVyYDB/bHslrmFxSteX+21BiwOXcbO3fsYm9ZOY7t0LlzEj16dKNf395Hda/K4e3a lcfGjTmUlpXj2DadO3ei/4A+h13+wrZtVq5aR6+eGeHqw02lMUlERFqSAnkiIiIiHcxdP/0dubnb 6Nw5iWeeeqhDBH5F5LtLY5KISNvpmHOyRERERP6PqqioZMuW7cD/Z+++w5uq/j+Av5M0Tfcuo7vs 1bJkg+wpgsgUWQIiirh+8v2KW4GvooILUBBQQAQEARFRUWTvvUoLhdJJ90jbtGma5PdHaGhp2uam GQ28X8/T52mTe+/53HPvOTf59N5zgIEDevMLMxHZFPskIiLrYiKPiIiIyI5cvBQFrVYLsViMwQP7 2DocInrIsU8iIrIuJvKIiIiI7MilS1EAgE6PtIOvn3EzNBMRWQr7JCIi62Iij4iIiMiOXLx4BQAw dGh/G0dCRMQ+iYjI2pjIIyIiIrITaemZSEvPRMOG9dE2spWtwyGihxz7JCIi6+OstURERERERERE RHaAd+QRERERERERERHZASbyiIiIiIiIiIiI7AATeURERERERERERHaAiTwiIiIiIiIiIiI7wEQe ERERERERERGRHWAij4iIiIiIiIiIyA4wkUdERERERERERGQHmMgjIiIiIiIiIiKyA0zkERERERER ERER2QEHiGwdAhEREREREREREdWEd+QRERERERERERHZASbyiIiIiIiIiIiI7AATeURERERERERE RHaAiTwiooeIRqPFsU2JSLwih1qltXU4REREREREJAATeURED5E7Nwpw8Id4/Ph/l5B2s8DW4RAR EREREZEATOQRET1EEs7nAgCkzhI0aOpm42iIiIiIiIhICAdbB0BEVObG8Wxc3puGlOv5UOSpIJaI 4OYjQ/3Grgjv4IXmvfzg7M5uqzbiL+YBAILbeEAsERm1TvqtQlz4Iw15acXoMTEYAS3ca1wnJboA uxbHoChfhZ5Ph6DTqIAa1ykt0UCepoTEUQzP+jKjYiMiwxISkuDk5ARfXx9IJDX/3/b69Vv4/IuV yM8vwPjxT+Dx4QOtECWRfRDanoiIiCyJ34iJyOZUxRr8+nEMbhzPqvC6WqVFTkoRclKKEH04E3tX 3MLMb9rDJ9jZRpHaN3WpFolX8wEAoW29jF4vNbYQZ3elAAA6jmho1DoHv7+NnJQiAMC/q+IQOage ZK5VX3Kyk4qwcsZZAEDPySHoNSnE6PiIqLLVq3/CpctR8PL0wA8/fFXj8j/+uA137qQBAL7/fhP6 9+0BF1cXS4dJZBeEticiIiJLYiKPiGxuz9Ib+iRegyZuaDe0PryDnKFRA3l3ihB/WY7Yk9nwqu/E JF4t3ImRo1SpBgCEtvWwaFlih3t3+4nEgFhcw91/nHeDyCLUGo1Ry0kcJPrfxWIRxBJJNUsTPZyM bU9ERESWxEQeEdlUcpQcUQczAADNu/viibdb3PfIpxfaD28IpUKN/AylbYJ8QMRfkAMAZK4OaNDE suPj9Z8VDmV+KYoKStH9qSBInZkUIKrLpj8zAV8XFKKgoBBjxj4OJyc+3k5ERERUFzGRR0Q2deXf DP3v/Z5rVOW4bTIXCWShfMyrNuIv6Sa6CIn0gKimO+RqyS/UBVO+amvRMqhqhYUKqDUaeLg/XBOa PKz7bQ7BwYH45JN3Ba/HOiciIiKyLo7WSkQ2lXa9AADgUU8Grwa8A8RS1CoNkkwYH4/sS2paBiZO egFPT3oBe/b8Y+twrOZh3W9bYp0TERER2QYTeURkU4r8UgCAq5ejjSN5sCVdzYdapRvbJ7Stp42j IUtRq0qhKFTYOgyre1j325ZY50RERES2wUQeEdmUplQ3y4GFn/R86JU9Vuvs7gD/cFcbR0NERERE RESmYCKPiOghUDbRRWhbT4iYNCUiIiIiIrJLTOQRET3gSpVq3Ll+N5HXjuPjERERERER2SvOWktE D5zSEg3iL+QiK7EIpSUaOHtIEdbBC94NnWpeV6lG0rV8ZCUooCxUw9lDCndfRwRHeEDmap4u0xpl lJd4NR9qle4R5pBI+xwfLzW2AFkJCsgzSyBzlsCjngyhbb0gdTLv/6Pq+rljC0qlEjHXbyIpMQUK RRHc3d3g4+ON1q2awcWVM0mXZ426UpWW4nrMTcQnJEFRqICHhzsaNKiH1q1bQCKx///Pxscn4uat eOTl6Sbn8fLyQMMG9dCsWWOIxebdv5KSEly+fA1JSXegUqng7u6Gtm1bo0GDemYt50GRnp6JxIRk pGdmQVGogFgigZubK8LDghEWFgIHB4nZy1QqSxAVFYOkpDsoLi6Gu7sbwsKC0bRpY7Oc7/bUnu7c SUNU1HXk5OTC0dERYeHBaN2q+jiVSiWuXIlGUtIdlGo08PPxRtu2reDlZZ7PAvbSXnkdI6IHjf1+ syAiu6NWafDJ8GMG30uOycdHg49Uel0sFuH1Xd0hkVZ8HjQ7sQgrZ54FAMz6riN8Q5wBABf+SMXB tfFQyFUVlh/+etNqkzElCjWO/pSA83vSoCwsrfS+xEGE8I7e6P9sOHyCnavfURuWYcjtC7rx8Vy9 HeEXap0PrOWPT8/JIeg1KcSk7Vz+Jx0nfk5CZnzlQfUdZBJEDPBH35nhkLkY/wXSHs+dqiQkJOGl l982+N7mzTuxefPOSq8PHPAo5syZXuO2i4qK8fPPv+Kvvw8anNTAwUGCdu3a4JmpExAY1LDabSWn pOKVV96BSqWCl6cHli//GK5GfHlSqUrxyqtvIzk5FVKpFF98vgCBgQ0sut+mMGddVUVVWood2/dg 9+69kOcXVHrfw90NQ4f1x5gxj0PqIPzjXXLSHcyZOx8AMGHCE5gw/okK71uyzktL1fjzz3+xe/de pKZlGFzGw90Nffr2wPhxI406d8qU369lX/0PQcEBAIC//z6IDRu2VqrLl16ayUTeXRqNBhcvReHo kZM4f/EqsjKzq1zWy9MDjz02AKNGPSYooVf++Hz91f8QfPf45MnzsXnTDvy7/yiUSmWl9fz9/TB9 +lPo1rWjwL3SsXR7MkVVdZGQkITVq3/CpctRldbx9/fDC89PRfv2ERVeV6lU2LrtN+ze/TcUiqIK 74nFYgwd2h/Tpo6HVCp83+ypvVqjbyYisgUm8oioTvMKcKqUxLtfSbEueXJ4QzyO/JhocJn6Tdyq XD8zXoGt715Fbuq9LwteDZzg6i1FcWEpcu8ooVZpEHsyG3FnczDk5SaIHFRf0H5Yo4yqJF7IAwCE 2tHdeKpiDXZ/dh3RhzMBADIXCXyCXAARIE9XojCnBKVKNc7/noqbp3Pw9KcR8GpQ811z97OHc8fc GgY0qHGZxMQULFy4FGnpmfrXGtT3h6eXJwoVCqSlZkClUuHMmYu4cOEKnp89Df3796pye4EBDTDh qVHYsP5n5ObJseHHbZj93JQa49ixYw+Sk1MBABMnPonAwJpjr4ox+20Kc9eVITk5eViwcClu3YrX v+bm5op69fyg0WiQnp4JeX4Btmz5FUePncZ77/yf2favNoyp84yMTHz88de4WW7fHB0d4evrDYmD BNnZuVAUKiDPL8CuXX/h0MHjmDdvDlq3bi44nuK7CaFNm3dgy5ZfDS7TqFGo4O0+qH7+eRc2b6mY oC07Nk5OMiiLlcjIyIKqtBS5eXJs/Gk7zp67jA8/mAdHR+Ez0SsUukTLpctR+OzTFfqkTcOG9eHv 5wu1Ro2EhGTk5xcgIyMTn3yyDLNnT8XgQX0ElWMP7amsLo4fP4MvvvwOSqUSTk4yhIWFQOYoRUJi MnJy8pCRkYmFiz7Hm/NfRseObQEA2Vk5+HDBUtyO113TAgMbwN/PF/kFhYiLS4BGo8Hvv/+N1NR0 vP3WKxAJGDjXntqrNfpmIiJbYSKPiKxG7CDGtK/bVnht63tRKMxWwT/MFY/9X5NK6zg619xNqYo1 uHU2R5+IadXXHxED68Pv7t1POSnF8Asx/B/hnDvF2DjvMhR5KojEIrR/rAG6jg2CZ32ZfplSpRox R7Owf81t5GeWYM/nsZA6SdDyUT+j9tsaZVSlRKHGnVjdl6GQdvaRyNOqtdj5v2jEnsxG/cau6DM9 DOEdvCAqN7VxSnQ+9q26jaSreZCnK7F5/lVM/bItnD2EXdbq+rlTk4YN6+OzT9/T/52RkYXFnywD AAwa1AeDBvautE79+v7VbjM1NR1vv/0R8uT5EIvFGDyoD0aNGoZ69e7FrFQqceLEWazbsBXZWTlY vuJ7yJxk6Nmjc5XbHTVyCI4dPYWbN29j794D6N+vJ5o2bVR1HGkZ2LrtNwBAs2aNMHLEYIvutyks VVflKQoVeOe9xUhKTAGg++I6Zco4REa01D+6ptVqceHiVezYsQeXLkXhnXcXQyaTVbdZwSxR51mZ 2XjzrY+QkZEFAGjRoinGjxuByMjWFR4XvH79Fn7f8w8OHjyG3Dw5PlywFG+/9QoiIloK2gelsgTn z1/WJwV69eqCfv16IShQdydOamo6goMCBW3zQdajRyf8+ee/6PhIW0RGtESLls1Qz9+3QuKntFSN K1ej8eOP2xAbG4fo6BtYu/YnzJ49TXB5CkURzpy5iI8XfwWNRoshQ/ph1KhhqF+uPWk0Guzbdxir Vm2AqrQUq1dvRNvIVkbfRVlX2lONcSqKcPDgMXzx5Xdwc3PBjOlPoW/fnvo76LRaLfbuPYCVqzZA rdbg62VrsfLbT1BUrMSbb/0PqWkZ6Ny5A6ZOHlvhTrPU1HR88uly3LoVj7NnL+LPv/Zj6JB+RsVk T+3VGn0zEZEtMZFHRFYjEgENm7lXeE33CI4KjjJxpfeMVVKkxv41tyEWizDiv83Qsk/FL48e9Qx/ ANdotNi5KBqKPBXEEhFGvNHcYILFQSZB6371EN7RGz++fglZCUX46+tYhLbzhIuHtNrYrFFGdRKv 5EGj1o2PF9rWPhJ5Z3+7g+L8UrTs44/hrzeFg7TyODsBLdzx9GdtsOujGFw7lImclCIcWh+PwS82 FlRWXT53jCGVStGkSbj+b2ene3cl+vh4VXjPGBqNBp9+tgJ58nxIJGK89trz6NG9U6XlZDIZevfu jnbtI/DW2x8hKTEFK1euQ2RkK3i4G76DUSwWY+6LM/D6vPdRWqrGtyvX49NP3q1yHKWVK9dDpVJB 6uCAuS/OrLCcuffbFJasq/JWfrdBn3To0b0TXn11dqVHF0UiEdq3a4N2bVtj+/bf8ePGX6DVas2z o3dZ5Fxb8o0+KTDqiaGYMmWcwbuDmjVrhGbNZqFTx0gs/WIVlEolliz9Fl9/tQjuRtRhmaKiYqxb vwVisRivvTILPXt1rfC+v7+voH140AUHB+L777+s9o4tBwcJ2rVtjdatmuG/byzErVvx+PufQxgz ZgT8/HwElRd17QZ+/fVPODo64j//eRHt2rautIxYLMbAgb2h0WrxzTc/QKVS4fff/8aMGU8bVUZd aU81uXz5Gnb//g/q1/PD+x/8Bw3uS4qLRCIMHtwXObl52Lx5J3Jz83Dw4HHsP3AMqWkZmDD+CUyY 8ESl7TZoUA9vv/Uq5rz4BoqKivHrzj8wZHDfGu/Ks6f2aq2+mYjIlurWKK5ERCaIOZKFzHgFuk8M qpSIqc7FP9KQekN3t1qvySE13iXl4inFk2+3hFgiQpG8FMd+MvwoprXLqE78Rd1ste5+jvAJNO/4 bJZSnF+K1v3qYeQbzQ0m8cqIxSIMf70p3P11ybYLe1KRm1osqKy6fO7Ywt9/H8TNm7cBABPGP2Hw y095nh7u+O+8FyGRiJGfX4itPxt+/KlMWFgwRo16DABw8+Zt/PnXfoPLHTl6CufPXwYAjB8/Uj9W VF1i6boCgJiYWBw8eBwAEB4egldefa7a8cdEIhFGjx6OSU+PNn5HbGTfvsOIjr4BAOjVswumTh1f YzKhZ6+umDJlLAAgNzcP69ZtEVTm8RNnkJiYgrFjH6+UFCDDjH3sUiqV6sdVVKs1OHvukuCytm37 DSKRCO+/P89gEq+8Af0fhaeH7p9/5+72FTWxp/a0fcceOMkc8cGH/62UxCtv2LAB+rvh1n6/Cdeu XceTo4YZTOKV8fHxQs+eXQDo7nxOSUmrMR57aq/W6JuJiGyNiTwisntRBzLg5uuI7hOCjV5HqwVO /KxLpnjUk6HL2CCj1vMLdUGb/roP1Vf+SdfPBmurMmoSf3eii5BIL5O3YW2Bzd0x7LUmMOb7o4NM gq5jdPWqUWsRtd/wwNtVqavnji1otVps3/47AN2dDmUJt5oEBwegd+/uAIADB49Dpao84Ud548aN 0A9gvnHjL8jNzavwflFRMdau/QkA0LhxmNFxWJO16mrnzj/0v09/5imjB90fPXo4mjWr+rFlW9Nq tfrHpp2cZJg+faLR6z4+fLD+/Dl46LjBiQqqcvjwSfj4eGHM6OHCAiajREa20v8ed+u24PW1Wi1e emkmmlXzyH0ZiUSMZs11d2CnpKShtFRd4zr21J5EIhFefW12hceKDfFwd0PA3bEoi4uViIxohUmT xtS4/RbN7w1lEh9f/T+W7Km9WqtvJiKyNSbyiMjulZZo0GlUICTV3L11v6Qrcv0EBW0H1YfEwfjB nlv1043FU5RfivhLeVUuZ40yqlNcUIq0W4UAgFA7GR8PAMI7e1d7J979Wvb21Sf9yibHMFZdPXds ISrqun5Q8P79egmaebLsC1B+fgGuXI2udlmpgwPmzpkOsViMwkIFvv9hc4X3N/70C7Kzc+HgIMFL c2dUGHuprrBGXSkKFThz9iIA3SOOQseXcpIJn/zFWq5ciUb63frr3r0TvL2N758kEjEGD+oLQDer 8cEDhmdCN6SkpATDhw+CVFr7x9qpMicnGZyddeddXl6+4PUffbRrjXdPlefj4w1Al7wpVFSekbQ8 e2tPvR/thvbt2hi1rO/depBIxHj5pZlVDldQno+vt/73/ILCape1p/ZqresYEZGt1b1Px0REAonE IkQMEDaQfezpbP3vjTt7V7NkZUEt3PWJo9TrVX9ZsUYZ1Um8nAetRnfXV1g7+7kjTyhXb0f4hboC ADLiFChVaYxet66eO7ZQ/lG4jh0jBa3bvFlj/WNWN2Pjal6+eRM8Nqw/AODgweO4ckX3penWrXjs 2bMPADB2zAiEhhp/p6Q1WaOuLl+N1t8V0r37IyZEWXedPXuv/np0Mz5xc2+de/Vx+co1o9cTi8Xo 17eH4PLIeA5373IrVpYIXjdA4MzSzk7lJhYqUVW7rL21pwYNjZu8AwAc707E4eDgAF8jxyV0kt2b VVhdWv3dZ/bUXq15HSMisiVOdkFEdi+guRtcvR1rXrCclGu6JIpEKka9xsIGNZY6S+DuJ4M8Q4mM uKrvArBGGdWJv6i748uznlOFmVQfRH4hzsi4XQiNRoushCLUb+xq1Hp19dyxhZiYWAC6sa7Cw0MF revkJIOvrzcyM7MRH59k1DqTJo3FqVPnkZaeiW9XrcfnSz7AtyvXQaPRICwsGKPr8OOP1qir69Gx +t+bNLb85B3WFB1zb98aNxW+bz6+3vDy8kRubh5u3Lhl9HpNmzaCl5fl7k5WFCpwzoSx4cyJY/8Z 9iC3J0uzp/Zq7esYEZGtMJFHRHYvOFL4F7OsJF0SxcNfJujRyDIyVwcgQwlFXtV3AVijjOrEX9Al 8uzpsVpTeZebyCMvrdjoRF5dPXdsISUlFQDg5+cj6HGkMq6ursjMzDb6kTqZzBEvzJmO9977BEmJ KXjrrY9w/cYtSCRivDR3pkkxWIs16irlzr0B6OviZB+1cedu/Xl6uMPL08OkbQQHByA3Nw85OXko KirWP9JZndatm5tUlrEys7Lx2dJvLVpGTSyVyEtPz8Tho6cQe/0mEpJSUFiggEJRBK2m4h3Qqhru 7rKVB7k9WZo9tVdrX8eIiGyFiTwisnsOjsJGCdBotFDk6JIozh4S5GcoBZcpvtt7KosMD7BtjTKq U5Rfiozb9jc+nqkcXe59YC8RUF918dyxBY1Gg9zcuzMcu7siKzO7hjUqKxvLrqjY+JmD20a2woD+ vfDPvsO4fvdOjdGjh6NRI2F3UliTteoqKztX/7u7u7A7P+sytVqDPLnuS7K7p7vJ2ylfJ4WFCqMS A46OHBtPqIyMLHy3eiNOnz4PrbZuTdAjxIPanizNntqrra5jRES2wEQeET10VMUalH0fSYkuwLJJ p03elkZteDw2a5RRnfgLufryQ02468zeODrdS8iVKCyXILP1cbWU4mKl/kv69eu3MOPZ10zellot rP47dIjEP/sO6/+uy0k8wHp1pSw3xphM9uA8Gq8s9wXZ2cn0CQTKJwIUCgUA48YGs6SQkCDs+hhN LQAAIABJREFU3PGDrcMwm+joG/jgwyUoKtIds7CwYPTt0wMtWjRBw4AGcHF2rnTX0+QpLyJfwMyk 1vKgtidLs6f2asvrGBGRtTkAwh8LIiKyDFP7I5Gwdc14U4Gjk4Phsq1RRjXKxsfzCXSGu785Z9sT WNcmrSO8DE25z9wisZD16+C5YzYC9s2M++Xk5GR0uYpCBdZ8vwmAbmBzjUaDVas2ILJNK7i4upgY gSnnqAA2qCuRSGzUctVswYTlLdNmReJ7iR/dwPKm7VfZRD667RhbPxY+Nx4g6ekZ+iSeRCLGrFlT MWhgb/1kAMax9Hln2rrWb0+mlmFKOUKufTWXZVft1UbXMSIiW+AdeUT00HF0cYBILIJWo0W9Rm6Y 8U17uyyjOvEXdY8RhbZ98O/GAyo+TitzsdzYarY+rpbi7OKsT6SFhYXgi88XWKXctd9vQlZmNjw9 3PHKK89hwcKlyM7OxdrvN+HFF2dYJQahrFVX5e9gKS4uhqvJic26xdnZSV9/iqIik7dTdpcYALi6 PBh1U5f8sG6Lvo5nzZqKwYP62DagWnpQ25Ol2VN7tdV1jIjIFoQNDkRE9AAQie4lewoyhY9xVlfK qEphTgmyEnQfuEPbelm1bFspzr83wLqTu+XGwbLlcbUkkUik/6KbnSV8XCFTnL9wBf/sOwQAmDpt Atq3j8CgQX0BAP/sO4QLF69YJQ6hrFVXLi73JnApKKxbMxzXVlkSJb8WA8rL8++t6+Zu3OQ2ZBxF oQKnTp0DAAQGNMCggb1tHFHtPcjtydLspb3a4jpGRGQrTOQR0UPJO0D3oV4hV6FIbpnZQ61RhiEJ dx+rBYCQh+SOvMzEe1/MfIOdq1my9mx1XC2tYcP6AAB5foHFx7gqKirGihVrAehmJuzXtycAYMqk MfDy0p2zy5d/j+LiupkstUZdlZUBACnJdyxShq0EBjYEAOTJ8yE3sf4SEpIBAA0a1IOjo6PZYiPg WvQNlJbq7nLu0LGtwMdp66YHuT1Zmj21V2tex4iIbImJPCJ6KDVsfm8GteQo0//LbOsyDCl7rNY3 xBmu3g/HF9yMON0MvTJXB3jWN+eYgJXZ6rhaWtMm4frfo6NjLVrWunWbkZGRBQcHCWY/N03/uour C2ZMnwgAyMjIxPr1Wywah6msUVfh4SH63+Pi4i1Shq00bdpI//vN2DjB66emZei/pDcpty0yj+yc e/8M8vfztWEk5vMgtydLs6f2as3rGBGRLTGRR0QPpZDIe4+cxhzNstsyDLl9Qfcl7GF5rDb1RgHy M3UzEoZEeli8PFsdV0trE9FK//uJk2ctVs6lS1H4a+8BAMDIkUMRHBxQ4f1evbqiXds2AIA//vwX UVExFovFVNaoq1atmut/P33mouD1teYc+d3M2kXeq79jx4XP/Hzs6En97x3aR5glJrpHoy6teaEq lM0aWtc8yO3J0uypvVrrOkZEZGtM5BHRQ6lZN1+4eOjGUru6Px2FOSV2Wcb98jOUyEm5Oz5eO/tM 5MnThD1OefGvVP3vrfvUM3c4ldjiuBpLIr03PqBKJeyx386d2sPDXXe34aFDx5Gbm1fDGsIplSVY vnwNtFot6tXzx7ixIwwu99xzUyCVSqHVarFs2RqUlFRfx7XZb1NYo64CGtZH48ZhAICYmFgkJ6UY ve7t2wkWT4DWps7bd4iEj4+ufzp69BTy5Mbf2aoqLcVff+0HoLuDs0f3ToLKppp5eN77h0h6RqbR 6x0/cQYFBYWWCKnW6np7qsvsqb1ao28mIqoLmMgjooeSRCpChxG6cV/UKg3++krYIxhqlaZOlHG/ +Eu6D60iERASaZ7x8aw9PNKlvam4dsi4L4/ZSUW4+Kcukefq44im3S3/GJgtjquxyr7AAEBauvFf wAFAKnXA0GEDAOgSM99+u07Q+sYkc9at36KPa9azkyCTyQwu17BhfYwd8zgAIOVOGn766Zdqt1ub /TaFNeoKAAbfnfxDo9Fg3YatRq2jUBTh0yXfQK223HkG1K7OxWIxHhs+CIAu3vXrfzZ63a1bd+nL e2zYgCrPITJd82ZN9L+fOXMBGk3N51Jubh5Wrlyv/7um5Lst1OX2VJfZU3u1Vt9MRGRrTOQR0UOr +4Rg+ATrZmOLOZaFv5bFQqup/vEZrRY4vycVy54+hdTYmgdStkYZ5cXffazWP8xVf9dYbTnIJPrf C3Ot8yH3t09icPXf9GqXUchV2PZ+FNQqXX32eSYMDo7WuaxZ+7gay8XFGQF3B/s+d+4SCgXOzjhm 9HAEBukedT1x8ixWrlxX45d4rVaLv/YewMyZr+LmrarHnrp6NQZ//LEPANC1S0c88ki7arc7atRj +kHWd/22F9dv3Kpy2drutyksWVdlBgx4FGGhwQCAU6fOYfv23dUun59fgA8XLEF6arp+PUupbZ2P fHyIPsZ9+w5hy5adNa7z51/7sXXrLgBAYFAAxo0bKTBqMoaPjxdat9Y9ipqamo49e/6pdvnc3Dy8 /8FnyM3N049Fl5KSZvE4harL7amus6f2aum+ef2GrZg+42XMf3MRUu7UvfOciB4OTOQR0UNLIhVj 1Fst4OzuAAA499sdfD/3PG4cz6p015RCrsLlf9KxZvY5/PnlDSjyVDj5c1KdKKO8sokuzPlYbflZ YC/suQNVsS5uVZHabGWU1+PpEDi5OWDX4hj8+nFMpaRXqUqDawcysGb2OWTdna22RU8/RAysb2hz FmHt4ypEnz49dOUWKrD4k6+Rnp6hf6+4WInDh0/ggw8/M3jHjFQqxbzXX4D73but/vjzX7w+732c OnWu0p0K8vwC7D9wFC+/8ja++eZ75MnzsXPH7wZjKikpwbK7j9TKZI6YOXNSjfshlTpg9nNTAeju oPn66++gUlU9dldt9tsUlqqr8sRiMV5+eRacnXUTuKzfsBVffLESd+778qhSqXDg4DG89n/vIjr6 Bp555im0bNnULPtZndrUuYODBK//3wv6WYo3bd6Bd99djEuXoip86dZqtYiOvoGPPvoS3377A7Ra LTw93PHfeXMgdXCw8B4+vCZPGguJRPc1Ye33m7B5845Ks0grlUr8/fdBvPLqO7h9OwGDB/fDM888 BQDIycnFwYPHrB53dep6e6rL7Km9WrJvPnXqPLZv343s7Fxcu3YdKwXe8UdEZC78BERED7V64a6Y tKQttr57BbmpSqTFFmLb+1GQSMXw8HOEg0yConwVCrNLUDaGt1giQpfRQeg1NbTOlAEAeWnFyEsr BgCEtjXPY7Vl8ddv7Iq0m4VIuirHF+NOwNVTisKcErywvhNcfcw7M25gc3e0fNQP2z+8hqj96Yja nw5nDym8GjihtESD3LTiCknERp288fgbza3+CLC1jqtQI0cOxeEjJ5GYmIxLl6Iw67nX4efnA5FI jKysbP2Xrl9//RNjDYxRFxYajP8tehMLFy5FWnombt2Kx/8++hJSqRS+vt6QyWTIz89HTk6efmB7 iUSMJ0YMxVMTRxuM6ceN2/Rflp96ajT8/HyM2peIiJbo07s7Dhw8hsTEFPy89Vc8XUUZtd1vU1ii ru4XHh6C+fNfxseLv4aiUIEDB4/hwMFjqF/PD94+3iguKkZy8h2oSkshFosx6ekxGDZsgFF3zNRW bes8KDgACz98A4s++gJ37qTh0uUoXLocBZnMEX6+PhBJxMjOyoFCUaRfp0GDenhz/ssICQmy+P49 zFq0aIrnZk3Ft3fvZtq8ZSd++WU3wsND4OrmioKCQty+nahPjAwe1AfPzZoMAGjcKBQ3b8Xj62Wr Ic8vwON3H8usC+pye6rr7Km9WqpvzrhvzMjMzAdnwisisi9M5BHRQ88v1AWzVj+Ck9uScf73O5Bn KKFWaZBzp7jCcjIXCZr39Ef3icHwbuhU58q4fUF3N55ILEJwhPkSeQDwxPwW2PzWVeSlFaNUqUZe ui6RFnM0Cx0eb2jWspw8pPAPc8X0FR1w5Md4XPwrDUVyFYrkFf+T7lnPCd3GB6LdYwFWT+KVscZx FUomc8TChfOxbNlqnD59AQCQmZmtf18qdUDXro+gV6+uVW4jODgQy5Z9jJ07/8Bfe/cjMzMbKpUK qakVH3d2cXFGt26dMHbM42jQwPBEIzExsdi9+28AQGhosOAv9c9Mn4iz5y4hP78A27fvRvdunfSP 75l7v01hzrqqSmREK3z1xSKsWbMRp06fg1qtQVp6ZoWx6UJCgvDMtAlof3dWSE8v8/YBhpijzoOC A/DVV//Dzh179PWnVJYgOSW1wnI+vt4YNKA3Ro8eDqnUPMMGUPUGDeqDgIAG+GHdZsTGxkFVWlrp EffQ0GBMnPgkunTuoH9t3n/mYvHirxAXlwBNHRxbrq62J3tgT+3VEn1z584dsHHTdijuDiXQo2cX i8VPRFQdUU567MM7nzoRkQFpsYXIjC9EYa4KarUGLp5S+AS4IKClOyQO5skYWaKMXYt148o1aOqG Z5a1N0uc5ZWqNLh5KhvZiUVwdJGgfmNXBLbytHgSrVSlQcIlOfJSi6AsKIWLtxS+wa4IaOFuswRe Vaxx7giRnJKKqKsxyMuTQyqVomHD+mjZsqn+kSNj3boVj8TEZOTmylGqUcPTwx0NG9RH8+ZN4OAg qXkDVmau/TaFpetKnl+Aq1euITMrB8piJTy9PNG0abjNx/AyV53fvBWPpMRk5OTKodVq4O3thcCA BmjSJByiutbgHyLJyXcQExOL3Dw5tBotvL090bRpYwQHBxhcXqPR4OKlKISGBOlnPK2L6mp7shf2 1F7N1Tenp2fgxIlzqFffD127dLRgxEREVWMij4joAbFs0inkZyjRZUwQ+j0bbutwiIiIiIiIyMw4 2QUR0QMgO7kI+Rm6gcjNOT4eERERERER1R1M5BERPQDiL+YB0E2mENyGiTwiIiIiIqIHESe7ICJ6 ADTv4QtHJzFyUorh6FL3xiwjIiIiIiKi2uMYeURERERERERERHaAj9YSERERERERERHZASbyiIiI iIiIiIiI7AATeURERERERERERHaAiTwiIiIiIiIiIiI7wEQeERERERERERGRHWAij4iIiIiIiIiI yA4wkUdERERERERERGQHmMgjIiIiIiIiIiKyA0zkERERERERERER2QEm8oiIiIiIiIiIiOwAE3lE RERERERERER2gIk8IiIiIiIiIiIiO8BEHhERERERERERkR1gIo+IiIiIiIiIiMgOMJFHRERERERE RERkB5jIIyIiIiIiIiIisgNM5BEREREREREREdkBJvKIiIiIiIiIiIjsABN5REREREREREREdoCJ PCIiIiIiIiIiIjvARB4REREREREREZEdYCKPiIiIiIiIiIjIDjCRR0REREREREREZAeYyCMiIiKi h4JKpUJUVAzUao3Zt7137wHExSWYfbsPisTEFKSmZdg6DCIiIrsneWPeS+/bOggioqqoVKWY/fw8 pKamo2PHtrYOp857kOrrQdqXh4FWq8WWLTvx5VersWHDVuz75yCys3PRrl0bW4dGBjys7Ss3Jw8v v/I2Bg/sAxcXZwDmq4uPF3+N0NAghIUFmytcmzJ3m/7o4y+hUavRsmUzM0daOw9rWyDDeD4QkT1w sHUARPRgUCpLMGXqi3B2dsLaNV9ALDZ8w+8vv+xGQGADdOv6iFHbdXCQoFOndmjRvEmtt/UwqK6+ 7I059+VhOFdsvY97/z6Ivf8cxPvvvo6goADk5uQhMzvHqjEsWbICh4+cNPhe//6PYu6LM6waj60s WbICTk4yzJlT9f4+SH1FbdljXVijvZvSpm3dD92PbYGE4vlARPaAiTwiMotTp84hNCQQOblyXLka jciIVgaXO33mAjqL2hm9XZFIhFnPTjbLth4G1dWXvTHnvjwM54qt9zEmJhbt20UgJCQIAODj6w0f X2+rx9GvXy88P3tqpdfFYonVY6nLHqS+orbssS6s0d5NadO27odMYY/HnyyH5wMR2QOOkUdEZnH4 yAn06NEFPbo/gsOHT9g6HCKyMrVaDamD7ZNlErEIUqm00o9Ewo88RELUlTZNtlNaqoY8vwCXLkXh +x82IS0909Yh2TXWJxGZC+/II6JaKyxU4Pz5K5j17BRk5+RiwYIleG7WVDiU+wKwfMVaHNh/FKVq NW7cuIlNm3YAABYunI/mNTy+8Mb8hejcqR2efHK40ds6deo8tu/4/e7A41qEhYVg4MDe6Ne3Z5WP /d7v2rXr+HnrLty4cQslJSqEh4dg5Igh6N69U4XlLl++hl9+2Y3Ym3FQqUoRGhKIEY8PRs9eXQ3u y6hRw+Dp4Y41a39CXFw8RowYiimTx+qXOXPmArZu+w23byfA0dEREREtMXnSWDRsWN+ouO+vrzK1 rZM//vwXp06eRXxiMvLlBfD18ULXro9gwoRRcHKSVYph5MghaNwoFBt+3IaLF65ArdGgdevmmPXs FPj5+dRqX4zdvrHnnbF1XtPxe2P+QowcMRhOzs7YsmUn4uIS4OgoRadH2mHaM0/Bw91N0PaMic3a +3i/H37YjN9//xtqjW7ygH37DgMAZj47GYMH9dEvZ+52Ultl51BQYEOs/X4ToqNvwMXVBWNHD8eQ If2RJ8/Huh824/SZC5BIJOjXtyeefnpMpYSgkHYBGNevmKP/MrYOatNXCD3fjSW0Tqty4eIVbN68 E7dvJ8BJJkPXrh0xZGh/QXVhrliE9OvVnSO1uZYCxrVDY9t0eULiyszMxvoNP+v77TatW2DWrCnw 8fGqVb3VRl1pC5a4hgjpe5OTUrBx03bcuBGHgoICFBUVw8fXG00ah8HD3R2FBYVAPT+jyjblM0Nt +2Nzbqc2nz1MqU8iIiGYyCOiWjt+4gwaNQqFn58P/Px84OQkw8ULl9HxkXuP18x5YTrmvDC9yg9H QtS0rZOnzmHp0m8wd84MdOrcASqVCjdv3cavv/6JsNBgNGkSXmMZJ06exeeff4unJ47B3BdnQiQC oqNv4PiJs+jSpaP+Q9/Bg8ewctV6TJ8+Ef+ZNwdiiQRnzl7EqpXrkJ6RaXA/k5PvYP26LRg//gmE h4fC3d1V/96+fYewfv3PeGHOdHRoH4nc3Dz8+de/mD9/IZYuXWDwi44xzFEnTk4yjBkzAkHBAXBx dkJySiq+/XYdVq/+ES8aGHvsesxNbNnyKyY9PRovvfQsFIoiLF++Bp8tWYGPP3rbpP0Qun1jzjuh dV7d8QN040ppNVo8N2sKQkKCkJqahuUrvseHH36GTxa/WykRU9vzwRb7WN60aRMwbdoEfP7FSjg7 yTB79rRKy5i7nZhL1NUY7Nj+O6ZPn4imTRvj0uUoLFq0FB4eHvhl+26MfnI4nn/hGaTeSceHCz6D t48XHh8+qMI2hLQLY/oVc7TV2hBavtDz3RhC+xpDTpw8i6VLv8WM6U+hd+950Gq1OHrsFJYs+cbq sQhpfzWdI7W5lhrbDo1p0/czNq7klDR89NEXeOqpJzF37kwUFirw9bI1WLJ0BRYtfNPkerMEW7UF c15DhPS9t27FY/6bCzFt2lN49ZXZkEodkJyUgi+/+g4tWjTFk6MeqxRrdWULbTvm6I/NuZ2qGPvZ xpT6JCIyFp8zIaJaO3L4JHr26Kz/u3v3TjhUxYDz1rD/3yPo3bs7evbqCpnMEW5urmgb2RrvvvN/ Rn0JViiKsGL5WsycORkjRgyGj48XvL290K1bJ7z26mx9Ei8/vwArV63HC7OnYUD/R+Hi6gInJxl6 9uiM11+fg40//YL09IxK29+16y88//wzePTRbggODoCXl6d+e2vW/oRXXnkOXTp3gFTqAH9/X0ye NBYRES2x5edfbVYnANC3Tw+0bt0cnh7ukEqlCAsNxtQp43D4yAlotdrKZR44infeehWPPNIOUgcH eHq4Y/KkcYiOvoHcPLnJ+2LO7ZtS51UdvzIatQbvvPN/CA8PgUQiRmBgQ/z3v3ORmJiC4yfOGr09 c50PlthHIczdTszp6PHTeOvt19CiRVNIJGK0b9cGHTpE4osvV+G5WVPQvXsnSB0cEBwcgCGD++H4 8TOVtmFsuzC2XzFHW60NoeULPd+NIbSvuZ+qtBSrVq3H2DGPY/DgfnByksHZ2QkD+j+KZ2dOsmos QtqfseeIKUxth+Z29uxFvDn/FX2/7eXpgamTx+Lq1RjkyfMrxGup66GxbNUWzHkNEXLMt2/fjc6d 2mPokH6QSnX3egQGBeCFF57Bxo3bkJubZ3TZgPC2Y47+2JzbqYqxnz1MqU8iImMxkUdEtZKbJ8eV q9fQo/u9RF6P7p1x6tQ5qFQqm8Tk4+uN+PgkaO4+FiTU6dPnAQD9+/WsdrlTp87B0dER3cslMctE RrZCQEADHDl6qtJ79fx90aZNC4Plurq6on37iErv9e7dHafPnDd2FyqpbZ1UxdfXG0plCeT5BZXe e2zYAPje95hJvbuPkGRl1X42U3Ns35Q6r+r4lWnbtlWlL9yeHu5oE9ES585dMnp75jofLLGPQpi7 ndTkwIFjmDxlToWfxYu/Nrjs0MH94OnhXuE1Pz9ftG/XBs2aNb7vdR9kZWYZFYOhdmFsv2Kptmos oeULPd9NVV1fc78rV6Ihl+djqIHHaAMDGlg1FiHtz9hzxBSmtkNzM9Rv169fD4DukdsylrweGstW bcFc1xChxzw9IwtBQQGVlg0MCoBarcGdO2lGl12V6tqOufpjS/XrZYz97GFKfRIRGYuP1hJRrRw7 dhpNmzauMJNd06aN4ObmijNnLqBbt07VrG0Z48aNxIIFSzD35bfQv19PdHqkHYKDA41eP/bmbTRq FFbjYzBxtxMRHh5S5XLh4aFIiE+q9HqHjm0Nby8uAeHhwQbf8/f3RXZWDlSqUv1/doWobZ0AgDy/ AL/99hcuX74GeZ4cIrEY6tJSAIDWwBcdQ3ePiMWiKpcXyhzbN6XOqzp+NQkKbIDY2LhKr1v6fLDm Phos38ztpCZduz2CaVPGV3hNKnM0uKyhc0giFkMsqTzAv0QshsbADVjGtgtj+xVztNXaMFf5VZ3v xhDa19wvLi4ePj4+cHOr/ePYtY/F+PZn7DliClPbobkZ229b8nporLrQFozZTpXXEIHHvGHD+rht 4BxISEgGAPj7Vx7Lrbp+2hyfGYT2x+bcTlWMPYdNqU8iImMxkUdEtXL48IkKj9UCgEgkQvfunXD4 yEmbJPK8PD3w6Sfv4cKFKzh27DTe2bUYrm6uGD92BB59tFuN6+fL8+Hi6lzzcvkFcHZ2qvJ9Z2dn 5ObkVnrdsYovHvL8Apw7dwkTJz1f+U2tFlIHB5Pv0qltnaSmpuM///kA3bp3xmuvPgd/fz+IRCKk p2dg1nOvmxRTXWBKnVd1/Gri6OgIpbKk8usWPh+suY+GmLud1MRJ5ljpbglLEdIujO1XattWa8tc 5Vd1vtfEHH1NQYECXp7uNS9ohViEtD9jzxFTmNoObcWS10Nj2botGLudqvpKocd87OjHMf+tRdix cw+GDukPmcwR8fGJWL58DQYN6mNwkqqqyn5QPzMIYUp9EhEZi4k8IjJZVmY2oqNvID4hCZu37Kzw nkqlgkajRXGxUtDMfuYiFovRoUMkOnSIhEajwdFjp7Fs2WpIHBzQo3v1yUVXN1fkpaTWWIaTkxPk 5cb0uV+hQgFXAXeEODvJEHl3/B1LqE2dbN32G0JCg/D87KkWic1WLF3n5RUXFVf7pep+5orNmvto iLnbSV0ipF0Y268AtWur5mCO8oWe72XM0dc4yRyhLKn90A7miEVI+xNyjghlb+3Q1v1WGVu2hdpu R+gxDwoOwJw507Fi+Vrs338UyuJi+Pj6YNiwAejXV9jj3g/qZwYhzFmfRET3YyKPiEx2+OgpNG/e BPP+7wWD78/77wc4efIsevfubuXIKhKLxejVswsuX47CoYPHavzwHRYajKNHT0Gj0VT7iFOj8GCc PHm2yuXibt7GEANjNFUlJDQYJ06eg1arhUgkMno9Uwitk8SEJLSJaGXRmGzBmnV+Oz5R0GNZ5orN mvtoiLnbSV0ipF0Y26/cT2hbNTdTyxd6vpcxR18THByAlJRUqFQqSKVSk7djjliEtD9TzxFj2Fs7 tHW/ZYi120JttyP0mJeUlGD58rVY8OF/ERYWUqtYH9TPDEKYsz6JiO7HyS6IyGSHDx9Hjx6d4evn Y/Cna5eOOHzf7LUuLs4oKlaapfyqtqVWG37cRlGoMOoLQZeuHaFUKnHo8Ilql+varRMUiiKDs8id P38Z6RlZ6NWzS43llene7REUFhTiiAVm/K1tnfj6+iDTwIDQx+7O9qapYvt1RVXniiXqPDExpdJr KXfSEBUVU2FSmJoIjc2a+yiEudtJXSKkXRjbr9S2rdaW0PLNdb6XMUdf065dBCQSMQ4dOl7pPSET OgiNxVD9CGl/xp4jgPBrqbXaobmu8bbutwDbtQVzbUfoMS9WliA/vwByec2TuNTE3j8zmIM565OI 6H5iiETgD3/4wx+hP3dS03HrVrxuDLwqlunWvTMuXryCgkKF/rXWrZrjyJGTSEpKQW6eHIcOn4AW qL48AEDl1w1tS6VW4+VX38bGn7YjKSkFJSoVsrNzsX377zh56hyGPTawxn3z8HDHs89OwTff/IBf d/2JjIwspKZn4sDBY3j3vcVQlpQAIhE8PT0wfcbTWL58Dfb9exgFhQoUKopw8OAxLFn6DWbOeBpe 3l5G7QtEInh5e2H6jKfx9bI12Hm33GJlCa5GxWDhos/x975Dxh2f+8pQlda+TgYO6oOjR0/i8JGT UKnVKChU4Jcde3Du3CU0qO+P67FxRu8najrexmxH4ParOu8E13l15d59/8rVaCxbtgbJyXegLNFt a9Giz9G5cwe0btPCYueD1fax2mNVue7N3U5qikGt0UJVWmrgRy3g3KrqHK34upB2YUwnbf7PAAAg AElEQVS/Yo62WrYPxcoSZGXlVPop3x/Xuq8QcL4vX74WM559tWL55uhrDPw4uzhjypTxWL1mIw4f PYUSlQq5eXJs+flXRMfcMHx8DZwPQmPx9HRHXFwCcvPk+uuakPZn7LWnuvZeVZ2Y3g4F9Nc1xSWg 3zbn9bCutYWa4jXXNUToMffwcMe0aRPwv4++wFMTn8PkqXMw7ZmX8Pq89/HLjj1QqY3sQ01px2bo j623HePOYcH1yR/+8Ic/An74aC0RmeTIkZNo2rRRtYP1tm7dHC7Ozjh+4gwGDugNABgxcghS0zIw /81FgAiIbNMK7dtHwN3dTXAMVW3r7bdfw87tu/HhgqXIycmBq6srmjZthEUL30Sz5k2M2na/fj3h 4+OF7dt3Y8vPv0JdqkbjxmF4YuRQyGT3xvwbMrgvfH28sH3771i1agMAIDw8BC+99Cw6d+4geJ+G Du0PX19v7NixB5t+2g6tVouQkEAMHNAb/fv1Erw9AJBKHWpdJx06ROLVV2Zj27bfsGzZGri5u6JX z654661XceVKNLZs2YmuXTuaFJ81VHfembvOhw7pD3dPdyz+dBnupKTC3cMdfXp3x1NPPSl8WwJi s+Y+CmXudlKdf/89jH//PVzp9cDAhli+fLFZyxLaLozpV8zRfwG6iYgOG7iza8SIIZg+faLBdUzp K4w935UlJcjOykHp3Vkrq2KuvmbYsAGQyRzx85Yd+OrLlfDy9sLAAb3x+usvYvz4GTWub0osEyeO xtfLVuOvvfvxyeL3EByiewxSSPsz9tpjyrXUGu3QnNd4c/Vbda0t1MSc1xChx/yJJ4ZhxIghkMvz oS5VQ6VWIykxGT+s24LkpGS89NIso8q1988M5mKu+iQiup8oJ+OmwEm3iYiIyJA33liAzp3a48nR w20dCpHFCTnf12/4GbE3buHDD9+wQmRE1mWuvt9W15CSkhIU5BfCx9fb4PuXL1/DBx98gk2bv4PU gfeB1IT1SUSWxjHyiIiIiMiiLl64gsceG2TrMIjIgFu34jH3pfnQaAyPXadUKlFXJh2xB6xPIrI0 JvKIiIiIyGLy5QWQ5xegU6d2tg6FiAxo3Dgc7m6uWLVyHe7cSdNP9FFYqMDp0+fx7bc/YPDgfrx7 zEisTyKyNPYeREREZuLs7AQXN1dbh0FkFcae7+4ebvhu1VIrRERkG+bq+211DZFKHbBw0VvYsmUn PvjgU2RlZkOj1cDZ2RkhIUEYO+4JDBrY2+px2SvWJxFZGsfIIyIiIiIiIiIisgN8tJaIiIiIiIiI iMgOMJFHRERERERERERkB5jIIyIiIiIiIiIisgNM5BEREREREREREdkBJvKIiIiIiIiIiIjsABN5 RERkVnv37kdcXLytwyALSExMQWpahq3DIKKHjEqlQlRUDNRqja1DISIisjkm8oiIyKy2bvsNCfFJ tg6DqqFSleLZWa9h1XcbBK23fPkaHDty0kJRPbhMrW8i0pHn5ePNNxchNydX/5op7YptkYiIHgRM 5BERET1kHBwk6NSpPVo0b1LpvV+2/Ybjx8/YIKraqctxV1ffdV1drtcHjSl1be3jU5fOB1P6MXtu i0RERGUcbB0AERERWZdIJMKsZycbfO/0mQvoLBJZOaLaq8txV1ffdV1drtcHjSl1be3jU5fOB1P6 MXtui0RERGV4Rx4RET1wSkvVkOcX4NKlKHz//SakpdtmXLe6EgcREVkW+3siIrIW3pFHRERW8ccf +3Dq1DnEJyQhX14AXx8vdO3WCRMmjIKTk6zCsm+8sQAjRw5F48ah2LBhKy5euAK1RoPWrVtg1qwp 8PPzqbB8clIKNv60HTdib6EgvwBFRcXw8fVGk8bh8HB3Q2GBAqinW/bZWa9h0sTR6N2nR4VtXLt2 HW+99T9s3/6DyXELiQMAzpy5gK3bduF2XCIcHaWIiGiFyZPHomHD+tXW5ZHDJ7B69Y/4Yd2yCq/v 3bsfK1Z8j0WL3kTr1i30r2dmZmPmzFewbv1yeHq46+u4c6f2eHL0cADA8uVrcWD/EZSq1bhx4yY2 bdoOAFi48E00b1HxMbTMzGysX79Ff1zatNEdFx8f72rjLq+mfVcUKvDi3PkYPnwQnnzysQrrvvfe Ynh7e+GVV54zOm5j61rouXfq1Dls3/474uISAABh4cEYOLAP+vXtCbFYXGG75eu7vMuXr+GXX35D bGwcVKpShIYGYcTjg9GzV9dKy1oqvvsZW69CYq+KsTEKbbu6uhoCJycnbNmyE3FxCXCUSdHpkXaY 9sxEeLi71Wp5ofv/xhsLMGrUY/D0dMeaNRsRFxePESOHIl9eYHTbK2Ou897c7awqQvq6CxeuYPPm Hbh9OwFOMhm6du2IIcMGGNyuKf1YVW3RktcdIiIic2Iij4iIrMLJyQljxjyOoOBAuDg7ITklFd9+ 8wNWf7cBL86dWWn569djsWXLTkyaNAYvvTwLCkURli9bg88+W46PP35Hv9ytW/GYP38hpk2bgFdf nQ2p1AHJSSn48qvv0KJF00pfTi0Vt9A49u07hPXrtuCFOTPQoUMkcnPz8Odf/2L+Gwuw9PMF1SbF 2kS0RG6eHMkpqQgMaKB//dLlawgLC8Hly9cqJPKiomIQHBygT+IZMmfOdMyZM73ahBMAJKek4qP/ fY6nJo7G3JeeRWGhAl9/vRpLlnyDRYverLE+jd13F1cXPP/8NHz22Qr06tkF/vX8AACHDh1HfHwS 5s170ei4hda1sefeyZPnsHTpN5j74gx06tweKlUpbt68jV9//QNhocFo0iS8xro4eOAoVq5aj+kz nsZ/5r0IsUSCM2cvYNW365Cenmlwf6wRnzH1akrs9zNHHVZn796D0Go1eO65KQgJCUZqahqWL1+L Dz/4FJ988l6lZKaQ5U3Z/+TkO1i/bjPGTxiF8PBQuLu7wsvL06i2V565zntztrOqCGl/J06cxdKl 32DG9Ino3ec/0Gq1OHrsFJYsWWFUWbWJE6g71x0iIqLq8NFaIiKyir59e6B16xbw9HCHVCpFWGgw pk4dj8NHTkKr1VZafv/+o3jn7dfwyCPtIHVwgKeHOyZPHofo6BvIzZPrl9v+y2507tQOQ4f2h1Sq +/9UYFAAXnjhGWzcuBW5uXlWiVtIHPn5BVizZiNeeXU2unTpAKnUAf7+vpg8aSwiIlpiy8+/VhuT l5cnAoMCcO3a9QqvR12NwbhxI3D58rUKr1+7dh2t27SsVT2UOXv2It5881X9cfHy9MDUyeNw9Wo0 8uT5Na4vZN87dWqPLl064LvVPwIACgsVWLv2J7zw/DNwc3M1Kl5T6trYc2///sPo3bs7evbqCplM Bjc3V7Rt2xrvvvu6UQmofHkBVq5ajxeefwYD+j8KF1cXODnJ0LNHF7w+70Vs/Gkb0g08nmet+CwR e+V9sVyMAKDRqPHOO68jPDwUEokYgYEN8d83XkJiYgqOn6g8GYKxy5u6/7t2/YnnX5iORx/thuDg AHh5edZ6Hw2xdjszRxyq0lKsWrUeY8c+jsFD+sHJSQZnZycM6P8onp1pnXHt6sp1h4iIqDpM5BER kc34+npDqVRCnl9Q6b3HHhsA3/seZapXzxcAkJWVo38tPSMTQcGBldYPDAqAWq3BnTtpZo7acNxC 4jh9+jxc3VzRvn1EpeV79+mB06fP1xhDmzYtcC3qXiIvMTEFnp4e6NSpPeLi4qFSqfTvXYu6XuEO vdowdFzqN/AHoHvktiZC933ms5NxPSYWp06ew/oNPyMyshU6d+lgdLym1LWx556Prw/iExKh0WiM jqe8U6fPwdHREd17dK70XmRkKwQENMCRI6dsFl91TI39fpaMEQDaRraGRFLx466nhzvaRLTEubOX TF7e1P2vV88PbdqYpy1Wx9rtzBxxXLl8DXK5HEOHVn6Mtvydx5ZUl687REREZfhoLRERWYU8vwC/ 7foLly9HQZ4nh0gshrq0FACgNfAlXiKWVHqt7LG28ss3bFgft28nVlo2ISEZAODv72eVuIXEEXcr HuFhIQbL8/f3RXZWDlSqUv2dHoa0adMSmzZu0/99+dJVtGnTQnfXYFgIoqNjERHREgpFERISk9Gm dXNhO14FY49LVYTuu4e7G2bOmowVK9ZCJBbjqy//JyheU+ra2H0cN24kFnz4Gea+9Cb69+uFTo+0 Q3BI5S/3VcYWl4Dw8NAqx6oLDw9FQkJSpdetFZ8lYr+fJWOsTlBgQ8TGxpm8vKn736FDpPBgTWDt dmaOOOLiEuDj41PruwBro65cd4iIiKrDRB4REVlcamo6/jPvfXTr0RmvvTYb/v5+EIlESE/PwKxZ /1erbY8d8zjmv7UIO3bswdCh/SGTOSI+PhHLl63GoEF9Kw1Qbqm4hcQhLyjEuXMXMfHp2ZUL1Woh dXCARqNGdZfpiDYtsDQ1Hbl5cnh5euDS5Sj069cLANC6dXNcuXINEREtERMTi4YN6sHb28vkejAn U/Y9LCQIBYWFCAwMgLOLs8XLM5aXpwc+/fR9XLhwBceOnsI7u/6Eq5srxo8biUcf7Vbj+vkFhXB2 dqryfWcXZ+Tm5AqOy1zxVcdcsVsyxuo4OkqhVCpNXt7U/XeUSoUFaiJrtzNzxFFQWAgvLw+zlGtp lrzuEBER1YSJPCIisritW3chJDQIz8+eZvZtBwUHYs4LM7Bi+RrsP3AEyiIlfHy9MeyxgejXt2et ti0kbiFxOMscERmpGwfMVPpx8qKuo2vXjrgWdR1z5z4LAIiIaIUtW3YC0E10Ya7x8cxB6L5rNBp8 9fVqTJv2FPbtO4zt23dj3LiRFitPKLFYjA4dItGhQyQ0Gg2OHjuNZV+vhsRBgh7dKz92WZ6Tkwzy vKrHFSwsVMDVtXZ3J9UmvuqYM3ZLxVid4qLiahNxNS1vjWNXG9ZuZ+aIw0kmg1JZUusyrcGS1x0i IqKaMJFHREQWl5iYjDYRlkkmlZSUYPnyNViw4A2EVfEIV3liiKCpPLeGwTG6hMQtJI6Q0GCcOHkO Wq0WIpHIqO0b0qZNC1y7dh316/vDz88Hrq4uAIAWLZrg1q3bKCkpwbVr1zFwYB+TyzA3ofu+c+cf AIBhwwagefMmePPNRejapSNCQoMsUl5tiMVi9OrZBZcvReHQwWM1JqEahYXg5Imz0Gg0Bh/RjLt5 G0OGVR4vzFrxVcdSsVcXo5C2W5Pb8YkIDjHuHDK0vLWPnVDWbmfmiCM4OAApKalQqVSQWunORVMJ ve78P3v3HR9Hdah9/JmZrZJWzV2yLVm2ccEVcMMYCGB6ICEkAZKQhJJAbiCQm7zclHsTElJJSIE0 UiCN0EsggAOEbhsMGPfeJcu2ZFtltX1m3j92tZIsGVu2bGnx7/vJfohXM6OzM2dndZ49BQCAnsRi FwCAHmWoc2OtX78S1dft7vT8/PmLJEmOfegT3cfiCTU3h9XU1HnBjK7061/aaTVJ23b08MNPdt62 G+XuTjlOPnmaWsIteu21Nw6qzPszceI4rVq1VkuXrdSEieOzz/t8PlVUDNOKFWu0bt2mbi10kZcX VDR28EMOu6s7r72mplYPPvi4rr/+MzJNU6NHV2nu3NN0511/6BTe7K/cPXWuu2Lvp95GWiIHFZ7M PHmaIpFol6unLl68TLvqdmvOKTN6rXzS/s9rT5W9O2Xsznu31bbqmk7Pba/dqZUr12j2ydMOefsj ce0O5b3XE/W+J95n+9OdckyZMlGWZeqVVxZ0+tlrr3fv/Xuk72Pd/dwBAKAnEeQBAHpUUVFImzZt VUNDo1w33X1m7tzT9frrb+jVVxcqmUopHG7RI4/+S++8s1SDBw3Q2nUbD/n3FYYK9JnPXKbvf/9n uvzyz+lTV35Bn/nMDfrKV76lRx79l5KZhSlazTp5mp555gWtWrVWiURCGzdu0W23/VTHd7EYRHfK 3Z1yFBcX6aqrP6E77/yDHn/iGdXtqlcsFteKFat122136LnnXz6o1z5hwjht2rRFby1arIn79Byc OHG8/vnPeSopLuzWfE3Hjx+j115bqOptNWpoaNQrryzIXseecLCvPT3U7/c655wzNGJERXb/T37y o9q9e68ey/QgOlC5e+pc7yuZTOlLN31Df//7I6reVqNEIqE9u/fq0Uee0htvvq3zz597wGMUFYZ0 1dWf0K/u+qNeeOEVhcMtammJ6OWXXtdPf/prXXP1J1RcXNRr5ZP2f157ouzdLWN33rutli9frbvu /INqqrcrHk9f9+/ddoemTz+hy4D7YLc/EtfuUN57h1vve+p9tj/def8FgwFdeeXH9Yc//E2vvvaG EomEGhoa9cADj2v16nVH/Fx2R3fu97/57b267rqvKBxu6bHfDwA4tjG0FgDQo6644iO6864/aN6/ X9SPf/QtDRterhNOmKSbb7pODz/8pO66648qCOVrzikz9Y1v3Kzly1frgQce18yZJx7y7/zQh87X RRedq6amZtkpW0nbVvW2Gt375wdUU12jG2/8XHbb8887S81Nzbrjjt+osbFZlZXD9PGPXayRo0bo vvse7XDc7pa7O+U477wz1a9fiR577Gn9475H5bquhg8v19yzTtOZmUUrDqSoMKQhZYO1cuVaff1r N3X42YQJY/XQQ09kF8A4WBddfK527KzT177+PcmQJk0Yr6lTJyoUKujWcd7Lwbz2fz45T/X1e3T5 ty/psG9eXlDXXPMJ/exnv9PMGSeovHzIAcvdE+d6X16vR9/85pf1+KNP6TvfvUN79+5Vfn6+Ro+u 0vdu+7qOGzPqoI5z7jkfUL/SYj366L90991/lSSNGDFcN954raZPP+GQytaT5Xuv83q4Ze9uGbvz 3m113rlnKlQU0o9uv0u123coVBjS6aedrMsvv+Swt+/pa3co773Drfc9+T7bn+68/84//yz5/T49 +MBj+uUvfqfikmLNPes0feUrX9THP371ET2X3XWw9/tUMqVEMtmjQSIA4Nhm7K3bwKcKACAnJRIJ hZtbVNqvpMufL1u2Srfe+mP94/7fy+s5ct9d9ZVyAGjzP//zXU2fNlWXfOTCI7I9jk3c7wEAvY2h tQCAnLVx4xbdcOPX9jvZfTweP+ILHPSlcgAAjizu9wCA3kaQBwDIWSNHjlCoIF93/+7Pqq3dmZ04 v6UlokWLFuu3v71X55xzxhHvFdFXygEAOLK43wMAehtDawEAOa2+fo8eeOBxLVu2Urvr98hxHQWD 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 AABJRU5ErkJggg== --=-=-=-- From MAILER-DAEMON Mon Jan 16 08:59:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT7og-0000Lh-LJ for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 08:59:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45964) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT7oe-0000Jr-JI for emacs-devel@gnu.org; Mon, 16 Jan 2017 08:59:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT7oc-0000lh-2F for emacs-devel@gnu.org; Mon, 16 Jan 2017 08:59:20 -0500 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:36791) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cT7ob-0000lM-RA; Mon, 16 Jan 2017 08:59:17 -0500 Received: by mail-pg0-x241.google.com with SMTP id 75so5461460pgf.3; Mon, 16 Jan 2017 05:59:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=Xwm/UCdjnkr+miOXQ6+qGwtfiPnwelMQrJmFGUHs1sI=; b=i7+h1KsYPRXmMqdUbpwTvdGUxaTutC8PjawgV+/Hm2BZj1krYhm3bSfC7ir1Yyj2K9 Z53ggRAhTjDaJiuybtU94758B2YG5NBkv0ER/oJ6bzCYlaj8ViE8ukfzuGkT9stbl1g5 S/ejw4+M9q2dfu3mCmqXpprPDfk3O1tW+RBT2BuinSiqGvcGxhu4xxxMZMR9aMshxWbN 4+M2TBDmcl9GJMT9sN07bd1UFgs3RIflKeVeFd3Wfqm86QSh5d2gcC9ukHX2JcgmLvzj DxAp8MnzJu6lAiw/5tgfgj/0fqYhWLqDX875vkl7ToOQ4tA/nslNMzCYXGu8GgSDU3IU Yq+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=Xwm/UCdjnkr+miOXQ6+qGwtfiPnwelMQrJmFGUHs1sI=; b=GV45yiwnYJRuLMZnPx70jYkuIgLHsNNTVtt+btpeOLFzq288/vZEU+pb+PSO+NJzjr fZ81Mu0HkOze5PXEaZICaipPBnNaLh1xDGrcwqpi9Kl8jJouA7brSwO0pxvnLHmSbkA5 E+42ktElPAca6AcRhyAicPbWBOSTbECf192whYGuIiyI/x0DQUaVl6RhAT6vxHLddBrv JAw0S2df7Q8klKOIuSEp+yCsrYhPQFiU0Ic8xKVH0Mu981wK0R+LZD/4HPywMOjr6kgO yDpitirvEnboQ2Cqhly3biudHTshX69ay0gLIpRG6nJOMcHnSMX7vt3RmH2Nbp/Vu1O2 +ZIQ== X-Gm-Message-State: AIkVDXLqpvRVOA8gx0kXwpYIHHbjfHE6dkaQ1x7vYlb6ettiC3L+8TnM7Yfh8wEEl42ohg== X-Received: by 10.99.160.84 with SMTP id u20mr26896711pgn.141.1484575155442; Mon, 16 Jan 2017 05:59:15 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id j7sm35326105pfe.84.2017.01.16.05.59.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Jan 2017 05:59:14 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Mon, 16 Jan 2017 22:59:11 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Nicolas Petton cc: Emacs Devel , rms@gnu.org Subject: Re: Download buttons on the Emacs homepage In-Reply-To: <87tw8znnhf.fsf@petton.fr> Message-ID: References: <87tw8znnhf.fsf@petton.fr> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 13:59:21 -0000 On Mon, 16 Jan 2017, Nicolas Petton wrote: > Hi guys, > > After discussing with Richard, I added download buttons to the homepage > of Emacs (see the attached screenshot). Hi Nico, i like the buttons, good idea! In my system, the buttons for Windows and MacOS show the headings 'Windows' and 'OS X' respectively; but the button for GNU/Linux doesn't show the heading: the first line shown is 'Most GNU/Linux distributions provide ...' I've checked them with iceweasel 45.6.0 in Debian Strech. From MAILER-DAEMON Mon Jan 16 09:02:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT7rb-0002nQ-53 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 09:02:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47506) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT7rU-0002jB-JB for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:02:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT7rR-0001bo-VE for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:02:16 -0500 Received: from mout.gmx.net ([212.227.17.22]:60342) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT7rR-0001b2-MO for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:02:13 -0500 Received: from detlef.gmx.de ([93.197.214.201]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MPUFR-1cOz7X3JFx-004gDf; Mon, 16 Jan 2017 15:01:59 +0100 From: Michael Albinus To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Tramp as ELPA package (was: Patch for Emacs 25.2) References: <87o9z7s5iq.fsf@gmx.de> Date: Mon, 16 Jan 2017 15:01:56 +0100 In-Reply-To: (Stefan Monnier's message of "Mon, 16 Jan 2017 08:39:02 -0500") Message-ID: <87k29v3xyj.fsf_-_@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:7s7s1v2kTbVtyjcuoc3JWFAfi6BrORs/mEz/KCvW1vSnZaeQOo5 8X3Mw7+8mjILvpTQ1hw2gsMtk/NV2TUgPYuiHJSdv2OTrzynvrojl8K9gD2VZBw3ybmHmmk kB3DInhxe59yNjltrMZmXoz+XXkbjcn3PFzWxRbmkg1x3sPG5moDmR104fVWUNJ9m1NzOsv esRIql8D1PsCvzgZpQFCg== X-UI-Out-Filterresults: notjunk:1;V01:K0:HLf4ESLfniE=:ySx0D1IfaVXntxLd0p6qgq OWMeMH6USG0Q9Bp4BqF+4x6NsXqx4OSuNnUV/O+TUKEVkIoLQiZpiFuGQUFmcKc4dD0UB1Edo gwqktF6HvoPODINkZO+bfxO70AXZylGd3GVc9dQGZY7s8PgkIJGTMERa4wxdW1i+eDfxYKvcY lswxLABStfNBnkSfcKRQ/xxplYlfQziXA4sA1+9Rw0BAuknF426pQ9GAZi6u34XHbWCB67GCz 03ZASDz73tJ1WC9jXO9Zy0I6sdZ4CzuLvEqqzTcg9VQPIhf5BNQiHZ5aND0b3FKnxMa3kfz2x KZipO5WPx+875XmJ3Iwk9GbkH6MfOOr65ynjw4pRQg88fD3ItMbJcLepCR6BpR04tcXzQPgxv Aij/bmQaqVHVaJTeuLK00s8WLg+EffY2rkAymtsrZC1PJjB1M0l2szMHjM+I4gb3wI78oX/HN tC7lsetHAke7LyvxirPJYaWGdc9W5SJhimezhmlvYtFpZWooBR6dIKcqOMm1IgGNAyNvauGlE ivWrdpx9niLle7D0VXgCR5DnRB9VROsC3DatPnbsqxkqpssCjRoGT8yiuuLXN2z8WmZNSI841 DSlEj3T/Gk2chJYFrgHHShiDlAcfmZqollT/C2zF216SudqX86f/CDNPxtkOlcTC/kQaW8cyF dCbgAWdpEVJQT1K+XHEKiKHfzsHoStcB3wVv5HF6WA8ZMNZKaAgxymQoLIRvNcx84hWw76j1L zyucKK/ahrcqdcaWvoGRIzcTBifUZlexDpuiiUZx1hfQGdHE0/E4S2vS8rROHJylcXJY8yyQH 0VU1KGpN7sKKg8yu3vDPL+8epMNJPSofjE53pd7swZnzn3A3x4+0fa9u3v0kSTYsnoRP6y4Cx vHWysYeEJ9l+MMQ6c3nAoggmbDkhJWS3hd8izJEjtOcXO3/+gxkRZAwtITuMn7XQt4k5269LD A4t4MABjNS7EJIRf7a+ra/jeYpbp6o78rUfRLMxLHWmnK2+f8IttPz7y9l/s5elyu8OGXxdBA R0Y8IANWIilge7YQcVvtpho= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 14:02:22 -0000 [Adding emacs-devel@gnu.org] Stefan Monnier writes: > Hi Michael, Hi Stefan, > What do you think about making a GNU ELPA package for Tramp out of > Emacs's code. > > I.e. adding something like > > ("tramp" :core ("lisp/net/tramp.el" "lisp/net/tramp-sh.el" ...)) > > to elpa.git's externals-list. > > The idea would be to use this as a replacement for your > separately-distributed Tramp package. I guess, at first you'd still > distribute your package as well, but having it automatically available > as a GNU ELPA package should make this need disappear fairly quickly, > I think (at least as long as the code in emacs.git is the same as the > one you distribute separately). I thought already about, but there wasn't enough energy to do it yet. Maybe I shall play with what you have proposed. Be warned, I will ask you when I'm blocked :-) First question: I dislike, that I have to manage *.info files as git objects in ELPA. Doesn't exist there a mean to produce them from the sources automatically, when a package is released? Second question: Tramp produces a web page from its tramp.texi, see . It's often used as reference. How could one produce it for an ELPA package? > Stefan Best regards, Michael. From MAILER-DAEMON Mon Jan 16 09:27:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT8G6-0006Ba-73 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 09:27:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT8G3-0006BS-Uy for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:27:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT8G0-0002pj-L0 for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:27:39 -0500 Received: from petton.fr ([89.234.186.68]:48282) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT8G0-0002ox-9f; Mon, 16 Jan 2017 09:27:36 -0500 From: Nicolas Petton To: Tino Calancha Cc: Emacs Devel , rms@gnu.org Subject: Re: Download buttons on the Emacs homepage In-Reply-To: References: <87tw8znnhf.fsf@petton.fr> Date: Mon, 16 Jan 2017 15:27:30 +0100 Message-ID: <87r343nkq5.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484576853; bh=INc37FvzwubsbV/dOupdVy5R/qAQzX8JjVW8peXkwUA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=KFag16m+ACXhRxxBvIBOqhJBrt+bUGYZrScv65VEWZgI+Xh9NZUScSlwQTlLn0dR4N7scmtRC9ZjOL4LzJq+Rjpy201J/gCFJuz2PXpKE4bZ5IU8pEIDz2wmzQ9vLCBefR7RV+DOf5wdIMtdxN70I/DeNnMfP2RXfPrXa8izVZ8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 89.234.186.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 14:27:41 -0000 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Tino Calancha writes: > In my system, the buttons for Windows and MacOS show the headings=20 > 'Windows' and 'OS X' respectively; but the button for GNU/Linux > doesn't show the heading: the first line shown is > 'Most GNU/Linux distributions provide ...' Thanks, I'll fix it. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYfNhSAAoJECM1h6R8IHkQNPAH/jjo6mTddgdnkC/oz9ar4qop mY5VF2cAMxevwa/8UaBrak7yV/HqXN3DpDFKmfCkZaTN3L/CMtLU81FSIG4piFVQ KvLYd1dN0oeGZ2+OoudlezE/HV/w6IRW5tPX9OYa7PEmPyXX2RI6DyA3vSjF3FaM W1cVs2AYXm1G6BU1r76SscxKL5EAEY05pqRGViKiayZ0ceNrwCvB/6I1FaE/A7o/ Ng21vmc65rjQnfpIGWzbdUVzTThNmV67XQviWuSXndMIA1Hmt/ZruPtB5MFNFZre MZT0kabHY6kcqPeHQvt6RHa71UPrxOg/ovxXipGZUX3eYlZfmPZQ8lNMfA/CIg4= =ucNf -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Mon Jan 16 09:30:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT8Is-0007BC-Um for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 09:30:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT8Iq-0007B6-6H for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:30:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT8Ip-0003O2-IS for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:30:32 -0500 Received: from petton.fr ([2a00:5884:8368::1]:59696) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT8Ip-0003Nu-8F for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:30:31 -0500 From: Nicolas Petton To: Tino Calancha Cc: Emacs Devel , rms@gnu.org Subject: Re: Download buttons on the Emacs homepage In-Reply-To: References: <87tw8znnhf.fsf@petton.fr> Date: Mon, 16 Jan 2017 15:30:27 +0100 Message-ID: <87o9z7nkl8.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484577028; bh=SKrydVWorRzpndeOVmMXk5dOeiO/4jGo/LdMz/yVEDk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=FboyrdWIbx7xvZWF68lxPjQEUMPOWQnUmxT8a6rfCh8INbEkrGPHgmFFlT1houmJaCLHiV2WBpmcUrHCw1npoRIhrDvzL+veZcKhCqplhzV4NBn+T0luDMZvCvwKvyLOBITYHhTc0ov+a/5I0bTjQ83JZdRqDVyNjiTrDXchIpo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:5884:8368::1 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 14:30:33 -0000 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Tino Calancha writes: > In my system, the buttons for Windows and MacOS show the headings=20 > 'Windows' and 'OS X' respectively; but the button for GNU/Linux > doesn't show the heading: the first line shown is > 'Most GNU/Linux distributions provide ...' Fixed :) Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYfNkDAAoJECM1h6R8IHkQAVQH/iWp4NKshvyjHIVUgK3RYSO1 9k9H9vKUHWmD158uUiiuESkVjoPlF+FMWaaDWN1kqMYG4W/dKhzASw/gL7aZy2Xd xMqgmtgI39Y7bulEbVHh6zWReZ+K4Qmm3+L7pQHbSnxihW4bySVl9qZ7EBX90yJO vraFt8qk4/f9iwiharMkboCO8AOaVF6nRStt7SthHvwz9QuQsdsnQO1vkFz7rBm6 H01C0yUnDXyIFXs/yi57aI78ohZ0Oar7M08awFoZmn/wd0WwDoxf78QUYIr60LJ/ p26DkF3oT64TZ9rZvzILPEdXXzcOiOSYSC3rmLO1Au0Fp7Sx+S7yuUgfWamqhJ8= =3ZsF -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Mon Jan 16 09:34:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT8Md-0008Cy-Sf for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 09:34:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56930) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT8Mb-0008Cd-RB for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:34:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT8Mb-00049X-40 for emacs-devel@gnu.org; Mon, 16 Jan 2017 09:34:25 -0500 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]:35590) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cT8MU-000476-MX; Mon, 16 Jan 2017 09:34:18 -0500 Received: by mail-pf0-x233.google.com with SMTP id f144so54024268pfa.2; Mon, 16 Jan 2017 06:34:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=JRdUGJLZkdWjQGbs1mWNSVRoqIoUF6fm/RamjtQpUh8=; b=rusyH/cph482efkeiyH156A5xALtTyninOpLtN0RrQeCbJXPXrAwkUkRhEqppl0Mdg z12wYn1IS3lfgCy0lpUUxLb+Vg3dw7F1RsY+KJis+GhXWm7iNiqnu0X9TXrQ1fuzDdd5 cWGbAy5zLLgYR2sQkmpCo7VIVpI35IiUFIW19Ql6yhwySIz4ewRd6FW8Wv99e/QtTV70 NvpPOBUeBHGKdCqFt2/L9xTaHo0sC8PHE9glVR59SIn6NqHZziOZoj02ngBrMZDnOJYa ShFDT5VKvIMK9g5y1U5YqLpQMB5VScLJXbutFVbVSWaTsKOG0yevXKcpxpzuvzgVGULi 9wSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=JRdUGJLZkdWjQGbs1mWNSVRoqIoUF6fm/RamjtQpUh8=; b=e8gbORFfAyCga+ZXfK9W2rk8joDfAkFBTIW9fhTmF8+TpQxDAEh/vlHsauKtzrXFGa JycYUbjhM5mc5SrzDyXkegjDyc2MjVR0aNq6hjzxOSn5IR5yeOFASj0ePx3VO/65rgrH 6nROFOyYGN7ulHnJjchyCZ+7J1rgRdLg2us3LO7320bmpTl/PswwlmFlPA6qk2p147j4 srSjrGyxmOKorpjLh4Ppaa03C4i9yDTVSsCAWzb4Z/d4GauSjx+SPaNLPLSa9SdA1qnE TbuwHQmyYxRbAiy4b1xJeTJ2q/3uah2q5Ycc0FlE0fwm7YJSYqnYI0Q2KDPMWKCfM7gv V3uA== X-Gm-Message-State: AIkVDXLHggz4DQ8ieBBskPfdYIPgtbzd05xFHRbyoHBKERfOexgGvbWQTp0y+XYkSARV9g== X-Received: by 10.98.31.18 with SMTP id f18mr37784912pff.36.1484577257604; Mon, 16 Jan 2017 06:34:17 -0800 (PST) Received: from [192.168.0.18] (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id c64sm48355482pfa.91.2017.01.16.06.34.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Jan 2017 06:34:17 -0800 (PST) Subject: Re: Download buttons on the Emacs homepage To: Nicolas Petton References: <87tw8znnhf.fsf@petton.fr> <87o9z7nkl8.fsf@petton.fr> Cc: Emacs Devel , rms@gnu.org From: Tino Calancha Message-ID: Date: Mon, 16 Jan 2017 23:34:14 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <87o9z7nkl8.fsf@petton.fr> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 14:34:26 -0000 On 01/16/2017 11:30 PM, Nicolas Petton wrote: > Tino Calancha writes: > >> In my system, the buttons for Windows and MacOS show the headings >> 'Windows' and 'OS X' respectively; but the button for GNU/Linux >> doesn't show the heading: the first line shown is >> 'Most GNU/Linux distributions provide ...' > Fixed :) > > Cheers, > Nico Great, i can see it now! That was really fast! O: From MAILER-DAEMON Mon Jan 16 11:11:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cT9sJ-0004h1-V9 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 11:11:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48574) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT9sH-0004ff-Nh for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:11:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT9sC-0000Es-PF for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:11:13 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT9sC-0000En-Mk; Mon, 16 Jan 2017 11:11:08 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3385 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cT9sB-0001Ag-Vm; Mon, 16 Jan 2017 11:11:08 -0500 Date: Mon, 16 Jan 2017 18:11:04 +0200 Message-Id: <83eg039e93.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus CC: emacs-devel@gnu.org In-reply-to: <87o9z7s5iq.fsf@gmx.de> (message from Michael Albinus on Mon, 16 Jan 2017 10:44:45 +0100) Subject: Re: Patch for Emacs 25.2 Reply-to: Eli Zaretskii References: <87o9z7s5iq.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 16:11:14 -0000 > From: Michael Albinus > Date: Mon, 16 Jan 2017 10:44:45 +0100 > > enclosed is a patch of tramp.el, which fixes a bug introduced by Emacs > 25.1, commit e3a0f3daf12e208e88d712b09ef82096849b9431. > > Working on this, I found a related bug in files.el, which would be > solved by the appended patch as well. > > Both changes are simple, so I'm asking whether they could be applied to > Emacs 25.2. I've adapted also tramp-tests.el, and all tests pass for > both GNU/Linux and MS Windows. Do I understand correctly that fixing the bug introduced by e3a0f3d requires only the change in tramp.el? If so, the change for tramp.el is OK for the emacs-25 branch. Regarding the other bug and its fix in files.el, can you tell more about the bug? A change in files.el affects a very broad class of use cases, so I'd like to know more before I make up my mind about it. Thanks. From MAILER-DAEMON Mon Jan 16 11:27:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTA7g-0005RQ-N3 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 11:27:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51774) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTA7c-0005Pl-Ko for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:27:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTA7Y-0006rr-M3 for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:27:04 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52567) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTA7Y-0006rl-JP; Mon, 16 Jan 2017 11:27:00 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3391 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTA7X-0002WE-Sf; Mon, 16 Jan 2017 11:27:00 -0500 Date: Mon, 16 Jan 2017 18:26:55 +0200 Message-Id: <83d1fn9dio.fsf@gnu.org> From: Eli Zaretskii To: Constantin Kulikov CC: emacs-devel@gnu.org In-reply-to: (message from Constantin Kulikov on Mon, 16 Jan 2017 11:14:10 +0300) Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. Reply-to: Eli Zaretskii References: <83inpg9ib5.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 16:27:05 -0000 > From: Constantin Kulikov > Date: Mon, 16 Jan 2017 11:14:10 +0300 > Cc: emacs-devel > > > it needs to find another buffer to become the current one > The current in what sense? In the sense of 1)(current-buffer) or 2) (windown-buffer (selected-window))? I meant 1), but it does 2) as well. > If 1) then why require that this buffer is not visible? Because it makes the most sense when kill-buffer is invoked interactively. Replacing the killed buffer with a buffer that is displayed in some other window would be less useful than showing a buffer not displayed anywhere else. > What I understand of how kill-buffer must work: > First call kill-buffer hooks > Then find windows with the buffer and replace it, here the call to buffer-predicate it legit if the buffer was visible > in any window. > Then really kill the buffer. > At this point we can set selected window buffer as current because we already have called the > replace-buffer-in-window. > If there is no selected window, then we can take the first buffer in (buffer-list) as current > or create the *sctatch* and set it as current. It sounds like you are assuming that current-buffer and the buffer shown in the selected window are the same buffer. But that doesn't have to be true: a Lisp program could very well switch to another buffer while doing its job. And since Emacs must have a valid current-buffer at all times, it must choose another one when the current buffer is about to be killed. > I can not see why there is a need to call buffer-predicate when killing a buffer that was not visible in any > window.) Once again, kill-buffer (and other-buffer, which kill-buffer calls, and which actually calls the predicate) are interactive commands, so their implementation is heavily biased towards doing what the user who invoked these commands wants and expects. I can see your point about the same logic being of questionable value when with-temp-buffer kills its temporary buffer, but I don't think we should consider changing how kill-buffer and other-buffer work to make that use case more efficient and its overhead smaller. That's because these two commands work like that for a very long time, and evidently do what the users expect (the evidence being that I don't remember any complaints about that). So I'd suggest to leave these two commands alone, and instead consider adding some new function, say kill-temp-buffer, which will only do a small subset of what kill-buffer does, and disregard stuff like visibility of candidate buffers to which current-buffer needs to switch. From MAILER-DAEMON Mon Jan 16 11:56:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTAZg-00081I-1u for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 11:56:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTAZd-0007zy-Qe for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:56:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTAZa-0007Km-Pj for emacs-devel@gnu.org; Mon, 16 Jan 2017 11:56:01 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52832) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTAZa-0007Ki-M4; Mon, 16 Jan 2017 11:55:58 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3444 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTAZZ-0001C0-Ox; Mon, 16 Jan 2017 11:55:58 -0500 Date: Mon, 16 Jan 2017 18:55:52 +0200 Message-Id: <83bmv79c6f.fsf@gnu.org> From: Eli Zaretskii To: zxnotdead@gmail.com CC: emacs-devel@gnu.org In-reply-to: <83d1fn9dio.fsf@gnu.org> (message from Eli Zaretskii on Mon, 16 Jan 2017 18:26:55 +0200) Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. Reply-to: Eli Zaretskii References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 16:56:02 -0000 > Date: Mon, 16 Jan 2017 18:26:55 +0200 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org > > So I'd suggest to leave these two commands alone, and instead > consider adding some new function, say kill-temp-buffer, which will > only do a small subset of what kill-buffer does, and disregard stuff > like visibility of candidate buffers to which current-buffer needs > to switch. Btw, you didn't describe the use case where this issue got in your way, so perhaps you should. That would allow to decide whether the problems are bad enough to look for a solution. Thanks. From MAILER-DAEMON Mon Jan 16 13:45:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTCHc-0007Yl-Az for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 13:45:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49499) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTCHa-0007Yd-1I for emacs-devel@gnu.org; Mon, 16 Jan 2017 13:45:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTCHV-0005uO-4g for emacs-devel@gnu.org; Mon, 16 Jan 2017 13:45:30 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:38264) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTCHU-0005ty-TR for emacs-devel@gnu.org; Mon, 16 Jan 2017 13:45:25 -0500 Received: by mail-wm0-x234.google.com with SMTP id r144so188027968wme.1 for ; Mon, 16 Jan 2017 10:45:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version; bh=mu7auRAxY64gz6qlU1FWNju/GSxeEOe4P7lxweA3zXM=; b=jiEndrfxJ61aPaXa2zE/y8oPlzITVqUJiruv0RU6lUpbmxk+r+ZZsy32yH1SuUap9r 1IeKgQvRnXel9q6YYwKzopppY/WCQfH9u9lb8tygyU1IN6nthYWevqP+c0lX+8hVq5dt NxMBaRhfpAYvZ2AAyLhk5plV5IJE8xhqRq/S9+0prF3nAWJ31wC414utt//llur21MPH BVCGJ1n04V2KUgOPbQoYrf2mfc8ivuc/8RaOQ1fjwHNybUQXjUNfvYHQWe/7pmbti8La CiATkIegV9aF+X2rfcRxbVpjFlaAgV3lS2tn9v0chAz47UliTOfw9URV5ZX9NYZlOQ/2 n+Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version; bh=mu7auRAxY64gz6qlU1FWNju/GSxeEOe4P7lxweA3zXM=; b=fh7YLJNUhzK1VNAwvIy3Rgge8PiKXi/oRpotuDEwdDb/1gPlmcNrgiQgVP0uI8xvuR 566pi2hV+vPYDeiSqrj0lYzn9HxDho+4Zmrv3qK5WgRjTryoJFOY1BVq3hYn08i9d2sb QZ0ozA+3dhvpHilVSK71BFeM1TPlAR7TZXkYrt0Y6fDoWXavuZP4g3erCMJ4EPrJguhE vZR9Efo9seUIuJcjczXSQgi7O2qBzYlqTP4FVyvsUjv/4hHgQ+jyWCAeYoUgxHejuEcl ltMX9f51uiAfbM8V1/y0VBGhe3g9aPLH+5OySlwV2eq5AiXDH/yKmsPzJHBfXDhAnYZq tORA== X-Gm-Message-State: AIkVDXJ13P+EKeioPdHiWQYAPCVzdBNSRTfQi5807EV+LJ64HPLr2qVHy7MDgjAEPrmjrg== X-Received: by 10.28.226.67 with SMTP id z64mr12429975wmg.137.1484592321956; Mon, 16 Jan 2017 10:45:21 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id c9sm30149445wmi.16.2017.01.16.10.45.19 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 16 Jan 2017 10:45:20 -0800 (PST) From: Edward John Steere To: Emacs-Devel Cc: Subject: Re: CEDET Merge In-Reply-To: <87lgugm2qg.fsf@gmail.com> (Edward John Steere's message of "Thu, 12 Jan 2017 22:40:07 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Date: Mon, 16 Jan 2017 20:45:01 +0200 Message-ID: <87inpelu8i.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 18:45:31 -0000 > Hi Bastian, > >> It's great to hear that you have been working on this. I'm also very >> interested in getting CEDET upstream and CEDET in emacs synchronized >> again. Please see also this bug report: >> >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23792 > > I remember seeing your post a while ago, but had forgotten about it. > I'll take a look now. > >> This also contains a patch for the emacs sources which I've come up >> with half a year ago, but it's probably incomplete and even wrong in >> places. But maybe we can compare what we did. >> >> Do you have a git repository cloned from CEDET upstream which contains >> your work somewhere? Or did you start by modifying the built-in CEDET >> in emacs? > > I tried various approaches (with varying degrees of success) before > going for something rather brute force: I diffed every file in CEDET > from Emacs core to it's corresponding file in upstream (creating a diff > file per file-pair) and applied the changes to upstream by hand. > > At the moment my changes are living on a private repository. I'd like > to do some tidying up with regards to commits before I make them > available. I'll get to work on that tomorrow. > >> Cheers >> Bastian > > Kind regards, > > Edward Steere Hi All, Please may I have some advice. I've been trying to get my change merged into Emacs core locally, and have had little (read no) success. These are the approaches I've tried so far (not verbatim): 1. git remote add ~/wip/cedet cedet && git merge --allow-unrelated-histories etc. 2. git subtree (not the right model because Cedet mirrors the layout of sources in Emacs core) 3. rm -rf ~/wip/emacs/lisp/cedet && cp ~/wip/cedet/lisp/cedet ~/wip/emacs/cedet I've opted for option 3 because I realised that I'd already done the merge in the other direction and now the state of that branch should be exactly reflected in core. However, when I try to bootstrap Emacs I get errors when loading loaddefs.el in lisp/. It complains about eieio-defclass-autoload being undefined -- which is fair enough because that's only autoloaded later, removing the class autoloads which caused the autoloads to be added produces the same error for ede-project-autoload. In the interests of seeing how far I could go before completely bombing out I removed this autoload as well and I was confronted with another autoload error, this time in the `jka' compression library (!?) What follows is the error with a few lines before it for context (you can substitute the void variable error with a similar function is void error for an idea of how the previous two errors looked): make[3]: Leaving directory '/home/edward/emacs/leim' LC_ALL=C ./temacs -batch -l loadup dump Loading loadup.el (source)... Using load-path (/home/edward/emacs/lisp) Loading emacs-lisp/byte-run... Loading emacs-lisp/backquote... Loading subr... Loading version... Loading widget... Loading custom... Loading emacs-lisp/map-ynp... Loading international/mule... Loading international/mule-conf... Loading env... Loading format... Loading bindings... Loading window... Loading files... Loading emacs-lisp/macroexp... Loading cus-face... Loading faces... Loading button... Loading loaddefs.el (source)... Symbol's value as variable is void: jka-compr-load-suffixes Makefile:546: recipe for target 'emacs' failed make[2]: *** [emacs] Error 255 make[2]: Leaving directory '/home/edward/emacs/src' Makefile:409: recipe for target 'src' failed make[1]: *** [src] Error 2 make[1]: Leaving directory '/home/edward/emacs' Makefile:1123: recipe for target 'bootstrap-build' failed make: *** [bootstrap-build] Error 2 I would greatly appreciate any advice with regards to the best way to debug errors like this in the build process. Kind regards, Edward Steere From MAILER-DAEMON Mon Jan 16 14:30:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTCzH-00023e-T0 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 14:30:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58726) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTCzF-00021g-KO for emacs-devel@gnu.org; Mon, 16 Jan 2017 14:30:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTCzE-0001eR-OD for emacs-devel@gnu.org; Mon, 16 Jan 2017 14:30:37 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54559) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTCzE-0001e3-EK; Mon, 16 Jan 2017 14:30:36 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3610 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTCzC-0002Lu-Ue; Mon, 16 Jan 2017 14:30:36 -0500 Date: Mon, 16 Jan 2017 21:30:15 +0200 Message-Id: <837f5uajlk.fsf@gnu.org> From: Eli Zaretskii To: Edward John Steere CC: emacs-devel@gnu.org In-reply-to: <87inpelu8i.fsf@gmail.com> (message from Edward John Steere on Mon, 16 Jan 2017 20:45:01 +0200) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 19:30:38 -0000 > From: Edward John Steere > Cc: > Date: Mon, 16 Jan 2017 20:45:01 +0200 > > 3. rm -rf ~/wip/emacs/lisp/cedet && cp ~/wip/cedet/lisp/cedet ~/wip/emacs/cedet > > I've opted for option 3 because I realised that I'd already done the > merge in the other direction and now the state of that branch should be > exactly reflected in core. However, when I try to bootstrap Emacs I get > errors when loading loaddefs.el in lisp/. It complains about > eieio-defclass-autoload being undefined -- which is fair enough because > that's only autoloaded later, removing the class autoloads which caused > the autoloads to be added produces the same error for > ede-project-autoload. In the interests of seeing how far I could go > before completely bombing out I removed this autoload as well and I was > confronted with another autoload error, this time in the `jka' > compression library (!?) > > What follows is the error with a few lines before it for context (you > can substitute the void variable error with a similar function is void > error for an idea of how the previous two errors looked): Did you try deleting loaddefs.el and running "make maintainer-clean" before bootstrap? If you did, and the problem persists, please show the offending parts on loaddefs.el which trigger these errors. From MAILER-DAEMON Mon Jan 16 14:55:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTDNS-000416-LZ for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 14:55:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34681) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTDNP-0003yU-Vp for emacs-devel@gnu.org; Mon, 16 Jan 2017 14:55:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTDNM-0008VH-7T for emacs-devel@gnu.org; Mon, 16 Jan 2017 14:55:35 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:34324) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTDNM-0008Uw-1r; Mon, 16 Jan 2017 14:55:32 -0500 Received: by mail-wm0-x241.google.com with SMTP id c85so711962wmi.1; Mon, 16 Jan 2017 11:55:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=yXjiNRHDb6WHl6u8OIrm/OEcosz6Vtsp/8rZMOormsw=; b=Hzc8YXh2uAJffTIObgpUeWGbKz6wFn8F2mD02TMGao6RypjF2f8cuYkSi7gPGji2VQ pfynUAoXYwmqIt7IbKftjQsaK2m7+vVwvzk2ioSTRK6NkVl439Erp0mKhLvJF7iFxxSL TLybYLksOKyEn8MsD980zfqM7xD7YChKSsdV5qn2+A3ZRDMuxBOHFhd5FrC6PvRH1FA9 Kt7rbZFKcbR4Q3fNj9SYcBhWLTjz+A02wTAx69aD4cLQOXJhEk9dOmqpW6fOqCsmOVpf +16SejhIOEZB42BDI/mcyEBrL7YnHoqCpFsCmxotedvcT3M3zxVbij46AvGbJaYgbuXr YTfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=yXjiNRHDb6WHl6u8OIrm/OEcosz6Vtsp/8rZMOormsw=; b=MqkpmZr+qnQLTcujbnmNlA2BBH0Bp8GG1elhti/tb8+rMp3QZYADYOYWJQAjMQNHY5 N3/r8wNjAHW6bu7rw5fhZR0R2B2P5sN+RdR1v0IoqsYkkp/wpPgP8/c0TwDVQ4J9LWxw ekXcOqe3FbJnFBeY2PwwuX5mPsDjI2lCKxu9z3W5cDWy21lLSvA1EvkrKAcGso5iPVQR ScDGnMq0i+2c46mUjgPJ/0H5Ks8WYS7KLzcIhT+87HG2O7o1wWRHF1xoAZ1/w+zRXEyM +U7oieayu74UoODMyK31E5V8eR81jHyOMg/devVMAydwD79qOo6UHArKZln+DKmygtCJ YJ0w== X-Gm-Message-State: AIkVDXKhsshKTloylxhMbLlvXRgj431fPWOAnDEq3tISrFirHc3Zi6wW6i/WDnZDYeF0Uw== X-Received: by 10.223.163.75 with SMTP id d11mr5367852wrb.87.1484596530584; Mon, 16 Jan 2017 11:55:30 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id u78sm31029358wma.11.2017.01.16.11.55.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 16 Jan 2017 11:55:29 -0800 (PST) From: Edward John Steere To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> Date: Mon, 16 Jan 2017 21:55:23 +0200 In-Reply-To: <837f5uajlk.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 16 Jan 2017 21:30:15 +0200") Message-ID: <87a8aqlqz8.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 19:55:37 -0000 Hi Eli, > Did you try deleting loaddefs.el and running "make maintainer-clean" > before bootstrap? I did, but to be sure I just did a fresh copy across and ran: "make maintainer-clean && make bootstrap" and it failed again with the same error. > If you did, and the problem persists, please show the offending parts > on loaddefs.el which trigger these errors. Here are the offenders for the first error (they come from a new module in Cedet called cogre): ;;;### (autoloads nil "cogre" "cedet/cogre.el" (0 0 0 0)) ;;; Generated autoloads from cedet/cogre.el (eieio-defclass-autoload 'cogre-graph-element '(eieio-named) "cogre" "A Graph Element.\nGraph elements are anything that is drawn into a `cogre-base-graph'.\nGraph elements have a method for marking themselves dirty.") (eieio-defclass-autoload 'cogre-base-graph '(eieio-persistent) "cogre" "A Connected Graph.\na connected graph contains a series of nodes and links which are\nrendered in a buffer, or serialized to disk.") (eieio-defclass-autoload 'cogre-node '(cogre-graph-element) "cogre" "Connected Graph node.\nNodes are regions with a fill color, and some amount of text representing\na status, or values.") (eieio-defclass-autoload 'cogre-link '(cogre-graph-element) "cogre" "Connected Graph link.\nLinks are lines drawn between two nodes, or possibly loose in space\nas an intermediate step. Some links have text describing what they\ndo, and most links have special markers on one end or another, such as\narrows or circles.") (eieio-defclass-autoload 'cogre-arrow '(cogre-link) "cogre" "This type of link is a simple arrow.") Here are the second offenders (they come from support for compdb and ninja): (ede-add-project-autoload (ede-project-autoload :name "Compilation DB" :file 'ede/compdb :proj-file "compile_commands.json" :load-type 'ede-compdb-load-project :class-sym 'ede-compdb-project)) (ede-add-project-autoload (ede-project-autoload :name "Ninja" :file 'ede/compdb :proj-file "build.ninja" :load-type 'ede-ninja-load-project :class-sym 'ede-ninja-project)) I can't find any reference to the jka variable in loaddefs. Kind regards, Edward Steere From MAILER-DAEMON Mon Jan 16 15:06:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTDY6-0001hO-Uk for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 15:06:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37260) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTDY4-0001fM-LQ for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:06:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTDY2-0003Dt-22 for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:06:36 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54899) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTDY1-0003Dp-Ud; Mon, 16 Jan 2017 15:06:33 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3684 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTDXx-0000vV-Ex; Mon, 16 Jan 2017 15:06:33 -0500 Date: Mon, 16 Jan 2017 22:06:08 +0200 Message-Id: <8360leahxr.fsf@gnu.org> From: Eli Zaretskii To: Edward John Steere CC: emacs-devel@gnu.org In-reply-to: <87a8aqlqz8.fsf@gmail.com> (message from Edward John Steere on Mon, 16 Jan 2017 21:55:23 +0200) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 20:06:37 -0000 > From: Edward John Steere > Cc: emacs-devel@gnu.org > Date: Mon, 16 Jan 2017 21:55:23 +0200 > > Here are the second offenders (they come from support for compdb and ninja): > > (ede-add-project-autoload (ede-project-autoload :name "Compilation DB" :file 'ede/compdb :proj-file "compile_commands.json" :load-type 'ede-compdb-load-project :class-sym 'ede-compdb-project)) > > (ede-add-project-autoload (ede-project-autoload :name "Ninja" :file 'ede/compdb :proj-file "build.ninja" :load-type 'ede-ninja-load-project :class-sym 'ede-ninja-project)) > > > I can't find any reference to the jka variable in loaddefs. Search for that variable in all of the lisp directory and its subdirectories. What hits do you see? Are any of them in cedet directories? From MAILER-DAEMON Mon Jan 16 15:12:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTDeF-0005Pa-EL for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 15:12:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTDeD-0005PQ-P6 for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:12:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTDeB-00056G-7K for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:12:57 -0500 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:36002) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTDeA-000568-WA; Mon, 16 Jan 2017 15:12:55 -0500 Received: by mail-wm0-x22b.google.com with SMTP id c85so172807240wmi.1; Mon, 16 Jan 2017 12:12:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=QZ+rw/jyMYa+i1AgcaKfLBqFGRnWBHEKhtVZ3mJ11J4=; b=Hk8RS7x66zoEpPh8XRhMvwdFF9vduuRegrqKlkQ2Sg6nMDMuU49pxdQRDKvbRNB5mQ jjO6P9R/ZWsLsGt1nMckvAirMfO/mvtEYloGiNYagdG9ozu1BT5JkhFz7gP79jD3ZqJ5 o+wsPbQe5KUm9odO03F2Lfywoh38iBPezygGQVgEtck5+1jDnql1A0d+SiDgEm+KTRIv 7HtK0SrC8Ofoi1h6MmLNg4W64rwjbwGlPI67Yq/BUPDcjoqq8huLSLQibzlWb36atAkD HzofGE2TIiBQRokdh8/N02mvhVZ7RDxoOeRY7EFMuAyrTUOLKK++JX5jyOgZf1bdlU+D +XMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=QZ+rw/jyMYa+i1AgcaKfLBqFGRnWBHEKhtVZ3mJ11J4=; b=sT3JJzQOteWzlo/dm/gtXUu+DLElwp95JLLayt2AJSm0FFZlLA6P/6bbXtQaNm8quo LApwql40bS5hBAMW2qm5MYp+2Je32Zz/D7+kO1Q5/L0pvI4GK6j10lDtzYqKeNbSj6iw TxmnwJSyHneccOrZE+gwN2TDNoFTNT7R0ljTAS4DKTJtmE5kG5/zEAliLralKRE7QQdf OuI+9ZwnPIj1uwFA8SIb1+aT6Grw/Mvj1ihETb6XIJOMwYS31uIj9jr/OvyaUeB2cqw8 7IyabsY7Nm8J1YAeixGAFBI8Q800JXH48wWEp3BpWR4SkzZ8fsW6PzK5xBQuShPQed3y imyw== X-Gm-Message-State: AIkVDXJR+6UFMTQtTQjxCnCwAIG1dILnfJ+QWBTL7/+coPzY8SnMQZXt2xTdH05zbjerTw== X-Received: by 10.223.138.172 with SMTP id y41mr28346887wry.118.1484597573513; Mon, 16 Jan 2017 12:12:53 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id l67sm24030316wmf.1.2017.01.16.12.12.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 16 Jan 2017 12:12:52 -0800 (PST) From: Edward John Steere To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> Date: Mon, 16 Jan 2017 22:12:47 +0200 In-Reply-To: <8360leahxr.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 16 Jan 2017 22:06:08 +0200") Message-ID: <8760lelq68.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 20:12:58 -0000 > Search for that variable in all of the lisp directory and its > subdirectories. What hits do you see? Are any of them in cedet > directories? Nope only hits when I grep recursively from lisp/ are in: - jka-cmpr-hook - subr - jka-compr From MAILER-DAEMON Mon Jan 16 15:27:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTDrr-0000Vb-OB for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 15:27:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41328) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTDrp-0000U4-D0 for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:27:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTDrl-0001PR-CZ for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:27:01 -0500 Received: from randomsample.de ([5.45.97.173]:42249) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTDrl-0001Oa-0n; Mon, 16 Jan 2017 15:26:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=PFfaFygJU26Q0DEvxm+k+yyWpdGcaSEHAIm4fPm8k7I=; b=nWWUit3TxxkShIrJTpIzFktGWPv7BP0LYjY6d6+IUd+YYnzamYKuxHuOt6UtAeZUCsLdSt1qaohrv4QsopgQMsH6ogwRrTCHcwplLkWWGm0Tq9VMj42yV7j831uYdLD0; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTDrb-0006LK-Kl; Mon, 16 Jan 2017 21:26:47 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87a8aqlqz8.fsf@gmail.com> (Edward John Steere's message of "Mon, 16 Jan 2017 21:55:23 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Mon, 16 Jan 2017 21:26:43 +0100 Message-ID: <878tqawy2k.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 20:27:02 -0000 Edward John Steere writes: > Here are the offenders for the first error (they come from a new module > in Cedet called cogre): No, please do not merge Cogre. It is not a new module, was never part of Emacs and is not really actively developed anymore. -David From MAILER-DAEMON Mon Jan 16 15:37:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTE1w-0002wj-69 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 15:37:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTE1s-0002wQ-Kp for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:37:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTE1p-0003yv-K5 for emacs-devel@gnu.org; Mon, 16 Jan 2017 15:37:24 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:35195) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTE1p-0003xG-Cv; Mon, 16 Jan 2017 15:37:21 -0500 Received: by mail-wm0-x243.google.com with SMTP id d140so17032754wmd.2; Mon, 16 Jan 2017 12:37:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=xVQDY7RpMY8R5mbvuRvnC68rezOR4Wu3Yn9kM8kUpLo=; b=F6Hx4MU9RAI+kgzYNNGXffKOPXe8bHUXmMvLO1vM+m9yCFG9WjYA0pylphn3KyMZ3X 0l7x7FIxQGBlAg6KR4O6j7aV9uaIVgMIslc328xqSS4s/wSk0BVQSxE87VbuEOay1i6B vMqSg0rAgvjbJAbNhimpsBOH1zKo+tg6CYV/33IH5UCoZEYWaE5RK8cPUpN0vu2ooyJA iuFZMQIY1SHHd4mMcXwvv5MfFqAxUYAMt3wo8z2XWLSUa1Lo55Qh+nSfaYFZ+38UkWw0 8fQp1oM3W8HEU8Ex1b2NvtRQMlpjLIneDFuv/pdsvzduWBvtOT+x/IpmQMAuUSyavlXm ml/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=xVQDY7RpMY8R5mbvuRvnC68rezOR4Wu3Yn9kM8kUpLo=; b=J1w17ZTTDSZV1o/YX9tlQF5yDqmSFh9QL+Fx/+yPmHBRC2E+2Yx5Dk7fCcFrRAsEVz 12g7n0+oW9M66XGLd8R0Kj/L0IR4aoHu7BmDq2acEFLLQEX5/9Tfpqx5W5BiPPsWc6PQ WOLgZJd+j+aABPiUAo6yzS1+8qplFhCQob0JNZ0KsDcXckqvuPmXQifJXtksPMuvLhmI 83COosFAeMdtekFNIMZT6LO3z6AuqqqZox/Sp6G1ECZom98O/gORABgEbuitlpvg4j/F 3J+YpV8mVmY/uORV/nidCzjofiMvDU0m/uNXDxS1tbDMclhfjVSXJjs03i6Sip2HeUz9 HUjA== X-Gm-Message-State: AIkVDXKrJnRe7hG7LIJnce6SwWAYjBSFOHjNTdxdp/NF/ZwsPHA9xQa0UuA2tXhICdobAQ== X-Received: by 10.28.72.3 with SMTP id v3mr15111477wma.20.1484599040148; Mon, 16 Jan 2017 12:37:20 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id 123sm31282987wml.6.2017.01.16.12.37.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 16 Jan 2017 12:37:19 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> Date: Mon, 16 Jan 2017 22:37:13 +0200 In-Reply-To: <878tqawy2k.fsf@engster.org> (David Engster's message of "Mon, 16 Jan 2017 21:26:43 +0100") Message-ID: <871sw2lp1i.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 20:37:25 -0000 > No, please do not merge Cogre. It is not a new module, was never part of > Emacs and is not really actively developed anymore. > > -David Sure. The plan is to start by getting the whole of Cedet compiling and starting up in core and then taking a more deliberate approach to what stays and goes. I'm taking this approach because the alternatives require a bit more historic knowledge of Cedet than I have. Are you aware of a better approach? From MAILER-DAEMON Mon Jan 16 16:13:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTEaZ-00059D-I7 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 16:13:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50726) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTEaW-00056V-F1 for emacs-devel@gnu.org; Mon, 16 Jan 2017 16:13:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTEaT-0001M8-7W for emacs-devel@gnu.org; Mon, 16 Jan 2017 16:13:12 -0500 Received: from randomsample.de ([5.45.97.173]:42980) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTEaS-0001Ls-Tq; Mon, 16 Jan 2017 16:13:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=1SsTgj4b6DSdt0iApTbmyeoPOtsSRyRBS3gBamRg+n0=; b=mjRmBPyFoH+Sv9lbRP9fhAqvaF0KftQVYTl1Np7v3KfvT9Xmocr6guGtEg83UVkl1wClP5D03u54fId37LxepKv/5mKuG9M06+aZUK1bGNAuf9DFUwu1yUajp92W0s49; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTEaR-0006kO-0x; Mon, 16 Jan 2017 22:13:07 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <871sw2lp1i.fsf@gmail.com> (Edward John Steere's message of "Mon, 16 Jan 2017 22:37:13 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Mon, 16 Jan 2017 22:13:05 +0100 Message-ID: <874m0ywvxa.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 21:13:13 -0000 Edward John Steere writes: >> No, please do not merge Cogre. It is not a new module, was never part of >> Emacs and is not really actively developed anymore. >> >> -David > > Sure. > > The plan is to start by getting the whole of Cedet compiling and > starting up in core and then taking a more deliberate approach to what > stays and goes. I'm taking this approach because the alternatives > require a bit more historic knowledge of Cedet than I have. > > Are you aware of a better approach? The problem with this approach is that you loose lots of history for the changes that are applied. In Emacs this is especially problematic because of the copyright issues. So one will need at least a proper ChangeLog, saying which authors changed which functions, but the Emacs maintainers will have to say if that would suffice of if we need authorship information for each line that is applied. So the "Right Way" would be to apply the upstream commits that happened since the last CEDET merge to the Emacs repo. I had a package for doing that, but it was based on Bazaar, so that went they way of the Dodo. It's called cedet-emacs-merge.el and is in the CEDET repo. I don't think it makes sense to port it to git, because we actually agreed some time ago to drop the CEDET repo altogether, so we would "only" need one final one-way merge. It's been on my TODO list for ages, and I'm really sorry that it still has not happened yet. In my opinion, the first thing that should be done is to port the test suite to Emacs, meaning the unit and integration tests for Semantic and EDE, ripping out all tests for stuff that is not in Emacs. I already did that for EIEIO, but for Semantic and EDE a lot is missing. It will make it much easier to find regressions while doing the merge. -David From MAILER-DAEMON Mon Jan 16 16:49:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTF9w-0002hN-85 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 16:49:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTF9u-0002fo-4B for emacs-devel@gnu.org; Mon, 16 Jan 2017 16:49:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTF9q-00055f-58 for emacs-devel@gnu.org; Mon, 16 Jan 2017 16:49:46 -0500 Received: from mout.gmx.net ([212.227.15.19]:63332) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTF9p-00055b-Rx; Mon, 16 Jan 2017 16:49:42 -0500 Received: from detlef.gmx.de ([93.197.214.201]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MNYxW-1cNALe1cy2-007AIm; Mon, 16 Jan 2017 22:49:40 +0100 From: Michael Albinus To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Patch for Emacs 25.2 References: <87o9z7s5iq.fsf@gmx.de> <83eg039e93.fsf@gnu.org> Date: Mon, 16 Jan 2017 22:49:38 +0100 In-Reply-To: <83eg039e93.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 16 Jan 2017 18:11:04 +0200") Message-ID: <87eg024qvh.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:+z2567nPKBysx0ckO8bDRcAhrC2QohYuInTDlR45frMxgvSxnNO P/WvJ1sUGw1+ByLCmwqvDGQIy7uaaohmfMyQwpLNaOWj2HK8eD9lwwIvrTNaQLi43HtW6LE +sOKb/U2kBbQ10b622u8IK/LtDGqELpASTiSAmngbcW51RRig2i1oqJ8QtxSL5bCMLX3Akr bJKySQ4xYmBKIMV2E2Y6Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:WtzdPKr4OSY=:tcr5a4TMNZsW8g+ptt+qR+ 27FvfHX9cA1HebxCjMRmnPWzJeHBjxuOGqr3h2V9EvdxMUP5BgMMGB0pRT+XM2nUYQ8jA/m/e 5wuKkWX7F7J8+LtsN91nPT6dCRMFR2/NkgxVi4VXUc3IR1GoeWMVsN5JYnzSmJpRaNqQP+dDu gFdWMAVmshJp8SR/7KRx718/twkf1yJzbobuzMNqE3c7t8ZFtVGRv2G8kTLxd+ABNUOFQZRcb +0wtDuNrcyBwDYa+JSdLD/mK/rxgFJenQnhJoAoWvAjn/xo4JZrxM8rT2hSjr9/13eobe5ni7 pU6XO8F1W5XdD2kATKmrld5vgzgqXxFeC4h75zNZrkcT7M9W6oVIBTWlBFd0WvX6tmhynBQ7Q JOAxjjEvxpCa1onv0mw4Zw8dzaVqTaWuQhpODur/R7eR58+4LJP43jwhXMOzrbIJ8kETZBZjo xpUsELtryHWwRPF5XrIiohztva44EHc585ZMNhxd9WDnG3UHEwZWPhy2OhzPYDbmCu3MvT4mx Mh5Jn5qUg0BMGQLmYmF9kDDFmu4J3ftffrMgvI1Y6AGldsbV/Zb2vwFPjPnHdxU32U61uHdKY 9dnh52TiE/0wLrvy24C1EDL1WBp3j+4txLcUi9lW86B2X0kQn7zg3Bsat5cXkEWkLebcv4J8R YsrLs1ZX82H+sjTykl39agwg3D+pQ3zU8fCCb3kPtha2DhT4jBltjtmoviDvkt9RvhHrjfA1h HbwNAuYYHtcMwqG4H0AY+/TytS6TgiJUM4n/Es9YfeORt4wKyAFzkKdg815ijKhOJ85A8BnJ+ 0jhVLr7 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.19 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 21:49:47 -0000 Eli Zaretskii writes: Hi Eli, > Do I understand correctly that fixing the bug introduced by e3a0f3d > requires only the change in tramp.el? That's correct. > Regarding the other bug and its fix in files.el, can you tell more > about the bug? A change in files.el affects a very broad class of use > cases, so I'd like to know more before I make up my mind about it. In `make-auto-save-file-name', there is twice a test for ang-ftp file names: --8<---------------cut here---------------start------------->8--- (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result))) --8<---------------cut here---------------end--------------->8--- The regexp matches ange-ftp file names like "/user@host:". It does not match general Tramp syntax, like "/method:user@host:" or "/host:". As result, on MS Windows there is an error like --8<---------------cut here---------------start------------->8--- (let ((buffer-file-name "/method:user@host:/path/to/file") tramp-auto-save-directory auto-save-file-name-transforms) (make-auto-save-file-name)) => "\\method!user@host!\\path\\to\\#file#" --8<---------------cut here---------------end--------------->8--- The patch replaces this regexp by --8<---------------cut here---------------start------------->8--- (not (file-remote-p result))) --8<---------------cut here---------------end--------------->8--- Then it works as expected: --8<---------------cut here---------------start------------->8--- (let ((buffer-file-name "/method:user@host:/path/to/file") tramp-auto-save-directory auto-save-file-name-transforms) (make-auto-save-file-name)) => "/method:user@host:/path/to/#file#" --8<---------------cut here---------------end--------------->8--- The patch is harmless enough that I propose it for Emacs 25.2. > Thanks. Best regards, Michael. From MAILER-DAEMON Mon Jan 16 17:21:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTFeZ-000892-7K for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 17:21:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTFeW-00088d-RX for emacs-devel@gnu.org; Mon, 16 Jan 2017 17:21:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTFeV-00073U-AZ for emacs-devel@gnu.org; Mon, 16 Jan 2017 17:21:24 -0500 Received: from mail-io0-x22d.google.com ([2607:f8b0:4001:c06::22d]:33379) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTFeQ-0006x6-Cc; Mon, 16 Jan 2017 17:21:18 -0500 Received: by mail-io0-x22d.google.com with SMTP id v96so101748729ioi.0; Mon, 16 Jan 2017 14:21:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=JDHlwDXOFi8LQs5hcy2pD7IJ4Z2gtDFgnKhUC0mrbR4=; b=PX0hixLfzsazyyojd/pc/EB3ERFH99U5ZPm2D7xVDNPftkhe3eB6IXw8N2eTqT0dsG pZTghHodDdnTIIOcqU3Un4f+iYYSRyy3Lhmo09TqQtEJoXHWf2GnlLQ2l1fa1qgvMhPx SuyDNSwDIdzB0OKn/QWUcZw+UdKx9QpuFoICFfTJBhpaGz89WSk6VhEjSJMNg6QwMYB7 hBmjaQHd6SW87WFxlbXAL+JHFbeIRWHJRb9rdCp0m7C//QvUgAlNW4rtLWUzs+hYxyVW FPxHNkrxlCF9egOdnQnOZ66rwpY1sQDVJQBeQ7iIaXjiexOLceBsr3jwwMBl34N3Eoop 2r5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=JDHlwDXOFi8LQs5hcy2pD7IJ4Z2gtDFgnKhUC0mrbR4=; b=c+Ozn4HcQ+ZnZuRtmNCgYQ27mXjVw9T3JCAkMAH0Js0HCFr/zCqCPfAHXeps77HUnC c+cLgYn2ErCGF9czDsIVzfqpHepsRcC5lTXktvXQpdTPzihGAAfBOjzxEZozpa4lSu4B 3rzmIKzxbajctiyKzxyKPKUX/z9jkTPg2yaUOaq0qsSY81V1tqz6sos3ziQBbhR3HRU4 GW9PNwVue4sgBwRM7ms8XuGfszpTDqV3/D+i/THoRInkiydDSHiaXMzHmDsQjANODOQT mjpjrTMYn/wI/nLZFoJTQf+DMss3ZIrCAt2qAabp5HVakm4DEN5J/WvjlHjL9HQLEdDe 3jDg== X-Gm-Message-State: AIkVDXLoN9cgSNDPBR3M4uGPAmwZ60MgGM3HFYXpFCkRtHVwKEGu3dA7fPsd0e+1aEKnSVpAD3Z4LUOyQJc2GA== X-Received: by 10.107.167.204 with SMTP id q195mr9159395ioe.170.1484605275679; Mon, 16 Jan 2017 14:21:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.172.7 with HTTP; Mon, 16 Jan 2017 14:21:14 -0800 (PST) In-Reply-To: <83d1fn9dio.fsf@gnu.org> References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> From: Constantin Kulikov Date: Tue, 17 Jan 2017 01:21:14 +0300 Message-ID: Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. To: Eli Zaretskii Cc: emacs-devel Content-Type: multipart/alternative; boundary=001a11414d7016bc0405463d9a65 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 22:21:26 -0000 --001a11414d7016bc0405463d9a65 Content-Type: text/plain; charset=UTF-8 Ok, here is my attempt to code this: https://github.com/Bad-ptr/emacs/commit/cf6b0d9f08dbdc5dd685dbc6a5ef9ff18575e2b2 This seem to work for my example from the start of discussion(not tested it much for now). > you didn't describe the use case where this issue got in your way, so perhaps you should. If you set a 'heay' buffer-predicate like here https://github.com/Bad-ptr/persp-mode.el/blob/master/persp-mode.el#L2793 (This package provide a way to switch between 'projects', each project has a list of buffers, it is essential to set a buffer-predicate that will constrain buffer switching to the current 'project' so it needs to check if a buffer is a member of the current project list. There may be many buffers from many projects) And if you are the user of a package that overuse the with-temp-buffer(like helm or if you run down the list of candidates of the company-mode) you can notice a slowdown. https://github.com/Bad-ptr/persp-mode.el/issues/35 And I just think that this behavior of the kill-buffer is wrong and could be fixed quite easily and without introducing new functions or breaking user experience. Maybe I'm wrong. And I'm not saying that this is a critical bug or somehow urgent, just wanted to discuss the idea. --001a11414d7016bc0405463d9a65 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Ok, here is my attempt to code this:
https://github.com/Bad-ptr/emacs/commit/cf6b0d9f08dbdc5dd685dbc6a5ef= 9ff18575e2b2
This seem to work for my example from the start of= discussion(not tested it much for now).

> you didn't describe the use case where thi= s issue got in your
way, so perhaps you should.=C2=A0

If you set a 'heay= 9; buffer-predicate like here
(This package= provide a way to switch between 'projects',
each project= has a list of buffers, it is essential to set a buffer-predicate that
will constrain buffer switching to the current 'project' so i= t needs to check if a
buffer is a member of the current project l= ist. There may be many buffers from
many projects)
And = if you are the user of a package that overuse the with-temp-buffer(like hel= m
or if you run down the list of candidates of the company-mode) = you can notice a
slowdown.

And I just think that this beha= vior of the kill-buffer is wrong and could be fixed
quite easily = and without introducing new functions or breaking user experience.
Maybe I'm wrong.
And I'm not saying that this is a crit= ical bug or somehow urgent, just wanted to
discuss the idea.

--001a11414d7016bc0405463d9a65-- From MAILER-DAEMON Mon Jan 16 18:01:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTGH5-0006VY-A9 for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 18:01:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47535) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTGH3-0006UG-Hg for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:01:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTGGz-0000x8-Na for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:01:13 -0500 Received: from [195.159.176.226] (port=40013 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTGGz-0000wC-Gf for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:01:09 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cTGGh-0006N0-9U for emacs-devel@gnu.org; Tue, 17 Jan 2017 00:00:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: "reference to free variable" only during initialization Date: Tue, 17 Jan 2017 00:00:22 +0100 Lines: 31 Message-ID: <87ziiq4nll.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:gsS6GzFE/KOI9qk3L18EcRSa404= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 23:01:14 -0000 I have an oddball warning that I have an hard time debugging. I upgraded to emacs 25.1.1 on a debian desktop recently, and started to get: Warning (bytecomp): reference to free variable ‘isearchp-reg-beg’ during startup. The warning is generated by requiring modeline-posn.el[1], which is using ``isearchp-reg-beg`` (actually defvar-ed early on) inside a defadvice form. Is this expected? Warning aside, the intriguing part is that the warning /only/ occurs when (require 'modeline-posn) is evaluated in my ~/.emacs, but is not emitted instead when doing the "allegedly" equivalent: emacs -q -l ~/.emacs even when ~/.emacs itself only contains: (add-to-list 'load-path "path-to-modeline.el") (require 'modeline-posn) or when simply doing an eval in a fresh emacs -q session The remaining difference is that emacs -q is skipping debian's system startup. But I cannot think of something that could influence the generation of a bytecomp warning. Any pointer before going further? [1] https://www.emacswiki.org/emacs/modeline-posn.el From MAILER-DAEMON Mon Jan 16 18:47:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTGzU-000886-1X for mharc-emacs-devel@gnu.org; Mon, 16 Jan 2017 18:47:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTGzS-000880-0L for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:47:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTGzR-0005FP-0x for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:47:06 -0500 Received: from mail-ot0-x22b.google.com ([2607:f8b0:4003:c0f::22b]:32895) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTGzQ-0005FI-Rq for emacs-devel@gnu.org; Mon, 16 Jan 2017 18:47:04 -0500 Received: by mail-ot0-x22b.google.com with SMTP id 73so52604386otj.0 for ; Mon, 16 Jan 2017 15:47:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=RvJUm+h0U6scZgjPjxoNQdv0Gv+5DUOy5rqDzW+V7Sc=; b=RAsDTazumROyim+qEvGos/24aeIwwnEkR8hzvmwpzu91PG79bhjXmbZFRd8TFcLQ+k nnN7huNO9rq4VhqlgmYwTNrOSnLFliOKouKnuOTu0wjY7BZXt4nUbogOOrG93iJmARjl XEPggMEmpfNMg217RK2QgdcdWnlgrAx1u8fVxL01pBWjJSaL54HM5o89WacktjwBm4ME 58h7Dd1pGUbzBzZcLAZCM3z2cSwY4U7hfqJ/FDPy3YiVc+AQmFIFT25/EVWHaQnqVMeg krDE9U2KszZgcGXNCoZjcJfNEj5pfqN/ar+FrasmW28w1SGiTiK+zQBav6gQXjVWsvQz Q9qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=RvJUm+h0U6scZgjPjxoNQdv0Gv+5DUOy5rqDzW+V7Sc=; b=ogYfZjdfD6w3r0eKtxooCABrCvGchs73morkuY0SsSEPvHyVoMhFjgwawLvpNHLZyB 8/ucO/H4btxjA36kYZCT8txsiLuLn8c53v3SZXOQHgCB3GidZR0Ml5coJ588CGxLen7F Vls4uibbktwd59GrhE4P4VDfxNqJHTZhp+NgS6/XNR8/03+up+b0PEC+ikc4GGyXob+4 JtpADjiGGpUYawWItJQkwCJWmmn2fv2ZCYiNfG/H9mnHEaGWPKCxctGRkIUp5SCAjzHE wcJ5fjePzC1J97qBK3xc5aK6wuHLUGePay6Z2nXjJFDLwLI4s8OAuP8tIqDxRh2Mvez+ cHmQ== X-Gm-Message-State: AIkVDXIbvbjb6DmmAhtNRup8Ns8/KrQfCfBs+9bn4xCVepoPUG6TUuBDG6ea2iZuGllGIkZbtz/vk8VZqfG3Bg== X-Received: by 10.157.27.154 with SMTP id z26mr12780084otd.181.1484610422321; Mon, 16 Jan 2017 15:47:02 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Mon, 16 Jan 2017 15:47:01 -0800 (PST) In-Reply-To: <87ziiq4nll.fsf@wavexx.thregr.org> References: <87ziiq4nll.fsf@wavexx.thregr.org> From: Noam Postavsky Date: Mon, 16 Jan 2017 18:47:01 -0500 X-Google-Sender-Auth: 1SWEC_L8Pow_27xquXBca3nhKKI Message-ID: Subject: Re: "reference to free variable" only during initialization To: "Yuri D'Elia" Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2017 23:47:07 -0000 On Mon, Jan 16, 2017 at 6:00 PM, Yuri D'Elia wrote: > I have an oddball warning that I have an hard time debugging. I upgraded > to emacs 25.1.1 on a debian desktop recently, and started to get: > > Warning (bytecomp): reference to free variable =E2=80=98isearchp-reg-beg= =E2=80=99 > > during startup. The warning is generated by requiring > modeline-posn.el[1], which is using ``isearchp-reg-beg`` (actually > defvar-ed early on) inside a defadvice form. > > Is this expected? There is some unexpected interaction of defadvice with delayed warnings. I had noticed this a while back, but never got around to fixing it. `ad-compile-function' binds `warning-suppress-types', but if warnings are delayed, then the warning call happens after that binding is finished. > > Warning aside, the intriguing part is that the warning /only/ occurs > when (require 'modeline-posn) is evaluated in my ~/.emacs, but is not > emitted instead when doing the "allegedly" equivalent: > > emacs -q -l ~/.emacs In this case, the warnings are not delayed. If you set after-init-time to nil, then warnings will be delayed, so the same problem should occur, I think: emacs -q --eval '(setq after-init-time nil)' -l ~/.emacs I think Bug #24106 might be a similar case (and I'm pretty sure there's another older one where I initially noticed this, but I can't find it right now). From MAILER-DAEMON Tue Jan 17 00:22:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTMDe-0007I4-J3 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 00:22:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35546) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTMDb-0007Hr-VS for emacs-devel@gnu.org; Tue, 17 Jan 2017 00:22:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTMDb-0005eo-2u for emacs-devel@gnu.org; Tue, 17 Jan 2017 00:22:03 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:34389) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTMDV-0005dJ-C2; Tue, 17 Jan 2017 00:21:57 -0500 Received: by mail-wm0-x242.google.com with SMTP id c85so3204790wmi.1; Mon, 16 Jan 2017 21:21:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ALScsezR5WydCQowXnTgNJrxuDcCnnFZfT2gBP2l9ZU=; b=ESi0dIkdNoFZua6OcbeIiJ3qLV8aM48Osi7yOA7YeljI8maIuWsG0Nr4wpVk4ZtWQ0 pbEBw9LE5v/tXyHC7WLrsoLBaQPLmWbU9TwjOqVLKXgqYtVHmAhepGot6i3kjBY/m1+1 y6HBwANokEKz+td5/zdyxUfRWeDVapz+/AiA/yS23TaybFyHTMHpsLIaUwlGcBek+aFU S009xQVjfjZbe8cvsylU7Qgz3IILlyiUqWAn5FP5tVSVADyuiow6w15T9FJIq2Zr4jl4 n7GnCS1a3hwgXUOzNwDGUM17ETG0Je1ntzLkMJSF5rYiA3CKef/Dr8IniR1qlrf5eEsl 6q9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ALScsezR5WydCQowXnTgNJrxuDcCnnFZfT2gBP2l9ZU=; b=p0cxiSGuq5SD9df+ZgJD/IVHAenE+9i2GjrMOeC7YTbMHP9WG92hr1FztyY0JzfYdS Eltb6xh+UZ2V2EtThL3XHrlq6Yi6k7i8baVaU8a5B7CKnGZfZ7c63B9Fvhwvn3/LLQsn saW+xShji4txtI3h8n0qKpF2FTQllbUc/klo7HN6hKaBwgDhp8aBM+JvhcyM+auMIV/M bBCaHo4yXK1nSXQ9VwvVDpvq+D9vi4nmkyjhCv5dn1DUeAu+a+diASEqyCq4XWS11vXK PVIzeIZ72EXDx20YUyXl3TVseSph3ff+vaPMAWxVi+UNdNZLKlvezsrBwgxZ4yh/TJx2 +HAQ== X-Gm-Message-State: AIkVDXJJZC9GrpqnMoP6JrMmSmnJALkV1yCDb3GusncLMtSnJE2dIywsMh7n5wID0qKQzQ== X-Received: by 10.223.139.152 with SMTP id o24mr7502499wra.122.1484630516243; Mon, 16 Jan 2017 21:21:56 -0800 (PST) Received: from [10.177.123.253] ([105.5.129.86]) by smtp.gmail.com with ESMTPSA id 81sm34081857wmw.7.2017.01.16.21.21.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Jan 2017 21:21:55 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (1.0) Subject: Re: CEDET Merge From: Edward Steere X-Mailer: iPhone Mail (14C92) In-Reply-To: <874m0ywvxa.fsf@engster.org> Date: Tue, 17 Jan 2017 07:21:52 +0200 Cc: Eli Zaretskii , emacs-devel@gnu.org Content-Transfer-Encoding: quoted-printable Message-Id: <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> To: David Engster X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 05:22:05 -0000 Sent from my iPhone > On 16 Jan 2017, at 11:13 PM, David Engster wrote: >=20 > Edward John Steere writes: >>> No, please do not merge Cogre. It is not a new module, was never part of= >>> Emacs and is not really actively developed anymore. >>>=20 >>> -David >>=20 >> Sure. >>=20 >> The plan is to start by getting the whole of Cedet compiling and >> starting up in core and then taking a more deliberate approach to what >> stays and goes. I'm taking this approach because the alternatives >> require a bit more historic knowledge of Cedet than I have. >>=20 >> Are you aware of a better approach? >=20 > The problem with this approach is that you loose lots of history for the > changes that are applied. In Emacs this is especially problematic > because of the copyright issues. So one will need at least a proper > ChangeLog, saying which authors changed which functions, but the Emacs > maintainers will have to say if that would suffice of if we need > authorship information for each line that is applied. >=20 > So the "Right Way" would be to apply the upstream commits that happened > since the last CEDET merge to the Emacs repo. I had a package for doing > that, but it was based on Bazaar, so that went they way of the > Dodo. It's called cedet-emacs-merge.el and is in the CEDET repo. I don't > think it makes sense to port it to git, because we actually agreed some > time ago to drop the CEDET repo altogether, so we would "only" need one > final one-way merge. It's been on my TODO list for ages, and I'm really > sorry that it still has not happened yet. >=20 > In my opinion, the first thing that should be done is to port the test > suite to Emacs, meaning the unit and integration tests for Semantic and > EDE, ripping out all tests for stuff that is not in Emacs. I already did > that for EIEIO, but for Semantic and EDE a lot is missing. It will make > it much easier to find regressions while doing the merge. >=20 > -David Alright. It shouldn't be too difficult to merge with the commit history int= act and I agree wrt the tests so I'll make a start of porting those tonight.= Wrt the files which are in upstream but not in core do you have any experien= ce with what ought to be merged? There are newly supported project types an= d databases which look like they should probably be merged, but there are st= ill more sources. If not all of it is appropriate for the merge then perhap= s we could look at moving future development to one or many ELPA packages. (Apologies for the formatting, I'm writing this on my phone)= From MAILER-DAEMON Tue Jan 17 05:22:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTQuG-00015A-PP for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 05:22:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38419) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTQuE-000151-T0 for emacs-devel@gnu.org; Tue, 17 Jan 2017 05:22:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTQuA-0006rd-11 for emacs-devel@gnu.org; Tue, 17 Jan 2017 05:22:22 -0500 Received: from petton.fr ([89.234.186.68]:33746) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTQu9-0006r1-MB for emacs-devel@gnu.org; Tue, 17 Jan 2017 05:22:17 -0500 From: Nicolas Petton To: Emacs Devel Subject: Better screenshot of Emacs on the homepage Date: Tue, 17 Jan 2017 11:22:12 +0100 Message-ID: <874m0ynfzf.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484648534; bh=T1tx6rYYKDuzmW3iTHjiPz6r+OW/CR4dPRssMkluc04=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=HNYZGOPwb4bpqdCu5KhgX1OFR/wru9UDHI4ui1E0NwsLuNMe2FMvb5JvXy4KaWLdv7yrj4L0tjzVhB1vy6ALGqTQkKTMoJeulAb4qrU7gf1JMER2LGD4IBinW+YnRIoegHWZMkZ7VfWd1cWcs0el2f+TkEPaoDmmsSrWwro8MvQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 89.234.186.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 10:22:23 -0000 --=-=-= Content-Type: text/plain Hi guys, I uploaded a better screenshot of Emacs on the homepage that should look better on mobile, and be sharper. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYffBUAAoJECM1h6R8IHkQ1scH/0yFiGLxNDgHd6OUk6SMradI UR9SSFoHKJoIE1n1qcPFsdcU1uf+B4vgRGqRcgfC+oSOGGBuedqS2HNdw1YfuhXQ 2ALoLUg20Q4z2p0catWm8B+BhZrvNQLzbmVgjRj9oTJ79CEneezwimio3Ubz6ViZ 8Bt2a6TTvcMfEGJsTBmisWIdjcjue4YePfvjpjG1wU90JDXbZA4l0VclWSs4Okvi I3+EDEeRG+6LXZRkK8bXnnHSTlKK1uZ/Rt2VL4M79NiyxZTqNECpj70pZrz2gs45 U1ama4mOL+32Rh/ePqWrNVgp09+sqOfbscqlHin8+zpdenX1DMoU3qFNgG2pPCI= =shHZ -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Tue Jan 17 06:24:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTRs5-00063t-8f for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 06:24:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTRs2-00061f-Hn for emacs-devel@gnu.org; Tue, 17 Jan 2017 06:24:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTRrx-0004Iq-L2 for emacs-devel@gnu.org; Tue, 17 Jan 2017 06:24:10 -0500 Received: from relay3-d.mail.gandi.net ([2001:4b98:c:538::195]:60505) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTRrx-0004IL-Ey for emacs-devel@gnu.org; Tue, 17 Jan 2017 06:24:05 -0500 Received: from mfilter31-d.gandi.net (mfilter31-d.gandi.net [217.70.178.162]) by relay3-d.mail.gandi.net (Postfix) with ESMTP id 8E06AA80C4; Tue, 17 Jan 2017 12:24:03 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mfilter31-d.gandi.net Received: from relay3-d.mail.gandi.net ([IPv6:::ffff:217.70.183.195]) by mfilter31-d.gandi.net (mfilter31-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id iHAIWHM1278s; Tue, 17 Jan 2017 12:24:02 +0100 (CET) X-Originating-IP: 31.221.87.81 Received: from [10.208.132.41] (unknown [31.221.87.81]) (Authenticated sender: toon@iotcl.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPA id 07C58A80D7; Tue, 17 Jan 2017 12:24:00 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (1.0) Subject: Re: Better screenshot of Emacs on the homepage From: Toon Claes X-Mailer: iPhone Mail (14D15) In-Reply-To: <874m0ynfzf.fsf@petton.fr> Date: Tue, 17 Jan 2017 11:24:00 +0000 Cc: Emacs Devel Content-Transfer-Encoding: 7bit Message-Id: <2CCF6090-201E-4628-89E8-5B168D2CEF4D@iotcl.com> References: <874m0ynfzf.fsf@petton.fr> To: Nicolas Petton X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4b98:c:538::195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 11:24:11 -0000 Thx Nico, That really looks a lot better! Can you also make the logo @2x, so it looks better on _retina_ screens? -- Toon From MAILER-DAEMON Tue Jan 17 07:47:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTTAR-0007m9-R8 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 07:47:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39073) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTTAP-0007iq-J7 for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:47:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTTAO-00068k-OA for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:47:13 -0500 Received: from petton.fr ([2a00:5884:8368::1]:46905) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTTAO-000685-EB for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:47:12 -0500 From: Nicolas Petton To: Toon Claes Cc: Emacs Devel Subject: Re: Better screenshot of Emacs on the homepage In-Reply-To: <2CCF6090-201E-4628-89E8-5B168D2CEF4D@iotcl.com> References: <874m0ynfzf.fsf@petton.fr> <2CCF6090-201E-4628-89E8-5B168D2CEF4D@iotcl.com> Date: Tue, 17 Jan 2017 13:47:08 +0100 Message-ID: <87y3y9n99v.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484657229; bh=Z1E11PE4TjsIEEqEEBlTlGIRSjTGZZz/Bi+szTKMPB8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:MIME-Version:Content-Type; b=mPy/P/+x8VB3a7lnQiVoA2KiAOLQpnunvXKFBOsGhLcbEgqqXrFYKmJUnS9ghdId+YxVsWygowYVl6/WZbxM4NeAwaKx6445Wkr1IataCWTVBWLsq+SPx/jqZwQD1TpQ8svDb05S4SmkfiDywWQYJaY2le3URs8M8vcN33BFaK4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:5884:8368::1 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 12:47:14 -0000 --=-=-= Content-Type: text/plain Toon Claes writes: > Can you also make the logo @2x, so it looks better on _retina_ > screens? Yes, I will. I don't have a hidpi display, so if you see other places where images look blurry, please tell me. Cheers, Nico --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYfhJMAAoJECM1h6R8IHkQrKMH/RPGNwRFlw+6eMwbKWxQTh3j G7KA1fNcBgpbhNjtz7kWjKaZPbu/+/Scl0AaxQqx/0k96QQa0rXOA2dcQbaCFkSx QpsolyG+24WBx0S7rs+YuVkoxnD8W95segJ4rcdJYRwgU9XdQPOla3ReIEKPJZ1P KDsGKM4Ip9/HHg+W3xP5zSLHeznYHyPvy0wtnRop1DAXyre8ewLmfwETD7ZDfRK3 ebxTcLUa+z/PZsCKn09rDEavG4LY8mqZkrDwaPiSK9lqa54uguLtyxoGAOKsRu14 1rG1zeKj27B6tHOHRl8leE4pkDopodeWmRczJOYACjjtDNaSkg0Ghw4qKOTj/fY= =+Mq3 -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Tue Jan 17 07:49:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTTCj-0000D2-N6 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 07:49:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39659) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTTCh-0000Cr-6q for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:49:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTTCe-0007Ny-3P for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:49:35 -0500 Received: from petton.fr ([89.234.186.68]:35668) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTTCd-0007N0-9c for emacs-devel@gnu.org; Tue, 17 Jan 2017 07:49:32 -0500 From: Nicolas Petton To: Emacs Devel Subject: [Emacs homepage] Updated EmacsRocks screencasts Date: Tue, 17 Jan 2017 13:49:27 +0100 Message-ID: <87vatdn960.fsf@petton.fr> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=petton.fr; s=mail; t=1484657369; bh=tPQBxDZuVfdFzE/hWKpB+AmZ8OpQgjRJM+uNtrv0dUY=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=KC5jeN21u+/92FrS/fxQwE7MY8dbHlkMD2QsVq5+yb58+6tW3MLbu0dFoHZ98eiVZnTWl/kPqC/27xJaWDMI02NKVLPEWWBnZ8a3h8uiR4DQLERKUtWm2u/9sEAy5KBaxS9l9cSYFOC4vSeDylTIR7l2HxEzzeG/LIkdOyUw22I= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 89.234.186.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 12:49:36 -0000 --=-=-= Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" --==-=-= Content-Type: text/plain Hi again, I just pushed an update with several improvements regarding the EmacsRocks screencasts: - I added the episode 15 - I cropped all videos so that the macOS window decoration is not visible - I updated the screenshot previews with the default GNOME window decoration (see the attached screenshot). Cheers, Nico --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYfhLXAAoJECM1h6R8IHkQrwsH/0WG8BmwWKfzV5ohnyy1AqTJ FxK2XoAQ+3kdo8wh8wcEQ6+kRWzoYhmVqv8jXiXjaMwS2L/JzTPvu5+H+6HyoKr/ iFze9BNM1zpoS6b2vlP7MF1anvxpQ9Y4XtWBWeAVGgivF66Flav9gw9gymSSkrND BxSXRq4FC/3VnzJQQWbw+of7QWXxurooqvSIewmYn5rGg0PdveKDEwbiiObqnC+h a5opfNcYZc1MzbBC3ocNVovbBNSpOHe1tpN8tGxz3u+1vLXr+Qcp0Z+Odda3AiKX rMd5AKBS8xWs7b4Dyv/zwV39WNGAneUDhEHFZNN95+tOhKi4+FhLUVRMmgldVMo= =r4/v -----END PGP SIGNATURE----- --==-=-=-- --=-=-= Content-Type: image/png Content-Disposition: attachment; filename="Screenshot from 2017-01-17 13-47-15.png" Content-Transfer-Encoding: base64 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 asi/mDv75z1uu3HjRiZOnIiiKJx77rk8+eSTfPXVVwD06dOHb775huHDh7N69eqD0ta8vDw+/PBD +vfvz4MPPsiaNWsoLS1l5syZAEycOJFPPvmEZ599loyMjOAQXoCwsDAGDhzIhAkTKCsr49RTT6Wx sRGA/Px83nzzTWbPns1VV13Fm2++yQsvvAAECpKXX345gwYN4vHHH6esrIzS0tJ9am9ISAjXXnst o0aNIjY2lnvvvZeKigr8fj933HEH06dP595778Xj8XDOOeeQm5sLQFZWFo8//jjl5eVceOGFvPj8 /zj/lLH894l3KC2uwGqx07PDcDol9JPkToj9pGEnPe4kTux3KiaziSaXm69m/cjfTvznXmOeODwK 8kq56cqHeOGxtygtrsBiMZHZZQCdoodgM4XtfQdCiKBd5XkS844sf455kucJIfaHFPKEOI457ZEM 7nYe7eMysFrsNNS7uO/fzzHmkvv47OOv+WzW53z00QwWLFiAz+cDAr3kLrvsMh588EEeeOABPB5P sMgVHh5Or169SExMRNf1g9JGr9fLVVddxW233Yamabz88st07dqVkpISXC4Xr732GhdffDF2u52h Q4dSV1fHsmXLABgwYADXX389GRkZXH311dTW1rJhw4bgvuPj43n77be57bbbsFgsbNmyJXhMm82G xWKhY8eOfPLJJwwcOHCf2ltXV8fs2bO59tprue2228jNzcXr9eJ2u3n11Vd57LHHGD16NDNmzGDr 1q0sWrQIAAOD4cOHM/7Oidj98QzoeC7lRXWYzVbioztxUvcLiAlPPCjnVIjjk4HV15YRvS8jObED ZquVhjoX9/37Wf51xYMs+2UNHrd0+TqcDMNgS1YBzzz4OucN/Re//7oGu8NGbGQ7hve/mFh7ems3 UYij2o55niOY50nMax1/jnnLl6zFZnVInieE2G8ytFYIQYd2PYkNT6KgfAOFlVms/SOb335ZSVnN VtqlhHLpVecx5KQTg69X1cA9gOZhqH8eLnuwinjNPB4PHo8HCAxP1XUdVVXx+XzU1NSwaNGiYM+2 yy+/nE6dOgFw11138eOPP9KvXz/q6urQNA3D2D4taMt2K4oS/Pn000/nrbfeYubMmZxxxhl069aN //znP3Tp0mWvbTUMY4dhK8379Hg8GIZBWFhY8OfY2Fjq6moB0N0m6sp1xoy+j8K8EswWE20jU0mI 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 dnkedrtVt997mS69fo4a6tx67vHX+uX6VB5s178/eUhPPDpE37o9VrV1fn22pn8XK2nxBHT/QwdV Vu6T/3DvQofDpKceT9aI4TZNmezQ+g2dgzNJMplMuu+78RqSaNEf/qdOBUVHe7NFRpr07Tvj1NLq 1wM/rVL5gWCwmZcboccfSdTd34zTfQ8e7La2198JDgE+Y6pDTodFL/2tQQ2NXaeKEREmRbvM+s4P K9TcHDyPxx9J0oTxdk2ZGKE16z2ntK6oKLO+d1e8zOaAHnuiWlu2BwM2l8usXzw6RLNmOHTe2U4t Xd7c7bFOJDXFqpEjrPqv/67VZ2taZDo8X19Hj7zTfwpEAAC+0k7DqXQBABg8IhzB4XRv/DUYkF1z 29xu28+ZN0nRsZFa8s7ajhBPkrZtKNLmtQUaNSZVwzOGSpI8La0q3VOpYSOTZI8IHid9ZLKckRFa /PYaSVLm2KMh3+icYWpr9aqkqKJP5zRn/iTFxEXp86XbOkI8SWpqaNarf/5IknTR1bN6tM97Hr5e Dz11R8j/TGZTp3Y+n1+//rf/U1trMG0oLz2khjq3TCaTnn3sbx2ho7uxRaV7DspkMikpJT5kHyXF lR0hniR5Wtq0+tOtkqRhI5I7tp85b4LiEqL1xWe7OkK8I/s+9ucIh12SVFV5dKXPgD+gpQu/UHVV 53n/Ihw2Pf77b+vS6+do+8Zi3Xfrr1W6p7JTu97au8+rnz9drda2gH50T4LGj7P3276PKClr7wjx JMnjCWj12mBgOCz1+H9Hvvpyl6ZPcWj5qhZ98FFoQDxnZqSio81asrS5IyyTgj3GNm9t06gRNg1P t315l73m80tPPVvTEeJJ0s7dwfBsaPLRczhVdc2Z5VRMtFmfr/V0hHiS1NTk16uvB4d8X3R+ZJ+P ExNt1kefNOvjZc1q8QQ6zr/de/if9MgDAGBA0SMPAIABZD68POWa5dtVXlKlnAkjNX7KaG3fWNxl +wnTMiWpo7fXsUr3VmryzGyNGJ3SEfzs3r5PIzJTNGpMqvK3l3QMq/3is12qrW5U5th0SZLNZtXw UcnK31Ha5/nrjtS4bUNRp8+ObBszdrgsVkvYi3tMmZXTaZvZZJJPoaGCt61dVRV1IduOhHr7jwk+ j91us3f965DJZJIzMkJWm0XewyvmOiMjOj6fMH2MpOCKut1Zt3KH5l92hh5++g699uePtG7lDnla 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 JIfhUCAgTZ85W5dfVKzaunrljhsvQ6Y62to1bc5sFYzLU/7YfAU6WtTWO+ArmgAAIABJREFU3qmQ GZLbkyCHGdTePXuUmTdeo7OSVFPXqIL8CRqV5lNldY0KJ01Wwbgx8nhc8ni9crscqqysVFlFhbxJ 6Zp31pnatXuXOoOS02loztyztX3jagWNFHUFAxpTUKguf0CTJp4hnzOo6upamaalxKREOQwpEAx2 f2ocCipkWnK5XAoGAt0zAiwpGArJ4XQoGAx0zw6QoUAgIKez+/0YDJlyOhwKBQM9n36GQpZcTqeC gWDP/i5dgYAch5cLmYcfEwgG5XA4JdNUIGj2PLel7scEAgEZh/cDMs3uZT2BYFAOp1OSqWAgJJfL pVAwKNMy5DAcCgZDcjidMkNBhSxLTqdTga6A5HBKhtXz+J49agwpGAzq/2/vzqPkLO870X+rqqtb 3VrQgliE0MaOQGIRyBjwsJgAcS54Adu5Ic6Ng7f43GPPnck4tseT2HM8mRknd5ybZRjP9ZY41xjb wQZsE2wwi8GAWIQWJIEkhATa15bUrd6q5o+SWmrUoJbgSrzm8zlHR6ffepff+75VT5e+et7nqVQq qfXuvQY9u69BqbT7GpQrjUeMdv8PcHd3d8qlypFuFn6jafO0edo8bd5biTZPm6fN0+bB4WKMPDhM /vBLM9LUVE25lHR1d6fa3JxykpdWLk97Z18mnTgx1WpT6rW+RjfzSjm1vlqqzc2plErZ1dU14LGL UrmSno4dmb9gfvqaWrJx1QvZ1lXJ9df9djq2rsuaTdsydtSILH7u+Rx3/KS0VpPVa9dl4pST0lYt p1KtprtrV7Zua8+kyVOy7uUV2bStJ+ede3YWzZ+TUtvRmXHmKent7hlkRI/XVi4lGzduzLC24Wlv 35bRR43Ks88uykmnz0hLbXsWPr8q55x7bqrlxi/j5xctzJLlq3P29JPz8urVGXvMpJw++ej8z699 Pe+96Y+yZumC9FRHZNIJx2X58mU5dsKkbF69LCvW7sy111yRUv0gBgQuJU3lSh5/+IFs6Sxn5tkn ZcXKVRl/9LFpbW5Jyk1JX1eWLl+WscdNzpTjR+fJp5/JlKknp2v7tnTVk1NPOz2jRg5PX/euPPXU k2nv6M6FF87OqmXPpq/5qIxuKWftpk3p6erMqlXrcva552bqpAmp1+pJpZJ6V1faO3syvKWWOU/O y/EnTsu0yROSJN07t+eOO36St11+bdrq7Zm3ZHlOmHxSWurd2bJje8aNGZNFCxdl4rQzMuOsU1Iu 1bNrV1eaW1qSei3dPb1paWlJb093knKaKuXG+C7N1f4vftVqJbt2Nb4gl9LoRdDc3Jzenp6UypWU y0nPPvup1ZPm5uZ0d3Wl0lRNqVRPb29fqtVqerq7U25qSqVUSldXd1qGDUutrze9tVpamqvp7u5O pVJNUktvXy0tzc3p6upqDLZdKWdXV6P2eq1v91g7jW2q1WpSb3xxbGlpTk93d+qlcpqbKo3PT7Wa Wq0vtXpSbWpKV1dXmptbktTS3d2blmH7XIOmcnq6e9PUXE2ttyf1lNPaOizr163L97/ywkG+uxkq bZ42T5unzXsr0eZp87R52jw4HC6+qUmQB4fLtrH3pV6vp6urKzt27Ogf76GpqTGAbk9Pz0HtrzE4 byUtLc0pl0tZ8/JLGT5qXEa0Nae3Vu+fJataraZeq6Wnry9NlabUao1ZzvYdS6Kvr6//C2fnrl1p bR2evr7udHV1751x7KBqS5qqTSmlMe5Fb2/jy0LXrl1JuZKWalM6d+3aPZZGOU3lUtasWZPho0Zn zFFHpVSqp3NnR7Zsbs/YY8alefe+avXGF8Jab09eXLkqY8cfk2HNTYPP2vZaSqWUU8vLL6/OsRNO zMjhw9Ld3bN7POrG2CNNlUrqtb509/aluVpNT09PyuVKSqWku7u7fyyP1tbWlFJP567OtLS0pl7r TV89aa5Ws317e/rqpYwcPjw93V2p77lvlUqayqX09tUaX8xqtXR1N770bFq3Nu0d3Zk0eWKq1Wqa m6rp6+tJb62ealNTtm7ZlPYdnTnmmPFJrZZa/VXHyGYQ9Xo9I0aMSEtLYxDusduuOtIl/cbS5mnz tHlHnjbv8NHmafO0eUeeNo+3AkEeHEZ3L/lySqVStm/fnvb29iNdDrxljRo1KiN2D0p99amfO9Ll /MbS5sGbgzbv8NDmwZuDNo/fdGathcOotbU1pVIpfX19vuDBEdTW1pa2trZBZwjkjaPNgzcHbd7h oc2DNwdtHm8FJruAw8wvFTiyfAYPL9cbjiyfwcPL9YYjy2eQtwJBHgAAAAAUgCAPgLeUQxnYG6Co tHnAW4k2j7cCk10AAAAAwJvcxTc16ZEHAAAAAEUgyAMAAACAAhDkAQAAAEABCPIAAAAAoAAEeQAA AABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAKQJAHAAAAAAUgyAMAAACAAhDkAQAAAEABCPIAAAAA oAAEeQAAAABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAKQJAHAAAAAAUgyAMAAACAAhDkAQAAAEAB CPIAAAAAoAAEeQAAAABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAKQJAHAAAAAAUgyAMAAACAAhDk AQAAAEABCPIAAAAAoAAEeQAAAABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAKQJAHAAAAAAUgyAMA AACAAhDkAQAAAEABCPIAAAAAoAAEeQAAAABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAKQJAHAAAA AAUgyAMAAACAAhDkAQAAAEABCPIAAAAAoAAEeQAAAABQAII8AAAAACgAQR4AAAAAFIAgDwAAAAAK QJAHAAAAAAUgyAMAAACAAhDkAQAAAEABCPIAAAAAoAAEeQAAAABQAII8AIBBHDW2LVfdMCMjjhp2 pEvhLaSpKalW60e6DADgTUqQBwC/YU6aflw+89fX57SZE450KYX2O79/ft73kdm5+v0zD9sxb/7c lfnDf3f5YTseby7nnlvLLbd058wzj3QlAMCbVdORLgAAiuiaD5yTd3/4gvz5R76ftSu39i//1F/8 ds4474T81b+9K8/PX9O//N0fviDvfN+MfOr6b6avtzakY7S0VnPqjOOz7qVtWf/ytiHXdtTY1kw9 /Zi0tFaHfkLs55lHVmTC5NGZ9+jKw3bMMUe3ZcRRrYfteIfDKafU86d/2jPoa1/5SlMWL/b/yntU KkmpdKSrAADezAR5AHAIVi3blCSZMHnMgCBv8ilHJ0mmnDZ+QJB3wpSxWbNiy5BDvCSZMGVMPvml q/Odrz50UEEeb4wFc1ZlwZxVR7qM3xhPPFHOokUDU6qVK4V4AAAHQ5AHAIdg1dKNSZIJU8bmqYde SJKMP35U2ka2ZO3KrZly2vgB60+cNi6Lnn75sNdZBKVS0txSTdeuwXtt8Zth6dJy7r//Nye4K5WS 5uakq+tIVwIAvJUI8gDgELRv7cy2TR05YcqY/mWTTxufrs6ePHbf0lxy7en9y1uHN2fM+OH94d/k U8fnyveclZPOPDajxrZl+9bOPPHAstz5D0+mp7svSfLFr78/x048Kkly06cvzU2fvjR33zo3P/rm nCTJ6KOH530fmZ0zzjshzS1NeWHx+tzxrSey7Nl1/cctV0p530dm56LfOjX1Wj2P/uL5/PP/+3jq 9VcfSP+8S6fmo//+nfnyH/9zrn7/zJw9e1J2dfTkp999Oo/+/Pnc8NHZmXXZSenu6s1P/+npPHDX swO2Hz2uLe/5o9k54/wTMqy1mpdf2Jy7/vGpLHxi1X7H+PyHvpvr/uCCnHvJlNxz2zO56ztPJWkE ojd+/KKcMuO41Gv1LH56db7/P36dLRt2HvC+DGXbPcf/L5/6ca66YUamz5qYvr5annrohXz/lkf7 A8U96/39n92TeY++mKQxAcZ7b56d6RdMzLDWatas3JoHf7Iov/rp4v7rOpRrkCTHnDAqH/jE23Py 2cdlx7au3HPbM6/rvIZS22AO5p596WM/yJXvOTvnXjwlfX21Ib2nhmLWrFo+8YnefPGL1Vx7TV9m nlPLrs5S7ryrnEceqeQD7+/NhbPr6eqq5647m/LLfQLBKVPqueqqvpx8Ui1HjS6lvT2ZM6eUH/2o kp6egT0Ax4xJbnx/b6afWUtzc7J8eTm3/3MlS5eVMnp0csMNvTn77FqGDUtWry7l/gcqefCBcur1 vTV+5jPVvPvdfTn//Fru/lklP76jsnvf9bzvfX2ZflY9w1rqeemlUn7846YsWDD0Ggbzu7/bmyuu qOUv/6qaJYsPXOdgDnTModT+eu4RAPDGqZw79V1/fqSLAIAiOu2cCTnuxDG5/46FSZKLrjo1pXIp j/9yWa549/Tcf+ez6e7qzdTTxuftV5+Wu2+dm83rd+T4E0fnzFkTM+/RlZn36ItpbmnKxVeflqSe Jc80Hsdd//K2rFm5Naefe0Ie/Mmi/Mttz2ThE6uyc3tXWoc353N/+55MPmV8Hr57SZ598uVMnDY2 zcOqefbJl3L85DE5/x3TMvnU8ak0lXPfjxakVC7n0t8+PZvX7+h/LHgwe7ad8bbJmfvIi7n9G4/n +Emjc+V7zs4Z552Qtau25rZbfp2jxrTlmg+ek7kPr8j2rZ1JkrYRLfns374nk04elwfvejYL57yU qacfk8vffVZWLNmQDavbBxzjmAlH5ejjR+aRe57LvEdXZtvmjrSNbMln/593p3V4S+75/jN5YfH6 nH/ptJz/jml58CeLXjWoSDLkbfcc/5yLp+Sph17Ij7/9RLo6e3Lle8/OyNHD+sfE27PenPuXZd1L 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 XL7z1Qdz961zM+tfnZSbP3dlHr57STp2dOW8S6dlydzVufXvHj4i1yFJ/uV783LBZSfl5s9dkV/+ aEE6d/bk7VeflmpLU37wtceGtI895/b7/9c7MvmUo7N5w45MO+PYnD17Uv78I9/PprWv3lvuYLe9 4WNvy7ETj8qmddsz61+dlDHjh+e2//7r9PUO/jjpWRecmE/+x2sy9+EXsmzhupTKpbzjXWekVqv3 Tzwy1Gvw4J3P5p3vPTs3ffrS3Pq3D6e3r5brPjQrw0e1pH1z50Gf11BqG8wbcc+G6uSTa+npGRhC LV9ezsqVh57ubNiYrFtXykVvq+fll/qys6OUK6/sS6WyJ4yqZe7c3TO1/qSSCy+o52Mf681DD1XS 0ZGcf34tixeXM29eKZ/6VG+eeqqUpc+XUyonl11WS602cJKIV/PTnzZl9uzufPzjvbn3F+V0dJRy ySW1VJuT731v79ft16rhn/5p/95037u1KdOn9+QP/qA3S5dWM3Vq/TXrHD68no98tDelUrJyZTmL FpUOeMyh1n6oho9syYf/9IqUSo1xRRc//fLr3icAvJUJ8gDgdVi1bFNKpcY4Zi8+t3HAayue25AJ U8bk+fl7Z4Ct1+v5+z+/Jx/85MV5780XZldHT371s8W5/45nc/Pnrsjxk8f0B3ndXb351lceyI0f e1v+tw+dnxcWb8jIMa3ZsmFnvvKv78h7b74wb/+tU1Mql/L8/DV57N7nD+u5v1L7lo585V/fmfd9 ZHYuv/6slMulvPjchnznqw9l2cK1Q9rH3nObnYuuPjVNTZWsWrYx3/rK/a8Z4h3Ktnf9w5OZfuGJ ufRdZ2THtl350Tfn5L4fLXjV/T/75Ev5/v/4dS666tScdeGkdHf1ZuXzG/KP/+3BvLB4/UFdg/at nfmbz/8sH/jjt+dT/+Vd2bJ+R35269y0b+nMlN2zHR/MeQ2ltsG8EfdsqGbNqmXWrIHLfviDZOXK 135s9bXU68nf/G1Tfu/3+nLjjX3ZtauUBx8s5957K/n4x3tz/IR65s5trLt5cyl/8RdNufHG3lxy SaPH2nPPlfLrX5ezYkUpt36vkovfXsuMGbV0dycvvph861tNWb78wEFje3vyF/+pOTe+vzdXXllP uVzLihdK+fa3m7J06d7tX6uGwXTuSr7xjab8m3/Tkw99qDe33FJ9zTrL5WTp0lLGjElWrx7aMYda +6Hq3NmdZQvXZsz4EVnz4pbXvT8AeKsrffjyv3sTja4DAPD/r/MunZqP/vt35u//7J7Me/TFI10O AAAMycU3NRkjDwAAAACKQJAHAAAAAAUgyAMA3lLat3TmsXufz/rV2450KQAAcFBMdgEAvKUsXbA2 Sxe8sRM5AADA4aBHHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACg AAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI 8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQB AAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAA AIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAA BSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApA kAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAP AAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAA AAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAA KABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAA gjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5 AAAAAFAApa0bltePdBEAAAAAwKv74R0/1yMPAAAAAIpAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI 8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQB AAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAA AIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgC/TPaWAAAAwElEQVQAAAAUgCAP AAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAAKABBHgAA AAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAAgjwAAAAA KABBHgAAAAAUgCAPAAAAAApAkAcAAAAABSDIAwAAAIACEOQBAAAAQAEI8gAAAACgAAR5AAAAAFAA gjwAAAAAKID/Bfu9srEtK/+vAAAAAElFTkSuQmCC --=-=-=-- From MAILER-DAEMON Tue Jan 17 09:21:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTUdQ-0003Rr-1U for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 09:21:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTUdN-0003PB-Fn for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:21:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTUdM-0001tI-Fo for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:21:13 -0500 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]:35637) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTUdM-0001rv-88 for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:21:12 -0500 Received: by mail-lf0-x244.google.com with SMTP id v186so16506879lfa.2 for ; Tue, 17 Jan 2017 06:21:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=CrEt7UJHO7/ifaSDmwuHl/RLquddJ5FTotbZikSDHgc=; b=iA2uQOb2jrQL8cCXw+oaIqB4tz9OYwdFA/6G4kBkP4OkTWBS9S8aN3HalWLmeHWhb6 Iy+lDjczX4aoOtlvVm7Z0d/Fl8Tk64/Q+xOKAHASZTW+cp+dtyna/8WgzY2iq9Pe2VDQ clOaJzJNoj0pDdizRvXeZVeerLtuf7IRPVrhfNb17cbe97n+4zH20WkjtLLJdq/LEqZl 5bp0nQVUYqUE0svMOXVcmj+XHFzUuiLe4prIcL73ow1kG8J3vGfXtUMam+F0jqgyVmZ0 pYHuKJvxmgvHgGq3Gi0weaJdAY+IZESU3TNsInCQBc7soYCgjUUDPxvmVouHDhF1kOvC /d4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=CrEt7UJHO7/ifaSDmwuHl/RLquddJ5FTotbZikSDHgc=; b=tEXZXWK2FOGmQuUu5ausnTybTkyPtz8JbhQlExzQ5PzqzO7xZ+Znch847Kovpg8bBH nJZQljr2PUuj3qfse8eVBfNo5QM2fLfxN9bR/wF0USvLGZt2UNNtkIevXvt2dybsnp34 ukBPR1JqD1rMuLym5SpxwCaD8HhBoMTcePXggBR+1s/Kbds3qZjwWeqfuynVFcFsC9+f D4mpJUU32GFIX4y3OHM+ZOPuGb5s/1AN1sPCyf407TD4JB0/ujcUSw7JKj4BOzeXyoTZ dJMnTROADI7ZxF/JqZFPn6VRnZ+Vknai65U1w9jrm4Cf2/dGw/EQptimSSF2cTQO/1YI szeA== X-Gm-Message-State: AIkVDXLsIyAMkinbF1L96BJMVubmw9wfA7ntlQ/0zIs8nm+YROp7PPQAsoRhlzaI9HSY6QlMUeagANz5MCaeDA== X-Received: by 10.25.77.204 with SMTP id a195mr11452945lfb.181.1484662869000; Tue, 17 Jan 2017 06:21:09 -0800 (PST) MIME-Version: 1.0 Sender: yurivkhan@gmail.com Received: by 10.25.8.212 with HTTP; Tue, 17 Jan 2017 06:20:48 -0800 (PST) In-Reply-To: <87y3y9n99v.fsf@petton.fr> References: <874m0ynfzf.fsf@petton.fr> <2CCF6090-201E-4628-89E8-5B168D2CEF4D@iotcl.com> <87y3y9n99v.fsf@petton.fr> From: Yuri Khan Date: Tue, 17 Jan 2017 21:20:48 +0700 X-Google-Sender-Auth: nwa_FyUtaOU-455sXJXTLWgDlqM Message-ID: Subject: Re: Better screenshot of Emacs on the homepage To: Nicolas Petton Cc: Toon Claes , Emacs Devel Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 14:21:14 -0000 On Tue, Jan 17, 2017 at 7:47 PM, Nicolas Petton wrote: > I don't have a hidpi display, so if you see other places > where images look blurry, please tell me. I do. (For reference, it=E2=80=99s a 24-inch Dell, 3840=C3=972180 device pi= xels, with X configured for 192 dppi.) Here=E2=80=99s a summary of what I see now= on https://www.gnu.org/software/emacs/: + The GNU logo at the top (gnu.transparent.png) is crisp, being 100=C3=9798 physical pixels and displayed in a 34-pixel height. * The Emacs logo (emacs.png) is 128=C3=97128 displayed in a 100px height. The edges of the stylized E are a bit blurry. A 200=C3=97200 rasterization or an SVG image would be better. =E2=88=92 The screenshot (teaser.png) is 962=C3=97659, displayed at natural= size if space permits, or downscaled to the available width. Definitely blurry even in a half-screen browser window (960 CSS pixels, 1920 device pixels). =E2=88=92 Mini-screenshots in the features section. With natural size 200= =C3=97199 and display size 27% of a 960px container (=E2=89=88260px), these will be blurry even on a normal pixel density screen. At 960px and narrower, they downscale proportionally. At a viewport width of 841 CSS pixels, they are displayed in a 204px width each (still >100% zoom on a normal screen). At 840px and below, responsiveness kicks in and each mini-screenshot is displayed at natural size. =E2=88=92 Then there are video previews. These are blurry but that may be deliberate, depending on the frame size of the actual videos. =E2=88=92 Lastly, the Free Software Foundation logo (fsf.png), 343=C3=9740, displayed at natural size. This would also benefit from being rasterized at 200% or included as an SVG. From MAILER-DAEMON Tue Jan 17 09:27:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTUjK-0006Mb-OY for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 09:27:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTUjH-0006M9-KV for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:27:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTUjC-0003qG-GB for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:27:19 -0500 Received: from [195.159.176.226] (port=51793 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTUjC-0003pn-96 for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:27:14 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cTUiw-0000pr-RZ for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:26:58 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. Date: Tue, 17 Jan 2017 09:26:37 -0500 Lines: 52 Message-ID: References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:lWVvILbbWKuLw/X/hBm+m3IRy8Q= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 14:27:20 -0000 > Ok, here is my attempt to code this: > https://github.com/Bad-ptr/emacs/commit/cf6b0d9f08dbdc5dd685dbc6a5ef9ff18575e2b2 > This seem to work for my example from the start of discussion(not tested it > much for now). Here's an alternative, which reuses the existing `other_buffer_safely`, and which only modifies the behavior in the case that the buffer is not displayed in any window. I included in it an optimization: don't call replace_buffer_in_windows if the buffer is not displayed. Stefan diff --git a/src/buffer.c b/src/buffer.c index d62c79df09..418ab3698e 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1642,6 +1642,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) struct buffer *b; Lisp_Object tem; struct Lisp_Marker *m; + bool visible; if (NILP (buffer_or_name)) buffer = Fcurrent_buffer (); @@ -1725,11 +1726,14 @@ cleaning up all windows currently displaying the buffer to be killed. */) return Qt; } + visible = buffer_window_count (XBUFFER (buffer)); + /* Run replace_buffer_in_windows before making another buffer current since set-window-buffer-start-and-point will refuse to make another buffer current if the selected window does not show the current buffer (bug#10114). */ - replace_buffer_in_windows (buffer); + if (visible) + replace_buffer_in_windows (buffer); /* Exit if replacing the buffer in windows has killed our buffer. */ if (!BUFFER_LIVE_P (b)) @@ -1739,7 +1743,8 @@ cleaning up all windows currently displaying the buffer to be killed. */) buffer. */ if (b == current_buffer) { - tem = Fother_buffer (buffer, Qnil, Qnil); + tem = visible ? Fother_buffer (buffer, Qnil, Qnil) + : other_buffer_safely (buffer); Fset_buffer (tem); if (b == current_buffer) return Qnil; From MAILER-DAEMON Tue Jan 17 09:40:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTUwT-0000tT-SA for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 09:40:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTUwR-0000tG-AV for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:40:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTUwQ-0000kn-Km for emacs-devel@gnu.org; Tue, 17 Jan 2017 09:40:55 -0500 Received: from mail-it0-x22a.google.com ([2607:f8b0:4001:c0b::22a]:34196) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTUwP-0000kF-7O; Tue, 17 Jan 2017 09:40:53 -0500 Received: by mail-it0-x22a.google.com with SMTP id k200so13015796itb.1; Tue, 17 Jan 2017 06:40:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=vv1bl+Zf6VX3h88mmecSIiCgCoByT3AYY2c++WPHIfY=; b=X8Qh3M+pRfL2V3FZf8UZ3WE2IHfgQaJd4LhF5D3wpDaaAVkCslFz/cCY8GgxemkyVB U3ilIVfI9vLSpUZ1q0PiuoWFw/hJqiYQCgLSeCmxWa3jOYFPmK3UP3uAgRkgSqfp+4J+ VKqQVpvzCbSitVZ+uM3G1+TUdMDVGXWUAaHUODw+m/KdndGBeMVSPQNJQrZ0+PCwOSbQ fftMKcEBYh95bDSvyApFjIohCH4/aqeQbZkEBco/oB12/UAf+KPv/GknFecYqZE3HLrK 3GdlWB9jDAPrVZJMJggHSJLb0haLSryoY1unZ7/6JRg3wFeR6+tzGVEsoE6GZ/SRLIeC 0QvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vv1bl+Zf6VX3h88mmecSIiCgCoByT3AYY2c++WPHIfY=; b=uTy9cM1tYIHiJ2t0HQXIxPhxhgrNvF4yb+Bd1eCGXIWzRjWkNpprL3K1IplNfMcmk6 DlgetYpaIo9KZ6V6MYTUvgvOcHrVAQHa/u2pCA+ltD1g1x6BQn1yVtyikj41V6k6Gkx/ TXTOSSlIzYInUCBj3eTEScMAENG8rq/rQiijx4Kutd6dgLSQk4GmihCdkEl+4bEpD+Gx Scokn/XE1LKsDurwaLyG6MFjX67xc1eVWgYpa+EVxiPXLYWmVWRc3d2b4TnDyGRhR7B1 e8sKh8K8lBb1h/c6dFMlBqYNbTKDBbwYk7XBdOcuhDltyUEQ6RoVnUcg+HWc+sRnBe4w Tt8w== X-Gm-Message-State: AIkVDXKhanBAZ0TiMXmc8tq4oqVB/kx6lbThfGnYGfTBP81wDHhtC4QaZYlmSnOusNYt81auUAar5wE4+CpqFQ== X-Received: by 10.36.170.79 with SMTP id y15mr21461453iti.46.1484664052046; Tue, 17 Jan 2017 06:40:52 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.172.7 with HTTP; Tue, 17 Jan 2017 06:40:51 -0800 (PST) In-Reply-To: References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> From: Constantin Kulikov Date: Tue, 17 Jan 2017 17:40:51 +0300 Message-ID: Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. To: Eli Zaretskii Cc: emacs-devel Content-Type: multipart/alternative; boundary=f403045fbcfa6eddff05464b498a X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c0b::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 14:40:56 -0000 --f403045fbcfa6eddff05464b498a Content-Type: text/plain; charset=UTF-8 New version ) https://github.com/Bad-ptr/emacs/commit/cbde2fcc3e9e1aef86148f9953aff24556b0a156 --f403045fbcfa6eddff05464b498a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
--f403045fbcfa6eddff05464b498a-- From MAILER-DAEMON Tue Jan 17 10:59:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTWAL-0005Fz-4e for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 10:59:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44529) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWAI-0005Fr-Qd for emacs-devel@gnu.org; Tue, 17 Jan 2017 10:59:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTWAE-0000be-8Q for emacs-devel@gnu.org; Tue, 17 Jan 2017 10:59:18 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39152) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWAE-0000bS-5V; Tue, 17 Jan 2017 10:59:14 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4674 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTWAD-0003MI-Et; Tue, 17 Jan 2017 10:59:13 -0500 Date: Tue, 17 Jan 2017 17:58:58 +0200 Message-Id: <83y3y98ypp.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus CC: emacs-devel@gnu.org In-reply-to: <87eg024qvh.fsf@gmx.de> (message from Michael Albinus on Mon, 16 Jan 2017 22:49:38 +0100) Subject: Re: Patch for Emacs 25.2 Reply-to: Eli Zaretskii References: <87o9z7s5iq.fsf@gmx.de> <83eg039e93.fsf@gnu.org> <87eg024qvh.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 15:59:19 -0000 > From: Michael Albinus > Cc: emacs-devel@gnu.org > Date: Mon, 16 Jan 2017 22:49:38 +0100 > > In `make-auto-save-file-name', there is twice a test for ang-ftp file names: > > --8<---------------cut here---------------start------------->8--- > (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result))) > --8<---------------cut here---------------end--------------->8--- > > The regexp matches ange-ftp file names like "/user@host:". It does not > match general Tramp syntax, like "/method:user@host:" or "/host:". As > result, on MS Windows there is an error like > > --8<---------------cut here---------------start------------->8--- > (let ((buffer-file-name "/method:user@host:/path/to/file") > tramp-auto-save-directory auto-save-file-name-transforms) > (make-auto-save-file-name)) > > => "\\method!user@host!\\path\\to\\#file#" > --8<---------------cut here---------------end--------------->8--- > > The patch replaces this regexp by > > --8<---------------cut here---------------start------------->8--- > (not (file-remote-p result))) > --8<---------------cut here---------------end--------------->8--- > > Then it works as expected: > > --8<---------------cut here---------------start------------->8--- > (let ((buffer-file-name "/method:user@host:/path/to/file") > tramp-auto-save-directory auto-save-file-name-transforms) > (make-auto-save-file-name)) > > => "/method:user@host:/path/to/#file#" > --8<---------------cut here---------------end--------------->8--- > > The patch is harmless enough that I propose it for Emacs 25.2. I see your point, but as the current code exists for quite some time (more than 11 years), I think we can live with it for one more Emacs release. So let's leave this out for Emacs 25.2. Thanks. From MAILER-DAEMON Tue Jan 17 11:00:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTWBI-0005pt-PV for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 11:00:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44975) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWBD-0005nm-7N for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:00:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTWBC-0001Ps-Bo for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:00:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39187) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWBC-0001Ph-8d; Tue, 17 Jan 2017 11:00:14 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4675 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTWBA-0004tb-Qg; Tue, 17 Jan 2017 11:00:13 -0500 Date: Tue, 17 Jan 2017 17:59:57 +0200 Message-Id: <83wpdt8yo2.fsf@gnu.org> From: Eli Zaretskii To: Edward John Steere CC: emacs-devel@gnu.org In-reply-to: <8760lelq68.fsf@gmail.com> (message from Edward John Steere on Mon, 16 Jan 2017 22:12:47 +0200) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 16:00:19 -0000 > From: Edward John Steere > Cc: emacs-devel@gnu.org > Date: Mon, 16 Jan 2017 22:12:47 +0200 > > > Search for that variable in all of the lisp directory and its > > subdirectories. What hits do you see? Are any of them in cedet > > directories? > > Nope only hits when I grep recursively from lisp/ are in: > - jka-cmpr-hook > - subr > - jka-compr I understand that you've changed your merge strategy, so please tell if/when this becomes relevant again. Thanks for working on this. From MAILER-DAEMON Tue Jan 17 11:11:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTWM0-00011H-Ax for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 11:11:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48846) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWLx-00010u-Ia for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:11:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTWLt-0006H9-KF for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:11:21 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:35237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTWLt-0006GK-Dz; Tue, 17 Jan 2017 11:11:17 -0500 Received: by mail-wm0-x243.google.com with SMTP id d140so23156884wmd.2; Tue, 17 Jan 2017 08:11:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version; bh=Zq1lhsipoQwlsDsgPnct5i7K424wUT+Hj2pH88+oyCA=; b=uAJibu7za7vrCFT1EZnOBkdZcN1bEjoXWtgxY6MGcVYFw2AeHd62C774471Ys1hO6a A8aL4mxZ1P3QQSG3VP9kj0W1p/bm5iTlK9jGjWkre2CrSi1cabGAV2LxxJpwaCDzua8j Rd6/HCI7+Kb9iDcW9UeGYVKMGjfvTMe+79DMXOxFOY4Z3TiQspOTM1oG625HYcQsw/Wk 57m+TomF7MMCEsHJqdHCcXhBRmYy8upO1rRdFftLLio9GOMu5HKNRR5VPZ7pPV692bWL y/tqD0wgKcVNVC6nSEXjYWXokseNQxwJbYykv5It6XRyqbCc3mTUd8LpWYiO6g+OfXZP 0PBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version; bh=Zq1lhsipoQwlsDsgPnct5i7K424wUT+Hj2pH88+oyCA=; b=bs0MoYcSeVGQ0uuYvoOB5gA43I0ePfeqneQ+yUwJewnXV7rAf6aYxArdlcjV3+t6EJ QlthFyi7oEjVOnXZntTyGl0vZEBr8jQzKzorbJ6mC8gJCtPqmxfy0fLoYtuB7WNJpokF oxQz+f4vzb44FacrzRn5py+4uCfLkX0Rgu2MrIE+7Ctxk/TdbZQuP7e+ylWweazjWdJ0 Ekmlrk7AQ13n/0VmYmyk4g6W7/8T8uRQ4cdX6I0Z8W+StSJ96haUGCwV+wkWAtyzcfU/ 1KiERjM29+c1bpQucW1tmkh/hmlUNHs44zjSKE2lxyXCo8D/+Af9k1L6EtnR8rW3kjht Pjbg== X-Gm-Message-State: AIkVDXKKbIFntQNL1MTnThTeJ8ew+agp5uy0uurdnkLyyFkL4gPaMHYU1Oz1CrjRqWixyg== X-Received: by 10.28.225.215 with SMTP id y206mr16036301wmg.138.1484669476332; Tue, 17 Jan 2017 08:11:16 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id y145sm37968926wmc.17.2017.01.17.08.11.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jan 2017 08:11:15 -0800 (PST) From: Edward John Steere To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <83wpdt8yo2.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 17 Jan 2017 17:59:57 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Date: Tue, 17 Jan 2017 18:10:53 +0200 Message-ID: <87inpd650y.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 16:11:22 -0000 > I understand that you've changed your merge strategy, so please tell > if/when this becomes relevant again. > > Thanks for working on this. Correct. Thanks for your input anyway. Hopefully it wont take too long before I have something to show for my efforts. From MAILER-DAEMON Tue Jan 17 11:16:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTWQl-00022H-Qh for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 11:16:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWQj-00021z-Ow for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:16:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTWQj-0000LU-1N for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:16:17 -0500 Received: from mout.gmx.net ([212.227.17.22]:60884) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTWQe-0000IP-7l; Tue, 17 Jan 2017 11:16:12 -0500 Received: from detlef.gmx.de ([62.227.210.127]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MTfZc-1c35ao3P4S-00QWL1; Tue, 17 Jan 2017 17:16:06 +0100 From: Michael Albinus To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Patch for Emacs 25.2 References: <87o9z7s5iq.fsf@gmx.de> <83eg039e93.fsf@gnu.org> <87eg024qvh.fsf@gmx.de> <83y3y98ypp.fsf@gnu.org> Date: Tue, 17 Jan 2017 17:16:05 +0100 In-Reply-To: <83y3y98ypp.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 17 Jan 2017 17:58:58 +0200") Message-ID: <874m0x4q7u.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:KjOc5o0FjPlrvy4V2BL1mfShJSUISqHKCPX6q2IRthWPtVT3lp6 B4DcM8GBDkHTNRCbHzs254OaBVajeqHoXmBVlvp3nv6CJ1Rvca9iSS3T4UTpPUSTiqs4PAK B855V7GkuU2xUqTgJyagwCADP7x0wZQyXex6iPn0wEKvaOgqIPlou+9l/AseW600ZApTUxP SUG1jRvwMEVzagddKll8w== X-UI-Out-Filterresults: notjunk:1;V01:K0:86SotZ6PtdY=:W4Hv29qVFojgUQLeHlk5Zx dOgX5E1KRy9zhqw6c3S6/SBtXZTTyfTSGIdT/Zz0Wvs8CFSiihMH9cF+oXpggx34jvYk/QR4B ZCp9zNpVug4jvCdqW5eBBzTHeK3NfELhldiCBVfObpW1utT02CxsiUYMXi1zrYUEqdXX20k7H VLAPufjkBXgOQlJ5zJV3rfvnunCY2gwwBGZc8sCJY9naXwctb4rSftvzzSvAvK9Tup0Jst/Gd GixuXhirFIf0xcl3OC1ogYvgpUDiZUqz5LFhsOkjRCaUub9CdLpZf04efreG68/sqhcq46vwP LrABgQ+ZIWRG83AT2M/vojmRJWDOiw7y0kRTsq11afqjENq/ZY67e9VIcekLgOPXYeZei8fKM qaPzyH4QmTKXdJyZXzxn+6hwJYItEZO1krc1pBrxMJBwNj9rJMfRFiNEh8TDCxedEDxAxyguz sqeZHDA8I7WL1bnvvwIWWlFl/9UItLVSY6qCSylh7KeI+0z9xTBC6GjeGalFcQb4yQnCoDHWx uSsbf9SWqNnONcljrlpl5Jkd7mCQK2+V8QcsWFxIEcly5tV4DT+MkAWKuFf4dwf4K0uQHolWZ 7o486MfVN0glsrdaqvmtZgQmcNir7FpMMYmzn80pW5tQ9QlvTzSOu+mSP9TLxazEeO4K1Ei1m IUEADTkOSYdsTo3BpJCSGaVgN4mJmS82x1CDNgd7rPmMhRE9ZSWGVr56ITYFTN+I35MWg9uSD 0gZGt+hE/Z7UuZJn+lEZ0vM27oplaS0BdAaizOIIBsl/73Wv304lCQKp9W9oSwAa2vaL3KZli U+lNfv+CMKbSj6Q4k4PeebB6PDaWZmnJrjH4PSDz7nInStXHwmwT5CSwb/8D4Hmht4euFrLIa I++l2E4R5tOojDlK2Ua3xJ0iismhbEkfKmAQh73EMAViFsxDG5Um6epdkfsdE1NYXDZJjVNdX +9lYQpKUeUFV/rk4499wtG68eBGKX1Ms/T5C2+OBjxhpNEyE/X4W78ZZnOkDcuPiVBM+f1AEn XOMhcHeolBoZWzFyCLCnJ9cqndIi7+mODxoVOU64cDIH8VexquA8HMvL+S6erFKZaw== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 16:16:18 -0000 Eli Zaretskii writes: > I see your point, but as the current code exists for quite some time > (more than 11 years), I think we can live with it for one more Emacs > release. > > So let's leave this out for Emacs 25.2. OK. I'll commit the tramp.el patch for emacs-25, and the tramp.el, files.el and tramp-tests.el patches for master. tramp.el differs seriously between emacs-25 and master; I doubt it could be merged w/o problems. > Thanks. Best regards, Michael. From MAILER-DAEMON Tue Jan 17 11:36:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTWkg-0007E1-VR for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 11:36:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55792) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTWke-0007DA-AY for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:36:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTWka-0002eJ-VM for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:36:52 -0500 Received: from smtp153.dfw.emailsrvr.com ([67.192.241.153]:38804) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTWka-0002cq-Pk for emacs-devel@gnu.org; Tue, 17 Jan 2017 11:36:48 -0500 Received: from smtp16.relay.dfw1a.emailsrvr.com (localhost [127.0.0.1]) by smtp16.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTP id 9C653A046D; Tue, 17 Jan 2017 11:36:40 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp16.relay.dfw1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id 0108DA01F1; Tue, 17 Jan 2017 11:36:39 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Tue, 17 Jan 2017 11:36:40 -0500 From: Stephen Leake To: Edward John Steere Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> Date: Tue, 17 Jan 2017 10:36:37 -0600 In-Reply-To: <87inpd650y.fsf@gmail.com> (Edward John Steere's message of "Tue, 17 Jan 2017 18:10:53 +0200") Message-ID: <8660ldabje.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.192.241.153 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 16:36:53 -0000 Edward John Steere writes: >> I understand that you've changed your merge strategy, so please tell >> if/when this becomes relevant again. >> >> Thanks for working on this. > > Correct. Thanks for your input anyway. Hopefully it wont take too long > before I have something to show for my efforts. I'd like to help with this. Perhaps doing some of the merge work, or by running tests; let me know. -- -- Stephe From MAILER-DAEMON Tue Jan 17 12:23:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTXU7-0001wQ-AZ for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 12:23:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37330) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTXU5-0001vg-3P for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:23:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTXU1-0002rJ-QS for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:23:49 -0500 Received: from [195.159.176.226] (port=54682 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTXU1-0002qq-JG for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:23:45 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cTXTb-0002tt-24 for emacs-devel@gnu.org; Tue, 17 Jan 2017 18:23:19 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Lele Gaifax Subject: Fix typo in flymake.el of current emacs-25 branch Date: Tue, 17 Jan 2017 18:22:50 +0100 Organization: Nautilus Entertainments Lines: 29 Message-ID: <87y3y9zjmd.fsf@metapensiero.it> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) Cancel-Lock: sha1:mQd4pU3KDP6HrRZivqCyvrg9+EQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 17:23:50 -0000 Hi, this is a micro fix to flymake.el::flymake-check-patch-master-file-buffer doc string. As English is not my native lang, I cannot tell whether the touched sentence should really start with an "If" or "When" instead of... "Whether" :-) $ git diff diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 11605bcf3a..1989a7b94d 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -361,7 +361,7 @@ flymake-check-patch-master-file-buffer For example, foo.cpp is a master file if it includes foo.h. -Whether a buffer for MATER-FILE-NAME exists, use it as a source +Whether a buffer for MASTER-FILE-NAME exists, use it as a source instead of reading master file from disk." (let* ((source-file-nondir (file-name-nondirectory source-file-name)) (source-file-extension (file-name-extension source-file-nondir)) thank you, ciao, lele. -- nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia. lele@metapensiero.it | -- Fortunato Depero, 1929. From MAILER-DAEMON Tue Jan 17 12:35:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTXfq-0006C7-L4 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 12:35:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40035) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTXfo-0006AW-BB for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:35:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTXfn-0006uq-Fv for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:35:56 -0500 Received: from mail-vk0-x232.google.com ([2607:f8b0:400c:c05::232]:35024) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTXfn-0006uW-Bd; Tue, 17 Jan 2017 12:35:55 -0500 Received: by mail-vk0-x232.google.com with SMTP id x75so97173497vke.2; Tue, 17 Jan 2017 09:35:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=P+2J6PY7nJTGVnd03tDHMzRg2ibhZCBSjYKibbDcWQE=; b=H6FRajCkREUBmAlwmEGdspuLdIy3IsUTc/wE6YiaqXSYSMaE8dhJD9BGNxs1fJTeN/ pOEMjCHq7CaA5efVZJt1xH81aHV2OKsSw3D/ITf7fQE72jbd+wfq7X8Harxhhak6hmRq feKTOvUHcnmFykaVYahoE4QdiDjdpdNQYejwP7Xoxkew3f3q899XPfBCxyIjp9n0Hop7 J328Im5aFQ3o4nf/MQNkLJhrCB2Sgw9cXEjYHz3V1Tr3PQqcJdceckvAVBs2H3ZxFzrH IbLq7n3Jx5WlQjQ7fbVtgpf8sk8b08O7Ux+dZ29W/e/JEmiDpsYtzW4P/xmYNAkqpnvz sB+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=P+2J6PY7nJTGVnd03tDHMzRg2ibhZCBSjYKibbDcWQE=; b=n1YEoao/si0Ed/IyVR5/6nJx90nFVU5fXvj9elwUECu7EsspNQxVhTjoc8/Pu1rcwu gC/l/3v6uj6AfySALs9c8dzbwgP8cSq3lLyzNAgcoWhVgi8oVCTCI7I5jR0/F7aRpi8X mub8tc0qHZ4Je7mYl+3L4gTwFUTbitqwoMjd0mkgv3favmLzxnWc43c8UN4A7v8R1WUQ zv3/bEFkr/3o7tRrQ2PhsZzZvHhMx+5t7RlQuuve1v8fBCajv2dWupXBtXKI8PBnTOwb AWAxhTPtxQlZt7CnJioRtqYQdLvMZbzoozMmOE73ujjuUA1WGAuN25FVxt8UnmKOWkus Wc8Q== X-Gm-Message-State: AIkVDXK9jLJL+re8TYjP4FQ7gAfBckeBVYGN5kW9CPGdKngFLebob4KioPfjt02+AYYSGc9XtYQBnxRMJNNgIw== X-Received: by 10.31.72.69 with SMTP id v66mr18797838vka.156.1484674554700; Tue, 17 Jan 2017 09:35:54 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.131.215 with HTTP; Tue, 17 Jan 2017 09:35:54 -0800 (PST) In-Reply-To: <87tw8znnhf.fsf@petton.fr> References: <87tw8znnhf.fsf@petton.fr> From: =?UTF-8?Q?Elias_M=C3=A5rtenson?= Date: Wed, 18 Jan 2017 01:35:54 +0800 Message-ID: Subject: Re: Download buttons on the Emacs homepage To: Nicolas Petton Cc: Emacs Devel , Richard Stallman Content-Type: multipart/alternative; boundary=001a114d9c6e70b23d05464dbb4b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 17:35:57 -0000 --001a114d9c6e70b23d05464dbb4b Content-Type: text/plain; charset=UTF-8 On 16 January 2017 at 21:27, Nicolas Petton wrote: > When clicking a download button, the user gets redirected to the > appropriate download section of download.html, which explains why > non-free systems are bad and why Emacs has support for them. > It's nice to have download buttons, but if I click on the Windows download button, the page scrolls to the download section which will hide the information about why those systems are bad. I had to manually scroll up to find it, and I doubt many people will do that. Regards, Elias --001a114d9c6e70b23d05464dbb4b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 16 January 2017 at 21:27, Nicolas Petton <nicolas@pett= on.fr> wrote:
When clicking a download button, t= he user gets redirected to the
appropriate download section of download.html, which explains why
non-free systems are bad and why Emacs has support for them.

It's nice to have download buttons, but if I clic= k on the Windows download button, the page scrolls to the download section = which will hide the information about why those systems are bad. I had to m= anually scroll up to find it, and I doubt many people will do that.

=
Regards,
Elias
--001a114d9c6e70b23d05464dbb4b-- From MAILER-DAEMON Tue Jan 17 12:48:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTXsR-0004Dp-TI for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 12:48:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46942) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTXsQ-0004Dh-BR for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:48:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTXsN-0005e1-9j for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:48:58 -0500 Received: from mail-lf0-x22f.google.com ([2a00:1450:4010:c07::22f]:35243) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTXsN-0005d8-24 for emacs-devel@gnu.org; Tue, 17 Jan 2017 12:48:55 -0500 Received: by mail-lf0-x22f.google.com with SMTP id n124so45691361lfd.2 for ; Tue, 17 Jan 2017 09:48:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:subject:to:cc:message-id:mime-version; bh=9477gQLJUYG3B3Eba3K89RWGeYbORmJuxZyyBcwoqI0=; b=PL4Abx6tBx1TK13awzrriNuygKqAgWECD0zTbCsM6fQwuPWPu6rvRQgq6LhTODoLPP ZGDSzdz7IV9qa+qmrO68oTT2R5Vl9iynyQ6m2ZRSy3aHRy/JJRWMjLeVEKEpGHeWcJGZ ZMcE8VIr7w6YKJbCFZhHwxIAim+H3nCNvX2hwKzz05fNSXoC0R13upOMJIM/rf78ZBWq T+bKMc0U4dmvHeCoSv7r0cORtYUmEP3+fGVAmXO8p+PVUaPUImMKYAABDjdAB/w8igEk lh5Sb7foiSYLDIWlZ7G8KUavtZw3CbXtu2sYOEdubKoYOhJrTIKjcxr1znuwyCOV3gKA mWxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:subject:to:cc:message-id:mime-version; bh=9477gQLJUYG3B3Eba3K89RWGeYbORmJuxZyyBcwoqI0=; b=IQbiOmj+U5tooIUrFi7S1vWWphhIQyOrGXcAJ7NkCP/T2bCxIcTaA9o0ZiLGq+l/XI HtBEtKqv2+JRWXWUooXLQ3cjqrQ3MkKQmoHXZZ9IskUb97FA8lzkfo6d61ZRmcW+Lb/B iSkGMwaUPY7Uq3H6UK3anSqrwqlti9VOkJ7T8M3EvtAdJBoZFBSgZAhYaI3nUL7ycTW9 c3acYF1Vph6CVR5RibBl8cpZBTVm+9M8Nq91G2DZACdkVuQPd+wy+vpbzZ0vkwwY54We /u83uxzEeWjof2yToDWRSoCs49mbNeLkw59EkRHIiEnE9DNOLOyMUPxHm3MCcOvebzz/ icpw== X-Gm-Message-State: AIkVDXItybBtymqacAR0N/8FBRXOyJnIbEbSJCd5vaHaQYmEyEBV5454C7P1/7Q7mQO9SA== X-Received: by 10.46.8.82 with SMTP id g18mr3930833ljd.55.1484675332123; Tue, 17 Jan 2017 09:48:52 -0800 (PST) Received: from [192.168.100.10] (cm-84.210.143.4.getinternet.no. [84.210.143.4]) by smtp.gmail.com with ESMTPSA id g201sm9498041lfe.21.2017.01.17.09.48.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jan 2017 09:48:51 -0800 (PST) Date: Tue, 17 Jan 2017 18:48:49 +0100 From: Simen =?iso-8859-1?q?Heggest=F8yl?= Subject: Referring users to external web pages To: emacs-devel Cc: Tom Tromey Message-Id: <1484675329.1861.1@smtp.gmail.com> X-Mailer: geary/0.11.2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 17:48:59 -0000 Hi. Tom Tromey and I want to add a function to css-mode.el for looking up CSS properties at the Mozilla Developer Network (MDN) wiki using Eww. Is there a policy for referring users to external web pages in Emacs, or can we go ahead? The content at MDN is licensed under CC-BY-SA, if that matters. -- Simen From MAILER-DAEMON Tue Jan 17 15:36:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTaUf-0005GZ-Sw for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 15:36:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTaUd-0005GK-EC for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:36:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTaUZ-0008I7-7i for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:36:35 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:35663) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTaUZ-0008Gg-1s; Tue, 17 Jan 2017 15:36:31 -0500 Received: by mail-wm0-x244.google.com with SMTP id d140so24881912wmd.2; Tue, 17 Jan 2017 12:36:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=ORkmA3UT6ce3Ti9L8GtiA/PAtKt1zVN06uyEyIdPqtw=; b=jvNitH4gfnh3hBFIS2YIBFX+tsGVrK/DppUXLfm+HpjbFl1ElM3F9U2DYhJ0GEsLZT EY6Vii0D3aCdTO5gA6tBfFHqAnj0ZjstQpyfbaOnOSV4Jqqm9Ya8vbdci94WduvpcY4l 8DmHCjaN/meTn6/tdAO7QQnfMPJJ18ptNsnK5cothPewTXPdLEOqCUNRYWHXfmWr+gJB xoKCXi3phO704NO1kGQoPkcQk6UiicO5PR53AqK0GhvG1HQ28nlEYJ1rlVV2jfakG6wn 2uUPveMcTCsdJDGyrZt0ZSmjHUoxLbPgxZJXOjz7lXkp0kZGaYa8m7SeD7FimEDJmy0/ kqDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=ORkmA3UT6ce3Ti9L8GtiA/PAtKt1zVN06uyEyIdPqtw=; b=ejlmISlkHJ4JWWrfgIKdg6hfTxt7xbUXiRwH9qVIgrDW87gKQ09V15TtOE+7jIn+MX yU90lO/pbSUA/twjMJbG3W6NUETELNQSioyRtKgT9TiX18WorEo5SGtJwd/OwnmrAej2 t29Cd4a8sGQ6DbnFuYDOQrde+s3FQIn36PrNb3HwBDxr625MJ/W59en81Fw8X/OLARkS i6KjBVBiIN6sTjmaM4PdfQe7emghhCv+NbZhwKYqKgPXyKFcx27NjdP/FX2XZy7D5rhy FY+Lwf5c5ewQmQevqg+TymuRnxsm0VZ8CAzsXMtBBmutj12Tx3UNLLTbzTX99pnTpsCp onkQ== X-Gm-Message-State: AIkVDXISZsBS934ydAfmExrQ7VCdgTePCRtXd0go4T26ysVtCDpqQMjrqXidyARPb/sDBw== X-Received: by 10.223.128.226 with SMTP id 89mr33426187wrl.130.1484685388435; Tue, 17 Jan 2017 12:36:28 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id y127sm39395527wmg.12.2017.01.17.12.36.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jan 2017 12:36:27 -0800 (PST) From: Edward John Steere To: Stephen Leake Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> Date: Tue, 17 Jan 2017 22:36:07 +0200 In-Reply-To: <8660ldabje.fsf@stephe-leake.org> (Stephen Leake's message of "Tue, 17 Jan 2017 10:36:37 -0600") Message-ID: <8737gh5sqw.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 20:36:36 -0000 > I'd like to help with this. Perhaps doing some of the merge work, or by > running tests; let me know. Hi Stephe, Great! I could use all the help I can get :-) Our main concern is to maintain the commit history and I think that my original approach of merging to CEDET and then back creates too much noise. So I'm now considering a new approach and would value your involvement if we can work out the details. I think that the best way to go about this is to move everything in the CEDET project into folders which mirror their destination in core. Changes will be required for: - The grammar files, which need to be in admin/grammars - The tests, which need to be in test/manual/cedet - The documentation files, which need to move to doc/misc (and should probably be flattened.) Once moved we commit, add CEDET as a remote of Emacs and merge CEDET/master allowing unrelated histories. We can delete any files which fall outside of: - admin/grammars - test/manual/cedet - lisp/cedet - doc/misc We should also delete any added Makefiles, EDE project files and bash scripts. This brings us to the topic of collaborating on this change. I'm not aware of any strategy for merging which allows for collaboration; so I've come up with the following hack (comments/adjustments welcome): 1. create a staging repository for CEDET and make the requisite folder structure changes in it 2. create a branch in the Emacs project and merge allowing unrelated histories 3. delete any files outside of our target folders and commit with unresolved conflicts 4. push up the branch and divvy out files/folders for fixing conflicts 5. commit and push as we go If this sounds like something you'd like to be involved in then I'll start with steps 1.->3. and follow up when I'm done. If anyone has a better idea then I'm listening. (I considered moving the tests, but they have history too and we'd have to start splitting commits to get them across w/o the rest of upstream CEDET. Additionally there's nothing preventing the tests from being run with CEDET in Emacs core. Just start it with --no-init add the test folder to the load path, load the relevant test file and run it.) Kind regards, Edward Steere From MAILER-DAEMON Tue Jan 17 16:07:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTay6-0002os-CR for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:07:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTay3-0002oa-MI for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:07:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTay1-0003SB-2J for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:06:59 -0500 Received: from randomsample.de ([5.45.97.173]:38148) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTay0-0003O6-OL; Tue, 17 Jan 2017 16:06:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=vE+itHBU7F8A77H2OOp2D+nU9AWV62jg+IRAHWCpj6E=; b=rL4+O63AbEDN2+l3yKXIXsHWK8c2oObnLSE7rPUKewY4LECSQ/9uBsyKOBcFxwRCWNs1Dm8a7wwItqNHEc01dund3HzGhl5Za0ldyfBZh2Zyv844aRAMhVC6KxYdFy57; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTaxt-0008Tn-1R; Tue, 17 Jan 2017 22:06:49 +0100 From: David Engster To: Edward Steere Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> (Edward Steere's message of "Tue, 17 Jan 2017 07:21:52 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 17 Jan 2017 22:06:41 +0100 Message-ID: <87vatdv1jy.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:07:00 -0000 Edward Steere writes: > Alright. It shouldn't be too difficult to merge with the commit > history intact and I agree wrt the tests so I'll make a start of > porting those tonight. That's great, thanks. You will need to remove quite some stuff from there that is not in Emacs, like everything Java related, the Fortran tests, ede/arduino, cogre... I did take a look, and the last proper merge was done on Nov 10, 2014. I think that was right before we switched to git. I also see now that I did the merges differently than I remembered: I had an 'emacs' branch in the CEDET repository which mimicked the file system layout from Emacs, and merged the new CEDET commits there. Then I made one final diff and committed that to Emacs. So in the end, the Emacs->CEDET merged were commit-based, but CEDET->Emacs merges were done as one commit, and I dimly remember that Stefan was OK with that as long as we provided proper ChangeLogs. So I think it would be OK to do it this way again. > Wrt the files which are in upstream but not in core do you have any > experience with what ought to be merged? Looking at the changes since Nov 10, 2014, there's the new ede/compdb package. Otherwise, most of the changes are for Semantic and EDE, and they are mostly by Eric and me, and it is not as much as I feared. > There are newly supported project types and databases which look like > they should probably be merged, but there are still more sources. If > not all of it is appropriate for the merge then perhaps we could look > at moving future development to one or many ELPA packages. For now, new files should be ignored if possible, let's merge the core files first. Then anybody can look at what else is still upstream and create ELPA packages for it. If you work on the test suite, I will try to merge the commits since Nov 2014. -David From MAILER-DAEMON Tue Jan 17 16:10:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTb1D-0003QJ-Q5 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:10:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60355) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTb1C-0003QD-Cu for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:10:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTb19-0005T5-P8 for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:10:14 -0500 Received: from randomsample.de ([5.45.97.173]:38160) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTb19-0005L5-Hp; Tue, 17 Jan 2017 16:10:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=JQM+koFaFySFIYnz7IX0w8e4iwiN4qEZa8V94KBVLTA=; b=oEEnTmwLsUPeafGc1sMqyrg81P9o7zuN334ASw0lYniTpbd2OOTD2g8ABMREIhJUPzqgE9WRKQpf+cxUees5CCgUbVg6K5ZWHyCFUrsM15U7xd365JMdDqD0NkBq2x3+; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTb12-0000Uc-0m; Tue, 17 Jan 2017 22:10:04 +0100 From: David Engster To: Stephen Leake Cc: Edward John Steere , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <8660ldabje.fsf@stephe-leake.org> (Stephen Leake's message of "Tue, 17 Jan 2017 10:36:37 -0600") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 17 Jan 2017 22:10:02 +0100 Message-ID: <87r341v1ed.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:10:15 -0000 Stephen Leake writes: > Edward John Steere writes: > >>> I understand that you've changed your merge strategy, so please tell >>> if/when this becomes relevant again. >>> >>> Thanks for working on this. >> >> Correct. Thanks for your input anyway. Hopefully it wont take too long >> before I have something to show for my efforts. > > I'd like to help with this. Perhaps doing some of the merge work, or by > running tests; let me know. Actually, there's one thing which really didn't get much attention during all those years: the texi files. I'm not sure how much those diverged between Emacs and CEDET upstream. It was always messy, since in the initial merge not all docs were imported from upstream. So if you'd like to take a look at the texi files, that'd be much appreciated. -David From MAILER-DAEMON Tue Jan 17 16:19:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbAR-0004gO-MO for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:19:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36933) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTbAP-0004gH-Cg for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:19:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTbAL-0002za-8r for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:19:45 -0500 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]:34145) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTbAL-0002yZ-2L; Tue, 17 Jan 2017 16:19:41 -0500 Received: by mail-lf0-x241.google.com with SMTP id q89so17852113lfi.1; Tue, 17 Jan 2017 13:19:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=wPqERStEdk1k3xYcdULvJwL3aMxAdycEXVJGf0VY9cs=; b=gpjXswuZVkVIZ9k+bmm3IRCabfNSrlsi0BLx5MFjDPELI4SFhV9xaedZ3ly7UEX5pv 65+k0QOmtLKNm7unUkwWMTKdAehf2R4FFTz62pPpOgwb7HVPqmQ8xdoFnmo2MezJTKz0 OJZJTDH7xjcMBO9tdfwuz/1z/6Zo5vrWpIxhOqjn+qYwgGGrJNo4xpuj9B3IlWTAF3Fl O2cdKrMcjEaYQ0zw68GUbjPwkMxjGzqkD5YSw+4q7y1266JBzc+Aa27R15CcvybDkbsc b6+6jM1dpO1JVvONIP2fDXIuRvTBsRsxbyHEEVUMH29Gj8QDndmr9QJiY+jLIlR2vagZ 1BnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=wPqERStEdk1k3xYcdULvJwL3aMxAdycEXVJGf0VY9cs=; b=SOKD/pUF3jCGd6ECm1nNfkLC7ebx4rJFjQSRQCU665krfn6eDTIWSX+j9P2RCHgPNb IvWrb5v6frQ6j0YmwYlVll/+1V3PPAE2+3mn0pYNz5Rz7iPPir+IUWq/q/SCxYybYD4h Q38825++WkYeRC8uioxxq165ZwsdwgZloQ56ht+6ywGSo8ANXaB/yN4E6fxP+Uf8D0PR 5Lf7WcWm0lDJTxlwM8bILB9EAZ++ZyMz3szZ10IqgRubyxNvbz09EUmOYrU+Y4loCd5u cycNbNwNMyl/zvpX0rvLl3bIatwg0UwPUu4t4EURy7x4wyHs84o871GMfjFj+clbQdNb TRuA== X-Gm-Message-State: AIkVDXJaIM88rCdmcYhr/ArKOuXJ5gzIN72lB/9Xgt3SDikIMr67cqY4B2+sHLDeRbrVfQ== X-Received: by 10.46.72.10 with SMTP id v10mr7067588lja.46.1484687978055; Tue, 17 Jan 2017 13:19:38 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id z1sm3319914lja.10.2017.01.17.13.19.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Jan 2017 13:19:37 -0800 (PST) Sender: DG Subject: Re: CEDET Merge To: David Engster , Edward Steere Cc: Eli Zaretskii , emacs-devel@gnu.org References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> From: Dmitry Gutov Message-ID: <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> Date: Wed, 18 Jan 2017 00:19:36 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87vatdv1jy.fsf@engster.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:19:46 -0000 On 18.01.2017 00:06, David Engster wrote: > That's great, thanks. You will need to remove quite some stuff from > there that is not in Emacs, like everything Java related, the Fortran > tests, ede/arduino, cogre... Is that a good idea? If CEDET development is going to proceed inside Emacs from now on, why would you remove Java support? Is it in a really bad shape? From MAILER-DAEMON Tue Jan 17 16:23:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbDa-0005Uc-5q for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:23:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38583) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTbDY-0005UF-1Y for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:23:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTbDS-0004x3-V3 for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:23:00 -0500 Received: from smtp137.ord.emailsrvr.com ([173.203.6.137]:33263) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTbDS-0004wY-Q1 for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:22:54 -0500 Received: from smtp14.relay.ord1a.emailsrvr.com (localhost [127.0.0.1]) by smtp14.relay.ord1a.emailsrvr.com (SMTP Server) with ESMTP id 112F4401E3; Tue, 17 Jan 2017 16:22:52 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp14.relay.ord1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id 6DA75401B3; Tue, 17 Jan 2017 16:22:51 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Tue, 17 Jan 2017 16:22:52 -0500 From: Stephen Leake To: Edward John Steere Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> Date: Tue, 17 Jan 2017 15:22:48 -0600 In-Reply-To: <8737gh5sqw.fsf@gmail.com> (Edward John Steere's message of "Tue, 17 Jan 2017 22:36:07 +0200") Message-ID: <86shoh8jpz.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 173.203.6.137 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:23:01 -0000 Edward John Steere writes: > This brings us to the topic of collaborating on this change. I'm not > aware of any strategy for merging which allows for collaboration; so > I've come up with the following hack (comments/adjustments welcome): > 1. create a staging repository for CEDET and make the requisite folder > structure changes in it I guess that's on SourceForge > 2. create a branch in the Emacs project and merge allowing unrelated > histories I'm not clear what you are merging here. It should not be the whole of CEDET; step 3 should be done first. > 3. delete any files outside of our target folders and commit with > unresolved conflicts That gives us a shared base to work on. > 4. push up the branch and divvy out files/folders for fixing conflicts Ok. > 5. commit and push as we go Ok. > If this sounds like something you'd like to be involved in then I'll > start with steps 1.->3. and follow up when I'm done. Makes sense. -- -- Stephe From MAILER-DAEMON Tue Jan 17 16:24:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbEf-00069j-Jl for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:24:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39242) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTbEd-00068V-QI for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:24:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTbEZ-0005ju-MA for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:24:07 -0500 Received: from randomsample.de ([5.45.97.173]:38427) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTbEZ-0005iQ-Cd; Tue, 17 Jan 2017 16:24:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=KyOcp6vs1buY4wdFWb0gTQxpYPQxmViI/4wselV6cdI=; b=NmuikybZrsFL6qJccCthp2CTWuEQgKrAqwBXqJLEDcnxhRRLaRihTNAodg24Sv5dFnEeBWmhD/mzLTuvwJ/1PRrw711Il8dekYe64pmb0LxWnjGMfjm5x6tiSypTrQEq; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTbEX-00035y-3Z; Tue, 17 Jan 2017 22:24:01 +0100 From: David Engster To: Edward John Steere Cc: Stephen Leake , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <8737gh5sqw.fsf@gmail.com> (Edward John Steere's message of "Tue, 17 Jan 2017 22:36:07 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 17 Jan 2017 22:23:59 +0100 Message-ID: <87k29tv0r4.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:24:08 -0000 Edward John Steere writes: > Our main concern is to maintain the commit history and I think that my > original approach of merging to CEDET and then back creates too much > noise. Merging to the CEDET repo is not needed, since we will abandon it anyway. > I think that the best way to go about this is to move everything in the > CEDET project into folders which mirror their destination in core. > Changes will be required for: > - The grammar files, which need to be in admin/grammars > - The tests, which need to be in test/manual/cedet > - The documentation files, which need to move to doc/misc (and > should probably be flattened.) > > Once moved we commit, add CEDET as a remote of Emacs and merge > CEDET/master allowing unrelated histories. I think it will be less work to simply do the diff|patch game and fixing a few paths along the way. Since the histories are unrelated, git cannot really help you with the merges anyway. > (I considered moving the tests, but they have history too and we'd have > to start splitting commits to get them across w/o the rest of upstream > CEDET. Additionally there's nothing preventing the tests from being run > with CEDET in Emacs core. Just start it with --no-init add the test > folder to the load path, load the relevant test file and run it.) I wouldn't worry too much about the history of the tests. The authorship of the changes should be clear, but at least I don't care much for granularity here. -David From MAILER-DAEMON Tue Jan 17 16:25:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbGP-0006vA-6W for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:25:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40381) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTbGM-0006uk-EN for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:25:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTbGJ-00079O-5k for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:25:54 -0500 Received: from smtp129.ord.emailsrvr.com ([173.203.6.129]:46931) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTbGJ-000791-0r for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:25:51 -0500 Received: from smtp29.relay.ord1a.emailsrvr.com (localhost [127.0.0.1]) by smtp29.relay.ord1a.emailsrvr.com (SMTP Server) with ESMTP id 213A6A01BB; Tue, 17 Jan 2017 16:25:50 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp29.relay.ord1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id B288CA00CE; Tue, 17 Jan 2017 16:25:49 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Tue, 17 Jan 2017 16:25:50 -0500 From: Stephen Leake To: David Engster Cc: Edward John Steere , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <87r341v1ed.fsf@engster.org> Date: Tue, 17 Jan 2017 15:25:47 -0600 In-Reply-To: <87r341v1ed.fsf@engster.org> (David Engster's message of "Tue, 17 Jan 2017 22:10:02 +0100") Message-ID: <86o9z58jl0.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 173.203.6.129 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:25:55 -0000 David Engster writes: > Stephen Leake writes: >> Edward John Steere writes: >> >>>> I understand that you've changed your merge strategy, so please tell >>>> if/when this becomes relevant again. >>>> >>>> Thanks for working on this. >>> >>> Correct. Thanks for your input anyway. Hopefully it wont take too long >>> before I have something to show for my efforts. >> >> I'd like to help with this. Perhaps doing some of the merge work, or by >> running tests; let me know. > > Actually, there's one thing which really didn't get much attention > during all those years: the texi files. I'm not sure how much those > diverged between Emacs and CEDET upstream. It was always messy, since in > the initial merge not all docs were imported from upstream. So if you'd > like to take a look at the texi files, that'd be much appreciated. Ok, I'll look at the texi files currently in SourceForge and Emacs CEDET, and make recommendations. -- -- Stephe From MAILER-DAEMON Tue Jan 17 16:32:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbMz-0000Rj-Fx for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:32:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTbMx-0000Rc-1h for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:32:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTbMt-0003B4-K2 for emacs-devel@gnu.org; Tue, 17 Jan 2017 16:32:43 -0500 Received: from randomsample.de ([5.45.97.173]:38671) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTbMt-00039p-AP; Tue, 17 Jan 2017 16:32:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=efESwClGQ9MOLHCJmOBmkBHRslw0q+rGBdoVThT2T/I=; b=VpzkqK986/2ZVna84yl+yNFU08QN+Icl3RJx2O4DlQ3mk4SvYCCaD4ZY+mACqBCpR3gSu0M8xI+3UUqbG1dQL6ZLk05BABh0O6fXPaGDOCPzZtG98YziIQ2wLga8QoRL; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTbMr-0003BE-35; Tue, 17 Jan 2017 22:32:37 +0100 From: David Engster To: Dmitry Gutov Cc: Edward Steere , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> (Dmitry Gutov's message of "Wed, 18 Jan 2017 00:19:36 +0300") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 17 Jan 2017 22:32:36 +0100 Message-ID: <87fukhv0cr.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 21:32:44 -0000 Dmitry Gutov writes: > On 18.01.2017 00:06, David Engster wrote: > >> That's great, thanks. You will need to remove quite some stuff from >> there that is not in Emacs, like everything Java related, the Fortran >> tests, ede/arduino, cogre... > > Is that a good idea? If CEDET development is going to proceed inside > Emacs from now on, why would you remove Java support? CEDET's Java support was never in Emacs, and the CEDET repository will not vanish, so we're not really removing anything. Anybody can port the Java support to Emacs or ELPA later. > Is it in a really bad shape? To my knowledge, nobody has been working on it for quite some time, so I'd be surprised if it worked with today's typical Java code. -David From MAILER-DAEMON Tue Jan 17 16:46:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTbZt-00051y-P4 for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 16:46:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTaCW-0007XB-Qm for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:17:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTaCV-0005Pn-6t for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:17:52 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35660) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTaCU-0005PN-SG for emacs-devel@gnu.org; Tue, 17 Jan 2017 15:17:51 -0500 Received: by mail-qt0-x244.google.com with SMTP id f4so24113761qte.2 for ; Tue, 17 Jan 2017 12:17:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=1JUjNTXFb1iDPE6Fn/MbNe30SrFcHk4FU2s1FBcTD/I=; b=VMZC6OdA9lXAQvYEL4zzGbSs++B66wXcClv9TbdBCG+vIqB4sZIIDHRzLKTYUqPedP JRYTNbkHXW7S6Hi6bOHjnmL3BEqQwjvswkCJig3CSA/oxu6j7H1mpROZwv08Bqdvyn/N p6SYwJALNXMRltGjLJaWLopn1EoqDQQ5VR6U5BMPf1qaYtkfuz40Ug8wyYUnhYGx39fW uVJcbZmNmkfoLVrMPagTD3tY4ZbodXs5JUKilzZqsZ9Ohv89vTTUlh1dsV1eDg8PT2Yu KkCZHMLrYIgFn61xJKeegm3zfyXeE29v1nTWj0rZvU8bH3Scq7XfB9a/vYFHqfs3osMv nDHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1JUjNTXFb1iDPE6Fn/MbNe30SrFcHk4FU2s1FBcTD/I=; b=mR20GzuDTIWmhLtLG4XdsfIeFprXOY+/5vH/5cFrX/60t/gE5JlamheIhOMPUYYeb8 xos2dFgJDCQNszZ+p36byK8Fb8at/UM/J79mY+E0xraBpmRPUpAVzwKKqmuyyVPfc+pD 5esskCZYt7LScw26aM9n1NsTcRtPzuczipRbSox+rc+YONDb6TE3xyMpgcm+BAEbsyUN FwQIQfI4I6iyO1XRGEOS3oW+CGDv5qqwlDR2/sYfXLmS5KaJQqPOY3pACxispKdIKshn oOR+3HzKd+vmoU7ut4Kqdvv+Uu3/I0JctD0pdkwoGRR0wWNHpSygmFQTq8ePOrz/rms2 Aoow== X-Gm-Message-State: AIkVDXJYJsxMYNxXTJteiV9Bfyp9aySoq6+dNZc++561KowiTWOsY71IH8gmY+NTOF/GzI1Vi9N6Io35hPu8gQ== X-Received: by 10.200.40.45 with SMTP id 42mr34260478qtq.89.1484684270220; Tue, 17 Jan 2017 12:17:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.97.33 with HTTP; Tue, 17 Jan 2017 12:17:49 -0800 (PST) From: ben rudgers Date: Tue, 17 Jan 2017 14:17:49 -0600 Message-ID: Subject: Suggested additional example to Emacs Lisp Manual: Variables: Let To: emacs-devel@gnu.org Content-Type: multipart/mixed; boundary=001a1141e07488010105464ffe4c X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 X-Mailman-Approved-At: Tue, 17 Jan 2017 16:46:04 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 20:17:54 -0000 --001a1141e07488010105464ffe4c Content-Type: multipart/alternative; boundary=001a1141e0748800fe05464ffe4a --001a1141e0748800fe05464ffe4a Content-Type: text/plain; charset=UTF-8 I apologize for not entirely following the patch submission process. I'm not sure I understand it fully yet. The manual does not provide an example showing a locally scoped function. Though the behavior can potentially be inferred from the documentation of functions, an example showing the relationship between =let= and =funcall= might be of practical help for someone who has not made a deep dive into the manual. I have appended the following to the documentation for =let= in the attached file: Functions defined within a @code{let} must be invoked using a call to @code{funcall}. @example (defun foo (x) (let ((bar (lambda (y) (+ x y)))) (funcall bar 3))) (foo 4) @result{} 7 @end example The standard internet search engines do not provide a well articulated example at this time. Because locally scoped functions are a common idiom in the Lisp family of languages, it seems likely that an example will be helpful to programmers with experience in other Lisps. =let= seems like the best place to put an example in the documentation. Anyway, thanks for all you have done. If you have any questions or there is anything I can do to help improve the documentation please let me know. --001a1141e0748800fe05464ffe4a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I apologize for not entire= ly following the patch submission process. I'm not sure I understand it= fully yet.

The manual does not provide an example showing a locally s= coped function. Though the behavior can potentially be inferred from the do= cumentation of functions, an example showing the relationship between =3Dle= t=3D and =3Dfuncall=3D might be of practical help for someone who has not m= ade a deep dive into the manual.

=
I have appended the following to the = documentation for =3Dlet=3D in the attached file:

Functions defined within a @code{let= } must be invoked using a call to @code{funcall}.

= @example
(defun foo (x)
=C2=A0 (let ((bar (lambda (y) (= + x y))))
=C2=A0 =C2=A0 (funcall bar 3)))
(foo 4)
=
=C2=A0 =C2=A0 =C2=A0@result{} 7
@end example

<= /div>
The standard internet sea= rch engines do not provide a well articulated example at this time. Because= locally scoped functions are a common idiom in the Lisp family of language= s, it seems likely that an example will be helpful to programmers with expe= rience in other Lisps. =3Dlet=3D seems like the best place to put an exampl= e in the documentation.

Anyway, thanks for all you have done. If you ha= ve any questions or there is anything I can do to help improve the document= ation please let me know.
--001a1141e0748800fe05464ffe4a-- --001a1141e07488010105464ffe4c Content-Type: application/x-texinfo; name="variables.texi" Content-Disposition: attachment; filename="variables.texi" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iy1ymoly0 QGMgLSotdGV4aW5mby0qLQpAYyBUaGlzIGlzIHBhcnQgb2YgdGhlIEdOVSBFbWFjcyBMaXNwIFJl ZmVyZW5jZSBNYW51YWwuCkBjIENvcHlyaWdodCAoQykgMTk5MC0xOTk1LCAxOTk4LTIwMTcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBjIFNlZSB0aGUgZmlsZSBlbGlzcC50ZXhpIGZv ciBjb3B5aW5nIGNvbmRpdGlvbnMuCkBub2RlIFZhcmlhYmxlcwpAY2hhcHRlciBWYXJpYWJsZXMK QGNpbmRleCB2YXJpYWJsZQoKICBBIEBkZm57dmFyaWFibGV9IGlzIGEgbmFtZSB1c2VkIGluIGEg cHJvZ3JhbSB0byBzdGFuZCBmb3IgYSB2YWx1ZS4KSW4gTGlzcCwgZWFjaCB2YXJpYWJsZSBpcyBy ZXByZXNlbnRlZCBieSBhIExpc3Agc3ltYm9sCihAcHhyZWZ7U3ltYm9sc30pLiAgVGhlIHZhcmlh YmxlIG5hbWUgaXMgc2ltcGx5IHRoZSBzeW1ib2wncyBuYW1lLCBhbmQKdGhlIHZhcmlhYmxlJ3Mg dmFsdWUgaXMgc3RvcmVkIGluIHRoZSBzeW1ib2wncyB2YWx1ZSBjZWxsQGZvb3Rub3Rle1RvCmJl IHByZWNpc2UsIHVuZGVyIHRoZSBkZWZhdWx0IEBkZm57ZHluYW1pYyBzY29waW5nfSBydWxlLCB0 aGUgdmFsdWUKY2VsbCBhbHdheXMgaG9sZHMgdGhlIHZhcmlhYmxlJ3MgY3VycmVudCB2YWx1ZSwg YnV0IHRoaXMgaXMgbm90IHRoZQpjYXNlIHVuZGVyIHRoZSBAZGZue2xleGljYWwgc2NvcGluZ30g cnVsZS4gIEB4cmVme1ZhcmlhYmxlIFNjb3Bpbmd9LApmb3IgZGV0YWlscy59LiAgQHhyZWZ7U3lt Ym9sIENvbXBvbmVudHN9LiAgSW4gRW1hY3MgTGlzcCwgdGhlIHVzZSBvZiBhCnN5bWJvbCBhcyBh IHZhcmlhYmxlIGlzIGluZGVwZW5kZW50IG9mIGl0cyB1c2UgYXMgYSBmdW5jdGlvbiBuYW1lLgoK ICBBcyBwcmV2aW91c2x5IG5vdGVkIGluIHRoaXMgbWFudWFsLCBhIExpc3AgcHJvZ3JhbSBpcyBy ZXByZXNlbnRlZApwcmltYXJpbHkgYnkgTGlzcCBvYmplY3RzLCBhbmQgb25seSBzZWNvbmRhcmls eSBhcyB0ZXh0LiAgVGhlIHRleHR1YWwKZm9ybSBvZiBhIExpc3AgcHJvZ3JhbSBpcyBnaXZlbiBi eSB0aGUgcmVhZCBzeW50YXggb2YgdGhlIExpc3Agb2JqZWN0cwp0aGF0IGNvbnN0aXR1dGUgdGhl IHByb2dyYW0uICBIZW5jZSwgdGhlIHRleHR1YWwgZm9ybSBvZiBhIHZhcmlhYmxlIGluCmEgTGlz cCBwcm9ncmFtIGlzIHdyaXR0ZW4gdXNpbmcgdGhlIHJlYWQgc3ludGF4IGZvciB0aGUgc3ltYm9s CnJlcHJlc2VudGluZyB0aGUgdmFyaWFibGUuCgpAbWVudQoqIEdsb2JhbCBWYXJpYWJsZXM6OiAg ICAgICAgICAgIFZhcmlhYmxlIHZhbHVlcyB0aGF0IGV4aXN0IHBlcm1hbmVudGx5LCBldmVyeXdo ZXJlLgoqIENvbnN0YW50IFZhcmlhYmxlczo6ICAgICAgICAgIFZhcmlhYmxlcyB0aGF0IG5ldmVy IGNoYW5nZS4KKiBMb2NhbCBWYXJpYWJsZXM6OiAgICAgICAgICAgICBWYXJpYWJsZSB2YWx1ZXMg dGhhdCBleGlzdCBvbmx5IHRlbXBvcmFyaWx5LgoqIFZvaWQgVmFyaWFibGVzOjogICAgICAgICAg ICAgIFN5bWJvbHMgdGhhdCBsYWNrIHZhbHVlcy4KKiBEZWZpbmluZyBWYXJpYWJsZXM6OiAgICAg ICAgICBBIGRlZmluaXRpb24gc2F5cyBhIHN5bWJvbCBpcyB1c2VkIGFzIGEgdmFyaWFibGUuCiog VGlwcyBmb3IgRGVmaW5pbmc6OiAgICAgICAgICAgVGhpbmdzIHlvdSBzaG91bGQgdGhpbmsgYWJv dXQgd2hlbiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBhIHZhcmlhYmxl LgoqIEFjY2Vzc2luZyBWYXJpYWJsZXM6OiAgICAgICAgIEV4YW1pbmluZyB2YWx1ZXMgb2YgdmFy aWFibGVzIHdob3NlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUga25vd24g b25seSBhdCBydW4gdGltZS4KKiBTZXR0aW5nIFZhcmlhYmxlczo6ICAgICAgICAgICBTdG9yaW5n IG5ldyB2YWx1ZXMgaW4gdmFyaWFibGVzLgoqIFdhdGNoaW5nIFZhcmlhYmxlczo6ICAgICAgICAg IFJ1bm5pbmcgYSBmdW5jdGlvbiB3aGVuIGEgdmFyaWFibGUgaXMgY2hhbmdlZC4KKiBWYXJpYWJs ZSBTY29waW5nOjogICAgICAgICAgICBIb3cgTGlzcCBjaG9vc2VzIGFtb25nIGxvY2FsIGFuZCBn bG9iYWwgdmFsdWVzLgoqIEJ1ZmZlci1Mb2NhbCBWYXJpYWJsZXM6OiAgICAgIFZhcmlhYmxlIHZh bHVlcyBpbiBlZmZlY3Qgb25seSBpbiBvbmUgYnVmZmVyLgoqIEZpbGUgTG9jYWwgVmFyaWFibGVz OjogICAgICAgIEhhbmRsaW5nIGxvY2FsIHZhcmlhYmxlIGxpc3RzIGluIGZpbGVzLgoqIERpcmVj dG9yeSBMb2NhbCBWYXJpYWJsZXM6OiAgIExvY2FsIHZhcmlhYmxlcyBjb21tb24gdG8gYWxsIGZp bGVzIGluIGEgZGlyZWN0b3J5LgoqIENvbm5lY3Rpb24gTG9jYWwgVmFyaWFibGVzOjogIExvY2Fs IHZhcmlhYmxlcyBjb21tb24gZm9yIHJlbW90ZSBjb25uZWN0aW9ucy4KKiBWYXJpYWJsZSBBbGlh c2VzOjogICAgICAgICAgICBWYXJpYWJsZXMgdGhhdCBhcmUgYWxpYXNlcyBmb3Igb3RoZXIgdmFy aWFibGVzLgoqIFZhcmlhYmxlcyB3aXRoIFJlc3RyaWN0ZWQgVmFsdWVzOjogIE5vbi1jb25zdGFu dCB2YXJpYWJsZXMgd2hvc2UgdmFsdWUgY2FuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBAZW1waHtub3R9IGJlIGFuIGFyYml0cmFyeSBMaXNwIG9iamVjdC4KKiBHZW5l cmFsaXplZCBWYXJpYWJsZXM6OiAgICAgICBFeHRlbmRpbmcgdGhlIGNvbmNlcHQgb2YgdmFyaWFi bGVzLgpAZW5kIG1lbnUKCkBub2RlIEdsb2JhbCBWYXJpYWJsZXMKQHNlY3Rpb24gR2xvYmFsIFZh cmlhYmxlcwpAY2luZGV4IGdsb2JhbCB2YXJpYWJsZQoKICBUaGUgc2ltcGxlc3Qgd2F5IHRvIHVz ZSBhIHZhcmlhYmxlIGlzIEBkZm57Z2xvYmFsbHl9LiAgVGhpcyBtZWFucyB0aGF0CnRoZSB2YXJp YWJsZSBoYXMganVzdCBvbmUgdmFsdWUgYXQgYSB0aW1lLCBhbmQgdGhpcyB2YWx1ZSBpcyBpbiBl ZmZlY3QKKGF0IGxlYXN0IGZvciB0aGUgbW9tZW50KSB0aHJvdWdob3V0IHRoZSBMaXNwIHN5c3Rl bS4gIFRoZSB2YWx1ZSByZW1haW5zCmluIGVmZmVjdCB1bnRpbCB5b3Ugc3BlY2lmeSBhIG5ldyBv bmUuICBXaGVuIGEgbmV3IHZhbHVlIHJlcGxhY2VzIHRoZQpvbGQgb25lLCBubyB0cmFjZSBvZiB0 aGUgb2xkIHZhbHVlIHJlbWFpbnMgaW4gdGhlIHZhcmlhYmxlLgoKICBZb3Ugc3BlY2lmeSBhIHZh bHVlIGZvciBhIHN5bWJvbCB3aXRoIEBjb2Rle3NldHF9LiAgRm9yIGV4YW1wbGUsCgpAZXhhbXBs ZQooc2V0cSB4ICcoYSBiKSkKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKZ2l2ZXMgdGhlIHZhcmlh YmxlIEBjb2Rle3h9IHRoZSB2YWx1ZSBAY29kZXsoYSBiKX0uICBOb3RlIHRoYXQKQGNvZGV7c2V0 cX0gaXMgYSBzcGVjaWFsIGZvcm0gKEBweHJlZntTcGVjaWFsIEZvcm1zfSk7IGl0IGRvZXMgbm90 CmV2YWx1YXRlIGl0cyBmaXJzdCBhcmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLCBi dXQgaXQgZG9lcwpldmFsdWF0ZSB0aGUgc2Vjb25kIGFyZ3VtZW50LCB0aGUgbmV3IHZhbHVlLgoK ICBPbmNlIHRoZSB2YXJpYWJsZSBoYXMgYSB2YWx1ZSwgeW91IGNhbiByZWZlciB0byBpdCBieSB1 c2luZyB0aGUKc3ltYm9sIGl0c2VsZiBhcyBhbiBleHByZXNzaW9uLiAgVGh1cywKCkBleGFtcGxl CkBncm91cAp4IEByZXN1bHR7fSAoYSBiKQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQG5vaW5k ZW50CmFzc3VtaW5nIHRoZSBAY29kZXtzZXRxfSBmb3JtIHNob3duIGFib3ZlIGhhcyBhbHJlYWR5 IGJlZW4gZXhlY3V0ZWQuCgogIElmIHlvdSBkbyBzZXQgdGhlIHNhbWUgdmFyaWFibGUgYWdhaW4s IHRoZSBuZXcgdmFsdWUgcmVwbGFjZXMgdGhlIG9sZApvbmU6CgpAZXhhbXBsZQpAZ3JvdXAKeAog ICAgIEByZXN1bHR7fSAoYSBiKQpAZW5kIGdyb3VwCkBncm91cAooc2V0cSB4IDQpCiAgICAgQHJl c3VsdHt9IDQKQGVuZCBncm91cApAZ3JvdXAKeAogICAgIEByZXN1bHR7fSA0CkBlbmQgZ3JvdXAK QGVuZCBleGFtcGxlCgpAbm9kZSBDb25zdGFudCBWYXJpYWJsZXMKQHNlY3Rpb24gVmFyaWFibGVz IHRoYXQgTmV2ZXIgQ2hhbmdlCkBjaW5kZXggQGNvZGV7c2V0dGluZy1jb25zdGFudH0gZXJyb3IK QGNpbmRleCBrZXl3b3JkIHN5bWJvbApAY2luZGV4IHZhcmlhYmxlIHdpdGggY29uc3RhbnQgdmFs dWUKQGNpbmRleCBjb25zdGFudCB2YXJpYWJsZXMKQGNpbmRleCBzeW1ib2wgdGhhdCBldmFsdWF0 ZXMgdG8gaXRzZWxmCkBjaW5kZXggc3ltYm9sIHdpdGggY29uc3RhbnQgdmFsdWUKCiAgSW4gRW1h Y3MgTGlzcCwgY2VydGFpbiBzeW1ib2xzIG5vcm1hbGx5IGV2YWx1YXRlIHRvIHRoZW1zZWx2ZXMu ICBUaGVzZQppbmNsdWRlIEBjb2Rle25pbH0gYW5kIEBjb2Rle3R9LCBhcyB3ZWxsIGFzIGFueSBz eW1ib2wgd2hvc2UgbmFtZSBzdGFydHMKd2l0aCBAc2FtcHs6fSAodGhlc2UgYXJlIGNhbGxlZCBA ZGZue2tleXdvcmRzfSkuICBUaGVzZSBzeW1ib2xzIGNhbm5vdApiZSByZWJvdW5kLCBub3IgY2Fu IHRoZWlyIHZhbHVlcyBiZSBjaGFuZ2VkLiAgQW55IGF0dGVtcHQgdG8gc2V0IG9yIGJpbmQKQGNv ZGV7bmlsfSBvciBAY29kZXt0fSBzaWduYWxzIGEgQGNvZGV7c2V0dGluZy1jb25zdGFudH0gZXJy b3IuICBUaGUKc2FtZSBpcyB0cnVlIGZvciBhIGtleXdvcmQgKGEgc3ltYm9sIHdob3NlIG5hbWUg c3RhcnRzIHdpdGggQHNhbXB7On0pLAppZiBpdCBpcyBpbnRlcm5lZCBpbiB0aGUgc3RhbmRhcmQg b2JhcnJheSwgZXhjZXB0IHRoYXQgc2V0dGluZyBzdWNoIGEKc3ltYm9sIHRvIGl0c2VsZiBpcyBu b3QgYW4gZXJyb3IuCgpAZXhhbXBsZQpAZ3JvdXAKbmlsIEBlcXVpdnt9ICduaWwKICAgICBAcmVz dWx0e30gbmlsCkBlbmQgZ3JvdXAKQGdyb3VwCihzZXRxIG5pbCA1MDApCkBlcnJvcnt9IEF0dGVt cHQgdG8gc2V0IGNvbnN0YW50IHN5bWJvbDogbmlsCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpA ZGVmdW4ga2V5d29yZHAgb2JqZWN0CmZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dH0gaWYgQHZhcntv YmplY3R9IGlzIGEgc3ltYm9sIHdob3NlIG5hbWUKc3RhcnRzIHdpdGggQHNhbXB7On0sIGludGVy bmVkIGluIHRoZSBzdGFuZGFyZCBvYmFycmF5LCBhbmQgcmV0dXJucwpAY29kZXtuaWx9IG90aGVy d2lzZS4KQGVuZCBkZWZ1bgoKVGhlc2UgY29uc3RhbnRzIGFyZSBmdW5kYW1lbnRhbGx5IGRpZmZl cmVudCBmcm9tIHRoZSBjb25zdGFudHMKZGVmaW5lZCB1c2luZyB0aGUgQGNvZGV7ZGVmY29uc3R9 IHNwZWNpYWwgZm9ybSAoQHB4cmVme0RlZmluaW5nClZhcmlhYmxlc30pLiAgQSBAY29kZXtkZWZj b25zdH0gZm9ybSBzZXJ2ZXMgdG8gaW5mb3JtIGh1bWFuIHJlYWRlcnMKdGhhdCB5b3UgZG8gbm90 IGludGVuZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUsIGJ1dCBFbWFjcwpkb2Vz IG5vdCByYWlzZSBhbiBlcnJvciBpZiB5b3UgYWN0dWFsbHkgY2hhbmdlIGl0LgoKQG5vZGUgTG9j YWwgVmFyaWFibGVzCkBzZWN0aW9uIExvY2FsIFZhcmlhYmxlcwpAY2luZGV4IGJpbmRpbmcgbG9j YWwgdmFyaWFibGVzCkBjaW5kZXggbG9jYWwgdmFyaWFibGVzCkBjaW5kZXggbG9jYWwgYmluZGlu ZwpAY2luZGV4IGdsb2JhbCBiaW5kaW5nCgogIEdsb2JhbCB2YXJpYWJsZXMgaGF2ZSB2YWx1ZXMg dGhhdCBsYXN0IHVudGlsIGV4cGxpY2l0bHkgc3VwZXJzZWRlZAp3aXRoIG5ldyB2YWx1ZXMuICBT b21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGdpdmUgYSB2YXJpYWJsZSBhCkBkZm57bG9jYWwgdmFs dWV9LS0tYSB2YWx1ZSB0aGF0IHRha2VzIGVmZmVjdCBvbmx5IHdpdGhpbiBhIGNlcnRhaW4KcGFy dCBvZiBhIExpc3AgcHJvZ3JhbS4gIFdoZW4gYSB2YXJpYWJsZSBoYXMgYSBsb2NhbCB2YWx1ZSwg d2Ugc2F5CnRoYXQgaXQgaXMgQGRmbntsb2NhbGx5IGJvdW5kfSB0byB0aGF0IHZhbHVlLCBhbmQg dGhhdCBpdCBpcyBhCkBkZm57bG9jYWwgdmFyaWFibGV9LgoKICBGb3IgZXhhbXBsZSwgd2hlbiBh IGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXRzIGFyZ3VtZW50IHZhcmlhYmxlcwpyZWNlaXZlIGxvY2Fs IHZhbHVlcywgd2hpY2ggYXJlIHRoZSBhY3R1YWwgYXJndW1lbnRzIHN1cHBsaWVkIHRvIHRoZQpm dW5jdGlvbiBjYWxsOyB0aGVzZSBsb2NhbCBiaW5kaW5ncyB0YWtlIGVmZmVjdCB3aXRoaW4gdGhl IGJvZHkgb2YgdGhlCmZ1bmN0aW9uLiAgVG8gdGFrZSBhbm90aGVyIGV4YW1wbGUsIHRoZSBAY29k ZXtsZXR9IHNwZWNpYWwgZm9ybQpleHBsaWNpdGx5IGVzdGFibGlzaGVzIGxvY2FsIGJpbmRpbmdz IGZvciBzcGVjaWZpYyB2YXJpYWJsZXMsIHdoaWNoCnRha2UgZWZmZWN0IHdpdGhpbiB0aGUgYm9k eSBvZiB0aGUgQGNvZGV7bGV0fSBmb3JtLgoKICBXZSBhbHNvIHNwZWFrIG9mIHRoZSBAZGZue2ds b2JhbCBiaW5kaW5nfSwgd2hpY2ggaXMgd2hlcmUKKGNvbmNlcHR1YWxseSkgdGhlIGdsb2JhbCB2 YWx1ZSBpcyBrZXB0LgoKQGNpbmRleCBzaGFkb3dpbmcgb2YgdmFyaWFibGVzCiAgRXN0YWJsaXNo aW5nIGEgbG9jYWwgYmluZGluZyBzYXZlcyBhd2F5IHRoZSB2YXJpYWJsZSdzIHByZXZpb3VzCnZh bHVlIChvciBsYWNrIG9mIG9uZSkuICBXZSBzYXkgdGhhdCB0aGUgcHJldmlvdXMgdmFsdWUgaXMK QGRmbntzaGFkb3dlZH0uICBCb3RoIGdsb2JhbCBhbmQgbG9jYWwgdmFsdWVzIG1heSBiZSBzaGFk b3dlZC4gIElmIGEKbG9jYWwgYmluZGluZyBpcyBpbiBlZmZlY3QsIHVzaW5nIEBjb2Rle3NldHF9 IG9uIHRoZSBsb2NhbCB2YXJpYWJsZQpzdG9yZXMgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbiB0aGUg bG9jYWwgYmluZGluZy4gIFdoZW4gdGhhdCBsb2NhbApiaW5kaW5nIGlzIG5vIGxvbmdlciBpbiBl ZmZlY3QsIHRoZSBwcmV2aW91c2x5IHNoYWRvd2VkIHZhbHVlIChvciBsYWNrCm9mIG9uZSkgY29t ZXMgYmFjay4KCkBjaW5kZXggY3VycmVudCBiaW5kaW5nCiAgQSB2YXJpYWJsZSBjYW4gaGF2ZSBt b3JlIHRoYW4gb25lIGxvY2FsIGJpbmRpbmcgYXQgYSB0aW1lIChlLmcuLCBpZgp0aGVyZSBhcmUg bmVzdGVkIEBjb2Rle2xldH0gZm9ybXMgdGhhdCBiaW5kIHRoZSB2YXJpYWJsZSkuICBUaGUKQGRm bntjdXJyZW50IGJpbmRpbmd9IGlzIHRoZSBsb2NhbCBiaW5kaW5nIHRoYXQgaXMgYWN0dWFsbHkg aW4gZWZmZWN0LgpJdCBkZXRlcm1pbmVzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBldmFsdWF0aW5n IHRoZSB2YXJpYWJsZSBzeW1ib2wsCmFuZCBpdCBpcyB0aGUgYmluZGluZyBhY3RlZCBvbiBieSBA Y29kZXtzZXRxfS4KCiAgRm9yIG1vc3QgcHVycG9zZXMsIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGN1 cnJlbnQgYmluZGluZyBhcyB0aGUKaW5uZXJtb3N0IGxvY2FsIGJpbmRpbmcsIG9yIHRoZSBnbG9i YWwgYmluZGluZyBpZiB0aGVyZSBpcyBubwpsb2NhbCBiaW5kaW5nLiAgVG8gYmUgbW9yZSBwcmVj aXNlLCBhIHJ1bGUgY2FsbGVkIHRoZSBAZGZue3Njb3BpbmcKcnVsZX0gZGV0ZXJtaW5lcyB3aGVy ZSBpbiBhIHByb2dyYW0gYSBsb2NhbCBiaW5kaW5nIHRha2VzIGVmZmVjdC4gIFRoZQpkZWZhdWx0 IHNjb3BpbmcgcnVsZSBpbiBFbWFjcyBMaXNwIGlzIGNhbGxlZCBAZGZue2R5bmFtaWMgc2NvcGlu Z30sCndoaWNoIHNpbXBseSBzdGF0ZXMgdGhhdCB0aGUgY3VycmVudCBiaW5kaW5nIGF0IGFueSBn aXZlbiBwb2ludCBpbiB0aGUKZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSBpcyB0aGUgbW9zdCByZWNl bnRseS1jcmVhdGVkIGJpbmRpbmcgZm9yIHRoYXQKdmFyaWFibGUgdGhhdCBzdGlsbCBleGlzdHMu ICBGb3IgZGV0YWlscyBhYm91dCBkeW5hbWljIHNjb3BpbmcsIGFuZCBhbgphbHRlcm5hdGl2ZSBz Y29waW5nIHJ1bGUgY2FsbGVkIEBkZm57bGV4aWNhbCBzY29waW5nfSwgQHhyZWZ7VmFyaWFibGUK U2NvcGluZ30uCgogIFRoZSBzcGVjaWFsIGZvcm1zIEBjb2Rle2xldH0gYW5kIEBjb2Rle2xldCp9 IGV4aXN0IHRvIGNyZWF0ZSBsb2NhbApiaW5kaW5nczoKCkBkZWZzcGVjIGxldCAoYmluZGluZ3NA ZG90c3t9KSBmb3Jtc0Bkb3Rze30KVGhpcyBzcGVjaWFsIGZvcm0gc2V0cyB1cCBsb2NhbCBiaW5k aW5ncyBmb3IgYSBjZXJ0YWluIHNldCBvZgp2YXJpYWJsZXMsIGFzIHNwZWNpZmllZCBieSBAdmFy e2JpbmRpbmdzfSwgYW5kIHRoZW4gZXZhbHVhdGVzIGFsbCBvZgp0aGUgQHZhcntmb3Jtc30gaW4g dGV4dHVhbCBvcmRlci4gIEl0cyByZXR1cm4gdmFsdWUgaXMgdGhlIHZhbHVlIG9mCnRoZSBsYXN0 IGZvcm0gaW4gQHZhcntmb3Jtc30uCgpFYWNoIG9mIHRoZSBAdmFye2JpbmRpbmdzfSBpcyBlaXRo ZXIgQHd7KGkpIGF9IHN5bWJvbCwgaW4gd2hpY2ggY2FzZQp0aGF0IHN5bWJvbCBpcyBsb2NhbGx5 IGJvdW5kIHRvIEBjb2Rle25pbH07IG9yIEB3eyhpaSkgYX0gbGlzdCBvZiB0aGUKZm9ybSBAY29k ZXsoQHZhcntzeW1ib2x9IEB2YXJ7dmFsdWUtZm9ybX0pfSwgaW4gd2hpY2ggY2FzZQpAdmFye3N5 bWJvbH0gaXMgbG9jYWxseSBib3VuZCB0byB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcKQHZhcnt2 YWx1ZS1mb3JtfS4gIElmIEB2YXJ7dmFsdWUtZm9ybX0gaXMgb21pdHRlZCwgQGNvZGV7bmlsfSBp cyB1c2VkLgoKQWxsIG9mIHRoZSBAdmFye3ZhbHVlLWZvcm19cyBpbiBAdmFye2JpbmRpbmdzfSBh cmUgZXZhbHVhdGVkIGluIHRoZQpvcmRlciB0aGV5IGFwcGVhciBhbmQgQGVtcGh7YmVmb3JlfSBi aW5kaW5nIGFueSBvZiB0aGUgc3ltYm9scyB0byB0aGVtLgpIZXJlIGlzIGFuIGV4YW1wbGUgb2Yg dGhpczogQGNvZGV7en0gaXMgYm91bmQgdG8gdGhlIG9sZCB2YWx1ZSBvZgpAY29kZXt5fSwgd2hp Y2ggaXMgMiwgbm90IHRoZSBuZXcgdmFsdWUgb2YgQGNvZGV7eX0sIHdoaWNoIGlzIDEuCgpAZXhh bXBsZQpAZ3JvdXAKKHNldHEgeSAyKQogICAgIEByZXN1bHR7fSAyCkBlbmQgZ3JvdXAKCkBncm91 cAoobGV0ICgoeSAxKQogICAgICAoeiB5KSkKICAobGlzdCB5IHopKQogICAgIEByZXN1bHR7fSAo MSAyKQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKT24gdGhlIG90aGVyIGhhbmQsIHRoZSBvcmRl ciBvZiBAZW1waHtiaW5kaW5nc30gaXMgdW5zcGVjaWZpZWQ6IGluIHRoZQpmb2xsb3dpbmcgZXhh bXBsZSwgZWl0aGVyIDEgb3IgMiBtaWdodCBiZSBwcmludGVkLgoKQGV4YW1wbGUKKGxldCAoKHgg MSkKICAgICAgKHggMikpCiAgKHByaW50IHgpKQpAZW5kIGV4YW1wbGUKClRoZXJlZm9yZSwgYXZv aWQgYmluZGluZyBhIHZhcmlhYmxlIG1vcmUgdGhhbiBvbmNlIGluIGEgc2luZ2xlCkBjb2Rle2xl dH0gZm9ybS4KCkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiBhIEBjb2Rle2xldH0gbXVzdCBiZSBp bnZva2VkIHVzaW5nIGEgY2FsbCB0byBAY29kZXtmdW5jYWxsfS4KCkBleGFtcGxlCihkZWZ1biBm b28gKHgpCiAgKGxldCAoKGJhciAobGFtYmRhICh5KSAoKyB4IHkpKSkpCiAgICAoZnVuY2FsbCBi YXIgMykpKQooZm9vIDQpCiAgICAgQHJlc3VsdHt9IDcKQGVuZCBleGFtcGxlCkBlbmQgZGVmc3Bl YwoKQGRlZnNwZWMgbGV0KiAoYmluZGluZ3NAZG90c3t9KSBmb3Jtc0Bkb3Rze30KVGhpcyBzcGVj aWFsIGZvcm0gaXMgbGlrZSBAY29kZXtsZXR9LCBidXQgaXQgYmluZHMgZWFjaCB2YXJpYWJsZSBy aWdodAphZnRlciBjb21wdXRpbmcgaXRzIGxvY2FsIHZhbHVlLCBiZWZvcmUgY29tcHV0aW5nIHRo ZSBsb2NhbCB2YWx1ZSBmb3IKdGhlIG5leHQgdmFyaWFibGUuICBUaGVyZWZvcmUsIGFuIGV4cHJl c3Npb24gaW4gQHZhcntiaW5kaW5nc30gY2FuCnJlZmVyIHRvIHRoZSBwcmVjZWRpbmcgc3ltYm9s cyBib3VuZCBpbiB0aGlzIEBjb2Rle2xldCp9IGZvcm0uCkNvbXBhcmUgdGhlIGZvbGxvd2luZyBl eGFtcGxlIHdpdGggdGhlIGV4YW1wbGUgYWJvdmUgZm9yIEBjb2Rle2xldH0uCgpAZXhhbXBsZQpA Z3JvdXAKKHNldHEgeSAyKQogICAgIEByZXN1bHR7fSAyCkBlbmQgZ3JvdXAKCkBncm91cAoobGV0 KiAoKHkgMSkKICAgICAgICh6IHkpKSAgICA7IEBye1VzZSB0aGUganVzdC1lc3RhYmxpc2hlZCB2 YWx1ZSBvZiBAY29kZXt5fS59CiAgKGxpc3QgeSB6KSkKICAgICBAcmVzdWx0e30gKDEgMSkKQGVu ZCBncm91cApAZW5kIGV4YW1wbGUKQGVuZCBkZWZzcGVjCgogIEhlcmUgaXMgYSBjb21wbGV0ZSBs aXN0IG9mIHRoZSBvdGhlciBmYWNpbGl0aWVzIHRoYXQgY3JlYXRlIGxvY2FsCmJpbmRpbmdzOgoK QGl0ZW1pemUgQGJ1bGxldApAaXRlbQpGdW5jdGlvbiBjYWxscyAoQHB4cmVme0Z1bmN0aW9uc30p LgoKQGl0ZW0KTWFjcm8gY2FsbHMgKEBweHJlZntNYWNyb3N9KS4KCkBpdGVtCkBjb2Rle2NvbmRp dGlvbi1jYXNlfSAoQHB4cmVme0Vycm9yc30pLgpAZW5kIGl0ZW1pemUKCiAgVmFyaWFibGVzIGNh biBhbHNvIGhhdmUgYnVmZmVyLWxvY2FsIGJpbmRpbmdzIChAcHhyZWZ7QnVmZmVyLUxvY2FsClZh cmlhYmxlc30pOyBhIGZldyB2YXJpYWJsZXMgaGF2ZSB0ZXJtaW5hbC1sb2NhbCBiaW5kaW5ncwoo QHB4cmVme011bHRpcGxlIFRlcm1pbmFsc30pLiAgVGhlc2Uga2luZHMgb2YgYmluZGluZ3Mgd29y ayBzb21ld2hhdApsaWtlIG9yZGluYXJ5IGxvY2FsIGJpbmRpbmdzLCBidXQgdGhleSBhcmUgbG9j YWxpemVkIGRlcGVuZGluZyBvbgp3aGVyZSB5b3UgYXJlIGluIEVtYWNzLgoKQGRlZm9wdCBtYXgt c3BlY3BkbC1zaXplCkBhbmNob3J7RGVmaW5pdGlvbiBvZiBtYXgtc3BlY3BkbC1zaXplfQpAY2lu ZGV4IHZhcmlhYmxlIGxpbWl0IGVycm9yCkBjaW5kZXggZXZhbHVhdGlvbiBlcnJvcgpAY2luZGV4 IGluZmluaXRlIHJlY3Vyc2lvbgpUaGlzIHZhcmlhYmxlIGRlZmluZXMgdGhlIGxpbWl0IG9uIHRo ZSB0b3RhbCBudW1iZXIgb2YgbG9jYWwgdmFyaWFibGUKYmluZGluZ3MgYW5kIEBjb2Rle3Vud2lu ZC1wcm90ZWN0fSBjbGVhbnVwcyAoc2VlIEByZWZ7Q2xlYW51cHMsLApDbGVhbmluZyBVcCBmcm9t IE5vbmxvY2FsIEV4aXRzfSkgdGhhdCBhcmUgYWxsb3dlZCBiZWZvcmUgRW1hY3MKc2lnbmFscyBh biBlcnJvciAod2l0aCBkYXRhIEBjb2RleyJWYXJpYWJsZSBiaW5kaW5nIGRlcHRoIGV4Y2VlZHMK bWF4LXNwZWNwZGwtc2l6ZSJ9KS4KClRoaXMgbGltaXQsIHdpdGggdGhlIGFzc29jaWF0ZWQgZXJy b3Igd2hlbiBpdCBpcyBleGNlZWRlZCwgaXMgb25lIHdheQp0aGF0IExpc3AgYXZvaWRzIGluZmlu aXRlIHJlY3Vyc2lvbiBvbiBhbiBpbGwtZGVmaW5lZCBmdW5jdGlvbi4KQGNvZGV7bWF4LWxpc3At ZXZhbC1kZXB0aH0gcHJvdmlkZXMgYW5vdGhlciBsaW1pdCBvbiBkZXB0aCBvZiBuZXN0aW5nLgpA eHJlZntEZWZpbml0aW9uIG9mIG1heC1saXNwLWV2YWwtZGVwdGgsLCBFdmFsfS4KClRoZSBkZWZh dWx0IHZhbHVlIGlzIDEzMDAuICBFbnRyeSB0byB0aGUgTGlzcCBkZWJ1Z2dlciBpbmNyZWFzZXMg dGhlCnZhbHVlLCBpZiB0aGVyZSBpcyBsaXR0bGUgcm9vbSBsZWZ0LCB0byBtYWtlIHN1cmUgdGhl IGRlYnVnZ2VyIGl0c2VsZgpoYXMgcm9vbSB0byBleGVjdXRlLgpAZW5kIGRlZm9wdAoKQG5vZGUg Vm9pZCBWYXJpYWJsZXMKQHNlY3Rpb24gV2hlbiBhIFZhcmlhYmxlIGlzIFZvaWQKQGNpbmRleCBA Y29kZXt2b2lkLXZhcmlhYmxlfSBlcnJvcgpAY2luZGV4IHZvaWQgdmFyaWFibGUKCiAgV2Ugc2F5 IHRoYXQgYSB2YXJpYWJsZSBpcyB2b2lkIGlmIGl0cyBzeW1ib2wgaGFzIGFuIHVuYXNzaWduZWQg dmFsdWUKY2VsbCAoQHB4cmVme1N5bWJvbCBDb21wb25lbnRzfSkuCgogIFVuZGVyIEVtYWNzIExp c3AncyBkZWZhdWx0IGR5bmFtaWMgc2NvcGluZyBydWxlIChAcHhyZWZ7VmFyaWFibGUKU2NvcGlu Z30pLCB0aGUgdmFsdWUgY2VsbCBzdG9yZXMgdGhlIHZhcmlhYmxlJ3MgY3VycmVudCAobG9jYWwg b3IKZ2xvYmFsKSB2YWx1ZS4gIE5vdGUgdGhhdCBhbiB1bmFzc2lnbmVkIHZhbHVlIGNlbGwgaXMg QGVtcGh7bm90fSB0aGUKc2FtZSBhcyBoYXZpbmcgQGNvZGV7bmlsfSBpbiB0aGUgdmFsdWUgY2Vs bC4gIFRoZSBzeW1ib2wgQGNvZGV7bmlsfSBpcwphIExpc3Agb2JqZWN0IGFuZCBjYW4gYmUgdGhl IHZhbHVlIG9mIGEgdmFyaWFibGUsIGp1c3QgYXMgYW55IG90aGVyCm9iamVjdCBjYW4gYmU7IGJ1 dCBpdCBpcyBzdGlsbCBhIHZhbHVlLiAgSWYgYSB2YXJpYWJsZSBpcyB2b2lkLCB0cnlpbmcKdG8g ZXZhbHVhdGUgdGhlIHZhcmlhYmxlIHNpZ25hbHMgYSBAY29kZXt2b2lkLXZhcmlhYmxlfSBlcnJv ciwgaW5zdGVhZApvZiByZXR1cm5pbmcgYSB2YWx1ZS4KCiAgVW5kZXIgdGhlIG9wdGlvbmFsIGxl eGljYWwgc2NvcGluZyBydWxlLCB0aGUgdmFsdWUgY2VsbCBvbmx5IGhvbGRzCnRoZSB2YXJpYWJs ZSdzIGdsb2JhbCB2YWx1ZS0tLXRoZSB2YWx1ZSBvdXRzaWRlIG9mIGFueSBsZXhpY2FsIGJpbmRp bmcKY29uc3RydWN0LiAgV2hlbiBhIHZhcmlhYmxlIGlzIGxleGljYWxseSBib3VuZCwgdGhlIGxv Y2FsIHZhbHVlIGlzCmRldGVybWluZWQgYnkgdGhlIGxleGljYWwgZW52aXJvbm1lbnQ7IGhlbmNl LCB2YXJpYWJsZXMgY2FuIGhhdmUgbG9jYWwKdmFsdWVzIGV2ZW4gaWYgdGhlaXIgc3ltYm9scycg dmFsdWUgY2VsbHMgYXJlIHVuYXNzaWduZWQuCgpAZGVmdW4gbWFrdW5ib3VuZCBzeW1ib2wKVGhp cyBmdW5jdGlvbiBlbXB0aWVzIG91dCB0aGUgdmFsdWUgY2VsbCBvZiBAdmFye3N5bWJvbH0sIG1h a2luZyB0aGUKdmFyaWFibGUgdm9pZC4gIEl0IHJldHVybnMgQHZhcntzeW1ib2x9LgoKSWYgQHZh cntzeW1ib2x9IGhhcyBhIGR5bmFtaWMgbG9jYWwgYmluZGluZywgQGNvZGV7bWFrdW5ib3VuZH0g dm9pZHMKdGhlIGN1cnJlbnQgYmluZGluZywgYW5kIHRoaXMgdm9pZG5lc3MgbGFzdHMgb25seSBh cyBsb25nIGFzIHRoZSBsb2NhbApiaW5kaW5nIGlzIGluIGVmZmVjdC4gIEFmdGVyd2FyZHMsIHRo ZSBwcmV2aW91c2x5IHNoYWRvd2VkIGxvY2FsIG9yCmdsb2JhbCBiaW5kaW5nIGlzIHJlZXhwb3Nl ZDsgdGhlbiB0aGUgdmFyaWFibGUgd2lsbCBubyBsb25nZXIgYmUgdm9pZCwKdW5sZXNzIHRoZSBy ZWV4cG9zZWQgYmluZGluZyBpcyB2b2lkIHRvby4KCkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgKGFz c3VtaW5nIGR5bmFtaWMgYmluZGluZyBpcyBpbiBlZmZlY3QpOgoKQHNtYWxsZXhhbXBsZQpAZ3Jv dXAKKHNldHEgeCAxKSAgICAgICAgICAgICAgIDsgQHJ7UHV0IGEgdmFsdWUgaW4gdGhlIGdsb2Jh bCBiaW5kaW5nLn0KICAgICBAcmVzdWx0e30gMQoobGV0ICgoeCAyKSkgICAgICAgICAgICAgOyBA cntMb2NhbGx5IGJpbmQgaXQufQogIChtYWt1bmJvdW5kICd4KSAgICAgICAgOyBAcntWb2lkIHRo ZSBsb2NhbCBiaW5kaW5nLn0KICB4KQpAZXJyb3J7fSBTeW1ib2wncyB2YWx1ZSBhcyB2YXJpYWJs ZSBpcyB2b2lkOiB4CkBlbmQgZ3JvdXAKQGdyb3VwCnggICAgICAgICAgICAgICAgICAgICAgICA7 IEBye1RoZSBnbG9iYWwgYmluZGluZyBpcyB1bmNoYW5nZWQufQogICAgIEByZXN1bHR7fSAxCgoo bGV0ICgoeCAyKSkgICAgICAgICAgICAgOyBAcntMb2NhbGx5IGJpbmQgaXQufQogIChsZXQgKCh4 IDMpKSAgICAgICAgICAgOyBAcntBbmQgYWdhaW4ufQogICAgKG1ha3VuYm91bmQgJ3gpICAgICAg OyBAcntWb2lkIHRoZSBpbm5lcm1vc3QtbG9jYWwgYmluZGluZy59CiAgICB4KSkgICAgICAgICAg ICAgICAgICA7IEBye0FuZCByZWZlcjogaXQncyB2b2lkLn0KQGVycm9ye30gU3ltYm9sJ3MgdmFs dWUgYXMgdmFyaWFibGUgaXMgdm9pZDogeApAZW5kIGdyb3VwCgpAZ3JvdXAKKGxldCAoKHggMikp CiAgKGxldCAoKHggMykpCiAgICAobWFrdW5ib3VuZCAneCkpICAgICA7IEBye1ZvaWQgaW5uZXIg YmluZGluZywgdGhlbiByZW1vdmUgaXQufQogIHgpICAgICAgICAgICAgICAgICAgICAgOyBAcntO b3cgb3V0ZXIgQGNvZGV7bGV0fSBiaW5kaW5nIGlzIHZpc2libGUufQogICAgIEByZXN1bHR7fSAy CkBlbmQgZ3JvdXAKQGVuZCBzbWFsbGV4YW1wbGUKQGVuZCBkZWZ1bgoKQGRlZnVuIGJvdW5kcCB2 YXJpYWJsZQpUaGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dH0gaWYgQHZhcnt2YXJpYWJsZX0g KGEgc3ltYm9sKSBpcyBub3QKdm9pZCwgYW5kIEBjb2Rle25pbH0gaWYgaXQgaXMgdm9pZC4KCkhl cmUgYXJlIHNvbWUgZXhhbXBsZXMgKGFzc3VtaW5nIGR5bmFtaWMgYmluZGluZyBpcyBpbiBlZmZl Y3QpOgoKQHNtYWxsZXhhbXBsZQpAZ3JvdXAKKGJvdW5kcCAnYWJyYWNhZGFicmEpICAgICAgICAg IDsgQHJ7U3RhcnRzIG91dCB2b2lkLn0KICAgICBAcmVzdWx0e30gbmlsCkBlbmQgZ3JvdXAKQGdy b3VwCihsZXQgKChhYnJhY2FkYWJyYSA1KSkgICAgICAgICA7IEBye0xvY2FsbHkgYmluZCBpdC59 CiAgKGJvdW5kcCAnYWJyYWNhZGFicmEpKQogICAgIEByZXN1bHR7fSB0CkBlbmQgZ3JvdXAKQGdy b3VwCihib3VuZHAgJ2FicmFjYWRhYnJhKSAgICAgICAgICA7IEBye1N0aWxsIGdsb2JhbGx5IHZv aWQufQogICAgIEByZXN1bHR7fSBuaWwKQGVuZCBncm91cApAZ3JvdXAKKHNldHEgYWJyYWNhZGFi cmEgNSkgICAgICAgICAgIDsgQHJ7TWFrZSBpdCBnbG9iYWxseSBub252b2lkLn0KICAgICBAcmVz dWx0e30gNQpAZW5kIGdyb3VwCkBncm91cAooYm91bmRwICdhYnJhY2FkYWJyYSkKICAgICBAcmVz dWx0e30gdApAZW5kIGdyb3VwCkBlbmQgc21hbGxleGFtcGxlCkBlbmQgZGVmdW4KCkBub2RlIERl ZmluaW5nIFZhcmlhYmxlcwpAc2VjdGlvbiBEZWZpbmluZyBHbG9iYWwgVmFyaWFibGVzCkBjaW5k ZXggdmFyaWFibGUgZGVmaW5pdGlvbgoKICBBIEBkZm57dmFyaWFibGUgZGVmaW5pdGlvbn0gaXMg YSBjb25zdHJ1Y3QgdGhhdCBhbm5vdW5jZXMgeW91cgppbnRlbnRpb24gdG8gdXNlIGEgc3ltYm9s IGFzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgSXQgdXNlcyB0aGUgc3BlY2lhbApmb3JtcyBAY29kZXtk ZWZ2YXJ9IG9yIEBjb2Rle2RlZmNvbnN0fSwgd2hpY2ggYXJlIGRvY3VtZW50ZWQgYmVsb3cuCgog IEEgdmFyaWFibGUgZGVmaW5pdGlvbiBzZXJ2ZXMgdGhyZWUgcHVycG9zZXMuICBGaXJzdCwgaXQg aW5mb3JtcwpwZW9wbGUgd2hvIHJlYWQgdGhlIGNvZGUgdGhhdCB0aGUgc3ltYm9sIGlzIEBlbXBo e2ludGVuZGVkfSB0byBiZSB1c2VkCmEgY2VydGFpbiB3YXkgKGFzIGEgdmFyaWFibGUpLiAgU2Vj b25kLCBpdCBpbmZvcm1zIHRoZSBMaXNwIHN5c3RlbSBvZgp0aGlzLCBvcHRpb25hbGx5IHN1cHBs eWluZyBhbiBpbml0aWFsIHZhbHVlIGFuZCBhIGRvY3VtZW50YXRpb24Kc3RyaW5nLiAgVGhpcmQs IGl0IHByb3ZpZGVzIGluZm9ybWF0aW9uIHRvIHByb2dyYW1taW5nIHRvb2xzIHN1Y2ggYXMKQGNv bW1hbmR7ZXRhZ3N9LCBhbGxvd2luZyB0aGVtIHRvIGZpbmQgd2hlcmUgdGhlIHZhcmlhYmxlIHdh cyBkZWZpbmVkLgoKICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEBjb2Rle2RlZmNvbnN0fSBhbmQg QGNvZGV7ZGVmdmFyfSBpcyBtYWlubHkgYQptYXR0ZXIgb2YgaW50ZW50LCBzZXJ2aW5nIHRvIGlu Zm9ybSBodW1hbiByZWFkZXJzIG9mIHdoZXRoZXIgdGhlIHZhbHVlCnNob3VsZCBldmVyIGNoYW5n ZS4gIEVtYWNzIExpc3AgZG9lcyBub3QgYWN0dWFsbHkgcHJldmVudCB5b3UgZnJvbQpjaGFuZ2lu ZyB0aGUgdmFsdWUgb2YgYSB2YXJpYWJsZSBkZWZpbmVkIHdpdGggQGNvZGV7ZGVmY29uc3R9LiAg T25lCm5vdGFibGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZm9ybXMgaXMgdGhhdCBAY29k ZXtkZWZjb25zdH0KdW5jb25kaXRpb25hbGx5IGluaXRpYWxpemVzIHRoZSB2YXJpYWJsZSwgd2hl cmVhcyBAY29kZXtkZWZ2YXJ9CmluaXRpYWxpemVzIGl0IG9ubHkgaWYgaXQgaXMgb3JpZ2luYWxs eSB2b2lkLgoKICBUbyBkZWZpbmUgYSBjdXN0b21pemFibGUgdmFyaWFibGUsIHlvdSBzaG91bGQg dXNlIEBjb2Rle2RlZmN1c3RvbX0KKHdoaWNoIGNhbGxzIEBjb2Rle2RlZnZhcn0gYXMgYSBzdWJy b3V0aW5lKS4gIEB4cmVme1ZhcmlhYmxlCkRlZmluaXRpb25zfS4KCkBkZWZzcGVjIGRlZnZhciBz eW1ib2wgW3ZhbHVlIFtkb2Mtc3RyaW5nXV0KVGhpcyBzcGVjaWFsIGZvcm0gZGVmaW5lcyBAdmFy e3N5bWJvbH0gYXMgYSB2YXJpYWJsZS4gIE5vdGUgdGhhdApAdmFye3N5bWJvbH0gaXMgbm90IGV2 YWx1YXRlZDsgdGhlIHN5bWJvbCB0byBiZSBkZWZpbmVkIHNob3VsZCBhcHBlYXIKZXhwbGljaXRs eSBpbiB0aGUgQGNvZGV7ZGVmdmFyfSBmb3JtLiAgVGhlIHZhcmlhYmxlIGlzIG1hcmtlZCBhcwpA ZGZue3NwZWNpYWx9LCBtZWFuaW5nIHRoYXQgaXQgc2hvdWxkIGFsd2F5cyBiZSBkeW5hbWljYWxs eSBib3VuZAooQHB4cmVme1ZhcmlhYmxlIFNjb3Bpbmd9KS4KCklmIEB2YXJ7dmFsdWV9IGlzIHNw ZWNpZmllZCwgYW5kIEB2YXJ7c3ltYm9sfSBpcyB2b2lkIChpLmUuLCBpdCBoYXMgbm8KZHluYW1p Y2FsbHkgYm91bmQgdmFsdWU7IEBweHJlZntWb2lkIFZhcmlhYmxlc30pLCB0aGVuIEB2YXJ7dmFs dWV9IGlzCmV2YWx1YXRlZCBhbmQgQHZhcntzeW1ib2x9IGlzIHNldCB0byB0aGUgcmVzdWx0LiAg QnV0IGlmIEB2YXJ7c3ltYm9sfQppcyBub3Qgdm9pZCwgQHZhcnt2YWx1ZX0gaXMgbm90IGV2YWx1 YXRlZCwgYW5kIEB2YXJ7c3ltYm9sfSdzIHZhbHVlIGlzCmxlZnQgdW5jaGFuZ2VkLiAgSWYgQHZh cnt2YWx1ZX0gaXMgb21pdHRlZCwgdGhlIHZhbHVlIG9mIEB2YXJ7c3ltYm9sfQppcyBub3QgY2hh bmdlZCBpbiBhbnkgY2FzZS4KCklmIEB2YXJ7c3ltYm9sfSBoYXMgYSBidWZmZXItbG9jYWwgYmlu ZGluZyBpbiB0aGUgY3VycmVudCBidWZmZXIsCkBjb2Rle2RlZnZhcn0gYWN0cyBvbiB0aGUgZGVm YXVsdCB2YWx1ZSwgd2hpY2ggaXMgYnVmZmVyLWluZGVwZW5kZW50LApyYXRoZXIgdGhhbiB0aGUg YnVmZmVyLWxvY2FsIGJpbmRpbmcuICBJdCBzZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGlmCnRoZSBk ZWZhdWx0IHZhbHVlIGlzIHZvaWQuICBAeHJlZntCdWZmZXItTG9jYWwgVmFyaWFibGVzfS4KCklm IEB2YXJ7c3ltYm9sfSBpcyBhbHJlYWR5IGxleGljYWxseSBib3VuZCAoZS5nLiwgaWYgdGhlIEBj b2Rle2RlZnZhcn0KZm9ybSBvY2N1cnMgaW4gYSBAY29kZXtsZXR9IGZvcm0gd2l0aCBsZXhpY2Fs IGJpbmRpbmcgZW5hYmxlZCksIHRoZW4KQGNvZGV7ZGVmdmFyfSBzZXRzIHRoZSBkeW5hbWljIHZh bHVlLiAgVGhlIGxleGljYWwgYmluZGluZyByZW1haW5zIGluCmVmZmVjdCB1bnRpbCBpdHMgYmlu ZGluZyBjb25zdHJ1Y3QgZXhpdHMuICBAeHJlZntWYXJpYWJsZSBTY29waW5nfS4KCldoZW4geW91 IGV2YWx1YXRlIGEgdG9wLWxldmVsIEBjb2Rle2RlZnZhcn0gZm9ybSB3aXRoIEBrYmR7Qy1NLXh9 IGluCkVtYWNzIExpc3AgbW9kZSAoQGNvZGV7ZXZhbC1kZWZ1bn0pLCBhIHNwZWNpYWwgZmVhdHVy ZSBvZgpAY29kZXtldmFsLWRlZnVufSBhcnJhbmdlcyB0byBzZXQgdGhlIHZhcmlhYmxlIHVuY29u ZGl0aW9uYWxseSwgd2l0aG91dAp0ZXN0aW5nIHdoZXRoZXIgaXRzIHZhbHVlIGlzIHZvaWQuCgpJ ZiB0aGUgQHZhcntkb2Mtc3RyaW5nfSBhcmd1bWVudCBpcyBzdXBwbGllZCwgaXQgc3BlY2lmaWVz IHRoZQpkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgdGhlIHZhcmlhYmxlIChzdG9yZWQgaW4gdGhl IHN5bWJvbCdzCkBjb2Rle3ZhcmlhYmxlLWRvY3VtZW50YXRpb259IHByb3BlcnR5KS4gIEB4cmVm e0RvY3VtZW50YXRpb259LgoKSGVyZSBhcmUgc29tZSBleGFtcGxlcy4gIFRoaXMgZm9ybSBkZWZp bmVzIEBjb2Rle2Zvb30gYnV0IGRvZXMgbm90CmluaXRpYWxpemUgaXQ6CgpAZXhhbXBsZQpAZ3Jv dXAKKGRlZnZhciBmb28pCiAgICAgQHJlc3VsdHt9IGZvbwpAZW5kIGdyb3VwCkBlbmQgZXhhbXBs ZQoKVGhpcyBleGFtcGxlIGluaXRpYWxpemVzIHRoZSB2YWx1ZSBvZiBAY29kZXtiYXJ9IHRvIEBj b2RlezIzfSwgYW5kIGdpdmVzCml0IGEgZG9jdW1lbnRhdGlvbiBzdHJpbmc6CgpAZXhhbXBsZQpA Z3JvdXAKKGRlZnZhciBiYXIgMjMKICAiVGhlIG5vcm1hbCB3ZWlnaHQgb2YgYSBiYXIuIikKICAg ICBAcmVzdWx0e30gYmFyCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpUaGUgQGNvZGV7ZGVmdmFy fSBmb3JtIHJldHVybnMgQHZhcntzeW1ib2x9LCBidXQgaXQgaXMgbm9ybWFsbHkgdXNlZAphdCB0 b3AgbGV2ZWwgaW4gYSBmaWxlIHdoZXJlIGl0cyB2YWx1ZSBkb2VzIG5vdCBtYXR0ZXIuCkBlbmQg ZGVmc3BlYwoKQGNpbmRleCBjb25zdGFudCB2YXJpYWJsZXMKQGRlZnNwZWMgZGVmY29uc3Qgc3lt Ym9sIHZhbHVlIFtkb2Mtc3RyaW5nXQpUaGlzIHNwZWNpYWwgZm9ybSBkZWZpbmVzIEB2YXJ7c3lt Ym9sfSBhcyBhIHZhbHVlIGFuZCBpbml0aWFsaXplcyBpdC4KSXQgaW5mb3JtcyBhIHBlcnNvbiBy ZWFkaW5nIHlvdXIgY29kZSB0aGF0IEB2YXJ7c3ltYm9sfSBoYXMgYSBzdGFuZGFyZApnbG9iYWwg dmFsdWUsIGVzdGFibGlzaGVkIGhlcmUsIHRoYXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGJ5IHRo ZSB1c2VyCm9yIGJ5IG90aGVyIHByb2dyYW1zLiAgTm90ZSB0aGF0IEB2YXJ7c3ltYm9sfSBpcyBu b3QgZXZhbHVhdGVkOyB0aGUKc3ltYm9sIHRvIGJlIGRlZmluZWQgbXVzdCBhcHBlYXIgZXhwbGlj aXRseSBpbiB0aGUgQGNvZGV7ZGVmY29uc3R9LgoKVGhlIEBjb2Rle2RlZmNvbnN0fSBmb3JtLCBs aWtlIEBjb2Rle2RlZnZhcn0sIG1hcmtzIHRoZSB2YXJpYWJsZSBhcwpAZGZue3NwZWNpYWx9LCBt ZWFuaW5nIHRoYXQgaXQgc2hvdWxkIGFsd2F5cyBiZSBkeW5hbWljYWxseSBib3VuZAooQHB4cmVm e1ZhcmlhYmxlIFNjb3Bpbmd9KS4gIEluIGFkZGl0aW9uLCBpdCBtYXJrcyB0aGUgdmFyaWFibGUg YXMKcmlza3kgKEBweHJlZntGaWxlIExvY2FsIFZhcmlhYmxlc30pLgoKQGNvZGV7ZGVmY29uc3R9 IGFsd2F5cyBldmFsdWF0ZXMgQHZhcnt2YWx1ZX0sIGFuZCBzZXRzIHRoZSB2YWx1ZSBvZgpAdmFy e3N5bWJvbH0gdG8gdGhlIHJlc3VsdC4gIElmIEB2YXJ7c3ltYm9sfSBkb2VzIGhhdmUgYSBidWZm ZXItbG9jYWwKYmluZGluZyBpbiB0aGUgY3VycmVudCBidWZmZXIsIEBjb2Rle2RlZmNvbnN0fSBz ZXRzIHRoZSBkZWZhdWx0IHZhbHVlLApub3QgdGhlIGJ1ZmZlci1sb2NhbCB2YWx1ZS4gIChCdXQg eW91IHNob3VsZCBub3QgYmUgbWFraW5nCmJ1ZmZlci1sb2NhbCBiaW5kaW5ncyBmb3IgYSBzeW1i b2wgdGhhdCBpcyBkZWZpbmVkIHdpdGgKQGNvZGV7ZGVmY29uc3R9LikKCkFuIGV4YW1wbGUgb2Yg dGhlIHVzZSBvZiBAY29kZXtkZWZjb25zdH0gaXMgRW1hY3MncyBkZWZpbml0aW9uIG9mCkBjb2Rl e2Zsb2F0LXBpfS0tLXRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgQG1hdGh7cGl9LCB3aGljaCBv dWdodCBub3QKdG8gYmUgY2hhbmdlZCBieSBhbnlvbmUgKGF0dGVtcHRzIGJ5IHRoZSBJbmRpYW5h IFN0YXRlIExlZ2lzbGF0dXJlCm5vdHdpdGhzdGFuZGluZykuICBBcyB0aGUgc2Vjb25kIGZvcm0g aWxsdXN0cmF0ZXMsIGhvd2V2ZXIsCkBjb2Rle2RlZmNvbnN0fSBpcyBvbmx5IGFkdmlzb3J5LgoK QGV4YW1wbGUKQGdyb3VwCihkZWZjb25zdCBmbG9hdC1waSAzLjE0MTU5MjY1MzU4OTc5MyAiVGhl IHZhbHVlIG9mIFBpLiIpCiAgICAgQHJlc3VsdHt9IGZsb2F0LXBpCkBlbmQgZ3JvdXAKQGdyb3Vw CihzZXRxIGZsb2F0LXBpIDMpCiAgICAgQHJlc3VsdHt9IGZsb2F0LXBpCkBlbmQgZ3JvdXAKQGdy b3VwCmZsb2F0LXBpCiAgICAgQHJlc3VsdHt9IDMKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKQGVu ZCBkZWZzcGVjCgogIEBzdHJvbmd7V2FybmluZzp9IElmIHlvdSB1c2UgYSBAY29kZXtkZWZjb25z dH0gb3IgQGNvZGV7ZGVmdmFyfQpzcGVjaWFsIGZvcm0gd2hpbGUgdGhlIHZhcmlhYmxlIGhhcyBh IGxvY2FsIGJpbmRpbmcgKG1hZGUgd2l0aApAY29kZXtsZXR9LCBvciBhIGZ1bmN0aW9uIGFyZ3Vt ZW50KSwgaXQgc2V0cyB0aGUgbG9jYWwgYmluZGluZyByYXRoZXIKdGhhbiB0aGUgZ2xvYmFsIGJp bmRpbmcuICBUaGlzIGlzIG5vdCB3aGF0IHlvdSB1c3VhbGx5IHdhbnQuICBUbwpwcmV2ZW50IHRo aXMsIHVzZSB0aGVzZSBzcGVjaWFsIGZvcm1zIGF0IHRvcCBsZXZlbCBpbiBhIGZpbGUsIHdoZXJl Cm5vcm1hbGx5IG5vIGxvY2FsIGJpbmRpbmcgaXMgaW4gZWZmZWN0LCBhbmQgbWFrZSBzdXJlIHRv IGxvYWQgdGhlIGZpbGUKYmVmb3JlIG1ha2luZyBhIGxvY2FsIGJpbmRpbmcgZm9yIHRoZSB2YXJp YWJsZS4KCkBub2RlIFRpcHMgZm9yIERlZmluaW5nCkBzZWN0aW9uIFRpcHMgZm9yIERlZmluaW5n IFZhcmlhYmxlcyBSb2J1c3RseQoKICBXaGVuIHlvdSBkZWZpbmUgYSB2YXJpYWJsZSB3aG9zZSB2 YWx1ZSBpcyBhIGZ1bmN0aW9uLCBvciBhIGxpc3Qgb2YKZnVuY3Rpb25zLCB1c2UgYSBuYW1lIHRo YXQgZW5kcyBpbiBAc2FtcHstZnVuY3Rpb259IG9yCkBzYW1wey1mdW5jdGlvbnN9LCByZXNwZWN0 aXZlbHkuCgogIFRoZXJlIGFyZSBzZXZlcmFsIG90aGVyIHZhcmlhYmxlIG5hbWUgY29udmVudGlv bnM7CmhlcmUgaXMgYSBjb21wbGV0ZSBsaXN0OgoKQHRhYmxlIEBzYW1wCkBpdGVtIEBkb3Rze30t aG9vawpUaGUgdmFyaWFibGUgaXMgYSBub3JtYWwgaG9vayAoQHB4cmVme0hvb2tzfSkuCgpAaXRl bSBAZG90c3t9LWZ1bmN0aW9uClRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLgoKQGl0ZW0gQGRvdHN7 fS1mdW5jdGlvbnMKVGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBmdW5jdGlvbnMuCgpAaXRlbSBAZG90 c3t9LWZvcm0KVGhlIHZhbHVlIGlzIGEgZm9ybSAoYW4gZXhwcmVzc2lvbikuCgpAaXRlbSBAZG90 c3t9LWZvcm1zClRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgZm9ybXMgKGV4cHJlc3Npb25zKS4KCkBp dGVtIEBkb3Rze30tcHJlZGljYXRlClRoZSB2YWx1ZSBpcyBhIHByZWRpY2F0ZS0tLWEgZnVuY3Rp b24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgcmV0dXJucwpub24tQGNvZGV7bmlsfSBmb3Igc3VjY2Vz cyBhbmQgQGNvZGV7bmlsfSBmb3IgZmFpbHVyZS4KCkBpdGVtIEBkb3Rze30tZmxhZwpUaGUgdmFs dWUgaXMgc2lnbmlmaWNhbnQgb25seSBhcyB0byB3aGV0aGVyIGl0IGlzIEBjb2Rle25pbH0gb3Ig bm90LgpTaW5jZSBzdWNoIHZhcmlhYmxlcyBvZnRlbiBlbmQgdXAgYWNxdWlyaW5nIG1vcmUgdmFs dWVzIG92ZXIgdGltZSwKdGhpcyBjb252ZW50aW9uIGlzIG5vdCBzdHJvbmdseSByZWNvbW1lbmRl ZC4KCkBpdGVtIEBkb3Rze30tcHJvZ3JhbQpUaGUgdmFsdWUgaXMgYSBwcm9ncmFtIG5hbWUuCgpA aXRlbSBAZG90c3t9LWNvbW1hbmQKVGhlIHZhbHVlIGlzIGEgd2hvbGUgc2hlbGwgY29tbWFuZC4K CkBpdGVtIEBkb3Rze30tc3dpdGNoZXMKVGhlIHZhbHVlIHNwZWNpZmllcyBvcHRpb25zIGZvciBh IGNvbW1hbmQuCkBlbmQgdGFibGUKCiAgV2hlbiB5b3UgZGVmaW5lIGEgdmFyaWFibGUsIGFsd2F5 cyBjb25zaWRlciB3aGV0aGVyIHlvdSBzaG91bGQgbWFyawppdCBhcyBzYWZlIG9yIHJpc2t5OyBz ZWUgQHJlZntGaWxlIExvY2FsIFZhcmlhYmxlc30uCgogIFdoZW4gZGVmaW5pbmcgYW5kIGluaXRp YWxpemluZyBhIHZhcmlhYmxlIHRoYXQgaG9sZHMgYSBjb21wbGljYXRlZAp2YWx1ZSAoc3VjaCBh cyBhIGtleW1hcCB3aXRoIGJpbmRpbmdzIGluIGl0KSwgaXQncyBiZXN0IHRvIHB1dCB0aGUKZW50 aXJlIGNvbXB1dGF0aW9uIG9mIHRoZSB2YWx1ZSBpbnRvIHRoZSBAY29kZXtkZWZ2YXJ9LCBsaWtl IHRoaXM6CgpAZXhhbXBsZQooZGVmdmFyIG15LW1vZGUtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1z cGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1hIiAnbXktY29tbWFu ZCkKICAgIEBkb3Rze30KICAgIG1hcCkKICBAdmFye2RvY3N0cmluZ30pCkBlbmQgZXhhbXBsZQoK QG5vaW5kZW50ClRoaXMgbWV0aG9kIGhhcyBzZXZlcmFsIGJlbmVmaXRzLiAgRmlyc3QsIGlmIHRo ZSB1c2VyIHF1aXRzIHdoaWxlCmxvYWRpbmcgdGhlIGZpbGUsIHRoZSB2YXJpYWJsZSBpcyBlaXRo ZXIgc3RpbGwgdW5pbml0aWFsaXplZCBvcgppbml0aWFsaXplZCBwcm9wZXJseSwgbmV2ZXIgaW4t YmV0d2Vlbi4gIElmIGl0IGlzIHN0aWxsIHVuaW5pdGlhbGl6ZWQsCnJlbG9hZGluZyB0aGUgZmls ZSB3aWxsIGluaXRpYWxpemUgaXQgcHJvcGVybHkuICBTZWNvbmQsIHJlbG9hZGluZyB0aGUKZmls ZSBvbmNlIHRoZSB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB3aWxsIG5vdCBhbHRlciBpdDsgdGhh dCBpcwppbXBvcnRhbnQgaWYgdGhlIHVzZXIgaGFzIHJ1biBob29rcyB0byBhbHRlciBwYXJ0IG9m IHRoZSBjb250ZW50cwooc3VjaCBhcywgdG8gcmViaW5kIGtleXMpLiAgVGhpcmQsIGV2YWx1YXRp bmcgdGhlIEBjb2Rle2RlZnZhcn0gZm9ybQp3aXRoIEBrYmR7Qy1NLXh9IHdpbGwgcmVpbml0aWFs aXplIHRoZSBtYXAgY29tcGxldGVseS4KCiAgUHV0dGluZyBzbyBtdWNoIGNvZGUgaW4gdGhlIEBj b2Rle2RlZnZhcn0gZm9ybSBoYXMgb25lIGRpc2FkdmFudGFnZToKaXQgcHV0cyB0aGUgZG9jdW1l bnRhdGlvbiBzdHJpbmcgZmFyIGF3YXkgZnJvbSB0aGUgbGluZSB3aGljaCBuYW1lcyB0aGUKdmFy aWFibGUuICBIZXJlJ3MgYSBzYWZlIHdheSB0byBhdm9pZCB0aGF0OgoKQGV4YW1wbGUKKGRlZnZh ciBteS1tb2RlLW1hcCBuaWwKICBAdmFye2RvY3N0cmluZ30pCih1bmxlc3MgbXktbW9kZS1tYXAK ICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCAi XEMtY1xDLWEiICdteS1jb21tYW5kKQogICAgQGRvdHN7fQogICAgKHNldHEgbXktbW9kZS1tYXAg bWFwKSkpCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50ClRoaXMgaGFzIGFsbCB0aGUgc2FtZSBhZHZh bnRhZ2VzIGFzIHB1dHRpbmcgdGhlIGluaXRpYWxpemF0aW9uIGluc2lkZQp0aGUgQGNvZGV7ZGVm dmFyfSwgZXhjZXB0IHRoYXQgeW91IG11c3QgdHlwZSBAa2Jke0MtTS14fSB0d2ljZSwgb25jZSBv bgplYWNoIGZvcm0sIGlmIHlvdSBkbyB3YW50IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGUu CgpAbm9kZSBBY2Nlc3NpbmcgVmFyaWFibGVzCkBzZWN0aW9uIEFjY2Vzc2luZyBWYXJpYWJsZSBW YWx1ZXMKCiAgVGhlIHVzdWFsIHdheSB0byByZWZlcmVuY2UgYSB2YXJpYWJsZSBpcyB0byB3cml0 ZSB0aGUgc3ltYm9sIHdoaWNoCm5hbWVzIGl0LiAgQHhyZWZ7U3ltYm9sIEZvcm1zfS4KCiAgT2Nj YXNpb25hbGx5LCB5b3UgbWF5IHdhbnQgdG8gcmVmZXJlbmNlIGEgdmFyaWFibGUgd2hpY2ggaXMg b25seQpkZXRlcm1pbmVkIGF0IHJ1biB0aW1lLiAgSW4gdGhhdCBjYXNlLCB5b3UgY2Fubm90IHNw ZWNpZnkgdGhlIHZhcmlhYmxlCm5hbWUgaW4gdGhlIHRleHQgb2YgdGhlIHByb2dyYW0uICBZb3Ug Y2FuIHVzZSB0aGUgQGNvZGV7c3ltYm9sLXZhbHVlfQpmdW5jdGlvbiB0byBleHRyYWN0IHRoZSB2 YWx1ZS4KCkBkZWZ1biBzeW1ib2wtdmFsdWUgc3ltYm9sClRoaXMgZnVuY3Rpb24gcmV0dXJucyB0 aGUgdmFsdWUgc3RvcmVkIGluIEB2YXJ7c3ltYm9sfSdzIHZhbHVlIGNlbGwuClRoaXMgaXMgd2hl cmUgdGhlIHZhcmlhYmxlJ3MgY3VycmVudCAoZHluYW1pYykgdmFsdWUgaXMgc3RvcmVkLiAgSWYK dGhlIHZhcmlhYmxlIGhhcyBubyBsb2NhbCBiaW5kaW5nLCB0aGlzIGlzIHNpbXBseSBpdHMgZ2xv YmFsIHZhbHVlLgpJZiB0aGUgdmFyaWFibGUgaXMgdm9pZCwgYSBAY29kZXt2b2lkLXZhcmlhYmxl fSBlcnJvciBpcyBzaWduYWxlZC4KCklmIHRoZSB2YXJpYWJsZSBpcyBsZXhpY2FsbHkgYm91bmQs IHRoZSB2YWx1ZSByZXBvcnRlZCBieQpAY29kZXtzeW1ib2wtdmFsdWV9IGlzIG5vdCBuZWNlc3Nh cmlseSB0aGUgc2FtZSBhcyB0aGUgdmFyaWFibGUncwpsZXhpY2FsIHZhbHVlLCB3aGljaCBpcyBk ZXRlcm1pbmVkIGJ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHJhdGhlcgp0aGFuIHRoZSBzeW1i b2wncyB2YWx1ZSBjZWxsLiAgQHhyZWZ7VmFyaWFibGUgU2NvcGluZ30uCgpAZXhhbXBsZQpAZ3Jv dXAKKHNldHEgYWJyYWNhZGFicmEgNSkKICAgICBAcmVzdWx0e30gNQpAZW5kIGdyb3VwCkBncm91 cAooc2V0cSBmb28gOSkKICAgICBAcmVzdWx0e30gOQpAZW5kIGdyb3VwCgpAZ3JvdXAKOzsgQHJ7 SGVyZSB0aGUgc3ltYm9sIEBjb2Rle2FicmFjYWRhYnJhfX0KOzsgICBAcntpcyB0aGUgc3ltYm9s IHdob3NlIHZhbHVlIGlzIGV4YW1pbmVkLn0KKGxldCAoKGFicmFjYWRhYnJhICdmb28pKQogIChz eW1ib2wtdmFsdWUgJ2FicmFjYWRhYnJhKSkKICAgICBAcmVzdWx0e30gZm9vCkBlbmQgZ3JvdXAK CkBncm91cAo7OyBAcntIZXJlLCB0aGUgdmFsdWUgb2YgQGNvZGV7YWJyYWNhZGFicmF9LH0KOzsg ICBAcnt3aGljaCBpcyBAY29kZXtmb299LH0KOzsgICBAcntpcyB0aGUgc3ltYm9sIHdob3NlIHZh bHVlIGlzIGV4YW1pbmVkLn0KKGxldCAoKGFicmFjYWRhYnJhICdmb28pKQogIChzeW1ib2wtdmFs dWUgYWJyYWNhZGFicmEpKQogICAgIEByZXN1bHR7fSA5CkBlbmQgZ3JvdXAKCkBncm91cAooc3lt Ym9sLXZhbHVlICdhYnJhY2FkYWJyYSkKICAgICBAcmVzdWx0e30gNQpAZW5kIGdyb3VwCkBlbmQg ZXhhbXBsZQpAZW5kIGRlZnVuCgpAbm9kZSBTZXR0aW5nIFZhcmlhYmxlcwpAc2VjdGlvbiBTZXR0 aW5nIFZhcmlhYmxlIFZhbHVlcwoKICBUaGUgdXN1YWwgd2F5IHRvIGNoYW5nZSB0aGUgdmFsdWUg b2YgYSB2YXJpYWJsZSBpcyB3aXRoIHRoZSBzcGVjaWFsCmZvcm0gQGNvZGV7c2V0cX0uICBXaGVu IHlvdSBuZWVkIHRvIGNvbXB1dGUgdGhlIGNob2ljZSBvZiB2YXJpYWJsZSBhdApydW4gdGltZSwg dXNlIHRoZSBmdW5jdGlvbiBAY29kZXtzZXR9LgoKQGRlZnNwZWMgc2V0cSBbc3ltYm9sIGZvcm1d QGRvdHN7fQpUaGlzIHNwZWNpYWwgZm9ybSBpcyB0aGUgbW9zdCBjb21tb24gbWV0aG9kIG9mIGNo YW5naW5nIGEgdmFyaWFibGUncwp2YWx1ZS4gIEVhY2ggQHZhcntzeW1ib2x9IGlzIGdpdmVuIGEg bmV3IHZhbHVlLCB3aGljaCBpcyB0aGUgcmVzdWx0IG9mCmV2YWx1YXRpbmcgdGhlIGNvcnJlc3Bv bmRpbmcgQHZhcntmb3JtfS4gIFRoZSBjdXJyZW50IGJpbmRpbmcgb2YgdGhlCnN5bWJvbCBpcyBj aGFuZ2VkLgoKQGNvZGV7c2V0cX0gZG9lcyBub3QgZXZhbHVhdGUgQHZhcntzeW1ib2x9OyBpdCBz ZXRzIHRoZSBzeW1ib2wgdGhhdCB5b3UKd3JpdGUuICBXZSBzYXkgdGhhdCB0aGlzIGFyZ3VtZW50 IGlzIEBkZm57YXV0b21hdGljYWxseSBxdW90ZWR9LiAgVGhlCkBzYW1we3F9IGluIEBjb2Rle3Nl dHF9IHN0YW5kcyBmb3IgYGBxdW90ZWQnJy4KClRoZSB2YWx1ZSBvZiB0aGUgQGNvZGV7c2V0cX0g Zm9ybSBpcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgQHZhcntmb3JtfS4KCkBleGFtcGxlCkBncm91 cAooc2V0cSB4ICgxKyAyKSkKICAgICBAcmVzdWx0e30gMwpAZW5kIGdyb3VwCnggICAgICAgICAg ICAgICAgICAgOyBAcntAY29kZXt4fSBub3cgaGFzIGEgZ2xvYmFsIHZhbHVlLn0KICAgICBAcmVz dWx0e30gMwpAZ3JvdXAKKGxldCAoKHggNSkpCiAgKHNldHEgeCA2KSAgICAgICAgOyBAcntUaGUg bG9jYWwgYmluZGluZyBvZiBAY29kZXt4fSBpcyBzZXQufQogIHgpCiAgICAgQHJlc3VsdHt9IDYK QGVuZCBncm91cAp4ICAgICAgICAgICAgICAgICAgIDsgQHJ7VGhlIGdsb2JhbCB2YWx1ZSBpcyB1 bmNoYW5nZWQufQogICAgIEByZXN1bHR7fSAzCkBlbmQgZXhhbXBsZQoKTm90ZSB0aGF0IHRoZSBm aXJzdCBAdmFye2Zvcm19IGlzIGV2YWx1YXRlZCwgdGhlbiB0aGUgZmlyc3QKQHZhcntzeW1ib2x9 IGlzIHNldCwgdGhlbiB0aGUgc2Vjb25kIEB2YXJ7Zm9ybX0gaXMgZXZhbHVhdGVkLCB0aGVuIHRo ZQpzZWNvbmQgQHZhcntzeW1ib2x9IGlzIHNldCwgYW5kIHNvIG9uOgoKQGV4YW1wbGUKQGdyb3Vw CihzZXRxIHggMTAgICAgICAgICAgOyBAcntOb3RpY2UgdGhhdCBAY29kZXt4fSBpcyBzZXQgYmVm b3JlfQogICAgICB5ICgxKyB4KSkgICAgIDsgICBAcnt0aGUgdmFsdWUgb2YgQGNvZGV7eX0gaXMg Y29tcHV0ZWQufQogICAgIEByZXN1bHR7fSAxMQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQpAZW5k IGRlZnNwZWMKCkBkZWZ1biBzZXQgc3ltYm9sIHZhbHVlClRoaXMgZnVuY3Rpb24gcHV0cyBAdmFy e3ZhbHVlfSBpbiB0aGUgdmFsdWUgY2VsbCBvZiBAdmFye3N5bWJvbH0uClNpbmNlIGl0IGlzIGEg ZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBzcGVjaWFsIGZvcm0sIHRoZSBleHByZXNzaW9uCndyaXR0 ZW4gZm9yIEB2YXJ7c3ltYm9sfSBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIHRoZSBzeW1ib2wgdG8g c2V0LgpUaGUgcmV0dXJuIHZhbHVlIGlzIEB2YXJ7dmFsdWV9LgoKV2hlbiBkeW5hbWljIHZhcmlh YmxlIGJpbmRpbmcgaXMgaW4gZWZmZWN0ICh0aGUgZGVmYXVsdCksIEBjb2Rle3NldH0KaGFzIHRo ZSBzYW1lIGVmZmVjdCBhcyBAY29kZXtzZXRxfSwgYXBhcnQgZnJvbSB0aGUgZmFjdCB0aGF0CkBj b2Rle3NldH0gZXZhbHVhdGVzIGl0cyBAdmFye3N5bWJvbH0gYXJndW1lbnQgd2hlcmVhcyBAY29k ZXtzZXRxfQpkb2VzIG5vdC4gIEJ1dCB3aGVuIGEgdmFyaWFibGUgaXMgbGV4aWNhbGx5IGJvdW5k LCBAY29kZXtzZXR9IGFmZmVjdHMKaXRzIEBlbXBoe2R5bmFtaWN9IHZhbHVlLCB3aGVyZWFzIEBj b2Rle3NldHF9IGFmZmVjdHMgaXRzIGN1cnJlbnQKKGxleGljYWwpIHZhbHVlLiAgQHhyZWZ7VmFy aWFibGUgU2NvcGluZ30uCgpAZXhhbXBsZQpAZ3JvdXAKKHNldCBvbmUgMSkKQGVycm9ye30gU3lt Ym9sJ3MgdmFsdWUgYXMgdmFyaWFibGUgaXMgdm9pZDogb25lCkBlbmQgZ3JvdXAKQGdyb3VwCihz ZXQgJ29uZSAxKQogICAgIEByZXN1bHR7fSAxCkBlbmQgZ3JvdXAKQGdyb3VwCihzZXQgJ3R3byAn b25lKQogICAgIEByZXN1bHR7fSBvbmUKQGVuZCBncm91cApAZ3JvdXAKKHNldCB0d28gMikgICAg ICAgICA7IEBye0Bjb2Rle3R3b30gZXZhbHVhdGVzIHRvIHN5bWJvbCBAY29kZXtvbmV9Ln0KICAg ICBAcmVzdWx0e30gMgpAZW5kIGdyb3VwCkBncm91cApvbmUgICAgICAgICAgICAgICAgIDsgQHJ7 U28gaXQgaXMgQGNvZGV7b25lfSB0aGF0IHdhcyBzZXQufQogICAgIEByZXN1bHR7fSAyCihsZXQg KChvbmUgMSkpICAgICAgOyBAcntUaGlzIGJpbmRpbmcgb2YgQGNvZGV7b25lfSBpcyBzZXQsfQog IChzZXQgJ29uZSAzKSAgICAgIDsgICBAcntub3QgdGhlIGdsb2JhbCB2YWx1ZS59CiAgb25lKQog ICAgIEByZXN1bHR7fSAzCkBlbmQgZ3JvdXAKQGdyb3VwCm9uZQogICAgIEByZXN1bHR7fSAyCkBl bmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpJZiBAdmFye3N5bWJvbH0gaXMgbm90IGFjdHVhbGx5IGEg c3ltYm9sLCBhIEBjb2Rle3dyb25nLXR5cGUtYXJndW1lbnR9CmVycm9yIGlzIHNpZ25hbGVkLgoK QGV4YW1wbGUKKHNldCAnKHggeSkgJ3opCkBlcnJvcnt9IFdyb25nIHR5cGUgYXJndW1lbnQ6IHN5 bWJvbHAsICh4IHkpCkBlbmQgZXhhbXBsZQpAZW5kIGRlZnVuCgpAbm9kZSBXYXRjaGluZyBWYXJp YWJsZXMKQHNlY3Rpb24gUnVubmluZyBhIGZ1bmN0aW9uIHdoZW4gYSB2YXJpYWJsZSBpcyBjaGFu Z2VkLgpAY2luZGV4IHZhcmlhYmxlIHdhdGNocG9pbnRzCkBjaW5kZXggd2F0Y2hwb2ludHMgZm9y IExpc3AgdmFyaWFibGVzCgpJdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIHRha2Ugc29tZSBhY3Rp b24gd2hlbiBhIHZhcmlhYmxlIGNoYW5nZXMgaXRzCnZhbHVlLiAgVGhlIHdhdGNocG9pbnQgZmFj aWxpdHkgcHJvdmlkZXMgdGhlIG1lYW5zIHRvIGRvIHNvLiAgU29tZQpwb3NzaWJsZSB1c2VzIGZv ciB0aGlzIGZlYXR1cmUgaW5jbHVkZSBrZWVwaW5nIGRpc3BsYXkgaW4gc3luYyB3aXRoCnZhcmlh YmxlIHNldHRpbmdzLCBhbmQgaW52b2tpbmcgdGhlIGRlYnVnZ2VyIHRvIHRyYWNrIGRvd24gdW5l eHBlY3RlZApjaGFuZ2VzIHRvIHZhcmlhYmxlcyAoQHB4cmVme1ZhcmlhYmxlIERlYnVnZ2luZ30p LgoKVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbWF5IGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSBhbmQg cXVlcnkgdGhlIHdhdGNoCmZ1bmN0aW9ucyBmb3IgYSB2YXJpYWJsZS4KCkBkZWZ1biBhZGQtdmFy aWFibGUtd2F0Y2hlciBzeW1ib2wgd2F0Y2gtZnVuY3Rpb24KVGhpcyBmdW5jdGlvbiBhcnJhbmdl cyBmb3IgQHZhcnt3YXRjaC1mdW5jdGlvbn0gdG8gYmUgY2FsbGVkIHdoZW5ldmVyCkB2YXJ7c3lt Ym9sfSBpcyBtb2RpZmllZC4gIE1vZGlmaWNhdGlvbnMgdGhyb3VnaCBhbGlhc2VzCihAcHhyZWZ7 VmFyaWFibGUgQWxpYXNlc30pIHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QuCgpAdmFye3dhdGNo LWZ1bmN0aW9ufSB3aWxsIGJlIGNhbGxlZCB3aXRoIDQgYXJndW1lbnRzOiAoQHZhcntzeW1ib2x9 CkB2YXJ7bmV3dmFsfSBAdmFye29wZXJhdGlvbn0gQHZhcnt3aGVyZX0pLgoKQHZhcntzeW1ib2x9 IGlzIHRoZSB2YXJpYWJsZSBiZWluZyBjaGFuZ2VkLgpAdmFye25ld3ZhbH0gaXMgdGhlIHZhbHVl IGl0IHdpbGwgYmUgY2hhbmdlZCB0by4KQHZhcntvcGVyYXRpb259IGlzIGEgc3ltYm9sIHJlcHJl c2VudGluZyB0aGUga2luZCBvZiBjaGFuZ2UsIG9uZSBvZjoKYHNldCcsIGBsZXQnLCBgdW5sZXQn LCBgbWFrdW5ib3VuZCcsIGFuZCBgZGVmdmFyYWxpYXMnLgpAdmFye3doZXJlfSBpcyBhIGJ1ZmZl ciBpZiB0aGUgYnVmZmVyLWxvY2FsIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBpcwpiZWluZyBjaGFu Z2VkLCBuaWwgb3RoZXJ3aXNlLgpAZW5kIGRlZnVuCgpAZGVmdW4gcmVtb3ZlLXZhcmlhYmxlLXdh dGNoIHN5bWJvbCB3YXRjaC1mdW5jdGlvbgpUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgQHZhcnt3YXRj aC1mdW5jdGlvbn0gZnJvbSBAdmFye3N5bWJvbH0ncyBsaXN0IG9mCndhdGNoZXJzLgpAZW5kIGRl ZnVuCgpAZGVmdW4gZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIHN5bWJvbApUaGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIGxpc3Qgb2YgQHZhcntzeW1ib2x9J3MgYWN0aXZlIHdhdGNoZXIKZnVuY3Rpb25z LgpAZW5kIGRlZnVuCgpAc3Vic2VjdGlvbiBMaW1pdGF0aW9ucwoKVGhlcmUgYXJlIGEgY291cGxl IG9mIHdheXMgaW4gd2hpY2ggYSB2YXJpYWJsZSBjb3VsZCBiZSBtb2RpZmllZCAob3IgYXQKbGVh c3QgYXBwZWFyIHRvIGJlIG1vZGlmaWVkKSB3aXRob3V0IHRyaWdnZXJpbmcgYSB3YXRjaHBvaW50 LgoKU2luY2Ugd2F0Y2hwb2ludHMgYXJlIGF0dGFjaGVkIHRvIHN5bWJvbHMsIG1vZGlmaWNhdGlv biB0byB0aGUKb2JqZWN0cyBjb250YWluZWQgd2l0aGluIHZhcmlhYmxlcyAoZS5nLiwgYnkgYSBs aXN0IG1vZGlmaWNhdGlvbgpmdW5jdGlvbiBAcHhyZWZ7TW9kaWZ5aW5nIExpc3RzfSkgaXMgbm90 IGNhdWdodCBieSB0aGlzIG1lY2hhbmlzbS4KCkFkZGl0aW9uYWxseSwgQyBjb2RlIGNhbiBtb2Rp ZnkgdGhlIHZhbHVlIG9mIHZhcmlhYmxlcyBkaXJlY3RseSwKYnlwYXNzaW5nIHRoZSB3YXRjaHBv aW50IG1lY2hhbmlzbS4KCkEgbWlub3IgbGltaXRhdGlvbiBvZiB0aGlzIGZlYXR1cmUsIGFnYWlu IGJlY2F1c2UgaXQgdGFyZ2V0cyBzeW1ib2xzLAppcyB0aGF0IG9ubHkgdmFyaWFibGVzIG9mIGR5 bmFtaWMgc2NvcGUgbWF5IGJlIHdhdGNoZWQuICBUaGlzIHBvc2VzCmxpdHRsZSBkaWZmaWN1bHR5 LCBzaW5jZSBtb2RpZmljYXRpb25zIHRvIGxleGljYWwgdmFyaWFibGVzIGNhbiBiZQpkaXNjb3Zl cmVkIGVhc2lseSBieSBpbnNwZWN0aW5nIHRoZSBjb2RlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhl CnZhcmlhYmxlICh1bmxpa2UgZHluYW1pYyB2YXJpYWJsZXMsIHdoaWNoIGNhbiBiZSBtb2RpZmll ZCBieSBhbnkgY29kZQphdCBhbGwsIEBweHJlZntWYXJpYWJsZSBTY29waW5nfSkuCgoKQG5vZGUg VmFyaWFibGUgU2NvcGluZwpAc2VjdGlvbiBTY29waW5nIFJ1bGVzIGZvciBWYXJpYWJsZSBCaW5k aW5ncwpAY2luZGV4IHNjb3BpbmcgcnVsZQoKICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBiaW5k aW5nIGZvciBhIHZhcmlhYmxlLCB0aGF0IGJpbmRpbmcgdGFrZXMKZWZmZWN0IG9ubHkgd2l0aGlu IGEgbGltaXRlZCBwb3J0aW9uIG9mIHRoZSBwcm9ncmFtIChAcHhyZWZ7TG9jYWwKVmFyaWFibGVz fSkuICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGV4YWN0bHkgd2hhdCB0aGlzIG1lYW5zLgoKQGNp bmRleCBzY29wZQpAY2luZGV4IGV4dGVudAogIEVhY2ggbG9jYWwgYmluZGluZyBoYXMgYSBjZXJ0 YWluIEBkZm57c2NvcGV9IGFuZCBAZGZue2V4dGVudH0uCkBkZm57U2NvcGV9IHJlZmVycyB0byBA ZW1waHt3aGVyZX0gaW4gdGhlIHRleHR1YWwgc291cmNlIGNvZGUgdGhlCmJpbmRpbmcgY2FuIGJl IGFjY2Vzc2VkLiAgQGRmbntFeHRlbnR9IHJlZmVycyB0byBAZW1waHt3aGVufSwgYXMgdGhlCnBy b2dyYW0gaXMgZXhlY3V0aW5nLCB0aGUgYmluZGluZyBleGlzdHMuCgpAY2luZGV4IGR5bmFtaWMg YmluZGluZwpAY2luZGV4IGR5bmFtaWMgc2NvcGUKQGNpbmRleCBkeW5hbWljIGV4dGVudAogIEJ5 IGRlZmF1bHQsIHRoZSBsb2NhbCBiaW5kaW5ncyB0aGF0IEVtYWNzIGNyZWF0ZXMgYXJlIEBkZm57 ZHluYW1pYwpiaW5kaW5nc30uICBTdWNoIGEgYmluZGluZyBoYXMgQGRmbntkeW5hbWljIHNjb3Bl fSwgbWVhbmluZyB0aGF0IGFueQpwYXJ0IG9mIHRoZSBwcm9ncmFtIGNhbiBwb3RlbnRpYWxseSBh Y2Nlc3MgdGhlIHZhcmlhYmxlIGJpbmRpbmcuICBJdAphbHNvIGhhcyBAZGZue2R5bmFtaWMgZXh0 ZW50fSwgbWVhbmluZyB0aGF0IHRoZSBiaW5kaW5nIGxhc3RzIG9ubHkKd2hpbGUgdGhlIGJpbmRp bmcgY29uc3RydWN0IChzdWNoIGFzIHRoZSBib2R5IG9mIGEgQGNvZGV7bGV0fSBmb3JtKSBpcwpi ZWluZyBleGVjdXRlZC4KCkBjaW5kZXggbGV4aWNhbCBiaW5kaW5nCkBjaW5kZXggbGV4aWNhbCBz Y29wZQpAY2luZGV4IGluZGVmaW5pdGUgZXh0ZW50CiAgRW1hY3MgY2FuIG9wdGlvbmFsbHkgY3Jl YXRlIEBkZm57bGV4aWNhbCBiaW5kaW5nc30uICBBIGxleGljYWwKYmluZGluZyBoYXMgQGRmbnts ZXhpY2FsIHNjb3BlfSwgbWVhbmluZyB0aGF0IGFueSByZWZlcmVuY2UgdG8gdGhlCnZhcmlhYmxl IG11c3QgYmUgbG9jYXRlZCB0ZXh0dWFsbHkgd2l0aGluIHRoZSBiaW5kaW5nCmNvbnN0cnVjdEBm b290bm90ZXtXaXRoIHNvbWUgZXhjZXB0aW9uczsgZm9yIGluc3RhbmNlLCBhIGxleGljYWwKYmlu ZGluZyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBMaXNwIGRlYnVnZ2VyLn0uICBJdCBh bHNvIGhhcwpAZGZue2luZGVmaW5pdGUgZXh0ZW50fSwgbWVhbmluZyB0aGF0IHVuZGVyIHNvbWUg Y2lyY3Vtc3RhbmNlcyB0aGUKYmluZGluZyBjYW4gbGl2ZSBvbiBldmVuIGFmdGVyIHRoZSBiaW5k aW5nIGNvbnN0cnVjdCBoYXMgZmluaXNoZWQKZXhlY3V0aW5nLCBieSBtZWFucyBvZiBzcGVjaWFs IG9iamVjdHMgY2FsbGVkIEBkZm57Y2xvc3VyZXN9LgoKICBUaGUgZm9sbG93aW5nIHN1YnNlY3Rp b25zIGRlc2NyaWJlIGR5bmFtaWMgYmluZGluZyBhbmQgbGV4aWNhbApiaW5kaW5nIGluIGdyZWF0 ZXIgZGV0YWlsLCBhbmQgaG93IHRvIGVuYWJsZSBsZXhpY2FsIGJpbmRpbmcgaW4gRW1hY3MKTGlz cCBwcm9ncmFtcy4KCkBtZW51CiogRHluYW1pYyBCaW5kaW5nOjogICAgICAgICBUaGUgZGVmYXVs dCBmb3IgYmluZGluZyBsb2NhbCB2YXJpYWJsZXMgaW4gRW1hY3MuCiogRHluYW1pYyBCaW5kaW5n IFRpcHM6OiAgICBBdm9pZGluZyBwcm9ibGVtcyB3aXRoIGR5bmFtaWMgYmluZGluZy4KKiBMZXhp Y2FsIEJpbmRpbmc6OiAgICAgICAgIEEgZGlmZmVyZW50IHR5cGUgb2YgbG9jYWwgdmFyaWFibGUg YmluZGluZy4KKiBVc2luZyBMZXhpY2FsIEJpbmRpbmc6OiAgIEhvdyB0byBlbmFibGUgbGV4aWNh bCBiaW5kaW5nLgpAZW5kIG1lbnUKCkBub2RlIER5bmFtaWMgQmluZGluZwpAc3Vic2VjdGlvbiBE eW5hbWljIEJpbmRpbmcKCiAgQnkgZGVmYXVsdCwgdGhlIGxvY2FsIHZhcmlhYmxlIGJpbmRpbmdz IG1hZGUgYnkgRW1hY3MgYXJlIGR5bmFtaWMKYmluZGluZ3MuICBXaGVuIGEgdmFyaWFibGUgaXMg ZHluYW1pY2FsbHkgYm91bmQsIGl0cyBjdXJyZW50IGJpbmRpbmcKYXQgYW55IHBvaW50IGluIHRo ZSBleGVjdXRpb24gb2YgdGhlIExpc3AgcHJvZ3JhbSBpcyBzaW1wbHkgdGhlIG1vc3QKcmVjZW50 bHktY3JlYXRlZCBkeW5hbWljIGxvY2FsIGJpbmRpbmcgZm9yIHRoYXQgc3ltYm9sLCBvciB0aGUg Z2xvYmFsCmJpbmRpbmcgaWYgdGhlcmUgaXMgbm8gc3VjaCBsb2NhbCBiaW5kaW5nLgoKICBEeW5h bWljIGJpbmRpbmdzIGhhdmUgZHluYW1pYyBzY29wZSBhbmQgZXh0ZW50LCBhcyBzaG93biBieSB0 aGUKZm9sbG93aW5nIGV4YW1wbGU6CgpAZXhhbXBsZQpAZ3JvdXAKKGRlZnZhciB4IC05OSkgIDsg QHJ7QGNvZGV7eH0gcmVjZWl2ZXMgYW4gaW5pdGlhbCB2YWx1ZSBvZiBAbWludXN7fTk5Ln0KCihk ZWZ1biBnZXR4ICgpCiAgeCkgICAgICAgICAgICA7IEBye0Bjb2Rle3h9IGlzIHVzZWQgZnJlZSBp biB0aGlzIGZ1bmN0aW9uLn0KCihsZXQgKCh4IDEpKSAgICA7IEBye0Bjb2Rle3h9IGlzIGR5bmFt aWNhbGx5IGJvdW5kLn0KICAoZ2V0eCkpCiAgICAgQHJlc3VsdHt9IDEKCjs7IEBye0FmdGVyIHRo ZSBAY29kZXtsZXR9IGZvcm0gZmluaXNoZXMsIEBjb2Rle3h9IHJldmVydHMgdG8gaXRzfQo7OyBA cntwcmV2aW91cyB2YWx1ZSwgd2hpY2ggaXMgQG1pbnVze305OS59CgooZ2V0eCkKICAgICBAcmVz dWx0e30gLTk5CkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKVGhlIGZ1bmN0aW9u IEBjb2Rle2dldHh9IHJlZmVycyB0byBAY29kZXt4fS4gIFRoaXMgaXMgYSBAZGZue2ZyZWV9CnJl ZmVyZW5jZSwgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXMgbm8gYmluZGluZyBmb3IgQGNvZGV7 eH0gd2l0aGluCnRoYXQgQGNvZGV7ZGVmdW59IGNvbnN0cnVjdCBpdHNlbGYuICBXaGVuIHdlIGNh bGwgQGNvZGV7Z2V0eH0gZnJvbQp3aXRoaW4gYSBAY29kZXtsZXR9IGZvcm0gaW4gd2hpY2ggQGNv ZGV7eH0gaXMgKGR5bmFtaWNhbGx5KSBib3VuZCwgaXQKcmV0cmlldmVzIHRoZSBsb2NhbCB2YWx1 ZSAoaS5lLiwgMSkuICBCdXQgd2hlbiB3ZSBjYWxsIEBjb2Rle2dldHh9Cm91dHNpZGUgdGhlIEBj b2Rle2xldH0gZm9ybSwgaXQgcmV0cmlldmVzIHRoZSBnbG9iYWwgdmFsdWUgKGkuZS4sCkBtaW51 c3t9OTkpLgoKICBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSwgd2hpY2ggaWxsdXN0cmF0ZXMgc2V0 dGluZyBhIGR5bmFtaWNhbGx5CmJvdW5kIHZhcmlhYmxlIHVzaW5nIEBjb2Rle3NldHF9OgoKQGV4 YW1wbGUKQGdyb3VwCihkZWZ2YXIgeCAtOTkpICAgICAgOyBAcntAY29kZXt4fSByZWNlaXZlcyBh biBpbml0aWFsIHZhbHVlIG9mIEBtaW51c3t9OTkufQoKKGRlZnVuIGFkZHggKCkKICAoc2V0cSB4 ICgxKyB4KSkpICA7IEBye0FkZCAxIHRvIEBjb2Rle3h9IGFuZCByZXR1cm4gaXRzIG5ldyB2YWx1 ZS59CgoobGV0ICgoeCAxKSkKICAoYWRkeCkKICAoYWRkeCkpCiAgICAgQHJlc3VsdHt9IDMgICAg ICAgICAgIDsgQHJ7VGhlIHR3byBAY29kZXthZGR4fSBjYWxscyBhZGQgdG8gQGNvZGV7eH0gdHdp Y2UufQoKOzsgQHJ7QWZ0ZXIgdGhlIEBjb2Rle2xldH0gZm9ybSBmaW5pc2hlcywgQGNvZGV7eH0g cmV2ZXJ0cyB0byBpdHN9Cjs7IEBye3ByZXZpb3VzIHZhbHVlLCB3aGljaCBpcyBAbWludXN7fTk5 Ln0KCihhZGR4KQogICAgIEByZXN1bHR7fSAtOTgKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKCiAg RHluYW1pYyBiaW5kaW5nIGlzIGltcGxlbWVudGVkIGluIEVtYWNzIExpc3AgaW4gYSBzaW1wbGUg d2F5LiAgRWFjaApzeW1ib2wgaGFzIGEgdmFsdWUgY2VsbCwgd2hpY2ggc3BlY2lmaWVzIGl0cyBj dXJyZW50IGR5bmFtaWMgdmFsdWUgKG9yCmFic2VuY2Ugb2YgdmFsdWUpLiAgQHhyZWZ7U3ltYm9s IENvbXBvbmVudHN9LiAgV2hlbiBhIHN5bWJvbCBpcyBnaXZlbgphIGR5bmFtaWMgbG9jYWwgYmlu ZGluZywgRW1hY3MgcmVjb3JkcyB0aGUgY29udGVudHMgb2YgdGhlIHZhbHVlIGNlbGwKKG9yIGFi c2VuY2UgdGhlcmVvZikgaW4gYSBzdGFjaywgYW5kIHN0b3JlcyB0aGUgbmV3IGxvY2FsIHZhbHVl IGluIHRoZQp2YWx1ZSBjZWxsLiAgV2hlbiB0aGUgYmluZGluZyBjb25zdHJ1Y3QgZmluaXNoZXMg ZXhlY3V0aW5nLCBFbWFjcyBwb3BzCnRoZSBvbGQgdmFsdWUgb2ZmIHRoZSBzdGFjaywgYW5kIHB1 dHMgaXQgaW4gdGhlIHZhbHVlIGNlbGwuCgpAbm9kZSBEeW5hbWljIEJpbmRpbmcgVGlwcwpAc3Vi c2VjdGlvbiBQcm9wZXIgVXNlIG9mIER5bmFtaWMgQmluZGluZwoKICBEeW5hbWljIGJpbmRpbmcg aXMgYSBwb3dlcmZ1bCBmZWF0dXJlLCBhcyBpdCBhbGxvd3MgcHJvZ3JhbXMgdG8KcmVmZXIgdG8g dmFyaWFibGVzIHRoYXQgYXJlIG5vdCBkZWZpbmVkIHdpdGhpbiB0aGVpciBsb2NhbCB0ZXh0dWFs CnNjb3BlLiAgSG93ZXZlciwgaWYgdXNlZCB3aXRob3V0IHJlc3RyYWludCwgdGhpcyBjYW4gYWxz byBtYWtlCnByb2dyYW1zIGhhcmQgdG8gdW5kZXJzdGFuZC4gIFRoZXJlIGFyZSB0d28gY2xlYW4g d2F5cyB0byB1c2UgdGhpcwp0ZWNobmlxdWU6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCklmIGEg dmFyaWFibGUgaGFzIG5vIGdsb2JhbCBkZWZpbml0aW9uLCB1c2UgaXQgYXMgYSBsb2NhbCB2YXJp YWJsZQpvbmx5IHdpdGhpbiBhIGJpbmRpbmcgY29uc3RydWN0LCBzdWNoIGFzIHRoZSBib2R5IG9m IHRoZSBAY29kZXtsZXR9CmZvcm0gd2hlcmUgdGhlIHZhcmlhYmxlIHdhcyBib3VuZC4gIElmIHRo aXMgY29udmVudGlvbiBpcyBmb2xsb3dlZApjb25zaXN0ZW50bHkgdGhyb3VnaG91dCBhIHByb2dy YW0sIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgd2lsbCBub3QKYWZmZWN0LCBub3IgYmUgYWZm ZWN0ZWQgYnksIGFueSB1c2VzIG9mIHRoZSBzYW1lIHZhcmlhYmxlIHN5bWJvbAplbHNld2hlcmUg aW4gdGhlIHByb2dyYW0uCgpAaXRlbQpPdGhlcndpc2UsIGRlZmluZSB0aGUgdmFyaWFibGUgd2l0 aCBAY29kZXtkZWZ2YXJ9LCBAY29kZXtkZWZjb25zdH0sIG9yCkBjb2Rle2RlZmN1c3RvbX0uICBA eHJlZntEZWZpbmluZyBWYXJpYWJsZXN9LiAgVXN1YWxseSwgdGhlIGRlZmluaXRpb24Kc2hvdWxk IGJlIGF0IHRvcC1sZXZlbCBpbiBhbiBFbWFjcyBMaXNwIGZpbGUuICBBcyBmYXIgYXMgcG9zc2li bGUsIGl0CnNob3VsZCBpbmNsdWRlIGEgZG9jdW1lbnRhdGlvbiBzdHJpbmcgd2hpY2ggZXhwbGFp bnMgdGhlIG1lYW5pbmcgYW5kCnB1cnBvc2Ugb2YgdGhlIHZhcmlhYmxlLiAgWW91IHNob3VsZCBh bHNvIGNob29zZSB0aGUgdmFyaWFibGUncyBuYW1lCnRvIGF2b2lkIG5hbWUgY29uZmxpY3RzIChA cHhyZWZ7Q29kaW5nIENvbnZlbnRpb25zfSkuCgpUaGVuIHlvdSBjYW4gYmluZCB0aGUgdmFyaWFi bGUgYW55d2hlcmUgaW4gYSBwcm9ncmFtLCBrbm93aW5nIHJlbGlhYmx5CndoYXQgdGhlIGVmZmVj dCB3aWxsIGJlLiAgV2hlcmV2ZXIgeW91IGVuY291bnRlciB0aGUgdmFyaWFibGUsIGl0IHdpbGwK YmUgZWFzeSB0byByZWZlciBiYWNrIHRvIHRoZSBkZWZpbml0aW9uLCBlLmcuLCB2aWEgdGhlIEBr YmR7Qy1oIHZ9CmNvbW1hbmQgKHByb3ZpZGVkIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGhhcyBi ZWVuIGxvYWRlZCBpbnRvIEVtYWNzKS4KQHhyZWZ7TmFtZSBIZWxwLCwsIGVtYWNzLCBUaGUgR05V IEVtYWNzIE1hbnVhbH0uCgpGb3IgZXhhbXBsZSwgaXQgaXMgY29tbW9uIHRvIHVzZSBsb2NhbCBi aW5kaW5ncyBmb3IgY3VzdG9taXphYmxlCnZhcmlhYmxlcyBsaWtlIEBjb2Rle2Nhc2UtZm9sZC1z ZWFyY2h9OgoKQGV4YW1wbGUKQGdyb3VwCihkZWZ1biBzZWFyY2gtZm9yLWFiYyAoKQogICJTZWFy Y2ggZm9yIHRoZSBzdHJpbmcgXCJhYmNcIiwgaWdub3JpbmcgY2FzZSBkaWZmZXJlbmNlcy4iCiAg KGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggbmlsKSkKICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiYWJj IikpKQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQpAZW5kIGl0ZW1pemUKCkBub2RlIExleGljYWwg QmluZGluZwpAc3Vic2VjdGlvbiBMZXhpY2FsIEJpbmRpbmcKCiAgTGV4aWNhbCBiaW5kaW5nIHdh cyBpbnRyb2R1Y2VkIHRvIEVtYWNzLCBhcyBhbiBvcHRpb25hbCBmZWF0dXJlLCBpbgp2ZXJzaW9u IDI0LjEuICBXZSBleHBlY3QgaXRzIGltcG9ydGFuY2UgdG8gaW5jcmVhc2UgaW4gdGhlIGZ1dHVy ZS4KTGV4aWNhbCBiaW5kaW5nIG9wZW5zIHVwIG1hbnkgbW9yZSBvcHBvcnR1bml0aWVzIGZvciBv cHRpbWl6YXRpb24sIHNvCnByb2dyYW1zIHVzaW5nIGl0IGFyZSBsaWtlbHkgdG8gcnVuIGZhc3Rl ciBpbiBmdXR1cmUgRW1hY3MgdmVyc2lvbnMuCkxleGljYWwgYmluZGluZyBpcyBhbHNvIG1vcmUg Y29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbmN5LCB3aGljaCB3ZQp3YW50IHRvIGFkZCB0byBFbWFj cyBpbiB0aGUgZnV0dXJlLgoKICBBIGxleGljYWxseS1ib3VuZCB2YXJpYWJsZSBoYXMgQGRmbnts ZXhpY2FsIHNjb3BlfSwgbWVhbmluZyB0aGF0IGFueQpyZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxl IG11c3QgYmUgbG9jYXRlZCB0ZXh0dWFsbHkgd2l0aGluIHRoZSBiaW5kaW5nCmNvbnN0cnVjdC4g IEhlcmUgaXMgYW4gZXhhbXBsZQpAaWZ0ZXgKKHNlZSB0aGUgbmV4dCBzdWJzZWN0aW9uLCBmb3Ig aG93IHRvIGFjdHVhbGx5IGVuYWJsZSBsZXhpY2FsIGJpbmRpbmcpOgpAZW5kIGlmdGV4CkBpZm5v dHRleAooQHB4cmVme1VzaW5nIExleGljYWwgQmluZGluZ30sIGZvciBob3cgdG8gYWN0dWFsbHkg ZW5hYmxlIGxleGljYWwgYmluZGluZyk6CkBlbmQgaWZub3R0ZXgKCkBleGFtcGxlCkBncm91cAoo bGV0ICgoeCAxKSkgICAgOyBAcntAY29kZXt4fSBpcyBsZXhpY2FsbHkgYm91bmQufQogICgrIHgg MykpCiAgICAgQHJlc3VsdHt9IDQKCihkZWZ1biBnZXR4ICgpCiAgeCkgICAgICAgICAgICA7IEBy e0Bjb2Rle3h9IGlzIHVzZWQgZnJlZSBpbiB0aGlzIGZ1bmN0aW9uLn0KCihsZXQgKCh4IDEpKSAg ICA7IEBye0Bjb2Rle3h9IGlzIGxleGljYWxseSBib3VuZC59CiAgKGdldHgpKQpAZXJyb3J7fSBT eW1ib2wncyB2YWx1ZSBhcyB2YXJpYWJsZSBpcyB2b2lkOiB4CkBlbmQgZ3JvdXAKQGVuZCBleGFt cGxlCgpAbm9pbmRlbnQKSGVyZSwgdGhlIHZhcmlhYmxlIEBjb2Rle3h9IGhhcyBubyBnbG9iYWwg dmFsdWUuICBXaGVuIGl0IGlzIGxleGljYWxseQpib3VuZCB3aXRoaW4gYSBAY29kZXtsZXR9IGZv cm0sIGl0IGNhbiBiZSB1c2VkIGluIHRoZSB0ZXh0dWFsIGNvbmZpbmVzCm9mIHRoYXQgQGNvZGV7 bGV0fSBmb3JtLiAgQnV0IGl0IGNhbiBAZW1waHtub3R9IGJlIHVzZWQgZnJvbSB3aXRoaW4gYQpA Y29kZXtnZXR4fSBmdW5jdGlvbiBjYWxsZWQgZnJvbSB0aGUgQGNvZGV7bGV0fSBmb3JtLCBzaW5j ZSB0aGUKZnVuY3Rpb24gZGVmaW5pdGlvbiBvZiBAY29kZXtnZXR4fSBvY2N1cnMgb3V0c2lkZSB0 aGUgQGNvZGV7bGV0fSBmb3JtCml0c2VsZi4KCkBjaW5kZXggbGV4aWNhbCBlbnZpcm9ubWVudAog IEhlcmUgaXMgaG93IGxleGljYWwgYmluZGluZyB3b3Jrcy4gIEVhY2ggYmluZGluZyBjb25zdHJ1 Y3QgZGVmaW5lcyBhCkBkZm57bGV4aWNhbCBlbnZpcm9ubWVudH0sIHNwZWNpZnlpbmcgdGhlIHZh cmlhYmxlcyB0aGF0IGFyZSBib3VuZAp3aXRoaW4gdGhlIGNvbnN0cnVjdCBhbmQgdGhlaXIgbG9j YWwgdmFsdWVzLiAgV2hlbiB0aGUgTGlzcCBldmFsdWF0b3IKd2FudHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgYSB2YXJpYWJsZSwgaXQgbG9va3MgZmlyc3QgaW4gdGhlIGxleGljYWwKZW52aXJvbm1l bnQ7IGlmIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZXJlLCBpdCBsb29rcyBp bgp0aGUgc3ltYm9sJ3MgdmFsdWUgY2VsbCwgd2hlcmUgdGhlIGR5bmFtaWMgdmFsdWUgaXMgc3Rv cmVkLgoKICAoSW50ZXJuYWxseSwgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgaXMgYW4gYWxpc3Qg b2Ygc3ltYm9sLXZhbHVlCnBhaXJzLCB3aXRoIHRoZSBmaW5hbCBlbGVtZW50IGluIHRoZSBhbGlz dCBiZWluZyB0aGUgc3ltYm9sIEBjb2Rle3R9CnJhdGhlciB0aGFuIGEgY29ucyBjZWxsLiAgU3Vj aCBhbiBhbGlzdCBjYW4gYmUgcGFzc2VkIGFzIHRoZSBzZWNvbmQKYXJndW1lbnQgdG8gdGhlIEBj b2Rle2V2YWx9IGZ1bmN0aW9uLCBpbiBvcmRlciB0byBzcGVjaWZ5IGEgbGV4aWNhbAplbnZpcm9u bWVudCBpbiB3aGljaCB0byBldmFsdWF0ZSBhIGZvcm0uICBAeHJlZntFdmFsfS4gIE1vc3QgRW1h Y3MKTGlzcCBwcm9ncmFtcywgaG93ZXZlciwgc2hvdWxkIG5vdCBpbnRlcmFjdCBkaXJlY3RseSB3 aXRoIGxleGljYWwKZW52aXJvbm1lbnRzIGluIHRoaXMgd2F5OyBvbmx5IHNwZWNpYWxpemVkIHBy b2dyYW1zIGxpa2UgZGVidWdnZXJzLikKCkBjaW5kZXggY2xvc3VyZXMsIGV4YW1wbGUgb2YgdXNp bmcKICBMZXhpY2FsIGJpbmRpbmdzIGhhdmUgaW5kZWZpbml0ZSBleHRlbnQuICBFdmVuIGFmdGVy IGEgYmluZGluZwpjb25zdHJ1Y3QgaGFzIGZpbmlzaGVkIGV4ZWN1dGluZywgaXRzIGxleGljYWwg ZW52aXJvbm1lbnQgY2FuIGJlCmBga2VwdCBhcm91bmQnJyBpbiBMaXNwIG9iamVjdHMgY2FsbGVk IEBkZm57Y2xvc3VyZXN9LiAgQSBjbG9zdXJlIGlzCmNyZWF0ZWQgd2hlbiB5b3UgZGVmaW5lIGEg bmFtZWQgb3IgYW5vbnltb3VzIGZ1bmN0aW9uIHdpdGggbGV4aWNhbApiaW5kaW5nIGVuYWJsZWQu ICBAeHJlZntDbG9zdXJlc30sIGZvciBkZXRhaWxzLgoKICBXaGVuIGEgY2xvc3VyZSBpcyBjYWxs ZWQgYXMgYSBmdW5jdGlvbiwgYW55IGxleGljYWwgdmFyaWFibGUKcmVmZXJlbmNlcyB3aXRoaW4g aXRzIGRlZmluaXRpb24gdXNlIHRoZSByZXRhaW5lZCBsZXhpY2FsIGVudmlyb25tZW50LgpIZXJl IGlzIGFuIGV4YW1wbGU6CgpAZXhhbXBsZQooZGVmdmFyIG15LXRpY2tlciBuaWwpICAgOyBAcntX ZSB3aWxsIHVzZSB0aGlzIGR5bmFtaWNhbGx5IGJvdW5kfQogICAgICAgICAgICAgICAgICAgICAg ICAgOyBAcnt2YXJpYWJsZSB0byBzdG9yZSBhIGNsb3N1cmUufQoKKGxldCAoKHggMCkpICAgICAg ICAgICAgIDsgQHJ7QGNvZGV7eH0gaXMgbGV4aWNhbGx5IGJvdW5kLn0KICAoc2V0cSBteS10aWNr ZXIgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgIChzZXRxIHggKDErIHgpKSkpKQogICAg QHJlc3VsdHt9IChjbG9zdXJlICgoeCAuIDApIHQpICgpCiAgICAgICAgICAoc2V0cSB4ICgxKyB4 KSkpCgooZnVuY2FsbCBteS10aWNrZXIpCiAgICBAcmVzdWx0e30gMQoKKGZ1bmNhbGwgbXktdGlj a2VyKQogICAgQHJlc3VsdHt9IDIKCihmdW5jYWxsIG15LXRpY2tlcikKICAgIEByZXN1bHR7fSAz Cgp4ICAgICAgICAgICAgICAgICAgICAgICAgOyBAcntOb3RlIHRoYXQgQGNvZGV7eH0gaGFzIG5v IGdsb2JhbCB2YWx1ZS59CkBlcnJvcnt9IFN5bWJvbCdzIHZhbHVlIGFzIHZhcmlhYmxlIGlzIHZv aWQ6IHgKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKVGhlIEBjb2Rle2xldH0gYmluZGluZyBkZWZp bmVzIGEgbGV4aWNhbCBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUKdmFyaWFibGUgQGNvZGV7eH0g aXMgbG9jYWxseSBib3VuZCB0byAwLiAgV2l0aGluIHRoaXMgYmluZGluZwpjb25zdHJ1Y3QsIHdl IGRlZmluZSBhIGxhbWJkYSBleHByZXNzaW9uIHdoaWNoIGluY3JlbWVudHMgQGNvZGV7eH0gYnkK b25lIGFuZCByZXR1cm5zIHRoZSBpbmNyZW1lbnRlZCB2YWx1ZS4gIFRoaXMgbGFtYmRhIGV4cHJl c3Npb24gaXMKYXV0b21hdGljYWxseSB0dXJuZWQgaW50byBhIGNsb3N1cmUsIGluIHdoaWNoIHRo ZSBsZXhpY2FsIGVudmlyb25tZW50CmxpdmVzIG9uIGV2ZW4gYWZ0ZXIgdGhlIEBjb2Rle2xldH0g YmluZGluZyBjb25zdHJ1Y3QgaGFzIGV4aXRlZC4gIEVhY2gKdGltZSB3ZSBldmFsdWF0ZSB0aGUg Y2xvc3VyZSwgaXQgaW5jcmVtZW50cyBAY29kZXt4fSwgdXNpbmcgdGhlCmJpbmRpbmcgb2YgQGNv ZGV7eH0gaW4gdGhhdCBsZXhpY2FsIGVudmlyb25tZW50LgoKICBOb3RlIHRoYXQgdW5saWtlIGR5 bmFtaWMgdmFyaWFibGVzIHdoaWNoIGFyZSB0aWVkIHRvIHRoZSBzeW1ib2wKb2JqZWN0IGl0c2Vs ZiwgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGxleGljYWwgdmFyaWFibGVzIGFuZCBzeW1ib2xz CmlzIG9ubHkgcHJlc2VudCBpbiB0aGUgaW50ZXJwcmV0ZXIgKG9yIGNvbXBpbGVyKS4gIFRoZXJl Zm9yZSwKZnVuY3Rpb25zIHdoaWNoIHRha2UgYSBzeW1ib2wgYXJndW1lbnQgKGxpa2UgQGNvZGV7 c3ltYm9sLXZhbHVlfSwKQGNvZGV7Ym91bmRwfSwgYW5kIEBjb2Rle3NldH0pIGNhbiBvbmx5IHJl dHJpZXZlIG9yIG1vZGlmeSBhCnZhcmlhYmxlJ3MgZHluYW1pYyBiaW5kaW5nIChpLmUuLCB0aGUg Y29udGVudHMgb2YgaXRzIHN5bWJvbCdzIHZhbHVlCmNlbGwpLgoKQG5vZGUgVXNpbmcgTGV4aWNh bCBCaW5kaW5nCkBzdWJzZWN0aW9uIFVzaW5nIExleGljYWwgQmluZGluZwoKICBXaGVuIGxvYWRp bmcgYW4gRW1hY3MgTGlzcCBmaWxlIG9yIGV2YWx1YXRpbmcgYSBMaXNwIGJ1ZmZlciwgbGV4aWNh bApiaW5kaW5nIGlzIGVuYWJsZWQgaWYgdGhlIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZSBAY29kZXts ZXhpY2FsLWJpbmRpbmd9CmlzIG5vbi1AY29kZXtuaWx9OgoKQGRlZnZhciBsZXhpY2FsLWJpbmRp bmcKSWYgdGhpcyBidWZmZXItbG9jYWwgdmFyaWFibGUgaXMgbm9uLUBjb2Rle25pbH0sIEVtYWNz IExpc3AgZmlsZXMgYW5kCmJ1ZmZlcnMgYXJlIGV2YWx1YXRlZCB1c2luZyBsZXhpY2FsIGJpbmRp bmcgaW5zdGVhZCBvZiBkeW5hbWljCmJpbmRpbmcuICAoSG93ZXZlciwgc3BlY2lhbCB2YXJpYWJs ZXMgYXJlIHN0aWxsIGR5bmFtaWNhbGx5IGJvdW5kOyBzZWUKYmVsb3cuKSAgSWYgQGNvZGV7bmls fSwgZHluYW1pYyBiaW5kaW5nIGlzIHVzZWQgZm9yIGFsbCBsb2NhbAp2YXJpYWJsZXMuICBUaGlz IHZhcmlhYmxlIGlzIHR5cGljYWxseSBzZXQgZm9yIGEgd2hvbGUgRW1hY3MgTGlzcApmaWxlLCBh cyBhIGZpbGUgbG9jYWwgdmFyaWFibGUgKEBweHJlZntGaWxlIExvY2FsIFZhcmlhYmxlc30pLgpO b3RlIHRoYXQgdW5saWtlIG90aGVyIHN1Y2ggdmFyaWFibGVzLCB0aGlzIG9uZSBtdXN0IGJlIHNl dCBpbiB0aGUKZmlyc3QgbGluZSBvZiBhIGZpbGUuCkBlbmQgZGVmdmFyCgpAbm9pbmRlbnQKV2hl biBldmFsdWF0aW5nIEVtYWNzIExpc3AgY29kZSBkaXJlY3RseSB1c2luZyBhbiBAY29kZXtldmFs fSBjYWxsLApsZXhpY2FsIGJpbmRpbmcgaXMgZW5hYmxlZCBpZiB0aGUgQHZhcntsZXhpY2FsfSBh cmd1bWVudCB0bwpAY29kZXtldmFsfSBpcyBub24tQGNvZGV7bmlsfS4gIEB4cmVme0V2YWx9LgoK QGNpbmRleCBzcGVjaWFsIHZhcmlhYmxlcwogIEV2ZW4gd2hlbiBsZXhpY2FsIGJpbmRpbmcgaXMg ZW5hYmxlZCwgY2VydGFpbiB2YXJpYWJsZXMgd2lsbApjb250aW51ZSB0byBiZSBkeW5hbWljYWxs eSBib3VuZC4gIFRoZXNlIGFyZSBjYWxsZWQgQGRmbntzcGVjaWFsCnZhcmlhYmxlc30uICBFdmVy eSB2YXJpYWJsZSB0aGF0IGhhcyBiZWVuIGRlZmluZWQgd2l0aCBAY29kZXtkZWZ2YXJ9LApAY29k ZXtkZWZjdXN0b219IG9yIEBjb2Rle2RlZmNvbnN0fSBpcyBhIHNwZWNpYWwgdmFyaWFibGUKKEBw eHJlZntEZWZpbmluZyBWYXJpYWJsZXN9KS4gIEFsbCBvdGhlciB2YXJpYWJsZXMgYXJlIHN1Ympl Y3QgdG8KbGV4aWNhbCBiaW5kaW5nLgoKQGRlZnVuIHNwZWNpYWwtdmFyaWFibGUtcCBzeW1ib2wK VGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vbi1AY29kZXtuaWx9IGlmIEB2YXJ7c3ltYm9sfSBpcyBh IHNwZWNpYWwKdmFyaWFibGUgKGkuZS4sIGl0IGhhcyBhIEBjb2Rle2RlZnZhcn0sIEBjb2Rle2Rl ZmN1c3RvbX0sIG9yCkBjb2Rle2RlZmNvbnN0fSB2YXJpYWJsZSBkZWZpbml0aW9uKS4gIE90aGVy d2lzZSwgdGhlIHJldHVybiB2YWx1ZSBpcwpAY29kZXtuaWx9LgpAZW5kIGRlZnVuCgogIFRoZSB1 c2Ugb2YgYSBzcGVjaWFsIHZhcmlhYmxlIGFzIGEgZm9ybWFsIGFyZ3VtZW50IGluIGEgZnVuY3Rp b24gaXMKZGlzY291cmFnZWQuICBEb2luZyBzbyBnaXZlcyByaXNlIHRvIHVuc3BlY2lmaWVkIGJl aGF2aW9yIHdoZW4gbGV4aWNhbApiaW5kaW5nIG1vZGUgaXMgZW5hYmxlZCAoaXQgbWF5IHVzZSBs ZXhpY2FsIGJpbmRpbmcgc29tZXRpbWVzLCBhbmQKZHluYW1pYyBiaW5kaW5nIG90aGVyIHRpbWVz KS4KCiAgQ29udmVydGluZyBhbiBFbWFjcyBMaXNwIHByb2dyYW0gdG8gbGV4aWNhbCBiaW5kaW5n IGlzIGVhc3kuICBGaXJzdCwKYWRkIGEgZmlsZS1sb2NhbCB2YXJpYWJsZSBzZXR0aW5nIG9mIEBj b2Rle2xleGljYWwtYmluZGluZ30gdG8KQGNvZGV7dH0gaW4gdGhlIGhlYWRlciBsaW5lIG9mIHRo ZSBFbWFjcyBMaXNwIHNvdXJjZSBmaWxlIChAcHhyZWZ7RmlsZQpMb2NhbCBWYXJpYWJsZXN9KS4g IFNlY29uZCwgY2hlY2sgdGhhdCBldmVyeSB2YXJpYWJsZSBpbiB0aGUgcHJvZ3JhbQp3aGljaCBu ZWVkcyB0byBiZSBkeW5hbWljYWxseSBib3VuZCBoYXMgYSB2YXJpYWJsZSBkZWZpbml0aW9uLCBz byB0aGF0Cml0IGlzIG5vdCBpbmFkdmVydGVudGx5IGJvdW5kIGxleGljYWxseS4KCkBjaW5kZXgg ZnJlZSB2YXJpYWJsZQpAY2luZGV4IHVudXNlZCBsZXhpY2FsIHZhcmlhYmxlCiAgQSBzaW1wbGUg d2F5IHRvIGZpbmQgb3V0IHdoaWNoIHZhcmlhYmxlcyBuZWVkIGEgdmFyaWFibGUgZGVmaW5pdGlv bgppcyB0byBieXRlLWNvbXBpbGUgdGhlIHNvdXJjZSBmaWxlLiAgQHhyZWZ7Qnl0ZSBDb21waWxh dGlvbn0uICBJZiBhCm5vbi1zcGVjaWFsIHZhcmlhYmxlIGlzIHVzZWQgb3V0c2lkZSBvZiBhIEBj b2Rle2xldH0gZm9ybSwgdGhlCmJ5dGUtY29tcGlsZXIgd2lsbCB3YXJuIGFib3V0IHJlZmVyZW5j ZSBvciBhc3NpZ25tZW50IHRvIGEgZnJlZQp2YXJpYWJsZS4gIElmIGEgbm9uLXNwZWNpYWwgdmFy aWFibGUgaXMgYm91bmQgYnV0IG5vdCB1c2VkIHdpdGhpbiBhCkBjb2Rle2xldH0gZm9ybSwgdGhl IGJ5dGUtY29tcGlsZXIgd2lsbCB3YXJuIGFib3V0IGFuIHVudXNlZCBsZXhpY2FsCnZhcmlhYmxl LiAgVGhlIGJ5dGUtY29tcGlsZXIgd2lsbCBhbHNvIGlzc3VlIGEgd2FybmluZyBpZiB5b3UgdXNl IGEKc3BlY2lhbCB2YXJpYWJsZSBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50LgoKICAoVG8gc2lsZW5j ZSBieXRlLWNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHVudXNlZCB2YXJpYWJsZXMsIGp1c3QgdXNl CmEgdmFyaWFibGUgbmFtZSB0aGF0IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZS4gIFRoZSBieXRl LWNvbXBpbGVyCmludGVycHJldHMgdGhpcyBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyBh IHZhcmlhYmxlIGtub3duIG5vdCB0bwpiZSB1c2VkLikKCkBub2RlIEJ1ZmZlci1Mb2NhbCBWYXJp YWJsZXMKQHNlY3Rpb24gQnVmZmVyLUxvY2FsIFZhcmlhYmxlcwpAY2luZGV4IHZhcmlhYmxlLCBi dWZmZXItbG9jYWwKQGNpbmRleCBidWZmZXItbG9jYWwgdmFyaWFibGVzCgogIEdsb2JhbCBhbmQg bG9jYWwgdmFyaWFibGUgYmluZGluZ3MgYXJlIGZvdW5kIGluIG1vc3QgcHJvZ3JhbW1pbmcKbGFu Z3VhZ2VzIGluIG9uZSBmb3JtIG9yIGFub3RoZXIuICBFbWFjcywgaG93ZXZlciwgYWxzbyBzdXBw b3J0cwphZGRpdGlvbmFsLCB1bnVzdWFsIGtpbmRzIG9mIHZhcmlhYmxlIGJpbmRpbmcsIHN1Y2gg YXMKQGRmbntidWZmZXItbG9jYWx9IGJpbmRpbmdzLCB3aGljaCBhcHBseSBvbmx5IGluIG9uZSBi dWZmZXIuICBIYXZpbmcKZGlmZmVyZW50IHZhbHVlcyBmb3IgYSB2YXJpYWJsZSBpbiBkaWZmZXJl bnQgYnVmZmVycyBpcyBhbiBpbXBvcnRhbnQKY3VzdG9taXphdGlvbiBtZXRob2QuICAoVmFyaWFi bGVzIGNhbiBhbHNvIGhhdmUgYmluZGluZ3MgdGhhdCBhcmUKbG9jYWwgdG8gZWFjaCB0ZXJtaW5h bC4gIEB4cmVme011bHRpcGxlIFRlcm1pbmFsc30uKQoKQG1lbnUKKiBJbnRybyB0byBCdWZmZXIt TG9jYWw6OiAgICAgICBJbnRyb2R1Y3Rpb24gYW5kIGNvbmNlcHRzLgoqIENyZWF0aW5nIEJ1ZmZl ci1Mb2NhbDo6ICAgICAgIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGJ1ZmZlci1sb2NhbCBiaW5k aW5ncy4KKiBEZWZhdWx0IFZhbHVlOjogICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBp cyBzZWVuIGluIGJ1ZmZlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBk b24ndCBoYXZlIHRoZWlyIG93biBidWZmZXItbG9jYWwgdmFsdWVzLgpAZW5kIG1lbnUKCkBub2Rl IEludHJvIHRvIEJ1ZmZlci1Mb2NhbApAc3Vic2VjdGlvbiBJbnRyb2R1Y3Rpb24gdG8gQnVmZmVy LUxvY2FsIFZhcmlhYmxlcwoKICBBIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZSBoYXMgYSBidWZmZXIt bG9jYWwgYmluZGluZyBhc3NvY2lhdGVkIHdpdGggYQpwYXJ0aWN1bGFyIGJ1ZmZlci4gIFRoZSBi aW5kaW5nIGlzIGluIGVmZmVjdCB3aGVuIHRoYXQgYnVmZmVyIGlzCmN1cnJlbnQ7IG90aGVyd2lz ZSwgaXQgaXMgbm90IGluIGVmZmVjdC4gIElmIHlvdSBzZXQgdGhlIHZhcmlhYmxlIHdoaWxlCmEg YnVmZmVyLWxvY2FsIGJpbmRpbmcgaXMgaW4gZWZmZWN0LCB0aGUgbmV3IHZhbHVlIGdvZXMgaW4g dGhhdCBiaW5kaW5nLApzbyBpdHMgb3RoZXIgYmluZGluZ3MgYXJlIHVuY2hhbmdlZC4gIFRoaXMg bWVhbnMgdGhhdCB0aGUgY2hhbmdlIGlzCnZpc2libGUgb25seSBpbiB0aGUgYnVmZmVyIHdoZXJl IHlvdSBtYWRlIGl0LgoKICBUaGUgdmFyaWFibGUncyBvcmRpbmFyeSBiaW5kaW5nLCB3aGljaCBp cyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueQpzcGVjaWZpYyBidWZmZXIsIGlzIGNhbGxlZCB0aGUg QGRmbntkZWZhdWx0IGJpbmRpbmd9LiAgSW4gbW9zdCBjYXNlcywKdGhpcyBpcyB0aGUgZ2xvYmFs IGJpbmRpbmcuCgogIEEgdmFyaWFibGUgY2FuIGhhdmUgYnVmZmVyLWxvY2FsIGJpbmRpbmdzIGlu IHNvbWUgYnVmZmVycyBidXQgbm90IGluCm90aGVyIGJ1ZmZlcnMuICBUaGUgZGVmYXVsdCBiaW5k aW5nIGlzIHNoYXJlZCBieSBhbGwgdGhlIGJ1ZmZlcnMgdGhhdApkb24ndCBoYXZlIHRoZWlyIG93 biBiaW5kaW5ncyBmb3IgdGhlIHZhcmlhYmxlLiAgKFRoaXMgaW5jbHVkZXMgYWxsCm5ld2x5LWNy ZWF0ZWQgYnVmZmVycy4pICBJZiB5b3Ugc2V0IHRoZSB2YXJpYWJsZSBpbiBhIGJ1ZmZlciB0aGF0 IGRvZXMKbm90IGhhdmUgYSBidWZmZXItbG9jYWwgYmluZGluZyBmb3IgaXQsIHRoaXMgc2V0cyB0 aGUgZGVmYXVsdCBiaW5kaW5nLApzbyB0aGUgbmV3IHZhbHVlIGlzIHZpc2libGUgaW4gYWxsIHRo ZSBidWZmZXJzIHRoYXQgc2VlIHRoZSBkZWZhdWx0CmJpbmRpbmcuCgogIFRoZSBtb3N0IGNvbW1v biB1c2Ugb2YgYnVmZmVyLWxvY2FsIGJpbmRpbmdzIGlzIGZvciBtYWpvciBtb2RlcyB0byBjaGFu Z2UKdmFyaWFibGVzIHRoYXQgY29udHJvbCB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZHMuICBGb3Ig ZXhhbXBsZSwgQyBtb2RlIGFuZApMaXNwIG1vZGUgYm90aCBzZXQgdGhlIHZhcmlhYmxlIEBjb2Rl e3BhcmFncmFwaC1zdGFydH0gdG8gc3BlY2lmeSB0aGF0IG9ubHkKYmxhbmsgbGluZXMgc2VwYXJh dGUgcGFyYWdyYXBocy4gIFRoZXkgZG8gdGhpcyBieSBtYWtpbmcgdGhlIHZhcmlhYmxlCmJ1ZmZl ci1sb2NhbCBpbiB0aGUgYnVmZmVyIHRoYXQgaXMgYmVpbmcgcHV0IGludG8gQyBtb2RlIG9yIExp c3AgbW9kZSwgYW5kCnRoZW4gc2V0dGluZyBpdCB0byB0aGUgbmV3IHZhbHVlIGZvciB0aGF0IG1v ZGUuICBAeHJlZntNYWpvciBNb2Rlc30uCgogIFRoZSB1c3VhbCB3YXkgdG8gbWFrZSBhIGJ1ZmZl ci1sb2NhbCBiaW5kaW5nIGlzIHdpdGgKQGNvZGV7bWFrZS1sb2NhbC12YXJpYWJsZX0sIHdoaWNo IGlzIHdoYXQgbWFqb3IgbW9kZSBjb21tYW5kcyB0eXBpY2FsbHkKdXNlLiAgVGhpcyBhZmZlY3Rz IGp1c3QgdGhlIGN1cnJlbnQgYnVmZmVyOyBhbGwgb3RoZXIgYnVmZmVycyAoaW5jbHVkaW5nCnRo b3NlIHlldCB0byBiZSBjcmVhdGVkKSB3aWxsIGNvbnRpbnVlIHRvIHNoYXJlIHRoZSBkZWZhdWx0 IHZhbHVlIHVubGVzcwp0aGV5IGFyZSBleHBsaWNpdGx5IGdpdmVuIHRoZWlyIG93biBidWZmZXIt bG9jYWwgYmluZGluZ3MuCgpAY2luZGV4IGF1dG9tYXRpY2FsbHkgYnVmZmVyLWxvY2FsCiAgQSBt b3JlIHBvd2VyZnVsIG9wZXJhdGlvbiBpcyB0byBtYXJrIHRoZSB2YXJpYWJsZSBhcwpAZGZue2F1 dG9tYXRpY2FsbHkgYnVmZmVyLWxvY2FsfSBieSBjYWxsaW5nCkBjb2Rle21ha2UtdmFyaWFibGUt YnVmZmVyLWxvY2FsfS4gIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBtYWtpbmcgdGhlCnZhcmlh YmxlIGxvY2FsIGluIGFsbCBidWZmZXJzLCBldmVuIHRob3NlIHlldCB0byBiZSBjcmVhdGVkLiAg TW9yZQpwcmVjaXNlbHksIHRoZSBlZmZlY3QgaXMgdGhhdCBzZXR0aW5nIHRoZSB2YXJpYWJsZSBh dXRvbWF0aWNhbGx5IG1ha2VzCnRoZSB2YXJpYWJsZSBsb2NhbCB0byB0aGUgY3VycmVudCBidWZm ZXIgaWYgaXQgaXMgbm90IGFscmVhZHkgc28uICBBbGwKYnVmZmVycyBzdGFydCBvdXQgYnkgc2hh cmluZyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgdXN1YWwsCmJ1dCBzZXR0 aW5nIHRoZSB2YXJpYWJsZSBjcmVhdGVzIGEgYnVmZmVyLWxvY2FsIGJpbmRpbmcgZm9yIHRoZSBj dXJyZW50CmJ1ZmZlci4gIFRoZSBuZXcgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBidWZmZXItbG9j YWwgYmluZGluZywgbGVhdmluZwp0aGUgZGVmYXVsdCBiaW5kaW5nIHVudG91Y2hlZC4gIFRoaXMg bWVhbnMgdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZSBjYW5ub3QKYmUgY2hhbmdlZCB3aXRoIEBjb2Rl e3NldHF9IGluIGFueSBidWZmZXI7IHRoZSBvbmx5IHdheSB0byBjaGFuZ2UgaXQgaXMKd2l0aCBA Y29kZXtzZXRxLWRlZmF1bHR9LgoKICBAc3Ryb25ne1dhcm5pbmc6fSBXaGVuIGEgdmFyaWFibGUg aGFzIGJ1ZmZlci1sb2NhbApiaW5kaW5ncyBpbiBvbmUgb3IgbW9yZSBidWZmZXJzLCBAY29kZXts ZXR9IHJlYmluZHMgdGhlIGJpbmRpbmcgdGhhdCdzCmN1cnJlbnRseSBpbiBlZmZlY3QuICBGb3Ig aW5zdGFuY2UsIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBoYXMgYQpidWZmZXItbG9jYWwgdmFsdWUs IEBjb2Rle2xldH0gdGVtcG9yYXJpbHkgcmViaW5kcyB0aGF0LiAgSWYgbm8KYnVmZmVyLWxvY2Fs IGJpbmRpbmdzIGFyZSBpbiBlZmZlY3QsIEBjb2Rle2xldH0gcmViaW5kcwp0aGUgZGVmYXVsdCB2 YWx1ZS4gIElmIGluc2lkZSB0aGUgQGNvZGV7bGV0fSB5b3UgdGhlbiBjaGFuZ2UgdG8gYQpkaWZm ZXJlbnQgY3VycmVudCBidWZmZXIgaW4gd2hpY2ggYSBkaWZmZXJlbnQgYmluZGluZyBpcyBpbiBl ZmZlY3QsCnlvdSB3b24ndCBzZWUgdGhlIEBjb2Rle2xldH0gYmluZGluZyBhbnkgbW9yZS4gIEFu ZCBpZiB5b3UgZXhpdCB0aGUKQGNvZGV7bGV0fSB3aGlsZSBzdGlsbCBpbiB0aGUgb3RoZXIgYnVm ZmVyLCB5b3Ugd29uJ3Qgc2VlIHRoZQp1bmJpbmRpbmcgb2NjdXIgKHRob3VnaCBpdCB3aWxsIG9j Y3VyIHByb3Blcmx5KS4gIEhlcmUgaXMgYW4gZXhhbXBsZQp0byBpbGx1c3RyYXRlOgoKQGV4YW1w bGUKQGdyb3VwCihzZXRxIGZvbyAnZykKKHNldC1idWZmZXIgImEiKQoobWFrZS1sb2NhbC12YXJp YWJsZSAnZm9vKQpAZW5kIGdyb3VwCihzZXRxIGZvbyAnYSkKKGxldCAoKGZvbyAndGVtcCkpCiAg OzsgZm9vIEByZXN1bHR7fSAndGVtcCAgOyBAcntsZXQgYmluZGluZyBpbiBidWZmZXIgQHNhbXB7 YX19CiAgKHNldC1idWZmZXIgImIiKQogIDs7IGZvbyBAcmVzdWx0e30gJ2cgICAgIDsgQHJ7dGhl IGdsb2JhbCB2YWx1ZSBzaW5jZSBmb28gaXMgbm90IGxvY2FsIGluIEBzYW1we2J9fQogIEB2YXJ7 Ym9keX1AZG90c3t9KQpAZ3JvdXAKZm9vIEByZXN1bHR7fSAnZyAgICAgICAgOyBAcntleGl0aW5n IHJlc3RvcmVkIHRoZSBsb2NhbCB2YWx1ZSBpbiBidWZmZXIgQHNhbXB7YX0sfQogICAgICAgICAg ICAgICAgIDsgQHJ7YnV0IHdlIGRvbid0IHNlZSB0aGF0IGluIGJ1ZmZlciBAc2FtcHtifX0KQGVu ZCBncm91cApAZ3JvdXAKKHNldC1idWZmZXIgImEiKSA7IEBye3ZlcmlmeSB0aGUgbG9jYWwgdmFs dWUgd2FzIHJlc3RvcmVkfQpmb28gQHJlc3VsdHt9ICdhCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxl CgpAbm9pbmRlbnQKTm90ZSB0aGF0IHJlZmVyZW5jZXMgdG8gQGNvZGV7Zm9vfSBpbiBAdmFye2Jv ZHl9IGFjY2VzcyB0aGUKYnVmZmVyLWxvY2FsIGJpbmRpbmcgb2YgYnVmZmVyIEBzYW1we2J9LgoK ICBXaGVuIGEgZmlsZSBzcGVjaWZpZXMgbG9jYWwgdmFyaWFibGUgdmFsdWVzLCB0aGVzZSBiZWNv bWUgYnVmZmVyLWxvY2FsCnZhbHVlcyB3aGVuIHlvdSB2aXNpdCB0aGUgZmlsZS4gIEB4cmVme0Zp bGUgVmFyaWFibGVzLCwsIGVtYWNzLCBUaGUKR05VIEVtYWNzIE1hbnVhbH0uCgogIEEgYnVmZmVy LWxvY2FsIHZhcmlhYmxlIGNhbm5vdCBiZSBtYWRlIHRlcm1pbmFsLWxvY2FsCihAcHhyZWZ7TXVs dGlwbGUgVGVybWluYWxzfSkuCgpAbm9kZSBDcmVhdGluZyBCdWZmZXItTG9jYWwKQHN1YnNlY3Rp b24gQ3JlYXRpbmcgYW5kIERlbGV0aW5nIEJ1ZmZlci1Mb2NhbCBCaW5kaW5ncwoKQGRlZmZuIENv bW1hbmQgbWFrZS1sb2NhbC12YXJpYWJsZSB2YXJpYWJsZQpUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMg YSBidWZmZXItbG9jYWwgYmluZGluZyBpbiB0aGUgY3VycmVudCBidWZmZXIgZm9yCkB2YXJ7dmFy aWFibGV9IChhIHN5bWJvbCkuICBPdGhlciBidWZmZXJzIGFyZSBub3QgYWZmZWN0ZWQuICBUaGUg dmFsdWUKcmV0dXJuZWQgaXMgQHZhcnt2YXJpYWJsZX0uCgpUaGUgYnVmZmVyLWxvY2FsIHZhbHVl IG9mIEB2YXJ7dmFyaWFibGV9IHN0YXJ0cyBvdXQgYXMgdGhlIHNhbWUgdmFsdWUKQHZhcnt2YXJp YWJsZX0gcHJldmlvdXNseSBoYWQuICBJZiBAdmFye3ZhcmlhYmxlfSB3YXMgdm9pZCwgaXQgcmVt YWlucwp2b2lkLgoKQGV4YW1wbGUKQGdyb3VwCjs7IEBye0luIGJ1ZmZlciBAc2FtcHtiMX06fQoo c2V0cSBmb28gNSkgICAgICAgICAgICAgICAgOyBAcntBZmZlY3RzIGFsbCBidWZmZXJzLn0KICAg ICBAcmVzdWx0e30gNQpAZW5kIGdyb3VwCkBncm91cAoobWFrZS1sb2NhbC12YXJpYWJsZSAnZm9v KSAgOyBAcntOb3cgaXQgaXMgbG9jYWwgaW4gQHNhbXB7YjF9Ln0KICAgICBAcmVzdWx0e30gZm9v CkBlbmQgZ3JvdXAKQGdyb3VwCmZvbyAgICAgICAgICAgICAgICAgICAgICAgICA7IEBye1RoYXQg ZGlkIG5vdCBjaGFuZ2V9CiAgICAgQHJlc3VsdHt9IDUgICAgICAgICAgICAgICAgICAgOyAgIEBy e3RoZSB2YWx1ZS59CkBlbmQgZ3JvdXAKQGdyb3VwCihzZXRxIGZvbyA2KSAgICAgICAgICAgICAg ICA7IEBye0NoYW5nZSB0aGUgdmFsdWV9CiAgICAgQHJlc3VsdHt9IDYgICAgICAgICAgICAgICAg ICAgOyAgIEBye2luIEBzYW1we2IxfS59CkBlbmQgZ3JvdXAKQGdyb3VwCmZvbwogICAgIEByZXN1 bHR7fSA2CkBlbmQgZ3JvdXAKCkBncm91cAo7OyBAcntJbiBidWZmZXIgQHNhbXB7YjJ9LCB0aGUg dmFsdWUgaGFzbid0IGNoYW5nZWQufQood2l0aC1jdXJyZW50LWJ1ZmZlciAiYjIiCiAgZm9vKQog ICAgIEByZXN1bHR7fSA1CkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpNYWtpbmcgYSB2YXJpYWJs ZSBidWZmZXItbG9jYWwgd2l0aGluIGEgQGNvZGV7bGV0fS1iaW5kaW5nIGZvciB0aGF0CnZhcmlh YmxlIGRvZXMgbm90IHdvcmsgcmVsaWFibHksIHVubGVzcyB0aGUgYnVmZmVyIGluIHdoaWNoIHlv dSBkbyB0aGlzCmlzIG5vdCBjdXJyZW50IGVpdGhlciBvbiBlbnRyeSB0byBvciBleGl0IGZyb20g dGhlIEBjb2Rle2xldH0uICBUaGlzIGlzCmJlY2F1c2UgQGNvZGV7bGV0fSBkb2VzIG5vdCBkaXN0 aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBraW5kcyBvZgpiaW5kaW5nczsgaXQga25vd3Mgb25s eSB3aGljaCB2YXJpYWJsZSB0aGUgYmluZGluZyB3YXMgbWFkZSBmb3IuCgpJZiB0aGUgdmFyaWFi bGUgaXMgdGVybWluYWwtbG9jYWwgKEBweHJlZntNdWx0aXBsZSBUZXJtaW5hbHN9KSwgdGhpcwpm dW5jdGlvbiBzaWduYWxzIGFuIGVycm9yLiAgU3VjaCB2YXJpYWJsZXMgY2Fubm90IGhhdmUgYnVm ZmVyLWxvY2FsCmJpbmRpbmdzIGFzIHdlbGwuCgpAc3Ryb25ne1dhcm5pbmc6fSBkbyBub3QgdXNl IEBjb2Rle21ha2UtbG9jYWwtdmFyaWFibGV9IGZvciBhIGhvb2sKdmFyaWFibGUuICBUaGUgaG9v ayB2YXJpYWJsZXMgYXJlIGF1dG9tYXRpY2FsbHkgbWFkZSBidWZmZXItbG9jYWwgYXMKbmVlZGVk IGlmIHlvdSB1c2UgdGhlIEB2YXJ7bG9jYWx9IGFyZ3VtZW50IHRvIEBjb2Rle2FkZC1ob29rfSBv cgpAY29kZXtyZW1vdmUtaG9va30uCkBlbmQgZGVmZm4KCkBkZWZtYWMgc2V0cS1sb2NhbCB2YXJp YWJsZSB2YWx1ZQpUaGlzIG1hY3JvIGNyZWF0ZXMgYSBidWZmZXItbG9jYWwgYmluZGluZyBpbiB0 aGUgY3VycmVudCBidWZmZXIgZm9yCkB2YXJ7dmFyaWFibGV9LCBhbmQgZ2l2ZXMgaXQgdGhlIGJ1 ZmZlci1sb2NhbCB2YWx1ZSBAdmFye3ZhbHVlfS4gIEl0CmlzIGVxdWl2YWxlbnQgdG8gY2FsbGlu ZyBAY29kZXttYWtlLWxvY2FsLXZhcmlhYmxlfSBmb2xsb3dlZCBieQpAY29kZXtzZXRxfS4gIEB2 YXJ7dmFyaWFibGV9IHNob3VsZCBiZSBhbiB1bnF1b3RlZCBzeW1ib2wuCkBlbmQgZGVmbWFjCgpA ZGVmZm4gQ29tbWFuZCBtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCB2YXJpYWJsZQpUaGlzIGZ1 bmN0aW9uIG1hcmtzIEB2YXJ7dmFyaWFibGV9IChhIHN5bWJvbCkgYXV0b21hdGljYWxseQpidWZm ZXItbG9jYWwsIHNvIHRoYXQgYW55IHN1YnNlcXVlbnQgYXR0ZW1wdCB0byBzZXQgaXQgd2lsbCBt YWtlIGl0CmxvY2FsIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBhdCB0aGUgdGltZS4gIFVubGlrZQpA Y29kZXttYWtlLWxvY2FsLXZhcmlhYmxlfSwgd2l0aCB3aGljaCBpdCBpcyBvZnRlbiBjb25mdXNl ZCwgdGhpcwpjYW5ub3QgYmUgdW5kb25lLCBhbmQgYWZmZWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhl IHZhcmlhYmxlIGluIGFsbApidWZmZXJzLgoKQSBwZWN1bGlhciB3cmlua2xlIG9mIHRoaXMgZmVh dHVyZSBpcyB0aGF0IGJpbmRpbmcgdGhlIHZhcmlhYmxlICh3aXRoCkBjb2Rle2xldH0gb3Igb3Ro ZXIgYmluZGluZyBjb25zdHJ1Y3RzKSBkb2VzIG5vdCBjcmVhdGUgYSBidWZmZXItbG9jYWwKYmlu ZGluZyBmb3IgaXQuICBPbmx5IHNldHRpbmcgdGhlIHZhcmlhYmxlICh3aXRoIEBjb2Rle3NldH0g b3IKQGNvZGV7c2V0cX0pLCB3aGlsZSB0aGUgdmFyaWFibGUgZG9lcyBub3QgaGF2ZSBhIEBjb2Rl e2xldH0tc3R5bGUKYmluZGluZyB0aGF0IHdhcyBtYWRlIGluIHRoZSBjdXJyZW50IGJ1ZmZlciwg ZG9lcyBzby4KCklmIEB2YXJ7dmFyaWFibGV9IGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVl LCB0aGVuIGNhbGxpbmcgdGhpcwpjb21tYW5kIHdpbGwgZ2l2ZSBpdCBhIGRlZmF1bHQgdmFsdWUg b2YgQGNvZGV7bmlsfS4gIElmIEB2YXJ7dmFyaWFibGV9CmFscmVhZHkgaGFzIGEgZGVmYXVsdCB2 YWx1ZSwgdGhhdCB2YWx1ZSByZW1haW5zIHVuY2hhbmdlZC4KU3Vic2VxdWVudGx5IGNhbGxpbmcg QGNvZGV7bWFrdW5ib3VuZH0gb24gQHZhcnt2YXJpYWJsZX0gd2lsbCByZXN1bHQKaW4gYSB2b2lk IGJ1ZmZlci1sb2NhbCB2YWx1ZSBhbmQgbGVhdmUgdGhlIGRlZmF1bHQgdmFsdWUgdW5hZmZlY3Rl ZC4KClRoZSB2YWx1ZSByZXR1cm5lZCBpcyBAdmFye3ZhcmlhYmxlfS4KCkBzdHJvbmd7V2Fybmlu Zzp9IERvbid0IGFzc3VtZSB0aGF0IHlvdSBzaG91bGQgdXNlCkBjb2Rle21ha2UtdmFyaWFibGUt YnVmZmVyLWxvY2FsfSBmb3IgdXNlci1vcHRpb24gdmFyaWFibGVzLCBzaW1wbHkKYmVjYXVzZSB1 c2VycyBAZW1waHttaWdodH0gd2FudCB0byBjdXN0b21pemUgdGhlbSBkaWZmZXJlbnRseSBpbgpk aWZmZXJlbnQgYnVmZmVycy4gIFVzZXJzIGNhbiBtYWtlIGFueSB2YXJpYWJsZSBsb2NhbCwgd2hl biB0aGV5IHdpc2gKdG8uICBJdCBpcyBiZXR0ZXIgdG8gbGVhdmUgdGhlIGNob2ljZSB0byB0aGVt LgoKVGhlIHRpbWUgdG8gdXNlIEBjb2Rle21ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsfSBpcyB3 aGVuIGl0IGlzIGNydWNpYWwKdGhhdCBubyB0d28gYnVmZmVycyBldmVyIHNoYXJlIHRoZSBzYW1l IGJpbmRpbmcuICBGb3IgZXhhbXBsZSwgd2hlbiBhCnZhcmlhYmxlIGlzIHVzZWQgZm9yIGludGVy bmFsIHB1cnBvc2VzIGluIGEgTGlzcCBwcm9ncmFtIHdoaWNoIGRlcGVuZHMKb24gaGF2aW5nIHNl cGFyYXRlIHZhbHVlcyBpbiBzZXBhcmF0ZSBidWZmZXJzLCB0aGVuIHVzaW5nCkBjb2Rle21ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsfSBjYW4gYmUgdGhlIGJlc3Qgc29sdXRpb24uCkBlbmQgZGVm Zm4KCkBkZWZtYWMgZGVmdmFyLWxvY2FsIHZhcmlhYmxlIHZhbHVlICZvcHRpb25hbCBkb2NzdHJp bmcKVGhpcyBtYWNybyBkZWZpbmVzIEB2YXJ7dmFyaWFibGV9IGFzIGEgdmFyaWFibGUgd2l0aCBp bml0aWFsIHZhbHVlCkB2YXJ7dmFsdWV9IGFuZCBAdmFye2RvY3N0cmluZ30sIGFuZCBtYXJrcyBp dCBhcyBhdXRvbWF0aWNhbGx5CmJ1ZmZlci1sb2NhbC4gIEl0IGlzIGVxdWl2YWxlbnQgdG8gY2Fs bGluZyBAY29kZXtkZWZ2YXJ9IGZvbGxvd2VkIGJ5CkBjb2Rle21ha2UtdmFyaWFibGUtYnVmZmVy LWxvY2FsfS4gIEB2YXJ7dmFyaWFibGV9IHNob3VsZCBiZSBhbgp1bnF1b3RlZCBzeW1ib2wuCkBl bmQgZGVmbWFjCgpAZGVmdW4gbG9jYWwtdmFyaWFibGUtcCB2YXJpYWJsZSAmb3B0aW9uYWwgYnVm ZmVyClRoaXMgcmV0dXJucyBAY29kZXt0fSBpZiBAdmFye3ZhcmlhYmxlfSBpcyBidWZmZXItbG9j YWwgaW4gYnVmZmVyCkB2YXJ7YnVmZmVyfSAod2hpY2ggZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQg YnVmZmVyKTsgb3RoZXJ3aXNlLApAY29kZXtuaWx9LgpAZW5kIGRlZnVuCgpAZGVmdW4gbG9jYWwt dmFyaWFibGUtaWYtc2V0LXAgdmFyaWFibGUgJm9wdGlvbmFsIGJ1ZmZlcgpUaGlzIHJldHVybnMg QGNvZGV7dH0gaWYgQHZhcnt2YXJpYWJsZX0gZWl0aGVyIGhhcyBhIGJ1ZmZlci1sb2NhbAp2YWx1 ZSBpbiBidWZmZXIgQHZhcntidWZmZXJ9LCBvciBpcyBhdXRvbWF0aWNhbGx5IGJ1ZmZlci1sb2Nh bC4KT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEBjb2Rle25pbH0uICBJZiBvbWl0dGVkIG9yIEBjb2Rl e25pbH0sCkB2YXJ7YnVmZmVyfSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBidWZmZXIuCkBlbmQg ZGVmdW4KCkBkZWZ1biBidWZmZXItbG9jYWwtdmFsdWUgdmFyaWFibGUgYnVmZmVyClRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0aGUgYnVmZmVyLWxvY2FsIGJpbmRpbmcgb2YgQHZhcnt2YXJpYWJsZX0g KGEKc3ltYm9sKSBpbiBidWZmZXIgQHZhcntidWZmZXJ9LiAgSWYgQHZhcnt2YXJpYWJsZX0gZG9l cyBub3QgaGF2ZSBhCmJ1ZmZlci1sb2NhbCBiaW5kaW5nIGluIGJ1ZmZlciBAdmFye2J1ZmZlcn0s IGl0IHJldHVybnMgdGhlIGRlZmF1bHQKdmFsdWUgKEBweHJlZntEZWZhdWx0IFZhbHVlfSkgb2Yg QHZhcnt2YXJpYWJsZX0gaW5zdGVhZC4KQGVuZCBkZWZ1bgoKQGRlZnVuIGJ1ZmZlci1sb2NhbC12 YXJpYWJsZXMgJm9wdGlvbmFsIGJ1ZmZlcgpUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IGRl c2NyaWJpbmcgdGhlIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZXMgaW4KYnVmZmVyIEB2YXJ7YnVmZmVy fS4gIChJZiBAdmFye2J1ZmZlcn0gaXMgb21pdHRlZCwgdGhlIGN1cnJlbnQgYnVmZmVyCmlzIHVz ZWQuKSAgTm9ybWFsbHksIGVhY2ggbGlzdCBlbGVtZW50IGhhcyB0aGUgZm9ybQpAd3tAY29kZXso QHZhcntzeW19IC4gQHZhcnt2YWx9KX19LCB3aGVyZSBAdmFye3N5bX0gaXMgYSBidWZmZXItbG9j YWwKdmFyaWFibGUgKGEgc3ltYm9sKSBhbmQgQHZhcnt2YWx9IGlzIGl0cyBidWZmZXItbG9jYWwg dmFsdWUuICBCdXQgd2hlbgphIHZhcmlhYmxlJ3MgYnVmZmVyLWxvY2FsIGJpbmRpbmcgaW4gQHZh cntidWZmZXJ9IGlzIHZvaWQsIGl0cyBsaXN0CmVsZW1lbnQgaXMganVzdCBAdmFye3N5bX0uCgpA ZXhhbXBsZQpAZ3JvdXAKKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2Zvb2JhcikKKG1ha3VuYm91bmQg J2Zvb2JhcikKKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2JpbmQtbWUpCihzZXRxIGJpbmQtbWUgNjkp CkBlbmQgZ3JvdXAKKHNldHEgbGNsIChidWZmZXItbG9jYWwtdmFyaWFibGVzKSkKICAgIDs7IEBy e0ZpcnN0LCBidWlsdC1pbiB2YXJpYWJsZXMgbG9jYWwgaW4gYWxsIGJ1ZmZlcnM6fQpAcmVzdWx0 e30gKChtYXJrLWFjdGl2ZSAuIG5pbCkKICAgIChidWZmZXItdW5kby1saXN0IC4gbmlsKQogICAg KG1vZGUtbmFtZSAuICJGdW5kYW1lbnRhbCIpCiAgICBAZG90c3t9CkBncm91cAogICAgOzsgQHJ7 TmV4dCwgbm9uLWJ1aWx0LWluIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZXMufQogICAgOzsgQHJ7VGhp cyBvbmUgaXMgYnVmZmVyLWxvY2FsIGFuZCB2b2lkOn0KICAgIGZvb2JhcgogICAgOzsgQHJ7VGhp cyBvbmUgaXMgYnVmZmVyLWxvY2FsIGFuZCBub252b2lkOn0KICAgIChiaW5kLW1lIC4gNjkpKQpA ZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKTm90ZSB0aGF0IHN0b3JpbmcgbmV3IHZhbHVlcyBpbnRv IHRoZSBAc2N7Y2RyfXMgb2YgY29ucyBjZWxscyBpbiB0aGlzCmxpc3QgZG9lcyBAZW1waHtub3R9 IGNoYW5nZSB0aGUgYnVmZmVyLWxvY2FsIHZhbHVlcyBvZiB0aGUgdmFyaWFibGVzLgpAZW5kIGRl ZnVuCgpAZGVmZm4gQ29tbWFuZCBraWxsLWxvY2FsLXZhcmlhYmxlIHZhcmlhYmxlClRoaXMgZnVu Y3Rpb24gZGVsZXRlcyB0aGUgYnVmZmVyLWxvY2FsIGJpbmRpbmcgKGlmIGFueSkgZm9yCkB2YXJ7 dmFyaWFibGV9IChhIHN5bWJvbCkgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgQXMgYSByZXN1bHQs IHRoZQpkZWZhdWx0IGJpbmRpbmcgb2YgQHZhcnt2YXJpYWJsZX0gYmVjb21lcyB2aXNpYmxlIGlu IHRoaXMgYnVmZmVyLiAgVGhpcwp0eXBpY2FsbHkgcmVzdWx0cyBpbiBhIGNoYW5nZSBpbiB0aGUg dmFsdWUgb2YgQHZhcnt2YXJpYWJsZX0sIHNpbmNlIHRoZQpkZWZhdWx0IHZhbHVlIGlzIHVzdWFs bHkgZGlmZmVyZW50IGZyb20gdGhlIGJ1ZmZlci1sb2NhbCB2YWx1ZSBqdXN0CmVsaW1pbmF0ZWQu CgpJZiB5b3Uga2lsbCB0aGUgYnVmZmVyLWxvY2FsIGJpbmRpbmcgb2YgYSB2YXJpYWJsZSB0aGF0 IGF1dG9tYXRpY2FsbHkKYmVjb21lcyBidWZmZXItbG9jYWwgd2hlbiBzZXQsIHRoaXMgbWFrZXMg dGhlIGRlZmF1bHQgdmFsdWUgdmlzaWJsZSBpbgp0aGUgY3VycmVudCBidWZmZXIuICBIb3dldmVy LCBpZiB5b3Ugc2V0IHRoZSB2YXJpYWJsZSBhZ2FpbiwgdGhhdCB3aWxsCm9uY2UgYWdhaW4gY3Jl YXRlIGEgYnVmZmVyLWxvY2FsIGJpbmRpbmcgZm9yIGl0LgoKQGNvZGV7a2lsbC1sb2NhbC12YXJp YWJsZX0gcmV0dXJucyBAdmFye3ZhcmlhYmxlfS4KClRoaXMgZnVuY3Rpb24gaXMgYSBjb21tYW5k IGJlY2F1c2UgaXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBraWxsIG9uZQpidWZmZXItbG9jYWwg dmFyaWFibGUgaW50ZXJhY3RpdmVseSwganVzdCBhcyBpdCBpcyB1c2VmdWwgdG8gY3JlYXRlCmJ1 ZmZlci1sb2NhbCB2YXJpYWJsZXMgaW50ZXJhY3RpdmVseS4KQGVuZCBkZWZmbgoKQGNpbmRleCBs b2NhbCB2YXJpYWJsZXMsIGtpbGxlZCBieSBtYWpvciBtb2RlCkBkZWZ1biBraWxsLWFsbC1sb2Nh bC12YXJpYWJsZXMKVGhpcyBmdW5jdGlvbiBlbGltaW5hdGVzIGFsbCB0aGUgYnVmZmVyLWxvY2Fs IHZhcmlhYmxlIGJpbmRpbmdzIG9mIHRoZQpjdXJyZW50IGJ1ZmZlciBleGNlcHQgZm9yIHZhcmlh YmxlcyBtYXJrZWQgYXMgcGVybWFuZW50IGFuZCBsb2NhbApob29rIGZ1bmN0aW9ucyB0aGF0IGhh dmUgYSBub24tQGNvZGV7bmlsfSBAY29kZXtwZXJtYW5lbnQtbG9jYWwtaG9va30KcHJvcGVydHkg KEBweHJlZntTZXR0aW5nIEhvb2tzfSkuICBBcyBhIHJlc3VsdCwgdGhlIGJ1ZmZlciB3aWxsIHNl ZQp0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgbW9zdCB2YXJpYWJsZXMuCgpUaGlzIGZ1bmN0aW9uIGFs c28gcmVzZXRzIGNlcnRhaW4gb3RoZXIgaW5mb3JtYXRpb24gcGVydGFpbmluZyB0byB0aGUKYnVm ZmVyOiBpdCBzZXRzIHRoZSBsb2NhbCBrZXltYXAgdG8gQGNvZGV7bmlsfSwgdGhlIHN5bnRheCB0 YWJsZSB0byB0aGUKdmFsdWUgb2YgQGNvZGV7KHN0YW5kYXJkLXN5bnRheC10YWJsZSl9LCB0aGUg Y2FzZSB0YWJsZSB0bwpAY29kZXsoc3RhbmRhcmQtY2FzZS10YWJsZSl9LCBhbmQgdGhlIGFiYnJl diB0YWJsZSB0byB0aGUgdmFsdWUgb2YKQGNvZGV7ZnVuZGFtZW50YWwtbW9kZS1hYmJyZXYtdGFi bGV9LgoKVGhlIHZlcnkgZmlyc3QgdGhpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIGlzIHJ1biB0aGUg bm9ybWFsIGhvb2sKQGNvZGV7Y2hhbmdlLW1ham9yLW1vZGUtaG9va30gKHNlZSBiZWxvdykuCgpF dmVyeSBtYWpvciBtb2RlIGNvbW1hbmQgYmVnaW5zIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwg d2hpY2ggaGFzIHRoZQplZmZlY3Qgb2Ygc3dpdGNoaW5nIHRvIEZ1bmRhbWVudGFsIG1vZGUgYW5k IGVyYXNpbmcgbW9zdCBvZiB0aGUgZWZmZWN0cwpvZiB0aGUgcHJldmlvdXMgbWFqb3IgbW9kZS4g IFRvIGVuc3VyZSB0aGF0IHRoaXMgZG9lcyBpdHMgam9iLCB0aGUKdmFyaWFibGVzIHRoYXQgbWFq b3IgbW9kZXMgc2V0IHNob3VsZCBub3QgYmUgbWFya2VkIHBlcm1hbmVudC4KCkBjb2Rle2tpbGwt YWxsLWxvY2FsLXZhcmlhYmxlc30gcmV0dXJucyBAY29kZXtuaWx9LgpAZW5kIGRlZnVuCgpAZGVm dmFyIGNoYW5nZS1tYWpvci1tb2RlLWhvb2sKVGhlIGZ1bmN0aW9uIEBjb2Rle2tpbGwtYWxsLWxv Y2FsLXZhcmlhYmxlc30gcnVucyB0aGlzIG5vcm1hbCBob29rCmJlZm9yZSBpdCBkb2VzIGFueXRo aW5nIGVsc2UuICBUaGlzIGdpdmVzIG1ham9yIG1vZGVzIGEgd2F5IHRvIGFycmFuZ2UKZm9yIHNv bWV0aGluZyBzcGVjaWFsIHRvIGJlIGRvbmUgaWYgdGhlIHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZm ZXJlbnQKbWFqb3IgbW9kZS4gIEl0IGlzIGFsc28gdXNlZnVsIGZvciBidWZmZXItc3BlY2lmaWMg bWlub3IgbW9kZXMKdGhhdCBzaG91bGQgYmUgZm9yZ290dGVuIGlmIHRoZSB1c2VyIGNoYW5nZXMg dGhlIG1ham9yIG1vZGUuCgpGb3IgYmVzdCByZXN1bHRzLCBtYWtlIHRoaXMgdmFyaWFibGUgYnVm ZmVyLWxvY2FsLCBzbyB0aGF0IGl0IHdpbGwKZGlzYXBwZWFyIGFmdGVyIGRvaW5nIGl0cyBqb2Ig YW5kIHdpbGwgbm90IGludGVyZmVyZSB3aXRoIHRoZQpzdWJzZXF1ZW50IG1ham9yIG1vZGUuICBA eHJlZntIb29rc30uCkBlbmQgZGVmdmFyCgpAY2luZGV4IHBlcm1hbmVudCBsb2NhbCB2YXJpYWJs ZQpBIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZSBpcyBAZGZue3Blcm1hbmVudH0gaWYgdGhlIHZhcmlh YmxlIG5hbWUgKGEKc3ltYm9sKSBoYXMgYSBAY29kZXtwZXJtYW5lbnQtbG9jYWx9IHByb3BlcnR5 IHRoYXQgaXMgbm9uLUBjb2Rle25pbH0uClN1Y2ggdmFyaWFibGVzIGFyZSB1bmFmZmVjdGVkIGJ5 IEBjb2Rle2tpbGwtYWxsLWxvY2FsLXZhcmlhYmxlc30sIGFuZAp0aGVpciBsb2NhbCBiaW5kaW5n cyBhcmUgdGhlcmVmb3JlIG5vdCBjbGVhcmVkIGJ5IGNoYW5naW5nIG1ham9yIG1vZGVzLgpQZXJt YW5lbnQgbG9jYWxzIGFyZSBhcHByb3ByaWF0ZSBmb3IgZGF0YSBwZXJ0YWluaW5nIHRvIHdoZXJl IHRoZSBmaWxlCmNhbWUgZnJvbSBvciBob3cgdG8gc2F2ZSBpdCwgcmF0aGVyIHRoYW4gd2l0aCBo b3cgdG8gZWRpdCB0aGUgY29udGVudHMuCgpAbm9kZSBEZWZhdWx0IFZhbHVlCkBzdWJzZWN0aW9u IFRoZSBEZWZhdWx0IFZhbHVlIG9mIGEgQnVmZmVyLUxvY2FsIFZhcmlhYmxlCkBjaW5kZXggZGVm YXVsdCB2YWx1ZQoKICBUaGUgZ2xvYmFsIHZhbHVlIG9mIGEgdmFyaWFibGUgd2l0aCBidWZmZXIt bG9jYWwgYmluZGluZ3MgaXMgYWxzbwpjYWxsZWQgdGhlIEBkZm57ZGVmYXVsdH0gdmFsdWUsIGJl Y2F1c2UgaXQgaXMgdGhlIHZhbHVlIHRoYXQgaXMgaW4KZWZmZWN0IHdoZW5ldmVyIG5laXRoZXIg dGhlIGN1cnJlbnQgYnVmZmVyIG5vciB0aGUgc2VsZWN0ZWQgZnJhbWUgaGFzCml0cyBvd24gYmlu ZGluZyBmb3IgdGhlIHZhcmlhYmxlLgoKICBUaGUgZnVuY3Rpb25zIEBjb2Rle2RlZmF1bHQtdmFs dWV9IGFuZCBAY29kZXtzZXRxLWRlZmF1bHR9IGFjY2VzcyBhbmQKY2hhbmdlIGEgdmFyaWFibGUn cyBkZWZhdWx0IHZhbHVlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY3VycmVudApidWZmZXIg aGFzIGEgYnVmZmVyLWxvY2FsIGJpbmRpbmcuICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZQpA Y29kZXtzZXRxLWRlZmF1bHR9IHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mCkBjb2Rl e3BhcmFncmFwaC1zdGFydH0gZm9yIG1vc3QgYnVmZmVyczsgYW5kIHRoaXMgd291bGQgd29yayBl dmVuIHdoZW4KeW91IGFyZSBpbiBhIEMgb3IgTGlzcCBtb2RlIGJ1ZmZlciB0aGF0IGhhcyBhIGJ1 ZmZlci1sb2NhbCB2YWx1ZSBmb3IKdGhpcyB2YXJpYWJsZS4KCkBjIEVtYWNzIDE5IGZlYXR1cmUK ICBUaGUgc3BlY2lhbCBmb3JtcyBAY29kZXtkZWZ2YXJ9IGFuZCBAY29kZXtkZWZjb25zdH0gYWxz byBzZXQgdGhlCmRlZmF1bHQgdmFsdWUgKGlmIHRoZXkgc2V0IHRoZSB2YXJpYWJsZSBhdCBhbGwp LCByYXRoZXIgdGhhbiBhbnkKYnVmZmVyLWxvY2FsIHZhbHVlLgoKQGRlZnVuIGRlZmF1bHQtdmFs dWUgc3ltYm9sClRoaXMgZnVuY3Rpb24gcmV0dXJucyBAdmFye3N5bWJvbH0ncyBkZWZhdWx0IHZh bHVlLiAgVGhpcyBpcyB0aGUgdmFsdWUKdGhhdCBpcyBzZWVuIGluIGJ1ZmZlcnMgYW5kIGZyYW1l cyB0aGF0IGRvIG5vdCBoYXZlIHRoZWlyIG93biB2YWx1ZXMgZm9yCnRoaXMgdmFyaWFibGUuICBJ ZiBAdmFye3N5bWJvbH0gaXMgbm90IGJ1ZmZlci1sb2NhbCwgdGhpcyBpcyBlcXVpdmFsZW50CnRv IEBjb2Rle3N5bWJvbC12YWx1ZX0gKEBweHJlZntBY2Nlc3NpbmcgVmFyaWFibGVzfSkuCkBlbmQg ZGVmdW4KCkBjIEVtYWNzIDE5IGZlYXR1cmUKQGRlZnVuIGRlZmF1bHQtYm91bmRwIHN5bWJvbApU aGUgZnVuY3Rpb24gQGNvZGV7ZGVmYXVsdC1ib3VuZHB9IHRlbGxzIHlvdSB3aGV0aGVyIEB2YXJ7 c3ltYm9sfSdzCmRlZmF1bHQgdmFsdWUgaXMgbm9udm9pZC4gIElmIEBjb2RleyhkZWZhdWx0LWJv dW5kcCAnZm9vKX0gcmV0dXJucwpAY29kZXtuaWx9LCB0aGVuIEBjb2RleyhkZWZhdWx0LXZhbHVl ICdmb28pfSB3b3VsZCBnZXQgYW4gZXJyb3IuCgpAY29kZXtkZWZhdWx0LWJvdW5kcH0gaXMgdG8g QGNvZGV7ZGVmYXVsdC12YWx1ZX0gYXMgQGNvZGV7Ym91bmRwfSBpcyB0bwpAY29kZXtzeW1ib2wt dmFsdWV9LgpAZW5kIGRlZnVuCgpAZGVmc3BlYyBzZXRxLWRlZmF1bHQgW3N5bWJvbCBmb3JtXUBk b3Rze30KVGhpcyBzcGVjaWFsIGZvcm0gZ2l2ZXMgZWFjaCBAdmFye3N5bWJvbH0gYSBuZXcgZGVm YXVsdCB2YWx1ZSwgd2hpY2ggaXMKdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBjb3JyZXNw b25kaW5nIEB2YXJ7Zm9ybX0uICBJdCBkb2VzIG5vdApldmFsdWF0ZSBAdmFye3N5bWJvbH0sIGJ1 dCBkb2VzIGV2YWx1YXRlIEB2YXJ7Zm9ybX0uICBUaGUgdmFsdWUgb2YgdGhlCkBjb2Rle3NldHEt ZGVmYXVsdH0gZm9ybSBpcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgQHZhcntmb3JtfS4KCklmIGEg QHZhcntzeW1ib2x9IGlzIG5vdCBidWZmZXItbG9jYWwgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlciwg YW5kIGlzIG5vdAptYXJrZWQgYXV0b21hdGljYWxseSBidWZmZXItbG9jYWwsIEBjb2Rle3NldHEt ZGVmYXVsdH0gaGFzIHRoZSBzYW1lCmVmZmVjdCBhcyBAY29kZXtzZXRxfS4gIElmIEB2YXJ7c3lt Ym9sfSBpcyBidWZmZXItbG9jYWwgZm9yIHRoZSBjdXJyZW50CmJ1ZmZlciwgdGhlbiB0aGlzIGNo YW5nZXMgdGhlIHZhbHVlIHRoYXQgb3RoZXIgYnVmZmVycyB3aWxsIHNlZSAoYXMgbG9uZwphcyB0 aGV5IGRvbid0IGhhdmUgYSBidWZmZXItbG9jYWwgdmFsdWUpLCBidXQgbm90IHRoZSB2YWx1ZSB0 aGF0IHRoZQpjdXJyZW50IGJ1ZmZlciBzZWVzLgoKQGV4YW1wbGUKQGdyb3VwCjs7IEBye0luIGJ1 ZmZlciBAc2FtcHtmb299On0KKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2J1ZmZlci1sb2NhbCkKICAg ICBAcmVzdWx0e30gYnVmZmVyLWxvY2FsCkBlbmQgZ3JvdXAKQGdyb3VwCihzZXRxIGJ1ZmZlci1s b2NhbCAndmFsdWUtaW4tZm9vKQogICAgIEByZXN1bHR7fSB2YWx1ZS1pbi1mb28KQGVuZCBncm91 cApAZ3JvdXAKKHNldHEtZGVmYXVsdCBidWZmZXItbG9jYWwgJ25ldy1kZWZhdWx0KQogICAgIEBy ZXN1bHR7fSBuZXctZGVmYXVsdApAZW5kIGdyb3VwCkBncm91cApidWZmZXItbG9jYWwKICAgICBA cmVzdWx0e30gdmFsdWUtaW4tZm9vCkBlbmQgZ3JvdXAKQGdyb3VwCihkZWZhdWx0LXZhbHVlICdi dWZmZXItbG9jYWwpCiAgICAgQHJlc3VsdHt9IG5ldy1kZWZhdWx0CkBlbmQgZ3JvdXAKCkBncm91 cAo7OyBAcntJbiAodGhlIG5ldykgYnVmZmVyIEBzYW1we2Jhcn06fQpidWZmZXItbG9jYWwKICAg ICBAcmVzdWx0e30gbmV3LWRlZmF1bHQKQGVuZCBncm91cApAZ3JvdXAKKGRlZmF1bHQtdmFsdWUg J2J1ZmZlci1sb2NhbCkKICAgICBAcmVzdWx0e30gbmV3LWRlZmF1bHQKQGVuZCBncm91cApAZ3Jv dXAKKHNldHEgYnVmZmVyLWxvY2FsICdhbm90aGVyLWRlZmF1bHQpCiAgICAgQHJlc3VsdHt9IGFu b3RoZXItZGVmYXVsdApAZW5kIGdyb3VwCkBncm91cAooZGVmYXVsdC12YWx1ZSAnYnVmZmVyLWxv Y2FsKQogICAgIEByZXN1bHR7fSBhbm90aGVyLWRlZmF1bHQKQGVuZCBncm91cAoKQGdyb3VwCjs7 IEBye0JhY2sgaW4gYnVmZmVyIEBzYW1we2Zvb306fQpidWZmZXItbG9jYWwKICAgICBAcmVzdWx0 e30gdmFsdWUtaW4tZm9vCihkZWZhdWx0LXZhbHVlICdidWZmZXItbG9jYWwpCiAgICAgQHJlc3Vs dHt9IGFub3RoZXItZGVmYXVsdApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQpAZW5kIGRlZnNwZWMK CkBkZWZ1biBzZXQtZGVmYXVsdCBzeW1ib2wgdmFsdWUKVGhpcyBmdW5jdGlvbiBpcyBsaWtlIEBj b2Rle3NldHEtZGVmYXVsdH0sIGV4Y2VwdCB0aGF0IEB2YXJ7c3ltYm9sfSBpcwphbiBvcmRpbmFy eSBldmFsdWF0ZWQgYXJndW1lbnQuCgpAZXhhbXBsZQpAZ3JvdXAKKHNldC1kZWZhdWx0IChjYXIg JyhhIGIgYykpIDIzKQogICAgIEByZXN1bHR7fSAyMwpAZW5kIGdyb3VwCkBncm91cAooZGVmYXVs dC12YWx1ZSAnYSkKICAgICBAcmVzdWx0e30gMjMKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKQGVu ZCBkZWZ1bgoKICBBIHZhcmlhYmxlIGNhbiBiZSBsZXQtYm91bmQgKEBweHJlZntMb2NhbCBWYXJp YWJsZXN9KSB0byBhIHZhbHVlLgpUaGlzIG1ha2VzIGl0cyBnbG9iYWwgdmFsdWUgc2hhZG93ZWQg YnkgdGhlIGJpbmRpbmc7CkBjb2Rle2RlZmF1bHQtdmFsdWV9IHdpbGwgdGhlbiByZXR1cm4gdGhl IHZhbHVlIGZyb20gdGhhdCBiaW5kaW5nLCBub3QKdGhlIGdsb2JhbCB2YWx1ZSwgYW5kIEBjb2Rl e3NldC1kZWZhdWx0fSB3aWxsIGJlIHByZXZlbnRlZCBmcm9tCnNldHRpbmcgdGhlIGdsb2JhbCB2 YWx1ZSAoaXQgd2lsbCBjaGFuZ2UgdGhlIGxldC1ib3VuZCB2YWx1ZSBpbnN0ZWFkKS4KVGhlIGZv bGxvd2luZyB0d28gZnVuY3Rpb25zIGFsbG93IHRvIHJlZmVyZW5jZSB0aGUgZ2xvYmFsIHZhbHVl IGV2ZW4KaWYgaXQncyBzaGFkb3dlZCBieSBhIGxldC1iaW5kaW5nLgoKQGNpbmRleCB0b3AtbGV2 ZWwgZGVmYXVsdCB2YWx1ZQpAZGVmdW4gZGVmYXVsdC10b3BsZXZlbC12YWx1ZSBzeW1ib2wKVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBAZGZue3RvcC1sZXZlbH0gZGVmYXVsdCB2YWx1ZSBvZgpA dmFye3N5bWJvbH0sIHdoaWNoIGlzIGl0cyB2YWx1ZSBvdXRzaWRlIG9mIGFueSBsZXQtYmluZGlu Zy4KQGVuZCBkZWZ1bgoKQGV4YW1wbGUKQGdyb3VwCihkZWZ2YXIgdmFyaWFibGUgJ2dsb2JhbC12 YWx1ZSkKICAgIEByZXN1bHR7fSB2YXJpYWJsZQpAZW5kIGdyb3VwCkBncm91cAoobGV0ICgodmFy aWFibGUgJ2xldC1iaW5kaW5nKSkKICAoZGVmYXVsdC12YWx1ZSAndmFyaWFibGUpKQogICAgQHJl c3VsdHt9IGxldC1iaW5kaW5nCkBlbmQgZ3JvdXAKQGdyb3VwCihsZXQgKCh2YXJpYWJsZSAnbGV0 LWJpbmRpbmcpKQogIChkZWZhdWx0LXRvcGxldmVsLXZhbHVlICd2YXJpYWJsZSkpCiAgICBAcmVz dWx0e30gZ2xvYmFsLXZhbHVlCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpAZGVmdW4gc2V0LWRl ZmF1bHQtdG9wbGV2ZWwtdmFsdWUgc3ltYm9sIHZhbHVlClRoaXMgZnVuY3Rpb24gc2V0cyB0aGUg dG9wLWxldmVsIGRlZmF1bHQgdmFsdWUgb2YgQHZhcntzeW1ib2x9IHRvIHRoZQpzcGVjaWZpZWQg QHZhcnt2YWx1ZX0uICBUaGlzIGNvbWVzIGluIGhhbmR5IHdoZW4geW91IHdhbnQgdG8gc2V0IHRo ZQpnbG9iYWwgdmFsdWUgb2YgQHZhcntzeW1ib2x9IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3Vy IGNvZGUgcnVucyBpbgp0aGUgY29udGV4dCBvZiBAdmFye3N5bWJvbH0ncyBsZXQtYmluZGluZy4K QGVuZCBkZWZ1bgoKCkBub2RlIEZpbGUgTG9jYWwgVmFyaWFibGVzCkBzZWN0aW9uIEZpbGUgTG9j YWwgVmFyaWFibGVzCkBjaW5kZXggZmlsZSBsb2NhbCB2YXJpYWJsZXMKCiAgQSBmaWxlIGNhbiBz cGVjaWZ5IGxvY2FsIHZhcmlhYmxlIHZhbHVlczsgRW1hY3MgdXNlcyB0aGVzZSB0byBjcmVhdGUK YnVmZmVyLWxvY2FsIGJpbmRpbmdzIGZvciB0aG9zZSB2YXJpYWJsZXMgaW4gdGhlIGJ1ZmZlciB2 aXNpdGluZyB0aGF0CmZpbGUuICBAeHJlZntGaWxlIFZhcmlhYmxlcywgLCBMb2NhbCBWYXJpYWJs ZXMgaW4gRmlsZXMsIGVtYWNzLCBUaGUKR05VIEVtYWNzIE1hbnVhbH0sIGZvciBiYXNpYyBpbmZv cm1hdGlvbiBhYm91dCBmaWxlLWxvY2FsIHZhcmlhYmxlcy4KVGhpcyBzZWN0aW9uIGRlc2NyaWJl cyB0aGUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgdGhhdCBhZmZlY3QgaG93CmZpbGUtbG9jYWwg dmFyaWFibGVzIGFyZSBwcm9jZXNzZWQuCgogIElmIGEgZmlsZS1sb2NhbCB2YXJpYWJsZSBjb3Vs ZCBzcGVjaWZ5IGFuIGFyYml0cmFyeSBmdW5jdGlvbiBvciBMaXNwCmV4cHJlc3Npb24gdGhhdCB3 b3VsZCBiZSBjYWxsZWQgbGF0ZXIsIHZpc2l0aW5nIGEgZmlsZSBjb3VsZCB0YWtlIG92ZXIKeW91 ciBFbWFjcy4gIEVtYWNzIHByb3RlY3RzIGFnYWluc3QgdGhpcyBieSBhdXRvbWF0aWNhbGx5IHNl dHRpbmcgb25seQp0aG9zZSBmaWxlLWxvY2FsIHZhcmlhYmxlcyB3aG9zZSBzcGVjaWZpZWQgdmFs dWVzIGFyZSBrbm93biB0byBiZQpzYWZlLiAgT3RoZXIgZmlsZS1sb2NhbCB2YXJpYWJsZXMgYXJl IHNldCBvbmx5IGlmIHRoZSB1c2VyIGFncmVlcy4KCiAgRm9yIGFkZGl0aW9uYWwgc2FmZXR5LCBA Y29kZXtyZWFkLWNpcmNsZX0gaXMgdGVtcG9yYXJpbHkgYm91bmQgdG8KQGNvZGV7bmlsfSB3aGVu IEVtYWNzIHJlYWRzIGZpbGUtbG9jYWwgdmFyaWFibGVzIChAcHhyZWZ7SW5wdXQKRnVuY3Rpb25z fSkuICBUaGlzIHByZXZlbnRzIHRoZSBMaXNwIHJlYWRlciBmcm9tIHJlY29nbml6aW5nIGNpcmN1 bGFyCmFuZCBzaGFyZWQgTGlzcCBzdHJ1Y3R1cmVzIChAcHhyZWZ7Q2lyY3VsYXIgT2JqZWN0c30p LgoKQGRlZm9wdCBlbmFibGUtbG9jYWwtdmFyaWFibGVzClRoaXMgdmFyaWFibGUgY29udHJvbHMg d2hldGhlciB0byBwcm9jZXNzIGZpbGUtbG9jYWwgdmFyaWFibGVzLgpUaGUgcG9zc2libGUgdmFs dWVzIGFyZToKCkB0YWJsZSBAYXNpcwpAaXRlbSBAY29kZXt0fSAodGhlIGRlZmF1bHQpClNldCB0 aGUgc2FmZSB2YXJpYWJsZXMsIGFuZCBxdWVyeSAob25jZSkgYWJvdXQgYW55IHVuc2FmZSB2YXJp YWJsZXMuCkBpdGVtIEBjb2RlezpzYWZlfQpTZXQgb25seSB0aGUgc2FmZSB2YXJpYWJsZXMgYW5k IGRvIG5vdCBxdWVyeS4KQGl0ZW0gQGNvZGV7OmFsbH0KU2V0IGFsbCB0aGUgdmFyaWFibGVzIGFu ZCBkbyBub3QgcXVlcnkuCkBpdGVtIEBjb2Rle25pbH0KRG9uJ3Qgc2V0IGFueSB2YXJpYWJsZXMu CkBpdGVtIGFueXRoaW5nIGVsc2UKUXVlcnkgKG9uY2UpIGFib3V0IGFsbCB0aGUgdmFyaWFibGVz LgpAZW5kIHRhYmxlCkBlbmQgZGVmb3B0CgpAZGVmdmFyIGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXJlZ2V4cHMKVGhpcyBpcyBhIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucy4gIElmIGEgZmls ZSBoYXMgYSBuYW1lCm1hdGNoaW5nIGFuIGVsZW1lbnQgb2YgdGhpcyBsaXN0LCB0aGVuIGl0IGlz IG5vdCBzY2FubmVkIGZvcgphbnkgZm9ybSBvZiBmaWxlLWxvY2FsIHZhcmlhYmxlLiAgRm9yIGV4 YW1wbGVzIG9mIHdoeSB5b3UgbWlnaHQgd2FudAp0byB1c2UgdGhpcywgQHB4cmVme0F1dG8gTWFq b3IgTW9kZX0uCkBlbmQgZGVmdmFyCgpAZGVmdW4gaGFjay1sb2NhbC12YXJpYWJsZXMgJm9wdGlv bmFsIGhhbmRsZS1tb2RlClRoaXMgZnVuY3Rpb24gcGFyc2VzLCBhbmQgYmluZHMgb3IgZXZhbHVh dGVzIGFzIGFwcHJvcHJpYXRlLCBhbnkgbG9jYWwKdmFyaWFibGVzIHNwZWNpZmllZCBieSB0aGUg Y29udGVudHMgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLiAgVGhlIHZhcmlhYmxlCkBjb2Rle2VuYWJs ZS1sb2NhbC12YXJpYWJsZXN9IGhhcyBpdHMgZWZmZWN0IGhlcmUuICBIb3dldmVyLCB0aGlzCmZ1 bmN0aW9uIGRvZXMgbm90IGxvb2sgZm9yIHRoZSBAc2FtcHttb2RlOn0gbG9jYWwgdmFyaWFibGUg aW4gdGhlCkB3e0BzYW1wey0qLX19IGxpbmUuICBAY29kZXtzZXQtYXV0by1tb2RlfSBkb2VzIHRo YXQsIGFsc28gdGFraW5nCkBjb2Rle2VuYWJsZS1sb2NhbC12YXJpYWJsZXN9IGludG8gYWNjb3Vu dCAoQHB4cmVme0F1dG8gTWFqb3IgTW9kZX0pLgoKVGhpcyBmdW5jdGlvbiB3b3JrcyBieSB3YWxr aW5nIHRoZSBhbGlzdCBzdG9yZWQgaW4KQGNvZGV7ZmlsZS1sb2NhbC12YXJpYWJsZXMtYWxpc3R9 IGFuZCBhcHBseWluZyBlYWNoIGxvY2FsIHZhcmlhYmxlIGluCnR1cm4uICBJdCBjYWxscyBAY29k ZXtiZWZvcmUtaGFjay1sb2NhbC12YXJpYWJsZXMtaG9va30gYW5kCkBjb2Rle2hhY2stbG9jYWwt dmFyaWFibGVzLWhvb2t9IGJlZm9yZSBhbmQgYWZ0ZXIgYXBwbHlpbmcgdGhlCnZhcmlhYmxlcywg cmVzcGVjdGl2ZWx5LiAgSXQgb25seSBjYWxscyB0aGUgYmVmb3JlLWhvb2sgaWYgdGhlIGFsaXN0 CmlzIG5vbi1AY29kZXtuaWx9OyBpdCBhbHdheXMgY2FsbHMgdGhlIG90aGVyIGhvb2suICBUaGlz CmZ1bmN0aW9uIGlnbm9yZXMgYSBAc2FtcHttb2RlfSBlbGVtZW50IGlmIGl0IHNwZWNpZmllcyB0 aGUgc2FtZSBtYWpvcgptb2RlIGFzIHRoZSBidWZmZXIgYWxyZWFkeSBoYXMuCgpJZiB0aGUgb3B0 aW9uYWwgYXJndW1lbnQgQHZhcntoYW5kbGUtbW9kZX0gaXMgQGNvZGV7dH0sIHRoZW4gYWxsIHRo aXMKZnVuY3Rpb24gZG9lcyBpcyByZXR1cm4gYSBzeW1ib2wgc3BlY2lmeWluZyB0aGUgbWFqb3Ig bW9kZSwgaWYgdGhlCkB3e0BzYW1wey0qLX19IGxpbmUgb3IgdGhlIGxvY2FsIHZhcmlhYmxlcyBs aXN0IHNwZWNpZmllcyBvbmUsIGFuZApAY29kZXtuaWx9IG90aGVyd2lzZS4gIEl0IGRvZXMgbm90 IHNldCB0aGUgbW9kZSBvciBhbnkgb3RoZXIKZmlsZS1sb2NhbCB2YXJpYWJsZS4gIElmIEB2YXJ7 aGFuZGxlLW1vZGV9IGhhcyBhbnkgdmFsdWUgb3RoZXIgdGhhbgpAY29kZXtuaWx9IG9yIEBjb2Rl e3R9LCBhbnkgc2V0dGluZ3Mgb2YgQHNhbXB7bW9kZX0gaW4gdGhlCkB3e0BzYW1wey0qLX19IGxp bmUgb3IgdGhlIGxvY2FsIHZhcmlhYmxlcyBsaXN0IGFyZSBpZ25vcmVkLCBhbmQgdGhlCm90aGVy IHNldHRpbmdzIGFyZSBhcHBsaWVkLiAgSWYgQHZhcntoYW5kbGUtbW9kZX0gaXMgQGNvZGV7bmls fSwgYWxsCnRoZSBmaWxlIGxvY2FsIHZhcmlhYmxlcyBhcmUgc2V0LgpAZW5kIGRlZnVuCgpAZGVm dmFyIGZpbGUtbG9jYWwtdmFyaWFibGVzLWFsaXN0ClRoaXMgYnVmZmVyLWxvY2FsIHZhcmlhYmxl IGhvbGRzIHRoZSBhbGlzdCBvZiBmaWxlLWxvY2FsIHZhcmlhYmxlCnNldHRpbmdzLiAgRWFjaCBl bGVtZW50IG9mIHRoZSBhbGlzdCBpcyBvZiB0aGUgZm9ybQpAd3tAY29kZXsoQHZhcnt2YXJ9IC4g QHZhcnt2YWx1ZX0pfX0sIHdoZXJlIEB2YXJ7dmFyfSBpcyBhIHN5bWJvbCBvZgp0aGUgbG9jYWwg dmFyaWFibGUgYW5kIEB2YXJ7dmFsdWV9IGlzIGl0cyB2YWx1ZS4gIFdoZW4gRW1hY3MgdmlzaXRz IGEKZmlsZSwgaXQgZmlyc3QgY29sbGVjdHMgYWxsIHRoZSBmaWxlLWxvY2FsIHZhcmlhYmxlcyBp bnRvIHRoaXMgYWxpc3QsCmFuZCB0aGVuIHRoZSBAY29kZXtoYWNrLWxvY2FsLXZhcmlhYmxlc30g ZnVuY3Rpb24gYXBwbGllcyB0aGVtIG9uZSBieQpvbmUuCkBlbmQgZGVmdmFyCgpAZGVmdmFyIGJl Zm9yZS1oYWNrLWxvY2FsLXZhcmlhYmxlcy1ob29rCkVtYWNzIGNhbGxzIHRoaXMgaG9vayBpbW1l ZGlhdGVseSBiZWZvcmUgYXBwbHlpbmcgZmlsZS1sb2NhbCB2YXJpYWJsZXMKc3RvcmVkIGluIEBj b2Rle2ZpbGUtbG9jYWwtdmFyaWFibGVzLWFsaXN0fS4KQGVuZCBkZWZ2YXIKCkBkZWZ2YXIgaGFj ay1sb2NhbC12YXJpYWJsZXMtaG9vawpFbWFjcyBjYWxscyB0aGlzIGhvb2sgaW1tZWRpYXRlbHkg YWZ0ZXIgaXQgZmluaXNoZXMgYXBwbHlpbmcKZmlsZS1sb2NhbCB2YXJpYWJsZXMgc3RvcmVkIGlu IEBjb2Rle2ZpbGUtbG9jYWwtdmFyaWFibGVzLWFsaXN0fS4KQGVuZCBkZWZ2YXIKCkBjaW5kZXgg c2FmZSBsb2NhbCB2YXJpYWJsZQogIFlvdSBjYW4gc3BlY2lmeSBzYWZlIHZhbHVlcyBmb3IgYSB2 YXJpYWJsZSB3aXRoIGEKQGNvZGV7c2FmZS1sb2NhbC12YXJpYWJsZX0gcHJvcGVydHkuICBUaGUg cHJvcGVydHkgaGFzIHRvIGJlIGEKZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50OyBhbnkgdmFsdWUg aXMgc2FmZSBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucwpub24tQGNvZGV7bmlsfSBnaXZlbiB0aGF0 IHZhbHVlLiAgTWFueSBjb21tb25seS1lbmNvdW50ZXJlZCBmaWxlCnZhcmlhYmxlcyBoYXZlIEBj b2Rle3NhZmUtbG9jYWwtdmFyaWFibGV9IHByb3BlcnRpZXM7IHRoZXNlIGluY2x1ZGUKQGNvZGV7 ZmlsbC1jb2x1bW59LCBAY29kZXtmaWxsLXByZWZpeH0sIGFuZCBAY29kZXtpbmRlbnQtdGFicy1t b2RlfS4KRm9yIGJvb2xlYW4tdmFsdWVkIHZhcmlhYmxlcyB0aGF0IGFyZSBzYWZlLCB1c2UgQGNv ZGV7Ym9vbGVhbnB9IGFzIHRoZQpwcm9wZXJ0eSB2YWx1ZS4KCiAgV2hlbiBkZWZpbmluZyBhIHVz ZXIgb3B0aW9uIHVzaW5nIEBjb2Rle2RlZmN1c3RvbX0sIHlvdSBjYW4gc2V0IGl0cwpAY29kZXtz YWZlLWxvY2FsLXZhcmlhYmxlfSBwcm9wZXJ0eSBieSBhZGRpbmcgdGhlIGFyZ3VtZW50cwpAY29k ZXs6c2FmZSBAdmFye2Z1bmN0aW9ufX0gdG8gQGNvZGV7ZGVmY3VzdG9tfSAoQHB4cmVme1Zhcmlh YmxlCkRlZmluaXRpb25zfSkuCgpAZGVmb3B0IHNhZmUtbG9jYWwtdmFyaWFibGUtdmFsdWVzClRo aXMgdmFyaWFibGUgcHJvdmlkZXMgYW5vdGhlciB3YXkgdG8gbWFyayBzb21lIHZhcmlhYmxlIHZh bHVlcyBhcwpzYWZlLiAgSXQgaXMgYSBsaXN0IG9mIGNvbnMgY2VsbHMgQGNvZGV7KEB2YXJ7dmFy fSAuIEB2YXJ7dmFsfSl9LAp3aGVyZSBAdmFye3Zhcn0gaXMgYSB2YXJpYWJsZSBuYW1lIGFuZCBA dmFye3ZhbH0gaXMgYSB2YWx1ZSB3aGljaCBpcwpzYWZlIGZvciB0aGF0IHZhcmlhYmxlLgoKV2hl biBFbWFjcyBhc2tzIHRoZSB1c2VyIHdoZXRoZXIgb3Igbm90IHRvIG9iZXkgYSBzZXQgb2YgZmls ZS1sb2NhbAp2YXJpYWJsZSBzcGVjaWZpY2F0aW9ucywgdGhlIHVzZXIgY2FuIGNob29zZSB0byBt YXJrIHRoZW0gYXMgc2FmZS4KRG9pbmcgc28gYWRkcyB0aG9zZSB2YXJpYWJsZS92YWx1ZSBwYWly cyB0bwpAY29kZXtzYWZlLWxvY2FsLXZhcmlhYmxlLXZhbHVlc30sIGFuZCBzYXZlcyBpdCB0byB0 aGUgdXNlcidzIGN1c3RvbQpmaWxlLgpAZW5kIGRlZm9wdAoKQGRlZnVuIHNhZmUtbG9jYWwtdmFy aWFibGUtcCBzeW0gdmFsClRoaXMgZnVuY3Rpb24gcmV0dXJucyBub24tQGNvZGV7bmlsfSBpZiBp dCBpcyBzYWZlIHRvIGdpdmUgQHZhcntzeW19CnRoZSB2YWx1ZSBAdmFye3ZhbH0sIGJhc2VkIG9u IHRoZSBhYm92ZSBjcml0ZXJpYS4KQGVuZCBkZWZ1bgoKQGMgQGNpbmRleCByaXNreSBsb2NhbCB2 YXJpYWJsZSAgIER1cGxpY2F0ZXMgcmlza3ktbG9jYWwtdmFyaWFibGUKICBTb21lIHZhcmlhYmxl cyBhcmUgY29uc2lkZXJlZCBAZGZue3Jpc2t5fS4gIElmIGEgdmFyaWFibGUgaXMgcmlza3ksCml0 IGlzIG5ldmVyIGVudGVyZWQgYXV0b21hdGljYWxseSBpbnRvCkBjb2Rle3NhZmUtbG9jYWwtdmFy aWFibGUtdmFsdWVzfTsgRW1hY3MgYWx3YXlzIHF1ZXJpZXMgYmVmb3JlIHNldHRpbmcKYSByaXNr eSB2YXJpYWJsZSwgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgYWxsb3dzIGEgdmFsdWUgYnkK Y3VzdG9taXppbmcgQGNvZGV7c2FmZS1sb2NhbC12YXJpYWJsZS12YWx1ZXN9IGRpcmVjdGx5LgoK ICBBbnkgdmFyaWFibGUgd2hvc2UgbmFtZSBoYXMgYSBub24tQGNvZGV7bmlsfQpAY29kZXtyaXNr eS1sb2NhbC12YXJpYWJsZX0gcHJvcGVydHkgaXMgY29uc2lkZXJlZCByaXNreS4gIFdoZW4geW91 CmRlZmluZSBhIHVzZXIgb3B0aW9uIHVzaW5nIEBjb2Rle2RlZmN1c3RvbX0sIHlvdSBjYW4gc2V0 IGl0cwpAY29kZXtyaXNreS1sb2NhbC12YXJpYWJsZX0gcHJvcGVydHkgYnkgYWRkaW5nIHRoZSBh cmd1bWVudHMKQGNvZGV7OnJpc2t5IEB2YXJ7dmFsdWV9fSB0byBAY29kZXtkZWZjdXN0b219IChA cHhyZWZ7VmFyaWFibGUKRGVmaW5pdGlvbnN9KS4gIEluIGFkZGl0aW9uLCBhbnkgdmFyaWFibGUg d2hvc2UgbmFtZSBlbmRzIGluIGFueSBvZgpAc2FtcHstY29tbWFuZH0sIEBzYW1wey1mcmFtZS1h bGlzdH0sIEBzYW1wey1mdW5jdGlvbn0sCkBzYW1wey1mdW5jdGlvbnN9LCBAc2FtcHstaG9va30s IEBzYW1wey1ob29rc30sIEBzYW1wey1mb3JtfSwKQHNhbXB7LWZvcm1zfSwgQHNhbXB7LW1hcH0s IEBzYW1wey1tYXAtYWxpc3R9LCBAc2FtcHstbW9kZS1hbGlzdH0sCkBzYW1wey1wcm9ncmFtfSwg b3IgQHNhbXB7LXByZWRpY2F0ZX0gaXMgYXV0b21hdGljYWxseSBjb25zaWRlcmVkCnJpc2t5LiAg VGhlIHZhcmlhYmxlcyBAc2FtcHtmb250LWxvY2sta2V5d29yZHN9LApAc2FtcHtmb250LWxvY2st a2V5d29yZHN9IGZvbGxvd2VkIGJ5IGEgZGlnaXQsIGFuZApAc2FtcHtmb250LWxvY2stc3ludGFj dGljLWtleXdvcmRzfSBhcmUgYWxzbyBjb25zaWRlcmVkIHJpc2t5LgoKQGRlZnVuIHJpc2t5LWxv Y2FsLXZhcmlhYmxlLXAgc3ltClRoaXMgZnVuY3Rpb24gcmV0dXJucyBub24tQGNvZGV7bmlsfSBp ZiBAdmFye3N5bX0gaXMgYSByaXNreSB2YXJpYWJsZSwKYmFzZWQgb24gdGhlIGFib3ZlIGNyaXRl cmlhLgpAZW5kIGRlZnVuCgpAZGVmdmFyIGlnbm9yZWQtbG9jYWwtdmFyaWFibGVzClRoaXMgdmFy aWFibGUgaG9sZHMgYSBsaXN0IG9mIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBub3QgYmUgZ2l2ZW4g bG9jYWwKdmFsdWVzIGJ5IGZpbGVzLiAgQW55IHZhbHVlIHNwZWNpZmllZCBmb3Igb25lIG9mIHRo ZXNlIHZhcmlhYmxlcyBpcwpjb21wbGV0ZWx5IGlnbm9yZWQuCkBlbmQgZGVmdmFyCgogIFRoZSBA c2FtcHtFdmFsOn0gYGB2YXJpYWJsZScnIGlzIGFsc28gYSBwb3RlbnRpYWwgbG9vcGhvbGUsIHNv IEVtYWNzCm5vcm1hbGx5IGFza3MgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgaGFuZGxpbmcgaXQu CgpAZGVmb3B0IGVuYWJsZS1sb2NhbC1ldmFsClRoaXMgdmFyaWFibGUgY29udHJvbHMgcHJvY2Vz c2luZyBvZiBAc2FtcHtFdmFsOn0gaW4gQHNhbXB7LSotfSBsaW5lcwpvciBsb2NhbCB2YXJpYWJs ZXMKbGlzdHMgaW4gZmlsZXMgYmVpbmcgdmlzaXRlZC4gIEEgdmFsdWUgb2YgQGNvZGV7dH0gbWVh bnMgcHJvY2VzcyB0aGVtCnVuY29uZGl0aW9uYWxseTsgQGNvZGV7bmlsfSBtZWFucyBpZ25vcmUg dGhlbTsgYW55dGhpbmcgZWxzZSBtZWFucyBhc2sKdGhlIHVzZXIgd2hhdCB0byBkbyBmb3IgZWFj aCBmaWxlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgQGNvZGV7bWF5YmV9LgpAZW5kIGRlZm9wdAoK QGRlZm9wdCBzYWZlLWxvY2FsLWV2YWwtZm9ybXMKVGhpcyB2YXJpYWJsZSBob2xkcyBhIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdGhhdCBhcmUgc2FmZSB0bwpldmFsdWF0ZSB3aGVuIGZvdW5kIGluIHRo ZSBAc2FtcHtFdmFsOn0gYGB2YXJpYWJsZScnIGluIGEgZmlsZQpsb2NhbCB2YXJpYWJsZXMgbGlz dC4KQGVuZCBkZWZvcHQKCiAgSWYgdGhlIGV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjYWxsIGFu ZCB0aGUgZnVuY3Rpb24gaGFzIGEKQGNvZGV7c2FmZS1sb2NhbC1ldmFsLWZ1bmN0aW9ufSBwcm9w ZXJ0eSwgdGhlIHByb3BlcnR5IHZhbHVlCmRldGVybWluZXMgd2hldGhlciB0aGUgZXhwcmVzc2lv biBpcyBzYWZlIHRvIGV2YWx1YXRlLiAgVGhlIHByb3BlcnR5CnZhbHVlIGNhbiBiZSBhIHByZWRp Y2F0ZSB0byBjYWxsIHRvIHRlc3QgdGhlIGV4cHJlc3Npb24sIGEgbGlzdCBvZgpzdWNoIHByZWRp Y2F0ZXMgKGl0J3Mgc2FmZSBpZiBhbnkgcHJlZGljYXRlIHN1Y2NlZWRzKSwgb3IgQGNvZGV7dH0K KGFsd2F5cyBzYWZlIHByb3ZpZGVkIHRoZSBhcmd1bWVudHMgYXJlIGNvbnN0YW50KS4KCiAgVGV4 dCBwcm9wZXJ0aWVzIGFyZSBhbHNvIHBvdGVudGlhbCBsb29waG9sZXMsIHNpbmNlIHRoZWlyIHZh bHVlcwpjb3VsZCBpbmNsdWRlIGZ1bmN0aW9ucyB0byBjYWxsLiAgU28gRW1hY3MgZGlzY2FyZHMg YWxsIHRleHQKcHJvcGVydGllcyBmcm9tIHN0cmluZyB2YWx1ZXMgc3BlY2lmaWVkIGZvciBmaWxl LWxvY2FsIHZhcmlhYmxlcy4KCkBub2RlIERpcmVjdG9yeSBMb2NhbCBWYXJpYWJsZXMKQHNlY3Rp b24gRGlyZWN0b3J5IExvY2FsIFZhcmlhYmxlcwpAY2luZGV4IGRpcmVjdG9yeSBsb2NhbCB2YXJp YWJsZXMKCiAgQSBkaXJlY3RvcnkgY2FuIHNwZWNpZnkgbG9jYWwgdmFyaWFibGUgdmFsdWVzIGNv bW1vbiB0byBhbGwgZmlsZXMgaW4KdGhhdCBkaXJlY3Rvcnk7IEVtYWNzIHVzZXMgdGhlc2UgdG8g Y3JlYXRlIGJ1ZmZlci1sb2NhbCBiaW5kaW5ncyBmb3IKdGhvc2UgdmFyaWFibGVzIGluIGJ1ZmZl cnMgdmlzaXRpbmcgYW55IGZpbGUgaW4gdGhhdCBkaXJlY3RvcnkuICBUaGlzCmlzIHVzZWZ1bCB3 aGVuIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGJlbG9uZyB0byBzb21lIEBkZm57cHJvamVj dH0KYW5kIHRoZXJlZm9yZSBzaGFyZSB0aGUgc2FtZSBsb2NhbCB2YXJpYWJsZXMuCgogIFRoZXJl IGFyZSB0d28gZGlmZmVyZW50IG1ldGhvZHMgZm9yIHNwZWNpZnlpbmcgZGlyZWN0b3J5IGxvY2Fs CnZhcmlhYmxlczogYnkgcHV0dGluZyB0aGVtIGluIGEgc3BlY2lhbCBmaWxlLCBvciBieSBkZWZp bmluZyBhCkBkZm57cHJvamVjdCBjbGFzc30gZm9yIHRoYXQgZGlyZWN0b3J5LgoKQGRlZnZyIENv bnN0YW50IGRpci1sb2NhbHMtZmlsZQpUaGlzIGNvbnN0YW50IGlzIHRoZSBuYW1lIG9mIHRoZSBm aWxlIHdoZXJlIEVtYWNzIGV4cGVjdHMgdG8gZmluZCB0aGUKZGlyZWN0b3J5LWxvY2FsIHZhcmlh Ymxlcy4gIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzCkBmaWxley5kaXItbG9jYWxzLmVsfUBmb290 bm90ZXsKVGhlIE1TLURPUyB2ZXJzaW9uIG9mIEVtYWNzIHVzZXMgQGZpbGV7X2Rpci1sb2NhbHMu ZWx9IGluc3RlYWQsIGR1ZSB0bwpsaW1pdGF0aW9ucyBvZiB0aGUgRE9TIGZpbGVzeXN0ZW1zLgp9 LiAgQSBmaWxlIGJ5IHRoYXQgbmFtZSBpbiBhIGRpcmVjdG9yeSBjYXVzZXMgRW1hY3MgdG8gYXBw bHkgaXRzCnNldHRpbmdzIHRvIGFueSBmaWxlIGluIHRoYXQgZGlyZWN0b3J5IG9yIGFueSBvZiBp dHMgc3ViZGlyZWN0b3JpZXMKKG9wdGlvbmFsbHksIHlvdSBjYW4gZXhjbHVkZSBzdWJkaXJlY3Rv cmllczsgc2VlIGJlbG93KS4KSWYgc29tZSBvZiB0aGUgc3ViZGlyZWN0b3JpZXMgaGF2ZSB0aGVp ciBvd24gQGZpbGV7LmRpci1sb2NhbHMuZWx9CmZpbGVzLCBFbWFjcyB1c2VzIHRoZSBzZXR0aW5n cyBmcm9tIHRoZSBkZWVwZXN0IGZpbGUgaXQgZmluZHMgc3RhcnRpbmcKZnJvbSB0aGUgZmlsZSdz IGRpcmVjdG9yeSBhbmQgbW92aW5nIHVwIHRoZSBkaXJlY3RvcnkgdHJlZS4gIFRoZSBmaWxlCnNw ZWNpZmllcyBsb2NhbCB2YXJpYWJsZXMgYXMgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIGxpc3Q7IHNl ZQpAcmVme0RpcmVjdG9yeSBWYXJpYWJsZXMsICwgUGVyLWRpcmVjdG9yeSBMb2NhbCBWYXJpYWJs ZXMsIGVtYWNzLCBUaGUKR05VIEVtYWNzIE1hbnVhbH0sIGZvciBtb3JlIGRldGFpbHMuCkBlbmQg ZGVmdnIKCkBkZWZ1biBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMKVGhpcyBmdW5jdGlvbiByZWFk cyB0aGUgQGNvZGV7LmRpci1sb2NhbHMuZWx9IGZpbGUgYW5kIHN0b3JlcyB0aGUKZGlyZWN0b3J5 LWxvY2FsIHZhcmlhYmxlcyBpbiBAY29kZXtmaWxlLWxvY2FsLXZhcmlhYmxlcy1hbGlzdH0gdGhh dCBpcwpsb2NhbCB0byB0aGUgYnVmZmVyIHZpc2l0aW5nIGFueSBmaWxlIGluIHRoZSBkaXJlY3Rv cnksIHdpdGhvdXQKYXBwbHlpbmcgdGhlbS4gIEl0IGFsc28gc3RvcmVzIHRoZSBkaXJlY3Rvcnkt bG9jYWwgc2V0dGluZ3MgaW4KQGNvZGV7ZGlyLWxvY2Fscy1jbGFzcy1hbGlzdH0sIHdoZXJlIGl0 IGRlZmluZXMgYSBzcGVjaWFsIGNsYXNzIGZvcgp0aGUgZGlyZWN0b3J5IGluIHdoaWNoIEBmaWxl ey5kaXItbG9jYWxzLmVsfSBmaWxlIHdhcyBmb3VuZC4gIFRoaXMKZnVuY3Rpb24gd29ya3MgYnkg Y2FsbGluZyBAY29kZXtkaXItbG9jYWxzLXNldC1jbGFzcy12YXJpYWJsZXN9IGFuZApAY29kZXtk aXItbG9jYWxzLXNldC1kaXJlY3RvcnktY2xhc3N9LCBkZXNjcmliZWQgYmVsb3cuCkBlbmQgZGVm dW4KCkBkZWZ1biBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyClRoaXMg ZnVuY3Rpb24gbG9va3MgZm9yIGRpcmVjdG9yeS1sb2NhbCB2YXJpYWJsZXMsIGFuZCBpbW1lZGlh dGVseQphcHBsaWVzIHRoZW0gaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgSXQgaXMgaW50ZW5kZWQg dG8gYmUgY2FsbGVkIGluCnRoZSBtb2RlIGNvbW1hbmRzIGZvciBub24tZmlsZSBidWZmZXJzLCBz dWNoIGFzIERpcmVkIGJ1ZmZlcnMsIHRvIGxldAp0aGVtIG9iZXkgZGlyZWN0b3J5LWxvY2FsIHZh cmlhYmxlIHNldHRpbmdzLiAgRm9yIG5vbi1maWxlIGJ1ZmZlcnMsCkVtYWNzIGxvb2tzIGZvciBk aXJlY3RvcnktbG9jYWwgdmFyaWFibGVzIGluIEBjb2Rle2RlZmF1bHQtZGlyZWN0b3J5fQphbmQg aXRzIHBhcmVudCBkaXJlY3Rvcmllcy4KQGVuZCBkZWZ1bgoKQGRlZnVuIGRpci1sb2NhbHMtc2V0 LWNsYXNzLXZhcmlhYmxlcyBjbGFzcyB2YXJpYWJsZXMKVGhpcyBmdW5jdGlvbiBkZWZpbmVzIGEg c2V0IG9mIHZhcmlhYmxlIHNldHRpbmdzIGZvciB0aGUgbmFtZWQKQHZhcntjbGFzc30sIHdoaWNo IGlzIGEgc3ltYm9sLiAgWW91IGNhbiBsYXRlciBhc3NpZ24gdGhlIGNsYXNzIHRvIG9uZQpvciBt b3JlIGRpcmVjdG9yaWVzLCBhbmQgRW1hY3Mgd2lsbCBhcHBseSB0aG9zZSB2YXJpYWJsZSBzZXR0 aW5ncyB0bwphbGwgZmlsZXMgaW4gdGhvc2UgZGlyZWN0b3JpZXMuICBUaGUgbGlzdCBpbiBAdmFy e3ZhcmlhYmxlc30gY2FuIGJlIG9mCm9uZSBvZiB0aGUgdHdvIGZvcm1zOiBAY29kZXsoQHZhcntt YWpvci1tb2RlfSAuIEB2YXJ7YWxpc3R9KX0gb3IKQGNvZGV7KEB2YXJ7ZGlyZWN0b3J5fSAuIEB2 YXJ7bGlzdH0pfS4gIFdpdGggdGhlIGZpcnN0IGZvcm0sIGlmIHRoZQpmaWxlJ3MgYnVmZmVyIHR1 cm5zIG9uIGEgbW9kZSB0aGF0IGlzIGRlcml2ZWQgZnJvbSBAdmFye21ham9yLW1vZGV9LAp0aGVu IHRoZSBhbGwgdGhlIHZhcmlhYmxlcyBpbiB0aGUgYXNzb2NpYXRlZCBAdmFye2FsaXN0fSBhcmUg YXBwbGllZDsKQHZhcnthbGlzdH0gc2hvdWxkIGJlIG9mIHRoZSBmb3JtIEBjb2RleyhAdmFye25h bWV9IC4gQHZhcnt2YWx1ZX0pfS4KQSBzcGVjaWFsIHZhbHVlIEBjb2Rle25pbH0gZm9yIEB2YXJ7 bWFqb3ItbW9kZX0gbWVhbnMgdGhlIHNldHRpbmdzIGFyZQphcHBsaWNhYmxlIHRvIGFueSBtb2Rl LiAgSW4gQHZhcnthbGlzdH0sIHlvdSBjYW4gdXNlIGEgc3BlY2lhbApAdmFye25hbWV9OiBAY29k ZXtzdWJkaXJzfS4gIElmIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzCkBjb2Rle25pbH0sIHRoZSBh bGlzdCBpcyBvbmx5IGFwcGxpZWQgdG8gZmlsZXMgaW4gdGhlIHJlbGV2YW50CmRpcmVjdG9yeSwg bm90IHRvIHRob3NlIGluIGFueSBzdWJkaXJlY3Rvcmllcy4KCldpdGggdGhlIHNlY29uZCBmb3Jt IG9mIEB2YXJ7dmFyaWFibGVzfSwgaWYgQHZhcntkaXJlY3Rvcnl9IGlzIHRoZQppbml0aWFsIHN1 YnN0cmluZyBvZiB0aGUgZmlsZSdzIGRpcmVjdG9yeSwgdGhlbiBAdmFye2xpc3R9IGlzIGFwcGxp ZWQKcmVjdXJzaXZlbHkgYnkgZm9sbG93aW5nIHRoZSBhYm92ZSBydWxlczsgQHZhcntsaXN0fSBz aG91bGQgYmUgb2Ygb25lCm9mIHRoZSB0d28gZm9ybXMgYWNjZXB0ZWQgYnkgdGhpcyBmdW5jdGlv biBpbiBAdmFye3ZhcmlhYmxlc30uCkBlbmQgZGVmdW4KCkBkZWZ1biBkaXItbG9jYWxzLXNldC1k aXJlY3RvcnktY2xhc3MgZGlyZWN0b3J5IGNsYXNzICZvcHRpb25hbCBtdGltZQpUaGlzIGZ1bmN0 aW9uIGFzc2lnbnMgQHZhcntjbGFzc30gdG8gYWxsIHRoZSBmaWxlcyBpbiBAY29kZXtkaXJlY3Rv cnl9CmFuZCBpdHMgc3ViZGlyZWN0b3JpZXMuICBUaGVyZWFmdGVyLCBhbGwgdGhlIHZhcmlhYmxl IHNldHRpbmdzCnNwZWNpZmllZCBmb3IgQHZhcntjbGFzc30gd2lsbCBiZSBhcHBsaWVkIHRvIGFu eSB2aXNpdGVkIGZpbGUgaW4KQHZhcntkaXJlY3Rvcnl9IGFuZCBpdHMgY2hpbGRyZW4uICBAdmFy e2NsYXNzfSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5CmRlZmluZWQgYnkgQGNvZGV7ZGlyLWxvY2Fs cy1zZXQtY2xhc3MtdmFyaWFibGVzfS4KCkVtYWNzIHVzZXMgdGhpcyBmdW5jdGlvbiBpbnRlcm5h bGx5IHdoZW4gaXQgbG9hZHMgZGlyZWN0b3J5IHZhcmlhYmxlcwpmcm9tIGEgQGNvZGV7LmRpci1s b2NhbHMuZWx9IGZpbGUuICBJbiB0aGF0IGNhc2UsIHRoZSBvcHRpb25hbAphcmd1bWVudCBAdmFy e210aW1lfSBob2xkcyB0aGUgZmlsZSBtb2RpZmljYXRpb24gdGltZSAoYXMgcmV0dXJuZWQgYnkK QGNvZGV7ZmlsZS1hdHRyaWJ1dGVzfSkuICBFbWFjcyB1c2VzIHRoaXMgdGltZSB0byBjaGVjayBz dG9yZWQKbG9jYWwgdmFyaWFibGVzIGFyZSBzdGlsbCB2YWxpZC4gIElmIHlvdSBhcmUgYXNzaWdu aW5nIGEgY2xhc3MKZGlyZWN0bHksIG5vdCB2aWEgYSBmaWxlLCB0aGlzIGFyZ3VtZW50IHNob3Vs ZCBiZSBAY29kZXtuaWx9LgpAZW5kIGRlZnVuCgpAZGVmdmFyIGRpci1sb2NhbHMtY2xhc3MtYWxp c3QKVGhpcyBhbGlzdCBob2xkcyB0aGUgY2xhc3Mgc3ltYm9scyBhbmQgdGhlIGFzc29jaWF0ZWQg dmFyaWFibGUKc2V0dGluZ3MuICBJdCBpcyB1cGRhdGVkIGJ5IEBjb2Rle2Rpci1sb2NhbHMtc2V0 LWNsYXNzLXZhcmlhYmxlc30uCkBlbmQgZGVmdmFyCgpAZGVmdmFyIGRpci1sb2NhbHMtZGlyZWN0 b3J5LWNhY2hlClRoaXMgYWxpc3QgaG9sZHMgZGlyZWN0b3J5IG5hbWVzLCB0aGVpciBhc3NpZ25l ZCBjbGFzcyBuYW1lcywgYW5kCm1vZGlmaWNhdGlvbiB0aW1lcyBvZiB0aGUgYXNzb2NpYXRlZCBk aXJlY3RvcnkgbG9jYWwgdmFyaWFibGVzIGZpbGUKKGlmIHRoZXJlIGlzIG9uZSkuICBUaGUgZnVu Y3Rpb24gQGNvZGV7ZGlyLWxvY2Fscy1zZXQtZGlyZWN0b3J5LWNsYXNzfQp1cGRhdGVzIHRoaXMg bGlzdC4KQGVuZCBkZWZ2YXIKCkBkZWZ2YXIgZW5hYmxlLWRpci1sb2NhbC12YXJpYWJsZXMKSWYg QGNvZGV7bmlsfSwgZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxlcyBhcmUgaWdub3JlZC4gIFRoaXMg dmFyaWFibGUKbWF5IGJlIHVzZWZ1bCBmb3IgbW9kZXMgdGhhdCB3YW50IHRvIGlnbm9yZSBkaXJl Y3RvcnktbG9jYWxzIHdoaWxlCnN0aWxsIHJlc3BlY3RpbmcgZmlsZS1sb2NhbCB2YXJpYWJsZXMg KEBweHJlZntGaWxlIExvY2FsIFZhcmlhYmxlc30pLgpAZW5kIGRlZnZhcgoKQG5vZGUgQ29ubmVj dGlvbiBMb2NhbCBWYXJpYWJsZXMKQHNlY3Rpb24gQ29ubmVjdGlvbiBMb2NhbCBWYXJpYWJsZXMK QGNpbmRleCBjb25uZWN0aW9uIGxvY2FsIHZhcmlhYmxlcwoKICBDb25uZWN0aW9uLWxvY2FsIHZh cmlhYmxlcyBwcm92aWRlIGEgZ2VuZXJhbCBtZWNoYW5pc20gZm9yCmRpZmZlcmVudCB2YXJpYWJs ZSBzZXR0aW5ncyBpbiBidWZmZXJzIHdpdGggYSByZW1vdGUgZGVmYXVsdApkaXJlY3RvcnkuICBU aGV5IGFyZSBib3VuZCBhbmQgc2V0IGRlcGVuZGluZyBvbiB0aGUgcmVtb3RlIGNvbm5lY3Rpb24K YSBidWZmZXIgaXMgZGVkaWNhdGVkIHRvLiAgUGVyIGRlZmF1bHQsIHRoZXkgYXJlIHNldCBpbiBh bGwgcHJvY2VzcwpidWZmZXJzIGZvciBhIHJlbW90ZSBjb25uZWN0aW9uLCBidXQgdGhleSBjb3Vs ZCBiZSBhcHBsaWVkIGFsc28gaW4Kb3RoZXIgYnVmZmVycyB3aXRoIGEgcmVtb3RlIGRpcmVjdG9y eS4KCkBkZWZ1biBjb25uZWN0aW9uLWxvY2FsLXNldC1jbGFzcy12YXJpYWJsZXMgY2xhc3MgdmFy aWFibGVzClRoaXMgZnVuY3Rpb24gZGVmaW5lcyBhIHNldCBvZiB2YXJpYWJsZSBzZXR0aW5ncyBm b3IgdGhlIG5hbWVkCkB2YXJ7Y2xhc3N9LCB3aGljaCBpcyBhIHN5bWJvbC4gIFlvdSBjYW4gbGF0 ZXIgYXNzaWduIHRoZSBjbGFzcyB0byBvbmUKb3IgbW9yZSByZW1vdGUgY29ubmVjdGlvbnMsIGFu ZCBFbWFjcyB3aWxsIGFwcGx5IHRob3NlIHZhcmlhYmxlCnNldHRpbmdzIHRvIGFsbCBwcm9jZXNz IGJ1ZmZlcnMgZm9yIHRob3NlIGNvbm5lY3Rpb25zLiAgVGhlIGxpc3QgaW4KQHZhcnt2YXJpYWJs ZXN9IGlzIGFuIGFsaXN0IG9mIHRoZSBmb3JtIEBjb2RleyhAdmFye25hbWV9Ci4gQHZhcnt2YWx1 ZX0pfS4gIEV4YW1wbGU6CgpAZXhhbXBsZQpAZ3JvdXAKKGNvbm5lY3Rpb24tbG9jYWwtc2V0LWNs YXNzLXZhcmlhYmxlcwogICdyZW1vdGUtYmFzaAogICcoKHNoZWxsLWZpbGUtbmFtZSAuICIvYmlu L2Jhc2giKQogICAgKHNoZWxsLWNvbW1hbmQtc3dpdGNoIC4gIi1jIikKICAgIChzaGVsbC1pbnRl cmFjdGl2ZS1zd2l0Y2ggLiAiLWkiKQogICAgKHNoZWxsLWxvZ2luLXN3aXRjaCAuICItbCIpKSkK QGVuZCBncm91cAoKQGdyb3VwCihjb25uZWN0aW9uLWxvY2FsLXNldC1jbGFzcy12YXJpYWJsZXMK ICAncmVtb3RlLWtzaAogICcoKHNoZWxsLWZpbGUtbmFtZSAuICIvYmluL2tzaCIpCiAgICAoc2hl bGwtY29tbWFuZC1zd2l0Y2ggLiAiLWMiKQogICAgKHNoZWxsLWludGVyYWN0aXZlLXN3aXRjaCAu ICItaSIpCiAgICAoc2hlbGwtbG9naW4tc3dpdGNoIC4gIi1sIikpKQpAZW5kIGdyb3VwCgpAZ3Jv dXAKKGNvbm5lY3Rpb24tbG9jYWwtc2V0LWNsYXNzLXZhcmlhYmxlcwogICdyZW1vdGUtbnVsbC1k ZXZpY2UKICAnKChudWxsLWRldmljZSAuICIvZGV2L251bGwiKSkpCkBlbmQgZ3JvdXAKQGVuZCBl eGFtcGxlCkBlbmQgZGVmdW4KCkBkZWZ2YXIgY29ubmVjdGlvbi1sb2NhbC1jbGFzcy1hbGlzdApU aGlzIGFsaXN0IGhvbGRzIHRoZSBjbGFzcyBzeW1ib2xzIGFuZCB0aGUgYXNzb2NpYXRlZCB2YXJp YWJsZQpzZXR0aW5ncy4gIEl0IGlzIHVwZGF0ZWQgYnkgQGNvZGV7Y29ubmVjdGlvbi1sb2NhbC1z ZXQtY2xhc3MtdmFyaWFibGVzfS4KQGVuZCBkZWZ2YXIKCkBkZWZ1biBjb25uZWN0aW9uLWxvY2Fs LXNldC1jbGFzc2VzIGNyaXRlcmlhICZyZXN0IGNsYXNzZXMKVGhpcyBmdW5jdGlvbiBhc3NpZ25z IEB2YXJ7Y2xhc3Nlc30sIHdoaWNoIGFyZSBzeW1ib2xzLCB0byBhbGwgcmVtb3RlCmNvbm5lY3Rp b25zIGlkZW50aWZpZWQgYnkgQHZhcntjcml0ZXJpYX0uICBAdmFye2NyaXRlcmlhfSBpcyBlaXRo ZXIgYQpyZWd1bGFyIGV4cHJlc3Npb24gaWRlbnRpZnlpbmcgYSByZW1vdGUgc2VydmVyLCBvciBh IGZ1bmN0aW9uIHdpdGggb25lCmFyZ3VtZW50IEB2YXJ7aWRlbnRpZmljYXRpb259LCB3aGljaCBt dXN0IHJldHVybiBub24tbmlsIHdoZW4gYSByZW1vdGUKc2VydmVyIHNoYWxsIGFwcGx5IEB2YXJ7 Y2xhc3Nlc30gdmFyaWFibGVzLCBvciBAY29kZXtuaWx9LgoKSWYgQHZhcntjcml0ZXJpYX0gaXMg YSByZWdleHAsIGlzIG11c3QgbWF0Y2ggdGhlIHJlc3VsdCBvZgpAY29kZXsoZmlsZS1yZW1vdGUt cCBkZWZhdWx0LWRpcmVjdG9yeSl9IG9mIGEgYnVmZmVyIGluIG9yZGVyIHRvIGFwcGx5CnRoZSB2 YXJpYWJsZXMgc2V0dGluZy4gIEV4YW1wbGU6CgpAZXhhbXBsZQpAZ3JvdXAKKGNvbm5lY3Rpb24t bG9jYWwtc2V0LWNsYXNzZXMKICAiXi9zc2g6IiAncmVtb3RlLWJhc2ggJ3JlbW90ZS1udWxsLWRl dmljZSkKQGVuZCBncm91cAoKQGdyb3VwCihjb25uZWN0aW9uLWxvY2FsLXNldC1jbGFzc2VzCiAg Il4vc3VkbzoiICdyZW1vdGUta3NoICdyZW1vdGUtbnVsbC1kZXZpY2UpCkBlbmQgZ3JvdXAKQGVu ZCBleGFtcGxlCgogIElmIEB2YXJ7Y3JpdGVyaWF9IGlzIG5pbCwgaXQgYXBwbGllcyBmb3IgYWxs IHJlbW90ZSBjb25uZWN0aW9ucy4KVGhlcmVmb3JlLCB0aGUgZXhhbXBsZSBhYm92ZSB3b3VsZCBi ZSBlcXVpdmFsZW50IHRvCgpAZXhhbXBsZQooY29ubmVjdGlvbi1sb2NhbC1zZXQtY2xhc3NlcyAi Xi9zc2g6IiAncmVtb3RlLWJhc2gpCihjb25uZWN0aW9uLWxvY2FsLXNldC1jbGFzc2VzICJeL3N1 ZG86IiAncmVtb3RlLWtzaCkKKGNvbm5lY3Rpb24tbG9jYWwtc2V0LWNsYXNzZXMgbmlsICdyZW1v dGUtbnVsbC1kZXZpY2UpCkBlbmQgZXhhbXBsZQoKICBJZiBAdmFye2NyaXRlcmlhfSBpcyBhIGxh bWJkYSBmdW5jdGlvbiBpdCBtdXN0IGFjY2VwdCBvbmUgcGFyYW1ldGVyLAp0aGUgaWRlbnRpZmlj YXRpb24uICBUaGUgZXhhbXBsZSBhYm92ZSBjb3VsZCBiZSByZXdyaXR0ZW4gYXMKCkBleGFtcGxl CkBncm91cAooY29ubmVjdGlvbi1sb2NhbC1zZXQtY2xhc3NlcwogIChsYW1iZGEgKGlkZW50aWZp Y2F0aW9uKQogICAgKHN0cmluZy1lcXVhbCAoZmlsZS1yZW1vdGUtcCBpZGVudGlmaWNhdGlvbiAn bWV0aG9kKSAic3NoIikpCiAgJ3JlbW90ZS1iYXNoKQpAZW5kIGdyb3VwCgpAZ3JvdXAKKGNvbm5l Y3Rpb24tbG9jYWwtc2V0LWNsYXNzZXMKICAobGFtYmRhIChpZGVudGlmaWNhdGlvbikKICAgIChz dHJpbmctZXF1YWwgKGZpbGUtcmVtb3RlLXAgaWRlbnRpZmljYXRpb24gJ21ldGhvZCkgInN1ZG8i KSkKICAncmVtb3RlLWtzaCkKQGVuZCBncm91cAoKQGdyb3VwCihjb25uZWN0aW9uLWxvY2FsLXNl dC1jbGFzc2VzCiAgKGxhbWJkYSAoaWRlbnRpZmljYXRpb24pIHQpCiAgJ3JlbW90ZS1udWxsLWRl dmljZSkKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKCiAgVGhlcmVhZnRlciwgYWxsIHRoZSB2YXJp YWJsZSBzZXR0aW5ncyBzcGVjaWZpZWQgZm9yIEB2YXJ7Y2xhc3Nlc30Kd2lsbCBiZSBhcHBsaWVk IHRvIGFueSBidWZmZXIgd2l0aCBhIG1hdGNoaW5nIHJlbW90ZSBkaXJlY3RvcnksIHdoZW4KYWN0 aXZhdGVkIGJ5IEBjb2Rle2hhY2stY29ubmVjdGlvbi1sb2NhbC12YXJpYWJsZXMtYXBwbHl9LiAg QW55IGNsYXNzCm9mIEB2YXJ7Y2xhc3Nlc30gbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBkZWZpbmVk IGJ5CkBjb2Rle2Nvbm5lY3Rpb24tbG9jYWwtc2V0LWNsYXNzLXZhcmlhYmxlc30uCkBlbmQgZGVm dW4KCkBkZWZ2YXIgY29ubmVjdGlvbi1sb2NhbC1jcml0ZXJpYS1hbGlzdApUaGlzIGFsaXN0IGNv bnRhaW5zIHJlbW90ZSBzZXJ2ZXIgaWRlbnRpZmljYXRpb25zIGFuZCB0aGVpciBhc3NpZ25lZApj bGFzcyBuYW1lcy4gIFRoZSBmdW5jdGlvbiBAY29kZXtjb25uZWN0aW9uLWxvY2FsLXNldC1jbGFz c2VzfSB1cGRhdGVzCnRoaXMgbGlzdC4KQGVuZCBkZWZ2YXIKCkBkZWZ1biBoYWNrLWNvbm5lY3Rp b24tbG9jYWwtdmFyaWFibGVzClRoaXMgZnVuY3Rpb24gY29sbGVjdHMgYXBwbGljYWJsZSBjb25u ZWN0aW9uLWxvY2FsIHZhcmlhYmxlcyBpbgpAY29kZXtjb25uZWN0aW9uLWxvY2FsLXZhcmlhYmxl cy1hbGlzdH0gdGhhdCBpcyBsb2NhbCB0byB0aGUgYnVmZmVyLAp3aXRob3V0IGFwcGx5aW5nIHRo ZW0uICBXaGV0aGVyIGEgY29ubmVjdGlvbi1sb2NhbCB2YXJpYWJsZSBpcwphcHBsaWNhYmxlIGlz IHNwZWNpZmllZCBieSB0aGUgcmVtb3RlIGlkZW50aWZpZXIgb2YgYSBidWZmZXIsCmV2YWx1YXRl ZCBieSBAY29kZXsoZmlsZS1yZW1vdGUtcCBkZWZhdWx0LWRpcmVjdG9yeSl9LgpAZW5kIGRlZnVu CgpAZGVmdW4gaGFjay1jb25uZWN0aW9uLWxvY2FsLXZhcmlhYmxlcy1hcHBseQpUaGlzIGZ1bmN0 aW9uIGxvb2tzIGZvciBjb25uZWN0aW9uLWxvY2FsIHZhcmlhYmxlcywgYW5kIGltbWVkaWF0ZWx5 CmFwcGxpZXMgdGhlbSBpbiB0aGUgY3VycmVudCBidWZmZXIuICBJdCBpcyBjYWxsZWQgcGVyIGRl ZmF1bHQgZm9yCmV2ZXJ5IHByb2Nlc3MtYnVmZmVyIHJlbGF0ZWQgdG8gYSByZW1vdGUgY29ubmVj dGlvbi4gIEZvciBvdGhlciByZW1vdGUKYnVmZmVycywgaXQgY291bGQgYmUgY2FsbGVkIGJ5IGFu eSBtb2RlLgpAZW5kIGRlZnVuCgpAZGVmbWFjIHdpdGgtY29ubmVjdGlvbi1sb2NhbC1jbGFzc2Vz IGNsYXNzZXMgJnJlc3QgYm9keQpBbGwgY29ubmVjdGlvbi1sb2NhbCB2YXJpYWJsZXMsIHdoaWNo IGFyZSBzcGVjaWZpZWQgYnkgYSBjbGFzcyBpbgpAdmFye2NsYXNzZXN9LCBhcmUgYXBwbGllZC4g IEFuIGltcGxpY2l0IGJpbmRpbmcgb2YgdGhlIGNsYXNzZXMgdG8gdGhlCnJlbW90ZSBjb25uZWN0 aW9uIGlzIGVuYWJsZWQuCgpBZnRlciB0aGF0LCBAdmFye2JvZHl9IGlzIGV4ZWN1dGVkLCBhbmQg dGhlIGNvbm5lY3Rpb24tbG9jYWwgdmFyaWFibGVzCmFyZSB1bndvdW5kLiAgRXhhbXBsZToKCkBl eGFtcGxlCkBncm91cAooY29ubmVjdGlvbi1sb2NhbC1zZXQtY2xhc3MtdmFyaWFibGVzCiAgJ3Jl bW90ZS1wZXJsCiAgJygocGVybC1jb21tYW5kLW5hbWUgLiAiL3Vzci9sb2NhbC9iaW4vcGVybCIp CiAgICAocGVybC1jb21tYW5kLXN3aXRjaCAuICItZSAlcyIpKSkKQGVuZCBncm91cAoKQGdyb3Vw Cih3aXRoLWNvbm5lY3Rpb24tbG9jYWwtY2xhc3NlcyAnKHJlbW90ZS1wZXJsKQogIGRvIHNvbWV0 aGluZyB1c2VmdWwpCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCkBlbmQgZGVmbWFjCgpAZGVmdmFy IGVuYWJsZS1jb25uZWN0aW9uLWxvY2FsLXZhcmlhYmxlcwpJZiBAY29kZXtuaWx9LCBjb25uZWN0 aW9uLWxvY2FsIHZhcmlhYmxlcyBhcmUgaWdub3JlZC4gIFRoaXMgdmFyaWFibGUKc2hhbGwgYmUg Y2hhbmdlZCB0ZW1wb3JhcmlseSBvbmx5IGluIHNwZWNpYWwgbW9kZXMuCkBlbmQgZGVmdmFyCgpA bm9kZSBWYXJpYWJsZSBBbGlhc2VzCkBzZWN0aW9uIFZhcmlhYmxlIEFsaWFzZXMKQGNpbmRleCB2 YXJpYWJsZSBhbGlhc2VzCkBjaW5kZXggYWxpYXMsIGZvciB2YXJpYWJsZXMKCiAgSXQgaXMgc29t ZXRpbWVzIHVzZWZ1bCB0byBtYWtlIHR3byB2YXJpYWJsZXMgc3lub255bXMsIHNvIHRoYXQgYm90 aAp2YXJpYWJsZXMgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIGFuZCBjaGFuZ2luZyBlaXRo ZXIgb25lIGFsc28KY2hhbmdlcyB0aGUgb3RoZXIuICBXaGVuZXZlciB5b3UgY2hhbmdlIHRoZSBu YW1lIG9mIGEKdmFyaWFibGUtLS1laXRoZXIgYmVjYXVzZSB5b3UgcmVhbGl6ZSBpdHMgb2xkIG5h bWUgd2FzIG5vdCB3ZWxsCmNob3Nlbiwgb3IgYmVjYXVzZSBpdHMgbWVhbmluZyBoYXMgcGFydGx5 IGNoYW5nZWQtLS1pdCBjYW4gYmUgdXNlZnVsCnRvIGtlZXAgdGhlIG9sZCBuYW1lIGFzIGFuIEBl bXBoe2FsaWFzfSBvZiB0aGUgbmV3IG9uZSBmb3IKY29tcGF0aWJpbGl0eS4gIFlvdSBjYW4gZG8g dGhpcyB3aXRoIEBjb2Rle2RlZnZhcmFsaWFzfS4KCkBkZWZ1biBkZWZ2YXJhbGlhcyBuZXctYWxp YXMgYmFzZS12YXJpYWJsZSAmb3B0aW9uYWwgZG9jc3RyaW5nClRoaXMgZnVuY3Rpb24gZGVmaW5l cyB0aGUgc3ltYm9sIEB2YXJ7bmV3LWFsaWFzfSBhcyBhIHZhcmlhYmxlIGFsaWFzCmZvciBzeW1i b2wgQHZhcntiYXNlLXZhcmlhYmxlfS4gVGhpcyBtZWFucyB0aGF0IHJldHJpZXZpbmcgdGhlIHZh bHVlCm9mIEB2YXJ7bmV3LWFsaWFzfSByZXR1cm5zIHRoZSB2YWx1ZSBvZiBAdmFye2Jhc2UtdmFy aWFibGV9LCBhbmQKY2hhbmdpbmcgdGhlIHZhbHVlIG9mIEB2YXJ7bmV3LWFsaWFzfSBjaGFuZ2Vz IHRoZSB2YWx1ZSBvZgpAdmFye2Jhc2UtdmFyaWFibGV9LiAgVGhlIHR3byBhbGlhc2VkIHZhcmlh YmxlIG5hbWVzIGFsd2F5cyBzaGFyZSB0aGUKc2FtZSB2YWx1ZSBhbmQgdGhlIHNhbWUgYmluZGlu Z3MuCgpJZiB0aGUgQHZhcntkb2NzdHJpbmd9IGFyZ3VtZW50IGlzIG5vbi1AY29kZXtuaWx9LCBp dCBzcGVjaWZpZXMgdGhlCmRvY3VtZW50YXRpb24gZm9yIEB2YXJ7bmV3LWFsaWFzfTsgb3RoZXJ3 aXNlLCB0aGUgYWxpYXMgZ2V0cyB0aGUgc2FtZQpkb2N1bWVudGF0aW9uIGFzIEB2YXJ7YmFzZS12 YXJpYWJsZX0gaGFzLCBpZiBhbnksIHVubGVzcwpAdmFye2Jhc2UtdmFyaWFibGV9IGlzIGl0c2Vs ZiBhbiBhbGlhcywgaW4gd2hpY2ggY2FzZSBAdmFye25ldy1hbGlhc30gZ2V0cwp0aGUgZG9jdW1l bnRhdGlvbiBvZiB0aGUgdmFyaWFibGUgYXQgdGhlIGVuZCBvZiB0aGUgY2hhaW4gb2YgYWxpYXNl cy4KClRoaXMgZnVuY3Rpb24gcmV0dXJucyBAdmFye2Jhc2UtdmFyaWFibGV9LgpAZW5kIGRlZnVu CgogIFZhcmlhYmxlIGFsaWFzZXMgYXJlIGNvbnZlbmllbnQgZm9yIHJlcGxhY2luZyBhbiBvbGQg bmFtZSBmb3IgYQp2YXJpYWJsZSB3aXRoIGEgbmV3IG5hbWUuICBAY29kZXttYWtlLW9ic29sZXRl LXZhcmlhYmxlfSBkZWNsYXJlcyB0aGF0CnRoZSBvbGQgbmFtZSBpcyBvYnNvbGV0ZSBhbmQgdGhl cmVmb3JlIHRoYXQgaXQgbWF5IGJlIHJlbW92ZWQgYXQgc29tZQpzdGFnZSBpbiB0aGUgZnV0dXJl LgoKQGRlZnVuIG1ha2Utb2Jzb2xldGUtdmFyaWFibGUgb2Jzb2xldGUtbmFtZSBjdXJyZW50LW5h bWUgd2hlbiAmb3B0aW9uYWwgYWNjZXNzLXR5cGUKVGhpcyBmdW5jdGlvbiBtYWtlcyB0aGUgYnl0 ZSBjb21waWxlciB3YXJuIHRoYXQgdGhlIHZhcmlhYmxlCkB2YXJ7b2Jzb2xldGUtbmFtZX0gaXMg b2Jzb2xldGUuICBJZiBAdmFye2N1cnJlbnQtbmFtZX0gaXMgYSBzeW1ib2wsCml0IGlzIHRoZSB2 YXJpYWJsZSdzIG5ldyBuYW1lOyB0aGVuIHRoZSB3YXJuaW5nIG1lc3NhZ2Ugc2F5cyB0byB1c2UK QHZhcntjdXJyZW50LW5hbWV9IGluc3RlYWQgb2YgQHZhcntvYnNvbGV0ZS1uYW1lfS4gIElmCkB2 YXJ7Y3VycmVudC1uYW1lfSBpcyBhIHN0cmluZywgdGhpcyBpcyB0aGUgbWVzc2FnZSBhbmQgdGhl cmUgaXMgbm8KcmVwbGFjZW1lbnQgdmFyaWFibGUuICBAdmFye3doZW59IHNob3VsZCBiZSBhIHN0 cmluZyBpbmRpY2F0aW5nIHdoZW4KdGhlIHZhcmlhYmxlIHdhcyBmaXJzdCBtYWRlIG9ic29sZXRl ICh1c3VhbGx5IGEgdmVyc2lvbiBudW1iZXIKc3RyaW5nKS4KClRoZSBvcHRpb25hbCBhcmd1bWVu dCBAdmFye2FjY2Vzcy10eXBlfSwgaWYgbm9uLUBjb2Rle25pbH0sIHNob3VsZApzcGVjaWZ5IHRo ZSBraW5kIG9mIGFjY2VzcyB0aGF0IHdpbGwgdHJpZ2dlciBvYnNvbGVzY2VuY2Ugd2FybmluZ3M7 IGl0CmNhbiBiZSBlaXRoZXIgQGNvZGV7Z2V0fSBvciBAY29kZXtzZXR9LgpAZW5kIGRlZnVuCgog IFlvdSBjYW4gbWFrZSB0d28gdmFyaWFibGVzIHN5bm9ueW1zIGFuZCBkZWNsYXJlIG9uZSBvYnNv bGV0ZSBhdCB0aGUKc2FtZSB0aW1lIHVzaW5nIHRoZSBtYWNybyBAY29kZXtkZWZpbmUtb2Jzb2xl dGUtdmFyaWFibGUtYWxpYXN9LgoKQGRlZm1hYyBkZWZpbmUtb2Jzb2xldGUtdmFyaWFibGUtYWxp YXMgb2Jzb2xldGUtbmFtZSBjdXJyZW50LW5hbWUgJm9wdGlvbmFsIHdoZW4gZG9jc3RyaW5nClRo aXMgbWFjcm8gbWFya3MgdGhlIHZhcmlhYmxlIEB2YXJ7b2Jzb2xldGUtbmFtZX0gYXMgb2Jzb2xl dGUgYW5kIGFsc28KbWFrZXMgaXQgYW4gYWxpYXMgZm9yIHRoZSB2YXJpYWJsZSBAdmFye2N1cnJl bnQtbmFtZX0uICBJdCBpcwplcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmc6CgpAZXhhbXBsZQoo ZGVmdmFyYWxpYXMgQHZhcntvYnNvbGV0ZS1uYW1lfSBAdmFye2N1cnJlbnQtbmFtZX0gQHZhcntk b2NzdHJpbmd9KQoobWFrZS1vYnNvbGV0ZS12YXJpYWJsZSBAdmFye29ic29sZXRlLW5hbWV9IEB2 YXJ7Y3VycmVudC1uYW1lfSBAdmFye3doZW59KQpAZW5kIGV4YW1wbGUKQGVuZCBkZWZtYWMKCkBk ZWZ1biBpbmRpcmVjdC12YXJpYWJsZSB2YXJpYWJsZQpUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl IHZhcmlhYmxlIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluIG9mIGFsaWFzZXMKb2YgQHZhcnt2YXJp YWJsZX0uICBJZiBAdmFye3ZhcmlhYmxlfSBpcyBub3QgYSBzeW1ib2wsIG9yIGlmIEB2YXJ7dmFy aWFibGV9IGlzCm5vdCBkZWZpbmVkIGFzIGFuIGFsaWFzLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBA dmFye3ZhcmlhYmxlfS4KClRoaXMgZnVuY3Rpb24gc2lnbmFscyBhIEBjb2Rle2N5Y2xpYy12YXJp YWJsZS1pbmRpcmVjdGlvbn0gZXJyb3IgaWYKdGhlcmUgaXMgYSBsb29wIGluIHRoZSBjaGFpbiBv ZiBzeW1ib2xzLgpAZW5kIGRlZnVuCgpAZXhhbXBsZQooZGVmdmFyYWxpYXMgJ2ZvbyAnYmFyKQoo aW5kaXJlY3QtdmFyaWFibGUgJ2ZvbykKICAgICBAcmVzdWx0e30gYmFyCihpbmRpcmVjdC12YXJp YWJsZSAnYmFyKQogICAgIEByZXN1bHR7fSBiYXIKKHNldHEgYmFyIDIpCmJhcgogICAgIEByZXN1 bHR7fSAyCkBncm91cApmb28KICAgICBAcmVzdWx0e30gMgpAZW5kIGdyb3VwCihzZXRxIGZvbyAw KQpiYXIKICAgICBAcmVzdWx0e30gMApmb28KICAgICBAcmVzdWx0e30gMApAZW5kIGV4YW1wbGUK CkBub2RlIFZhcmlhYmxlcyB3aXRoIFJlc3RyaWN0ZWQgVmFsdWVzCkBzZWN0aW9uIFZhcmlhYmxl cyB3aXRoIFJlc3RyaWN0ZWQgVmFsdWVzCkBjaW5kZXggbGlzcCB2YXJpYWJsZXMgZGVmaW5lZCBp biBDLCByZXN0cmljdGlvbnMKCiAgT3JkaW5hcnkgTGlzcCB2YXJpYWJsZXMgY2FuIGJlIGFzc2ln bmVkIGFueSB2YWx1ZSB0aGF0IGlzIGEgdmFsaWQKTGlzcCBvYmplY3QuICBIb3dldmVyLCBjZXJ0 YWluIExpc3AgdmFyaWFibGVzIGFyZSBub3QgZGVmaW5lZCBpbiBMaXNwLApidXQgaW4gQ0AuICBN b3N0IG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCBpbiB0aGUgQyBjb2RlIHVzaW5nCkBj b2Rle0RFRlZBUl9MSVNQfS4gIExpa2UgdmFyaWFibGVzIGRlZmluZWQgaW4gTGlzcCwgdGhlc2Ug Y2FuIHRha2Ugb24KYW55IHZhbHVlLiAgSG93ZXZlciwgc29tZSB2YXJpYWJsZXMgYXJlIGRlZmlu ZWQgdXNpbmcKQGNvZGV7REVGVkFSX0lOVH0gb3IgQGNvZGV7REVGVkFSX0JPT0x9LiAgQHhyZWZ7 RGVmaW5pbmcgTGlzcAp2YXJpYWJsZXMgaW4gQywsIFdyaXRpbmcgRW1hY3MgUHJpbWl0aXZlc30s IGluIHBhcnRpY3VsYXIgdGhlCmRlc2NyaXB0aW9uIG9mIGZ1bmN0aW9ucyBvZiB0aGUgdHlwZSBA Y29kZXtzeW1zX29mX0B2YXJ7ZmlsZW5hbWV9fSwKZm9yIGEgYnJpZWYgZGlzY3Vzc2lvbiBvZiB0 aGUgQyBpbXBsZW1lbnRhdGlvbi4KCiAgVmFyaWFibGVzIG9mIHR5cGUgQGNvZGV7REVGVkFSX0JP T0x9IGNhbiBvbmx5IHRha2Ugb24gdGhlIHZhbHVlcwpAY29kZXtuaWx9IG9yIEBjb2Rle3R9LiAg QXR0ZW1wdGluZyB0byBhc3NpZ24gdGhlbSBhbnkgb3RoZXIgdmFsdWUKd2lsbCBzZXQgdGhlbSB0 byBAY29kZXt0fToKCkBleGFtcGxlCihsZXQgKChkaXNwbGF5LWhvdXJnbGFzcyA1KSkKICBkaXNw bGF5LWhvdXJnbGFzcykKICAgICBAcmVzdWx0e30gdApAZW5kIGV4YW1wbGUKCkBkZWZ2YXIgYnl0 ZS1ib29sZWFuLXZhcnMKVGhpcyB2YXJpYWJsZSBob2xkcyBhIGxpc3Qgb2YgYWxsIHZhcmlhYmxl cyBvZiB0eXBlIEBjb2Rle0RFRlZBUl9CT09MfS4KQGVuZCBkZWZ2YXIKCiAgVmFyaWFibGVzIG9m IHR5cGUgQGNvZGV7REVGVkFSX0lOVH0gY2FuIHRha2Ugb24gb25seSBpbnRlZ2VyIHZhbHVlcy4K QXR0ZW1wdGluZyB0byBhc3NpZ24gdGhlbSBhbnkgb3RoZXIgdmFsdWUgd2lsbCByZXN1bHQgaW4g YW4gZXJyb3I6CgpAZXhhbXBsZQooc2V0cSB1bmRvLWxpbWl0IDEwMDAuMCkKQGVycm9ye30gV3Jv bmcgdHlwZSBhcmd1bWVudDogaW50ZWdlcnAsIDEwMDAuMApAZW5kIGV4YW1wbGUKCkBub2RlIEdl bmVyYWxpemVkIFZhcmlhYmxlcwpAc2VjdGlvbiBHZW5lcmFsaXplZCBWYXJpYWJsZXMKCkBjaW5k ZXggZ2VuZXJhbGl6ZWQgdmFyaWFibGUKQGNpbmRleCBwbGFjZSBmb3JtCkEgQGRmbntnZW5lcmFs aXplZCB2YXJpYWJsZX0gb3IgQGRmbntwbGFjZSBmb3JtfSBpcyBvbmUgb2YgdGhlIG1hbnkgcGxh Y2VzCmluIExpc3AgbWVtb3J5IHdoZXJlIHZhbHVlcyBjYW4gYmUgc3RvcmVkLiAgVGhlIHNpbXBs ZXN0IHBsYWNlIGZvcm0gaXMKYSByZWd1bGFyIExpc3AgdmFyaWFibGUuICBCdXQgdGhlIEBzY3tj YXJ9cyBhbmQgQHNje2Nkcn1zIG9mIGxpc3RzLCBlbGVtZW50cwpvZiBhcnJheXMsIHByb3BlcnRp ZXMgb2Ygc3ltYm9scywgYW5kIG1hbnkgb3RoZXIgbG9jYXRpb25zIGFyZSBhbHNvCnBsYWNlcyB3 aGVyZSBMaXNwIHZhbHVlcyBhcmUgc3RvcmVkLgoKR2VuZXJhbGl6ZWQgdmFyaWFibGVzIGFyZSBh bmFsb2dvdXMgdG8gbHZhbHVlcyBpbiB0aGUgQwpsYW5ndWFnZSwgd2hlcmUgQHNhbXB7eCA9IGFb aV19IGdldHMgYW4gZWxlbWVudCBmcm9tIGFuIGFycmF5CmFuZCBAc2FtcHthW2ldID0geH0gc3Rv cmVzIGFuIGVsZW1lbnQgdXNpbmcgdGhlIHNhbWUgbm90YXRpb24uCkp1c3QgYXMgY2VydGFpbiBm b3JtcyBsaWtlIEBjb2Rle2FbaV19IGNhbiBiZSBsdmFsdWVzIGluIEMsIHRoZXJlCmlzIGEgc2V0 IG9mIGZvcm1zIHRoYXQgY2FuIGJlIGdlbmVyYWxpemVkIHZhcmlhYmxlcyBpbiBMaXNwLgoKQG1l bnUKKiBTZXR0aW5nIEdlbmVyYWxpemVkIFZhcmlhYmxlczo6ICAgVGhlIEBjb2Rle3NldGZ9IG1h Y3JvLgoqIEFkZGluZyBHZW5lcmFsaXplZCBWYXJpYWJsZXM6OiAgICBEZWZpbmluZyBuZXcgQGNv ZGV7c2V0Zn0gZm9ybXMuCkBlbmQgbWVudQoKQG5vZGUgU2V0dGluZyBHZW5lcmFsaXplZCBWYXJp YWJsZXMKQHN1YnNlY3Rpb24gVGhlIEBjb2Rle3NldGZ9IE1hY3JvCgpUaGUgQGNvZGV7c2V0Zn0g bWFjcm8gaXMgdGhlIG1vc3QgYmFzaWMgd2F5IHRvIG9wZXJhdGUgb24gZ2VuZXJhbGl6ZWQKdmFy aWFibGVzLiAgVGhlIEBjb2Rle3NldGZ9IGZvcm0gaXMgbGlrZSBAY29kZXtzZXRxfSwgZXhjZXB0 IHRoYXQgaXQKYWNjZXB0cyBhcmJpdHJhcnkgcGxhY2UgZm9ybXMgb24gdGhlIGxlZnQgc2lkZSBy YXRoZXIgdGhhbiBqdXN0CnN5bWJvbHMuICBGb3IgZXhhbXBsZSwgQGNvZGV7KHNldGYgKGNhciBh KSBiKX0gc2V0cyB0aGUgY2FyIG9mCkBjb2Rle2F9IHRvIEBjb2Rle2J9LCBkb2luZyB0aGUgc2Ft ZSBvcGVyYXRpb24gYXMgQGNvZGV7KHNldGNhciBhIGIpfSwKYnV0IHdpdGhvdXQgaGF2aW5nIHRv IHJlbWVtYmVyIHR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgYW5kCmFjY2Vzc2lu ZyBldmVyeSB0eXBlIG9mIHBsYWNlLgoKQGRlZm1hYyBzZXRmIFtwbGFjZSBmb3JtXUBkb3Rze30K VGhpcyBtYWNybyBldmFsdWF0ZXMgQHZhcntmb3JtfSBhbmQgc3RvcmVzIGl0IGluIEB2YXJ7cGxh Y2V9LCB3aGljaAptdXN0IGJlIGEgdmFsaWQgZ2VuZXJhbGl6ZWQgdmFyaWFibGUgZm9ybS4gIElm IHRoZXJlIGFyZSBzZXZlcmFsCkB2YXJ7cGxhY2V9IGFuZCBAdmFye2Zvcm19IHBhaXJzLCB0aGUg YXNzaWdubWVudHMgYXJlIGRvbmUgc2VxdWVudGlhbGx5Cmp1c3QgYXMgd2l0aCBAY29kZXtzZXRx fS4gIEBjb2Rle3NldGZ9IHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBsYXN0CkB2YXJ7Zm9ybX0u CkBlbmQgZGVmbWFjCgpUaGUgZm9sbG93aW5nIExpc3AgZm9ybXMgd2lsbCB3b3JrIGFzIGdlbmVy YWxpemVkIHZhcmlhYmxlcywgYW5kCnNvIG1heSBhcHBlYXIgaW4gdGhlIEB2YXJ7cGxhY2V9IGFy Z3VtZW50IG9mIEBjb2Rle3NldGZ9OgoKQGl0ZW1pemUKQGl0ZW0KQSBzeW1ib2wgbmFtaW5nIGEg dmFyaWFibGUuICBJbiBvdGhlciB3b3JkcywgQGNvZGV7KHNldGYgeCB5KX0gaXMKZXhhY3RseSBl cXVpdmFsZW50IHRvIEBjb2RleyhzZXRxIHggeSl9LCBhbmQgQGNvZGV7c2V0cX0gaXRzZWxmIGlz CnN0cmljdGx5IHNwZWFraW5nIHJlZHVuZGFudCBnaXZlbiB0aGF0IEBjb2Rle3NldGZ9IGV4aXN0 cy4gIE1hbnkKcHJvZ3JhbW1lcnMgY29udGludWUgdG8gcHJlZmVyIEBjb2Rle3NldHF9IGZvciBz ZXR0aW5nIHNpbXBsZQp2YXJpYWJsZXMsIHRob3VnaCwgcHVyZWx5IGZvciBzdHlsaXN0aWMgb3Ig aGlzdG9yaWNhbCByZWFzb25zLgpUaGUgbWFjcm8gQGNvZGV7KHNldGYgeCB5KX0gYWN0dWFsbHkg ZXhwYW5kcyB0byBAY29kZXsoc2V0cSB4IHkpfSwKc28gdGhlcmUgaXMgbm8gcGVyZm9ybWFuY2Ug cGVuYWx0eSBmb3IgdXNpbmcgaXQgaW4gY29tcGlsZWQgY29kZS4KCkBpdGVtCkEgY2FsbCB0byBh bnkgb2YgdGhlIGZvbGxvd2luZyBzdGFuZGFyZCBMaXNwIGZ1bmN0aW9uczoKCkBzbWFsbGV4YW1w bGUKYXJlZiAgICAgIGNkZHIgICAgICBzeW1ib2wtZnVuY3Rpb24KY2FyICAgICAgIGVsdCAgICAg ICBzeW1ib2wtcGxpc3QKY2FhciAgICAgIGdldCAgICAgICBzeW1ib2wtdmFsdWUKY2FkciAgICAg IGdldGhhc2gKY2RyICAgICAgIG50aApjZGFyICAgICAgbnRoY2RyCkBlbmQgc21hbGxleGFtcGxl CgpAaXRlbQpBIGNhbGwgdG8gYW55IG9mIHRoZSBmb2xsb3dpbmcgRW1hY3Mtc3BlY2lmaWMgZnVu Y3Rpb25zOgoKQHNtYWxsZXhhbXBsZQphbGlzdC1nZXQgICAgICAgICAgICAgICAgICAgICBwcm9j ZXNzLWdldApmcmFtZS1wYXJhbWV0ZXIgICAgICAgICAgICAgICBwcm9jZXNzLXNlbnRpbmVsCnRl cm1pbmFsLXBhcmFtZXRlciAgICAgICAgICAgIHdpbmRvdy1idWZmZXIKa2V5bWFwLXBhcmVudCAg ICAgICAgICAgICAgICAgd2luZG93LWRpc3BsYXktdGFibGUKbWF0Y2gtZGF0YSAgICAgICAgICAg ICAgICAgICAgd2luZG93LWRlZGljYXRlZC1wCm92ZXJsYXktZ2V0ICAgICAgICAgICAgICAgICAg IHdpbmRvdy1oc2Nyb2xsCm92ZXJsYXktc3RhcnQgICAgICAgICAgICAgICAgIHdpbmRvdy1wYXJh bWV0ZXIKb3ZlcmxheS1lbmQgICAgICAgICAgICAgICAgICAgd2luZG93LXBvaW50CnByb2Nlc3Mt YnVmZmVyICAgICAgICAgICAgICAgIHdpbmRvdy1zdGFydApwcm9jZXNzLWZpbHRlciAgICAgICAg ICAgICAgICBkZWZhdWx0LXZhbHVlCkBlbmQgc21hbGxleGFtcGxlCkBlbmQgaXRlbWl6ZQoKQG5v aW5kZW50CkBjb2Rle3NldGZ9IHNpZ25hbHMgYW4gZXJyb3IgaWYgeW91IHBhc3MgYSBAdmFye3Bs YWNlfSBmb3JtIHRoYXQgaXQKZG9lcyBub3Qga25vdyBob3cgdG8gaGFuZGxlLgoKQGMgQW5kIGZv ciBjbC1saWIncyBjbC1nZXRmLgpOb3RlIHRoYXQgZm9yIEBjb2Rle250aGNkcn0sIHRoZSBsaXN0 IGFyZ3VtZW50IG9mIHRoZSBmdW5jdGlvbiBtdXN0Cml0c2VsZiBiZSBhIHZhbGlkIEB2YXJ7cGxh Y2V9IGZvcm0uICBGb3IgZXhhbXBsZSwgQGNvZGV7KHNldGYgKG50aGNkcgowIGZvbykgNyl9IHdp bGwgc2V0IEBjb2Rle2Zvb30gaXRzZWxmIHRvIDcuCkBjIFRoZSB1c2Ugb2YgQGNvZGV7bnRoY2Ry fSBhcyBhIEB2YXJ7cGxhY2V9IGZvcm0gaXMgYW4gZXh0ZW5zaW9uCkBjIHRvIHN0YW5kYXJkIENv bW1vbiBMaXNwLgoKQGMgRklYTUUgSSBkb24ndCB0aGluayBpcyBhIHBhcnRpY3VsYXJseSBnb29k IHdheSB0byBkbyBpdCwKQGMgYnV0IHRoZXNlIG1hY3JvcyBhcmUgaW50cm9kdWNlZCBiZWZvcmUg Z2VuZXJhbGl6ZWQgdmFyaWFibGVzIGFyZS4KVGhlIG1hY3JvcyBAY29kZXtwdXNofSAoQHB4cmVm e0xpc3QgVmFyaWFibGVzfSkgYW5kIEBjb2Rle3BvcH0KKEBweHJlZntMaXN0IEVsZW1lbnRzfSkg Y2FuIG1hbmlwdWxhdGUgZ2VuZXJhbGl6ZWQgdmFyaWFibGVzLApub3QganVzdCBsaXN0cy4gIEBj b2Rleyhwb3AgQHZhcntwbGFjZX0pfSByZW1vdmVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdAplbGVt ZW50IG9mIHRoZSBsaXN0IHN0b3JlZCBpbiBAdmFye3BsYWNlfS4gIEl0IGlzIGFuYWxvZ291cyB0 bwpAY29kZXsocHJvZzEgKGNhciBAdmFye3BsYWNlfSkgKHNldGYgQHZhcntwbGFjZX0gKGNkciBA dmFye3BsYWNlfSkpKX0sCmV4Y2VwdCB0aGF0IGl0IHRha2VzIGNhcmUgdG8gZXZhbHVhdGUgYWxs IHN1YmZvcm1zIG9ubHkgb25jZS4KQGNvZGV7KHB1c2ggQHZhcnt4fSBAdmFye3BsYWNlfSl9IGlu c2VydHMgQHZhcnt4fSBhdCB0aGUgZnJvbnQgb2YKdGhlIGxpc3Qgc3RvcmVkIGluIEB2YXJ7cGxh Y2V9LiAgSXQgaXMgYW5hbG9nb3VzIHRvIEBjb2RleyhzZXRmCkB2YXJ7cGxhY2V9IChjb25zIEB2 YXJ7eH0gQHZhcntwbGFjZX0pKX0sIGV4Y2VwdCBmb3IgZXZhbHVhdGlvbiBvZiB0aGUKc3ViZm9y bXMuICBOb3RlIHRoYXQgQGNvZGV7cHVzaH0gYW5kIEBjb2Rle3BvcH0gb24gYW4gQGNvZGV7bnRo Y2RyfQpwbGFjZSBjYW4gYmUgdXNlZCB0byBpbnNlcnQgb3IgZGVsZXRlIGF0IGFueSBwb3NpdGlv biBpbiBhIGxpc3QuCgpUaGUgQGZpbGV7Y2wtbGlifSBsaWJyYXJ5IGRlZmluZXMgdmFyaW91cyBl eHRlbnNpb25zIGZvciBnZW5lcmFsaXplZAp2YXJpYWJsZXMsIGluY2x1ZGluZyBhZGRpdGlvbmFs IEBjb2Rle3NldGZ9IHBsYWNlcy4KQHhyZWZ7R2VuZXJhbGl6ZWQgVmFyaWFibGVzLCwsIGNsLCBD b21tb24gTGlzcCBFeHRlbnNpb25zfS4KCgpAbm9kZSBBZGRpbmcgR2VuZXJhbGl6ZWQgVmFyaWFi bGVzCkBzdWJzZWN0aW9uIERlZmluaW5nIG5ldyBAY29kZXtzZXRmfSBmb3JtcwoKVGhpcyBzZWN0 aW9uIGRlc2NyaWJlcyBob3cgdG8gZGVmaW5lIG5ldyBmb3JtcyB0aGF0IEBjb2Rle3NldGZ9IGNh bgpvcGVyYXRlIG9uLgoKQGRlZm1hYyBndi1kZWZpbmUtc2ltcGxlLXNldHRlciBuYW1lIHNldHRl ciAmb3B0aW9uYWwgZml4LXJldHVybgpUaGlzIG1hY3JvIGVuYWJsZXMgeW91IHRvIGVhc2lseSBk ZWZpbmUgQGNvZGV7c2V0Zn0gbWV0aG9kcyBmb3Igc2ltcGxlCmNhc2VzLiAgQHZhcntuYW1lfSBp cyB0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uLCBtYWNybywgb3Igc3BlY2lhbCBmb3JtLgpZb3UgY2Fu IHVzZSB0aGlzIG1hY3JvIHdoZW5ldmVyIEB2YXJ7bmFtZX0gaGFzIGEgZGlyZWN0bHkKY29ycmVz cG9uZGluZyBAdmFye3NldHRlcn0gZnVuY3Rpb24gdGhhdCB1cGRhdGVzIGl0LCBlLmcuLApAY29k ZXsoZ3YtZGVmaW5lLXNpbXBsZS1zZXR0ZXIgY2FyIHNldGNhcil9LgoKVGhpcyBtYWNybyB0cmFu c2xhdGVzIGEgY2FsbCBvZiB0aGUgZm9ybQoKQGV4YW1wbGUKKHNldGYgKEB2YXJ7bmFtZX0gQHZh cnthcmdzfUBkb3Rze30pIEB2YXJ7dmFsdWV9KQpAZW5kIGV4YW1wbGUKCmludG8KQGV4YW1wbGUK KEB2YXJ7c2V0dGVyfSBAdmFye2FyZ3N9QGRvdHN7fSBAdmFye3ZhbHVlfSkKQGVuZCBleGFtcGxl CgpAbm9pbmRlbnQKU3VjaCBhIEBjb2Rle3NldGZ9IGNhbGwgaXMgZG9jdW1lbnRlZCB0byByZXR1 cm4gQHZhcnt2YWx1ZX0uICBUaGlzIGlzCm5vIHByb2JsZW0gd2l0aCwgZS5nLiwgQGNvZGV7Y2Fy fSBhbmQgQGNvZGV7c2V0Y2FyfSwgYmVjYXVzZQpAY29kZXtzZXRjYXJ9IHJldHVybnMgdGhlIHZh bHVlIHRoYXQgaXQgc2V0LiAgSWYgeW91ciBAdmFye3NldHRlcn0KZnVuY3Rpb24gZG9lcyBub3Qg cmV0dXJuIEB2YXJ7dmFsdWV9LCB1c2UgYSBub24tQGNvZGV7bmlsfSB2YWx1ZSBmb3IKdGhlIEB2 YXJ7Zml4LXJldHVybn0gYXJndW1lbnQgb2YgQGNvZGV7Z3YtZGVmaW5lLXNpbXBsZS1zZXR0ZXJ9 LiAgVGhpcwpleHBhbmRzIGludG8gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG8KQGV4YW1wbGUKKGxl dCAoKHRlbXAgQHZhcnt2YWx1ZX0pKQogIChAdmFye3NldHRlcn0gQHZhcnthcmdzfUBkb3Rze30g dGVtcCkKICB0ZW1wKQpAZW5kIGV4YW1wbGUKc28gZW5zdXJpbmcgdGhhdCBpdCByZXR1cm5zIHRo ZSBjb3JyZWN0IHJlc3VsdC4KQGVuZCBkZWZtYWMKCgpAZGVmbWFjIGd2LWRlZmluZS1zZXR0ZXIg bmFtZSBhcmdsaXN0ICZyZXN0IGJvZHkKVGhpcyBtYWNybyBhbGxvd3MgZm9yIG1vcmUgY29tcGxl eCBAY29kZXtzZXRmfSBleHBhbnNpb25zIHRoYW4gdGhlCnByZXZpb3VzIGZvcm0uICBZb3UgbWF5 IG5lZWQgdG8gdXNlIHRoaXMgZm9ybSwgZm9yIGV4YW1wbGUsIGlmIHRoZXJlCmlzIG5vIHNpbXBs ZSBzZXR0ZXIgZnVuY3Rpb24gdG8gY2FsbCwgb3IgaWYgdGhlcmUgaXMgb25lIGJ1dCBpdApyZXF1 aXJlcyBkaWZmZXJlbnQgYXJndW1lbnRzIHRvIHRoZSBwbGFjZSBmb3JtLgoKVGhpcyBtYWNybyBl eHBhbmRzIHRoZSBmb3JtCkBjb2RleyhzZXRmIChAdmFye25hbWV9IEB2YXJ7YXJnc31AZG90c3t9 KSBAdmFye3ZhbHVlfSl9IGJ5CmZpcnN0IGJpbmRpbmcgdGhlIEBjb2Rle3NldGZ9IGFyZ3VtZW50 IGZvcm1zCkBjb2RleyhAdmFye3ZhbHVlfSBAdmFye2FyZ3N9QGRvdHN7fSl9IGFjY29yZGluZyB0 byBAdmFye2FyZ2xpc3R9LAphbmQgdGhlbiBleGVjdXRpbmcgQHZhcntib2R5fS4gIEB2YXJ7Ym9k eX0gc2hvdWxkIHJldHVybiBhIExpc3AKZm9ybSB0aGF0IGRvZXMgdGhlIGFzc2lnbm1lbnQsIGFu ZCBmaW5hbGx5IHJldHVybnMgdGhlIHZhbHVlIHRoYXQgd2FzCnNldC4gIEFuIGV4YW1wbGUgb2Yg dXNpbmcgdGhpcyBtYWNybyBpczoKCkBleGFtcGxlCihndi1kZWZpbmUtc2V0dGVyIGNhYXIgKHZh bCB4KSBgKHNldGNhciAoY2FyICx4KSAsdmFsKSkKQGVuZCBleGFtcGxlCkBlbmQgZGVmbWFjCgpA ZmluZGV4IGd2LWRlZmluZS1leHBhbmRlcgpAZmluZGV4IGd2LWxldHBsYWNlCkBjIEZJWE1FPyAg Tm90IHN1cmUgd2hhdCBvciBob3cgbXVjaCB0byBzYXkgYWJvdXQgdGhlc2UuCkBjIFNlZSBjbC50 ZXhpIGZvciBhbiBleGFtcGxlIG9mIHVzaW5nIGd2LWxldHBsYWNlLgpGb3IgbW9yZSBjb250cm9s IG92ZXIgdGhlIGV4cGFuc2lvbiwgc2VlIHRoZSBtYWNybyBAY29kZXtndi1kZWZpbmUtZXhwYW5k ZXJ9LgpUaGUgbWFjcm8gQGNvZGV7Z3YtbGV0cGxhY2V9IGNhbiBiZSB1c2VmdWwgaW4gZGVmaW5p bmcgbWFjcm9zIHRoYXQKcGVyZm9ybSBzaW1pbGFybHkgdG8gQGNvZGV7c2V0Zn07IGZvciBleGFt cGxlLCB0aGUgQGNvZGV7aW5jZn0gbWFjcm8Kb2YgQ29tbW9uIExpc3AuICBDb25zdWx0IHRoZSBz b3VyY2UgZmlsZSBAZmlsZXtndi5lbH0gZm9yIG1vcmUgZGV0YWlscy4KCkBjaW5kZXggQ0wgbm90 ZS0tLW5vIEBjb2Rle3NldGZ9IGZ1bmN0aW9ucwpAcXVvdGF0aW9uCkBie0NvbW1vbiBMaXNwIG5v dGU6fSBDb21tb24gTGlzcCBkZWZpbmVzIGFub3RoZXIgd2F5IHRvIHNwZWNpZnkgdGhlCkBjb2Rl e3NldGZ9IGJlaGF2aW9yIG9mIGEgZnVuY3Rpb24sIG5hbWVseSBAY29kZXtzZXRmfSBmdW5jdGlv bnMsCndob3NlIG5hbWVzIGFyZSBsaXN0cyBAY29kZXsoc2V0ZiBAdmFye25hbWV9KX0gcmF0aGVy IHRoYW4gc3ltYm9scy4KRm9yIGV4YW1wbGUsIEBjb2RleyhkZWZ1biAoc2V0ZiBmb28pIEBkb3Rz e30pfSBkZWZpbmVzIHRoZSBmdW5jdGlvbgp0aGF0IGlzIHVzZWQgd2hlbiBAY29kZXtzZXRmfSBp cyBhcHBsaWVkIHRvIEBjb2Rle2Zvb30uICBFbWFjcyBkb2VzCm5vdCBzdXBwb3J0IHRoaXMuICBJ dCBpcyBhIGNvbXBpbGUtdGltZSBlcnJvciB0byB1c2UgQGNvZGV7c2V0Zn0gb24gYQpmb3JtIHRo YXQgaGFzIG5vdCBhbHJlYWR5IGhhZCBhbiBhcHByb3ByaWF0ZSBleHBhbnNpb24gZGVmaW5lZC4g IEluCkNvbW1vbiBMaXNwLCB0aGlzIGlzIG5vdCBhbiBlcnJvciBzaW5jZSB0aGUgZnVuY3Rpb24g QGNvZGV7KHNldGYKQHZhcntmdW5jfSl9IG1pZ2h0IGJlIGRlZmluZWQgbGF0ZXIuCkBlbmQgcXVv dGF0aW9uCg== --001a1141e07488010105464ffe4c-- From MAILER-DAEMON Tue Jan 17 18:49:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTdUu-0002EY-2J for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 18:49:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTc4d-0001vh-Eu for emacs-devel@gnu.org; Tue, 17 Jan 2017 17:17:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTc4a-0006BX-9x for emacs-devel@gnu.org; Tue, 17 Jan 2017 17:17:51 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44361) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTc4a-0006B8-64 for emacs-devel@gnu.org; Tue, 17 Jan 2017 17:17:48 -0500 Received: from p54ace912.dip0.t-ipconnect.de ([84.172.233.18]:51927 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cTc4Z-0004Qw-Ej for emacs-devel@gnu.org; Tue, 17 Jan 2017 17:17:47 -0500 From: Arash Esbati To: emacs-devel Subject: Hunspell 1.6 on Msys2 Date: Tue, 17 Jan 2017 23:16:51 +0100 Message-ID: <86a8apjprg.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Mailman-Approved-At: Tue, 17 Jan 2017 18:49:03 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 22:17:52 -0000 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Dear all, Msys2 is delivering Hunspell 1.6 and I ran into this problem on Windows 10. Recipe: 1) emacs -q & 2) Open a file like \documentclass{article} \begin{document} =C3=9Cbersetzugn \end{document} 3) M-x ispell-change-dictionary RET deutsch8 RET 4) M-x toggle-debug-on-error RET 5) M-x ispell Debugger says: --8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (error "Ispell misalignment: word =E2=80=98\3= 34bersetzugn=E2=80=99 point 43; probably incompatible versions") signal(error ("Ispell misalignment: word =E2=80=98\334bersetzugn=E2=80=99= point 43; probably incompatible versions")) error("Ispell misalignment: word `%s' point %d; probably incompatible ver= sions" "\334bersetzugn" 43) ispell-process-line("^=C3=9Cbersetzugn\n" nil) ispell-region(1 71) ispell-buffer() ispell() funcall-interactively(ispell) call-interactively(ispell record nil) command-execute(ispell record) execute-extended-command(nil "ispell" nil) funcall-interactively(execute-extended-command nil "ispell" nil) call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command) --8<---------------cut here---------------end--------------->8--- The same procedure works with hunspell 1.4.1. --=-=-= Content-Type: image/jpeg Content-Disposition: inline; filename=ispell_1.4.1.jpg Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAgMDAwMDBAcFBAQEBAkGBwUHCgkLCwoJ CgoMDREODAwQDAoKDhQPEBESExMTCw4UFhQSFhESExL/2wBDAQMDAwQEBAgFBQgSDAoMEhISEhIS EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhL/wAARCABxAmMDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7n+Fv g2wvPhj4QnmuNdDzaBYswj168jUE26cBVlAUegAAHQCvK/CXw4u/FPhTU/Fni344fF/w5DceONb0 SzsNKvbKSCIQ67dafZwxLJZTTMSsUIJZ2OSzEgZx7j8I/wDklHgv/sXrD/0nSvH/AAnC9v4L+H+s 3P8AyB9D+OniuTUyVBWNbjWNdtIJGz0Aubm3Ge27d2rrxivjJrvO33yOXBf7nF9oX+6NzQ+EXxC8 F3Hwo+FcvxH13xZc+K/FHg/Q9R1W6t7nV5YIZ723j2y3UtuTb2ayyl9vmmJSQwXhTj2KHwx4Tn8R 3Wgx3viD+1rOzivZbZvEGpKfIkd0R1Yy7WG6JwdpJXjdjcufm/4PeFfFV3+zP4Y8O+H/AAxqurWH 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 H3APtXbV+AY2MY4mooqy5n+Z/O2YRjHGVVFWXNKy26voFFFFcpxhRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB5h8I/8AklHg v/sXrD/0nSvINU/YD/Zu+JHj/wAU3nif4bzz+Jrq7GqarcS+IdRiF694Wla4jWO6ChGl85cBVAaN wBgAn1/4R/8AJKPBf/YvWH/pOlbvimxudPvtB8S6Pbz3M+nMLS/t4Iy73FjOVD4UdWjcRzDgnaki qMvXpVacKmMqwlu3K3rfT79vK9+hllkYyw1OL35Vb1svz2+Z5xYfsL/BDTLG3s7HwT5dtaRLFCn9 t352ooAUZM+TwB1qf/hiX4Lf9CZ/5Wr7/wCP1S+JPwkvdc8f6rq95p/jHVRdtbyaXfeH/wCwxNpq xxqvlpLeqs8LCRWkBhk2/vM8Nuzb8WfDdb7XvG2s2vw7mvNZlezl0TUVNgJHnTG6eFmnBicMAWch GYIo+baoH0VKvilCnbMpK8Vop/C7xVnea2u79lF6W2+yhnGaRhCMcxqWstFOVlsrfGrWv+GxQ8Rf si/Anwrot3q2t+D547CxTzLiSHUNTuGjTIBbZHKzYGckgYABJwASK2vfsrfAHw1qeiadq3hOdb3x Fdm006GC+1S4aWRUZ2LeXI3loqqSZH2oOAWBIzofE/wBfeI4fFhPw9u9e17WYQdG1sXtnG+nRmBF FuZHnWWLa4l3JEGjk3ncx8yTHT+M4b4fFb4Ya9PY63JYSfbLKezWy+0ppU81uWSaRrdWKMdrQs7y NAA3Zir1yYzNMwo0KU4Y2cpSev7zbSLSspN6ttXaWttNzKvxDnFOjGUcfVbd7/vJdl0Um+rve2i2 TOL8W/sofAXwP4bv9e8R+D7mLS9Mi867lt73VLt448gF/LikZyozliFIVQWOACRr/wDDEvwW/wCh M/8AK1ff/H64747/AAl1DxTL8QEX4VXfjXxJr0GPDPiyHUbCA6VF9mjRbcSzXEdxbhZVmZo4UaOU SneT5soXS+Ifw+u/FGt+INQ1v4Sap4p13XLeCXwzr0l5pnmeFW+zIqQ+ZJdrLayQ3KyTNJZiTO8M rOwAHuUvbzoUZf2pNSldy/eR00p2VnVTXxSu5OLfLZRumee+K89Ta+uVf/Bk/v3enpd+S1tv/wDD EvwW/wChM/8AK1ff/H6P+GJfgt/0Jn/lavv/AI/WR8TvhYuv+JNePjX4VT/FaXVraCPRdZXUbO1G kKsCxvDvlnjnswZ1kmaW0SRyJujGNVNH4pfDrWYovGmk+GPhNB4kj8VWun3lvdW15p0dta31vGyO 7tcSJK1woRPLkEZ3HYGkiG5lxw7xdb2a/tSSckm71IpK7jfV1k7pSbtJRvy6X1tMuLM+S0xdX/wZ Pt6vrpp+J0v/AAxL8Fv+hM/8rV9/8fo/4Yl+C3/Qmf8Alavv/j9eWat+z2fFXjXX9YvPg09tHrvi u5nuhevpTC5sZdIMaGREunVoxqMa3DIQSZGjl2s65SHxh8BfEPivxDH4h8XeHPiheald6dp5sLjw 9J4Ue+0F4beNHhW6vszwSidJJg9rcMpM2flcMW9CGFqSlBPOmrxTd5rRu3uq1V3e93psurslLi7P k3bF1Xv/AMvJ9GvPrfT0fTU+vdC0Sy8M6Hp2j6JD9m07SrSK0s4d7P5UMaBEXcxLHCqBkkk9zU63 9s99JZJcQNeQxJNJbiQGRI3LBXK9QpKOAehKt6Gvmb4g/ByPV/FHxK8RWfwgudT8Ryx6fJ4a1cNp QlkvIwA1zbM90pglVgjNKwidhEoy+xFrf8efDCzl+Kp8ZQ/BPRPGupa5pFikN1exaXG+lahBLIfN u5pWMijZJCPNt1uHAtyArbUDfN/2Jgp8reKvKUb/APLv4rQlZt1bW96Su3F80WrXul4s8RUm5yab e+t7u7s76b9evc9muvGWk2Xi+x8MXU88WsanZTXlpG1nN5U0UTKsgWfb5W8b1Pl7t+Du24BNbdea +NYbvWPi78P7TT4tZtTpcd9qV9qFrYs1ssOxYhbPPJG0X7x3B2KRNiLcpVd2fSq+UW39f15eqZr1 /r+vP0aCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigDzD4R/8AJKPBf/YvWH/pOlelW3/HtF/uD+VFFdWO/wB6qf4n+Zy4H/da f+FfkS0UUVynUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/2Q== --=-=-= Content-Type: text/plain Can somebody reproduce this? Best, Arash --=-=-=-- From MAILER-DAEMON Tue Jan 17 22:26:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTgtV-0007Xk-5g for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 22:26:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41037) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTge9-0002cH-Vf for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:10:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTge6-0006WX-Pv for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:10:49 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:45776) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTge6-0006VL-Cb for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:10:46 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 2B2CB20AA1 for ; Tue, 17 Jan 2017 22:10:44 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute6.internal (MEProxy); Tue, 17 Jan 2017 22:10:44 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=writequit.org; h= content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=p+i1CjwIprACxO5q/z5oGilwVCk=; b=Hekugg EZNC9UH2HACedFGwoIcfB2qCToiJulrUg0bDUeXAZpGuNoNpChcO47QN0hw7+fat tTVZMKIvBEHnIbwGY6R98G58NMuoJK+ena8K2+HNgOjs9dp2DAk4ugalBnjJmSWV 9ehpf2kLKZ61g0mkJx2mnImg44JSkjYxEem5c= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=p+i1CjwIprACxO 5q/z5oGilwVCk=; b=e2L/XlNmFlQ8fpNMZ3ddc/akDqkCFz1oU+VoE11OnuxLT1 ijmgiU8aOHgmQCwflH8O68sDfoBZhJbxkXfcESSLzJzBFUkmdQS0yeX+B96I5dxJ 07hNaLdOjvIUhZB8bEhdDHpz0QbEyUzMDYQzxmBp98W4qPQs0wesxRzuE/HP8= X-ME-Sender: X-Sasl-enc: +4e9uyUQBoyueButKfd2SpQd0G3binHWuZcPHFiticvA 1484709043 Received: from localhost (95.211.172.35.adsl.inet-telecom.org [95.211.172.35]) by mail.messagingengine.com (Postfix) with ESMTPA id 7EC362443E for ; Tue, 17 Jan 2017 22:10:43 -0500 (EST) From: Lee Hinman To: emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87fukhv0cr.fsf@engster.org> (David Engster's message of "Tue, 17 Jan 2017 22:32:36 +0100") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.90 (gnu/linux) Date: Tue, 17 Jan 2017 20:10:41 -0700 Message-ID: <8760lddpvy.fsf@writequit.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-Mailman-Approved-At: Tue, 17 Jan 2017 22:26:39 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 03:10:50 -0000 David Engster writes: > Dmitry Gutov writes: >> On 18.01.2017 00:06, David Engster wrote: >> >>> That's great, thanks. You will need to remove quite some stuff from >>> there that is not in Emacs, like everything Java related, the Fortran >>> tests, ede/arduino, cogre... >> >> Is that a good idea? If CEDET development is going to proceed inside >> Emacs from now on, why would you remove Java support? > > CEDET's Java support was never in Emacs, and the CEDET repository will > not vanish, so we're not really removing anything. Anybody can port the > Java support to Emacs or ELPA later. > >> Is it in a really bad shape? > > To my knowledge, nobody has been working on it for quite some time, so > I'd be surprised if it worked with today's typical Java code. CEDET's Java support works pretty well actually. I use it every day for my day job. It'd be great if it could be included (eventually if not part of this) in Emacs-proper. Of course it could be improved since it's a little out of date, but it remains useful. From MAILER-DAEMON Tue Jan 17 22:39:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTh5a-0001ka-2I for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 22:39:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51836) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTh5Y-0001kL-2a for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:39:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTh5T-0004wq-7S for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:39:08 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:47192) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTh5T-0004wi-4Z for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:39:03 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1571 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTh5R-0004hj-Vk; Tue, 17 Jan 2017 22:39:02 -0500 Date: Wed, 18 Jan 2017 05:38:48 +0200 Message-Id: <83lgu982bb.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <86a8apjprg.fsf@gnu.org> (message from Arash Esbati on Tue, 17 Jan 2017 23:16:51 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 03:39:08 -0000 > From: Arash Esbati > Date: Tue, 17 Jan 2017 23:16:51 +0100 > > Msys2 is delivering Hunspell 1.6 and I ran into this problem on Windows > 10. Recipe: > > 1) emacs -q & > > 2) Open a file like > > \documentclass{article} > > \begin{document} > Übersetzugn > \end{document} > > 3) M-x ispell-change-dictionary RET deutsch8 RET > > 4) M-x toggle-debug-on-error RET > > 5) M-x ispell > > Debugger says: > > --8<---------------cut here---------------start------------->8--- > Debugger entered--Lisp error: (error "Ispell misalignment: word ‘\334bersetzugn’ point 43; probably incompatible versions") > signal(error ("Ispell misalignment: word ‘\334bersetzugn’ point 43; probably incompatible versions")) If you turn on ispell.el's debugging, what does it tell about this? From MAILER-DAEMON Tue Jan 17 22:48:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cThEV-0003YL-VR for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 22:48:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56609) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cThES-0003Xo-VK for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:48:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cThEP-0001Sj-T0 for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:48:20 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:45443) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cThEP-0001SD-No for emacs-devel@gnu.org; Tue, 17 Jan 2017 22:48:17 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0I3mCM0022869; Tue, 17 Jan 2017 22:48:13 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 9C57DAE2C3; Tue, 17 Jan 2017 22:48:12 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Tom Tromey Subject: Re: [Emacs-diffs] master dbb29d7: Add info-lookup help for gdb-script-mode Message-ID: References: <20170117224028.8928.65103@vcs.savannah.gnu.org> <20170117224028.A68812201B9@vcs.savannah.gnu.org> Date: Tue, 17 Jan 2017 22:48:12 -0500 In-Reply-To: <20170117224028.A68812201B9@vcs.savannah.gnu.org> (Tom Tromey's message of "Tue, 17 Jan 2017 22:40:28 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5922=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5922> : inlines <5632> : streams <1729552> : uri <2359923> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 03:48:21 -0000 > Author: Tom Tromey > Commit: Tom Tromey > Add info-lookup help for gdb-script-mode > Bug#25464: > * lisp/info-look.el (info-lookup-guess-gdb-script-symbol): New > function. > Add help for gdb-script-mode. This does not belong here. It belongs alongside gdb-script-mode. Stefan From MAILER-DAEMON Tue Jan 17 23:35:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cThyB-0000am-SW for mharc-emacs-devel@gnu.org; Tue, 17 Jan 2017 23:35:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34932) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cThy9-0000aY-3z for emacs-devel@gnu.org; Tue, 17 Jan 2017 23:35:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cThy5-000703-UD for emacs-devel@gnu.org; Tue, 17 Jan 2017 23:35:33 -0500 Received: from gproxy5-pub.mail.unifiedlayer.com ([67.222.38.55]:46585) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cThy5-0006e4-GX for emacs-devel@gnu.org; Tue, 17 Jan 2017 23:35:29 -0500 Received: (qmail 10212 invoked by uid 0); 18 Jan 2017 04:35:02 -0000 Received: from unknown (HELO CMOut01) (10.0.90.82) by gproxy5.mail.unifiedlayer.com with SMTP; 18 Jan 2017 04:35:02 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by CMOut01 with id Zgaw1u00C2f2jeq01gazAY; Tue, 17 Jan 2017 21:35:00 -0700 X-Authority-Analysis: v=2.1 cv=H75InYoi c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=zstS-IiYAAAA:8 a=z4IKcYwqoKaADnL-7zQA:9 a=4G6NA9xxw8l3yy4pmD5M:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=rdZqngerE6NGy10hyJwcA73ELEEREknPTOaHwoeaiPs=; b=AeyFJ7XuyeSeiE1/+uAc+7/gjs t1UHMe4TJfm7kNekoaqdDHNHGODBgu9joHmpwUNCFmz+k0jw9xW+5Q0BpflLq1NqzM3eG8OJ5OPuQ OwsvFPWAJGVBHzimSVPT/5tL+; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:35890 helo=bapiya) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cThxZ-00075j-8X; Tue, 17 Jan 2017 21:34:57 -0700 From: Tom Tromey To: Stefan Monnier Cc: emacs-devel@gnu.org, Tom Tromey Subject: Re: [Emacs-diffs] master dbb29d7: Add info-lookup help for gdb-script-mode References: <20170117224028.8928.65103@vcs.savannah.gnu.org> <20170117224028.A68812201B9@vcs.savannah.gnu.org> X-Attribution: Tom Date: Tue, 17 Jan 2017 21:34:55 -0700 In-Reply-To: (Stefan Monnier's message of "Tue, 17 Jan 2017 22:48:12 -0500") Message-ID: <87d1flhtow.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cThxZ-00075j-8X X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (bapiya) [174.16.146.181]:35890 X-Source-Auth: tom+tromey.com X-Email-Count: 5 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.222.38.55 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 04:35:34 -0000 >>>>> "Stefan" == Stefan Monnier writes: >> Author: Tom Tromey >> Commit: Tom Tromey >> Add info-lookup help for gdb-script-mode >> Bug#25464: >> * lisp/info-look.el (info-lookup-guess-gdb-script-symbol): New >> function. >> Add help for gdb-script-mode. Stefan> This does not belong here. It belongs alongside gdb-script-mode. I put it there because all other calls to info-lookup-add-help and info-lookup-maybe-add-help are in that file, and I didn't want to be the one to break with tradition. Tom From MAILER-DAEMON Wed Jan 18 00:31:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTiqN-0000hz-Lw for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 00:31:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTiqL-0000hE-UX for emacs-devel@gnu.org; Wed, 18 Jan 2017 00:31:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTiqI-0004yN-QQ for emacs-devel@gnu.org; Wed, 18 Jan 2017 00:31:33 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:38378) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTiqI-0004yE-Im for emacs-devel@gnu.org; Wed, 18 Jan 2017 00:31:30 -0500 Received: by mail-wm0-x22c.google.com with SMTP id r144so7868188wme.1 for ; Tue, 17 Jan 2017 21:31:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=d+/Q/qKIJXd8X5cA8AUYtNvDfh+vvsoitrZ/+TmbDLE=; b=KtkwIr8N8lq/e3rdFCzqUmfwa8PoDWv4aTKZiYxYGGvxusVseUxZtNxXDiKywuxun8 eCz0wk6PfAsB/Her1xxFWaWzQs0rsQVkZiDcx5le0g2r4W+v3BJMJEPbVEhPJcsocoO7 5Y4lAFDJfB54E7yCmB9MpAtmH0AKTnrOh64rIX776SR6/O1L1IvsJsIhKlN5AZqQ2IvZ ZTf6bUZVrnw1rba88+7/TEK5+fsYMPXg+R8Hqa9OmFbEwvENazqN8zPJExM5HwPqyzKs zfq43tu75EszXzoPoAZorHf8fH3fJ1k/bhFORUehdGyhBSYGUKHBOW+/eAjVkW8CdxyM wBNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=d+/Q/qKIJXd8X5cA8AUYtNvDfh+vvsoitrZ/+TmbDLE=; b=hCJq5OjPdvNA4kOYg8MlM8zCtVtQxafxEYoVqGt0plkraPAEYVWR9a6p8ZZgBJo90Q zeyTrL/zfoK1HeyQ/8VXpAV18hUl9NM5DEq6BK30nbcs1qeJjzjnXB3lqp7RLd3od7y4 JTODmITh9V5UIxyoRdUprKnjqXLFivbkHRE15CIJm/ZCyYnjdwAK44tkFlaaKDuUF4WI evX4FQkBENc3iIX2QtMJ+9pxCQaryIBZwDgWDmgLlxqjHmDyl2NNqe5wRoYiGh6fA5vh rKQ39AGRa5xGCpFAfOnkHvnaICDvQoT9I0cALPaTZVufEsk3y2Zdxcg/EF2KHibXefYO uHDQ== X-Gm-Message-State: AIkVDXIU6IKQhxvQgQvKq3wPmL1U5B+ZdKUU94sCqssmOptM+wgzowHsz7SjcUBHcXQCtA== X-Received: by 10.28.234.193 with SMTP id g62mr1149013wmi.36.1484717489355; Tue, 17 Jan 2017 21:31:29 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id 202sm1944711wmp.20.2017.01.17.21.31.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jan 2017 21:31:28 -0800 (PST) From: Edward John Steere To: Lee Hinman Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> Date: Wed, 18 Jan 2017 07:31:10 +0200 In-Reply-To: <8760lddpvy.fsf@writequit.org> (Lee Hinman's message of "Tue, 17 Jan 2017 20:10:41 -0700") Message-ID: <87pojldjdt.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 05:31:35 -0000 > CEDET's Java support works pretty well actually. I use it every day for > my day job. It'd be great if it could be included (eventually if not > part of this) in Emacs-proper. > > Of course it could be improved since it's a little out of date, but > it remains useful. I can report the same thing: CEDET's Java support although dated in some places is very good. I've submitted patches which prevent the parser from bombing out on diamond syntax and annotations as well as fixing starry imports, but there are other areas where it's lacking, e.g. support for static imports. If we were to bring it up to standard and fix some debilitating performance issues which crop up on larger projects then it would compete with many of the projects which try to bring semantic Java editing to Emacs with server programs. (You can also work around the performance problems with some hacks which limit search scope aggressively but that's obviously not ideal.) I don't understand what's preventing us from porting this and other aspects of CEDET right away -- other than scope creep perhaps? I would advise against using upstream as a fallback though because: a) it's likely to receive even less attention after the merge; b) most of it doesn't work with the latest Emacs because of the changes to EIEIO in core; From MAILER-DAEMON Wed Jan 18 05:03:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTn5S-0002c5-54 for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 05:03:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTn5L-0002Yo-LU for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:03:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTn5I-0006qG-3S for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:03:19 -0500 Received: from mail-it0-x235.google.com ([2607:f8b0:4001:c0b::235]:38601) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTn5D-0006nl-H2; Wed, 18 Jan 2017 05:03:11 -0500 Received: by mail-it0-x235.google.com with SMTP id c7so7262429itd.1; Wed, 18 Jan 2017 02:03:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=FRkG5j8boe+64SdLgGtW2p9QpplyMv39i4eWO0VGNMw=; b=RAKzsWUBUn5XwUTSmdT2ZNTQoa/VONyrOZ5S2v1ZpzcjzugPjBbaeLYRVfBl6mw+dJ f6wYorVOARIIb9ol3aznD2kjU6ETyB8VFoGVssscKqta+ksNSYNxowbjehla3ZLBvrfw Gzo3cB3zhJihKBXoeBqwgsNLB5K7n70ZvHrmWrlMRY41sCH0Gl5vIgtj/x4Z0/ydV2ac Uof518TOR19ooyDUWDhawL0C5NSKw5u1b4Hx3/CDFMJuR6czyFlpjFxAtktik9Mz7S4V 9j4kv7zBgp5yxW9aiLD9RwISCPhiNHCjZakW3pP3kdtE+p1RIm0WCs8aCGdAsMUpEW6L Ejrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=FRkG5j8boe+64SdLgGtW2p9QpplyMv39i4eWO0VGNMw=; b=O3/6YRRLuU9hQ35vGagaz51KgLatqkmmH8l+vpsqSlGkHEu7vvdap3r7bZHSFr3OJv 3tv7hhIzGPikcPhn4tS76iVL44mAI1KE9J8aHEocfg7lH4ZWbIpI0gqVUNe55uGKiIAa T5Za3N9Ah9EVlVm3LlJKDFXJZhga4os63ELv+IXogajlDREeCmgODtdtNqg83FtlYrf+ UYQxI2vh8LYXCU/AdtfMv4LBLyiQu+D0udCRf4HViRyjo6TIUH3L5RMKL0YD8x/FL0f0 d+HafYQKtFz7njOQfOZCro6c2uFlPEUsGFRv9ONNAzAQ6tlEkiPszOiWDtQ8tpwlOP7e sr2w== X-Gm-Message-State: AIkVDXIHEm4QW2hppWJbr3Hh68GbsretIdGUyle2SWkBSfvf4g9lz3Dr5DtcQPzZQD1fyub4ySKdNlyiaealtQ== X-Received: by 10.36.37.199 with SMTP id g190mr23491615itg.12.1484733788778; Wed, 18 Jan 2017 02:03:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.172.7 with HTTP; Wed, 18 Jan 2017 02:03:08 -0800 (PST) In-Reply-To: References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> From: Constantin Kulikov Date: Wed, 18 Jan 2017 13:03:08 +0300 Message-ID: Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. To: Eli Zaretskii Cc: emacs-devel Content-Type: multipart/alternative; boundary=001a11450caa10fee505465b86d1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c0b::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 10:03:24 -0000 --001a11450caa10fee505465b86d1 Content-Type: text/plain; charset=UTF-8 Well I think Stefan's solution is more correct and will not break anything. --001a11450caa10fee505465b86d1 Content-Type: text/html; charset=UTF-8
Well I think Stefan's solution is more correct and will not break anything.
--001a11450caa10fee505465b86d1-- From MAILER-DAEMON Wed Jan 18 05:12:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTnE5-0007L6-Vm for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 05:12:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37176) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTnE4-0007K3-9m for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:12:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTnE3-0001Nc-EG for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:12:20 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:35257) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTnDy-0001MM-OG; Wed, 18 Jan 2017 05:12:14 -0500 Received: by mail-lf0-x243.google.com with SMTP id v186so1028930lfa.2; Wed, 18 Jan 2017 02:12:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ocLVRavVd/vcQIDvYA7EaNlNUY9N4MTdX3GWPzQ0u8w=; b=tza3k538nP0lln+/oUeIdjiMlZy//mmbq7FtC0fr2TigXzKDiT5MV62N1zwsR15B14 IGX+ZUmN4Tq6k7rql6ETvSHmzSde3zv6KpR+Ir9+lA9DI9qtNprXRxTeZcHTDwv+ai4U ohF9PnZdUadctwNF2tJKXikXtsY6+gu6vG5Kng9NjxqtIWYoD1jBMj1I9t7rUehBbdjq suxLLZCBxjGPGQ0RYZYxIaY9MubhDwyWbcR1jrY5QUImjB9MpOTBqhYXObTjLZH/5Fem QV9A8dcg6UKAMlfrCKCDOPmNXL3GNF6LczbZEdNeOaIDKwKwMB8CtsnP5r7ssSOP415s jV5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ocLVRavVd/vcQIDvYA7EaNlNUY9N4MTdX3GWPzQ0u8w=; b=bpSRxF9zXyX5MsEvVt26rfrWtoHlYPqoUNrLQSs5jCnhJ3mOekQZZJ+fCu8rLn/CHx kVW6NfVrwgGqYXIekXJ1QOyYIQkGmXphPjfwvO0DeFHu+FU24NOVBgnd9nj/I+t819ek uVahzL9mUMY8F3LAYWo9toQKaZbmugetXn+R52nIdutR/TOQWWZb48f3WY/AE1+VyWkA 0nMxQQ95d7WUKYuDd/nlyzY0cbZxi9wflyHt3C5sdBspU6LaUzX4hjg1h21+n+nSZtQZ vf/Z2ftKYR2hx0hCC5Tc06BhQW8Ip3bGvkOpBLCftqLupUPlInDI32YJ+5fy3E+BjKHa Xz6w== X-Gm-Message-State: AIkVDXKQBybZV2oIyHKfGD/kbsOhv5UvsiK6FziHWwfYgECwWV12zohWXfBpzk2j469ulQ== X-Received: by 10.25.22.104 with SMTP id m101mr786118lfi.17.1484734333293; Wed, 18 Jan 2017 02:12:13 -0800 (PST) Received: from [10.177.123.253] ([105.5.129.86]) by smtp.gmail.com with ESMTPSA id 17sm6423150ljp.45.2017.01.18.02.12.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jan 2017 02:12:12 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (1.0) Subject: Re: CEDET Merge From: Edward Steere X-Mailer: iPhone Mail (14C92) In-Reply-To: <87k29tv0r4.fsf@engster.org> Date: Wed, 18 Jan 2017 12:12:10 +0200 Cc: Stephen Leake , Eli Zaretskii , emacs-devel@gnu.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> To: David Engster X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 10:12:21 -0000 Patching does sound easier. Given that we might be moving from upstream entirely it might be worth it to= keep the commit history if we can though. I know that git won't make is ea= sy. If we do go with patching though, and the changes are going to appear in the= changelog then how are we going to go about doing that? Would we use the a= dd-change-log command on all of the commits since the last merge? One disadvantage of all of this is that git blame results would be more diff= icult to interpret because the change and author would be documented elsewhe= re. > On 17 Jan 2017, at 11:23 PM, David Engster wrote: >=20 > Edward John Steere writes: >> Our main concern is to maintain the commit history and I think that my >> original approach of merging to CEDET and then back creates too much >> noise. >=20 > Merging to the CEDET repo is not needed, since we will abandon it > anyway. >=20 >> I think that the best way to go about this is to move everything in the >> CEDET project into folders which mirror their destination in core. >> Changes will be required for: >> - The grammar files, which need to be in admin/grammars >> - The tests, which need to be in test/manual/cedet >> - The documentation files, which need to move to doc/misc (and >> should probably be flattened.) >>=20 >> Once moved we commit, add CEDET as a remote of Emacs and merge >> CEDET/master allowing unrelated histories. >=20 > I think it will be less work to simply do the diff|patch game and fixing > a few paths along the way. Since the histories are unrelated, git cannot > really help you with the merges anyway. >=20 >> (I considered moving the tests, but they have history too and we'd have >> to start splitting commits to get them across w/o the rest of upstream >> CEDET. Additionally there's nothing preventing the tests from being run >> with CEDET in Emacs core. Just start it with --no-init add the test >> folder to the load path, load the relevant test file and run it.) >=20 > I wouldn't worry too much about the history of the tests. The authorship > of the changes should be clear, but at least I don't care much for > granularity here. >=20 > -David From MAILER-DAEMON Wed Jan 18 05:23:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTnP5-0002oV-Nv for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 05:23:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTnP3-0002oI-AO for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:23:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTnP0-0006W5-5S for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:23:41 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50937) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTnP0-0006W1-1X for emacs-devel@gnu.org; Wed, 18 Jan 2017 05:23:38 -0500 Received: from p54aceb6c.dip0.t-ipconnect.de ([84.172.235.108]:52660 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cTnOz-0001rN-9i; Wed, 18 Jan 2017 05:23:37 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> Date: Wed, 18 Jan 2017 11:22:55 +0100 In-Reply-To: <83lgu982bb.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 18 Jan 2017 05:38:48 +0200") Message-ID: <861sw0k6ps.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 10:23:42 -0000 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii writes: >> From: Arash Esbati >> Date: Tue, 17 Jan 2017 23:16:51 +0100 >>=20 >> Debugger says: >>=20 >> --8<---------------cut here---------------start------------->8--- >> Debugger entered--Lisp error: (error "Ispell misalignment: word =E2=80= =98\334bersetzugn=E2=80=99 point 43; probably incompatible versions") >> signal(error ("Ispell misalignment: word =E2=80=98\334bersetzugn=E2=80= =99 point 43; probably incompatible versions")) > > If you turn on ispell.el's debugging, what does it tell about this? Thanks for your response. I think the relevant part of running `ispell-buffer-with-debug' is: --8<---------------cut here---------------start------------->8--- ispell-region: string52 pos (43->54), eol: 54, [in-comment]: [nil], [add-co= mment]: [nil], [string]: [^=C3=9Cbersetzugn ] ispell-process-line: Ispell misalignment error: [Word from ispell pipe]: [\334bersetzugn], actual (point,line,column): (4= 3,4,0) --8<---------------cut here---------------end--------------->8--- Complete output is attached. Best, Arash --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=ispell-debug Content-Transfer-Encoding: base64 aXNwZWxsLWhmZGU6IEZpbGxpbmcgZGV1dHNjaDggZW50cnkuICBVc2UgZm9yIChkZXV0c2NoIGdl cm1hbiBkZV9ERSBnZXJtYW44IGRldXRzY2g4KS4KaXNwZWxsLXJlZ2lvbjogKGlzcGVsbC1za2lw LXJlZ2lvbi1saXN0KToKKChcXGFkZGNvbnRlbnRzbGluZSBpc3BlbGwtdGV4LWFyZy1lbmQgMikg KFxcYWRkXCh0b2NvbnRlbnRzXHx2c3BhY2VcKSBpc3BlbGwtdGV4LWFyZy1lbmQpIChcXFwoW2FB XWxwaFx8YXJhYmljXCkgaXNwZWxsLXRleC1hcmctZW5kKSAoXFxiaWJsaW9ncmFwaHlzdHlsZSBp c3BlbGwtdGV4LWFyZy1lbmQpIChcXG1ha2Vib3ggaXNwZWxsLXRleC1hcmctZW5kIDApIChcXGU/ cHNmaWcgaXNwZWxsLXRleC1hcmctZW5kKSAoXFxkb2N1bWVudFwoY2xhc3NcfHN0eWxlXCkgLiBc XGJlZ2luWyAJCl0qe1sgCQpdKmRvY3VtZW50WyAJCl0qfSkgKFwoZmlndXJlXHx0YWJsZVwpXCo/ IGlzcGVsbC10ZXgtYXJnLWVuZCAwKSAobGlzdCBpc3BlbGwtdGV4LWFyZy1lbmQgMikgKHByb2dy YW0gLiBcXGVuZFsgCQpdKntbIAkKXSpwcm9ncmFtWyAJCl0qfSkgKHZlcmJhdGltXCo/IC4gXFxl bmRbIAkKXSp7WyAJCl0qdmVyYmF0aW1cKj9bIAkKXSp9KSAoXCgvXHdcfFwoXChcd1x8Wy1fXVwp K1suOkBdXClcKVwoXHdcfFstX11cKSpcKFsuOi9AXStcKFx3XHxbLV9+PT8mXVwpK1wpKykgKGlz cGVsbC13b3Jkcy1rZXl3b3JkIGZvcndhcmQtbGluZSkgKGlzcGVsbC1kaWN0aW9uYXJ5LWtleXdv cmQgZm9yd2FyZC1saW5lKSAoaXNwZWxsLXBkaWN0LWtleXdvcmQgZm9yd2FyZC1saW5lKSAoaXNw ZWxsLXBhcnNpbmcta2V5d29yZCBmb3J3YXJkLWxpbmUpICheLS0tKkJFR0lOIFBHUCBbQS1aIF0q LS0qIC4gXi0tLSpFTkQgUEdQIFtBLVogXSotLSopICheYmVnaW4gWzAtOV1bMC05XVswLTldIFte IAldKyQgLiAKZW5kCikgKF4lIVBTLUFkb2JlLVsxMjNdLjAgLiAKJSVFT0YKKSAoXi0tLSogXChT dGFydCBvZiBcKT9bRmZdb3J3YXJkZWQgW01tXWVzc2FnZSAuIF4tLS0qIEVuZCBvZiBbRmZdb3J3 YXJkZWQgW01tXWVzc2FnZSkpCmlzcGVsbC1yZWdpb246IChpc3BlbGwtYmVnaW4tc2tpcC1yZWdp b24tcmVnZXhwKToKXFxhZGRjb250ZW50c2xpbmVcfFxcYWRkXCh0b2NvbnRlbnRzXHx2c3BhY2Vc KVx8XFxcKFthQV1scGhcfGFyYWJpY1wpXHxcXGJpYmxpb2dyYXBoeXN0eWxlXHxcXG1ha2Vib3hc fFxcZT9wc2ZpZ1x8XFxkb2N1bWVudFwoY2xhc3NcfHN0eWxlXClcfFxcYmVnaW5bIAkKXSp7WyAJ Cl0qXChmaWd1cmVcfHRhYmxlXClcKj9bIAkKXSp9XHxcXGJlZ2luWyAJCl0qe1sgCQpdKmxpc3Rb IAkKXSp9XHxcXGJlZ2luWyAJCl0qe1sgCQpdKnByb2dyYW1bIAkKXSp9XHxcXGJlZ2luWyAJCl0q e1sgCQpdKnZlcmJhdGltXCo/WyAJCl0qfVx8TG9jYWxXb3JkczogXHxMb2NhbCBJc3BlbGxEaWN0 OiBcfExvY2FsIElzcGVsbFBlcnNEaWN0OiBcfExvY2FsIElzcGVsbFBhcnNpbmc6IFx8Xi0tLSpC RUdJTiBQR1AgW0EtWiBdKi0tKlx8XmJlZ2luIFswLTldWzAtOV1bMC05XSBbXiAJXSskXHxeJSFQ Uy1BZG9iZS1bMTIzXS4wXHxeLS0tKiBcKFN0YXJ0IG9mIFwpP1tGZl1vcndhcmRlZCBbTW1dZXNz YWdlXHxcKC9cd1x8XChcKFx3XHxbLV9dXCkrWy46QF1cKVwpXChcd1x8Wy1fXVwpKlwoWy46L0Bd K1woXHdcfFstX349PyZdXCkrXCkrCmlzcGVsbC1yZWdpb246IFNlYXJjaCBmb3IgZmlyc3QgcmVn aW9uIHRvIHNraXAgYWZ0ZXIgKGlzcGVsbC1iZWdpbi1za2lwLXJlZ2lvbi1yZWdleHApCmlzcGVs bC1yZWdpb246IEZpcnN0IHNraXA6IFxkb2N1bWVudGNsYXNzIGF0IChwb3MsbGluZSxjb2x1bW4p OiAoMSwxLDApLgppc3BlbGwtcmVnaW9uOiBDb250aW51ZSBzcGVsbC1jaGVja2luZyB3aXRoIGh1 bnNwZWxsLmV4ZSBhbmQgZGV1dHNjaDggZGljdGlvbmFyeS4uLgppc3BlbGwtcmVnaW9uOiBzdHJp bmcgcG9zICg0Mi0+NDIpLCBlb2w6IDU0LCBbaW4tY29tbWVudF06IFtuaWxdLCBbYWRkLWNvbW1l bnRdOiBbbmlsXSwgW3N0cmluZ106IFtuaWxdCmlzcGVsbC1yZWdpb246IHN0cmluZyBwb3MgKDQz LT41NCksIGVvbDogNTQsIFtpbi1jb21tZW50XTogW25pbF0sIFthZGQtY29tbWVudF06IFtuaWxd LCBbc3RyaW5nXTogW17DnGJlcnNldHp1Z24KXQppc3BlbGwtcHJvY2Vzcy1saW5lOiBJc3BlbGwg bWlzYWxpZ25tZW50IGVycm9yOgogIFtXb3JkIGZyb20gaXNwZWxsIHBpcGVdOiBb3GJlcnNldHp1 Z25dLCBhY3R1YWwgKHBvaW50LGxpbmUsY29sdW1uKTogKDQzLDQsMCkK --=-=-=-- From MAILER-DAEMON Wed Jan 18 06:04:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTo2Y-00063F-64 for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 06:04:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48337) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTo2V-00062H-Ug for emacs-devel@gnu.org; Wed, 18 Jan 2017 06:04:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTo2S-0004pc-06 for emacs-devel@gnu.org; Wed, 18 Jan 2017 06:04:27 -0500 Received: from mail-pg0-x22e.google.com ([2607:f8b0:400e:c05::22e]:35131) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTo2R-0004ov-Q4 for emacs-devel@gnu.org; Wed, 18 Jan 2017 06:04:23 -0500 Received: by mail-pg0-x22e.google.com with SMTP id 194so3945397pgd.2 for ; Wed, 18 Jan 2017 03:04:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=+ADeXzCxwzK+VYiDdsT3ZwbN1HZnqpQywRYBzCUjB44=; b=CyQ20pGNnCdPIr2leqQ3hTg3DWIGLLVJFmA4RqudP2wjxQDlxHVSmGQU3oKK5CwC4v 4i8jPIHZpz4EbtxIhVuEd48a8bszfPejzuuLvsDgaWhfoXbhVhXgisiMul4V9o9DEb0Y w6QUTFy8B4p6vDlJT6dhgRFPiLm+PtCWWgLpKAYyKDHdBzec7rcxAiu2/mgFj9tJhN7a 6EAdeBRwGXnWflCWcXaPWNZimmmygbVAW9AG0WZDnonySRjWqkICgk1Tj+PoefsBH7ZW GqbeL70p06UtENxex2pbMm6/RhQfavMTIbpzphaYz7Cs1dvPsM+II+22HR/AIRs3ArCr JekA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=+ADeXzCxwzK+VYiDdsT3ZwbN1HZnqpQywRYBzCUjB44=; b=ZGQmGsqDfweRLcWiuhfTfoeelydvjw0h6SajUmbiOZvPoeH8120VWQ/9ujaFd1PxkD PfqZAw4MgZjCLv7o4wrwbehFVuqvpLLke/k/Th89w9T1pqFI3Amh78IcjjhLJfBnq19M nQ5yNJo92R84JcGP/nsc6Imb9xE8FVB3ZQWCiH8jstitRolM5O10SXL0MnRXSWMBq2tV 6wSCOCPSeu6vaQYkDvS8CnFRUq+ygwbBeNySeuHpdZIP8yjwDvSlRPfKQt3PlJ905f2S zX1GVvpUvVyjPXkfZ8aUeSg/XZYgTizCfZUd0M2yzGCEMzQEUfSSSTgYVb9E1Cmogtj4 nMjA== X-Gm-Message-State: AIkVDXIScoXaXouonhoj/t6S7F1jf/cRgkU8oTQKMXr9g2ttfFx+NBYhTqZNcmRo5uAYyg== X-Received: by 10.99.185.74 with SMTP id v10mr3231240pgo.98.1484737461269; Wed, 18 Jan 2017 03:04:21 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id o12sm63039907pfg.15.2017.01.18.03.04.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jan 2017 03:04:20 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Wed, 18 Jan 2017 20:04:16 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Juri Linkov cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region In-Reply-To: Message-ID: References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 11:04:28 -0000 On Tue, 3 Jan 2017, Tino Calancha wrote: >> users will like this change in cursor positioning. > See the updated patch. Play with it and let me know how you see it. > In my case, just the first part of the patch, i.e., to run `occur' restricted > to the region is all that i need. Hi Juri, do you have any preference on the proposed patches? Regards, Tino From MAILER-DAEMON Wed Jan 18 07:58:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTpoo-0004SL-Aw for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 07:58:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45538) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTpom-0004QP-1n for emacs-devel@gnu.org; Wed, 18 Jan 2017 07:58:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTpoi-0005jt-3w for emacs-devel@gnu.org; Wed, 18 Jan 2017 07:58:24 -0500 Received: from smtp129.dfw.emailsrvr.com ([67.192.241.129]:37682) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTpoh-0005iu-Uk for emacs-devel@gnu.org; Wed, 18 Jan 2017 07:58:20 -0500 Received: from smtp29.relay.dfw1a.emailsrvr.com (localhost [127.0.0.1]) by smtp29.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTP id CD38F403A5; Wed, 18 Jan 2017 07:58:16 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp29.relay.dfw1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id 7BB81401F1; Wed, 18 Jan 2017 07:58:16 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Wed, 18 Jan 2017 07:58:16 -0500 From: Stephen Leake To: Edward John Steere Cc: Lee Hinman , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> Date: Wed, 18 Jan 2017 06:58:13 -0600 In-Reply-To: <87pojldjdt.fsf@gmail.com> (Edward John Steere's message of "Wed, 18 Jan 2017 07:31:10 +0200") Message-ID: <86k29s8qze.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.192.241.129 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 12:58:25 -0000 Edward John Steere writes: > I don't understand what's preventing us from porting this and other > aspects of CEDET right away -- other than scope creep perhaps? Yes; let's get the current core CEDET merged first. It would be best if the other useful parts of CEDET were made into ELPA packages. -- -- Stephe From MAILER-DAEMON Wed Jan 18 09:21:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTr7A-0003vO-9B for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 09:21:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTr78-0003uy-9w for emacs-devel@gnu.org; Wed, 18 Jan 2017 09:21:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTr75-0001A6-6Z for emacs-devel@gnu.org; Wed, 18 Jan 2017 09:21:26 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:58373) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTr75-00019I-08 for emacs-devel@gnu.org; Wed, 18 Jan 2017 09:21:23 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0D2LgAu3EVY/4zDSC1dGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZZehhkDBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCzQSFBgNJIh6CK0Ui0QBAQEHAiWLGYopBY98imqScwGIJoY6kg82IHgTDoVzIIktAQEB X-IPAS-Result: A0D2LgAu3EVY/4zDSC1dGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZZehhkDBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCzQSFBgNJIh6CK0Ui0QBAQEHAiWLGYopBY98imqScwGIJoY6kg82IHgTDoVzIIktAQEB X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="286354248" Received: from 45-72-195-140.cpe.teksavvy.com (HELO pastel.home) ([45.72.195.140]) by smtp.teksavvy.com with ESMTP; 18 Jan 2017 09:21:18 -0500 Received: by pastel.home (Postfix, from userid 20848) id D229162381; Wed, 18 Jan 2017 09:21:17 -0500 (EST) From: Stefan Monnier To: Tom Tromey Cc: emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master dbb29d7: Add info-lookup help for gdb-script-mode Message-ID: References: <20170117224028.8928.65103@vcs.savannah.gnu.org> <20170117224028.A68812201B9@vcs.savannah.gnu.org> <87d1flhtow.fsf@tromey.com> Date: Wed, 18 Jan 2017 09:21:17 -0500 In-Reply-To: <87d1flhtow.fsf@tromey.com> (Tom Tromey's message of "Tue, 17 Jan 2017 21:34:55 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 14:21:27 -0000 > I put it there because all other calls to info-lookup-add-help and > info-lookup-maybe-add-help are in that file, Right, but that's just because that's how it started, just like font-lock had all the rules for C, Lisp, TeX, ... in font-lock.el. We should really take them out and move them to their natural home. Stefan From MAILER-DAEMON Wed Jan 18 10:35:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTsHC-00046u-DK for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 10:35:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57706) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsH9-00045L-TY for emacs-devel@gnu.org; Wed, 18 Jan 2017 10:35:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTsH3-0002zN-1y for emacs-devel@gnu.org; Wed, 18 Jan 2017 10:35:51 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54753) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsH2-0002z6-Ks for emacs-devel@gnu.org; Wed, 18 Jan 2017 10:35:44 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2174 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTsH1-0004eT-Da; Wed, 18 Jan 2017 10:35:43 -0500 Date: Wed, 18 Jan 2017 17:35:30 +0200 Message-Id: <83h94w8jp9.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <861sw0k6ps.fsf@gnu.org> (message from Arash Esbati on Wed, 18 Jan 2017 11:22:55 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 15:35:52 -0000 > From: Arash Esbati > Cc: emacs-devel@gnu.org > Date: Wed, 18 Jan 2017 11:22:55 +0100 > > --8<---------------cut here---------------start------------->8--- > ispell-region: string52 pos (43->54), eol: 54, [in-comment]: [nil], [add-comment]: [nil], [string]: [^Übersetzugn > ] > ispell-process-line: Ispell misalignment error: > [Word from ispell pipe]: [\334bersetzugn], actual (point,line,column): (43,4,0) > --8<---------------cut here---------------end--------------->8--- Looks like some encoding issue? Can you tell what is the command line with which Hunspell is invoked? (You should be able to see it in Task Manager or in Process Explorer.) Also, is this in "emacs -Q", or do you have any customizations relevant to spell-checking? From MAILER-DAEMON Wed Jan 18 10:43:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTsOU-0008Iq-OD for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 10:43:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsOP-0008Eo-OM for emacs-devel@gnu.org; Wed, 18 Jan 2017 10:43:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTsOK-0005QM-CL for emacs-devel@gnu.org; Wed, 18 Jan 2017 10:43:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54863) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsOK-0005QI-9N; Wed, 18 Jan 2017 10:43:16 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2178 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTsOJ-0000ec-BU; Wed, 18 Jan 2017 10:43:15 -0500 Date: Wed, 18 Jan 2017 17:43:01 +0200 Message-Id: <83fukg8jcq.fsf@gnu.org> From: Eli Zaretskii To: Constantin Kulikov , Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Constantin Kulikov on Wed, 18 Jan 2017 13:03:08 +0300) Subject: Re: kill-buffer calls frame's buffer-predicate for all buffers even if the killed buffer was not shown in any window. Reply-to: Eli Zaretskii References: <83inpg9ib5.fsf@gnu.org> <83d1fn9dio.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 15:43:25 -0000 > From: Constantin Kulikov > Date: Wed, 18 Jan 2017 13:03:08 +0300 > Cc: emacs-devel > > Well I think Stefan's solution is more correct and will not break anything. I'd like to avoid any changes in behavior of kill-buffer that could possibly affect existing code. So if the change should be in kill-buffer itself, please introduce an additional optional argument that will control whether buffer visibility is considered and/or whether the frame predicates are called; with-temp-buffer could then use that new argument. This function survived the last 5 years with no real changes, and even before that most of the code which implements this logic wasn't touched. I see no reason to make such changes now in a very popular function/command, for the benefit of very specialized use cases. Thanks. From MAILER-DAEMON Wed Jan 18 11:18:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTsvz-00069K-LZ for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 11:18:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42532) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsvx-00067f-UJ for emacs-devel@gnu.org; Wed, 18 Jan 2017 11:18:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTsvu-0006ws-RH for emacs-devel@gnu.org; Wed, 18 Jan 2017 11:18:01 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55345) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTsvu-0006wo-OY; Wed, 18 Jan 2017 11:17:58 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2242 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTsvu-0000DV-72; Wed, 18 Jan 2017 11:17:58 -0500 Date: Wed, 18 Jan 2017 18:17:44 +0200 Message-Id: <83d1fk8hqv.fsf@gnu.org> From: Eli Zaretskii To: Lele Gaifax CC: emacs-devel@gnu.org In-reply-to: <87y3y9zjmd.fsf@metapensiero.it> (message from Lele Gaifax on Tue, 17 Jan 2017 18:22:50 +0100) Subject: Re: Fix typo in flymake.el of current emacs-25 branch Reply-to: Eli Zaretskii References: <87y3y9zjmd.fsf@metapensiero.it> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 16:18:02 -0000 > From: Lele Gaifax > Date: Tue, 17 Jan 2017 18:22:50 +0100 > > this is a micro fix to flymake.el::flymake-check-patch-master-file-buffer doc > string. > > As English is not my native lang, I cannot tell whether the touched sentence > should really start with an "If" or "When" instead of... "Whether" :-) Thanks, I fixed both typos for the next release. From MAILER-DAEMON Wed Jan 18 11:53:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTtUY-0001aN-Ao for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 11:53:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50803) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTtUW-0001YS-99 for emacs-devel@gnu.org; Wed, 18 Jan 2017 11:53:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTtUS-0006aO-DZ for emacs-devel@gnu.org; Wed, 18 Jan 2017 11:53:44 -0500 Received: from mout.gmx.net ([212.227.17.22]:64665) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTtUS-0006Yz-4k for emacs-devel@gnu.org; Wed, 18 Jan 2017 11:53:40 -0500 Received: from detlef.gmx.de ([62.227.213.39]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LgqEs-1co7XD18VS-00oGRy; Wed, 18 Jan 2017 17:52:49 +0100 From: Michael Albinus To: Phillip Lord Cc: emacs-devel@gnu.org Subject: ert-support.el Date: Wed, 18 Jan 2017 17:52:46 +0100 Message-ID: <87r3402tup.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:dESzdKoMzPM7awEsclleiFnZsoIAQVm1ROW+vyUe7P6JPUO0j43 coKV96myU8itqyZfS4UsSea9a2zqe5lM/seR7jAEB0+bZsIBCzzHygqDNRvP6Ke1VcfbLtz xoQAjX3SD2HU7K+11ZiMV4RToowgZBI+Y+qLF28W7PAgAGnI9aCSDppiYi7eoSBh9xP8/fL awdBGziDaIXcwOwY2EGsw== X-UI-Out-Filterresults: notjunk:1;V01:K0:uijr32eky4A=:2353pZUiVG4anQAsvc10wr 9zggeVlLSy6qk82QwiJSWeO46JAvTj0Z0GSHrmvk/67VUBlP/rDwZBUAyqITkyrVJwgz/xAV0 02qWzzIWDkbzho2ssMdpFtVUjC7XZ2/paFAYsUfTzITf9qPuQC91VJgC8i7ZlHqbARKiU7bTW EZ2mdEDMBWJE8rKZgKpCDFag47+ZnIp2sA3Hp1SM8EU1FZmCAC+apeLW7q/2z1qNkc8divsOB N7By/KaHKqoFZrBr7ybFOzOUJQpPQte8Hhv7ERqIX4pu92q8sIN9PeUGQtz6F77nAt0XtOg4s h4gfR/JujzynRaAg62Jo8yopXmZ6JrM2eZctLnklH5hAzCifFrWUrlIOxt+ROLdg5HIr7iGSE +ZWcmyo27Zr1MMmxcYAKdr7ot8zREhvIZUprfuO2MplnVmPG6d6gVXXuaB6gQD0JLN5weaoSo /cLfp5GhyxLsG5tVVX2xXDOqCEMYVu4B0eoPVkG2jdjKuKTgmTXl1glviBBgfMRixXKFhpipM 9hvj+j5H7TUAUVqUmUf516lwPGhXIgWsrXkHbhNzI7sQW6UQkTif5o+vUh461PvRAgcksnj8e 0FDvOx1Cb+bqMocqMLeaKpSHHvQCmqB3eEyaNV62Ae/qXbCxiFcBYaf1RCndBltrzxmjXkjyk 30K2Z/JGBl96/qHfZhBre5778mehyZK9dIqcuVgZ1agD+GzCEpEDkXZviJJUNewv1mjGvQDSa SHSLX5BAs3mFWpbfmOn6raCIV8LFCYYFeUeOqb0uRlk2WgnZXgjeRyb4NMKi6Uk+doU6vUUjJ XSBLho2OteFopBO5WqOD6fIA1ZGZ/sAqaD/HZ/b2YPepbLyZLXB/NyQMRxy3YUJtXNRAin1Ti mqr7hLSMjX26IADBjeO+5YL8WPgO1+mZsvvdZggRulfQUz/Fbj/UWzqS3zDWLbErhrU8OwbO0 aC9GNIV95nl9M/vaE3muyBkx9LVL4nabFvxr16G6H9+HA043H1XMZrFj9Y0TLAiQJZi5YKpHJ 2hHUUvv5M8Z3tz8WMOU0y9wcyiq5UDkrHJkrMoL/m5rlFPAKv+pI0mh8H3AF3umvuw== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 16:53:45 -0000 Hi Phillip, I've committed some few fixes for ert-support.el, for better support of subdirectories. While working on this, I don't understand what `ert-support-package-install' is good for. It installs a package into a temporary location, but afterwards this installation is not used anymore. What do I miss? Best regards, Michael. From MAILER-DAEMON Wed Jan 18 12:48:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTuLz-00069N-Hq for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 12:48:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTuLx-00067a-OF for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:48:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTuLu-0005QC-MM for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:48:57 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:47402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTuLu-0005Pn-Gb for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:48:54 -0500 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0IHmmwa030965; Wed, 18 Jan 2017 12:48:48 -0500 Received: by pastel.home (Postfix, from userid 20848) id 3AD64601EB; Wed, 18 Jan 2017 12:48:53 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Vibhav Pant Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch Message-ID: References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> Date: Wed, 18 Jan 2017 12:48:53 -0500 In-Reply-To: <20170118171311.A84EA220125@vcs.savannah.gnu.org> (Vibhav Pant's message of "Wed, 18 Jan 2017 17:13:11 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5923=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5923> : inlines <5633> : streams <1729636> : uri <2360200> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 17:48:58 -0000 > * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch > Fgethash type checks the provided table object, which is unnecessary > for compiled bytecode. While it's true that we can cause a core dump of Emacs if we feed it an invalid .elc file, that's a "feature" I'd rather shrink rather than generalize. Stefan From MAILER-DAEMON Wed Jan 18 12:58:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTuVK-0005jo-Mi for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 12:58:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40833) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTuVF-0005fU-8S for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:58:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTuV9-0000oz-VP for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:58:33 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56781) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTuV9-0000ot-SS for emacs-devel@gnu.org; Wed, 18 Jan 2017 12:58:27 -0500 Received: from p54aceb6c.dip0.t-ipconnect.de ([84.172.235.108]:49922 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cTuV9-0000wT-2Z; Wed, 18 Jan 2017 12:58:27 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> Date: Wed, 18 Jan 2017 18:57:35 +0100 In-Reply-To: <83h94w8jp9.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 18 Jan 2017 17:35:30 +0200") Message-ID: <86fukg5jzk.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 17:58:36 -0000 Eli Zaretskii writes: > Looks like some encoding issue? Can you tell what is the command line > with which Hunspell is invoked? `M-x list-processes RET' says: c:/msys64/mingw64/bin/hunspell.exe -a -d de_DE -i UTF-8 Looks ok to me (-t flag for TeX missing, but that should not be relevant, I think) > Also, is this in "emacs -Q", or do you have any customizations > relevant to spell-checking? My first try was with "emacs -q", now I tried with "emacs -Q", same result. My customizations were not involved. Best, Arash From MAILER-DAEMON Wed Jan 18 13:19:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTupx-0005k7-8X for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 13:19:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTupu-0005iH-IF for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:19:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTupt-0000c7-O7 for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:19:54 -0500 Received: from mail-yw0-x234.google.com ([2607:f8b0:4002:c05::234]:34195) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTupt-0000bw-In for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:19:53 -0500 Received: by mail-yw0-x234.google.com with SMTP id w75so14293779ywg.1 for ; Wed, 18 Jan 2017 10:19:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=nhHYfHf7Vq5VQ5XGOhgOqugA4Etfv9LNLT7jx1sOu7Y=; b=SvBd456GAEUr9uozbHXU5n1NPhx9zGDeQSEPYk1c8CbvBO/QIsCRr7c7EkWdg+xlBy GdIZ3tvB9hFIv1dcu1O6oC4T4Jr55OOMW3bKK415vDPTmZFxuMVDI8byamr+PTAhcTIE uAB9qlTuOPDIdl2nWi34IXd1H+W3bm/BeHe/QipV3TplcrF1MfNfcuRe+5ejdrotV9/P 4oIElvOq0zxIBCtUYFPx92OGCB9BGspo7QEQPqIw9avhwo/WSkALMOmwbxAuBldq9cNz l9bWPxEycF4JSqkMIoO5QQG1+tEDO7xTd5KmFOKXOC97FAj4CXsZSbPGjPUg9LgJD9xD vdZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=nhHYfHf7Vq5VQ5XGOhgOqugA4Etfv9LNLT7jx1sOu7Y=; b=JQ+4CoNPdMMbKqzpj8rctHKaEAnyw1OZLwT6ePzWsmNX6FW8MQbgdjPKMi46m48IsA Q0ktFcWnmkn3LgETZWJ1/4wkcJCtxppma6RMOoTv9tgvAk6hNH898P4ugVy/a1FkGuYr 8WdbjkAf/3pUuOXRHu4oxDFyMTvWVg58mqUWgWtaJvKq1iRpJ5kwoI9vQY5UQXp+wMIq DbXpiBcXqBmmnXvIfeG5bA6baW6MLqaRz9+rvWEFR8JNf9bIz0BYqjffHcXdFNirwwi0 pMZb0NFIV6JMevX+Uuvxgp7xF7hiPkjq/xNeT+OYyiuY1tfwmGsku1KUW1rg5hRDB8Yt +h6Q== X-Gm-Message-State: AIkVDXIA0IBRji8znYuJ7iC9DeC3FedFalnzrnXGR7y2twD4HEkdd9xuHxFPQVEoboS3h3RCnCwtwtOTn8kXOA== X-Received: by 10.129.174.90 with SMTP id g26mr3931584ywk.25.1484763591259; Wed, 18 Jan 2017 10:19:51 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Wed, 18 Jan 2017 10:19:50 -0800 (PST) Received: by 10.129.153.77 with HTTP; Wed, 18 Jan 2017 10:19:50 -0800 (PST) In-Reply-To: References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> From: Vibhav Pant Date: Wed, 18 Jan 2017 23:49:50 +0530 Message-ID: Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch To: Stefan Monnier Cc: emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=f403045f719a6ebb840546627630 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 18:19:55 -0000 --f403045f719a6ebb840546627630 Content-Type: text/plain; charset=UTF-8 Will push a fix soon, thanks. On 18 Jan 2017 11:18 p.m., "Stefan Monnier" wrote: > > * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch > > Fgethash type checks the provided table object, which is unnecessary > > for compiled bytecode. > > While it's true that we can cause a core dump of Emacs if we feed it an > invalid .elc file, that's a "feature" I'd rather shrink rather > than generalize. > > > Stefan > --f403045f719a6ebb840546627630 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Will push a fix soon, thanks.

On 18 Jan 2017 11:18 p.m., "Stefan= Monnier" <monnier@iro.= umontreal.ca> wrote:
>=C2=A0 =C2=A0 =C2=A0* src/bytecode.c: (exec_byte_code) Use hash= _lookup for Bswitch
>=C2=A0 =C2=A0 =C2=A0Fgethash type checks the provided table object, whi= ch is unnecessary
>=C2=A0 =C2=A0 =C2=A0for compiled bytecode.

While it's true that we can cause a core dump of Emacs if we feed it an=
invalid .elc file, that's a "feature" I'd rather shrink r= ather
than generalize.


=C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan
--f403045f719a6ebb840546627630-- From MAILER-DAEMON Wed Jan 18 13:21:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTurF-0006cU-KK for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 13:21:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47286) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTurC-0006aA-Qs for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:21:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTur8-00013e-T4 for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:21:14 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57110) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTur8-00013W-Q6 for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:21:10 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2582 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTur7-0002yU-1S; Wed, 18 Jan 2017 13:21:10 -0500 Date: Wed, 18 Jan 2017 20:20:53 +0200 Message-Id: <8337gg8c1m.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <86fukg5jzk.fsf@gnu.org> (message from Arash Esbati on Wed, 18 Jan 2017 18:57:35 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 18:21:15 -0000 > From: Arash Esbati > Cc: emacs-devel@gnu.org > Date: Wed, 18 Jan 2017 18:57:35 +0100 > > Eli Zaretskii writes: > > > Looks like some encoding issue? Can you tell what is the command line > > with which Hunspell is invoked? > > `M-x list-processes RET' says: > > c:/msys64/mingw64/bin/hunspell.exe -a -d de_DE -i UTF-8 > > Looks ok to me (-t flag for TeX missing, but that should not be > relevant, I think) > > > Also, is this in "emacs -Q", or do you have any customizations > > relevant to spell-checking? > > My first try was with "emacs -q", now I tried with "emacs -Q", same > result. My customizations were not involved. Very strange. What version of Emacs is that? From MAILER-DAEMON Wed Jan 18 13:39:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTv9K-0003xW-RH for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 13:39:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54006) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTv9I-0003vX-Gc for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:39:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTv9H-0001dL-Qk for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:39:56 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57434) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTv9H-0001d9-OF for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:39:55 -0500 Received: from p54aceb6c.dip0.t-ipconnect.de ([84.172.235.108]:50313 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cTv9G-0002WD-RM; Wed, 18 Jan 2017 13:39:55 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> Date: Wed, 18 Jan 2017 19:39:41 +0100 In-Reply-To: <8337gg8c1m.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 18 Jan 2017 20:20:53 +0200") Message-ID: <86inpcmcuq.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 18:39:57 -0000 Eli Zaretskii writes: > Very strange. What version of Emacs is that? 25.1.91.1 I build Emacs myself, the value of `system-configuration-options' is: "--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --with-jpeg --with-xpm --with-png --with-tiff --with-rsvg --with-xml2 --with-gnutls --with-xft --without-imagemagick --without-dbus 'CFLAGS=-O3 -g0 -pipe' CPPFLAGS=-DNDEBUG 'LDFLAGS=-s -Wl,-s'" Best, Arash From MAILER-DAEMON Wed Jan 18 13:53:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTvMc-0003yv-St for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 13:53:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58926) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTvMb-0003xw-3I for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:53:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTvMa-0008Dl-B2 for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:53:41 -0500 Received: from mail-oi0-x229.google.com ([2607:f8b0:4003:c06::229]:35872) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTvMa-0008DN-5s for emacs-devel@gnu.org; Wed, 18 Jan 2017 13:53:40 -0500 Received: by mail-oi0-x229.google.com with SMTP id u143so12000628oif.3 for ; Wed, 18 Jan 2017 10:53:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=4XAWW89Za36LkStlN4WOxaGUYTGb/lbWIM9F37we9fQ=; b=XB4B1tut1HVNqDp1CEJ775SZEZc/4XCuSAZNqkIku6jzNhJ3kNk6OA0fZUdcMjvCtw JckAJKkCC8g7mnl/ZJOuO5FMPB2Xz9FuJS5C2CG1zehHFXZvYpzItSmcFsJLjFtFkMQI xlTt3rYGoLJnkQ6eTEXs3l/9VuuTvYZ8fJZ16cMdykg+m0Aidl4qDSMmCF3582TmdBFc RGRnB+saUuEgcM9oSQhqLgCijdN8wWyk4pAV/8C/NbdcjzRJ7sVRmvlsT0sagQuRAhNv Rnmb6vOVV3lZNUir9Ai/uIhQOR0ihufHXjLj953Tk5M8N0Vhm7LbEal6uM4DXQSsLvhM IGDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=4XAWW89Za36LkStlN4WOxaGUYTGb/lbWIM9F37we9fQ=; b=PwX+XoKiJY7jclomW7CShN6cyb8DucvBy4vqVGwf/kaRxmSayNlavxZ0lcCyGdYZRY g8YxX0dPfPzt8KLdrv7n3LZlvJfNNlrg+QaoMXbbCUg0KVjcA2VXFLCTRPVrX/Zu6VyA zsZcxX2D2jZ1l5CYRvFLiYAoeAjl1mhfkjrD+MDBltavANU5/mTu1/eRBbbxBjyoRpqf 1rydqdNuzw3dkjmoeLZj764FGkI2DR14S0GsxMtlyvULKICzXYssm9kQIzPmAYSnHeja URqhrE9PuoiZnLVjl4sQFVemOeLlD4GbSiGIsVJCZpoK/ZfvbQAjEFwXTRZ2k5gDrTtI iPBQ== X-Gm-Message-State: AIkVDXKivs6dxhCv0zd7QqG5d+ZrCXLEA4kJr/fiiL54fQUYB7FtkLD3prm6Nmxy3rUFYmUpmiNIy09BcyA/yg== X-Received: by 10.202.235.215 with SMTP id j206mr2505240oih.74.1484765618859; Wed, 18 Jan 2017 10:53:38 -0800 (PST) MIME-Version: 1.0 From: Philipp Stephani Date: Wed, 18 Jan 2017 18:53:22 +0000 Message-ID: Subject: Patch to have let and let* test that the arglist is a list To: Emacs developers Content-Type: multipart/mixed; boundary=001a113ce9004a29d6054662ef2d X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 18:53:42 -0000 --001a113ce9004a29d6054662ef2d Content-Type: multipart/alternative; boundary=001a113ce9004a29d1054662ef2b --001a113ce9004a29d1054662ef2b Content-Type: text/plain; charset=UTF-8 Hi, I've attached a small patch for let and let* to make them check for the type of the argument list. Philipp --001a113ce9004a29d1054662ef2b Content-Type: text/html; charset=UTF-8
Hi,

I've attached a small patch for let and let* to make them check for the type of the argument list.

Philipp
--001a113ce9004a29d1054662ef2b-- --001a113ce9004a29d6054662ef2d Content-Type: text/plain; charset=US-ASCII; name="0001-Check-that-variable-lists-are-actually-lists.txt" Content-Disposition: attachment; filename="0001-Check-that-variable-lists-are-actually-lists.txt" Content-Transfer-Encoding: base64 Content-ID: <159b2ed0ad2f6eb8e921> X-Attachment-Id: 159b2ed0ad2f6eb8e921 RnJvbSA4NGFkNTA1MmZkNjUwNTNhNjY1MjE5ODk3ODgzZmRlZTg4YTM0MDljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFdlZCwgMTggSmFuIDIwMTcgMTk6NDk6NTggKzAxMDAKU3ViamVjdDogW1BBVENIXSBDaGVj ayB0aGF0IHZhcmlhYmxlIGxpc3RzIGFyZSBhY3R1YWxseSBsaXN0cwoKJ2xldCcgYW5kICdsZXQq JyBkb2N1bWVudCB0aGF0IHRoZWlyIGZpcnN0IGFyZ3VtZW50IGhhcyB0byBiZSBhIGxpc3QsCmJ1 dCBkb24ndCBjaGVjayBmb3IgdGhhdDsgaW5zdGVhZCwgdGhleSBhbGxvdyAoYW5kIHNpbGVudGx5 IGlnbm9yZSkKb3RoZXIgdHlwZXMuICBJbnRyb2R1Y2UgYW4gZXhwbGljaXQgdHlwZSBjaGVjay4K Ciogc3JjL2V2YWwuYyAoRmxldCwgRmxldFgpOiBDaGVjayB0aGF0IHRoZSB2YXJpYWJsZSBsaXN0 IGlzIGluZGVlZCBhCmxpc3QuCiogdGVzdC9zcmMvZXZhbC10ZXN0cy5lbDogQWRkIHVuaXQgdGVz dHMuCi0tLQogc3JjL2V2YWwuYyAgICAgICAgICAgICB8ICAyICsrCiB0ZXN0L3NyYy9ldmFsLXRl c3RzLmVsIHwgMTAgKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXggMWY4ZDQwOTkzMi4u YzA1YzhkOGY4ZCAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5jCkBAIC04 NTcsNiArODU3LDcgQEAgdXNhZ2U6IChsZXQqIFZBUkxJU1QgQk9EWS4uLikgICovKQogICBsZXhl bnYgPSBWaW50ZXJuYWxfaW50ZXJwcmV0ZXJfZW52aXJvbm1lbnQ7CiAKICAgdmFybGlzdCA9IFhD QVIgKGFyZ3MpOworICBDSEVDS19MSVNUICh2YXJsaXN0KTsKICAgd2hpbGUgKENPTlNQICh2YXJs aXN0KSkKICAgICB7CiAgICAgICBRVUlUOwpAQCAtOTE3LDYgKzkxOCw3IEBAIHVzYWdlOiAobGV0 IFZBUkxJU1QgQk9EWS4uLikgICovKQogICBVU0VfU0FGRV9BTExPQ0E7CiAKICAgdmFybGlzdCA9 IFhDQVIgKGFyZ3MpOworICBDSEVDS19MSVNUICh2YXJsaXN0KTsKIAogICAvKiBNYWtlIHNwYWNl IHRvIGhvbGQgdGhlIHZhbHVlcyB0byBnaXZlIHRoZSBib3VuZCB2YXJpYWJsZXMuICAqLwogICBl bHQgPSBGbGVuZ3RoICh2YXJsaXN0KTsKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL2V2YWwtdGVzdHMu ZWwgYi90ZXN0L3NyYy9ldmFsLXRlc3RzLmVsCmluZGV4IGExZmU4Y2NkN2QuLjk1NjU1ZWFjODIg MTAwNjQ0Ci0tLSBhL3Rlc3Qvc3JjL2V2YWwtdGVzdHMuZWwKKysrIGIvdGVzdC9zcmMvZXZhbC10 ZXN0cy5lbApAQCAtNDcsNCArNDcsMTQgQEAKICAgICAobGV0ICgoYnl0ZS1jb21waWxlLWRlYnVn IHQpKQogICAgICAgKHNob3VsZC1lcnJvciAoZXZhbCBgKGJ5dGUtY29tcGlsZSAobGFtYmRhICxh cmdzKSkgdCkpKSkpCiAKKworKGRvbGlzdCAoZm9ybSAnKGxldCBsZXQqKSkKKyAgKGRvbGlzdCAo YXJnICcoMSAiYSIgW2FdKSkKKyAgICAoZXZhbAorICAgICBgKGVydC1kZWZ0ZXN0ICwoaW50ZXJu IChmb3JtYXQgImV2YWwtdGVzdHMtLSVzLS0lcyIgZm9ybSAodHlwZS1vZiBhcmcpKSkgKCkKKyAg ICAgICAgLChmb3JtYXQgIkNoZWNrIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGAlcycgY2Fu bm90IGJlIGEgJXMiCisgICAgICAgICAgICAgICAgIGZvcm0gKHR5cGUtb2YgYXJnKSkKKyAgICAg ICAgKHNob3VsZC1lcnJvciAoLGZvcm0gLGFyZykgOnR5cGUgJ3dyb25nLXR5cGUtYXJndW1lbnQp KQorICAgICB0KSkpCisKIDs7OyBldmFsLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi4xMS4wLjQ4 My5nMDg3ZGE3YjdjLWdvb2cKCg== --001a113ce9004a29d6054662ef2d-- From MAILER-DAEMON Wed Jan 18 14:16:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTviK-0006ZO-GK for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 14:16:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35310) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTviH-0006Xh-Tw for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:16:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTviE-0007ul-RK for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:16:06 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57910) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTviE-0007ud-O4 for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:16:02 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2637 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTviD-0003IR-8u; Wed, 18 Jan 2017 14:16:02 -0500 Date: Wed, 18 Jan 2017 21:15:45 +0200 Message-Id: <83wpds6uxq.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <86inpcmcuq.fsf@gnu.org> (message from Arash Esbati on Wed, 18 Jan 2017 19:39:41 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 19:16:07 -0000 > From: Arash Esbati > Cc: emacs-devel@gnu.org > Date: Wed, 18 Jan 2017 19:39:41 +0100 > > Eli Zaretskii writes: > > > Very strange. What version of Emacs is that? > > 25.1.91.1 Then I'm out of ideas: I downloaded the MSYS2 Hunspell 1.6, and couldn't reproduce this with Emacs 25.1.91. So the only other factor I could think of is the dictionary you are using (although I cannot imagine how that could cause such problems), because otherwise I simply don't see any problems with this combination. Sorry. From MAILER-DAEMON Wed Jan 18 14:20:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTvmG-0008Ra-B1 for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 14:20:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTvmB-0008Ns-GA for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:20:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTvm7-0001Km-RX for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:20:07 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57971) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTvm7-0001Ke-OS for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:20:03 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2642 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTvm6-0003Xp-Ai; Wed, 18 Jan 2017 14:20:03 -0500 Date: Wed, 18 Jan 2017 21:19:45 +0200 Message-Id: <83vatc6ur2.fsf@gnu.org> From: Eli Zaretskii To: arash@gnu.org CC: emacs-devel@gnu.org In-reply-to: <83wpds6uxq.fsf@gnu.org> (message from Eli Zaretskii on Wed, 18 Jan 2017 21:15:45 +0200) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 19:20:10 -0000 > Date: Wed, 18 Jan 2017 21:15:45 +0200 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org > > > From: Arash Esbati > > Cc: emacs-devel@gnu.org > > Date: Wed, 18 Jan 2017 19:39:41 +0100 > > > > Eli Zaretskii writes: > > > > > Very strange. What version of Emacs is that? > > > > 25.1.91.1 > > Then I'm out of ideas: Actually, one other idea: do you have any LC_* variables in the environment? (MinGW programs shouldn't pay attention, but maybe MinGW64/MSYS2 guys did something so they do.) From MAILER-DAEMON Wed Jan 18 14:55:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTwKA-0005j0-Oj for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 14:55:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTwK8-0005gr-0y for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:55:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTwK4-0006uF-83 for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:55:12 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58384) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTwK4-0006u5-5Q for emacs-devel@gnu.org; Wed, 18 Jan 2017 14:55:08 -0500 Received: from p54aceb6c.dip0.t-ipconnect.de ([84.172.235.108]:50395 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cTwK2-0005Og-RP; Wed, 18 Jan 2017 14:55:07 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> <83vatc6ur2.fsf@gnu.org> Date: Wed, 18 Jan 2017 20:54:29 +0100 In-Reply-To: <83vatc6ur2.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 18 Jan 2017 21:19:45 +0200") Message-ID: <86bmv4m9e2.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 19:55:12 -0000 Eli Zaretskii writes: > Actually, one other idea: do you have any LC_* variables in the > environment? (MinGW programs shouldn't pay attention, but maybe > MinGW64/MSYS2 guys did something so they do.) Many thanks for taking your time and checking! locale returns: LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_ALL= Do you have other settings? Best, Arash From MAILER-DAEMON Wed Jan 18 15:06:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTwUx-0000w3-A4 for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 15:06:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTwUv-0000tp-6x for emacs-devel@gnu.org; Wed, 18 Jan 2017 15:06:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTwUs-0004E9-7Q for emacs-devel@gnu.org; Wed, 18 Jan 2017 15:06:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58542) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTwUs-0004E1-4d for emacs-devel@gnu.org; Wed, 18 Jan 2017 15:06:18 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2671 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cTwUq-00061x-IC; Wed, 18 Jan 2017 15:06:17 -0500 Date: Wed, 18 Jan 2017 22:05:59 +0200 Message-Id: <83shog6sm0.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <86bmv4m9e2.fsf@gnu.org> (message from Arash Esbati on Wed, 18 Jan 2017 20:54:29 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> <83vatc6ur2.fsf@gnu.org> <86bmv4m9e2.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 20:06:22 -0000 > From: Arash Esbati > Cc: emacs-devel@gnu.org > Date: Wed, 18 Jan 2017 20:54:29 +0100 > > > Actually, one other idea: do you have any LC_* variables in the > > environment? (MinGW programs shouldn't pay attention, but maybe > > MinGW64/MSYS2 guys did something so they do.) > > Many thanks for taking your time and checking! locale returns: > > LANG=en_US.UTF-8 > LC_CTYPE="en_US.UTF-8" > LC_NUMERIC="en_US.UTF-8" > LC_TIME="en_US.UTF-8" > LC_COLLATE="en_US.UTF-8" > LC_MONETARY="en_US.UTF-8" > LC_MESSAGES="en_US.UTF-8" > LC_ALL= > > Do you have other settings? Is this in the MSYS Bash? I meant inside Emacs. I have none of these. Windows runtime ignores these variables, but maybe MSYS2 Hunspell doesn't. What happens if you set LC_ALL=C and try your recipe again? From MAILER-DAEMON Wed Jan 18 16:25:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTxjT-000837-QK for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 16:25:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTxjQ-00081D-Pt for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:25:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTxjN-0002i3-Iw for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:25:24 -0500 Received: from ocolin.muc.de ([193.149.48.4]:62108 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cTxjN-0002fS-8V for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:25:21 -0500 Received: (qmail 12278 invoked by uid 3782); 18 Jan 2017 21:25:19 -0000 Received: from acm.muc.de (p548C6FB5.dip0.t-ipconnect.de [84.140.111.181]) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 18 Jan 2017 22:25:18 +0100 Received: (qmail 6102 invoked by uid 1000); 18 Jan 2017 21:25:04 -0000 Date: Wed, 18 Jan 2017 21:25:04 +0000 To: Philipp Stephani Cc: Emacs developers Subject: Re: Patch to have let and let* test that the arglist is a list Message-ID: <20170118212504.GG4108@acm.fritz.box> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 21:25:25 -0000 On Wed, Jan 18, 2017 at 06:53:22PM +0000, Philipp Stephani wrote: > Hi, > I've attached a small patch for let and let* to make them check for the > type of the argument list. It's worth noting that the byte compiler already checks this. I think the patch is a good idea. > Philipp -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Wed Jan 18 16:57:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTyEL-0003Qf-44 for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 16:57:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44334) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTyEI-0003PW-TP for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:57:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTyEE-00063v-Sp for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:57:18 -0500 Received: from randomsample.de ([5.45.97.173]:34030) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTyEE-0005yf-JP for emacs-devel@gnu.org; Wed, 18 Jan 2017 16:57:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=N3Rx612yVQPivcUVDAmg4sZIW/u/TUW7TpPWxtc7n9k=; b=pR1fKHvn8PL+yq1Oy4pfUpJC7lb17TLA+/twr62ejdEP5kAWKAD+q3pHxdWXBj5ZiM127slDkNClb6Wj/pVch6cxo+Ij2X84y+Eq9eDJkdW5WyjH4fUnztKffSrS3wGF; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTyE7-0004tT-E6; Wed, 18 Jan 2017 22:57:07 +0100 From: David Engster To: Edward John Steere Cc: Lee Hinman , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87pojldjdt.fsf@gmail.com> (Edward John Steere's message of "Wed, 18 Jan 2017 07:31:10 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Wed, 18 Jan 2017 22:57:03 +0100 Message-ID: <877f5suj4g.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 21:57:19 -0000 Edward John Steere writes: > I don't understand what's preventing us from porting this and other > aspects of CEDET right away -- other than scope creep perhaps? I would > advise against using upstream as a fallback though because: > a) it's likely to receive even less attention after the merge; > b) most of it doesn't work with the latest Emacs because of the changes > to EIEIO in core; I'm happy to hear that Java support works for people. Last time I tried it didn't even parse generics, but I don't code much in Java anymore so I haven't tried recently. My worry is indeed feature creep. The CEDET merge fell behind because I couldn't keep up with the changes in Emacs, most notably the switch to git and the extensive changes in EIEIO. The code base is very large and complicated, so I'm against adding more code to Emacs core. Instead, we should try to make it more modular and put support for certain languages and project types into separate ELPA projects. This would also make it easier to share maintainership of CEDET. -David From MAILER-DAEMON Wed Jan 18 17:06:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cTyMo-00087L-QD for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 17:06:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48615) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTyMm-00085Z-Eq for emacs-devel@gnu.org; Wed, 18 Jan 2017 17:06:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTyMj-0004wy-8m for emacs-devel@gnu.org; Wed, 18 Jan 2017 17:06:04 -0500 Received: from randomsample.de ([5.45.97.173]:34269) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cTyMi-0004vd-Vl; Wed, 18 Jan 2017 17:06:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=Xlmb6YsFpMdmSGcRMy9mZgfmyVLq03//cFukP85QSCk=; b=h/lGO4gzcJmD4D5xw8ZV/WCG/XNvkeSbflus30N+SXu+V+ZhZIRtghbp0uKtlJRjwkg1ohclSWWRb1LZarVIckUoAySRJDl4zTSqkT+8fsSCC1sqZVHdROvcFNkHSOeG; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cTyMg-0004y3-Oy; Wed, 18 Jan 2017 23:05:58 +0100 From: David Engster To: Edward Steere Cc: Stephen Leake , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: (Edward Steere's message of "Wed, 18 Jan 2017 12:12:10 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Wed, 18 Jan 2017 23:05:57 +0100 Message-ID: <8737gguipm.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2017 22:06:05 -0000 Edward Steere writes: > Given that we might be moving from upstream entirely it might be worth > it to keep the commit history if we can though. I know that git won't > make is easy. The problem with using git is that you will have to edit each commit anyway, at least that's my experience. You usually need to fix up the ChangeLog entries in the commit message to conform with the Emacs file layout. Also, one needs to remove entries which touch files that are not in Emacs, or which are from authors who haven't signed papers with the FSF. > If we do go with patching though, and the changes are going to appear > in the changelog then how are we going to go about doing that? Would > we use the add-change-log command on all of the commits since the last > merge? > > One disadvantage of all of this is that git blame results would be > more difficult to interpret because the change and author would be > documented elsewhere. Things have gotten easier since the actual ChangeLog files get generated from the commit message. I would try to manually commit the changes with proper commit messages, so we would retain the history with the exception of the date of the change, which would be from the day of the merge. -David From MAILER-DAEMON Wed Jan 18 22:14:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU3B8-0005Xu-1T for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 22:14:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38492) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU3B4-0005WB-Tz for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:14:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU3B0-0005Fb-11 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:14:18 -0500 Received: from mail-io0-x232.google.com ([2607:f8b0:4001:c06::232]:36561) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU3Az-0005CO-S5 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:14:13 -0500 Received: by mail-io0-x232.google.com with SMTP id j13so28126834iod.3 for ; Wed, 18 Jan 2017 19:14:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=JPq7cZ7zWlThKNE+4Xmbp9/Ebl5zlVxXKG4zHT6JoZE=; b=eTcqYIUEtSiJgmF0HSLlxfeBUTKzyDNTvxD4q4TDz3pls5zEIl6uh0yYxrjLYlL8cl cy5Z239dm15A3csxpYZVWIvKcWpVApCCMgTwN/efwQp24URmvGtR54uEgs2lxsWeW85w s15lcnDIlJhis//rJ5amUcCvP//ncSN/BKuceVqsHIOWtAMG+oUT7Ww8ktNMNZ4qdYsb cwg+kjybNme89buCGLdnpZkxCsp5mbT6Ow01HR1OzNMQJo4nyKKsZXUK6zJ4Sk7r/SyS mcb2jifkNqslXDvlgpXz2NnBVqSphyjBfrVjN008wiBFlO31t30IDlryFOROEtHaBhb4 ElTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=JPq7cZ7zWlThKNE+4Xmbp9/Ebl5zlVxXKG4zHT6JoZE=; b=npOobctc4ZVdH4F0vHpN4cTB8NXORAYR9fcF8B+4SZeU/gqTvqhT6yRn0qF2Q4lvRt OwNIzdTBD4SuGgY4AKjxaGA2Q50ojn/tb7g/2EN8lFXJIpwlSgal5NZDRzvwmPvNGtyU i+p7jnav3+GosD59tfJExpGoN4bnYHJQqLtU8ss0Tw5576MO7JzsJ55UANy9tfzkipv5 yMNNDnNXgOSZldwpQo2mWjws8PPs1cF+T3BXhsuawaoevHlMNbA/gjZr1ipzhtChz0Ay iyrD5zI+J6PmPNQOy5zWtjTFgxpahK0b3U3zM2zgVfoYG9D7vQ1+G3Rc9RvDGVr1p+8u Twjg== X-Gm-Message-State: AIkVDXIxu9sQQTZ8JPj2v/Bl2TFl4XT4l28aJhRZC8dKzObTikM5psZcouYv0gxd0SX0GA== X-Received: by 10.107.185.65 with SMTP id j62mr6235451iof.3.1484795651586; Wed, 18 Jan 2017 19:14:11 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id y42sm2133674ioi.21.2017.01.18.19.14.10 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 19:14:10 -0800 (PST) Sender: Noam Postavsky From: npostavs@users.sourceforge.net To: emacs-devel@gnu.org Subject: Comments for bug#25132 fix? (Making with-silent-modifications buffer-local) References: <4aa23451-b6cd-88b0-369e-99f6fe5f2175@gmail.com> <87y3yn2x4j.fsf@users.sourceforge.net> <87eg0e36un.fsf@users.sourceforge.net> Date: Wed, 18 Jan 2017 22:15:18 -0500 In-Reply-To: <87eg0e36un.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net's message of "Sat, 07 Jan 2017 16:20:16 -0500") Message-ID: <87lgu7wxix.fsf_-_@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 03:14:20 -0000 Could someone comment on the patches I posted to Bug#25132? https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25132#22 From MAILER-DAEMON Wed Jan 18 22:54:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU3nW-0006iR-Ch for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU3nU-0006hp-3C for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU3nR-0008T2-2A for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:00 -0500 Received: from mail-pf0-x22b.google.com ([2607:f8b0:400e:c00::22b]:36546) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU3nQ-0008QM-S0 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:53:56 -0500 Received: by mail-pf0-x22b.google.com with SMTP id 189so9683555pfu.3 for ; Wed, 18 Jan 2017 19:53:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=U235+YaBwAxiyLbhOHFuNNFMQ07u83Vblwcp5KH8TLs=; b=iKF8KFsxitLkkoIK6tM/japxBPc95QC5BYRK4wPx0k3AOdVuN0exoBJLhn6mHJBVRW G3OSc6JzWWbC+ML7Jf82Fw2B9XyeklaKlz1MAsIIkvg12it0dorjwEj4THsgbSzqIKyL DV2i2sgXXzkLiZhGNWsVdmAysGgvPGVPorA+Gmu5RHXbZH6CFr6cLbfdQsXnzMgTFAZa He1n/otXbLfQsHW0rMOi57qrWOt1JQ+UDpd9L+ce7Nxs0szMiVQ9rKPvvNFshtzNf36f r8BYMPQYSAlmomJA3CfOpBdWv4aEsst5DiRsE7XrQJY/svNgP+y9hmIaDEdNu8nNAW6a OcQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=U235+YaBwAxiyLbhOHFuNNFMQ07u83Vblwcp5KH8TLs=; b=LTQNVcdAdER1oVePHH6GyV7Wef7c8wAyGUdlhQhPYEHl4L5r0fGtgN1UclJKk8hxiP y7oEXm7wqusgXMMqS4MtAK5f1gAzJSBM544AqUj/rO4xvPZjxXAUXULPPmQqr25DpXDs gshHZiGC4e0lwgyBIiyWa2wNgx7i8VFGbTZfTKr3P/19DnaCPUbw6KN8sD1WRMcuEpEs OyIyEoYiN/DdiS2Vbp92BxOfOvuL5FAtbXEVistQSoUgfbL4SO9T0wqavlpdlZonly8x HFEyaio7nrhCaQJ6E6NjiivcITLy2fMoe+Pp6TFRZLJkp6D0oXhZ03eY4cPeN4PIfr+M zJSQ== X-Gm-Message-State: AIkVDXKw2FkjLaMXibuq0YoVAbOBaJ09VYdYiBcS1TbL6U3xAFHsF7BAj/yorjMW3ClVEQ== X-Received: by 10.99.141.67 with SMTP id z64mr7896797pgd.18.1484798033992; Wed, 18 Jan 2017 19:53:53 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id t87sm3983273pfe.59.2017.01.18.19.53.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 19:53:52 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id A87EFE2AD4D; Wed, 18 Jan 2017 19:54:57 -0800 (PST) To: Alan Mackenzie Cc: Philipp Stephani , Emacs developers Subject: Re: Patch to have let and let* test that the arglist is a list In-Reply-To: <20170118212504.GG4108@acm.fritz.box> (Alan Mackenzie's message of "Wed, 18 Jan 2017 21:25:04 +0000") Date: Wed, 18 Jan 2017 19:52:23 -0800 Message-ID: References: <20170118212504.GG4108@acm.fritz.box> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Alan Mackenzie , Philipp Stephani , Emacs developers MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 03:54:01 -0000 >>>>> "AM" == Alan Mackenzie writes: >> I've attached a small patch for let and let* to make them check for the >> type of the argument list. AM> I think the patch is a good idea. Agreed. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Wed Jan 18 22:54:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU3nW-0006im-JG for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU3nU-0006hn-30 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU3nS-0008U2-6D for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:00 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35663) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU3nS-0008TT-0T; Wed, 18 Jan 2017 22:53:58 -0500 Received: by mail-pg0-x242.google.com with SMTP id 204so2986301pge.2; Wed, 18 Jan 2017 19:53:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version:content-transfer-encoding; bh=QmJjNFm/qpoPkMkCPMM2MiaNPAxpUX8bGzr9Hp47od8=; b=Z8nJTb48v7fgGHGuu7FbhNw+nOOptWE1r5qlXCzu0WvXY9kiB6fKXvPOozlGOe2gAq Z3A+ls9PEWwstgWYOBbRXkJS9KB7uarMj5cr6QGW1igEQQLrLFiSclIJR1xfR9Ue+cX2 OmVoq45hYrpp5F/O8ZLceGjA+tt4M3t58JyR1JQFDj3KbIEsC9Z+N6uLhNEDoUM3oR1V pJyZKctwlTBrhXU1GfshONQGO58a38gAs0s4JJRhGIny8XZgzUtNFqFFD9vN+lRplDFm daJTmMYfs/kDeG0OS72SxT72asrGZsK+HNvEj/7EKlWBZGLQhbBLHBWPtWyykALxG9QX 91PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version :content-transfer-encoding; bh=QmJjNFm/qpoPkMkCPMM2MiaNPAxpUX8bGzr9Hp47od8=; b=YQXqJNOAK8S+TiPrVOd8E5MWshphgHJHo+bgFc4QMxR6T/Q035wso6cItSNrhlLcT6 2HMO5WR+HbAMOBBftLF45TIQX+pXFzjQN+E2KFg5NpBxEeUYUjwI+yddCFz8f/UL/w2D hVUCoeccMJ/f9VZvnaDwh+MzKtpU4AXihyVJjsYWFMfYW6UmbN/nxARygVvetdGrUNLQ TrN+lyi6h6gtQV5ZQ0P2eLk5kcEJK9HiPTf1A/TCzj6wQMIzErmkw+c6tkj+IHY1Pqe9 2DqhRmW6eGp7wYSyZnxovHjgYbu6iR8i9Y3UN56sQh/x4xtd/R+1cthuFTpPPDHmV7Ol GbnA== X-Gm-Message-State: AIkVDXLF86jkXjKpLL6NcSYYnJOaPhYGkuQPnmDzQ/BT8XavI/9mEuzzUCFNxv67vH+tRw== X-Received: by 10.84.193.36 with SMTP id e33mr10188665pld.4.1484798037070; Wed, 18 Jan 2017 19:53:57 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id l7sm4036142pfg.35.2017.01.18.19.53.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 19:53:54 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 055B2E2AD50; Wed, 18 Jan 2017 19:54:58 -0800 (PST) To: Simen =?utf-8?Q?Heggest=C3=B8yl?= Cc: emacs-devel , Tom Tromey , Richard Stallman Subject: Re: Referring users to external web pages In-Reply-To: <1484675329.1861.1@smtp.gmail.com> ("Simen \=\?utf-8\?Q\?Heggest\?\= \=\?utf-8\?Q\?\=C3\=B8yl\=22's\?\= message of "Tue, 17 Jan 2017 18:48:49 +0100") Date: Wed, 18 Jan 2017 19:53:33 -0800 Message-ID: References: <1484675329.1861.1@smtp.gmail.com> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Simen =?utf-8?Q?Heggest=C3=B8yl?= , emacs-devel , Tom Tromey , Richard Stallman MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 03:54:01 -0000 >>>>> "SH" =3D=3D Simen Heggest=C3=B8yl writes: SH> Tom Tromey and I want to add a function to css-mode.el for looking up C= SS SH> properties at the Mozilla Developer Network (MDN) wiki using Eww. SH> Is there a policy for referring users to external web pages in Emacs, or SH> can we go ahead? SH> The content at MDN is licensed under CC-BY-SA, if that matters. This will have to be decided by Richard, or someone at the FSF. --=20 John Wiegley GPG fingerprint =3D 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Wed Jan 18 22:54:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU3nX-0006k4-Sl for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44901) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU3nU-0006ho-30 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU3nR-0008T8-2v for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:00 -0500 Received: from mail-pf0-x232.google.com ([2607:f8b0:400e:c00::232]:33311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU3nQ-0008QN-T4 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:53:56 -0500 Received: by mail-pf0-x232.google.com with SMTP id y143so9704895pfb.0 for ; Wed, 18 Jan 2017 19:53:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=U7uEUGOu22518hljrgH6st4ArLz79RmT4Gn+OjO4+XI=; b=aYXQmeTgrcPPirlPtM/njTqErVDCF9H0Lvo8URqV7Ga0oE+ZuZc6MnfZfDg9MCZRz5 Jt/I3a0YwkLNNU5UC38qlkWSrMNMthgCNWl27C1F96ybKbQGZWoUH7ArvZJpwnnlt6DH UPlKh9HM4apdTaOdZKu7HQUgdtAlkSoIK9ZXnpZjK4fXM/wTt7e54roWfjUqQ/tDGjCk 5ihFHMOkT6YNOpiT5Ait8mBE+IhlxNeTN44mUFYjGE0YJ6y2bEiYX+Ea5/u2z/Vq8YD0 F8kyVjDkEvqndYy/5d0rU7FnRCe61fF/o6ZWl2pscqkiJkZpz+j/poCuog+Sl8nOgtBr ikyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=U7uEUGOu22518hljrgH6st4ArLz79RmT4Gn+OjO4+XI=; b=dngMaJ9QGjzt+Z45kDOn3tJzKRsHiUlyQSXOmFNhbY1Ts2YTcKm7dHnqnfP+Tnt7oM F9JGK8A9afnSUZuT075liFCzOaWJi03GwoPLHEV8Us2Hal9hMjQnNCvq8yOCqxeVxbys /FbT8Q8P1iyMtXMa9bKBwQFtwAsC1AIyWc/9yx/HIZ2Yp/qfdI3GksrHz338bOHN34j+ rfEkONJseFrrbFoTcSVYz/yaFPJw0Ku5+8nhj1hlB1CEetHQju3hLPst1cxT/JFNe/CN yfNbk6yTWGVLVHzx4PRyi+q9XHnWSDfHnM1eDMvmtQ0Sl2NcxNoUwXb+p+ylKqd3JESO eLBQ== X-Gm-Message-State: AIkVDXL1+UWCc+CZ5ORPEOPzc7QnIkjDK53AZq4TLhGUdYSkpl8d8FkJdbBUPvy5okbIsw== X-Received: by 10.98.3.7 with SMTP id 7mr7696490pfd.9.1484798033388; Wed, 18 Jan 2017 19:53:53 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id t87sm3983267pfe.59.2017.01.18.19.53.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 19:53:52 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 7C563E2AD4A; Wed, 18 Jan 2017 19:54:57 -0800 (PST) To: npostavs@users.sourceforge.net Cc: emacs-devel@gnu.org Subject: Re: Comments for bug#25132 fix? (Making with-silent-modifications buffer-local) In-Reply-To: <87lgu7wxix.fsf_-_@users.sourceforge.net> (npostavs@users.sourceforge.net's message of "Wed, 18 Jan 2017 22:15:18 -0500") Date: Wed, 18 Jan 2017 19:51:59 -0800 Message-ID: References: <4aa23451-b6cd-88b0-369e-99f6fe5f2175@gmail.com> <87y3yn2x4j.fsf@users.sourceforge.net> <87eg0e36un.fsf@users.sourceforge.net> <87lgu7wxix.fsf_-_@users.sourceforge.net> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: npostavs@users.sourceforge.net, emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 03:54:01 -0000 >>>>> "n" == npostavs writes: n> Could someone comment on the patches I posted to Bug#25132? n> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25132#22 They look good to me, Noam. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Wed Jan 18 22:54:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU3nY-0006kt-OJ for mharc-emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44925) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU3nV-0006i2-8O for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU3nU-000055-N2 for emacs-devel@gnu.org; Wed, 18 Jan 2017 22:54:01 -0500 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:32954) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU3nR-0008SQ-8W; Wed, 18 Jan 2017 22:53:57 -0500 Received: by mail-pf0-x242.google.com with SMTP id e4so2382519pfg.0; Wed, 18 Jan 2017 19:53:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=7gsFN1alQa/JgAjkYLe3kFEcHZA+BrLxP3Iyh5vjveM=; b=iHJZg4s2bxIaRwNM5bv52f7HjDevo3v3STn0KT4eOwOATK2g2wQ5ZkHmZMKr51vgg7 3YwoUyHN1tpBJFlRWGDaGoNQLbjvS7GrOKHre1jpAWLO+U/3ZIbHssaxmbKOEcALG4vz FfMjXNCEUdfzxdHEx936cyRNTzBB+33X9GC+lvDaALmCHs4iqSNLx5WmhvcRoglTLDbd ks5UNv0/0lYoK0znu/6xup4tCBSLLhUfnGDJv2sp1BdkOvs7grjWzXDYHtkUv3kRrf2D zr/iUycDF9u6kiunUBqFC8MfwqyZpHVqAe4OsVOgps0e3Zkri0BmMn59wYJ5+z5FzXKj Qctg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=7gsFN1alQa/JgAjkYLe3kFEcHZA+BrLxP3Iyh5vjveM=; b=kIj2q3Lmr39GliRCOb/3VsU8NuP4l/jk0XdvZWlJDUzPSRUhMqDeP2nF1imrmH7RNY rC2MWEcfp2X/Gx9wsFe7THlhQ13OMp6QlXtYUH7euAe9a3odzGMR0BFy/vi2kHcVR0fU otIid8TlcY2qpgaQJb68BzFo7nv4vbuZ3I3B/ZsOIPksxdNr3FWxPjJ22bR314f2zNsN PmCm3dGjKspiDxc6vpTqgR3474qDKJGbG/NCTTqKmWSotpkhLT5G+i/8qdQyrRTOO0EW Q16Bm32H3mpk2c8JdjIw3A56J+s7MBRQCw8d9o8VQ8pHBiZsQ/752nG5F6un8hsdm9Xc oaQg== X-Gm-Message-State: AIkVDXJLsWll30e6qAf7seT4aZn7zsySR4OP7PZBTxwVgiRTjHSV8R8heFmWbj59K9ZjJw== X-Received: by 10.99.213.81 with SMTP id v17mr7877806pgi.130.1484798036327; Wed, 18 Jan 2017 19:53:56 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id z66sm4006109pfd.49.2017.01.18.19.53.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 19:53:54 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 35709E2AD53; Wed, 18 Jan 2017 19:54:58 -0800 (PST) To: Juanma Barranquero Cc: martin rudalics , Eli Zaretskii , Drew Adams , Emacs developers Subject: Re: About the 'minibuffer' frame parameter In-Reply-To: (Juanma Barranquero's message of "Sat, 14 Jan 2017 15:01:26 +0100") Date: Wed, 18 Jan 2017 19:54:40 -0800 Message-ID: References: <579E3F9E.8020200@gmx.at> <83h9azl4s1.fsf@gnu.org> <57A4C0DE.3060506@gmx.at> <9605148d-fa81-4cbc-ae81-9e1e8bd11362@default> <57A4CE4C.5010901@gmx.at> <57A4D8C3.5030205@gmx.at> <3e5c74c4-40ae-4b6e-8e8e-444306abb189@default> <57A5AEBD.9040805@gmx.at> <4522903e-6891-46f7-9838-fca2e481ac89@default> <57A6F574.7090101@gmx.at> <83r346axrq.fsf@gnu.org> <587A0604.8000501@gmx.at> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Juanma Barranquero , martin rudalics , Eli Zaretskii , Drew Adams , Emacs developers MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 03:54:02 -0000 >>>>> "JB" == Juanma Barranquero writes: JB> Thanks, I've been missing Emacs and its motley crew. Welcome back, Juanma! -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Thu Jan 19 02:20:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU71R-0001xX-Nt for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 02:20:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU71P-0001xD-KZ for emacs-devel@gnu.org; Thu, 19 Jan 2017 02:20:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU71M-0003ZU-1r for emacs-devel@gnu.org; Thu, 19 Jan 2017 02:20:35 -0500 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:36079) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU71L-0003ZQ-Sn for emacs-devel@gnu.org; Thu, 19 Jan 2017 02:20:31 -0500 Received: by mail-pf0-x242.google.com with SMTP id 19so2756373pfo.3 for ; Wed, 18 Jan 2017 23:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=XqO+dZWYl6n+x3Os1hH5Ke9hEDmyIIdXGRHUHMc6dpQ=; b=r50euNT5NUddiWOhXbgehMRbp3uICnK87qjF3ngiMWygvp7UBTFUKHpGZ7xjKQKj5W uXhTscO8LoPB9KBTMjJtm5g8EwBDdpmPMX4d9ULC20CJbhSe5Jg7kigdilHF1NJVS1z7 Ri9a6+BoewJN79nymqfeyiTncaP1zKYcGNqHJxXi6+Pqz3n58gyD/lpmuYco1vl0TsSr fY1ZTCvw6HwHrqsZgcvE6Cz3lUcFd8/RzOgdlR1kNhXEz5VMik3uWo+N97K/PTcu0tVB 5hF/VU2BZGE6RR2qapHb1IJfjhVgYIoPngT+zY5QhG6dEaPAl2WUJnRd6vDoHMUmS+zL NZeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=XqO+dZWYl6n+x3Os1hH5Ke9hEDmyIIdXGRHUHMc6dpQ=; b=NiLZq5eB9jLpYnW1cWf3x6JcLbu1iJS0En+4Egz+uaIGIeOIUa3Zik+xanuk+mpMEW 493bDqAAP8U/oSE6Ygn78tvGaFRKSYGGDqz09m73z6QkMJ4YDq3DXRpI3x88yVNK+PTC 1jDW6bQDkvZYU7I/Sdw/rvAHLdKqRnmLyHr2idOMTRQzWfG2+Czu+v9EMsPsy1RyPjjg Sgrq9S0u3FlVy30qoIO3TTB00eSC64u4/h71qh7TQm6jAqbtIkyWK0pGbU0PUNF7lcCh AznJGwJygoaEDw92F4fSV81qbxolxna0kVHNXYzjFjzawbr+0dBpOhJ/FzA8ovhxYeoi 2U1g== X-Gm-Message-State: AIkVDXLDPObF1ueSISqgBKwzXMCQoZWy6yfJKzcicLuc5lHrAgwaZLf+RokSoyHD+czTIA== X-Received: by 10.84.234.1 with SMTP id m1mr11140235plk.155.1484810430776; Wed, 18 Jan 2017 23:20:30 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id s26sm5781577pge.33.2017.01.18.23.20.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Jan 2017 23:20:28 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 48E7FE30D37; Wed, 18 Jan 2017 23:21:34 -0800 (PST) To: phillip.lord@russet.org.uk (Phillip Lord) Cc: emacs-devel@gnu.org Subject: Re: standard output/error/input streams In-Reply-To: <87wpdxu8yt.fsf@russet.org.uk> (Phillip Lord's message of "Sat, 14 Jan 2017 12:22:50 +0000") Date: Wed, 18 Jan 2017 23:21:32 -0800 Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: phillip.lord@russet.org.uk (Phillip Lord), emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 07:20:36 -0000 >>>>> "PL" == Phillip Lord writes: PL> The main motivation for this is the same as last time; it gives a PL> communication channel with Emacs which does not involve buffers at any PL> point. Although, if you search for "Emacs" and "standard output", other PL> people would like the same thing for other reasons. Have you thought of allowing files to be "opened" for direct writing as well? That is, I'd rather see file handles become a new output stream type, with stdout and stderr instances of these, than hard-coded streams for only stdout and stderr. Although, getting cleanup right makes me less certain. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Thu Jan 19 03:44:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU8KK-0004fs-Nc for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 03:44:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58872) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU8KI-0004fk-Pb for emacs-devel@gnu.org; Thu, 19 Jan 2017 03:44:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU8KF-0001cP-N3 for emacs-devel@gnu.org; Thu, 19 Jan 2017 03:44:10 -0500 Received: from mail.agora-net.com ([67.59.132.6]:50244) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cU8KF-0001bQ-Hu for emacs-devel@gnu.org; Thu, 19 Jan 2017 03:44:07 -0500 Received: from ttn by mail.agora-net.com with local (Exim 4.82) (envelope-from ) id 1cU8KB-0007wY-8K for emacs-devel@gnu.org; Thu, 19 Jan 2017 03:44:03 -0500 Received: from ttn by zigzag.favinet with local (Exim 4.80) (envelope-from ) id 1cU6xJ-0004Rx-Ih for emacs-devel@gnu.org; Thu, 19 Jan 2017 08:16:21 +0100 From: Thien-Thi Nguyen To: emacs-devel@gnu.org Subject: Re: [elpa] master cf9edfa 3/5: [gnugo slog] Clear =?utf-8?Q?=E2=80=98inhibit-point-motion-hooks=E2=80=99=2E?= References: <20170115231126.7513.20697@vcs.savannah.gnu.org> <20170115231126.DB46722017C@vcs.savannah.gnu.org> Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org Date: Thu, 19 Jan 2017 08:16:06 +0100 In-Reply-To: (Stefan Monnier's message of "Sun, 15 Jan 2017 21:32:19 -0500") Message-ID: <87o9z3ldu1.fsf@zigzag.favinet> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Sender: Thien-Thi Nguyen X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: ttn@gnuvola.org X-SA-Exim-Scanned: No (on mail.agora-net.com); SAEximRunCond expanded to false X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 67.59.132.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 08:44:11 -0000 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable () Stefan Monnier () Sun, 15 Jan 2017 21:32:19 -0500 How 'bout the patch below (which additionally gets you rid of the place where you modify a string in-place, which I find very untoward). Thanks. I have modified the mode-line munging bits to use =E2=80=98replace-regexp-in-string=E2=80=99 as exemplified in the patch. OT= OH, the cursor-intangible parts of the patch i'm still mulling. From the bit of testing I've done, the intangibility on your board is a bit flimsy (C-f/C-b can move off the board), but I haven't tried to change that. Yeah, it has always been partial. At the design level, i wonder what is the preferred user experience when about to move off the board. I see these possibilities: (a) wrap toroidally (both horiz and vert); (b) stay motionless; (c) like (b) w/ error; (d) do nothing special (status quo). Personally, i don't mind (d) because i like to explore the text properties (move point, invoke =E2=80=98describe-text-properties=E2=80=99),= and imagine others doing likewise. (Too, no complaints yet.) =2D-=20 Thien-Thi Nguyen ----------------------------------------------- (defun responsep (query) (pcase (context query) (`(technical mailing-list) t) ...)) 748E A0E8 1CB8 A748 9BFA =2D-------------------------------------- 6CE4 6703 2224 4C80 7502 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAliAZ7wACgkQZwMiJEyAdQLD+ACfaf094/AQ7Unuw5anZOkgGT9H MjEAmgLTYT1QWHKxpT3Tyrl28Cd8MxBR =7o/7 -----END PGP SIGNATURE----- --=-=-=-- From MAILER-DAEMON Thu Jan 19 04:05:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cU8eg-0001qq-Da for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 04:05:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35548) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU8ea-0001n0-I7 for emacs-devel@gnu.org; Thu, 19 Jan 2017 04:05:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cU8eW-0007AL-Kx for emacs-devel@gnu.org; Thu, 19 Jan 2017 04:05:08 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39065) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cU8eW-0007AD-I1 for emacs-devel@gnu.org; Thu, 19 Jan 2017 04:05:04 -0500 Received: from p54acebd2.dip0.t-ipconnect.de ([84.172.235.210]:51574 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cU8eV-0005Or-F7; Thu, 19 Jan 2017 04:05:03 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> <83vatc6ur2.fsf@gnu.org> <86bmv4m9e2.fsf@gnu.org> <83shog6sm0.fsf@gnu.org> Date: Thu, 19 Jan 2017 10:04:54 +0100 In-Reply-To: <83shog6sm0.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 18 Jan 2017 22:05:59 +0200") Message-ID: <86shofju89.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 09:05:12 -0000 --=-=-= Content-Type: text/plain Eli Zaretskii writes: > Is this in the MSYS Bash? I meant inside Emacs. I tried all of the following: 1) Started Msys bash by clicking on mingw64.exe 2) Made a test.bat containing msys2_shell.cmd -mingw64 -mintty 3) At Windows cmd, typed bash -c 'MSYSTEM=MINGW64 exec /usr/bin/bash --login -i' How do you start Msys? > I have none of these. Windows runtime ignores these variables, but > maybe MSYS2 Hunspell doesn't. What happens if you set LC_ALL=C and > try your recipe again? I set that in .bash_profile with the combinations mentioned above, but no avail. I'm out of ideas, but since it works for you, the problem must be at my end. For now, I will downgrade Hunspell and keeping searching. Many thanks again for looking at this. While we're at it, if found a small typo in the doc-string of `ispell-buffer-with-debug', patch is attached. Best, Arash --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-lisp-textmodes-ispell.el-ispell-buffer-with-debug-De.patch >From 3bebc3d473884fa27392ed45d7707ec9632fe659 Mon Sep 17 00:00:00 2001 From: Arash Esbati Date: Thu, 19 Jan 2017 09:26:15 +0100 Subject: [PATCH] ; * lisp/textmodes/ispell.el (ispell-buffer-with-debug): Delete space. --- lisp/textmodes/ispell.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index d9a1c71..6920de4 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -3803,7 +3803,7 @@ ispell-buffer ;;;###autoload (defun ispell-buffer-with-debug (&optional append) "`ispell-buffer' with some output sent to `ispell-debug-buffer' buffer. -If APPEND is non-n il, append the info to previous buffer if exists." +If APPEND is non-nil, append the info to previous buffer if exists." (interactive) (let ((ispell-debug-buffer (ispell-create-debug-buffer append))) (ispell-buffer))) -- 2.10.2 --=-=-=-- From MAILER-DAEMON Thu Jan 19 07:16:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUBdi-0002eT-Cy for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 07:16:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUBdg-0002eL-G6 for emacs-devel@gnu.org; Thu, 19 Jan 2017 07:16:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUBdf-0004qT-JT for emacs-devel@gnu.org; Thu, 19 Jan 2017 07:16:24 -0500 Received: from mail-yw0-x231.google.com ([2607:f8b0:4002:c05::231]:32790) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUBdf-0004q7-Es for emacs-devel@gnu.org; Thu, 19 Jan 2017 07:16:23 -0500 Received: by mail-yw0-x231.google.com with SMTP id l75so30165082ywb.0 for ; Thu, 19 Jan 2017 04:16:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=9G/Y7npwHl2uyTftefPAjTWcL+JtWNV1wmxhoUb1rUk=; b=QZVGd+Ja0D8gkEVVARZjgUo7CVN+fFXTJjAe87HGgkqIjkLvZBuibDiYqKNsUbqqig 0xQYMnS9VLWjosTGRyQ7IHoTaMf87t/LA8Byw5Pl583wYjVCs+M0/auhAFJ6MiNRydVi tGna38GUV1UVzKFtuO6ZB+8xsnLCKUXaEiZuT0gb77RLuJ9opdGjN1Fijboc1hr6VxVS X9lK3n7L7qM1pjQpsJeUUoasWZuUkHQKJzoiLypGl5CUZpNwxvrziOEQlnvWRUom8nQu S++rhTGBb3UC1Lt1roPjAFXeBuUUWBuk4lUqGcI/GfzLemtR8WqhCFri3+Qmim8mnxqu /kAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=9G/Y7npwHl2uyTftefPAjTWcL+JtWNV1wmxhoUb1rUk=; b=lKjaoom5LFnQ1vYdhgEtXP/X1Rx7IJWKxlQfWgbbLivJBCEr98zzf9gWx+otnEzapD 7tHfRVVF+QY5Oa8CCPgRPsu1RUYF2BkpXy5aB61wLpR8DO4Ixp7dDOLTkNkGr0s4eLY7 i+fEVEQal8qSrVC/F+zRZNOef53WU09CeX34I6MUjoxNkvLXuPLJ/OzUX6SDiy4+dekO HKMWW4PSe0XDQ9wRKICPJfIAHSjZouVkIPPSSVf1JWcRyqqCqwiCVB8yZqlzBmTeMWYY JRqzWdO3BByjbVpONaFWOr5IJwHxhoo/e2BcLE5dVbzU9v0KQOyDjCuvBJ8luhYxMEcD GMsQ== X-Gm-Message-State: AIkVDXLkth2qW/xzcr49EPGDtXD575F67jI6GNPVKdRc+LtciyyCWE9Uy7ys5G4Yxz+6jUPCeNeBxRMXTkL6cA== X-Received: by 10.13.243.68 with SMTP id c65mr6327787ywf.137.1484828182851; Thu, 19 Jan 2017 04:16:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Thu, 19 Jan 2017 04:16:16 -0800 (PST) In-Reply-To: References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> From: Vibhav Pant Date: Thu, 19 Jan 2017 17:46:16 +0530 Message-ID: Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 12:16:25 -0000 On another thought, `byte-switch` is used while compiling certain `cond` forms. It replaces the traditional goto-if-nil bytecode by using a hash table mapping values to addresses/tags to be jumped to. Since `byte-switch` is essentially a "dynamic" goto (in the sense that the address/tag cannot be known at compile time), wouldn't doing a runtime type check in the bytecode VM for what is a hash table lookup + goto have a significant performance penalty? On Wed, Jan 18, 2017 at 11:18 PM, Stefan Monnier wrote: >> * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch >> Fgethash type checks the provided table object, which is unnecessary >> for compiled bytecode. > > While it's true that we can cause a core dump of Emacs if we feed it an > invalid .elc file, that's a "feature" I'd rather shrink rather > than generalize. > > > Stefan -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Thu Jan 19 10:49:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUEy6-0001wW-Bh for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 10:49:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43069) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUEy3-0001tW-6N for emacs-devel@gnu.org; Thu, 19 Jan 2017 10:49:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUExy-00069v-Cz for emacs-devel@gnu.org; Thu, 19 Jan 2017 10:49:39 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43879) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUExy-00069r-9t; Thu, 19 Jan 2017 10:49:34 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3356 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUExw-0003s3-U3; Thu, 19 Jan 2017 10:49:33 -0500 Date: Thu, 19 Jan 2017 17:49:19 +0200 Message-Id: <83pojj6oe8.fsf@gnu.org> From: Eli Zaretskii To: John Wiegley CC: npostavs@users.sourceforge.net, emacs-devel@gnu.org In-reply-to: (message from John Wiegley on Wed, 18 Jan 2017 19:51:59 -0800) Subject: Re: Comments for bug#25132 fix? (Making with-silent-modifications buffer-local) Reply-to: Eli Zaretskii References: <4aa23451-b6cd-88b0-369e-99f6fe5f2175@gmail.com> <87y3yn2x4j.fsf@users.sourceforge.net> <87eg0e36un.fsf@users.sourceforge.net> <87lgu7wxix.fsf_-_@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 15:49:40 -0000 > From: John Wiegley > Date: Wed, 18 Jan 2017 19:51:59 -0800 > Cc: emacs-devel@gnu.org > > >>>>> "n" == npostavs writes: > > n> Could someone comment on the patches I posted to Bug#25132? > n> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25132#22 > > They look good to me, Noam. Fine with me as well. Thanks. From MAILER-DAEMON Thu Jan 19 10:56:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUF4x-0008D5-Hs for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 10:56:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45074) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUF4v-0008B2-EV for emacs-devel@gnu.org; Thu, 19 Jan 2017 10:56:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUF4q-0001O2-KS for emacs-devel@gnu.org; Thu, 19 Jan 2017 10:56:45 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43976) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUF4q-0001Nv-I0 for emacs-devel@gnu.org; Thu, 19 Jan 2017 10:56:40 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3362 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUF4o-0004cb-VY; Thu, 19 Jan 2017 10:56:39 -0500 Date: Thu, 19 Jan 2017 17:56:25 +0200 Message-Id: <83mven6o2e.fsf@gnu.org> From: Eli Zaretskii To: Arash Esbati CC: emacs-devel@gnu.org In-reply-to: <86shofju89.fsf@gnu.org> (message from Arash Esbati on Thu, 19 Jan 2017 10:04:54 +0100) Subject: Re: Hunspell 1.6 on Msys2 Reply-to: Eli Zaretskii References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> <83vatc6ur2.fsf@gnu.org> <86bmv4m9e2.fsf@gnu.org> <83shog6sm0.fsf@gnu.org> <86shofju89.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 15:56:46 -0000 > From: Arash Esbati > Cc: emacs-devel@gnu.org > Date: Thu, 19 Jan 2017 10:04:54 +0100 > > Debugger entered--Lisp error: (error "Ispell misalignment: word > ‘\334bersetzugn’ point 43; probably incompatible versions") Forget about all I said, I've succeeded in reproducing this now. (Previously, I used "M-$" instead of "M-x ispell", and ispell-word somehow succeeds to work in this case.) This is a bug in Hunspell 1.6: it seems to ignore the "-i UTF-8" command-line switch, and sends its output in Latin-1 (perhaps because the de_DE dictionary uses that encoding). With a file to-spell.tex using the same text you show in your recipe and encoded in UTF-8, try this from the Windows command line: cat to-spell.tex | hunspell -a "" -d de_DE -i UTF-8 > hunspell-1.6.txt Then visit the file hunspell-1.6.txt -- you will see that it shows Übersetzugn in Latin-1 encoding, although the -i switch requested that the UI be in UTF-8. It's possible that this is a kludgey "feature" in Hunspell 1.6, meant as a stop-gap for the long-standing bug in Hunspell, whereby it reports offsets in bytes, not in characters. It could be that the Hunspell developers made this change in behavior to make the problem less acute. But it's a bug anyway. The solution is to fix Hunspell, of course. Failing that, a workaround would be to customize your Emacs to use single-byte encodings for dictionaries with which you need to work. One way to do that is to set up the coding-systems of the Hunspell process accordingly. But that could be messy, as ispell.el is quite set on using UTF-8 with Hunspell and Aspell. From MAILER-DAEMON Thu Jan 19 11:24:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUFWA-0004i8-HQ for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 11:24:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUFW8-0004gX-FF for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:24:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUFW7-0000HZ-GS for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:24:52 -0500 Received: from mail-ot0-x22e.google.com ([2607:f8b0:4003:c0f::22e]:35252) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUFW7-0000HM-98 for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:24:51 -0500 Received: by mail-ot0-x22e.google.com with SMTP id 65so35630763otq.2 for ; Thu, 19 Jan 2017 08:24:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=qtym/CKHUFCbqzsY/U1jICH4Ez8H5UYLJOszffpXOp4=; b=FzTpTLLWQuZtjo0T1RiqYhV/5O25Mn1c6vVYeF21aeB11ZtMV4sORjlpAMJ4eZ/5Hu 7ZHrzyngCiRWc2COQLAbTE+Y1uDi2GHKObc2Kzz7MNd1LRh7A9a2w9qpnLUkKtU/kQRc nSi26cMg9Fwp50A5Bi7JHw66NEY6CpTIJKfU8mf3y/3JwPKUVspRxGP5i+1gCs90G+Ue +IQdo8jEQWs0KvcKfYFuIrg2e92uV7N+0BCV0tfERr07y0NbnUE7DO4vxR2gxvr0CNwG lqWHpH4WZmlaZuH5W435snxAkDKIZYDWq6kXXKb4wTuHuJNnlOMRbc23enGeSONZIXif IqfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=qtym/CKHUFCbqzsY/U1jICH4Ez8H5UYLJOszffpXOp4=; b=S6bantjvGfsq0arhCp8uN69hr//lqmqi0EX9HamNDdsBsoqfrSzy49KvLpGPdStlMe LBTSRYo/0TbE2gAcJiUD+mhGs9QhTbYC3qCMXA+/1wNqs/ggBKj0iV/rgWPWuo3X8SkG gSqp+mxD7Yk6arZlPe2YQVx2E+thd38mvHE72sjwkhE3qD2j9OHsQGuMThg0eBvMRY8G LjCR98K1bo0dcmWYBSAgaSchOHUDxuYafYtmqcsn7U8Ahtn4L2rYW/dVQgNMfut7BEW9 iMx2MtE7TVdCq1cAIDbbKhDRgnu31Wvp2cC8Fa/jl4z56V4jmkA6lR36/yn9JUboVPhY FYxQ== X-Gm-Message-State: AIkVDXLsH+VGJZVTSrLVP5UXMGq5G/xd56y5Bwtf0txSH+ae918xNRV+YBfb6ZLRAVilKdVJU3tGNW6JcZyi9g== X-Received: by 10.157.33.88 with SMTP id l24mr5233845otd.217.1484843090149; Thu, 19 Jan 2017 08:24:50 -0800 (PST) MIME-Version: 1.0 References: <20170118212504.GG4108@acm.fritz.box> In-Reply-To: From: Philipp Stephani Date: Thu, 19 Jan 2017 16:24:39 +0000 Message-ID: Subject: Re: Patch to have let and let* test that the arglist is a list To: Alan Mackenzie , Emacs developers Content-Type: multipart/alternative; boundary=001a1137087cef8593054674f8fa X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 16:24:53 -0000 --001a1137087cef8593054674f8fa Content-Type: text/plain; charset=UTF-8 John Wiegley schrieb am Do., 19. Jan. 2017 um 04:53 Uhr: > >>>>> "AM" == Alan Mackenzie writes: > > >> I've attached a small patch for let and let* to make them check for the > >> type of the argument list. > > AM> I think the patch is a good idea. > > Agreed. > > Thanks, pushed to master. --001a1137087cef8593054674f8fa Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


John W= iegley <jwiegley@gmail.com>= schrieb am Do., 19. Jan. 2017 um 04:53=C2=A0Uhr:
>>>>> "AM" =3D=3D Alan Mackenzie &l= t;acm@m= uc.de> writes:

>> I've attached a small patch for let and let* to make them chec= k for the
>> type of the argument list.

AM> I think the patch is a good idea.

Agreed.


Thanks, pushed to = master.=C2=A0
--001a1137087cef8593054674f8fa-- From MAILER-DAEMON Thu Jan 19 11:34:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUFfW-0004RT-17 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 11:34:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUFfT-0004PS-SG for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:34:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUFfO-0004gr-QG for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:34:31 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:40175) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUFfO-0004gd-Js for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:34:26 -0500 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0JGYM3G028846; Thu, 19 Jan 2017 11:34:22 -0500 Received: by pastel.home (Postfix, from userid 20848) id 6C79261B87; Thu, 19 Jan 2017 11:34:22 -0500 (EST) From: Stefan Monnier To: Vibhav Pant Cc: "emacs-devel\@gnu.org" Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch Message-ID: References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> Date: Thu, 19 Jan 2017 11:34:22 -0500 In-Reply-To: (Vibhav Pant's message of "Thu, 19 Jan 2017 17:46:16 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5925=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5925> : inlines <5636> : streams <1729771> : uri <2360669> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 16:34:32 -0000 > On another thought, `byte-switch` is used while compiling certain > `cond` forms. It > replaces the traditional goto-if-nil bytecode by using a hash table mapping > values to addresses/tags to be jumped to. Since `byte-switch` is essentially a > "dynamic" goto (in the sense that the address/tag cannot be known at > compile time), > wouldn't doing a runtime type check in the bytecode VM for what is a > hash table lookup + goto have a significant performance penalty? I don't know. Only measurement can tell. My guess is that hash_lookup already takes a significant amount of time, so a HASH_TABLE_P test would be negligible in comparison. Stefan > On Wed, Jan 18, 2017 at 11:18 PM, Stefan Monnier > wrote: >>> * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch >>> Fgethash type checks the provided table object, which is unnecessary >>> for compiled bytecode. >> >> While it's true that we can cause a core dump of Emacs if we feed it an >> invalid .elc file, that's a "feature" I'd rather shrink rather >> than generalize. >> >> >> Stefan > -- > Vibhav Pant > vibhavp@gmail.com From MAILER-DAEMON Thu Jan 19 11:40:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUFlB-0001MQ-Gp for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 11:40:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUFl9-0001L8-PM for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:40:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUFl4-0007UG-Pa for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:40:23 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:41214) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUFl4-0007U2-KQ for emacs-devel@gnu.org; Thu, 19 Jan 2017 11:40:18 -0500 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0JGeGdY029703; Thu, 19 Jan 2017 11:40:16 -0500 Received: by pastel.home (Postfix, from userid 20848) id 810DF60657; Thu, 19 Jan 2017 11:40:16 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Philipp Stephani Subject: Re: [Emacs-diffs] master 9c4e309: Check that variable lists are actually lists Message-ID: References: <20170119161943.5234.63498@vcs.savannah.gnu.org> <20170119161943.49263220159@vcs.savannah.gnu.org> Date: Thu, 19 Jan 2017 11:40:16 -0500 In-Reply-To: <20170119161943.49263220159@vcs.savannah.gnu.org> (Philipp Stephani's message of "Thu, 19 Jan 2017 16:19:43 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5925=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5925> : inlines <5636> : streams <1729772> : uri <2360671> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 16:40:24 -0000 > 'let' and 'let*' document that their first argument has to be a list, > but don't check for that; instead, they allow (and silently ignore) > other types. Introduce an explicit type check. Notice that this may end up breaking currently working code :-( The way we've generally handled such issues is basically that if the programmer wants sanity checks, he should byte-compile his code. This has two corollaries: - We should make sure that the *byte-compiler* does warn about ill-formed code (we currently don't do a great job of that). - The interpreter can do whatever it wants with ill-formed code and doesn't need to go out of its way to detect it. Stefan From MAILER-DAEMON Thu Jan 19 12:52:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUGsU-0007B6-96 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 12:52:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48965) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUGsR-00078f-O0 for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:52:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUGsO-0005L6-Er for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:51:59 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:36466) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUGsO-0005Kn-7j for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:51:56 -0500 Received: by mail-wm0-x242.google.com with SMTP id r126so624183wmr.3 for ; Thu, 19 Jan 2017 09:51:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Gb+6a2nCnDCGGXEbSnd69eZeDahDGYMbuAv+nvOqElc=; b=YRsYzE59+8JcOQWiFJHrj4eAOXUoC/omEg2TXTmbZOUQvaUHj4dQksAjQBl3+YIu0P oLBkH8HHPrUJ5DqxK5QXMCzhf2k0BLAwxYaDl/NXwE6fMISfpUPX7ouqXmHRv6SF0S3X my5PLPo0hNqdKU+IgWKmVkYzBKCn/0bkTeTeiPQNPA2aDLvGek7afZcIzNXAwJoNVZTH j0NEmtVUpj/8S12xgCjM832m+sqv+fr7bhL7BpkmY6KN3ymBriLwPiIAPFFxdWsAYwTY 2xAt8c1TuKUMDRY5L+d6LT1TbnsRufI0CgOVO/F6s01HuR58nCDWqbFbVtkOtUYxqGg3 j6iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=Gb+6a2nCnDCGGXEbSnd69eZeDahDGYMbuAv+nvOqElc=; b=gW3CLoDZLWU0AhSBljjiv6WcglMyOPoj1qQpMupz2VHinqyb3mv4bRl2giPiNyTock N3gOR24/sZ/ywCBGBmWvHXMyzuC8QCIse/pB5FY8vp5jz0tKzOs8r0MTw1H/CeP8ZdCJ jhtiSv+R2LFTG9MGED8TilJqaqv9ZZQNBZEmjkZfQHrl3YwT/c5FSH4o19662IwdQzbE Yd4SbudTm6XuN/87Hx+7lxs+olFHEzM82E1Ps2xX51tsVh0SXDdY8OLlbvw9JyHGShWg iNb/1jPrqnhEtTxhgiuDr5lU91qp8+Q4JyKWptFZX5MsCHlMrBzufCEVRFfKO1oXxDcd JSPA== X-Gm-Message-State: AIkVDXJ4IFqw3fnBCQiOcc8jdJ35bsXMnQLsN//xONcPQGhq6CtDLc5dFGdTcHU22l6Kjg== X-Received: by 10.28.98.66 with SMTP id w63mr28042307wmb.142.1484848315042; Thu, 19 Jan 2017 09:51:55 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id w126sm7364327wmw.0.2017.01.19.09.51.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 19 Jan 2017 09:51:53 -0800 (PST) From: Edward John Steere To: David Engster Cc: Lee Hinman , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> <877f5suj4g.fsf@engster.org> Date: Thu, 19 Jan 2017 19:51:48 +0200 In-Reply-To: <877f5suj4g.fsf@engster.org> (David Engster's message of "Wed, 18 Jan 2017 22:57:03 +0100") Message-ID: <87lgu7djkb.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 17:52:00 -0000 > My worry is indeed feature creep. The CEDET merge fell behind because I > couldn't keep up with the changes in Emacs, most notably the switch to > git and the extensive changes in EIEIO. The code base is very large and > complicated, so I'm against adding more code to Emacs core. Alright. I'll get to work on porting the tests again and limit the tests which I merge to those which will be relevant to the components which will end up in core. > Instead, we > should try to make it more modular and put support for certain languages > and project types into separate ELPA projects. This would also make it > easier to share maintainership of CEDET. > > -David I couldn't agree more on this point. I also think that many users are itching to improve the aspects of CEDET which they use and that a move like this would make strides in making the project accessible to those kinds of contributions. Let's get this merge done so that we can get cracking on the ELPA projects too! :-) From MAILER-DAEMON Thu Jan 19 12:54:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUGuT-0000T5-B3 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 12:54:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49400) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUGuR-0000RG-AC for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:54:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUGuQ-0006q2-D6 for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:54:03 -0500 Received: from mail-yw0-x22e.google.com ([2607:f8b0:4002:c05::22e]:34846) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUGuQ-0006ps-7M for emacs-devel@gnu.org; Thu, 19 Jan 2017 12:54:02 -0500 Received: by mail-yw0-x22e.google.com with SMTP id l19so42585697ywc.2 for ; Thu, 19 Jan 2017 09:54:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=QFLbe6g/Q9ZTzXRWbD85Ncs5ZqSkHchnRlEMGGVdc48=; b=E3oDyGunaDQxhsAHepDLrf/+6JqAZTV0X3Kz/VkspbfL2TEkeMAXRvKnRMRPcr5Iok I2V47exI2sfe7WJWXlr4xR0i1aX6dsrvWBYj03DlVlat+mXzHYkGWqyCirnnRDnR6y+m yTcqwt+n7yoKovhDR5etL0D+LmCpEgXfDS9lGdeXfUq+B/EDqrYu3mkYG6/Cjlnrm6JC mQqBNdIJ0UB1lG3M98VFyr9EwCLpGl+fAxQQjJvG5V3FZrHjWaKbv2A+PN647ieQNxEV /GNsKq7bPw5zOQefa6L3iQ0tgLImLJp321n6/HmcZrim+UGjEtiymvTmvppsOeiPhD3X 6gKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=QFLbe6g/Q9ZTzXRWbD85Ncs5ZqSkHchnRlEMGGVdc48=; b=NcR9bT98gzC4It3kUOZ3Z5HeUfVK9tMoJJSqN8sAzxCKvx7bgjRS4eOkRX09DLFzw+ Gl4sdCr/rFyYbnypUULs2F6o2cW04jpMytTGubtiGMVyQzIgyD/VBm2ywpwdguJSyw54 lWnOUR5z42YXu7q6Au4VNtk60yL7+AZ8SQCZ4IijxZWbmq0/Ir7BmZf/5OK3kxiAscLr +RqeLRuJ1eZmivhKuQg/i5WLgiqvLSUvsx5W6sxhlsekEqWugmeHGVa0oFTRfmGBWZsG MgfP0Sa6HX8iki4kMK2q/d9x43OTZpdgLdsOpNR/3Bj/+eHUmnj3bQzpSp4lkNgGjZFb KpvQ== X-Gm-Message-State: AIkVDXLBilvWBqOdZ64NOlCeZd7oNZ+skuElmcsdn8yOuh4iSor/PkG4fnPcRvkUBgf/PDj/M0WRt95Z3xeh1A== X-Received: by 10.129.85.211 with SMTP id j202mr7473435ywb.287.1484848441464; Thu, 19 Jan 2017 09:54:01 -0800 (PST) MIME-Version: 1.0 References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> In-Reply-To: From: Vibhav Pant Date: Thu, 19 Jan 2017 17:53:50 +0000 Message-ID: Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: multipart/alternative; boundary=001a113f2b9ce644010546763768 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 17:54:04 -0000 --001a113f2b9ce644010546763768 Content-Type: text/plain; charset=UTF-8 I see. For now, I've made the type check only work when BYTE_CODE_SAFE is defined at compile time. I'll make it a part of the regular code once the byte-switch is implemented and there are no performance issues with doing so. On Thu, 19 Jan 2017, 22:04 Stefan Monnier, wrote: > > On another thought, `byte-switch` is used while compiling certain > > `cond` forms. It > > replaces the traditional goto-if-nil bytecode by using a hash table > mapping > > values to addresses/tags to be jumped to. Since `byte-switch` is > essentially a > > "dynamic" goto (in the sense that the address/tag cannot be known at > > compile time), > > wouldn't doing a runtime type check in the bytecode VM for what is a > > hash table lookup + goto have a significant performance penalty? > > I don't know. Only measurement can tell. My guess is that hash_lookup > already takes a significant amount of time, so a HASH_TABLE_P test would be > negligible in comparison. > > > Stefan > > > > On Wed, Jan 18, 2017 at 11:18 PM, Stefan Monnier > > wrote: > >>> * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch > >>> Fgethash type checks the provided table object, which is unnecessary > >>> for compiled bytecode. > >> > >> While it's true that we can cause a core dump of Emacs if we feed it an > >> invalid .elc file, that's a "feature" I'd rather shrink rather > >> than generalize. > >> > >> > >> Stefan > > > > > -- > > Vibhav Pant > > vibhavp@gmail.com > --001a113f2b9ce644010546763768 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

I see. For now, I've made the type check only work when = BYTE_CODE_SAFE is defined at compile time. I'll make it a part of the r= egular code once the byte-switch is implemented and there are no performanc= e issues with doing so.


On Thu, 19 Jan 2017, 22:04 = Stefan Monnier, <monnier@iro= .umontreal.ca> wrote:
> O= n another thought, `byte-switch` is used while compiling certain
> `cond` forms. It
> replaces the traditional goto-if-nil bytecode by using a hash table ma= pping
> values to addresses/tags to be jumped to. Since `byte-switch` is essen= tially a
> "dynamic" goto (in the sense that the address/tag cannot be = known at
> compile time),
> wouldn't doing a runtime type check in the bytecode VM for what is= =C2=A0 a
> hash table lookup + goto have a significant performance penalty?

I don't know.=C2=A0 Only measurement can tell.=C2=A0 My guess is that h= ash_lookup
already takes a significant amount of time, so a HASH_TABLE_P test would be=
negligible in comparison.


=C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan


> On Wed, Jan 18, 2017 at 11:18 PM, Stefan Monnier
> <monnier@iro.umontreal.ca> wrote:
>>> * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch=
>>> Fgethash type checks the provided table object, which is unnec= essary
>>> for compiled bytecode.
>>
>> While it's true that we can cause a core dump of Emacs if we f= eed it an
>> invalid .elc file, that's a "feature" I'd rather= shrink rather
>> than generalize.
>>
>>
>> Stefan



> --
> Vibhav Pant
> vibhavp@gmail.com
--001a113f2b9ce644010546763768-- From MAILER-DAEMON Thu Jan 19 13:02:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUH2A-00075P-A5 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 13:02:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUH28-00073e-B9 for emacs-devel@gnu.org; Thu, 19 Jan 2017 13:02:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUH25-0002ln-Ds for emacs-devel@gnu.org; Thu, 19 Jan 2017 13:02:00 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:35343) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUH25-0002l4-8Y; Thu, 19 Jan 2017 13:01:57 -0500 Received: by mail-wm0-x241.google.com with SMTP id d140so711230wmd.2; Thu, 19 Jan 2017 10:01:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=ixK7sLT47fZm9omRoFuAT1rpD1ZLBfc+o3tEzk49Ges=; b=Ao9IS4OpQpbogX4av1S978HLBN+fu/+AWHV+EuC0LOE6hIqn/bCB6DZeP3ZRIozOga QR6cKwMQqY4M85C0DqUWDmjlCQoRtZmJniaUI07kT9DWcp9RwAmUJhT8dycQe8RfORf5 37+cKkWxeMXp7aLJPXYui8YAA4H8t1r3EUcJDL5Y/jUbjAJXTEvo98KFoxaWkkmczUT2 NDgzRPbdXch+m2y4oLeMkCqQP/oTCeoLs0E/StQ3m0/6vI8uzMUXlO1zHo9qGqkOUD7L GGbyUM/aUcjrfaXbY07187SVZm1DP37dA/TsVuWvoT3huoSDlx+3HdC+mgtB2BUA1wiB l3Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=ixK7sLT47fZm9omRoFuAT1rpD1ZLBfc+o3tEzk49Ges=; b=dlDzQtEc2Hbmt3yRBmUWl3+b0HdgSqzzE96yP8QgteHdjsMKs0nNA6hG/rps89dVuw Lo8ibN7rnU9mP5EtAq9YYhvA094imL17Ftdd91z7vLrmqDGO2QtuGzudnjK5DRY04ZtU wfr4KyS+7rzedqPgQATu3ggs0Ls6Lzo62d/Oag9at1FBkdWOaFUscvaTChWqIFOCBHPY i6fLgV+rPk0vvp91HF27EgUKJN/YxvvdxoeuoMJ7K+wiK9UoYynhiVV3PMRQLdywNvnM euTdCGCMi+ZtVc6ULfxzY2a12c/x0dzXW7TFobA+Y3Q3GyIA4MKXx5C/ZDMZd1Gboxvp DEsQ== X-Gm-Message-State: AIkVDXJz0/Tefh+hJuEDg2+5/I+7eHQZZgpcnHD+VbpuSmyUg5wHIEPcey/ZeFoe58YIJw== X-Received: by 10.28.131.72 with SMTP id f69mr8940884wmd.140.1484848915886; Thu, 19 Jan 2017 10:01:55 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id w79sm14357337wmw.0.2017.01.19.10.01.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 19 Jan 2017 10:01:54 -0800 (PST) From: Edward John Steere To: David Engster Cc: Stephen Leake , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> Date: Thu, 19 Jan 2017 20:01:48 +0200 In-Reply-To: <8737gguipm.fsf@engster.org> (David Engster's message of "Wed, 18 Jan 2017 23:05:57 +0100") Message-ID: <87h94vdj3n.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 18:02:01 -0000 > Things have gotten easier since the actual ChangeLog files get generated > from the commit message. I would try to manually commit the changes with > proper commit messages, so we would retain the history with the > exception of the date of the change, which would be from the day of the > merge. > > -David This sounds like a lot of work and the outcome sounds right. As I said in my previous email I'll make a start on the tests. From MAILER-DAEMON Thu Jan 19 16:57:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUKi7-0004Nh-UR for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 16:57:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50535) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUKi6-0004NZ-77 for emacs-devel@gnu.org; Thu, 19 Jan 2017 16:57:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUKi3-0005zR-1d for emacs-devel@gnu.org; Thu, 19 Jan 2017 16:57:34 -0500 Received: from randomsample.de ([5.45.97.173]:55412) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUKi2-0005uQ-NN; Thu, 19 Jan 2017 16:57:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=BCggvMbgfphSHNmKoZboN8taxwD9BfAGc1AsiN37UhU=; b=Rh/9lhQToVdl7L3lFDtuJxT6sIPdBOc8qsi7oOJTwG/nvUBrqn6+m/+u84oPCv0F7PbOBIrbRGwUCj3ETBrXKYneJGqS3TE2R8TVO49lsJ3GIyfhFSA7qsbTD+3dCu6Z; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cUKhu-0006GW-Id; Thu, 19 Jan 2017 22:57:22 +0100 From: David Engster To: Edward John Steere Cc: Stephen Leake , Eli Zaretskii , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87h94vdj3n.fsf@gmail.com> (Edward John Steere's message of "Thu, 19 Jan 2017 20:01:48 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Thu, 19 Jan 2017 22:57:18 +0100 Message-ID: <87o9z2sog1.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 21:57:35 -0000 Edward John Steere writes: >> Things have gotten easier since the actual ChangeLog files get generated >> from the commit message. I would try to manually commit the changes with >> proper commit messages, so we would retain the history with the >> exception of the date of the change, which would be from the day of the >> merge. >> >> -David > > This sounds like a lot of work and the outcome sounds right. It's not that bad. 'format-patch' gives me a nice list of patches where I can correct the paths with 'sed' and fix up the commit messages. It's only about 100 patches, so I don't think it will take long. > As I said in my previous email I'll make a start on the tests. That's great, thanks! I'll push a branch with my progress soon. -David From MAILER-DAEMON Thu Jan 19 17:29:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cULDA-00069v-Hg for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 17:29:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55506) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cULD8-00069a-BS for emacs-devel@gnu.org; Thu, 19 Jan 2017 17:29:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cULD5-0006KI-5t for emacs-devel@gnu.org; Thu, 19 Jan 2017 17:29:38 -0500 Received: from mail-it0-x242.google.com ([2607:f8b0:4001:c0b::242]:33596) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cULD5-0006JB-1g; Thu, 19 Jan 2017 17:29:35 -0500 Received: by mail-it0-x242.google.com with SMTP id e137so1086038itc.0; Thu, 19 Jan 2017 14:29:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:reply-to:date:in-reply-to :message-id:user-agent:mime-version; bh=YYN3oClOlRM1N2pcdlLtXSfPYMBS6DmujpMtMjvU/n4=; b=Ge+/vBOmTO0uiBIuGzkCC+xkMCldGl12sDFLs/GfDAhXyIVkVnBxAbhXVRNEEQqUHa OwFWd3ZvyCOangpOgEJozJmbvCM94xAB2zKbPDA6XFCf3u3cvHjviYaPMC7z8rPYGYmH YYBTRefUuxfPAh8KNIPitMFEIn978fFzYjklmaVpC0b0WraQtR93CpOcTpJTonff5KFr o6A5078UV+F0XqWFbK58+0KTMGybpTQxQJqphnRPPzxu/cvNaUTJBJnrjmYUUBKYYhLf EgbOfETnIRj3DGjBcCjQjMlUMgOuZ9UPf0dgq2Wb2Q5Eq3EY6bvcIeEqvtSYemBHuY3r vdRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:reply-to :date:in-reply-to:message-id:user-agent:mime-version; bh=YYN3oClOlRM1N2pcdlLtXSfPYMBS6DmujpMtMjvU/n4=; b=n5qNxEFNhOXtbSh96bobVWD1KlS/2a+pulJvvGCu10lj29EjPjwTkXSqhRERtDPYih zHPceq4NEV7Fr0mDEB0++8/KBRmY/cF43Yx506sV6ZCT55To1tkhjzkzjtNvV9LbrEaT i7ZgspxGWyZa5EtGuFwspOI0qnSTNGOs7ZbYzllecDvZFTIkbg3cLIbFh8nCTDvlLHIA fbDdHC9SZG4glfl5w5OHwGc9CxO2TSrjZNNcp4jKG1HNr7NpibY/6r8eJGlvO+66murH G/UlyfOSuOZQCEYdQj6ZwCUQxBkfJUjqVaQezpymnA0xb09lVvmhlsGE3t4gpsBT3dh8 +XqQ== X-Gm-Message-State: AIkVDXKLOiAH2VyFt+oKRo+rfNmIhmsUzf8ZHUFRwklGvg2vZ3dOmKP8lpU0hndLtgSJvQ== X-Received: by 10.36.26.9 with SMTP id 9mr902749iti.25.1484864972914; Thu, 19 Jan 2017 14:29:32 -0800 (PST) Received: from kwork (74-92-190-114-Illinois.hfc.comcastbusiness.net. [74.92.190.114]) by smtp.gmail.com with ESMTPSA id x128sm313366ite.11.2017.01.19.14.29.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 19 Jan 2017 14:29:32 -0800 (PST) Sender: Karl Fogel From: Karl Fogel To: David Engster Cc: Edward John Steere , Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> Reply-To: Karl Fogel Date: Thu, 19 Jan 2017 16:29:31 -0600 In-Reply-To: <87o9z2sog1.fsf@engster.org> (David Engster's message of "Thu, 19 Jan 2017 22:57:18 +0100") Message-ID: <87vataadkk.fsf@red-bean.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c0b::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 22:29:39 -0000 David Engster writes: >Edward John Steere writes: >>> Things have gotten easier since the actual ChangeLog files get generated >>> from the commit message. I would try to manually commit the changes with >>> proper commit messages, so we would retain the history with the >>> exception of the date of the change, which would be from the day of the >>> merge. >>> >>> -David >> >> This sounds like a lot of work and the outcome sounds right. > >It's not that bad. 'format-patch' gives me a nice list of patches where >I can correct the paths with 'sed' and fix up the commit messages. It's >only about 100 patches, so I don't think it will take long. Regarding the earlier point about retaining history "with the exception of the date of the change": 'git commit' takes an optional '--date' option: --date= Override the author date used in the commit. So even the date of each change could be correct. Best regards, -Karl From MAILER-DAEMON Thu Jan 19 17:44:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cULR9-0002jb-DN for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 17:44:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59908) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cULR7-0002jR-KE for emacs-devel@gnu.org; Thu, 19 Jan 2017 17:44:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cULR6-0006nJ-NY for emacs-devel@gnu.org; Thu, 19 Jan 2017 17:44:05 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49426) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cULQz-0006go-KK; Thu, 19 Jan 2017 17:43:57 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cULQy-0001q7-VT; Thu, 19 Jan 2017 17:43:57 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: John Wiegley CC: simenheg@gmail.com, emacs-devel@gnu.org, tom@tromey.com In-reply-to: (message from John Wiegley on Wed, 18 Jan 2017 19:53:33 -0800) Subject: Re: Referring users to external web pages Reply-to: rms@gnu.org References: <1484675329.1861.1@smtp.gmail.com> Message-Id: Date: Thu, 19 Jan 2017 17:43:56 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 22:44:06 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > SH> Is there a policy for referring users to external web pages in Emacs, or > SH> can we go ahead? > SH> The [documentation] at MDN is licensed under CC-BY-SA, if that matters. > This will have to be decided by Richard, or someone at the FSF. That documentation is free, so it is ok for us to recommend it. There is no ethical issue in having a special function to access those pages. Technically, though, if users need to remember that function's name, this feature is more complexity than it is worth. Can you find a way to make it automatic so that users don't have anything extra to remember? Also, we don't want to pressure users in the direction of consulting material over the net rather than having a local copy. So please make the function also work with a local copy, if there is a local copy. By the way: Please don't use the word "content" to refer to published works. That term disparages those works. See https://gnu.org/philosophy/words-to-avoid.html. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Thu Jan 19 17:48:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cULVH-0004aL-B0 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 17:48:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54373) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUJGq-0006ov-IN for emacs-devel@gnu.org; Thu, 19 Jan 2017 15:25:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUJGn-0003ng-Et for emacs-devel@gnu.org; Thu, 19 Jan 2017 15:25:20 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:38049) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUJGn-0003n8-7o for emacs-devel@gnu.org; Thu, 19 Jan 2017 15:25:17 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 6CEAA20AC4 for ; Thu, 19 Jan 2017 15:25:16 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute6.internal (MEProxy); Thu, 19 Jan 2017 15:25:16 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=writequit.org; h= content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=fdF0gn7xNv6vs3ZhRAsdbd79zaM=; b=G7Oa1Z eHLEDi5oOHdvX9wmNq7H4O8cJAssCV2HzMCs1JkD2DK6Z8yp8fNDYss+9B2XHhT8 cYtLvsr4I/it+rzR5cimWgdiikRvkQ3KPOHW0zh9CQU0tb44erA7FxXvVjOwQW4A O1wbsfEydKbX3EIzzd/pegEHeWMFRJyVfn4tM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=fdF0gn7xNv6vs3 ZhRAsdbd79zaM=; b=PnaJWgxcyO1xE2Eu72rK5OqPfBx3skNVeEIYLcWbAluHyT 6B0jwR4B9XjXn7ABdDp4cVzZj8t4HXkW3dcX2IVxZGYAQEVd96e6gjxFdpOmCau3 fL1CfuoF6lN3Uzd9o8qxgCrnwDT81LJ3vT3+sMWi86MsFvXBxqL9xgHP5+L/Y= X-ME-Sender: X-Sasl-enc: XQVOmok0rEPN9OAbC8QrwvCMViWSWZEo74W7MLUPCQJ+ 1484857516 Received: from localhost (unknown [63.76.231.82]) by mail.messagingengine.com (Postfix) with ESMTPA id 233747E660 for ; Thu, 19 Jan 2017 15:25:16 -0500 (EST) From: Lee Hinman To: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> <877f5suj4g.fsf@engster.org> <87lgu7djkb.fsf@gmail.com> Date: Thu, 19 Jan 2017 13:25:15 -0700 In-Reply-To: <87lgu7djkb.fsf@gmail.com> (Edward John Steere's message of "Thu, 19 Jan 2017 19:51:48 +0200") Message-ID: <87y3y6bxw4.fsf@writequit.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-Mailman-Approved-At: Thu, 19 Jan 2017 17:48:19 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 20:25:21 -0000 Edward John Steere writes: >> Instead, we should try to make it more modular and put support for >> certain languages and project types into separate ELPA projects. This >> would also make it easier to share maintainership of CEDET. >> >> -David > > I couldn't agree more on this point. I also think that many users are > itching to improve the aspects of CEDET which they use and that a move > like this would make strides in making the project accessible to those > kinds of contributions. Let's get this merge done so that we can get > cracking on the ELPA projects too! :-) I just sent off my contribution email to the FSF specifically so I could help with this, so hopefully it moves forward! From MAILER-DAEMON Thu Jan 19 18:06:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cULmf-0001qV-I2 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 18:06:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cULmd-0001qO-Ld for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:06:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cULma-0008W2-FS for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:06:19 -0500 Received: from gproxy8-pub.mail.unifiedlayer.com ([67.222.33.93]:47530) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cULma-0008Kh-59 for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:06:16 -0500 Received: (qmail 8049 invoked by uid 0); 19 Jan 2017 23:05:48 -0000 Received: from unknown (HELO cmgw3) (10.0.90.84) by gproxy8.mail.unifiedlayer.com with SMTP; 19 Jan 2017 23:05:48 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id aP5i1u01H2f2jeq01P5lCg; Thu, 19 Jan 2017 16:05:48 -0700 X-Authority-Analysis: v=2.1 cv=YuCcGeoX c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=mDV3o1hIAAAA:8 a=PUiwMLOsCRBAV8y7jT4A:9 a=_FVE-zBwftR9WsbkzFJk:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=UZmehHAuzXONgDGkK1+9SFHUvPblyn5bhlPUonXbhUQ=; b=BpXgUE9/l/gABlo9/33X9NfwPc gI62rnrnbz6K0t40Cc+v5/niYqH7sK4VP1ibFhkgh/2tzq+ChiivkgCLMrQE79sjZn+4a807ThCf+ 8mMJFnd/XWU4D5y0AC0QJKbnT; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:56318 helo=pokyo) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cULm2-0005fB-Do; Thu, 19 Jan 2017 16:05:42 -0700 From: Tom Tromey To: Richard Stallman Cc: John Wiegley , simenheg@gmail.com, emacs-devel@gnu.org, tom@tromey.com Subject: Re: Referring users to external web pages References: <1484675329.1861.1@smtp.gmail.com> X-Attribution: Tom Date: Thu, 19 Jan 2017 16:05:40 -0700 In-Reply-To: (Richard Stallman's message of "Thu, 19 Jan 2017 17:43:56 -0500") Message-ID: <87k29q646z.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cULm2-0005fB-Do X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (pokyo) [174.16.146.181]:56318 X-Source-Auth: tom+tromey.com X-Email-Count: 4 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.222.33.93 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 23:06:20 -0000 >>>>> "RMS" == Richard Stallman writes: RMS> There is no ethical issue in having a special function to access those RMS> pages. Technically, though, if users need to remember that function's RMS> name, this feature is more complexity than it is worth. Can you find RMS> a way to make it automatic so that users don't have anything extra to RMS> remember? The code rebinds `C-h S' in css-mode to use this new function. C-h S is currently info-lookup-symbol, so it seemed analogous. RMS> Also, we don't want to pressure users in the direction of consulting RMS> material over the net rather than having a local copy. So please make RMS> the function also work with a local copy, if there is a local copy. Ok. This makes sense to me, I will make the base URL configurable. As far as I know there's no commonly-installed, free CSS documentation. Normally I'd write this code to look for an installed copy first, but I don't think there's one to look for. thanks, Tom From MAILER-DAEMON Thu Jan 19 18:34:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUME4-0007VR-K8 for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 18:34:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45164) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUME2-0007VJ-CG for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:34:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUMDy-0003nf-ES for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:34:38 -0500 Received: from mout.kundenserver.de ([217.72.192.74]:50815) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUMDy-0003lR-5Q for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:34:34 -0500 Received: from [192.168.1.82] ([109.24.225.43]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.184]) with ESMTPSA (Nemesis) id 0Ld3z6-1c48E13ebY-00iChB for ; Fri, 20 Jan 2017 00:34:29 +0100 Subject: Re: Referring users to external web pages To: emacs-devel@gnu.org References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> Date: Thu, 19 Jan 2017 18:34:18 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87k29q646z.fsf@tromey.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="V3iAnoxQRgEpKLUTVbUACvDVNWNleGOc9" X-Provags-ID: V03:K0:t6FpNbbnlpEL/s5UMWeBYUoTqHaDwDUOalMZTLX+aUrzwgwU0TJ spgY6c2QR2K8JoEy9TE6zZJ/eYjsRXHuiQNNhCtrD4wUBoNt5OLW1dxD3owcQ9beMkc2MbL 4vmk3aajUcJirowjLj0xNlfr0xrsOcqCKYu7HpClsHAuX7QgtWdcnTFl5KGrQbaZe8yA5Kl Z0GBt4AI/iYt0BWyggUXQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:qQD9E1Sxpio=:z3IGwU19OkB/Rh4Dw8gbtQ RgxqiVJ2dufc8QTNVuzv4VPwuvB0czvAT79c7rlIQDA4raccsoszgi5wuw2veKEu8sSsEzAPJ J27zcv8N5D7PwcuPW8ketqIFhP/pCSpQT58vDaN5pTheqqoGbgHBVBLWF/xqRLkFApQOg6y/1 X5ZR5Z6mA9Q4cksQ5wOCY89Rp/Kz9HCTqzTv113Atu+GqJaFejkaEzS6Ux1ykCcfTr3rzNBy/ LQ/N01OuGXvu0AD/BBgbCRTWHqJBGI5dUau4qGbDapNbDomNtGRYLAYz+eope6F4RUgNAKjVn 5o9wDaN/JS2J8jBB3zX7DU0o0rXYGC64aZGfK5Y7QVvn6GeY2A5ZcmF81UZJC3ZRSdsFbfcsU nRzq2+8qaa2QubAh7YHyckEOAY81vGL5m4ub7hqMxh1uyF6srmOWmdSPxoRU/4rJNtAkEpL2V yhYb0FuN6JFMDTFVWmIo9V0u94vXBf93cvgfsYE6pYcvAhKWhSuJKJ46vOj/5/BI+iDmKoSBU li+IbAiKDBOmKOVjj2IlTZ/Y7TI0/pb+6rm6Zm1LjgFXUF78wJ1EWWjIe9yAAze/eqZ7xfffa EDLHYTjVm69FnGTgT3CdJwTOHus/2uz0vD5/WS2c1qhWmqyVLaVMyao1jF7ith/NgMLw8b4f4 crvzw1wzeGc1/6tMI+nRTbmwz1KHfpkt2plTC0YS2DfUohNvEpoIMGfU9cU20TRh4guA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.74 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 23:34:39 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --V3iAnoxQRgEpKLUTVbUACvDVNWNleGOc9 Content-Type: multipart/mixed; boundary="m08hUGCbgHuE2idFjmFPld5roONllUxev"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: emacs-devel@gnu.org Message-ID: <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> Subject: Re: Referring users to external web pages References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> In-Reply-To: <87k29q646z.fsf@tromey.com> --m08hUGCbgHuE2idFjmFPld5roONllUxev Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 2017-01-19 18:05, Tom Tromey wrote: > As far as I know there's no commonly-installed, free CSS documentation.= > Normally I'd write this code to look for an installed copy first, but I= > don't think there's one to look for. I wonder how easy it would be to repackage MDN's documentation as an info= manual. --m08hUGCbgHuE2idFjmFPld5roONllUxev-- --V3iAnoxQRgEpKLUTVbUACvDVNWNleGOc9 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 iQIcBAEBCAAGBQJYgU0FAAoJEPqg+cTm90wj6FoP/Rc8icW+I+8AU09tTBIQbVTi Qxp833/mXR6fUGAZa4CK2XR3TPz+8KZv6SwKAWuexXCbL+GhdN/p9ZG8Cmgadbm2 w5wwJhL1R54ejNZkr0OFZrRrlqjX5/8gXR6Y91+UJnc4Lm01Z0r/zyjjYPFXcoQs QITZ1r/4NhbAOy0REaT7J0aopjOB+xhcRxMitbQ+ivijFSJ0YEP5Kbg97assgfUU bCq56dzdsh6Cva68C02zxYzKc+2XjJP0qzSfbtwcEaFkpSvzhvBPca7d1kBsa13I uF2wcsEqLlHECb5oHhZv2A/uSgmhkLCNP4DTC3eXllEHuRW0xGT6IDd4hhAO0Cj+ wNcr8mIM5J/Ie18JfD8gfZw9pGPw6HFVNrDumcSfxjN0VE2JBbCUvBeKVoQgzjOa JusCPRKRtoLuTO8SQHGJgjqkw/tA3eg4kc1W4dt7wrZeJepH3MrDRgwjGcP8xAJE S8FjLMcjtfLq5OFQ/lav0Knvgi+fJYj+qwA0sxfxemGL1956XK2VUCfkDcU/eSSq Ve17X+ejRDa8yLagRjrxzCuolO0Lk85omuAR04MMxBZQ6YWr1nBQSs5Sh9znJBgX eDxqdGlDoEJRSAPeQlhMIotxsfqK26zyHaBTQzLMmXv4NpuuLwcOy4Lg+BQ8YPxN vDJ5mOGu3wqMEiH+xs52 =SSvI -----END PGP SIGNATURE----- --V3iAnoxQRgEpKLUTVbUACvDVNWNleGOc9-- From MAILER-DAEMON Thu Jan 19 18:53:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUMVq-0002QC-IZ for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 18:53:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54023) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUMVn-0002Q3-Dm for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:53:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUMVk-0004xz-40 for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:52:59 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:42978 helo=homiemail-a23.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUMVj-0004wN-To for emacs-devel@gnu.org; Thu, 19 Jan 2017 18:52:56 -0500 Received: from homiemail-a23.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a23.g.dreamhost.com (Postfix) with ESMTP id A91A84B006D; Thu, 19 Jan 2017 15:52:52 -0800 (PST) Received: from localhost.linkov.net (m83-191-204-220.cust.tele2.ee [83.191.204.220]) (Authenticated sender: jurta@jurta.org) by homiemail-a23.g.dreamhost.com (Postfix) with ESMTPA id D798E4B0063; Thu, 19 Jan 2017 15:52:51 -0800 (PST) From: Juri Linkov To: Tino Calancha Cc: Emacs developers Subject: Re: [patch] Run occur command restricted to a region Organization: LINKOV.NET References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> Date: Fri, 20 Jan 2017 01:51:32 +0200 In-Reply-To: (Tino Calancha's message of "Wed, 18 Jan 2017 20:04:16 +0900 (JST)") Message-ID: <87r33ywquz.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-Received-From: 69.163.253.7 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 23:53:00 -0000 >> See the updated patch. Play with it and let me know how you see it. >> In my case, just the first part of the patch, i.e., to run `occur' >> restricted to the region is all that i need. > > do you have any preference on the proposed patches? Please see the thread regarding the region argument: http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00044.html i.e. a new convention is to add a single arg =E2=80=98region=E2=80=99 instead of the =E2=80=98start=E2=80=99/=E2=80=98end=E2=80=99 pair. Could you try to update your patch accordingly? From MAILER-DAEMON Thu Jan 19 20:41:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUOCe-0006SS-Di for mharc-emacs-devel@gnu.org; Thu, 19 Jan 2017 20:41:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUOCb-0006SL-Gx for emacs-devel@gnu.org; Thu, 19 Jan 2017 20:41:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUOCa-00025P-CS for emacs-devel@gnu.org; Thu, 19 Jan 2017 20:41:17 -0500 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]:36427) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUOCa-00023f-4N for emacs-devel@gnu.org; Thu, 19 Jan 2017 20:41:16 -0500 Received: by mail-wm0-x235.google.com with SMTP id c85so18222185wmi.1 for ; Thu, 19 Jan 2017 17:41:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=E/1p7yas6urL2l4d1dy3fvwr+t3kur7B6X71WCXyBUI=; b=HZJLOe1wCMTbooeb4lbmwNjvyNNoolyzEo6J0tB4BBnWZCCBsU6QmfT/zKjN1eEzn+ 3DYpSTdhfPpCC3yIBz9mfG0PqZBA3x+F59PASn6e0eVrBoCNW8CYesr5xtR9p9v+sSHP 8E7MwRe46y1DP01DMsXgv5obkU4TgvF3+lsFpgVOnz2fP8HWqpVBX1MITB1AXmXpFtzF rDO132vELYQTB6EX9GoThdEQCu0L4YNZx9bDDU7/j8sTOrNVVhKCDRfFw0GXegknGSQk PIrsQ85NLaWJ1D/PsSEQXIgOBCUGocgqNTZktqsKApsa7qetdFg1iJ3Ckrzard7JHTkl 2Fdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=E/1p7yas6urL2l4d1dy3fvwr+t3kur7B6X71WCXyBUI=; b=dYyZJbiTj8Zuq23LMvJDSxXlX2Ni0CHirtC72pl6jET34Ubs6qJvB16Ch58m++NiFy hxNMhH5F/TGZTJXVQbeuuWqBS0St1XtHOYlVg+IQnKLK2hlUaFXeHxyGLkhR1mwaKSmB PPqNsu+6+/lZreCuxHvXbZ5fnNwJp+W0x6lGJzODiXgTFfjX1qxPvKEUmYBjtrIx1g7H ApHsHy5c2VzUajC873OInac4JQMgNJwrtCfao3p2xkqF7VVe0C9Ty1L/0mWnwUKtZzfJ OR1pn5cO+ofqUX/XViueXsFuWVAEUPW43yQCb/dgDB0BNbFvPB5YpIv7lR3g5I2PVVMB aoJw== X-Gm-Message-State: AIkVDXK0cPHg+9s+NQt+Bs/OkldH3L5XZuelveHaP2GG6Mk4SMU9d+B9uSyH7NteertN/JL07BkWIey18skGAg== X-Received: by 10.223.153.15 with SMTP id x15mr9404418wrb.179.1484876473070; Thu, 19 Jan 2017 17:41:13 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Thu, 19 Jan 2017 17:40:32 -0800 (PST) From: Juanma Barranquero Date: Fri, 20 Jan 2017 02:40:32 +0100 Message-ID: Subject: 64-bit build on Windows To: Emacs developers Content-Type: multipart/alternative; boundary=f403045d5d72b6770505467cbe4b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 01:41:18 -0000 --f403045d5d72b6770505467cbe4b Content-Type: text/plain; charset=UTF-8 Hi. I've been able to build 64-bit Emacs on Windows with MSYS2. Generally, things went smoothly, except for a couple of small problems. This fragment in nt/INSTALL.64: Note also that we need to disable Imagemagick because Emacs does not yet support it on Windows. PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ ./configure --prefix=/c/emacs/emacs-25 --without-imagemagick is entirely correct, but confusing if you happen to read it too quickly or carelessly (as I did). The note talks about Imagemagick, but the sample command also includes the setting of PKG_CONFIG_PATH (the only time that pkg-config is mentioned in the file). So my brain dismissed the PKG_CONFIG_PATH line, and went straight for the "./configure [...] --without-imagemagick" part. That didn't end too well. I also used msys2_shell.cmd (though nt/INSTALL.W64 clearly says not to) and got into trouble with the guessed build machine. To be fair, I was misled because nt/INSTALL.64 talks about mingw64_shell.bat, and that file doesn't exist anymore, at least on the default MSYS2 setup you get by following our suggested step-by-step guide. There are new executables mingw32.exe and mingw64.exe, and using the latter I finished the build without further trouble. But surely nt/INSTALL.64 should be fixed to refer to the new launchers, or perhaps include a pointer to https://sourceforge.net/p/msys2/wiki/Launchers/. Juanma --f403045d5d72b6770505467cbe4b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi.

I've been able to build 64-bit Emacs on Win= dows with MSYS2. Generally, things went smoothly, except for a couple of sm= all problems.


This fragment in nt/INSTALL.64:

=C2=A0 Note also that we need to disable Imagemag= ick because Emacs does not yet
=C2=A0 support it on Windows.

=C2= =A0 =C2=A0 PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig \
=C2=A0 =C2=A0 ./co= nfigure --prefix=3D/c/emacs/emacs-25 --without-imagemagick

is= entirely correct, but confusing if you happen to read it too quickly or ca= relessly (as I did). The note talks about Imagemagick, but the sample comma= nd also includes the setting of PKG_CONFIG_PATH (the only time that pkg-con= fig is mentioned in the file). So my brain dismissed the PKG_CONFIG_PATH li= ne, and went straight for the "./configure [...] --without-imagemagick= " part. That didn't end too well.


I also used msys2_she= ll.cmd (though nt/INSTALL.W64 clearly says not to) and got into trouble wit= h the guessed build machine. To be fair, I was misled because nt/INSTALL.64= talks about mingw64_shell.bat, and that file doesn't exist anymore, at= least on the default MSYS2 setup you get by following our suggested step-b= y-step guide. There are new executables mingw32.exe and mingw64.exe, and us= ing the latter I finished the build without further trouble. But surely nt/= INSTALL.64 should be fixed to refer to the new launchers, or perhaps includ= e a pointer to=C2=A0https://sourceforge.net/p/msys2/wiki/Launchers/.

=C2=A0 =C2=A0 Juanma
--f403045d5d72b6770505467cbe4b-- From MAILER-DAEMON Fri Jan 20 01:54:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUT6B-0000em-KS for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 01:54:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40447) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUT68-0000eQ-I8 for emacs-devel@gnu.org; Fri, 20 Jan 2017 01:54:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUT65-0004sw-Fx for emacs-devel@gnu.org; Fri, 20 Jan 2017 01:54:56 -0500 Received: from mail.mojserwer.eu ([195.110.48.8]:47855) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUT65-0004qm-91 for emacs-devel@gnu.org; Fri, 20 Jan 2017 01:54:53 -0500 Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 33C5BE6748; Fri, 20 Jan 2017 07:54:47 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mail.mojserwer.eu Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id g5Q6H5OmmK6H; Fri, 20 Jan 2017 07:54:43 +0100 (CET) Received: from localhost (static-dwadziewiec-jedenpiec7.echostar.pl [109.232.29.157]) by mail.mojserwer.eu (Postfix) with ESMTPSA id 6D01FE63B3; Fri, 20 Jan 2017 07:54:43 +0100 (CET) References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> User-agent: mu4e 0.9.19; emacs 26.0.50.3 From: Marcin Borkowski To: =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel Cc: emacs-devel@gnu.org Subject: Re: Referring users to external web pages In-reply-to: <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> Date: Fri, 20 Jan 2017 07:54:37 +0100 Message-ID: <87o9z2b4r6.fsf@mbork.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.110.48.8 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 06:54:57 -0000 On 2017-01-20, at 00:34, Cl=C3=A9ment Pit--Claudel wrote: > On 2017-01-19 18:05, Tom Tromey wrote: >> As far as I know there's no commonly-installed, free CSS documentation= . >> Normally I'd write this code to look for an installed copy first, but = I >> don't think there's one to look for. > > I wonder how easy it would be to repackage MDN's documentation as an in= fo manual. And if someone is going to do that, please also take into account the JavaScript docs. Making C-h S (and eldoc, for that matter) work with standard JS functions would be really great. Best, -- Marcin Borkowski From MAILER-DAEMON Fri Jan 20 03:07:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUUDs-0006AS-OH for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 03:07:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50292) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUUDq-0006AK-3H for emacs-devel@gnu.org; Fri, 20 Jan 2017 03:06:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUUDl-0004Ti-Vx for emacs-devel@gnu.org; Fri, 20 Jan 2017 03:06:58 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54409) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUUDl-0004Te-Su; Fri, 20 Jan 2017 03:06:53 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4104 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUUDk-0001eE-Ut; Fri, 20 Jan 2017 03:06:53 -0500 Date: Fri, 20 Jan 2017 10:06:44 +0200 Message-Id: <838tq66tpn.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Fri, 20 Jan 2017 02:40:32 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 08:06:59 -0000 > From: Juanma Barranquero > Date: Fri, 20 Jan 2017 02:40:32 +0100 > > I've been able to build 64-bit Emacs on Windows with MSYS2. Generally, things went smoothly, except for a > couple of small problems. Feel free to suggest changes for INSTALL.W64. Thanks. From MAILER-DAEMON Fri Jan 20 03:54:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUUxq-0005Ls-Mc for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 03:54:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUUxn-0005Lc-Rk for emacs-devel@gnu.org; Fri, 20 Jan 2017 03:54:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUUxk-000217-QF for emacs-devel@gnu.org; Fri, 20 Jan 2017 03:54:27 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54865) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUUxj-00020t-MK for emacs-devel@gnu.org; Fri, 20 Jan 2017 03:54:24 -0500 Received: from p54aceb94.dip0.t-ipconnect.de ([84.172.235.148]:49994 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cUUxi-0000S3-RZ; Fri, 20 Jan 2017 03:54:23 -0500 From: Arash Esbati To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Hunspell 1.6 on Msys2 References: <86a8apjprg.fsf@gnu.org> <83lgu982bb.fsf@gnu.org> <861sw0k6ps.fsf@gnu.org> <83h94w8jp9.fsf@gnu.org> <86fukg5jzk.fsf@gnu.org> <8337gg8c1m.fsf@gnu.org> <86inpcmcuq.fsf@gnu.org> <83wpds6uxq.fsf@gnu.org> <83vatc6ur2.fsf@gnu.org> <86bmv4m9e2.fsf@gnu.org> <83shog6sm0.fsf@gnu.org> <86shofju89.fsf@gnu.org> <83mven6o2e.fsf@gnu.org> Date: Fri, 20 Jan 2017 09:54:10 +0100 In-Reply-To: <83mven6o2e.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 19 Jan 2017 17:56:25 +0200") Message-ID: <867f5q9knh.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 08:54:28 -0000 Eli Zaretskii writes: > This is a bug in Hunspell 1.6: it seems to ignore the "-i UTF-8" > command-line switch, and sends its output in Latin-1 (perhaps because > the de_DE dictionary uses that encoding). Many thanks for looking into this again and the description. I will see how to tell Hunspell developers about this (I don't have a Github account). Best, Arash From MAILER-DAEMON Fri Jan 20 04:10:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUVD7-0001z5-DG for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 04:10:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60967) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUVD4-0001yy-Uj for emacs-devel@gnu.org; Fri, 20 Jan 2017 04:10:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUVCz-00010c-WB for emacs-devel@gnu.org; Fri, 20 Jan 2017 04:10:14 -0500 Received: from dancol.org ([2600:3c01::f03c:91ff:fedf:adf3]:47020) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUVCz-0000zx-Po for emacs-devel@gnu.org; Fri, 20 Jan 2017 04:10:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:References:Subject:Cc:To:From; bh=8xT7ZS5C5Mkup8bttNdJJtNlS6fCTs4hjwu5lbdVOeU=; b=EUfXMo6lP/znKCDvB8RqkhAXo5fdcUe6bG9EXON8VpR85cjQjEJEvvlciu7RW/B6HQcqVHMjbvVxsns31vOOBQBkIMBJy0RukK+vbaJWWIUCpdlDPO8e9StR1U3k5XhNeyiuqjiuWzTFup2R/duLgNvY7zXqULsohrRDi3BJvnAcIWJ7aGWs8vdXm3pXj8bOLHFzTr9dbEtraafDFsYAmTXWlbrfTOG3RzkxhGBX7gzkqgU9C7j3tIP4ul2OghxS9kK762Lb0bj7KxZqwjLEB5otAtEhq20vPIWbCZ14jayuZRSZvdaQbNuMX+FT239sd8e0bkfWSAWOH4zwgMmZ+w==; Received: from c-73-140-245-253.hsd1.wa.comcast.net ([73.140.245.253] helo=thule.roam.corp.google.com) by dancol.org with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.84_2) (envelope-from ) id 1cUVCw-0004Wj-Ph; Fri, 20 Jan 2017 01:10:06 -0800 From: Daniel Colascione To: Stefan Monnier Cc: emacs-devel@gnu.org, Vibhav Pant Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> Date: Fri, 20 Jan 2017 01:10:02 -0800 In-Reply-To: (Stefan Monnier's message of "Wed, 18 Jan 2017 12:48:53 -0500") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2600:3c01::f03c:91ff:fedf:adf3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 09:10:16 -0000 On Wed, Jan 18 2017, Stefan Monnier wrote: >> * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch >> Fgethash type checks the provided table object, which is unnecessary >> for compiled bytecode. > > While it's true that we can cause a core dump of Emacs if we feed it an > invalid .elc file, that's a "feature" I'd rather shrink rather > than generalize. Why? If anything, the opposite direction is the right one. elc files should be tightly coupled to the Emacs that built them so that they can be specialized for specific machines. You could imagine them containing, say, saved JIT traces. From MAILER-DAEMON Fri Jan 20 06:19:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUXEB-0001jE-Jz for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 06:19:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54545) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUXE9-0001j1-MB for emacs-devel@gnu.org; Fri, 20 Jan 2017 06:19:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUXE8-0000cS-K7 for emacs-devel@gnu.org; Fri, 20 Jan 2017 06:19:29 -0500 Received: from mail-ot0-x233.google.com ([2607:f8b0:4003:c0f::233]:33501) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUXE8-0000cE-Eu for emacs-devel@gnu.org; Fri, 20 Jan 2017 06:19:28 -0500 Received: by mail-ot0-x233.google.com with SMTP id 73so53394426otj.0 for ; Fri, 20 Jan 2017 03:19:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=lzKlMnsb4e09Dcw1gP6tuB04bbxcabpSabXsdy/71xc=; b=KJZZnzchRYe+nRfyuFUFJc9awLNeaJ9rayk6k2VcVTQNoUknsugKIHn1ZZGrROIjOf sb4IbEb47heYZl5tPlhPD6wwVhYw5OPEQeQ00ZjCI8LKcCtG6QsqRIT8k8VIjazd23/O LvkSaMiIzByzRmV1YZMJVrfHBgQa7BBRWHiAoBCkeOvWcwrH0H+7tIGWgPvaWSARErz8 kFb3aRh2AdJd+i3Pxt0OkQ39O0cs1tBFuakJ+6Az6wRp0IpaejPPLd7UBD37R4xGSNnN RIQMUPk9i1y7bPwjkWYEfJZhwXzOgeYkRgAn7ROLS7J+zwvixCh6Ydr13UgLqHWFz6am emDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=lzKlMnsb4e09Dcw1gP6tuB04bbxcabpSabXsdy/71xc=; b=Goy+sd96spSOm0dzdfMoQUzze1eaFUkKkr7LvVM541nzAHAuR6dEiPxWLeJ1cL00V3 658I5whhbC5WbJT0jatQ4rkuxJ1h3A4HnbKOabtRyShQDlynKbXBLmbyHE1MqAXho3AX Azpl1iK1M+1rxnGhX5JjR0IWGqr28fDmPX/nIjNpLxVgQJGEBelCZlnf6rWC9NzuPjob KXRV0oFdeD78UUpc2tcoVu+CiZ2Sp7FBLSRVjsBSlxWvIJx01ztvrNft3dEz1kBRILU+ O3+l9joKuHdga2NdgcIrc0gq6AbdAUggb76IT2yiEu8zxusx2uQQpp3TBtmW2ujnrOmu XZHw== X-Gm-Message-State: AIkVDXL9qy0laUv4va4yLWHZ4df448FTmveSEgijMVDseYnxeNjlnUve27RTYDfyc9AJjqyp6GX6cvqaX/rarQ== X-Received: by 10.157.3.209 with SMTP id f75mr6231596otf.261.1484911167709; Fri, 20 Jan 2017 03:19:27 -0800 (PST) MIME-Version: 1.0 References: <1484353663.1309303.847275520.34F44A3C@webmail.messagingengine.com> In-Reply-To: From: Philipp Stephani Date: Fri, 20 Jan 2017 11:19:17 +0000 Message-ID: Subject: Re: Performing a 4 way diff with ediff To: Dan LaManna , emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=94eb2c03c8ceacb2b4054684d2af X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 11:19:31 -0000 --94eb2c03c8ceacb2b4054684d2af Content-Type: text/plain; charset=UTF-8 John Wiegley schrieb am Sa., 14. Jan. 2017 um 01:55 Uhr: > >>>>> "DL" == Dan LaManna writes: > > DL> I've been using ediff to resolve merge conflicts in git and it has the > DL> typical windows: ours, theirs, and merged results. However, I often > want > DL> to see a 4th window (I believe this is called a 4 way diff) which is > the > DL> common ancestor of ours and theirs (A and B). I believe such > functionality > DL> exists in vimdiff - is there an ediff (or other emacs tool) offering > DL> similar functionality to this? > > Based on this stack overflow answer, maybe not yet: > > > http://stackoverflow.com/questions/15587595/can-ediff-merge-simultaneously-show-the-ancestor-a-b-and-merge-buffers > Filed as bug: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25493 --94eb2c03c8ceacb2b4054684d2af Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


John W= iegley <jwiegley@gmail.com>= schrieb am Sa., 14. Jan. 2017 um 01:55=C2=A0Uhr:
>>>>> "DL" =3D=3D Dan LaManna <<= a href=3D"mailto:me@danlamanna.com" class=3D"gmail_msg" target=3D"_blank">m= e@danlamanna.com> writes:

DL> I've been using ediff to resolve merge conflicts in git and it h= as the
DL> typical windows: ours, theirs, and merged results. However, I often = want
DL> to see a 4th window (I believe this is called a 4 way diff) which is= the
DL> common ancestor of ours and theirs (A and B). I believe such functio= nality
DL> exists in vimdiff - is there an ediff (or other emacs tool) offering=
DL> similar functionality to this?

Based on this stack overflow answer, maybe not yet:

http://stackoverflow.com/questions/155875= 95/can-ediff-merge-simultaneously-show-the-ancestor-a-b-and-merge-buffers

--94eb2c03c8ceacb2b4054684d2af-- From MAILER-DAEMON Fri Jan 20 08:38:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUZP9-0001Ix-GP for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 08:38:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55401) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUZP6-0001GM-HB for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:38:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUZP3-0002Xl-Bs for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:38:56 -0500 Received: from mailgw.mycpanelcloud.co.uk ([185.116.214.213]:49332) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUZP3-00028D-1t for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:38:53 -0500 Received: from localhost (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 4F900C4ED9 for ; Fri, 20 Jan 2017 13:37:46 +0000 (GMT) X-Virus-Scanned: by SpamTitan at mycpanelcloud.co.uk Received: from mailgw.mycpanelcloud.co.uk (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 0B220C4ED4 for ; Fri, 20 Jan 2017 13:37:45 +0000 (GMT) Received: from cloud103.planethippo.com (cloud103.planethippo.com [31.216.48.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTPS id 014F7C4E55 for ; Fri, 20 Jan 2017 13:37:44 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=russet.org.uk; s=default; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:References:Subject:To:From:Sender:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=LdEPHJhLD+clY/o9fU5Pdwz06QzXATYdzZj4hCIGz4M=; b=WfKI2YMEUOJOAVaOuZr8jkh6n a/UaYbno89hevowT9wrMN0YmUMnM5kZ6+SUan4wRPdXD27uMNJ+MndmQGyaIYUnuH6rEBujPhQlO2 2yq9/fbux7xIQlRj3bAm70ISDnZlemY8Tg4faD1KryPG34o4uudmKpPhC6nnRYlprAIbStZRlpVBp mwzw9Ohv4UmfN3yE+Wa1EERo2e2pmGEwZsSKnNsxh/o/9dGG0QpG9/ZPMpzEkL5MjATAro9m3eVn/ I+2k85CFZSKtSo0xoZub2BLpuoMWksvrxJxRcEX2CfgVf5k/1Ystgl77LSmCEpTFma1SUx3ySMDaJ 2c/uS1Oxw==; Received: from janus-nat-128-240-225-37.ncl.ac.uk ([128.240.225.37]:52761 helo=russet.org.uk) by cloud103.planethippo.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cUZOJ-000I2H-R7 for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:38:07 +0000 From: phillip.lord@russet.org.uk (Phillip Lord) To: emacs-devel@gnu.org Subject: Re: standard output/error/input streams References: <87wpdxu8yt.fsf@russet.org.uk> Date: Fri, 20 Jan 2017 13:38:07 +0000 In-Reply-To: (John Wiegley's message of "Wed, 18 Jan 2017 23:21:32 -0800") Message-ID: <878tq5c0n4.fsf@russet.org.uk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud103.planethippo.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - russet.org.uk X-Get-Message-Sender-Via: cloud103.planethippo.com: authenticated_id: phillip.lord@russet.org.uk X-Authenticated-Sender: cloud103.planethippo.com: phillip.lord@russet.org.uk X-detected-operating-system: by eggs.gnu.org: FreeBSD 8.x [fuzzy] X-Received-From: 185.116.214.213 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 13:38:57 -0000 John Wiegley writes: >>>>>> "PL" == Phillip Lord writes: > > PL> The main motivation for this is the same as last time; it gives a > PL> communication channel with Emacs which does not involve buffers at any > PL> point. Although, if you search for "Emacs" and "standard output", other > PL> people would like the same thing for other reasons. > > Have you thought of allowing files to be "opened" for direct writing as well? > That is, I'd rather see file handles become a new output stream type, with > stdout and stderr instances of these, than hard-coded streams for only stdout > and stderr. Although, getting cleanup right makes me less certain. Yes, that would be nice I agree, although standard out gives me my main use case, and there is already support for clean up. I'll take a look next maybe. Phil From MAILER-DAEMON Fri Jan 20 08:42:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUZSC-0003wP-Ni for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 08:42:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUZSA-0003vK-Ke for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:42:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUZS7-0004CX-FD for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:42:06 -0500 Received: from mailgw.mycpanelcloud.co.uk ([185.116.214.213]:11873) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUZS7-0004Bb-8R for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:42:03 -0500 Received: from localhost (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 1B910C4E55 for ; Fri, 20 Jan 2017 13:41:39 +0000 (GMT) X-Virus-Scanned: by SpamTitan at mycpanelcloud.co.uk Received: from mailgw.mycpanelcloud.co.uk (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 6A028C4EB0 for ; Fri, 20 Jan 2017 13:41:38 +0000 (GMT) Received: from cloud103.planethippo.com (cloud103.planethippo.com [31.216.48.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTPS id 5D03EC4E52 for ; Fri, 20 Jan 2017 13:41:38 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=russet.org.uk; s=default; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=b41Zo3q6EzEpXwcTStYaRH7k8VKp3SAHmviYRCQW7zY=; b=LC5BlQd9anQ0fdfj6cUmBTMOu Npvx+pGRLNovnRiQoZ430lAz7l+3+MgeH0vWV91MNTJ80juat0giuAb+lkztdarfmVTN0tth5dcAC rFnbGlhYutFkpyO7kTtqmWXOwTio5PuixE86ehUBdmqDF8AgKXu0rm+2zhHJXouAfkwcBlz3D/Y/6 RFIruRstMOFUls0YIRA4mwWaeFY5SfwkmGQdr2H9tWCiUdkJ5aiPHc4zw9vo33EtSeami2sdxGDa1 XYJ7XoMbwHs5QeYLW0biT9aBknXO8H/fFT4pzSvlg5oAcrbNB0Ecy/9/13thrnPgkNxcF5b9exg/A HJE1xFP5A==; Received: from janus-nat-128-240-225-37.ncl.ac.uk ([128.240.225.37]:37387 helo=russet.org.uk) by cloud103.planethippo.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cUZS5-000JjB-5q; Fri, 20 Jan 2017 13:42:01 +0000 From: phillip.lord@russet.org.uk (Phillip Lord) To: Juanma Barranquero Cc: Emacs developers Subject: Re: 64-bit build on Windows References: Date: Fri, 20 Jan 2017 13:42:00 +0000 In-Reply-To: (Juanma Barranquero's message of "Fri, 20 Jan 2017 02:40:32 +0100") Message-ID: <874m0tc0gn.fsf@russet.org.uk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud103.planethippo.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - russet.org.uk X-Get-Message-Sender-Via: cloud103.planethippo.com: authenticated_id: phillip.lord@russet.org.uk X-Authenticated-Sender: cloud103.planethippo.com: phillip.lord@russet.org.uk X-detected-operating-system: by eggs.gnu.org: FreeBSD 8.x [fuzzy] X-Received-From: 185.116.214.213 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 13:42:07 -0000 Juanma Barranquero writes: > I've been able to build 64-bit Emacs on Windows with MSYS2. Generally, > things went smoothly, except for a couple of small problems. > > > This fragment in nt/INSTALL.64: > > Note also that we need to disable Imagemagick because Emacs does not yet > support it on Windows. > > PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ > ./configure --prefix=/c/emacs/emacs-25 --without-imagemagick > > is entirely correct, but confusing if you happen to read it too quickly or > carelessly (as I did). The note talks about Imagemagick, but the sample > command also includes the setting of PKG_CONFIG_PATH (the only time that > pkg-config is mentioned in the file). So my brain dismissed the > PKG_CONFIG_PATH line, and went straight for the "./configure [...] > --without-imagemagick" part. That didn't end too well. Hmmm. Well, I am not using --without-imagemagick for my builds. And, besides, if it is not supported should it not be the default? Phil From MAILER-DAEMON Fri Jan 20 08:49:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUZYt-0001Gw-78 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 08:49:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUZYo-0001CF-6m for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:49:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUZYk-0007S8-VS for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:48:58 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:32912) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUZYk-0007R5-KH for emacs-devel@gnu.org; Fri, 20 Jan 2017 08:48:54 -0500 Received: by mail-pg0-x242.google.com with SMTP id 194so7009493pgd.0 for ; Fri, 20 Jan 2017 05:48:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-transfer-encoding; bh=Yvwomq5zFGGpr1WYIDKmzNFxWcZrLC5Aih6BIW6yxf8=; b=KcSs7aJ96vui5YiKvDsRU+S11JWXLSv36pb0YNBMGsn4Tm9Jrqf64IRoXnbvbkcifh b944zFsyH2i+wENbWoG4un87MN9wu/hCkMCG1nhJbEvQXmcI4kwMv2vW05O2Q4x+3KMu jDwkkwdZGBJpYNsqshv97gzSZ9JSIXuRg4azI7pJLBtpxoEiikUuW2j/TwrkZAQcGjxQ LiwVxlXwGIdAKhR2D0uh5onjPU668y6/j7morvq6SrxMIo19tBcbdR8dOYI7Kg0xqCIL SWJWEK3TsC6lHVCkdFBHJBOfou4Egdgv/ZJ9m7HyVrdILVFSY/Pb1vviKUysyOewnKVG oyqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version:content-transfer-encoding; bh=Yvwomq5zFGGpr1WYIDKmzNFxWcZrLC5Aih6BIW6yxf8=; b=N5LeHjhyI8pwGOiqz8qndW8Zx7QvF5DEuIOMYGxJ/Kv00okFD2yELCzoQRXW2xqjq0 Y9ciutY+Edn4U+pslNFBdEGnWiK3pi95F9/ll9BOur5iOnQhVm5b+l4xF+3CvUdZSJ0B igkEil0OZwt7nUM68h0hNp8WQsanTcZ9x4yQxGj1sOymUHxCCCq1l/k9yZfNxBr7WiCx 7MldVosdaigFgTznmDSd+K16T0jQ3zHOg8ESNv5MBMJ8dWkgxXs25oYqf9mNuA6mj4RH 9PfqrWgWugmXKf3awlQclYDAkjy3JbJfXk2N61fUW2H9H4oFxS+jN2tRZiZ/MXNnlKtM WLeQ== X-Gm-Message-State: AIkVDXI8aijZOdPBh0fSj/K0HlVlijXwWlc9EyhBawiQMhYcn0+Koz/F+7g6FoR5WtOjPQ== X-Received: by 10.98.36.134 with SMTP id k6mr16475692pfk.41.1484920131912; Fri, 20 Jan 2017 05:48:51 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id w16sm17228331pgc.15.2017.01.20.05.48.49 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 05:48:51 -0800 (PST) From: Tino Calancha To: Juri Linkov Cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region In-Reply-To: <87r33ywquz.fsf@mail.linkov.net> (Juri Linkov's message of "Fri, 20 Jan 2017 01:51:32 +0200") References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Date: Fri, 20 Jan 2017 22:48:45 +0900 Message-ID: <87ziilc05e.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 13:49:00 -0000 Juri Linkov writes: >>> See the updated patch. Play with it and let me know how you see it. >>> In my case, just the first part of the patch, i.e., to run `occur' >>> restricted to the region is all that i need. >> >> do you have any preference on the proposed patches? > > Please see the thread regarding the region argument: > http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00044.html > i.e. a new convention is to add a single arg =E2=80=98region=E2=80=99 > instead of the =E2=80=98start=E2=80=99/=E2=80=98end=E2=80=99 pair. > > Could you try to update your patch accordingly? OK. Updated the patch. *) First patch allow `occur' handle the region with the new convention, i.e., region argument instead of BEG, END. **) The second patch add your suggestion on showing highlighted the current line. When there are matches after the current line, the point in *Occur* is set right after such line. I am fine with just adding *). In case we also want **),=20 an option to enable/disable that behaviour might be desirable. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; >From 5d69affd729ceed80de9f1ede37a5c7a541b23d4 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Fri, 20 Jan 2017 22:11:11 +0900 Subject: [PATCH 1/2] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/simple.el (region): New defun. * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional arg REGION; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 46 +++++++++++++++++++++++++++++++--= ---- lisp/simple.el | 3 +++ 5 files changed, 52 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. =20 @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp= -intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings =20 @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. =20 @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index 051b97e146..d4917f402f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -301,6 +301,8 @@ substituted by a home directory by writing it as "/foo:= /:/~/file". * Editing Changes in Emacs 26.1 =20 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..d9c3a4ff3e 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) =20 -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. =20 @@ -1369,6 +1374,10 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. =20 +Optional arg REGION, if non-nil, mean restrict search to the +specified region. Otherwise search the entire buffer. +When REGION is non-nil, it must be a cons (START . END). + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1395,24 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (and (use-region-p) (region)))) + (let* ((start (car region)) + (end (cdr region)) + (in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) =20 (defvar ido-ignore-item-temp-list) =20 @@ -1545,13 +1570,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1711,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (=3D matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1721,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) diff --git a/lisp/simple.el b/lisp/simple.el index f798cd4384..56c4551490 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1015,6 +1015,9 @@ region-extract-function If anything else, delete the region and return its content as a string, after filtering it with `filter-buffer-substring'.") =20 +(defun region () + (funcall region-extract-function 'bounds)) + (defvar region-insert-function (lambda (lines) (let ((first t)) --=20 2.11.0 >From 763ca506fed54afacc30ca1904f0727bf0bf2dbf Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Fri, 20 Jan 2017 22:14:39 +0900 Subject: [PATCH 2/2] Show current line highlighted in *Occur* buffer * lisp/replace.el (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'occur-current-line-face'. Set point on the first matching line after the current one. --- lisp/replace.el | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++-= ---- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index d9c3a4ff3e..ed5cdb718b 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1081,6 +1081,12 @@ occur-mode-find-occurrence-hook :type 'hook :group 'matching) =20 +(defface occur-current-line-face + '((t (:inherit lazy-highlight))) + "Face for highlighting the current line in *Occur* buffer." + :group 'matching + :version "26.1") + (put 'occur-mode 'mode-class 'special) (define-derived-mode occur-mode special-mode "Occur" "Major mode for output from \\[occur]. @@ -1364,6 +1370,9 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) =20 (defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. @@ -1408,7 +1417,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1507,7 +1522,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1559,6 +1575,10 @@ occur-1 (if (=3D count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1571,7 +1591,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1579,12 +1600,16 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1685,6 +1710,17 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and (not multi-occur-p) + (not orig-line-shown-p) + (>=3D curr-line orig-line)) + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1698,6 +1734,17 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (when (and (not multi-occur-p) + (not orig-line-shown-p)) + (with-current-buffer out-buf + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1731,8 +1778,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) --=20 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.6) of 2017-01-20 Repository revision: 82a5e4dc889ecbfa35374616fe9c5edfa23f4504 From MAILER-DAEMON Fri Jan 20 09:33:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUaFS-00054S-24 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 09:33:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41168) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUaFP-00052a-TV for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:33:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUaFM-0005tI-0F for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:32:59 -0500 Received: from [195.159.176.226] (port=53541 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUaFL-0005s2-Pw for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:32:55 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUaEq-0002br-Ju for emacs-devel@gnu.org; Fri, 20 Jan 2017 15:32:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: =?utf-8?Q?=C3=93scar_Fuentes?= Subject: Re: 64-bit build on Windows Date: Fri, 20 Jan 2017 15:32:04 +0100 Lines: 15 Message-ID: <87efzxn6or.fsf@wanadoo.es> References: <874m0tc0gn.fsf@russet.org.uk> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:hRuoJ0cNiSrGgHk42whw6Mx/ovQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 14:33:00 -0000 phillip.lord@russet.org.uk (Phillip Lord) writes: > Hmmm. Well, I am not using --without-imagemagick for my builds. And, > besides, if it is not supported should it not be the default? The problem consists on Emacs' build system not detecting the presence of Imagemagick version 7.x, which is what MSYS2 distributes. Angelo Graziosi submitted a patch on this mailing list 7 days ago but AFAIK it was not incorporated into Emacs yet. FWIW I build Emacs on MSYS2 and --without-imagemagick seems unnecessary. The configure script just says that Imagemagick is absent. I have no idea about PKG_CONFIG_PATH. The MSYS2 recipe does not mention it and seems to work just fine. From MAILER-DAEMON Fri Jan 20 09:53:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUaZ0-0002g6-LA for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 09:53:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUaYx-0002eF-G8 for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:53:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUaYs-0000DL-MH for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:53:11 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:59891) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUaYs-0000Cg-F7 for emacs-devel@gnu.org; Fri, 20 Jan 2017 09:53:06 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DFBQAu3EVY/4WWWxddGwEBAQMBAQEJAQEBgzgBAQEBAR+EW6FWJgGWXoYcBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCw4mBwsUGA0kiHoIrRSLRAEBAQEGAgEkixmKKQWPfIpqknOIJ4Y6SZFGNiB4Ew6DXBwYgWMgiS0BAQE X-IPAS-Result: A0DFBQAu3EVY/4WWWxddGwEBAQMBAQEJAQEBgzgBAQEBAR+EW6FWJgGWXoYcBAICghFEEAECAQEBAQEBAWIohGkBBAFWIwULCw4mBwsUGA0kiHoIrRSLRAEBAQEGAgEkixmKKQWPfIpqknOIJ4Y6SZFGNiB4Ew6DXBwYgWMgiS0BAQE X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="287020315" Received: from 23-91-150-133.cpe.pppoe.ca (HELO pastel.home) ([23.91.150.133]) by smtp.teksavvy.com with ESMTP; 20 Jan 2017 09:53:04 -0500 Received: by pastel.home (Postfix, from userid 20848) id A8EC2655D1; Fri, 20 Jan 2017 09:53:04 -0500 (EST) From: Stefan Monnier To: Daniel Colascione Cc: emacs-devel@gnu.org, Vibhav Pant Subject: Re: [Emacs-diffs] feature/byte-switch 086c4ea: * src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch Message-ID: References: <20170118171311.10996.72260@vcs.savannah.gnu.org> <20170118171311.A84EA220125@vcs.savannah.gnu.org> Date: Fri, 20 Jan 2017 09:53:04 -0500 In-Reply-To: (Daniel Colascione's message of "Fri, 20 Jan 2017 01:10:02 -0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 14:53:12 -0000 > Why? If anything, the opposite direction is the right one. elc files > should be tightly coupled to the Emacs that built them so that they can > be specialized for specific machines. You could imagine them > containing, say, saved JIT traces. But that basically means auto-generating and managing the compiled files, so it's very different from what happens with our .elc files. I would also like to move in the direction you suggest, tho (and get rid of the Elisp interpreter altogether, while we're at it), and we'd then indeed be more free to change the format of byte-code. Stefan From MAILER-DAEMON Fri Jan 20 10:55:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUbWt-0004Jw-M2 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 10:55:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34129) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUbWs-0004Hl-1w for emacs-devel@gnu.org; Fri, 20 Jan 2017 10:55:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUbWo-0008Ue-Ra for emacs-devel@gnu.org; Fri, 20 Jan 2017 10:55:06 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43387) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUbWo-0008Ua-Oe; Fri, 20 Jan 2017 10:55:02 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1220 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUbWn-00052u-NM; Fri, 20 Jan 2017 10:55:02 -0500 Date: Fri, 20 Jan 2017 17:54:52 +0200 Message-Id: <83y3y5681f.fsf@gnu.org> From: Eli Zaretskii To: =?iso-8859-1?Q?=D3scar?= Fuentes CC: emacs-devel@gnu.org In-reply-to: <87efzxn6or.fsf@wanadoo.es> (message from =?iso-8859-1?Q?=D3s?= =?iso-8859-1?Q?car?= Fuentes on Fri, 20 Jan 2017 15:32:04 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 15:55:07 -0000 > From: scar Fuentes > Date: Fri, 20 Jan 2017 15:32:04 +0100 > > phillip.lord@russet.org.uk (Phillip Lord) writes: > > > Hmmm. Well, I am not using --without-imagemagick for my builds. And, > > besides, if it is not supported should it not be the default? > > The problem consists on Emacs' build system not detecting the presence > of Imagemagick version 7.x, which is what MSYS2 distributes. Angelo > Graziosi submitted a patch on this mailing list 7 days ago but AFAIK it > was not incorporated into Emacs yet. > > FWIW I build Emacs on MSYS2 and --without-imagemagick seems unnecessary. > The configure script just says that Imagemagick is absent. There's no problem when Imagemagick is absent. The --without-* switches are only needed when the package is present, but you want to override its automatic detection. AFAIR, the problem with Imagemagick support on Windows is that it can only be supported when linked in statically, so the produced binary can only be safely used on the system where it was built. And on top of that, there's a problem with Imagemagick 7.x, which I think is not specific to Windows. From MAILER-DAEMON Fri Jan 20 11:24:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUbzj-0004ih-AP for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 11:24:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUbzg-0004iA-Oh for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:24:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUbzc-0008Rv-Pf for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:24:52 -0500 Received: from [195.159.176.226] (port=55442 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUbzc-0008Qu-Iv for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:24:48 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUbzP-0004RV-EM for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:24:35 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Referring users to external web pages Date: Fri, 20 Jan 2017 11:24:09 -0500 Lines: 13 Message-ID: References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:14k8CVa3tkyr9RwPUd2yHZwvPbw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 16:24:53 -0000 >> As far as I know there's no commonly-installed, free CSS documentation. >> Normally I'd write this code to look for an installed copy first, but I >> don't think there's one to look for. > I wonder how easy it would be to repackage MDN's documentation as an > info manual. An easier first step might be to make sure that those Mozilla pages get cached locally after you access them, with a fairly long "time before refresh" (and in such a way that subsequent accesses don't need *any* network access). Stefan From MAILER-DAEMON Fri Jan 20 11:30:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUc5B-0000gB-4X for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 11:30:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUc58-0000eX-9k for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:30:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUc54-0003QY-Bj for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:30:30 -0500 Received: from [195.159.176.226] (port=39985 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUc54-0003Pq-50 for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:30:26 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUc4k-0004qV-54 for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:30:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: standard output/error/input streams Date: Fri, 20 Jan 2017 11:26:20 -0500 Lines: 7 Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:GVUbXEkaXkoGTraASQs2GFHGUBM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 16:30:31 -0000 > Have you thought of allowing files to be "opened" for direct writing as well? Last time this came up, I thought that mapping "opened files" to Emacs subprocess objects was probably going to be more natural. Stefan From MAILER-DAEMON Fri Jan 20 11:47:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUcLB-0006AV-7a for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 11:47:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46265) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUcL4-00065Q-Ql for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:47:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUcL1-0005aG-ME for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:46:58 -0500 Received: from proofpoint4.lanl.gov ([2001:400:4210:400::a4]:54568) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUcL1-0005XW-Fc for emacs-devel@gnu.org; Fri, 20 Jan 2017 11:46:55 -0500 Received: from mailrelay1.lanl.gov (mailrelay1.lanl.gov [128.165.4.101]) by mailgate4.lanl.gov (8.15.0.59/8.15.0.59) with ESMTP id v0KGkpg3014011; Fri, 20 Jan 2017 09:46:51 -0700 Received: from localhost (localhost.localdomain [127.0.0.1]) by mailrelay1.lanl.gov (Postfix) with ESMTP id B262C144CA60; Fri, 20 Jan 2017 09:46:51 -0700 (MST) X-NIE-2-Virus-Scanner: amavisd-new at mailrelay1.lanl.gov Received: from bismuth.lanl.gov (bismuth.lanl.gov [128.165.246.103]) by mailrelay1.lanl.gov (Postfix) with ESMTP id 9D75F144CA5C; Fri, 20 Jan 2017 09:46:51 -0700 (MST) Subject: Re: [patch] Run occur command restricted to a region To: Tino Calancha References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> Cc: Juri Linkov , Emacs developers From: Davis Herring Organization: XCP-1 Message-ID: Date: Fri, 20 Jan 2017 09:46:51 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <87ziilc05e.fsf@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.15.154, 1.0.8, 0.0.0000 definitions=2017-01-20_12:2017-01-20, 2017-01-20, 1970-01-01 signatures=0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 2001:400:4210:400::a4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 16:47:03 -0000 > **) The second patch add your suggestion on showing highlighted the > current line. When there are matches after the current line, the > point in *Occur* is set right after such line. I don't care about the highlighting, but I like very much the idea of locating point in *Occur* at the place that corresponds to point in the source buffer. It provides for free most of the benefit of `occur-above' and `occur-below' (by whatever names) by partitioning the results in an intuitive fashion. (It's also the same idea as in my vc-diff patch (which I still need to finish): to show a map of interesting things in the buffer centered on point.) Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. From MAILER-DAEMON Fri Jan 20 12:09:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUcgw-0008BS-Rj for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 12:09:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51289) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUcgr-00086b-Gd for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:09:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUcgq-00027T-4o for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:09:29 -0500 Received: from mail-lf0-x232.google.com ([2a00:1450:4010:c07::232]:34764) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUcgp-00025q-Tr for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:09:28 -0500 Received: by mail-lf0-x232.google.com with SMTP id v186so62061036lfa.1 for ; Fri, 20 Jan 2017 09:09:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=qUDvGUuLV+C93PP4j9EYJeiT+Ym+RDjejB7uRW1jiFI=; b=I6el0lMhv/56tbvy3DZk+s8F6ksF98FP9xXdUHsfmYyTr+WSObAB0XAU5RBLDIgdvU w+NCcfoAEaLTHWR1+jbQsmBH5BNfqEfGJf6XH2yE3xglVbffo+2LhdUeBE7cjZH+1cKy ilVdyCj41SedHn7FveShn83te0y46rrO2PaF6M18jn2Hb3s+zJXkxKzHlyS2tonn4YUW Xb1vuTEzcE6fVLCZ5XTC2lRer3GGDIrw5OaUyptDf8I9YYPRmnrlhu8PGKPGpBsY40YZ yWHpiuK1+BNj/ertF/Zw/hV+AEZUjqi6Pa2vtFt+8Or3y/78FJLykuEwCLF/zxGieEke P8OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=qUDvGUuLV+C93PP4j9EYJeiT+Ym+RDjejB7uRW1jiFI=; b=HMAr4eSwdbVrZidRbiuYflEbf+ffDkv0OgOpGadVbunwky9+TQ7WEUXCJ5QkWMkxcz iSGhOqc7+ZzT1yyd/kvo/4DnF9pM3CToFQB/apB3vSUJ4/qqYJn0DomK60w5ljHmAAjN L5G9wYJJ+Dkc/MnxKvdrQ+IvcJosyHo4dZ5kHqTbnLKQvS5ckTo4ZLlDPNQQdJIrPGYk AvMVYHygHTT8Joe8LDzI2NXlb1pKRH/v2Sy+ElbuBIws7q4BUsRxy+0CO+Ato6nxrEi1 s3esW5+mmwHJ3SfMmvm0j2Rn4AQ+SxS9HkOVrfPEg46LhHmA5IyyaamkS5145MZaqj+L ZkJw== X-Gm-Message-State: AIkVDXIb85+fzSXRfGHwz9VpFEY53lG4k1hB1sgxqQM8yVHazFeJgAALX10crO3kggK6fHVgO9ihz2JaP9fLMg== X-Received: by 10.46.19.25 with SMTP id 25mr6952488ljt.15.1484932164827; Fri, 20 Jan 2017 09:09:24 -0800 (PST) MIME-Version: 1.0 Sender: yurivkhan@gmail.com Received: by 10.25.8.212 with HTTP; Fri, 20 Jan 2017 09:09:04 -0800 (PST) In-Reply-To: References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> From: Yuri Khan Date: Sat, 21 Jan 2017 00:09:04 +0700 X-Google-Sender-Auth: E-DCaa2ldTgQ_1R2aNuVeBCR8O8 Message-ID: Subject: Re: Referring users to external web pages To: Stefan Monnier Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 17:09:33 -0000 On Fri, Jan 20, 2017 at 11:24 PM, Stefan Monnier wrote: >> I wonder how easy it would be to repackage MDN's documentation as an >> info manual. > > An easier first step might be to make sure that those Mozilla pages get > cached locally after you access them, with a fairly long "time before > refresh" (and in such a way that subsequent accesses don't need *any* > network access). I really dislike both of the above ideas. MDN is a wiki. That means anybody* could add useful information at any time. Both repackaging in a different format and caching aggressively will defeat that advantage. It will also discourage or prevent the user from participating. Additionally, some MDN articles contain live examples which will only make sense in a fairly capable web browser. I would certainly appreciate being able to jump to a relevant MDN article by pressing an easy key in Emacs, but I would prefer reading it in my preferred browser. *) Anybody who is not averse to having a Github account. From MAILER-DAEMON Fri Jan 20 12:21:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUcsU-0001WE-UI for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 12:21:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUcsR-0001UE-0X for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:21:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUcsM-0007hn-2H for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:21:26 -0500 Received: from gproxy3-pub.mail.unifiedlayer.com ([69.89.30.42]:38801) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cUcsL-0007hJ-Lv for emacs-devel@gnu.org; Fri, 20 Jan 2017 12:21:21 -0500 Received: (qmail 22321 invoked by uid 0); 20 Jan 2017 17:21:10 -0000 Received: from unknown (HELO cmgw3) (10.0.90.84) by gproxy3.mail.unifiedlayer.com with SMTP; 20 Jan 2017 17:21:10 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id ahM61u00q2f2jeq01hM9Cl; Fri, 20 Jan 2017 10:21:10 -0700 X-Authority-Analysis: v=2.1 cv=YuCcGeoX c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=Rb_-Vwtcr-ikN6nXuhEA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=5ooD8vhmXYLdkih3IIOLpsOVmCnzvyjYM5H8mcec2lM=; b=GZzEmgxyb0WL0qF/mwxOneQRY/ 7Ea2HJboFLupSAzYJ0IgkbcPjFTJzZukZFJMBc6uREA4tLoNioh2xR5wzN3EVXdTsa0S8cubvBFJG t9vT3aisTFkeJk/tSMgkBq8bw; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:58314 helo=pokyo) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cUcs6-0003cO-Bu; Fri, 20 Jan 2017 10:21:06 -0700 From: Tom Tromey To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Referring users to external web pages References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> X-Attribution: Tom Date: Fri, 20 Jan 2017 10:21:04 -0700 In-Reply-To: (Stefan Monnier's message of "Fri, 20 Jan 2017 11:24:09 -0500") Message-ID: <87d1fh641r.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cUcs6-0003cO-Bu X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (pokyo) [174.16.146.181]:58314 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 69.89.30.42 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 17:21:29 -0000 >>>>> "Stefan" == Stefan Monnier writes: Stefan> An easier first step might be to make sure that those Mozilla pages get Stefan> cached locally after you access them, with a fairly long "time before Stefan> refresh" (and in such a way that subsequent accesses don't need *any* Stefan> network access). You mean like having css-mode locally set url-automatic-caching and url-cache-directory in the new EWW buffer? I think that would work but I don't know if it should be the default, because the URL docs say that the cache isn't cleared automatically, and also I don't see any sort of maximum size setting in the cache code. OTOH if you think it's still ok, despite that, I'll add something. Tom From MAILER-DAEMON Fri Jan 20 13:12:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUdg6-0000La-OJ for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 13:12:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUdg4-0000Kz-7N for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:12:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUdfz-00081s-AB for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:12:44 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:36022) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUdfz-00080o-3i for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:12:39 -0500 Received: by mail-wm0-x22c.google.com with SMTP id c85so48325054wmi.1 for ; Fri, 20 Jan 2017 10:12:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=Uefk+skzilkcXEpl1u8wL3r9+w97SENWA+/JTxzIscY=; b=GyaFsL4JEeUA0lzvGgt8rxt+QWxmn+fPukZtXfDxsY93l3xpUQP88kYwYaq0Jomra4 VwFpGl5cO6QBc/nI2G9s+E4omdNdCfnxQLKOH3THAjPrNGY2m2bko2SIDDCdwWzrWaIl vsBFtM9BnRI6jT8rNkg91+Jr5CrAh51KJet2X9Iv85bGoNyAhVTDJTZS09jim+N2CWEC 6VAVfSs504mLKfpVe7S1odIMYmjitY+Irg57wJ4Ox0l2sE9nctAn9PtBKOsOOICKXnPJ weBsXIoE4GPnT1ZxYCilfvfxSIp+lWZOmFWKVeUnoodnfWJNvfPr1c9iBu6Hmh5CXa6v qpMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=Uefk+skzilkcXEpl1u8wL3r9+w97SENWA+/JTxzIscY=; b=nQ7HfIpGG935dFxJtnphhyS6CTNCugSp7ohDATLKDh/sn4dasFeMDgQCZkwL5ZRYd8 v28Lxbojru479dYlekdqwnvwVgef0FdTQUBmsUww33xGFz5J7hhbA/OmtV0yjZAcLYRt sUScmDYaRAZWpDJTAkrTuc9RlZzeb1xUXgJd5J9kSiTDMwD+yfhIPcwY8WziYp+/2uqE X4lsgfgesQuknTdct+t4G1NYQF9+u9HHpJwLGyRD9NCagglI8cRjing4kVRGYFksOGmB lUT3oZ3Bl6wVsvqDiKBcEuLMXeGf85y3e8NB3XsamSEytBDIg7WBF4ZX8oGnHR1aN8sJ jIoA== X-Gm-Message-State: AIkVDXKGnbVAl2SN7SUwfaPe0c6XR/Zl9dHY+6Mxly2giizdmdMbf07AQzXZYd2m2yxsQw== X-Received: by 10.223.176.93 with SMTP id g29mr13246215wra.7.1484935955193; Fri, 20 Jan 2017 10:12:35 -0800 (PST) Received: from localhost (xdsl-195-14-205-187.netcologne.de. [195.14.205.187]) by smtp.gmail.com with ESMTPSA id o132sm7243136wmo.17.2017.01.20.10.12.33 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 10:12:34 -0800 (PST) From: Ingo Lohmar To: emacs-devel@gnu.org Subject: fold-dwim development Date: Fri, 20 Jan 2017 19:12:33 +0100 Message-ID: <874m0teh2m.fsf@acer.localhost.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 18:12:45 -0000 Hi All, This may not be the best place to ask, but I wanted to check here before sending personal mails: The package 'fold-dwim' (very nice, IMO) is available on melpa https://github.com/melpa/melpa/blob/master/recipes/fold-dwim , which fetches it from the 'emacsmirror' repo on github. Is there any standard procedure to contribute? I have an implementation of a small "TODO" line in fold-dwim.el, but I am unsure about pull requests on emacsmirror --- mostly because there are none :) Thanks for any pointers. Ingo From MAILER-DAEMON Fri Jan 20 13:48:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUeEn-000628-4x for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 13:48:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUeEl-00060N-8u for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:48:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUeEi-0004Ca-6J for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:48:35 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:57909) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUeEh-0004BA-RS for emacs-devel@gnu.org; Fri, 20 Jan 2017 13:48:32 -0500 Received: from [192.168.178.35] ([95.119.56.107]) by mrelayeu.kundenserver.de (mreue003 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LpRkv-1c1Lgn1MLl-00fAA9 for ; Fri, 20 Jan 2017 19:48:28 +0100 Subject: Re: The current state of the comment-cache branch To: emacs-devel@gnu.org References: <20161227175500.GD2324@acm.fritz.box> <83y3z0ukth.fsf@gnu.org> <871swsf1es.fsf@thinkpad.rath.org> <83pokcugit.fsf@gnu.org> <87y3yzehc2.fsf@thinkpad.rath.org> <83d1gbv1rt.fsf@gnu.org> <87wpei7jye.fsf@thinkpad.rath.org> <83shp6tyqr.fsf@gnu.org> <20161229194454.GB3387@acm.fritz.box> <2ddc3f91-acf9-803a-f99d-9ccb63f748b9@online.de> From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Message-ID: <03ceef3b-7adb-0f0b-d8d8-e1f2e6c0a04a@online.de> Date: Fri, 20 Jan 2017 19:58:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:DIBDnJfC1lAqu0kMq8Ah35gu7whU6EPGZbctRGQV7OIyrhxp/jY ibtSMMoz2YERp0u6OACBFhE/UVb5uTWBU1iKTlKClTBDNPJros6mLbSMtuE9UAfyBuPsYCK cGpsRDIQByGTjeKfuED0YVkUaYfHPWUjwCaNAyPiA9eH7hD0nYJB9bGosZfSYRAw1BA1hQb Jor//GMRd/FygvDBCBSeg== X-UI-Out-Filterresults: notjunk:1;V01:K0:EGolfn7S6uo=:UwxgKFS500D4ncXxOOw1Kt wd0PUQEspyoYlsz2+Cw+sCc0RUzNEVaNxgAPSvFGOfhzXoY9NjrzY/MO+VlpzPUNHlKsewI3o 95ZwvYxnZBGNAijDqnKNrswRNXvhhoP08R4RAc054dzrWG8GCjfOMl3yBJwh3WIEbK2riLHBh 0GvLdigktnVY1IzI3COTqx6xsqAlQqfMsSeaFWFgWp+eyNE40NHFwNkEHGQ7LKW6LqHoyAAkt qq46S4kDgot6qmbbAIngdpGt+m8D7z/mAwxqWUzh8uQyEhrwVeR+/fG3sRR4cETrhZS8usKzi /wt1pPSrl5Ia11j8kA0mK+/vdR1GdcDUWlh6o7KchedzpxcsByTmTPxA7r0I9Htd9vTgsLnEp C//X0wInkh0X0GfqfqbBjJjzPUyRsd2lH3VV6thUJ7DfWh0m/NX0/7jSInu/+e7c/0m3UG0rm SRt1ZieQspJGy4nLgGrj5MXgR4j3Ndr2VdtviNq9HK+zNYh2OJjWkVitP2yBWTL8Mj4a0AtrL dgBoGz3g8zLv1B6ZgrmJfNFDL4Ch/NDh8ZzLQnWrvez0CTuhaCnuKRQFyGgOeCeBXv5rVUEEU 6n63F9ndp4u6pwIOwDxl081hUm3W+Ieg8zHd+Hw1GHz81WzyBJek2qsmJ2wXTb0POaMotiZ3K 7V6FdlvWbMsDxm7q3GVrdXB3CZ5Eh/9W50/QqDY8B5rm3odUnugec0IAuvbndNyyjnrgQp8gH MW3UWJHQCFsm2tTM X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 18:48:36 -0000 On 03.01.2017 18:39, Stefan Monnier wrote: >> Alongside with some other impediments removed, for example allowing >> all chars being an abbrev. > The restriction to word chars in abbrevs as removed a long time ago. > > > Stefan > > Really? That should be known. So https://debbugs.gnu.org/cgi/bugreport.cgi?bug=15485 is fixed? Info still mentions words to expand, not just symbols. 29.2 Defining Abbrevs ===================== C-x a g Define an abbrev, using one or more words before point as its expansion (add-global-abbrev). From MAILER-DAEMON Fri Jan 20 14:52:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUfEN-0003JN-LJ for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 14:52:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUfEL-0003JH-CJ for emacs-devel@gnu.org; Fri, 20 Jan 2017 14:52:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUfEK-0001ng-Kc for emacs-devel@gnu.org; Fri, 20 Jan 2017 14:52:13 -0500 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:38336) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUfEJ-0001m2-8d; Fri, 20 Jan 2017 14:52:11 -0500 Received: by mail-wm0-x22d.google.com with SMTP id r144so60433488wme.1; Fri, 20 Jan 2017 11:52:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=2LhEQ0DshwHp0RJBCurHTmpcFMeJF5qH+em2aFkFXM4=; b=svBHdtaedzwIdAk7q/fMlZ0vBajvnMrN1seL7S/29DXFnETf+l3ISmDLgI7w0k/4Gf sd5Pl2Da1TSFWsq1vHBII96ZbXEVcY//mrXa1AsT8w4A5Avnju7KAwLyVoMaiB4hJfwv UNpeSe8hGhmPxJOvXN2N8hc9GRDKHYuzXR6h6DdBYO+BdbSKT+N+EbTR078KVwmJBKPI WLZsF+6IAURBHFeacOrALOPuJ73/1ZaiIhZQljk0gppdab3S3NaX3okLALcyujrmKcjs mSoHaai5ovRNTJSNckQrqRdUjgw793wJGiSVSSFWa7NOBDemKPn4KRzSERjdkFneyoLd dM1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=2LhEQ0DshwHp0RJBCurHTmpcFMeJF5qH+em2aFkFXM4=; b=BfW2GiAe2YxP6FOB3DLHO+c/tkJk7VGB4y1TW56dUG/3T7On5D32XXhPuVjyplX84O zmHf61CBxS2QOu1HiUFm+XAXPM8AxAjd8uhbtpf9QHgnvzhxUNSG+VlrxMuh+KlB98kc RtXQ7la9ci+WC6Rg9vPqJLADM7zWJAPwf67l4FkXK95m6DMh/sEehqdxCixukgtEEn44 +H3muEP5litnZ8zz8rGEdzUvODYoxw6DpEsDUtr6BujXfNQWFkQWTlCJsf8b9IsZ3IZ/ oeISHCFMVy98bgMO2TiXvAODHe9ZChXYSHnOKBanmZZQ59fYovBIifoRw/dNsZGpIHTu ceNw== X-Gm-Message-State: AIkVDXKTB6RY4DwsZQt6Iv/63qn6zUqX7JHxtskKncaHe82M0zHGVgjuFfhup5E3isSW9QAnKM20ztgJnrkxfQ== X-Received: by 10.223.138.220 with SMTP id z28mr13346159wrz.26.1484941928344; Fri, 20 Jan 2017 11:52:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Fri, 20 Jan 2017 11:51:47 -0800 (PST) In-Reply-To: <83y3y5681f.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> From: Fabrice Popineau Date: Fri, 20 Jan 2017 20:51:47 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a1149846226b52705468bfc25 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 19:52:14 -0000 --001a1149846226b52705468bfc25 Content-Type: text/plain; charset=UTF-8 2017-01-20 16:54 GMT+01:00 Eli Zaretskii : > > AFAIR, the problem with Imagemagick support on Windows is that it can > only be supported when linked in statically, I don't think so. The patch I posted recently shows that emacs can be compiled with ImageMagick exactly the same way it is compiled with other dlls. Fabrice --001a1149846226b52705468bfc25 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-20 16:54 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
=

AFAIR, the problem with Imagemagick support on Windows is that it can
only be supported when linked in statically,

I don't think so. The patch I posted recently shows that emacs can b= e compiled
with ImageMagick exactly the same way it is compiled w= ith other dlls.

Fabrice

--001a1149846226b52705468bfc25-- From MAILER-DAEMON Fri Jan 20 15:56:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUgEq-0006tx-9s for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 15:56:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUgEo-0006tg-9B for emacs-devel@gnu.org; Fri, 20 Jan 2017 15:56:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUgEn-00011q-Hy for emacs-devel@gnu.org; Fri, 20 Jan 2017 15:56:46 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:47729) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUgEh-0000uC-6M; Fri, 20 Jan 2017 15:56:39 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cUgEg-0008HQ-G8; Fri, 20 Jan 2017 15:56:38 -0500 From: Richard Stallman To: =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel CC: emacs-devel@gnu.org In-reply-to: <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel on Thu, 19 Jan 2017 18:34:18 -0500) Subject: Re: Referring users to external web pages Reply-to: rms@gnu.org References: <1484675329.1861.1@smtp.gmail.com> <87k29q646z.fsf@tromey.com> <247147c8-d213-0e2b-5b5f-70d6e0aea799@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: Date: Fri, 20 Jan 2017 15:56:38 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 20:56:47 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > As far as I know there's no commonly-installed, free CSS documentation. > > Normally I'd write this code to look for an installed copy first, but I > > don't think there's one to look for. > I wonder how easy it would be to repackage MDN's documentation as an info manual. Repackaging it is not necessary in order to have a local copy. You could have a local copy of exactly what's on their web site. So I'm saying that the Emacs code to access the documentation should make provision to access a local copy if there is one. Any repackaging is not part of Emacs's responsibility, but this part is. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Fri Jan 20 16:20:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUgbQ-0007nA-S3 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:20:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50629) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUgbO-0007lO-M5 for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:20:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUgbJ-00042B-OQ for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:20:06 -0500 Received: from mail-pf0-x230.google.com ([2607:f8b0:400e:c00::230]:34061) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUgbJ-000403-Hf for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:20:01 -0500 Received: by mail-pf0-x230.google.com with SMTP id e4so25050373pfg.1 for ; Fri, 20 Jan 2017 13:19:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=n7G5wMJgTCVRB7qTJQ6GTlGk0qNqVLIqcn4x5KTpieQ=; b=DE79pdbxfpdoyLeTu+A7CyNhGq3SQYZ2b4HmMTjD9v+RVsC77TzKjK+jLieVL33AG1 ngmtgEug9BMKLFwgK1pDZmQ0MBjAr+E7UV5N4j5SCYUeh7kAAsuvLY3TGiVmM2PKAG/j 6S/uaS06RzumWwTYV+DdmJRtmKEEZ1g2qvniZ8Gjxg2HbGnHwRE6+LyWEFexy4a2nLSW A4xZzKykR5yHbDZSAHJQI8fUvxYgEJcTKSMX/7It+B+HZAefmGaT+K2f+b0t/ynWbrhv 8Lm2AekFCDS6X809jT/yHh99Jw5Mnvy+yZLLeRLXVlvdKs9UD+gbvEcD1ohkzp5gsCAe Ncqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=n7G5wMJgTCVRB7qTJQ6GTlGk0qNqVLIqcn4x5KTpieQ=; b=grsH6K4MFQsiv30Y07vujl1UuNmnrfMeIPBTubaeMVNWWRkmIAOtAOp9kVOOHaax6p NJ2yVtiLZdzqZRGQX72ri5hB2HZpEZu62bayzbiXOd0VeJzHFCDOjqfl73tB9+4WQLT7 Reasa6Hddv3XZGU6NuSVA6Y/m6PdyYG3islYYIWxjBjNpjFADFjdFCBcFCzsICjlm8C1 rSZzkkWlZ5xAO9SObkpwA0xafdZbweB7eSYSrvUgTOZ6104Hfixyg03saC8oialaF8KR +M8nVxl5VSnls56ZnGvAFRoTw+xJ2bjokea1hyfCneHbJLrNAhSGGa0khKA9fB1uvebP CxIA== X-Gm-Message-State: AIkVDXJ4HffwCYZCfbS3I9WCYDbWVptIz+CH6/u+/o2mVXj9ST62y/qaVeaSpv/jc8wP2Q== X-Received: by 10.84.232.67 with SMTP id f3mr24580041pln.55.1484947195890; Fri, 20 Jan 2017 13:19:55 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id q80sm19037701pfi.13.2017.01.20.13.19.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 13:19:54 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 96FF5F13480; Fri, 20 Jan 2017 13:21:06 -0800 (PST) To: Ingo Lohmar Cc: emacs-devel@gnu.org Subject: Re: fold-dwim development In-Reply-To: <874m0teh2m.fsf@acer.localhost.com> (Ingo Lohmar's message of "Fri, 20 Jan 2017 19:12:33 +0100") Date: Fri, 20 Jan 2017 13:21:04 -0800 Message-ID: References: <874m0teh2m.fsf@acer.localhost.com> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Ingo Lohmar , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:20:07 -0000 >>>>> "IL" == Ingo Lohmar writes: IL> Is there any standard procedure to contribute? I have an implementation of IL> a small "TODO" line in fold-dwim.el, but I am unsure about pull requests IL> on emacsmirror --- mostly because there are none :) You would need to track down the original author and submit a bug report to him directly. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Fri Jan 20 16:26:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUghL-00023V-MT for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:26:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUghH-00020T-Dy for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:26:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUghE-0006Yg-AA for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:26:11 -0500 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:33232) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUghE-0006YM-1o for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:26:08 -0500 Received: by mail-pg0-x243.google.com with SMTP id 194so7753177pgd.0 for ; Fri, 20 Jan 2017 13:26:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=lDwpzIaAId/ejnkMkNdG1wFnwpbJV3yz/fVmndhHOqw=; b=NgMh0HazZDRQ9T+VYsyiQIejKQ6o7G/D2t0XCwRVJktPlxNvwFiIF4+sI8oH4Y+QXA IVIVM0OevpjVlaGMPWOamUy4WJ5gW6azrFM4Ys75FKiAUK3X7khoXOsVkfRngsVgwC4r KkavWZ66fgkD6kmxSJmyQwjKZgNHefg2KqYs+Qay8D5Jwszf5U5RlWjUNvlqZUH+vSG4 t/czyrkXkj+ugKZD3x8HkmH6eh5scdmrNiD6kZzzX4Ugn/ClQD5IvEu40uSTDwPdnArJ UuwU9dEkxCCsSbVTlGN52r8l8dTfkj3QmH6IoLTUBSHoGQQm+nRn+hTeCJmM0XBoxsuL ws6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=lDwpzIaAId/ejnkMkNdG1wFnwpbJV3yz/fVmndhHOqw=; b=qUUuJafCM8e9SsbMHMQFARRPJwA8joWbjohyuPqZBStoqfnk/pOiK/brOPqLGcLBSf nGDo6iweg/yRTEEQbBfMDGs8Sb9utB8PXeRPvTDqSZhnE6KgzXRIy0oBJjmUHxZqRMEq NI4jX2TIZYoVEuxT6esZLnam+vhOdDqCBTxP81dzZtCpa087j05hmRovef/W8zKV8S9D G5lOUOpdXcbLRtDYfcHVf/8tW9ufFe5pSTNk8jcTCTBQCrdtErJ2aFhD+YgHhXunZ6sL 2IPjse1snWOhK3PfkSNpY+FU6iy3qC0so4FTJpTSI8guvbKUNTf0GCT31TizXVPHHxY7 MBLg== X-Gm-Message-State: AIkVDXJo2tlFmwcIIYxoj1gnTEGFpQSrtu6+CvhqZqkXr3bpx7FCOinkCWjvp35VhXAOxQ== X-Received: by 10.99.188.2 with SMTP id q2mr19296654pge.34.1484947567015; Fri, 20 Jan 2017 13:26:07 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id f3sm19056763pfd.10.2017.01.20.13.26.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 13:26:06 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 13F07F134FF; Fri, 20 Jan 2017 13:27:17 -0800 (PST) To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: standard output/error/input streams In-Reply-To: (Stefan Monnier's message of "Fri, 20 Jan 2017 11:26:20 -0500") Date: Fri, 20 Jan 2017 13:24:07 -0800 Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Stefan Monnier , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:26:14 -0000 >>>>> "SM" == Stefan Monnier writes: SM> Last time this came up, I thought that mapping "opened files" to Emacs SM> subprocess objects was probably going to be more natural. That does make me realize that I could use `start-process` with an executable that does what I want, and use `process-send-string` to bypass the involvement of any buffers. Thanks for mentioning it. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Fri Jan 20 16:43:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUgy0-00051o-Nd for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:43:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUgxy-000504-1k for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:43:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUgxw-0007Ih-Ef for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:43:26 -0500 Received: from mail-vk0-x230.google.com ([2607:f8b0:400c:c05::230]:33779) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUgxw-0007Fz-AZ for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:43:24 -0500 Received: by mail-vk0-x230.google.com with SMTP id k127so58361018vke.0 for ; Fri, 20 Jan 2017 13:43:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DLPXtpC3x/g/cxjFHisl1bsFOBRc3Rdouag8jBXzbIM=; b=gaG1Z6MJU+2X+lQLnHF+N9bcxRiYGHn6jn9gHu5Tgxh7L6ozOCLagc6FvRuC8QtQdC dNX2W3dusS9DNBfjdLxDcsgQWGwqEcBxA7ztE8L1kI7YiATO3Olj2x0fCgonMgWVqklx JctPxw48yj8vEF3Di/Povl3epMoNLqN7WGN1OIlh+7s/fkMRGPvcWEqofippW8MtlTew 9+kN7QeazmnMmy3YczcOHtXElcf7cIetMX2UtSI+2qBxiJYBIsBDi3OMC+Fj1CBergOy ekFnLb6Zcq5LNTg4cgOVYJpkzQNPnnqJmliBK19MoWpTPPuSK30IxmdYCplkpgztYTTs +wyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DLPXtpC3x/g/cxjFHisl1bsFOBRc3Rdouag8jBXzbIM=; b=LOfxldM6WTB4HNfyo78MWIZwErVR9sXzKMayZlt8m/Armc1NGWrcLw/+LaGs8ecTEJ laZkaXet8f+54BbcrMemiotYmFATt+GyHO6AAvqtkPvev9aKDfBl70ycSr8lI9W7DKvZ Zvxeshvhm/b673HdKciTXX9sfeNkZoQdvLHnDPy5bAkqgcg6mqR/bzrTBP+4ooA491UI kLmnetSxPyCyam/FVCseOc2Iykj09NbP8PVfxSn6ZzzL+nf9IGqgyyr/yxy8KK3RCSfU saIrNRbz0VjQ+qLYndLZov5PLnnR2xZ0yOgb9AyUbWT5e1jNBA33rLLUAMOC2ls2neBi 4HtQ== X-Gm-Message-State: AIkVDXKaiE0KzcUzBHp3xFooDITJE3ZVGPc04DJNeZJHz4eX/DT8OHMhe0sIDBEKb4eKzFBwaAMbUVIIfytOVA== X-Received: by 10.31.62.71 with SMTP id l68mr8274858vka.175.1484948602144; Fri, 20 Jan 2017 13:43:22 -0800 (PST) MIME-Version: 1.0 References: <874m0teh2m.fsf@acer.localhost.com> In-Reply-To: From: Kaushal Modi Date: Fri, 20 Jan 2017 21:43:10 +0000 Message-ID: Subject: Re: fold-dwim development To: Ingo Lohmar , emacs-devel@gnu.org Cc: jonas@bernoul.li Content-Type: multipart/alternative; boundary=001a11447a54f0d9be05468d8934 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:43:27 -0000 --001a11447a54f0d9be05468d8934 Content-Type: text/plain; charset=UTF-8 Looks like Jonas (tarsius) is manually maintaining it as the original author has probably abandoned this package? Because why would this package live on emacsmirror otherwise? On Fri, Jan 20, 2017 at 4:20 PM John Wiegley wrote: > >>>>> "IL" == Ingo Lohmar writes: > > IL> Is there any standard procedure to contribute? I have an > implementation of > IL> a small "TODO" line in fold-dwim.el, but I am unsure about pull > requests > IL> on emacsmirror --- mostly because there are none :) > > You would need to track down the original author and submit a bug report to > him directly. > > -- Kaushal Modi --001a11447a54f0d9be05468d8934 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Looks like Jonas (tarsius) is manually maintaining it as t= he original author has probably abandoned this package?

Because why = would this package live on emacsmirror otherwise?

On Fri, Jan 20, 2017 at 4:20 PM John Wiegley <= ;jwiegley@gmail.com> wrote:
>>>>> "IL" = =3D=3D Ingo Lohmar <i.lohmar@gmail.com> writes:

IL> Is there any standard procedure to contribute? I have an implementat= ion of
IL> a small "TODO" line in fold-dwim.el, but I am unsure about= pull requests
IL> on emacsmirror --- mostly because there are none :)

You would need to track down the original author and submit a bug report to=
him directly.

--

Kaushal Modi

--001a11447a54f0d9be05468d8934-- From MAILER-DAEMON Fri Jan 20 16:49:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUh3o-00065L-3Z for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:49:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55958) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUh3k-000651-To for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:49:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUh3h-0001rT-R0 for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:49:24 -0500 Received: from [195.159.176.226] (port=59625 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUh3h-0001rB-K7 for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:49:21 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUh3K-00019R-Ha for emacs-devel@gnu.org; Fri, 20 Jan 2017 22:48:58 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: The current state of the comment-cache branch Date: Fri, 20 Jan 2017 16:48:42 -0500 Lines: 19 Message-ID: References: <20161227175500.GD2324@acm.fritz.box> <83y3z0ukth.fsf@gnu.org> <871swsf1es.fsf@thinkpad.rath.org> <83pokcugit.fsf@gnu.org> <87y3yzehc2.fsf@thinkpad.rath.org> <83d1gbv1rt.fsf@gnu.org> <87wpei7jye.fsf@thinkpad.rath.org> <83shp6tyqr.fsf@gnu.org> <20161229194454.GB3387@acm.fritz.box> <2ddc3f91-acf9-803a-f99d-9ccb63f748b9@online.de> <03ceef3b-7adb-0f0b-d8d8-e1f2e6c0a04a@online.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:VaV4N/ZVPuAJVd6RzNqplsTicHg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:49:26 -0000 >>> Alongside with some other impediments removed, for example allowing >>> all chars being an abbrev. >> The restriction to word chars in abbrevs as removed a long time ago. > Really? That should be known. It is known. > So https://debbugs.gnu.org/cgi/bugreport.cgi?bug=15485 is fixed? No, but I'm not sure it's a bug. It's the way `add-abbrev` works. The abbrev-tables themselves don't have that restriction. > 29.2 Defining Abbrevs There's a big difference between what abbrev-tables can do, and the part of that functionality you can use via things like C-x a g. Stefan From MAILER-DAEMON Fri Jan 20 16:55:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUh9W-0007Mw-BY for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:55:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56936) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUh9U-0007Mp-2c for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:55:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUh9Q-0004Vb-SJ for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:55:19 -0500 Received: from [195.159.176.226] (port=45039 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUh9Q-0004V8-K0 for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:55:16 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUh9G-0005Ff-TE for emacs-devel@gnu.org; Fri, 20 Jan 2017 22:55:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: standard output/error/input streams Date: Fri, 20 Jan 2017 16:52:17 -0500 Lines: 9 Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:5Wf/qZAOvriE5WafGa4941065tE= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:55:21 -0000 > That does make me realize that I could use `start-process` with an executable > that does what I want, and use `process-send-string` to bypass the involvement > of any buffers. Thanks for mentioning it. Right. What I was thinking of was to add a `make-file-process` primitive so you don't need an external executable. Stefan From MAILER-DAEMON Fri Jan 20 16:59:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUhDY-0000GX-TC for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUhDW-0000GL-CS for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUhDT-0006RK-BO for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:30 -0500 Received: from mail-pg0-x22b.google.com ([2607:f8b0:400e:c05::22b]:33048) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUhDT-0006R7-42 for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:27 -0500 Received: by mail-pg0-x22b.google.com with SMTP id 204so26692898pge.0 for ; Fri, 20 Jan 2017 13:59:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=uwT84PwrEzjOV90o5sqQyTkCAxxswXay6/s25MP7+1I=; b=AOzMY6gzI7wlHlmnfxFcnvl/7i03fpHJKcouG8FURBf1g2xJcVLxt2tufQbh5GHJ98 ikcDp5ED1rLPQDMQR826w9i/6n2VEdicvbJzQdBJPsCZktFeP/qHazqYSCIXt7Guge0g klxUED2F2SwZlFM1vaBcxgUidbjjYbsu1gUwMikW+up3Z1hlgWjhRYb4a+bI3Sga3Lt/ ZFCDC+0EHGcuzo+uNMZWvdHYcCN8SEBl3brhttw7lW7Lh/GaexS4ImU3dxVLtsUVL+ig D69FBw759jVU5ZXaoGBGNr/Ohn+C8qkpcaoNLmJha+rsXuulb8fOQPtYWhHEINJl9iKA itSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=uwT84PwrEzjOV90o5sqQyTkCAxxswXay6/s25MP7+1I=; b=jyxHZcSCcmMGdhyYGwpQd2IlZleVDTFu6/Kewu6Cc39O+fyg4hRvW9EEhnzqpGlvlc 4wFa8PcHdwlu0gIn0sbJhmqE0E3ONf6U28HYgnfWHWmApwRmcwGfqhOU8Oq6O2fSGWQT 60xP8BJspfBc8ojakr1m8hxe2Qmks4Xj3Kv6B03NQtFVfK8caXQswZ4W7xSwXDLw9x1/ xq37q9t+QmOVea3OD675CB6xj8HlqDt2rC1ERBjPSVDP4D0qHj86qZ4M80C48XXmDbUw MJ/e+TO6//jVGEA97GsLKvd4wi7DuAornC20iVjTdBCSjeTEy1ImtRss8+iSwuVmJY7h mfJw== X-Gm-Message-State: AIkVDXJRpCKZCZpv/Bj/NMH+H1QK1PNTk71iJxMG0CFNfwkhtQaxR+0po0HtcK8PvhfWhw== X-Received: by 10.84.138.165 with SMTP id 34mr24781728plp.37.1484949566108; Fri, 20 Jan 2017 13:59:26 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id t15sm19201477pgn.18.2017.01.20.13.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 13:59:25 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 2FADFF14AF8; Fri, 20 Jan 2017 14:00:37 -0800 (PST) To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: standard output/error/input streams In-Reply-To: (Stefan Monnier's message of "Fri, 20 Jan 2017 16:52:17 -0500") Date: Fri, 20 Jan 2017 13:59:30 -0800 Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Stefan Monnier , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:59:31 -0000 >>>>> "SM" == Stefan Monnier writes: SM> Right. What I was thinking of was to add a `make-file-process` primitive SM> so you don't need an external executable. Sounds like a good workaround to me, and handily solves the cleanup problem. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Fri Jan 20 16:59:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUhDZ-0000Gr-6X for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57705) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUhDW-0000GK-CQ for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUhDT-0006RU-VW for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:30 -0500 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:34827) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUhDT-0006RB-QJ for emacs-devel@gnu.org; Fri, 20 Jan 2017 16:59:27 -0500 Received: by mail-pf0-x243.google.com with SMTP id f144so6110422pfa.2 for ; Fri, 20 Jan 2017 13:59:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=bT+1jaGn9hIavzWMcSeR9KJi/CnxALkuRxOhVKtzkgo=; b=HF/N6giwmiwrMiD4tUNUYvZmvd2RtuK+jDP3yUJLPo02wTTLGmeY/e6qLQSxq4tyaO vgs35pQ5jDJ4UXbebDFccSRPM60gip96PBb9fvMdW3vgLL4GHMJUB/1OC2mguJ1ATWEh NzpopN6snXkuiYBaiOdxPx89ECrco2LWug+82Ca/t03tAafWt+s/AIQw9RYlOUkubF8T u10eJturWa7dVlABH3t1fCva7InnqUZy0yXPCj2ALWQ8M5I9/5LZiY7w0BsH33j5fz9h ZOts/dRbL97tL3AuffIrQ9b0NaH+5OkqNd/jsF1uOdQ8E5n4xG08FRVwShCJEQAQ4oUD 5Cxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=bT+1jaGn9hIavzWMcSeR9KJi/CnxALkuRxOhVKtzkgo=; b=q8TBrpBaVj19baU/F593b/0JBNjCSires1gTKnJ7ePr8F8tDsfhTvQXXGBhIQN0PO0 VKNc2lRRxXiL7VZj0s/V0MbXIRL5j2vG0ZR4qsx+WnC7diO7Eilim/evExeGbQgwNSwf AF0Cy8mYrVxy4HxkFym0zDTsqsIi6BRiM6NL3iDYPsE9taiTYI+i4zwxjq+cD6Q25Tvg P23fqrWrA3N8o1JQ0017rF5hPth2tm3A3YTJf5p0MYZrHqOvC87hy5JFsURrMpJZTnEV kq6akGlXtDRPJDNxsfCaTCH5KsL2VWghqZ54UoqxvLb7PhhDHP5zepOIdr8NIxCuJO/o LJPg== X-Gm-Message-State: AIkVDXLKeLJj5dv4dbj42WCzdWunvB6kWpWFZGELdlCawQnkVKD2YLek+wa8vNhiUFzmhg== X-Received: by 10.84.195.1 with SMTP id i1mr20043557pld.77.1484949566816; Fri, 20 Jan 2017 13:59:26 -0800 (PST) Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id a2sm19150253pgn.24.2017.01.20.13.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Jan 2017 13:59:26 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Vulcan.local (Postfix, from userid 501) id 68CB9F14AFB; Fri, 20 Jan 2017 14:00:37 -0800 (PST) To: Kaushal Modi Cc: Ingo Lohmar , emacs-devel@gnu.org, jonas@bernoul.li Subject: Re: fold-dwim development In-Reply-To: (Kaushal Modi's message of "Fri, 20 Jan 2017 21:43:10 +0000") Date: Fri, 20 Jan 2017 14:00:33 -0800 Message-ID: References: <874m0teh2m.fsf@acer.localhost.com> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Kaushal Modi , Ingo Lohmar , emacs-devel@gnu.org, jonas@bernoul.li MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 21:59:31 -0000 >>>>> "KM" == Kaushal Modi writes: KM> Looks like Jonas (tarsius) is manually maintaining it as the original KM> author has probably abandoned this package? KM> Because why would this package live on emacsmirror otherwise? He mirrors every package he can; it's not a commitment on his part to maintain, or volunteer to maintain, abandoned packages that he happens to mirror. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Fri Jan 20 17:04:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUhID-0001YO-PE for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 17:04:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58784) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUhIB-0001Y7-8i for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:04:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUhI8-0000TE-5U for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:04:19 -0500 Received: from [195.159.176.226] (port=36882 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUhI7-0000Sh-Ve for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:04:16 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUhHb-00036F-AM for emacs-devel@gnu.org; Fri, 20 Jan 2017 23:03:43 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: fold-dwim development Date: Fri, 20 Jan 2017 17:03:21 -0500 Lines: 9 Message-ID: References: <874m0teh2m.fsf@acer.localhost.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:XfdAIVUid5K+sjJsZCD/1JVG2mY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 22:04:20 -0000 > He mirrors every package he can; it's not a commitment on his part to > maintain, or volunteer to maintain, abandoned packages that he happens > to mirror. BTW, we generally welcome new packages in elpa.git. Just saying, Stefan From MAILER-DAEMON Fri Jan 20 17:20:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUhXp-0003ve-42 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 17:20:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33365) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUhXm-0003vG-JC for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:20:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUhXj-0007wn-GN for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:20:26 -0500 Received: from randomsample.de ([5.45.97.173]:49989) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUhXj-0007rH-6D; Fri, 20 Jan 2017 17:20:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=JOPa/8Tgd0FL08tki9Ht4pEhEXGCbyRMIYIDzjjFQLs=; b=Iw2HUGSFPlSxNJM7PozX3SjnrSv0+jyhDAZF/Zs5c0qw7WLqTuAIMQrrwX0izyHxm09mh0RLkqVP0G/ptO5jJN8YXtmnojYC9IaStKz9Xzv2O/3D8hkzfLpiTrWiRlrY; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cUhXW-00025x-5O; Fri, 20 Jan 2017 23:20:10 +0100 From: David Engster To: Karl Fogel Cc: Edward John Steere , Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87vataadkk.fsf@red-bean.com> (Karl Fogel's message of "Thu, 19 Jan 2017 16:29:31 -0600") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Fri, 20 Jan 2017 23:20:05 +0100 Message-ID: <87k29ps7ai.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 22:20:27 -0000 Karl Fogel writes: > David Engster writes: >>Edward John Steere writes: >>>> Things have gotten easier since the actual ChangeLog files get generated >>>> from the commit message. I would try to manually commit the changes with > >>>> proper commit messages, so we would retain the history with the >>>> exception of the date of the change, which would be from the day of the >>>> merge. >>>> >>>> -David >>> >>> This sounds like a lot of work and the outcome sounds right. >> >>It's not that bad. 'format-patch' gives me a nice list of patches where >>I can correct the paths with 'sed' and fix up the commit messages. It's >>only about 100 patches, so I don't think it will take long. > > Regarding the earlier point about retaining history "with the exception of the date of the change": > > 'git commit' takes an optional '--date' option: > > --date= > Override the author date used in the commit. > > So even the date of each change could be correct. Yes, 'git am' does that automatically. However, I always followed the general rule that the generated ChangeLogs should have the date when the change enters the Emacs repository, so I'm not sure if I should even retain the original date? -David From MAILER-DAEMON Fri Jan 20 17:41:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUhrl-0007KX-Rc for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 17:41:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36785) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUhri-0007Ji-FY for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:41:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUhrf-00040F-Dl for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:41:02 -0500 Received: from [195.159.176.226] (port=34040 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUhrf-0003za-7R for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:40:59 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cUhrV-0001GN-1K for emacs-devel@gnu.org; Fri, 20 Jan 2017 23:40:49 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: CEDET Merge Date: Fri, 20 Jan 2017 17:40:45 -0500 Lines: 11 Message-ID: References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:TjKx2zgqzF0A2tqYiZBtv6k5cqc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 22:41:04 -0000 > Yes, 'git am' does that automatically. However, I always followed the > general rule that the generated ChangeLogs should have the date when the > change enters the Emacs repository, so I'm not sure if I should even > retain the original date? AFAIK, Git records the "author date" separately from the "commit date", so The Right Thing To Do is to use the fancy --date argument to provide the "author date". The ChangeLog can use the "commit date" if needed. Stefan From MAILER-DAEMON Fri Jan 20 17:57:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUi7c-0001Ne-KT for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 17:57:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38584) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUi7a-0001NO-RA for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:57:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUi7X-000425-Ra for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:57:26 -0500 Received: from randomsample.de ([5.45.97.173]:50491) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUi7X-00040B-Hd for emacs-devel@gnu.org; Fri, 20 Jan 2017 17:57:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=ej+jATrx63eJa5aLyiF0F6N3W6+pNvGaQ7dlQ6yV1L0=; b=O0j99Hb5lb5PYJ5GwCpLdG8UyLg4mD/tJjMoBsYGDq9fc8s6KsyVFM+SRVG1AhLnA/iymcD6Uf0TVetIeMu6zYeNuBE2XQqmGByvEvn+cl8ZPrM6+I5zMP1h2wgHfxHc; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cUi7T-0002Po-W2; Fri, 20 Jan 2017 23:57:20 +0100 From: David Engster To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: (Stefan Monnier's message of "Fri, 20 Jan 2017 17:40:45 -0500") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Fri, 20 Jan 2017 23:57:19 +0100 Message-ID: <87fukds5kg.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 22:57:27 -0000 Stefan Monnier writes: >> Yes, 'git am' does that automatically. However, I always followed the >> general rule that the generated ChangeLogs should have the date when the >> change enters the Emacs repository, so I'm not sure if I should even >> retain the original date? > > AFAIK, Git records the "author date" separately from the "commit date", > so The Right Thing To Do is to use the fancy --date argument to provide > the "author date". The ChangeLog can use the "commit date" if needed. Yes, git tracks 'Author' and 'Committer', each with their own date. So the ChangeLog generator script would need to use the name from 'Author' with the date from 'Committer'. But does it actually do that? And wouldn't it be pretty confusing to have dates in the ChangeLog that are years apart from those in the git log? -David From MAILER-DAEMON Fri Jan 20 18:18:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUiS3-0004WZ-8K for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 18:18:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41421) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUiS0-0004W9-Q1 for emacs-devel@gnu.org; Fri, 20 Jan 2017 18:18:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUiRv-0005yK-PW for emacs-devel@gnu.org; Fri, 20 Jan 2017 18:18:32 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:38528 helo=homiemail-a100.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUiRv-0005wc-Jg for emacs-devel@gnu.org; Fri, 20 Jan 2017 18:18:27 -0500 Received: from homiemail-a100.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a100.g.dreamhost.com (Postfix) with ESMTP id 99EC431A073; Fri, 20 Jan 2017 15:18:25 -0800 (PST) Received: from localhost.linkov.net (m83-191-204-220.cust.tele2.ee [83.191.204.220]) (Authenticated sender: jurta@jurta.org) by homiemail-a100.g.dreamhost.com (Postfix) with ESMTPA id B898331A070; Fri, 20 Jan 2017 15:18:24 -0800 (PST) From: Juri Linkov To: Tino Calancha Cc: Emacs developers Subject: Re: [patch] Run occur command restricted to a region Organization: LINKOV.NET References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> Date: Sat, 21 Jan 2017 01:17:17 +0200 In-Reply-To: <87ziilc05e.fsf@gmail.com> (Tino Calancha's message of "Fri, 20 Jan 2017 22:48:45 +0900") Message-ID: <8760l9wcci.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 69.163.253.7 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 23:18:33 -0000 > OK. Updated the patch. > *) First patch allow `occur' handle the region with the new convention= , > i.e., region argument instead of BEG, END. Thanks. As a prerequisite I'm going to install this patch: diff --git a/lisp/simple.el b/lisp/simple.el index 3d25ec1..610846b 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1015,6 +1015,9 @@ (defvar region-extract-function If anything else, delete the region and return its content as a string, after filtering it with `filter-buffer-substring'.") =20 +(defun region-bounds () + "Return the boundaries of the region as a list of (START . END) positi= ons." + (funcall region-extract-function 'bounds)) + (defvar region-insert-function (lambda (lines) (let ((first t)) > **) The second patch add your suggestion on showing highlighted the > current line. When there are matches after the current line, the > point in *Occur* is set right after such line. > > I am fine with just adding *). In case we also want **), > an option to enable/disable that behaviour might be desirable. Keeping traditional behaviour means not jumping to the middle of the *Occur* output by default. Then maybe we could use the same option to highlight the current line and to jump to it? Like the existing =E2=80=98list-matching-lines-buffer-name-face=E2=80=99, adding a nil/face= choice for =E2=80=98list-matching-lines-current-line-face=E2=80=99, so when it's nil= then don't highlight/jump? From MAILER-DAEMON Fri Jan 20 19:09:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUjEs-0002eq-L3 for mharc-emacs-devel@gnu.org; Fri, 20 Jan 2017 19:09:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47995) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUjEq-0002ej-KC for emacs-devel@gnu.org; Fri, 20 Jan 2017 19:09:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUjEn-0006Pw-G1 for emacs-devel@gnu.org; Fri, 20 Jan 2017 19:09:00 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:41208) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUjEn-0006PC-9q for emacs-devel@gnu.org; Fri, 20 Jan 2017 19:08:57 -0500 Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0L08sBW032002; Fri, 20 Jan 2017 19:08:54 -0500 Received: by ceviche.home (Postfix, from userid 20848) id 23568661CB; Fri, 20 Jan 2017 19:08:54 -0500 (EST) From: Stefan Monnier To: David Engster Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge Message-ID: References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <87fukds5kg.fsf@engster.org> Date: Fri, 20 Jan 2017 19:08:54 -0500 In-Reply-To: <87fukds5kg.fsf@engster.org> (David Engster's message of "Fri, 20 Jan 2017 23:57:19 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5926=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5926> : inlines <5638> : streams <1729953> : uri <2361326> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 00:09:01 -0000 > Yes, git tracks 'Author' and 'Committer', each with their own date. So > the ChangeLog generator script would need to use the name from 'Author' > with the date from 'Committer'. But does it actually do that? If it doesn't, we can change it, so it's not a problem. > And wouldn't it be pretty confusing to have dates in the ChangeLog > that are years apart from those in the git log? That's how things are, by design (tho you can tweak your "git log" to also output the author date, if you want), so the confusion is not due to the "--date" argument (and can be fixed after the fact if we decide so, whereas retroactively fixing the author-date is a lot more difficult). Stefan From MAILER-DAEMON Sat Jan 21 02:58:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUqZ9-0005qW-WD for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 02:58:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38479) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUqZ7-0005qQ-A2 for emacs-devel@gnu.org; Sat, 21 Jan 2017 02:58:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUqZ4-0008FQ-4P for emacs-devel@gnu.org; Sat, 21 Jan 2017 02:58:25 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35744) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUqZ3-0008DR-VL for emacs-devel@gnu.org; Sat, 21 Jan 2017 02:58:22 -0500 Received: by mail-qk0-x244.google.com with SMTP id u25so4438703qki.2 for ; Fri, 20 Jan 2017 23:58:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=YW31bB/JKTslpBb1R8mjvubJz5Eyn4Zp/yE0jkC0nqc=; b=xOghQHudi03jZRRq8VCkrUgZYhRClG6aWE+qYXVSdg2GnBjcKTCC/5KFE6LhoJ+guD Z3WJIM8BS+fgWF5CfQb+R0aTPm8gjkiRYApq4nAiwCQ2e0ZtZqzhE07zMoaTZEPVJfEt Y4ntsx0u3CFlxFAIYICEHP0MbGdpyaxnjgst/H7UxqMSqPmFbtAYiVcf87BUw0efIF0r YtU+6tTd+hSf92k+eTvDxBAVjPDRw+Gq4wnrs3cK6wiubyTe5YG9yfukVD3SfUAlOLDP sFZpxMevbXw4GvI5JuEg1fwMFIOla3WSi4AxUnV1J5YqIM9EfVVm6WPeYnZBmhOICbjx WHJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=YW31bB/JKTslpBb1R8mjvubJz5Eyn4Zp/yE0jkC0nqc=; b=BViKJw3GsTYmmensRWkHKD+41OOk8mXk0YVVUa9K8ZlnfUq+h/Nol0V+XZ6b27bysb uLZV7r2WZn3fBqx3exRkxHjEmJ0C/wIa8Q/VxWRQWjpXz36y311j7ec5VqObWbjwTkRQ Q4h5G+FGNK93MLJYHE7dGPhn7RCMDoJdozDErefaILOb039U8E3v2uztVSbbIf/gE6lE BqQgxlingrakw7YQ4IlmdcfSnXREmFjGRNUE1xfFMsSyQwbXqlOw3oYJ6JI6hNKbvqGJ FtfXc6wB+qIwOW2eRuua6VQwrM19CQeXTmNUR1/u7zGQFl8nCa0tqCe+erOLS2BWXVAx kWnw== X-Gm-Message-State: AIkVDXKIW9+hg3weAxdeQQVkE+yuOXwAPZwOcc4792vBBI/m0X7l2TyWJcirXIPdQRchww== X-Received: by 10.55.165.76 with SMTP id o73mr16148580qke.32.1484985499687; Fri, 20 Jan 2017 23:58:19 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id h40sm8040198qtb.6.2017.01.20.23.58.18 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 20 Jan 2017 23:58:18 -0800 (PST) Subject: Re: Skipping unexec via a big .elc file Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: <83k29xc49v.fsf@gnu.org> Date: Sat, 21 Jan 2017 02:58:17 -0500 Cc: Andreas Schwab , Stefan Monnier , Emacs developers Content-Transfer-Encoding: quoted-printable Message-Id: References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 07:58:26 -0000 I think I may have figured out why I was getting crashes relating to the = face cache but it wasn=E2=80=99t very reproducible. Some of the face = creation code paths will ensure that a cache exists for a frame before = using it =E2=80=94 like the handling of =E2=80=9Cmenu=E2=80=9D in = internal-set-lisp-face-attribute =E2=80=94 and some do not. In a = regular Emacs build, the order of operations in the C and Lisp code = dictate the order in which face definitions are processed. So, for = example, in a batch-mode test invocation I tried, the =E2=80=9Cmenu=E2=80=9D= face handling created the cache for frame =E2=80=9CF1=E2=80=9D before = using it. But using dumped.elc, face property settings get restored, but the code = generated assumes that the order doesn=E2=80=99t matter, so the list of = face names depends not just on which Lisp code was loaded, but on the = order they=E2=80=99re seen under =E2=80=9Cmapatoms=E2=80=9D, i.e., based = on load order and the obarray size. (So my Mac/NS and GNU/Linux/X11 = builds have different lists of names, and different orders.) I=E2=80=99m looking at internal-set-lisp-face-attribute as a place to = always ensure the existence of the cache, but there may be a better = location. On Jan 14, 2017, at 05:41, Eli Zaretskii wrote: > [=E2=80=A6 much about failures I=E2=80=99m still looking at=E2=80=A6] > One other thing I noticed is that most of the *.elc files produced by > this build are different from those I see on master. The differences > are sometimes just a few bytes (e.g., in mule-diag.elc), but sometimes > much larger (e.g., files.elc). Perhaps this points to some subtle > problem in byte compilation? But even if so, that cannot explain the > failure to compile eww.el and ja-dic.el. I built a couple versions, and found several .elc files different. The = first case I looked at was macroexp--const-symbol-p in macroexp.elc. = =46rom disassembling, it appears that the expression =E2=80=9C(boundp = 'byte-compile-const-variables)=E2=80=9D is optimized out in the build = from the branch point, but not in the build including the dumped.elc = changes. I=E2=80=99m not sure why yet, but it=E2=80=99s almost = certainly a bug that they=E2=80=99re different. And a bug affecting the = emacs-lisp environment and/or the byte compiler output could certainly = cause later attempts at byte compilation (using newly byte-compiled = code) to misbehave. Ken= From MAILER-DAEMON Sat Jan 21 03:26:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUqzu-0000Zk-0i for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 03:26:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51676) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUoV6-0002ZL-Fc for emacs-devel@gnu.org; Sat, 21 Jan 2017 00:46:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUoV4-0004xJ-SA for emacs-devel@gnu.org; Sat, 21 Jan 2017 00:46:08 -0500 Received: from mail-vk0-x22b.google.com ([2607:f8b0:400c:c05::22b]:35073) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUoV4-0004x3-1a for emacs-devel@gnu.org; Sat, 21 Jan 2017 00:46:06 -0500 Received: by mail-vk0-x22b.google.com with SMTP id x75so62834276vke.2 for ; Fri, 20 Jan 2017 21:46:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=UWdMyXR8UmAM+oQN4fYGB6vilSLnFfA8juIIt55X/Xs=; b=iXooBWYgKrLp3RDLro6c8jFDad7qo3Irp0jjimoeX5BST4apYLMjndbLWnjw/YThQ3 iykxd8arr/lfqsbAFkCnxXIk52WYpFm65e5pJl8PQfnNwoxeo1azTTBmGyawXdAhf70g xWijGCQe24PCOdVitMIvQF2au+bf52IRZbJiwVHL+PwTtd6MVEyElVsODApHaEN3RKsi AcaCRRwGlqC+OeC4+Hlgv+WfI+TV7IaE23Gi2IKHxSU18xqjZLY6XI0ovRxXOTNhKtLt 3jodx8lf6vJc5vFUU5ePc6JOoG5CjcS14jTqhRRDhIWjlxIlg4AFeTuVum77XrQuhR61 6W2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=UWdMyXR8UmAM+oQN4fYGB6vilSLnFfA8juIIt55X/Xs=; b=i95PL76nwVnaImpSfxmohK0uXj/VM1Z0hCVRlHCZRieBFGaJZUzDvhxgoFlA+1cDvu t8BG/6HnV1nu7TqmW7ZRhcpMFpomkpx03t+f59QRjY3i23mIrio7iKt5j+D/YxRHJsGn APWj4WYs/WPkY9qruQn8znm9yV2YAOEyUJyHm3AWprUAdSJXDiOMGXt7rwUlrioORp8G WYc7FfhKdyVXdDTqU2hast/IDhYOgQI2n92AvwsE/Y3Ls2VpG9VrrrlHiud8ZFpjgN9x BF+ME8M9G6GlGU5sOA3MtThG8wxSL5GSRrGZlLObxsphH+DjgIi4YVnPjqWrJ6XuGjKR PHhA== X-Gm-Message-State: AIkVDXJC1HySn6M1aLY6U4WJMwk6nCYmssxF6Vf0uEwt5bRIOh9qIRGfXmS9+204o/i1HvrA5PoAYwEHRtEHgg== X-Received: by 10.31.63.133 with SMTP id m127mr9188862vka.42.1484977565057; Fri, 20 Jan 2017 21:46:05 -0800 (PST) MIME-Version: 1.0 From: Kaushal Modi Date: Sat, 21 Jan 2017 05:45:53 +0000 Message-ID: Subject: Issue with font rendering caused by one of the commits in last 48 hrs #master To: Emacs developers Content-Type: multipart/related; boundary=001a114dd06243fa1c05469448d4 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::22b X-Mailman-Approved-At: Sat, 21 Jan 2017 03:26:04 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 05:46:10 -0000 --001a114dd06243fa1c05469448d4 Content-Type: multipart/alternative; boundary=001a114dd06243fa1a05469448d3 --001a114dd06243fa1a05469448d3 Content-Type: text/plain; charset=UTF-8 Hello all, I keep my emacs build updated from the master branch pretty regularly. My last build was using this build: http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8c0fcaf66733f0538a3f024f383cb34a3c93d73c and that was good. A while back, I built using http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e5e42cefd7f2eb47d2c8660a7a317e8b08d36a82 and that has font issues.. whether launching emacs directly or emacsclient. So one of these 4 commits has caused the issue: e5e42cefd7 * origin/master origin/HEAD master diff-hunk-kill independent of point inside headers 1508b538fd * ; Revert "Improve diff-mode navigation/manipulation" 82a5e4dc88 * Fix free var FOO-mode-{syntax,abbrev}-table warnings 9c4e3097b5 * Check that variable lists are actually lists Following images show the issue: Notice that I am using the exact same emacs config with the exact same fonts (PragmataPro) set in ~/.Xdefaults. Also I did not see any errors in the *Messages* buffer at startup. Good build (8c0fcaf). This is what the fonts looked like: [image: pasted1] Bad build (e5e42ce): This is what it looks in the latest build. Notice that fonts look weird and the vertical pipe char is all misaligned. [image: pasted2] Is anyone seeing similar issue? Thanks. -- Kaushal Modi --001a114dd06243fa1a05469448d3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello all,

I keep my emacs build update= d from the master branch pretty regularly.


A while= back, I built using=C2=A0http://git.sava= nnah.gnu.org/cgit/emacs.git/commit/?id=3De5e42cefd7f2eb47d2c8660a7a317e8b08= d36a82=C2=A0and that has font issues.. whether launching emacs directly= or emacsclient.=C2=A0

So one of these 4 commits h= as caused the issue:

e5e42cefd7 * origin/mast= er origin/HEAD master diff-hunk-kill independent of point inside headers
1508b538fd * ; Revert "Improve diff-mode navigation/manipulati= on"
82a5e4dc88 * Fix free var FOO-mode-{syntax,abbrev}-table= warnings
9c4e3097b5 * Check that variable lists are actually lis= ts


Following images show the = issue:
Notice that I am using the exact same emacs config wit= h the exact same fonts (PragmataPro) set in ~/.Xdefaults. Also I did not se= e any errors in the *Messages* buffer at startup.

= Good build (8c0fcaf). This is what the fonts looked like:
3D"pasted1"

Bad build (e5e42ce): Th= is is what it looks in the latest build. Notice that fonts look weird and t= he vertical pipe char is all misaligned.
3D"pasted2"

Is anyone seeing similar issue?

Thanks.
--

Kaushal Modi

--001a114dd06243fa1a05469448d3-- --001a114dd06243fa1c05469448d4 Content-Type: image/png; name=pasted1 Content-Disposition: inline; filename=pasted1 Content-Transfer-Encoding: base64 Content-ID: <159bf8de1a0d0cad2201> X-Attachment-Id: 159bf8de1a0d0cad2201 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 nJhMOaZ0hZNyAsyLSSGQrvJKVzhJJd54XjAIHDp0SJxOp3zmM5+RiYmJBZOvuZaRuYbzXEvPXCuv az09e9urxekU+fJnj8jExIVrHQ6Tf4PANYOA7a2AEiGSk5MjK1euvMLb0aNHZXIyNbKzfPlywWx6 dHRU+vv7w8LmWX5+vjgcDvF4PDI0NJRyPGEBx7jIzs5WaXG5XOL1emVgYCCmEJWVlSWrVq2S48eP y8mTJ1WIlZWVSviKDJ5wTpw4EXl73l2P9o+KK9clfp9/WmlPVzg6EVnZWfLYS49J2+426Wzt1Ldn 9VhRWyHrHl8nj376UbkwubA62HSVV7rC0QUbrdw3798swwPD0rK9RXnLWZYjW17aIk2bm6S3s1fd q26olrrNdTqY4LF1Z+sV9efe7ffKyrUr5dl7npUTg+HfcMPWBqmsqxTxi3jGPdLV3iWvNb0mFy7M 7fKvqKmThkd2yhOf/bhcSLHdDoKW5hPa/G9961uyceNG6ewM/5bpH9Di+dl4O4ZbsWKFPPbYY1JU VCSDg4Py1FNPSW9voNz1K3b8aL/Rji+88IL09fXJtm3boj1O6z1wqK+vl5qammmFm0w48XCmj/zu d7+r0kI50OdFOjt+It+Jdx0vPfHei/UsXh2L9c7Vvj/Taa6trZXt27fLJz/5yRmVsezgmJWdKX/z 7TVRvb7SPCIHdofLiSP9XnHnOsTnu/rtblFJtqzfVCyFZS7xjPml7eCQHGoL7zeiZsxy05p/tti8 b+1hy9PZP922v1JGBrzy/PbwdnT2UzK/Y6QdX7t2reII9B9NTU1B7mA3Z/Q5IyMj8vzzz9t9ZUH7 Sxu51ShB1nw+n75MuTHMzMyUwsLCYDjWExpzSC8FSVx5eXlSWloq3d2hPXet/tNxTvh02OSP+CC5 yWgIqLAQcatjMMCKlfVZovN77rlHNmzYoD6IRH5n4/neB/emJZp0haMTs+quVer02KuhvY31M3Oc PgLpKq90haNzNK1y94vse3CfDkodR0dGw665KK4IrFdQWF54Bbnl+fjwuLQ90yb5Zfmydv1aWZ6/ XA48fuCKcMyN6SNw//33JwwEAZ02e+fOnYoU0qZHkls7fhJGtIA9xMOZvoznkG2EtWjOjp9o78W6 Fy89sd4x9+cvApO+C/LUxkBfXlWTK2tq8+SZzcdVhjzjIblT53D7gzMnE+o47BxzcjJly95yGR30 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 0OHrX//6PIaYcPizP/uzrENji7FK+1e/Ppf02te+Nt+nTW3evDmDYGXgdJShTvvFkiVL0r333puX apM1SL0bz9Wh9q88+rFPSqlzto6e1TeAKPIMLH72s5/NmzqrZ8PZjVb9ggzFtlJvbGrFx3eD3fdr v/ZruU+YrDSZpg+Larz73e/OE1bK/IEPfCCnI+83vvGNPO55Y3dFE6OBnduOptWXzUsrL56dnnx8 5CM1IdGqNXPT6vfMSdN7pqSDe/rTfRsPpeefHw4kzJhxVrr02vlp8YredHzweNq7sz89cOeh9OIL Q0GQc86dkT66eXH65sNH0oWXzEoP33s4nb+yN82aOzUvgX7m6VMnxyLvMvujRwZT76yRz563khnf hUtmpnVXz09zzpmajj47OLS8ubAce/O2FWn69CG/8vPfWn5SlJuu2J2e3jckc6uynz17WvqTL1+Q Nm7Ym/btHI4s37x5Seo7PJg23zr8qFgreU4KcOIglpHfffPBHHlvJ69aXi/H/6tWrco+GtzSDvGh 169fn6yoMZ7WCw4Ze/jOJpnhJQG4v/3bvz25LJnv57p7+QgmAGEm/oUx9a//+q/zOAv/8Cs8xuMe YxV/pmiT25F9LNI2nXpUKKCVEoAMM68QPAeFQw90cNqAN06DDXDkuBjQOD4GaveiSMthxddgYpOe 4w/42bvPTKn7DPYq2UDuHs6MgdJ98pcWAaAqDg/3AZ2WrJFNRZshJ5v7ycHpMcsP2Cqn8xqH9HhE WjwN4AG25OXeuK+ZfuSpPDZlxhPY0RgA69BDLkCJH+WyibpxyvDxbUigQeMaDdGzstmUv5Ys+3rg gQdqT5/8b4Dn6Ma9F198cZbRctx2iMPDGUEcOI687e1vf/spbDhTgDPZyO/5yyCgg34CcAP/mzZt ist5XybNiBvq/NGmtDlt12wXp0g/Ad5c0/lde//735+dPY49YLFixYr0F3/xF7kd1LJtVq7atM3+ N6tT9awNBcWx9h9UJk2kbbbHk01QV7EUGtiKJZQc3d/7vd/LTjMA8s1vfjM/I/lHf/RHadmyZfnY BADnXJ/9+te/noAX96nDInWjTov81B3Z6xHnV5v6m7/5m7x0mT143/vel2UyyaZPag9mRhEbwXZa is5msQN0jJSNnkzGAO2ev4m+5Lrznr2JY23exvkWKTaJ8M53vjMvjTcxYPBhF/7qr/4q2xfOuIkE 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 CAQCY4XAww8/nKZOnZre/va3p+eff37U2XQrnVEXICIGAoFAIBAIBAKBQCAQCIwJAqOy3B566KFp 2bJlaebMmWNSqOnTp6djjjkm5+HcKp8jjzwyHX/88fk46qijWpZjzpw5acmSJTnM0UcfnZS7lbgv H+mNVprmVdIfawxLPkOd77vvvnTqqacO9fiAvf/444+niy++uL/8rHQbNmxIZ555Zv+9A/li4cKF 6e67707r16/PZ79fKrJt27a0e/futG/fvo6q3K10SiGMV97HqlWryq2D+mzceOCBB9K6devS9ddf n4x9VTGW6nP1ox6uGieuA4FAIBBogsDyk+eku9cvz8ed65ana+5eko5ZdliTqG2HOXT6If153f7w srbjlwgrVh3en04pu/OJKzv3RCp5jMV52Yo+rA899JCxSD7SrCFw4oknpjvvvDO9973vrT1p/yfd V1q4z0tRJt2ngA455JC0aNGitHfv3rR9+/Y0Y8aM/PuJJ55IPmlDENu5c+emnTt35t+uCaW1iBc7 f/78rAz39vbm8AsWLMgKVwnjjDi734k0zauTPOpxKZhnnHHGqD/xc++992ZlHFE62MQAce2116YX X3wxuT6Y5Morr8xWy2uuuSatXLkyt90tW7YcTFUcsi7dmqDoVjqloCeffHK+fPDBB8utg/aMwF9w wQXprrvuSjt27EinnHJK+vCHP5z+83/+z7m/VSt+6aWX5vG33Ovp6SmXcQ4EAoFAoCMErjp3Y45/ zLJZ6YJrFqXLztyYtm16rqM065Ff2PtiuuLsjen4E2elpStm1x+39ducbClzibh7195yGeeXOAK4 T9ElXuJQdKX6k47czp49O02ZMiVt3rw5K0vPPPNMJqCF2Kq1MLt27UpPP/10BoElB5GtkttZs2Yl ylS5hywjzSymJS3E1j1plXTzRZt/muTVZpIjBlcHdRqtrFmzJp1zzjnZss3aeTCJ97548eKkXm97 29v6J0EO9Dpqr/PmzUvnnntutpqxvodMPAIIH0tmJ67SE1+LZiUw5tx2223p5ptvzhFMQJodNkG4 adOmQYls3bq1f/wd9CB+BAKBQCDQIQKbNj6X0ospbXr8ubTo2BnpxJWzu05upb9lw3Np3sJpHZa2 L7q0QgKBVgicdNJJ+faePXtaPY57bSLQmNxy/UXiEMliMa3nxe2MFdW6OASD4lOIZAlbDfP9738/ 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 KnDFgZHOgRHtuQVarf4MwAK4CMB1xL6f4cnlrXXPglOA7WB4O0d64xsO5b/yvivTqNGj0k1vvynt 2b2n31kerHj6nYHqxSHLAVtVGRXy1re+tdcK9EM2w8M0Y8ORz8Mxz8O0eVTZPgw58P77TktmXb3n 7Y+n3dWKwIdhDVdFqjhQnwOlwa0e5NhL0XxU+3rWkrmqtrkxhJcn1Jjt4t6zwpcJYw9NW2QgW2TE tj6RnsWcarcc8mzt2rXZyxrhmp0BVXvcMizDIyu/PLSeWUjqZS97Wd5X1VkYC0sp/3/8x3/kchbT qC2b7ZOK2yUVw/IKn3rqqXlLpVoeFcNV14eWAzue3JHGto1N+zr3DSgjgxVPZGLMuDHpus9dl5Yv Wp5WL1sdtw/b88y5M9NZ7zwrjR47Om1dszUtu31Zenrn093lnXry1HTx3Rd3/4+LhX+wMD39VE+4 uH+gz5bRrzdlwJY6tXPlyTfylWwZDmTbK1tgvelNb2pJ3h7qsg1VPluv4Atf+EJetd7WT0Uqk2fr L1x33XVZT1np/6abbtpPP5cJU0x3pFzT2V/96ldzcX1/sbfzSCn/cCvnmHFHpY9/6fS62X5k6fZ0 36Lee8xvf7IjjW8blTo7D/3E0qknjEvnXzotTTl5bGrfuS8tX7I1rVz+VN2y9HWzWP7Ozn3pgrNW 9RX0oNx/371vTNs3d6S7P7A/HjgoGRgmidDvttqzrajdSfoiW+ucf/756ctf/nJd+6Gv99y3paBt L2MLv0ZhR8KzUuCWx3L69OkZaAKt9o4FQIv7xgoDcPJoAnUq0f8i4CwTRrzij8nMsU9tLcBVOdIp elB5YlshAJNyi/m28myhKOCWogPSzavlvfXfM0AYuObxLaYtXTwSTr6Ac+/3BW5byedICvvOd74z 2UN1oFsTDRbP7rzszkGJarDiicyceu6p+XLdl9fFrcP2PHPOzDTnsjlp1QOr0o4tO9KsubPS/Fvn pzv+4o48jaBY8Ac+8EBq397efatjV0f39aG4CIUTaZOftWTv4ooOPAeGI5/L5FlHAz1z8803pzlz 5mQ9VNv5XCbMga+BoZcCHR57h+NdRUObA3s696abLunSeTPPaUunz56YblmwIWe6fVfnfpn/wGVP 7HfvUNw49tij0tV3zkg7tnSkJbdtTpNPGJvmXzM9Z6UVgBvlj7IfirJUabbGAR3dl156acYRtZih GBN8dN555xVvVdcD4EApcAvIIaDNnFRgz70iuAXm3N+wYUMOY4EhILAIOMuG0fuwbdu2nCawyBtc D9wyFAcCHnljDTf+/ve/n4H761//+gxezak1NFlvC+D7gx/8IKdj6DKw7b4j8iijGibgq/w8sUNp M+PMyGHyo700EgDDpBgHPJsA3xMrnhjQUOkDnslBSoDXfMWSFWnF3StyjDs270iX3ntpmjR9Utqy fkuvVLZv2J6e2tJab3ivCAb5D3lQT3YNcjJVdCOUA3SsEVWXXXZZWrVqVVq2bNl+nCgTZr+XRsgN 9syaNWsSz3ZFw4ADe1Pa+ETXSJwpJ47NGY7/Qzn3p549MY0ePSrdcsWG7uHRO7d1pl079gfkDcvx Qvmj7A3DVg8POQcA2yuvvDI98sgjGRc1ctqce+65Ob9Gq1Y0cA6UArc8mobiUgTINZDH8xngNYYi RxjhaofbNgsDIALIRe9GXBfTKlNscQHF8o40GN7gYv5e8YpX5PR4ag0z5nkV/iUveUku109/+tO8 eJS4ANviglOxknLkBbBtRpbX1ikAsIdnutk7I+E5AcBbyzDDG+DWAjt6sXSIXH/99S2xAfA758/O SaPHj06bn9icli2sP4R18YLF6ax5Z6VJJ09K2zduT0tvWtprCOvNq2/uTvfat1zbq+3kB0elNPvC 2emUc05J49vGp/TC19TZ3pmun92T52bxLLh3Qdq2eVsu98zZM1P7zvb0wC0PpC1P9AZukZkT3nhC apvalpbesDRudZ9PmX1Kmn3R7DR2/Ni0df3WtOyWZWnntq597I4/4fh06d2X5mHMb5z9xrTi3hXp 5LNOTm2T29I9C+5JTz3ZBQoNeZ5z+Zw0fdb0PBx74+qN6aE7HtoPSB8/9fg058o5adKJk5Iyr16+ OoPQ4tYCJ5xyQjrv0vNyftu3tafldy1P4muF1jy8plfwzo4ug0D9Hggiaz784Q8n3yuP14oVXaD6 QKRV3Eeu3jDf5cuXZ9DCK4diGOU111yTHn744dJZ8h4lS7n6xlauXJk3aG+1cxCAIsfR17/+9e70 DbU25DqG2AbYigCGaJN58S37v2PHjtzmDcVy7Zk4ijR37tx0wQUXZLkMhCxcuLBfHYfN+Hz//ffn zlv6htyhL3jdi+8V89Xo2rBt5SfrI8+1HaFXX311Ek6577yz/uiQYtr12ga9RD4iMlO7Reo39FyZ MPmlBj++A/xZunRp5s0999yTzjzzzDx6yxC7YudNs7LHcH38MfzOf17ma6+9trte5fniiy/O/Iny yR67o5FxWK8IzfJT753q3uHBgftXn9VdkD9/y8r0gvnafS+G1Bree+bsiWnXzs60+JbN3eA5Ap4z Z3I6788mpbHjR6VNT7SnxQs3p507WxslOHny6LRjG2dMz/Dohx/ocuBEOuPGHZXOv3xamjGrLevd davb05I7Nqc9hXcibKNzmXjKln3y1HFp/pXTEjDd0b4vrVy+Iy1bsmW/7YPeeckJ6cw5E1N7HR6W yU+j8gznZxyCd911VzLdpNHIELKbrHrggQfyeSBlNvqRfCYvFy9evN8UFfqWjqPHN23alMjzIlaL 0WYxvFnnKHvo9ttv79aHdIKpMLfcckuOC9ai35UVngrSaThv3ryMF+k65SvqtQh3IM6lVksOUBoZ CMAZwNH9GLobYeqda8MAhBTxD3/4w2TPWWATY8TrHgXNs2r+q7A8qowx8VgEyj2HubEvfelLMyAV jwWfeGHl+yc/+Uk3kDzjjDNyeryx0jXkWANwDUzxRBt6zKPrbI6ttBkOjB3Xr3zlK7MRUQS3FPSM GTNykQ3FnjVrVj4YekHip6hVsENjqKiLA/jvACQYuDpOPve5z+UPFK9aoRNnnpjmXDUnbVyzMc9H nTR1Ujr//efXjQKAW7NiTbrrkrvyolHnXdx7SMg9l92TVi5ZWfddN3/vL96RZp76lvT4p9empTf9 Q9qzpjNNfOq49Lfv+Vh6/qi96ZfpF+klLz0mfeiPbklfu/1r6fgfTE5HjD06/fyIX+ajGDGArF0D me072tP8D8zvXtSsGM418L59/fa07cneyhHonXf9vAwezcVtm9iW5n9wfq/XLY4FHAKM5y04Lw/1 BexPO++07nBzr56bppw0JT1898Np5X0r08mzTs4gtjuAkQpjjkoXLrowz4GVlvjOmX9Omj1/dnew Y48/Ns2/bX4uj+HCWzZtSfNvnp+A7IHQjHNmpLQvJV7aWjInd6BkA3Nz78ghnS4DIfKJ4nIw2mvJ kMglS5bU3u7+Tyky6ONdvbu+FdM9WiGK6JRTTsnKhzITJ4DVKgElFCZyLf+O6KyLLcFMLwmSd/8j TNyXB7rE+2TvokWLMniP5+QoEI8HtiagUD/4wQ/G45bOzfgsMsaFb1C5lEOawfeyiWk35JhOAB0S 5L5yFckWbowL9a5D76qrrio+7r5uluePfvSjGXR6gSGis8Hxjne8ozuOMmG6Aze4wBd1pUNFJwkj BSgtGmxlyh5JKPMXv/jFdMUVV2Tdb9gevUzX/smf/El617velT7xiU+kv/7rv84dBPTxu9/97mwP 6KgJGyTiq3duJT/13q/uDW8OLLxsXXpoyf46oliq085pS6NGpTy0mRf18g+clIpi+pSZE9L8q6al DWva09JFW9OkqWPTpe/vGk5cjKfZdda7TZy086+enqadND49cPfWtPy+7RnkApatUtl4mpV9zJij 0pWLTkqjx47KZV/18I40Z/6UNHd+j2yXt9POakuTpo1OSxdtTvs60348LJufVss5HMJz/tWuo1Av 3/Q62afTeSBkHR/2s45IdgK5WtRhsIpORSPKhBHWXOD+El1G1+l0piMA2SCjW+kKGIvNQf9Li048 GNTUc4sxDDSMh+CdY+io+7XEAIneVr0W9YbnRhjAk9L61re+1R0vwKnHW081AlblIVYrlqZ3MAzQ BDh/9KMf5TA8rcICu9/5zne6vcqA8HHHHZcVIg+sNBibAXJdB4B3T5zSDWDrnjwpl/viD4+1PCqn 93l+XYfixasg7wLIxaHchpNVlLKRtGDBgmzYPvjgg5nXeonqLcjTjF8zz5uZvbDAFMpA8bYuQBWe yYhj49qNac3yLq/gPVfck/Z09O6NfXLNk10e2Xih5qwz5mcdu9OXvvTFtPmb/5r27ulMf/iOP0wv fvHo3B600Y5nnkm/fP75Lk/Ki55Pz6Xn0/Ppl+lIGvTZngh5a5fd3DWkcMXiFXlxpInTJqZtG3sD 2HHHjksnzTopRfl6Ykhp1pxZaesTW7vj2bV1V7rwzgvT5BMnd8eTh/i+4LE98bQT0/qV67PndvL0 HoHzwMIHMtjfvXN3d/SzL+kBrW6edPpJ2Tt8+wW3pwjHS27IcNC0U6fleJYuXJq9voZRb1i5odtD HOFaOSvLWeeflVYuXZl2P92Tv4jDolLKCPzzfofXOp6XORPCFANh7XseCBXbsI4aAKpIPHshL4v3 45pSAIQoEYCCp4xSKvaORthGZ4sMkZ3F9yi+Vkmva+S3uJ5CMR7KXM9xlF2HH/lYq+RNPwmP9B13 3JF8+zoWwlMOOPHk6klG+Aco6g2unVNaTL/edTM+e0d+AFOE7/fee2+W6bXe5Hrxxz3KXVoRj7YE eDIqIh5tgBETHlttjRFQS83yzKCgc6SFR9FWlSOoTJgI2+gsj8qh13/mzJm5jhgp0g8qU/YIqy3g 72te85psbNHlOrPJVG3HML6vfOUr6V//9V+zd0Gb17mtw8m91772tVkPR3z1zq3kp9771b3hzYH1 a55O49v2t1GLpeKtvffmrkWo9i1O6ca729KUaePSkxu7dMtZ501Mmze2dy+YtGNHR7r6thnJ4lBb ntxf/xTjLl4D0M3onoWb8tDlp1/wCltecN4lrduIZeNpVvYZp7el8eNHpxsueDxFnniut27uvW5E R+e+dPtfrc+ecR0EVy+a0YuHZfPTjD+H63OddXRCo07usmWHOdjOZCm8Qa/AGTG6hvwOnSROOlWY 2jWUyqYHJAO3iBe3OBKMbmBD8eYGyCf3i6OYyqbTn3BNPbcyhzANaAtARtnVgluKxz2ubozlnQQc i1QMA7D+p//0n7KnlJcUY7wnHV5Pw4OR/w5pekc4DDIXViWGVwSI5bUFfgFn4d0TjwYE1Houj64p S2AXIPZfeCQ+zwLcuqeHQ14NTf7xj3/cvXWQZwH2XeOT/DnkLUiayhCknBX15gBjG48Yajxm/enh AQi3rOsZzrt5XRc4cb+WNq/pAS57nt6z31Cb2vC1/5/+mbk/z6WXT3h5es0pr00z3jAjvWrqq9LR Y45OT/77v6Xn0i9T++6n066nd6aOPT9Pv3xuX3r22c7UubczPX/Ec72iK+a5fVfXgkiGFtfSaXNO y21s3aP7LySVwfCmbdmryrO6Y2sX0Gyb0jVnvjau4v9RMaZae969pxuwCiM/ep4B66BJJ0zK9wPY uq8zoAg4dSygs88/O39jrnsNST6qywMsr/WO/HLhx3Dp8z9wfrLy9Jfv+XLhScpl5Wl3ZK/15P29 1r1eaPBHB5ShPbxLN9xwQ4OQzR/xPBqy69CB0yoBo4Cf74HXknyhLFol8qgIbF2TSTosB5uAU15i PbeI4ga4agFpgD1h8FzZih5fnaDr1vW08/BWhw4a7HwXh0vFiBH6qhWSZyCTDnEwJFAxz3QJoyCo FvTH/WZnPAtAKx38dBSHmDULQ/dFXuud6+WhqNfCPhCuTNkjPmXWSfLd734362Qd09ojnWul0F/7 tV/L+v23fuu3coeH9ks/yyOdTm83o1by0yyu6vnhyYHN63pssliQamxhusukaWPTpkKYTeu65vu6 P9hk+HGASHHLj3m6447df8RPo7TLxtOs7FNPGJvzUMyTDoPdT/fYtfKxaY0pi1052rG9y6FT5GHZ /DQq0+H8TOc1R0iAxIGUFfYK+Rw6jFwNonuECYrr6LCO+2XPRR1ORhdJmZBOanoGFcPnGwfwp2l/ UgA+SgzTQln7zxgpkrCReQVjGPB4FpF6MQwljKmGFAOMACXQB+jytBr6C8yKA2DlNRVGuvJCIVJy AKvwwUBnYJah5D1xGGrsHuXJEwuQBhAWh3xFGsrm2llYjeNXfuVXcnieaMDZs1YpeNnqeyMhPM9G zK9jZOph0qNkiGArNGpM17DbeGfvnr15CGvxA49nAb7if6vnT336H9JtH7o1vX/h36T03BHpZ7t+ kr62+mvpu1u/m8aNH5dGv2R0euYXnWnvc3tTetHzadTRR6Z05BEpvSilI0a9KKW+7LMGO8LwTPM2 53LVZHj0uNFp1rxZ+Sg+qlf24vPaayDy7Plnp5NPPzmNP75nLnEx3Kixo9K+PQ0y+gLYXbV0VZp1 /qw8L3nFfSvS6odWd3cinHjqiXnYcjHeuOZ5XXRR7+Gc5994fv7ully7pFuAR3iAHLhGzlZMnr9o frJFUO2iU/FOo7OezujtbBSu2TPgY6DxmO949tln56HSPLfFUSPN0o/nZJ95jIb6UnBB/ZFj8W5f 50cffTR3UvmGeZuded6aEblebKuuizpGuclQXuChSvLGY+goUpSLbsLzoi4olrH4zsG4NowtPMi1 6dHltdtW1YYp/m9W9mJYep4uRry21rwwIspBX5P7X/va17INYWSW9mPhRwYbe0AnczNqJT/N4qqe jwAO1FFno8ektKej58HePea0pww6B5sjtvmZO39K4jFtO350Hi4tjVYtzX7F01PE7mKNHptSZxMd L3CvHezqxNOv/HTn4vC+0LlMtxspFPhFifurl4t6Ja6LcdFDRfshgHB/dWoA2Hq1RH/oqDTk2ogs 64fEqKx64Qf7XtPvRuEpX4XX248xKqHW8JCxomcy3gulHhkvhgESKTKGF/ApLPSPYZSXygGQeVWF ATijMlzzyALArgFkYShHIBiw9VxcDiAVQHUWr/iF0wssDum6diivMJ7Lk7xpIMA4Reu5fJVRsFHu 6tyYA2FIReeIYZTxcTZ+s/9PBxr/ub/3u+mZZ59Jn/zk/el73/1e+t6T/546fvbzdOS+59LkV74q t58xLxmd23gGtqOOSEeOHpVedAyQ+3xK6YiWMn/irBPT2Ilj0+PLHu/zPcB37fLe8zF3bW9tlMC8 q+flRbZ4QL077ZRpafalvYfT9pmBmgfiWLdiXV64a86COXkBq8VXLO7qKNuwNd11UX0vZCwaFdEB 9dNmTsue2eL+tvG89rx9c9fQzPGTxqfUe42i2qBD/j+5FqMYDMntj6fvxhtvzENjzSPVQWk+4kDm 2jRiGh1hbialpmOTrGxl8atGcQ+HZ+bRUuRFKg4VLt4/1Nc8yH0B2P6A7rJlF7fpSNbB4LEAdHV0 swfMuTUq69Of/nT69re/nT0N2lF0MOvgpsedm1HZ/DSLp3pecWAgHOgFAPuI6GJzbk8em5Ys2pp2 bO9I008Zn/fF7SN4n7cHK54+E2jxwVDLT4vZP6DBjeiBLXQ8F4ksNOpmoHNwi3EeiOtmOsLUJPKd d9pcX3aH4cuB4w5EniLOpuBWQIC0iOzjuojaAYVaIFvsMRBPbRjxAIg8p84UFnBp6BGmAa3+A9Ou 3cMU8QKezuIMkErZec4ja1izYXB6iAFe8fNYiM9zYaNc3vcegIyAbuQdvcSMMwYbcC+v0fvueStU y49W3h0JYQPYKmu9udpleMCbWFxUyHBXXZ/NPsIycdeGOWH6a9Pe5/alb2/8TtqzuyMBsuO06Z/v Sd/btjW97GVdQz6PPHJU+nnnz9NPO3anZ/f9Iu395bNpb8ezaUxqbUiohaQMpe5rHmnn7s7U0d7R L09llI3XdvpZ09Oy25blrYbcHz9x/6GZ+zr2JV7yMmTe8H3X35cs9mWBqemnT89zfXlby3hVfW/n XHRO9liHd7Zpui9kTT77Q8Ck777YJvsTz2C8YwQDORfDkyk8iq8sAccWb6JUAmQWvbdl42klHFDB 42yusJEYxdE7EU+tPKQPit+p66JOoRe8UwwTcQ2VM53iKA5xLuYtlHpt2YthDua1Tt3BauPNyl5b rl/91V/NulbnsbrlxfCt62zWPj/5yU9mu0OHss5q3l0jfHTO0Mc6rw09ZiAaLRC8jXRazU+8V50r DgQHOvekNGZsj547agyvGnuiNb1iHYjC6NCIvvvMu3nqWW1p8W2b0+oVXbsWtE3sGU7aHbDJxWDF I5nOjpRGl9TxfWVrMPPTVxrD+b5hwRw5RQJ0ybiYhlN8NtBrupOsDSJv0YHUqWwVa2WYqqRD3eK7 1pM40NR0zq0MALEMvWCEa8ygYIIokqIhIqz/7gfVhrF4hDjcBxpdU3SvetWr8ruUnTg8MwRZOOBU +uZz6eWl4FSWMIYzI4YDMOwe0issjDx5PwAuACWNl7/85fm5nmHvUaLiALalxeiStkN6QHDEnRMo 8YNfRf5EB0GJV6sgLXDAgkZTZ/Ss5jdtRtdqg8WFjlqIrmHQv733nnT88a9It976ofTZ5f+Ybr71 lvTn8/8szXzzm1I6MqWf/aw9HXPMUWnsy8alI448Ij3//C9fWGzqxemIUc29DsXErTw8/Y3T8zY+ xfvF61z2k3rK7pmtflqhMLpt7RNU7CyIe9uf3J4X2xo3oWce7tRTpibgOAiYdQRtXrs5DxEf29ba sNLpp01P3nl0yaMR1X5n6VgtOqi73l+Ydxz3y5wBW4sb6XVsdVh8mfhbCaOnU6+nVcQtwAOIWPm4 FYo6Lc65HYj8iU5NshGRxaEbIl86Fh0UWq0XM8IoWyhaHmn5LIJ2w7ljFXrvGEKLYp5QxDOUzvJs Aa0iGZZdJIZLcQ5ubfhi2OF0XabsxfJoN//8z/+c9b0OGN7t733ve+kLX/hC1rm8tgy8b37zm3k1 Tm3E6Cl6mU4HeHWgWJSs3jfRan6KeauuKw7gwPbNHWn6jB59NX1GV4e0+63QU9s608TJYxOwFzT7 nZPTKbO61iWIWW4dBb07tgCq451m58GKRzpbnuzIC3IdO6EnzyeecmyytU9ZGsz8lE1zOIWDecip 4qEjm46tncM6GOUiY4uLAMY1nRQkbU69oP7u7EL364wMinUmwm6I+wfq3NMl1SAF3k8FdAB4XOYx WTleE4bCVhjXwqikogeuNgwgC6DyosYCT95jXFJiGMyrioBJBhQA6jnjzGIUwofHF4AUl3QBVAoT oARYAVjGk15hJIz78gvgupafaFiAN8+sfFGk0peOeBCwzQNclpRdb7SGI42icVM2jipccw7Ya5V3 cO41c/Oqyfa7NX+zdqXkZjHZw9WCTvaTRVNmTOnafmbz9u79Xhmt2sVdi+5Me555Jk155eR01qwz 0svHHZse//rqvPqydvTS8S/PAEDb1QZe2vGy9JOftqfnt/U16Xb/3FlIild202M9iwHUhlq1bFXe nued73tnnnd68syT8161d1x0R/dqybXv1P63IJQFm2bNnZVXmua1Pe+S3lskeWfDYxtyfi689cIM uMdOGJuHHq96YFV6+M6u/VdPOuukrrm2i1ek9qfak711tf3Nj/cs5FWbfr3/E0+YmFdAtpdw3k/4 hUAWzIoFrGylZF9eWzfx3p9zwTl5Zea+vNz10ol7scqf/zyetVu5RLiBnhnnZJwzAuTwB3gLxaan k6c2ejp5Xz/1qU/lubNlF6AgSwFNw4LIbW1wIKBd/ugBHmV5MKyVpzJWNQ6+PPbYY7ls5t3UIzLc IlnKZ44q2fj44z1D7nl/8R6wl3/73QL3DIFWqAyfW4mvUVhzjM1htYKxOott4fA9PKTmHakLw8vx sV5dHMw8NypPK8/KlL0Yn3b067/+63kIcgw59lxbYDfYWxGwtbibhaX+x//4H+m9731v1tU6mOnQ 6LgpGlGRRpn88PwytnwTSIcLKn6D+Ub1M6w4YH9W+9JOntoFTIFSQ4OB0uJes80KtWL59rw68kXX nJi2bOzI+91uXt/e0krJ0lj76K4095Ip6epbT8p7xU4+YWw6e+6ktPSOLl1okaatT3ak2XMnJSsO t00cm8PX5m/yCeMS0Hv8JHNyRyVgE1nB2MJNZeOpjbfe/3WP7UrA9pW3zkgrlm1PbRNGp9nzJqWH H9ieHriz3MihwcxPvTxW91rjAN1Db8f2ezrOAdviyCq61vo3ZCFM5bo/5H1zbelx+IcuZN8EyO1P nK28UwrcGu5D2FMmFAEjpHYOkR4IK1sWQXBxpUuZqg2DqRaSAjgBSUCXUgNoX/e612XGYoq9+xDG MAakDXDqyTXk2DDif//3f8/PhQOC9QDbLgDYDcBrcReLVzAc5UU42woAyASFeIBiPcryA+wKByTb NzcUKWDLgyuNssQj4X2GswajDP3tESmb5kgMZzVeW+oAtQCP7WmWLezaYqcVfthuZsbsrr2LvWdP V7R4weK84q/hzm/7vfOyAbZr14/T9/79u2nl8q+kE18zPb35N09L+36xL73iFcenOXP+ML35Taen Pc/+Ij3zTGdatOgjea7Zpz79QPqXbeWGZmingGFeSCqWJaxTGEN2bREE2NkuaNeWXWnxVYtLA9uI cskNS5J5t8psD1yA9ZwLe3ufLGhlT157BZtLC3gDliuWrIho8lY8VloGlHl/gWarGbcKOH03VoBR 2d4AACAASURBVGu2rVGRll6/tHvotO2Lzm0/NwNsYW05tOz21utd/AAWIMJgDpBZTHewrq2AXNwa KBb2sWgU4KPTjYwrbhEA2JEdFEVZcCu/1157bTLv1nYulJcFemrn+ZQtF7BsFWirSdsWRl4Nma4l nlZ57IuHFC1ZKB7gD8grhvUukAjU4hOwaGubVqkZn1uNr1F4vADyGQ86v9SXcgWw9a7FQ+gc4eg3 HnkAvkgHM8/FdAdyXabsxfh910Zb2YWAbmZfaFs6S3TqfPWrX82efe1DvZvDrUOZDcIY853qVAFQ 49spxl8mP9LRhoN8H0geinUWz6vz8ODAeedPSqfP7tkhwfY0aOGCDWn96p2lC7F+9dNp8c2bM6i1 L6ytcBYvbK1zVmI7d+5JCy9Zl+ZdOi2dv2Baat+5Ly25eXNasaxnq787btiQzE+V160bO9KKB3ak uRf23gpo3sVT0oyZPV616+7sKtcNF61NT67vWrK4TDxlGLBnz97Mr/mXT0vzF0xP7e2dafmS7WnZ knLANtIYrPxEfNW5/xwg09gTQC3gCdfRR0XSGW1aJx1EP+kk7M+2gWSp0WL0oI5seE/nfNHhWUx3 sK+PmD59upVtDglRboAnUAtA854aMszbGh5XINMzYTwTXjhAF+h038GrGkfcAwqK83G9Jz6H951j WLN3gGyeOGl41zXPrWt5cJ9y9a6wnh0q0pvCCOZZGggNtXgGUpaD+a7hlLctX5T+7t7F6XOfXZ6e 3rYz/fobfj1d+d4F6dlnfpH+6sqr0jMdz6RXTp6Ujj5qdPpJ+9PpiCOPShNecVza+8vn0w9/+MP0 iiNfdjCzXKXVAgd88/bZpAjC4G3h9REflHI0vBSwqwfCDfmm7GpB3Yhn3AhiAH2uc4MsZUQBuXTr P/3TP6VvfOMb6T3veU/uEGYYfeQjH8mdPYwyupcejlFdI4hlVVErDlQcqDhQcaAEB0p5bkvE068g lFT2yrywQBRwClDyliKAkwJkaPLUuqb8hKEU432KThjKDgAVDyDruf/e8yyUoXvSBU7di/DCUaTi c0jDc3EJE/nxLlDsf0UjkwPa6A+/vyOdd+7b0+TjJqftW7+XZrz+19NRR4xK6zY8kV43/aTU8dOO 7Jn4+c+fScccOSY993xKP/rBj9KLjhqVJry8LaWf9t4vbmRycmiW2vL8vnO9lhW1zgGe1tphxq3H Ur1xOHOAjjUSSyczgKsDmb4Fbnlj//AP/zA/o5Pp/c985jNZDwtjukdxDvnhzKeqbBUHKg5UHKg4 0BoHDim4jcVEgERHeEadA3TGMwrQ/QgDzPLuBjB1pgCRMIBqrH4ccUQaniOgNe5Jz33xBHD2jIEr Lml5Lly843yoiGdEngZKQy2egZbnYL5/8bsuThde8BfpzTPflM74zdPTsz//RfryF7+UHnzgwfSj Hf+RJrYdnztYjjz6mDT+WHNjXpR+/LP21PnMnvT83iPSuCPKL8xwMMs10tMiW4yKAGwNk6yodQ5Y JMkQKICloooD9Tig85lu9b3RrToM6VvD5M4888y0YMGC3H6AWG3pE5/4RNZ5whnufbAWJqmX9+pe xYGKAxUHKg4MXQ4cUnAb4BJ7gEY9uc5FCtAqrMNzCpBCbEbCej+OAKMUqaMZCc848740veO/+2Xj aJZGf58btw6ED5SGWjwDLc/BfH/KK6em5cs+nz77D59Nv/j5M3mhqZccPTod9ysT0pTjX506fron vewlv0z7nns+PbdXm3lRmvCy43Jb4r195iet7T97MMs2ktPyjRv+WFH/OQCYNCJzGisa2RwAUnll 6XJzb+lZo6n+3//7f9nrf+utt2YwaxFHQNj8sNNPPz0zzaiAiioOVByoOFBxoOJAPQ4cUnBLYQGg lFt4SCk4w44d7sWhhzcALg+tawrRc6A44gA8I1yAP/cCkEoPMHVGcY53/OcRFadw4mDsupY3aQsj Pe9UNHI58OOnfpwnx09sm5Be0XZc2v38z9KYo49Jo9LR6bv/uiUddeTR6ehjurbG+fmezvT8ESn/ f+6IrsXVjn3pMSOXeSOk5BanI0+KqxGOkKJXxaw40JADRT1Kz/pOjOayloY5uK95zWvyd2P0hMXV LMBI51v4kX4+2FR9yweb4wcnPVvdWIRw57aerS0PTsqHTypleFgmzOHDkaokh5oDhxTcWjHScGMH oAg8BjgtAslgEoAJ5FKKQK1e3wCuwsf7Ec4zJLx7jiLp/Y0FpTyTj5inC7w63JOmHmXxB/AGeAdj WHAxP9X18OLAkUeMSpMmvjK9ePSY9Owzz6a9nXvTvp8/m/YdtTcdM+rFafRRR6ejRh2dRo9+cWo7 9qgMbvc8uzftMZd7tM6V1jaCH17cqXKLA7btISfe+ta39loJuOJOxYGRzgHraNCj9CqwSp+bg2s+ LUBLJ/t27E6ALDhlETK6+Ljjjss7LRxMHlbf8sHk9sFL6/33nZbM8HrP2x9vaZugg5fDoZ9SGR6W CTP0S1rlcLhwoPcY4Aa5tu+eJfMdFnuoJT2rsadf8RzzamvDm+tpWxxb88RiEoYpAbmUnvk07gOx 7gUIBlT17OpFtY+SOOwVCYAKE55V7wobh/QpUcpULzEQKw7bD9hrz7YV5onZ70780hVePPJoS47/ /J//cy47UK68RSryxxYi3iuSDY3FUdGB5QC+2x6ieNTbR3IwcnFkOjK97KXHpvaf/DT94AdPpZeP /5V03K8cl/btfS69ZPSY9OLRL067f/qz9IPtT6WdO3+cfrLr6eyR+OXe59Jxba8YjCwMOA7fIV4V t8MYcKRDOAILHSlv7ffZapbLxmNuoG1uYj2AVtM5FOHJqfvvvz9v8ePcqtzyzsFaBdncaFsKDSei X0I+xf7F/c1/2XbYSvwDkQmt5Idupot1QlsfA2j1rSAeWltW2Y4PkGUbALrOqHYrwnzzAP8MlW/Z SuO1e0oPpOhlvvcyYQaSh1benT13crp/9Vn7HefMmdwdzZhxR3U/v3flrO779S62P9mRdj3VmTo7 +7c+wNyLpnanVczXzHMm1EvuoNybNfv4nKcxY5pP3+srQ8q1aHnPNll9hXO/DA/LhGmUxnB9Ziuc 2267Le+6YLpOLXaIcsEjtr6rt61ZhGl0ji3oGoUZSc9KgVvADeijUBzAJIAbyiaG8AKY3/nOd/LG 6+bH2IcuwCqmApQ8nzZsp7AoLoDUXrXe9T+8pcIBl8g9ys/cG/vQ/tqv/Vq+1otLCQLDhiyJP9Jx H5BlxPLOioti1BtMibqvDBqU3mK9w9I0FMq7wK2wyv3qV7863/vBD36Qw3tPWGWT71e96lW5t1n6 9tsVF7DsfYo7QLWwMaQ6ypYzXP10c+Cd73xnWrlyZff/Vi/UsT0mbRzNcIrrevGo5/Dca4fIf8JH O9dG1HMQY8xwOe1U3R6z9/m09+ndafwxL04TX96W9uz5efrZnt3pyBcfmX5x5N70s+c60qjxR6cX TzgmHTFmX3r+mGfTi8e9KL3o6M7U/rMf5HYvLt+PNi6/5kBrJ9qf78Q+zNqxduq5/HjuuqKhzwHt b86cOd1G+dDPccoKlpy6+eabs7zSgTgUyXeBfDvktG8DMLMAkW+VPCbPlcX3RC77bhHZfago5NJA V+JWFrKAzIsy023kF3nmuSN0Dp1L5pElRbl2qPhAN4btII/sAHkzoooX17V9j9Wzzm76VxmUmWym Q5VP3dLhAY55fr2vE8GWa9qC+nZoK9KSbqtU+y2rR/mSP/FpX9KNMsmXZz/+8Y9znsMmYU/86Ec/ ajX5AxaeQY0njb73MmEOWAbrRGzt0JsuWdfrWPtYzxoWezr35mdfXra9ztu9b33gsifSVe9ck/q7 9t2jy3f0ysft12zICYwkFV2Gh2XC9K6Z4f8PsD3//PPT2rVr897ysNOVV16Z5VCxdBxi73//+/P+ 58X71XX/OVBqWDJPJWM/5o0RhMBk/I/kKRpEoMcS/xQRJeYeEErxqmDKiXLwjPKhjCkf/ykgz/13 n5HiiHcBXfF9//vfzwoMIAESKDfveoYocAoFCJcP+WMIiNc9aVCk4qGIKCZxeBZ5CQUFdBgqJR3p U2DiRO5TwqG8eHq9J355UQblirJ65nC/ot4cUD8DBW68IYQFauQZUc9W4RRW29JZArxqT7/5m7+Z vvvd7+Z61l7VsfDqXxuTT/8HQkYN6AzReaRTyAgCxps8SEN79YwBJRxjznOgV94qqjgw2BzwHWiX sT+tTqKhSuR1yHDbx/zGb/xG2rJlSx6+Sr76Rv/5n/85gyYjZ3SOkuO+LbL4UBGdQC616hGvzS/9 o77IpNNOOy3HSXbQe+qQLtPJDPDjB97Qdzyi0WFbG+dw+s/GmDx5cvre976XOzHUrY5mcty8XDzA Y+BS+dkZQCWeuR4oaUPi1rFARmtX+O8+G4EX2mgvZzptxowZ+dqCWfI2UD030Px7v8z3XibMYOSl Ng6jG5Bvtx5tfKLBSvZ7U/J8yolj6706qPd2PrUnOYJOntk1qm/H1o64VZ1HKAd843Ro6FGy6cYb b8zfv5EgiP0J8D7yyCMZL5x11lkjlFuDW+ym4JbAphgokqC4ZlgAnQhQU5H+UywUOGOCEqFsGRpA A0DgGUVEaAKRATylxWBxn8IWv95cB3DtPaASiPQ+ReWe98Qr/iKA5D31XPzKQLHryQXOhQe25cs9 cVD44pCuNEIhCi+ce8oCdMiH8rpW5gC2eouVWXhpKx+KPDI0KD6GB1ANNI108nFfeOGFWQDgNb4y WqxYq2NlMIc48robNrl06dL0+7//+3lIo3vos5/9bPr617+e6+3yyy/P+VDPhqt/61vfyiMRPvrR j+ZvwfwvHTyGiAECeueUg+F47bXX5vYZ9Tp37tx0wQUXZAOIUbtw4cL8PIyxf/zHf8zvALjauW/A dhgM9ocffjh7LBhPf/mXf5le//rXp1/91V/N96677rr9Opgizb7O2uHVV1+dDB9kdPU1BKavPBfj xTdxKTejjgBfvHhx5p9w+My4jiF02v4XvvCFbuBUrAt1HVuAAPSGm4bwF5f84rOOhuBhsXNNWps3 b851Iy75kW4YSOJYtWpV5q1r9Rxk5V6dHMj3S9FQMNqiUQS33357r/myZeIRVzHtN73pTVkmRJpx bsbnMuWKuJqdm6WlbfjekG+QHET4QJa1SoZg8VrXqwtxNctPszD0jDyTvWeccUYGGeTGV7/61fTu d787ffvb384jfXxPprD83u/9XjaU6Y0PfehDedh1K2XSzst8783aapk0y7RDxhCdRt/8r//1v7Js ELfvhFdYnYnnr//6r3PHGVlGHy1atCg9+OCD+VsSvqxMaJbvst9FmXpvlpbn9sH9i7/4i/xNa6// +3//7zzShd7mvdU+fLsAL/n5ta99Ldc7uYtntfIo0lTHjNCi3qn3LbNvpKUzmxxkO0QHOFDL00vO aH/aqM6FP/iDP0gf/OAHs3yRZ6QO+2PQXnXVVd3fl7wW89hM9kq3zPdeJoy4mrX5st9OZsgLP0Ct Mjn6ArjF8P25Now46M/fsrLf3tuIw/m8eVPSpvXt6anCAlXjxh2Vzr98Wpoxqy3t69yX1q1uT0vu 2Jz27O6RqyecPC7dePep6ZYFG9LseZPStJPHpq0bO9JdN23qBZ4NOZ570ZQ0dvyotHl9R1p8y6Ze ad29YlYaO7bLtP/4V7pWF5evGy5am55cv7s7qyeecmyad+m0NGnq6LRrW2daetfW9MTqnd3Pay+O nTAmffRzp6W73rcprXr4qe7HZXhYJkx3hIfRBZlYpPjmyYQgdstdd92V9RF9OVAy+tFWauQKe4xN WiTeZDaSPLDP2F1FHMJuYofefffd+TV47MMf/nCWpSFj2G7sz1tuuSXHxRYmM5VDZ1+QzsV58+bl kVXsTXop4ogwB+rctPsyjBpCPCiugUZKAqBkALkG3HiXKBf/EYUKBAJ0GOq/gnpOeAa4BTYpIWFi KC8QSnkEmPRuAEwA2Dvy47m4vCc++QBA3IueVPmKRiWcuLwvLMUkDnFFubwLyOMBRai3VX4A1wDz 4lAOZWMYGh4njB5d7+ELEqf44pCO4X7+j3TCI4ehT5Q0Hn7uc5/LH6h2MtiE9+oVoNHeHn300QwW DYPT4cAToO380R/9UfaoAsLa3MUXX5ze9ra35ezocAliZAChjBl1DxgHmX9+zTXXZMFl3gWhwLhB 8qFjhCdW2zGszbX2xYvLQNK+/Ces/st/+S/ZQGIwaX+M1FZp/vz5WRgtWbIkg1F5r6VGeY6wgA9g 7HsynG358uW5gwKPWqGoC/wDKgk/wrgo5AETbYOikBYAU6/sDCzxMe4ZsPhd/L7cJ+yRa/XlIJSD CGyGFCFN6DM6Ga5FKhOP8OLG576oDJ+926xcfcVfvF8mLR03jGJEsWlnjne84x3FqEpdU6DkpTrQ fmvrokx+moUht30f5Lb26NsFdshdnVHagINhrd0AGIZ+GSKmbn2L/aFG33vZttos3TLtEKBVP3TZ Zz7zmaSTBnj60pe+1L2exZ/8yZ/ka88fe+yx3GlMPqmboDIyIcI2Opf5LprVaaP4i8/oY1sF/du/ /Vv6/Oc/n2W2DjE6nr43suUjH/lI7rD+9Kc/nf7+7/8+g1yGG4NLu9HpQu/oMCuSuGv1Tr1vWae4 dHSWsFEYgQw3/Ncp9slPfjJ3LtAVjL9LL7003XDDDVmGqxeddAzQIogu5qPRte+LntSuGabkoY6M VqjM914mTCttvtG3g++1FKC2nkHMdIqj9r2y/xdeti49tKT50OWy8Z0ya0I66Y3j07J7enSKd+df PT1NO2l8euDurWn5fdszyJ1/5bS60QLBq1fsSAsvWZdXcZ53cU+4k994bLrw+ulp3epdaemiralt 4uh0+QdP6hXP7Vdt6C4ToKyMju1be6YyTTh+TLrytpNS+47OdM8HNqfNmzrS5TeflCaf0Hcbmnvh lNS+qzOtfbRn+LeEy/CwTJhehThM/xhhQ+YAtEH04+rVq+PvgM4ceuQCm1U6ZE7RBqILOWI2bNiQ wwhbtFdbTZzuYJdx2LC9ANkg9jSbjoyjb9lZ0mK/HQzqQawNUpM5xrezAoRiZPAHuPM6I4OA0lOK oYaEBThmBFMiwIR4GOeAAHCJ/KeUgGDPof8w9hn5AKS4xOsd3h3peS8Arrz4L4/Sonh4f7xHuRD+ 0vCfoUMpyBcjx7vi1iAYC+Jwlg/5VGZhgBFKUR4jPOAK3KpMCk78wStxOOIeb5OyOHhz8KPY09Gg Gg7bR8AML4/6CY+CHnc96AeC1DHjHVjkMf6bv/mb7MX9rd/6rVyP2pNeeb1aDCR1fvbZZ+cVb1/3 utdlA0Y7CiKYYtgJj1GMbPAcSAOiw3vJaGKIMLAIOHETDjqDGEHmk/sGtBcCSg+aEQVAtaHvhIjv zuq7etMIq/A6Rn4anQElhld4bPGCACpSozxHLyCw7RvTSxjtl7FWFNrFOPu6jrpgrFnUyuJAhF9x nieBKW4AFxGS6q+27HgVYQjTe++9N8cT/GEghWcSwKFUaummm27K33uUyXMKokhl4hFeniO94vtx XYbPwjYrV8TX6FwmLW0L3/FQe426lH6rpIf6r/7qrzKPtXntTdxRF2Xy0ywM2Q28kr2A27ve9a70 53/+5+m3f/u3s/wl300v0E7pAQCb3AcIv/zlL/caGdBK+Rp972XbarP0yrZDAB+4AqTIBXwH9Oko 1+eee27uvP27v/u7rC99XzyceBJyqoxMaJZfz8t8F83qtEw6wjDidCBrVzonldM9+oNOda396SyM dkxPk5vaArlDzromi0N+0994E3Iu8lPvWyar2SjsAPrCd4K/1gWhO7Q9wI8hyWtLpms7vi9tF9A1 kiXqIdIqc2ZfXHHFFTlOskxnMMO5lcXVynzvZcK00uYbfTvqTCcpqgdm3Quwy9fy91/t8bqaf9tw mHIfTF2/5uk0vm1g04u6oz4qpXkXT8nAU7xFumfhpjR69Kj09M4uncPlMe+Sng6mYtgNa3ellcu7 PKO3XLEu7e7o8e6eM2dS2vxEe7r35q4hrdu3dqTr7pyRTjhxXHpyY5dXFh+AXrRpXXvas6fn/Uhn +qnjc37uWrgpe49Xr3gqrVm5K217ssezG2GdLY515nkT0y1XbdgvvjI8LBOmmN7heA2z8JjqyGfL HQgi89nOZA0dwLaDXcg5xM4K+8l/ulkYeSOjWiWyLbzTvLjFctH3cBRHQQB4339xxF2r6bUSvqnn VmSYAeARPuaNEKwovJGuFYpQp2gJfAJbb2YMbQNEhfdMOIopwDHwh4QFECkKAIOS4VFl+FNSGIVJ lIh4KCLhggLcAo68uhS/g/ETvfv+UyziklcgRVjAirKj9OTHNaAsjxpKkOdxD08C8GpUgIpyCyPN IgByLV5xKgMjC8lLRV0cACLwj2ENdB7oHh7D1nRs6ARhCGtr6hHI9KEzULRFw5IZ0T5Kdaidaj9B Ptgg8RTbi/jXrVsXj7PXyB8CB4DSGUQIMTB9H7413g3tXXoxOkF7MmxZ29LmQlhFR1N3Ak0u9NQR SEHFvMe9RnmOMAxCgrEIAhmAyt9fKvKtyF/5YaDiuwOPUG3ZiwaRvCGGbitEjhXL5Np3TtYMNpXh szQHo1xl0tLmAwjgMSDq6E+dalfReRDguFgXZfLTLIx8aSdk9X/7b/8tK+k77rgjy2fynv5Qn57r lNJjTTd84xvfGJCCLX4z9b73Mm21WVsq0w7JB8BKB4qyGm2indIp8qWs5Ib5+sL59sk2zwGhoDIy IcIO9NysTsvGT2Yqt05RcoBsNCrjLW95S5bp6oCspk/odnKDfDetQ/nDbiCb2TRBrslYgLEZsWHY QuqBvGFPOJPP0lYf2p42ql7UAXlPn5B1ZD5SllaJrA15KX16i4HaCpX53suEUadl23yjb6cVPhgQ Z5htHFs390yba4UHgxn2nLdNThMnj01L7+jttZWG4ccBbP3nAQV2xx27/8i99Wu67Gvhdj+9N6Ue 8zNNmjY2bd3UkayC7Ih5vROntGZH8tiiOedPyd5v130NST5+6ph04TXT00NLt6cnVvUMOc0RVD+l OEAGsW/pVdPfDhSxWUMuhA3Efgki64UJiutGnfARtt45Oqs9o7OKFDhRhybZh4rhi2EPxHWPhd4g dpkmlFQQIYpZmIQYEQQ5sGY1QyCAIhGGJ4wyVUjKRAExPgAlJRCg0/uMe2kwgoBAQFd8lLRDWKAW GKG0gV5xS0sehAlAGcaN/4ws8XouDc+kDdzEtfcpIeGFk74zkKE8hLyyADsUVVSk95D4CGcKT74B e2m5j0LJiQsfPKNEK+riAC9czMVizOth0qNkqNuBIm0ZSFTnOj20Je3Eod61SUaiNqcNqXvDhXkK AESGEmqklLVN6QSJR70zsBhb0vz4xz+ePcQMqyi7ebjafoBZxjlPAONNu0fxLUbczc7anTZebHfF vMX7jfJcDBPfQNw7UGe84h1wFEk+B5vUvaHVOhhCxkkD3wabyvB5sNI8mGnJc7GNFa+jPGXy0yyM OlFHwv33//7fs6zlndVjzDvL6KZvzLU0FYDXjqJlXOhlJt/7Q42+98Fqq2XaIVBHrzKY6ESdrvhB ntEzdIxRH7yHRmvoLCRvfPPx3ZeVCf3hU713mtVpvXfq3WOP8FD4Vv/v//2/6Ytf/GIecm5KCVmu XHQvg/LNb35z5om2oNx0tjaJP7wO5AqdrSPL6BEGWBnZpv2wVbQHcevcJt+lzVagO9hE9IgwplyQ 387Ife0QOB0oKRfeHgpqpc03+naKwDc8tMoTnXvFe+4X548einIX07T10JyLpqTHHt6Rtm3pbeQL 5/nc+VPSjNPbUtvxo1Ook3paJYBnMf64Hj0upXPnTcpH3HMe1WLV86Q+snR7Ovf8Sem0c9ryUOkV D23rBaRzvKNGpcvff1LWf8uX7A/ai3morvvmADnl+9T5SlYcKCrq2rgu2i7yQEYFRV58w/0h+qQv IkeNkDKqRmeqURmtjCzpK96y9+t9W32+GwI/hGj8J8wpCkSxAnL+F4EjZa13wDNnz4QBUikCigWj wlOix1W8FgWhjCgAilwlBGB0j4IAOqQrPvEjZ8AllJkKBVgBWtcUE2NAb6v0hafg3HdoGMAHkCof hilRVAAGI0GjoEjDkGBMAEEO4Q3NpmSlT+kJL07Xyi5MRT0c8CEUF/YxLC8+zp5Qg3tlmxCjCBiJ jEJGovpSp9qK9F1rr+pPnTEitRn1G+Sd/pB2QPDwbGnDlLfhlaeffnr6P//n/+T2I12HfPzDP/xD XtRKG2M4eSe8Yv1Jfzi9Y9hgDFmLfB+IslvJUEcLkKQ9AAYDmZMSea3Og88BMpsOolt44HjKTGWw eJupLPEtk7nmJjrrQLKQHABsjqZvq1Vq9r0PRlst0w7ptxh2DJQB8eSJTjGeXPyhR4EG81J9L/hi ezF6cLjTJz7xiVxmXnsdo0Dsn/7pn2Y7gu42X5TsNrUEH3R2/Nf/+l9z3dumkL3AQ+tZGF86tUwH KUPei85v+p9d5BCvtqYuQpZrZ+aus2GswWDKFnunaGiWSXOohinb5pt9O7Xl6wvY1oY71P95QPUt PHBXz1zKYp4uNuf25LFpyaKtacf2jjT9lPHp/Et75tIWwzbzedh6aNXy3muRiLNVum/Rk2nVih15 AazzF0xLbzyrLd1yxRO9FtUaP35U2rFlX2of05nze+f7ei9O1GqaIzG8dTuM1tCRxW47nKjZ90wf 60A0HNvIKfYUPvRH77bKt5bAbUQe4JYQBy4BAUoESAQICGwGB+MdeKVkgVYFAkyDIYbReOY/4z0A L8VLAfOQGpYJgFBWATbkwzviAiABUP+lySANpU65ACK8qZ6JI4CxvOt1BXC9G/EwDOTDeCBYSwAA IABJREFU4Zl3LFTiP4NB45RXaTikAXyLw3/5VWbvuo8n7onHf+koH2BSUW8OFIcsqIcDTbzx6oYh ouOCd5SxYoiVDg6GiHpXt9qQdu+5Oi/7cXo3vhflYQR5331xOLQVK7wa6aBnSxoWJYl3tZ3Yr5Hh pYPF9+F+KxR5ln4jinQjTDHPcU8Y31Qj8r02S6vR+/GMEekIQyfuD/ZZeSgiwte8GFT03g52emX4 PFhpHsy0yuS5TH6ahSFPfRc6PHnxyF8ePIsqUarku2/Y9+U7t/r43/7t32YFy3tr3vhg9yQPRlst 2w51zik/GaWjFR90+L72ta/NZ512dDGdpwcdf1wDuTrI8KesTChTp2XCNKvTMnFEGOUmE3gDzet6 6KGH8qrZZKly6YQG6oUh6+luHhTyPkg4xhdQazQOOybmkEWYvs7sE/aGRay0MURPuK8uxC1v7CP2 htFI7CXx0wmDCWzFh7dBgyV7I75G58Fo8/XiD3lf67GtF/ZQ3rMS8tlzJ6blS7anpw0jriFe21PP akuLb9uczG1FMSe2JmjTv527U+po35c2rm8MkpoB5Ehoy8bdadH169MpMyfkBaZmnD4hrVnZM/S4 s3NfuuOGTWnSlNHp6kUz0qoVu9L6BisqR7zVuYsDHCI63jgtivbtoeIPGcGeCwonW1F2xLPBOpO9 1pnxHXMU6GA2reJAU6lxWZQtr2YQpUh4UpaENiUD0LlPsDO6GbUEO2EuLEGPgRSLM4HvHeQ5wEjx Cof5PGMUsPCUgHgIUWEpDr30wjFevCeseP13X3zSkA+AUt6UI96RZwrBffNgAAoV7R3pUVaeM6DE 5RCX91wruzPAq0eYIREA1v3Il/flWXzKBjSJwyE+Zaro0HDA8F6H+tYWHepD20Laso4TdcYQ1r4Y TowkdVqGeFd8zEHmraOY66CNMbzNA5Su7S14Whip2r60AH1Gk3gMi/Zdaa+MpVaJMaatBulRrKVm eRbeSAaGYFEuEF6+sSCeCd9HUL204lmjs/zUvtufsksjhtH47pH8h4D3PSIdcUFkTT1qFE+98PXu leFzvff6c+9gplUmf2Xy0yyMOvR9AmsMYd8u4PA7v/M7+TuhM8hc/w1J9g3p7CSndVgW226ZPJcJ I88Dbatl26FRJPSvgw5TLt+2Nks+8Wb7TnUi67gDgPGDhxMwDiojEyJss3Oz76JZnTaLP54Do8Cr Mhndpfx0qm+Z7rWApDKSo4Zk09cWEGQrMDKLde85z7c48YIxVobYCoCttOkQvDUMnMzDB/UijA4y 962KTD5aRMrUFgaexaXomVaJByTklvqlR4r5lv5gyN4y+RqMNi8d/C8SfTLUga38nnb2xGzLffmB +gvvRV9yR3tP50Ns1VMsb5nr7Zs70rSTeuukN57VY5tHHB0dXfbJ6LFdOu3YCXbqiKcpg1mANmjD 2p2JSVO7uJZ4zBU2jNmQ6/mXT+sVT7xfnetzgC4gj2tHndUPfeDv0pVGLQXFNbkXVCs7yNL+kG/X KLigWOslbK+4f6DOjV04L6TKiCUoCVCK139MItAJb0pFBQKRnlEkQCSPKwMjgCCAJzwFQzAT/nEv hgIbZsbYpxAY+9KjqIFXTBeXvFBO0hSHd70Xw6TFKX96sOWD0pF39x1Ag3yIQ1oAqDiAG2DCf/mT HoNJesCE+8g9nj7xMCjkyVl+xYcP3hdO2soL8IqfMUYZilO5pFHR4HEAb7Wd8LgxAvA5eoFrU9KG 1aM6VFeAjXcZwgCUBUvUtZWt1aPn6jfaQm18tf8N19JrxbBhaBoyybhiEGib2qP88TjZjzK20+Dd t5+tNBlo5pWZG2Y1WIa5zh/bSVg0oJUeQZ4qw0MAaO2z3pzmRnmO8jHOgGxD/8wh8y1ZFt7WN8qL DP3TU4eP0jIMtD8kfquiMgQZhIwgR6tll7ZOBXkxnxsQMhRe27CImW9fHeGPuLWDevxpFo/nDE7f uDPSMaGepR9yqgyf88uD8HMw0yqT3TL5aRaGQgYWfCP0DJlvOoNhqFY3B+48MxwUoBOfevXM917W Q1emPBGmTFvVGUrBF2WU96NtlG2HwBs9BtT88R//cdZBdKIhr+Sa41/+5V+yHvQdAnAO3+rHPvax DLCkW0YmRPmanRt9X95tVqfN4o/nRlioV+Uhh97whjdkOcnmsD2QtgG0WrSJLibbjYwhu+lh7SKI nGIf+O7rGaF9fcvkMtkhLvqALSIvrr3DFqA75AeAJc/ZMbzotidi/JEvtn2iZ1oh7cdWSMpoHjmZ phxBgyV7I75G5zJtvtH78UydtvJN2qe1SDu2d3Yv2mRLGwDy+EldNmuEtfBU7C07eeq4vFfs5Kld YHH6jGMzwAMgdxf2ny2mUe/6+KmjU3t7Z17sqfg88mNRqK1PdqTZcyelXTs6U9vEsWluHyslF9+v d71i2fbsQb3kfSemjWva0ykz2/K2QjfZw/aF1ZK9t3UT23Vfst3QE6t25X1zN2/oSHd/oGtYsSHI 5touWzw27XqqM82a3WWPbni878XNHrhna7r1U6el0889vns15zI8LBOmXlkPh3tkPKeI77UI6ugh cv5gE1nP9rG1Gb1huDBZSZYFsYF4m9nO8u66P+R90z3IfHKRzcYGCpDbnzhbeacUuGWIo1DGjAiM IcQdFCwj3TUwynAA5hjoChM9qu45AEnhADuH94WJd8SjIbhHcQAfhvc6hPEc0ykM8bhmMIpHry3C TL3Y0oq4A9zKk/uUPwXkOeVHQciPcOJxLR7AlvKjvLwL4AA/AK10NQ6GrPwwLsTrnnxKR57dcy0O cYlfj7N0Kxo8DjBmilu32DJG+2AE1ZL6MQQZUFQv2k90mvDo2kpGndqGR5v4n//zf2bjR2990Rtb G2/xP2UNlAG18gac2V4BadfaRnQEWQRH5weDSZu0yinjXbsxvE66DBnPtCGGUSvAVpq2yNEBBcxp 28pYu89iozxH2bRnYNUesPYu9K1YrVT8QYwevX7i530Ges1lbZUAcfklkAFl8qg/ZZcuhWLOmzxr E+K2yEPQtddem8x31G4IecPADWWspWbxWO1bfQfF1kt4Jk1Uhs/x/kDPBzOtMnktk59mYXwD2iFg C9z4TgzTJZt1cplfqhPGVl/qg7IFMAzpByaKCr1MnsuEKdNWA2hGfNoaKq45UKYd+g4AJzLDXFJl ZjiYe0uGkCuGYZMXtij7jd/4jVzmRx55JJmv6j1URibkgCV+mn0Xzeq0RBI5CBlKdprTakse9ohF wwz/I7vdM1TZdkCx6BTe0NnkfbHu6XBymTwAFmupr2/5ve99b+4sIaPZDnSEtOWLrcROAnK1Sx2S 2qGOF3USdoM6q10orzb9ev8ZqfQaOUaOa8/iDBos2RvxNTqXafON3o9noRfjf6Mzb6gtcIq0+ObN acWyLiPdljwzZvaMGoqwVld+cn2XzXXe+ZPS6bMndkdh2C1auGBDS0NvrXrc1jZ6//zctjmteKAr P3fcsCGZdyuNrRs70ooHdiT7xrZKPKj3fGBTOu+CKenUWW1px5bOvD1PEdiKE6C+4/oNaf7l0/O+ uxtWt6elhfnAd9+yMT29a2o6Z+7E3Amw/cmOdMtlG9JT23oWG6rN286n9qTN69vz3NzYqqgMD8uE qU3rcPlPRznYSUUim8IOKN4/0NfsRQ4IoBbw1BlZtNmkr/ONXCL3yBaypGhTl80jvQYrsdngIpjI lK+DMeVQHo+YPn16z4adZXP9QjiVxkAH0ChQgI1gB0idkesAde4J63+E9z7AqHcV2KAgPNPD6tpB iAsDgHjmEIfw8iBeBo4zhY68IwwCgAOYAjDuyytFzND3THjxAdDSBGr8B9Q9l0/xAMPCOihKYeVN fOFJFgdgDygJJ47IF2NMPoX3rL+kN4WhrLdzIDTU4hlIWVp9V1tQ/z54IEx9AZjq2Zw8BtOHPvSh 3F7Un/oSjiGkPQg/EAIItTMGESGgg4SBoj2JX/uKdBjkev3Nt3VPnnmAKqo4MFI54JvxDQIS3/zm N7POIFsNV/Ud8eIBHr4j98lzuoM8p4fI4uFMVmtnICmbUUPK65pOBOzJCQAYL/DJfdf0H7lD/gxn KnZmszOUhzebLfCtb30r84Tc1h7oZJ0etjCziBQ+DVR+0/10O37qjKcf3MNnhpy0tDN5UzfALjBq dXx6RP3otOPBZWxWVHGg4kDFgYoDg8OBUp7bvpJiLBDsBDyh7kAUhwNg9cwRgDf+ezeUKzAhHve8 R+iLy/Ahhj6iMBgpjBNxUWwUNQNFnN5ltLjvuffFWSRxuycO18LqcY3wAbDF41ralGKAWIoKKHWP 0jR/K4Y5UWyGICHvei4P8uWQlrM4naUr3ooOHQfUnZ4pxjHDR9sAGNWfs/rTvrQ9nRXam7bjHo8B wDkQ0jsmTl4E34BeNADW/Kxo94avMMIYQDyJOmQsRmauhHZbUcWBkcoBXli9wA7eOHrDt+I74pX0 fQFxAJ4wvisy3LeuI5IsH85kb1d6hnwiC+gtOpNuA3rJLwCLnonOMzLONX003MtPjyqDES3Kr/4B SG2AfMYXnR5kduhtHlRgF0/I/oGQtiVd9gc5Ln2jvMStw9J/JE3y2roKPDjWXeBFpmOAWt6MiioO VByoOFBxYPA4MCBwS3gDAoQ5hYooT0qWwA/g6X4Ay3jmv2tGvbCMefcoZ0qLEeIc4cUhPml6Jjyl FmBWHN73jMIRL+UjDmEjfvlDwvHCUoCAKQUY87dC8TuLk0ctykhJAjriEQcKcO4sHgaHfAMi7jnk wzP88q48ir+/xHCT94HSUItnoOVp5f1oJ95Rl+rDWf185StfyXWu7hlB6o93RPvz3HDAgZI2xSjS /rRfdcEYlZ66lRdt0sIx2qq2CAgzWv33PVRUcWCkcoAcJmt9j2QrAOsb8S25b86thZSAmZjv5NvR OeRbFn44k7I6yC3eSmUE2skOHa+uPSfn6D98AvrJFLLD/eFMgCSgrh3Qq0bhRCckmaoTOqYL6STE C52H+OCszQyExBNTR7Qp8lo6bAT/8Vy+1IcOFXPd7Mds7m8stMJza05aRRUHKg5UHKg4MHgcaApu KcK+iOeVIGdIMP4ZDhQmIU+RAKrIM/cBvlAoxf+UM2XkOYPfOQz3IjgUr/eECSBJgSB5YNSIyzP5 puAD9DrLq/Qjr5QT5RPvUEKRf2WhPJ2F52mVPgNC/Hpmef6KaQovHwAQZSaf0kTSQMqGxNmItzlQ gx8ASNkHEofoh1o8DYo86I/UiXrUCaHu1a05uNruZz7zmezxUdcMFe0ToOSdNxxQ24r23d+MWemT 15jBaeEXbUl7NKTtjDPOyJ5hC+HwRGl7Vkr2zbnWduWtoooDI5UDvgMAjqwlt3lvyVvflG/aHFPf C+Dne/FdC++ahy8A73DlHx1Cn9A7ZBkZZTiuFTp5BckTeoucMlwXL8iWAMD4MJxJ2XVSOOuooAvp 69C5dDF9r9zqnix1bV52LO40kPJrV9qaTklAWtr4Li3/1Q95rsMSCFcf1m2wFgjdrf2igerwgZRh qL2rs7cRVbxqxJ3qWcWBigPBgQFpt+gZplgpGEqFwiTQGQ7OhDghD+hRNsJSAgxzYQl414YSARHC UtKheD13+C9+ykpaFAUFApQAHch7FItn0giwKk3ve09+GELiEa970nc/wnlPWkCq3uBQUowEZaLM GE/SR56LUxpAuYPX2BFxe+Z9h2vpVXRoOaANRE++dkCxRqcFEKuuhNGetN3wjoTBONDcW2xE+nr/ tRXtjvHFYOIB8M2EMaojhQEnD9qadl7R0OcAOUiGVDT4HCCLyfkArFLw3/fpGXnuG/btCMMwDt2h XnzvoW98V74p35Zr932PkYZrssAz8pt+cI9ciBE6nrlHr0S8vmHpy5e8ANXS8P5AKXRKeGHl1fDX 0LnSkR/ySx7sHgAIS9u7oS/9l+eQa9Gpq7w6+8QrTvnXlgFlYQdK8iYenRP0pHTkSz3gK3JP+eha YeleefVc+RzqWZ49j/Iqs7jkWx3w4OqQFNY1uVuk/nyn4sUTcckzHuOpusZTz7QDdoSw0qZflEcZ KhoaHBg7flRqm1h1FA+kNsrwsEyYgeSherfiQJEDA/qiCW5EUIeipKQYEIS955RPkGeOUFaMDe86 KAREIXk/lFrEJy7hxOcZxStNCsP9yIs4xEWhUHQUWaTpnnxJQzzOAV6EoYzc975D2AgnbMQdeZFP aSsPJSq8e+Kk3KIX0n2H/ApP8cpbRSObA9E5o81oX9qyQ9vQHsMI02791660Pe1fW43OlZHNxaFd +vvuuy8Dq7e//e2DAgiGdmmHV+4AIuSbCnDku/J90U06mgBW4IXcBoAAGORegFkr8/LM+U6BF/EZ Cm1ButAlzuS+Di26QPiIK0d4gH/qtUOAX7nkx1nZAUDAURkAMvNDySdloc+sLI5Xts0J/dbfrJNf +EUv6ky0yBKvqv/SwDNpy4vh5RaCMh3Ec7JwMKkefwYz/iquocuB6+62F+modMUfr02dA++zGboF PYA5K8PDMmEOYBarqEcYB0qDW94kyh1R+nqgKcXoQaXYXetZpbSBQs8pSz2zjAEKiREfxnsAR3FS /MhzB4XmzNBg2AOP/otD/BQzJee+Q5jokRavg4IMjxhFagguICothzm7DmmJy/sBJMRJuVL64hI/ ct+7FL/7kWf5MUQKD4RxttWPPAsvrPsOZRDecCU944PRC54zUv3kejJftki2c7H0+lAkbYGRGO1c G3TP96ItArsMPM9dM6j9j7Y30DLxxHzqU5/KW0kwHg93sseprYne+ta35m++v+UtGw9QQAaRL8OF gAzzAw2xtBiTBW/IqUNBZfncn7yRu2S/7yymHPge6Aj31Bl9xhvquwNI3Qv57V11KzxdpzPKt0w3 GHFB1iPftLDmg9Khvt2DPbyyXjskR+TdmWwxVNf8frqOfrIiu3zjiQXt6HF8CDBcj+et1FfIueiA pqPFHSNaeMSlDdjaQkw7tIevESzCluVhmfZcjz9RPrz4whe+kP+q09/+7d+OR9X5EHDgzDkT07yL J+2X8pLbtqbHHulaJGz02FHpww92be3T2bkvveft6/YLHzd2bOlIY8ePTvv6KaLPmz8pvW3e/qNz 7nnf5rT2sUOzIvmpZ7alC6+Zkt7z9rWpv6pHuU47Z3y69p0bglV9nsvwsEyYPhMYxg8sbmdbQLiH HmWPwlC1RDfYtow8vOKKK2ofN/1vsTq4zFY/FaVUCtxSMBhuqCTh7j8ynJLRHQAulCJlzjgPcKpS GQWAYtyj4BkXwooDAESeCwdYehag0L2InyECPBbfoaApRspYep4b6kwZe5eC8n4M7RQ3hS5f0mKU iMN/ilPc4hFGHjxzT/zi8Uy80vRMr7c0XHvH4V68r1zewz/vOCranwP2cZ0/f37i6eoP4a89UO2t RaDY/0+7HYpEmGkH2qg2xijWZlwzJLVRnS/RqaSNakfaoCPa/1AsW5WnLg685z3vGXasAP6Bnttv vz2de+653Z1ww64gTTLsGwKQ6B/6AtgyHxKwpb/IbrLD94kfwpgfr5PU90nW+zbNl+ep9dzqvBYM Am6BKgBN/A4Gje9b/MJK/2BRvXZIlpCXyqlM5Il79LJyn3nmmdljK5/0IsPpT//0T/OaA9EhN5D8 k314Z89wQ6Z1pKgPndI8tLy66sE8Ynmz6rB8BRjWWVCGyrTnevyJuPGDTrHtXrVlT3Dl0J71G91+ 1aZemdi1vQeddnbsS7cs2JT3ZAXQGtHtfzWwjrvVD+9IG9f0gBXDby++flrqHEEzz8rwsEyYRvU0 HJ+RobbbtHeszlEyBICt3dOZrnA/MMJwLOtQy3NpcEupOIJ4cvVCUHwUZChJyoiiNMyIQqLEAUGG eoRzBgzdZ1CE8hQ35S+sdz33rGhcCBP34n1hKUpKiKJmcFCQ4tb7zDCxOiFQLBzwCohKK8CshhfA Qf48Y5hEPoR3zTABhsUR+RMnko77UXa9+vIuT97HC2Ed4qpofw7gIf4PhKySyisuHtdDlXgLAFre IZ0ujDttBDHskG/Jd6bNaNM6bKId+g4qqjgwmBwgOwE8+3E+/vjjafny5YMZ/ZCKC5BSXkNhbetF B/jeyHj33vCGN2Rvq2/S/dAH5AowK5yRSfSMDilEz/g+eXuNMNIBzAMeHbL0jSO+80PJEPKHnFEW eVUecsbaF2SN7YR0riFtgWEG4ALqFsNjkA2EzN1lzAH9eEqf+q8upEt/sifclz/3dCjgOXnJw9uM Bqs9h05pll71/OBxYPOGxmOIPZ9y4tgDnqFdO/alXTt68jL91K40dxTA9gHPRJXAkOQAWf/II490 61GdnjysdKxrRFdceuml6dFHH826ASCuaOAcaApuKRukkoLimhIHUoFCytBBIVGSwlD4ngkDEIrL c4qKgnQfUW7eQWFwuPa+NABGxoW4KLcAoQx9yli8EVaPOqNfOIc05MW9/8/e3cDaVWX3Ad+VjGQk 0xjlkZjETM2MSU0GEqOaCE/tBKfDFBLcQFImMYlJIYIICLQQwRQmQIGChRG4MQU00EALCSjjBAhm gGBaM+CMSUxkZ/DE7vBmsAZnxhNc8RKehCUspfrtN+u9/a7vx7nv3ffld5Z07jn3nP2x9jr7Y/33 Wnsf4RziSxeIdlBO8IMiD+DWzLA8KAD+eyatUIKCF4oKhcCBnyifPPwXzj3Po1zu1TQkAY2btTYU aTLmHWCW3Cx94yzXeOSmU3nsscfSpk2bcvqPP/54/iYiRcnsfHQ4X/rSl7IiR+mi1JnYufvuu/PO xZE/vh955JFsHbYGDaAGUO+8885RE0Gs0Z5TtHbs2JHd69Rnyp1vb/7O7/xO7th8EkK9UJ/+83/+ z9lF8Ctf+UrauXNnVpDPP//8bOUAiNWr//Jf/suofIKvdmf1/7rrrsuWbWUii2bUiucyLFlKi0Kv DeO/dIkhQ8A8vuPoXT7zzDPDwKnqu5And8crrrgi1wfykGY52SYv784El3rj2fr16/P3JINnroUm mdArr7wSt3O6dqRGnhtoVq5cmRXuN954I7u0SzeoSjrCvv766xEluzKqS43USc5VytWYZqv/nfJS N7wjpA36j5rxnR+0+Kkiw051Q9JV5dypXC3YzNZB/bs2Z7JW+1++fHnu77Wx//Sf/lNu78pj3Drr rLPSr/zKr2Sgaifm5557Lv2P//E/8hjy/e9/P+/WzEqoXZrQBATJk/cIq6PZe2611uhybb344otb 1udWPMd9/aPlBDEJEfejvpR9Zqt6iAdLOIBc5fr85z+f19j6fq62DECqA8atn/3Zn01//Md/PAz2 f+u3fis/j3ydq76vaMv6SoD193//95N+Tn9IbsbKL3zhC7nNb9myJb8n47g2bRw3Hntf+tB2VLU+ t5JPu7SbPYtyeefN+qhmcRrvxftr1491al+97Fcb+Tva/n/plWXDRbr6F95KTbro4edVL867aEHq f3swlZbkufNSWnPlonTa8vk5j93bB9Kmh/eNchletGReumnjkrTh5r1JGoD5/ncOpcfv7U8AdBCX 4wsvW5BYiPftGUxPbtg36vl9zyzNa4iF//3nR8q37tq9ad/ekXFs8Wnz0kWXL0wLTp6bDn7vcHr2 0f1p91sjFujIL87z589J93x5aXp8/b705qsjba+KDKuEiXyOprNJwZKMq0gbDqK3PProo9kQw1Nq vGQ85ApNJ+MCTQcrKdyk8eAZnU3YoEb3ZnrrXXfdlfUg3+dG+hhLl+zBwEPSf+Mdfbrsl02Aslwb r9w3rkQakd9EnTvulhyKTSg6JSMAX1iPDP4sUDp2CoPPMgAMBGNgYsEE9sxgu0eBBxYBywCZcXbP Mwq8FyA9Ax4CYgFR/z0PIAsUG4RD8QeWDZRmpc2cSzPcOoWVl1lhlkJ8SZOSg9cA0/JWHmf3HeIa kJ0jb2VRLgc5WHvrpQaAxmtZZvmQXU1DElDHNHqKIWUtFDcAowQwvZKXuiy/l156KQMZDW7Pnj1J p1AS12ZKBqXX92WBJVaERsKztIST9uWXXz4cxIYsACAriI5Am9BRIJ0BK4XyqiusRSZndHaAsjZA aXb2GQsKtbrJaqL+4qdbArKBP51e8NyYRjueIyw5WAenbXBflZYJirLsEbbducq74LaobpChvLTp ZmX3vqQHTFDMhfE/yHsK8O3a+3LEhIZwOmzrCw02wqqD3l9JVdIRXtrk3IqqyFncTuVqlX55v0pe 99133/Bkx8aNGzPwAX66dcWsIsOSt1bXVeRcpVyt0meZNbYYt9Spf/Nv/k12gfXeX3jhhSyLmOTQ 3oTXr//lX/5lnsCSN4CqfSLjg8/wCAfMsvRK2xIL/b0xUL9DudDXdKrPrfh2PxQI/Jfkf2Of2aoe /u///b9z+/XcZBGwCTAbN7U3fBojuVrrH9UJk0ImqpWtkaq8r7ItG3v1H/oNY6RxkXz0UQG89X8m FYzP+k5y1P9V+c541frcSj6N5Wv3vyxXuz6qXRrxrFN7r9K+etmvBl/T7axrj2OsvHFtfnnTiEfi WNOJeKedNT8tOWN+2vzk/riVz2uvW5wWnz4vbX58f3rp6QMZ5K65ZtGoMPFn7bWL0vYtA2nD9f25 fBdeOrK+eMnSeenSmxel3TsG06aH9qe+E+emK29fElHz+eFb+9PLTw+V6YGb+7P7tnIe2DcCbOf3 zUnX3L04DRw8nKxVBnqvvGNxWrDoSP0mErcGd2DgcHpr2wiw9ayKDKuEiXyO5rMxg75b6hz6vF55 GErfxB/jjXzC1TlkyiCzZs2aPGkrDN2zW50t0nKWVoxj/pe6AszDUAA4G1OVGT/ynAwa0fza5EbB B/IwqdMkPARIsm4CkgYqA6EDiHSPQuC+QUt8hQIEDfwGUmAUIARSgVZUpuU/pUMNpRRyAAAgAElE QVQ6ATrlL57BkPuveK6lDyA4pGHwl69ZXsAW7wZKFcl9Lx4QBVSlyeosD+VhmZWOAdUBUOCZEmOA xY+yS0M4PFBcABN5yMs9eQUAdiYX6StvgN1c6Fn+Y/botttuy8Dxqaeeyu8SENT4JoK8NzNM3D/O PPPMbDVVzxrd7DRGfCAbUuGNosV9pCSNm+sJshFAaeWjxFIMw3oZoEteNm/RXrQJdVSd0EYob+ol BU546/w+85nP5DqFH5YVCtB//+//Pbu0hNWx5KnVtXhbt27N5ReGLHRAJbXjOWYBKb7aHGtqKNqs 0mWnXabZ6rrKuzDzxxJCaUQmGijaOuqy7JT6CKMzfeihh/I7jTBmDKNjNZhon43kPQHuUSb86ZBL qpKO8PKI/Mr4cV1FzsJ2Klek1+5cJS+yUy8BmwA7kX+7tBufVZFhY5xm/6vIuUq5mqXtnndMttqX mWeToGTAWmgNqHa7bdu23BYBPu3/z/7sz/KuvT/1Uz+VgZn6r00Cld63tsX6+4d/+IcZ2BpTjCdA of7fpk0mT1DU1Vb1uRXf7quXxtCyz9J/aJPul9SqHoqr/PjSB+nDbIJoPAUuXSOyUA595q/+6q9m eRn3GqnK+yrbsn5SG+bNwWJhba3+0DV5sd7SD3i2aEfGVfkaf43Xxvl2VLU+t5JPu7Qbn5Xl8mws 7zTS7NTeq7SvXvarwdd0OgO1D744YpW0vraTm3Iz/vfuGkzz+1oDumZx2t1jCd29YyBJt6Qn7+1P c+dywf+BBfbw4XTh5QtTurcMNXQNuIZldMMX+5P1w0GrVi9I/TsH09MPDLm0cn2+4f4ladHieWlf /1Ce5BBl6t89MMo6HOksWTo/88MqbBh867WBtOONg+nAviPHRHGWrZifVpzXlx64tf+IjbeqyLBK mODtaD3DTayc9MdSR+xleaVLV9X+9Zd0O/mGXhZLS+hHyBgYYRhbuiW6VVinjYOlTqVvh62MG+7b sJSOqH+bDOpoucWEQmPSrDSGCQ0ZXIA4VsxYB0NJB2gNmAYqYcT13zUlgUANTsAi4OiFBJCMeAYx IFQYYb0sYFR+nsnPLG4MshRSAzQCJKVH4ZA2foFRg7b/8vQfEAVagQiDkfyAHAoCPh2AKP49C8Dq vmvPlNHA74VFOZVfZRIOXwZoAzK+HO7joabREgAivB+Dt9n8dsBgdMyx/VOnglx7fyVRboO0AQ1U /WgkDTYI/yWZDKE8BcU1ZVp7oFgHaFZnWUVsSIMo2dqbeqpus5aoy1yZKcwoJprynwo/wgfYExww b6R2PEdYQECdDxDovrJF3xDhqp7bvQt5AdXakiM66sayA8BBwRfLUDfk/UVc8chZnoBDr6mKnOXZ i3JVyYtcY/KCq6p64uj2nU43GUa9aTyrG9qfdq09mnj8uZ/7udzvuMdCa/zRn2urJlNdi2PSSb8f 9dZYZJwC0NQVY5W2zKJnHGL91IaNlSZnO9XnRl7jf9lHaW/G5KC4jj4m7rc6e0/4cTae/vZv/3YO qp/RL+A/PJ7I5tOf/nQex8nGs7FQ2ZbJKMZB8jMuGnuNkSb4yJPM/uf//J+ZT9fkrZ6yiIdMynMp n17V5yrlLMuFn2Z9VMlneV3yLK9O7b2b9hX1U7quy7yq8Fyl7FMRxtDNzTaO/T8AdlPBS+R59uq+ xJK66eEjQQIAOQxsLcX7wBrzOdm1OOLHudycqgS2ni88ZW5SVg5kjljX287iGumW54GDQyD2vLUL h7eV3fvWaN0lwi9YODetvXFRenXTgbT7zRH31XhenztLQHtnIaVH8hScKDKuRJsPECnvIDp1qf/F eD9WXbvUkY0LJYXeANAHlXnHvYk6j9bmW+SCabOyhBQdJGEAbAYkCgDwp+N0+G+AMgAGOAxrJ1Bp wAQOo6OVBkXBMxYrZ/HlSwEBYP0v85AuS6mO3rX4wriWFwUC8AQM3GfBdd+AycrqHh4oLf5H/vLD t2fCikcBiPvuIfkIRx7K678Dr0CKa+kqm/8GZhRlLStcfjDLf4A4Vpirrroq1zVWVe6gZu+nC3nX zd5bCYYaeVVvykYf1+qU9CjLOjzWEe7sFNNf+7Vfy1YTil8oxCy36pOzOhjpRL1qzLfZ/2hvEVcY PDRSO54jLDmU6cT9iTjLi2XEUVK7ske5osxlvHbX8jIIcUcda4ffLv3yWRU5l+Fdj7VcY8mrMe+q /6eTDLlpcZ9vRlzp//zP/zyv9/zTP/3TvOaTmzFvDhZa69GVRT0AViwVYFXUN7k2JgJoJi+BXX2+ MYdVVxsFdF3bEdjEqjFGW7dGXdsp133jL+pzO54pEwFCAVBtApimSLAY20DRmFiFjHH6FGlaD8yr A08m1czCS9dzY6V+ylhqQolM9F/K2i2JG23ZtcllssOL8ps4MBFDVtKnD5hQBH71s3QD6315F7jX SKV8Gp9N5P+yXGU+3b7TMq7rZu1dXr3oozrx3MjLdPtfrh+dat7gh9VrF6Y3txwcBpwlT/n5pQvT 0uXzs1W1YR69DJpdhUfdKP7MmTsnffaiBfkobmf35fJ/p2uW1FefPZDTWbZyfnpp04G0bfNod2Np zLXM6pbFWVcXpqaxSUB71d7CW2dsqXSOFf1FGbLUgfCgLw+K8PSDsVAA2GZxAVlWansRGNOMtzyh JosqgdtgJpTZEBawaUAnIIMTYBdAz724Fl9YIC/iGLwAPcKWhmsCNqACoWaPpRFgUFpAsYHW4Zm4 AKb7rvEX+VIm8CQfAFa6BmSKiHAGTrxI3wAurLjKIH+8GMyFj4GdVdkMNnKWJ8KPMsTZPfwa2OTl mbDyi/BxnW/UP3k2iYtfzOyw3nofM4GiXXTLq7qlHlImraP6mZ/5mazs/ft//+/zRlXqMMshkKvu ce/gYUAuLBvqNGV5NpDNxnSOJU1E2W+55ZYMPrg9AzSATqNbcslDfX2kBKaTDPUn+pVmBEhZd6p/ 1tb+23/7b+mP/uiP0iWXXJKXF7C6Pvjgg9mzx9hhoyjjg42kgKtf/MVfzEAMwFVXjAnPP/988lkZ VjH/f+EXfiGv39ZHGFNiHLOW2brekqI+t+O57GtMhAGylkpwKVZXu7EKxBil/Fz4yeI3f/M38wZ6 P/3TP5030DM+ApTGbmRMc8/EcugBZRmqXEdb1q+xNgOtlCQy1L8Z+x3KZuxl+ZaXcdlYzVPm937v 95qC+FI+VXjpZZgoV5lmt++0jNvqupftqx3PrfKv7x8pARbQOXNTevbx5uPxpTcsTotOn5c2PbQv g1/rcrkwN6NOes+2lw6mN14aDUQPHhhtNWuWbuM9FubtWw7mzatsdnXmivmJG3Qq1C6bVh1471Bi 6cXv4/cOuUM3plX/by0BS7gYb0wYtgODrVOYvk861VVLC03Cst5an2uMmmiAH9LqCtwOR/rBtFMA VPcV0iBp8EeuDUhAI9AnLCDqHPcMXAZLA6eB1iEepcC6If+la4bWwCYcoBoC9T8OYeUjbfeASQOw /IR39hx/8sBLzFa4Jw6QDHTiW3xxkAHVYCs9A71nBvjgL9IV1nXIQljhkHQ9k3c8zw/qn2EJBLB1 I1wqhh9OwUWj8ua9d6s8UdDEC4prYBWp1ywXFDZr4Oykql6a4aI0q++UO+F4ETzxxBMZ0LLyNvIX ebQ6R7vpFK8Tz9InhyhLq/zc75RXu7jxTF54YimbSCJ3FludL0sWmkjrbRU596q8k5VXNzLsRd3o VC7Py36llOdf/dVf5T6fi6txQ59jU7c/+IM/yDtdm+CwZMA4wBOId4W1Sqy82qVxyQ7m+nVLBYQx IcpSy73ZBJR71hqpw/LQlgEe7mCt6nM7nkv+tWeKA4VBGdVVu3tXJYCepdM4ZZLN5BH+tQEg130A 1Fhp3HIos/Lqj5SnWyrbMnmbvDOuSo+VFk/yNfHAEh16AJmoL/LHk8kBYacLleVqxlPVd9osbnmv m/ZVxmt23YnnZnHqe0dKwE7IXJJtFDUYa2qLYIb/pSvn53Wy1raivgXdg1HxDh86nAYHD4/a9bjI qrgsEGpxt/Fyf/+h9Oi6fem0LQN5g6mlZ81Pu7aNuB4fOnQ4PXpnf95o6rr1S9L2rQNpb5sdlRvT n+3/9Vk2WbIutdU4NJky0ubDm0S+MQbrn4JCT4z/4z0b72zQaSKTocCkcdWlM+PJu9KaW0osK1GQ awJwGPCAQ0AvjrCkAnTuISDPIGlgNHgZ5K2vocCbFZdHWDOFMXBKJw7P3JOOazz4H+kDyl5cAFV5 GrCRlymOuHj2Qg0SBkpnaTkMsMJ40ZQX/6UfgypLmwE1LMAxuHsefEZlUQZpUYyUG2/CB/B2rml6 S8DGL/E+AU/XLAvdkLWLGnNQXFNurXPjviht6/u4/FEsAV1KtrzUG5Mrf/Inf5I3oxFeHbQxDffI bklHY31hkBnFRmrHc4SldFKmtZsgnZf2FMQio40HNcsrnrU7yyvWE0a4sZRd3Jg5DT7xH+84ziay giJc/I9zu3QiTKdzFTl3SqPq88nKq6oMq9aNTnIeT7m0IxNGxjDtycDLe8LAGyAROLXzv7DqhXZp DBGPa7L6LbwJWe1B+wQS1XXux9baKquxQzs2HgCU/+E//IdRr26s9RmfQCCAy/IZlsJRibf4Y2xT LvG5CrM24407tffo8z/kYmzz39hqHI3yNEu20/sq2zJ5GWP/7b/9t7mfM06Sr0kHfRQ+yNongugM ZAfY4rlxvX0zXibzXlmuyHes7zTiNztXbV/N4jbemyyeG/M92v4vW9GX28drTdx6lZUrMRr8YARw Wm87FvJpoMVLRsZYaSxdMTIGR5qBVebOG8qHBbZ0hT5t2fwU3+MVZ+8u35pOaf7xo/kCpK0V5sbM 5XrttQtHpRP51efmEjAO0CEavc6ah574uyYUSz2M7olKYxL8U+p1pb7YDYd0tjKvAPetdKpu0q4S dnRNbhHDIIQhHavDgE4YlAL/AdMAeu4ZNN0LsOm/+8AeAg6BWoOVwdKACOwZPB2eETpQavATRlh5 lODUWpz4L32Do7DumYE2I4/XALzyD5ApHMXFoGmwFF9+Bs8Iw7oGAOOHckIGBvrgBc94kpZDOZ3J RJ6ehWIgjmv8BMBvIe769jgkQL4UH4f3AEyqD62sJO2y8r59tocV9YILLsj1NHaGaxevfMbtyydp uB0DtFwzKJAUUW0kFF5KMHdGSqrPceCZdZYSTeFjqaAsxWdu1D3fprzsssuGNwEq8211zQUaDwC0 Tswa50Zqx3OEJRNKrs9tcNPUR0jXp2/M0iFKP8CA71Z5RXrtzlwtrZvkjodvEwCObssuDx0sXqzn 9i4p9dYpcoPXD1H43NO/qUPN5NMpHc8NCAYI6wdR1EN1QP6oipxzwB78TFZeVWVYtW60e1/jlaF+ mOVQX/2TP/mT6Zd/+ZfzeADM2qHXRoMmTU10mmhSJ+KzPoBXgBfvWbl5YHi3wNkdd9yR9wtg+dVO YrwztnAh5qbVi/qsDutHtL1mClS7eqg8LKRAeCgiNs0CaPFr/a0dk42BwgDuAD25kZeylvXZ++j0 vsq2rA80rmpv+kFtz7htHS5rB9BrjObWhwfjtPHZYSw3QT5eaiefaKcRRh+HYoJSWb1PVJZrvH1U TrDFT9X21SL6qNuTxfOoTHv4x3daS/Jd2di0aeGiuQmwO2HB3KwHRFibMcW+NzZKAvpOPGnIs0oY AG//vsF0aMSQVWbR9PrEk+emgYFDSZ4lcRX2qR3W3H3vDKZVF/rW5+HUt2BOuvCK5i7JZfxm11s3 H0gsqJfetCjt2TGYzlg+P39W6N5rd6d9/SPWYOuRbUblc0Nvbx9I5/j27u6hb+JK94yV89OyVfOz tfng9w6l5av6hvSkHa0LzuX6rieWprM+25e2vTzkFl1FhlXCNCvr0XCPDqGPMEaUgFHfG/3LZJbT bv52R/a5NRPDxqHGSVH6qf1v9HN4dz0WYhyKtbbGQJOo9Fr95mRQJXCr8F5SdO4Y9XIoBQBdWCEJ AiCkDJQAEKgDHt03MFEYvGgFDeUBEDRg6bwBzjCdqwDSEs4gLk/3hAV8DXrSEU/e+DH4hlUMwEHC yN8gCgQL5z/eEP7kEfm5Ly9g1TP/peUsnLLiwTPp4V9c990Tz72wGuMN/wHixa2p9xKwKUq5RpJr oXfyuc99ruvMdATi6gzUed9x9L8bonxyc9WZ6EgoPoAUAsSlG20AwDWpY7dM9QzoUm+EUce++tWv 5g1qWFjUY0CXctkNcauUrzWD2rD/gHdJ7XiOcOQgf3EBRe1PWtYFB1GeKIbkpgzW9d19993xuPKZ W6d4wKyt7HXKYym7DLVRwMO3LU0keB8Bxj33SSofMcerTt6aEZtBNFKndLxvdTEoNjXCt/KgKnKO +OM9T2ZeVWRYtW50kvN4yqX/B+60P22dWyw3Y23NhJJPKnzrW9/K44/6y10ZEPv85z+f3XYjju/a Arv6fBNi2obPdZmY+uu//us8HsWYY2IXz/fcc0/uE8Zbn+WlDlMcwtpc1pV29RCQBe5tnmUc9S1t Y5d6f/XVV2e3avdtiqXM3LKBWmOnNg9clvVZvp3eV9mWtT9u1TbusrGX8RaABv6B3HXr1uXPpflk Gs8WuoO+y5iKT33jeKmdfKKdGk/IN8iYgso9IspyjfedRj6tzlXaV6u45f3J5LnMtxfX1DqfwCnJ 91oDdPnMzmlnjlg0I6zdlWMjqvPWLEhnnTPiWQQ0og0393flessK29c39wh+fK4nrLmPr9uX1t6w KIfZt2cwbX32QCq/X1uWo901C+rj6/el1ZcsyJtTWQ/r8zwlsBUfsH347v5kLe2SqxamvTsGR60H fnLDvjRwcEFaubovzZs3J7EI+yZuu7W7gDreAeOQcxUZVgnTrswz+Rl9n96vvyyJzmGCd7IJsGSA oIsCnvRHeltJDBcMg/pGep2xupkOVMZpdi1d8RkijIu8iqw7NpZOBv2zJUuW/FO7jAzGrQjoBCQB VetmvEgA2MAEvPlvIHIYSP03U8tdmFKh4ECnQzoBJoVzSJ9SYMbWICxtcfBkYAMew+rKZcx/6QMG 4uGBwuG/s/QCVLpHyAZTz5A8S/AtDfcMpOK6DvcoZZCXfA32wpr9NhGgHNKnPCk7ooQAx14yAk4C eOcbXf6Y2Tbo2rBkPDTd0hlPWXoZ90tf+lJ+lxSsiSL1Rr2gQKrXlEV1jMWIV4J6KQwQypLCMqTT cU97Ud9rqiVQS2BsEtCn66ONIdqavty18czYoO82zhh39O+eGy+4IGt7+nnhpcOyywVLOhQI7Vcb 1a7FB/qMLVxsTbwaU4wRU0kxMcxiikfjEb5Ybnm6sJoay5WDBwJZGT+Fcy3+eMkYavyPSWcyJ3v8 yNfEg2ehiNEzjKF4iHF7vDzU8aePBDpNWLTTR6dPKWpOagnUEphqCVSy3LZi0owE5dzgYyA04AOx yABECTdYek45RwE4KQMsrwY2gzzQ6BkFwJnSYAAT1wDruYHOgBagUVxhI7988YM8KB7SRwZJByoV CmBCODzinQIjfcqNvJXNf2dhAvwKZ1AWB59IeYGPyNO9cvAPkCsukn5Ns1sC6qT6qB6rP+q3g2JH YXYgdUxdY1lydtRUS6CWwPgkoD/XjyNtMa5NXHqmXeq3y70bjD3GvSBhjCFcmT1DJm5jvDGWGD/0 98ZIAFna04GCX5thlcQtWJ+jbMA8As5RjFvl2JYfjPEnZCu6sZPcyCnGdbIiw/BQCX7GmF0drZZA LYFaArUEZoEExoWwzEobjADAGOQN9P4Dg2HV9N8B7MZz/8U1oAkrLWkIQ+H3zNlzA6qzOBR+A5+z e+MhacgbT/KVD+AAUMsj0vccCRtUXse9yTzHTPt485xu6Yy3PHX8WgK1BGoJ1BKoJVBLoJZALYFa ArUEZqcEOoLbTm4iACigx+IEBAKEgKlZYWf3PAcaAwADkg6zwWaAhWHRFEZ6QGdYaQPwAp7Si3S8 rpjdHeurMysvPQfgbJYYLw5kxj3KI68A13gKHsea93jjxU66nd5Pp3ymWzqd+J2s5xdffPFkZVXn U0uglkAtgVoCtQRqCXSQwHj1nQ7J149rCdQSOEok0BHctisnMOgA/AJoAq0BbmN9RABIZ0BXmACK 3JIAWq5eAZIBR2GckbDSlxcKACqf8VAAanwFEJcHIM1N1Nof9x1RPtf4Cvfi8eRfx51aCXBLV+8A /JqOlMBMlM9M5PlIyY/tzmwu+9gkNrZYtZzHJrc6Vi2BWgK1BGoJ1BKYDAmMC9wCeIAewAcQAqmx Fse156ycwCNACji67+y/tTXWqbLSWlPrnjW3wKydJgFKgDfApP9Ar7yEHS9Jl2VW3sqAX3kEGJcP 6y5+A8zKFw81zXwJ+OQOcGsn5XpG+Mj3ORPlMxN5PlLyY7szm8s+NomNLVYt57HJrY5VS6CWQC2B WgK1BCZDApXBrV1a49uh1sfaFRgoBQaBP2DUplHAa1hm7cLIPVkYINFmEDaHEAZodc/Z7pHCAbXu Ab026ECeAx52S3b23wGYtgOZeLF7cSPZ/h7fCC+sy87KgAc7YVorHIA7dnOMTaXkHQBbuZDvOXnu Ewo1TQ8J+B6j70ja5dOnY+68884j3o/6yQpjAmYiybbrPmXzmc98ZrjuTWR+vUp7suTTK36l045n bf3111/P2XnnPkVyNFG7ss/Uck7HtnM0ynmm1o+a79klgWOPOyb9wSsrmhb65af3pyc2vtP02UTd nG78TFQ563QnVgK+JesTYowtdtv3SUU4ZDxEt73vvvvypyd9VnK2USVwC9j6/qbvFAFxNiHy2QOD PDDImgkEOmzGBHhSJO0aybUXGAYeAdcAtIAkkAsUs5T63Ikw4gDBsa7VvQDLzvLqxmprl0U8BwWw 9R+IlhZ+5WOHSAA7XI/dU9k8d98ZAbh4rqn3ErDW1Te1NPTxEDBpMmT9+vX5I9Tqa+Pkg+8U1tRa AjNRPu141g947vuzY/0weWtpTf2TdmWfeu6OHg5qOR8977IuycySwEeHPk53XjX0fdDl5/SlFect SPdevzsXYuDgiJ43WaWabvxMVrnrfHongUsuuSStWLEibd68OWMVE7q+i3vrrbf2LpNZmFIlcEsu gC0LGLIR1NKlSzM4DddkiiMQ6zMCnrOGspwCGEChcAAi8Ou5WQmfIACcwz0ZaARsAUp5CROAUzyA 0jPuwsBvWE7bvTd54aEVAd9coYHuWEuFzwC5eHIE2HatPOGK3Srd+v7YJGDyoZyMGEsqrPaLFi1K 1157bXrjjTfyR6jHkk4d5+iSgHa7Y8eOxKpfUy2BWgK1BGoJzDAJfJzSnp1DFq1Fp87LzMf/KSnJ dONnSoRQZzoeCezcuTM5wroKkwC38AiP1ZrGJoFK4Na62JIAPQSEhFvnd7/73WxhZV0FFIFR18I6 s9ICuCy9AKINm5yteZVOWHUpoO7Ft22FEc/H21mMpWMDoFNOOSV/9xOIFp/lt9uNgYQHbK25BYCl ddJJJ+XvGgaYBaR9X1QZgHCAW/ivfvWrw99FDNngCY/4YTFudCsI124A3USAMKUlOdKZbefTTz89 W2ufffbZXF/Iz3tYvXp1lmc3M1is7d4BinrlOt5nyFZnEtTMXdgsGmDM8ovCpfXmm29OL730UkTt eJaGuo6+9rWvDYc3W6czUydefPHFYSAeAZ544ons+h9l918dVyaWR9eeRYcY8S666KJ02WWX5boM yK1bty6va4/nVc+d5PPUU0/l+mvyyHvSId9xxx25k66ah/Yinaeffjqn8eijj6azzz47u5JfddVV 2TNEWmR/ww03ZGu+97h169a0YcOGIyatOvHcDV833XRTUi+VS73kJqRvqspP1ffVjqeq8pFGu7J3 k45ZY5NCfX19eSJA/em2X8VPp3SqtK9ObSdk1ymvqnWVmzqlwlIGZX7ggQdyHxD5dJJzhOvUBnvJ T+RZn2sJ1BIYLYFzLjwprb5kYZo3f07au3MgPb6uP73//tCStJNPOS7d8sjS9OqzB9LZ5y1Izz62 L525qi8tOGlutgS/+05rg8joXKr9O+X049LtjyzLaZ+3ZmFafPq8tG/PYHr4zr3p/e8N8SSlXvG8 8rwT00VXLMpl7397MD1+7970vfeG8jnhxGPT7z9zVlp3/a709vYR19c7Hjkj7d93KD1yd728rtpb 7U2oRh2OjoPghG6I7nvppZems846a1hvaYxPl1q7dm02Tspn165d6cknnxzGIa1cmel2DJyPPPLI cJKMBGvWrMnLVemjmzZtGqWHDAecoosx7YwU4IH1EjgDPoE/QJQ11UthlWVpDRffCAcsAonACyst EBxKOxdhApcW5UrYcEF2X1jpAaE/9mM/lp8DiBRQljpKSSNJoxUByvJiHcYPt2q7NwOengGxyoIH /FPkKbg2zQJ4S8KTsPjBKzdYlS2INZFrd4BaYZutCY7ws+lMXg6uxACbtd3PP/98BjrqRjf04IMP ZsAkjoYIUDouuOCCUclwLdSoW9H27dszmIp3eO6552YerdnuhgAFwAi5lq/DmnVk4ghgLeuuPP2P MDlgSpkfdVB8ng0bN27MwC+er1y5MgHfeL///vvzBNA999wTj7s6d5KPxIAK7Uu5lEOeIa+qmYmv TCYMAFgdJPfx0m3Y2mnr2h9++OEEAHNZBz4bqQrPjXEa/5tke+ihh/KEhIkNIIyb/JVXXjkctCo/ +Gz3voYTbHNRRT6idyp7lXSAO20wJnX0iepYt1QlnSrtq1PbwVeVvITrVFdNMimr/sZAbt1TtKGy /J3kXLUN9oqfkrf6upZALYEhCZyx/IR06Y2L0+4dA+npjfvSwpPnpWvuWjJKPHPnzkkfDR5O2146 kNZcvzht2bQ/A86Vq4cmx0cF7tGftdctTtu3HEjrrtqV5sydk9ZcuXg45aHvYI0AACAASURBVF7x fPqZx6fLb12Sdm0/mMvet2Buuu6ekf1ngOlDhw5nmQxnfkxKC06el763f/Jdu4d5mOUXdCfjEN3H ONTtpPL5558/7N7MAAB4NhLwC4fQs+g2PHDdC2IppovTwUuC+UojJxBMX4Nn6GR0VRPDdIbpQq2R XwsOIX8Fh+IJAZgFOIFEIJA7L5Bo7SxhAIXuex7uvkAja5a0WHLDbZgCJhzgB9wCkQAzkCwd+QW4 BCa3bds2bE0hZIpkIwWADFApnaDgCbgFtP3Hj3TwF8AcfyzJznjxosUpXQbwFjMw8lq2bFkG4RGG zNy3ThkBNHgjgyh/8DXbzsDM9ddfn2XxzDPP5HfPMsf61S2xNJlYoKRTUk02IPW1JFbNmKQp78e1 BssiqeHrCFgSWRjjfUa4TmcWtcin3MysjEfRZ7GM8qoX6p/7JSlDWJJZlcjKLN2WLVtyMJ2iOqjc SAdJYTfD1rjeuEy32XUn+YiDH3JG5PXYY49l2Uc7aJZu4z3txiQEa/Ty5ctzWXSQ3mGQzcD0CaXs r7nmmng8fK7C83DgFhfeg77H2u/IT7pRj0Sryk+n99WChVG3q8hHhE5lr5KOwVA68U4NWN4NC3Y3 77RKOlXaV5W2UyUv8ulUV/XX6thtt92W+2OTLdpV9NfxUjrJuWob7BU/wVd9riVQS2BEAqtWL0j9 ewaGrZAHDgymm+5fmlhswyoL4D372LvpzFUnpNPOmp+2b30/9Z00L528ZMjTaiS13l3tfutg2rp5 yBPy3t/dlT4cHPIGkkOveD7nwoWpf+dAemz9kK65f99guuWhpemUU49L7+wZskgD/Weu6EsvPTX0 GcRTTzs+zZs3J+3ecbB3ha1T6koCwCHdD06gY3RL9Cc6Jk+zoEaAa9w1zoVXKb2gMczu3bvzpHF4 KNIfxXE/iH4GrzE4wFR0VUe3gDzSm4hzV5ZbMwsKBfyxHAFoAViBXNcQPXDrmQFcWPEo66wiACRh AJE2lQJgy12WCZFbMlALFItL2ZSuuAAnq6q8wk2QYLys8r98vQwHxVS6AXRDkHhE8mIV9l/a8gdi pedgmQZAA4jjQXolyS8oALQyBwkvfeVxRPgyTISdrWeAhVyAM9ayscwCqZcBRCjnlHJHNOaqsgVs AEh8sH56dxryRBAlmmVSHUesOtpOIyAtAUa0v9Liy/2Um0lQWJl5NUwEla6wYWE36TRWKtuvjjNI 2wug6Z5r7Um/0WvSkStLmR9AU9afqvy0e1/6gFiK0ezcrFyt5NMsbLt7rdJRf7Sd4Cc8B6L+VOW5 Uzp461X7qpKX/DrVVd4/SHtXTsSC3S1VbYOTxU+3/NfhawkcDRJYuHhe2rtrRCfbu2vI/db99nQ4 jYw87UOO5enbOwaGo334wccpjWDb1CuepbNv72A69lhjzDHpwL4hOSxYNFL27VsOpsWnz0/Hn3Bs 5sfmXAfeO5Te/QH4HWayvpg0CfAkpHPSgenCMQ5VZYARpZyMLXXBSAM2KXUZQJquxcgWBKSy7oZ+ BTTTieicQeIhk7nBZ6nvRLipPHfVjgOtB4KH+gnFGTikcDKrA3/f/va3MyhUOCC1dFEGhAFGcT79 6U9nKy9FCoAAYIVl9QV+WXkpnABnpBXgt53gKHDlS5R2o6XUi8YbZVV+QDSw4Ow/oOvFAdLydBbe /UZw28gLmZSkAql8YcUrn9XXKVuHYq0axY8lj9sD18SpImvjPvvZz+ZZLJbbmLToNT+vvfZa7tCU mZXYmZW4E6nTZT107V4QftXDmT6Boo/hFszls3SXKQFwlHm8ZzLUH7SjsfJTvi+WQu7PzcggYU32 ZJN6Yha3cSY36lhVnjulE+XqRfuqmlfk2epsQNfmrEfS/nghPPfcc6MmTFvFLe/3qg32ip+St/q6 lsBskcDcY1N2OY7yfvyRfTesY+xK5Y3oPTsPHBgZnxsT7RXPc49L6dw1C/NR5jGnsMe8te1gdk0+ 6+y+9NJz76VlqxZkt+wyfH09uRKAORyA5F133ZXxSjkJ2o6bAJgl7iivI66Ja3o2d2Q4J6jUpRhF 6Cq8AllvjfvhHRjh6SivvvpqslxPOC7OjWEi7FSdK7d0oJVVBrANJR/YA0adCY3SB/ixcHpBkD+Q GWBWIYFDgiR4s/espuIigNd9gjWTLm2HFydt10GAcTdUWkpDeZWu/IFobscUE7xQmNwHsh14dihn 3Mdrt0QmYSGIuMFX/J+t51DoY/aHW0azxjmZ8lHnwnpsgoXCORGkPelEdBTcOrSzcAmZiPxmWpq3 3357nvywBtIkWGz8M1Xl6AU/+tFWALacoJjsMnJpMlCVxIsAdcNzu3Qi7V61ryp5RZ7tzrHG2lIE a9eB3KuvvrprgNsuj26eTTd+uuG9DltLoJbAkRJosHkcGaBHd17bfCC9sXn0fiUH9o9Ysj/+6OP0 5pYDafl5fWn//sG88ZS1xzVNvQTogHTfiTCEMRKwyrISwyMMlo2T2TDbm2++mZeJGfvhIUtAG8ky Ot5Nlu+ZFKaX3XvvvVM2XjbyVxncck0jjNIayqpKMQc6zQJYh+r53//9348CogFowxLKsgvwEppz ADxgMwClsOHiCHAK55m48hsr8CnjcQPFL8DKMgt0A63y8l9eDnHkXc6OdKuASsNRyq/xZcz2/wFs ycEM1lQTy7F3Fu7JFumXrhm95I+CzpJFsTZb12ztQjm7Jm/tp6yHrsPK5rl2I04Zppc8T0ZaAJCN mXSaAfhL622veSArebaibvhp975MsJX1vVV+k3lfP+xoNVtcledO6USZetG+quYVeXY6Wwpw4403 Zi8B69Wtwe5mRrrXbXC8/HQqb/28lsDRKIFDH6V07LwR9faYY1Oy0sU62+lKveL50IcpDQ4cTnve HtkJuVmZt24+kO66cFm68NJFeY1uuWtzs/D1vekrgVhq1KhzlBzTB1lsAdsw1JTW2zIsXdckPrdj S5XKZVplOPqwcdKyOmuGpW8Z13SgEVNoG26AQEKLGfwISlgsqMAgK63/hADAAboUD0IPoGqHYRs3 +S8OazDQ6HM8ACtl3ZmFVDhhKFSeO8sLEI0NqQJs4kf+jf/DZ9zzAMp4CpKHOA5hrf/1XD5AAkXW Pfw63PNfOYHfkvAe5Dl5lXlResowwsYay4hXn6ePBMxCmZGyezMXRUDELrljoVifEHXQey/rqjQp sQ6dRKPlLPLEk7qFWJLVsRJsW2+hcwniToLs/DpTKTrrsnNtbEe9LJt3YMa0bJveSQDebvjp9L56 yXcv0lJ/GvclYL3slqqkU7V9dWo7VfKqwj+Xd0eQmWsTW2U9iGftzr1qg73ipx2v9bNaAkerBPb3 D6YlS0d0siVLh/ZncH+6Uq94ls7i00bKrrw2zWok62v3vTOYlpw+P71RW20bxTMp/+mBvIToc0Gh 2zXirXje6sz4GJ6GwrDQlhS6S4lLSmNIGZZeKX9pNNt7gk5ko8mgWKoaOm7cn8rzyNRWGy4IwEDv XAqDkELpY/GkCACnoRAAocIAuMAp6y/FlNDE8yK4MBM60EqREd9/wvvOd76TwSRgKL64XIh98xYf 0gOEAU3x3Xf473NDztbQSk+8b37zmxkw41V4FcvLizzdkw9rLUANSLBM2yDrJ37iJ7KEgGCuxSyL Phvkk0dhTbZ+GK8AsLSiEgHwKovPF1Hq/JeuWZMoWxvx1496LIFYVx2bMQGE6jcQ6P0js1Bmr2IW iuXwy1/+claAmzX2dixKV11gqRKXOyrrWOxqHHG5fuDJWoZmpP7b3ApfXEm0F0p4EOuvWTSAHEjz vVugnMLdDVWRTzfpjSesiTJl4fai82a1bbYOuwrPNvvR+YblV1tE5Xu3/ln79kkp65/1ZazpZjvJ tio/0u30vsYjlzJulbKX4VtdK691wHZLVu8DYJF7N1bmKulUbV+d2k6VvFqVt7zPO8BGbnaT1Le7 1ieUbb2KnHvVBqvwU/JfX9cSqCUwIoEtm/fn3ZGvuPnU9O6ewfy92/63B4Z3Sh4JOX2uesXzlmf3 p5s2Lk1X3XFq2rNjIJ2xvC8tXdmX7rzireHdkqPUO147mL/t++Zr9S7JIZPJPMNGMIANpHimuY4N RbsZc/HMGssgQ7eUjrW1JdFtYS8T1nQc+KPRJbkMTwcw0V/qmPGc7mStrfFOWnQF42WA3Ag3ledK 4BY4dDTO6lM8wqJSJYyXRcEM5fK73/1uVvoBT4JBrgnLywFOvXxAEDgQBjAEiFl1P/GJT2RgGa7E ACnlM4ClzxGJjzdhxAdkpctVmtLm2gEkS5PVVhyW2uBHHPGRCoJHxDotL/l6jjcHXvGPb2nJCwCW vnD+O1SEAFM5wfpnUiRgR1QdSFBs7GPTKB2ECQyzZwBNEICoY9CIS4U3nrc7q5Nm57g72nlOHlyd G4mlVdqt6gT3SPVKOuoukFeGFRcwAWqVT+fk00jdUif5dJveeMN/8YtfzC4yPksD6Nr4p/zurPSr 8AxQkX+Q9JDJhhhItFn1wHd0ydkEgu8UAz1BVfgRttP7ivTGe65S9ip5qJcmXHzL1QCozqtjIZsq aQjTKZ1u2lenttMpr6o8ayfGHYO9SQllVw/K5QFV5NyrNliFn6plq8PVEphtEnh7+wfp8fX9GdSe dU5f2rtzID2+buizgNNVFr3i+e0dH6RH796bVl+2KC1b2ZcOvHso3Xvj7iOALTmcvmx+2vXGQPro w2Lb5ukqoKOUL7qgcYfOxmgHF9A5uqUXXnghT8bTjegtPABNzJckL8/pN/YvAagbQXCEZ5m14zKd qJHoTrAfPcF4KS0GoOmwnDB4/WdLliz5p/gz2WcvEuAEAIFCBGSyqAKknhNsgF8g0zPAEAGXAYr9 p/gH8AROpRFn6UsLwBTfM9fh4uye5wFi8QHoeg78liSMZ3EfX/LBG7DrucN9oNa9KJez//hR7rGS Ckn5MsM/Hppu6YynLDM5Lhf9F198MYOJZuDZ4n0dCKtsTdNfAvX7mv7vqOawlkAtgVoCs1UCJ5x4 bLrvmbPShut3p53b35+tYqjL3UQCPNbuu+++tGHDhpZ7cDSJNq1uVbLcThTHwCgCAh1BAKsjwCYQ ChTGWlbg0HOzBEBiCS65BAOqDlYteXgecZyBUARcAsPSEN4ZGHWNXJsBkXcAWaBVuACpeJOO/wG8 3ROOhSLCiaM8JRg341FTLQESMGvX6GZcS6aWQC2BWgK1BGoJ1BKoJdBrCbBoHxo4nHa+VQPbXst2 pqfH5ZgHaqvNJWdC+aYU3JaAthRWgMsAjECmAzAERl0jVtW4D7S6DpAaVtlIyzPWWv+d41qaYWUF Tt0HRMW3LhggLQGx8MIA2tJkXQZ8XQuH/HcfsJamI8rieeSj8oyVWPrkMV6abumMtzwzNT6Xf+6f 47Hmz9Sy13zXEqglUEuglkAtgVoCkyeBU06bn/r3DKQ0dgfCyWO2zmlSJWD5KE/BmUxTCm4DDJbA EPgM0At0BjgMqyphxz3xA6gCo6iMH1ZT6ccz50gLQJWHQzzhHcJHnEhDHOS/sAgQifwDEOOJi7JD GmE1Ft4zcSOtnMgYf1itw/I9xiRytOmWznjKMpPjXn/99W3Zb/VN1LaR6odTJoH6fU2Z6OuMawnU EqglUEuggwTuv/HtDiHqx7NVAvfff/+ML/qUglsgL4BinEkUKAQEgU5hAEog0QFMxjpaG4AAqAEg xREW+JUewBtplW/KvQCe7ktP+LjvLB/gMcAtXpD7wnomP5bciOd/3HMOgBth4rkyicOFuqapk4B1 Bazf5aYxU8fNzMy5luHMfG8117UEagnUEqglMDMlcPwJx6Q5c+ek9987crOfmVmimutaAr2VwJSC W2APUAzwqmhAH/DnmTWrgCELqbOwngGawokHQAK3gKxDmPgP+PqPnB3SlYYjNoUKt2LpyicAsmtp iCMsijW93KMBo+A3eBEm0sePa/E9Fx44Dh6kX9PUScCnfbyTz33uc6N2HZ46jmZezrUMZ947qzmu JVBLoJZALYGZK4G7njgrWZX2H//dm+nDeqfjmfsia84nTAKVwa21mT7hA5xZK9rf35/XowZngGjj p4I8e+utt0aFi/DOQKXv0vomrXR93sR3lSIda2q5zfr0z9/8zd8kn/YBXOUlrA2ZgExgEegEVIBQ YNg1QAmw+r6s7+Z+61vfSl//+tfz951sNiWueAAokIof4ZXP9zA9x5d7zr6JK288Aa7Aqe2whf2X //Jf5nTl6fMVvmtrgyDgWDhp/PAP/3AOB5CL9/3vfz+HLWVSX49PArYvt1NtI1nP2ugq6nMfLI8T Pclgsyif6PnMZz7Tsi008jtT/k+WDMnD55luueWW/C1g7evOO+/MnwbyzPr4119/PYvN+4xv2E6V HO1kfuGFF+at8qeKhzLf6Safkrf6upZALYFaAt1I4Ik3VqUnN/anLZve6ybaqLDHHndM+oNXVuR7 hw4dTpetemPU817/Oeeik9LqixemefPnpP63B9Oj9+4ds+V1/zuDaX4f78LWC2ZPPuW4dOlNS9LC k+em/e8eSo/fuze9u+fDXherTq8HEqAr+PIJ3OITqz4FBEeMh2LHY5/o6fZzfuPJd7rErQRuCQmw AygBPyB3yZIlTXfSAnrLtaA2ZGpFwCQwCFy6Bhx/6Id+KP+Xz9///d9nF2PAmgsygAkwOosD9CJu yP67H5ZV1wAs4BwbTwHGCH+suJ4BxgA2QOw/MCo9wFl4oBSP+HJfuiogBdpzYNz3dj333d5IhyIO SAPb4ggD3P7DP/xDThOYBuLbgf/M7Cz7ufjii/M3S8f7iSPf6/Rd2iD1qZF8z7Om8UlgMmVogkCb Xr9+fQaO+iDfvUXadHyf1UBR02gJ1PIZLY/6Xy2BWgKzWwIfHfo43XnVrrT8nL604rwFEyqMM1ed kC69fnF69dkD6d09A+mcixamm+5bmr7wm9vTx61V5JY83X3tzpbP4sGVty9JQPuT9/enVasXpEWL 59XgNoQzjc6MLitWrMjfpTVOM4Zcd9119Wcfx/mOKoHbvr6+DCpZaZAXAJgBgo3gFYiggFYhgBbw kwag6BpoZBkFbAHLRYsWZWD4Iz/yIzldeQOyQCzQCXACitJw+O+Qjvs/+qM/ml2XA2TKRzjWU5ZZ oBSoBkrDygrwii8P1lWgFMAHiKUZ4NZZevgBWvEtnnKJC1Qrh2t8+P+Nb3wj35PnP/7jP2Zeqshq toTxbrzj8ZIPYUd9HW9adfypl4D2oi+49tprk+8AP/vss6OY0n537NiRrbujHtR/sgRq+dQVoZZA LYFaAoUEPk5pz84P0qJTJ/6TjMDl3p0D6bH1Q5Oxb207mFavWZTmpGPSxxOwXfFxxx+TFp48L937 g2/Ybt38vaLg9eV0koDP7TjCusqQB9zCHDw8axqbBCqB28akATgEjHZDQCcLMDdeBAwCsEBepAmE cvlloQUegUnPKGdAJ+AovrRYdPEAUNsUSKUQVzj0z//5P89hmfdZZ4WVJlCLnPHD+gqgyvvv/u7v 8v2w2Lof6UgfwJWOMx65+7mWZwAz6eIZ8EWeKQfQBgQ78N8LEJczmOE/XIkvv/zyDFjIjVxOOumk tHr16vxubr311p6XsPx+VzN34c2bN2cQxUqIwq3z5ptvTi+99FJlfgCx+J7x1772teF4Zut0Zurw iy++OAzaIgDXaluxR9n95zlBNuecc06+9iw6xIh30UUXpcsuuyzXe2Bv3bp1uZ3Fc2cuuzrPk08+ ObebBx54IJe1DFPlupMMn3rqqbx8Qfv0LrUfFvUyXpV8tBVtFCm/SSgU/UL+0+Gnipxtf4/np59+ OvP76KOPprPPPjvLiZtxTJaoCzfccEN2I8LD1q1b88fO203qGaheeeWV/D7VrSCztAC7CcR4X2PZ 4KxX6QRf9bmWQC2BWgIzWQIrzzsxXXTFomE3YG653xvDBky9SKdvwdy0+82BYXF++MHH6amHhoxF cfO4445Ja69bnJau7EuHDx1Ou7YPpCcf6E8fNaypfWr7qoiSfvNnt6aPGzyTjzkmJfkh45P/KAf7 Qdgqed3/5eVp15sH0xP3D/EpzpdeWZEevmNveuOlGiwPSXX8v406nHeGYJVuiJ506aWXJt+opWs1 GgCkRXdZu3ZtWrp0aa4bu3btSk8++eSwkY2ect9996VGV+bwhHzkkUeGWeKdumbNmuzJSzfdtGlT 17rdcGITcDGEvjokTFAAJcEgFhRKZjNlrh3gBSQp+pR2LqOuKa2sMuKxxAKBQCFL56c+9als7QQG 8QC4sn5yHxYHmET4Ep6CGNbUSMNz7svSQGEtBjj/xb/4FzmdsMiW/IgvfekBt8JLQ5kBXrySgXCe qxQOluBwbVZJWW2lIS38swLLN5T1zNQs/yEnB7dTgI3b+/PPP5+BhUYzFiJz7yHeRWMaXFg16la0 ffv2DF50GOjcc8/NPHIj74YAF+snkGv5OuIbYiZ41CNAM0ie/keYuM9VG1AU35rTjRs3DrdJYVau XJmAb7zbyh1Yu+eeeyJ6PgN54pGrDsv6jgg7KmCFP51kKAmgS9tWdmWVV8i0QhY5yIMPPphBpz86 V5MEjgsuuKBqEjnvKnLGKxmbwABgddhcn0tXZ+t+reF/+OGHEwDsvdx0001tebnmmmtyH/baa68N hzPJoM6bADGJYkLHu+mWepVOt/nW4WsJ1BKoJTAdJXD6mceny29dknZtP5ie3rgvg73r7jmta1Z7 lc7cY3klts/e+tjFp81Pmx7ZlzY/sT+D3EtvWHxEpHXX7kovPDmy5KoxwE2/f0a667Fl+fZNG5em //X6qnycc/5Jw0Gr5LX7zYNp2cq+YXB81mcX5DLsfmsEpA8nWF+MWwL0IvoZXYN+1u0k9/nnnz/s 3mzCHfBsJOAXDqPXmGQHct0LYimmi9PBS4JX6G9BsA79iIGPDkRXZTChw0wXqmR6jU2TCILiRwHk 9tmMYjMohW7cdMp/xAqLAngAlyylgCcCGAFYAgUIhQcOhQMquRTj4atf/WoGtDaaAnqBzACRwA0A jA+HTaUAVIdKBETbBApYtVmVcvnvpQHL/gOxwKj8WH5Zdj0TFy9AvvsAwic/+ckMJvAuLiuPMuED wBVeOnjFg/v4KCtMLvws/AEefOeVbJ955pn8Tjds2NB0Y6iq4ik3ldJRAFklsZK1m2DQYFkbNXwd Acsdi163biKslJFPq/XVwCgLYfCsDZlocb8kE0JhSWZtJSuzdFu2bMnBdIpmAYFWpNzAkhm2WJu6 bNmyXPduu+22XPeBOPHDKlnm1+m6kwzFxzMAh8j0sccey+v1G2cr2+XF+mx9rXSULfqRck11u/jx rIqcdewANOv48uXLs2x02PIPspGV9lvWBeC1FUlLXVLHywlBgw8ZhnwMEPLmydCNfHqVTiv+6/u1 BGoJ1BKYSRI458KFqT+7AQ9ZHffvG0y3PLQ0nXLqcemdLjZV6lU6o2R3TEo/MKaOsqY+um5vmjt3 Tvrg/SGjDSy85qpFo6L68/aOD9L8vtZWPRbqhYvnp2vuWJIevXtvUnZ0cP/Icq8qeT375L60YvWC dP7ak9Orz+5PF16xKL28af8wf0cwVt8YlwSAQ7ofvELH6JboK3TM0mLbCHDpYHSX2KyKvtMYBrYz YR4eivRHcUrMRx+CwUzww1x0K0e3gLzbMnYTvpLlVoKE4GhFAJ3COyifhBFAN+IAqQFs3QMSCQiI BASBPmBWWqwsse5WWsCrsGHZdS+ApjhAL2ApHiBpja4zBV+ewDLyXDoorLiu8SB/6YinrK5ZhOVJ kXaWJ3INtEqbZViFdC2OdLxw//EWYBa4VU7lC5doAL+mIQkACGQDwHBTHs8sEAsm118HUNEtAS4A JD5YP9UbDXkiCLhkCTSxggBx9S0AaeRZAh6WWzyVFl+WWm4mQWFlNgkTxAMCKVdYUFkOJ4pKF2Rt EcWyhKp5KmsAWgCQHBzRQVdNp6qcIz3tNyj6DP8B1BLYutYfmUxrJO9HfeYlYDa1JO9LucLDICz1 5fsqw7e67lU6rdKv79cSqCVQS2AmSWDh4nlp397BdOyxx+TjwA8A3oJF3a2v7VU6pewuXHvyiDX1 ghFLF/fjALbCDxw8lMGu9bPd0HvvfpT29w8B2gP7DqV33v4wHx98MDKeVcnrg/c/Tk8/tC9deOmi dM3tp+XNqZ59dF83rNRhu5AAHYHOSQemC4d+VjUJRpTSSFHqgpEGXFLqTXAL3SZwjXBAKutu6DNA M92NHhYkHmJQCT5L/TTCTeW5kuUWyCA4wiIcyhTg6n8ogM6l0CjewhBaWCsIgeJGuaUMAnoAH+UO 0AQWgT4WUi/Y+lfhWU/FEd5zABLY/cVf/MVsOSVA8eUDSLJ6iecF4CkswRR7/MsTgJUPi66XaN0v yy/QKn38icfNWBriArr+xxrhb37zm/neT/7kT+YKYrMofJMPi9r/+T//J/+XlgoEQNtRmbVXeRxc qafTbMdUVUbWqlgvChCxdnF74M46FgIayoY+ljSsv/zsZz+bZ7FYbtWdiSCuquqNMrMSO7MSdyJt TN0Kcu1eEH5N0mgPQTouaVt3IR+W1Oeee264HUe4o/E8Vjk3ykKfduWVV2Y38NJ9pwTA4vhvYsQ5 XNPLtLwXs6aNM6flOy3Dt7ruVTqt0q/v1xKoJVBLYCZJYO5xKZ27ZmE+Sr7njAyX5e2W171Kp8xg 2+YDafeOg+mWh4Zch+OZTxNddOmitHRFX+o7kc449KSSkh6JVDxXzcunluwmfdqZ8xN36I8+GgHI FbOqg1WUAC9OByB51113ZfxUGgfaJRMAszRAltcRF9aiZ/PChT2CSt2FUYQeCcOw3vL2C+/ACA/I vvrqq3m5nnBcnBvDRNipOldqNxQ4lqRQ7oEG6/uAUUIIJRoYBBwJtb6x5AAAIABJREFUyj1nYBDI FDZmA1hkCQdY9IkcwFg6QB+QKj/WUODPbAGXX+kALF4iqywLcfATwgMQ5C+NALTxSRnAEoiVVrgC A7isJdbSyh8wFo611Zm1F9DFNxCMKJLiuYc3gBpv3/72tzPwdg3kKhsXZCQN6SFn+QDR8uxWkc2J HIU/6kNssqR43DKaNc7JLDoQE9ZjrhmAYS9JvTdJY7LkK1/5Svr85z+fLYLquM2H1G91XT0hC3VH mzIpI95YiWuzzojLNQs3kHv11Vcf9QCXPHXW1k+bUNK/hOtNN7K8/fbbs+uw9cP6j9igqzGN6L9M jHE5is3BynBciMoNpjzr1t1anF6lU/JWX9cSqCVQS2CmSuC1zQfSG5tH79lxYP+RnwTsVL5epRP5 vP/+R2l4E9zCGfJKa25Pn5ee3Lgv4XPJGfPT2muOXHMb6YznXDUvm0gtOHFoRsCu0lyia5pYCdBN 6HuxnK2XuZmUh11YiYFo7sWNk+v00jfffDMvy6KLwDzbtm07gg3L6Hj9WXLFWEIPshGV+NOBOoJb ijaFmoJdkv8snRRtL4IAgLYwVwOS4goHLAKKnrPGOoQDBFliPRdWes7AI0WUkABV/4FVsw7yAkaF YwVtRkBuo0neS3Q/3DLFAzABC/woRwBj91mJhQ1LLh7xB2wI6xNBwRs+ldN9fCKA1nOyA0o8dw// 0lJuz2oakUDp1hATECNPJ/+K5dj7CvdkbqWla8Z4OTKxoZwmTqwfB7p+7dd+LU/ifOc738nJq+va jfakTagzeFL/tTn1Ksh1OVmivTRru8Jzeb7xxhvzJJV1udb8TreZtyhXL89AIIs8YG9WtFuvCRMe Jsx04gGMS+ttyav38YUvfCEPJg899FAOX06Q6I8cVWZneYPwRmF9bhw8ukmn5K++riVQS6CWwNEo gUMfpjQ4cDjteXt8YKxn6Xx0OJVWY/tUUv+M5YglddmqvvT4/f1p+5ahjXtix+Nev59u8rJ7Mxaf fnjIPfmtNw6m7707MR5svS7nbEovdIJ2mII+yGIL2IYeUlpvS3nRdU3icztmVCyXYZXh6MP0R8vq TOBL3z4i04E6rrklNA2QIh1EsaZEA52AGgJeAT/hHK4BuHDhZbkFHil84vjP+gQMApDO/gO8FHnp CcNyRrkHHOUHKAKdgGZJsV7RPTyzqJaH+8oRlcB/YFNlUBb5cn+WLz6UUb5ckinAgLT0pIEHh+vg H6/4pvzizX1hlE04ZZYfaw5ehZUvxbSm6ScBs1BmpFjbuO4C3nbJHQvFhI93j7x/9QtFZ/TXf/3X iZu7zxJxEwZkWf/VGRMtzgFW1RtpiFuCbR4VOpcg7iTIhmdBPC4cQWbo1M+y/cSzo/EM1Dt0xo0W 0yrljfdVdvZl31imoW0LZyCRFyt5vHfhvK/GfQlY0RvJul2AnMW9WR2smk5juvX/WgK1BGoJHI0S sOZ08WkjOqsynrlqaE+Lbsrbq3QOHjiUFhXrfRefNrQ/gzWxKOwcgwMjk9Xz5k2M8aNqXnaKPuu8 BXlTqs1PvJv27RlMl98wsrFiN3KswzaXAH2AXsAzMMg1PaNbDy6W2PA0lBYLbUmhu5SYgy7ZjOiV 8pdGsz1Z6E+WEgbFZlOh48b9qTxXaj2EFtYJ4JS5nELMdRiAY6EEXAG7sFYCiUCh8ICe8MCiwnuh gCoQSGGnuHsmjPuAn/uAqK2xgQOuzICicNyXhVEJPJOmGQh5AaBVCfDGL4uIM76kIS9nZZIf/pQh +AygwXorDiASoFg4/AEk0pcOUhZ5sNIB/uIp73SwUFaV19ESDlhQX2IzJoDQuwACo/6YhTJ7FbNQ LHVf/vKXMzBs1tjbyUa6OhSWYHG5X7PWASo+C6UOmBz5q7/6q7zOgXVRfVJ3os6rL9Z2+4atNvHp T386133gNEg8s2gAOQAnLFAO/ASxOtqwyq558nWt7N2WqYoMI8/JOLNs6geinzI5gcp3GnxwscG/ NSPdkskusuWGE/1ilXXhNiPzeSvb9XtPyPpqFl27JatnMfEg3dKLQf8UA1M5oATvVdLpRj6Rbn2u JVBLoJbAdJXAiSfNTaeeMbKJ36FDh9O7P9gJecuz+5PP4Fx1x6lpz46BdMbyvvxpnTuveGt4t+ST TjkuAZAnLhzaEyXS2tc/OPxt2SrpVJHPlk0H0g33n5YuufaU9N67g+m8tQvT/ncH0569Q5Zl373d 985gOu+ihQkQ7lswL13UZKfkk04+Ln+396STh4D7kqXHZ8sqEP5hw/dwW/FVNa+Lrlycdm09OOyK /OSG/nT7E8vSGctPSDu3v98q+fp+FxKAC+h5NpDiCeY6NhQtdYAqSZpEZ5ChW0rH2tqS6LYAqwl0 BkI6cKNLchmeTgLrlTpmPKdfWWtLl5EW3YUeGSA3wk3luRK4DesQYVCyKOoKAcRB/kAb90mKOAso 8Ad0Up6F9zwsHSxEQDCrrnvArHjIPWCZ5VQ86XjmhcgTAJAfBVN+AWqDnwAmVQWqXGGxlR9Aim/p eVF4CVdl10CsF+maJRbgcM2tGS/4Ux4HBVV5omwsz/gTB0m/0XW6Kt91uPFJwE7BOpAgAAPZNEoH ERMn3DeCAET1UCPuFgiqr2bnuAHbeU4eXJ1j4iSstEDMn/7pn+b6beJHB8UqqAM04RJ1Tvvw7Itf /OIwGMcnvgAloFb5dE4+o1OS/+qwTk3ayqXc3brndpJhmedkXJuMINug+Nh4uY47nrFok1W3/UXE J3cuO/IAdG3QZS1LO9IXGqxMLgS4VQ/spOx7wQYc7wJQbhzUDC4GLAA16mqZV5V0upFPmXZ9XUug lkAtgekogXMvWpgcQf1vD6Rbr9iZ/1ob6jM4qy9blL/VeuDdQ+neG3cPA1uB1ly5KC1dPrKpjk8F odsA4LeH1g1WSSdH6vADDD66fm9avWZR/rzO3h0D6fEN/WnoW0BDkR+4bXeyFhYoZyUFiC+6fORL B0KtXrswrThvwXBuwqJ11+9Ob3cBODvldfzxx6TFp85LDzw98j3dd9/5MB1871A6Y+X8GtwOv4Hx X9AF6WN0NvgGtmq2AWWnnF544YXsgUcXgWN4i5XfsBVfXp7fdNNNeb8QgLoRBEc+JtJjE+G4F2e6 D/xGb6FH2nuEAYieM13ony1ZsuSfxsoMpRyoQwHcuPYCdBRoVkyAD2ik4AOKZgIAPMJ3fOpTn8qK O7DnPkAIXACIgCNAbbOmSEt6wKR0AMbxkLyACAcCat1DwC4AES7KAAYwEuBUmfACZONduHBPBEKE JQfhlEM8FVc5/HeIN1ZSIYGS2DDraElnrOWYifHUhajDP/VTP5VBD4sg92ReEeqMeg7YAq3a1B/+ 4R/muqOOjRWczURZ9YpnVu8XX3wxg8huJyl6xUOdTi2BWgK1BGoJ1BKoJVBLYDpKgBHyvvvuSxs2 bKi0J8h0LEMly20rxoE1SjaQBqwFqPUfMGShBQoRN2P3A/QG8AMmAUBgkjIPFAKZ4gkD5Hpu/SEw jYSR/nhJfviOdcHykSdLs8M1ABJA1X8U1ln3pYEv/OBZGuSClEk6wgUYibTIIsBwDlz/zDoJ8ExQ L7ggsyaqPyyB6o96YuLEBAoKN+XwAFAva+peAmZHTao1c7XpPrU6Ri2BWgK1BGoJ1BKoJVBL4OiR AJdjOKzKZpfTtdTjArcssRRFoI/1M4AeUAeMUsSBV+FYdAE6QBJR1gFeFk/mbWmI557wlHeHe/4D iSxYzvJxDivrWIUr/bCiSkM+yH1AQ954dvgP1AZv+GU5wweQGkAeyAVapOHaM/yKKw3PXIvvGCux QAWIHmsa4k23dMZTlpkWV93jmaA+cKl9+eWXc51itXU/2pZyaV+8H3Q42pWZNfWrpu4kYAMnbr/a Yk21BGoJ1BKoJVBLoJZALYFaAiMSsASKq/FMpnGBW0q5NasUxbDgAn/us2a67z9wB4iWCiUlnXLP xZh1CkiMNNwP4CaeZxR7AFIYzwBLQLEXBIjiGQGcwKyze/II12Rlwo/y4AXIwKv4ysPahrcopzQ8 l457cT8AsrKMlfi29wLcTLd0xiqPmRhPXbKh1Ouvv57+63/9r9lSq77EZmomRqzz5fr/W7/1W7mO qV/qH+AbbWQmln2qeL7++uunKus631oCtQRqCdQSqCVQS6CWwLSWwP333z+t+avC3LjALbBH0QbW gEDgzT2gzuEZAvoQkAcIxuG5OPE8rLQUfEeAN+Gl73AtvEMe4yH5Rd5xDkArL6AaD7G20TMH3oDZ +C+ua4Q/FP/D8stdOcoVIDfkkyPUP7NOAiZ1gFSf/+GVoJ6ZSFFnAFv1xJpb4DbqjHoVG7uJW1P3 EmD1NjHQ7SZa3edUx+gkgfpddJJQ/bydBOr600469bNaAuOXwPEnHJPmzJ2T3n+v/r7t+KVZpzBZ EhgXuMUkYNcIDMMSS1kPsBcFKgEhsMd6GfGFpcQHaLWxlGf+BzCMdbHuAZ/jIflF2iUPAaLliV// AXjAAyCOdY/uiRcHXqJ8zgHe5eGaRU5aEUZZapq9ElAPfKrmX/2rf5UnUXgxnH322fmTQDwDkMkV 1lvtIsCwemtyBcitqXsJ+KQTcPu5z31ueOKq+1TqGL2QQP0ueiHF2ZtGXX9m77uvSz45ErjribOS bWT+4797s/LnhiaHszqXWgKtJTCuXWmAPcCOAu7M2sTSZAdka9sAQQp8CSCFi//hlgvwIQo8QAm0 slb5riff7x//8R/P7s9haZUGBR9Y9DHh8hMgZVHN6voek+flR5IjTPAhz7CwBoh2ZhkDYH2b1mda HJ/4xCfyd2rljY8oT6QlHeVw4Nd9vALqvsGpLM6f/OQng4363EMJ+PyNz+4EqQMWxfvcynQjbsnn nntu/ubsV7/61VyX1RtbsP/FX/xF+omf+Ilcb3yY2zdy/+///b+pv78/xQe2lSu2cffdVv/j+65R Vlu2r1+/Pv7ms88ZUQp9QsZnacrPIo0KOM4/Tz31VP7m7jiTqRTdzuFbtmypFNYnd3yqS1udDqRv Iivvw7lZXzUd+GzGgzX76l2rPrhZnPLedHkXJpOUw6EPaUc+teVdzRTSvpXLmHW00XSpP0ebXKd7 ec656KS08dnl6bGtK9PNG89IJ5w0um4fe9wx6antq/IhzEygJ95YlS678ZRhVllM3bvwspOH703F xf53BtPB7x1Khw7V+1RMlPwvvPDCtHHjxvx5QUun4IXxEt33iSeeyPrkeNOaifHHBW6BNgoiAMeq RJg/8iM/koEpoBvgNkAgAYkD8MY1ICsuEIkAXcCWQh9hA0B6boCWj+dLly5tue6QpXTJkiXZwhXr FgGAkvCN5IlXZ3kpE+DtbCMfZZIv4OGecCw/4guPzzik575wyFl5yUNayhtW4EZ+coRZ/nPxxRen rVu3jksKvr0VLt+upyuZHPJNs29961u5Dfz6r/96XluuzrDqq+c2YPPcmvPvfve7Gbj7Jtpv/MZv ZMD+2muvdVU8k0XWU2gTPi9E6XWeznLqqoAVApvoMJhYQjEdiPy9c5MQzvqt2ULT5V2YoMXLpk2b Zovoj4pyTpf6c1QIc4YU4sxVJ6RLr1+cdm0fSE/e35/mzZ+TbrpvaTqmwLcfHfo43XnVrvTqsyPf aZ0JxVu2si+lodV8adnZC9KccftWjr/Ud1+7M9148Y5U78E4flk2S+GSSy7JBgaT88Yfxi/fpa9p fBIYV9NheaKMAXo2lgJS/fcJk7DKAnoOAA/gcACCKFySxXFQ6IFMYaT1jW98I1ty3ad8SAcgABDl x/qCWIsbKVw2WbrCiuoeq1dQANrgSfqRlzjyko9w1uf5jFEAcfwCtoCu+MKEldozll/pucav567/ 3//7f5kfMzPAS8lP8DWbzwCHdz0eYnE38cEC89nPfnba7vrGvV09+9f/+l9nEPvzP//z2dLJTVn9 iHprUkQdNynyyiuvpO9///t5codrcrcExJLvF77whZy+D32zQm3btq3bpOrwPZCA98wj5Nprr02+ u8uSXtPkS0Bb01/MJKv55EupzrGWwNRLYNXqBWnvzoH02Po9mZm3th1Mq9csSnPSMenj9APr4scp 7dn5QVp06rypZ7gLDgY/PJxOX3p8envHB2n5OX1p/7vdj/FdZFcHnQYSCI8hX3FAcAZwCx/4kkxN Y5NAJcst8GbQ53rmYP1xD4ADVOPaJ0zsvsva5H4J8oBAYDFAHWsod19gkWIB6AKAwgDLARSd3Rcf WAR+pM+S1Q4Ysv4COdJGrqVbumYFeFWJgIewOgsnP6DUIV/xbfrjDNQDJih49mkj8X0CyVmaKOQj TengW4Vtxk+OMAt/uOFyyVi1alWuM8AXyzxX0zvuuKNriVBSueJxmWQxJ/NG4s770ksvZWAnb2FL wpNOhwsv114A8LHHHjsinHykI8+HHnoo812m0+6ai7s68bd/+7cZ1Kibv/d7v5frnkkZdSwmgrQl dU3dj0mVMm3PW1H5TD30P9qFOGYMx2LF1A+QibKTASuKvqCRuNkEcLOMoJGqyLBqXpG29uf9rV69 Om7lcwwkzmVfEIG4BatzN954Y0uelREYVeYyvW49DqQTE3PqPH4cjTLsVV2NMrY6c81Vdu9KWW69 9da8K3wZHm/uaw+AuOUnJXlP6oN3Lg2eGNqPOuZZSaXsxvouyvTaXVepY+3id/PM0oBwM+f+rw8Z C1VJp1O5vEueAehrX/vacH3Vv1WlcD1vLAeXt8b+uRM/VfvVKmXvVH+Ur1PbqdLeq8qpDjc5Euhb MDft2zsC+j784OP01EPvpI8+6t5tduV5J45ybz6xwb35jsfOTFfcfGq65PpT0mNbVqb1T52ZTj1j tMtolTBVJbN310Bafs6CdPwJx6a5c+ekwYEjx/VzLhxxyb7x/tPTCScUJuuU0imnH5fdsc9YfkJ2 2eaWfetDZ6QTThwJVyUMnsO127nJ0J6LRR5kIJ/1T5yZ5FtTdQkAtQFsxQp9ja7WDRmb6WB0Ml5g ixcvPiK6MZ5ebUymrwpfjr30pmauzPp5YUuCCd2XnzGmmW5Xhp/s60rglpCABN894s7IAuoeYYY7 MaXbhjgAIIUccPWSAGBEMSdEwgU8gVxrCil3QCaQK10DqW/i+k9YDgqUdbyeA52UfrMb7Qi/pWUr ruUdVPIDnOIJfyoVfqOSyVNZhXf4H5bpslzi4z0O4eK5MpIVMEMmQDsq+Qm+ZtuZnB0aCMWZW8bz zz+fN1cK63w3MqH0UMQoWiySjZ2EZ9blUtC56FK677nnnqZZADkB3KRTuotQwPBMgdSZAOSAclUC YK3BVkfU6a985SvpV37lV5JJIu2AxVY7iPqu/mgD6moJTuUXdbVZ3qUlXJnVuVir2yx8lXvagc5R O1N2FuDLL788XXnllaOisxSzTJIzAO2sLQVVkWHVvCJN52uuuSb3EY1u2zroJ598sgx6xLV6450A sCbrGnm+9NJL09q1a7MLkXoEzJmsUne7oQcffDCDIHEMNsCH44ILLhhOpld1dTjBNhe33HJL7m8f fvjhvA7cZNNNN900KoaymzAgQ+BW+2gkstPfajfWinO12rNnT3YFL8P24l2U6bW6rlLHWsVtdl9b K9tUGUa71Qfotwz8NoyLPqYM1+m6SjpVyqUOP/744zk712Tu6OYbhsZaZdb3lITHsn+uwk/Eb9ev Vim7dDrVn6ptp1N7D57r8/SQwNxj6Wbj5+X0M49Pl9+6JO3afjA9vXFfApqvu2f0ZJ1czjqnL7sH 33v97nTwwKF03d2nHQH0qoSpwvGenYNp6fL5acV5fWnntoMZ4JbxAMdLb1ycdu8YyDwvPHleuuau 5stY1l63OG3fciCtu2pX3u14zZVHgp1OYdZduyu98GRr126A+Yb7T0sDBw6lR+/uT/17B9N1609L J50ytCFmyXt93V4C9CJ9nyVT+tVuv+Zw/vnnpxUrVmRdzMSy5WuNZPyG3YzJdDYeju4FMbzp6+ng JcFpdKEgINjYTu959NFH83hCN6YDTxeq5JZMCUelQq3wgFrc94xS4/CSDIhAbliegEEWTfQ3f/M3 +QwMAq5eJGUBQJYOJZjSzDIboNTzyEPkyDsn1PAjf0BEHHk4S9O5BDoqkvuUU+7CePHdUeG4foqL J2BCWEAb0MCHs3xY0bhhqxR4VV4WOWD861//egYnLL0AhXID/eJ85zvfOYKfhmLMmr8UX5YeEwvP PPNMVqI2bNiQZ5DGIgSN00YjGq1ZKkp6SToPM2VhdVD/KKRmovBSUlio3Lv66quH66P/Og91Jywj FEYghXWinIkr0yuvldeO4rwDTIjoJH71V381/dIv/VK+r457Lpy65gCkgyh38kfqbDPSHstnyqNT i023xrrG0K7OlF2WuXCdwUv0FcGLvLlAa2fkDBBbUxryqSLDqnlFngA1AKZOkV9JeAxraXm/vI71 yO55J2YmS54NCAYP99GuXbvSiy++OKpulOm1ul63bl1OV/1RF0N28g/qVV2N9Nqd77zzztw/xvsU 1iRBSYCAsnuPSFszyJXknnbgPfD0YbU16DWuJe7FuyjzbXVdpY61itvsvpltRzNatmxZluFtt92W 6x6Ar/z6o26oSjpVymWiL+r7W2+9ldthN3wIa7zDv/4x3OaNjdp/2V9W4SfybtevVim7dDrVn6pt p1N7D57r8zSUwDHDS1SHHJK7MN6ec+HC1J/dm4fa5v59g+mWh5amU049Lr2zZ2TcOPj+ofTY+qEw hx9P6fZH+tKixd2HqSS9w4fTvncG04VrFyXA8syzR08occnu3zOQHrl7SE85cGAw3XT/0nTyKcel d98Z4Vleu986mLZuHgIk9/7urvTh4JHC6RSGe/T8vtYWxCXL5mcA/vC6vemjDz9O27d8L+3YejC9 18BLpbLP8kDAIQwCMBqLuyVjrT4++mjx9ckl0WdgoPBmNFY3hrEPjIlKYxfS74vjfpCxnG5pIpxu pz93dAvII72JOFey3BrcHEEU1gCxca/KOQBnKOoBXAHZoACh/suHcuoo84+wrc54i/jyYDlCXmQJ bt0DLLgSC2OwZlFlWRXOtecssHgA2PGH/wAmKiKgy6pGiWCJ80xeYdUGUvAP1EpHuTxrxk9mdJb+ UKS9L4o+K+BYZ4G8Owo4OQNRje+cpRYgCdIhoKgncd9Zgw3SIZT1UDoASVj0wxrSLJ1Io9UZj+oW UAC0Rtsow6svNh+Ig1UoqAyPL6A+qHzmHgsjUAvgymsspMMDVksgRNmMTjPSJD/lQgHaSm+FKjKs mpc8bNKm/rAsqgNjIYAgSBlRybP3bAJDXto6wIc6eZPkQMWPybsAtNJUVx2lDHtVV4tsW17qm8r3 6Vq9BGSCTGqWg1zZPiJMeS7bS/TL5fNO153eRaf4nlepY1XSqRIm6oD+yziBygmpKmkIUyWdXpQL j9F/NTsHv/pLkzpBrvVH0Xe63w0/Zb1p7FerlD34aHeu2nZ6Ucfa8VE/mzgJXLj25PS/Xl+Vj3Mu 6M5qtHDxvOzefOyx2sAx6cC+IVfnBYtG9FGc9+8acYEeODg0iTxv/mjAVyVMFSn4nuzONwbSoUOH M8BmpS4Jz3sLfvbuGlpy5X4jvb1jYPgW1+1Yjjx8M6VUJUwZvvGaxRYB4+GQtXN7vU60UU5V/tNZ Hnjggaz70YVj/KgSVxj4o5xELXXcSIMuVuoX8ItxmR4TpG9m3Y1xH2imB5XLQMVDJhCDzzBYRDpT fR7dclpwg3kKOwWvESi0iNL0NiF6ATGT3DRQD24adJH8KFcBOvwHeIIATAAWqAVAbR7lOXDrZdtc StmBUu7WLLRcRVlmPfdffC7HzPTuhSuyvABjaQS49Uw6XE09a+Qn+JqNZ2CBq6zPbFA2WH1YhLjS dUvk+vLLLw8DWP9LUofLeqDBqzPlJEuED0Ur/pdn4c16Nc58jaWNBI/PPfdclkGjW0jk26oDUc/x Km+zbnhiXZNu6U4S6bAWAr3ciIUJS1w873SWDzDUiaItCldeR7wqMqyal3JwL3cOV8zIp5dns5W8 AXgZIHXp3nvvnZBZS2XvRV2tUn79l/rAnbOsf+SJ9IWuy/dY8lYlj6kIU6WO9YovisHTTz+d3db1 Yaz72nQJ8qvkVSWdXpSLlbRV29fXmEhDALo+xThn0oPC43nZB3TDT7t+tUrZq8iwm7ZTJb06zPST wLbNB9LuHQfTLQ8t65q5uceldO6ahfkoI88ZjVvLRylVcYeuEmZ0qsP/dLXbXj6QrL3NNFp1SXOP TemjwZEMPv7IuJqOcF8WN4DncOJNLqqEaRJt+BbL7stP70/nrl2Y3bc3P7E/bXnhvaZAejhSfdFU AvQ0ByB51113ZStuOfHWNNIPbgbALMfm8jrimsCkZ5uchHuCYoz334Slcf2ss87K1ltjBO+jkvT9 r776av6UpXC8ARvDlOGn4rqh6TRnAYoHbFkZFNr1WKxTUvfiGge2RstScy6q36VI4NNgayAGXrz8 xsGOCzGrq1kIABQZrP0HfEMhUUlitkM4FkVpAakqS+wULU/u18Cu5wgwRtLCDxdlgDgmCsSpKWVF iSIV4I1bRrPGWUVWGqr3GIpX2XCrxC/DdHo/XEA07JLCQlne63QdPKonrLfdrt+UfljauLaYZVNP AZbG9ha8xPpgViYKZdWONOL36twrGWpTyq28XHzGIsMqZTJbqS2zjsvL+w7rdJX4ExWmU13tlO/t t9+eLdLWiJoQNElSrjHvFH86P+9VHatSxliDblkE7wgg15KGGE+qpCFMlXTGWy5W+ACwjXyV9YnC Y5wORcYECBDfSFX5KdNuTMP/KmVvFq++N7sk8P77H6XhDWVHMF9lIby2+UB6Y/OQd05EOrB/xFIb 9ybrTA+wMdZ77w55SjbMy3fFRpV1yVXCdMr0iY3vpDe2HMgP+Y0JAAAgAElEQVQ7Vq+9fnE6c1Vf uvd3d9afDuokuBbPufbSfSfCCGjyGp5jJYbFuBc3GmeMU2+++WaewKTb0HWafU3D0hyTnpaA2YOE vmCSv9txroUYxn27I7gFCiF8wJbyjAK4dZu7F1YCxW7jdxPeQOylBMV1mNPdx0tshGWwtbbWPYAX QEXALICq0wFKkf+ssBRa6bLCAq0qpXxZdq2hBHSFBaKFjc8KiRszLSU/OfFZ/BPAlgiaWRt7JRrv uqzDJii8304KV2P+3rWj16CwWUfSmHez/9ERsbqxXOu41M92YBvABdZYIrspB1kBzuOlKjKsmpdw 1vfqvFmjrBkB2ntNZj3xDQA6TySwVaZe1NVOMvAu1QGDU6y1Ka234segFRMxndKczOdcUE242kAs +Iz8q9SxCNurs7WoNk0CArUx68bHMrPdLp1elMsEYNnvtio/mVJklAcgpng1ulv3gp8y/3ZlL8O1 up6sttMq//r+xEjg0EeHU2ld5Q4LBNLduqFDH6a8G/Get4/8mkI36Uxs2NEq+qGPUjp23sg93/ZV dm7MU0nv7vkwbbz17bxTsg2mlq44Ie3YWrsnT9Y7iTGv3dhMz6W7ALahF5XW25JXS7pMdtMNS+xX hnHNmGB8sx+RiXDpW542HajSmluMlh1HOwG2K5TBJkBmhOPmNBEENLLkBIh0Lf9SEVUmiiPFzhlI de1guVVObsUInyxh3JIBXsDV4To2zeLO7L94wLH/gCyAix/3pI0X1438TIQcZmOa8c5bld26BI0w iNsFKtewxrN2Z+mwkpbESjNeKttaN2kBW+qoukZh5epdgltyYc10P2iswJ7iScEt268OTv3uhqrI sGpelGsTcDru2DSrU13ohtcIyy2ZXG0i9frrrw9vKhZrVCJcL869qqudeIk+PSYwhW/sq91Tx0qv ncb63ymfiXhu7bNPurD22fG5karUscY4Y/0P/DmCzIBrz2U7iWftzlXSqVqumEA17iC8jKVdUHi4 I+NNPSjXYEm3Kj/tyu1ZlbJ3SiP46UU/XyWvOszkScCOxYuKdbGLTxvaE+DAvu684Pb3D6bFp40Y QJTgzFUTo49Wls4Ibs1RGv4mPC9ZOsLzkqVDZXd/KsjuzeWnf3a/Zbfd1HYTqqngc7rmqR/m3WNf kSDXxuN2RokIW55ZYul/QSb5S4oxnp4UVE6cxz1nfbv8pdE4iek5Xa/UI2MfjhhjyrSm6rqx7RzB hxkBwjCLHzOhpXJzRIQ2NwiLMuTlBfg0cyDdcCFtE72rR9wFvRgH/iniXn5JPl1k92Jh5O9FA6QU PJZYSgk+Y2dI1ljuySy7ziqm8MIBqyy2wLDw7gO9QLJ7dl+Wj5cvHUC6lbtoyWN93XsJcJ0z2wTo AU7W+QKDlLNuyKZMLITWr5qtCqVMPatiDWmVVytwq3Pi+lESJTMAiQ6JewjLr9k2M2nqWMzqOat/ eOZSyNPAZkjqfVjryrTbXbOQSdvnbMiBwswN06wg2ValKjIcS14AqM9J2R7f+0ZAkP7GGVF8ydqk Rjf9j9lMfRYw5V3rG60NB6zs0NxL6lVd7cST/kxbUH/KMjXGY30UxgSCfnUsa+Kl2at3IS3jUQzc 5YAbvFepYyy/2kZYq6OddVs3WL+1KbtS8j5xrY41UxCCv2bnKulUKZe0lcG7socBPrgh89KI3eKb 5d/sHqCur/D+G5diCF+Vn2Zpl/eqlL1K/ZmstlPyXl9PvAS2bDqQPz9zybWnpPfeHUznrV2Y9r87 mPbsHbHA+hTNvHlz0okLhz7rGN+m3dc/mHf1xeWWZ/enmzYuTVfdcWras2MgnbG8Ly1d2ZfuvOKt UbslT3yJquewZfP+vDuyb+++u2cwrb5kYep/e+CInZKrp9g65EknH5fmzZ+TTjp5CEwD0oArIP3h h0Nu01yQfQbp2cfnpYPfO5RWnteX+7vdb7b/VGfrXGfXEzoZXcIGUnQw18YMWKlbHdKYzEVY3y6d xs890nGkywBDd6MLNbokl9KP3ej1+41kfLRERR8rLbqvcS5AbmP4qfjfEdxiyuDIxZEyCOwR0FgA LgWK0k2BIFgDLmF0o1hWFZJKg298UlqC7zL+N77xjewq7DM/wCYLK55Yd30aiMIkHjBrUJeOTaTw 61uk4ZrsP+XersusuV4yMBvux4CudFh1rdMFfj3DX02TLwEKHkAK1OpINGKfZemWdCYURDsO6zCA Y8p+t51SY746plZkPW5JykGpRICuiSOKtTqszjZaV7jtWnehE1SfPbd2tDFcmUeza+mL5zuo3C/V b5s4ybsbqiLDseQFWHgPFOUAt9YWe99BsZGOcuCjCrF0GzRiTaA46o8+pN1AUSXtZmF6VVebpd14 74tf/GJ2RVLHAF0TIOpKSd6viUL13qBmw6SxrG3uxbsIvgy+BnQANd5pPHOuUsdMBLFKBkU7K/cB iGftzvoRclEXWL71CepXt59IqJJOlXLh1bjLOqCdKqN4duXsloxz6ro0mu1EXpWfTvlWKXuV+jOZ badTmernvZOA3XgfXb83r/FcsXpB2rtjID2+oX/UJkZrrlyUli4f2TDHJ37QbYDr20PAzGZIj969 N62+bFFatrIvHXj3ULr3xt3TFtj+f/buB9iuqrof+O4MzISZZBrqSxtq0ASDBiEYEBQUFCwgqKio 0YYx1cD4BxQUECkqIPADighoQFDojwxQoUoVCgho0FBAgwQlkEiiCRIlLemQKWl5U96Mmfn95rMf 673zbu5999w/719y1sy559xz9tl77XX2Xnt999p/8L9q+QtpydfWZ1ALVK59fEtackn/Vp3dk3B/ TMcunJEOOWb6QLQ6AtAlp69Oq15eEfm6y9akFzbPSkfOn547Ezau602Xnbo6Pfds/w4JAy9XFw0l QBdrL9gmbDaYqJ0FMe++++6MQ7TZ7DEdkMU9bDEgLc/ZbexFgLoWBAejOoqtuMz+qiXtI6cKu1c7 Jy5TmkZyOmEtD83+/9mcOXP6VzxqFnI7fQ5wmksLbCLANObJAreeu+eMIiyvrPvODu8IE/G5F3N0 84td/lEgGU2M905ovMXTSV6qdysJjLQEDLs2FLl2H2Zgz1AdnQYVVRKoJFBJoJJAJYFKApUEJqIE OOsuv/zybOe0shbLeMprKc/teGK4m7wwVHlaDRvm6Q1QayixIceeAagx5M3zImAtAlj3/QeS4xr4 raiSQCWB7UcCvFc8QjxH9IKeSj2cQK2ey4oqCVQSqCRQSaCSQCWBSgITVQKGHBvFOlGBLbnv0ODW nrNArAOgBV4BUsOQgV3gN4BqgFph4gBk45owI2wR9I5U4TYM0hCGTmm8xdNpfqr3KwmMtAQM3zW0 x6gHQ7sNOeW5jeHPI51+FX8lgUoClQQqCVQSqCRQSWAkJGCKj6HGE5l2aHBrESigFkiNYcfmxLrm tQ3PbQw19qED5MZHB27NqUURj/DujyTxGA03N7Ns2uMtnrJ8V+EqCYyVBHhvzbl1VFRJoJJAJYFK ApUEKglUEtheJGCv+4lOpbcCmugZrcc/MMpTa/EoC+r84Q9/yBOxAdNYYApQdQCwRdAK5AoX98Jr 6yxsbCFUL93q3viQgHkFxaXTxwdXFRcjLYHqu4+0hKv4qzJWlYFOJFCVn06kN/jurtN2TtN232Xw RnU1IhKo5DwiYq0i7UACO7Tn1iqSsc2P/WuRIcqAqWeG/ZpXx7vrbLgxMAsQF8EukAwMO4DbbnhU O/im1aslJfD9738/f+OjjjpqRFbsLslGFWyUJVB991EW+A6YXFXGdsCP3sUsV+WnO8K86KaDktlb n3vvIwPb13Qn5iqWogQqORelUV2PBwmU9tzaV84WAA4LqNgSo5aKYYzZrkethmmUVjFuvNhnCVBt hexx+9rXvjYdcMABOV/2brKVyl/+5V9moArIArbiFdbxF3/xF/mZdHhuAV6gFji2vZF3nYVrRu3w 3CzOHf258mISfO1x0003bSMa23TY03OiLPxlqXj5qlf3tsncDnpD/b3lllvydifO/tfScN/dPPso O7Y9qWjsJKDOmss8HI3X7zVcGRsuP2WfFfMd5TXOtvypqJwE1HHbJAXxmJKj7d2KpK0GOG13ZG59 cUuxYrhG1+we8cb+yRHOlhr1pjd0u/xYW0P67LeJTjc9dHg64YuD9iWvoXvHndC/f3kxf7amsf9q X1//9j/FZ2WuL7jhwGRP2dGgXabsnG5Zfng+blh2aMdJnnrx3ByX/WprqUxaF1y3Xzr53HJ571TO tfztqP9traPdswVdp0SXiYtNvCNSKc8toAqw2d8WELBPrX1vKcsgytv9mITsGlHSQWXClEkr4uv0 HGD43//935PFpXhseWtj5WTgFbj98z//85x/QNb+UTyz//u//zsAboWx15PFZXh+xeGesBW1JoHj jz8+r0Tb6RZHjGLlNcjKb7VUa8DUPq/+TzwJ2Pc35sQed9xxWU/Zs7VIw313dTv2LfZ+ReNbAuP1 ew1Xxroh0ci3uBhEVuu2xzbSYVdReQmQn5XOtfuua4lNYg6aVdJvvvnmvOUXPcMWWrp0aW3wrvwf 6fLTFSbHMBL70t5w5bq8t+0Bh01POzWwZC8+ddBGHUN2SyX9Ut+f0oUnr0wHH9kzZH/ZUi/XCTRn v6n57px5U9Ozz7w4JES305pIch4iiHH0B3aothLs3gcp5bm1Kf3atWvzqqAWIAJggTlDdWNVYT3J //mf/5kARauHAhZ/9Vd/lSzQBCQCFwDvH//4x/TUU0/l58LoUbSwkxWKhRX3k08+mYcF/8d//Ef6 r//6r7xQE2AJZMYiTxr3TsnQY55bwBbPPGJAK5Cr4YoFp171qlflHtuf/vSnOR+ve93rct4VRsRr Kx+A/P33359lMn369DxE2QbIZMQLbCgzOQHV3eC/0/yPx/fJqxuysRG2Xvk4agHOeMz7RONJJ456 a0QDXaCeq5+uDc9Xf9Rb31QdoRsM4dfxMxKkXs2cOTNdf/312bui97PVFYzVVWWm2DEyEryKky4A xOkOciK/p59+Or3yla/M9/ESB31Lh9IjemTrbaw+UnyO53hH83uNJzlEvotlNXSdtqyi5hKgn8K+ MMJDm/+3f/u3WU+pa+okffae97wn2zsf//jHExvgoosuyh0JDz/8cPNExnEI+bPeCN1MXxttpmPE 6DN6nT3EpmOXkdX//M//DKwx4t5IE+dJ0YFSTK/3xa1p7rz+kXrA4MZntu28LoafENd/SmnN4y+k 5zZ2btvutvsuaerUnVLvlq1pr5dB7hAZdDGtIfFWf9qWwNFHH53fhbdGgzjj1HP2NhsE9qH32Gd0 IZsjHHyesVc47OiCiUAN+ruGsg4EFknGESOWIIA8RhcB/Pd///eAYIBZ98Ob6UxhEpqzsICkePz3 nKAZboTqGaVLkVLEwnsmXgqZkYeX8BYXeXTtYzB2fUTxUtzFhh+/8qYBYyy4ZmwGj+IAqCl1hG/v IIa9hiHyppEUj3fd9x4eAVr3NBwMe3kxjBlPFfVLwLAJ+4YCIr6nb2WhJ71YOgnOPffcrouq2Gi+ 5S1v2QYs3HXXXbmnPoaMKUsPPvhgHsJ27733lubHe2eeeWbiiZa3ZcuW5Y2xlbMgw2d1HsUQTIrm nnvuyQYUbwFyVv7QL37xi3z2A8CtWrVq4L/taU444YRcvhi7l1xySd6LdSBAyQvD50477bRktIU6 c9VVV2Ue4nX5YuSpi8ryrbfemr/fr3/96zz0DtBcvHhx+j//5/9kg1DeDzvssHTyySfnDq7vfOc7 A3XJED9eJ6NDgudiPY00hzurh8oKUn7UOSRddTuo2XePcM3O3eD56quvTjpd6LT9998/6UQjU94g HYN0n+MrX/lKesMb3pBZWrlyZf5Pj9CRvErKD/mrL4A9OftuZF0cOdMNng1zokfJmJfLtfpZLIPq s3C+6cKFC/OwKPm0hZLO0aCyZdUwW150jb60it8w4mp2Hi7vrciwWTqeF/mrp1t8r/Xr12dDwjeT L3W/+F6ZdMqEKfMtmumosvIpUzbK8CxMs7LRDRnSDXTX3XffnYcZA3Lqou+h/Q57hN2ho127rc6R Fx2sbS9L0mpEtc+K5aDd8oP3s88+O+dLHb3mmmu2SZ5u+epXv5qkoT1i29x4443p0UcfzfmcN29e euyxx9K73vWu9Mgjj2SdOnv27PTRj340y0C7FtSsvYhwrZz322+/XCfIw3WR1q7ckg4+cnrauKEv TZrUD+KKz10b4hv0sbctS4VmIG4nQ3YXnTk7zdxrcgaCy+7alG6/+ZnsER4IlFI6/uQ902HHTU9b nu9LSy5bn0FoPJ8yZee08LTZad6hPWlr39a0cvmWdPNV69NLLw62O8Ieesxuaf4nZ6bJU3dK61f1 piWXrU3PPftSRNPVM29tX9/W9MBdm9Ihx/R0FPffnb5nOuxYed+arr9k7ZC8i7iZnA3t3ri+N/Nz 2DHT0+Y6Moww113cP8pq2rRd0jfvPChddvrq9Pjy5wf432u/XdOCU2anGbMmpc3P9qVbr90w5PlA wAl2wV7RRt12220tT3mIrKrzixYtSvaopcPqdezTXdpkdRtQZR/87Gc/y/ps3333zXbHZz7zmfTD H/4wj1Jhh4iXHSfsT37yk2xP0YnSWbBgQbYB6Ri8F3VX8DVW51Ke2yJzPgKDlnFD0SNKEgGpUD0j nPEF+MZiS8Ap5ek9gNfZe94hPNeMUIretYZED6L3gUbhY9iw+4AtgToo3Hpk6LT4GRI+NqDL6AuK Hgrxuc+4BlrxGkBCOsAqAlB9VPn2XOOGT4a8MPIljLTE4Vl4gRUq78ijY6L0foSsRvLsmzsM9WK8 Kl933nlnNtJ933bId1RWHcpXLRn2ZYhZIzK3CiCNd/Wq4VFj3wqdc845uWG+9tprM/AQJ6OjVQIU lixZkl9zjX9HsWPHvDDzx/BuGB2j9NJLL201qdyLB5iSPaMb8I74IjL5YhgaqcAgeuMb35gNqDe9 6U15JMR9992XOyhe8YpX5FeA1air6kUM2WcU+e7Au44EnRrSbpW+9a1vZZDnPfPYGJ+O97///UOi avbdhwRu8KdbPJPfBz/4wSyLH//4x1k+H/7wh7PeeP7557P+/PznP59l++1vfzs3OO985zuzvEKu WKTj9LjqdGFwamSAyeKw6m7xLD1lWHpkaZV534t+qyWgFE/CqY86S4LKllUAmj5QNnQ+Nkor4q13 LpP3MjKsF3e9e2XKGENGmuoywK9+ha6pF2en94b7FmV0VFn5lC0bw+WnbNnoVIbaZvbFE088kQ01 XlvXbA33PWcjKOP+f+5zn8u2CHtCeW6FtB2NSHpF6kb5YeTqONHGMXLrzcN+61vfmuuyXSKAd/VM x2jYbjqs2DHquhFuOg/ppXA+BM86Y5u1FxG21XOA2lqjec3jvWnewVMzcHv84c0Z4NbGfcmpK9Pd Nw9OTap9vssuO6czF++TJk3eKd26eEN66N5N6bhFM9P8RYM2oncOOrwnzZg9Kd26eH3a2pfSaRfv k4omxaKz56TZ+0xNt123Id1108YMcgHmIs09cNf0iXPnpJXLN+e0eqZPSqdduk8xSFeveWvNg121 YnOa2jMp8eS2Qwcc3pOmT5+Ubr5CZ1xfOu1r+yTzdYvUTM7CHnRkTx46Dqxu3tS3jQyL8TW6nrbb LunMK/ZJWzb1pesvXp/Wr+3N/Oy+57ZtT6M4xut99iU9wPnRLhlhcsghhySOGfEAnrVEL8BLbAS2 7Gte85rckQibcdD927/9W67zrtnO6j/nnniF4el1z3tsDXacDnV2qPZ9PO0+UspzGwLSC8wg8xEM +wTuXMuwa8AOMAX+4tp9jbZ7hEMwQKTGAthzREMiHcCPxxNgBCzFzaihUAFCPaqULwCp0QkCXIvk XQ2QHkdxIh+Cog7yHP/4AXDxhpeYfyuc9KQTgNbQSuTDC+uMVwDAf/JhxGsU8alRA84jj4x86Qjn vYpSNsRPP/30bCDrMfI9rrzyyuz9aVc+vAhBvgdDqEg8hOHpK96PaxWWcUAZUAS8YLxjGvdW6MIL L8zlsPjeKaec0koUOazGPfillNSHWgJmGCThAZZvRochd60My7bAmrpx3nnn5R59AIU3segFlC91 V7lXRwxNZuQo34DXm9/85vTLX/4y7b333rkeqwN0g7D4Vx8QBexbALiIkgRO6ZqiNzA/HOaHh1pn lnjknwGKaocXN/vuwyQx8KhbPP/+97/PctOg6D0lS+WW0QnsygPjFLAjOzqNLgKAdbIF0TFkBgha MMa30siQR1C3eBYfmcaIBh59dVYvbu38w1h8xzt6g4u6t2xZpbPPOOOMrMOVG51e9dKKfNY7l8l7 GRnWi7vevTJljAyjzNM1N9xwQ/5erZT5emk3ujfctyijo8rKp2zZaMSn+2XLRqcyZJsok3QRXWm9 hxNPPDF7M02N4smlh9gQOvG0AYw+C0u1SuyMeqTToPZZN8qP9o6BGx5b36/oacXLu9/97tyenXXW WdlO+cAHPpDDALJ0Pf3xu9/9LrfL7C26mW3mKHbOl2kv6uV9uHu1YFZY9wLsJiP21vWm4xbOTMDV gYdt651cteKFDOwapTPvkJ40deqkdN4Jj6QXnu9vT9c+viVtWD9oI3q3t29ruvKsVdnzC5idvXhe mjl7Slq3pn/0FW8m73HEoRtjwclD7dEjj5uR1j++Jd3wtf41aDZu6E3nXDMv7bnXYDyN+Gznvvm2 jyzbnAGgfhWe3Ha8xIY1X/nl/rzzll/+/YPSvAOmpuXLBu2gZnLGP29t5H3rkpTOv65niAzL5HHO AVOznK+9ZG32ii9f+lxasWxzenbd4Ci4MvGMtzA6htXX4ZwtZXjW9msjix5bbV+RtDVsO5hKpxZb 1KhJI8c4Heg3tqXRGuwTOtCIMrqWPUcPsPXYlHQXp43w2hdHqyPuirx1+7olzy1jiwFGUVJ8hOGa oBghAQAJz32gUsY1Ig7g1jPCcjDYHMi7xYMXVBwUv8aHMo2wwhcNJQKvJYa3dwPYeo7P4n+8yRMw y1iUHtApPfFHekW+XLsPoDoXj+AhwjPkgV8H/hUGMpCWc0VDJaCikTtwosJ10gvEg2nIrgNwbpWA UYY7Png/lSUVuVUy3KsIbF2rAyPRscFTa9hqEEWHouNHJ1OUx3rneC/qk7yHNymGR0eYyBdFB8wC z8q0/94B2H71q1/lIcruq1N6/wA0xpv6jfCsDgY/4YlulWegTzxIHECCQ53vNnWLZ3L7+c9/nn77 299mfYjX6GAjDx2EGpvoLaWndJrxbNFT9aio3+iboGY8R7gy5yIAI3d1ozgiJuLQ2AXV6t5mZTXe U1YiTxrORmlF+HrnVvMe6YmrKMN6cbd7r2i8A1ao0TdtN43ie8N9i6jLEb6ZjhpOPmXLRqRV71y2 bHQqQ9+WXtJeG2ki3+TENqGfPKfLAD0dEaalaE+MLiraH/XyUHuvGF7+AOWg4rO41+zcLO+8sBwQ QcXvH/f22GOPbKxKX+cjGdA/8o94rrVT2mFlhEGrwx7ALE4vKNNeRJrdOu80aaf0+EMW99yaQeak XQZ1Xdk0Zu05OW3Z3DcASr0HqL34wtDhxGtXbBkY0rzp5fmwk6cOeu4NPw5gKw5xArtTdh30cM6Y PTltWNubeIsdmzb0A+jpM/unGpXluUw4Hk6e4XWPb8kg0HzkuvNuS0QG7MdwbuCYvKfPap3n9SsH OwzIBxVlWIKV7LEVTodGeM6LQ5bLxDEew3CiwE+1NlarvHJ+FB0QRVsw4oJ5wiZ629velgEue4lt oSOL3QEcx3pJbDfTEABh+Ig+wGtM1dQRGTZiUfdHemN5bkkjEIyDMtRbp8cBUPNfw6BBcDBAgD5D FZFr7zFOAGLAkzIlLO86M9oIVsNJkQpPabrH0OUVshgVwVLAxZ7DegIsY5QA3HjCD5KGxVx8QA2e dHxE+dSDIa+Uu/xQ/MLIK57wiedw57sfRgBeHOJzRNz1+N5R7+khj3lWGm5eKD3Nhu21Q4BOsaK3 E4d5XUcccUQGaIwR37dVUnZOOumkDEgYHEFlymeELXsGmpW7IPyqW1G+1dnoyY8wcaaYGG6IIcRL bW6G78CrdMcddwyUZ2Hky7dh+Oj1kzYlp8yrV29/+9uTBVf0HEpfHfGNdY75LuqacJ4JU9vDKD5U lucceJR+usUzXahBoUte/epXZ71HH2pQnDUw9AnPmp5U12FI0p+tUDOeW4mrNqwyF9+r+Cx4Ld6L 62ZlNcLVnhulVRuu+H8k815MZzxfD/ctRlJHtfO92i0brcqfzcELaUoRnaTO4VcbrZ23cCTvhU4m ddLcdx1+hv+xBUyFKEv0om8gb4bJ03d0sXagCBTLxjdcOHpYvHR/kHzVks4UPOmEJwd8qCs6IOXX iB3PGL7awU996lPpve99bw5nXm5QmfYiwpY9D3hoC3PYi/f02z1836bEm5ipJUu2/5VJk1Pqe2lQ Ro14K4gxpTrBDdOdv2hm4gnu2W3SwMrNRZYmTUnp6AUz8lFMZ6dBjFy83dG1IdJo7ep+2axf3Zv2 OaB+Z2irCRmWvcukYs5ajcFCGG2883LHw323bkxHL5yRhzkbAr707me3mR/dXuxj8xasoW7xqAZI xEmr9mG8W6zzxevIHZzCzjbnliNCBxi7TIebhX7pOh5aYdgk6r6pZtZIocPoBzoD2DWaxXBqI6kM ha4duRVpjtW5rVIaRjOBBiBloAG4IVCGmw+kodCIAHSMM+QdvQd6DoUnNKBYL6rDPcabdxjA0iFU z5B4PeuUxCN+8WqsAFkNGkXvGoj1IXlYNH4aQdfuU/74wjvD3X1nYfSgyIP/5BL5ERaRiXQrGpRA gKvo/WHQk9tYEqMvvMd6rev1fjfj7/zzz8/Kw5w6PQPvB1sAACAASURBVGQMm+Lcw2bvd/M5RRYA tjbeWuPHsFMKy7BsXnAg19DSKMPyxYPI4DMXmOfuC1/4Qv5mlKS6rQ6r10cddVT25Bqq/L3vfS93 HlHq6hbSUyitIhkGg1rhufj+SF93g2d6B4BlTNKddIgyRzaMSrrk61//el5MytxbuuRjH/tYzhpv Hz3aCg3HcyvxlA1bW6bKvjcS4UY77yORh07iHO5bjCcd1Uke23mXPmNbsE1+9KMf5XrHvgnbQ51j BOpM5wmJhfCMMjKnv+hBbZa+Og7c7rPPPnl6gbZFfQ892Oz9bj9n/7B7HOTATmO3hW3FuA07SLvF rqGj2C/ORWrWXhTDtnId8i0CW+/j/aWX/pSefabfpioMUmkl+q6EPcmc27mT082LN6RNG3uTIcEL Txk651ZCFnd66K6ha4gI323ac+7kPK+1r/dP2cP5zLot6YjjpmdPcq1Xuttpj3R8Ny1elx5auikd u2BmWnj67HTg4T3psjMeH/Auj3T63Y6f405Z5gApkrpmVFQnc3CL8cW1dMy5NQQahmF/vP71r88d 63QAPUj/GfX3jne8I/NGP7F92SNsE/xyQJpCxdvM88wRQkfElmqR3lie2wK3GJZB4APA08uJ/Hdo LCg/PaEahyI49Z6GguGr55BC9Q6BiifAsPgYf8IRJDDoPcpXmGYNgjibkTjxgw98Uur++8gUvg9J uRum41lcA7eMBQ2VOFxrqHiB5UPvBx7FI6x8hFe7eN2Mvx3teQBb+e52b3Y7suQ5Vo5ieDJFQ+GU JYaLBVZUeL3gqOi9jXikodx1SlEmIx7gR7xh2KpHRRlHuEZnQ40tRALEmrtrFV69c5EvC9EADebV Ku/yoQeQEadeG05ryC3w5r+pDOav6TxyP3QEPRFGTC0vrfJc+/5I/Mdvt3iOkS50hQbNt4oRB+Sj U0FDpHEhN50+FpWKXtWy+WvGc9l4hKstq/R9lLGy8TQrq43iqfXqNQpXvN/NvBfj3R6uoy4301Fl 8zqWZaMsjxGOvmJH0FnmvKuLyrIzvUMnmcdm1Ba9zyhky3zjG9/I84Lp9kZ6K9IonnXYiV8bYAgw feh/dOQVw3ZyTZeg2m9RGycHg+9P7zB06Wgd8haXYou5fuCBB7L+19lmJJM8e4cer6VG7UUxHFkz 6MUbfBafF69DtrXAthhm8Lr19rOvN6V2hjMPppny4koWXVpyxfpkDigyJLiW+l5MeTXmNau6P02m Nq2ZsydnHm58cHC1aGHcN+y6E+JpfqmvuW3dchrZBir31jNrXkyLz12V9jt4Wl5gat4h09KKwhzg crGMj1BGsmnTiwSAcoTEtLLis0bXUZeGq/PsQR7bsCfUfyMxYBbvc0hol9V9tq42wTP6KdprOkI8 9AUsRi+yDdVRThvxm0o0HqjUnFtuawotCOhDsdiTxsAwQ70AYawxQhgVFCfQ5744AD9AUsMiHkON PQNcvcMDxKjznGAZcREe0CVkwtbbEKSBqCVpi09jFCS94n+NjMNHZjhayIi7PT6cngpKnbIHSoVx 6N0QPyOeUe+IeVPyqGFUAOK5d8NTqxBF3oOv6jz+JKAXSo+U+VWG5QKFwFwrFIpGOQiqV1YZEcpe kJ79eiQcirl5QGOxPANFlEuQIb2IAm2FgFlHEENGmZUeiny5h29zaxkt6or6TAEq5/QDUP83f/M3 yTLz9ADvh6F+POEIz7X5BejGM3WL52iQfEP603eis8iZ7qMz6D66xbcX/kMf+lCWmeetULd4lqa6 Qb+hWFiilU4f75Utq9KKMq5tIJ920ppoZSwLdxR+oi4301FlWRnNslGWp0bh6Cf2hakBOrN1UOvE ZrQpc+wenXC2wVDvjEgBhtknyj9bpBVisEpDXdaeiH8kwC2epBXrFvhfW/7d02H2vve9L+tsC2UC rvId7QWPNV3tHttO/uUb3xFGPM3aC2GQ+gsg8/KWaUsZzA2BbQ2Wrfn7corDn55Z15sXnNp12qCN aKsZW/uUpeiT7t0yWBYmT96WG1vhzN5nqJ164OH97WnZtMqGmzFrcrr/9k3pvE8+9vKx0vpbqZ35 vbzQYULvPmuXPJd407Pd9zZbuMqqzkEza2TlPjDrCFr9mJGiach78WyinLXj2sLiwa6iI+CIVoid QL8E1e4iE7oedkHsC0BWPYet4BpYBh5jp6nvdpuwfgqdKHw4nXSw0wNBMb8/bNO4P5bnbWthA24o R6CS4AFCApLZAHcUIPAI3BEEA+3pp5/ORhqhEqJGQZhiTyHgp0ERL+NNPAy98H5GI6Lx8QEYzryh 0paG94pKPNjXWPu4+PbRGUX4locwjsQjDulJBy+RLx9YPhQ+BjzQIK/yohDgU14Zn3gzV9delHgE jqXvffEgZ3kHAuI6eK3OoysBjaxv6ox8W+VIgx0KRS+U3qvohdKLZZVMDXnZif86TfRmG7KhDCp/ 9eYQA4/SA+qUv+JiI0XJ4M9zHmU8GGKsdztWR+ZF1YsGkEvXtg6MKIqzFWLkWL3PPBDKzDX5RL4j X+bUK9PmZYTxpPNH+Vc/1QV5M6wZj4Cu5+oAZWiFcitRm3tmwRayDkOJvFrxMpfJX5nvjjcK2rdC jHVULBvd4pk+VN4c9IjOgQCtZId0FuikYIQyxs1/wSOd14p8usUznhjkFllTP8wd1BDX8+TkDDT4 KVtWfYvLL788p2XxCuW/mNZofq8GWRlyu0wZG/LCGP+JutxMR5VlczTLRlmeGoULcKquu7ZOgzbd CC16iucEuKLjjGAxvYK81FPlMkbjNIq/9j67g5ytRSAtOh9Yjk4u4btVfoywkRYAq87Ua3cYr1ZM 5smhf+hwWyHF+iLsGvuWa0+s3o5/c47NyaPfg5q1FxGOzgoDu2gYx/Nunu1faz/Z3V9e/GjOvF0z EAIyX3x5/9mVD29OQOmZl89LS2/fmHqmTUrHLJiR7r1tY7rtmnIjtAzztWrzMfNn5KHAPdMnp/k1 KyXLl/itsnzyBXulNSu2pP0O7slbBl34yccGVl22pQ1gvNsM83Z3SoA2snpz7Z65jWRlsSr5Xrdq S1q3ahAcWcRp2rRB8Fg2LXGddtHctOKhzenw46an3t6taeUjL89zTinvE9xMzo14Ld5ftWJLWnCq YcbTkj6j+Z8Yutq0sIYg21Lo9iWT0+bn+tKhx/Rku2T1I9suKFuMe0e5Vtc5ZNiE9Jl5s0ViZ8A/ 7Ex65yMf+UjWN8I62B6wGGwDo7Eh6QU6QBsPz9CPdLwz+1M7Li52GxsxQG4x3bG6LgVuGVGMiDD4 KEvGHqUcRiylDxwCiUCgBoLHk3BkmsAID8gEUJ0ZxeISRlyMYu/FUF4V3AcBFB0MPvHEuHDDenwU H6y2l4JACZpC9SzCBbD1nGfWR8ILkra4neULH/IAjMbqzno48e25++J17YPzPnuHESpueXIoGPIc Pb7uaTg0khWNvgQ00ABbUCyyBFRSEIwZHimNfhCAqJy1Am69++UvfzmZ02arFsrCQk218ysAD2WU EQFMAqjm6NaSOgYoMrQMl8OrIdNBwCeQCNTKH7Boi5xWyTsUFuCiXMs72fC8BskX+aiz6pS6IH/e w6c6pMNHB5e5bECi1aaVfYYhHYHkAfC1tyOlKy2GWCvALXhqdm723b3P4CTbIN8NUeTBU7d4Jif6 jUFLR9IxRo4wrHmUGJ+8HMqLuX70GX1pIQeemVaoWzxLk+FM7ymHOiF8L/lohcqW1WJaypaVz4tp jeb3KpO/MmWsTDyjGaaMjirLT/F7jXTZKMtTo3BsGp5JbbMheXQT+4U+czYNQx4YgcqZs/adHrQn btGWaJRG8b46q13RaRi2UG0c3So/0mCg0q3qjdFH2pci6ZzitaHvtDvyZZEs9koYsGwu7SG7hz3G GXDPPfdk/cQmQ2XaC+F0SjG8yT3a3CI/3bw+duGMdMgx0weiBCzRJaevTquW9/Ntzq7/i06bnRad Pidt2dKX7rp5Y7r95nLANiK/6rzVybxbaWxY05uW3rZpG3BmOPD1F69Nx54wMx1waE/a9ExfuuyL qweArbgWnDQzzTt4cASXrYIQD+y6VUNXcI60a8+xQBUQWqTeF7cmC2gFlU3rsWWb8wrJ5rdueX5r uvKLq4cA7TJyjjSHO99/x7Npt1mT0ye+NCdtea4v3Xb9hrwXbvGd6y5bk17YPCsdOX967gSwj+9l p65ua4ujYrzby/Xdd9+d6yd7QR2ONVOK+WMven722Wfn+kg3GJ2ijnP4eE/bDpvoVKef6EXYDk5j f+j8Eo4+YLPRFXQbB1B4dotpjtX1n82ZM6ftlZkYZIxUaN8B2fPQuqa8KUbAzyEcYKohISj/hQkj VxgUzwLgSiPAr3sE6h3GtLCdUPCMpwCqPmQxbca7fFHq7gOt8gXI4j/C4su1OPGHN8/lSx78Z7R6 z/uM/8h7O3nQKwNw6DXthMZbPJ3kpXp3dCWgk4dCjA4sPf+GKNvgW11Q7nXi6DxiaBnqEj1/UT9G l+PxlZoGhPFMVvQB2eiw00lA7/BuAIGGBJIfQxwBwcJqmEabLCKhIas1lEebjyq98SeBiVY2dJLY 0/U3v/lNFiYDj3Gmo1E7rqNNHdThrbPJMx2cttDQaUe/TWRiqLJHLKLJiDWkkb5h67BVoqONPjeC hC537T1gl16qqJJAJYGJKQF2GUccm0PHvfpMv8EnOtx1rButCDTDQIGTYKVu4K+Rllopz20jJhio UDvjTENBUATjv7OhxYQA4PkPODKEPQfsAlzqJQUOPQMINRpFAEuowohLHAEgG/FV9r409FJQ1uLE FwDukDfP8YV3DZvneJFnz/EkrHflPcAugO+IAiE/nkuHLISXD88rqiQwUSXAMwugqft6/WN+lnrs njqirDOEACJKFGhjJDGqdnTSA4o0JDoK6BIypDsYmMCrYZF0jmGMPN5kztDUyUYPVVRJoJJAexLQ YaRd1xYDtOqXNt2ICm0/4KvdprPUS223eqn+Ab7q7UQmI8kAd+Be5xpbyBQtekWnm1FvDGDPyYp8 zE92HSB3Iue/4r2SwI4sAfWdrosRYTq02Br0mq0c6Qb1Hf6hD+kFZzgIpvH+eKaOwK1MOwgECKT8 ESONUtRoBDF0kXAE5CAggJWQPBfePWEYv/4H6BSO0ewQf3hAI/52zj6SQ9oO8fovTxo096TjPoMc afzcB1SBUzwKj/T8yjceY2iP+MinCPAjf/LaLmmEpNUpjbd4Os1P9f7oSQCAVf6VZ55E9cI8WnVb nXDP0DWeAcaT8q5emN5guP+ODnAZi2QIqGpI/CcnnYI6ysiQ7gFyyZl+iY6xakrD6JXzKqXtUwIA HKBm9In6xmsRU4eis1od1KGkTVdHteXqIOCrTk5kYpPQ0WwUtgwZsAfcp6sZvvQPveRaWLKI+xM5 7xXvlQR2dAmw1dRpOg5wddBt7DI2nY4/epB+ZJfQC87Cs/FgofFMHYFbxiwQCJwSBkVIAICoZ5Rl EAVaPAjRO94NA9l7lKp3Cc/Zc3G69jzCdKNhCXApLQdyLw5pSd8zeYvnPq4DhbHpDGziE2kM/QeC I35nfEfYHLDNHwUPb53SeIun0/xU74+eBBhEyiCgBXipE+qJeh+dOv6rE4xCxqS65d54V4yjIUXy owvIjYwcdIaDDMmJx5uetDq8sIYKes+90F+jwWuk0Wif5HhenXdcCUy0ssGuYNDRYUZLqGuhy9Q1 OkwdM6pCfWPrOBiF2wPJCxnIu2v2Dh0NzEYHGxkwdtkzZMIYppvC/tke5FDloZLAjigBo1F4a9V9 NoWOdh14Ots5H+g5nlvTFeAWeoKOgGMAXp1c45lKbQXUKAMyyAAL8Mkok3GKkAJk0DLYKMggCpKg hPHc4b3oOSBkAvRcw0KJ+s8YZkBrfCLNiLPdM940Ws6RZqSlB9fHlDc8COfAF/7xIy/C4EkefWwF Qxx4lbfIK7n4L5w4hamoksBISMDQueKS8CORhjjVW/XBoS7oyFHv1VtKk6LEC4NJjx99wWvrv3pe pNHiuZjmWF/zFJEbOdI3dEQcdBJ9EXJx30qmdIfVvRncFVUSqCTQvgS02ww6hhzdZM4Z3RX6TJ1j lzD+PDPXXb10z3sTndgoAV7li1eWp4bNwtahw+kfw7DJip5i7LoWZnshWwFN2318e6HGu6zLyLBM mPGez+2JP9hFR1bgM/rOf/WeHlTvPQNy2WvsEVjIKNaJ0LnVEbgF5BhnevYMP3RmfAGfiIIE4kIZ MnD9pxgDGPuvMSFMgqRkUcRDqHoRDc1zL4YDR++hNIqAGD8+goMyFqf3kLj9d/iQwkrfgdxD+BO/ +96RRpC8FfPnIzuAXYXCM++JWzzBi2tHvC+/FU1sCSjzlIHvrYwwgnx3oC7mm/vOgIvypMx77rpY protBYsAOPSyD0fKLF5CWZljpY7iUV1wMOLUL3Gpp+oO4044/9Vt5Do6g4SRb//dl1flPuqV/66L VJbn4jt4oHMYadJR381jJXtGmmfuIfqDgeodvMjjWFMMCfIN8E+PkDXe6Sz3yNJ/YFbHAHlbqV4e K6okUEmgfQmoWwFcY72A0ONipcPUQzqerlcPXdOXdNtEJ/mhH9lU7BRTRuhSulnendl42i26iKxc e28k26/RlutFNx2ULr3pgJb2tx1tHsd7emVkWCbMeM/n9sSftVDUafYcuwOxj8KuZSfp8LLeBxul iPcmQufeIGob5qtReLGPZTGYzX0pf4LRq2nxE4qfUemeFQUJkCEJJIYXAhhgnFGYwhMahamxYfB5 5uy/Z5SsdBh/7olb4+Lw3zPKNgxy4bxjPo2DQYgHBiLjl+Km1PERZK6JRSV4lSwWUY9GM0y99Kt7 oysB2/6ccsop2QuqXNgWpri34f7775/LuLIFeDgb4qZsWWBJuVM29YApz8qdMshAUl79R549+OCD +dq92Fu1mNsyYSK88quuRfxxv/aMV3VJ/aasLCwgHfWANwOP7qtPYQiJUz1rxbiz/cU555yTFyqw KueFF16YVwQu8lOW5+I7DC18UsbkT5/oZfSfwo7FmVzTExQ3/ilt+dQJUVElgUoClQQqCUwcCRwz f/dka5paWvK19Wnp7f3b1e0yZef0f39ySA7S17c1nXD4Q7XBB/7bUmZqjylyQztcBwI0uZj/yVnp uEXb7st61bmr0/Kl/dsONYmi648PPWa3dNK5c9KJ73g42fKoHZKvQ4+dnk49dnnT18vIsEyYpglt hwHYR7bmqaUzzjgj2zK198v+ZwPaI94WPbGNYfFdW/2EQ8aUDOHxwkZjp7Kn2IdhU7H7XLNndYaN dyoFbiMTEDyDOIiRziNCQDKrB5BByYD0n3EvPAOf4e8/L5bhu4xlgBcQ9n7smyROQvbMO+EiBxgI 1z2HOMXB8HbNYPUhGLHeFZanxjl6GcWBL/x5J8i7vFbD0WiGGY6P7f3Z8ccfnzeK73SLo07lZC8+ e83aGsF+rjpu7CGr7NjLESmzlIAKD/w6dKaYH2n4lnJuC4nwjKorgCRQFuBXPOpI7PN63HHH1WW9 TJh4UVxlSF1Rh6KuUnCu1XNgM0C2TiB5tSeiOdrqDjlEvWqWFrkByZaWl7/Y7qb4Xlmei+/wPAPi OtbI1BY6znhX9wFevNM7dANAS7/4ZoCt9yqqJFBJoJJAJYGJJQH9wpecunII05s2DtqmL/X9KV14 8sp08JE9Q/a7HfLCy38uPvXxerdL33vgrk1p9YotA+EnT90p79FaMJUHnm2vF2VkWCbM9iqfMvmy NzUbMYjNNZLE3uM8ZOuyjWApNiubyTXsBZvx2jo8g6c8Fx7eG8/UEriVmaI7msHov8wyNBnGhMKY d81wZkTG8EDeHh5Vc818OPcJ0DsMbf9DaIx/xjOvC7ALFATgFYeDhzeEDXzGRwFiGbEOhjqDHD/i Fk48eiVcI4CEse5oRKMZphEPO8J9lajYgTJWebY5NT7OOuusXNZsiL18+fL08MMPD7Ck7CufOmyc 1QEL/qgnOmAM6VDOix0yAGJ0vEQ+leUVK1bkXrOByGsuyoSpeaXpX7zwZqofrvfYY49cT/B8zDHH 5I4qvAOKAKKRC0Y+qF/qknrejNRbHUennnpq7ii4/fbbm71S+rkextALNiInd1tUAK3qMjn7Ruq+ fDqEpzd0OlDsFVUSqCRQSaCSwMSTwJrHh1nQ5k8peT5zr5HfLu35515KjqC5B++aLzdtGN/Gf/Bb nceHBIBNuGe0iJ0EM7FD2URsJiPh9t5772wbwWSes5P23XffPAoXwIXLYLbxTi2B29rMAIcALqMe cHWNZJwxTjAE5FmAX8ayZ8IQqjBh/AO3wvKsMFyBUAa3xXHE7R1hAyxbjl/PQniSGN4OfEWvA3At PvFGOtLHFxKWh0fBcq5HoxmmXvrb+725c+dmby3go4IpF775sccemzsezj333JZEoKx985vfzD1S vIbhaW0lEgAOL8pKUG08etqUP2XMdjdA7lVXXZU9vcqt/QEpggsuuCB94AMfyNe//vWv8zCRlStX NixvkV4758cfH+yFfstb3pJ73Irx3HLLLbnDBxA85JBDcm+c6QXu64zifdbxs2DBgjxvF9AFfCk1 4TxXx9TFZp5b9UanEPJNfRdUK9dmPOtY4EHn+UWAtWHcf//3f59+9atfZd7U3RNPPDG94x3vyIqa kj7vvPPy91Hv6Qh1/uijj05vfvOb8zQL3873EndFlQQqCVQSqCSwY0ngluWHD2T4Y29blgrN/cD9 Vi+OXTAzrV21JT337CDgnTJl57TwtNlp3qE9aWvf1rRy+ZZ081Xr00svDtoXe86dks6/7oB02emr 0zELZqTZcyenDWt607UXrh0Cng05nv/JmYmHeP2q3rTksrVD0rpu6aFp8uR+0/7//qx/aLY8nPfJ x9K6VYMLoe21365pwSmz04xZk9LmZ/vSrdduSI8vbzyMetdpu6Rv3XlQuvaCtemhe58bEEsZGZYJ MxBhddGWBNhbixYtSgcddFD2ANdzJLCdFi5cmBelNH3LEOMf/OAHGf9wIrKjPPcu2wrWYjd96lOf SmzWf/7nf852H7vwjW98Y7YTvcMuvO2221LRlmsrE118qaUFpWqNWUYj0BkeW8YxI5LHxDOA0jPE YHYArOE54dkibMIDcotg2PBC7xOudL3LGPW+j2CjYQY2Q9lHFQ9exCF9niYfQByGLnK9i4tRzzso LPJhxMF71YhGM0wjHrbn++TvAEQBWfK+884702GHHZYrTat5V7kNqeW5/8QnPtHq6zk8L63358+f 3/B95RiP5pYDuir2hz70oTzs1rBkPHz6059Of/M3f5OVBZAG7AG7RxxxRMN4O3lgeK9h1MMRr6w6 demll2ZgCPCpt+qsIcOf/exn8xwQ3wKg/PGPf5zrGu+ouqN+6TxqRt/61rcyaBbOfOVf/OIX+Xj/ +98/5NVmPPsWhqmr5wi/ygsAayhyeJp526URm5Kbs6LTQQeFb/XWt741Gfau48LcaQszGXpON1RU SaCSQCWBSgITRwKagzja5drQ5rtv3tju69u8t9+h09I+B05Nt1+/YcizRWfPSbP3mZpuu25Duuum jRnkLjpz23nDXgKCly/dlC45eWXaadJOacFJg+HmHrhr+sS5c9LK5ZvTrYs3pJ7pk9Jpl+4zJK0r v7h6IE+Asjw6Nm4YHLY9bbdd0plX7JO2bOpL11+8Pq1f25tO+9o+afc9Gy9COf8TM9OWzX3psQcG h85KuIwMy4QZkokd8I/Rf53Qe97znuywYGcuW7YsA8/a+IBfeAgQBVbtvMCJBDcZ2QZHsQGFcY9d CDcZ6cbug9XYTxweZ555Zra92L6cg6eddtqo7NJRm6dG/1vy3MaiUoxJw315cALEAp+ALG9qgFrG MK+WZ4ighGEYe4/QGMvuA67AMfDpPgEb9gjIMmrDgwaU8gC599RTT+W4ecyABukSPADsQygs0ok0 8e0DSsdHEof3fJhGNJphGvGwvd8HUE4//fRcsX74wx/meZNXXnlluummm9rKuu8J/ABwymk7BFBR El/60pfy65RBLcUKvD/96U/zcGVDkn/0ox9lgAt4KZ96vHg9TexXLt/3vvdlwFicW1Ebbyf/DW8O b2mjeEwL0JFguIlOoK9//etZeQF76p9OJ4Cdp1odxLfhvo8++mjOCy9s1J9Gabh/ySWX5HosLYA+ voX0i9SMZ8qTAqaYfYeTTz453XrrrRnIqp/y8MEPfjDXbYBd/nnOv/vd76Z//Md/zB0k5kUDuHQF oM1jS8fIozm6FVUSqCRQSaCSwMSQgA0sbnxw0Otqfu2ww5QbZGvVihfS1J7+FfUbBCl/e+eUFpw0 MwNP8Rbp+kvWpkmTdkovPN/vzTUBbsHJ9dd5Wf3Y5rTsrn5ny2VnrEwv9g56d488bkZa//iWdMPX +tusjRt60znXzEt77jUlrVvT75UlB6AXrV25pe6CUnMOmJr5ufaStdl7vHzpc2nFss3p2XWDnt0i /wcfOS0dduz0dNkXV28TXxkZlglTTG9HvLaoFLuVnbRkyZJhHW715HPwwQenxx57LDtS4rkReEVi S8FIbFL4DZ7iaGErwWq8ub/85S8z6OXUYOvFkGR2LlzFJjQqkH197bXXZgzHXnaM5rDqYr7qXZfy 3DJ4eUMcBE84gC6jkneL8ctYN5TY6siGAROcXgBhCYEQgU0HsBngFlD1jNAAXAAUMUZ5b4UXv0Nc DgXAhwCKeW+dxQE0e+6eD6B3QVrALHDsObAsTWFG0yNbJq16H2hHumdlYmUNEOJxbXevVuWQh+6L X/xiHprargx5LoEpALfegkfKvuGxesAAJR0nACJgq6MFIFSGgTl5cW1YB2Bopbqxohg6Yg6tOcQU mPqmjpmjCgCqv0BuDCV2HR5Q9V7+mpHvEIBW2YSJEAAAIABJREFUh4MV+xwUaytE4QKjygTwil9K FW8W79JBpm4bfUE36EzDP6KD5NO3UufpE9+KckbVkOQshuqnkkAlgUoCE0YClkcxzDaODevHfn7r ke/ZPU3ffXK69aptnSWGHwewJWQeUGB3yq79o5GKgl9VWJzqxRf+lNIgtk0zZk9OG9b2pl122Tkf Ma93+szWvH48tui4hTOz99t1oyHJu83aJX3iS3PS3bduTI8/1HjYcjEP1XV5CbCNrGjsMOpO5zwv aKvkvWJHPbu0lthKYX8Jb5oce9TBVmIjsWmtmgy3sQmPOuqofA24shPZt+4jC4RyMKB6KzLnB2P0 U8pzy6gNgeCTcQnchhHMqOdt5bmKocMWboH4EYMTyBQPQ9+KyoTz5JNPpne/+93Z/e2eOIBkQrSI DaALtBrb7V2CJUDGKYOVwc11Lm4Al0Hr43jH2Xhyh/HgwKXhhwxiH9KHcw8YaUQ+2miFacTDjnLf vFtDgE844YQ8vNcQU8MeLETUDqnkxYreThze4XUEuE866aRcZq655pqBqNQD5Vn55KWlOEzSt7Iy j6HyZnjHm970ppy3KNc6W3SyjDXhA+gGaNUHpHMIqL/vvvvSPffck3vy1C/zV9UVeaT4DLsO4Dsa +TAnWA+jod48t/hQPwFowNUBsJKx76LzjE5wXz7lT3n4zne+kz3AhmbrHb3jjjuybhmNPFRpVBKo JFBJoJJAdyRQnD/anRjbj8XWQ8d9cmZ6+N5N6dlntvV+ej5/0cw075Ce1LMbh09/WvUM8ACe9biZ NCWloxfMyEfx+U4tOp95Uu+7dWM6euGMdNCRPXmo9NK7nx0CpMWv3Tzton3y+a6btwXtRR6q6/Yk wJYpAkMYiO3LfixrwwbAhLWCitdxj83GzjYcGZ5C8JBra8RwyDgb1Wca1wMPPJDtPfNypcHRAPex Be+///48Rcw0QKMca9ekiTTH6lyvbjXlhbGPAM6Y4yrjYSADrgAmgMtTIjwD2bX7yD3veB8xqgne vRiizAMjDu/4UABreGcZrDH8NHoReHPxZPghL5m4xcfQdbjGAxDtgyJA2RGkNwNvvEDCjlaYSH9H Pavcf/d3fzdQye2FWq9yjoV8Fi9enJPlOTT0IjyfFIJDp4ryrQMoJumbE65TBRkGqzfM/E9AUoeL sjzWRKmSsfoDlOuRU7+++tWvZvBICaqTho3Ll84k4c1r1bk0mqRXMTz5wLXvQD+oy2Sq7utc+973 vpd5pzM0EjredFAJE1510yV0nvDIO3/mM5+pAO5ofswqrUoClQQqCWxHEuABnTQppduurT8N6iRz budOTjcv3pA2bexNc/abmhaeMjiXtiiKAj4p3h64tvXQQ3f12xZxU5yt0k2L16WHlm5KFsCyb/CB h/eky854fMiiWlOn7pQ2PbM1bdmlL/N7zQVrWk2mCt+iBOAaVOuJbTGausE5aThceIgBWE4lC4sG RgvsxcY1upCDkV0I8AK1bEa2LrvKtEEj30wZswgVxwPvMww2HqgtcBuMB4gFFA0rBiYZnM6MYPdd M+SF5UlBnhGm4Y1AKoFGHOIBRN2L4cbCEyqBEqz7jFVDHoVlyAKuYawLj48A28EDoXvXf0et2x7I xRejGLkerTA5wR38p9h7NdwCX2XEBAjx2hXjLPNeozAAriEYFjYKcMtrC3Qpdyo+ZRRASllT/nTO GIUAjMmT4fLCK5/4G0sCVsOr6YxP4BZwVc+Ac/ky/xav6oX8ypcFBkxBGC3Sk6lex/BkCyboVABu KV+6gQ74/ve/nzscbD8EmJM3T64wALx7N954Y1bWeh59V4uCjbdex9GSa5VOJYFKApUEKgm0LwEr IR8xf3q66+aN6QXDiGuI1/aAw3vSkivWJ3NbUcyJrQna9G/fiyn1btma1qwafmpPM4AcCT2z5sW0 +NxVab+Dp+UFpuYdMi2tWDY49Livb2u66ry1acbMSensxfPSQ0s3p1XDrKgc8Vbn9iUQuAX+KEsB KOPdeu+xfXhsAdtwDrCT2HuewWNwF/vUzhjnnHNOdjqy+wButiB7CnZia8FSRs6xoYxWNJRa/NZQ GQ9Uas4tA90RFEY5gQKlMgpgmofHOGYAh2HJiCcEZ4IDRhmkAQYIivEJ1Dp4cD2THqGL13vO3g3g K11pCRseNN5aPEgLkBA376shoHjCh7ikh3cAuXjIHwM6CspohgnZVufOJQDYWphKz1I7w5qVZ0Nz 9WoFKc8Uh7IT5B7ApBzq4VJelS/lz3/x/OxnP8s9ZeZ/m6ivfFo8C5Aca1L2eWQptSeeeCLXEXXm hhtuyPVQr5zhwDoIyDO80eTL+zxapEdQ76Bvgjf8ULw85YC372KeP4+uYTUUMKVL/kAvIK4X8tBD D83TIPynwB955JFc38fDEPHRkmWVTiWBSgKVBCoJdE8CBx0xPbdB9982dKHESCGGIPduGbQdYque CFP2vHF9b5q9z9D5tQcevu0Up97e/uGpk17eEmjXaTsPzK2VFjDrCFr92PMJIK5dXEs85gobxmzI 9aLTZg+JJ96vzu1LgJ1ZtDVjJGmM/Csbs/Axus07PLRFCuAboBmGgnHYq+xA1w4jX9lTRsKJA7AV ljOB/SseYLbIs/WYUGDDYrpjdV3Kc8sjhWmeKsQ7Bc0bCghsxpBiRjIQKvMObm/PGfSAJcH4D4y6 JwxjmkB5dgnQfcLlOXL4EAzUEBqj1H8GqXm/3omPBFCIPzy9eJUWgMvQlQYvsjTxLN2Ktj8JUA7K FuJpjWHFZXOqXChv5tdaldc8TnM0lRlbyATppAFoY1jr/vvvn0cTmI9KOYjDfmGAmNWf9ZYBX+aG mtMKgCFzK4RVrxAwhwyjBUBRmTDApw4eZ6QXTV0oxpMfvPzDWxsroKvjvJvqkt48ddU2RgDk2972 tnzwXMub+tStYdVleNYjyFMbPYKGvvDQvvOd78yrU+P5X//1X/Mc/4suuih7lH0X/ALF5OzbAbXy pHyQ/8c+9rEsn2pRqWKpqK4rCVQSqCQw/iVgn9YibdrYN7Boky1tAMjdZvQvaBphLTwVe8vuPmtK 3it291kvTz+bt2sGeADki4X9Z4tp1LvebdaktGVLX17sqfg8+LEo1IZ1vemY+TPS5k19qWf65DS/ wUrJxffrXS+9fWP2oJ58wV5pzYotab+De/K2Qhfaw/bl1ZK9t2HtlgSY2m7o8Yc2531z16/uTddd 3D+s2BBkc21vXzI5bX6uLx16TE9uC1c/MnSbnyIPt12/IV3+/YPSIUfvNrCacxkZlglTTGdHu9bp zlYzb5W9xmax6nGroxfZl941spD9ZlpZkdiSMJypWPCbNZHYoxx/DtgqRtmyBU3fYpdyArB1gVzg GY9sVTYx+1Zc8uB+gNxiumN1XQrcmnPHuJYhoEFmYkgwwxKgJBQ9ADGsWEYJiMAAVmdgNzywgCvj mvEMJHsX6HQfCEXi9Y64xQd08Iz56PgAgj1zD+B1+I8HYFq8Ppr4vO+DA8B4wUdF26cEVEbePT1L AQ5bzelZZ52VF5GiLFRwAMlCRgFIxaccKnM6dWw9Y7SBLX9sfs0zq4wJb3sgIPvEE0/Mw2F5H4u9 csCbZdyDzNFFxTnIZcKYE0zhBMXiV/im+GpJvtRNz4A/sjIv2N62V199dR6Sz0NraD7QjP8bb7wx LwRX7CGsjbeV/814JlMe2eLevRZZoKQ1CHinO37yk5/khb0sgkBPAbeGMv/85z/Pc4XVfStVA/EW saP4LWhHNjovKqokUEmgkkAlgYkhAX3XtsAp0pKvrU9Lb+/X5bbkmXdwz8DjCGt15XWr+p0axy6c kQ45ZvpAGMNu0SWnr25p6K1Vj3t6Jm3LzxXr09Lb+vm56rzVybxbaWxY05uW3rYp2Te2VeJBvf7i tenYE2amAw7tSZue6cvb8xSBrTgB6qvOXZ0WnTYn77u7evmWdGthPvB1l61JL2yelY6cPz13Amxc 15suO3V1eu7Z/q2K6vH1/HMvpfWrtuS5ubFVURkZlglTL70d5Z7teWzZEw4UwNZil63S3XffnZ1+ 5tXCOcCy7ROLZFqX57YdYqeynWA54BW+CvwGR3EGsLU8Z+/BevAUjy4eYSpAmbMD8OV0aBWQF3nr 9vWfzZkz5/+1GymACYACpc7+A5KuwysKwDL+CRsxkgk0gCmgTEgBQBnZhBXxBrAlWNdAq3R8DIe0 Ga4O8fg4njs7fAzvxLMAt4YzuzdRiXHOMAeaOqHxFk8neSm+G0OCgaIAi8Xn3bimlFR8QBBIVAb1 XBmu/OY3vzl3rihvAC6wpZcMgLT8OsWhI2csSd1RF41uUEd0YvE+2x7INkqUpec6mOxZa1U8nk+K DAg2lGUsCTi3yrq6TPaAK/1Bp1DAZKwTIUA8XeQ70U1Ae7cA+ljKoEq7kkAlgUoClQQqCVQSqCTQ igTYfOw7a69wRLKL4CWOGXbU+eefn7797W/nFZONlGVXwXLsPu8Wp6q2ku5ohS3luW3ETABQINFB OIAlo9k1o9I1Y5+31D0AlcFPqO77D6QSKuNTPAFWhSFAcbrvHODYcGVz6wAEBy8ZwxWgFVa8DsSz i48YniyMNL1f0fYpAdvGKC/2qR0pEj/Qqhwps0YhBKi1uhwF4PlrX/vaXC5jqXWeReWY13csCf/4 Vo/VCSAX+Lb8u61/dCgB5OrKhz/84bwtEsVm/rDhyWOt3CxoBdjKh84y3noyB8LxTr6GXQO4dIC5 0fJHcb/hDW/InQ9jKf8q7UoClQQqCVQSqCRQSaCSwGhLAOZi/xnhyjYypxZ2QmxBGMuULbhJOGfY jU3rnfFOHYFbBiSjmHHpjOJ/AFfGJkFEGADWMwdBEhiKSc7h+QVWHd4P4o3zPmKgFkm4Ylh8AL1A bYR1jWe8ACTSinuRrjiE8R9PzsI7EJ4dwrnnLA7hpOfsv/vCAQbuuwbw3QcmkPy0SwpY5KvdOLw3 3uLpJC/xLrnyagO2AOdIkW8NQEU5oCBiuLGOFhTl2jUwqC4o+2MNbPGjnOIzeIw6y2tr6IpDB5Vh u8Cu+RXqJEU31sAW/+qWuqTTzKHTAMXQGPUjrn0rANdZ2PGgnMmRzJVX13Sb/ChHekiVXXlQvugr 34K+5JWWB43TWBK+yBT5Fsh/+lO5isZQJ6VyQye7dhY+3s0vVj+VBCoJVBKoJFBJoJLAqEhA+xvt NnuCgwBZL+ajH/1otvtgF5gliL3CTtGej3fqCNwyxGTcwWBhODJsAsgxboRxMIQC9Ak7HsgHxRP+ 8OSMd/eQjx35ExbJow/sHO9GeHkPivgYc94Vt+dhrHreiXHHaGcQd0rjLZ5O8+N98jZXdqTJnNjt kXg3zbt1VDRyEtBBoKwaYUI/0jd0icYD+DYUiJ7RYUJ/6BxDMQx75DgrHzO+6czodKQv8SxPhuMD 7hpQOhPJhzD0YkWVBCoJVBKoJFBJoJLA+JLAFVdcMb4YaoObjsAtQywOwC0OBoz7DJgYGhy8hXHD IBoPxBDDNyMtPK94Y3QGsI1zLb/CAKnel68Axu45gHv5B0LJwz1hQk7+VzTxJQCE6LSoFiaa+N9y pHIQ+8BZWVvnAYpeUboBAYJ6RN2nOxBd4Z4RFrz95r3w7I4HcIgfHlr8hM6jT+lFOs/cHXmRP6MD gPPQtQGCcyYnyM/xxx+fV9q+8MILcx4nCNvbNZuV7t2uP2+VuUoClQQqCbQlgY7ALQMljJUAd0Ci nnrD6mK4o2cOho/nrr3nPNaEB8aXI3jiUWW4yQejDd8MTyTPACrQ6h35iTxFvrwjvEM48fJcAECR hri64Xkda/lV6ae8LY1ve9RRRw0Al0oulQRCAoCtlauXLl06pM5bmIteCK8mfUm/0Cehb6wKTQ/R Iw5gEcAFFN0fa6Lz6LHQZeoBokM9A8zpSf/pRUDYPQDY/YlE5nQbqq/jwWrq8lDR2ErAlmCV7h3b b1ClXkmgkkAlgfEmgdLglucgtgIyqZhhxhhjiDFaGF4ae0aZ4XUWzLHgizC8DBGOAAIUM35qyVC9 2Huz+MzS0zEsL+6bc2aTYcaGdKxcG16RMvEAI3jAH97xiKwOa/WwGGoHkDoQoCu/yLuu45nruOc5 gy4MUl4Mcon3yempp57aJk854upnzCWgbD344IOZD50ZsfdsPcYsl86DINxoEf5sf2P4yEgsmmVZ +osvvjjvyVtb7+rlcaT5qZfmSNxr5buXSV+58I0A23PPPXfIK4Aewxy4pRfooACKdAd9C8gCsbEy NT1i4Qf6tcx3GZJgiT+tfHf8AagBypV/OhAAlyc6jk6VN7ovALuOQ/OJdYCOFrWSr0Y8AbcnnHBC uummm5ItrGKrrUbhO7l/yy235P2pL7jgghyN9veee+5Jp556al7ko5O4m70baRW3EOt2vWjGQ9nn o6F7x2vey8pouHDdqBe18dcrP7Vh6v1X5o2OaEb8DDc+OHSXiLtv3phuuWZds1dH5Pknv7RXOuzY 6XmP3M2b+9LyezelO5Y8k6q+rxER93YXqa0Obc1TS2ecccZAu1/7rMx/toetKW3Ro+3a0agUuKWs gEheBMaXLTfmzJmTnnjiiWy4MHAC1DHWGG2MGQYM4MgIcwYCGUDCM3gCTNYTOqAa3gDP6xlyeBCf sHgCcgPcRpzDxQMw4wPYxj9jyzA7BiVwKw/ix7szwjPjzdk74cn1LIBuhBeXe4w678h/yMF9/Ntw uaJBCWjcGI6dbnHUaTzK3ic/+cm8j9dxxx03yGCdK+FGm2JO8X333TfaSddNb7zxU5fJEjdb+e4l okv2Jwb+bKVUSwCqubXm1NKJjGi605leefrpp7NOoqM8p4/oDbqQnhtOf9amNRL/zanFD/ANdLsG yot6WxsAtNN/DkQPjiaw7WbegSmdFRZdu/fee4fse93NdMZbXN2uF93K32jo3vGa927JcKLFAzRe ePLKdOgx09NBR/aky05fnYDKsaSNz/ammy9bn2bPnZrs67rbjMlp8bk7HqAYy28w0dO2tSTsEcSJ WFH7EigFbkUP2DJmEGNt3rx5GQhS/AAbivlXwByPJQPN2XOGj+FowgRAHG4rHmnUAtWcyMs/0gCk 7SvKgIpVUYthXA8XD6OSwYU359gPE0jmecA3wzJAqvgYmQF4vcNwC++scHGPXOSXDLyDDx4LB+NO WnvvvXdOpx5wr83HjvKfLMiuU+o0Ht91xYoVSa/aeCT7EzOuh6sjo8n3eOOn3bx387vrFOQZAYTq 1XFztOka+/HSCcIYLUJn0ElWLXz3u9+d7r///vzMPYD3Va96VdZLY/3t7Y+HR3zgDdHF9LutBEIv ArKAuf8abzrSu9qUiUhGSug8W7hwYQrP6kTMRys8d7NetJLueAi7I+d9LOUfHf+mddTSmsdfSLPn WpegJ7kea+rrTWnVihfysenZvnTKBXPSvbdNSetW9a+vMNb8VemPfwkYDVut29K971QK3NYCx/Bi Am8MMiAQ2ATu9OLzaAaIY/QwdgBRgI5XgkEnLK+FD6rxaJXE1ynhFW/AJwowDogy0gxtxi+vRHga AHLDAp0DvDJMeVyEcyYfHgwFVd7iv2uGIOAcxqD0d3SaO3du9tbaaoasgNvdd989r3jMI187nLOR vLoVT6P4692PBtizt7zlLXVBjCHNPHizZs3KZeKqq64aMrTQMEcdLfJ95JFH5mt5bjSURHwzZ85M X/rSl4awZFiXkQrKL08qIMH4LvLoBYDL8EaeQwCeV7GoVGNvM2F/8YtfDKRhdeh6PDXip1lajJYb brghvfe97x2SvuHQeOOVKRNmgMESF83yXiKK0kF8S9/i4YcfrvsOHfahD30okSvwZxj8D37wg/y9 6E/3DSl63/vel3WOYUZ05he+8IWsZ5y7KZ8y350+PPPMM/PICvryjjvuSHfeeWf6/e9/n3mjC3V8 vuMd70gf+MAHsn4F8nUSyt/VV1+dfv7zn2f9SVc2oj333DMpz7feemsuy3q1DzvssFyHDJflQQ1q 9k1bzRcdtGzZsnTllVc27DzSsQTcqju17Rf9/s1vfjPJg7JsSPpIUPFbNOK5jE7QdhsWR470UCfD rZt9i7JyaKYzxVPUa/V0b9m8m0eNb21NEK9Jq6OHupH3et/CqvXFIeLytXbt2oGOlRgGXDtkXYej YfTsrtDzRVuuTL0gj2b5qsdzyLGTM93mGztct0JTpuycFp42O807tCdt7duaVi7fkm6+an166cVB W/OCGw5MG9f3pr6+remwY6anzc/3pSWXre8YLC9/4Lm0qHd2mndwzwC4jbSuu3hNzsa0abukb955 UPY6P778+XwvwgzHT5kwrcipCrv9SEA9XLRoUTrooIOy7ceeriVthnZLG63NWLlyZbr55psH7NZG Q5nZkTqjr7vuuoEoOX4WLFiQp09pN3T6FnXyQMAxumhrud5oBBhgeugZaYwXBrdeeYYyw4ewgTxn gFejz2gFDAnDteHO9Wg40AfE+DjI/NxDDz00H5R8LQ0XD6CJN0OQ8bLHHntksG3OLWOToWZemfzJ K1CrcFC0ADEvi8PzN73pTfkeUCwsXngnAGQknMLEoCM/z4GZsfa+1MprLP6Ti4MhCNSROYOZMauc lKVuxVM2PeEAMMqhEfnOixcvzvmgIBglhjUyfIvEkAKExGeEhHeUtXrEaAEy16zpbyiLYRgiyjxD hyEjLWU8iNFIzgwbRpNOBGkVybtLlizJt1zjyaEjqh414qdZWr5XI4pnca4Xbrhn9cI346feO53c o5so+3peW/HyyjKsH3jggfSNb3wjz+t+//vfP1A2eEXpD52BviG96hrFeTgZDPesXr7KfPdzzjkn 679rr702N3Qf+chHksP6Cq997WuznqcLTz/99PRP//RPeX6queHaAZ06jzzySNp3331Ljc5QjtUJ QBKg1ngq88VpAmW+aav5AqTVx3rzoEJuy5cvz9+ArqolxgW+gApTLNol+ddmOuq1Y8VvMRzPzXQC g0hnGD3GIDLSoB0q8y3KxFtWZzbTvdIqk3fGnrKlsxAIBGzLdqhGfrqVd+WlG9+CTSQ/ymm0N5de emmwm89l6kWZfHWr/Axh7uU/AWpbNZoXnT0nzd5narrtug3prps2ZpC76MxtbU3DmvkX8tDmTX3p tIv3SYXmsh5Lze/9KaVNz/amaTNad8CU4adMmOZMViHGmwSiTW+Xr/e85z3pkEMOSXfddVfunAU8 a0ldhbnoO+HgKPeCrO3Bbqht12CWYscYEKxNpiu1PWxDDhz25Hihlt2GDG4Zh+IBM4abnmsNEsAH GAKyjLIYlgb4AnKMNcCPkcZzKXytEEMwsagU4fFGFQ1E/xUEc1bDU+U9adTScPHgy4fkweWFlR95 cd8ZQGe04dn/ordVGP+9C9xKW8EQjic7gC+jTj4Zp3gGmnl4nQGMilI2WBnDytYPf/jD3NHAa8Kj 2QoxfLsRTytpMoais6feewcccEAuH+edd14uXwx1npyi58l76lPsKwsEkAMjudbrQ6kwvBsNhxQP 8IooHZ5R9SQ8rhQeniMMpaQ3TodRhGFIRJ7qLeRWzOdw/DRLC3BB6k+R/I9ncR4uTPHd4a6b8TPc u+08I0P6qREdfPDB6Y9//GP6h3/4hzyShZ7h8dPoADT0C30C2OhYo1ND79ApqJvyKfPdbYPjW9B1 dBo+lG3eJGsw6Lz7+Mc/noBfoFbHocZUmZUPnYh6i5VJXujhiG5WNnnAyUpd0Hh6N6jMN201XxH3 KaecEpfbnGNulG8c03UikDqFd/kd7vtH+EZnIMfRiIrfIsLU47mZTgAAearDY4t3hkurVOZblImz rM5spnul1SzvjDt5pyeRsmnhrqhXZfgVplt5V9a78S10ANHn0U7oJNaJydsSnaJl6kWZfHWr/BRl jbdaci/Abu2z2v/XX7I2TZq0U3rh+f69wXWjLjh5Zm2w7K294Wv9o0C2Lknp/Ot60szZU9K6NZ0N J97al9KkNkbl8R4346dMmG0yWt0Y9xLQmUr3ajM4F4pgsgzz2kj2WtFjq/4WiU2o/eaEQ9KrDWOq p04ttiqiM7zjfpA2WPumnYfNdKI5iiMAI+xYnVvy3DJmZIri16ADhK4BPI08QMdYY6QF6AVwHQCf gzAZbjy+ACEBiTdIfITo8JEJNQBqhBF3AFlnoDSAaYQpE490GY+veMUrBgw28bkP2CJp4R/PjEt5 9Vze3Te8GiiTL/kmA7wwRgFbBqo8ei5uB8CuEBSNtOB7Rz4zzHw3DbIe7HZ7gboVTze+RRjB8hPl vF6nRgBLaapbyolhzLXEaPHMPMx6VDQKwuvNgxTEY6xeKc+O8MYaddEODcdPs7TUA6SOF8n/eBbn 4cIU3x3uuhk/w73bzjP1XnluREAfHaKDQMfXT3/60/zfPSNgvEtn0jl0j0YmOtSiXJWRj3IX37ve uRF/9e7TbbFys47M3/72txnAxqq1+OWdtRK9cqwMH3HEEVmP0qV4wftwPNVLl54OItegbn3TYr7E LY/KHLnXo0ZyF1a+zcnlAQX82yUgx9B0By9bLZXluZlO0MFcNFwYKe1Qt75FlO1mOrMMj83yTv/p 2FNOteOAGgoeyqQhTLfyXvst6rUVZXjCD6AexOhFrer5Mvmq5bnd8hO8duNs+HEAW/Ft2dyXwe6U XQdtTffXrxzUz8KgyVOHtkf55ij9lOGnTJhRYrdKpgsSoINMP3IYPQNL8YK2St4rOk2K9T/i0gYH sHVPO6Y9pfuC1F+2SbR9QDNbUrsWFO0f+y/s2qING+HG8jxoJZTgItB6NISMLkaH3niC4JkF9mJ+ qnN4QRll/vPw+ggO92pJfEXhM+SBW8LXmJelMvHgDYjFvw/EWPOe4cg8Es6MTsYnfhUC7zjzTgOv PLAMxnjGIHLNOA0jFbBl9OFfvPLnv2HSMxP9AAAgAElEQVS34g5jsWzetsdwDIyYI8Qg0YPNe1DP qBsu/92KZ7g0WnlGUZg3aOibPPEQmKeonA1Hyn0toBOeMuHZo6TaIeVZT11tb129tMrEPxw/zdJS D+RTOMPoGLMMef95XFCZMGX4FKYZP2XjKRtO3oodC7Xv0Sk6yYBaulSHGL3x+te/Pv3mN7/J/+kJ 38YQZl4LQwyN/IhVssvIhycsvHK1PGiQyLws0cOGUvte9GbkT2el49FHH02f/exnc6eJDjzlVIff 17/+9Wxs0/9Anzi8X0ut8tOtb1rMV3E0EV1ej4L3Rp0XjIyioVEvjmb3GBBhMJBbLbXKc+37/mv3 5FEbFaTctkPd+hbt6sx2eOZ5MKrASBkk74zMVj0Q3ch7vW9R/C6t5I/OKH5H9VBc+GyFmuWrHs/F dFtJqxi26KGNDorivWLYete7TNk5zV80M807pCf17MYm6w9Vvza/HMNgFagX5ejfK8NPmTCjz3mV YgsSUDdDz3tNxxrbV8dS2TZEPURFfVG8DnZgFXa2ESvRhnlWbOd0hKnDRg7y3rIfakcQ4peD5eij j87h2KS1YSLNsToPW9eLTGlcGTKAbRjWzowxgolriB/go1wBQb0SQCDhEybwy4gDhAmwWU9iGA+U bCvgtsi760bx4BHoBjYijGv38WyYHQPUPYakvJID4NuMGKZAsLDicnYA1ECuwtcuqGiW9kR7HkZt VHJD7upVzmb56lY8zdJp5bnhxiq/uQ3mQQG5n/nMZ5oC3No0AAqAyHyJTsiwFfwUKcBk8V6z6zL8 NEuLEakOhPeE8vW/aFyWCdOM13jejJ8I140zmRaBUm2cdAx+/uVf/iXrRfnWQ0pHGLLrHCvK836K iy5SBorDXZvJh85uBGBbNUTPP//8/K2AbOCLvv/Yxz6WdWd4wXxLOl9511AC4/Q9XSo/yq/pHsLU Uqv8eL8b37SYL/kwLGu43nPfALVTb2rz3O7/VnluN51W3uvGt5Bet3RmM951zrEtLNjEqPQ9w75p 9m7t827lvTbesf4/lvlqB9iS10nm3M6dnG5evCFt2tib5uw3NS08Zds5tyMlW0OiN7fZSTRSPFXx TgwJaH+QNqYsuC2bM53K2mweYrYGh2WtowPWMfqKx5Y+pB/rLYpp2qCRJabOcN5oM3UMen88UGlw C4QSBoAXBLwxRhk5eucZZ8Au8AbEujZUl5EGEIanlzFGAMMZfpFGnNsBOvFu8VyMB594kgfj2/1n PAYY51UF1OWZS17jZ5Eo9/SaM8S8ozEUr2v58l/+AWHeW2dpkEO8456jokEJBLB1p9X5BoOxpCG9 YJ3EU4yz02vznHisAEJzn3jtiz1dtWWBQqk19PW4mWdWHB7SKl86cBxhNLT6fjF8M37KpAWk6fSi ZAFuZ/UuFLz0yoQJvvR20lUWaapVsmX4iXi6cSZjwxyNainqzYib3tRpKJxtwXxvnWHu05d0qm8N FPpPJrYBig7CiKeZfHQKFutWvNfqmc7j5dKA6dHFH/2uw0Ye6T+g3IJSzvJi1A0gy6uLB4tOqZOG M8tnp9SNb1qbLzw1a5vIQXvYSL8MVw47zbP32+G5XrpRR2r1T72wze5141sU02imM4th273mwcC3 uuXcLrDtRt7rfYt634WtUe9+UQZ0CXssiP3hndo2JZ43OjfLVz2eG8XV7H4tb9FGteKxlQav7QGH 96QlV6xPy5c+l5PtmT4oi2Z8dPqcE236rElp+QODe5am/M06jbl6f0eQQNRtda8slamHdAB9B9jG 1IGi97aYlikxOk91/rEvGo0uZZ+wZ9VRncHiZ6OOB9p2XHAdrhibBF7bSx1gluEG+PkYBMGIARAJ RE89gBfEAEJAZHzEeObMSHIEMepQKx9a+DLxKBAMRR4UfDrLE6MNf4wz/3ld5cF/8TI25QN4l0/G o7y4DywzPHgr8O6+AyD2rmvptJuvkEt1nhgSAGYdQXrEGCfqVJH0elE+yNxK5aQIYs0/Fk+nXls9 gbVz2HmSaymAR5RT/KoHQWX4KZMWo1Lc6hmlSA6ui7qmTBh8mTdnYSNeHyvJ1lIZfmrf6eS/YTu+ daNFgfSG6p3967/+62xc6/QDculS+od+sUjTG97whnwPoLTFDgPcFIqgsvKJ8MOdh/vuyiSKho6+ e93rXpd1oa2AlI9f//rXuZcX77y7tjbSmH7lK1/Jw5sYsMpUkf/h+Gn2rOw3bSVf0tS51IjUU50W taMfInyzchjhOjnXfgtxDcfzcGkpP8URVLX6Ybh3i8/KfoviO/Wuy+rMeu+2es+wZHKziJStqugg i+0VbZAycXYr775FUf6GBtaSslw0SovhIyx+GJpBhhYiq/UXabh6IVyZfHWr/BR1vrQZzK0CW++F z6B3y+Dw+smTR8+RcMjRu+X5vSsfGgS3vVu2pqk9gwB75j6N9Uvx+1TX278EjHRyBOngRzpPWyHh i+vU8NAWKdqMIpZia9Ujtqf6KI568/7VyyLPMVU17MV6cY72vVI1ngAYac5FYQB2vJGAH0BneK8h x0Dga17zmtxjr+EIoziG6QoL7NXrHWfsEVAoOmEYe632qJaJB0BlRCJ58fEZZfh0baVPhQUA5nnQ 4PGcyI8ee0A23iMXRrq8O7z3u9/9Lns2pOF9Z++SmXwpZPU8OqNdCKr0tpUAz4tyGGUU6EKMgxge z4hlZDgjxoR6UgzDw8MQtkqdMuNamFqFoZ7YqkGPmWEijA5AOEgPmnrAI9kJAcfmXzLgGHJhSFKM Re+ePCif5n7g1bBWPemx+mYZfsqkxXgyfFV6FKRhMxRr9ETKa5kwwjHQQ4EXFW/Iqww/Zb57xNfs rJyYb20uMS99rZePZ8oetoA4oKtsWIhJRxvPJj0CNJ544onpySefzEN8zWcVb3TG4aGsfJrx6/lw 352uwrMhSMoLWX30ox/NnXX0PX1pv1F1hq6zvRHAru4A5UYukAUwz+PbDSrzTVvNF/6Hm+tvwTrl zLetR83KYb13Wr1X+y2a8Txc/Mqmb6o3X52vl/cy9aLstxiOF8/K6MwyurdZOp7TYzpcdIgp0yFH ddLK+2g08+5b0IeGSfsWvkstaRd4SXRKCiNsLRlKzKNiSyN11n639DtdUaTh6rtwZb5pmfJTTLPR daPOotrw03bbJfHE7jajHyDutd+uKW1Nac2q/lGFL77wp7RhXW86Zv6MtHlTX+qZPjnNr7NScm28 nfyfNDmluQfummbPnZqOXTgj3X/7pvTsM4NrxKxasSUtOHV2OvDwaclo5fmfaG8Bx054rN4dnxJg g7Edlf/oDDedp9ZeaMY9/a0jnZ1GpxlZVyR2A1xFb7Al2a61Q5KL4dmHcFTRDo3n2nQdb/SMuOQB 7wFyI9xYnkuBWw25o7aH8Omnn84GDU+kQyb1agOvjDIGjGtC1dsv8wCgngkgTwPtnjDmZAF9wpmP CigDjP47GHrAqPfcFxbglZ74xVMMw6jCcwBO8ePPIlbCeQa8eA8gd41fjYWhgq4942HghXUA8Z7j mwFjuJ14xMcYFYZRJ4z08Y1nAFjvpufi9o48jqeCMJaFcDymzXgw5yAoNq8G8gIEMtQBkqBYtIex EcM+LrnkklzuKBEAlnHhufJRJAYChQQAMLIYmMo1UuYZYQyNIugrvl/2Gl8Aqj0iKTn8SCvyFPEo 44ab4occvGeLIlSWnzJpqReAqLypL3RBDEcLXsqEEZYS9i5jNL5FxOFchp8y370YZ7NrnRr2nrvo oovS5z73uYFv6j3eIvrCt3jnO9+ZvwUj1GJSiE6lR3nyASkjSpQhefQsqKx8Ivxw5+G+u/e+/OUv 5+FK6gM+eafpah19PLn0pg6Kr371q+nHP/5x1s8Wv9JBaPEJHYR0t3De65TKfFNptJIvYIC85aOW 1Bl1Wd0QZz1qVg7rvdPOveK3GI7nZnEro4wYekEbadG72n1ey9SLst+iGT9ldGYZ3dssHbYDAzDm 9wrPoNNGF42+0cx7fIvoQMKbo0h0JY+Kb8QABmKNkiiSDkkdmPSJNkq+yLWWmtWLMt80eB6u/NSm W+8/HsuQfV4XnDTolTrnmnmpr29rOuHwwa0VrzpvdZ53e/bieWnDmt609LZNIwooZ+w+OZ15xby0 +bm+dPuSDemuW4e27/ff8Wzabdbk9IkvzUlbnutLt12/Ie+pWya/VZjtWwLqD32jnsI2gK2tgFql u+++O+Md7RbnCLCso6xIbDjPbTvEbjAarBYER3h2mRWX6zkWtf/sNe0hm0Rcpiu1CsgjrZE4/9mc OXP+X7sRM2h4EBjcGgpGCwDIYAMWXfOCes4Yc9/Zf88YyQ4gEgBE4gT+hAFEPXMNQMbqygFiGUwM PmFce0+8AGVcO0tTGODB2X/3Hd5DAKl3FS58IqAXIGVwy4d38QuYShdJyyHvnokz+HQWp8NzXmFp Cy+uCJcjavFHgQSS9HJ3QuMtnk7yMlHfNTGfcqg1KCdqfiq+h0qAsQwwMCQ/9alPDQG4Q0NOrH90 tUbUaBZAl142p/bOO+/Mw8O/9a1vZX2o8bv66qszsNWzTNfThZ3ov7GQFN4Z8IayRmfXWPBRpdkd CWjXDUWu3VPdNzbsrtF0gu6kXi4WukMnWLHDtNybVahKApUEKgm0JwFOwcsvvzzrxlpnQ3sxjv5b pTy3jdjiWQrQBvChAJI8ngFcPRMuACJgyMDRuATg9S7jSC8B8AeIhvHjLC5xowCH4V11X/xxSA+g 9J44/Qc6peeeQ1jvS8/zANMRl3s8C3gWl3gcQa49dw7gjGfxAsgO74rHPefoAYl4hKmokkAlge1b Anozefz1ooY3fnvIsZ5belXvrnnBf/jDH7Le1hgapmQEAt0J3NKR5t/Sg/SvTkPvTyTi1QR8DMWq aOJLQF3k4eQFVo7VU94KoJYXoqJKApUEKgnsiBIw5JjDb6ICW9+sI3ArggBogBzQBoQ6A3p65xEw yqjRgHgOFAbQBPw8D8DnLByvAOAbXl7vM5A8E69D2p47PJdmGE/i9b64AwwzquK/M16EA2gDZPvP IHPwPodn2HPvSyvyybMrjogHT54FL9LwTsjBM//jnU4MXT26Ifss5DZ/xls8bWajeq2SwLiWACBX O7xwXDNcgjlzZ+WLzozDVBXDIT/+8Y/nOYv0pTCGvX/3u9/NOksnn+Hw9OtEIkM0K9q+JGBot2F6 RjApj6aLVB0Y29c3rnJTSaCSQGsSMLXLaMKJTB2BW6AQWAPmHMCbAzF2XDsLF/ec4z3PAEAEtKJ4 J/7nmw1+GEniQIBvAFs8lSF8xHuRnvTF45n4A7QXAWrwDPBGeO8Dm/gRJ6MuQC9evOO+8J6FTMrw WS+MXmZgvlMab/F0mp+J+H6jPUgnYl4qnnccCVhAiq58/etfn5566qkMDgDeRx99NOs387XpRIsH Gqlj8Rrzj1Gs0rrjSKvK6XiUgA7mevNaxwuv2ud2VgweL/xXfFQSqCQw8SRQO4d/4uWgC57bAH/A WgA3ZyAPiAvPpf/x3DuAHnDIOCoCQ8+8534M4w1vZwBQXlVhzGEz5M18X4SHAI2exzBh77uPB9fS dR3gFS/uO5DnPMfil6Z38eNA3vWOnl78SifyFGGBWe/GeyGTSMN98VQ08SVgfgIjvnaRqImfsyoH lQQaS4Aus/CNPZstUBFDkOlCC2FZQVmdoEctJGURHCNh7IEbnYWNY6+eTFQJjIY+PP744/PClBde eGG2BSaqrCq+KwlsDxLYddrOaadJO6Xnn31pe8hOlYftQAIdeW6BM4YMQyXmn+qRZ+SEVxOoCyAn vPvAKMMIANSj77lr9xyAAnAJNAKRgKp4HEgYwNG8LeH8F490gUv/nb0rnP+uIz7P3OdZxQ/epel9 PbnBj3wBsMJbOEtehROfa72q4hDOEXmN9KUhTnkTh3eFFw4/nlU08SXw/e9/P39b27h0MtR84kui ysGOJIF3vetdeSsjANZKyYYxmXdrmxYryceUB7oTxX6+FvGzNVq39rrdkWQ+EfI6GvrQMHfDiXVu n3XWWRXAnQgFo+Jxu5XARTcdlCwh87n3PpJefPFP220+q4xNHAmUG7+bUjZYbAniMB4bAWwIYNMz b/gZsAjcAXvAHSAHCAKWSDgrar7xjW/Me8r5LzygB8SKK/YONdzNSpwMJ/EI4wwkAp0mPVsAghEV QFIckb7hPPvvv3/ad999s9fAdgeALEDswL949thjj7T33ntnT4Pn4rDYFF7MDWaMAag8vQFU5UUe X/nKV+Z9HI844ojkePvb354XU+HNiLTEgycU8VQgKItj3P747ibTO5ptUWD+oMVzdFiMFuHPHMBG y7iPFh9jkY767rsUt2oaKT5GUs6tlLFO89fttHjngAv6+NOf/nT20AKsdGrsBW57GjrQfbqT3o7R OLGP+XD56jbPw6U1Us9GuqzaPkJdiNFLI5WPVr5FN/Rhs3wBt7a5oQMsCDWSZBX7aAdsnWHlYm36 WFIz+Ywmb+RhK7vRpLkH75ouvunAdMOyQ9PXbjkwHXzkbtskf+gxu6Vblh+edtml8281a88p6YIb +tNznrXXlG3SG40bNz10eDrhi/32t/R4TN077oRZo5F8wzQ2ruvN2yD19VXAtqGQGjwwBNiOGbVH pzuhaKPFCSPtiFQK3OqJt7k5g8QBfAK4wCZjhsECgAKKAS6BN/cBQL2rQJ04xMXjCQwwejSagGas nmn/WOGEsTolYGyfxwC20hMWQBaH4W8+In7EFUBy9913T694xSsySDUUjtcYyAVAeHnxxdgSNwPN 0Dn8At3iA8alCXwD7Hjk0RXOu8Aqg0KYJ554IgON9evX55VDn3zyyZyedMWNJ+mTjfBkIa6KtpWA 4WbLli3b9kGLdzqNx/e3/6g9BZuRcPahDcO9WfhuPI9tKuwhWtHISWAk5dxKGes0h91Oy96fdODn P//5rOPoZXuJ885aVEpboFOQjpS2DkReXW0HHUg3N6Nu89wsvep5Ywm08i1GSx8C0QxDq5CzK0aS jEqwH7iVsg3Ft291RWMjgd33nJLO/Nq8tHljX1pyxfq0fnVvOuWCOengw6eNGEMnnT/Hyi7p5ivW W+AlzZw9ecTSahbxAYf2pPQyXj/gsOnp5eVqmr02os8vPvXx9MXjV6Q/Vdi2ZTnbWs4e1HHESu3w T0XtS6DUsGQeT6A25hQCiOZPAaDApyPAGoMHGAQcgTkAzzWAJ4x33bOCpmtAlpfUf4YPMAm0xpA1 BhLDSRxFUCg+Q9+EA2oBaGFjCJy4fve732W+gVFGFs8yYlwZPg1I41HeAF7gRCNuCWxgXTgHvr0P 9AKr+JEOXj0Pb2zwDAiLRzhxilscIRe88zSHzNr/fNvfm/ENOs1Zp/EoFzy2Oj/GI/HY8iJUIwBG 9uuMpJxHs4x1My3eSJ6jSy+9NOtf+i46/Og0ZdI9HXo6/ADdP/7xj7kDEsD1/5lnnsmdlMN9vW7y PFw61bPmEhiv30Lno45MgNMqxyNF2hMjZRzsICuC84jwIFc0uhIA7vp6t6YrzluV0p9Seuiu59Kq FZvTyke2jAgjU3bdOc2YNTlddvrq9Pjy59Oyu54bkXTKRtr74tY0d96uadWKF9LBR/akjc/0ln21 CjcOJaCTrkhhc8IlFbUvgaae2wBiAF9Q8do9RgywBhDquedVpfh5ZoE/BBxqIBk/ADAwywsKcIbn 1DXDx32AF1gEEsUN3AKL3gcmvSM+4YBHYfAKMHuGF8/9R97nLTCMGF+eA8TCAKrisdAJYC1/gGgc AYxf/epXZ0AsHnlA+JOeszzhQx5i7jF+xSNNvcs8zOSjAOO3opTLyuLFi5NhGL4XWfK8G+7UisGi zHUjnla+ieFqcSgn9ejAAw9Mt9xySzaMzEezB2iRDB2xYqe8Mp54B4YbSiI+HTP/n737gdWrOO/E PysZyUi2ZLSX1rR2a7KmNVvT2C2kOLW3cYor2MTZ0Ba1buvsOi2kkEIEKWQhChSyQAMLNKZAYxRo wi60oYUE04TEFGigMS1s8dZO7RQ3OMUNzuKWK2EJS0H6/fSZy3Pv3OP3z3nv+95/9nmk857znjNn 5plnZp55vvPMzKl6levEI1784mHLli05vXvuuSdP7S95ClCHHzIFaEpSd3kyAOzIv3N43dVzgwOX XXZZvscAlZ7pa56VVCctUwNDNsuXLy9fH70GuPAj3TvvvDPXodGHb110K4syfDs5C9MtHvIpeV63 bl2W02RNpa6T9zJv/VzLCx35pS99KQ9UxrINuo9upmvl86//+q/T888/nz8B5L/O2jMDmnToVMln qttFma9WdZUuECYopi5X9YJ2om2qz+o1j2jZZ/hGK5CFvvGNb4y2w066I9IszwaH6R7xab94c28i VOqCierDXvNFNupkKZvgHQ/0jnwJMwh6/PHHc/2vllc3PSbtbmVah79u8rEcSznoQ0tSV8iipG56 YyJ1gxNA+jHrpUxvENfHz5szYtcVXsLt215Nb7wxdmPLtjXpwqt5W1P67BOr8/RkU5RPOW18vTZ1 efPDq/L05qs2r0wnLR7fhzPRhhbOzfGwTfzPZlthus2ff1y66OpTkzTv3LoqXXDVqen4+UWAlPKU Zvc/cNkp6Z5tI1OpT115woTEsWfHcFq1bmE64cTj09y5c9Kh4SOXQ607d/Fovq649bR04onj82Vq dTd+6oSRAXKNo51J203OykUcK1edmJSD6eZX37kynXjSeL4nJLBZ9hI95dvxcFAvRP/pI/QZ7EkO yCppz+xqeoCNJHypp7XdVlOZ9Q/ClgTDuC89umWm7ereFdwCf4jhEhTXgBtgh4A94JOAAxQywBkz 7nnGIBIe0OMNBi4BSveN/FMejCOj/t5TEAQvPfE7vM9T7B1g03Q3Xlrv8QjjCdg20upevAdke+7w DCAOvoFRvDqAXnHgBc/4ik5T2vKGL2vJhBOvcNJxjV/8A7rS8o44VRpn4YLHVpUvM3WM/ZC1QwNh WDF+H3nkkbwLq8GGujSoeOqmJ5wGf99997V9heEKHMoHReBzKKbSVQEeYK9Oi49XyzvqWStiRPEY WNNYpbrx+ExLGMzammmmQYy2q666KoPJ4JWXriRTAXlLAGxhGeAGdEqjXbuVJ+lcfvnlOSyeTeEO qpsWQ4mcAX+8VwnYVH8YfhQ7w44MS6pbFvFOOznXicc6wG48Rzr9nuvkvd80yvcBNsar8qYP6TP6 lL512CXZoIYO+rOf/Ww+G9R53/vel6cuf/WrX83Pp0o+eJ/KdjGIfOlHGB/6SPV569ateW2pdc5B Bpfuvffe/Nc13eHo9fuEn/jEJ7JhYnrc3XffnWVl9+uJ0CD0Ya/5MuhFTvqNKtmXQ/vQxw9qbS6b iI4u06ujx+qUaZX/Vv+7yUc/2I7KZ3X0xkTqxsUXX5yXlD311FPt2Ojr/s7nhtOCobkJgGtHt12x Kz1634jni8f1xkt25GP/vrHPJ552xgnp/KuXpR3bD6YHNu/LIPbST40fOL3y0yvT9fecnpO5cvOK 9Lmvr83HuveOpb3pymVp6fIF6cEt+9LWz+9PK9YMpU2XHwkszlw3lKcQ4+fggcPp0huWjwDldplo c3/3C4fSilUL0upzhtILzxzMALcMCiBuumJp2vXccM4Xr/PF148A/TJcHX7qhCHbkHUZf1zXkXOE 3Xjp0rR924F040U78u7LGy48Uo4R9mg8sy1OP/30Ca1hf+9735s/taevMJi3YcOGI0TEboM72G3C rVixIi/riIBwCx1R6jbP4DUzdYPgGTYdG0Cfoc9hQ1YH1CL8dJzHEGuH1GVA5pwZrEAgcs2YIYzw gBqdJwQA06ZKOh0UHk4A0HTeAIFc8gxggJen1jxza2rFy3ACLAFC/4PEwdtKkAAAQVt7612GuvDf +973Ms/SEY93xBFTqGManWf44UkAegFV8US+nPEuTww43mUFr7O0xgyRg/x6Fz+MPaMu3nVfmv4L L6/4IxebWDWUMkhjDJPdQw89lAcrbrvttjyC1It8AKdBxNNLmkCdttGOKCp18pprrsnTNQE93svq VBTthhGLbr/99iwHhll1ow51naEOKLeiuvGEF1QcH/7wh3O9jPiAT+A50gDMAUUjdQGoKUUK1Kgd AmS+/OUvj4uHXjBCaCSS505etNlly8Y62jpp8S5Ii7GPxEuxlkSRKwsAF1G20ubFiqmDdcvC+53k XCceee7Gc8l/P9d18t5P/NV31XfTjbVXui10K13tP/0NAP/Gb/xG1nnuP/HEE7lDVfaMakB3quSD /6lqF3XqalWerf7rOw3amvHA4EDqN7kHGWAI3cNDrv+aCPmcDh0V6YgDQJkIDUIf9pqvWJtGFkBn SfQAfaGPLmVXhpnINZuAzILq6LE6ZRrxdTp3kw8bA5X8xf945n8dvdFr3aD3DO7ohydryczO7a+m p7YeSBsvGwE+2x5+Oee3/Nn9wmujHleeztKrG+HWnbso7X1hON1z08i00P37DqVP3LkinXLq/PTi 7tdzsHtv3pMWLV2Q1/TefcOeJAyy3jfo7hv3ZID52qsj7c/QwoaLRmzkCJPfefXwaFpv3pvStVuG 0pKlY2mVYTtev/lm2vfioXTuxiUZsJ/xrqFxwdeuX5j27h5OW24YGfw+cOBQuvLWFcmmWC+9OJKv uvwcrMGz6dEGG9pRHTnHu7uePzg67fvmj+5Irx8a88ZHmKP5rO3QWWGz9JJXNpZ+gAMgqApwAVF6 IbzCdGM1zK5du3IfzVZF7D7vuB+kH6dTDYjqd9iTjli6GuGm89zVc4s5wpY5Rh2jFshFBAPI8U4i 14wbCjTWvgKPwhEAUAcEA4lAJ6OnBHveCcBoqpuDAMULKEpHHMi1ON1nXFGkzkCr8DpqoBVodvC0 ykOAanELK348eR+fQCcPa4BqZ03oJkUAACAASURBVAAVn+IUzj1x40Eczu4xiOXXFGe8SQ8v8suL q0NE4jd9W9rea2hEAgwqcgaqjLJPdBRoUPEMolzC8JKfKGvexSqVyoyBpq602iSFEeWZqXGtqG48 FFEQRacNBPEqA6tBFCaKQS3XdALgiEcgh1GPIr/5T/FTxq/eB9VJy2BSqVhL3st4GK/atwN/qOQ5 eOtWFt7rJOc68VR5blXmwXu/ZzLslvd+0yjfV37aKYoBPHrQYYCPjlRHefHtnEw/WnP7jne8I/cd 6jd9WJbpROSjPUV5tzqXPE9Vu6iWe6u6WvLV7ppBYVCpBJyAYxgl7d4r79eVj/Iq03Gt79LHDZrq tJ1e0wx7BM9VUtcMEJjtYYBxsqiOHhtEmdbhv508yCeeiaeO3uilbugL9N1m2Bi4mkwC3J7auj97 KCe6U/CipfPSvj2H8m7KdlQ+8BZwXbhkbLOol196I+3fO6LrDuw7nF7c+Xo+XnttrL984/XvpwC2 8jx80MDHnGStbkl7d4zEE2Gc5y04ss6W77S69j3ZF54eTocPv5lB+Nzjx/pT4eVrT5HWnh0j01vd L6kOP3XClHG2uq4j53iPVz7odTIeE3PcPmrP7CgODR7ViZDBvdJpUtpwER9cUvYh9IH+XNpB+ize 3dD/QLO+qBw4DD3CTgq7tuxjI67pPI9vFW04oeBkmAAYLZSkThxwcyCgk5AYGcAgg4YBI+PCeAbQ +c/wNHUXwHTPuwF+GU3AoPAEKC0GVJC43QNWbSgljOfuAZcMLO8zpnmZ8Csd/4WRDvAJyJo+58xj rEPHkzjkQTg8iA/PeHS4Lu8Bs9JwjzcXxcZS0gO4EX7juXfiOj9sfjJQMg3U5x2MTBsB5p0zBasX ArgGEU8vaXYKq9088MADeQqvPPF0fvGLXxwHJlu9H+2s+owyofzUzzrULp4wMlvFod56L0haMfAT 94zY8SDztCPh7fLX68hdt7S0N+1Q+kElb3HPoJQRyOoopPiDeimLTnLuFk8rnkv+g59BnevkfVBp iYf86S9nYJbepHPpOmVlFg1P/y//8i+nz3zmM+nrX/96+vSnP513UbYux2AjvV/KpLyuy6vB1vDm V9/R0X7gAx+o3h79j/eybsSDftpFq3JvVVcjrU5nvOl3+6G68tGvm+5saq1+PUhZDpq6tZ2JpMfD jWLApRoHg680+qrPB/G/mx6TxiDKtA6vjFf1jl5QpgbztAX/zWAIqqM36tYNdcXSFeeYKh/pTNaZ x/X1Q2+m885fkqf7PrhlvNe+W7pz56d09oZF+SjDzhnrMsrbba+trz1v05K0YvVQGjpp7ujuxR1b z1h31jbedg80y2ceO5B4pDNVEpp7fEpvHBpL4Ptv5A2ej5i+PC7+seDjbo/7UyfMuBdG/vQi5+ED Y3ZHi6iO6ltmdtBhBjF7JX0PKvvR8jrig23Yx5yUoTc9K3U9Zwb9AWjz3upHqjMI9a8cLGefffYo IK+GiTSn61xpFp3ZiM42jAJGDcMXuAQeHQAtAIoIiNDDAOKJE9YU35jC67uw3jOyL15A2AgBkAmE xnpawDJArnDA4re+9a303e9+NxtaDCZheH/xIIz1vHhQyMAnRS0+/InbM++oUK4Bcs/c44H2n8GG v0jbc/e8Lw/yJ01hpSmcZ+LwPOLUkZjSLC1AWifT68YfnUtndj8NYzRGf0yHatU4u+VyUPF0S6eX 57FmznoH61OBXFOB1ateiKFidK66kVQvcURY9b0fAv7UaZsTAATqc13A3U+6nd41Hac66lkac96t UxZ15Fwnnk68DvpZnbwPKk0yBYLoOrNQDB4yqP3XJ1gS8qd/+qfZM2tw6j3veU9697vfnQEU/acT VHf6JZ7fdgB2ovV7ou/1m5fJeL+ufK699trcF1lfb+DZtPFyDf6geRt024mp2dW2Pmi+y/jUX96M mUoGGdkjMbuGUet/dfCxm96oWzcMdrHb9AXqTrn3wmTK6ME7X/KFnnTupiVpx/bh9OLO3jbhMb35 6a3jy/HA/jEPax3eL7Tm9rR56b7N+5J3l61ckDZePHlrRQER06xffmnEfpiEMag62e4pTF05F2PY PcV/NASmd2OW3GTlxyAmr6zZFfSX6cVVhwC79Nlnn81LyehUuu6ZZ545giUbT5lxZSq1/Vfwz8HR q117RMQDutETuI00KUnEUOGlpNgCyAGRvKmx87HO0qi+DojxCzQatacEAUWGECDLOAIaHXY09lw8 1m55T/z+20RK+hRpGFP4sBAbeKW83WdwAcC+uShu37gFegkeSA/wyZhhoAGo3tEJ4A9wxgd+AVhA C2/AKn7kj+dY3rwnjHs2DJI+BSQ9XlrPGIOmDsaibHluaLwEAti6G3IaH6Lev0HFUy+1eqHMIjA1 DnDi1TJKV450lSNnYqRQqoa2ETejeuX0kGrqdeKpvlP9L91o455pE+It+THyp91p384TBbbd0gpF Wc1XlWc8OHj9u1G3sqgjZ2m0i6cVz93478azKYSmWNukJeKPd3rJe7zTz5mMTUM3oEi3Kns6EOGN 3qUX1VWdXtR5dUadt1u8ci9lUl7X5Y0eL9t6p/eq8bdqX53e92xQdVVfUuWnmra09Gf9UB35SMMM DEZJrLEqvbf9pN/p3XZtp9M77Z7hn6HWrs/o1Hbaxdnpvv7cFNxyaUi3uiG+QZRpJ77KZ2wNA/mM VwN+zmwO+jqom97opW7I28c+9rFsOJtNoS7x0k8F8diuPXdhOmPt0Dhw2w0oHX495Z2Gd/cIiMs8 8dqevnYof293+7aRDXdid+Uy3ORejzfjD7+Rkh2lg447nmdO/Zug6zUimuB5EHKeYNKz5jU2lv49 dHCvjIdN0KlfkYY+GLCNtll6b8s0LSswsMWJQZeUy1bKcGxR9qwZWQa1xD8Rz3MZ56Cua625peRK MAbM6qABRMJ0Dg8lMGf03hGeTc+BRACSVxNIdA/gBQQBWUBQXN4Tv01JGEGAp7Ri+rPw3mVAKVBg 2nuMKfEj7+PXc+/bLAqQ1tlTwt73XvDMMHN4ppPEizjwjFfxiwNPjCL3eYVLCjAgjnYkH0HibOjo lwDD3hFkREw9KNuTZ0a9KB9kbZb6UYJYsx7E081r2y2e4KPT2RQ+SirItBRk4CbItGRtwSZSpp1S aDZzinUaEa7buU5aDLJy7Wyrz6uIp3qfh7ykOmVRR8514sFzyY8pPhMlhrTPx/B42b20SnXyXn2n n/+MenXYiG0rmmr5tOKhem+q2kWdumqQtjQqynoSfAN/+sdSTzAgqoBXXEh/hYQHvupS9EOl8aJd TxbVqRvSrpsvOtNAS3XGRvDfre1EuF7OdiXV35frxOvosbplWoeXbvJRD9UFfNLN6r/r0rvdTW/0 UjcAZXWI0awszFDqpR7WyXMOc1xKH7zi1HTKaWPrwVV3vJZTcYU99NbU3LlvAb0TTjxu3O7E1tIu XT6+rp+xtjenQ5hxh4bH7L55BbCsna9eAlZMx8rfvEZ42YqxfC1bMSKrWDvcS1KDCDsIOQ+Cj5kc Rwwolu2zV35hl3KfmurXWKI9a6tBgVvif5zZnngRR6nn4rm+qJx5GvtnRD8U4abzXG0XLXnRyeqM CYKA/JdxI/bAJpCIAFPC9V94I6kApTAOABWItMkIgEkQRv4dnutUgVHxMJKBY+GAVoDS+4AnACkM wQPTgKrn0mJ04dOZ5xU/ePYuLzMQLC3Ey8v7gB9hvSMe4QBjcQPFOlDeXABXusIA6SVFJWkFbsWl QqnAngtbGutlPM31zJCA0X71M5QO4wABeOoZYjip584IIFSHyjC8Cowvu9RpD66FqSoMdd+aJSNm pokwXgDhICNoBoG6fV6hWzwRX6ezqWpG40wtY5BZB81DxhgKwo+6DHBRquRkCirwZafMulQnLd4+ HkCGk3bUah020M9jAGAz5sKIxlt49+qURR0514kHz6ahm7aNZ/xXqU4d8w5dER1T2aFEfHXyXjet iLPTWf23jtxaPvmsesymWj6deI1nU9Uu6tRV7doot8EXdUMdqZJ2rr3fcccdeUALUFGfjLprm0F0 jTjsT0CnmKbNsx47nUe4dmd9rzaufpbtuBq+Tv0ZpD6smy+bB2ob6mMr6tZ2Wr3T6h4bQB/AqFMO 9FapD+vosbpl2ir96r1u8sEbPoVjeJqOyGBliwR10xt160bEF2cDnz7lZxCAXAZK3zeQMyddeevy 9JUH96cDrxxOa9YtzJ7JZ58cP714357hDHB9lueFpw+mczYsSnt3HRrdRXjbw/uTz/tcdN2pafdz w2nlqqH8GZ9PXvD86G7J3Xi36ZGdi885b1H+vM/QwnnpvBY7JXeLZ5DPt23dn3dH9h3bl3YfSus/ sCjt3Tk8bqfkQaW3+OT5ad6COWnxySNgGpDmwwFoX399pK4NQs6D4nemxqN/QnT5RIl9ZMCZ/meb mYFWkn4bbtPv6FvYrtUpyWV4dhSsV9qh8ZwuNGCvfYuLvcWuDZAb4abzXAvchhIPQ5+AKMoAic4K BRBEwCZgavSQgpRpBy+oZwCuzgLQ5AENj6v33XMOsEhwATYBXekYIZQm8CGcuMUD+ALWFHgUnnTE Jw6AFMjFm/fxpmPEj7jELVyMikoPP87CB0iWTgCcKLwwPuN/9ayTMTUIABI/GTYAtyqlmfOf8WmX uCCflUGMxwBLjHtgNSg2t2GsxrSPG2+8MddFSoQC05Y8r659YhRTSKYuMzIBuKhjRsCBLsZIaZxE uuW5UzxluE7XjGQgEaiVP0pOPoK0KYoz1s65L4ylAZ2UZbxfnrulJayBAUqWwa5d25SruqaLvD33 nU3Km5zJMMpKPN3Koq6cu8VT8hyggawcJdWpY8LrXHRYAEbUsTKeOnmvm1YZb6drZbJ69ep0/fXX p4985COjddU7Uy2fTnzGs6loF9KqU1e1YwOz6rCBAWDVeteSDBzTE743SyfoM2zUI/6S9GG8ZMLQ V+qCT4n1Qh//+MfzFDQ6DtAFFMvv6YqrTv0ZpD6sky/tnL6Rf+FbUbe20+qdVvf01doe3awMDDKU VEeP1S3TMt52193kw/YyEKausZd4/OmQkurojTp1o4zTtTpN7xrkGji49am8a3am884/Ja05Z2EG VvtfOpx81/aVl8Zvsgh43n71rrTp0mVp+RkL0q7tw+mBu8Y+peUTNj7vs/6DS9Lpa4bSgZcOp5uv 2FUb2Ea+b79mV7LuFlDet/tQ2vbggbzJVTyf6vPO7a+le2/am0Gt79TueWE43XvjWL4Hyc/6jYvS 6nPGPoVIBujGy3Yln2xCg5Jzjuwo/QlwywacKD366KN5tgbdrb8wg8IAV0n6Bs/1K3SEadBVEBzh 6Q87LtNbVdJX0Ct0MN7FZWlLdaC7+t5U/v93y5YtG3G7TiBVxiAvJvAIIKIQBNAJSCos4FNYh7CO AIMxTZmXFOiMsATmHiUuznhXet7l4WXoCyMdQAAADW+rdL3D0yo9IFXc+AJWA2gHv97zHHD1nmnP riO+ALeeBSjHw3SRCsn40YH0QzMtnn7yMlvftTCfcqgCtl7zM6h4uqXLUDIVufotYuCSZ6PddNVu 8R7NzwF/U7jLgY/Znl95MtBAR3/oQx8aB3B7zdtkymeq2kWveW7CT1wCdAx9w0sYA48Tj615s5FA I4FGAo0EQgJmCt1yyy3ZxqsOikWYmX6u5bltlwmgElB05vV0BhB5T4FGRjAwCLQizxxAKbDIi+t9 IBFgdR/oBGCROMUDnIY3WBreBTA9j7iFB0TF4zkexCNO1+7hxbU4kDMQLE2g17v4Eca9AMWuhfW+ I65zJM1PI4FjTAIGkngqeGq0GaN1RvkYnEbvGjo2JKDczWQwOhyzDI6NnDe5nG4JmMEB3E6GZ3C6 89ak30igkUAjgemUgCnH8NVsBbZk1xe4BQxLQOiapxRABCYBWQAxDveBVOAQ6HTm8QUYhffc+8iz 8ArHNGL3hIn4gGLv+S8MUAoMC4cX4BowjTDuB1j2PLy7eJBu3OOx5VHmvY24PHNIQ1rh6Z2uCsjT AZD3SzMtnn7z07w/NRIwXc30Fp5/U/pNs26MzamR/UxKxdSk6nTrmcRfw8vRKQFTahtqJNBIoJFA I4HBS8ASKLMJZzP1NS0Z0ANWERDpP6CKAFPgyz0gN8ArYAgwCg+oRhiAMsCtMxDqXdfO3nf2vjSc pSFuPDiAVaMNrm1IJQ4gGigFRl3HtGPPgWLviwc/SLwOhE/v+G+dIV4CLIsTT9NFM2068aD4mS55 Nuk2Emgk0EigkUAjgUYCjQQaCTQSaCQwuyVQ61NA7bIIZAKcDmAPCAT+TBl2BjYBRF7RuAcgApg2 iBEGuLWhlPd5gLwDUHrm3QC0wCUPq3AAKeAKxAKYEc6ZtxVwlQbwaodj7/DE4te3aPHpuU2o3LNm TDzW+Uo7PMPu2U0Z8VC4DyRLh1e4oUYCJGB9QrkFeyOVRgLHigSssbamtdGHx0qJd8/nVOjDX/u1 X8szRfTfDbWXwFSURfvUZ8cTnwg6cfHIZ/hmB8czj8s6MqwTZublrOFotkqgr2nJJYAFPoFYABT4 AwytwwIWA/zaetpzYBawDHCqg3IAwACkcMAoLywSF0BbAl2gGFD2XoBqgFfY+C88vsQpLL7EA0AL 4z9+dADiwb/n7tttTDj/UcQjfve//e1vZ6CcHzY/x7QEvvCFL+RBml/4hV9o1h4e0zXh2Mo8YGsH 2diJ+NjKfZPbdhKYCn1oN17LIgxIf+xjH8t2Rjt+juX7U1EWs12+13/+zGSF10fe9+zo52tme56m mv86MqwTZqr5btI7eiVQG9wamff5Ap0J0Gk+Nu8ngAso8pYCpUAicAhQ/su//EsGqa6tj/UpIaDU Z3DEwYsK/PKGiheg5L39sR/7sfTd7343fyoHuAR0v/e972XvqSnEAXKlh3hmbTAhnGug2SEszy3e gFt8Cmd9IIBqvempp546CsK9I30gG1/4wy8vM4+wdOVFOvIfwHci1QNYPv300/N3oXiOG5pZElDf 7QiMlHN857YVlz47Y4Ckn/rQKt5O9/D3ta99LX9CxOcejiWazJ11q3KcTDn3UseqfPX6f9Bpqe8+ XwPY9rvLd7u8DJrndulM5v3Jrqs+1eWzXe985zvzbKbJyksvZTEIfdgtX8CtT5WZNWBju1afyBqU LNRvn2Kj39kPPrHhc0BshOkktovvivu+sE8zfvKTn8yfcip5GkRZlPHNhOtzzlucNl629AhWfP5m 28Mv5/vHzz8uffZrq/P14cNvpg+uffqI8HFj/4uH0oIhe7BMrDzPu+DkdO6mJRHd6NlniLZvG/kc zujNKbpYc85J6cKrl6XffPcz6Y03Jp6vNesXpkvWd1/fXkeGdcJMkXhmVDL60cAyJWM+/fbkk0+W t3q61kfb8dgmn+UnEXuKZBYHrgVuAdbly5dnQLh3794MAP1//vnnM/jj/QQAAVTeUxT3eDp1AoAl 8CiumFoMcPLiAoy8psI6A6SA8Te/+c38zPsAJTAtDmDVdGGeYenoeAFZQFRc0pKG/545A+HikYZn ePWO/+LVaXnPfweAC4AC6s6e/b//9/9yet51r9khdPA133Qzxkq/nzjqNx6DH/HNVIZNJxJuqik+ t/PYY49NddLHVHqTKede6li/Qh90Wr57aoCy/P5xvzxW3x80z9X4m//1JdBLWUyVPgTcGIa+8et7 jQDeZJHBbBun2RXe7uC+eyvd6SSDGmwQfOmjli1bdgS4naqymGo5mFB34yU7xiV7YP/YN0LfOPz9 9MmLdqRV64bGfYd13Atv/bnhkvHf/20VptO9p7YeSLueGx4NMm/BnHTpDezl0VtH/UUdGdYJc9QL qkUGfc4MJglyffnll2dMEveac+8SGJNoh3cBVwLftWtXBog+AQFgUqzAH28nAAkQfuc738kjnD/4 gz+YPZ8ALGDpACKBT2G9E55QIBMoFgawBGR5dwFfYBawBEylBRwDlkDwP/zDP2SQanRcOnjUCTvE g0dx+/C6+NyTpjgAaLx4Dtji239eZF5a54gTX//6r/+a/vEf/zE/k573Ghq8BNQD5dcv9RuP+vbc c89lz36/vEzG+zbwYtA1AyyTId2xOCdTzlNZxwaZFv3Hs8a4j8HMMYkN7mqQPA+Oq2MzpplaFmat GMjcuHFjXoM7WaWjntuh2WHmF2AJ6E6XR4RtA2Bfcskl+bNsR+MnkeIzJJY/tKLdL3SY8fb9lDxf cuq8Vq8O9N6rr7yRHEGnrTohXx7YN7KsLu4350YCrSRgkK4kMzIQzNLQxCVQa0Mpnkqj9Dq4IFNp gU0H8AkwAoE2XgIWAV1eVfeBRkARUHWPu5xi5n1929vell3y4vBMOO+aAuS5qcHhKQWKAVhpApdA kLW7ePMuwCweBPxKDxB2H0BnlIkvQHB8Xxd/+Iy4nXUennsH0I0p2Do506fLKajeVSFXrVqVD9to u1cl94UxxVWeGhqRACNh8+bN2VtLrsrVBk0XXXRRTwbLoOLppVx0wHGoa61Ied9///3ZMLIGas2a NeOCmVpn9N2ndBhPDBV5aUfi036q05HrxCNe/OJhy5YtOb177rkn1/MyvQB1+FE22kFJ6jfDCsCO /DvHNBp13eDAZZddlu8xQKVnGqtnJdVJy9TAkI1ZI60I4MKPdE1TbLXJV7eyKONtJ2dhusVDPiXP 69aty3LS/ieD6uR9UOnKC537zDPPtI1yJslnqttFWe6t6ipdIEyQthVtMu45ayfapvqsXvPClf2K b00DWegb3/jGaDvspDvK+OPa7Ca6R3zaL97cmwiVumCi+rDXfJGNOlnKJnjHA70jX8IMgh5//PFc /6t6vJsek3a3Mq3Dn3yyZ5C+Uh4d1fx3KwvTq0vvszL3Dl0yEyhALZ4mi+7fvjbF0cJkm1Cy6zcs SXt2DqdXXh4DvPPnH5cuuvrUtGXbmnTn1lXpgqtOTaZOl3TKafMzLytXnZiu2rwy3fPkmnT1nSvT iSeNtytMOd788Kr8XLiTKpthScOUZPTZJ1aP5k/8JZ268oR03T1n5Hhu+vwZSbqd6IQTj89xSb+k kJ9zOxnWCVPGeSxf01M7duzIG932IgftXx+hz2BPWkZaJW2cXU0nspGEL/U0bKa/rPYh+ofqLBCY x33p6YeivVbTnK7/tcAtsFeCuWAWQAMMPQuvJwAKWAKHhAZsehbAFlDkPQWEFcaP/uiPZi8qUBve UtfuA5GmAvO8ArEALV6k4ZCGtMUlzQC30nQdgPeHf/iH04//+I+nn/iJn8jrU/ANqAOsjDT8CK/g pcFLy2vs7Bmw7T5vtHDeKT1msRbZ1CWjLebPVysWQ1uHJC+O6vOQ6bF4VoYODYRhZW32I488kt71 rndlWdWVyaDiqZuecBr8fffd1/YVhitwqMwpgj179uSpdFWAZxq2eiU+0+u8087AZETxGOzevfuI dOvGE1P5pKctmWYaxGi76qqrMpg07Q+vn/rUp+JxPpuax1sCYAvLANdeS6NdW5UnxqdpNsLiuZzm XTct04PJGfAvDbJgCphSfxjGFLv2RoYl1S2LeKednOvEY2p9N54jnX7PdfLebxrl+wAbg7Od13am yQfvU9kuBlHu+k7Gh75KfQZE1CmbKAUZXLIuC7nWlh36oV7Iuk2Gielx1pKS1ZVXXtlLFKNhpd+v Puw1Xwa9yEm/UaUzzzwzD0Tpt8lvEMR2oKPL9OrosTplWoe/O+64Iw+WCstINbDheP/73z/u9W5l QW7KOkDx2Wefnfthy81mCoXB3ArgAlJxTJRfU5sfvW9wHrKVa05My89YkB6+e3wb3HTlsrR0+YL0 4JZ9aevn96cVa4bSpsuPBB/ysfHSpWn7tgPpxot2pDlz56QNF46FO+2ME9L5Vy9LO7YfTA9s3peG Fs5Nl35q/GDvbVfsGs3TzZftytO35XP/vrEZcQDz5bcuT8MHDqe7b9ib9u45lC69aXlafMp4AFzK 9bzzl6Thg4fT808dLG/n+LvJcNByHsfAUfRH32kvHk6AXum9731vWr16de4rDOZt2LDhiCjYbbAH W0yfsmLFirzMIgJyTrKjS93mGexixm4QEMymY/PpM/Q5bMhWDoV4Z6rPtaYlB1OM3BgxtPbW9GGK HtAD/sL76mxqLyExgIBIIFFYxq71tIx9HY4jpiIzhoUXViH/yI/8SAaZAC5wKz5AWRjgE3gVj/hj yrFnroXT4YU3WaFR4uIw2hkAmCcX8AashTX12BmvwooDPz/0Qz+UD8Bb3nmuxYP8R94JalU5eLTL dUG8bw2lDHh4+IC5hx56KA8O3HbbbXkEqRf5AE6DiKeXNIG6aBOt3qOogMdrrrkmtxNAj+KqTkUx KMKIRbfffnuWA8OsquQoFQYJoNyK6sYTXlBxfPjDH87tMuIDPoHnSEMbAxSN1AWgphQpUKN2yEjj l7/85XHxaD+MLyORPJbyQvlZGxZUJy2eBGnFpjHipVhLosiVRXiyKFtpG4GMqYN1y0K8neRcJx55 7sZzyX8/13Xy3k/81XfV99B51Wf+zzT54Gmq2kWdutpKZtV7BvYMkprxoO9C6ncpdwZ/6B6ARN83 EbIRER0V6Yjj4osvnkhUmcfgqVUEdepGr/nSryLplv2re/QAfcG2KGXXirde7un7ySyojh6rU6YR X6ezde50KF1HR0e+1PGSuvVNjFIDMQxexi6PzgMPPDCuHpTxTeV1KzDrXoBdSxQ/9/W1oyxZX9tx mvJoyPEXO597LS0YGivH8U97/HdcShsuXJKBp3hLuvvGPWnu3DnptVdH2qhvcGy4qLX9t+v5g+nJ rSNA4uaP7kivHxqzK9eduyjtfWE43XPTyFTW/fsOpU/cuSKdcur89OLu13OS5AD0oj07hltuKLXs dEsJ56S7btyT3nj9+2n7Ih2OWAAAIABJREFUtlfSc08eTC+/OBJHybvrVetOTO9avzDdfMWuI+Kr I8M6YappHov/tUc6K2yWXmTAxtIPlEsUqgBXm6e3YhNburEaxvJTA+ZsVcTu8477QfQPnWpAVL/D nnRYsjFTqJbnFrNAqAzyPOlMoH8gEog1Tfif/umfMrhjkL/97W/PwBcQBAzDqwtQBnD0DGAFOIEa cRMWLymA+a1vfSsrbaCTQew96UjT7oAMbqMG73jHO/I7gKWw4hG33ZZ1dP4DwgCw8MC153j653/+ 5/TUU0/lcPjHH2NYgQPrvMHeAbS9o/NQ8XiVY0qzgmUUAPrCyIs8+y8v+GWkSF+cwV/p+Z0plWG6 +WBQKR8dtlH2iY4CDSqeQcgjDC/5iRFy3sUqlcpMvWU8qedVYkR5ZmpcK6obD0UURNGVAzMGsYDV oBjJLwdjtANtBY/qfExli/zGu3Eu49fOg+qkZaCoVKwl72U8jDzeEQf+UMlz8NatLLzXSc514qny 3KrMg/d+z2TYLe/9plG+r/y003Y0VfLRnqK8W51L/qaqXVTLvVVdLflqd82g0MeVgBNYCaOk3Xvl /bry0ReV6bjWT5kZNWiqUzd6TVMfjfBcJbrUAIHZHgYYJ4vq6LFBlCn+5SkAbRjC6ncvdUM8ytlA Kn1oZo5+hbE6G8iGUtdc8PzosW9ve300VflZ997FaeHieemB28d7baUPQAaw9Z8HFLicf8L4qcme 7Sw2p3r9te+nNIZt06Kl89K+PYfS8cfTfcelWNe7cElvy9x4bNG5G5eMTiV+YXvrnZ1POvn4dP5V y9KjD+xPLzzdOkyOrPnpSwLsKPiJR3UiZHCvdJqUNlzEB6+UeoLu1J9LO0ifBd+F/gea9UX0TlDo XHZS2LVlHxvhpvM8ZmV24QLgC+ZlDNiVedeAXHhkAVaGLEUJnIRXFJh03wGoEoh74i3J81L44jEN jvB1whFegQgbRqz/wvZCvLYAqPQAYEDUFGaGko4SfwC1575rKz1gPsLgRRzk4MADYAsUC6eiiRPo lV/gVnqArrgbGpMAoGQaqM87GKHl+eKdM0WtFxpUPL2k2SksRWE03BReeeLp/OIXv5jrUqf31OVW xhplQvnV9dK0iyeMzFY8SLdsS9JS181iCGIE8SDztCPhbTnf68hdt7S0G+0q2n2kFXzEGW9GIKuj kKUMeymLTnLuFk8rnkv+g+dBnevkfVBpiUdZ0//taKrkwwsY3vwqL/qqD3zgA9Xbo/8no120Kvey HY0mXuNCve13ALSufPStpjubWlvOONLuBk3d6sZE0ovPaLQbcNEPl0bfRNLo9k43Peb9QZRpNz56 fW7991lnnZU9NTy3dfuVXtPpNXx4aL0XXtzynvsv7mztZew1rUGEt3723AuWpGe+ciC9/NKRfHl+ 3qYlacXqoTR0EkfOSKqtWlgAz1Z8zZ2f0tkbFuWjfD7nyHGd8vER1zypjz2wP529cVE6c91Qniq9 7dGXxwFpL9EBl16/PJ+33nckaD8i4ubGhCVgZgcdZhCzV9L3oNLOKK8jPtiGnW3mXehNz0pdz5mh 3wK0eW/1I9UZhPpXDhZLGQKQV8NEmtN1btW2WvJSdhxAnszzlAJvhAishXeUoAA8zxBw53CfdzTA I7DXjSJdBpzOPtL238gjZaxgq51Lt3g9B1rxjSdn8eDbGdiVLx0/3sNr7D0AFkA3XZpXlxy8Lz78 ArbeES8wK5/ybhq1uEM+dXg8VsKEMRoDKKbKtWqc3eQxqHi6pdPL81gzZ/qX9alArqnA6nIvxPg0 OmcKWb80UaM70gX+tEEGEaBsVsN0G0am41RHPatT9eqURR0514knZDUV5zp5HxQfZFqCoFbxToV8 ePPbAdiJ1u+JvtdKBtN9r658rr322jwLw/p6g8WmpJVr8Aedj0HXjZgGXW3rg+a7jI/u482Y7cS+ iRlSPMsGH2YStQO2M4lHvPCAmjjw4F0jS9Sq/F1oze1p89J9m/elA/sPpWUrF6SNF4+tpS3DV/w9 5aN87dNDT28dX/fE2St9fvOL6eltB5INsHw3+Iy1Q+nmj76QSrNkwYI56cBLb6bh4w9nfu+87sh9 PnpNtwnfWgL0bsySax2i/7sGMXll7YtAf5leXHUIsEufffbZvJSMTqXrWm0eaeMpM9JMpea8wT8H R692bf+5ah1DLXALZACPJQFoAfgAOcANMXCBOiDRfeR9AA/Y9cx7gLA46lIJdABIAg+K63CVx/1u Z2AZn8Ap0OngaQZe5aMVf/h3yJuRD58Ukj6jyIJrXmxAl3c34sFvtcBDNt14PJaeB7CV53Lxeq8y GFQ8vabbKby1qqbGAU7WrxqlK0e6qnUt6lQZpxE3o3rl9JDyues68VTfqf5Xl8v2bjBKvKXhb+RP vWYMO08U2HZLK9pNNV9VnvHgCGOo+rz8360s6shZfO3iacVzN/5L/lpdm/ZoirVlFBF/hOsl7/FO P2cyNg3dbBUDeu1osuVDf5dtvR0f7lfl36p9dXrfs0HVVX1ZlZ9q2tICPPqhOvKRhhkYjJJYY9Vt 4KIfnuLddnUjnvdyxj9DrV2f0ant9JJOhGUnWI5RLg3pVje8O4gyDR4GdTY7Sn2M6cn2CWjVvwxa hnX4D11e9djWeXcqw9gJ+azzFqat9+1Pr5lGXCFe29PXDqV7b92b17Z6HGtiK0G7/j38ekqHht9M u3e217si6QaQI6GXdr+eNl+9M++UbIOpFatPTM89OTb1+PDhN9Pt1+xJi5bMTVduXpGe3nYw7Wwz fTnibM69S4CNpX8PHdxrDGETdOpXpMFuA2xjEKv03pZp0gMGPTkxLIEol62U4egK9qw2akBU/BPx PJdxDuq61ppbxlNp7FLupafUtU7SASz6DzBSmoCsM0+nM1AXns8wmsUfFFN8439MfyvDxLRofCBh dBy9Gtgqk41j8KpyAKbixiewLj8BUN0DWuUHeUdFkp8A+c7CAMjyhj9A2Lt4k4bnDvcaOvolAMw6 goyIKXv1riSjXuoMMoKubpVGhtF18XTz2naLp0yz3bUpfJRUkGkpyHr7INOSAQSbSH3961/PCs0G J9pvL1QnLQC6XDvb6vMq4qne5yEvqU5Z1JFznXjwXPJj6s5EiSFt+iCPl51tq1Qn79V3+vnPqFeH jdi2oqmWTyseqvemql3Uqav6mNKoKOtJ8A388UiWeoIBoU8qKQZ0o58UPvrFMly76zCGSuNFu54s qlM3pF03X3SmgZbqjI3gv1vbiXC9nO1KysYp19HX0WN1y7QXXvoJq01ow3a4t1zGQFEr/TIZMqzD t/o+04GtfJx51sLcXz/+4PgNvSKP4cM5NDy2bG7evPqOnYjHef/eQ2np8vHt84y1420J4Q4dGrEv 576Vzgknct6MxeSzP+Wnf3Y9b5fcdMTmWuKxVtg0ZlOuN126dFw8YzE2V/1IIAYU+5l9YoAvZmHg hYe2pND1JZaix1oR2xMv4ij1XITVLi0BDIo9UaIfivvTea7Vwkw7ZFzKjGudLuPG+lqgVQcDDAK2 PJk6Vxsu2bAJYAQAAT5hPCcw/3XU4omOjCDETUBRyApdmiVw9V8cDgXlnYlMEcJLgFEdemyOJU6g Fm+e27XZZ4Tky2i4wygxr4UKo4I4fCoIyJZ35H15DzAr/+JyfzINiOmsUEdL2kaq1cNQOgwBBOAp f6TTZ6Q6I4BQ2ZZheBUYX3apU2dcC1NVGOqDTT2MmJkmok0AwkFG0NR7nrtO1C2eTu/GM1NcjcYx ehhk1kEzfBhwQfhR1wEubY+crI9mHNmxui7VSYuH27QXo43aZqt12EC/9ZcAtpHDMKLxFt69OmVR R8514sGzaeimbeMZ/1WqU8e8Q/dGx1R2KBFfnbzXTSvi7HRW/60jtxGNfFY9ZlMtn068xrOpahd1 6qp2bZTb4Iu6oY5USTvX3n32RfkCreqTUXdtM4iuEQcPHJ1imjaPV+x0HuHanfVh2rj6Wbbjavg6 9WeQ+rBuvmweqG2oj62oW9tp9U6re2wcfQCjTjnQW6U+rKPH6pZpq/R7vVenLNRB/U14Wnjv4zvs Zf80KBn2modu4X2ntaQD+w+PbtrkkzYA5EmLRjYqjbA2nrK5E1p88vw0b8GctPjkEbC4bIVPS44A yNffClPG3+76pJPnpuHhw3mzpzJM8GNTqH0vHkrnnLcoHTxwOA0tnJfOa7NTcvl+q+ttD+/PHtSL rjs17X5uOK1cNZQ/K/TJC54f3S3Ze/v22Dz1zfy5oReePpjO2bAo7d11KG25YWRasSnI1to+fO+8 dPCVw2nNOUPZLtn17PjP/JQ8PHj3vnTLF85Mq88+aXQ35zoyrBOmTOdYvA48QJdPlNhHBqvof7aZ GWgl6bfhKv2OvoXtWp2SXIanF2Cr0g6N53ShAXt6T1zsLXZtgNwIN53nWuAWsLTzVgko/SdAwM10 Y9OMgT8AV2fj2Xe+8508Hdk9HkxA1zPXOusAAuFSJwgdrY6UsSwswcXOgCEo4XV+lC4AAggEGI4w dc6+YysNoFRB88a6p8PHMzKijW9AXAWUlrW23/ve97KXSp55bJ3FAewD7uThWl499560ANyGZr4E dPx2iQvyWRnEeAywxLgHVoNicxvGakz78NkGdZgSUX8YRJ5XN15iFGszpi4zMgG4ANHqFtDFyC3b SqRbnjvFU4brdM2wARKBWvmj5OQjiKFHccbaOfeFsf68k7KM98tzt7SENTBAyTLYyZKXofyerjDk 7blvO1Le5EyGUVbCdCuLunLuFk/Jc4AGsnKUVKeOCa9z0WHRi1HHynjq5L1uWmW8na6ViW/qXX/9 9ekjH/nIaF31zlTLpxOf8Wwq2oW06tRV7Vhfqg4bGABWrXctSZ9LT/jeLJ2g//BNW/GXpK+yjl8Y +kpdMMW0F/r4xz+ep6DRcfpfQLH8nq646tSfQerDOvnSzukb+Re+FXVrO63eaXWPraHt0c3KoPot 3zp6rG6Ztkq/13vdysIMGzOEynzQmewohmoJbgclw17z0Ck8b6hP4JR0701707aHRz5F4pM8K1YN jT6OsHZYfnHnCLhdv3FRWn3OwtEwpt2iGy/b1dPUW7seDw3NPZKfW/embQ+O8HP7NbuSdbfS2Lf7 UNr24IHku7G9Eg/q3TfsSes/uCSdvmYoHXjpcP48T3wGKOIDqG+/elfadOmy/N3dXduH0wPFeuAt N+9Orx08Oa07b2EeBNj/4qF08yW70isvt/+c2KuvvJH27hzOa3PjU0V1ZFgnTPB9rJ4D3LIBJ0qP PvpoxlV0t/7CbBYDcSXpGzzXr5hlZBp0FQRHeAPpcF7pWIxn+grYiA7Gu7gMjlUHuiP8dJz/3bJl y/6/iSbMW8nDaT1tgDqGr2uAkLHo4MnU+QDCCIB829velkecJ5r2IN4DPI2UKBz5AG79V0AUP5AK RPPoeq5DAGoBcxtFyU9siiXfwCvADuy7Fh9ZqBwALmArnHcAF9cTJRWS8cNL0g/NtHj6yctsfdfC fMqhCth6zc+g4umWroEeU5Gr3yIGLnk22k1X7Rbv0fwc8DeFuxz4mO35lScDDXT7hz70oXEAt9e8 TaZ8pqpd9JrnJvzEJUDH0DeWR8TA48Rja95sJNBIoJFAI4GQAIxzyy23ZBsv1r7Hs9lyruW5bZeZ AHaeA7HAHs9SbBwFHAKFjB/gDuAT7gd+4AcywAX+ppMATx7a0vtsGjGvcXwaiNElDzyx8uHTPyje iSnIwss7wCpf3gHwAWiDAOJ1D3iWLnk01EhgNkrAwIyRfd4BbdpgkFE+BqfRu4aODQkodzMZjA7H LINjI+dNLqdbAmZwALemxTXUSKCRQCOBRgKDk4Apx7DKbAW2JNEXuC3d1bGuFuhj8Aagk0gAO9dA HZDn3nQT8B18OOPdEffkjyfWf/kJ/sM7KywPLlArTzy7wLJ7Ot8SCHvuCLArLv8nSkB38DTROLw3 0+LpJy/Nu1MnAVMZTW/h+bc0wDTrxticOvnPlJRMTapOt54pvDV8HL0SiGUfR28Om5w1Emgk0Ehg eiRgCZTZhLOZ+pqWDPQBdgBrgFrgLYCcszDuIR5dwBAFkMx/pumHFxnvpRc1+MJ35C9AKTblVxjv uu9dnljXwKYjph0Dup7Lt0MY70bczhOlmTadeFD8TFQezXuNBBoJNBJoJNBIoJFAI4FGAo0EGgkc 2xLoy3Mba0aBO6AtgJ4z4AbUAnWINxfFM15TQHE6CW8xRTi8uPgDQvFvjawF3gA5MIuED++ra/fl LaYtk4P3eLPE4/A8rsUhDArZ5D/NTyOBRgJHnQSsXTHgVd1A7KjLaJOhRgKNBBoJzEIJ+EzOnLlz 0qsdNlOahdmaUpbryLBOmClluknsqJZAX+DWtF2gDnAD6ADEAGzWnXoW4DGkKCwC+KYb3OIDmAVW eVkBVXniecWndbSIceq5e8ICvNaYede1e/Iea20BY2EZtOKMZ64BW88cDTUSaCRwdEvApzXoj1/4 hV9o1qUe3UXd5K6RQCOBWSiB6z9/ZrLq7CPvezb18gmgWZjVSWO5jgzrhJk0BpuIjzkJ9AxurdH0 GQNb4ttJGJhlvPkMTmyuBLgCg9/+9rfzJkwAoHuO8FpOtqStf12+fPkRyTz//POjW1sDpXgCzMPD YtMoh3wBuja/cgiDd/esp7XWDFgNcPvDP/zD6Yd+6IcyaPWpIDtC//iP/3iWjd2Y7TDL0x0AF2PS 8JmjmbR99hECm2U3yPgb3/jGOK59QqP8NuS4h8f4H+35aNvFt1OR+rSRzxy9853vHNUDncK3e1Y3 Hp/XoFtiOUa7+GbSfTvF+16xb2X6mPsnP/nJ/ImYifI40TpWZ5fjOmEmynfzXiOBRgIzTwLnnLc4 bbxs6RGMlZ8COn7+cemzX1udwxw+/Gb64NqnjwgfN3wGZ8GQz1dObCbheRecnM7ddORnfXyKZ/u2 VyOZKT2vOeekdOHVy9JvvvuZ9MYbE8/XmvUL0yXrt3flvY4M64TpmtBRHICd4JNrZn36qsJMJssQ fTLM5xZnKvUEbgEz33sLAmp5L50BOAAwvJ48k8Ae7yzvLWAITPJqemeqjD3gEQANAk6D8IHwDwwD RnjlsXWWH5tCyZt84V3FA4jxz3srjHs+F+S+9wB7cfr2p3s8uv47k6F4yIMRWfIWfB3L51/7tV/L u/BO9BNHyte3ToEPh8ZnIKahRgLTIQF1cbYR8E+32SjK95WXLVvWF7idbflv+G0k0EhgZkvA1i03 XrJjHJMH9hd23uHvp09etCOtWjc07lu24154688Nl7zQ6nbte09tPZB2PTc8Gn7egjnp0huWp8Ls HH12tF7UkWGdMEerfLrly9cmLr744owXGkzQTVr1nvcEbhcuXJhBXQBTYBX5b4dgAPDf/u3fMmAD 5H7mZ34mezB9Egegi4PHMuKox+bEQ9nOut1nKgBRvACaAUDlyb0AqUA6T60pxp79h//wHzJQBVa/ +93vZo81YAtU2V0MMOap4LX99//+32cgD0QD+Y6QgTPCX0NjEiDHfhu3QQXKArluqJFAI4F6EjDI ZwDToJDPPTWfWqkntyZUI4FGAlMrgd0vvNY+we+n5PmSU+e1DzOgJ6++8kZyBJ226oR8eWBfY9uF TJpzewmwVS+//PL02GOPZYwwUcdO+xSOzSe1t+vlcfT91/37949KCghxH5mKa3otgBteWveBQ95L AE94wM+UwNWrV+dpw4AhoAvs8XjygkpHgQPHDK0f+ZEfye/zkgKDwpnmu2LFihyXsynR1vhKA1BF QLX0HQEmeWe9K01gVVw8E9/5zndGQTAQap2s8z//8z+nf/mXf8nvi8c1AxDx6gojLlOX5RG4DT6F R+6LDyDGv/s/8RM/kYaHh/P7OdAx/KOsTRvWqMlSGS5evDhPzfB5mUGSLc4B3ssuuyw9+eSTiad4 y5Ytadu2bcmzINMdea6k77MTjPwAzBHGf98BMz1DHMLdc889uY5HGGdTOL7yla/k5/KpDSB1Qn3c sWNHOvvss3O7MSXedFDhrr/++lx31Bf17Jd/+ZfTn//5n6f/83/+T7rzzjuzjMp06lxrr1dfffVo nlpN3RdPO57LNMhLfslT/ngpQx8Id//99+e04h35Dnm5V7cshOWFl4a0WuVdWsrqiiuuGAVlK1eu jKTzGVjjlUSmruPFUZYr3SAeYdUPsnKvpDrxCB/xOyvnVtRNznXy1SreVve6paXsDGAibRDPjrJM W8VbvVenjpHp7//+76e//Mu/TF/84hfTH/3RH+X6TL/S5bGngUFG7VA900Z5kg02hj6PtJW79rd1 69ZULfd27ZQ+psNjGYqpYA8++GCepm+ttH7le9/7Xu6TtElLWvRbZIIvRE9UddQZZ5yR6z5+xEM/ NNRIoJHAzJPA/dvXpjjeMmX7ZnL9hiVpz87h9EqxQdX8+celi64+NW3ZtibduXVVuuCqU5Op0yWd ctr8zMvKVSemqzavTPc8uSZdfefKdOJJ4/sOU443P7wqPxfupMXjn0vDlGT02SdWj+ZP/CWduvKE dN09Z+R4bvr8GUm6neiEE4/PcUm/pJCfczsZ1glTxnksXZtdetddd+U+g/1bl2AOeMs7+qq77747 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 r73W2wa0q1apGT9V2ob3UvvBl3fnvvvu692Zv8yPNqYdereH2saa8VzOs9F/762dbvGNH0pNWX5V 39PB3kF1qR7vuuuuLBteMd75Xbt2Jc+CqsiwGT+t9FGRb32uJXChJfDU3mUpjnZ18ctXzE5HD3Wl twsbVF166SXp9vuuTJt3LU2P7Vicbr33ysR1ukhXXHVp5mXB4mnp3g0L0tbdS9N9jy1I02b010+4 HG94bnF+LtyMWf2fy4NLMnr8e0t6yyf9Il254LL04NarczqPPHl1ku9gdNm0KTkt+Rcp5Oc8kAyr hCmmOZGuQ++JModxB86pSia2jStl/YoOfe+99/ZLhi63fv36PM57Vo4jcJUwxUThMfmX9UR8Gefo mPSGoY67xbyqXlcCtxjnmsuCyYWX5ZT1kqUVGKX8OAA+wNLB2vrhD384K4ascQ7ABbAUlnuyz/9w VfYf+ARGAzD7L7z/DtfSBFoBWlbbAKx4wJN8pWHNrR2XDdoOjQT4FZ8lWRjpBZWBatx39nkh4Fk6 iEVH4wOai8RtUTrkI45wgH4joiyzCBfdZhuFmyj31IVD46ecqtsXXnghXXPNNdnCPxQ5aA+DARNK +7Zt2wZMmtIJbGub6Prrr888Wo89FFK+6LQaxV+0aFGeFNHWrM0tkvYkvjZTJJ0SD4ggQIkMdZaU ZxMEAGUjougHeCGr1atX9waTrnjS1jFxqdcZFhVigZvJUEen8yTLiP/www/35hMXAIN3h6XUUgRh Q+4RxrmZDIthG11X4edb3/pWBvXiAwIAnOMzn/lMoySb3huM5ypybqVOB2OmSjreFxMi+kvtBwjU Fn1TM0gdWQ+EXGsDDrPNrVAVfqTXrG1YF23A3LRpU9qyZUt+Z++5557zWDFhpF9RLstStO/o088L PMCNqjwPEL3fbX2LSVeys6Z7IH4Ge08l2Owd9F7Jx7vO1e2ZZ57J7vVF9/WqMpTfQPzEJ+WKY553 2P9GbWOw96KfoOo/tQQGkIChOY4BgjS9zbX5xW19y5eaRmgSYMHSaWne1R3puS39+8NV98xNc+Z1 pGc2H087njyZ5i/tTKvuPn/dsORXrp6T9u46ldbefjDv4rzitr5wV119Wbrlvrnp4N7TafuG46lz +uS0+uH++8Y8uuZwb5nW3XU4u28r58njfR5xAPPd6+elrlNn05avH0vHjnan1Y/MS7Ou6A+Ai8W9 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 FSbLT7/fNzuOeJ7ktHLN/LRn+5H00N27q9vPPXM4rVm7KM1Kp6SX06sI7OWUdm9/KS06e2ZtOjh0 9JV07rIz0s5tL6UVq+amA/umdtPVXO7lejAS0G43bdpUHVIAPG+77bZqIpEXTDvSfwOVsIlJRziF noK53NPO4Rt9P08OtoLlSKED2sXb9D7e2GTiEz/9yE0Z/wbWgWrPzNjCRYGvYAW6aND2W2PrkAHK vQXjzohxilFCpihjxFBGCDeAL/AnDANVZhWA94BboDMnBcOdjrCMMrSjVvzUwxJ8JyJ0hxFOPKso ALrKhufwaZc36eFZBVFp5IOxqICkE/F4Tzzy200+ePOuOGcinXvuuekDH/hA1SiBDXLjmr5mzZpk 4CF3M+5H/h5++OHRTtxolw5dGjt37hyNXjndeOONlbuV5/fdd9/os7gwW2hkbOXKlRVIMuP8yU9+ clw5PP3005Vi8M5Xv/rVeDVdfvnl49Lj1nXNNddUdYjhc9ddd/W8ARM5ypt4jOD5v3v37vSxj31s 3IBMp7QsE+DKaOSP/B988MF08cUXV23oqquuqlwFZaJJ3oULw8L12972tnEDUO5JizeENiI9df72 228f9163eICuf/Ev/kWllA0cvfOd76xA1913353+8A//sIqbTjHrqLyt/ZXPMMqkqQx7Ie+rH2Ts fZ3Kxo0bq1niiIfLzZVXXlmBwijTfGCsWz00KvnFL36xKk/1KMh79Ge0i6bl3q4syL6TfP7oj/6o 6iT//M//vNKz+PrFX/zF9M//+T9Pf/Znf5b+3b/7d+PKq2mdj/y0OjfNu3c71WfPm9TVpjI8//zz 03XXXVe1BxukfepTn0p52bTKS36Pgf3QQw+l97znPePa95133lm1fTOEQe3KK573Imcuarwn2rWv iLPduYkMu+nMproFD93y3lRvtMtPfr9b/cnDTvaaHpCeQXcGY91uaRL/5s2bqzpHvyFl85WvfKVy ef7Sl77UJIrRMOrzzTffXOmor3/96+k//+f/nJ566qkKtArEkPzpn/7pSr+qu7/9279d9YV//Md/ XNky7JXf+Z3fadTHjSba4aJfelX/GoRv9cmRA9y582enXc8eiWDp6Esvp0fvaw8CRgO2uLho9Znp sg8uqmZ/9+4cShvX70kvZhsn3f7Q+enA3qE0PPxKunj1/HT40HDauH5vBZwjuiZhImy3854dR9KK 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 --001a114dd06243fa1c05469448d4 Content-Type: image/png; name=pasted2 Content-Disposition: inline; filename=pasted2 Content-Transfer-Encoding: base64 Content-ID: <159bf8e9301d0cad2212> X-Attachment-Id: 159bf8e9301d0cad2212 iVBORw0KGgoAAAANSUhEUgAAA7wAAAPgCAYAAAARD3C7AAAgAElEQVR4Aey9D3BUx53v+5M0ghFI eIQlI9mSLRLhoCyqRfsgF2VNFrIma/KM6+IqvAW5+BakwAUpcMGWcUHKdgUquAIVuwIVU9fUhbdm F6pCVbgveIP34he4F7JiF96KBDYoD8VgS7ZkM0ayJdCARtKrTw89ah3NzDkzGv0Z0T9bnDN9+s+v v33+9Ld/v+7OEpE+sWIRsAhYBCwCFgGLgEXAImARsAhYBCwCFoFxhoBvnNUn86qT80hE55wckexs kd5ekZ4eb/UgfneTt7g2lkVgLCLgnyKSkyuSlSvSky0SzhYRn0hftkh2TuR5mDhBxJclcvtLkaxu EV+fyIRskbu9IncniBQUiXS0R2qXSx53RbJEJC9X5C7nvf1/xMoyxvg6gmMRFauTRcAiYBGwCFgE LAIWAYtAmhBQhPdX/9YiwfZwmrK02SSDQG5vu/T19UkvRFfgvNmSm5srEyZMkJycHLl9+7a6Rhyu +Xw+ddRpbvdMTqY4G9ciMKYQyMpqVvd5ri9PsrMnSG9PjvSERXrCPBOi7vecnCxFWHt670pWdlhy cvqkp/eO3An1yKSJU0X6cqSj40vJysqSwgenSm9fWNq+uCndPT0y0Z8rfVl9op6urF7pg/waMrGn 1PhlTy0CFgGLgEXAImARsAhYBMYbAorwQnZb20PjrW4ZUZ/83LD09PRIOBw5amIL2YXg+v1+uXv3 rvrjGuGIDptQ8GhG1NMqaRGIhUBe3x01oNPbe1uyxCc52RMlS3Klr0+kry9LEd5QiEGfHvHn+WSi P0cgvnfv3lbXQ7lfyO1bd2XixInqWWlt+VyyFMHNkptfdEp+fr4iub1YfJm/YVp3BWcK+96L1S42 zCJgEbAIWAQsAhYBi8B4QcC6NI9yS4azJopMEJkwMUd1xvt6+qS7p1vu3g1LuDusvDx7xSd9OTnS y399WerI7+y8iaOsvS3eIjA0BCZPmiqhrrvSdfeO9PZkS58vRyZOmCi+3InKYou3Q7g7S7p7QyJ9 uXI31Ct37uLyn6sI7q3OO3L7dkimTAlIbu4E+aTlhiLJxdMekkl5IjnZE9QiBVlRwjtQX4+TBwYm sr8sAhYBi4BFwCJgEbAIWAQyBgFLeFNsqjWLyqQo4I+mPlHfKhcbO6O/vZ7cutsnfdl94svKFsnh f5/05mRLjj9PsrJ65Wbbl5LrzxV/rl96s3qlt7tXHf15fhV+p2P4XdH9PpFNSysHVGn/iesS7Bz+ sgcUOsI/1iyukKJ8n9Rfb5f3zqc+1zNd+Yxw9UekuK5buC77JNeXK1k+vBpylYty913C+yTXN0Em 5E5Sc3p7e3qV+78vZ7JMnpwnU6YUyO1bt+T27Sa5ebNdJk2aJDk5PpkypVD8EydL2xe3pbenT/qE QSLmBmdL3z3iq+YIM513wohU0xZiEbAIWAQsAhYBi4BFwCIwSghYwjtE4HEFbwqGUp4DPakgX7q7 u+XOnTtyN3RXuXfqubq4LxcEHlBuzMxPxO25W+5IN9bf8G3JuZsjE7P6SfdTc4ukpiIgwfaQ7D/Z PMSa9SeH1p5vbBe/zyfVFfn9F9J0Bpk+eqZZmoNj3710uDBOE5QZl01Hx21lqc3zT5LsbJ+Ewz1y J3RXurt7oq7+ag7vvfnthYUPySOPTJOpD4pMmCDinyjyb/+WK9euXZOcnMlSUzNbSkomy+c3e+Wz z9sVYe5jEIkBpb4s6VNHyG9E7sotfWqPFgGLgEXAImARsAhYBCwC4xABS3iH2KhXWzvl7KV7K8Sm kNfdjjY1Vzc/1yc5/knKjZM5vfz19oZlQna2hLpuK1LMglWFkyaJzzdJ/Q6FQsO+p5TPJxIOi7xf H1TWznQR3lkV+ZLv98mFxn7sZpblS0mxX07Xp25NTaEJ4iY5ePJ65Nr4NmTHrf9IXJg2rVi5IDNf 99atW9LZGZmby9zbgoICuX27SyZMyFUDQt3dd2TS5AkyrSSyoPknLXflz2dNkIfLCqX1sw8lK/uu PFg0WSb6Rdq/+Fzu3LmlLMJ9Eo5YePuYNgDxjVh7Vf2shXckmtmWYRGwCFgELAIWAYuARWDUEBgx wjtvZkCqpwckkI8VR+R6a6ecuhSU9ntusabbZygkUlMZUBbNM5eC0tjaKYtrSqSiJF86w2E5VR+U huaI+/AT1QGpLgso8gQ56wyFlaXwZH1QnWtk51QGpGZ6vgTyIxbRYGdITpxvldb2sEC0aqsCUpTv F50Hltvjda0SSpLsJFuPP1xtlcKHHpTpj31Fyh+bKA9MEmFe4a1bIre6RP79wv8nvXe7ZUJulpQ+ UixVX3tEpj0Y2XWlgx1XbnYqPVcu7HexxtV667KIC/KxutYoVkm1QVikpiJftc/BNFqLdXvQ7jXT AzJ3RkBwmV4yt0Rhzz2BJItjMvcD5S2eWyKVJfkSCofl/NV2KS30q/uAdtf1XbVooEuz6cYeD2Nd P7cjD94cxzPRHOyUuivtAyzdXnWlbRdWF6liXz/a6Fa8JHUvDOPz2BvwS9cdkRs3RD76KChtbW2S P3mKPP74NCl7WOR2KLIz0ccfi7S0fioPFk2RvEkiTU29cu5f/7dUTH9Sih6aLOWPFUnX7TvSK13y WTAsNz5vkol+iG232mo8i/kC2p+ZCb2simU3IXe9T2wEi4BFwCJgEbAIWAQsApmOQFzCW1kSIYaN rfHdTL3EAaCn55YoV1i4I0QX0gnJrCjyK9dbSKoWyCvbcEpYxO/3KWLCXNGA36cIUcDnU+SoOdgo nSGR8kA+UeV6MEKAy4oieTP3Urv1ajdUyqAs/iAs+fl+CYRDsrS2RBWPS626lu9TZAiLqmLnWrkk jl7r8eXNVrkT+kIemTpRCnwiH1+7K+Hebil8YLJMLxL5ylOPy//1j/+PZPVly9988/9Q24t+2SVy M9grganZMr0kX1nIWtrDku8PK8wYUIDQI6F72CbbBlQdUkpewyFgffx8qyybXyY4SWPtPXa+VRrv DWToMr3imMz9sKQ2QnYpIxwSmV8VIYq6zHhHN4zjpYsV/lRtiVSXRdzDub8Zh4GAM6hz5FS/e3eq usYqU4cley8M5/P4p9sRa+0jZSKftPRIfkGuLPjWNKXqnz7qkQkTcmTKFJGyx0RaPr0jn9/8RMrK yyV3Qp985auPyAS/yEcfX5Oevi/lL+bMlp7eLPnd7y9I6E63+CdNUc9LR2en+CZMlizJks5bt2Ti xDyZNDlfbnV2aUjs0SJgEbAIWAQsAhYBi4BFYJwiEJfw1swISEVRvhyra5ZYpBeyu7S2TBHNxtbW uPBAPLUbLNZGCA1kCgseJHbOjICcvmfVIxPmqe4/0azirFtcofJFyb3HGxVJxZJJ+pKifJXXsfPN gkUYwgBBhfBiLYTQFgUgrFgqAyqfS9c75d3zEV39xBdfJA7EMCyqrvd4oiJgWP9SFa/1eGCST37/ +w/kf9/ukMLCQlUHjr1dneLPmSaTJok8/liZmufYc1ckGOyW3/72txIMBtUiPVlTv66slNRLE/v2 zn4rJfon2wak2X/yupqXDNbDIVjcsUiyIFSgIqCOi2uKpLmce67/fvKKYzL3A8QSqWtoV/ceZFvf a4nqmghj0jmxinf7cF9qsqt1wJLLM4EueBscPdOq2s2rrpBmPCHcJNl7YTjwN5/H0//vZRHpVe7L H310XR59rFwtL4WXw0dNV6WpqUm5JQcCU6W9vV1KppUqN/5pJTnySHmV4KHc/sVnUv7ow5Kd0y1/ uvahzK75M/lq+VS53Sfy+9+1yvUPP5auOyGZkJstubgwZ3VLb98dyc7B1XmYbnC3hrDXLQIWAYuA RcAiYBGwCFgERgSBuL09SMey2hJFap2kV5NdXDBNchJL45Ki/kWVyM8ppZBSQ67fs7ISBGGARFxp 7VSElMWYtEAQkFllAUUQIApOIcwMv3C1f24oJBk2HG4Pq7xJvmFJpbLw4tZ6palTLl93JxDOMvVv r/WYVlggFQ8/JJWVlVJeXi4TJ+ZIXp7I7dsiD0wRudkm0nfnltzp7pLw7cdk+sO5Mn3ZAlXM7S6R 315uddUz2TaAOLE3MxKPtOl6pnrEIr//ZKeyIldXBKShibnQQSkxVr4mb6846uZ3ux9YeEtLQ1Nk /jBWfSzOFfe8GvT1ZI54KyxfWDYgye6jjcr7YECgyIA6ah0YcLnWGlKDQ2X3MGDQRouOF09XBpKc 1nGd1jwmey+kG3/n89ijtuAKyYNFAZlWUiQ5OX3S1SOSlyOy8C9nishMud5yS778olP++Mfb8vEn H8np/3VLrb5c+nCR/O73Z+WhaQGZNWuWfPHFl1JaOk3KSqbK5cYW6brTI1VfL5Ob7W3S2fq5ZGVP VG7OLIzV03NHsrKh1f33g4mTPbcIWAQsAhYBi4BFwCJgERgfCMTt7UF0jhqk9+SlVrneGiEFi6pL BLLL9WQIEda8CNHsB6+9q5/EEtoVI8NwV2xLK9bcRTURd1TmcEJSmSOs5zLGrVx/8UqfQyevy+wZ ASkN+FV6rGoRy5o7mTSyGnDqtR43P2+TwqIHZfafV7BrigQ/65Hmls/FJzlSMOVBmVoocifcLR9/ 2Cx92Vny1ce+IoGiAmXRZgcXrNki3vVMtQ0GVC4NPzShJqsr19vVQAOkD4JlilccSTOk+8HLzWIq NprnadI11Xshnc+jzzdBPv64RfLzmZvrl2DwpvzTP52RktKHpKbmazLRJ1JcPFkeKZ2sVm6+evVP 0vHlbfniiw4J3emS0pIyWfSdBdLZ2Sn/859/I/9l5X9RFPZX//e78n8uWSoFE0QmTcqXnp7P1OJw 2Tk50tNzV3r7wpKlFrAazYa0ZVsELAIWAYuARcAiYBGwCAw3Agm7zibpZdEoLczD9Up2sZZqCbaF B6zKW6KsuwlV0EljHnHP1HKyvlXN6Z3t2Dan1SBQc2YU9bs0+yIu0LhsQrRYhVjLqkVlygpXVuh3 tZ7qNKkes/MKJCdHJJwtcisk8q8XL8tnwU/lkdIyKX/8QdV5nzD5AfE/0CW37vbK2fP18nlbUB4t e0y+VvW4/MX0AnHqqeYeGwoNZxsYxaR8+p6BfcqZ3HPd1unj3Q+ml0Bleb60trerQQ5tVdXp3Y5O jCHqXhaLIl+zPWaWB6S1PagW7pp+z8LcfO+ZSUbXyrJ8tSgb+eMOHU/MssfC83j5Wq60fX5besO5 cruzR3J9k6Qgf4p83PypXL/WrNz2v/71r8vMrzwgD0wpkoLJX4hMyhHpbZO+nh75i5q/kJzsHGlu +ly+aLsjufd2HMqSiTIhd3IEhj4WrPJF/hTJzRG16XU8kGy4RcAiYBGwCFgELAIWAYvAuEGgnzHG qZJJellQJxmyS5ZY8pg7yzxerLFV5ZGVcVm4CsIaWSk5TuEuwWbnnVV3b7SHpaZy4D6xzG3EksW8 QXSYXlJxb2Eqv1okifmuaxZVKBLCIk0slKXdals7+sm6iyopX8574EG1HUtXr6jtVKr+/M+loqtb Jk3KVXMVWWNWfJMl8NDDUl39uHJ37uwUefBBUdYvLms9ITBSIYrAMR8UMs/+tsPZBilXfBgSer0f cNnGgj9/ZlF0hW+v6sTDWM/99pKPao/mTjWPt3ZmQGaUsUWTqH2O8WVgpWZEz8v1oivPUsQrIbEG w3kveMXffB4fKMmXv/rWI+LLETn1v1qko6NNvjX/65KXK9LUinVW5MEpkToFP+uQpo8+kwemTJXc nCky5YE8mZznl386Xqf225319bnS3Nwj08tyZOl/Xq68T3iEb9/qlZxsv/T2ZklPuE/6+nIkJztX bf2lVrVKDJm9ahGwCFgELAIWAYuARcAikMEI3LOHJK6BJr1nGoKeLbtmjiz2w3YzdOCZQwhxhmnT 8WXuZKrClkInlGU3rPIsL/EL2xE55b3zQRWOxYw5nGw/xCrGnZ0htYox7tCEYyVjLibEF30vNqY+ h9epQ7zff/r4M/ndHz+Q+iu35NNOkb6JIrkFufL5rT5puinS3i3y5d0+9dfWJZI9SaRomsidLJFr n8kAPS9fb1cLF9FeEKAIcY+MaQxXG8Sr12iEe70f2G6KNgcnpvSeuRKMrvJNWCJJhHGidM5r79X1 PxMRTwWfGkwyV2gmzVB0dZapfw/XveAVf/N5DHWJhO+K9PWK3OnKlk9b2+WTjyNbcz1cIjKlQCTY JtL0iSiyS5zsrDwpDJTIjMoKKWJR92xWXO6V251Z8i9n6+WDD0VmfjVXHns0V678R0i+bL8jOdmT pK9ngtwJiTrmZOdJX2+uhsQeLQIWAYuARcAiYBGwCFgExikCWWxFeeB/Ng1wsxyndU1rtcw9WckY 4p0KQS6e6pMrV65ISUmJ5OXlqbmIfX190t3dLcXFxep469YtmTBhguTk5EgoFFIrNufm5srNmzfF N7E4rfWKlRkLQm1aGtnXV1/ff+K6GsDQvzPpyMJJbNekuS3WVSziDHqcb2wf4N4+2vXKJF1TwWpG 8XT5/e8vygOBKcq7Iis7LJMmT5Dg558KC1rl5+fLZ58FpejBaZKTPVGyhGWWfdLe9oWUlBbLjRsf SuHUfDWnl/JzfLlqpfO8SVOk5bNPZWphsXTcYluiSZKVxbZEIZk4caKa18tzJbksXGXFImARsAhY BCwCFgGLgEVgvCJgCW+KLTtvZkDy8/o9wllleCjW6hTVGJFkWEEXVA/cq/bclaCaMz0iCqS5ENqu dkZA9FxZFruC7LIN1cGTzcrCn+YiU84uk3RNuZI2oUXAImARsAhYBCwCFgGLgEVgmBDoZ2zDVMB4 zfZcQ2Se5Xitn1kv3HzNRb3Ma5l4jmt7eyis9pmGzLPVz6XmTjl7JTimyC7YZpKumXgvWJ0tAhYB i4BFwCJgEbAIWATGNwLWwju+29fWziJgEbAIWAQsAhYBi4BFwCJgEbAI3LcIKAvvtcb6jJ2Ped+2 nK24RcAiYBGwCFgELAIWAYuARcAiYBGwCCREQFl4E8awFy0CFgGLgEXAImARsAhYBCwCFgGLgEXA IpCBCCgL75o1azJQdauyRcAiYBGwCFgELAIWAYuARcAiYBGwCFgE+hE4c+aMFBQUSEdHhwpUFt6K ior+GPbMImARsAhYBCwCFgGLgEXAImARsAhYBCwCGYhAc3Oz1NTURAlvdgbWYZDKy5dWyTtvLZFl S6oGXRuNgLGmz2hgYMu0CFgELAIWAYuARcAiYBGwCFgELAKjjUBK2xKtXV4jTy+ulOKAX+obWmX3 3gtyralt1OqyftUcyc/LlRllATl6/EpMPepPrlbhNYsOxLyezkAv+qSzvKHkNZK43A96DqWOo5k2 U+6D0cTIlm0RsAhYBCwCFgGLgEXAIpB5CCRt4V25rFrWra6R8tIC8eflSm1NuRz42VNSXOwftdof f79RQl3dcuy9hlHTwSx4rOlj6hbvnP1oM0EyRc9MwNLqaBGwCFgELAIWAYuARcAiYBEY7wgkTXOW LKpUmGzbeUbOXWiSH78yXxoa2qWtLTRqWO3aUyf8jRUZa/p4w4VbIewt6qjGyhQ9RxUkW7hFwCJg EbAIWAQsAhYBi4BFwCIgIkkT3vKSfAXcqbprEgqFZf2WkxbIcYAAltNwBvDdTNFzHNwStgoWAYuA RcAiYBGwCFgELAIWgYxHIGnCixszAtmNJX6/TzaunSuLnois/Hzq7HV54+3z0fhv7VosxAmHwlJd XSRHjzdISVG+VM8skm2vn5X6Sy0qW6/xcLHevHZuVBXnHN25NaXy9q7F0et6riJzjp9dfSwazkl5 eYFs3fCE0oX6oduBI/VJEUE3fShH67Bl+ynZsmGedIXC8tru/roPUGqEfoB3VUVAbrSH5O9ee1+u Xuufkx3Vd+cp2bJunoTDYXl191k5Xx9pq8ICv7y0Ya7Mn1ehrtVdaJbd+85Hrf7R9HHq6/P5ZMvG uTJ/TpkE8v1y/jLzws9JU0tkKXETgje2L1Lt09YeGoCZed9BiusutMrufXVRHcgjHe1r6jLU8ygu cXB1q5PXZ8TMB53NZ9Lr82HmkSn4DrV9bHqLgEXAImARsAhYBCwCFoHMRyDpObxuVYbsLl9SJUWF eeqPlZMJM6WmqljoaPt9ubJyabUsmj9dSooLZOWyWWY08RpvQKIh/PjRpiektqZULYCF/uuer5HN 62uHkGPipDu3LVQYMR9605o5iSMP89UTJxtl/5HLam72hji6bN/yhNKXttq5dYFAfJCf/GihLF44 Q+EWKMhT51s3DMYtXn3Xr66RZYur1D3AgMr8ueXy9k+fUgMjzmq3t3fKydONSk8TM/O+i+gwXZw6 jHT7OnWP9zserl7q5OUZMfPhvo71TMbTTYebeWQavroO9mgRsAhYBCwCFgGLgEXAInD/IZB2wrtw XplCce3mE7J2ywl1vnDewH1+2zu6BOsmYp6XFA1c+Mq8Zp6b8Q4dvSROq67K+N4/WCHN65zz57Tu Er2qskilem79MVmx/ricv9Qix080mtm5nrvpY2awftsJWb05gtGMioB5acTPWd362LuRFa6xtseS nW+cU7gcOnZJnv/Bu1HL95v7LijL/DPPH43WZ+7skkFZxKvvgnv3x/ptJ4U86upbZOfec1GvADOj 7W/Uya63zqsgEzN93z239li0bWtmDdQhHe1r6pKu83i4eqmT+VyY5+YzovOJ9Ux6fT50HpmIb7ra yeZjEbAIWAQsAhYBi4BFwCKQeQgk7dLsVsWi4gIVpf5KxN2VH0XFeQOStQRD0tzarsLM86jJ8F5s 85p57ow3IPMh/Ki72CoLa8tl6eKZsv9QvUAQhlO0SzBlaFdxL+VhTd25bX7MqLgBQxq9xHFm0NYR WXgsv2Bge+l4J05dUy7LV67e0EHqyG9N3LUbMlZAp8Srb2lpZKDjfH2TItHr7w2UONPz23SlNzHT 990v3l4aTYY105Shtq8XTL3EMXXiPB6uXupkPhfmufmM6HwSPZNOnZy/dR7Dia+zTPvbImARsAhY BCwCFgGLgEXAIjBUBNJOeHWG5gJIOmyoyg53+m07Tyn366WLK5WL7dETV2SPMf94uMsfK/nHay/m 7saSwkK/bFozV2rnlCmX51hxEoXh2o7EyT5R0ug1rbNpzY9evHcyVts3Hq5e6uSsY6zfOh8TXx0W K36sMB0/E/GNVR8bZhGwCFgELAIWAYuARcAicH8goPuxnmvLfrdY1ljExrS26QygRGSq53cSHpsm 6RRj5wghYEuh/QfrZeXyalm1rFqKAv6o+/VY0fTEqavCXyLxEseZvsAfuR2Sba8fvTRfzbvFhR0r rl6MyZl/vN+hcLeaz03pyZat8zTvO5PY6esch9q+XjD1EsfUKdG5lzolSq+vmfmYYfrcy9HMY7jw 9aKHjWMRsAhYBCwCFgGLgEXAImARSAaBpOfwNrV2qvwX1k4XVudlpVhWSWalXSR4I7Kybk1VqdRU lw4IUz9G6R+IOjJ9eqEsnD9dHU1VWMjn5C+WyZJFM6SjKywnz1xXl1k5+H4QFop6Yv50VdXOjq6k qjz33lxZBkBYjCxZabkRcaWurS1Xi1G989YSqZ1bnlQ2+r4jHYuAsUAWRy2Z2L5uddJ1czvqfBI9 k27Ph85jPOHrhpu9bhGwCFgELAIWAYuARcAikPkIRFhqEvU4frJREVxzDmlVZUBYyOjGjbCcOtes Vml++43+rYAIGy7Zs3ORsi7q/LEunqprks2vDtwf+FJjUOZWl8ov783xxKq4evN7cuVKZD5qaXG+ MO90+5b56i+aX0OrPvV09KqPp8xGMBLb/Wir/KWGYFIlX21ul+oZxfLOniUpWWjfO9moVsTes31R tNxXN82TpatbYnoRRCMZJ/q+M/MoKvJH52Gnq32NIof91K1OXhXQ+SR6Jt2eD53HeMLXK342nkXA ImARsAhYBCwCFgGLQOYikDThPXLskuT5fLJ0SaXaM7W+gT1TL8iNe1Y65ryS6aIFkZWZT56+rubB jjZEr795TrZumifVlUXSGQrLkWOXo2QX3fYcOC9NNzpl5dKZUlqaL+1tIbWX696DkRWBR1v/4S7/ 1V2nZPO6yJ7Ae/dfSKq4HbvPyo+2LpDyknx56+AF2ZLkVk4HjlySQKFf7d2c7/dF9+GN5TIfTzHu O4T9n3G3Zy/g1/fWRaNnYvu61SlaOZcTL8+k6/MxDvF1gc1etghYBCwCFgGLgEXAImARGAcIZIlI X0XFwG2DxkG9bBUsAhYBi4BFwCJgEbAIWAQsAhYBi4BF4D5DoLm5WWpqaqSjIzLVNuk5vPcZXra6 FgGLgEXAImARsAhYBCwCFgGLgEXAIpChCCiXZliwFYuARcAiYBGwCFgELAIWAYuARcAiYBGwCGQy ApWVlQPUV4TXGTgghv1hEbAIWAQsAhYBi4BFwCJgEbAIWAQsAhaBDETAujRnYKNZlS0CFgGLgEXA ImARsAhYBCwCFgGLgEXAHQFLeN0xsjHuIbDx7Y1pwSJd+aRFGZvJAATS1TbpymeAcvbHuEHgwIED 46YuY60iYw3bsabPWGsvq89gBDL9nnn17ZrBlbIhFgGLwKgikPS2RIm0nT9//qDLZ86cGRTmFjBj xgwpKSkRM21BQYHgeu33+yUUCkl7e7tcu3bNLauUrlPWzJkzVdpwOCyNjY3RVb5iZUi9ta5z585V Ojrj6evOcPt7aAisfmO15Ofny561e4aWUQqpd9Xtki21W1JIaZMkg4CzjWPh7gzjt1OOvXFM6o72 b1XF9S2HI+23a8XA+Dp9uDMsjfWNcnzvcbnRFNmz25nvWPi98+QV2baoaiyoMkCH+vp6tUrigEAR 8elNv50X7v2urq6W7du3q2e7paVFduzYIVevXh0Q20ucAQkcP9Dtm9/8pnR1dTmupO8nZXzjG9+Q 7u7uIWWaTD6JsH311Vdl6dKlShdWr4wlXsmogDAAACAASURBVOLEShcvLJE+8dLEC493P8WLP9Lh w6HfcOQZC5ehPk+x8kw1bKj3TLoxW7utShYsKRlUndPHW+XtnVcGhae1Yz0od/eAvLxcWfVSpVTW BIRXbcP5djmyt1Ha2ry/h8w6r6g95V7oMMQ4XLdQvv/ts9LV5V3vYVAjI7OERy1fvlxxqWAwKA0N DXL06NGkvkXvvPOOvPDCC8P6jRxJcNP+XA6V2OXl5akGMkGAgM6ePVtYXEuT3OLiYuEFfenSJTNq Ws4h1pDctrY2oRy9pLWXzM+fH7hvb25ursyZM8dL0jEfJ12kMl35FJcXy8zamXJk+5Exj12mKJiu tklXPkNpY7fBiLyCPCkqL1JNw3lXx0DiQ/qCwgKZt3SerHtrnby5+k3puBFZ3j5T2nOs6vn8888n VG3Tpk3yxhtvqIHExYsXy/Xr1wfF9xJnUCJHQFFRkTQ1NTlC0/uTQdqhEl408ppPImwZROAPQhBP vMSJlzZWeCJ9YsW3YaODQDqep3RpPtbuGUitJraQMDcC+Ora+M9XujBKlM/ydRUSColsXloneQW5 sulHM2XNKzNl12bv/WVdZ+o7mpIf8FnCm2QDlJeXy9atW+X999+X119/XX1/GODcsGGD+q4mkx0G peEcFE5Gl6HGHXMuzewJ3NnZOahejFBossvFGzduKCsBBDndQscCsqvLGUr+gUAgZn285Lls2TI5 dWp0Rta86DfacSAiofaQXH7/8mirYssfJgSGs43LZpYpbxE8RjiPJR1tHXLywEmpP1kvC5YviBXF hg0DAoxOX7hwQeV84sSJmITRSxw31Xg/D7fwPUmHpCufdOhi8xh/CKTjecp0VBgISjQYlCn1mzWv SE4ciQwSdnV0y94dDbL3hw2Zov4APQOBtNvlBuQ/Xn/w/Tx8+HD028l9zQBvaWlpUlUeiW9kUgoN IfKYIrxYcmkQ52g+FtYrVwa7jdABGKrrSyzs0plnWVlZyoQXd2o641YGI5Cblytzl8yVumN10Qd6 cCwbkskIDHcbV1RXSPOVZvXHeSK5cOKCVM0bey7DiXTO5GteRpW9xHHDYCQ+5uiZDklXPunQxeYx /hBIx/OU6ahoN/9MJ72BYp8EW/s9ljraujPWSppflJ4Bw0y/N5PRH6+lt956a1ASvnfJDpyOp+9O UkMn06dPV4QUFLHC4vabjKuWW3pt3dXW1UGtZQSQF2K6G+M+zNxb3aCQRXQ0zfGJdGCEk7nDiDkf +eLFiwPKIR43DsQ4ljVaZSAiEHhuFnznvQrlbtmyRbBqoD+kd+HChbJkyRJV5urVq71mJeDx9Ian ox31S+cuyXt73xvQZsxV3Lt6ryx7aZnkF+dL67VWOfr6UWlriVi4KWzFqytk9uLZqtxYbqK4fT61 7impqq2S/KKBnTszvls+6LJv7T6Zv3y+VFRVSLAlKEd2HBmgi678nKfmqHY+d+ycDlJH8mCeZvX8 arl+6bpqo7LqMjlz5IycOhyxlqPnolWLJFAakFBHSK5dvibv7n13gEsrrrRLX1oqJeUl0tnRKcff PC5X6yNzCJduXiq1y2qj5WkF3lzxprRca4n8zBVZtHKR1DxZI748n1yvvy7H3jw2oAwv2Ou84x3v xzaOh0Wy4dNnTVdt7xOflM8sT5g82BxU90vCSI6LzKutO35EqucslOsN9eLz+6SsskbOHDsoZ45G Fm2qmjtfFi5fJ0Vl5epdcu3yeXlv/27p6uh3nS4uLZclG34kJRXTJdTZKcf2bpdrlyJTJ5ZsfFVq lyxXJVOelr1rn5GWa/fmvObmyqLla6R6wRL1PFy7XC/v7tsxoAzS7lv/rCzd9CMJFJVK6/WrcnT3 D6Xtxr37WWec4Ii3DW6RvMN4Nzrn3JIUd1neZYjuXJpZbtu2TfBsQcxO53PPPRfNz0scM89E5ytX rpTNmzerdwlzhV977bWoizPlO3U0wzjH9XLVqlVSVVUlpP/hD3+ojmaZ+ntEGNNwcNVetGiRGcXT uVs+bth6KiSNkdz0ccPP7X7i3Qf2uLyDDdOJdu/eHf1Wk//69etlzZo1gotfXV2dcu/T/QEv6RO1 bzr0S5R/uu5z6vnSSy9JbW3km8W0szfffDPaD0hXOV7wTqQHt95Q75l01IVnnrrw53z+3R6P9a9W yROLI33IWG7PuAe/tvaCLFleIRVV+RJsCcm+HQ1yoyVCTnNzRVZumCFYaJGL54JyZO9VSXYJAL/f lzBNTW2xLF1VJkWlfunsCEvj5U41x7ejw/tcWbc83OpK/QoKc2XN1plSMSNfxCdy/UqnHN3XKE3X +sn6kuVlgou2P88Xwev1BrnRFLnupoNbe91P1/XaDUwNTUb4XjMXmHcsnrb79u1THrbkwbuFa0w5 ReBKR44cib5bmAPsnJ7gDOM3313e5Rg80W///v3RMsgXqzTX4WdwrkOHDsU0giolEvzj2cLLBwPh o8IfZIy5rlOmTFGKUXHI71/91V/JE088IX/2Z38m2dnZKt6DDz4oWDp7e3vlt7/9rfoj/SOPPBJV DXIIiXRad6MRjBPm1ZKfMy6EmXy1jpBF4mmJVwd9nQ6anoPMUf+ZpFoTbcrgA5pI0IfFtfQHNlFc fQ1yzA0DcedDjf50yFpbW+XgwYM6mqfjgpULpCBQILu/t1v9FQYKhTCnLFy5UPa9uE9ef/Z15SJc VtmPGXEPbz+ccHGmZVuXSevVVnnz+Tdly7e2yI5ndqhFfi6euDigKLd8iDx/2XxFuLcv3S6Xzl6S pRsiC6wMyIh4S+fL5TOXpe1GPzHXcQhnvuWsRbPk1NFTitBDorXMnD9T6k/Xy/ZntwuLFUFmlm4a WM7iNYvlyGtHROlx+lKU8JMHix9pIs9R/0XJrogsXL5Q/Pl+2fVfd8nO53ZKW7BNDT5oHfTRDXsd L97xfm3jeHgkE15WVSbNl5rVwIibhbe7q1sR1mTyJ27DmZOy98XnZNbCxXLm6CHZ9+JzsnDZqmg2 M2sXyqW692X7974tb6xeLO2tzfL0ulei1zlZtGqTHN39suxcsVAunT0hcxZFCCPXju/ZHl2sikWr 9F+U7HIv/udV4vPnyxsvPCO7vv9d6WwPytPrtg4ogx/zl6+R/S9/X17/3neks71dyipnDYqTKGDd unXqMgTkmWeeUYN1zvgsiJSoE7lz587odeLpP5M8e4njLDfeb74XfJDR+fTp02reU7y4scL52POx 1unp0DtFE1U+2rt27ZK3337bGcXTb7d83LD1VEgaI3nRJxF+bvcTgxUMKDMYwv3Gt9aJP528H/zg B/Ld735XDcLoPKmml/TDrV+i/NN1n9NRpG/17LPPqj86lYRpSVc55JcIbzc9SD/Ue2YoddEkl6MW 81yHJTq+tf2K6/zexcsqZN/rDbJxaZ2cPxuUlRsqo1k+vXK65Af88vL36tRfIOAXwtItNfMDUnc6 KOufrZMtK85LS3NIVm7q18NLeV7ySFRXyli2plLag2HZ+Fyd/N2zdRLqDMvCJQP7n6FQWF574WIU r1WGnl508FKX8R6HxXR5Nk0y6rXOfCP5xm3cuFFxK/Pd8fTTT6t3y8svvyz88Z556qmnvGYdjQep Zq7xiy++qAgt3MkUBsEh2loH0yBpxnM790x4YdbmyADnVA5r7MSJE1Xnhk7Jv/7rv8q5c+cUCf7K V76ilP/www8lKytLvvzyS/WBgiRDhvnT4tW6CzGGDFI+I+qmoI+pI27QZkcpXh3MPNzO9QiEjocF OZYw+os+ENVkhLnJ+N0zUg1hJz3Em46SJuNe88O6eOJgZP4bgxEnD55UFkdn+vPHzyvLI3HeefUd uXTG+8IG5JUfyJczR88I8x2lW9TCPmcOn5GissgopbO8RL+P7zsetYJeOH5BKmoG3viknVEzQ4pm FKkyY+V19fzViC4icq3+miLFpuX52K5jgn7oipw7ek4tfmXmxZzOcCisgpjDeXTnUfOy6/ncp+bK 6UOnI2V0i5w9claqF1YPSjdU7O/XNsY6bv4NAlZkwPUZc2cMiIIF3x/wy/XL19Uf54SlW67W10lH W2R1Z6yyWEz9hf3PxbE92yPW3ntD+OeOHZGq2v7BGfQpq6yS8L2pDSffeUuOvvFqUmrWLF4qZ4/u FzXk392tzqtrB1sY60/ggdAh3d1dcnjnZrlUdzKpcvBEYeQVYZCPd9hYFz6yekDz2LFjygKbjM57 9+4dkD4WmYeoMlDKSDYdaFbKTEXSlU8qZQ9XmkT4ud1PdJIYBOa7xR/npDGF/LkXuY7VwLzuNb15 f5jtmy794uVv1mMo5wzG0FnUOIEDYcMhifBOlx6J7pnhqFO68zyyr1GYV4uwynNlTb9XXO2TRXL0 IJ6Tkdf1sYPXhbB0y4FdV+XE4aZoH+j9o80yuza5crzkkaiu1Gl2bUCOH7qu9KDODBi8s2fgavwH d/fjdfZ4q8ys7l93wYsO6cYu0/LDI5WBvvfeey9pDkFdea9qo93Zs2eVoVNjgNeIXvmZ9wvf0FTI KNxGv6f37NmjiLUugyOGP4g3QhmpDhp7dmnmYztv3jxTB3UOaZ06dap6mUJAqfTdu3cVCcbNCxeu mzdvyl/+5V+qFZUhu319fTJp0iRFgj/44AMpLCxU5PDy5cSLD0EiZ82apczq5gJWWil01A2jw8xj vDqYcdzOnWXEKw9yTQNBYJMV6vnTn/5ULVjFzQYBZjVq3JyTEVagvdHcX35Lc0t0VVozn+aG5Fwc zLScgwmW2YvvX5RQZ0hZNmc/OVs6g4MXH3Omdf42XalZNRci4hTcibEoQ2bTIbShs5xga1A2Hd4k p945JRfeuyBY+JIRsH/l1wMtdbHSDxX7+7WNtYVdYwr5dYozjnmdAY3gtWB0cCXYFJSSypJR33qo q6tD/Pn9H3R0bg+2yKb/9is5dXS/XHj/mHQnuY1OUWmZbP3Fv5jVj3ne3Oh96kWsDHjnmQN8w736 cSwdCOMjHGv+Etd4j5ouVuagKcQj2flKzvQMcjpFj66DByPlWpLRkzTx8tH5ZeIxEX5u9xOdoN/8 5jcJq23egwyGk6cWL+mHW79E+Ws9h3qknqYhAM84woZD3PBOhx7DhZk5mKEtu2ZYuvDS7svkB/HF iqulpDxfWpr73XmbmjuEsOEWtv1hNeShSKw8EtWVsgJFfrkR7K9vrPLNPHC59ufH1zOWDrHyvF/C 8IZlmpFewCqVepschm8k/X0tvE/N55HnH6NgshLPcKjzwXvnxz/+seJAkO54vEvHj3eMf+fESBHL woh1l79bt24piySVRRmIL4Tvk08+UfNocXPG8gs5Ji6igdOdDKy8uEnrRaN42egXD/Gx7OK/HWsB qxjqxgyKVYeYEYcYCA40UirCTURaPR+JEU0GD5IlvMyJ0FZMpQecLUaLd3T2zxdMRd/6s/WyZPMS 9YdVtL2lXerfr5dDOyLWnlTyjJemsLhQZs2fpdyK48VxC2dA4clVT0r1gurIvMwYmODOjJvz0i1L ZfHaxWrroyt1/XMk3coA50SES6cfKva2jTWSyR3LZpSp+bs6VfPlZsHF+dKp2N4NLKClLf46TTqO eXkFsmDlOqmet1ACpWVsUDso2yOv/50s2fCKLNn4iixauU6O7t4mV84nsb+5zxd1ex6UuRHQ0Zna +0pnwXub9/5oC1NNhqOjmmq9cJ2FaPOdMzFKVs94+aSq11hPZ2IVS1euJ9PO3Juk0ZJsep1OH9Ot n8433Uennk4c0l2ezs9ZzmjpofXxetR9zmTuLa95u8VTt6f5Cu2O+Ulwy8b1Ovv0Ll1VIXMWFKl5 vMZj4ZpWR0hHHoPqqzP3eEyHDh6LyshobEPEIDReHSMlPOfJivZyiZcODoQrNd9AXLPxWEllS9qk NNPzdE2lIK+4KyM5OTnKTbmnp0fu3LmjCC/zZjmHxGHdJQ5zeTlOmDBBxWFUwBwZJC/M4vrFw2/m P0GQ9VYVqsAU/olVhxSySZiEMtA1VcKL9Xrt2rXRMrDwpiR45OYapJfziJfuwOzMF+zAK55+zX1y rhzadiguWfCUicdIapuaUEhZXT0mGRSNOcdNDU2y94W9Uddnp4UQ92zcu0sPlgrzeVfuXKnmJjv3 ah2UuQ4Ii0CSXC3DQ8RetadtY42652NpZalU1laqlb51osa62NMTuF5SUaIswjpuuo4sEtV09bLs +7vno67P5uJTlNPR1iaHt2+W4vJ9snjNBln+6h55fcW3Biw6lVCfcFhy8/LcLcNDJKtMwRiJ92vC uo7Bi6zBwHfr7//+79U+iExPSUXSlU8qZY9GGrf7iesMXnod7ScuabQkm16n08d066fzTffRqSfP qIlDusvT+cXC23w/jJQeWh8vR93nHA2yi37q9nR8z41b1ksVVBzmvbIAVrxXOgtFXWtolx0vXJC2 tkgnhEWmkpF05DGovskoIKIWvBpqPZIsMmOiw6EwvDG3diQHoofj3QIhxtUZPsl8Xog88329vvt1 o/VPotUhcY5Ya7VF1oyigcR0rq27t2/fVqPZuHd98cUXyoX5o48+UsnIB5dmyC7E16tAmHHF0eXF SkfevGTjSbw6xIsfK9xZRqzytMU60QrOsfJOdxhumsVl/fMSS8tKhbB0i7/QL+2tQ7MOedGJD2Tt 0lph3qsrkUyQIfN5WbFZzTmOEy+vIHIfsRDVgW0HpPNG56A5yYksfspFtqLffS5OMUMOtm2cGoTM L2dVbb3gGAuuBcoGu6Pq3BloYZXzdEugiLnoB6JkN1b+eQWFKvhG01V559WN0nmjVYrKBs5t13N8 Y6UPtjRLSVlyC5LEysctjBUc+QZoSXa/P51urBx5f7NmhBa+camInp9Ex4OPNdN8UpF05ZNK2aOR xu1+wj3WubiJU0+9UCXh9CFMl3sv6Z35mb/ToZ+ZX7xz+hxDEeppujCDmelaPJS8nWnd8B4pPVLF DKI7WmQXLFubOqW0rL8PW15WoMKcOLv9br8RlqKS/nxYDZk/LYEinxw/3BQluzo8mWM68mgPhqS4 qF/PZMonbjp0SLbMTInPTgDMr3Wzng6lPrxPze88zz/vRS08h+Y3lOmrqYjOA8MouxxgTDTfJV7z 9Ex4qZj5cWEiNH+QOyoFGX744YfVfNxp06YJnQOIL39cY+EqwvhjAQ/+Jk+e7FVPVY4JZKyEThBw A9arKhM/Xh1i5RUvzFmGiYlOo036wzHSocvwcsStePGqxcrKC1lkKx7C0i31J+tlw4ENkUWCzuyS V4+9Ksu2LRO2K0qnzHpylppr69yKKNkymGesFyjCCovLsimLVi+SDf99gxSWRh7O4unFamshVnM2 hS2cWEALKzpp2O5Iy/n3ziu8wZ0/8GA7o3SLbePUEGULLuZpa2lvbpdA8WDCyz28aO0iqZpbpRYe 0/HTdYRUFZZGVsDHCrvo+Y0Dsl64Yr1s+NnhaJzi8ulqxeVg8/UB8YLXrsr06rnsE6DyYLsjLSxG hSt0bm6euheXbt4ubGeUbjl16pRyOSJfBgIZhc1kYSV+3KcQPrjMhRqK4LnDol7mKpep5JeufFIp eyTTuN1Px48fV4uxcK/xjmWFX7alMYU209fB3ZwW5CW9mZfzPB36OfOM9Zv2Zv42dWSbpWQXhaHO LFqjv0Xs/mDiEKvMVMMS4T2SegwVs1TrP9R0de8HZdmqynt9NlFux4QlKw0X22XJysigaF5Brqx7 Zaa89JP+Vfc7O8NSXB4hmrl5IsvWJr8SdDryuFh3T89c9emStduqZMXGgQtMJqp7OnRIlH8mX4MQ DtUj1q3+TMvR2wjyfuF7aU4bZdcZprMivIdZlT5ZIc9XXnlFcUfSam9fc/DSa56eXZph1hA5Xrwc 6ahhcdVklnm8EF6OuDRjvf3jH/+oyDBhH3/8sTz66KPKlZkFqwj7/PPPveqp4sVaNIuFrvS+vejD PF9TR5Mkx6tDMkpQBvOMKQOiz0ipadUgL014E1mjkykz1bisEsw+vNv+MdIJuHLuSmTl4CQyZHXb NXvWRFNo19/96/dH96WdMWuG2ueW8rCaYh2tnFMpy19ZLm9vjmzB4SWfaCFxTlgYq6GOPdj6F+KK EzVhMPvhsu8wVj4GJSCnppw+clptQbPurcg2K+GOsLCys9Od+cTeE4J7tL/Ar/Yvbjzf7xJ76sgp yV+XLy/940uR61dbhRWo0y22jeMjqu9VHYPtpNijGWFPXNNLANcYwkwhfbgzLA3nG2Tv+r2D2t+M m+r58X2vy9INr0hRyXQJh0NSf3LgPXL22EHx+f2y5icHhP2CQyH24X11kDvziYO7ZdmmneLPz5dg 8zVpMOb4nvofB8VfuEk2/bdfquut16/Jif3pX0GZeTZ8mE6ePCl0OJ2rwfLONFdX1O6DTN+AXI41 YQXnrVu3qo803xj2Lh3q6rasMPmLX/xiyFV15uMF23TF8aK8l7Lc8nG7nxg8wIsMPBl4Z0cG2sgU 9oVkShD9FAiqOZfNS3ozL+d5OvRz5hnrN3WCzFNHniuzQxkrvjOMhS/ZrumXv/ylukR6woZDEuHt pkc67hldp6FipvNJ5lg9t1C27onsR0o67SK8Y/1FuVI/ePvEWHm/e+ia2of3jX+M7JnMPryEJStH 9jbKypcqZc+xWrVuS8P5dtn/ev+ihIfebJRVL1VKSVm+6gOdeW/gbiJe6uKWhxedj+5vVG7Je34R 0bP5SqecOOJ9EdV06OBFz0yMAw/5+c9/Pkh1vmtDWQfJzPDdd99V30esrgjPP6tBa+GZZ6ARazN8 iXduLB6n48c6UgZ14VuMkA/5pmK5ZvJtHyQxVYG8siozf5BcVm1mTi/nmvjivsycXf1bb0dEHE0O Uy3fpht9BHae2imvffe1AQQCrdbvWS9vbXxr9BW0GgwZAdvGQ4bQZmARsAiMIAIMqIyme+oIVnVM FGXxHhPNYJWwCFgEDATwztLk2LNLs5F+wClWWqy9kFnIK5ZbTNeMRrJIFYSY0VX+OMeNWf9pv+wB GdofGYfA9frr8sSyJ5TLlFI+V6Rmcc2ALZEyrlJW4QEI2DYeAIf9YRGwCFgELAIWAYuARcAikCEI DNnCq626WG05x9LLqsy4irI4FaSWI1Zfbf3V2BCmV3jWYfaYeQgwz/HJNU/KjDkzlNslizmxVdHp g6cTLjKWeTW9fzW2bXz/tr2tuUUgExGwFseRbTWL98jibUuzCFgE3BEwLbxDJrz4U+OyzJ92VebI byYxcx0CrN2XuYY1GBLMOQTZikXAImARsAhYBCwCFgGLgEXAImARsAhYBNKBgEl4B67SkkLuEFvI K4u+6Dm6WG0hu7g449oMqWUBJ+Iyl1fP9yWOtfCmALpNYhGwCFgELAIWAYuARcAiYBGwCFgELAKu CAx5Di/zcrV1FzLLXF3m8OpFqiC0uDdrSy7h+o90ViwCFoH7C4EDBw7cXxXOoNqOpbYZS7oMdxOO p7qOp7oMd7vb/McnAq++XTM+K2ZrZRHIYARSsvCyty17PLG8/RdffKGqD9F96KGHonvxEgjJbWlp UVZczqdOnaoWrIIAQ4RZvOrSpUtR+LD4sq8tWw0g7HnLNkB6ex/2nzt37lz0dzShcRJrjzpzGX/2 AUZ3rM/owT5RWKcRt/J1MZjI9crW5NHY2BhdBUzHMY/oZOpgXsuUc+bnINSX7R127NiRsM6jWa90 zCUy8zDPdb22bNkyYE8xNvjeuXOnvmyPIhILN4BxW5m9urpatm/frrxDeH9wr7HliCle4pjxR+o8 Xp1HqvyhluPWNkPNn/ReMRoJXXR99uzZo747zz//vA4a0eNw1pUtbfR+wkNZtXgstJupg3k+oo1l C7vvEGB/2AVLSgbV+/TxVnl755VB4Sl1rAflknpAXl6u2naosiYgPp8I2xKxVVFbW7fnTM06r6g9 5TldOiOytdP3v31Wurq8653O8jM5rxkzZqg+aklJibA9K1yHfqrmU17q9s4778gLL7wQ5Uhe0ozl OEk9lxBCiJ4mpFQMay4AQoRYrfmzzz6TTz/9VAEMyI888oj6rUFmLi9/WHn5yJv+1ZBd8tF7MhYW Fipyyt5zWkij89JhzmM8ckl+6K/37uU3e+pq0u2lfMoiDSSXvRkh0HrJa6ce4+03nSXa+6mnnpIN Gzbc1wRv165dwp/tdCV/l7uRik2bNgn7uvEcs+8pg15O8RLHmcb+dkfArW3cc0hfjJHSpby8XBiU 3LYtsl95+mrgPafhrCuDR/zxrhoJGc66jIT+tgyLgBMBSK0mtpAwNwL46tqRedaceurfy9dVSCgk snlpneQV5MqmH82UNa/MlF2b+w1MOm68o66z3k84XrzhDs8P+CzhTRJkvmnsW/v+++8L++7Cmei/ 02/Xe+Z6zZJpqdoo6DXNWI2XlEvzrFmzlMsymwtr0eQVAnvr1i35yle+Ip988omy7rItEWQQt+cH HnhAkVsIE6QYyw2NUFRUpOKygBUWYiw5kFp+Q5wh17g+YxG+ffu2iss5DcBiWMkIBBXdOSIcmXfM H4IFmlEQyqeM1tZWefDBB1WdIeKUSX0h6ZB5zm/cuKHSDsc/y5YtU9bU4cg71TzB4NixY8oSn2oe Np1FIBECjExeuHBBRTlx4kTMAS4vcRKVYa9ZBDQCy5cvV95EdA6sWAQsAhaBTEdg1rwiOXEkMlDc 1dEte3c0yN4fNmRktQKBpOxyGVnH4VCaPtThw4ej/ScGPOFbpaWlSRVnGjiTSjgGIydFeLG0QBhT tWgyUoCbshZIIyMRetErCCTu0hBZVnfGesqRPwgnpBqyCQnlL5WGcOoOyaZ88seC/fjjj6tzSDDW aUg81yDBen4ypB0Sjy7DKZRL3a1YBO4nBLyMKHqJcz9hZuuaGgK8y5csWZK0q1dqpdlUFgGLgEVg +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 rcIbGxshZZfpZsYegnF+xE2eEc6SkYGNtcgyPmpowvqLFfR99Xe0BkpDa1jDmbYf8sps+zWFS+BM 9MD1L52InPx3nfOb6Gu4BQqJgAiIgAiIgAiIgAiIgAiIwM4TSLHCG8BIXwfWXsR6Aba78rem7xxn U8WBM3a05/DL5cWYtPHiYhJZEesvV3AwLzcUczAnByuLc6FrBg5k52J8oDthfyIy+bw4Vu6Nmc9i Y5JzL2RuS2SESu/K4gI21ledKK99XY/6KGDK01kEREAEREAEREAEREAEREAE0o1AShXe3CMFeDY6 nLCPhwuLnDT5x95PmDZegsXnz/BeaXnoFsOM8yOzT8ZwoqoWGRkZQEYGTlSexeTD3yKKWFulUnzY ieOsdGl1XcT9VFx4Zbbduioar+GjC9fAPYsph48VITMzE0uL8861176uzM84ecmspLoO3M5IIgIi IAIiIAIiIAIiIAIiIALpSCCla3j37d+Hht5fY/rZd6Uec5MTofjx3/pR9GEFph4MhuL8BB73d+Fk zTlnj1zmm338CKM9/rYl4jY9p2ovoPZ/7mNjfQ3To//E+C99Ec0Y7voeH55rxMGcfMdkOlohjkic 5IVXZkkWH8rWf/1LnKw6h5rb3cDGBlZXXmDw+29CHqi99vVh1x2cPteEfVkHsDI/h+dx9lEOVaqA CIiACIiACIiACIiACIiACOwigXcAvC4sLNzFJqhqERABERABERABERABERABERABEUg9gZSaNKe+ eSpRBERABERABERABERABERABERABJIjIIU3OW7KJQIiIAIiIAIiIAIiIAIiIAIikOYEHJPmNG+j micCIiACIiACIiACIiACIiACIiACvgn8C/uUY5u+MiWAAAAAAElFTkSuQmCC --001a114dd06243fa1c05469448d4-- From MAILER-DAEMON Sat Jan 21 03:55:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUrSh-0001ET-CJ for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 03:55:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUrSe-0001EL-EB for emacs-devel@gnu.org; Sat, 21 Jan 2017 03:55:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUrSY-0007kj-Gk for emacs-devel@gnu.org; Sat, 21 Jan 2017 03:55:48 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:64476) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUrSX-0007iU-ST for emacs-devel@gnu.org; Sat, 21 Jan 2017 03:55:42 -0500 Received: from [192.168.178.35] ([77.12.84.197]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MVteq-1d1v5H0kmW-00X54K for ; Sat, 21 Jan 2017 09:55:39 +0100 Subject: Re: The current state of the comment-cache branch To: emacs-devel@gnu.org References: <20161227175500.GD2324@acm.fritz.box> <83y3z0ukth.fsf@gnu.org> <871swsf1es.fsf@thinkpad.rath.org> <83pokcugit.fsf@gnu.org> <87y3yzehc2.fsf@thinkpad.rath.org> <83d1gbv1rt.fsf@gnu.org> <87wpei7jye.fsf@thinkpad.rath.org> <83shp6tyqr.fsf@gnu.org> <20161229194454.GB3387@acm.fritz.box> <2ddc3f91-acf9-803a-f99d-9ccb63f748b9@online.de> <03ceef3b-7adb-0f0b-d8d8-e1f2e6c0a04a@online.de> From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Message-ID: <38e90e33-aaae-d8e6-ec2c-bfc239d5e1cd@online.de> Date: Sat, 21 Jan 2017 10:06:05 +0100 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:X1FOgRlvckbK7MDsYb5lYjTWMqIz8CjooRGm5ccOGZvJYjh2ZvI AnmALX/0J2VZgei/G7ogx/XmgD6MDchPhrCyA1OVGhtWNppW5derqRgvFsVcPWNC6pY/haO 4dkpgSXKuieN8EUiW04IW3sN87LK8D5WehA5OTfb4BGOByxJFl2pc9/NXt2NAxhQ7ykXtS/ kFG7oY8cwrIBm+1sx1ybw== X-UI-Out-Filterresults: notjunk:1;V01:K0:A1ROs+ruZwQ=:LG0Xen3H2DOPPErh2KxZwR TB9KFsteglil/TFLdRrDUncOrpUDgz2yzOcUzb5jRCrq5U1VzjbbLs84ZE+f9MtKLpLRDCbEF 3mTxg6y34F7opgVP+rFZn487zn8RESKOI1TBVJk/TjG0y2RtRxI3NaAPjOmFC4n2w2oz9pMBV FVomaRG46YNiK103jMhF4ogM+EDLbL+6SfIKtxqnV0F/jxer0pK0DN5o6L29x74oow3gHD8wO J66t1GHviwCBE1EbWjx7tUlaxbFRpxvfZ8kUr1QflQSDxzBmI2h3ATLSIWzEBmowIwQSheGkh MpNf1WBRo1hVO0Tj7bMUmLRVA1N6K83VB4W2G2aNvEB78N9t/6TuoyvzFgZkVmYNhvX2JORQT GGMiQQCKsNfiggLQNP1OtV4YBZC6gN0MPhR1odc+dWJkIl6vuJJyOou+anWs6VTxM8ZI/aAUZ uxIfbO6hIxJmUhhsypG6cL39vM7WrkBrlsVoBioQyGzoITtHDTbkpQvx1szrxXVVAkcVgB1hV jdmMwIbGNkP00xHcTMx+BmepW7hGn7zu04NalrAeDRhe1FHG3j+Um2Kogwb6W4+9GJ1/tm1+0 1GtCTb1T017cmsepo63bFUz9C0UcmZ0/uYukMXOSXAP4jHGgCv+Yp2NtKX1YvBux3486kkATF ItifK95SsPm34pMDcV5hE0oJcrers+jJOsZqpNLQXS6csHK8tC/Yrv4vou+QYFlNCVWI5VcgT oZ/4rxEK9X3q6QDv X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 08:55:49 -0000 On 20.01.2017 22:48, Stefan Monnier wrote: >>>> Alongside with some other impediments removed, for example allowing >>>> all chars being an abbrev. >>> The restriction to word chars in abbrevs as removed a long time ago. >> Really? That should be known. > It is known. It's known you delivered some code WRT that purpose. It never worked here. Seems other faced some difficulties too: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23891 >> So https://debbugs.gnu.org/cgi/bugreport.cgi?bug=15485 is fixed? > No, but I'm not sure it's a bug. It's the way `add-abbrev` works. > The abbrev-tables themselves don't have that restriction. So what does abbrev--check-chars inside define-mode-abbrev?: (error "Some abbrev characters (%s) are not word constituents %s" A related issue later on: (define-abbrev local-abbrev-table (downcase abbrev) expansion)) If everything is downcased, expansion can't distinguish the original case. From MAILER-DAEMON Sat Jan 21 06:08:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUtWv-0003K4-PO for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 06:08:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57758) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUtWt-0003Jx-CL for emacs-devel@gnu.org; Sat, 21 Jan 2017 06:08:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUtWq-0007NI-76 for emacs-devel@gnu.org; Sat, 21 Jan 2017 06:08:19 -0500 Received: from mail-pf0-x22a.google.com ([2607:f8b0:400e:c00::22a]:36661) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUtWq-0007N0-0U for emacs-devel@gnu.org; Sat, 21 Jan 2017 06:08:16 -0500 Received: by mail-pf0-x22a.google.com with SMTP id 189so28952049pfu.3 for ; Sat, 21 Jan 2017 03:08:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=xWp2Ugb9YyZvv8+qriJ2ieB9zebO3/WAi3adLODpa1E=; b=Hycq+bayXADpxoQcs4abKTw4mV8RcBsvhaKwG1CYlY+LeLrst2KN5iU5fq2VJtGTNH pbGNO7GSw9KfCR3qVDIVUmhfS4Y23TOo5KYTRDnheMxJJxEIuhkG+9FONR7GASflZTIW fhRsCbjzEAQ0ab4ogw13pCUgnbfFY/MMeVvj45XIkILGZajFqRpw5jWj4lu4gIcvU/2L hqbjVayw/Eyu35vjr4sFskoNjPV/X/J0oxd/mDOcIetjD2fEGXzlxbqYI2wWZcj32mlM MSobZZS6lE3CV2mfFj3gzfMRbwTnv8jWxwlbNscU67EdkfycRFDhasbWKHzMynnCUs3f UrTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=xWp2Ugb9YyZvv8+qriJ2ieB9zebO3/WAi3adLODpa1E=; b=qfvhPe9QdOvVfWGPSTJc+97OLs44JNyesBIHl79eprU3CWs0YFjo2abCW2jUspTzSV NLrE9+BDyEqFMf6zEZ1nc2MZWDY8fCGFZDvlVzvkdrvvOuvT+2v57UHcoDbjJ0kCfFNs rB3M+BBUNx0KrqibPwkNtzgY02qmK9BDJaDkOFCML5pKF9zmDYpiJlmXeZX7YWs731/k eqqSQcz+Z/84f1s60xkgf/IiSX4orgmAgNQ9AMpFUdpXFZiupI8KmwjpALc/Hjoc+Iyy DQnMN6/axF6zl8xXiQoG8+TJpyxD0Uknzlx65idx5YQBOOKY4gM1/q9eKdS4N6pWn5fZ 9OnQ== X-Gm-Message-State: AIkVDXI9DMfpg0K88pI8WJdmeSHPckW0QJm17WriHL/o2qou0DLRziW5me0ou7DpDGinqA== X-Received: by 10.98.5.2 with SMTP id 2mr22096959pff.77.1484996895059; Sat, 21 Jan 2017 03:08:15 -0800 (PST) Received: from calancha-pc ([103.5.140.171]) by smtp.gmail.com with ESMTPSA id c11sm23376528pfk.14.2017.01.21.03.08.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 03:08:14 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Sat, 21 Jan 2017 20:08:12 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Kaushal Modi cc: Emacs developers Subject: Re: Issue with font rendering caused by one of the commits in last 48 hrs #master In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-1399040089-1484996894=:10479" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 11:08:20 -0000 --8323329-1399040089-1484996894=:10479 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT On Sat, 21 Jan 2017, Kaushal Modi wrote: > Hello all, > I keep my emacs build updated from the master branch pretty regularly. > > My last build was using this > build: http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8c0fcaf66733f0538a3f024f383cb34a3c93d73c and that was good. > > A while back, I built using http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e5e42cefd7f2eb47d2c8660a7a317e8b08d36a82 and > that has font issues.. whether launching emacs directly or emacsclient.  > > So one of these 4 commits has caused the issue: > > e5e42cefd7 * origin/master origin/HEAD master diff-hunk-kill independent of point inside headers > 1508b538fd * ; Revert "Improve diff-mode navigation/manipulation" > 82a5e4dc88 * Fix free var FOO-mode-{syntax,abbrev}-table warnings > 9c4e3097b5 * Check that variable lists are actually lists I don't see this issue in my box. Is it feasible for you to perform a git bisect? --8323329-1399040089-1484996894=:10479-- From MAILER-DAEMON Sat Jan 21 07:02:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUuNR-0002ha-No for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 07:02:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUuNP-0002hU-Kq for emacs-devel@gnu.org; Sat, 21 Jan 2017 07:02:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUuNM-0006ui-HK for emacs-devel@gnu.org; Sat, 21 Jan 2017 07:02:35 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58211) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUuNM-0006ue-Dx; Sat, 21 Jan 2017 07:02:32 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1938 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUuNL-0007D7-Ft; Sat, 21 Jan 2017 07:02:31 -0500 Date: Sat, 21 Jan 2017 14:02:26 +0200 Message-Id: <83vat862p9.fsf@gnu.org> From: Eli Zaretskii To: David Engster CC: kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org In-reply-to: <87k29ps7ai.fsf@engster.org> (message from David Engster on Fri, 20 Jan 2017 23:20:05 +0100) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 12:02:36 -0000 > From: David Engster > Cc: Edward John Steere , Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org > Date: Fri, 20 Jan 2017 23:20:05 +0100 > > I always followed the general rule that the generated ChangeLogs > should have the date when the change enters the Emacs repository Indeed, that is our rule. From MAILER-DAEMON Sat Jan 21 07:24:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUuie-0005Jm-8M for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 07:24:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUuib-0005JL-7J for emacs-devel@gnu.org; Sat, 21 Jan 2017 07:24:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUuiX-00078c-Mu for emacs-devel@gnu.org; Sat, 21 Jan 2017 07:24:29 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58333) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUuiX-00078M-JP; Sat, 21 Jan 2017 07:24:25 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1950 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUuiW-0000m9-It; Sat, 21 Jan 2017 07:24:25 -0500 Date: Sat, 21 Jan 2017 14:24:19 +0200 Message-Id: <83tw8s61os.fsf@gnu.org> From: Eli Zaretskii To: Kaushal Modi CC: emacs-devel@gnu.org In-reply-to: (message from Kaushal Modi on Sat, 21 Jan 2017 05:45:53 +0000) Subject: Re: Issue with font rendering caused by one of the commits in last 48 hrs #master Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 12:24:30 -0000 > From: Kaushal Modi > Date: Sat, 21 Jan 2017 05:45:53 +0000 > > My last build was using this build: > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8c0fcaf66733f0538a3f024f383cb34a3c93d73c and > that was good. > > A while back, I built using > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e5e42cefd7f2eb47d2c8660a7a317e8b08d36a82 and > that has font issues.. whether launching emacs directly or emacsclient. > > So one of these 4 commits has caused the issue: > > e5e42cefd7 * origin/master origin/HEAD master diff-hunk-kill independent of point inside headers > 1508b538fd * ; Revert "Improve diff-mode navigation/manipulation" > 82a5e4dc88 * Fix free var FOO-mode-{syntax,abbrev}-table warnings > 9c4e3097b5 * Check that variable lists are actually lists > > Following images show the issue: > Notice that I am using the exact same emacs config with the exact same fonts (PragmataPro) set in > ~/.Xdefaults. Also I did not see any errors in the *Messages* buffer at startup. Please post more details about "the issue". The only thing I can glean from the images is that the "good" version uses a fixed-pitch face, while the "bad" one uses a variable-pitch face. Your help is needed in identifying the exact problem you are seeing. E.g., is the same font used in both cases? What do you see in the Custom buffer if you try to customize the face used by this display? Etc. etc. -- any additional details related to what you see will get us closer to unlocking the mystery. (I also wonder why you post here and not to the bug tracker.) Thanks. From MAILER-DAEMON Sat Jan 21 09:02:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUwFu-00039L-Q4 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 09:02:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49813) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUwFs-00039E-OM for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:02:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUwFo-00087K-EE for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:02:56 -0500 Received: from mail-ot0-x234.google.com ([2607:f8b0:4003:c0f::234]:33530) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUwFo-00086t-9J for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:02:52 -0500 Received: by mail-ot0-x234.google.com with SMTP id 73so74729981otj.0 for ; Sat, 21 Jan 2017 06:02:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=AN4u0JTu7IuF9a74Gc+tLflT2ip9GNtJ9DswK5VMRks=; b=kTkhYCZcJUSdi8Qek34dKecV7dfqkOBR7SZPxWqQqI5IH9sKl1URnOE0B+Kz0ojFla wJJz/+V9Cvg3No3idlxGEAC8w6+dirsf0JFwTgTnT43/+SaSqlbQpCyQi+jOeUWTqL/X /eBJ9AKu15HI8eoZL0nOvnjTgWcC4USh/bkn2WhVH3aqp+mcaXTcQwJw1k2S+lFyrnB2 QaKkx6nP9AOA3ICp1Yx2iX7Z91fO9ty1X+Kxms9YXHg5X8q3TWaiqWEYF9EVq9AopBCC OAaRRIAgD+Oh2qACRT2dx3eSZrdPzJ2k0M+7IGDlz4gGCnmxAN9ky48MDGrrZD612mUz BGvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=AN4u0JTu7IuF9a74Gc+tLflT2ip9GNtJ9DswK5VMRks=; b=cpyj3Lt9mUNqoVg7sbhW0Hzl0jSpYH2K0wpcEXyGSJEIIvCIJgnfAno9Cy23phYts1 sBI3hjxXVinBtOx7tPgQHZ88q1tY+TAoj/ammRgc66CdMPXMY0FhZQYFRVZzF0GjXni/ nJNjk/x8DGPo54WwivMKem3tC6ZYJ2gYYU37T5jZ2ko6zjlSDwryu7M+vAsuT5eesKFP /on3C/20eb9jhRpQZtZjlIpV9O/lTJ4HgVy9OrzGKw7mfOuzajPRhX63QcLimjh7JqKT QXZyucOmE7iFlQhlKW1+Em06lGXsohuO11vx4Z/AZq067cfJp87JJPTf0tg93Ux/GkNd irhQ== X-Gm-Message-State: AIkVDXLyrfhbB5oTl5xOsBKwwKT9d2EY1r3BH8F9NB9X9vbrMIzG2SMsvhdXhkrkVXw9UnlwoXCka+nUp29OAw== X-Received: by 10.157.29.228 with SMTP id w33mr9163594otw.55.1485007371391; Sat, 21 Jan 2017 06:02:51 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Sat, 21 Jan 2017 06:02:50 -0800 (PST) In-Reply-To: References: From: Noam Postavsky Date: Sat, 21 Jan 2017 09:02:50 -0500 X-Google-Sender-Auth: MKslwx7l2YaYEi90wfS9zGtCeIg Message-ID: Subject: Re: Issue with font rendering caused by one of the commits in last 48 hrs #master To: Kaushal Modi Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 14:02:58 -0000 On Sat, Jan 21, 2017 at 12:45 AM, Kaushal Modi wrote: > Hello all, > > I keep my emacs build updated from the master branch pretty regularly. > > My last build was using this build: > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8c0fcaf66733f0538a3f024f383cb34a3c93d73c > and that was good. > > A while back, I built using > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e5e42cefd7f2eb47d2c8660a7a317e8b08d36a82 > and that has font issues.. whether launching emacs directly or emacsclient. > > So one of these 4 commits has caused the issue: > > e5e42cefd7 * origin/master origin/HEAD master diff-hunk-kill independent of > point inside headers > 1508b538fd * ; Revert "Improve diff-mode navigation/manipulation" > 82a5e4dc88 * Fix free var FOO-mode-{syntax,abbrev}-table warnings > 9c4e3097b5 * Check that variable lists are actually lists I can't see a plausible way any these could affect the font, are you sure it wasn't the commit I pushed last night [1: 6a788d2]? 1: 2017-01-20 23:36:26 -0500 6a788d2fc18c23dcfc5d0352649b2f690e9cbff7 Don't wait for frame to become visible From MAILER-DAEMON Sat Jan 21 09:54:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUx3j-0001U0-KW for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 09:54:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58750) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUx3h-0001TF-H0 for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:54:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUx3g-0007nb-Hl for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:54:25 -0500 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:37237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUx3g-0007ms-BQ for emacs-devel@gnu.org; Sat, 21 Jan 2017 09:54:24 -0500 Received: by mail-wm0-x229.google.com with SMTP id c206so87743966wme.0 for ; Sat, 21 Jan 2017 06:54:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=zAUcbfD7F9cr+MAmXudXRdqqXQR0kLSSoS8mgK9cQYo=; b=o00ytAJPBi3AAqA0qUJCaet0QO+8ccB/jZ1pT5p2FB5LyY2V/OEJR/3Po5s3UzK8FX l/Ma98zH8F+FpA0knqkPm4lKebxOM6jK5lD1YoatE0ZgEagPWeicyBNX0ZSsBdpKsC3s E6OlZu6v/0XsQnmK9qMWr47f6urZjLGNOwVLR/USBDQPb9PSTbM4hDuc2kHK6nPYd92J 0Y58lHe0Ql81pYBOMzNLllJ/KosgjoDFRlELLDhGXZD8eOaDk97mXjZvLhC4Ly2zUShf d7wXm7fE3a4l5T4yDmkAdYt2ygj+W1qxLYFp5YmnfxW8+TrjhbXzT0vC/CUSvwXI3KR4 ZMVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=zAUcbfD7F9cr+MAmXudXRdqqXQR0kLSSoS8mgK9cQYo=; b=sHLg6uMvnrcVc4t7zXBE+GjMEPkCE7CC+1RL00z9xdykoETdL+Ja5nqSU1zBZU+d5V SHHrtdAXe/435kOnkZCr6d7Z8MlWdQvwE7g381OJGWJl3wRha1L6dneT/GCtTMJX1kya y/e2nsYyiv/5swa2w/hzLa71uHkYZ3+MWJAauf3fKF8KvPz77+biO4VVp0PD4DwE/8jq duX8yby6zqMV9opODJ/o72uM/sW1BvehPyb2c0RQxHfRAL7ZV78+vpl0UpyXr/6zVHME YutlYqdLrxKKFFcZiKAfvAOM4xMPqBHq4qiHp18wZFnxvkjCVYRLfUIuPDc+SJwS+9CO 7phg== X-Gm-Message-State: AIkVDXLlFrIvJbivO/Bo28NIWOEopjeSv1t0BZPJHP6lf3CZavOoSsaHgCwgTtKtkdq+Dx3+XAnD8fLCxowlDQ== X-Received: by 10.223.138.220 with SMTP id z28mr16353519wrz.26.1485010462917; Sat, 21 Jan 2017 06:54:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sat, 21 Jan 2017 06:54:02 -0800 (PST) From: Fabrice Popineau Date: Sat, 21 Jan 2017 15:54:02 +0100 Message-ID: Subject: How to check master ? To: Emacs developers Content-Type: multipart/alternative; boundary=001a11498462215ad005469bf13b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 14:54:26 -0000 --001a11498462215ad005469bf13b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I wanted to give a try at the master branch, and at this time, it seems I am unable to run 'make check' : make[2] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-master/= doc/misc =C2=BB GEN ../emacs/info/dir make[1] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-master = =C2=BB make -C test check make[1] : on entre dans le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-mas= ter/test =C2=BB rm -f *.tmp test ! -d ../../emacs/test/automated make[1]: *** [Makefile:159: check-no-automated-subdir] Error 1 make[1]: La cible =C2=AB check =C2=BB n'a pas =C3=A9t=C3=A9 refabriqu=C3=A9= e =C3=A0 cause d'erreurs. make[1] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-master/= test =C2=BB I am building outside of the source tree, but it has always worked. The directory ../../emacs/test/automated does exist. Is that a known issue ? Greetings, Fabrice --001a11498462215ad005469bf13b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

I wanted to give a try at the maste= r branch, and at this time,=C2=A0
it seems I am unable to run = 9;make check' :

make[2] : on quitte le r= =C3=A9pertoire =C2=AB /d/Source/emacs/build-master/doc/misc =C2=BB
=C2=A0 GEN =C2=A0 =C2=A0 =C2=A0../emacs/info/dir
make[1] : on q= uitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-master =C2=BB
make -C test check
make[1] : on entre dans le r=C3=A9pertoire = =C2=AB /d/Source/emacs/build-master/test =C2=BB
rm -f *.tmp
=
test ! -d ../../emacs/test/automated
make[1]: *** [Makefile:= 159: check-no-automated-subdir] Error 1
make[1]: La cible =C2=AB = check =C2=BB n'a pas =C3=A9t=C3=A9 refabriqu=C3=A9e =C3=A0 cause d'= erreurs.
make[1] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/= emacs/build-master/test =C2=BB

I am building= outside of the source tree, but it has always worked.
The direct= ory ../../emacs/test/automated does exist.

Is that= a known issue ?
Greetings,

Fabrice
--001a11498462215ad005469bf13b-- From MAILER-DAEMON Sat Jan 21 10:23:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUxWF-0005Ql-Me for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:23:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxWD-0005Qc-Da for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:23:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUxWA-0006c0-9a for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:23:53 -0500 Received: from limerock03.mail.cornell.edu ([128.84.13.243]:51282) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxWA-0006YN-3E for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:23:50 -0500 X-CornellRouted: This message has been Routed already. Received: from authusersmtp.mail.cornell.edu (granite3.serverfarm.cornell.edu [10.16.197.8]) by limerock03.mail.cornell.edu (8.14.4/8.14.4_cu) with ESMTP id v0LFNisJ020482; Sat, 21 Jan 2017 10:23:44 -0500 Received: from [10.13.22.4] (65-112-130-194.dia.static.qwest.net [65.112.130.194]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.14.4/8.12.10) with ESMTP id v0LFNgMs028793 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sat, 21 Jan 2017 10:23:43 -0500 Subject: Re: How to check master ? To: Fabrice Popineau , Emacs developers References: From: Ken Brown Message-ID: Date: Sat, 21 Jan 2017 10:23:42 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed X-PMX-Cornell-Gauge: Gauge=X X-PMX-CORNELL-AUTH-RESULTS: dkim-out=none; Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by limerock03.mail.cornell.edu id v0LFNisJ020482 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 128.84.13.243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:23:54 -0000 On 1/21/2017 9:54 AM, Fabrice Popineau wrote: > Hi, > > I wanted to give a try at the master branch, and at this time, > it seems I am unable to run 'make check' : > > make[2] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-mas= ter/doc/misc =C2=BB > GEN ../emacs/info/dir > make[1] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-mas= ter =C2=BB > make -C test check > make[1] : on entre dans le r=C3=A9pertoire =C2=AB /d/Source/emacs/build= -master/test =C2=BB > rm -f *.tmp > test ! -d ../../emacs/test/automated > make[1]: *** [Makefile:159: check-no-automated-subdir] Error 1 > make[1]: La cible =C2=AB check =C2=BB n'a pas =C3=A9t=C3=A9 refabriqu=C3= =A9e =C3=A0 cause d'erreurs. > make[1] : on quitte le r=C3=A9pertoire =C2=AB /d/Source/emacs/build-mas= ter/test =C2=BB > > I am building outside of the source tree, but it has always worked. > The directory ../../emacs/test/automated does exist. It's not supposed to exist. Remove it and then run 'make check' in your=20 build directory. Ken From MAILER-DAEMON Sat Jan 21 10:32:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUxeE-0007PY-Rl for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:32:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35996) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxeC-0007P4-Py for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:32:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUxe9-0001v5-Lr for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:32:08 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40651) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUxe9-0001tZ-Eu; Sat, 21 Jan 2017 10:32:05 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUxe3-0003vH-EX; Sat, 21 Jan 2017 16:32:01 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> Date: Sat, 21 Jan 2017 16:31:53 +0100 In-Reply-To: <83wpeiu0y5.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 29 Dec 2016 18:58:26 +0200") Message-ID: <87shocbf9y.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:32:10 -0000 Eli Zaretskii writes: >> (But in a networking environment, the Emacs terminology is very >> confusing. You have `coding system' where all standards say `charset', >> and in addition you have all the standards talking about `encoding', >> which is things like base64 and url-encoding. So the parameter list, if >> changed, will talk about :data-coding-system and >> :data-transfer-encoding, which is probably not as helpful as it should >> be. > > How about :coding-system and :transfer-encoding instead? Thinking about it a bit more, I'm reverting the working to "charset" again. That's what this is about, since the string in question will end up in a HTTP header saying charset="foo". Emacs coding systems are (vaguely) supersets of the charset concept, so it's all good. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 10:33:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUxfh-00085r-40 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:33:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36526) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxfc-00083i-71 for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:33:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUxfY-0002lp-Eh for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:33:36 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40657) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUxfY-0002lS-7v; Sat, 21 Jan 2017 10:33:32 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUxfT-0001dS-5I; Sat, 21 Jan 2017 16:33:31 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> Date: Sat, 21 Jan 2017 16:33:21 +0100 In-Reply-To: <87shocbf9y.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sat, 21 Jan 2017 16:31:53 +0100") Message-ID: <87o9z0bf7i.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:33:40 -0000 Lars Ingebrigtsen writes: > Thinking about it a bit more, I'm reverting the working to "charset" > again. That should be "wording", not "working". My speeling is getting wrse all teh time. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 10:39:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUxlM-0000uK-OK for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:39:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxlK-0000u8-AY for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:39:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUxlH-0005d6-88 for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:39:30 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40696) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUxlG-0005cK-Sp; Sat, 21 Jan 2017 10:39:27 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUxl9-0000xm-1O; Sat, 21 Jan 2017 16:39:20 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: rms@gnu.org, p.stephani2@gmail.com, dgutov@yandex.ru, kentaro.nakazawa@nifty.com, emacs-devel@gnu.org Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <308bb78f-8be3-092d-d877-e129d340242b@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> Date: Sat, 21 Jan 2017 16:39:12 +0100 In-Reply-To: <83y3yxs682.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 30 Dec 2016 18:59:41 +0200") Message-ID: <87fukcbexr.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:39:31 -0000 Eli Zaretskii writes: >> It's like `with-temp-buffer' and it's cousins: It generates a new >> buffer, executes the body in that buffer, and kills the buffer when the >> form finishes. > > How about 'with-fetched-url', then? Hm... I'm not sure it gives us more clarity. It should really be `with-content-fetched-from-specified-url', but that's a bit long, right? So I think `with-url' is fine for anybody who's working with these things. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 10:45:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUxqm-0001tm-Tv for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:45:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxqk-0001rB-2S for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:45:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUxqg-00080v-W4 for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:45:06 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40732) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUxqg-00080P-Ou for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:45:02 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUxqd-00082A-Cj; Sat, 21 Jan 2017 16:45:01 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> Date: Sat, 21 Jan 2017 16:44:53 +0100 In-Reply-To: <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> (Dmitry Gutov's message of "Sun, 1 Jan 2017 04:07:56 +0300") Message-ID: <87bmv0beoa.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:45:07 -0000 Dmitry Gutov writes: > I think you're trying to magic it up too much, by adding error > handling forms to the macro. Personally, I'd prefer to use > condition-case to handle errors. Nope. You should only signal an error if you have an error, and getting a 404 isn't an error. > Something else I take an issue with, is with `with-url' being a > macro. :) That violates The First Rule of Macro Club. Yes, the first rule is "use a macro when it makes sense". > 1) Return a Promise value. Emacs could use a standardized Promise > structure in other places, too. Emacs could, but Emacs doesn't. > 2) Basically require to use the newly-introduced threads for > asynchrony. Using the new threads is a trivial rewrite and doesn't affect the signature of the macro. Anyway, I think the best option here would be to just have an :ignore-errors parameter to `with-url'. In that case, the body will just be evaluated if we get non-error response. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 10:54:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUy09-0003TT-9V for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:54:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40301) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUy03-0003TH-UH for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:54:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUy00-0004Db-2u for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:54:43 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60554) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUxzz-0004DU-Vk; Sat, 21 Jan 2017 10:54:40 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2375 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUxzz-0006Hx-9D; Sat, 21 Jan 2017 10:54:39 -0500 Date: Sat, 21 Jan 2017 17:54:35 +0200 Message-Id: <83lgu45ryc.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <87shocbf9y.fsf@gnus.org> (message from Lars Ingebrigtsen on Sat, 21 Jan 2017 16:31:53 +0100) Subject: Re: with-url Reply-to: Eli Zaretskii References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:54:48 -0000 > From: Lars Ingebrigtsen > Cc: emacs-devel@gnu.org > Date: Sat, 21 Jan 2017 16:31:53 +0100 > > Eli Zaretskii writes: > > >> (But in a networking environment, the Emacs terminology is very > >> confusing. You have `coding system' where all standards say `charset', > >> and in addition you have all the standards talking about `encoding', > >> which is things like base64 and url-encoding. So the parameter list, if > >> changed, will talk about :data-coding-system and > >> :data-transfer-encoding, which is probably not as helpful as it should > >> be. > > > > How about :coding-system and :transfer-encoding instead? > > Thinking about it a bit more, I'm reverting the working to "charset" > again. That's what this is about, since the string in question will end > up in a HTTP header saying charset="foo". Once again, may I suggest mime-charset instead? We already use this elsewhere in Emacs, and using it here will prevent confusion with Emacs charsets. > Emacs coding systems are (vaguely) supersets of the charset concept No, they aren't. From MAILER-DAEMON Sat Jan 21 10:56:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUy25-0004Dj-Ka for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 10:56:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUy21-0004Db-26 for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:56:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUy1x-0005U6-ES for emacs-devel@gnu.org; Sat, 21 Jan 2017 10:56:45 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60576) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUy1l-0005Mv-5g; Sat, 21 Jan 2017 10:56:29 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2376 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUy1d-0006ZN-PA; Sat, 21 Jan 2017 10:56:22 -0500 Date: Sat, 21 Jan 2017 17:56:16 +0200 Message-Id: <83k29o5rvj.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: p.stephani2@gmail.com, emacs-devel@gnu.org, kentaro.nakazawa@nifty.com, rms@gnu.org, dgutov@yandex.ru In-reply-to: <87fukcbexr.fsf@gnus.org> (message from Lars Ingebrigtsen on Sat, 21 Jan 2017 16:39:12 +0100) Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el Reply-to: Eli Zaretskii References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <308bb78f-8be3-092d-d877-e129d340242b@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 15:56:48 -0000 > From: Lars Ingebrigtsen > Date: Sat, 21 Jan 2017 16:39:12 +0100 > Cc: p.stephani2@gmail.com, emacs-devel@gnu.org, kentaro.nakazawa@nifty.com, > rms@gnu.org, dgutov@yandex.ru > > > How about 'with-fetched-url', then? > > Hm... I'm not sure it gives us more clarity. It should really be > `with-content-fetched-from-specified-url', but that's a bit long, right? > So I think `with-url' is fine for anybody who's working with these > things. Both Richard and myself came up with almost identical comments on with-url, so I hope you will reconsider. From MAILER-DAEMON Sat Jan 21 11:30:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUyYv-00026P-Ie for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 11:30:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46665) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUyYp-00025t-Ec for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:30:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUyYk-00072N-RZ for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:30:39 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:41090) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUyYe-0006ud-Tp; Sat, 21 Jan 2017 11:30:29 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUyYW-0004t7-Fp; Sat, 21 Jan 2017 17:30:22 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: p.stephani2@gmail.com, emacs-devel@gnu.org, kentaro.nakazawa@nifty.com, rms@gnu.org, dgutov@yandex.ru Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <308bb78f-8be3-092d-d877-e129d340242b@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> <83k29o5rvj.fsf@gnu.org> Date: Sat, 21 Jan 2017 17:30:14 +0100 In-Reply-To: <83k29o5rvj.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 21 Jan 2017 17:56:16 +0200") Message-ID: <877f5obckp.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 16:30:43 -0000 Eli Zaretskii writes: > Both Richard and myself came up with almost identical comments on > with-url, so I hope you will reconsider. Perhaps we could have a vote. The contenders are `with-url', `with-fetched-url', `with-url-contents' and `with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url'. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 11:32:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUyaX-0003AA-LI for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 11:32:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUyaR-00037K-Um for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:32:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUyaN-0000UV-8e for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:32:20 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:41111) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUyaN-0000Ti-1R; Sat, 21 Jan 2017 11:32:15 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUyaJ-0004Gu-WB; Sat, 21 Jan 2017 17:32:13 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> <83lgu45ryc.fsf@gnu.org> Date: Sat, 21 Jan 2017 17:32:05 +0100 In-Reply-To: <83lgu45ryc.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 21 Jan 2017 17:54:35 +0200") Message-ID: <8737gcbchm.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 16:32:24 -0000 Eli Zaretskii writes: > Once again, may I suggest mime-charset instead? We already use this > elsewhere in Emacs, and using it here will prevent confusion with > Emacs charsets. The charsets in MIME are the same as the charsets in all other relevant RFC. It is clear to somebody talking HTTP what a charset is, even if that person has never heard of MIME. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 11:34:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUyco-000433-EQ for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 11:34:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47836) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUyck-000418-CR for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:34:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUycg-0002xp-H5 for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:34:42 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:41158) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUycg-0002x6-9Y for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:34:38 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cUycd-0005vv-3r; Sat, 21 Jan 2017 17:34:37 +0100 From: Lars Ingebrigtsen To: Yuri D'Elia Cc: emacs-devel@gnu.org, Jens Lechtenboerger Subject: Re: message.el and mml-secure-bcc-is-safe References: <87tw9b9jud.fsf@wavexx.thregr.org> Date: Sat, 21 Jan 2017 17:34:28 +0100 In-Reply-To: <87tw9b9jud.fsf@wavexx.thregr.org> (Yuri D'Elia's message of "Sat, 07 Jan 2017 12:43:06 +0100") Message-ID: <87y3y49xt7.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 16:34:45 -0000 Yuri D'Elia writes: > I'd like to manipulate the mml tags on the message inside the > 'message-send-hook depending on the recipient. > > By reading though message.el, this seems to be possible as the hook is > ran early enough. > > However, I notice that (mml-secure-bcc-is-safe) is called before the > hook. If I plan to modify the tags, it actually makes sense to run it > just afterwards instead so that it checks the final headers and tags. > > Could we move (mml-secure-bcc-is-safe) just after the hook? > It makes more sense to me, unless there's some specific reason to do so. I'm not sure... there might be subtleties there... I've added Jens to the Cc; he added the code so he might have an opinion. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 11:40:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUyiK-0007Pm-RC for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 11:40:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUyiC-0007KQ-VA for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:40:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUyi7-0008KM-Ob for emacs-devel@gnu.org; Sat, 21 Jan 2017 11:40:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:32835) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUyi7-0008KE-Lf; Sat, 21 Jan 2017 11:40:15 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2412 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cUyi6-0000i0-GB; Sat, 21 Jan 2017 11:40:15 -0500 Date: Sat, 21 Jan 2017 18:40:05 +0200 Message-Id: <83inp85pui.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <8737gcbchm.fsf@gnus.org> (message from Lars Ingebrigtsen on Sat, 21 Jan 2017 17:32:05 +0100) Subject: Re: with-url Reply-to: Eli Zaretskii References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> <83lgu45ryc.fsf@gnu.org> <8737gcbchm.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 16:40:26 -0000 > From: Lars Ingebrigtsen > Cc: emacs-devel@gnu.org > Date: Sat, 21 Jan 2017 17:32:05 +0100 > > Eli Zaretskii writes: > > > Once again, may I suggest mime-charset instead? We already use this > > elsewhere in Emacs, and using it here will prevent confusion with > > Emacs charsets. > > The charsets in MIME are the same as the charsets in all other relevant > RFC. It is clear to somebody talking HTTP what a charset is, even if > that person has never heard of MIME. I want to cater to Emacs users and developers as well, and I think mime-charset is a good compromise. Once again, we have a :mime-charset property of coding systems, so using that terminology will I think provide good mnemonic hints both to protocol experts and to Emacs developers. From MAILER-DAEMON Sat Jan 21 12:04:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUz5o-0000bg-68 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 12:04:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUz5k-0000ZW-8A for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:04:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUz5f-0007fs-J5 for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:04:40 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:37384) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUz5f-0007fO-Cq for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:04:35 -0500 Received: by mail-wm0-x234.google.com with SMTP id c206so90960632wme.0 for ; Sat, 21 Jan 2017 09:04:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=kt5AK2AWgj16lIPmyJm6nUREAw7KVGukqN9WUNrzlME=; b=N0FGVlll2/x7Zm0STqx6sXy5R31jRVZ3tYngUfj/X8HuArS1kfjUL96cpqv+4YeR63 ZUlnEaPatRRDVjbM4kPyOndrbvFlle6QRyVdVA+kDi9SxuqhMsMH2uql3JP3FxQ5JprY CWDIvAi3BSK+lheJ78qVcfGMwldfFWbjmU9eSZnh8RDt63jU9NfMwR6L+rGg3C7VQbKH 0jF341v3eUm6uPF/DhoGcO7XbVSlFL111BweEraDGpiDq2q7GPj0s0UKOIwOIDRHV1pj oJM/7dr3QAtzg0QXSUBzaqaZmR5rQmUmaeuFVQrReSDJH99yaFlah6E6+Zb8y/HTlr5C 08CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=kt5AK2AWgj16lIPmyJm6nUREAw7KVGukqN9WUNrzlME=; b=j6HayQKtbQkYLpkQ4T3P53q9qMJWufOJz+xKtpwfMRnIBP98eoflqHZbVY9P8QTm0R GMDQqKzyAcWQsavRj7e1LQ8I6ZKu4UYPW5RDIKOK9J/bsQkLZsBlZsADyv8d4pfjOmx4 qtkYRhDeeuACD/dkW4x+DOuBFBk18DpRxPOPArmKMnL3ys4RlhJx6dnOOYqwLb3n/2XO Hge0hWCTkrymDfbqOMrCEQRfSZUktDxWib4y13PanNesfQzAedayDUv2kBT4j2r+pvfk tZzirfRhCVHIGe8QhexhY8vDPN0uflVIaLus/cG2JQMO2KJB5LjTvf7z6BFIn0aqOBN0 0wYw== X-Gm-Message-State: AIkVDXKsa0OHCJ6rPJU3ADBXWvLwFQyUyvb6UFzB7D9kIceHS5Br6ZQAWOfNjHTcFzDkOLwHRUFieNjmoqofMg== X-Received: by 10.28.67.134 with SMTP id q128mr7363960wma.34.1485018273782; Sat, 21 Jan 2017 09:04:33 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sat, 21 Jan 2017 09:04:13 -0800 (PST) In-Reply-To: References: From: Fabrice Popineau Date: Sat, 21 Jan 2017 18:04:13 +0100 Message-ID: Subject: Re: How to check master ? To: Ken Brown Cc: Emacs developers Content-Type: multipart/alternative; boundary=94eb2c0d48d4b1a6d205469dc22d X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 17:04:43 -0000 --94eb2c0d48d4b1a6d205469dc22d Content-Type: text/plain; charset=UTF-8 2017-01-21 16:23 GMT+01:00 Ken Brown : > On 1/21/2017 9:54 AM, Fabrice Popineau wrote: > >> Hi, >> >> >> I am building outside of the source tree, but it has always worked. >> The directory ../../emacs/test/automated does exist. >> > > It's not supposed to exist. Ooops. Thanks. > Remove it and then run 'make check' in your build directory. Should I report the failures to the bug tracking list ? Fabrice --94eb2c0d48d4b1a6d205469dc22d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-21 16:23 GMT+01:00 Ken Brown <kbrown@cornell.edu>:
On 1/21/2017 9:54 AM= , Fabrice Popineau wrote:
Hi,


I am building outside of the source tree, but it has always worked.
The directory ../../emacs/test/automated does exist.

It's not supposed to exist.=C2=A0

Ooops= . Thanks.
=C2=A0
Remove it a= nd then run 'make check' in your build directory.
=
Should I report the failures to the bug tracking list ?

Fabrice

--94eb2c0d48d4b1a6d205469dc22d-- From MAILER-DAEMON Sat Jan 21 12:44:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cUzi6-0006DA-0e for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 12:44:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUzi2-0006D4-PN for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:44:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUzhz-0000QD-0P for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:44:14 -0500 Received: from mail-vk0-x229.google.com ([2607:f8b0:400c:c05::229]:33696) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUzhy-0000Po-Qw for emacs-devel@gnu.org; Sat, 21 Jan 2017 12:44:10 -0500 Received: by mail-vk0-x229.google.com with SMTP id k127so68497495vke.0 for ; Sat, 21 Jan 2017 09:44:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=Q6gjQ/BQsIsLTlOeamCZpD+GeiscqFCAKgnz6sncEZw=; b=bZlWdoM6yIvAoYqH53Fb5Sxfe9GGlynvZpAMYP+qZR5fVTPTiOceHKE6HzXV05pIho wnhaMrUvDD6nSMnoTvvM3l4EX2fMahzp+4ZbBme3Dk0AWnQ5RY/mV9XQ5WdDzVQ0wi9H /dPlxsCaAuYFEXI1wOLSQPrtp2hsPxXyQO8QrXHIcMffObumFF4Ecjw3rCLvfbLN1wkk 1T5td1o5MBcCGw6EoLCVOZKISjIslOxSqlWvnzJCZXoJNW+FyLAfbzJnaKHnhRUNr1IR kLoGhUP7mCJEhFhWZsqWOc5tsXPHi9M//J2bNLPEW/2uDv3YbSOkxKvoC3mv5RsOdGO8 vBuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=Q6gjQ/BQsIsLTlOeamCZpD+GeiscqFCAKgnz6sncEZw=; b=dzNq5Rs2W3LljsMescRYZREQ9MRZ7WPduc7ILbGzNo1Ha9OjAQtDDIjKjTyDziBu6j E2EOI4oBR5/7v17w6XEIR85PFTY7AbbcTyUQTqSubxRq9n9Sa4G899Po7B4YQu0Dg6Kb 23QhBa9grl4GRq4oPYUoKSW0AbbeuHAGEcV2azWWp5L+eJMcH9TNaIkS3FwLYwm4vZiv NrZzYC+Wlf+A4sTwaSHpGp3lRpOJ71Thwrv/V+JPvbh3hFG9KAEd32y98c2fYlCZRz27 KY/dChgbPUJ8CG5gsNFNjJsLHDKNe3yQDSwqudPW2Yae1WxEg6W1rEhRIbPf7EOo/k2M x5VQ== X-Gm-Message-State: AIkVDXJyalh9d88ABCvqMCh2/S5pXmCHneaz3XJcGwkvOL9qUONhFxQAAi3ue0QGV8A/2n7UngcCT+V3oTVMEg== X-Received: by 10.31.62.71 with SMTP id l68mr10096987vka.175.1485020649943; Sat, 21 Jan 2017 09:44:09 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kaushal Modi Date: Sat, 21 Jan 2017 17:43:59 +0000 Message-ID: Subject: Re: Issue with font rendering caused by one of the commits in last 48 hrs #master To: Emacs developers Content-Type: multipart/alternative; boundary=001a11447a5452fcdb05469e5069 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 17:44:17 -0000 --001a11447a5452fcdb05469e5069 Content-Type: text/plain; charset=UTF-8 Hello everyone, I apologize, but I cannot recreate the issue I saw last night. It's very strange given that the 'bad' build and 'good' build were installed with different --prefix flags. So they are 'make install'ed in completely separate directories. Though my building directory is the same. Here are the sequence of events: 1. I update my build to e5e42ce diff-hunk-kill independent of point inside headers 2. Start a fresh emacsclient session, and see that issue. 3. I keep that session open, checkout the branch that last worked fine for me: 8c0fcaf Avoid inefficient regex in diff-refine-hunk 4. I take a screenshot of the bad build and kill that session. 5. Start another fresh emacsclient session using the build of the 'good' branch. 6. And everything looks good again. Sorry guys, as the issue magically went away, I fear it will arrive again. Will open a bug report next time with more info as possible. ====== On Sat, Jan 21, 2017 at 9:02 AM Noam Postavsky < npostavs@users.sourceforge.net> wrote: I can't see a plausible way any these could affect the font, are you sure it wasn't the commit I pushed last night [1: 6a788d2]? 1: 2017-01-20 23:36:26 -0500 6a788d2fc18c23dcfc5d0352649b2f690e9cbff7 Don't wait for frame to become visible Thanks for the reply, yes I confirmed that was not the case. This was my emacs build info: === Emacs version: GNU Emacs 26.0.50.20 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.23) of 2017-01-20, built using commit e5e42cefd7f2eb47d2c8660a7a317e8b08d36a82. ./configure options: --with-modules --prefix=/home/kmodi/usr_local/apps/6/emacs/master '--program-transform-name=s/^ctags$/ctags_emacs/' 'CPPFLAGS=-fgnu89-inline -I/home/kmodi/usr_local/6/include -I/usr/include/freetype2 -I/usr/include' 'CFLAGS=-ggdb3 -O0' 'CXXFLAGS=-ggdb3 -O0' 'LDFLAGS=-L/home/kmodi/usr_local/6/lib -L/home/kmodi/usr_local/6/lib64 -ggdb3' Features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK2 X11 MODULES === >> Tino Calancha > I don't see this issue in my box. > Is it feasible for you to perform a git bisect? Sorry, that's what I was just trying to do, but cannot recreate the issue. :( >> Eli Zaretskii > The only thing I can glean from the images is that the "good" version uses a fixed-pitch > face, while the "bad" one uses a variable-pitch face. It's the exact same font and exact same emacs config. > E.g., is the same font used in both cases? Yes. > What do you see in the Custom buffer if you try to customize the face used by this display? Ah! Sorry, should have done that. But cannot recreate the issue. Sorry. > (I also wonder why you post here and not to the bug tracker.) Will do that next time. I did not see an "error message" or debug info to report other than the screenshot. -- Kaushal Modi --001a11447a5452fcdb05469e5069 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
= Hello everyone,

I apologize,= but I cannot recreate the issue I saw last night. It's very strange gi= ven that the 'bad' build and 'good' build were installed wi= th different --prefix flags. So they are 'make install'ed in comple= tely separate directories.

Though my building directory is the sa= me.

Here are the sequence of events:

1. I update my bu= ild to=C2=A0
=C2=A0 =C2=A0 e5e42ce diff-hunk-kill independent of point inside headers
2. Start a fresh emacsclient session, and see that is= sue.
3. I keep that session open, checkout th= e branch that last worked fine for me:
=C2=A0= =C2=A0 8c0fcaf Avoid inefficient regex in diff-r= efine-hunk
4. I take a screenshot of the bad = build and kill that session.
5. Start another= fresh emacsclient session using the build of the 'good' branch.
6. And everything looks good again.

Sorry guys, as the issue magically went away, I fear it will arr= ive again. Will open a bug report next time with more info as possible.

=3D=3D=3D=3D=3D=3D
On Sat, Jan 21, 2017 at 9:02 AM Noam Postavsky <npostavs@users.sourceforge.net> wrote:
=
I can't see a plausible = way any these could affect the font, are you
sure it wasn't the commit I pushed last night [1: 6a788d2]?

1: 2017-01-20 23:36:26 -0500 6a788d2fc18c23dcfc5d0352649b2f690e9cbff7
=C2=A0 Don't wait for frame to become visible

Thanks for the reply, yes I confirmed that was n= ot the case. This was my emacs build info:
=3D=3D=3D
Emacs version: GNU Emacs 26.0.50= .20 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.23)
=C2=A0of 2017-01-20, built using commit e5e42cefd7f2eb47d2c8660a7a3= 17e8b08d36a82.

=
./configure options:
=C2=A0 --with-modules --prefix=3D/home/kmodi/usr_local/apps/6/emacs/master= '--program-transform-name=3Ds/^ctags$/ctags_emacs/' 'CPPFLAGS= =3D-fgnu89-inline -I/home/kmodi/usr_local/6/include -I/usr/include/freetype= 2 -I/usr/include' 'CFLAGS=3D-ggdb3 -O0' 'CXXFLAGS=3D-ggdb3 = -O0' 'LDFLAGS=3D-L/home/kmodi/usr_local/6/lib -L/home/kmodi/usr_loc= al/6/lib64 -ggdb3'

Features:
= =C2=A0 XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTING= S NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCR= OLL_BARS GTK2 X11 MODULES
=3D=3D=3D

>> Tino Calancha
> I don't see this issue in my box.
> Is it feasible for you to perform a git bisect?

=
<= div class=3D"gmail_msg">Sorry, that's what I was just trying to do, but= cannot recreate the issue. :(

>> Eli Zaretskii
=

> The only thing I can=C2=A0glean from the images is that the &= quot;good" version uses a fixed-pitch
> face, while the "bad"= one uses a variable-pitch face.=C2=A0=C2=A0

It= 's the exact same font and exact same emacs config.=C2=A0
<= /div>

> E.g., is the=C2=A0same font used in both cases?=C2= =A0=C2=A0

<= /div>
Yes.

<= span style=3D"color:rgb(33,33,33);font-size:13px" class=3D"gmail_msg">> = What do you see in the Custom buffer if=C2=A0you try to customize the fa= ce used by this display?=C2=A0

Ah! Sorry, shou= ld have done that. But cannot recreate the issue. Sorry.
=

> (I also wonder why you post here and not to the bug tracker.)=C2=A0=C2=A0

=
Will do that = next time. I did not see an "error message" or debug info to repo= rt other than the screenshot.

--

Kaushal Modi

--001a11447a5452fcdb05469e5069-- From MAILER-DAEMON Sat Jan 21 13:06:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV03l-0001On-7t for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:06:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33236) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV03e-0001Lc-T8 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:06:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV03a-0002Wt-00 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:06:34 -0500 Received: from mail-qt0-f194.google.com ([209.85.216.194]:34610) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV03Z-0002Vr-S5 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:06:29 -0500 Received: by mail-qt0-f194.google.com with SMTP id a29so9733519qtb.1 for ; Sat, 21 Jan 2017 10:06:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=/1As6LcWGiYgsnQNT9cG9g8OgIebMgg7XrJPeVCje0Y=; b=icQCarlOpeF7mPuqmcP64tIgeJ8My390V+S0U6y7GCZMJmv3tlxGCf/ZpNw92YGE0Z DK3T1dUnrxHchJqexx+bKaPvuSJCdjfS366C+dfH++nrwyrvbo++BzTPxp0VkHhUqMnF egt4FaTQOu9HEcS4c9rS2ldPzADm4JUUxxCRa4yTjdLjm1ZHgQyQv8tmykH4gyQ50LSf ddStrNREyu21CSgHVouGooQQJkmn4qM4zwPBsgcFv6xreKoum0EuM31ro/yuRq2BmZQd O7L92JQoR2/EgMg9LCTYgXcmFHnpS5jXTv7wvopfOK3kUgV2WVAeqb6XFxgeZj9U/vGb 1S9w== X-Gm-Message-State: AIkVDXLwOEDR94pwv/IG/KAfS1bUQJYjeA4Pk2JshuyqRNNmzKC6hbbtG40vxMqtT7jeTw== X-Received: by 10.200.45.247 with SMTP id q52mr18051372qta.197.1485021987559; Sat, 21 Jan 2017 10:06:27 -0800 (PST) Received: from [192.168.1.202] (pool-100-0-32-98.bstnma.fios.verizon.net. [100.0.32.98]) by smtp.googlemail.com with ESMTPSA id d15sm8968177qkb.10.2017.01.21.10.06.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 10:06:26 -0800 (PST) Subject: Re: CEDET Merge To: David Engster , Edward John Steere References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> <877f5suj4g.fsf@engster.org> Cc: emacs-devel@gnu.org, Lee Hinman From: Eric Ludlam Message-ID: <99b64519-b38d-a4bf-d30e-99775ab57ed8@siege-engine.com> Date: Sat, 21 Jan 2017 13:06:25 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <877f5suj4g.fsf@engster.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.216.194 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:06:39 -0000 On 01/18/2017 04:57 PM, David Engster wrote: > My worry is indeed feature creep. The CEDET merge fell behind because I > couldn't keep up with the changes in Emacs, most notably the switch to > git and the extensive changes in EIEIO. The code base is very large and > complicated, so I'm against adding more code to Emacs core. Instead, we > should try to make it more modular and put support for certain languages > and project types into separate ELPA projects. This would also make it > easier to share maintainership of CEDET. I agree with David. Making it easy to create and maintain different extensions independent of CEDET core will be a big win. Eric From MAILER-DAEMON Sat Jan 21 13:25:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0Lq-0003uB-Kh for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:25:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35463) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0Lo-0003sw-08 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:25:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0Lj-0004TA-SO for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:25:20 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33724) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0Lj-0004T3-P4; Sat, 21 Jan 2017 13:25:15 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3292 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV0Li-0001Hm-C3; Sat, 21 Jan 2017 13:25:15 -0500 Date: Sat, 21 Jan 2017 20:25:05 +0200 Message-Id: <83h94s5kzi.fsf@gnu.org> From: Eli Zaretskii To: Fabrice Popineau CC: ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: (message from Fabrice Popineau on Fri, 20 Jan 2017 20:51:47 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:25:21 -0000 > From: Fabrice Popineau > Date: Fri, 20 Jan 2017 20:51:47 +0100 > Cc: Óscar Fuentes , > Emacs developers > > AFAIR, the problem with Imagemagick support on Windows is that it can > only be supported when linked in statically, > > I don't think so. The patch I posted recently shows that emacs can be compiled > with ImageMagick exactly the same way it is compiled with other dlls. Can be built before the patch or after the patch? And after it is built, will it run on a system where ImageMagick is not installed at all? You see, w32-win.el doesn't have ImageMagick-related DLL names in its value of dynamic-library-alist, and without that Emacs won't know which libraries to look for when ImageMagick support is requested. That alist is how officially supported optional libraries should be introduced into the Windows build of Emacs -- we want a binary that was built with these libraries to be able to run on systems without the DLLs being available. By contrast, just linking with the -lLIB link-time switch produces a binary that will refuse to load if the DLL is not found. From MAILER-DAEMON Sat Jan 21 13:30:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0Qw-0004p5-5h for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36126) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0Qs-0004ng-3D for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0Qq-0006TB-M4 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:34 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33765) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0QL-0006FL-98; Sat, 21 Jan 2017 13:30:01 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cV0QJ-00072N-4H; Sat, 21 Jan 2017 13:29:59 -0500 From: Glenn Morris To: Eli Zaretskii Cc: David Engster , kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> X-Spook: Authorities Looting Hurricane Bomb threat kilo class X-Ran: *9:sNiRMm%I,'l4Ekaiw+Qvf=N8gF5ZT;)xjP`e95&J5w`3f:x[A'W1Z*9zSQDv2xcpo33 X-Hue: brightcyan X-Attribution: GM Date: Sat, 21 Jan 2017 13:29:58 -0500 In-Reply-To: <83vat862p9.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 21 Jan 2017 14:02:26 +0200") Message-ID: <8my3y4xo49.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:30:35 -0000 Eli Zaretskii wrote: >> I always followed the general rule that the generated ChangeLogs >> should have the date when the change enters the Emacs repository > > Indeed, that is our rule. That was the rule when ChangeLogs were hand-written, but since the switch to generated ChangeLogs it does not (and cannot) apply. Git does not record that date. I suggest anyone working on a CEDET merge simply ignore such issues. Ref: http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00102.html http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00144.html From MAILER-DAEMON Sat Jan 21 13:30:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0R2-0004t7-1P for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36162) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0Qz-0004rm-LU for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0Qy-0006WA-EC for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:30:41 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:38209) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV0Qt-0006TH-E8; Sat, 21 Jan 2017 13:30:35 -0500 Received: by mail-wm0-x233.google.com with SMTP id r144so92862306wme.1; Sat, 21 Jan 2017 10:30:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=LKclED8XDt7MXGVWSEqXatnYtmi/Nd6wCghHF0kPsRE=; b=hz6rgY21dMV8A9lmXjdH4xiE/WLw6saP8P/laWJiC7di/af5H4AxUs8BB6tLte6EZF rJsSUFPUxQLbgBRIg7yTp/3atQoSQ1sItHTgqD3MbwHGGep49w9IZbSlBVBx8gXBLYcC L5rPghyNFNeBqrCpDhyUf8dOqDVEP/FhKmJfrA3JSiZFlsFW3PWeUFvFCFkqN4ITkDaq iD338ueaU9QZBgFupPiEfSmo1dLo5XJheBCq/DF1WhqghNqHYwLMjJn44Ra+m5sYpc6P Xq55QK6rIQzy1wsjNpFLwGvdj11wYXdyam1OTeaa3Pxud4UGPMQ89OYwDco3BrWSAc/A DXUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=LKclED8XDt7MXGVWSEqXatnYtmi/Nd6wCghHF0kPsRE=; b=JP8KiOF0mzBPGN5iIB7beGvXPN47zq0/3qkRf96agrzTKgMvbk6yE3NgNnyFmgzZnf n29u8et0EDvSxum+oOtOrjMzYjs1n74WyUJuJhLR6lzkAPuLilk3wsKbuhyzksZLCEqs 7zwJO4GLl6q0bor+WSeJQtLRzJrWfPZZFe2cA26Mtj8rnyQMSYwZBzL5osXbbdvXsAfQ yIISItfPzDCynniPcgLx9TBhejDR0dCrvnQLRRzirxkqbdwfKxlfQMHI8c3+VUAhf/bZ C2rw27qPGAfKRvJb3yCWfUpQDPo4iZgUR6rq0mXh0dBHJTL9G4gbPm5ggV/+qO2FnF4e 7bcA== X-Gm-Message-State: AIkVDXKbWL/XoWat62yWbOrmbWBOaukLlDPCbcixFk0wbywRPCstqOJLm3WmB4HRj0XB+T2Aetact7k2tV/FMA== X-Received: by 10.223.153.15 with SMTP id x15mr16901232wrb.179.1485023432443; Sat, 21 Jan 2017 10:30:32 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 10:29:51 -0800 (PST) In-Reply-To: <838tq66tpn.fsf@gnu.org> References: <838tq66tpn.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 19:29:51 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: Emacs developers Content-Type: multipart/alternative; boundary=f403045d5d722c8d6905469ef609 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:30:43 -0000 --f403045d5d722c8d6905469ef609 Content-Type: text/plain; charset=UTF-8 On Fri, Jan 20, 2017 at 9:06 AM, Eli Zaretskii wrote: > Feel free to suggest changes for INSTALL.W64. Yes, of course, once determined what we want to say. --f403045d5d722c8d6905469ef609 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On F= ri, Jan 20, 2017 at 9:06 AM, Eli Zaretskii <eliz@gnu.org> wrote:<= br>
=C2=A0
> Feel free to suggest changes for INSTALL.W64.
<= br>Yes, of course, once determined what we want to say.

<= /div>
--f403045d5d722c8d6905469ef609-- From MAILER-DAEMON Sat Jan 21 13:37:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0XL-0006pW-V2 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:37:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37306) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0XJ-0006pQ-Qn for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:37:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0XG-0001Ks-MI for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:37:13 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33822) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0XG-0001Ko-JE; Sat, 21 Jan 2017 13:37:10 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3300 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV0XF-0006z7-7q; Sat, 21 Jan 2017 13:37:09 -0500 Date: Sat, 21 Jan 2017 20:37:02 +0200 Message-Id: <83fukc5kfl.fsf@gnu.org> From: Eli Zaretskii To: Glenn Morris CC: deng@randomsample.de, kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org In-reply-to: <8my3y4xo49.fsf@fencepost.gnu.org> (message from Glenn Morris on Sat, 21 Jan 2017 13:29:58 -0500) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:37:15 -0000 > From: Glenn Morris > Cc: David Engster , kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org > Date: Sat, 21 Jan 2017 13:29:58 -0500 > > > Eli Zaretskii wrote: > > >> I always followed the general rule that the generated ChangeLogs > >> should have the date when the change enters the Emacs repository > > > > Indeed, that is our rule. > > That was the rule when ChangeLogs were hand-written, but since the > switch to generated ChangeLogs it does not (and cannot) apply. > Git does not record that date. Git obviously does record the commit date, so there's no problem with that rule. > I suggest anyone working on a CEDET merge simply ignore such issues. I suggest they don't. From MAILER-DAEMON Sat Jan 21 13:38:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0YL-0007Jw-6B for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37655) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0YI-0007IS-Ak for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0YD-0001gy-TQ for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:14 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33836) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0YD-0001gp-QT; Sat, 21 Jan 2017 13:38:09 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3301 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV0YC-000730-TE; Sat, 21 Jan 2017 13:38:09 -0500 Date: Sat, 21 Jan 2017 20:38:04 +0200 Message-Id: <83efzw5kdv.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sat, 21 Jan 2017 19:29:51 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <838tq66tpn.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:38:15 -0000 > From: Juanma Barranquero > Date: Sat, 21 Jan 2017 19:29:51 +0100 > Cc: Emacs developers > > > Feel free to suggest changes for INSTALL.W64. > > Yes, of course, once determined what we want to say. We definitely don't want to say anything that is inaccurate or confusing. From MAILER-DAEMON Sat Jan 21 13:38:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0YU-0007Q1-42 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0YO-0007Lz-RU for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0YK-0001jn-82 for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:20 -0500 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:36491) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV0YK-0001jO-0X for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:38:16 -0500 Received: by mail-wm0-x22b.google.com with SMTP id c85so79360906wmi.1 for ; Sat, 21 Jan 2017 10:38:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fIj4B/CWmSOfgSlkUnT+Jb5mDlJoefneGB2QN2z7hPQ=; b=iVedTQMybQeP9yuZMjja6SWuTX1txD7fbmksRlSHvXHue1U7qYgSmQkGv0K6gQ6jP4 xtBB465ZNr8UshdEl6StPjOBQnR/HO1Itkqlm+OzJmZaaqC2dvjlQ3JPU9o5JS5gLQ5e ZssmtPiDbEEoPs0Oibtx8f0u2c5jDXTMDiLwLu1nIcj/zNmFougF46urT/80ujDPWTGE pr9Jvc0eTtBiSgW1AuMrafZeZsjGGwK6D/6IP33YR8fhJa++M4Vq+/xQ/bK0l/IW871D QFVtHYp/YQRbARBFGWL/ml5SvvyN+GnjbehVd6GR81cTXp241mAg8uj6iOQf9ydgLdby pDCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fIj4B/CWmSOfgSlkUnT+Jb5mDlJoefneGB2QN2z7hPQ=; b=ldLWBueO0S2TSRux8+hzVO/iMafxuSgSJRsrwuTDpWDncCWgoo34ebA7s/V9fYqjon ZeSCDz7CYXj4T8j3PQONMIrH1hjv2prO6bamX8q8gNmwxu2LV67TdmLv4a5UdZhxzMWN UDGJ9TnwHJyZ5ZEGf1tDzZaqa2Rhm9B7Dce2gkLlpx53K42S4lhR4qGbaaEK+ZxP/e4K s6N6SWUCVJJPeO6pW+fHsJqtzizya4T8Un0F96n0LnQk5jgpc56d3lgrga75XKwDWJ9+ owKdzC3Ui57t5a0kty62erZ4w70Xc/T1kjjt8dLSGHA4+Mi1E2TjHKCdKb/MkL6f4txU +vZw== X-Gm-Message-State: AIkVDXILMXMA6zhCl8OHdMw9PKZwHvROJLp6kxmq1EZR7sELvvfysz5tGd4r1Yv0NKV3q9Wv0IbZACWSzIRjVQ== X-Received: by 10.223.153.15 with SMTP id x15mr16917132wrb.179.1485023894854; Sat, 21 Jan 2017 10:38:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 10:37:34 -0800 (PST) In-Reply-To: <87efzxn6or.fsf@wanadoo.es> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> From: Juanma Barranquero Date: Sat, 21 Jan 2017 19:37:34 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: =?UTF-8?Q?=C3=93scar_Fuentes?= Cc: Emacs developers Content-Type: multipart/alternative; boundary=f403045d5d72bc627805469f11a7 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:38:25 -0000 --f403045d5d72bc627805469f11a7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Fri, Jan 20, 2017 at 3:32 PM, =C3=93scar Fuentes wrote: > FWIW I build Emacs on MSYS2 and --without-imagemagick seems unnecessary. > The configure script just says that Imagemagick is absent. Indeed, I just built trunk and emacs-25 from inside mingw64.exe without specifying either --without-imagemagick or PKG_CONFIG_PATH, just with ./configure --prefix=3D`pwd`, and it went perfectly well. > I have no idea about PKG_CONFIG_PATH. The MSYS2 recipe does not mention > it and seems to work just fine. Our instructions in nt/INSTALL.W64 do not talk about pkg-config, but they show PKG_CONFIG_PATH used with configure: PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig \ ./configure --prefix=3D/c/emacs/emacs-25 --without-imagemagick --f403045d5d72bc627805469f11a7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Fri, Jan 20, 2017 at 3:32 PM, =C3=93scar Fuentes <ofv@wanadoo.es> wrote:

&= gt; FWIW I build Emacs on MSYS2 and --without-imagemagick seems unnecessary= .
> The configure script just says that Imagemagick is absent.
Indeed, I just built trunk and emacs-25 from inside mingw64.exe= without specifying either --without-imagemagick or PKG_CONFIG_PATH, just w= ith ./configure --prefix=3D`pwd`, and it went perfectly well.
> I have no idea about PKG_CONFIG_PATH. The MSYS2 recipe doe= s not mention
> it and seems to work just fine.

Our= instructions in nt/INSTALL.W64 do not talk about pkg-config, but they show= PKG_CONFIG_PATH used with configure:

=C2=A0 = PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig \
=C2=A0 ./configure --p= refix=3D/c/emacs/emacs-25 --without-imagemagick

<= /div> --f403045d5d72bc627805469f11a7-- From MAILER-DAEMON Sat Jan 21 13:53:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0n5-0002Gw-NT for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:53:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0n3-0002Gq-VR for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:53:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0n2-0000G6-Uq for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:53:30 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33954) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0mW-0008Qj-JE; Sat, 21 Jan 2017 13:52:56 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cV0mV-0007yi-BP; Sat, 21 Jan 2017 13:52:55 -0500 From: Glenn Morris To: Eli Zaretskii Cc: deng@randomsample.de, kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> X-Spook: Vickie Weaver Worm Law enforcement FMD CIKR munitions X-Ran: ~1,*;A(fEZWk-Ddc!,09{P?8TV@lK^VA/{1G`t/yXjgFB&=3Ij9G0_#~^?X%C;" (Eli Zaretskii's message of "Sat, 21 Jan 2017 20:37:02 +0200") Message-ID: <8c7f5o8cu0.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:53:31 -0000 Eli Zaretskii wrote: >> >> I always followed the general rule that the generated ChangeLogs >> >> should have the date when the change enters the Emacs repository >> > >> > Indeed, that is our rule. >> >> That was the rule when ChangeLogs were hand-written, but since the >> switch to generated ChangeLogs it does not (and cannot) apply. >> Git does not record that date. > > Git obviously does record the commit date, so there's no problem with > that rule. The commit date has no relation to "the date when the change enters the Emacs repository" (ie, was pushed to Savannah). If you want a recent example of this, "make ChangeLog" and look at the dates of "recent" concurrency entries. Some are years old. Eg git log --fuller 0ccc5d8998a Both git dates are 2012-08-15, but the correct date would be 2016-12-10: http://lists.gnu.org/archive/html/emacs-diffs/2016-12/msg00144.html From MAILER-DAEMON Sat Jan 21 13:57:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0rI-000390-6Z for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 13:57:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40464) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0rE-00038u-9w for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:57:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0rC-0001yL-4G for emacs-devel@gnu.org; Sat, 21 Jan 2017 13:57:48 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:35574) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV0r9-0001vw-Sa; Sat, 21 Jan 2017 13:57:44 -0500 Received: by mail-wm0-x22c.google.com with SMTP id r126so79965988wmr.0; Sat, 21 Jan 2017 10:57:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ESouZQz/fqsSBEt/yhnHviawxxzKCjokcsCobKBDOqw=; b=ACDXwNIzgQujA38rmMm+1DdPZD7Xl8uEBmkAhQr+MP4NsR5nLck9wVVXXUNFkeMH8h yMJBlgEF5R5+3nISXVYnZnDw5+qZrG2b76wwIuYd+zPTWkBerQwQ1/sLWV8OE+rkmZps mGgW6yBz6Am49XiFDecn9WfkHcqJpfm7XxBwRzzmB/V+4v5zuBD1e7lCvoOs3H0+PLpI CQ6UUe97t7IXLI85LfvJCnBdHVtBwfAtv4Muuk9GZhZOs0ZWJj8/x8OM6KitNMdK+1zX AhojJoariDj0AknU1W26kZrBhlpK34ZnIs3fQZYNwxw7Az0FkYIP7Dv/+fK/EwnIwvje 9bhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ESouZQz/fqsSBEt/yhnHviawxxzKCjokcsCobKBDOqw=; b=Q7yImHMU6ExngVezSQSoUVXDFP/vsXsXPAkmkEH+bD6nPczdSHgl0UoFztPmtwUF3p MDH1SivURSPqfGW3tT40evlKKE9ufOMd2bULQnI4cUwV3XrRZeDZS34ArosnikTjcTIo GBugj9o5szBZFhyVL8hX6Cr06sldhqBfuTK1UalxjWYsiXBs313p+4lybcXhLcApNz7k Z0KMtETdqy//1f9i3Ohfr8qzRS1+NTpy4L1sPDX72UYNFqHRaYP9R5ds9oYcI2ceiSdG PZW1u7YP7NoabJN7W49Z36NYw5nWyiZljRGVmN7/yLWtTy0yRHdBeqeld/gUNjk4RCzt Ztkg== X-Gm-Message-State: AIkVDXLNa9xFOHMtWwWXSoUK9aaJlPxWqscEjsXuhO9wm+2cL9tM+WzloxE5mhuXfaRV16Z/QLHiN8uZIupHEw== X-Received: by 10.28.195.70 with SMTP id t67mr8282637wmf.98.1485025062300; Sat, 21 Jan 2017 10:57:42 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 10:57:01 -0800 (PST) In-Reply-To: <83y3y5681f.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 19:57:01 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a1148cc98523a4505469f572b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 18:57:50 -0000 --001a1148cc98523a4505469f572b Content-Type: text/plain; charset=UTF-8 On Fri, Jan 20, 2017 at 4:54 PM, Eli Zaretskii wrote: > There's no problem when Imagemagick is absent. The --without-* > switches are only needed when the package is present, but you want to > override its automatic detection. > > AFAIR, the problem with Imagemagick support on Windows is that it can > only be supported when linked in statically, so the produced binary > can only be safely used on the system where it was built. And on top > of that, there's a problem with Imagemagick 7.x, which I think is not > specific to Windows. I think there are two issues here. One is what to do (and explain) when ImageMagick is present. As you say, > You see, w32-win.el doesn't have ImageMagick-related DLL names in its > value of dynamic-library-alist, and without that Emacs won't know > which libraries to look for when ImageMagick support is requested. > > That alist is how officially supported optional libraries should be > introduced into the Windows build of Emacs -- we want a binary that > was built with these libraries to be able to run on systems without > the DLLs being available. By contrast, just linking with the -lLIB > link-time switch produces a binary that will refuse to load if the DLL > is not found. That's entirely correct and we will want to modify ImageMagick support on Windows as we did with other image libraries and GnuTLS and libxml. But I am now worried about nt/INSTALL.W64, which is directed to those who want to build the 64-bit port anew, from scratch (from the repository or a source tarball). Following that file's steps, Imagemagick is not installed. I think that anyone knowledgeable enough to install Imagemagick and try to build with it will know to use --without-imagemagick if needed. So, I think the following minimal patch best reflects the current experience: diff --git a/nt/INSTALL.W64 b/nt/INSTALL.W64 index a12b7fc..1b2bf72 100644 --- a/nt/INSTALL.W64 +++ b/nt/INSTALL.W64 @@ -125,8 +125,8 @@ Now you're ready to build and install Emacs with autogen, configure, make, and make install. First we need to switch to the MinGW-w64 environment. Exit the MSYS2 BASH -console and run mingw64_shell.bat in the C:\msys64 folder, then cd back to -your Emacs source directory, e.g.: +console and run mingw64.exe in the C:\msys64 folder, then cd back to your +Emacs source directory, e.g.: cd /c/emacs/emacs-25 @@ -149,12 +149,9 @@ which 'make install' will use - in this example we set it to C:\emacs\emacs-25. If a prefix is not specified the files will be put in the standard Unix directories located in your C:\msys64 directory, but this is not recommended. -Note also that we need to disable Imagemagick because Emacs does not yet -support it on Windows. - - PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ ./configure --prefix=/c/emacs/emacs-25 --without-imagemagick + ** Run make This will compile Emacs and build the executables, putting them in the src warning: LF will be replaced by CRLF in nt/INSTALL.W64. The file will have its original line endings in your working directory. --001a1148cc98523a4505469f572b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Fri, Jan 20, 2017 at 4:54 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> There'= s no problem when Imagemagick is absent.=C2=A0 The --without-*
> swit= ches are only needed when the package is present, but you want to
> o= verride its automatic detection.
>
> AFAIR, the problem with Im= agemagick support on Windows is that it can
> only be supported when = linked in statically, so the produced binary
> can only be safely use= d on the system where it was built.=C2=A0 And on top
> of that, there= 's a problem with Imagemagick 7.x, which I think is not
> specifi= c to Windows.

I think there are two issues here. One is what to do (= and explain) when ImageMagick is present. As you say,

> You see,= w32-win.el doesn't have ImageMagick-related DLL names in its
> v= alue of dynamic-library-alist, and without that Emacs won't know
>= ; which libraries to look for when ImageMagick support is requested.
>= ;
> That alist is how officially supported optional libraries should= be
> introduced into the Windows build of Emacs -- we want a binary = that
> was built with these libraries to be able to run on systems wi= thout
> the DLLs being available.=C2=A0 By contrast, just linking wit= h the -lLIB
> link-time switch produces a binary that will refuse to = load if the DLL
> is not found.

That's entirely correct an= d we will want to modify ImageMagick support on Windows as we did with othe= r image libraries and GnuTLS and libxml.

But I am now worried about = nt/INSTALL.W64, which is directed to those who want to build the 64-bit por= t anew, from scratch (from the repository or a source tarball). Following t= hat file's steps, Imagemagick is not installed. I think that anyone kno= wledgeable enough to install Imagemagick and try to build with it will know= to use --without-imagemagick if needed. So, I think the following minimal = patch best reflects the current experience:


diff --git a/nt/INST= ALL.W64 b/nt/INSTALL.W64
index a12b7fc..1b2bf72 100644
--- a/nt/INSTA= LL.W64
+++ b/nt/INSTALL.W64
@@ -125,8 +125,8 @@ Now you're ready = to build and install Emacs with autogen, configure, make,
=C2=A0and make= install.
=C2=A0
=C2=A0First we need to switch to the MinGW-w64 envir= onment.=C2=A0 Exit the MSYS2 BASH
-console and run mingw64_shell.bat in = the C:\msys64 folder, then cd back to
-your Emacs source directory, e.g.= :
+console and run mingw64.exe in the C:\msys64 folder, then cd back to = your
+Emacs source directory, e.g.:
=C2=A0
=C2=A0 =C2=A0cd /c/emac= s/emacs-25
=C2=A0
@@ -149,12 +149,9 @@ which 'make install' w= ill use - in this example we set it to C:\emacs\emacs-25.
=C2=A0If a pre= fix is not specified the files will be put in the standard Unix
=C2=A0di= rectories located in your C:\msys64 directory, but this is not recommended.=
=C2=A0
-Note also that we need to disable Imagemagick because Emacs = does not yet
-support it on Windows.
-
- =C2=A0PKG_CONFIG_PATH=3D/= mingw64/lib/pkgconfig \
=C2=A0 =C2=A0./configure --prefix=3D/c/emacs/ema= cs-25 --without-imagemagick
=C2=A0
+
=C2=A0** Run make
=C2=A0=C2=A0This will compile Emacs and build the executables, putting them in = the src
warning: LF will be replaced by CRLF in nt/INSTALL.W64.
The f= ile will have its original line endings in your working directory.

<= br>
--001a1148cc98523a4505469f572b-- From MAILER-DAEMON Sat Jan 21 14:04:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV0xs-00053O-8i for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:04:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41600) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV0xo-00052q-Fx for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:04:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV0xj-0004wD-HG for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:04:36 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:37058) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV0xe-0004t0-Uf; Sat, 21 Jan 2017 14:04:27 -0500 Received: by mail-wm0-x232.google.com with SMTP id c206so93861781wme.0; Sat, 21 Jan 2017 11:04:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=2UOk7vpaaY5pXYxowWVnrsLWoacmzko9isMp3msk7hg=; b=ByCLOZw7T+ynig3LhWRLYWWsiAH1QvppWrPVyfJOaavef4HzX9ndP56ZkBN3KK4zY6 aycENfQexnaU7QFJ38Cl0hK9wSCf0ks3xVnn98No7zUZNurYrbjAR5xUJsD5PNqepADk 57f0Eu8xli+5syW9ZwH8ufAOtVk8iQrsnEgBk1FodlOfgl6NwGU/a4CKZuIfa6137+wV pclRbsf8+p5PL7Nag4vc2y0bn+cSkMGXg+igrHt7or4Dr8jQ9e6au9onfqk8VFXIzMLG M0G0MzY1lCjXBoHVwBQnHizOsl+PWP3T8h44pqBYB5oaR7JyX4Fm9WoZjNMF+acvHfG7 sdog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=2UOk7vpaaY5pXYxowWVnrsLWoacmzko9isMp3msk7hg=; b=GAP9dhOmjL4r4P5op5izRMm6jfze5bLCevt49wmURTIY5HruG9cvXeskXplCju4kcE l6b+vchaLNu0VjhyCpdD+TBF93w6L5GD/f5nnFi88c/+AFFUPcXKg9GRMVoNzo2KtwG6 o7YHLDYY60KdZzM5x/MY2vS3/T2xES1Ico3uDFHhAIoUjSiAUxTB7GanI0GDQXnoDXpk yYyVETMkxovnzxbUzh19R/FfeJRWVOMjvI0yh+wKwKMy/KkqWPyMgYtxK1FG5NSTiSoT STPWFazX7LwRcjyb0Ke3gdmMgd0uBi0oupTRmPF0z1uTqbbEtJlWfzI9ZOcpX4FS0zXG xFlg== X-Gm-Message-State: AIkVDXJKGPIeAlZYFwpg9uNseClZzsj3flrXnjFl37zr03NEIHlFy5+MXNsRnPlHYuM7FNCbLj8GSrP74Oq5Jg== X-Received: by 10.28.93.68 with SMTP id r65mr8748019wmb.133.1485025465570; Sat, 21 Jan 2017 11:04:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sat, 21 Jan 2017 11:04:04 -0800 (PST) In-Reply-To: <83h94s5kzi.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> From: Fabrice Popineau Date: Sat, 21 Jan 2017 20:04:04 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a11467a9a5b9d4505469f6f87 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:04:37 -0000 --001a11467a9a5b9d4505469f6f87 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2017-01-21 19:25 GMT+01:00 Eli Zaretskii : > > From: Fabrice Popineau > > Date: Fri, 20 Jan 2017 20:51:47 +0100 > > Cc: =C3=93scar Fuentes , > > Emacs developers > > > > AFAIR, the problem with Imagemagick support on Windows is that it can > > only be supported when linked in statically, > > > > I don't think so. The patch I posted recently shows that emacs can be > compiled > > with ImageMagick exactly the same way it is compiled with other dlls. > > Can be built before the patch or after the patch? After the patch. > And after it is > built, will it run on a system where ImageMagick is not installed at > all? > My point is : ImageMagick is made available by dynamically loading 2 dlls. If they are not installed, then the feature is disabled (as far as I remember). What happens if the jpeg or xpm or png dlls are not found ? > > You see, w32-win.el doesn't have ImageMagick-related DLL names in its > value of dynamic-library-alist, and without that Emacs won't know > which libraries to look for when ImageMagick support is requested. > > It is easy enough to add them and if the patch I posted didn't address this issue, this is my mistake. Because it is certainly needed. Fabrice --001a11467a9a5b9d4505469f6f87 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-21 19:25 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
=
> From: Fabrice Popineau <fabrice.popineau@gmail.com>
> Date: Fri, 20 Jan 2017 20:51:47 +0100
> Cc: =C3=93scar Fuentes <ofv@wanad= oo.es>,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0Emacs developers <emacs-devel@gnu.org>
>
>=C2=A0 AFAIR, the problem with Imagemagick support on Windows is that i= t can
>=C2=A0 only be supported when linked in statically,
>
> I don't think so. The patch I posted recently shows that emacs can= be compiled
> with ImageMagick exactly the same way it is compiled with other dlls.<= br>
Can be built before the patch or after the patch?=C2=A0
=

After the patch.
=C2=A0
And after it is
built, will it run on a system where ImageMagick is not installed at
all?

My point is : ImageMagick is made = available by dynamically loading 2 dlls.
If they are not installe= d, then the feature is disabled (as far as I remember).

What happens if the jpeg or xpm or png dlls are not found ?=C2=A0

You see, w32-win.el doesn't have ImageMagick-related DLL names in its value of dynamic-library-alist, and without that Emacs won't know
which libraries to look for when ImageMagick support is requested.


It is easy enough to add them and if t= he patch I posted didn't address this issue,=C2=A0
this is my= mistake. Because it is certainly needed.

Fabrice<= /div>

--001a11467a9a5b9d4505469f6f87-- From MAILER-DAEMON Sat Jan 21 14:16:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV18t-0001of-Pn for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:16:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV18q-0001oY-TF for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:16:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV18l-0001Ag-Uq for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:16:00 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:38067) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV18k-00019k-4n; Sat, 21 Jan 2017 14:15:54 -0500 Received: by mail-wm0-x233.google.com with SMTP id r144so93903410wme.1; Sat, 21 Jan 2017 11:15:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fRGYCoNJerhbE2oAkhmp+QIkSaLnS39oZD47yp+oo9I=; b=QE8te4wjjEETfiqID1EwHgADQ0W9Dhj8+pbfm849AmoiTS1kvCEK3PXjFMZIB39SdG ggpM6M3/tWYpPdBGOLCh7fmg8h9wfhQRGnXhA0XWIaAhsfBTECd2w25xMOit/ky+7rKR Q9kG1eBAHXfQn+cINgN0GFSvAXEJJWcqMMVeLUDsuva2RLZIBvRnZhaMdOXp/ctPKlI/ L8/twpGzWgY36mTe7QzvqOmBWpVKmDiFuvxdjZK39nA8Jaz85pVnEDz+4w4YMCeoF3Vy AWXA4GfMf2GUYP6wrf2CDRitWZ3ExzFh9QZAho2IkSaWd1erRnaxYFKbwjDthjBuejzA 9ULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fRGYCoNJerhbE2oAkhmp+QIkSaLnS39oZD47yp+oo9I=; b=dEiRuzUe+7Z7d9efGJ9plsTAmUXM42LDvz1pTatvA1VLLIsu8b9EtgMZBf4EY+HMNJ u2Vwq8ZFcg0wkFAyOe3TmtCnFOQlZvhgtReVzWk5Fdcc11vkBgdcEDB3Azb/lPSTm4em CXDGLVv74xoyVXQIALT8TTFS7zhhqggn8G9nM/WPkIie8k/ZCqs2nkvnpxa/4Vl5aGtF uwiYad76mI/Tnze0OiFkAsQcOd5WH6MVWcs+3n4Z+spVZjSeVKSTXZPSip4mi6vm23me 86rV0g8SKuwua4olumTd+bqCL3d73ILETQ4F/2JKthgtd1r+CrAOz6/Pwc4EGQKYpihm A2mA== X-Gm-Message-State: AIkVDXLrwN4W98KueJz9nuYrWziP8RSUE3LAe5UlHqHGbRJEemQQZ4awCecNc8dG9ZsohL2hrAYzJ7MitGPpbg== X-Received: by 10.223.153.15 with SMTP id x15mr16998541wrb.179.1485026153007; Sat, 21 Jan 2017 11:15:53 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 11:15:12 -0800 (PST) In-Reply-To: References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 20:15:12 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Fabrice Popineau Cc: Eli Zaretskii , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=f403045d5d725510c005469f9865 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:16:02 -0000 --f403045d5d725510c005469f9865 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, Jan 21, 2017 at 8:04 PM, Fabrice Popineau < fabrice.popineau@gmail.com> wrote: > My point is : ImageMagick is made available by dynamically loading 2 dlls= . > If they are not installed, then the feature is disabled (as far as I remember). If Emacs on Windows is built to use the DLLs, and they are not available (let's say you downloaded a binary tarball built with Imagemagick support, but you don't have the DLLs in your system), Windows won't allow emacs.exe to run. That's a big problem. > What happens if the jpeg or xpm or png dlls are not found ? Nothing, because they are not statically linked. If Emacs was built with jpeg support (or png, etc.), it will check at runtime (and on demand, the first time a jpeg function is needed) that the jpeg DLL can be loaded. If not, the function will fail and Emacs will take note that the DLL is unavailable. Juanma =E2=80=8B --f403045d5d725510c005469f9865 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Sat, Jan 21, 2017 a= t 8:04 PM, Fabrice Popineau <fabrice.popineau@= gmail.com> wrote:

> My point is : ImageMagick is made available by dyn= amically loading 2 dlls.
> If they are not installed, then the featur= e is disabled (as far as I remember).

If Emacs on Windows is built to use the DLLs, and they are not a= vailable (let's say you downloaded a binary tarball built with Imagemag= ick support, but you don't have the DLLs in your system), Windows won&#= 39;t allow emacs.exe to run. That's a big problem.

> What = happens if the jpeg or xpm or png dlls are not found ?=C2=A0

<= div style=3D"font-size:14.6667px">Nothing, because they are not statically = linked. If Emacs was built with jpeg support (or png, etc.), it will check = at runtime (and on demand, the first time a jpeg function is needed) that t= he jpeg DLL can be loaded. If not, the function will fail and Emacs will ta= ke note that the DLL is unavailable.

=C2=A0 =C2=A0 Juanma
= =E2=80=8B
--f403045d5d725510c005469f9865-- From MAILER-DAEMON Sat Jan 21 14:23:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV1GY-0004Ux-10 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:23:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1GV-0004TQ-4T for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:23:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV1GS-0004aW-U2 for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:23:55 -0500 Received: from mail-wm0-x22a.google.com ([2a00:1450:400c:c09::22a]:37493) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV1GR-0004Yw-AS; Sat, 21 Jan 2017 14:23:51 -0500 Received: by mail-wm0-x22a.google.com with SMTP id c206so94306569wme.0; Sat, 21 Jan 2017 11:23:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=nHz5P5/MksXotRndoLqCF1mZDp31sHGY+jdxzvzHioI=; b=ejQgksDqbV3ttBJBTulN9Mq1L1271mizjrlpXigHNzAYcCfjfC3xJt6mq/MJxg593B a+OEEqJ5G4IF2YFw0jQoPVroPKtnCFfKcSNCHnEkGkSwjTjWxjcH4KVSnXq3O049Uis3 stNTWKGs+6ECh0evjffcy5x5j+uWxiLlBBKmjfreCDU0EDno1wAlxjAGGyzbaxBlv9FM /GP82OQziwq1NKS4LwOVW9WjrqKYkr+kiOcS3d810RA455ljWWt24NkKP7FB5cB3WWXw sm7c5BY3UVvB1pVWu3PfqSw7cM3x+itUO8qLAh5oYfMa+27CNErMOKTkGfF9yVSzYwdk fqvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=nHz5P5/MksXotRndoLqCF1mZDp31sHGY+jdxzvzHioI=; b=kIo9Q+tKZQVg9ZPOMHzowAMvjfrjDH+t1ScfJCY0/01wNDvWaByIKGEINJcxa3x6UX 3I5R/Yk1oCgLYLNIJIJ8hpbvJftMeDAdVx9zn5JOMOvD93rLyeU/a7wKXaxhb62asNQO cO8hza/GcD0YzmZaJYJ4JozANvrJV+IWfyumX5Uid4qKL0jKX/3rzIze1BBmsFqlJx/r 1uxUFjS59yL9Q7fONiBbmCmW6q44ekdqP4gDjobgotyAcvzVJR5kdOZ8QXkz27SU7KXR tkrNfJKikEKNnin2LGCHvb2IVjMbzhA98CbTY50j8ZRBRghVSxi/LpxE/5quGdSoBKng Rn3Q== X-Gm-Message-State: AIkVDXJBGOGAF+wAmJzXB18eBBnwP52LsaoJqyPbhO29mPcMTxebVRN8R9tx1RnwMoXlonWnY/u5Jw4t3rOUdQ== X-Received: by 10.223.138.220 with SMTP id z28mr17005671wrz.26.1485026630208; Sat, 21 Jan 2017 11:23:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sat, 21 Jan 2017 11:23:29 -0800 (PST) In-Reply-To: References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> From: Fabrice Popineau Date: Sat, 21 Jan 2017 20:23:29 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Juanma Barranquero Cc: Eli Zaretskii , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a11498462c6943705469fb424 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:23:57 -0000 --001a11498462c6943705469fb424 Content-Type: text/plain; charset=UTF-8 2017-01-21 20:15 GMT+01:00 Juanma Barranquero : > On Sat, Jan 21, 2017 at 8:04 PM, Fabrice Popineau < > fabrice.popineau@gmail.com> wrote: > > > My point is : ImageMagick is made available by dynamically loading 2 > dlls. > > If they are not installed, then the feature is disabled (as far as I > remember). > > If Emacs on Windows is built to use the DLLs, and they are not available > (let's say you downloaded a binary tarball built with Imagemagick support, > but you don't have the DLLs in your system), Windows won't allow emacs.exe > to run. That's a big problem. > > ??? Not when you use LoadLibrary and fortunately. > > What happens if the jpeg or xpm or png dlls are not found ? > > Nothing, because they are not statically linked. If Emacs was built with > jpeg support (or png, etc.), it will check at runtime (and on demand, the > first time a jpeg function is needed) that the jpeg DLL can be loaded. If > not, the function will fail and Emacs will take note that the DLL is > unavailable. > > And it is the same for ImageMagick. Fabrice --001a11498462c6943705469fb424 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-21 20:15 GMT+01:00 Juanma Barranquero <lekktu@gmail.com>= :
On Sat, Jan 21, 2017 at 8:04 PM, Fabr= ice Popineau <fabrice.popineau@gmail.com> wrote:

> My point is : ImageMagick is made available by dynamically loadin= g 2 dlls.
> If they are not installed, then the feature is disabled (= as far as I remember).

If Emacs on Windows is built to use the DLLs, and they are not available= (let's say you downloaded a binary tarball built with Imagemagick supp= ort, but you don't have the DLLs in your system), Windows won't all= ow emacs.exe to run. That's a big problem.


<= /div>
???

Not when you use LoadLibrary and for= tunately.
=C2=A0
> What happens if the jpeg or xpm or png dlls a= re not found ?=C2=A0

Nothing, because they are not statically linked. If Emacs was built with j= peg support (or png, etc.), it will check at runtime (and on demand, the fi= rst time a jpeg function is needed) that the jpeg DLL can be loaded. If not= , the function will fail and Emacs will take note that the DLL is unavailab= le.


And it is the same for ImageMagick.=C2=A0

<= /div>
Fabrice
--001a11498462c6943705469fb424-- From MAILER-DAEMON Sat Jan 21 14:31:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV1NU-0006Ak-4D for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:31:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1NQ-0006Ad-LJ for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:31:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV1NO-0007lg-RJ for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:31:04 -0500 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:38859) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV1NJ-0007jd-Fa; Sat, 21 Jan 2017 14:30:57 -0500 Received: by mail-wm0-x229.google.com with SMTP id r144so94236909wme.1; Sat, 21 Jan 2017 11:30:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=2QjilZVHLV5hvP2KPwkWdt09QdrRHSbMwxQ3Fr7r2Xs=; b=T5TmbqOljLYFCnuZQ91ZisiUaqcaAmAFehVcz70JCay7Hy+IuXDMti1vJQLx1Kl45e cYfAZDbUn0tHtYAQRXPZKc3BFjYPg9E3mcq8FrwbqmOx9jiAZTLSNEOipT1nK2CD+r7N zViNs38HRAlC8WO06M4xBibKhc4Q0ejCPvsXWVK5Lw2FxQOSFgZq0TfZQdvuAKj73WaS MNKSYLV9rBrO6UxwWRnoUc5uf70mwtxW68ix0hBG0PnaHZZHGhBz0qhClwDRTZto24N3 I8w+F0pAo27+qnCW3vgpbbraGqhlUS9JwZBeL7lp9dhtyHOxjibQmkvE6iK4ZRMwwhvy Ql5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=2QjilZVHLV5hvP2KPwkWdt09QdrRHSbMwxQ3Fr7r2Xs=; b=mPK6tp7uJM04ZPPr/msRr/EKaPTjq7TnKzmOvKr22elsiwN8OGMFQdsDzhOV3Epcs1 NIo3icwCEtjs9Y9mFkfYGkEXe93bEYIoMtMvV4F4/5b4aruADZZ9rUFnLl6bU1Wn7z2f XgwOGm8p+BlCyb0bhm0mjhtlYBxfe1CBNNI/kSqT9QWkRnI6c6EiGKxF3YaFRvIj3GtU 8TgEMZ4r0A9HIL56N9uU4XZ7g+R4PKfxJwmh9FuZvBgsABajB/+jtSncNIcve+0TiocA O3vNqUYjrlI6aCj6dMW9faW8EBuQNtAuuUEQXQiGpTiPHf+3eU1ImWQhV3yIONgKFWHd mJhw== X-Gm-Message-State: AIkVDXJfuUxrRhr1xvjVP26amsAG0iLgDLqmPPDM7lZTS+CqsrB//8WgL0n5P1LEw8dFBVAOAStWrHGXk49HQg== X-Received: by 10.28.234.193 with SMTP id g62mr7658743wmi.36.1485027056471; Sat, 21 Jan 2017 11:30:56 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 11:30:15 -0800 (PST) In-Reply-To: References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 20:30:15 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Fabrice Popineau Cc: Eli Zaretskii , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a114723fa2ed2b805469fce52 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:31:06 -0000 --001a114723fa2ed2b805469fce52 Content-Type: text/plain; charset=UTF-8 On Sat, Jan 21, 2017 at 8:23 PM, Fabrice Popineau < fabrice.popineau@gmail.com> wrote: > ??? > > Not when you use LoadLibrary and fortunately. I thought we were talking about statically linking Imagemagick. Of course if it is not statically linked and you use LoadLibrary the problem does not exist. > And it is the same for ImageMagick. It is already using dynamic-library-alist? --001a114723fa2ed2b805469fce52 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable --001a114723fa2ed2b805469fce52-- From MAILER-DAEMON Sat Jan 21 14:50:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV1gR-0001o4-JN for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:50:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1gP-0001nt-Mn for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:50:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV1gM-00075W-1C for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:50:41 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1gL-00075S-UE; Sat, 21 Jan 2017 14:50:37 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3325 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV1gK-0004Lc-93; Sat, 21 Jan 2017 14:50:37 -0500 Date: Sat, 21 Jan 2017 21:50:25 +0200 Message-Id: <83bmv05h1a.fsf@gnu.org> From: Eli Zaretskii To: Glenn Morris CC: deng@randomsample.de, kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org In-reply-to: <8c7f5o8cu0.fsf@fencepost.gnu.org> (message from Glenn Morris on Sat, 21 Jan 2017 13:52:55 -0500) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> <8c7f5o8cu0.fsf@fencepost.gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:50:42 -0000 > From: Glenn Morris > Cc: deng@randomsample.de, kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org > Date: Sat, 21 Jan 2017 13:52:55 -0500 > > > Git obviously does record the commit date, so there's no problem with > > that rule. > > The commit date has no relation to "the date when the change enters the > Emacs repository" (ie, was pushed to Savannah). It does when you commit locally before pushing. And, as mentioned here, there's the --date option to control that. > If you want a recent example of this, "make ChangeLog" and look at the > dates of "recent" concurrency entries. Some are years old. That doesn't mean we should drop the rule, just that some people are not always following rules. From MAILER-DAEMON Sat Jan 21 14:53:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV1in-0002fN-LD for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:53:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1im-0002fH-1Q for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:53:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV1ii-0008Ey-W2 for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:53:08 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34426) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1ii-0008Eu-SL; Sat, 21 Jan 2017 14:53:04 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3326 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV1ih-0004T4-Id; Sat, 21 Jan 2017 14:53:04 -0500 Date: Sat, 21 Jan 2017 21:52:55 +0200 Message-Id: <83a8ak5gx4.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sat, 21 Jan 2017 19:57:01 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:53:08 -0000 > From: Juanma Barranquero > Date: Sat, 21 Jan 2017 19:57:01 +0100 > Cc: Óscar Fuentes , > Emacs developers > > But I am now worried about nt/INSTALL.W64, which is directed to those who want to build the 64-bit port > anew, from scratch (from the repository or a source tarball). Following that file's steps, Imagemagick is not > installed. I think that anyone knowledgeable enough to install Imagemagick and try to build with it will know to > use --without-imagemagick if needed. So, I think the following minimal patch best reflects the current > experience: Fine with me, but please wait for a few days to give MinGW64 users a chance to comment on this. Thanks. From MAILER-DAEMON Sat Jan 21 14:55:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV1lT-0003Q8-E7 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 14:55:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50019) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1lQ-0003Pt-SY for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:55:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV1lN-0001Ni-Nh for emacs-devel@gnu.org; Sat, 21 Jan 2017 14:55:52 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34496) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV1lN-0001NS-FC; Sat, 21 Jan 2017 14:55:49 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3327 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV1lM-0004lz-0v; Sat, 21 Jan 2017 14:55:49 -0500 Date: Sat, 21 Jan 2017 21:55:39 +0200 Message-Id: <838tq45gsk.fsf@gnu.org> From: Eli Zaretskii To: Fabrice Popineau CC: lekktu@gmail.com, ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: (message from Fabrice Popineau on Sat, 21 Jan 2017 20:23:29 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 19:55:53 -0000 > From: Fabrice Popineau > Date: Sat, 21 Jan 2017 20:23:29 +0100 > Cc: Eli Zaretskii , Óscar Fuentes , > Emacs developers > > If Emacs on Windows is built to use the DLLs, and they are not available (let's say you downloaded a > binary tarball built with Imagemagick support, but you don't have the DLLs in your system), Windows > won't allow emacs.exe to run. That's a big problem. > > ??? > > Not when you use LoadLibrary and fortunately. The coe that uses LoadLibrary is based on dynamic-library-alist, so as long as Imagemagick DLLs are not in that alist, there's no LoadLibrary to load them. > > What happens if the jpeg or xpm or png dlls are not found ? > > Nothing, because they are not statically linked. If Emacs was built with jpeg support (or png, etc.), it will > check at runtime (and on demand, the first time a jpeg function is needed) that the jpeg DLL can be > loaded. If not, the function will fail and Emacs will take note that the DLL is unavailable. > > And it is the same for ImageMagick. Please describe how this would work, without using dynamic-library-alist. From MAILER-DAEMON Sat Jan 21 15:20:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV29Q-0007bV-Kt for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:20:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV29O-0007bO-3C for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:20:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV29K-0002dH-V5 for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:20:38 -0500 Received: from limerock03.mail.cornell.edu ([128.84.13.243]:58248) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV29K-0002dC-PG for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:20:34 -0500 X-CornellRouted: This message has been Routed already. Received: from authusersmtp.mail.cornell.edu (granite4.serverfarm.cornell.edu [10.16.197.9]) by limerock03.mail.cornell.edu (8.14.4/8.14.4_cu) with ESMTP id v0LKKXGZ016099; Sat, 21 Jan 2017 15:20:33 -0500 Received: from [10.13.22.4] (65-112-130-194.dia.static.qwest.net [65.112.130.194]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.14.4/8.12.10) with ESMTP id v0LKKVVw013866 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sat, 21 Jan 2017 15:20:32 -0500 Subject: Re: How to check master ? To: Fabrice Popineau References: Cc: Emacs developers From: Ken Brown Message-ID: <5c521f90-865b-d62f-f693-8237c195da46@cornell.edu> Date: Sat, 21 Jan 2017 15:20:31 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-PMX-Cornell-Gauge: Gauge=X X-PMX-CORNELL-AUTH-RESULTS: dkim-out=none; X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 128.84.13.243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:20:39 -0000 On 1/21/2017 12:04 PM, Fabrice Popineau wrote: > Should I report the failures to the bug tracking list ? I think so, if they haven't been reported already. Ken From MAILER-DAEMON Sat Jan 21 15:26:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2Ew-00009c-Da for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:26:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54112) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2Eq-00009U-Kj for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:26:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2En-0004ov-2V for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:26:16 -0500 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]:36478) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2Em-0004oW-Rp for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:26:13 -0500 Received: by mail-lf0-x241.google.com with SMTP id h65so11113137lfi.3 for ; Sat, 21 Jan 2017 12:26:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=/VxsAwznp4LYjlr6pDJZYWOIkHbhN6KvXQtWxxSNOzE=; b=W4fr+AZucJ7agddwCAeb2lvEryqcDFbQEso59ZH1HFwSu4xxrxib6RSPZkpVkGh0ng iIuS0h7ZFiurRQ3fa12V9+gCrqzpzcbG4qA8luQ+Df5qHScTehLSWgfJLGOGpRe/C1Nq 8/3ZK4r8pAFGCuvxG00TbdrVLnPY7B7qd3kU+BizVNk7h+t0VkXVNT+C7Q+ebBWanMBu fy1RaoEqSLhNi96QQeckldnAy57TViJe4pAXlHGMAtJSN003bI10VaUjUxx/NuQD+/39 jqfrGO5n7TYEMGKJsTgPqKsKztPXfwYlJ4JSd5jyZgazLIgaEsdDOyi8Mwg/7Lv0earR pXew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=/VxsAwznp4LYjlr6pDJZYWOIkHbhN6KvXQtWxxSNOzE=; b=kMedSc3s1vG0d9IbMb1RTqhAotBgZwstIT/MqTqW3W7fcm+L+dhlSDfd7O8jBmOwAz sDYpQ89umVGE8Ar4XtKHqwH2OVh9HHvLIouxwBK9A53X3pnkgs2xZrH6FZs5uOlshKO1 OyjvpHxhSlTwziFXt1K9YqNFHPhnqTzlQSX1kbcK5leD4SFmnPDV6LDcK9xGccvd0gem AKKIUvI6KWXQVi/FIwVvUCCvxRtx+oKjFeuHxmMJoqkSNr6Wm182JPfrQwHXaHKzr1NK Q6DB75gVYxgx1Lw/sQXRkfmvGinylXjyFxq/mpTVXMev4Tk9lfoRfp98iMKjcN23iE6i 9oPQ== X-Gm-Message-State: AIkVDXKi0sT5j5K5gomO6GTWYgEez3+WOrops2aX50ZNl6MIvoU203vl1Hg1FCI5FGxu5g== X-Received: by 10.25.4.9 with SMTP id 9mr6154488lfe.45.1485030369802; Sat, 21 Jan 2017 12:26:09 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id 4sm4817075ljv.40.2017.01.21.12.26.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 12:26:08 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> From: Dmitry Gutov Message-ID: Date: Sat, 21 Jan 2017 23:26:07 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87bmv0beoa.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:26:21 -0000 On 21.01.2017 18:44, Lars Ingebrigtsen wrote: > Nope. You should only signal an error if you have an error, and getting > a 404 isn't an error. Whether 404 is an error or not, depends on an application. And I'm saying that as someone with a few years of experience writing web applications that do HTTP requests themselves. Consider the case where an application calls a function foo (which implements some sort of abstraction layer), and the said function uses with-url. If foo is supposed to be general purpose (used in different applications), it would have to handle errors in a general way, so that any of its callers could still handle any kinds of errors, without being a macro. I'd rather with-url (or its replacement) was an example of doing that already. >> Something else I take an issue with, is with `with-url' being a >> macro. :) That violates The First Rule of Macro Club. > > Yes, the first rule is "use a macro when it makes sense". Not really. And macros make sense the most when we add a control flow construct, or some sort of definition syntax for a new facility. Neither of which is really the case here. You're basically joining a library function with a control flow construct together. >> 2) Basically require to use the newly-introduced threads for >> asynchrony. > > Using the new threads is a trivial rewrite and doesn't affect the > signature of the macro. It could simplify it, by allowing to treat asynchronous code like synchronous one. > Anyway, I think the best option here would be to just have an > :ignore-errors parameter to `with-url'. In that case, the body will > just be evaluated if we get non-error response. I'm rather more worried about being able to handle errors in an asynchronous fashion. You could say 404 is not an error, but handling it in a similar way to all other "actual" errors like "can't resolve the hostname" and "connection timeout" can be pretty handy. From MAILER-DAEMON Sat Jan 21 15:33:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2LM-0001O5-KN for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:33:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55139) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2LH-0001No-NZ for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:32:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2LC-00076e-Qh for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:32:55 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:42779) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2LC-00075M-Jk for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:32:50 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV2L7-00029n-Ll; Sat, 21 Jan 2017 21:32:47 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> Date: Sat, 21 Jan 2017 21:32:39 +0100 In-Reply-To: (Dmitry Gutov's message of "Sat, 21 Jan 2017 23:26:07 +0300") Message-ID: <87bmv09ms8.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:32:58 -0000 Dmitry Gutov writes: > Not really. And macros make sense the most when we add a control flow > construct, or some sort of definition syntax for a new > facility. Neither of which is really the case here. > > You're basically joining a library function with a control flow > construct together. It's a control flow construct in much the same way `with-temp-file' is. > You could say 404 is not an error, but handling it in a similar way to > all other "actual" errors like "can't resolve the hostname" and > "connection timeout" can be pretty handy. Yes, none of these should signal an error from the library. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 15:34:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2Mi-0001rs-9H for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:34:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55498) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2Mf-0001re-HN for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:34:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2Ma-0007i0-Kn for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:34:21 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:42792) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2Ma-0007gy-EE for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:34:16 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV2MX-0008KF-IV; Sat, 21 Jan 2017 21:34:15 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> Date: Sat, 21 Jan 2017 21:34:07 +0100 In-Reply-To: (Dmitry Gutov's message of "Sat, 21 Jan 2017 23:26:07 +0300") Message-ID: <877f5o9mps.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:34:23 -0000 Dmitry Gutov writes: > Whether 404 is an error or not, depends on an application. And I'm > saying that as someone with a few years of experience writing web > applications that do HTTP requests themselves. (Yes, I have, of course, no such experience.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 15:36:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2PC-0002Y5-Or for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:36:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56184) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2PA-0002Xj-G7 for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:36:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2P5-0000Qe-KS for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:36:56 -0500 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]:36847) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2P5-0000QO-DG for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:36:51 -0500 Received: by mail-lf0-x241.google.com with SMTP id h65so11124783lfi.3 for ; Sat, 21 Jan 2017 12:36:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=VDhXDAOPTwP4pKVkz0Zb47sQLq1vx3uMYII64RaCZgM=; b=sIt8WAituOuqcxFyEpLvE2jhSsVjulQmNOUAJGa0XlBWp4uywwqi36Wkw2v0SQKw8X Z7lZkD8UDryE/T7ScIRhabzSGQm+C8giuRdNBgNbTdbHAHimbv6oE7Ohsw4h0D2kdZzT sI0l5LWRaXOrdwTeWlfPdTILMKoLKicCI6VGaqFJIq5b9uN/f6SlAWQw9Dv39c5Nqf3C Ak+D9MORtFwb0EcARoj+e8gnEwenDi2IA3L59ij3KMpcp51emvVa1IavUnAtoo9togOt UhfWtrudFXgyfe1KFHbR0LD62yNunTiF20lmHn980tlilxHSKKyYMy5x6gwjr0e/D06U 1JDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=VDhXDAOPTwP4pKVkz0Zb47sQLq1vx3uMYII64RaCZgM=; b=ACqKRkpxkBOvFpPJne14hU5Jwj9QpLYkFUimWn4kcwm9eEeUEt92ymAlnmWcIycKHh FHtIqOfkneGVC8YSTHhfU6RjEZDee6gLNbyY/C/dHKCidV3PpN9zp8QhIYszsFOCvxCD JOuH37QNLwCdniTnVlozIOTvBSpycQtt6GrOcEzLoM+MAqgn25HWTb5y/sv5V+Hr7zhr x+VlW8l3eX+0/ftVcVbszRufpoqauBT9+QRO4GjaEe43BQk+VNBze4j2AGQwfMUS8YDv 8cIm9sgvS/r6Zxc08I2z7J30hhw0chT4H088ak9auvyxJqQtrku37ozDS2g9wLHdKXbq CBRA== X-Gm-Message-State: AIkVDXIK2dtWcSEeGT2fBSJu94lnFNs6JWarCA+c5pJYeNWzMgoimin4xRCjolXNlfL01w== X-Received: by 10.25.80.26 with SMTP id e26mr6760195lfb.82.1485031009878; Sat, 21 Jan 2017 12:36:49 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id m18sm4727625lfe.45.2017.01.21.12.36.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 12:36:49 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> From: Dmitry Gutov Message-ID: Date: Sat, 21 Jan 2017 23:36:48 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87bmv09ms8.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:36:57 -0000 On 21.01.2017 23:32, Lars Ingebrigtsen wrote: > It's a control flow construct in much the same way `with-temp-file' is. with-temp-file has no error handling section. If anything unexpected happens during setup or teardown, you can be sure it'll signal a proper error. The callers can't miss it, and they're free to handle different errors via condition-case. >> You could say 404 is not an error, but handling it in a similar way to >> all other "actual" errors like "can't resolve the hostname" and >> "connection timeout" can be pretty handy. > > Yes, none of these should signal an error from the library. How will the callers handle failure, then? From MAILER-DAEMON Sat Jan 21 15:38:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2Qs-0003FC-Cx for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:38:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2Qq-0003F4-AG for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:38:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2Ql-0001Dz-EM for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:38:40 -0500 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]:35180) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2Ql-0001Dp-6m for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:38:35 -0500 Received: by mail-lf0-x244.google.com with SMTP id v186so11186503lfa.2 for ; Sat, 21 Jan 2017 12:38:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=ZSdjEgYxMnCVf4R5gl+jtKh+74Jn0Kc+xRe9U+nt/8g=; b=POml9L9NGu3gUe7vo6uhX40DM9A4r+uWs0kbCcfP7zeNyKqbeGemCnf1PbxiswpV8W jOBOYVCHjwYWV17V7nGm4FQ+wScCQAsahHx8/souSf4NUZLVduXpBi9wNh43NExcNGHY C2LGG+gdp3AUYYuSoAPjmU1oO67m8Rn6uTswt1aoJJGjO9NSp9Yt+FozIOeM/WMD+G+a HM9DRTSsYcd6laGAUyVxHHwjcjOtkY29Rzk/ponCR1F2A5xJVJKNd6HOZDVNSBpCgJsZ 1DstUjSCL1WioHJa2tDSiPuNzqycENqcIBKc12TNzOQ8IR963ma07QCMOG5h+xpRc11/ matQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ZSdjEgYxMnCVf4R5gl+jtKh+74Jn0Kc+xRe9U+nt/8g=; b=KLODzijmUFo+W3eVdD8bJajz4HkFMdA/xWJ7HTdj/7tqJtltPSAejOkg38W5wNx3ic g66TB0NTIeQIdI2YKU6IuCleMsHfoU3MPc6itp5rKPftRy+/dQAJ3GZCgo797pmMIeBM kQAU56r640Ugmd+FgBmDS4d5SHTmSnlpRmdZB9SPvN0rht2UMWHeIEjGjmXwsiBoGEM0 tWukY6/Hd4P0MvDVMLxgQ47EcZTMc/NEWg5ETDDJcxN9FG8UyhrzKkyl8X9+twUJ9Eqw /2uNJG/SR3MYurHcXxMjYr3EvC7Nq2nVOijdV1ENV5yAcA9roCzOqMg4m227HP52qq0b SJ/A== X-Gm-Message-State: AIkVDXJYKiYvf6uugG1PbHqtx6Bx1kdDqngMi2TVpH7+d3ei0bl+QwHA5hpe5I4Rv1eohA== X-Received: by 10.25.37.145 with SMTP id l139mr6878761lfl.124.1485031113855; Sat, 21 Jan 2017 12:38:33 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id g201sm4842846lfe.21.2017.01.21.12.38.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 12:38:33 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <877f5o9mps.fsf@gnus.org> From: Dmitry Gutov Message-ID: <25c51f1d-c284-711c-838d-5810c482d8df@yandex.ru> Date: Sat, 21 Jan 2017 23:38:32 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <877f5o9mps.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:38:41 -0000 On 21.01.2017 23:34, Lars Ingebrigtsen wrote: > Dmitry Gutov writes: > >> Whether 404 is an error or not, depends on an application. And I'm >> saying that as someone with a few years of experience writing web >> applications that do HTTP requests themselves. > > (Yes, I have, of course, no such experience.) It's basically impossible to argue from experience that "certain classes of applications" don't exist. Maybe you just haven't seen them, or haven't tried the different approaches. It is, on the other hand, possible to argue from experience that "certain classes of applications" exist. From MAILER-DAEMON Sat Jan 21 15:41:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2TQ-0003ov-PT for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:41:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57204) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2TL-0003oo-VX for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:41:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2TI-0002li-FS for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:41:15 -0500 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:37921) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2TE-0002iy-6l; Sat, 21 Jan 2017 15:41:08 -0500 Received: by mail-wm0-x233.google.com with SMTP id r144so95743037wme.1; Sat, 21 Jan 2017 12:41:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4IKohxVgHOTU9HbSmz8IYJMUGUJoXfnP1nuWHhwWilw=; b=s/40NXa3yh24xGU9b1ej/1rpVfk5tCOTe70oXCrw6hbwwcgsZgP+O5AOymu4U6zKa8 EFqwdnfQFExs1XneVQUy2gtnfOvjJPwHBwAK10479NAlOOw28EB1c6AC6v868EBS5XHt w2pde/X9nfzpHlkCSQ0Ougr0aHI5qO7IzjfAiyBSRoEAw4N2eGaafG0qt1AlD9yPRKNF 9hpzbosPFfN/LoT/LJLPe2nk5+OgniYlrFeZ7tb7i8oYL2JsgsyA64YjYQjDMzakHYjX 7BTaQgHj/5ELcu4qnI9RQmjJ7PHrQU1fzF5PcOh0nzlr7sexDezvjpTkVWD9K1uJUwvM iWUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4IKohxVgHOTU9HbSmz8IYJMUGUJoXfnP1nuWHhwWilw=; b=BMxnkz0tNugJR60tkz3a+GafIkyLNpEfeELeHMjQgJF1n5qSLg5PTsXyANzBptasYy 3k4D7YsEEJZHBXnCJQ7mZbFwLbpsOZD29oUKh/JvUH3DpEiHwnOMJHXMuhN3YqnBaFrT xH9LPh++sikijzCsmzF3soeyW/IdDl4DY8k4ClYvG840lBIMLiUKvjQCslBEkRZeL0I+ Ktwj9v8EMpSHYxruM8+4WcUQ6dtujg/FkIOF0zSkbKbb3ddJNNAfPOy93rmZsX6IWRTX s/Ha5M0HlQqNsXAvIPmJ4n4cGoiL+c7y5OuIVbzv2MpN9Ml2ndcQiayRXQJtjVsJjr44 VgCA== X-Gm-Message-State: AIkVDXJN1aWJ6/kMpi0aecuGuRcE6rzVqJ6k5Kt2eRCWjWDsaOAxBep0lNMznh5mfimd80TjoB+OKwa3nPcJ4g== X-Received: by 10.28.93.68 with SMTP id r65mr8950297wmb.133.1485031265421; Sat, 21 Jan 2017 12:41:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sat, 21 Jan 2017 12:40:44 -0800 (PST) In-Reply-To: <838tq45gsk.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> From: Fabrice Popineau Date: Sat, 21 Jan 2017 21:40:44 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: Juanma Barranquero , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/mixed; boundary=001a11467a9a0e723f0546a0c900 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:41:19 -0000 --001a11467a9a0e723f0546a0c900 Content-Type: multipart/alternative; boundary=001a11467a9a0e723c0546a0c9fe --001a11467a9a0e723c0546a0c9fe Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2017-01-21 20:55 GMT+01:00 Eli Zaretskii : > > From: Fabrice Popineau > > Date: Sat, 21 Jan 2017 20:23:29 +0100 > > Cc: Eli Zaretskii , =C3=93scar Fuentes , > > Emacs developers > > > > If Emacs on Windows is built to use the DLLs, and they are not > available (let's say you downloaded a > > binary tarball built with Imagemagick support, but you don't have the > DLLs in your system), Windows > > won't allow emacs.exe to run. That's a big problem. > > > > ??? > > > > Not when you use LoadLibrary and fortunately. > > The coe that uses LoadLibrary is based on dynamic-library-alist, so as > long as Imagemagick DLLs are not in that alist, there's no LoadLibrary > to load them. > > > > What happens if the jpeg or xpm or png dlls are not found ? > > > > Nothing, because they are not statically linked. If Emacs was built > with jpeg support (or png, etc.), it will > > check at runtime (and on demand, the first time a jpeg function is > needed) that the jpeg DLL can be > > loaded. If not, the function will fail and Emacs will take note that > the DLL is unavailable. > > > > And it is the same for ImageMagick. > > Please describe how this would work, without using > dynamic-library-alist. > But I never said that it would work without using dynamic-library-alist ? I said that I may have missed that part of the patch when I have posted it. I was objecting to the fact that IM has to be statically linked. The attached patch should be a proof of concept. Fabrice --001a11467a9a0e723c0546a0c9fe Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-21 20:55 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
=
> From: Fabrice Popine= au <fabr= ice.popineau@gmail.com>
> Date: Sat, 21 Jan 2017 20:23:29 +0100
> Cc: Eli Zaretskii <eliz@gnu.org>, =C3=93scar Fuentes <ofv@wanadoo.es>,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0Emacs developers <emacs-devel@gnu.org>
>
>=C2=A0 If Emacs on Windows is built to use the DLLs, and they are= not available (let's say you downloaded a
>=C2=A0 binary tarball built with Imagemagick support, but you don't= have the DLLs in your system), Windows
>=C2=A0 won't allow emacs.exe to run. That's a big problem.
>
> ???
>
> Not when you use LoadLibrary and fortunately.

The coe that uses LoadLibrary is based on dynamic-library-alist, so = as
long as Imagemagick DLLs are not in that alist, there's no LoadLibrary<= br> to load them.

>=C2=A0 > What happens if the jpeg or xpm or png dlls are not found ?=
>
>=C2=A0 Nothing, because they are not statically linked. If Emacs was bu= ilt with jpeg support (or png, etc.), it will
>=C2=A0 check at runtime (and on demand, the first time a jpeg function = is needed) that the jpeg DLL can be
>=C2=A0 loaded. If not, the function will fail and Emacs will take note = that the DLL is unavailable.
>
> And it is the same for ImageMagick.

Please describe how this would work, without using
dynamic-library-alist.

But I never said= that it would work without using dynamic-library-alist ?
I said = that I may have missed that part of the patch when I have posted it.
<= div>I was objecting to the fact that IM has to be statically linked.=C2=A0<= /div>
=C2=A0
The attached patch should be a proof of con= cept.

= Fabrice
--001a11467a9a0e723c0546a0c9fe-- --001a11467a9a0e723f0546a0c900 Content-Type: text/plain; charset=US-ASCII; name="master-imagemagick.diff" Content-Disposition: attachment; filename="master-imagemagick.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iy7p7yxv0 ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBkY2JhN2ViLi41 M2EyZDI3IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0y NDYyLDcgKzI0NjEsNyBAQCBBQ19ERUZVTgogICBpZiB0ZXN0ICIke3dpdGhfaW1hZ2VtYWdpY2t9 IiAhPSAibm8iOyB0aGVuCiAgICAgIyMgNi4zLjUgaXMgdGhlIGVhcmxpZXN0IHZlcnNpb24ga25v d24gdG8gd29yazsgc2VlIEJ1ZyMxNzMzOS4KICAgICAjIyA2LjguMiBtYWtlcyBFbWFjcyBjcmFz aDsgc2VlIEJ1ZyMxMzg2Ny4KLSAgICBJTUFHRU1BR0lDS19NT0RVTEU9IldhbmQgPj0gNi4zLjUg V2FuZCAhPSA2LjguMiIKKyAgICBJTUFHRU1BR0lDS19NT0RVTEU9Ik1hZ2lja1dhbmQgPj0gNi4z LjUgTWFnaWNrV2FuZCAhPSA2LjguMiIKICAgICBFTUFDU19DSEVDS19NT0RVTEVTKFtJTUFHRU1B R0lDS10sIFskSU1BR0VNQUdJQ0tfTU9EVUxFXSkKICAgICBBQ19TVUJTVChJTUFHRU1BR0lDS19D RkxBR1MpCiAgICAgQUNfU1VCU1QoSU1BR0VNQUdJQ0tfTElCUykKZGlmZiAtLWdpdCBhL2xpc3Av bG9hZHVwLmVsIGIvbGlzcC9sb2FkdXAuZWwKaW5kZXggZWNiNzI4NC4uNjkyMWVkOCAxMDA2NDQK LS0tIGEvbGlzcC9sb2FkdXAuZWwKKysrIGIvbGlzcC9sb2FkdXAuZWwKQEAgLTI4MCw2ICsyODAs NyBAQAogICAgICAgKGxvYWQgInRlcm0vdzMyLXdpbiIpCiAgICAgICAobG9hZCAiZGlzcC10YWJs ZSIpCiAgICAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCisgICAgICAgIChs b2FkICJpbWFnZSIpCiAgICAgICAgIChsb2FkICJ3MzItZm5zIikKICAgICAgICAgKGxvYWQgImxz LWxpc3AiKQogICAgICAgICAobG9hZCAiZG9zLXczMiIpKSkpCmRpZmYgLS1naXQgYS9saXNwL3Rl cm0vdzMyLXdpbi5lbCBiL2xpc3AvdGVybS93MzItd2luLmVsCmluZGV4IGZkYTkzODguLmQxNjhl MTEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzItd2luLmVsCisrKyBiL2xpc3AvdGVybS93MzIt d2luLmVsCkBAIC0yNzEsNiArMjcxLDggQEAgbGliZ251dGxzLXZlcnNpb24KICAgICAgICAnKGdk ay1waXhidWYgImxpYmdka19waXhidWYtMi4wLTAuZGxsIikKICAgICAgICAnKGdsaWIgImxpYmds aWItMi4wLTAuZGxsIikKICAgICAgICAnKGdvYmplY3QgImxpYmdvYmplY3QtMi4wLTAuZGxsIikK KyAgICAgICAnKG1hZ2lja3dhbmQgImxpYk1hZ2lja1dhbmQtNy5RMTZIRFJJLTAuZGxsIiAibGli TWFnaWNrV2FuZC03LlExNi0wLmRsbCIpCisgICAgICAgJyhtYWdpY2tjb3JlICJsaWJNYWdpY2tD b3JlLTcuUTE2SERSSS0wLmRsbCIgImxpYk1hZ2lja0NvcmUtNy5RMTYtMC5kbGwiKQogICAgICAg IChpZiAoPj0gbGliZ251dGxzLXZlcnNpb24gMzA0MDApCiAgICAgICAgICAgICcoZ251dGxzICJs aWJnbnV0bHMtMzAuZGxsIikKICAgICAgICAgICcoZ251dGxzICJsaWJnbnV0bHMtMjguZGxsIiAi bGliZ251dGxzLTI2LmRsbCIpKQpkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2Uu YwppbmRleCAzOTY3N2QyLi4wNDQ4MGYzIDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9z cmMvaW1hZ2UuYwpAQCAtMjMwNyw3ICsyNDAzLDcgQEAgeF9maW5kX2ltYWdlX2ZkIChMaXNwX09i amVjdCBmaWxlLCBpbnQgKnBmZCkKICAgICAgICAgICAgICBoYXBwZW5zLCBlLmcuLCB1bmRlciBB dXRvIEltYWdlIEZpbGUgTW9kZS4pICAnb3BlbnAnCiAgICAgICAgICAgICAgZGlkbid0IG9wZW4g dGhlIGZpbGUsIHNvIHdlIHNob3VsZCwgYmVjYXVzZSB0aGUgY2FsbGVyCiAgICAgICAgICAgICAg ZXhwZWN0cyB0aGF0LiAgKi8KLQkgIGZkID0gZW1hY3Nfb3BlbiAoU1NEQVRBIChmaWxlX2ZvdW5k KSwgT19SRE9OTFksIDApOworICAgICAgICAgIGZkID0gZW1hY3Nfb3BlbiAoU1NEQVRBIChmaWxl X2ZvdW5kKSwgT19SRE9OTFkgfCBPX0JJTkFSWSwgMCk7CiAJfQogICAgIH0KICAgZWxzZQkvKiBm ZCA8IDAsIGJ1dCBub3QgLTIgKi8KQEAgLTgyNDQsMTYgKzgzODIsMjI3IEBAIGltYWdlbWFnaWNr X2ltYWdlX3AgKExpc3BfT2JqZWN0IG9iamVjdCkKIC8qIFRoZSBHSUYgbGlicmFyeSBhbHNvIGRl ZmluZXMgRHJhd1JlY3RhbmdsZSwgYnV0IGl0cyBuZXZlciB1c2VkIGluIEVtYWNzLgogICAgVGhl cmVmb3JlIHJlbmFtZSB0aGUgZnVuY3Rpb24gc28gaXQgZG9lc24ndCBjb2xsaWRlIHdpdGggSW1h Z2VNYWdpY2suICAqLwogI2RlZmluZSBEcmF3UmVjdGFuZ2xlIERyYXdSZWN0YW5nbGVHaWYKKyNp ZmRlZiBfX01JTkdXNjRfXworI2luY2x1ZGUgPEltYWdlTWFnaWNrLTcvTWFnaWNrV2FuZC9NYWdp Y2tXYW5kLmg+CisjZWxzZQogI2luY2x1ZGUgPHdhbmQvTWFnaWNrV2FuZC5oPgorI2VuZGlmCiAK IC8qIEltYWdlTWFnaWNrIDYuNS4zIHRocm91Z2ggNi42LjUgaGlkIFBpeGVsR2V0TWFnaWNrQ29s b3IgZm9yIHNvbWUgcmVhc29uLgogICAgRW1hY3Mgc2VlbXMgdG8gd29yayBmaW5lIHdpdGggdGhl IGhpZGRlbiB2ZXJzaW9uLCBzbyB1bmhpZGUgaXQuICAqLworI2lmZGVmIF9fTUlOR1c2NF9fCisj aW5jbHVkZSA8SW1hZ2VNYWdpY2stNy9NYWdpY2tDb3JlL3ZlcnNpb24uaD4KKyNlbHNlCiAjaW5j bHVkZSA8bWFnaWNrL3ZlcnNpb24uaD4KKyNlbmRpZgogI2lmIDB4NjUzIDw9IE1hZ2lja0xpYlZl cnNpb24gJiYgTWFnaWNrTGliVmVyc2lvbiA8PSAweDY2NQogZXh0ZXJuIFdhbmRFeHBvcnQgdm9p ZCBQaXhlbEdldE1hZ2lja0NvbG9yIChjb25zdCBQaXhlbFdhbmQgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNrUGl4ZWxQYWNrZXQgKik7CiAjZW5k aWYKIAorI2lmZGVmIFdJTkRPV1NOVAorREVGX0RMTF9GTiAoTWFnaWNrV2FuZCAqLCBDbG9uZU1h Z2lja1dhbmQsIChjb25zdCBNYWdpY2tXYW5kICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja1dhbmQg KiwgRGVzdHJveU1hZ2lja1dhbmQsIChNYWdpY2tXYW5kICopKTsKK0RFRl9ETExfRk4gKE1hZ2lj a1dhbmQgKiwgRGVzdHJveVBpeGVsSXRlcmF0b3IsIChQaXhlbEl0ZXJhdG9yICopKTsKK0RFRl9E TExfRk4gKFBpeGVsV2FuZCAqLCBEZXN0cm95UGl4ZWxXYW5kLCAoUGl4ZWxXYW5kICopKTsKK0RF Rl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBNYWdpY2tDcm9wSW1hZ2UsIChNYWdpY2tXYW5k ICosIGNvbnN0IHNpemVfdCwgY29uc3Qgc2l6ZV90LCBjb25zdCBzc2l6ZV90LCBjb25zdCBzc2l6 ZV90KSk7CisjaWZkZWYgSEFWRV9NQUdJQ0tFWFBPUlRJTUFHRVBJWEVMUworREVGX0RMTF9GTiAo TWFnaWNrQm9vbGVhblR5cGUsIE1hZ2lja0V4cG9ydEltYWdlUGl4ZWxzLCAoTWFnaWNrV2FuZCAq LCBjb25zdCBzc2l6ZV90LCBjb25zdCBzc2l6ZV90LCBjb25zdCBzaXplX3QsIGNvbnN0IHNpemVf dCwgY29uc3QgY2hhciAqLCBjb25zdCBTdG9yYWdlVHlwZSwgdm9pZCAqKSk7CisjZW5kaWYKK0RF Rl9ETExfRk4gKGNoYXIgKiwgTWFnaWNrR2V0RXhjZXB0aW9uLCAoY29uc3QgTWFnaWNrV2FuZCAq LCBFeGNlcHRpb25UeXBlICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja1dhbmQgKiwgTWFnaWNrR2V0 SW1hZ2UsIChNYWdpY2tXYW5kICopKTsKK0RFRl9ETExfRk4gKERpc3Bvc2VUeXBlLCBNYWdpY2tH ZXRJbWFnZURlbGF5LCAoTWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChEaXNwb3NlVHlwZSwg TWFnaWNrR2V0SW1hZ2VEaXNwb3NlLCAoTWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChzaXpl X3QsIE1hZ2lja0dldEltYWdlSGVpZ2h0LCAoTWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZOIChN YWdpY2tCb29sZWFuVHlwZSwgTWFnaWNrR2V0SW1hZ2VQYWdlLCAoTWFnaWNrV2FuZCAqLCBzaXpl X3QgKiwgc2l6ZV90ICosIHNzaXplX3QgKiwgc3NpemVfdCAqKSk7CitERUZfRExMX0ZOIChjaGFy ICosIE1hZ2lja0dldEltYWdlU2lnbmF0dXJlLCAoTWFnaWNrV2FuZCAqKSk7CitERUZfRExMX0ZO IChzaXplX3QsIE1hZ2lja0dldEltYWdlV2lkdGgsIChNYWdpY2tXYW5kICopKTsKK0RFRl9ETExf Rk4gKHNpemVfdCwgTWFnaWNrR2V0TnVtYmVySW1hZ2VzLCAoTWFnaWNrV2FuZCAqKSk7CisjaWZk ZWYgSEFWRV9NQUdJQ0tNRVJHRUlNQUdFTEFZRVJTCitERUZfRExMX0ZOIChNYWdpY2tXYW5kICos IE1hZ2lja01lcmdlSW1hZ2VMYXllcnMsIChNYWdpY2tXYW5kICosIGNvbnN0IEltYWdlTGF5ZXJN ZXRob2QpKTsKKyNlbHNlCitERUZfRExMX0ZOIChNYWdpY2tXYW5kICosIE1hZ2lja0ZsYXR0ZW5J bWFnZXMsIChNYWdpY2tXYW5kICopKTsKKyNlbmRpZgorREVGX0RMTF9GTiAoTWFnaWNrQm9vbGVh blR5cGUsIE1hZ2lja1JlYWRJbWFnZSwgKE1hZ2lja1dhbmQgKiwgY29uc3QgY2hhciAqKSk7CitE RUZfRExMX0ZOIChNYWdpY2tCb29sZWFuVHlwZSwgTWFnaWNrUmVhZEltYWdlQmxvYiwgKE1hZ2lj a1dhbmQgKiwgY29uc3Qgdm9pZCAqLCBjb25zdCBzaXplX3QpKTsKK0RFRl9ETExfRk4gKHZvaWQg KiwgTWFnaWNrUmVsaW5xdWlzaE1lbW9yeSwgKHZvaWQgKikpOworREVGX0RMTF9GTiAoTWFnaWNr Qm9vbGVhblR5cGUsIE1hZ2lja1JvdGF0ZUltYWdlLCAoTWFnaWNrV2FuZCAqLCBjb25zdCBQaXhl bFdhbmQgKiwgY29uc3QgZG91YmxlKSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29sZWFuVHlwZSwg TWFnaWNrU2NhbGVJbWFnZSwgKE1hZ2lja1dhbmQgKiwgY29uc3Qgc2l6ZV90LCBjb25zdCBzaXpl X3QpKTsKK0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBNYWdpY2tTZXRGaWxlbmFtZSwg KE1hZ2lja1dhbmQgKiwgY29uc3QgY2hhciAqKSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29sZWFu VHlwZSwgTWFnaWNrU2V0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IsIChNYWdpY2tXYW5kICosIGNvbnN0 IFBpeGVsV2FuZCAqKSk7CitERUZfRExMX0ZOIChNYWdpY2tCb29sZWFuVHlwZSwgTWFnaWNrU2V0 SXRlcmF0b3JJbmRleCwgKE1hZ2lja1dhbmQgKiwgY29uc3Qgc3NpemVfdCkpOworREVGX0RMTF9G TiAodm9pZCwgTWFnaWNrV2FuZEdlbmVzaXMsICh2b2lkKSk7CitERUZfRExMX0ZOICh2b2lkLCBN YWdpY2tXYW5kVGVybWludXMsICh2b2lkKSk7CitERUZfRExMX0ZOIChNYWdpY2tXYW5kICosIE5l d01hZ2lja1dhbmQsICh2b2lkKSk7CitERUZfRExMX0ZOIChQaXhlbEl0ZXJhdG9yICosIE5ld1Bp eGVsSXRlcmF0b3IsIChNYWdpY2tXYW5kICopKTsKK0RFRl9ETExfRk4gKFBpeGVsV2FuZCAqLCBO ZXdQaXhlbFdhbmQsICh2b2lkKSk7CitERUZfRExMX0ZOIChkb3VibGUsIFBpeGVsR2V0QWxwaGEs IChjb25zdCBQaXhlbFdhbmQgKikpOworREVGX0RMTF9GTiAodm9pZCwgUGl4ZWxHZXRNYWdpY2tD b2xvciwgKGNvbnN0IFBpeGVsV2FuZCAqLCBQaXhlbEluZm8gKikpOworREVGX0RMTF9GTiAoUGl4 ZWxXYW5kICoqLCBQaXhlbEdldE5leHRJdGVyYXRvclJvdywgKFBpeGVsSXRlcmF0b3IgKiwgc2l6 ZV90ICopKTsKK0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBQaXhlbFNldEl0ZXJhdG9y Um93LCAoUGl4ZWxJdGVyYXRvciAqLCBjb25zdCBzc2l6ZV90KSk7CitERUZfRExMX0ZOICh2b2lk LCBQaXhlbFNldFBpeGVsQ29sb3IsIChQaXhlbFdhbmQgKiwgY29uc3QgUGl4ZWxJbmZvICopKTsK K0RFRl9ETExfRk4gKHZvaWQsIFBpeGVsU2V0UmVkLCAoUGl4ZWxXYW5kICosIGNvbnN0IGRvdWJs ZSkpOworREVGX0RMTF9GTiAodm9pZCwgUGl4ZWxTZXRHcmVlbiwgKFBpeGVsV2FuZCAqLCBjb25z dCBkb3VibGUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIFBpeGVsU2V0Qmx1ZSwgKFBpeGVsV2FuZCAq LCBjb25zdCBkb3VibGUpKTsKK0RFRl9ETExfRk4gKE1hZ2lja0Jvb2xlYW5UeXBlLCBQaXhlbFN5 bmNJdGVyYXRvciwgKFBpeGVsSXRlcmF0b3IgKikpOworCitERUZfRExMX0ZOIChFeGNlcHRpb25J bmZvICosIERlc3Ryb3lFeGNlcHRpb25JbmZvLCAoRXhjZXB0aW9uSW5mbyAqKSk7CitERUZfRExM X0ZOIChjaGFyICosIERlc3Ryb3lTdHJpbmcsIChjaGFyICopKTsKK0RFRl9ETExfRk4gKEV4Y2Vw dGlvbkluZm8gKiwgQWNxdWlyZUV4Y2VwdGlvbkluZm8sICgpKTsKK0RFRl9ETExfRk4gKGNoYXIg KiosIEdldE1hZ2lja0xpc3QsIChjb25zdCBjaGFyICosIHNpemVfdCAqLCBFeGNlcHRpb25JbmZv ICopKTsKKworc3RhdGljIGJvb2wKK2luaXRfaW1hZ2VtYWdpY2tfZnVuY3Rpb25zICh2b2lkKQor eworICBITU9EVUxFIG1hZ2lja3dhbmQsIG1hZ2lja2NvcmU7CisKKyAgaWYgKCEobWFnaWNrY29y ZSA9IHczMl9kZWxheWVkX2xvYWQgKFFtYWdpY2tjb3JlKSkKKyAgICAgIHx8ICEobWFnaWNrd2Fu ZCA9IHczMl9kZWxheWVkX2xvYWQgKFFtYWdpY2t3YW5kKSkpCisgICAgcmV0dXJuIDA7CisKKyAg TE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIENsb25lTWFnaWNrV2FuZCk7CisgIExPQURfRExMX0ZO IChtYWdpY2t3YW5kLCBEZXN0cm95TWFnaWNrV2FuZCk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3 YW5kLCBEZXN0cm95UGl4ZWxJdGVyYXRvcik7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBE ZXN0cm95UGl4ZWxXYW5kKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja0Nyb3BJ bWFnZSk7CisjaWZkZWYgSEFWRV9NQUdJQ0tFWFBPUlRJTUFHRVBJWEVMUworICBMT0FEX0RMTF9G TiAobWFnaWNrd2FuZCwgTWFnaWNrRXhwb3J0SW1hZ2VQaXhlbHMpOworI2VuZGlmCisgIExPQURf RExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tHZXRFeGNlcHRpb24pOworICBMT0FEX0RMTF9GTiAo bWFnaWNrd2FuZCwgTWFnaWNrR2V0SW1hZ2UpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwg TWFnaWNrR2V0SW1hZ2VEZWxheSk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tH ZXRJbWFnZURpc3Bvc2UpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrR2V0SW1h Z2VIZWlnaHQpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrR2V0SW1hZ2VQYWdl KTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja0dldEltYWdlU2lnbmF0dXJlKTsK KyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja0dldEltYWdlV2lkdGgpOworICBMT0FE X0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrR2V0TnVtYmVySW1hZ2VzKTsKKyNpZmRlZiBIQVZF X01BR0lDS01FUkdFSU1BR0VMQVlFUlMKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lj a01lcmdlSW1hZ2VMYXllcnMpOworI2Vsc2UKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1h Z2lja0ZsYXR0ZW5JbWFnZXMpOworI2VuZGlmCisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBN YWdpY2tSZWFkSW1hZ2UpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTWFnaWNrUmVhZElt YWdlQmxvYik7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdpY2tSZWxpbnF1aXNoTWVt b3J5KTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja1JvdGF0ZUltYWdlKTsKKyAg TE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIE1hZ2lja1NjYWxlSW1hZ2UpOworICBMT0FEX0RMTF9G TiAobWFnaWNrd2FuZCwgTWFnaWNrU2V0RmlsZW5hbWUpOworICBMT0FEX0RMTF9GTiAobWFnaWNr d2FuZCwgTWFnaWNrU2V0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IpOworICBMT0FEX0RMTF9GTiAobWFn aWNrd2FuZCwgTWFnaWNrU2V0SXRlcmF0b3JJbmRleCk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3 YW5kLCBNYWdpY2tXYW5kR2VuZXNpcyk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBNYWdp Y2tXYW5kVGVybWludXMpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgTmV3TWFnaWNrV2Fu ZCk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBOZXdQaXhlbEl0ZXJhdG9yKTsKKyAgTE9B RF9ETExfRk4gKG1hZ2lja3dhbmQsIE5ld1BpeGVsV2FuZCk7CisgIExPQURfRExMX0ZOIChtYWdp Y2t3YW5kLCBQaXhlbEdldEFscGhhKTsKKyAgTE9BRF9ETExfRk4gKG1hZ2lja3dhbmQsIFBpeGVs R2V0TWFnaWNrQ29sb3IpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgUGl4ZWxHZXROZXh0 SXRlcmF0b3JSb3cpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgUGl4ZWxTZXRJdGVyYXRv clJvdyk7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQaXhlbFNldFBpeGVsQ29sb3IpOwor ICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgUGl4ZWxTZXRSZWQpOworICBMT0FEX0RMTF9GTiAo bWFnaWNrd2FuZCwgUGl4ZWxTZXRHcmVlbik7CisgIExPQURfRExMX0ZOIChtYWdpY2t3YW5kLCBQ aXhlbFNldEJsdWUpOworICBMT0FEX0RMTF9GTiAobWFnaWNrd2FuZCwgUGl4ZWxTeW5jSXRlcmF0 b3IpOworCisgIExPQURfRExMX0ZOIChtYWdpY2tjb3JlLCBEZXN0cm95RXhjZXB0aW9uSW5mbyk7 CisgIExPQURfRExMX0ZOIChtYWdpY2tjb3JlLCBEZXN0cm95U3RyaW5nKTsKKyAgTE9BRF9ETExf Rk4gKG1hZ2lja2NvcmUsIEFjcXVpcmVFeGNlcHRpb25JbmZvKTsKKyAgTE9BRF9ETExfRk4gKG1h Z2lja2NvcmUsIEdldE1hZ2lja0xpc3QpOworCisgIHJldHVybiAxOworfQorCisjdW5kZWYgQ2xv bmVNYWdpY2tXYW5kCisjdW5kZWYgRGVzdHJveU1hZ2lja1dhbmQKKyN1bmRlZiBEZXN0cm95UGl4 ZWxJdGVyYXRvcgorI3VuZGVmIERlc3Ryb3lQaXhlbFdhbmQKKyN1bmRlZiBNYWdpY2tDcm9wSW1h Z2UKKyN1bmRlZiBNYWdpY2tFeHBvcnRJbWFnZVBpeGVscworI3VuZGVmIE1hZ2lja0dldEV4Y2Vw dGlvbgorI3VuZGVmIE1hZ2lja0dldEltYWdlCisjdW5kZWYgTWFnaWNrR2V0SW1hZ2VEZWxheQor I3VuZGVmIE1hZ2lja0dldEltYWdlRGlzcG9zZQorI3VuZGVmIE1hZ2lja0dldEltYWdlSGVpZ2h0 CisjdW5kZWYgTWFnaWNrR2V0SW1hZ2VQYWdlCisjdW5kZWYgTWFnaWNrR2V0SW1hZ2VTaWduYXR1 cmUKKyN1bmRlZiBNYWdpY2tHZXRJbWFnZVdpZHRoCisjdW5kZWYgTWFnaWNrR2V0TnVtYmVySW1h Z2VzCisjdW5kZWYgTWFnaWNrTWVyZ2VJbWFnZUxheWVycworI3VuZGVmIE1hZ2lja0ZsYXR0ZW5J bWFnZXMKKyN1bmRlZiBNYWdpY2tSZWFkSW1hZ2UKKyN1bmRlZiBNYWdpY2tSZWFkSW1hZ2VCbG9i CisjdW5kZWYgTWFnaWNrUmVsaW5xdWlzaE1lbW9yeQorI3VuZGVmIE1hZ2lja1JvdGF0ZUltYWdl CisjdW5kZWYgTWFnaWNrU2NhbGVJbWFnZQorI3VuZGVmIE1hZ2lja1NldEZpbGVuYW1lCisjdW5k ZWYgTWFnaWNrU2V0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IKKyN1bmRlZiBNYWdpY2tTZXRJdGVyYXRv ckluZGV4CisjdW5kZWYgTWFnaWNrV2FuZEdlbmVzaXMKKyN1bmRlZiBNYWdpY2tXYW5kVGVybWlu dXMKKyN1bmRlZiBOZXdNYWdpY2tXYW5kCisjdW5kZWYgTmV3UGl4ZWxJdGVyYXRvcgorI3VuZGVm IE5ld1BpeGVsV2FuZAorI3VuZGVmIFBpeGVsR2V0QWxwaGEKKyN1bmRlZiBQaXhlbEdldE1hZ2lj a0NvbG9yCisjdW5kZWYgUGl4ZWxHZXROZXh0SXRlcmF0b3JSb3cKKyN1bmRlZiBQaXhlbFNldEl0 ZXJhdG9yUm93CisjdW5kZWYgUGl4ZWxTZXRQaXhlbENvbG9yCisjdW5kZWYgUGl4ZWxTZXRSZWQK KyN1bmRlZiBQaXhlbFNldEdyZWVuCisjdW5kZWYgUGl4ZWxTZXRCbHVlCisjdW5kZWYgUGl4ZWxT eW5jSXRlcmF0b3IKKyN1bmRlZiBEZXN0cm95RXhjZXB0aW9uSW5mbworI3VuZGVmIERlc3Ryb3lT dHJpbmcKKyN1bmRlZiBBY3F1aXJlRXhjZXB0aW9uSW5mbworI3VuZGVmIEdldE1hZ2lja0xpc3QK KworI2RlZmluZSBDbG9uZU1hZ2lja1dhbmQgZm5fQ2xvbmVNYWdpY2tXYW5kCisjZGVmaW5lIERl c3Ryb3lNYWdpY2tXYW5kIGZuX0Rlc3Ryb3lNYWdpY2tXYW5kCisjZGVmaW5lIERlc3Ryb3lQaXhl bEl0ZXJhdG9yIGZuX0Rlc3Ryb3lQaXhlbEl0ZXJhdG9yCisjZGVmaW5lIERlc3Ryb3lQaXhlbFdh bmQgZm5fRGVzdHJveVBpeGVsV2FuZAorI2RlZmluZSBNYWdpY2tDcm9wSW1hZ2UgZm5fTWFnaWNr Q3JvcEltYWdlCisjZGVmaW5lIE1hZ2lja0V4cG9ydEltYWdlUGl4ZWxzIGZuX01hZ2lja0V4cG9y dEltYWdlUGl4ZWxzCisjZGVmaW5lIE1hZ2lja0dldEV4Y2VwdGlvbiBmbl9NYWdpY2tHZXRFeGNl cHRpb24KKyNkZWZpbmUgTWFnaWNrR2V0SW1hZ2UgZm5fTWFnaWNrR2V0SW1hZ2UKKyNkZWZpbmUg TWFnaWNrR2V0SW1hZ2VEZWxheSBmbl9NYWdpY2tHZXRJbWFnZURlbGF5CisjZGVmaW5lIE1hZ2lj a0dldEltYWdlRGlzcG9zZSBmbl9NYWdpY2tHZXRJbWFnZURpc3Bvc2UKKyNkZWZpbmUgTWFnaWNr R2V0SW1hZ2VIZWlnaHQgZm5fTWFnaWNrR2V0SW1hZ2VIZWlnaHQKKyNkZWZpbmUgTWFnaWNrR2V0 SW1hZ2VQYWdlIGZuX01hZ2lja0dldEltYWdlUGFnZQorI2RlZmluZSBNYWdpY2tHZXRJbWFnZVNp Z25hdHVyZSBmbl9NYWdpY2tHZXRJbWFnZVNpZ25hdHVyZQorI2RlZmluZSBNYWdpY2tHZXRJbWFn ZVdpZHRoIGZuX01hZ2lja0dldEltYWdlV2lkdGgKKyNkZWZpbmUgTWFnaWNrR2V0TnVtYmVySW1h Z2VzIGZuX01hZ2lja0dldE51bWJlckltYWdlcworI2RlZmluZSBNYWdpY2tNZXJnZUltYWdlTGF5 ZXJzIGZuX01hZ2lja01lcmdlSW1hZ2VMYXllcnMKKyNkZWZpbmUgTWFnaWNrRmxhdHRlbkltYWdl cyBmbl9NYWdpY2tGbGF0dGVuSW1hZ2VzCisjZGVmaW5lIE1hZ2lja1JlYWRJbWFnZSBmbl9NYWdp Y2tSZWFkSW1hZ2UKKyNkZWZpbmUgTWFnaWNrUmVhZEltYWdlQmxvYiBmbl9NYWdpY2tSZWFkSW1h Z2VCbG9iCisjZGVmaW5lIE1hZ2lja1JlbGlucXVpc2hNZW1vcnkgZm5fTWFnaWNrUmVsaW5xdWlz aE1lbW9yeQorI2RlZmluZSBNYWdpY2tSb3RhdGVJbWFnZSBmbl9NYWdpY2tSb3RhdGVJbWFnZQor I2RlZmluZSBNYWdpY2tTY2FsZUltYWdlIGZuX01hZ2lja1NjYWxlSW1hZ2UKKyNkZWZpbmUgTWFn aWNrU2V0RmlsZW5hbWUgZm5fTWFnaWNrU2V0RmlsZW5hbWUKKyNkZWZpbmUgTWFnaWNrU2V0SW1h Z2VCYWNrZ3JvdW5kQ29sb3IgZm5fTWFnaWNrU2V0SW1hZ2VCYWNrZ3JvdW5kQ29sb3IKKyNkZWZp bmUgTWFnaWNrU2V0SXRlcmF0b3JJbmRleCBmbl9NYWdpY2tTZXRJdGVyYXRvckluZGV4CisjZGVm aW5lIE1hZ2lja1dhbmRHZW5lc2lzIGZuX01hZ2lja1dhbmRHZW5lc2lzCisjZGVmaW5lIE1hZ2lj a1dhbmRUZXJtaW51cyBmbl9NYWdpY2tXYW5kVGVybWludXMKKyNkZWZpbmUgTmV3TWFnaWNrV2Fu ZCBmbl9OZXdNYWdpY2tXYW5kCisjZGVmaW5lIE5ld1BpeGVsSXRlcmF0b3IgZm5fTmV3UGl4ZWxJ dGVyYXRvcgorI2RlZmluZSBOZXdQaXhlbFdhbmQgZm5fTmV3UGl4ZWxXYW5kCisjZGVmaW5lIFBp eGVsR2V0QWxwaGEgZm5fUGl4ZWxHZXRBbHBoYQorI2RlZmluZSBQaXhlbEdldE1hZ2lja0NvbG9y IGZuX1BpeGVsR2V0TWFnaWNrQ29sb3IKKyNkZWZpbmUgUGl4ZWxHZXROZXh0SXRlcmF0b3JSb3cg Zm5fUGl4ZWxHZXROZXh0SXRlcmF0b3JSb3cKKyNkZWZpbmUgUGl4ZWxTZXRJdGVyYXRvclJvdyBm bl9QaXhlbFNldEl0ZXJhdG9yUm93CisjZGVmaW5lIFBpeGVsU2V0UGl4ZWxDb2xvciBmbl9QaXhl bFNldFBpeGVsQ29sb3IKKyNkZWZpbmUgUGl4ZWxTZXRSZWQgZm5fUGl4ZWxTZXRSZWQKKyNkZWZp bmUgUGl4ZWxTZXRHcmVlbiBmbl9QaXhlbFNldEdyZWVuCisjZGVmaW5lIFBpeGVsU2V0Qmx1ZSBm bl9QaXhlbFNldEJsdWUKKyNkZWZpbmUgUGl4ZWxTeW5jSXRlcmF0b3IgZm5fUGl4ZWxTeW5jSXRl cmF0b3IKKyNkZWZpbmUgRGVzdHJveUV4Y2VwdGlvbkluZm8gZm5fRGVzdHJveUV4Y2VwdGlvbklu Zm8KKyNkZWZpbmUgRGVzdHJveVN0cmluZyBmbl9EZXN0cm95U3RyaW5nCisjZGVmaW5lIEFjcXVp cmVFeGNlcHRpb25JbmZvIGZuX0FjcXVpcmVFeGNlcHRpb25JbmZvCisjZGVmaW5lIEdldE1hZ2lj a0xpc3QgZm5fR2V0TWFnaWNrTGlzdAorCisjZW5kaWYgLyogIVdJTkRPV1NOVCAqLworCiAvKiBM b2cgSW1hZ2VNYWdpY2sgZXJyb3IgbWVzc2FnZS4KICAgIFVzZWZ1bCB3aGVuIGEgSW1hZ2VNYWdp Y2sgZnVuY3Rpb24gcmV0dXJucyB0aGUgc3RhdHVzIGBNYWdpY2tGYWxzZScuICAqLwogCkBAIC04 NDA2LDcgKzg3NzYsNyBAQCBpbWFnZW1hZ2lja19jb21wdXRlX2FuaW1hdGVkX2ltYWdlIChNYWdp Y2tXYW5kICpzdXBlcl93YW5kLCBpbnQgaW5vKQogICAgICAgUGl4ZWxXYW5kICoqc291cmNlLCAq KmRlc3Q7CiAgICAgICBzaXplX3Qgc291cmNlX3dpZHRoLCBzb3VyY2VfaGVpZ2h0OwogICAgICAg c3NpemVfdCBzb3VyY2VfbGVmdCwgc291cmNlX3RvcDsKLSAgICAgIE1hZ2lja1BpeGVsUGFja2V0 IHBpeGVsOworICAgICAgUGl4ZWxJbmZvIHBpeGVsOwogICAgICAgRGlzcG9zZVR5cGUgZGlzcG9z ZTsKICAgICAgIHB0cmRpZmZfdCBsaW5lcyA9IDA7CiAKQEAgLTg0NzEsNyArODg0MSw3IEBAIGlt YWdlbWFnaWNrX2NvbXB1dGVfYW5pbWF0ZWRfaW1hZ2UgKE1hZ2lja1dhbmQgKnN1cGVyX3dhbmQs IGludCBpbm8pCiAgICAgICAgICAgICAgIGlmIChkaXNwb3NlID09IEJhY2tncm91bmREaXNwb3Nl IHx8IFBpeGVsR2V0QWxwaGEgKHNvdXJjZVt4XSkpCiAJCXsKICAgICAgICAgICAgICAgICAgIFBp eGVsR2V0TWFnaWNrQ29sb3IgKHNvdXJjZVt4XSwgJnBpeGVsKTsKLQkJICBQaXhlbFNldE1hZ2lj a0NvbG9yIChkZXN0W3ggKyBzb3VyY2VfbGVmdF0sICZwaXhlbCk7CisgICAgICAgICAgICAgICAg ICBQaXhlbFNldFBpeGVsQ29sb3IgKGRlc3RbeCArIHNvdXJjZV9sZWZ0XSwgJnBpeGVsKTsKIAkJ fQogICAgICAgICAgICAgfQogICAgICAgICAgIFBpeGVsU3luY0l0ZXJhdG9yIChkZXN0X2l0ZXJh dG9yKTsKQEAgLTg1MTYsNyArODg4Niw3IEBAIGltYWdlbWFnaWNrX2xvYWRfaW1hZ2UgKHN0cnVj dCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcsCiAgIE1hZ2lja1dhbmQgKmltYWdlX3dhbmQ7 CiAgIFBpeGVsSXRlcmF0b3IgKml0ZXJhdG9yOwogICBQaXhlbFdhbmQgKipwaXhlbHMsICpiZ193 YW5kID0gTlVMTDsKLSAgTWFnaWNrUGl4ZWxQYWNrZXQgIHBpeGVsOworICBQaXhlbEluZm8gIHBp eGVsOwogICBMaXNwX09iamVjdCBpbWFnZTsKICAgTGlzcF9PYmplY3QgdmFsdWU7CiAgIExpc3Bf T2JqZWN0IGNyb3A7CkBAIC04OTEyLDYgKzkyODIsMTEgQEAgYW5kIGBpbWFnZW1hZ2ljay10eXBl cy1pbmhpYml0Jy4gICovKQogICBjaGFyICoqaW10eXBlczsKICAgc2l6ZV90IGk7CiAKKyNpZiBX SU5ET1dTTlQKKyAgICAgICAgICBpZiAoIWluaXRfaW1hZ2VtYWdpY2tfZnVuY3Rpb25zICgpKQor ICAgICAgICAgICAgcmV0dXJuIFFuaWw7CisjZW5kaWYKKwogICBleCA9IEFjcXVpcmVFeGNlcHRp b25JbmZvKCk7CiAgIGltdHlwZXMgPSBHZXRNYWdpY2tMaXN0ICgiKiIsICZudW1mLCBleCk7CiAg IERlc3Ryb3lFeGNlcHRpb25JbmZvKGV4KTsKQEAgLTk5MjYsMTIgKzEwMzY4LDE2IEBAIG5vbi1u dW1lcmljLCB0aGVyZSBpcyBubyBleHBsaWNpdCBsaW1pdCBvbiB0aGUgc2l6ZSBvZiBpbWFnZXMu ICAqLyk7CiAjaWYgZGVmaW5lZCAoSEFWRV9JTUFHRU1BR0lDSykKICAgREVGU1lNIChRaW1hZ2Vt YWdpY2ssICJpbWFnZW1hZ2ljayIpOwogICBBRERfSU1BR0VfVFlQRSAoUWltYWdlbWFnaWNrKTsK KyNpZiBkZWZpbmVkIEhBVkVfTlRHVUkgJiYgIWRlZmluZWQgQ1lHV0lOCisgIERFRlNZTSAoUW1h Z2lja3dhbmQsICJtYWdpY2t3YW5kIik7CisgIERFRlNZTSAoUW1hZ2lja2NvcmUsICJtYWdpY2tj b3JlIik7CisjZW5kaWYgLyogSEFWRV9OVEdVSSAqLwogI2VuZGlmCiAKICNpZiBkZWZpbmVkIChI QVZFX1JTVkcpCiAgIERFRlNZTSAoUXN2ZywgInN2ZyIpOwogICBBRERfSU1BR0VfVFlQRSAoUXN2 Zyk7Ci0jaWZkZWYgSEFWRV9OVEdVSQorI2lmIGRlZmluZWQgKEhBVkVfTlRHVUkpICYmICFkZWZp bmVkIChDWUdXSU4pCiAgIC8qIE90aGVyIGxpYnJhcmllcyB1c2VkIGRpcmVjdGx5IGJ5IHN2ZyBj b2RlLiAgKi8KICAgREVGU1lNIChRZ2RrX3BpeGJ1ZiwgImdkay1waXhidWYiKTsKICAgREVGU1lN IChRZ2xpYiwgImdsaWIiKTsK --001a11467a9a0e723f0546a0c900-- From MAILER-DAEMON Sat Jan 21 15:49:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2bC-0006k6-Fq for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58465) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2b9-0006jy-Oa for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2b6-00063M-MA for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:19 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:42889) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2b6-000637-G0 for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:16 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV2av-00038M-Fk; Sat, 21 Jan 2017 21:49:11 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <877f5o9mps.fsf@gnus.org> <25c51f1d-c284-711c-838d-5810c482d8df@yandex.ru> Date: Sat, 21 Jan 2017 21:48:59 +0100 In-Reply-To: <25c51f1d-c284-711c-838d-5810c482d8df@yandex.ru> (Dmitry Gutov's message of "Sat, 21 Jan 2017 23:38:32 +0300") Message-ID: <8737gc9m10.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:49:21 -0000 Dmitry Gutov writes: > It's basically impossible to argue from experience that "certain > classes of applications" don't exist. It's a good thing that nobody has done that, then. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 15:50:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2br-00074x-Nb for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 15:50:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58683) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2bn-00072g-Gd for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:50:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2bk-0006Jn-Tz for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:59 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:42896) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2bk-0006JO-GO for emacs-devel@gnu.org; Sat, 21 Jan 2017 15:49:56 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV2bh-0006VB-Lr; Sat, 21 Jan 2017 21:49:55 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> Date: Sat, 21 Jan 2017 21:49:47 +0100 In-Reply-To: (Dmitry Gutov's message of "Sat, 21 Jan 2017 23:36:48 +0300") Message-ID: <87y3y487f8.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 20:50:03 -0000 Dmitry Gutov writes: > How will the callers handle failure, then? In the body of the form they can examine the status, of course. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 16:05:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2rF-0001aT-LV for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:05:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60541) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2rA-0001aM-Ak for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:05:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2r5-0003lx-CO for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:05:52 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:34059) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2r5-0003lY-3C for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:05:47 -0500 Received: by mail-lf0-x243.google.com with SMTP id q89so11216703lfi.1 for ; Sat, 21 Jan 2017 13:05:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=Jkeh3MAddJaZLh0hsgPIWCJJed/QNiLFYpHX0v2OZIQ=; b=Z91qYINaIQod6bVM5Yae0RixPmu0eEXzHy7VP+1lVxFBWBD/t4AEqacB7eBQBTOAXI cwcvl+TTDU7ID24cJrYfCdaFkNEwzpy5VnoxmyldwQV5f1w8bd/rdcvxr757TzqZmYiM CjhuAW5j29eRgvPKoK8gzstvih4HL6BK3OfLR70SjYLfKmzkprO3wF9jyXN1Ig3OZeq6 tajdRZz8KdmNu8M2XhvjJlQ6xYCIHM4vHeZcsh/sHJ5xxJdxuKNaPdQ2Nn18WKVeNNK2 rHaA5w/NhDhpyljnBu1amK60kwXc/USuJ/MiY/mk3ekv6teJGR3HZiDezakiSzRUQpgr eOCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Jkeh3MAddJaZLh0hsgPIWCJJed/QNiLFYpHX0v2OZIQ=; b=frAcyhrUMIliFa2elToOAq8+q+KHku6oawD5iG1+Kv5kOt9+qXPGkOyX5RJEkPUXr/ aFdS28qb3KwtAIrB/Y3wcMBgh7rPQwVizxXCZ82cJWuVDHy1W5cF/2abwFtDLxc8TtLu Hh39ZBolMYHd92AC+RGBnJi18NP9hEQ4+EXP86vq/7Hq6c5PeE/p3NOXqiQ5vXoyjP17 nWl/cgZbI/LrIWTdZkvUZtKdJdbNb4Or4+Sqph3/CR+cq6N8fQEqeErK5PHMc+FoynAo VY7PGNYJO6jOyl2yO2SqEpinoevHqzwPF/iz0OHPwGHWdB/QmWqH27k63n3SoQPW5PPU PCQw== X-Gm-Message-State: AIkVDXJ5q36uKdwNo+A+BknTkMKecjXI3MTgYo+5DrnqzjOvR88NscHvtG4dqCXWOb3eVA== X-Received: by 10.25.217.205 with SMTP id s74mr5806657lfi.8.1485032745458; Sat, 21 Jan 2017 13:05:45 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id g201sm4860506lfe.21.2017.01.21.13.05.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 13:05:44 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> From: Dmitry Gutov Message-ID: <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> Date: Sun, 22 Jan 2017 00:05:43 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87y3y487f8.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:05:57 -0000 On 21.01.2017 23:49, Lars Ingebrigtsen wrote: > Dmitry Gutov writes: > >> How will the callers handle failure, then? > > In the body of the form they can examine the status, of course. Will they examine the resolved hostname and the absence of a connection timeout as well? From MAILER-DAEMON Sat Jan 21 16:13:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV2yD-0002sL-EW for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:13:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV2yA-0002sC-HW for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:13:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV2y5-0006iM-J6 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:13:06 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43045) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV2y5-0006h5-CH for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:13:01 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV2y0-00022G-OO; Sat, 21 Jan 2017 22:12:58 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> Date: Sat, 21 Jan 2017 22:12:50 +0100 In-Reply-To: <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> (Dmitry Gutov's message of "Sun, 22 Jan 2017 00:05:43 +0300") Message-ID: <87shoc86ct.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:13:08 -0000 Dmitry Gutov writes: > Will they examine the resolved hostname and the absence of a > connection timeout as well? I'm not sure what you're talking about, if anything. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 16:16:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV31W-0003bM-5X for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV31S-0003Xr-8c for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV31O-000896-9W for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:30 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:35460) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV31O-000884-12 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:26 -0500 Received: by mail-lf0-x242.google.com with SMTP id v186so11225004lfa.2 for ; Sat, 21 Jan 2017 13:16:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=X6ape4ARY4lINjOv3HKMgGk8Tdvwrxa0h9zfBqL7dmo=; b=aA1cq6ubthqo2Hsw2mHr+lTwmoBZgXL6GtYYppnnhxMkwXZ8I+5t4hJxwB/pdbA5dt whxri35A88K9HRnss0se1drvYZfvmbYiwbWTm0gbdypfsg0BeYLTWn/v6w6nELELfPGI KA7NXOrnkX04vkASY37KyP+tOj+OgJp9Bdxw+Xl5lfBwvd/8Yoyi71iyesFIzhiIs0dt CXJKy2ni0wl5rMPEbFhhPFGBoQ+a65GG1EcWcHi3xNhr/jbIjioQtp+XjLbC1/Vq879V jKU+XYJ99o97u1dH1mU4MCY+7b9pe0R2ocyHCzo+00K/nLl6f1An8R7OFqLaoUVQcdXq lDSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=X6ape4ARY4lINjOv3HKMgGk8Tdvwrxa0h9zfBqL7dmo=; b=hWxdm2Hj4sQM97FFoLuLQCKd8TLn3iCCfrYGIL2o7rXWySJIoQ4bS4d1gPMWKV5uKO W6VxCKpjHnN+skMKWy6WgcEs4Qsgi/4h8tpu7P3bhfuLUkPdSdBHPx93ZBSXz2my5E8e Nzs9XbcGhvOnUzit/p0razZGp3KU2Jx62BpnA3EnUpuTKm+tJ0mun1K/0ETlSm1Lu05O jphiGyYC2p4SJruFMzwFr7BIoqNhTw3jaK8eBaGQfLR66hwNvKavg0anOMglB4e9EySB ULtRGAkjLzJgfz51o1uGcey8PuhELrbidT//EdaVreuknZrR2X+ceGxgOkTt2iTBgHs0 ipEw== X-Gm-Message-State: AIkVDXLsFw4LOXHOWg1cJV0XfAPahfXfeRAd41XyzdTy8pdGe2gaeueNQ6tttGHHyPMYZA== X-Received: by 10.46.78.10 with SMTP id c10mr8734408ljb.24.1485033384546; Sat, 21 Jan 2017 13:16:24 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id s28sm4818632ljd.20.2017.01.21.13.16.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 13:16:24 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> From: Dmitry Gutov Message-ID: Date: Sun, 22 Jan 2017 00:16:23 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87shoc86ct.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:16:32 -0000 On 22.01.2017 00:12, Lars Ingebrigtsen wrote: > Dmitry Gutov writes: > >> Will they examine the resolved hostname and the absence of a >> connection timeout as well? > > I'm not sure what you're talking about, if anything. You said "none of these should signal an error from the library" in response to my enumerations of different kinds of errors: 404, hostname resolution failure, connection timeout. From MAILER-DAEMON Sat Jan 21 16:16:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV31X-0003cE-A9 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34027) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV31S-0003Y9-PF for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV31R-0008Ay-W7 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:16:30 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:36435) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV31Q-00089n-Mk; Sat, 21 Jan 2017 16:16:28 -0500 Received: by mail-wm0-x234.google.com with SMTP id c85so82298495wmi.1; Sat, 21 Jan 2017 13:16:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=PUrNczBNJh9YkSSNaElkVeNASryqVl81jSrFjBjyEdE=; b=qLN5UeLtMhrpy8P6R0KwAd6l62nFE7LsC4RCkerZDW4Jle97WB6WkkKxac+/6jKcl9 jvA4LuCrJ4+tbMk30AmuLYmzliGYt16gIYhEiMKQQq6xtscQ+P4d1K4yoWiXTeYO7gCC lPMF/aZqHBJz20iqwn9/P6owPEbxiS5d2gORE0W4eOLZAT7/IVy0xHH8cnbc9al5gNQG LoElHrFq3Gu1fNnb7dXJSAjr3ypqils6UlJgaQ/9oZW0R6dZ7uv0bjgdab+FR3QEY1i4 4ixSwEWHQvnvQWMAz1DvR6IlraI2T0CPymd3aAHDM7KU48PtdE2bI2FyU5hjDOq9fMrj LAVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=PUrNczBNJh9YkSSNaElkVeNASryqVl81jSrFjBjyEdE=; b=PQrYOgp8xlucjhWAfK/1cPBD24BybE2Xi5S3UMASzbYHERLgYwzg5cCFzKmNnBXPzS ZcZWsNN9dbxDBP6lxwktcVGjWB0t/sIo8F3Y8h0vbLby11djUnLmhTWJJU/vAesPHm8N DCvh0dQrIOfaOlgqzFFkessYxzvHocZTCnMjzhdCQkKGdv9w9DV7ZvwLHyks11XeTIhg HMIS3tNhDWk1yuyofebjqgOJNSruI19oZivtAAmLwSz1fiK6/YeNHiJoU7voU0u+NQ4q Gp3jYTvOJH09YFMUDVvI1NYPU88w6n+Na9PRzx6u/T0qezFY7LQRMADVG2Yg/a1hzLSx PG/w== X-Gm-Message-State: AIkVDXJC3O5KfdmyKStQ1pVs8ey6RJkwqGESR/UwTT0QoYoea3OmRaBIlvM0fBktjRlJ7vz50xahgAddk2TvGA== X-Received: by 10.28.234.193 with SMTP id g62mr7833492wmi.36.1485033387623; Sat, 21 Jan 2017 13:16:27 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 13:15:47 -0800 (PST) In-Reply-To: <83a8ak5gx4.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83a8ak5gx4.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 22:15:47 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a114723fa8c8c710546a14782 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:16:33 -0000 --001a114723fa8c8c710546a14782 Content-Type: text/plain; charset=UTF-8 On Sat, Jan 21, 2017 at 8:52 PM, Eli Zaretskii wrote: > Fine with me, but please wait for a few days to give MinGW64 users a > chance to comment on this. No hurry at all. --001a114723fa8c8c710546a14782 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Sat, Jan 21, 2017 at 8:52 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> Fine = with me, but please wait for a few days to give MinGW64 users a
> cha= nce to comment on this.

No hurry at all.
--001a114723fa8c8c710546a14782-- From MAILER-DAEMON Sat Jan 21 16:19:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV33t-0005I9-LN for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:19:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34949) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV33q-0005I2-IE for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:19:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV33p-00013c-J6 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:18:58 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:33047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV33n-00012d-4H; Sat, 21 Jan 2017 16:18:55 -0500 Received: by mail-wm0-x234.google.com with SMTP id d140so23078282wmd.0; Sat, 21 Jan 2017 13:18:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=V/CtKy9O0xatg7M+DlvhVYx/VDkwIOJxBsqslwg03TE=; b=Fjo+i1eAMAL5JUSyTO86Q+2HiiYaTCH5AoXJdcCgNvlcSCidyYGOWQnoN+5RldhxNO 1AFcbrKkiVxHdPxeQv6hsMCEA2TYHlQ/RKVtYeiJp2UuWpFOwG+Qq9oA6V3egt8t935y r/QGxgvlPLQCnfMWRswEdZLBVQrk4gmmJ3PC7d+QHMrVnOTsyEixQK7dKcq3tdhqjCSe BfeXNuhZAglOnsYqUurhAtCICfDc2m5JdAATMLVoG5C4ZfN5/mombo2SZ5/zQX1wn8pi 5dbedWU591A6sdEbUrZu7Vm2CspPveA8bJujAaYPubuu1uSmtGtsE2NLaylHaxrpkwUW Ybng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=V/CtKy9O0xatg7M+DlvhVYx/VDkwIOJxBsqslwg03TE=; b=A8ogvQ+NuB1q/RLxmryjmPZl090zulb4/rG+70nD8DiyQT5kpzCVwp+U//uYi34Yyv HFbr3qJhj3XE5K8V4SbUhFmUBvpMAMtn25OKBqjjFgHGTi0a1wuluM2XoDS+aEtkMr4C Qlh1hQFpK/xzVB392QOnP5HIv6G3JWN4QEyhKRtmsX/tZzQ/SQ7TuXg2fuFjuTcs49Fy Radb8rGRJ+b19wZbAupKnj8rGYsCcrj4WWigXHTZ8VIgluCpODHVUb2Yl8o3iMTJZ5hC SuvYuKiDu6pKsFW8+oL3FakJu3stJVkqJ8Qt7FaPnGylV1qomWf85xIs+Xxa4AYWLJTA t1Mg== X-Gm-Message-State: AIkVDXIRRZe44P/piQYfEBipU01q4k9rVFWsrfFz0JKxuH4dbAEuNiOewXSKxiSIcP2KJ9O+QjoF1z3fNRHF+w== X-Received: by 10.223.173.43 with SMTP id p40mr17147092wrc.163.1485033534103; Sat, 21 Jan 2017 13:18:54 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 13:18:13 -0800 (PST) In-Reply-To: References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 22:18:13 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=f403045cf66047a6ba0546a15083 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:19:00 -0000 --f403045cf66047a6ba0546a15083 Content-Type: text/plain; charset=UTF-8 On Sat, Jan 21, 2017 at 7:57 PM, Juanma Barranquero wrote: > - PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ > ./configure --prefix=/c/emacs/emacs-25 --without-imagemagick ./configure --prefix=/c/emacs/emacs-25 I meant, of course. --f403045cf66047a6ba0546a15083 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Sat, Jan 21, 2017 at 7:57 PM, Juanma Barranquero <lekktu@gmail.com> wrote:

> - =C2=A0PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig \
> =C2=A0 = =C2=A0./configure --prefix=3D/c/emacs/emacs-25 --without-imagemagick
=C2=A0 =C2=A0 =C2=A0./configure --prefix=3D/c/emacs/emacs-25

I meant, of course.

--f403045cf66047a6ba0546a15083-- From MAILER-DAEMON Sat Jan 21 16:23:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV38G-0006BX-96 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:23:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35694) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV38B-0006BQ-Mx for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:23:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV387-0003Fb-Nr for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:23:27 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43084) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV387-0003FU-HI for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:23:23 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV383-0003M2-FG; Sat, 21 Jan 2017 22:23:21 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> Date: Sat, 21 Jan 2017 22:23:13 +0100 In-Reply-To: (Dmitry Gutov's message of "Sun, 22 Jan 2017 00:16:23 +0300") Message-ID: <87mvek85vi.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:23:31 -0000 Dmitry Gutov writes: > On 22.01.2017 00:12, Lars Ingebrigtsen wrote: >> Dmitry Gutov writes: >> >>> Will they examine the resolved hostname and the absence of a >>> connection timeout as well? >> >> I'm not sure what you're talking about, if anything. > > You said "none of these should signal an error from the library" in > response to my enumerations of different kinds of errors: 404, > hostname resolution failure, connection timeout. Yes... but you asked about how code would examine "the absence of a connection timeout". I don't know what you mean. If there's no timeout (and there's no other errors), `url-errorp' says nil. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 16:27:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV3C4-0007Bj-GB for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:27:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36531) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV3C1-0007Ag-DY for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:27:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV3Bx-0005d4-FF for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:27:25 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:35811) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV3Bx-0005cX-7e for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:27:21 -0500 Received: by mail-lf0-x243.google.com with SMTP id v186so11235136lfa.2 for ; Sat, 21 Jan 2017 13:27:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=90mVzqXCZSN/fyTABLY8/b+Ipme3vNSMPGIsnGYfdZA=; b=Rt/cygUfNY1G4p6jIHg6aEuPt3vsumChgdZbKVlp8T3SNRAclwKVGyimiHLkuYp3df mWQBELLh+yzFa0fXnMaFpH4yJiZU4UsLXhdx6yEB/uqqtf7cP8PrCvYxkG50M+gqW8VN R4fn/QnXSkf9rDTm/+fagHNtUnrKgObDc0bXIUL3+QUD9sFYUfO94KwjRoK6SoGiPLrH +czF4Z74XcyXJiyOs1x+d1MIjROE/rL6BMHy0hPwsPB5HnqYBZNPS2pWUB2ughQ8ie6Q v7ou33lCtpQSAyN5IH9Xa1QNSWE3fOtzlO6wnhT9+YRuQgxwfWG0tOItHP+8HASiM3xL KueQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=90mVzqXCZSN/fyTABLY8/b+Ipme3vNSMPGIsnGYfdZA=; b=St78bq/h1UaBXaBEw6aaTmnOSbOsYg7xh3LCloG1Yl2qJRHLjeQMEfWoIBamdIBj2l 0tYIYEqYj1lMvI6equ49yauFjXPpZu2RYMs+pZ4V/0GbwkXzcv7J9UJBF0AFiggwN+jT +GajgZHB1opR0LZb/l1B2hTVfkohnz6ohhnzq9W4q/XCBXc8NoPVwhzKL7m4Wo3vx8Zc ZrayMZzs51otfO75U51ujHN+prta4tPo7xgV199Lh6vUTXhrme9hb8YPXrO5ldtf/Z4N q8Puhss3ld3bZnF2jl/BoYnv9tg+Cr4NHNUO4BfZ2wMwp/o9BO4dqPq/4fnHLKwZ4lFo YxWA== X-Gm-Message-State: AIkVDXK1ljKUbUBMrw5Utq5MA6S7rXKOA8L/T5fBjL8r6rxC2x9WlCwPzStJqWkupcb7rA== X-Received: by 10.25.196.210 with SMTP id u201mr7004094lff.69.1485034039737; Sat, 21 Jan 2017 13:27:19 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id 66sm4845794lfy.42.2017.01.21.13.27.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 13:27:19 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> From: Dmitry Gutov Message-ID: <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> Date: Sun, 22 Jan 2017 00:27:18 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87mvek85vi.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:27:27 -0000 On 22.01.2017 00:23, Lars Ingebrigtsen wrote: >> You said "none of these should signal an error from the library" in >> response to my enumerations of different kinds of errors: 404, >> hostname resolution failure, connection timeout. > > Yes... but you asked about how code would examine "the absence of a > connection timeout". I don't know what you mean. That's exactly my point. You said that none of these should be errors, and then only replied how the callers will find out about the error status, not about the other kinds of errors. > If there's no timeout > (and there's no other errors), `url-errorp' says nil. So, in the Brave New World the callers will continue to use url-errorp? Error handling C-style? From MAILER-DAEMON Sat Jan 21 16:37:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV3Ll-0000Lc-Ky for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:37:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37724) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV3Lj-0000LR-Ri for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:37:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV3Lg-00018o-OF for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:37:27 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43214) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV3Lg-00017U-HT for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:37:24 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV3La-0002zw-7t; Sat, 21 Jan 2017 22:37:22 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> Date: Sat, 21 Jan 2017 22:37:12 +0100 In-Reply-To: <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> (Dmitry Gutov's message of "Sun, 22 Jan 2017 00:27:18 +0300") Message-ID: <87h94s8587.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:37:29 -0000 Dmitry Gutov writes: > On 22.01.2017 00:23, Lars Ingebrigtsen wrote: > >>> You said "none of these should signal an error from the library" in >>> response to my enumerations of different kinds of errors: 404, >>> hostname resolution failure, connection timeout. >> >> Yes... but you asked about how code would examine "the absence of a >> connection timeout". I don't know what you mean. > > That's exactly my point. You said that none of these should be errors, > and then only replied how the callers will find out about the error > status, not about the other kinds of errors. "The absence of a connection timeout" is not an error. A connection timeout is an error, of course, and the caller can access that error like all the other errors. None of these errors are control-flow-level errors, but are expected behaviour. You don't signal Lisp-level errors for expected behaviour. That's what Java programmers did in the 90s, and they've learned their lessons. Well, most of them. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 16:43:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV3RI-0001fV-7A for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:43:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38629) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV3RE-0001fK-Qz for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:43:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV3RD-0002cd-MY for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:43:08 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:33533) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV3RA-0002bi-4l; Sat, 21 Jan 2017 16:43:04 -0500 Received: by mail-wm0-x232.google.com with SMTP id d140so23168527wmd.0; Sat, 21 Jan 2017 13:43:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=5kdKG2M/aCTf+huhrzN1yxNhmnBYXLq1Rl1/6rhEqbE=; b=dlLhbOh5OBmQooT/Q1YwfmsiJZYSNWzTUDAUTt9oqts1meIg6STLMPAA0LR76A7EqT lrkofK6jrENmxVEWMJnVY/mUFM5TtdLRaCd8RAbu/3xRQ1lWbVEWYeb5EV5+bWvJI661 AFJ2KbzdWevLklAhPTnk+c91C+rotG60aeiyT/oLkhBnUU3Yj2BMOMx7xSH8Xf0Rlbk0 XnbQgUnzvlh6EgGjAQEDsoJrO/GVuji/xNf+v1v8tDoO0cOYx3fa1yXFZqG/wP5fYqca 2tjyTlS07ao0sMInat9leO6/h3nfeRaD4sR0tR5OY+9/L/8pTXCMTH5XtC5hNT6Dcf+1 MztA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=5kdKG2M/aCTf+huhrzN1yxNhmnBYXLq1Rl1/6rhEqbE=; b=o9utX5+lPYKF3OyiL+fw3C0XdO5wYcGlWvvlHMc1CE0w7MC8ER//aqlC0T3q6omuZi tPcL8iajjv5pAn5YQLMGXmWJSX3K2TTrPK7BohPEnJZfVaO30ANybHQCIKufK/DGudRA zQ6dFepB6iQ2123KfwmtJnl7oZMtW+gD2xeaZZoVLiqS6VzYe1ny+0CeW6mkfVCJiSfl lYTY3PFInq7vyFQQxPzborG/ZeHejlQMDye8NqUl5I+JsXOkvUS6j3+OsUyILVnn1Kps TWe3Me3dZ3jr1N3nU6fG9Ey6daXqlMtIbbhL8FTJ0sZsgXK5R4TNah/7P2D/FPmxyWsy iy2w== X-Gm-Message-State: AIkVDXIM7XwE1+c4rxZGCycAXq4wosMayQae70zLsB5MpcWdZifJbOym5sJ6+110G/9EZveyHjq5dML8P2nGTQ== X-Received: by 10.223.173.43 with SMTP id p40mr17186525wrc.163.1485034982894; Sat, 21 Jan 2017 13:43:02 -0800 (PST) MIME-Version: 1.0 Received: by 10.195.24.3 with HTTP; Sat, 21 Jan 2017 13:42:22 -0800 (PST) In-Reply-To: <83a8ak5gx4.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83a8ak5gx4.fsf@gnu.org> From: Juanma Barranquero Date: Sat, 21 Jan 2017 22:42:22 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=f403045cf660a275010546a1a683 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:43:11 -0000 --f403045cf660a275010546a1a683 Content-Type: text/plain; charset=UTF-8 On Sat, Jan 21, 2017 at 8:52 PM, Eli Zaretskii wrote: > but please wait for a few days to give MinGW64 users a > chance to comment on this. One question for them, then. Could it be that I have mingw(32|64).exe instead of mingw(32|64)_shell.bat because I followed the advice at http://msys2.github.io/ and did a post-installation update with pacman -Sy pacman pacman -Syu pacman -Su ? If so, it's this something we should recommend in nt/INSTALL.W64? --f403045cf660a275010546a1a683 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Sat, Jan 21, 2017 at 8:52 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> but p= lease wait for a few days to give MinGW64 users a
> chance to comment= on this.

One question for them, then. Could it be that I have= mingw(32|64).exe instead of mingw(32|64)_shell.bat because I followed the = advice at http://msys2.github.io/ a= nd did a post-installation update with

=C2=A0 pacman -Sy pacman
= =C2=A0 pacman -Syu
=C2=A0 pacman -Su

? If so, = it's this something we should recommend in nt/INSTALL.W64?
--f403045cf660a275010546a1a683-- From MAILER-DAEMON Sat Jan 21 16:54:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV3cg-0003CZ-Dv for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 16:54:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40165) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV3ce-0003CS-U4 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:54:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV3cb-0006m7-SX for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:54:56 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:35624) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV3cb-0006kg-K1 for emacs-devel@gnu.org; Sat, 21 Jan 2017 16:54:53 -0500 Received: by mail-lf0-x242.google.com with SMTP id v186so11261644lfa.2 for ; Sat, 21 Jan 2017 13:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=l0nlkAq2QFJkfYjl5t4xVMPGmKaKdtS63SBmnCENBEw=; b=ng5Di8CDuzcXSqEIpySjO19RV57VwIjIkGZcn9n5OsckFx3+ZGimy12Qx1SBohAKW3 FT3hu3pDLJkZ5gcllwmCJFGWMDvuuz+RAi+Y3KitM9+sHjVTBtH6G4h2tg80pzvMQ/Cr AfGGWeyAcqi5AVWh0Jj/HYAuB7la6OFGxrj/PUoHqm+Gw1885CaYxV5ZoBSa3S2iQrXS AEELzU+AC89Yy5F/hx9ITy42UkgSpIcIfjyCIISsiofsSsHvWP/15q523sAIW9cumN87 fZKuWCEl39k1F3j+5M3F6v1rep2MlZivFul8Tp2LZ42qmQlVJK2aeVYJhiCCoYbR87U4 Niyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=l0nlkAq2QFJkfYjl5t4xVMPGmKaKdtS63SBmnCENBEw=; b=cJvKAkyP7xqJ2mi8anXyT1j3/ymMGm8wVvWogcBPKuRbEZGoVrSCMdZ2kJttIOYf2M NCeQY+SpOCtxXexKP2u58LcorzZL7EN39Nr4Eoi6GDO3/BNkyxYZvOx/LWZD/KBWuJOj J82XD8aerHE0tO+oZ/vV5lunfA/xBMBL4/9X/yPgSTItT2N4kP8INaBw2YCBAv78rMXk zUxudRfOqIdeWh5DJ/9MvJvOl35IpAfwK/2OlvBbL1sjKEwS8d5/3SqVi9PrHYkFpdWh uEoO5JSN4dGEWglmreRpcz5Eg3ewn+YDYCxtsh3zlVvfNpavBJV9II/E91XC/SVj6bv+ bWWw== X-Gm-Message-State: AIkVDXLxgOVmnQBxoTsx4G4l1zPsZ3qMEcSv8uvSpibRTbpwCF6WZOzFEDcYX1sz5AjagQ== X-Received: by 10.25.196.210 with SMTP id u201mr7022819lff.69.1485035692118; Sat, 21 Jan 2017 13:54:52 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id b62sm4892157lfb.24.2017.01.21.13.54.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 13:54:51 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> From: Dmitry Gutov Message-ID: <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> Date: Sun, 22 Jan 2017 00:54:50 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87h94s8587.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 21:54:57 -0000 On 22.01.2017 00:37, Lars Ingebrigtsen wrote: > "The absence of a connection timeout" is not an error. A connection > timeout is an error, of course, and the caller can access that error > like all the other errors. Via a global variable? > None of these errors are control-flow-level errors, but are expected > behaviour. Try evaluating (insert-file-contents "/abc/def"). It signals file-error. How is that different, conceptually speaking, from a 404 status (application level error) or domain resolution error (IP level error)? > That's what Java programmers did in the 90s, and they've learned their > lessons. I can assure you, they are still doing that. Just like many other programmer using certain other object-oriented languages, when implementing business logic. The lesson to be learned here is, it pretty much works. > Well, most of them. Ones that switched to Go? From MAILER-DAEMON Sat Jan 21 17:07:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV3ot-00058I-So for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:07:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV3os-00058B-DO for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:07:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV3on-0003Zy-CM for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:07:34 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43423) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV3on-0003Yo-5i for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:07:29 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cV3og-0002YQ-WF; Sat, 21 Jan 2017 23:07:25 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> Date: Sat, 21 Jan 2017 23:07:17 +0100 In-Reply-To: <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> (Dmitry Gutov's message of "Sun, 22 Jan 2017 00:54:50 +0300") Message-ID: <87d1fg83u2.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:07:35 -0000 Dmitry Gutov writes: > Via a global variable? No. I suggested a bound variable in the form executed, (with-url (status "http:...") (url-error status) ...) but Stefan suggested a buffer-local variable instead. I went with the latter today. >> None of these errors are control-flow-level errors, but are expected >> behaviour. > > Try evaluating (insert-file-contents "/abc/def"). > > It signals file-error. > > How is that different, conceptually speaking, from a 404 status > (application level error) or domain resolution error (IP level error)? The network is transient. These events are expected. That the file you've just examined isn't there is a different class of error. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 17:26:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV46i-0000Pj-Dy for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:26:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44071) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV46f-0000PI-Uh for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:25:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV46f-0001hz-8F for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:25:57 -0500 Received: from mail-qk0-x22d.google.com ([2607:f8b0:400d:c09::22d]:35756) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV46f-0001h0-46 for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:25:57 -0500 Received: by mail-qk0-x22d.google.com with SMTP id u25so44861267qki.2 for ; Sat, 21 Jan 2017 14:25:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=yh7IybF9NGH7i+yhg1VchUVUKisF/5McQTG6NU2SH30=; b=ig/S/rwAvGk0O0xUJtfjkSUhzIi6pi68/bmeYFQ4/bHRlQ2xqEFl1TAHpXkKieirRI 8uv8CLdIX0IziAM3UYLS+d55euDY/45MW9hU7BeMm4sAtW6gCLeP7QQituhAOJUPgvll 3IXHIgSfcr95eGfJCgI8HlzSWVcS4xyPVQGorecIEBA3E1S61NoHM+czokJ+Ds/J6NaT d229TFxuXgdr4WdvYALzYRrUEEOmSBS2CdBodjmlsmUAbJKNQ6Msq3UW8DkKp3yOjqns tHr9Sapp6wq1w9xHkGqbZl8WWpY3CwileR0mfNgGOpKHvWGba54VjFopfhtIEjkhducm PNmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=yh7IybF9NGH7i+yhg1VchUVUKisF/5McQTG6NU2SH30=; b=K+4yNen7owqyfOP8ITz++Z58T6lpWLdxIQsWqqcCLq3XHarqiTf6wDfXHxj8sltryC wf4vizPlE5Sf+xwWuY+y14utxKOfxU85Gh1T9SfahYm+Q3PHtreUiTmoVfHK9Bdo86Pu TVaBujn9kXrxmWjErgt7iLzCXz1HngsS5+FWcePmAfdCzHBexe4yypFhlLPWo3L94G0m yOLPNv3YKy7dWDEDpWI5L0jEmMFkHkSBbHsW7xsTgF++yokC++l5dfWuWRkc9QWB9MKW JBL8oRsIDXItCXqrewYanCoJNDpbueqiXdkj47Qa/H+Xm+90m4StsBxgQpyF9f7+8ewc RRxw== X-Gm-Message-State: AIkVDXJHj6YZUUJ9vWCYI8Mu28zL63ASmJFFEPiHn/Xa07KhlMoScvZ6Td+FKJKJRwtMazthbyvW1DtnoiSq/A== X-Received: by 10.55.103.85 with SMTP id b82mr17726030qkc.24.1485037555143; Sat, 21 Jan 2017 14:25:55 -0800 (PST) MIME-Version: 1.0 Received: by 10.237.56.138 with HTTP; Sat, 21 Jan 2017 14:25:34 -0800 (PST) In-Reply-To: References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> From: John Mastro Date: Sat, 21 Jan 2017 14:25:34 -0800 Message-ID: Subject: Re: with-url To: emacs-devel Cc: Lars Ingebrigtsen , Dmitry Gutov Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:25:58 -0000 >>> Something else I take an issue with, is with `with-url' being a >>> macro. :) That violates The First Rule of Macro Club. >> >> Yes, the first rule is "use a macro when it makes sense". > > Not really. And macros make sense the most when we add a control flow > construct, or some sort of definition syntax for a new facility. > Neither of which is really the case here. I apologize if this has already been discussed, but how about implementing this as a new function that improves on the current situation but offers a traditional interface, plus a macro as an optional convenience layer atop it? John From MAILER-DAEMON Sat Jan 21 17:30:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4BW-0001VS-Bp for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:30:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44738) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4BT-0001U3-O7 for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:30:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4BQ-0005Ph-Kz for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:30:55 -0500 Received: from mail-lf0-x231.google.com ([2a00:1450:4010:c07::231]:35950) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV4BQ-0005Ol-Cj for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:30:52 -0500 Received: by mail-lf0-x231.google.com with SMTP id z134so76225760lff.3 for ; Sat, 21 Jan 2017 14:30:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:cc:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=jIMZrfr0Rfc7d7QqtbwIyStO2Yi05Afsbzg1rqFwZYk=; b=ikkw0ewdsMLLn+qKaIZd/HsFF6DGwRXpU0EoH7iFPorFjrRKoDto8cYcMVXtlXA6oG oEx7jsfKNdq7rH1neJcKyGXZLZrA/TMwgdnnARAhPrGhxOUO5KpXqW8NeSnC35aU+UbY u7Fy4MQ0PlZ7nyFm1iIWDlyuQiD5uRg5Fuj0MAIZKz63Xl1QK0QRfi5+Bag62bVEqXiD zR7EQWtjGsVNGwn8efN3BRAA/go73fv9iBki7m4rlP1M59sjF8h4xcBVsVtFKxhkCNfK APucxmmW9dsZGEjJTa4USvMHRbhSsHI16brsA0rYsK5i+3rBhmCsNx0YpAaM/InBMISs 8h8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:cc:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=jIMZrfr0Rfc7d7QqtbwIyStO2Yi05Afsbzg1rqFwZYk=; b=uYxnPghl0z2bDP35RRrYp5RkIZvnVSsw/+J1/gXZBgrkrk655gfjQESNGcbI7rxwZt JkOO+NoDd2fYmmmYyrQV3UXhjWar3KAsuMlDU9oEW7FXcOweryD0A8x81t41oaBiDZU/ 9sX3XkIugBpb8NQjc9h5U+BHoYBUYaz2b53N7cr9MFod6E7fDLd8Av+GxSdayeR5ZYv8 9V63QFXjTyJLo8K3UwuuoU4vnh1RIn61gThWndZLLtIS5SFrdEx2/H87UODzqAG1Ub5F EFNFazW8JHUUMKMJRUMMe8hoSN0DPDnKOWn5NpfWO5pMaUq+zUa0LXDGjFP+CYSeEt+k FnAg== X-Gm-Message-State: AIkVDXKYre5kIV6nyWJQdzv7hA8D115z89V0L4BSBT3Kuow2OyXjq8sQz3ibR2w1K3PpwA== X-Received: by 10.25.168.132 with SMTP id r126mr1036928lfe.70.1485037851053; Sat, 21 Jan 2017 14:30:51 -0800 (PST) Received: from [192.168.199.5] (broadband-95-84-209-126.moscow.rt.ru. [95.84.209.126]) by smtp.gmail.com with ESMTPSA id u18sm4875212ljd.4.2017.01.21.14.30.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2017 14:30:50 -0800 (PST) From: Nikolay Kudryavtsev X-Google-Original-From: Nikolay Kudryavtsev Subject: Re: 64-bit build on Windows To: Juanma Barranquero References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83a8ak5gx4.fsf@gnu.org> Cc: Emacs developers Message-ID: <53424a62-6650-adde-184c-8d07c18b5c8d@gmail.com> Date: Sun, 22 Jan 2017 01:30:51 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:30:57 -0000 Actually yes, bats were faced out since 2016-07-02 msys2 release, so the instructions should probably changed reflect that. -- Best Regards, Nikolay Kudryavtsev From MAILER-DAEMON Sat Jan 21 17:44:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4OB-0003lX-HH for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:44:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48476) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4O7-0003kt-VD for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:44:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4O7-0003zR-2y for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:44:00 -0500 Received: from relaycp01.dominioabsoluto.net ([217.116.26.68]:34900) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4O3-0003r6-8h; Sat, 21 Jan 2017 17:43:55 -0500 Received: from smtp.movistar.es (smtp22.acens.net [86.109.99.146]) by relaycp01.dominioabsoluto.net (Postfix) with ESMTP id 616D343B1; Sat, 21 Jan 2017 23:43:51 +0100 (CET) X-CTCH-RefID: str=0001.0A0B0205.5883E427.0053, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown Received: from qcore (88.24.252.251) by smtp.movistar.es (8.6.122.03) (authenticated as 981711563$telefonica.net) id 5842486F03A31B6F; Sat, 21 Jan 2017 22:43:45 +0000 From: =?utf-8?Q?=C3=93scar_Fuentes?= To: Juanma Barranquero Cc: Eli Zaretskii , Emacs developers Subject: Re: 64-bit build on Windows References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83a8ak5gx4.fsf@gnu.org> Date: Sat, 21 Jan 2017 23:43:50 +0100 In-Reply-To: (Juanma Barranquero's message of "Sat, 21 Jan 2017 22:42:22 +0100") Message-ID: <87shockp95.fsf@wanadoo.es> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 217.116.26.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:44:01 -0000 Juanma Barranquero writes: > On Sat, Jan 21, 2017 at 8:52 PM, Eli Zaretskii wrote: > >> but please wait for a few days to give MinGW64 users a >> chance to comment on this. > > One question for them, then. Could it be that I have mingw(32|64).exe > instead of mingw(32|64)_shell.bat because I followed the advice at > http://msys2.github.io/ and did a post-installation update with > > pacman -Sy pacman > pacman -Syu > pacman -Su > > ? Most likely. The method for starting the shell with the specific settings for each mode (msys2/mingw64/mingw32) changed some months ago. > If so, it's this something we should recommend in nt/INSTALL.W64? Nowadays a simple `pacman -Suy' should do the right thing. And IMO using the updated binary packages is a good thing. (Although the Emacs problems with ImageMagick started when MSYS2 upgraded to version 7 soon after it was released. Those are the risks of being `cutting edge'. Arch and Debian Unstable still are at version 6.9). From MAILER-DAEMON Sat Jan 21 17:58:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4bs-00064B-Ot for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:58:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50503) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4bq-000641-9F for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:58:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4bp-00005o-Hk for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:58:10 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:42042) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cV4bj-0008WI-PT; Sat, 21 Jan 2017 17:58:03 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 99522160088; Sat, 21 Jan 2017 14:58:00 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id Ewhnoa9Dlg7R; Sat, 21 Jan 2017 14:57:59 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 122BA1600A3; Sat, 21 Jan 2017 14:57:59 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id V_cAhX2g-MXu; Sat, 21 Jan 2017 14:57:58 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.188.248]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id E03BA160088; Sat, 21 Jan 2017 14:57:58 -0800 (PST) Subject: Re: CEDET Merge To: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> <8c7f5o8cu0.fsf@fencepost.gnu.org> <83bmv05h1a.fsf@gnu.org> Cc: Glenn Morris , kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, deng@randomsample.de, emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Sat, 21 Jan 2017 14:57:58 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <83bmv05h1a.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:58:11 -0000 >> If you want a recent example of this, "make ChangeLog" and look at the >> dates of "recent" concurrency entries. Some are years old. > That doesn't mean we should drop the rule, just that some people are > not always following rules. I guess I'm not following this. For example, commit=20 470e3028d8a741d97349faa8fdeb148d913a49d0 ("Fix the MS-Windows build") has= a=20 commit date of 2015-11-02 19:04:06 2015 +0200, and so "make ChangeLog" da= tes it=20 2015-11-02. And yet this commit was merged into master on 2016-12-10, by = you, as=20 part of merge commit 2412a1fc05fe9f89b171d0781c2d530923f48adc ("Support=20 concurrency in Emacs Lisp"). So when you say "some people are not always=20 following rules", do you mean that you did this particular merge incorrec= tly? Or=20 am I not understanding the rules? From MAILER-DAEMON Sat Jan 21 17:59:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4dA-0006cQ-8a for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 17:59:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4d3-0006Zr-HL for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:59:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4cu-0000jg-So for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:59:21 -0500 Received: from [195.159.176.226] (port=38876 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV4cu-0000j4-Lo for emacs-devel@gnu.org; Sat, 21 Jan 2017 17:59:16 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cV4ch-0006ry-Mp for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:59:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el Date: Sat, 21 Jan 2017 17:58:43 -0500 Lines: 16 Message-ID: References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <308bb78f-8be3-092d-d877-e129d340242b@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> <83k29o5rvj.fsf@gnu.org> <877f5obckp.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:dn4w9zSWU4BMFVDISq+hvzRiFGo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 22:59:29 -0000 >>>>> "Lars" == Lars Ingebrigtsen writes: > Eli Zaretskii writes: >> Both Richard and myself came up with almost identical comments on >> with-url, so I hope you will reconsider. > Perhaps we could have a vote. The contenders are `with-url', > `with-fetched-url', `with-url-contents' and > `with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url'. I vote against with-url and with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url. The other two seem fine, Stefan From MAILER-DAEMON Sat Jan 21 18:12:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4qA-0001Jm-PE for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 18:12:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4q8-0001Jc-4c for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:12:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4q4-0005Rm-3V for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:12:56 -0500 Received: from smtp202.alice.it ([82.57.200.98]:41241) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4q3-0005Qg-NJ for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:12:52 -0500 Received: from [192.168.1.102] (79.52.195.250) by smtp202.alice.it (8.6.060.43) (authenticated as angelo.graziosi@alice.it) id 5880700D00876143; Sun, 22 Jan 2017 00:12:49 +0100 To: fabrice.popineau@gmail.com, Emacs developers References: Subject: Re: 64-bit build on Windows From: Angelo Graziosi Message-ID: <5cbb1165-abb1-8f94-a38e-12cd9ec1dfd0@alice.it> Date: Sun, 22 Jan 2017 00:12:32 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: Quoted-Printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.98 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 23:12:57 -0000 Fabrice Popineau wrote: > The attached patch should be a proof of concept. > master-imagemagick.diff > Description: Text document I tried to use those patches to build Emacs master but they do not apply=20 cleanly to current master: MINGW_INSTALLS=3Dmingw64 makepkg-mingw -sLf [...] =3D=3D> Avvio di prepare() in corso... patching file configure.ac patching file lisp/loadup.el patching file lisp/term/w32-win.el Hunk #1 succeeded at 271 with fuzz 2. patching file src/image.c Hunk #1 FAILED at 2307. Hunk #2 FAILED at 8244. Hunk #4 FAILED at 8471. Hunk #6 FAILED at 8912. 4 out of 7 hunks FAILED -- saving rejects to file src/image.c.rej =3D=3D> ERRORE: Si =E8 verificato un errore in prepare(). L'operazione sta per essere interrotta... Now I haven't time to see the reasons... May you? TIA, Angelo. From MAILER-DAEMON Sat Jan 21 18:20:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV4xF-00038V-32 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 18:20:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53835) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV4xD-00037c-Fv for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:20:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV4xA-0008Cs-Bp for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:20:15 -0500 Received: from [195.159.176.226] (port=56326 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV4xA-0008Cj-5D for emacs-devel@gnu.org; Sat, 21 Jan 2017 18:20:12 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cV4wm-0005OL-8o for emacs-devel@gnu.org; Sun, 22 Jan 2017 00:19:48 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Lars Ingebrigtsen Subject: Library defaults Date: Sun, 22 Jan 2017 00:19:23 +0100 Organization: Programmerer Ingebrigtsen Lines: 45 Message-ID: <878tq480hw.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Mail-Copies-To: never Cancel-Lock: sha1:wtjxgoiR20jSXaEWodeZQSjh8l0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Jan 2017 23:20:16 -0000 Controlling things like cookies and caching is an application-level thing and not a library level thing (i.e., a browser like eww should allow the user to control whether to send cookies or not; not a global setting that affects the lower-level library). But still, nice defaults in a low-level library is also nice. This is the current signature for `with-url': (with-url (URL &key WAIT TIMEOUT READ-TIMEOUT (VERBOSE 5) (COOKIES t) (CACHE t) DEBUG HEADERS IGNORE-ERRORS (METHOD "GET") DATA (DATA-CHARSET 'utf-8) DATA-ENCODING) &body BODY) The three defaults up for discussion are `verbose', `cookies' and `cache'. In application use, most would set verbose to 0 (no messages), but perhaps it's nice to see a "Connecting to..." message if you're developing an app `with-url' at first? Developing with cookies switched on by default... I don't know. Most applications will have that on, but perhaps having a library like that alter files under ~/.emacs.d/url/cookies should be something that you opt in to? Or perhaps it should default to `write', which means that it sends cookies, but never updates them. All apps will run with caching switched on (unless the user has specified something else), but it's the same thing as with cookies: With a default of t, just fiddling with this function may end up storing things in ~/.emacs.d/url/cache, which may not be what you want. So nil as a default? So it's really: Make the defaults developer-friendly or source code friendly? Because all calls from applications will end up looking like (with-url ("http..." :cookies t :cache t :verbose 0) ...) And that's kinda sad, too. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 21 22:38:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV8zR-0003Zj-D8 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 22:38:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV8zO-0003ZL-Uc for emacs-devel@gnu.org; Sat, 21 Jan 2017 22:38:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV8zL-00029V-00 for emacs-devel@gnu.org; Sat, 21 Jan 2017 22:38:47 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV8zK-00029R-Sd; Sat, 21 Jan 2017 22:38:42 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3518 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cV8zJ-0004w0-Nw; Sat, 21 Jan 2017 22:38:42 -0500 Date: Sun, 22 Jan 2017 05:38:38 +0200 Message-Id: <837f5n69xd.fsf@gnu.org> From: Eli Zaretskii To: =?iso-8859-1?Q?=D3scar?= Fuentes CC: lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <87shockp95.fsf@wanadoo.es> (message from =?iso-8859-1?Q?=D3s?= =?iso-8859-1?Q?car?= Fuentes on Sat, 21 Jan 2017 23:43:50 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83a8ak5gx4.fsf@gnu.org> <87shockp95.fsf@wanadoo.es> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 03:38:48 -0000 > From: scar Fuentes > Cc: Eli Zaretskii , Emacs developers > Date: Sat, 21 Jan 2017 23:43:50 +0100 > > > One question for them, then. Could it be that I have mingw(32|64).exe > > instead of mingw(32|64)_shell.bat because I followed the advice at > > http://msys2.github.io/ and did a post-installation update with > > > > pacman -Sy pacman > > pacman -Syu > > pacman -Su > > > > ? > > Most likely. The method for starting the shell with the specific > settings for each mode (msys2/mingw64/mingw32) changed some months ago. > > > If so, it's this something we should recommend in nt/INSTALL.W64? > > Nowadays a simple `pacman -Suy' should do the right thing. And IMO using > the updated binary packages is a good thing. If this change in MSYS2 is only a few months old, I think we should mention both possibilities in the instructions, in case the reader has an older installation. From MAILER-DAEMON Sat Jan 21 23:22:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV9fh-0007mK-9F for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 23:22:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52783) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV9ff-0007lo-1B for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:22:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV9fe-0004dY-Al for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:22:26 -0500 Received: from mail-wm0-x22f.google.com ([2a00:1450:400c:c09::22f]:38224) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV9fe-0004dT-4R for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:22:26 -0500 Received: by mail-wm0-x22f.google.com with SMTP id r144so103836820wme.1 for ; Sat, 21 Jan 2017 20:22:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=YNlwExj9aqhA6S97RKzhBNHAA/c8MTWq5WEJJgy38DQ=; b=jysSnQtv77aOHwjG1v9hPt0TRyD24e6VSGs/WwKW5kmL63vHDrvtNZu/u4c6MdV+9u gQubuIVGC8glZarWsEYy1C3BodRYLLIwrPMwdVlFwgPKBNIeOfO0TTBNV6SmUYO0/0U8 Bor+3a/uYsmDs3w+JmVVeAz+LPYB0ccehVKmbTECMZW6T7swUKwJmhD6DTOFSg+tuALB eEA79Eey6SVAztJfp81nQUjXlJP58JAK06RQIpoJVxZi9U/4XISEhkbDkUxnUl/fGw0r KKBd+9JuLfX5f172CsigzJJSU1OnB0zQXywfVtW+HznEtBm0vBcHJlY13zhJG4Sk2FqS fxnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=YNlwExj9aqhA6S97RKzhBNHAA/c8MTWq5WEJJgy38DQ=; b=DAEEqE7eYI2h8AGP+jUjxVPi/1crYrew0bpCr9RB6+js9zKsBRM7HAs3BqzZb/ntzN irGFeyWuF75qzYp1l8PWUcLpcSMJ7dL075DMmR/Hdkclaqq+ucBmdSdAT8k8XP2e3OoN /XNNnDg1IwMCNT1oltyYPXaoDQ8C4fRkmzJdxuzO2mx/TF1iCxcwqgtx2mGsPZVPzTje L0T4/G1hi9Quw8dU61RT0v6aES657cxYWw08pKqUQSpcQiVrgF1oe1Ufr+4A5VA46PWC 80xR4eIGMYQ0z06LMouo3cJcP7I/NrCac5+0bjP/wVSZdx/pRHUHxV8HdBtYBFVgN2yP iI5g== X-Gm-Message-State: AIkVDXI4Fy80mtWVQcrG4/QdQYY91ufewRdCqhx7m4VEvVV5a1Mep2iejC5QTi5yVeCPlkfEnq5ZCSvLWuXEqw== X-Received: by 10.223.173.43 with SMTP id p40mr17944382wrc.163.1485058944755; Sat, 21 Jan 2017 20:22:24 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Sat, 21 Jan 2017 20:21:44 -0800 (PST) From: Juanma Barranquero Date: Sun, 22 Jan 2017 05:21:44 +0100 Message-ID: Subject: GUI vs TTY when saving & restoring framesets To: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 04:22:27 -0000 I've seen that there were several bugs related to framesets and ttys (I've located bug#17693 and bug#24298, but there were perhaps others). I don't understand yet the problems and the way they were fixed, but it has changed one previous feature. You could do (1) emacs -f desktop-save-mode -f destop-read set up your frame configuration with a couple of frames, save the desktop, then (2) emacs -f desktop-save-mode -f desktop-read -nw and you would get the same number of frames, then again (3) emacs -f desktop-save-mode -f desktop-read -nw and you would get back the original graphics frames. As of the current trunk, assuming you had 2 frames in (1), when you do (2) you gent a message Desktop: 2 frames, 0 buffers restored. which I think is false, because "C-x 5 o" does not switch to F2. Then, if you exit emacs, (3) produces a warning "Error (frameset): Font 'tty' is not defined. So, basically, previously the frameset saving in desktop.el was intended to be unaffected by -nw (per se; of course changes to the frames would be reflected in subsequent configurations, but not just entering and exiting -nw), and now it's not. I sort of liked the previous behavior, which was (bugs aside) safer. But if the new behavior is preferred, I think there's quite a lot of code from frameset.el that deals with the gui -> tty -> gui trip and could be excised. Opinions? From MAILER-DAEMON Sat Jan 21 23:23:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV9gz-0008Hs-U6 for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 23:23:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV9gy-0008Hl-3N for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:23:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV9gx-0005Po-6t for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:23:48 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:38337) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV9gx-0005Pi-11 for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:23:47 -0500 Received: by mail-wm0-x232.google.com with SMTP id r144so103857114wme.1 for ; Sat, 21 Jan 2017 20:23:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=XKa5ruF/AhOTQxv+sYk1O+9SfsvvxTZ2XreVytMfsp0=; b=MGrxUzCm1xBXhD4HMo/u6rtKeIRNt+oMGuExldSsliCT/lzOdkdFJJyRmXFot7YGAC +pT19evBm0p5mwHBerdSltm9Z/Ty8GECnWUfijrNtU5KehEAZ6cwYEWbBOLfZWTvsd8W KE2be98VBnQ2foyzIVHp2oFs0KY5hpfiRLY7B8qM3qXp5CUJDbZ3CWqqp7wfDrQ6mxsl crEEpGSfi/WYUTCcJee806CzspXkcD8laotbBsJuUezDFSnySAnkTtZUAnIkOe86VS7T IZ8hwhFoFRtqja5NHbimexbRGZd1A6sMlBHSbUXzxBCU6v+O1W3dVILSTpGmtmTptH5b 8U3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=XKa5ruF/AhOTQxv+sYk1O+9SfsvvxTZ2XreVytMfsp0=; b=QULoDLVphZxkdCdvMiAwZL+l4p5UHqZuV6+tC5IlvPqtazKSzU/MT95Gudb77HSaxn PPvmvBBA47WdU5WZNIGVH8hvsxB3kOeI1Yz/CFBxDYl5a4ne7vc8GMKMKPsUXdGX9KvK 7m6+Dk9qq5FeZEalG8qu7lXU8ujLzwxow3mA2qCtQ/Hu57574UhGUtoPjDG4sPyhR3QE 3SKu8qvFALm9HZpUa9aqtTIZS+mnwZOvpeoqsr8Atr6Gk5XAj7zeYP2yZMEJ7yLmvk26 aofA0OPIue522qmyYKIDQD5hxGNCK3GmQrAcq3ALBFsTTihm5JFJW/6qUri68jLK5eAr zEFA== X-Gm-Message-State: AIkVDXK29qTzoNJxcK969/ZJsfyhEwM5d0k+HVK+2KSBPlCqeO0GbweronWOOesFjSFpew86AYbj0Gh2LSICxg== X-Received: by 10.28.206.199 with SMTP id e190mr9269868wmg.98.1485059025732; Sat, 21 Jan 2017 20:23:45 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Sat, 21 Jan 2017 20:23:05 -0800 (PST) In-Reply-To: References: From: Juanma Barranquero Date: Sun, 22 Jan 2017 05:23:05 +0100 Message-ID: Subject: Re: GUI vs TTY when saving & restoring framesets To: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 04:23:49 -0000 On Sun, Jan 22, 2017 at 5:21 AM, Juanma Barranquero wrote: > (3) emacs -f desktop-save-mode -f desktop-read -nw I meant this, of course: (3) emacs -f desktop-save-mode -f desktop-read From MAILER-DAEMON Sat Jan 21 23:28:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cV9lq-0000hG-GW for mharc-emacs-devel@gnu.org; Sat, 21 Jan 2017 23:28:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53763) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cV9lo-0000h9-HX for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:28:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cV9ll-0006Xm-EK for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:28:48 -0500 Received: from [195.159.176.226] (port=43961 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cV9ll-0006XX-7l for emacs-devel@gnu.org; Sat, 21 Jan 2017 23:28:45 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cV9lN-0003Th-5z for emacs-devel@gnu.org; Sun, 22 Jan 2017 05:28:21 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: The current state of the comment-cache branch Date: Sat, 21 Jan 2017 23:28:08 -0500 Lines: 22 Message-ID: References: <20161227175500.GD2324@acm.fritz.box> <83y3z0ukth.fsf@gnu.org> <871swsf1es.fsf@thinkpad.rath.org> <83pokcugit.fsf@gnu.org> <87y3yzehc2.fsf@thinkpad.rath.org> <83d1gbv1rt.fsf@gnu.org> <87wpei7jye.fsf@thinkpad.rath.org> <83shp6tyqr.fsf@gnu.org> <20161229194454.GB3387@acm.fritz.box> <2ddc3f91-acf9-803a-f99d-9ccb63f748b9@online.de> <03ceef3b-7adb-0f0b-d8d8-e1f2e6c0a04a@online.de> <38e90e33-aaae-d8e6-ec2c-bfc239d5e1cd@online.de> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:v7IMBhEquC7Q0QJ0Dt02VfUWoYM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 04:28:49 -0000 >>> So https://debbugs.gnu.org/cgi/bugreport.cgi?bug=15485 is fixed? >> No, but I'm not sure it's a bug. It's the way `add-abbrev` works. >> The abbrev-tables themselves don't have that restriction. > So what does abbrev--check-chars inside define-mode-abbrev?: add-abbrev and define-mode-abbrev: mme combat! The abbrev-tables themselves don't have that restriction. Clearly, you've looked at the definition of define-mode-abbrev, so I hope you realized that this definition is extremely short: it's a very thin layer above `define-abbrev`. Which means it'd be rather easy to define such a layer which doesn't have those limitations (since define-abbrev doesn't have those limitations). Patches welcome (with appropriate paperwork, of course). Stefan PS: But note that it's not quite as simple as I make it sound: in order to define a non-word abbrev, the abbrev-table has to specify a different :regexp property. From MAILER-DAEMON Sun Jan 22 05:32:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVFSA-0001ak-0Q for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 05:32:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60214) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVFS6-0001aZ-D4 for emacs-devel@gnu.org; Sun, 22 Jan 2017 05:32:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVFS1-0004Dw-NO for emacs-devel@gnu.org; Sun, 22 Jan 2017 05:32:50 -0500 Received: from mail-pg0-x22e.google.com ([2607:f8b0:400e:c05::22e]:33461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVFS1-0004BE-DO for emacs-devel@gnu.org; Sun, 22 Jan 2017 05:32:45 -0500 Received: by mail-pg0-x22e.google.com with SMTP id 204so36490144pge.0 for ; Sun, 22 Jan 2017 02:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=2iJCwBQjGBbdh1cO2iviqRxU/8lXs2fz9ELc+swW2WQ=; b=GwH37rHxELDWPBA6bcLYm5YHWZ94doEqwQrhN8Oly060xXqAUe8l2N2BHktqw2K+FS yI5KXBOfZ9g2knSwJHfQDkvLBz1HV5DC7U7veizMD/aQTUW5Zn2j7Flo1OMmB5E6Pg6C FW5fJOLMKYiEHRlSivoyEbehD6OWtqXBb4p47Kfibe2WgEZkpXf2SeJwA3c3szmN4Hd3 bxdWyVBQ9a+QOBDTQUEMfiW4e1YRowmOmts3NC4oK+icdnFB+Er+ZG/mRUGkx5UJiP1T P3H1Rs/PI0RskjWxP5G1Nn3lul/0OiiI507ANtvihr2FLPbPMBpLJNoi2sIeYWjl/vT7 i6zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=2iJCwBQjGBbdh1cO2iviqRxU/8lXs2fz9ELc+swW2WQ=; b=kjAAt9jEzkySpoqpZi0Vsw6ey0xF/0sI3mpfs40Mhb0IA1SAeUKhbM3y0l9p6IRLTo pT9fvDfaWC2Rm5bKGytX3zazzz0g2ARWt3qFJ/QWh8jms5s7VdW+GWNoHpkNZGcUPcSI sRAwnnGPggVMe0iD6ekaWIfzS1HSeGL320cYJcH/+Ru0SarImryX7Gi5fB+FB4nj2ZiK tAkDCoYWHqXHDR7q0PEgQ22m7FxZ+3CvEhBdGqHaOnQJ4a6pkKxdpGZdaynmNK84byMF /hoGX7ATbaRiCiDFfJ9U6iT6R6npbcd3VRR9At3bzLjObv5m9Tucj5zYrvXQKNPWxtpf +uGQ== X-Gm-Message-State: AIkVDXJSlirK9dczVnLSsJSAzTui1/osdFO9flrxbniU1jP+GWCoycpvAcNyY88JNv75qg== X-Received: by 10.84.217.216 with SMTP id d24mr35124408plj.101.1485081162686; Sun, 22 Jan 2017 02:32:42 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id o126sm28965339pga.34.2017.01.22.02.32.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Jan 2017 02:32:41 -0800 (PST) From: Tino Calancha To: Juri Linkov Cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> Date: Sun, 22 Jan 2017 19:32:35 +0900 In-Reply-To: <8760l9wcci.fsf@mail.linkov.net> (Juri Linkov's message of "Sat, 21 Jan 2017 01:17:17 +0200") Message-ID: <87fukb2xmk.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 10:32:52 -0000 Juri Linkov writes: >> OK. Updated the patch. >> *) First patch allow `occur' handle the region with the new convention, >> i.e., region argument instead of BEG, END. > > Thanks. As a prerequisite I'm going to install this patch: > +(defun region-bounds () > + "Return the boundaries of the region as a list of (START . END) positi= ons." > + (funcall region-extract-function 'bounds)) > + > (defvar region-insert-function > (lambda (lines) > (let ((first t)) Thank you. >> **) The second patch add your suggestion on showing highlighted the >> current line. When there are matches after the current line, the >> point in *Occur* is set right after such line. >> >> I am fine with just adding *). In case we also want **), >> an option to enable/disable that behaviour might be desirable. > > Keeping traditional behaviour means not jumping to the middle of the > *Occur* output by default. Then maybe we could use the same option > to highlight the current line and to jump to it? Like the existing > =E2=80=98list-matching-lines-buffer-name-face=E2=80=99, adding a nil/face= choice for > =E2=80=98list-matching-lines-current-line-face=E2=80=99, so when it's nil= then don't > highlight/jump? OK, why not? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; >From c9a6891187de8c4df6294777ea745810d405b07a Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 22 Jan 2017 19:12:35 +0900 Subject: [PATCH 1/2] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional arg REGION; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 46 +++++++++++++++++++++++++++++++--= ---- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. =20 @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp= -intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings =20 @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. =20 @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index ca66df6261..9eb5d82099 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -310,6 +310,8 @@ substituted by a home directory by writing it as "/foo:= /:/~/file". * Editing Changes in Emacs 26.1 =20 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..00e73157ff 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) =20 -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. =20 @@ -1369,6 +1374,10 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. =20 +Optional arg REGION, if non-nil, mean restrict search to the +specified region. Otherwise search the entire buffer. +When REGION is non-nil, it must be a cons (START . END). + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1395,24 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (and (use-region-p) (region-bounds)))) + (let* ((start (car region)) + (end (cdr region)) + (in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) =20 (defvar ido-ignore-item-temp-list) =20 @@ -1545,13 +1570,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1711,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (=3D matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1721,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) --=20 2.11.0 >From 31b578636731c0a67dc64aad8d880d82d7c8804d Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 22 Jan 2017 19:25:34 +0900 Subject: [PATCH 2/2] Show current line highlighted in *Occur* buffer * lisp/replace.el (occur-current-line-face): New face. (list-matching-lines-current-line-face): New user option. (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'occur-current-line-face'. Set point on the first matching line after the current one. * etc/NEWS: Add entry for the new option. --- etc/NEWS | 3 +++ lisp/replace.el | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++= ---- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 9eb5d82099..ff8246506d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -311,6 +311,9 @@ substituted by a home directory by writing it as "/foo:= /:/~/file". * Editing Changes in Emacs 26.1 =20 =20 +** A new user option 'list-matching-lines-current-line-face' +to show highlighted the current line in the *Occur* buffer. + ** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. diff --git a/lisp/replace.el b/lisp/replace.el index 00e73157ff..3de09b48cc 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1081,6 +1081,12 @@ occur-mode-find-occurrence-hook :type 'hook :group 'matching) =20 +(defface occur-current-line-face + '((t (:inherit lazy-highlight))) + "Face for highlighting the current line in *Occur* buffer." + :group 'matching + :version "26.1") + (put 'occur-mode 'mode-class 'special) (define-derived-mode occur-mode special-mode "Occur" "Major mode for output from \\[occur]. @@ -1304,6 +1310,13 @@ list-matching-lines-buffer-name-face :type 'face :group 'matching) =20 +(defcustom list-matching-lines-current-line-face nil + "If non-nil, \\[list-matching-lines] shows the current line highlighted. +Set the point right after such line when there are matches after it." + :type '(choice (const :tag "Unset" nil) + (const :tag "highlight current line" occur-current-line-f= ace)) + :group 'matching) + (defcustom list-matching-lines-prefix-face 'shadow "Face used by \\[list-matching-lines] to show the prefix column. If the face doesn't differ from the default face, @@ -1364,6 +1377,9 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) =20 (defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. @@ -1381,6 +1397,9 @@ occur The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. +If `list-matching-lines-current-line-face' is non-nil, then show highlight= ed +the current line; if there are matches after it, then set the +point right after such line. =20 If REGEXP contains upper case characters (excluding those preceded by `\\') and `search-upper-case' is non-nil, the matching is case-sensitive. @@ -1408,7 +1427,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1507,7 +1532,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1559,6 +1585,10 @@ occur-1 (if (=3D count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1571,7 +1601,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1579,12 +1610,16 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1685,6 +1720,18 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and list-matching-lines-current-line-face + (not multi-occur-p) + (not orig-line-shown-p) + (>=3D curr-line orig-line)) + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1698,6 +1745,18 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (when (and list-matching-lines-current-line-face + (not multi-occur-p) + (not orig-line-shown-p)) + (with-current-buffer out-buf + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face 'occur-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1731,8 +1790,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) --=20 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.6) of 2017-01-22 Repository revision: 0a49f158f1598fb92989f3cbdc238a7e5f1bd8a3 From MAILER-DAEMON Sun Jan 22 07:14:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVH2h-0004gF-8k for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 07:14:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46979) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVH2a-0004fB-NP for emacs-devel@gnu.org; Sun, 22 Jan 2017 07:14:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVH2V-0002EF-GA for emacs-devel@gnu.org; Sun, 22 Jan 2017 07:14:36 -0500 Received: from mail-lf0-x22a.google.com ([2a00:1450:4010:c07::22a]:35996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVH2V-0002BW-89 for emacs-devel@gnu.org; Sun, 22 Jan 2017 07:14:31 -0500 Received: by mail-lf0-x22a.google.com with SMTP id z134so80596319lff.3 for ; Sun, 22 Jan 2017 04:14:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=MKaonwse71iqv611dqJ8UsRt49KW+XN+L63SCBrD5UU=; b=FOzi7sqyMQXDPqakfYBpJUDWWDU5V2fEFqpkPj4I1RC8YHkdyxqku1t6jqFRj3Y98h B5InHRpN+2g4q4xsffrJO93am3OIRdqSaex8c/kcm+NkuKTIgD4QWCsDPNiTa+ftSd4x OUYSyiJ4Giv+UNIc3vxp+IyMzCw/mDyPXmDGPkikURG9F82P72210YGroFoE8pLQarmj 1x6UUKGPhjq0QpNKzQsd4ZdOsNWe68FBb4RA2TO0QeK8Dc02ICMfBfy6ilre7ZMbJ15W tWHJ+Ivpmux5bzld0fsqjAMu/+k5zLrQT5S2DYYnxzrSxZSe6HIrGkvO0eUzIJkvbTfa qCmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=MKaonwse71iqv611dqJ8UsRt49KW+XN+L63SCBrD5UU=; b=Bgu/yX6gg4XQDk+FkMSdfz6ShozRmH41086JrD9ztDXlVsEAPNLAL/6YPiha0iq4Fv O7q+jX6/jDop+nJUAvvv34QUJYzV7e9OexKccKp8z2TYCkXJ6+3ZsUbntUzOHsn2SfWr YpsOLVzWX+Phd8s5NV63YUa5wVS0OU7yOHyFiPjvcPeuiuWEt+NphZPfyvSLg2sRs3F6 CKhi2OXWjnxcgm6X5SSrORhuSg9jW17X1KYkWURqJOnyVyvBj6WeGSuILh/rLW8Yd+6y nngdoaV7fUqoiJu4Eea6umghAMMcNL4F4TXrEAoSb38fGqN/KRbiyEAevtOO+tRTJbBy KZrQ== X-Gm-Message-State: AIkVDXLC/tV7osgbEAr9HBVZNmIMcYLYti/9jrkOgygleGCKNy2mOOwXNXPHYvMljGgmhQm7bK1pj+GQmkHE4Q== X-Received: by 10.25.18.102 with SMTP id h99mr6516082lfi.63.1485087268116; Sun, 22 Jan 2017 04:14:28 -0800 (PST) MIME-Version: 1.0 Sender: yurivkhan@gmail.com Received: by 10.25.8.212 with HTTP; Sun, 22 Jan 2017 04:14:07 -0800 (PST) In-Reply-To: <87d1fg83u2.fsf@gnus.org> References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> From: Yuri Khan Date: Sun, 22 Jan 2017 19:14:07 +0700 X-Google-Sender-Auth: EgZSLgLwhg5MjxMJXAKBy8oJO6E Message-ID: Subject: Re: with-url To: Lars Ingebrigtsen Cc: Dmitry Gutov , Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 12:14:41 -0000 On Sun, Jan 22, 2017 at 5:07 AM, Lars Ingebrigtsen wrote: > The network is transient. These events are expected. That the file > you've just examined isn't there is a different class of error. I work on the server-side team of a network interaction where all of the errors mentioned upthread can and do occur: DNS failure, connection timeout, connection refusal, 4xx and 5xx status codes, *and also* 3xx codes with redirects to unexpected locations and 2xx codes with an unexpected Content-Type or malformed content. We constantly have to remind our client-side team that they need to be prepared for all of those, and that their QA must test each of those. Whenever they forget to do that, horrible things happen, up to and including application startup failure requiring reinstallation. A good HTTP client framework *should* signal errors and let the willing client catch them, rather than leave it to the client to explicitly check for every error condition. Myers=E2=80=99 Razor: Make interfaces easy to use correctly and hard to use incorrectly. The only class of HTTP client applications that I know where the expected way to process failure responses is the same as for success responses is the web browser. And I don=E2=80=99t envision *very* many of these written in Elisp. From MAILER-DAEMON Sun Jan 22 08:27:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVIBS-00013R-Us for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 08:27:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53885) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVIBQ-00013G-Rz for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:27:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVIBN-0005Pb-Oh for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:27:48 -0500 Received: from ocolin.muc.de ([193.149.48.4]:58507 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cVIBN-0005NL-Ew for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:27:45 -0500 Received: (qmail 31476 invoked by uid 3782); 22 Jan 2017 13:27:43 -0000 Received: from acm.muc.de (p4FC46969.dip0.t-ipconnect.de [79.196.105.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Jan 2017 14:27:42 +0100 Received: (qmail 12905 invoked by uid 1000); 22 Jan 2017 13:27:27 -0000 Date: Sun, 22 Jan 2017 13:27:27 +0000 To: Juanma Barranquero Cc: Emacs developers Subject: Re: GUI vs TTY when saving & restoring framesets Message-ID: <20170122132727.GA12823@acm> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 13:27:49 -0000 Hello, Juanma. On Sun, Jan 22, 2017 at 05:21:44 +0100, Juanma Barranquero wrote: > I've seen that there were several bugs related to framesets and ttys > (I've located bug#17693 and bug#24298, but there were perhaps others). > I don't understand yet the problems and the way they were fixed, but > it has changed one previous feature. To those bugs I would add: #23630: Emacs 25.0.94.1: desktop-read loads buffers in the wrong order. #19706: Emacs 25.0.50; (+ nil nil -1) in desktop-restore-frameset They have relevance to tty vs. GUI, although they might not be restricted to that difference. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 22 09:22:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVJ27-0006Oq-GI for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 09:22:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59357) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVJ24-0006ON-Ld for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:22:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVJ21-0004M8-G2 for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:22:12 -0500 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]:34988) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVJ21-0004M3-9N for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:22:09 -0500 Received: by mail-lf0-x241.google.com with SMTP id v186so12136464lfa.2 for ; Sun, 22 Jan 2017 06:22:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=5M4BT3WgDWk9woPjHsPWRdQw8/hYC/dEvIJFeYekb6Q=; b=MLOou/zh8NL7Ne4JGKzJTEqGzpl5vHJ/ULoMXUe8OaR+EuOvvPv+ITcmM/kBigegUt 3Wpj80X4o+ExJxMm+QrTQeoo511AzT7To8nI7892bw1Ch5udN841n9AtYHxq7ODN0PiM V9cEjTMV+Q8zG1HQNmsjuM8bEmkcufbX/9677PANOA7n4pEE9zrYDetxznsYhiYXMzC/ bwPjdQ8mljwg4F1bUUygC7jOgi6Qw4xf5Spcltqezq8TJzvM6We9Lsl2LHzae7HKeHQd 85TtiadikdMsY+3QTJbnYqlYSp37p3/frxIllJhNZrsPcQ2wz2vhSPm9Z3Bnt/VDb96t y0ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=5M4BT3WgDWk9woPjHsPWRdQw8/hYC/dEvIJFeYekb6Q=; b=Nu76S9tVdQNrd+8zs4J1dngErV11yJWeJyY1RV6mDgD71Wki1scwzgcXU1xOMlWL3N 8D7TdfGLG/i9Ya0ll4JS4GfE9R9bwyiJcP6kLp+2PhnbJFVTO8EGDL61WQlT9IycMnD3 CA3ni/4wamAqvDrp/jAeUf0GXR3b51Dh/Iq4hGUObhe97AftgJFWdF5Zr4gvzZUkZEOc iN4o4l3iSqweDM5Rk0lzt66Rjnlqq25ilHPBmdfuY3vEQ82cVRwqDVgv1KLyyK2rz2bk b0pIadeXBTL1o3Z5TNTrPAG/1ywQjHCMxGs/ahgvXSom+vwSWtUqG7Ql1HBOxG72hFZf 82Wg== X-Gm-Message-State: AIkVDXL/TibKuP43KzoD/ed7s3O4cuIRvUB69xZePZgvmekWVMu6X5JdkDYpMWCV/G6GhA== X-Received: by 10.25.92.220 with SMTP id u89mr164976lfi.172.1485094927706; Sun, 22 Jan 2017 06:22:07 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id x26sm1892251lja.0.2017.01.22.06.22.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jan 2017 06:22:06 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> From: Dmitry Gutov Message-ID: Date: Sun, 22 Jan 2017 17:22:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87d1fg83u2.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 14:22:13 -0000 On 22.01.2017 01:07, Lars Ingebrigtsen wrote: > I suggested a bound variable in the form executed, > > (with-url (status "http:...") > (url-error status) > ...) > > but Stefan suggested a buffer-local variable instead. I went with the > latter today. Will `status' only contain HTTP status, or will it contain any other errors as well? > The network is transient. These events are expected. That the file > you've just examined isn't there is a different class of error. Apparently we might have to agree to disagree here. From MAILER-DAEMON Sun Jan 22 09:42:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVJLU-0001xt-15 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 09:42:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVJLS-0001xm-Rv for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:42:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVJLP-00046F-QC for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:42:14 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:49517) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVJLP-00045D-JO for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:42:11 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVJLK-0001bF-G6; Sun, 22 Jan 2017 15:42:08 +0100 From: Lars Ingebrigtsen To: Dmitry Gutov Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> Date: Sun, 22 Jan 2017 15:42:00 +0100 In-Reply-To: (Dmitry Gutov's message of "Sun, 22 Jan 2017 17:22:05 +0300") Message-ID: <87y3y3yx53.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 14:42:15 -0000 Dmitry Gutov writes: > Will `status' only contain HTTP status, or will it contain any other > errors as well? It's an object that can be interrogated through a number of functions, and gives you access to headers, results and errors. > Apparently we might have to agree to disagree here. Says you! -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 09:46:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVJPi-0002tc-HX for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 09:46:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34533) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVJPf-0002tF-Ig for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:46:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVJPc-0006eN-H1 for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:46:35 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:49544) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVJPc-0006eH-AH for emacs-devel@gnu.org; Sun, 22 Jan 2017 09:46:32 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVJPZ-0000VH-0k; Sun, 22 Jan 2017 15:46:31 +0100 From: Lars Ingebrigtsen To: Yuri Khan Cc: Dmitry Gutov , Emacs developers Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> Date: Sun, 22 Jan 2017 15:46:22 +0100 In-Reply-To: (Yuri Khan's message of "Sun, 22 Jan 2017 19:14:07 +0700") Message-ID: <87tw8rywxt.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 14:46:36 -0000 Yuri Khan writes: > A good HTTP client framework *should* signal errors and let the > willing client catch them, rather than leave it to the client to > explicitly check for every error condition. Myers=E2=80=99 Razor: Make > interfaces easy to use correctly and hard to use incorrectly. It depends on the language. If the only way you have to report back different classes of responses is through the signalling system, then that's what you're apt to do. (Also see: Java, the 90s.) Anyway, it's all rather moot, since this is, of course, an asynchronous library function, and you can't really send any Lisp-level signals in that context. So `with-url' uses the mechanisms that virtually all other async HTTP libraries uses: Gives the callback a status object to interrogate. But discussion on programming philosophies is fun, anyway. :-) --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 09:49:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVJSO-0003TW-4f for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 09:49:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55967) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVIRZ-0005nl-LP for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:44:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVIRW-00028I-JJ for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:44:29 -0500 Received: from mx2.mailbox.org ([80.241.60.215]:33521) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVIRW-00027W-DG for emacs-devel@gnu.org; Sun, 22 Jan 2017 08:44:26 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx2.mailbox.org (Postfix) with ESMTPS id CF71F447C5; Sun, 22 Jan 2017 14:44:23 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp1.mailbox.org ([80.241.60.240]) by hefe.heinlein-support.de (hefe.heinlein-support.de [91.198.250.172]) (amavisd-new, port 10030) with ESMTP id CjJpYw8-QBuY; Sun, 22 Jan 2017 14:44:21 +0100 (CET) From: Jens Lechtenboerger To: Lars Ingebrigtsen Cc: Yuri D'Elia , emacs-devel@gnu.org Subject: Re: message.el and mml-secure-bcc-is-safe References: <87tw9b9jud.fsf@wavexx.thregr.org> <87y3y49xt7.fsf@gnus.org> OpenPGP: id=0xA142FD84; url=https://www.informationelle-selbstbestimmung-im-internet.de/A142FD84.asc Date: Sun, 22 Jan 2017 14:44:20 +0100 In-Reply-To: <87y3y49xt7.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sat, 21 Jan 2017 17:34:28 +0100") Message-ID: <874m0rgqff.fsf@informationelle-selbstbestimmung-im-internet.de> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.241.60.215 X-Mailman-Approved-At: Sun, 22 Jan 2017 09:49:23 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 13:44:30 -0000 On 2017-01-21, at 17:34, Lars Ingebrigtsen wrote: > Yuri D'Elia writes: > >> I'd like to manipulate the mml tags on the message inside the >> 'message-send-hook depending on the recipient. >> >> By reading though message.el, this seems to be possible as the hook is >> ran early enough. >> >> However, I notice that (mml-secure-bcc-is-safe) is called before the >> hook. If I plan to modify the tags, it actually makes sense to run it >> just afterwards instead so that it checks the final headers and tags. >> >> Could we move (mml-secure-bcc-is-safe) just after the hook? >> It makes more sense to me, unless there's some specific reason to do so. > > I'm not sure... there might be subtleties there... I've added Jens to > the Cc; he added the code so he might have an opinion. There was no particular reason for adding the bcc-check before executing that hook. Feel free to exchange their order. Best wishes Jens From MAILER-DAEMON Sun Jan 22 10:14:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVJqE-0000Ta-G3 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 10:14:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38309) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVJqC-0000T7-Hy for emacs-devel@gnu.org; Sun, 22 Jan 2017 10:14:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVJq8-0005cO-IK for emacs-devel@gnu.org; Sun, 22 Jan 2017 10:14:00 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:33541) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVJq8-0005c9-A6 for emacs-devel@gnu.org; Sun, 22 Jan 2017 10:13:56 -0500 Received: by mail-lf0-x243.google.com with SMTP id x1so12232326lff.0 for ; Sun, 22 Jan 2017 07:13:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=UH/K3pKTX0/aNUn1gMZhWorLOanFIE/39FEXM0ZiTVQ=; b=cszVYu4l+DR9TV6lYlzMh+1Rd+llEgRY5U+0gnRdWnRq/BstcEIgFU92IkkCER/p/a XOaRMU0sQScHk4A452v5D+uiQX6t/9AVm8mF54GQuuJb8Jv3WbJ9+kyLDk94BLQ/bWge LXi9tiZeM0jnSkjfM5sDKWjlkXfgAAO1VHqoxnZMuJMNg5vQdw2wFEo9/jJHmzzVJbn1 4rSclHYevl6dKlNqamS3YUsDJcUBxXx8slOrDwdtxus45i0NgXZYP/GjrkjVmT/flMhN i8PBE1YV4ZTDUs3yp0h6EZwjXOClYoBsPbYa37UQ3kgIxceB+A4vc1KHIjwgrzz1chI4 fsLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=UH/K3pKTX0/aNUn1gMZhWorLOanFIE/39FEXM0ZiTVQ=; b=ClSgQz9gOcn54nWnaKlz+xylK+gScdj40eUb9rlTUFEzwNd46Lv6w5CApTDwIkyRl7 PP6NtDnQED+15TpVFHJF1GgbX7o7Caygt45VD0UQOgxvvwTvHlSAR8EYIMcJQXPDfiA2 WC1yoptdV97u5xm5q3HNCIa81etufRWxuxD3uzUAUveksfeTlf/iXN+KkVGil5W4cunA rZ8Akl1ag6HyYnMFyPuvQuJQ4NHpG6krSLqXZJf6Ww7bquRPId89sN/98ARTEd7ZVCXW OGtWMp6td5WeSpjcr4gtnmt6d3hEHEzfd19ijc+flS0/cgzWAoygSftvcYL2YtSA6TNa 5bWQ== X-Gm-Message-State: AIkVDXIAytYbCvMiAVEusU/usQbuSXPC0JObB/cSPYrDZSKLData33SXFdyjbvcL+GrWog== X-Received: by 10.25.219.82 with SMTP id s79mr3521665lfg.116.1485098034897; Sun, 22 Jan 2017 07:13:54 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id o5sm5466536lfo.35.2017.01.22.07.13.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jan 2017 07:13:54 -0800 (PST) Sender: DG Subject: Re: with-url To: Lars Ingebrigtsen , Yuri Khan Cc: Emacs developers References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> <87tw8rywxt.fsf@gnus.org> From: Dmitry Gutov Message-ID: Date: Sun, 22 Jan 2017 18:13:53 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <87tw8rywxt.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 15:14:01 -0000 On 22.01.2017 17:46, Lars Ingebrigtsen wrote: > It depends on the language. If the only way you have to report back > different classes of responses is through the signalling system, then > that's what you're apt to do. (Also see: Java, the 90s.) There's nothing stopping an arbitrary piece of Java code from using complex return values, or even "global variables", to do that. > Anyway, it's all rather moot, since this is, of course, an asynchronous > library function, and you can't really send any Lisp-level signals in > that context. That's why I mentioned threads. From MAILER-DAEMON Sun Jan 22 10:55:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVKUI-0005c0-KW for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 10:55:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42450) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKUG-0005bu-5U for emacs-devel@gnu.org; Sun, 22 Jan 2017 10:55:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVKUC-0007ko-VE for emacs-devel@gnu.org; Sun, 22 Jan 2017 10:55:24 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:49969) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVKUC-0007iu-Oa; Sun, 22 Jan 2017 10:55:20 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVKTz-0003c2-Vh; Sun, 22 Jan 2017 16:55:12 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> <83lgu45ryc.fsf@gnu.org> <8737gcbchm.fsf@gnus.org> <83inp85pui.fsf@gnu.org> Date: Sun, 22 Jan 2017 16:55:01 +0100 In-Reply-To: <83inp85pui.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 21 Jan 2017 18:40:05 +0200") Message-ID: <87o9yzytre.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 15:55:25 -0000 Eli Zaretskii writes: > I want to cater to Emacs users and developers as well, and I think > mime-charset is a good compromise. Once again, we have a > :mime-charset property of coding systems, so using that terminology > will I think provide good mnemonic hints both to protocol experts and > to Emacs developers. We also have a couple of handful of variables and function that just say "charset" when it's in the context of network communications, like `mail-parse-charset' and `message-posting-charset'. I think the likelihood of any Emacs programmer that's interested in networking libraries being confused by a parameter called :charset is less than their being confused by a parameter called :mime-charset. You come to this from a different angle, and is perhaps not all that interested in networking protocols? In that case, I understand your hesitancy, but I... think I'm right. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 11:04:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVKdO-00075f-T6 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:04:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKdM-00075P-KU for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:04:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVKdJ-0002Q1-HP for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:04:48 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50026) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVKdJ-0002Pn-B8 for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:04:45 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVKdE-0004Nj-Vy for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:04:43 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> Date: Sun, 22 Jan 2017 17:04:35 +0100 In-Reply-To: <87mvffva75.fsf@gnus.org> (Lars Ingebrigtsen's message of "Thu, 29 Dec 2016 01:41:02 +0100") Message-ID: <87inp7ytbg.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:04:49 -0000 Anyway, progress on the with-url branch has been much more rapid than I thought it would be, and it "basically works" now: You can use it to browse the web. What's left of the main part is to finish implementing the header/data encoding framework and do some quality assurance on form submission. I've reused some components of the old URL library, like the cookie and cache bits, but I just discovered that the url-cache library is basically ... er... not very good. That is, it doesn't implement anything like a traditional web browser cache, with lifetime management and heeding the required caching headers. (In addition, it's not very, er, privacy conscious, as it'll basically record every site you've been to, and every thing you've looked at, in plain text.) So I'll be implementing a new cache, too. *sigh* My plan is then to merge this with master in a few weeks (well, not really a merge, but more of a patch set), and then it'll be in Emacs 26.1. And then we can mark url-retrieve and all the rest as obsolete in Emacs 27, after with-url has grown the bits that people feel they need to do the switchover. In particular, with-url does not implement schemes like imap:, irc:, news: and ldap: and all the other things that nobody uses any more. (And most of which have been broken in Emacs for something like a decade, I think: See the bug tracker for details.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 11:09:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVKhW-0007vt-H1 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:09:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKhU-0007vi-Kj for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:09:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVKhQ-0003PY-P5 for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:09:04 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42452) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKhQ-0003PU-M1; Sun, 22 Jan 2017 11:09:00 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3752 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVKhP-00049U-AF; Sun, 22 Jan 2017 11:08:59 -0500 Date: Sun, 22 Jan 2017 18:08:55 +0200 Message-Id: <8360l75b6w.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: rgm@gnu.org, kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, deng@randomsample.de, emacs-devel@gnu.org In-reply-to: (message from Paul Eggert on Sat, 21 Jan 2017 14:57:58 -0800) Subject: Re: CEDET Merge Reply-to: Eli Zaretskii References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> <8c7f5o8cu0.fsf@fencepost.gnu.org> <83bmv05h1a.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:09:05 -0000 > Cc: Glenn Morris , kfogel@red-bean.com, edward.steere@gmail.com, > stephen_leake@stephe-leake.org, deng@randomsample.de, emacs-devel@gnu.org > From: Paul Eggert > Date: Sat, 21 Jan 2017 14:57:58 -0800 > > >> If you want a recent example of this, "make ChangeLog" and look at the > >> dates of "recent" concurrency entries. Some are years old. > > That doesn't mean we should drop the rule, just that some people are > > not always following rules. > > I guess I'm not following this. For example, commit > 470e3028d8a741d97349faa8fdeb148d913a49d0 ("Fix the MS-Windows build") has a > commit date of 2015-11-02 19:04:06 2015 +0200, and so "make ChangeLog" dates it > 2015-11-02. And yet this commit was merged into master on 2016-12-10, by you, as > part of merge commit 2412a1fc05fe9f89b171d0781c2d530923f48adc ("Support > concurrency in Emacs Lisp"). So when you say "some people are not always > following rules", do you mean that you did this particular merge incorrectly? Or > am I not understanding the rules? Commit 2412a1f has its own log message (something unusual for merge commits, AFAIK), so IMO this example exactly follows the rules as I understand them. From MAILER-DAEMON Sun Jan 22 11:23:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVKvY-0001v1-2q for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:23:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46516) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKvW-0001us-AW for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:23:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVKvS-0007iP-6i for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:23:34 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42572) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVKvS-0007hh-3J; Sun, 22 Jan 2017 11:23:30 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3783 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVKvM-00058e-Un; Sun, 22 Jan 2017 11:23:25 -0500 Date: Sun, 22 Jan 2017 18:23:21 +0200 Message-Id: <834m0r5aiu.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sun, 22 Jan 2017 05:21:44 +0100) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:23:35 -0000 > From: Juanma Barranquero > Date: Sun, 22 Jan 2017 05:21:44 +0100 > > I've seen that there were several bugs related to framesets and ttys > (I've located bug#17693 and bug#24298, but there were perhaps others). > > I don't understand yet the problems and the way they were fixed, but > it has changed one previous feature. > > You could do > > (1) emacs -f desktop-save-mode -f destop-read > > set up your frame configuration with a couple of frames, save the desktop, then > > (2) emacs -f desktop-save-mode -f desktop-read -nw > > and you would get the same number of frames, then again > > (3) emacs -f desktop-save-mode -f desktop-read -nw > > and you would get back the original graphics frames. > > As of the current trunk, assuming you had 2 frames in (1), when you do > (2) you gent a message > > Desktop: 2 frames, 0 buffers restored. > > which I think is false, because "C-x 5 o" does not switch to F2. Then, > if you exit emacs, (3) produces a warning "Error (frameset): Font > 'tty' is not defined. > > So, basically, previously the frameset saving in desktop.el was > intended to be unaffected by -nw (per se; of course changes to the > frames would be reflected in subsequent configurations, but not just > entering and exiting -nw), and now it's not. Bug #17693 demonstrated that the feature you like had some negative consequences, and in particular that some users did expect -nw to affect how desktop is restored in the -nw invocation. We were unable to find a solution better than the one committed for that bug. Bug #24298 then reported an unintended consequence of the fix for 17693, whereby desktop.el was changed not to restore the frameset, but wasn't told about that, so some portions of the code still acted as if the frameset was restored, and produced annoying behavior as result. The fix was to disable frameset restoration under -nw more thoroughly. > I sort of liked the previous behavior, which was (bugs aside) safer. > But if the new behavior is preferred, I think there's quite a lot of > code from frameset.el that deals with the gui -> tty -> gui trip and > could be excised. > > Opinions? If you can find a way of fixing 17693 without disabling frameset restoration, feel free to do that on master. Given user feedback we have, I think we should not create GUI frames when Emacs is invoked with -nw, though, at least by default. (We could have a user option to countermand that, if you think some users will want that.) As for the trips in frameset.el, I don't think they are entirely redundant, because I'd expect the following sequence of Emacs invocations to re-create the original GUI frames from the 1st invocation: . emacs . emacs -nw . emacs From MAILER-DAEMON Sun Jan 22 11:32:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVL3l-0003Zd-4m for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:32:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47827) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVL3j-0003ZX-6e for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:32:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVL3f-00024j-9j for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:32:03 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42653) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVL3f-00024f-6O; Sun, 22 Jan 2017 11:31:59 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3786 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVL3e-0004nX-6i; Sun, 22 Jan 2017 11:31:58 -0500 Date: Sun, 22 Jan 2017 18:31:54 +0200 Message-Id: <831svv5a4l.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <20170122132727.GA12823@acm> (message from Alan Mackenzie on Sun, 22 Jan 2017 13:27:27 +0000) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <20170122132727.GA12823@acm> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:32:04 -0000 > Date: Sun, 22 Jan 2017 13:27:27 +0000 > From: Alan Mackenzie > Cc: Emacs developers > > To those bugs I would add: > #23630: Emacs 25.0.94.1: desktop-read loads buffers in the wrong order. > #19706: Emacs 25.0.50; (+ nil nil -1) in desktop-restore-frameset When were those last tried? Is it possible that they are fixed on the release branch? FWIW, when I finished working on bug#24298, I no longer saw incorrect order of buffers after restoring the desktop: their order was always the same, as long as I restored from the same desktop file. Maybe you just don't like the order in which desktop.el puts them in the desktop file? From MAILER-DAEMON Sun Jan 22 11:37:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVL8W-0004Qj-Vs for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:37:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48703) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVL8U-0004QO-HW for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:36:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVL8R-0003MD-CB for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:36:58 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42709) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVL8R-0003M9-99; Sun, 22 Jan 2017 11:36:55 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3788 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVL8P-0005Yn-Tu; Sun, 22 Jan 2017 11:36:54 -0500 Date: Sun, 22 Jan 2017 18:36:49 +0200 Message-Id: <83ziij3vby.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov CC: larsi@gnus.org, yuri.v.khan@gmail.com, emacs-devel@gnu.org In-reply-to: (message from Dmitry Gutov on Sun, 22 Jan 2017 18:13:53 +0300) Subject: Re: with-url Reply-to: Eli Zaretskii References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> <87tw8rywxt.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:36:59 -0000 > From: Dmitry Gutov > Date: Sun, 22 Jan 2017 18:13:53 +0300 > Cc: Emacs developers > > > Anyway, it's all rather moot, since this is, of course, an asynchronous > > library function, and you can't really send any Lisp-level signals in > > that context. > > That's why I mentioned threads. With the current implementation of concurrency, threads cannot usefully signal anything: if a thread raises a signal that is not caught, it simply dies. And you cannot catch such a signal from another thread. So your proposal would mean that the thread which runs the async code sets some variable, and the application in the main thread then signals an error based on that variable's value. is that what you had in mind? From MAILER-DAEMON Sun Jan 22 11:39:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLAg-0004wj-1J for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:39:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49348) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLAa-0004wc-RR for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:39:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLAX-00042x-0E for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:39:08 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42741) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLAW-00042t-Sn; Sun, 22 Jan 2017 11:39:04 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3789 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVLAV-0005h2-Jc; Sun, 22 Jan 2017 11:39:04 -0500 Date: Sun, 22 Jan 2017 18:39:00 +0200 Message-Id: <83y3y33v8b.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <87o9yzytre.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 22 Jan 2017 16:55:01 +0100) Subject: Re: with-url Reply-to: Eli Zaretskii References: <87mvffva75.fsf@gnus.org> <8360m2vhze.fsf@gnu.org> <87mvfeg0ck.fsf@gnus.org> <87inq2g046.fsf@gnus.org> <83wpeiu0y5.fsf@gnu.org> <87shocbf9y.fsf@gnus.org> <83lgu45ryc.fsf@gnu.org> <8737gcbchm.fsf@gnus.org> <83inp85pui.fsf@gnu.org> <87o9yzytre.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:39:12 -0000 > From: Lars Ingebrigtsen > Cc: emacs-devel@gnu.org > Date: Sun, 22 Jan 2017 16:55:01 +0100 > > Eli Zaretskii writes: > > > I want to cater to Emacs users and developers as well, and I think > > mime-charset is a good compromise. Once again, we have a > > :mime-charset property of coding systems, so using that terminology > > will I think provide good mnemonic hints both to protocol experts and > > to Emacs developers. > > We also have a couple of handful of variables and function that just say > "charset" when it's in the context of network communications, like > `mail-parse-charset' and `message-posting-charset'. > > I think the likelihood of any Emacs programmer that's interested in > networking libraries being confused by a parameter called :charset is > less than their being confused by a parameter called :mime-charset. > > You come to this from a different angle, and is perhaps not all that > interested in networking protocols? In that case, I understand your > hesitancy, but I... think I'm right. :-) Is there anything I can do to convince you to reconsider? From MAILER-DAEMON Sun Jan 22 11:42:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLE5-0005qi-Kq for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:42:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLE2-0005qR-Mk for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:42:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLDy-0005PF-9m for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:42:42 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42769) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLDy-0005P2-6Q; Sun, 22 Jan 2017 11:42:38 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3797 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVLDx-0005zS-FE; Sun, 22 Jan 2017 11:42:37 -0500 Date: Sun, 22 Jan 2017 18:42:36 +0200 Message-Id: <83wpdn3v2b.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <87inp7ytbg.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 22 Jan 2017 17:04:35 +0100) Subject: Re: with-url Reply-to: Eli Zaretskii References: <87mvffva75.fsf@gnus.org> <87inp7ytbg.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:42:44 -0000 > From: Lars Ingebrigtsen > Date: Sun, 22 Jan 2017 17:04:35 +0100 > > My plan is then to merge this with master in a few weeks (well, not > really a merge, but more of a patch set), and then it'll be in Emacs > 26.1. Please add some documentation before you land this. Thanks. From MAILER-DAEMON Sun Jan 22 11:51:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLMG-00075u-Ep for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:51:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50884) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLME-00075o-Il for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:51:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLM9-0007Cf-Vg for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:51:10 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42810) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLM9-0007Cb-SJ; Sun, 22 Jan 2017 11:51:05 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3803 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVLM8-0006U2-Bd; Sun, 22 Jan 2017 11:51:05 -0500 Date: Sun, 22 Jan 2017 18:50:59 +0200 Message-Id: <83vat73uoc.fsf@gnu.org> From: Eli Zaretskii To: Fabrice Popineau CC: lekktu@gmail.com, ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: (message from Fabrice Popineau on Sat, 21 Jan 2017 21:40:44 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:51:11 -0000 > From: Fabrice Popineau > Date: Sat, 21 Jan 2017 21:40:44 +0100 > Cc: Juanma Barranquero , Óscar Fuentes , > Emacs developers > > Please describe how this would work, without using > dynamic-library-alist. > > But I never said that it would work without using dynamic-library-alist ? Then it seems we are in violent agreement about this. This sub-thread started when I said ImageMagick was not supported on Windows because it could only be linked in statically. You disagreed with that, but now it looks like you actually agree, and posted a patch to add the missing stuff. > + '(magickwand "libMagickWand-7.Q16HDRI-0.dll" "libMagickWand-7.Q16-0.dll") > + '(magickcore "libMagickCore-7.Q16HDRI-0.dll" "libMagickCore-7.Q16-0.dll") Does this mean we will only support ImageMagick 7.x and later on Windows? If so, the configure-time test should be changed, since it currently allows 6.x, I think. > +static bool > +init_imagemagick_functions (void) > +{ > + HMODULE magickwand, magickcore; > + > + if (!(magickcore = w32_delayed_load (Qmagickcore)) > + || !(magickwand = w32_delayed_load (Qmagickwand))) > + return 0; Are these 2 DLLs completely independent? Or will loading one of them automatically load the other, due to dependencies? > @@ -8406,7 +8776,7 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int ino) > PixelWand **source, **dest; > size_t source_width, source_height; > ssize_t source_left, source_top; > - MagickPixelPacket pixel; > + PixelInfo pixel; What is this about? > +#if defined HAVE_NTGUI && !defined CYGWIN A.k.a. "#ifdef WINDOWSNT". Thanks. From MAILER-DAEMON Sun Jan 22 11:55:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLQD-0007x7-V7 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:55:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLQB-0007wr-U5 for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:55:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLQ7-0000PU-1o for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:55:16 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50295) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLQ6-0000OS-SB; Sun, 22 Jan 2017 11:55:10 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVLQ2-00016Q-CJ; Sun, 22 Jan 2017 17:55:08 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: with-url References: <87mvffva75.fsf@gnus.org> <87inp7ytbg.fsf@gnus.org> <83wpdn3v2b.fsf@gnu.org> Date: Sun, 22 Jan 2017 17:55:00 +0100 In-Reply-To: <83wpdn3v2b.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 22 Jan 2017 18:42:36 +0200") Message-ID: <877f5nm3vf.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:55:16 -0000 Eli Zaretskii writes: > Please add some documentation before you land this. Yes, of course. It'll be replete with examples. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 11:56:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLR5-0008Q2-6U for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 11:56:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLR2-0008Op-Sf for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:56:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLQy-0000mC-NO for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:56:09 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:32839) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLQy-0000lQ-Gv for emacs-devel@gnu.org; Sun, 22 Jan 2017 11:56:04 -0500 Received: by mail-qt0-x243.google.com with SMTP id n13so11822979qtc.0 for ; Sun, 22 Jan 2017 08:56:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raeburn-org.20150623.gappssmtp.com; s=20150623; h=subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H5uekUjhTWBJx8CQcbFYaGVmHpgNZu9bqkjpPjZ7ZXU=; b=Ib/aUsjalMZrX5KfbPlB4snvGKB533Z2redp1GWlW61+l3FyTlhqmhXjvExYdnrlos LYYFrFyRqJTlvFIYAMOig2JLVNiRVG5X3MhAONb7hflGVO3kuSPyXj4iHTuKdBJ2Xc8U 2iHgfZEOkRzLnrm5LeDRJH0P8BvwtxVrJqzRzjwtj7ibFx56kuAmuj87JADNb1uHOMHl RpT88y7rO1nqwQW4oDkDrxL1F9LmTzoaPfgB0Si3XTHEVl9DxL78+cbRMHTn2tAhoSwp GRkUec7E1jKPKHaLm+f8WryvBSCFLLZKyrxarWbUPUr0fpKk1+RKsnngruGwSDqKlPGQ uQ8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:mime-version:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H5uekUjhTWBJx8CQcbFYaGVmHpgNZu9bqkjpPjZ7ZXU=; b=IfOS2rie2cFnlbWgkLk5fV925kEEwwZ6RnALAXHEcp7IOmwWqCVWwykqeuRgcKKSKD lO7geoZbfAn2kKcYxB931pmd/iT59JX7RAiz287ep/cmbnB4TQ4wnJf76yU6vDfx1Gyw dJjBU9/3XdGQafXdADM+pIaU15+okf6iOT9M8SllhdSIc2P8q73ORc1wMHkH5lLMBQPW PZN49rcQ+UiD9kZwEqbKnWIh/7cxA4ls0H6xdEpm53mCJss7NSF0NcTR953l7liaZM6q xI9kgu0zdBC2iBwu6diVEe3KsiIGxFYq7ByCNMTSRIFBjC7ko6uc3qQuL5YSGNXvxIAM nwZQ== X-Gm-Message-State: AIkVDXJCCrWayRUxhadP3eq8CeEPx05wAYDcfiUlYFB+owLd3LdFHE+abuluY9DVeZM7MA== X-Received: by 10.55.204.25 with SMTP id r25mr22542250qki.213.1485104162138; Sun, 22 Jan 2017 08:56:02 -0800 (PST) Received: from [192.168.23.52] (c-50-138-183-136.hsd1.ma.comcast.net. [50.138.183.136]) by smtp.gmail.com with ESMTPSA id i1sm11227436qte.32.2017.01.22.08.56.01 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 22 Jan 2017 08:56:01 -0800 (PST) Subject: Re: Skipping unexec via a big .elc file Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Ken Raeburn In-Reply-To: Date: Sun, 22 Jan 2017 11:55:59 -0500 Cc: Andreas Schwab , Stefan Monnier , Emacs developers Content-Transfer-Encoding: quoted-printable Message-Id: <10BBB02A-487F-4491-8F11-9D51BA270FCC@raeburn.org> References: <8360ojpndr.fsf@gnu.org> <83shrnm0k1.fsf@gnu.org> <075B0922-F07A-4FBA-AE71-027E964A5ED4@raeburn.org> <54AAC13A-CF56-4393-A932-DC6CBBF51259@raeburn.org> <3CC6BB36-1794-4202-8243-132E0345B236@raeburn.org> <52BDCC33-546C-4F47-A230-00EBC813B038@raeburn.org> <15CF14CC-C7DE-44BA-AC7D-F0BF1F160979@raeburn.org> <9463F91F-DB82-48E1-BE01-1E2BC8DA0766@raeburn.org> <831swxzbw8.fsf@gnu.org> <83y3z2wphb.fsf@gnu.org> <83tw9bb42m.fsf@gnu.org> <349ED8B9-C34B-495B-9FB5-E72CE6EFCA38@raeburn.org> <87inpni6xa.fsf@linux-m68k.org> <8360lmesso.fsf@gnu.org> <3B044D64-7C94-42D7-BE1B-7A9CA76C5A67@raeburn.org> <83k29xc49v.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3124) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 16:56:09 -0000 On Jan 21, 2017, at 02:58, Ken Raeburn wrote: > I built a couple versions, and found several .elc files different. = The first case I looked at was macroexp--const-symbol-p in macroexp.elc. = =46rom disassembling, it appears that the expression =E2=80=9C(boundp = 'byte-compile-const-variables)=E2=80=9D is optimized out in the build = from the branch point, but not in the build including the dumped.elc = changes. I=E2=80=99m not sure why yet, but it=E2=80=99s almost = certainly a bug that they=E2=80=99re different. And a bug affecting the = emacs-lisp environment and/or the byte compiler output could certainly = cause later attempts at byte compilation (using newly byte-compiled = code) to misbehave. Ah, this may be a false alarm. I=E2=80=99d overlooked the fact that the = updated version (October 31) of Stefan=E2=80=99s patch changed that code = to insert that expression on the branch, and I assumed the two were = compiling the same source. But if byte-compile-const-variables can be = seen as unbound, that could also alter the optimization results compared = to the master branch. Perhaps that should be fixed, if possible. Ken= From MAILER-DAEMON Sun Jan 22 12:10:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLec-0005Is-0h for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:10:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLeV-0005DQ-SG for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:10:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLeR-0005ZF-NQ for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:10:03 -0500 Received: from [195.159.176.226] (port=36741 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLeR-0005Yu-GU for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:09:59 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cVLeH-0007eT-8P for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:09:49 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Lars Ingebrigtsen Subject: Missing sentinel events Date: Sun, 22 Jan 2017 18:09:40 +0100 Organization: Programmerer Ingebrigtsen Lines: 74 Message-ID: <8737gbm36z.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Mail-Copies-To: never Cancel-Lock: sha1:xf97y9cKdadxHd5MEzv2IWqNcRI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:10:08 -0000 While looking at all the failure modes, we seem to be lacking a few during async connection. The manual says that sentinels get codes like: ----- The string describing the event looks like one of the following: "finished\n". "deleted\n". "exited abnormally with code exitcode (core dumped)\n". The “core dumped” part is optional, and only appears if the process dumped core. "failed with code fail-code\n". [many more removed here] --- But this is the code from process.c: else if (p->outfd < 0) { /* The counterparty may have closed the connection (especially if the NSM prompt above take a long time), so recheck the file descriptor here. */ pset_status (p, Qfailed); deactivate_process (proc); } else if ((fd_callback_info[p->outfd].flags & NON_BLOCKING_CONNECT_FD) == 0) { /* If we cleared the connection wait mask before we did the TLS setup, then we have to say that the process is finally "open" here. */ pset_status (p, Qrun); /* Execute the sentinel here. If we had relied on status_notify to do it later, it will read input from the process before calling the sentinel. */ exec_sentinel (proc, build_string ("open\n")); } I suspect that I just forgot to put those calls to exec_sentinel into the "fail" bits here and other places in the code when I rewrote these parts last February, like this: /* The DNS lookup failed. */ else if (connecting_status (p->status)) { deactivate_process (proc); pset_status (p, (list2 (Qfailed, concat3 (build_string ("Name lookup of "), build_string (p->dns_request->ar_name), build_string (" failed"))))); } Doesn't it seem like these should be calling the sentinel, too? I think so, but there's a slight chance that adding more sentinel calls will break some user-level code that's not expecting to see any new messages... And the manual says "looks like one of the following", and people may have interpreted that as an exhaustive list of event strings. Any thoughts? It's incomplete as it is now, so we should definitely add more sentinel calls, but should they all look like "failed with code fail-code\n" or should they be... more meaningful? I think perhaps I should just add "more meaningful" sentinel messages, and if it turns out to be a problem in real life, we can change them all to "failed with code" messages... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 12:13:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLi8-0006AX-GS for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:13:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLi6-0006AP-7m for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:13:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLi2-0006Vu-4b for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:13:46 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50516) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLi1-0006Vg-Tt for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:13:42 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVLhx-0000ex-LH for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:13:39 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: Missing sentinel events References: <8737gbm36z.fsf@gnus.org> Date: Sun, 22 Jan 2017 18:13:31 +0100 In-Reply-To: <8737gbm36z.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sun, 22 Jan 2017 18:09:40 +0100") Message-ID: <87y3y3kog4.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:13:47 -0000 Hm... There's a mechanism to send out all process statuses to sentinels? /* Get the text to use for the message. */ if (p->raw_status_new) update_status (p); msg = status_message (p); [...] /* The actions above may have further incremented p->tick. So set p->update_tick again so that an error in the sentinel will not cause this code to be run again. */ p->update_tick = p->tick; /* Now output the message suitably. */ exec_sentinel (proc, msg); So... the code in question should really just be doing p->tick = ++process_tick; ? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 12:16:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLlB-0007ds-Tl for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:16:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLl9-0007b9-5v for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:16:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLl5-0007lY-3K for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:16:55 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50532) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLl4-0007l8-Sq for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:16:51 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVLl2-0003f8-4P for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:16:50 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: Missing sentinel events References: <8737gbm36z.fsf@gnus.org> Date: Sun, 22 Jan 2017 18:16:42 +0100 In-Reply-To: <8737gbm36z.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sun, 22 Jan 2017 18:09:40 +0100") Message-ID: <87tw8rkoat.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:16:56 -0000 If I just put a tick++ here and there, my sentinel now gets: failed with code Name lookup of laars.ingebrigtsen.no failed Is that... OK? :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 12:28:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVLwB-0001ut-0z for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:28:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVLw8-0001ul-Vf for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:28:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVLw5-0002TR-RA for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:28:16 -0500 Received: from [195.159.176.226] (port=49095 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVLw5-0002TJ-KT for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:28:13 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cVLvy-0002Dc-8Q for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:28:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Lars Ingebrigtsen Subject: http/2 Date: Sun, 22 Jan 2017 18:27:48 +0100 Organization: Programmerer Ingebrigtsen Lines: 12 Message-ID: <878tq3qa23.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Mail-Copies-To: never Cancel-Lock: sha1:p3cvc+LdrE4fAUIdEH8uImjLkeg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:28:17 -0000 I googled around a bit to see whether anybody's implemented http/2 for Emacs. I guess there's no immediate need, really, but eventually web servers are going to switch to http/2-only, I guess. Has anybody looked into implementing it? The spec is horrible and unwieldy, so I can imagine people just backing away from it in horror, but... It's a challenge! -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 12:38:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVM5u-0003N3-QT for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:38:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVM5s-0003Ma-0i for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:38:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVM5o-0005ri-UL for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:38:20 -0500 Received: from [195.159.176.226] (port=42447 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVM5o-0005rS-Nl for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:38:16 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cVM5a-00089I-KA for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:38:02 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: http/2 Date: Sun, 22 Jan 2017 12:37:59 -0500 Lines: 9 Message-ID: References: <878tq3qa23.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) Cancel-Lock: sha1:NGzphYNeAYh8uZun3kSOoFGJBV8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:38:21 -0000 > Has anybody looked into implementing it? The spec is horrible and > unwieldy, so I can imagine people just backing away from it in horror, > but... It's a challenge! I think in the context of Emacs, "implementing" it, will mean "provide bindings to a libhttp2 library". Ideally as a dynlink module. Stefan From MAILER-DAEMON Sun Jan 22 12:43:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMAb-0004Gx-2p for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:43:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMAX-0004Ge-J1 for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:43:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMAT-0007EB-3J for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:43:09 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43422) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMAS-0007E6-W9; Sun, 22 Jan 2017 12:43:05 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3911 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVMAR-0004lQ-Kw; Sun, 22 Jan 2017 12:43:04 -0500 Date: Sun, 22 Jan 2017 19:42:58 +0200 Message-Id: <83tw8r3s9p.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <8737gbm36z.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 22 Jan 2017 18:09:40 +0100) Subject: Re: Missing sentinel events Reply-to: Eli Zaretskii References: <8737gbm36z.fsf@gnus.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:43:11 -0000 > From: Lars Ingebrigtsen > Date: Sun, 22 Jan 2017 18:09:40 +0100 > > The manual says that sentinels get codes like: > > ----- > The string describing the event looks like one of the following: > > "finished\n". > "deleted\n". > "exited abnormally with code exitcode (core dumped)\n". The “core > dumped” part is optional, and only appears if the process dumped > core. > "failed with code fail-code\n". > [many more removed here] > --- > > But this is the code from process.c: > > else if (p->outfd < 0) > { > /* The counterparty may have closed the connection (especially > if the NSM prompt above take a long time), so recheck the file > descriptor here. */ > pset_status (p, Qfailed); > deactivate_process (proc); > } > else if ((fd_callback_info[p->outfd].flags & NON_BLOCKING_CONNECT_FD) == 0) > { > /* If we cleared the connection wait mask before we did the TLS > setup, then we have to say that the process is finally "open" > here. */ > pset_status (p, Qrun); > /* Execute the sentinel here. If we had relied on status_notify > to do it later, it will read input from the process before > calling the sentinel. */ > exec_sentinel (proc, build_string ("open\n")); > } > > I suspect that I just forgot to put those calls to exec_sentinel into > the "fail" bits here and other places in the code when I rewrote these > parts last February, like this: > > /* The DNS lookup failed. */ > else if (connecting_status (p->status)) > { > deactivate_process (proc); > pset_status (p, (list2 > (Qfailed, > concat3 (build_string ("Name lookup of "), > build_string (p->dns_request->ar_name), > build_string (" failed"))))); > } > > Doesn't it seem like these should be calling the sentinel, too? I think > so, but there's a slight chance that adding more sentinel calls will > break some user-level code that's not expecting to see any new > messages... > > And the manual says "looks like one of the following", and people may > have interpreted that as an exhaustive list of event strings. The list is exhaustive, so that interpretation is correct. You are looking at the error symbol that is put into the process status, but that's not what the sentinel will see. It will see what status_message will produce given the symbol. So you really must look at status_message and the strings it produces to see whether the list in the manual is exhaustive or not. > Any thoughts? It's incomplete as it is now, so we should definitely add > more sentinel calls, but should they all look like "failed with code > fail-code\n" or should they be... more meaningful? What more meaningful messages did you have in mind? It's hard to reason in the abstract. From MAILER-DAEMON Sun Jan 22 12:51:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMIR-0005Ej-8T for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:51:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMIL-0005EZ-O0 for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:51:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMII-0000cv-1Q for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:51:13 -0500 Received: from smtp145.ord.emailsrvr.com ([173.203.6.145]:53155) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVMIH-0000cN-TW for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:51:09 -0500 Received: from smtp15.relay.ord1a.emailsrvr.com (localhost [127.0.0.1]) by smtp15.relay.ord1a.emailsrvr.com (SMTP Server) with ESMTP id 1B7FEC0133; Sun, 22 Jan 2017 12:51:04 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp15.relay.ord1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id 6E991C0128; Sun, 22 Jan 2017 12:51:03 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Sun, 22 Jan 2017 12:51:04 -0500 From: Stephen Leake To: Juanma Barranquero Cc: Eli Zaretskii , =?utf-8?Q?=C3=93scar?= Fuentes , Emacs developers Subject: Re: 64-bit build on Windows References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> Date: Sun, 22 Jan 2017 11:50:59 -0600 In-Reply-To: (Juanma Barranquero's message of "Sat, 21 Jan 2017 22:18:13 +0100") Message-ID: <86shob6l18.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 173.203.6.145 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:51:18 -0000 Juanma Barranquero writes: > On Sat, Jan 21, 2017 at 7:57 PM, Juanma Barranquero > wrote: > >> - PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ >> ./configure --prefix=/c/emacs/emacs-25 --without-imagemagick > > ./configure --prefix=/c/emacs/emacs-25 > > I meant, of course. I'm a mingw64bit user. It's been a while since I installed msys/mingw64, so I may be out of date. I have no imagemagick installed in msys2, so it was (is?) not installed by default (I'd be surprised if it is). I suggest nt/INSTALL.w64 include instructions for installing Imagemagick, and any other optional packages that can be installed from msys2 at this time. And also a list of optional packages that must be gotten elsewhere. That way users following all the instructions get as complete an Emacs as possible, and users wanting a smaller install can leave things out. Currently, the list of packages to get from pacman lists some optional packages, but not all, so the statement "you now have a complete build environment for emacs" is misleading. At the very least, there should somewhere be a _complete_ list of optional packages; INSTALL.w64 could reference that list, rather than repeat it. One more point; under "run configure", it says installing Emacs to the default "C:\msys64" is "not recommended". Why not? If it's because there is an msys package that installs Emacs there, say so. People need information to make informed choices. -- -- Stephe From MAILER-DAEMON Sun Jan 22 12:54:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVML3-00066t-9R for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 12:54:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33283) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVML1-00066m-SH for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:54:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMKy-0001tc-PI for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:53:59 -0500 Received: from [195.159.176.226] (port=49137 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVMKy-0001sm-IO for emacs-devel@gnu.org; Sun, 22 Jan 2017 12:53:56 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cVMKg-00077W-SO for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:53:38 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Missing sentinel events Date: Sun, 22 Jan 2017 12:52:58 -0500 Lines: 10 Message-ID: References: <8737gbm36z.fsf@gnus.org> <87tw8rkoat.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:Sxn07IQhBKbH6FjiWkzxa7YWT3U= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 17:54:00 -0000 > If I just put a tick++ here and there, my sentinel now gets: > failed with code Name lookup of laars.ingebrigtsen.no failed > Is that... OK? :-) I think that's right, yes. The "the event looks like one of the following" wording already implies the list is not exhaustive (and indeed, I don't think it is), so it's perfectly OK to add more cases. Stefan From MAILER-DAEMON Sun Jan 22 13:00:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMRO-0007EY-Do for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:00:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34341) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMRL-0007E6-85 for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:00:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMRI-0003i0-6c for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:00:31 -0500 Received: from ocolin.muc.de ([193.149.48.4]:35360 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cVMRI-0003h7-0K for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:00:28 -0500 Received: (qmail 6269 invoked by uid 3782); 22 Jan 2017 18:00:26 -0000 Received: from acm.muc.de (p4FC46969.dip0.t-ipconnect.de [79.196.105.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Jan 2017 19:00:25 +0100 Received: (qmail 14648 invoked by uid 1000); 22 Jan 2017 18:00:10 -0000 Date: Sun, 22 Jan 2017 18:00:10 +0000 To: Eli Zaretskii Cc: lekktu@gmail.com, emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets Message-ID: <20170122180010.GB12823@acm> References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <831svv5a4l.fsf@gnu.org> User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:00:33 -0000 Hello, Eli. On Sun, Jan 22, 2017 at 18:31:54 +0200, Eli Zaretskii wrote: > > Date: Sun, 22 Jan 2017 13:27:27 +0000 > > From: Alan Mackenzie > > Cc: Emacs developers > > To those bugs I would add: > > #23630: Emacs 25.0.94.1: desktop-read loads buffers in the wrong order. > > #19706: Emacs 25.0.50; (+ nil nil -1) in desktop-restore-frameset > When were those last tried? Is it possible that they are fixed on the > release branch? #19706 had a workaround applied to it, I think. (I think I did this myself) #23630 is not fixed. I've just tried it..... > FWIW, when I finished working on bug#24298, I no longer saw incorrect > order of buffers after restoring the desktop: their order was always > the same, as long as I restored from the same desktop file. Maybe you > just don't like the order in which desktop.el puts them in the desktop > file? ... on master. I had four frames open, cycled through them, then did C-x C-c, creating the desktop file and exiting. I restarted Emacs, which created the four frames, and then did C-x C-b. The second entry there was *scratch*. This was not any of the four buffers which were in the frames' windows when I previously shut down. Other than that, the order of the buffers in C-x C-b is the reverse of the order in my desktop file. This was in GNU, X-Windows, with desktop-restore-frames set to t, using version 208 (i.e. Emacs >= 25) of the desktop file format. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 22 13:07:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMYI-0008LI-5g for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:07:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35207) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMYF-0008L5-6C for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:07:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMYA-0005CW-8e for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:07:39 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43610) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMYA-0005CH-4h; Sun, 22 Jan 2017 13:07:34 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3923 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVMY8-0002sk-RX; Sun, 22 Jan 2017 13:07:33 -0500 Date: Sun, 22 Jan 2017 20:07:25 +0200 Message-Id: <83r33v3r4y.fsf@gnu.org> From: Eli Zaretskii To: Stephen Leake CC: lekktu@gmail.com, ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: <86shob6l18.fsf@stephe-leake.org> (message from Stephen Leake on Sun, 22 Jan 2017 11:50:59 -0600) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <86shob6l18.fsf@stephe-leake.org> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:07:40 -0000 > From: Stephen Leake > Date: Sun, 22 Jan 2017 11:50:59 -0600 > Cc: scar Fuentes , > Eli Zaretskii , Emacs developers > > I suggest nt/INSTALL.w64 include instructions for installing Imagemagick, > and any other optional packages that can be installed from msys2 at this > time. And also a list of optional packages that must be gotten > elsewhere. It already does: ** Download and install the necessary packages Run msys2_shell.bat in your MSYS2 directory and you will see a BASH window opened. In the BASH prompt, use the following command to install the necessary packages (you can copy and paste it into the shell with Shift + Insert): pacman -S base-devel \ mingw-w64-x86_64-toolchain \ mingw-w64-x86_64-xpm-nox \ mingw-w64-x86_64-libtiff \ mingw-w64-x86_64-giflib \ mingw-w64-x86_64-libpng \ mingw-w64-x86_64-libjpeg-turbo \ mingw-w64-x86_64-librsvg \ mingw-w64-x86_64-libxml2 \ mingw-w64-x86_64-gnutls \ mingw-w64-x86_64-zlib The packages include the base developer tools (autoconf, automake, grep, make, etc.), the compiler toolchain (gcc, gdb, etc.), several image libraries, an XML library, the GnuTLS (transport layer security) library, and zlib for decompressing text. Only the first three packages are required (base-devel, toolchain, xpm-nox); the rest are optional. You can select only part of the libraries if you don't need them all. ImageMagick is not listed because the Windows build doesn't support it yet. All the other packages are (or should be) listed; if you think something is missing, or the text below the list is unclear about what's optional, please point out what should be added/removed/modified. > Currently, the list of packages to get from pacman lists some optional > packages, but not all, so the statement "you now have a complete build > environment for emacs" is misleading. It is not meant to be misleading, it is meant to list everything. And I think it does. > At the very least, there should somewhere be a _complete_ list of > optional packages; INSTALL.w64 could reference that list, rather than > repeat it. The above is that complete list. > One more point; under "run configure", it says installing Emacs to the > default "C:\msys64" is "not recommended". Why not? I don't know. I suggest to ask the author. From MAILER-DAEMON Sun Jan 22 13:08:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMYq-0000Da-0C for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:08:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMYk-0000B5-RR for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:08:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMYf-0005Qc-Vc for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:08:10 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50849) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVMYf-0005P3-P5 for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:08:05 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVMYY-0003S3-Sm; Sun, 22 Jan 2017 19:08:01 +0100 From: Lars Ingebrigtsen To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: http/2 References: <878tq3qa23.fsf@gnus.org> Date: Sun, 22 Jan 2017 19:07:52 +0100 In-Reply-To: (Stefan Monnier's message of "Sun, 22 Jan 2017 12:37:59 -0500") Message-ID: <874m0rq87b.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:08:14 -0000 Stefan Monnier writes: > I think in the context of Emacs, "implementing" it, will mean "provide > bindings to a libhttp2 library". Ideally as a dynlink module. I think it would be feasible to implement in Emacs Lisp for somebody who finds binary twiddling in Emacs amusing. (I can't imagine who.) Or is there anything in particular that makes that... unlikely? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 13:09:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMZc-0000iG-8U for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:09:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35775) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMZX-0000fn-CF for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:09:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMZU-0005rT-L5 for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:08:59 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43634) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMZU-0005rN-I9; Sun, 22 Jan 2017 13:08:56 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3924 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVMZT-0002zy-FA; Sun, 22 Jan 2017 13:08:56 -0500 Date: Sun, 22 Jan 2017 20:08:51 +0200 Message-Id: <83pojf3r2k.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sun, 22 Jan 2017 12:52:58 -0500) Subject: Re: Missing sentinel events Reply-to: Eli Zaretskii References: <8737gbm36z.fsf@gnus.org> <87tw8rkoat.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:09:03 -0000 > From: Stefan Monnier > Date: Sun, 22 Jan 2017 12:52:58 -0500 > > The "the event looks like one of the following" wording already > implies the list is not exhaustive (and indeed, I don't think it is) It's supposed to be exhaustive. It was when I wrote that. If you find a string that isn't in the list, please add it to the list. From MAILER-DAEMON Sun Jan 22 13:14:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMed-0002Le-BA for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:14:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36822) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMeb-0002LL-S9 for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:14:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMeX-0007Sj-Cr for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:14:13 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43737) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMeX-0007Sf-9Y; Sun, 22 Jan 2017 13:14:09 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3927 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVMeV-0003ip-NR; Sun, 22 Jan 2017 13:14:08 -0500 Date: Sun, 22 Jan 2017 20:14:03 +0200 Message-Id: <83o9yz3qtw.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <20170122180010.GB12823@acm> (message from Alan Mackenzie on Sun, 22 Jan 2017 18:00:10 +0000) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:14:14 -0000 > Date: Sun, 22 Jan 2017 18:00:10 +0000 > Cc: lekktu@gmail.com, emacs-devel@gnu.org > From: Alan Mackenzie > > #23630 is not fixed. I've just tried it..... > > > FWIW, when I finished working on bug#24298, I no longer saw incorrect > > order of buffers after restoring the desktop: their order was always > > the same, as long as I restored from the same desktop file. Maybe you > > just don't like the order in which desktop.el puts them in the desktop > > file? > > ... on master. I had four frames open, cycled through them, then did > C-x C-c, creating the desktop file and exiting. > > I restarted Emacs, which created the four frames, and then did C-x C-b. > The second entry there was *scratch*. This was not any of the four > buffers which were in the frames' windows when I previously shut down. ??? The *scratch* buffer is created in any Emacs session regardless of the saved desktop. So why isn't the above TRT? When did Emacs and desktop.el behave differently? > Other than that, the order of the buffers in C-x C-b is the reverse of > the order in my desktop file. Why is that a problem? The order of buffers in the desktop file is not something a user is supposed to look at, or care about. From MAILER-DAEMON Sun Jan 22 13:22:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVMmi-000438-6j for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:22:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVMmf-00042o-Hb for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:22:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVMmb-0001HN-Iu for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:22:33 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:50931) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVMmb-0001G0-Cg; Sun, 22 Jan 2017 13:22:29 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVMmX-0004rJ-61; Sun, 22 Jan 2017 19:22:27 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: Stefan Monnier , emacs-devel@gnu.org Subject: Re: Missing sentinel events References: <8737gbm36z.fsf@gnus.org> <87tw8rkoat.fsf@gnus.org> <83pojf3r2k.fsf@gnu.org> Date: Sun, 22 Jan 2017 19:22:19 +0100 In-Reply-To: <83pojf3r2k.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 22 Jan 2017 20:08:51 +0200") Message-ID: <87ziijosys.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:22:35 -0000 Eli Zaretskii writes: >> From: Stefan Monnier >> Date: Sun, 22 Jan 2017 12:52:58 -0500 >> >> The "the event looks like one of the following" wording already >> implies the list is not exhaustive (and indeed, I don't think it is) > > It's supposed to be exhaustive. It was when I wrote that. If you > find a string that isn't in the list, please add it to the list. But do you think "failed with code Name lookup of laars.ingebrigtsen.no failed" message fits the "failed with code codename" template sufficiently? (The two "failed" bits is probably something that should be tweaked.) If not, do you have a suggestion as to a better sentiel code message? I like that it's so explicit: It really says what the problem was... The other messages that may appear now are: failed with code The Network Security Manager stopped the connections failed with code TLS negotiation failed And... I think that's... it? Probably. If I skim the code correctly, these are the only three newly added error conditions, and that aren't currently triggering the sentinel. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 13:43:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVN6T-0007fg-0t for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:43:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40454) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVN6O-0007ec-5w for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:42:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVN6K-0006kN-LT for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:42:56 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43930) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVN6K-0006kJ-Ht; Sun, 22 Jan 2017 13:42:52 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3934 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVN6J-0001sg-7g; Sun, 22 Jan 2017 13:42:52 -0500 Date: Sun, 22 Jan 2017 20:42:46 +0200 Message-Id: <83mvej3pi1.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <87ziijosys.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 22 Jan 2017 19:22:19 +0100) Subject: Re: Missing sentinel events Reply-to: Eli Zaretskii References: <8737gbm36z.fsf@gnus.org> <87tw8rkoat.fsf@gnus.org> <83pojf3r2k.fsf@gnu.org> <87ziijosys.fsf@gnus.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:42:59 -0000 > From: Lars Ingebrigtsen > Cc: Stefan Monnier , emacs-devel@gnu.org > Date: Sun, 22 Jan 2017 19:22:19 +0100 > > But do you think "failed with code Name lookup of laars.ingebrigtsen.no > failed" message fits the "failed with code codename" template > sufficiently? Yes, I think so. > (The two "failed" bits is probably something that should be > tweaked.) That's something for the sentinel to worry about. Emacs core should only prepare the data. > The other messages that may appear now are: > > failed with code The Network Security Manager stopped the connections > failed with code TLS negotiation failed They still match the "failed with code SOMETHING" form. > And... I think that's... it? Probably. So the list is still exhaustive. From MAILER-DAEMON Sun Jan 22 13:56:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVNJ2-0000sT-Ct for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 13:56:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVNIz-0000r6-Sy for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:55:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVNIw-00022j-SX for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:55:58 -0500 Received: from ocolin.muc.de ([193.149.48.4]:49609 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cVNIw-00022W-I1 for emacs-devel@gnu.org; Sun, 22 Jan 2017 13:55:54 -0500 Received: (qmail 20057 invoked by uid 3782); 22 Jan 2017 18:55:53 -0000 Received: from acm.muc.de (p4FC46969.dip0.t-ipconnect.de [79.196.105.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Jan 2017 19:55:52 +0100 Received: (qmail 18526 invoked by uid 1000); 22 Jan 2017 18:55:37 -0000 Date: Sun, 22 Jan 2017 18:55:37 +0000 To: Eli Zaretskii Cc: lekktu@gmail.com, emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets Message-ID: <20170122185537.GC12823@acm> References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83o9yz3qtw.fsf@gnu.org> User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 18:55:59 -0000 Hello, Eli. On Sun, Jan 22, 2017 at 20:14:03 +0200, Eli Zaretskii wrote: > > Date: Sun, 22 Jan 2017 18:00:10 +0000 > > Cc: lekktu@gmail.com, emacs-devel@gnu.org > > From: Alan Mackenzie > > #23630 is not fixed. I've just tried it..... > > > FWIW, when I finished working on bug#24298, I no longer saw incorrect > > > order of buffers after restoring the desktop: their order was always > > > the same, as long as I restored from the same desktop file. Maybe you > > > just don't like the order in which desktop.el puts them in the desktop > > > file? > > ... on master. I had four frames open, cycled through them, then did > > C-x C-c, creating the desktop file and exiting. > > I restarted Emacs, which created the four frames, and then did C-x C-b. > > The second entry there was *scratch*. This was not any of the four > > buffers which were in the frames' windows when I previously shut down. > ??? The *scratch* buffer is created in any Emacs session regardless of > the saved desktop. So why isn't the above TRT? When did Emacs and > desktop.el behave differently? In All Emacsen up to Emacs 25, *scratch is right at the bottom of the buffer list, where it won't get in the way. > > Other than that, the order of the buffers in C-x C-b is the reverse of > > the order in my desktop file. > Why is that a problem? The order of buffers in the desktop file is > not something a user is supposed to look at, or care about. I care a great deal about it. I have set up keys to in the global key map to mean "switch to frame Fn". Thus, rather than just being an arbitrary GUI window, each frame is associated with a particular function key. I even have "Fn" in the mode line to see which frame I'm in. Usually when I close an Emacs session, I quickly type , , ...., to order the buffers in my .emacs.desktop. When I start Emacs (in a Linux tty, usually, with desktop-restore-frames nil) I do, repeatedly, C-x 5 b to set up the same buffers in the "same" frames. For this, I need the buffers to be loaded in the right order, WITHOUT *scratch* as an interloper. At the moment, this isn't happening in master in some circumstances. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 22 14:11:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVNXp-0002pa-VI for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 14:11:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43591) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVNXl-0002pR-Vn for emacs-devel@gnu.org; Sun, 22 Jan 2017 14:11:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVNXh-0007PW-B2 for emacs-devel@gnu.org; Sun, 22 Jan 2017 14:11:13 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44093) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVNXh-0007PS-7U; Sun, 22 Jan 2017 14:11:09 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4005 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVNXf-0008R2-VB; Sun, 22 Jan 2017 14:11:08 -0500 Date: Sun, 22 Jan 2017 21:11:03 +0200 Message-Id: <83k29m52rc.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <20170122185537.GC12823@acm> (message from Alan Mackenzie on Sun, 22 Jan 2017 18:55:37 +0000) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 19:11:17 -0000 > Date: Sun, 22 Jan 2017 18:55:37 +0000 > Cc: lekktu@gmail.com, emacs-devel@gnu.org > From: Alan Mackenzie > > > > the order in my desktop file. > > > Why is that a problem? The order of buffers in the desktop file is > > not something a user is supposed to look at, or care about. > > I care a great deal about it. I have set up keys to in the > global key map to mean "switch to frame Fn". Thus, rather than just > being an arbitrary GUI window, each frame is associated with a particular > function key. I even have "Fn" in the mode line to see which frame I'm > in. > > Usually when I close an Emacs session, I quickly type , , ...., > to order the buffers in my .emacs.desktop. When I start Emacs (in a > Linux tty, usually, with desktop-restore-frames nil) I do, repeatedly, > C-x 5 b to set up the same buffers in the "same" frames. For this, > I need the buffers to be loaded in the right order, WITHOUT *scratch* as > an interloper. At the moment, this isn't happening in master in some > circumstances. I don't really understand the need for this. I always have several frames in my sessions, each one with its buffer, and when I restore the sessions, each frame comes up with the same buffer it had when I shut down Emacs, no complicated frame-walking dance necessary, neither before shutting down Emacs nor after restarting it. Maybe this stuff you do is the culprit? From MAILER-DAEMON Sun Jan 22 14:39:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVNym-0007CO-2X for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 14:39:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVNyi-0007CF-TC for emacs-devel@gnu.org; Sun, 22 Jan 2017 14:39:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVNyd-0006pM-VV for emacs-devel@gnu.org; Sun, 22 Jan 2017 14:39:04 -0500 Received: from ocolin.muc.de ([193.149.48.4]:41788 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cVNyd-0006oD-Kx for emacs-devel@gnu.org; Sun, 22 Jan 2017 14:38:59 -0500 Received: (qmail 37901 invoked by uid 3782); 22 Jan 2017 19:38:57 -0000 Received: from acm.muc.de (p4FC46969.dip0.t-ipconnect.de [79.196.105.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Jan 2017 20:38:56 +0100 Received: (qmail 18738 invoked by uid 1000); 22 Jan 2017 19:38:41 -0000 Date: Sun, 22 Jan 2017 19:38:41 +0000 To: Eli Zaretskii Cc: lekktu@gmail.com, emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets Message-ID: <20170122193841.GD12823@acm> References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> <83k29m52rc.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83k29m52rc.fsf@gnu.org> User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 19:39:06 -0000 Hello, Eli. On Sun, Jan 22, 2017 at 21:11:03 +0200, Eli Zaretskii wrote: > > Date: Sun, 22 Jan 2017 18:55:37 +0000 > > Cc: lekktu@gmail.com, emacs-devel@gnu.org > > From: Alan Mackenzie > > > > the order in my desktop file. > > > Why is that a problem? The order of buffers in the desktop file is > > > not something a user is supposed to look at, or care about. > > I care a great deal about it. I have set up keys to in the > > global key map to mean "switch to frame Fn". Thus, rather than just > > being an arbitrary GUI window, each frame is associated with a particular > > function key. I even have "Fn" in the mode line to see which frame I'm > > in. > > Usually when I close an Emacs session, I quickly type , , ...., > > to order the buffers in my .emacs.desktop. When I start Emacs (in a > > Linux tty, usually, with desktop-restore-frames nil) I do, repeatedly, > > C-x 5 b to set up the same buffers in the "same" frames. For this, > > I need the buffers to be loaded in the right order, WITHOUT *scratch* as > > an interloper. At the moment, this isn't happening in master in some > > circumstances. > I don't really understand the need for this. I need to be able to switch quickly between (specific) frames using the keyboard. And by quickly I mean QUICKLY. There's no method faster than with a single key press. It's just the way I work. > I always have several frames in my sessions, each one with its buffer, > and when I restore the sessions, each frame comes up with the same > buffer it had when I shut down Emacs, no complicated frame-walking > dance necessary, neither before shutting down Emacs nor after > restarting it. Something similar happens when I use the defaults. But the buffers come up in the "wrong" frames (i.e. associated with a different key), making it not useful for me. Anyhow, I've had this use of for 15 years now, and 15 years ago there was nothing like frames in the desktop file. > Maybe this stuff you do is the culprit? I don't really think so. It's been working for a decade and a half. I think it more likely that Juanma didn't see any need to preserve the association of particular frames with particular buffers when extending desktop to handle frames. Indeed the notion of "particular frames" is, so far, probably idiosyncratic to me, rather than to Emacs. But it would be nice if desktop could preserve the ordering of the frames and buffers, too. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 22 15:04:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVON2-00031t-32 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 15:04:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48661) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVOMx-00031k-VT for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:04:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVOMu-0006VO-1L for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:04:07 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44385) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVOMt-0006VK-Uj; Sun, 22 Jan 2017 15:04:03 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4032 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVOMs-00034p-MZ; Sun, 22 Jan 2017 15:04:03 -0500 Date: Sun, 22 Jan 2017 22:03:57 +0200 Message-Id: <83inp650b6.fsf@gnu.org> From: Eli Zaretskii To: Alan Mackenzie CC: lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <20170122193841.GD12823@acm> (message from Alan Mackenzie on Sun, 22 Jan 2017 19:38:41 +0000) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> <83k29m52rc.fsf@gnu.org> <20170122193841.GD12823@acm> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 20:04:10 -0000 > Date: Sun, 22 Jan 2017 19:38:41 +0000 > Cc: lekktu@gmail.com, emacs-devel@gnu.org > From: Alan Mackenzie > > > I always have several frames in my sessions, each one with its buffer, > > and when I restore the sessions, each frame comes up with the same > > buffer it had when I shut down Emacs, no complicated frame-walking > > dance necessary, neither before shutting down Emacs nor after > > restarting it. > > Something similar happens when I use the defaults. But the buffers come > up in the "wrong" frames (i.e. associated with a different key), > making it not useful for me. Then perhaps the problem is that the frame names are jumbled after restoring them, something that "normal" usage will never reveal, as most people don't care about the internal numbering of frames, and I don't think there was a requirement to keep them when restoring. From MAILER-DAEMON Sun Jan 22 15:30:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVOmb-0006lU-Li for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 15:30:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52624) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVOmZ-0006lN-4M for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:30:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVOmX-00081V-Pr for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:30:35 -0500 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]:36434) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVOmT-0007yX-RE; Sun, 22 Jan 2017 15:30:29 -0500 Received: by mail-wm0-x235.google.com with SMTP id c85so105807338wmi.1; Sun, 22 Jan 2017 12:30:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=WJ+8Qt4PwJPvflZ8PPZf54DzE5M80UUE5CoXjRatPes=; b=sI7owILuP2ObmCvNp5u2nh5ZeWBsvi6NZxMmDCmlODJ1195ivyWkgJqVWKt3yNijsZ ywpZeRcTxmjgpdB9Zs8Fb9hW5OUFvi2YHGinSyOytqdz2fadLb8efAsV53Wc+myXKwjK 7h+QQapd9oCU1Vy7ldAbIl7Hx/+I/4RlQmpkGhePTjmViIDI9ylmJluX6Fs5elb/kq/W 1nEtKTJIe4/cB29x+rsng5BF1Lp67RamyHbedDNVSS/YOws9TaSw3/IqzyCa2V9eaW1m ULgnZiu0gS9zBd8U2vUH1YQU2Il1A351iKh5B1iy3GE1LU/+uAM8VwrlEIHZ+TkyKtKZ uaaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=WJ+8Qt4PwJPvflZ8PPZf54DzE5M80UUE5CoXjRatPes=; b=JKu3YUZSSFNztohowqiljMpGOSog/yvw982yQWN9izRiNhXaKwU4UF+3ZyFvI2qftk utWa+zzONxjH8vRrNSfBi0IdJA3oC8Ptn6nXrkCyWr3vWZ7UFBuBijOKzgOptO6U4YJ3 YlEhtxwCgwlgmgli1HknyUCoMNhOtlUU5PlO1orNqX05reFG0BbAfwkhFUef/popsAxh 4qj+Maq/zFTxe/GpA9accaP7gWg6gP3LSq9RZ8q4H0XJzXY1VUd13aibX+QBWhHwcdYn hGmAA5aH84Zu2UKkhT5Xq9dTsKTcNcmr8mpN7o//sKFcpoSTzV1JNpmM9NsIKuss3QwE Nssg== X-Gm-Message-State: AIkVDXJjogWKlnFuVv2oTaso/wjTSLg/FToMUaGSBASM1xx9PZCNtTxef3XpMxWgPQmYUrd0m0CxzB24tNbMZQ== X-Received: by 10.223.170.137 with SMTP id h9mr20449971wrc.202.1485117028601; Sun, 22 Jan 2017 12:30:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sun, 22 Jan 2017 12:30:07 -0800 (PST) In-Reply-To: <83r33v3r4y.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <86shob6l18.fsf@stephe-leake.org> <83r33v3r4y.fsf@gnu.org> From: Fabrice Popineau Date: Sun, 22 Jan 2017 21:30:07 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: Stephen Leake , =?UTF-8?Q?=C3=93scar_Fuentes?= , Juanma Barranquero , Emacs developers Content-Type: multipart/alternative; boundary=94eb2c1b45d2f097e60546b4c07f X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 20:30:36 -0000 --94eb2c1b45d2f097e60546b4c07f Content-Type: text/plain; charset=UTF-8 2017-01-22 19:07 GMT+01:00 Eli Zaretskii : > > ImageMagick is not listed because the Windows build doesn't support it > yet. All the other packages are (or should be) listed; if you think > something is missing, or the text below the list is unclear about > what's optional, please point out what should be > added/removed/modified. > IIRC dbus should be disabled for Windows. Last time I tried it, it was of no use under Windows. Also, at the moment, `make check' checks dbus even if it was disabled when compiling. Fabrice --94eb2c1b45d2f097e60546b4c07f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-22 19:07 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
=

ImageMagick is not listed because the Windows build doesn't support it<= br> yet.=C2=A0 All the other packages are (or should be) listed; if you think something is missing, or the text below the list is unclear about
what's optional, please point out what should be
added/removed/modified.

IIRC dbus shoul= d be disabled for Windows. Last time I tried it, it was of no use under Win= dows.
Also, at the moment, `make check' checks dbus even if i= t was disabled when compiling.

Fabrice
<= br>
--94eb2c1b45d2f097e60546b4c07f-- From MAILER-DAEMON Sun Jan 22 15:39:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVOus-0008DX-Rp for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 15:39:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53747) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVOuo-0008DK-PQ for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:39:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVOun-0002Ru-OD for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:39:06 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:35016) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVOuj-0002QM-T4; Sun, 22 Jan 2017 15:39:02 -0500 Received: by mail-wm0-x232.google.com with SMTP id r126so106293025wmr.0; Sun, 22 Jan 2017 12:39:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=F8gAMqn5/72R4CinFS2N3KaOBpQ5tJTuMKCwE0VFqHo=; b=jv0ej1LQbGOwQX99DARofrYjByvjLIg2cTsItsunwKjekJNKVYzStXNzBJ6unK+tVN OQFYHqjjbVt+qllf08yfhvKi0/3pBoCcNDILFis0DXiaB9duqLEJVyW2M3b8R1P7YVUu pQkilM35bDwmeYeENdXsCfr4hQyGf/zxyLJvzqWFv9YnLKQcnP83roqnLVWBP9mAcaqO sroCW5i6Xv0b79YTjpfSLu3O6Ogh2NsD+mYYtlcX3hkrx1RoFbjFy0O3EaaLzJOS3W2+ mk5Vj2KhHoN8eAUO5mk92FqDYjFghhhzYMemotr/0pxhlbihbHvucCbUw/QVehbLrciS /iDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=F8gAMqn5/72R4CinFS2N3KaOBpQ5tJTuMKCwE0VFqHo=; b=tJSFwyLYd+3ngiQhZqV5lJo9rPWuiXCjNR65OPr355UgmjRXxFNi2A0h9aszZSXVPu t3L3u899JPOAwWgJ87LFOy2cPKkLP9MZaCTLrFF1iS986V6nMcUBctkb5ZZkql2Ge5dD +9UNTqNRu3NQOlCdK9uW4MuQKZMZ8ourcsuLUvZuwmHItIFebg1G+KofT7CSKeMdTkvj PgC7JnZYBnzjm3S8dtkq09EAoYE0dZFP1JEWGfwK8LVqtBkujOSA7bWAe7tZdZNCBB+E 73Kg1oNUeP6Byue2WO6uZwxRzSaeSJZsAzuRG3eeOmL324+P532NF+uhHan7i3OsKsdP +6GA== X-Gm-Message-State: AIkVDXLQTtXAFqEZhB35D7AFjUcv6m84dWhX1VztieiNEDE1IyCmekCYR+VfnHECtm7bJ+moAkIVHs4uv6vg7w== X-Received: by 10.223.170.137 with SMTP id h9mr20468149wrc.202.1485117540746; Sun, 22 Jan 2017 12:39:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sun, 22 Jan 2017 12:38:39 -0800 (PST) In-Reply-To: <83vat73uoc.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> <83vat73uoc.fsf@gnu.org> From: Fabrice Popineau Date: Sun, 22 Jan 2017 21:38:39 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Eli Zaretskii Cc: Juanma Barranquero , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=94eb2c1b45d2774f3b0546b4df5c X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 20:39:10 -0000 --94eb2c1b45d2774f3b0546b4df5c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2017-01-22 17:50 GMT+01:00 Eli Zaretskii : > > From: Fabrice Popineau > > Date: Sat, 21 Jan 2017 21:40:44 +0100 > > Cc: Juanma Barranquero , =C3=93scar Fuentes >, > > Emacs developers > > > > Please describe how this would work, without using > > dynamic-library-alist. > > > > But I never said that it would work without using dynamic-library-alist= ? > > Then it seems we are in violent agreement about this. > > This sub-thread started when I said ImageMagick was not supported on > Windows because it could only be linked in statically. You disagreed > with that, but now it looks like you actually agree, and posted a > patch to add the missing stuff. > > > + '(magickwand "libMagickWand-7.Q16HDRI-0.dll" > "libMagickWand-7.Q16-0.dll") > > + '(magickcore "libMagickCore-7.Q16HDRI-0.dll" > "libMagickCore-7.Q16-0.dll") > > Does this mean we will only support ImageMagick 7.x and later on > Windows? If so, the configure-time test should be changed, since it > currently allows 6.x, I think. > Given that MSYS2 itself has switched to IM7, I don't see the point to keep support forIM6. > > +static bool > > +init_imagemagick_functions (void) > > +{ > > + HMODULE magickwand, magickcore; > > + > > + if (!(magickcore =3D w32_delayed_load (Qmagickcore)) > > + || !(magickwand =3D w32_delayed_load (Qmagickwand))) > > + return 0; > > Are these 2 DLLs completely independent? Or will loading one of them > automatically load the other, due to dependencies? > > Actually, it seems that magickwand depends on magickcore. However, you may need later on a handle on both dlls to catch the functions each one holds. > > @@ -8406,7 +8776,7 @@ imagemagick_compute_animated_image (MagickWand > *super_wand, int ino) > > PixelWand **source, **dest; > > size_t source_width, source_height; > > ssize_t source_left, source_top; > > - MagickPixelPacket pixel; > > + PixelInfo pixel; > > What is this about? > > AFAIR they changed the names of a few structures. > > +#if defined HAVE_NTGUI && !defined CYGWIN > > A.k.a. "#ifdef WINDOWSNT". > > Ok. Fabrice --94eb2c1b45d2774f3b0546b4df5c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-22 17:50 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
=
> From: Fabrice Popine= au <fabrice.popineau@gmail= .com>
> Date: Sat, 21 Jan 2017 21:40:44 +0100
> Cc: Juanma Barranquero <lekktu@= gmail.com>, =C3=93scar Fuentes <ofv@wanadoo.es>,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0Emacs developers <emacs-devel@gnu.org>
>
>=C2=A0 Please describe how this would work, with= out using
>=C2=A0 dynamic-library-alist.
>
> But I never said that it would work without using dynamic-library-alis= t ?

Then it seems we are in violent agreement about this.

This sub-thread started when I said ImageMagick was not supported on
Windows because it could only be linked in statically.=C2=A0 You disagreed<= br> with that, but now it looks like you actually agree, and posted a
patch to add the missing stuff.

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0'(magickwand "libMagickWand-7.Q16= HDRI-0.dll" "libMagickWand-7.Q16-0.dll")
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0'(magickcore "libMagickCore-7.Q16= HDRI-0.dll" "libMagickCore-7.Q16-0.dll")


Does this mean we will only support ImageMagick 7.x and later on
Windows?=C2=A0 If so, the configure-time test should be changed, since it currently allows 6.x, I think.
=C2=A0
Given = that MSYS2 itself has switched to IM7, I don't see the point to keep su= pport forIM6.
=C2=A0
> +static bool
> +init_imagemagick_functions (void)
> +{
> +=C2=A0 HMODULE magickwand, magickcore;
> +
> +=C2=A0 if (!(magickcore =3D w32_delayed_load (Qmagickcore))
> +=C2=A0 =C2=A0 =C2=A0 || !(magickwand =3D w32_delayed_load (Qmagickwan= d)))
> +=C2=A0 =C2=A0 return 0;

Are thes= e 2 DLLs completely independent?=C2=A0 Or will loading one of them
automatically load the other, due to dependencies?


Actually, it seems that magickwand dep= ends on magickcore.
However, you may need later on a handle on bo= th dlls to catch the functions each one holds.
=C2=A0
= =C2=A0
> @@ -8406,7 +8776,7 @@ imagemagick_compute_animated_image (MagickW= and *super_wand, int ino)
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 PixelWand **source, **dest;
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 size_t source_width, source_height;
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 ssize_t source_left, source_top;
> -=C2=A0 =C2=A0 =C2=A0 MagickPixelPacket pixel;
> +=C2=A0 =C2=A0 =C2=A0 PixelInfo pixel;

What is this about?


AFAIR they changed the names of a few = structures.
=C2=A0
> +#if defined HAVE_NTGUI && !defined CYGWIN

A.k.a. "#ifdef WINDOWSNT".


Ok.

Fabrice

--94eb2c1b45d2774f3b0546b4df5c-- From MAILER-DAEMON Sun Jan 22 15:44:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVP05-0000jl-Ep for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 15:44:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54496) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVP02-0000jd-S9 for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:44:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVOzy-000463-Ax for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:44:30 -0500 Received: from ocolin.muc.de ([193.149.48.4]:61522 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cVOzy-00045n-4C for emacs-devel@gnu.org; Sun, 22 Jan 2017 15:44:26 -0500 Received: (qmail 51673 invoked by uid 3782); 22 Jan 2017 20:44:24 -0000 Received: from acm.muc.de (p4FC46969.dip0.t-ipconnect.de [79.196.105.105]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Jan 2017 21:44:24 +0100 Received: (qmail 19081 invoked by uid 1000); 22 Jan 2017 20:44:09 -0000 Date: Sun, 22 Jan 2017 20:44:09 +0000 To: Eli Zaretskii Cc: lekktu@gmail.com, emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets Message-ID: <20170122204409.GE12823@acm> References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> <83k29m52rc.fsf@gnu.org> <20170122193841.GD12823@acm> <83inp650b6.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83inp650b6.fsf@gnu.org> User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 20:44:32 -0000 Hello, Eli. On Sun, Jan 22, 2017 at 22:03:57 +0200, Eli Zaretskii wrote: > > Date: Sun, 22 Jan 2017 19:38:41 +0000 > > Cc: lekktu@gmail.com, emacs-devel@gnu.org > > From: Alan Mackenzie > > > I always have several frames in my sessions, each one with its buffer, > > > and when I restore the sessions, each frame comes up with the same > > > buffer it had when I shut down Emacs, no complicated frame-walking > > > dance necessary, neither before shutting down Emacs nor after > > > restarting it. > > Something similar happens when I use the defaults. But the buffers come > > up in the "wrong" frames (i.e. associated with a different key), > > making it not useful for me. > Then perhaps the problem is that the frame names are jumbled after > restoring them, something that "normal" usage will never reveal, as > most people don't care about the internal numbering of frames, and I > don't think there was a requirement to keep them when restoring. The order of the frames returned by frame-list is not defined in its doc string or the Elisp manual. Maybe it should be. It appears to be in reverse order of creation, presumably because the frame creation routine simply pushes each new frame onto the front of a list. Maybe inserting a judicious nreverse into the frame group code would get me part of what I want. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Sun Jan 22 16:07:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPML-0003MI-RI for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:07:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56665) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPMI-0003MC-Vc for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:07:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPMG-0001JT-Sm for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:07:30 -0500 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:38254) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVPME-0001I3-3A; Sun, 22 Jan 2017 16:07:26 -0500 Received: by mail-wm0-x231.google.com with SMTP id r144so125478123wme.1; Sun, 22 Jan 2017 13:07:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=x8TAgCb6pY+Koz9g5hBGkHMc9/4pSxOtUHJD3mhiVLQ=; b=D48PqesesZstSmcOQgNgns9yfFK34TIizwNgJOZTOeZyIAQ3eqGkOjnJXRawCnPfHR 4Uw9UoKqOT20gTNCmGtOADpT0Zwo7V0dVXoUje9ldO8KDBBjrexMrPrPc+rU1Ufj8ZTt +uhrErxmDiGCiZecKzFGRNv/APikwQUTV/3FQqwG//DytZ9XiCXrGCySX8/Ds7UJVnT+ 43two8yZ3ZqsQM6TpaS4686Xak0GSxy6lbQ7imwCed0Jy6xP2b0qLdN+3VWWS1wtluhn 4hebzolN8lRP+S1IqJ3X55oHOHIzhwyNvwdeu7Ht+KyVz2f8GfgK71a27T4KtNI4d57A /ocg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=x8TAgCb6pY+Koz9g5hBGkHMc9/4pSxOtUHJD3mhiVLQ=; b=pTnjXe/LKP+NA/4DqC41OXGZT+iM8x/lHsav5hHwjJcugVK4V0pa2n+AoAokFrixX1 vzFE4rTJVEltopgCpsp3SjQUc3yl5J8Brlug7sfGNAHMk+pP5axCKhA4Q5X8Vq3QooJ9 dAJwBPDUQjx9qczyNCZ51BcGfeCdOW38orToAorcugzJnBb4/seqwDhixAFy9DIcmaSq tb+J6hj9+x169N/PqxLpJ9URfBUTc9o0zMUT/6ZfgGReeFJBSZZY6s45aUFLg49T+OYJ Fdfqj3CxHPyyAQvtssYO5KjIB/deONEjaelX7jMLVJ8p+Yqk8fx1WjVwGDu36Suh6l1q yXJw== X-Gm-Message-State: AIkVDXL994UrOMHtMcner8KdCL5LZFqHAxiBHHG1Lk2SOnJDMMG5Bruka5NWA/yIqYwXcv1mb+kq9aBvyZbMfQ== X-Received: by 10.28.206.199 with SMTP id e190mr11708196wmg.98.1485119243206; Sun, 22 Jan 2017 13:07:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Sun, 22 Jan 2017 13:06:42 -0800 (PST) In-Reply-To: <20170122193841.GD12823@acm> References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> <83k29m52rc.fsf@gnu.org> <20170122193841.GD12823@acm> From: Juanma Barranquero Date: Sun, 22 Jan 2017 22:06:42 +0100 Message-ID: Subject: Re: GUI vs TTY when saving & restoring framesets To: Alan Mackenzie Cc: Eli Zaretskii , Emacs developers Content-Type: multipart/alternative; boundary=94eb2c193efef0c9640546b544b8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:07:33 -0000 --94eb2c193efef0c9640546b544b8 Content-Type: text/plain; charset=UTF-8 On Sun, Jan 22, 2017 at 8:38 PM, Alan Mackenzie wrote: > Something similar happens when I use the defaults. But the buffers come > up in the "wrong" frames (i.e. associated with a different key), > making it not useful for me. Anyhow, I've had this use of for 15 > years now, and 15 years ago there was nothing like frames in the desktop > file. Well, frameset restoration is a new feature, which does not interfere with what you did before. It just does not do what you want in a new situation (you could always set desktop-restore-frames to nil and not lose any old functionality). I don't mean that your use case is not valid or relevant, only that it is hardly surprising that it doesn't work out of the box ;-) > I > think it more likely that Juanma didn't see any need to preserve the > association of particular frames with particular buffers when extending > desktop to handle frames. I tried to preserve anything that I could imagine being even remotely useful, or being told so. Obviously, there's room for improvement. > But it would > be nice if desktop could preserve the ordering of the frames and buffers, > too. I'll look into it. --94eb2c193efef0c9640546b544b8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Sun, Jan 22, 2017 at 8:38 PM, Alan Mackenzie <acm@muc.de> wrote:

> Somethin= g similar happens when I use the defaults.=C2=A0 But the buffers come
&g= t; up in the "wrong" frames (i.e. associated with a different <= ;fn> key),
> making it not useful for me.=C2=A0 Anyhow, I've h= ad this use of <fn> for 15
> years now, and 15 years ago there = was nothing like frames in the desktop
> file.

Well= , frameset restoration is a new feature, which does not interfere with what= you did before. It just does not do what you want in a new situation (you = could always set desktop-restore-frames to nil and not lose any old functio= nality). I don't mean that your use case is not valid or relevant, only= that it is hardly surprising that it doesn't work out of the box ;-)

> I
> think it more likely that Juanma did= n't see any need to preserve the
> association of particular fram= es with particular buffers when extending
> desktop to handle frames.=

I tried to preserve anything that I could imagine= being even remotely useful, or being told so. Obviously, there's room = for improvement.

> But it would
> be = nice if desktop could preserve the ordering of the frames and buffers,
&= gt; too.

I'll look into it.

--94eb2c193efef0c9640546b544b8-- From MAILER-DAEMON Sun Jan 22 16:16:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPUY-0004be-Nt for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:16:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPUW-0004bE-BY for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:16:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPUU-00049N-S4 for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:16:00 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:35541) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVPUS-00047U-Qn; Sun, 22 Jan 2017 16:15:56 -0500 Received: by mail-wm0-x232.google.com with SMTP id r126so107024466wmr.0; Sun, 22 Jan 2017 13:15:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=UklPtWC/nRM1rXqYwHOTLxEX7O6S9lI9PuglTaystDE=; b=E4OVIAMm8bp27EbxuCjcj9Km0bKuvN4kDVidkSsD0jHJdmI9MD/BWfinqcMkx9IXy6 H+Ykotu30J2c2By4Ov/NcPomgi6GPF84evhZ87BUEnXU7VoySwRbf1/ckUG6D6q/Lhvh rbQ79yBv7DJxgGVxXQMukb0VKhSTBnOh54Z9jC5dEI6I83tOGLOugJo1K96lLywW6Sr3 GzM8oiq1U1R7mVjKpe9oXDrw92VkEBSovh/d/WgNGJahbG3txh24pE96kXvVeHY9kRMZ 5j4b8PSotwAvEX4QC6v0G80+JE4x8BRh0cipjGbbRcaYTKneVt89+d9/oLc4X7SzBQYy i+Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=UklPtWC/nRM1rXqYwHOTLxEX7O6S9lI9PuglTaystDE=; b=bqoUKzGqCt3Dc0LLN3h12N11l9iJI5ivxc/LtuKBjjPrQTjP1baSJxAfjWsmmJVmdS MhEx4hceLW4vlU0eAFtujX6acxuyCXuyVEm4YaIMaBwhc507SjtlCE2Z32xD+SNpCV60 9Rnbx48zEfYduBmYeGuOQbFtMGRSduK4G1gQVPbd7s6NIDxIWXV+5QsXMkWb50IRA205 NEPx3brRylW560IikMMpQoOc3oesPELB24yad4mt+wGSyq8STBDs5Y+IAvq4HP/z/Tve mbPkE8XjkLci00l8p6vWq/JQytOq1qGlOnZqh2utlLZC30zUZhP25FWkWlM2xGXN4OGn YA6g== X-Gm-Message-State: AIkVDXJpm/R6qqwZ6epFZlxn/k09EiHwm4ix4QuPD4Eu3w2lrENXrMX79dh86J4LBBC32LlQuzlaf3h2k24yew== X-Received: by 10.28.206.199 with SMTP id e190mr11724474wmg.98.1485119755452; Sun, 22 Jan 2017 13:15:55 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Sun, 22 Jan 2017 13:15:14 -0800 (PST) In-Reply-To: <834m0r5aiu.fsf@gnu.org> References: <834m0r5aiu.fsf@gnu.org> From: Juanma Barranquero Date: Sun, 22 Jan 2017 22:15:14 +0100 Message-ID: Subject: Re: GUI vs TTY when saving & restoring framesets To: Eli Zaretskii Cc: Emacs developers Content-Type: multipart/alternative; boundary=94eb2c193efe7906870546b563df X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:16:01 -0000 --94eb2c193efe7906870546b563df Content-Type: text/plain; charset=UTF-8 On Sun, Jan 22, 2017 at 5:23 PM, Eli Zaretskii wrote: > If you can find a way of fixing 17693 without disabling frameset > restoration, feel free to do that on master. I'm going to take a hard look at this and every frameset bug I can find. I'll revert the frameset.el and desktop.el code (locally, not on the repository) to its previous state and will try to understand the issues and the possible fixes. (I'm not implying the current fixes aren't good, only that I still don't understand their implications). > Given user feedback we > have, I think we should not create GUI frames when Emacs is invoked > with -nw, though, at least by default. I don't understand this. Creating GUI frames in a -nw session shouldn't happen. "Mimicking" the GUI frames in the -nw session is what the code intended to do, so if you have three frames of whatever size and other parameters, the TTY session would start with three tty frames (F1 to F3). Then going back to GUI mode would restore the original GUI frames (not the tty ones). > As for the trips in frameset.el, I don't think they are entirely > redundant, because I'd expect the following sequence of Emacs > invocations to re-create the original GUI frames from the 1st > invocation: > > . emacs > . emacs -nw > . emacs That is exactly what worked before (or, at least, it worked in all my tests) and it's broken now. --94eb2c193efe7906870546b563df Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Sun, Jan 22, 2017 at 5:23 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> I= f you can find a way of fixing 17693 without disabling frameset
> res= toration, feel free to do that on master.

I'm = going to take a hard look at this and every frameset bug I can find. I'= ll revert the frameset.el and desktop.el code (locally, not on the reposito= ry) to its previous state and will try to understand the issues and the pos= sible fixes. (I'm not implying the current fixes aren't good, only = that I still don't understand their implications).

=
> =C2= =A0Given user feedback we
> have, I think we should= not create GUI frames when Emacs is invoked
> with -nw, though, at l= east by default.

I don't understand this. Crea= ting GUI frames in a -nw session shouldn't happen. "Mimicking"= ; the GUI frames in the -nw session is what the code intended to do, so if = you have three frames of whatever size and other parameters, the TTY sessio= n would start with three tty frames (F1 to F3). Then going back to GUI mode= would restore the original GUI frames (not the tty ones).

> = As for the trips in frameset.el, I don't think they are entirely=
> redundant, because I'd expect the following sequenc= e of Emacs
> invocations to re-create the original GUI frames from th= e 1st
> invocation:
>
> =C2=A0 . emacs
> =C2=A0 . e= macs -nw
> =C2=A0 . emacs

That is exactly wh= at worked before (or, at least, it worked in all my tests) and it's bro= ken now.

--94eb2c193efe7906870546b563df-- From MAILER-DAEMON Sun Jan 22 16:22:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPbF-0005pr-JN for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:22:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58965) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPbD-0005pE-GB for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:22:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPbC-0005mk-Ji for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:22:55 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:41498) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVPb8-0005le-RC; Sun, 22 Jan 2017 16:22:50 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 5C0ED160091; Sun, 22 Jan 2017 13:22:49 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id qhN_a-_6YhPF; Sun, 22 Jan 2017 13:22:48 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 9A77B1600A3; Sun, 22 Jan 2017 13:22:48 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id gcsg3UrsqeqB; Sun, 22 Jan 2017 13:22:48 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.188.248]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 75089160091; Sun, 22 Jan 2017 13:22:48 -0800 (PST) Subject: Re: 64-bit build on Windows To: Fabrice Popineau , Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> <83vat73uoc.fsf@gnu.org> Cc: =?UTF-8?Q?=c3=93scar_Fuentes?= , Juanma Barranquero , Emacs developers From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <8d4cbeca-e007-da33-46bb-298f8c95efcb@cs.ucla.edu> Date: Sun, 22 Jan 2017 13:22:48 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:22:56 -0000 Fabrice Popineau wrote: > Given that MSYS2 itself has switched to IM7, I don't see the point to keep > support for IM6. My vague impression is that ImageMagick 7 is still too buggy on GNU/Linux to be useful for Emacs there. Is my impression incorrect? Even if I'm wrong, Emacs should continue to support IM6 for a while on non-MS-Windows platforms, to support users who don't have IM7 installed yet. From MAILER-DAEMON Sun Jan 22 16:27:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPfp-0007fV-EJ for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:27:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPfn-0007eE-Si for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:27:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPfk-0006tZ-Ow for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:27:39 -0500 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]:36748) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVPfk-0006sf-HD; Sun, 22 Jan 2017 16:27:36 -0500 Received: by mail-lf0-x241.google.com with SMTP id h65so12580850lfi.3; Sun, 22 Jan 2017 13:27:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=E7v8lqMkz5t2JTfzK5fErIbVb8xSjBX95fK8T1Zhg8w=; b=FzaXACyxi8Eq9LqlFuq4fWQOK7wwuzEAo88jo43d/oiZeskaUvHGw0wrprU/B/DdJl RAjdYAkQkpVzdyYlnC3Bb1ME0B5VwRQZJwHNOraiMA71XJz90g8Hmq49VPqPaRYkrjwg T5ThFIIEBhcc4VHiVa2KqXjjASSnt1skxyei6T7Em4fJ60kGHA/EkLCFOfFJKP4drDmz zrRlw+YCjdAhpdhbHfPBQ0wc5G0tf+0TDV0Ldwz0jtnbSAc+jT4YEM0ipVwntLoSK8o7 fY1C0TqZjKgTCZ1VjAreU4K3Wb7uzzzQRfWAlUg6svP4K8cPPfdgk4sHJl3F1pXx1oWM BuJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=E7v8lqMkz5t2JTfzK5fErIbVb8xSjBX95fK8T1Zhg8w=; b=L7scuh+c4nyDgngem6dmevGzYB1wNtUP1M0y5ecFErMNyQWs3gzzUaOfEU2n+eBTVh PWEwcUhKTyFN7Alxt7jSv7jUE1JZs0TSXrjjmclzUh4rUbozs2qMnE29L+sYi7o9wMrZ URAvRQPiICJNhk/add5SNtxwaXR6RyQVkZaCFgqR++wSh/sQAIds7mPy/zpF8wRoJRtD vx9O8ScUviUa9/sjlvJagzed4mMQLiBaTfi/eXtuTQiXgV392kKes3ttJtMu8eA9JPRS 7RSsIQ79zi3QXSucAXAj6PUeCjHR0U9A9cmhd2bppZnonC5Bcfig8hmxwzOvabvIesma grww== X-Gm-Message-State: AIkVDXIK4bEUkfDpXAutuSb7s8T5ZqIYHZxfBa5kP8/xfHkng5xPovKEU2D5eXEWhI+I4g== X-Received: by 10.25.162.146 with SMTP id l140mr7934069lfe.50.1485120453451; Sun, 22 Jan 2017 13:27:33 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id d16sm3014112lfj.28.2017.01.22.13.27.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jan 2017 13:27:32 -0800 (PST) Sender: DG Subject: Re: with-url To: Eli Zaretskii Cc: larsi@gnus.org, yuri.v.khan@gmail.com, emacs-devel@gnu.org References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87bmv0beoa.fsf@gnus.org> <87bmv09ms8.fsf@gnus.org> <87y3y487f8.fsf@gnus.org> <07e59615-95a3-0d03-cb6d-c07257796661@yandex.ru> <87shoc86ct.fsf@gnus.org> <87mvek85vi.fsf@gnus.org> <194a8281-47d2-937c-ebbd-ba7bf18a8b3d@yandex.ru> <87h94s8587.fsf@gnus.org> <76ae7bf5-539a-dfc8-af56-f941c185424c@yandex.ru> <87d1fg83u2.fsf@gnus.org> <87tw8rywxt.fsf@gnus.org> <83ziij3vby.fsf@gnu.org> From: Dmitry Gutov Message-ID: <5bb24108-7e12-5943-f664-3f13b0e107b1@yandex.ru> Date: Mon, 23 Jan 2017 00:27:30 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <83ziij3vby.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:27:40 -0000 On 22.01.2017 19:36, Eli Zaretskii wrote: > With the current implementation of concurrency, threads cannot > usefully signal anything: if a thread raises a signal that is not > caught, it simply dies. And you cannot catch such a signal from > another thread. The idea is that it would be caught by the caller in the same thread. > So your proposal would mean that the thread which runs the async code > sets some variable, and the application in the main thread then > signals an error based on that variable's value. is that what you had > in mind? The model would function somehow like this: We're in a certain thread. Elisp code calls with-url, the internals make a request, _suspend the current thread_, and when the request is complete, the low-level code updates some variable and resumes the thread. After that, the code in that thread checks the result of the request, and, depending on it, may signal an error. If the request can't be sent for some reason, so there's no point in suspending the thread, the internals can signal an error right away. Point is, the errors is signaled in the same thread that made the request. And the execution looks synchronous from the point of view of the high-level code in that thread. Not sure how/if that would work if the request is made from the main thread. Maybe that kind of code would require a minor rewrite. From MAILER-DAEMON Sun Jan 22 16:32:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPk3-0000Fw-0I for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:32:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPk1-0000FK-NI for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:32:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPjy-00086E-Hd for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:32:01 -0500 Received: from randomsample.de ([5.45.97.173]:38376) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVPjy-00084p-8D; Sun, 22 Jan 2017 16:31:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=uBkF8gYnm9cemrc8Hfex0cpVZBjQ/aS1zkcPtqa/JTM=; b=FMjXzuxTtgOQZXvRWc1IJwssdXuQsGKwhEnc2WS3XgffR8u5jaJNqtX5P0j8o75JUSZEvaG+vRRWY8+sleE3CAiSnzNbIKzqkqCjQM1TLDrY4DhCNAa2sGKpXOyOO104; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cVPjq-00028p-QV; Sun, 22 Jan 2017 22:31:50 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87o9z2sog1.fsf@engster.org> (David Engster's message of "Thu, 19 Jan 2017 22:57:18 +0100") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 22 Jan 2017 22:31:44 +0100 Message-ID: <87d1fe3hof.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:32:02 -0000 David Engster writes: > Edward John Steere writes: >> As I said in my previous email I'll make a start on the tests. > > That's great, thanks! I'll push a branch with my progress soon. I just pushed my first try as scratch/last-cedet-merge. -David From MAILER-DAEMON Sun Jan 22 16:39:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVPrg-0003ZK-C1 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 16:39:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVPre-0003ZA-90 for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:39:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVPrd-0002cX-Eg for emacs-devel@gnu.org; Sun, 22 Jan 2017 16:39:54 -0500 Received: from mail-wm0-x236.google.com ([2a00:1450:400c:c09::236]:36817) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVPrb-0002bq-Lf; Sun, 22 Jan 2017 16:39:51 -0500 Received: by mail-wm0-x236.google.com with SMTP id c85so107161794wmi.1; Sun, 22 Jan 2017 13:39:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+GFTtG0trXXfSBzUZunyhS/qSmTx6+iSAw4Gs6Tt+Xc=; b=Tg9EOPMOTzj0mWLcp5I+xYV47khX6XsvhSPs0LZx+JniyK0OxDHMA4kiAtVitT+Wql mt0tcIMKmweRM5fppxEz8XtWoNcSGIZ2qd0Tyq3j1cSLDl2Ba4WzY/yYsWcQwgE1uaMx drvlEqSfuYXvQrf3pgrQwnHe6IqTRlfFZ97yRAwpI+0P4yU94shKjBP2kWiAiiV5z2M3 vnUT/MsIvN/f1bAyNxVL1RnQZZcK51GyPEczwLqhggUb/tg20xPN2rNTp6Ej7DJdXeYz fDhtJWL91OSciISYaCh6Aw8HCMG5WNgJjP9hfrv/jHX/oPlVn66TYWCBoBtPosgIdwOX SVSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+GFTtG0trXXfSBzUZunyhS/qSmTx6+iSAw4Gs6Tt+Xc=; b=aRX6aBrVyW74K6kENBgdyb43Lia68TQznDgfhkMpO7nLQqtiduGeGcsaTJU/wJy89x vdLGsHLJpnOeO9sftPxCp1jYjC5tX5RbHvfQLHVceT+uZF03mA3RotDA+4eEBim7DN56 qCkJrJSzsHyL4ncxJEULfzJJY/HQHiUdy6J250Qnh0/c1OuUDgBUTqJ68kPyiEDNANEH CLzN9YkV+2l5v2X2DsW7gTUfneaMraApB0XLDinJ+pXJK8xtvhXYj+pfhYDdN82g24SZ Gw63Hlo0d+KO3MOAXl3OtOb9gKGMQiRUUM933vG2CZdjGbq5Iil4Sb2Nv5jbuWc+7iPm Feqw== X-Gm-Message-State: AIkVDXIeso54yeMuaeaORGprQoyjwBgweNyUMICYVO3JUlGQlXlYu9vZVF9kwlpT5Rp/AMcFCQH//ejpqNJqdQ== X-Received: by 10.223.138.220 with SMTP id z28mr20799136wrz.26.1485121188934; Sun, 22 Jan 2017 13:39:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Sun, 22 Jan 2017 13:39:28 -0800 (PST) In-Reply-To: <8d4cbeca-e007-da33-46bb-298f8c95efcb@cs.ucla.edu> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> <83vat73uoc.fsf@gnu.org> <8d4cbeca-e007-da33-46bb-298f8c95efcb@cs.ucla.edu> From: Fabrice Popineau Date: Sun, 22 Jan 2017 22:39:28 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Paul Eggert Cc: Eli Zaretskii , =?UTF-8?Q?=C3=93scar_Fuentes?= , Juanma Barranquero , Emacs developers Content-Type: multipart/alternative; boundary=001a11498462ea389f0546b5b85b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 21:39:55 -0000 --001a11498462ea389f0546b5b85b Content-Type: text/plain; charset=UTF-8 2017-01-22 22:22 GMT+01:00 Paul Eggert : > Fabrice Popineau wrote: > >> Given that MSYS2 itself has switched to IM7, I don't see the point to keep >> support for IM6. >> > > My vague impression is that ImageMagick 7 is still too buggy on GNU/Linux > to be useful for Emacs there. Is my impression incorrect? Even if I'm > wrong, Emacs should continue to support IM6 for a while on non-MS-Windows > platforms, to support users who don't have IM7 installed yet. > I agree for those platforms which have a choice. With MSYS2, there is not much choice. --001a11498462ea389f0546b5b85b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-22 22:22 GMT+01:00 Paul Eggert <eggert@cs.ucla.edu>:
Fabrice Popineau w= rote:
Given that MSYS2 itself has switched to IM7, I don't see the point to k= eep
support for IM6.

My vague impression is that ImageMagick 7 is still too buggy on GNU/Linux t= o be useful for Emacs there. Is my impression incorrect? Even if I'm wr= ong, Emacs should continue to support IM6 for a while on non-MS-Windows pla= tforms, to support users who don't have IM7 installed yet.

I agree for those p= latforms which have a choice. With MSYS2, there is not much choice.
--001a11498462ea389f0546b5b85b-- From MAILER-DAEMON Sun Jan 22 17:00:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVQBL-0007Hr-JL for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 17:00:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38638) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVQBJ-0007GY-Bk for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:00:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVQBG-0002JZ-9Q for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:00:13 -0500 Received: from randomsample.de ([5.45.97.173]:38666) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVQBF-0002I7-WB; Sun, 22 Jan 2017 17:00:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=f9pzWy7FBOguzvB/HNAMy9PcejVUuH+/xbrEEBbV9f4=; b=jaHKDxmGi7QVdnNtZHdcAUAhqXnxie34+30qVxoSiBQMMC7g2gLZgKPw6uUbW0wwYdMNu1I2+67JkuUb34zEMJJ1rPXTDsfoi8xV5tSOKWcnfOL1CKim5C7gCIPDxp6T; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cVQBA-0002Oy-6d; Sun, 22 Jan 2017 23:00:04 +0100 From: David Engster To: Glenn Morris Cc: Eli Zaretskii , kfogel@red-bean.com, edward.steere@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <8c7f5o8cu0.fsf@fencepost.gnu.org> (Glenn Morris's message of "Sat, 21 Jan 2017 13:52:55 -0500") References: <87r348ul9n.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> <8c7f5o8cu0.fsf@fencepost.gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 22 Jan 2017 23:00:02 +0100 Message-ID: <8760l63gd9.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 22:00:14 -0000 Glenn Morris writes: > Eli Zaretskii wrote: > >>> >> I always followed the general rule that the generated ChangeLogs >>> >> should have the date when the change enters the Emacs repository >>> > >>> > Indeed, that is our rule. >>> >>> That was the rule when ChangeLogs were hand-written, but since the >>> switch to generated ChangeLogs it does not (and cannot) apply. >>> Git does not record that date. >> >> Git obviously does record the commit date, so there's no problem with >> that rule. > > The commit date has no relation to "the date when the change enters the > Emacs repository" (ie, was pushed to Savannah). > > If you want a recent example of this, "make ChangeLog" and look at the > dates of "recent" concurrency entries. Some are years old. > > Eg git log --fuller 0ccc5d8998a > Both git dates are 2012-08-15, but the correct date would be 2016-12-10: > http://lists.gnu.org/archive/html/emacs-diffs/2016-12/msg00144.html Yes, that's a problem with long-living feature branches. It'd be nice if 'make ChangeLog' would use the commit date of the merge commit for all commits that entered Emacs through a branch merge. If that isn't easily possible, the person who does the merge could do a filter-branch before merging, setting GIT_COMMITTER_DATE to the current date (if 'make ChangeLog' would actually use the committer date, which AFAICS it currently does not). -David From MAILER-DAEMON Sun Jan 22 17:17:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVQRk-0001jy-1y for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 17:17:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41046) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVQRi-0001js-3y for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:17:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVQRe-0008KX-Sr for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:17:10 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:41277) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVQRe-0008J6-OU for emacs-devel@gnu.org; Sun, 22 Jan 2017 17:17:06 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 1D5C22072E for ; Sun, 22 Jan 2017 17:17:03 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute1.internal (MEProxy); Sun, 22 Jan 2017 17:17:03 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= smtpout; bh=sUM6mKDrHnqaXtGwGzfcdYDk5M4=; b=AxX6Y4GRrFUGoYyoZvB4 g2uZm5pFnVB6lQVicRjoVYqtzSnxmU44A7krZItkX5QDIoI6TRaQm5aVlf+unGG5 kM1liRv1OHVVolSbUkswLoIOFY5tHbp4AdnKYUBBrI/Of5I1Tscrjt7cf2fnJ3rz QhnOQrNi7C6hfnYU8jhbQxw= X-ME-Sender: X-Sasl-enc: +Y/4DVe0Ss1hy/9nhsUAnApYjWk1jTYNnp/Mq/h5aRO1 1485123422 Received: from ebox.rath.org (ebox.rath.org [45.79.69.51]) by mail.messagingengine.com (Postfix) with ESMTPA id D10657EE39 for ; Sun, 22 Jan 2017 17:17:02 -0500 (EST) Received: from thinkpad.rath.org (thinkpad [192.168.12.2]) by ebox.rath.org (Postfix) with ESMTPS id 12FA0381 for ; Sun, 22 Jan 2017 22:17:02 +0000 (UTC) Received: by thinkpad.rath.org (Postfix, from userid 1000) id BB1FABFF9C; Sun, 22 Jan 2017 14:17:01 -0800 (PST) From: Nikolaus Rath To: emacs-devel@gnu.org Subject: Re: Please review Gnus bug 20670 References: <87eg0megv8.fsf@vostro.rath.org> Mail-Copies-To: never Mail-Followup-To: emacs-devel@gnu.org Date: Sun, 22 Jan 2017 14:17:01 -0800 In-Reply-To: <87eg0megv8.fsf@vostro.rath.org> (Nikolaus Rath's message of "Sun, 01 Jan 2017 11:10:19 -0800") Message-ID: <87poje91uq.fsf@thinkpad.rath.org> User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 22:17:11 -0000 *ping* Is there anything I can do to move this forward? As far as I can tell, there is a patch that works but hasn't been committed or commented on for more than a year. I'd like to do some further work on Gnus' IMAP support, but this really chokes the motivation... Thanks, -Nikolaus On Jan 01 2017, Nikolaus Rath wrote: > Hello, > > Could someone take a look at the Gnus patch in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20670? > > The patch has been sitting there for more than a year. It would be great > to either see it committed, or to have some feedback on the issues that > prevent that. > > I've been using the patch locally ever since writing it and did not > encounter any problems. > > Best, > -Nikolaus > --=20 > GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F > Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F > > =C2=BBTime flies like an arrow, fruit flies like a Banana.= =C2=AB --=20 GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F =C2=BBTime flies like an arrow, fruit flies like a Banana.=C2= =AB From MAILER-DAEMON Sun Jan 22 18:16:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVRMx-00083H-8n for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 18:16:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48111) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVRMu-00082x-SE for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:16:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVRMp-00064g-Uc for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:16:16 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:52261) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVRMp-00064H-Nu for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:16:11 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cVRMk-0000NN-Or for emacs-devel@gnu.org; Mon, 23 Jan 2017 00:16:09 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: Please review Gnus bug 20670 References: <87eg0megv8.fsf@vostro.rath.org> <87poje91uq.fsf@thinkpad.rath.org> Date: Mon, 23 Jan 2017 00:16:01 +0100 In-Reply-To: <87poje91uq.fsf@thinkpad.rath.org> (Nikolaus Rath's message of "Sun, 22 Jan 2017 14:17:01 -0800") Message-ID: <87mveiptxq.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 23:16:17 -0000 Nikolaus Rath writes: > Is there anything I can do to move this forward? I'll try to take a look at the Gnus backlog later this week. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 22 18:52:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVRvX-00042J-74 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 18:52:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVRvU-000423-IL for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:52:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVRvN-0004wA-6j for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:52:00 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:58844 helo=homiemail-a22.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVRvN-0004vv-0v for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:51:53 -0500 Received: from homiemail-a22.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a22.g.dreamhost.com (Postfix) with ESMTP id 138D0114066; Sun, 22 Jan 2017 15:51:50 -0800 (PST) Received: from localhost.linkov.net (m212-107-62-58.cust.tele2.ee [212.107.62.58]) (Authenticated sender: jurta@jurta.org) by homiemail-a22.g.dreamhost.com (Postfix) with ESMTPA id 3F48B114065; Sun, 22 Jan 2017 15:51:49 -0800 (PST) From: Juri Linkov To: Tino Calancha Cc: Emacs developers Subject: Re: [patch] Run occur command restricted to a region Organization: LINKOV.NET References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> Date: Mon, 23 Jan 2017 01:50:21 +0200 In-Reply-To: <87fukb2xmk.fsf@gmail.com> (Tino Calancha's message of "Sun, 22 Jan 2017 19:32:35 +0900") Message-ID: <87h94qu01u.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 69.163.253.7 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 23:52:02 -0000 >>> **) The second patch add your suggestion on showing highlighted the >>> current line. When there are matches after the current line, the >>> point in *Occur* is set right after such line. >>> >>> I am fine with just adding *). In case we also want **), >>> an option to enable/disable that behaviour might be desirable. >> >> Keeping traditional behaviour means not jumping to the middle of the >> *Occur* output by default. Then maybe we could use the same option >> to highlight the current line and to jump to it? Like the existing >> =E2=80=98list-matching-lines-buffer-name-face=E2=80=99, adding a nil/f= ace choice for >> =E2=80=98list-matching-lines-current-line-face=E2=80=99, so when it's = nil then don't >> highlight/jump? > OK, why not? Thanks. > +(defface occur-current-line-face > + '((t (:inherit lazy-highlight))) > + "Face for highlighting the current line in *Occur* buffer." I'm not sure about the new face =E2=80=98occur-current-line-face=E2=80=99= . Looking at the list of faces from =E2=80=98M-x list-faces-display=E2=80=99= , there are no other occur faces. It would be confusing for the users to see a single occur-related face in this list, whereas all other occur-related faces are customized by =E2=80=98list-matching-lines-*=E2=80=99 variables= only. For consistency with other occur faces, maybe better to have a variable (defcustom list-matching-lines-current-line-face 'lazy-highlight and another boolean customizable variable list-matching-lines-jump-to-cur= rent-line to enable locating the current line. From MAILER-DAEMON Sun Jan 22 18:57:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVS0O-0004zc-Mw for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 18:57:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53309) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVS0M-0004z9-Az for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:57:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVS0L-0006X5-KI for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:57:02 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46073) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVS0B-0006T2-Mi; Sun, 22 Jan 2017 18:56:51 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cVS0B-0002Rc-4O; Sun, 22 Jan 2017 18:56:51 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Lars Ingebrigtsen CC: emacs-devel@gnu.org In-reply-to: <87inp7ytbg.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 22 Jan 2017 17:04:35 +0100) Subject: Re: not with-url Reply-to: rms@gnu.org References: <87mvffva75.fsf@gnus.org> <87inp7ytbg.fsf@gnus.org> Message-Id: Date: Sun, 22 Jan 2017 18:56:51 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 23:57:03 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] The construct sounds useful, but the name is not clear. Would you please rename it before installing it? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sun Jan 22 18:59:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVS2Y-0005m3-C3 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 18:59:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVS2V-0005lX-Le for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:59:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVS2U-0007aC-UK for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:59:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46137) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVS2U-0007a8-RW for emacs-devel@gnu.org; Sun, 22 Jan 2017 18:59:14 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cVS2U-0006lC-3r; Sun, 22 Jan 2017 18:59:14 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Eli Zaretskii CC: emacs-devel@gnu.org In-reply-to: <837f6nxtdu.fsf@gnu.org> (message from Eli Zaretskii on Mon, 26 Dec 2016 05:26:53 +0200) Subject: Re: scrolling in shell buffer Reply-to: rms@gnu.org References: <83shpl5jnz.fsf@gnu.org> <83y3zb51eq.fsf@gnu.org> <83fulg0w07.fsf@gnu.org> <83k2aqzk37.fsf@gnu.org> <83lgv5xh4v.fsf@gnu.org> <837f6nxtdu.fsf@gnu.org> Message-Id: Date: Sun, 22 Jan 2017 18:59:14 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2017 23:59:16 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > I verified that scroll-conservatively was 100. > Please repeat the experiment with scroll-conservatively set to 101 or > greater. It should be greater than 100 for this feature to kick in. I did this with 101, and the problem is mostly gone. Most of the time, when I switch to that buffer, there is no empty space at the end. However, once there was empty space. So far I have not been able to make it do that a second time. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sun Jan 22 20:37:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVTZb-00079t-B0 for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 20:37:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVTZZ-00079h-4W for emacs-devel@gnu.org; Sun, 22 Jan 2017 20:37:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVTZY-0003vU-Bf for emacs-devel@gnu.org; Sun, 22 Jan 2017 20:37:29 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:41930) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVTZU-0003tK-ER; Sun, 22 Jan 2017 20:37:24 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D3FD61600A3; Sun, 22 Jan 2017 17:37:19 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id FbGGm5yZmryu; Sun, 22 Jan 2017 17:37:19 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id EFB641600A9; Sun, 22 Jan 2017 17:37:18 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id mpPNu8QnHAgX; Sun, 22 Jan 2017 17:37:18 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.188.248]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id C5E061600A3; Sun, 22 Jan 2017 17:37:18 -0800 (PST) Subject: Re: CEDET Merge To: David Engster , Glenn Morris References: <87r348ul9n.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87vataadkk.fsf@red-bean.com> <87k29ps7ai.fsf@engster.org> <83vat862p9.fsf@gnu.org> <8my3y4xo49.fsf@fencepost.gnu.org> <83fukc5kfl.fsf@gnu.org> <8c7f5o8cu0.fsf@fencepost.gnu.org> <8760l63gd9.fsf@engster.org> Cc: kfogel@red-bean.com, edward.steere@gmail.com, Eli Zaretskii , stephen_leake@stephe-leake.org, emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Sun, 22 Jan 2017 17:37:18 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <8760l63gd9.fsf@engster.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 01:37:30 -0000 David Engster wrote: > Yes, that's a problem with long-living feature branches. It'd be nice i= f > 'make ChangeLog' would use the commit date of the merge commit for all > commits that entered Emacs through a branch merge. As I understand it, that's not easy since git does not prefer one branch = to the=20 other in a merge, so any scheme we come up with will be as likely to reda= te=20 commits already in the master as to redate commits entering through the m= erge. > If that isn't easily possible, the person who does the merge could do a > filter-branch before merging, setting GIT_COMMITTER_DATE to the current > date Something like that should work. We aren't doing that now, which causes p= roblems=20 like the confusion noted. >(if 'make ChangeLog' would actually use the committer date, which > AFAICS it currently does not). gitlog-to-changelog uses %ct, not %at, for its 'git log' format, so 'make= =20 ChangeLog' should already be using committer date. From MAILER-DAEMON Sun Jan 22 22:30:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVVLD-0000QN-6Y for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 22:30:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVL9-0000Q2-Pw for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:30:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVVL6-0003zN-H0 for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:30:43 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48065) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVL6-0003zJ-DH; Sun, 22 Jan 2017 22:30:40 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4293 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVVL5-0002bz-6k; Sun, 22 Jan 2017 22:30:39 -0500 Date: Mon, 23 Jan 2017 05:30:38 +0200 Message-Id: <83efzu4fmp.fsf@gnu.org> From: Eli Zaretskii To: Fabrice Popineau CC: lekktu@gmail.com, ofv@wanadoo.es, emacs-devel@gnu.org In-reply-to: (message from Fabrice Popineau on Sun, 22 Jan 2017 21:38:39 +0100) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> <83vat73uoc.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 03:30:44 -0000 > From: Fabrice Popineau > Date: Sun, 22 Jan 2017 21:38:39 +0100 > Cc: Juanma Barranquero , Óscar Fuentes , > Emacs developers > > > + '(magickwand "libMagickWand-7.Q16HDRI-0.dll" "libMagickWand-7.Q16-0.dll") > > + '(magickcore "libMagickCore-7.Q16HDRI-0.dll" "libMagickCore-7.Q16-0.dll") > > Does this mean we will only support ImageMagick 7.x and later on > Windows? If so, the configure-time test should be changed, since it > currently allows 6.x, I think. > > Given that MSYS2 itself has switched to IM7, I don't see the point to keep support forIM6. But ImageMagick libraries were available as DLLs regardless of what MSYS2 did or didn't do, so I think we should have associations for those binaries as well, for ImageMagick 6.x. > > @@ -8406,7 +8776,7 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int > ino) > > PixelWand **source, **dest; > > size_t source_width, source_height; > > ssize_t source_left, source_top; > > - MagickPixelPacket pixel; > > + PixelInfo pixel; > > What is this about? > > AFAIR they changed the names of a few structures. Then this should be conditioned on ImageMagick version, and we probably need a Lisp variable holding the version number to look for DLLs that are specific to the version against which Emacs was compiled, similar to libpng-version. From MAILER-DAEMON Sun Jan 22 22:36:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVVQz-0002gS-DT for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 22:36:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58310) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVQx-0002fB-I1 for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:36:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVVQu-0005iq-EH for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:36:43 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48262) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVQu-0005ik-BF; Sun, 22 Jan 2017 22:36:40 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4298 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVVQr-0008Of-Nb; Sun, 22 Jan 2017 22:36:39 -0500 Date: Mon, 23 Jan 2017 05:36:37 +0200 Message-Id: <83d1fe4fcq.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Sun, 22 Jan 2017 22:15:14 +0100) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <834m0r5aiu.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 03:36:44 -0000 > From: Juanma Barranquero > Date: Sun, 22 Jan 2017 22:15:14 +0100 > Cc: Emacs developers > > > Given user feedback we > > have, I think we should not create GUI frames when Emacs is invoked > > with -nw, though, at least by default. > > I don't understand this. Creating GUI frames in a -nw session shouldn't happen. "Mimicking" the GUI frames in > the -nw session is what the code intended to do, so if you have three frames of whatever size and other > parameters, the TTY session would start with three tty frames (F1 to F3). Then going back to GUI mode would > restore the original GUI frames (not the tty ones). That's fine with me, but if you read bug#17693, you will see that the original report there explicitly describes a situation where GUI frames were created by restoring desktop in a -nw session. I thought this was a feature, but if you say it's a bug, fixing it will fulfill user expectations. > > . emacs > > . emacs -nw > > . emacs > > That is exactly what worked before (or, at least, it worked in all my tests) and it's broken now. Because the original code had worse problems, and we didn't know how to fix it better than that. From MAILER-DAEMON Sun Jan 22 22:37:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVVRV-00037H-Mf for mharc-emacs-devel@gnu.org; Sun, 22 Jan 2017 22:37:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVRT-00035G-0C for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:37:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVVRP-0005yJ-Ur for emacs-devel@gnu.org; Sun, 22 Jan 2017 22:37:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48271) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVVRP-0005yF-RW; Sun, 22 Jan 2017 22:37:11 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4299 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVVRO-0000kA-Vl; Sun, 22 Jan 2017 22:37:11 -0500 Date: Mon, 23 Jan 2017 05:37:10 +0200 Message-Id: <83bmuy4fbt.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: fabrice.popineau@gmail.com, ofv@wanadoo.es, lekktu@gmail.com, emacs-devel@gnu.org In-reply-to: <8d4cbeca-e007-da33-46bb-298f8c95efcb@cs.ucla.edu> (message from Paul Eggert on Sun, 22 Jan 2017 13:22:48 -0800) Subject: Re: 64-bit build on Windows Reply-to: Eli Zaretskii References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <83y3y5681f.fsf@gnu.org> <83h94s5kzi.fsf@gnu.org> <838tq45gsk.fsf@gnu.org> <83vat73uoc.fsf@gnu.org> <8d4cbeca-e007-da33-46bb-298f8c95efcb@cs.ucla.edu> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 03:37:16 -0000 > Cc: Óscar Fuentes , > Juanma Barranquero , Emacs developers > From: Paul Eggert > Date: Sun, 22 Jan 2017 13:22:48 -0800 > > Fabrice Popineau wrote: > > Given that MSYS2 itself has switched to IM7, I don't see the point to keep > > support for IM6. > > My vague impression is that ImageMagick 7 is still too buggy on GNU/Linux to be > useful for Emacs there. Is my impression incorrect? Even if I'm wrong, Emacs > should continue to support IM6 for a while on non-MS-Windows platforms, to > support users who don't have IM7 installed yet. I agree. From MAILER-DAEMON Mon Jan 23 02:32:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVZ7b-0004jp-7D for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 02:32:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33750) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVZ7Y-0004jj-4y for emacs-devel@gnu.org; Mon, 23 Jan 2017 02:32:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVZ7T-0006WJ-GT for emacs-devel@gnu.org; Mon, 23 Jan 2017 02:32:56 -0500 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:34070) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVZ7T-0006W6-6s for emacs-devel@gnu.org; Mon, 23 Jan 2017 02:32:51 -0500 Received: by mail-pg0-x241.google.com with SMTP id t6so13040568pgt.1 for ; Sun, 22 Jan 2017 23:32:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=RysffLWfAaEvts+sKczexhDr3iqJSWkDrbDEUo9u3tg=; b=oNPRtq2sZXRQJ9pVqNnww1fJc2KCwnIC7aq2fsm+nESt2xlFiS1RUT86Rx1+/F5mqB o93JyuYHrNW7BCE6Id398EAwQN5mFPfJubuVdZX+JI14Dh+Mg8epUj9ETarf4e02P44H Ihze3/G5LLj24TIDlXZLBPvr6C/hBqDyfCNJnt+LsTCyyYc/gJzWXndEFWE2wEfiUzMs unz4gbxCe7XULTKtXrc7BPy44mMwHeqeh0Pz77G0TUnNWZUXnc2dGB+d/LeQXLTh1b2D gj6uRV2p9wzNZ4vPgLJcis7rG26HR5MhLQ7NHC0x4mA/2RUKTQW8lzR+zR0TqcX97L5p n06w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=RysffLWfAaEvts+sKczexhDr3iqJSWkDrbDEUo9u3tg=; b=J4FhCQ8DoB5p9Obk2PlluKiId5nUey68/wq0CoyK7tPV3c5eurQ+D/uvijgOCzjNrC ejjG/isYoBat24kFqzqkVWcUJN6A5nZYDk70ikknNGRWnolTuEZYncXmLYyWmfBqxwSn lpH4QqZTDTrvc7CXsJHm8Acja8RzRmqmgHnnj+1BnYqctXu0RqMwmWWvLi0kNbYC3d1f 7hdEzCoERpHzRzZDO/aUD4nB4nkeQJJZW8rHvLYn3qmpLl0hn6GEKpfhUo/1rlYdda3d J61xL2yqzgkLxywVz9aLaDo9BV/V5r5Qn/givCM8/Q//HYFVwsFtrPiSEJToc8VeptBr Ii/g== X-Gm-Message-State: AIkVDXIzq9tl0lJ6cq5r46ssYCQlyxnBOCy7WNTmMhG/q97pIJj+mkJTxnM/Cc/1E3C/gw== X-Received: by 10.84.206.37 with SMTP id f34mr41177557ple.35.1485156770140; Sun, 22 Jan 2017 23:32:50 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id 21sm34240177pfy.4.2017.01.22.23.32.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Jan 2017 23:32:49 -0800 (PST) From: Tino Calancha To: Juri Linkov Cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> Date: Mon, 23 Jan 2017 16:32:44 +0900 In-Reply-To: <87h94qu01u.fsf@mail.linkov.net> (Juri Linkov's message of "Mon, 23 Jan 2017 01:50:21 +0200") Message-ID: <87inp6nsdf.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c05::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 07:32:58 -0000 Juri Linkov writes: >> +(defface occur-current-line-face >> + '((t (:inherit lazy-highlight))) >> + "Face for highlighting the current line in *Occur* buffer." > > I'm not sure about the new face =E2=80=98occur-current-line-face=E2=80=99. > Looking at the list of faces from =E2=80=98M-x list-faces-display=E2=80= =99, there are > no other occur faces. It would be confusing for the users to see > a single occur-related face in this list, whereas all other occur-related > faces are customized by =E2=80=98list-matching-lines-*=E2=80=99 variables= only. > > For consistency with other occur faces, maybe better to have a variable > > (defcustom list-matching-lines-current-line-face 'lazy-highlight > > and another boolean customizable variable list-matching-lines-jump-to-cur= rent-line > to enable locating the current line. Thank you. Implemented in the new patch below: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; >From 56d13fa11b01260d9088d820a5cf6cd04d042848 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Mon, 23 Jan 2017 16:26:22 +0900 Subject: [PATCH 1/2] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional arg REGION; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 46 +++++++++++++++++++++++++++++++--= ---- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. =20 @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp= -intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings =20 @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. =20 @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index ca66df6261..9eb5d82099 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -310,6 +310,8 @@ substituted by a home directory by writing it as "/foo:= /:/~/file". * Editing Changes in Emacs 26.1 =20 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..00e73157ff 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) =20 -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. =20 @@ -1369,6 +1374,10 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. =20 +Optional arg REGION, if non-nil, mean restrict search to the +specified region. Otherwise search the entire buffer. +When REGION is non-nil, it must be a cons (START . END). + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1395,24 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (and (use-region-p) (region-bounds)))) + (let* ((start (car region)) + (end (cdr region)) + (in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) =20 (defvar ido-ignore-item-temp-list) =20 @@ -1545,13 +1570,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1711,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (=3D matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1721,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) --=20 2.11.0 >From 417ad35f210d74231a3529fcc44cb8f77127fb86 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Mon, 23 Jan 2017 16:26:35 +0900 Subject: [PATCH 2/2] Show current line highlighted in *Occur* buffer * lisp/replace.el (list-matching-lines-current-line-face) (list-matching-lines-jump-to-current-line): New user options. (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'list-matching-lines-current-line-face'. Set point on the first matching line after the current one. * etc/NEWS: Add entry for the new option. --- etc/NEWS | 4 ++++ lisp/replace.el | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++= ---- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 9eb5d82099..9b74ce16ed 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -311,6 +311,10 @@ substituted by a home directory by writing it as "/foo= :/:/~/file". * Editing Changes in Emacs 26.1 =20 =20 +** Two new user options 'list-matching-lines-jump-to-current-line' and +'list-matching-lines-current-line-face' to show highlighted the current li= ne +in the *Occur* buffer. + ** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. diff --git a/lisp/replace.el b/lisp/replace.el index 00e73157ff..1a80dc16c6 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1304,6 +1304,19 @@ list-matching-lines-buffer-name-face :type 'face :group 'matching) =20 +(defcustom list-matching-lines-current-line-face 'lazy-highlight + "Face used by \\[list-matching-lines] to highlight the current line." + :type 'face + :group 'matching + :version "26.1") + +(defcustom list-matching-lines-jump-to-current-line nil + "If non-nil, \\[list-matching-lines] shows the current line highlighted. +Set the point right after such line when there are matches after it." +:type 'boolean +:group 'matching +:version "26.1") + (defcustom list-matching-lines-prefix-face 'shadow "Face used by \\[list-matching-lines] to show the prefix column. If the face doesn't differ from the default face, @@ -1364,6 +1377,9 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) =20 (defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. @@ -1381,6 +1397,9 @@ occur The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. +If `list-matching-lines-jump-to-current-line' is non-nil, then show +highlighted the current line and, if there are matches after it, then +set point in the first of those matches. =20 If REGEXP contains upper case characters (excluding those preceded by `\\') and `search-upper-case' is non-nil, the matching is case-sensitive. @@ -1408,7 +1427,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1507,7 +1532,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1559,6 +1585,10 @@ occur-1 (if (=3D count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1571,7 +1601,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1579,12 +1610,16 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1685,6 +1720,18 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p) + (>=3D curr-line orig-line)) + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1698,6 +1745,18 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p)) + (with-current-buffer out-buf + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1731,8 +1790,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) --=20 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.6) of 2017-01-22 Repository revision: 03de82fe7ca09ab40fbcae394d4fcdfe3374496e From MAILER-DAEMON Mon Jan 23 07:42:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVdww-0004ZT-Du for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 07:42:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43181) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVdwt-0004WB-6O for emacs-devel@gnu.org; Mon, 23 Jan 2017 07:42:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVdwo-000084-7l for emacs-devel@gnu.org; Mon, 23 Jan 2017 07:42:15 -0500 Received: from mailgw.mycpanelcloud.co.uk ([185.116.214.213]:60774) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVdwn-0008Uh-UE for emacs-devel@gnu.org; Mon, 23 Jan 2017 07:42:10 -0500 Received: from localhost (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id E126DC4F03 for ; Mon, 23 Jan 2017 12:41:02 +0000 (GMT) X-Virus-Scanned: by SpamTitan at mycpanelcloud.co.uk Received: from mailgw.mycpanelcloud.co.uk (localhost [127.0.0.1]) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTP id 2BAA9C4EFB for ; Mon, 23 Jan 2017 12:41:02 +0000 (GMT) Received: from cloud103.planethippo.com (cloud103.planethippo.com [31.216.48.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mailgw.mycpanelcloud.co.uk (Postfix) with ESMTPS id 1E584C4ED6 for ; Mon, 23 Jan 2017 12:41:02 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=russet.org.uk; s=default; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ac6hsTKom2aBOp2jnd1BEMfvteLV4517r6JUDq0Y9U8=; b=1Hzn3/OcJbVhX0w1y+MFagOKX 2ZjOCmTq0dJUxBs2cJjKSM75vXCmwQI4G82uvu9vRn+3OsS8mzw/uQ+GRuEoTnsK9d9DMZPlPv98p oKO+71qjwustewFEt16vhe84lBefvXKSVg3yntakIIxWCpOxX3o07jczd1abWF9mAG7euE8u8ARt9 cVj2pP9QyUf0pUqftvvt5qHITFsfIWFUzaD5FCAK3WXBPnotVCG2ae3Hri0kpgNZp8mZFO6RAfNGg cfdLYqdSn5AFslFbZNE2WZCdeERd4bf1ilxx7pvQzNSEren8+aWGq2s78Mff8778ddkKsteAjTT4g I3iFQDuvw==; Received: from janus-nat-128-240-225-37.ncl.ac.uk ([128.240.225.37]:39936 helo=russet.org.uk) by cloud103.planethippo.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cVdw5-001sMs-9D; Mon, 23 Jan 2017 12:41:25 +0000 From: phillip.lord@russet.org.uk (Phillip Lord) To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: standard output/error/input streams References: <87wpdxu8yt.fsf@russet.org.uk> Date: Mon, 23 Jan 2017 12:41:24 +0000 In-Reply-To: (Stefan Monnier's message of "Fri, 20 Jan 2017 16:52:17 -0500") Message-ID: <878tq27xu3.fsf@russet.org.uk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud103.planethippo.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - russet.org.uk X-Get-Message-Sender-Via: cloud103.planethippo.com: authenticated_id: phillip.lord@russet.org.uk X-Authenticated-Sender: cloud103.planethippo.com: phillip.lord@russet.org.uk X-detected-operating-system: by eggs.gnu.org: FreeBSD 8.x [fuzzy] X-Received-From: 185.116.214.213 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 12:42:16 -0000 Stefan Monnier writes: >> That does make me realize that I could use `start-process` with an executable >> that does what I want, and use `process-send-string` to bypass the involvement >> of any buffers. Thanks for mentioning it. > > Right. What I was thinking of was to add a `make-file-process` > primitive so you don't need an external executable. If we had a function to go to generate a stream from a process then we could have our cake and eat it. Phil From MAILER-DAEMON Mon Jan 23 08:11:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVeOs-0001ea-6i for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 08:11:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51837) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVeOp-0001dg-P6 for emacs-devel@gnu.org; Mon, 23 Jan 2017 08:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVeOl-0000JX-Vf for emacs-devel@gnu.org; Mon, 23 Jan 2017 08:11:07 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:58438) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVeOl-0000JJ-QA for emacs-devel@gnu.org; Mon, 23 Jan 2017 08:11:03 -0500 Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0NDB06d014668; Mon, 23 Jan 2017 08:11:01 -0500 Received: by ceviche.home (Postfix, from userid 20848) id C4BDB66261; Mon, 23 Jan 2017 08:11:00 -0500 (EST) From: Stefan Monnier To: phillip.lord@russet.org.uk (Phillip Lord) Cc: emacs-devel@gnu.org Subject: Re: standard output/error/input streams Message-ID: References: <87wpdxu8yt.fsf@russet.org.uk> <878tq27xu3.fsf@russet.org.uk> Date: Mon, 23 Jan 2017 08:11:00 -0500 In-Reply-To: <878tq27xu3.fsf@russet.org.uk> (Phillip Lord's message of "Mon, 23 Jan 2017 12:41:24 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5929=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5929> : inlines <5639> : streams <1730317> : uri <2362574> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 13:11:08 -0000 > If we had a function to go to generate a stream from a process then we > could have our cake and eat it. (lambda (c) (process-send-string PROC (string c))) ? BTW, w.r.t stdin/stdout/stderr: these are special because they may be inaccessible to something like a subprocess (or at least it can be nigh on impossible for the Emacs process itself to determine where std(in|out|err) are going). IOW, additionally to make-file-process, we'd need a make-process-from-open-file-descriptor. Stefan From MAILER-DAEMON Mon Jan 23 09:16:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVfQH-0004Fl-Db for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 09:16:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41132) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVfQD-0004AO-U1 for emacs-devel@gnu.org; Mon, 23 Jan 2017 09:16:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVfQC-0003oA-NJ for emacs-devel@gnu.org; Mon, 23 Jan 2017 09:16:37 -0500 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:37129) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVfQA-0003nS-Ne; Mon, 23 Jan 2017 09:16:34 -0500 Received: by mail-wm0-x22d.google.com with SMTP id c206so157662172wme.0; Mon, 23 Jan 2017 06:16:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/F74F/Weay5pxq7dEmA0bwjkrGqBwXIdlvvXVKs0eoM=; b=qzpb2BosyysSZdVdv/jq7yqjBPP2qW7jTDWQMrZ8y0udCL0QCbJP1GD/RYxYgDpllE iVh9SVO2JN4gTcnLjWZVNM+yDhPJJ8yrLzHfQN7/ieRXZdz6QrS5LGvCeny0CoPRyNNG npHhnAMZu7CBUzA+KzLasIhKnq/Hn57HrTeZT4XceFU7coYs7jg3CTzsOxIvyxKgMfZe wBlSUMYdcbNn8izkA138xYPz/mjoWtg4J+ipf49FD34AWKME4wT0EirCnEs25PIqy7PF 77Yh4i77xs0ahFZ4bKU23Pzd7mcCR7sn3O56XD+FGxbe2NA1JZoLxNLUc+PYmQ4euDym lJiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/F74F/Weay5pxq7dEmA0bwjkrGqBwXIdlvvXVKs0eoM=; b=H53VbYG1G63HKmtyy0ZW+khzuSZxMSbqEGkD46vf/Q0ylLvkH/G0oWD9dlf9vxiU5J n89LbzYPkfDPFOUThSPsXfceOZ5lexKoy7nPViDDDuNx+o9afodW6jIfpDsABO4OWb7j fR6s2uGQCb8tYRwviBEwS5OAYlyi7uQP+fVUKHEozQvPS17IJwqbIdvdi+V0E11Vcnj0 +NDVUxCfUrEjlcVI86qSjH1iKsGOV28MuJPhgrcMTzX/jiY8OCArHngjvIO/vLHzAuCr GJx6LrQmJ0d5gKtGidMMF3mnytohNUI4eiA2i+LUjqeiydctGeK6PrqCA3j4kXguQX/6 416Q== X-Gm-Message-State: AIkVDXJbmEtBp3RPx55MrpRH8NQzj7o699rLRz4CHPsVziJoEedIeRS9z6RePHDoZqRHJHoeSvss5aKK8qCQ+Q== X-Received: by 10.223.153.15 with SMTP id x15mr23963471wrb.179.1485180993401; Mon, 23 Jan 2017 06:16:33 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Mon, 23 Jan 2017 06:15:52 -0800 (PST) In-Reply-To: <83d1fe4fcq.fsf@gnu.org> References: <834m0r5aiu.fsf@gnu.org> <83d1fe4fcq.fsf@gnu.org> From: Juanma Barranquero Date: Mon, 23 Jan 2017 15:15:52 +0100 Message-ID: Subject: Re: GUI vs TTY when saving & restoring framesets To: Eli Zaretskii Cc: Emacs developers Content-Type: multipart/alternative; boundary=f403045d5d7289f78e0546c3a597 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 14:16:39 -0000 --f403045d5d7289f78e0546c3a597 Content-Type: text/plain; charset=UTF-8 On Mon, Jan 23, 2017 at 4:36 AM, Eli Zaretskii wrote: > That's fine with me, but if you read bug#17693, you will see that the > original report there explicitly describes a situation where GUI > frames were created by restoring desktop in a -nw session. It wasn't the intention. OTOH, as a -nw session on GNU/Linux can have both GUI and tty frames, I'm not sure it is a bug, just we're entering unspecified territory. I mean, what if the user creates a GUI frame from a -nw session, and then exits and reenters Emacs in -nw mode. Shouldn't the GUI frame be restored too? We haven't decided (likely because the issue didn't present itself earlier than that bug report) how to deal when running mixed frames' instances. Thinking about these issues, I suddenly realized that, if we were to treat -nw and GUI sessions as different (frameset-wise, I mean), we could just save the GUI frameset and the -nw frameset as distinct entities in the desktop file, and just restore the one appropriate. No mixing. Currently, if you have an emacs GUI instance with frames A, B, and C. exit it, then enter a -nw session, frameset-restore tries to create frames A', B' and C' which share as many characteristics from A, B and C as possible. Obviously not size or position, but windows, buffers shown in them, etc. Then you return to GUI and get back A, B and C (assuming the -nw session didn't change or delete them). Well, it's not what happens *now*, but it is how the code was designed to perform. But, is that what the user expects? Wouldn't it be easier to keep these kinds of sessions apart? Additionally, frameset.el is designed to allow manipulation of framesets as objects, meaning that nothing precludes saving several of them (either in the desktop save file, or another file) with some kind of user identifier (a name or whatever) and then restoring on demand the desired frameset. It's just that desktop.el takes the easiest route, which is to save and restore a single frameset. But perhaps this isn't how we should be doing it. All of this (bugs aside) is easy to implement, but before changing one line of code we should know what we want. > Because the original code had worse problems, and we didn't know how > to fix it better than that. Wouldn't want anyone to believe that I was complaining or belittling you or anyone who had to deal with these bugs, I'm deeply sorry. Not my intention at all. It's me who wrote the code and went MIA. My fault entirely. --f403045d5d7289f78e0546c3a597 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Mon, Jan 23, 2017 at 4:36 AM, Eli Zaretskii <eliz@gnu.org> wrote:

> That&= #39;s fine with me, but if you read bug#17693, you will see that the
>= ; original report there explicitly describes a situation where GUI
> = frames were created by restoring desktop in a -nw session.

It wasn't the intention. OTOH, as a -nw session on GNU/Linux c= an have both GUI and tty frames, I'm not sure it is a bug, just we'= re entering unspecified territory. I mean, what if the user creates a GUI f= rame from a -nw session, and then exits and reenters Emacs in -nw mode. Sho= uldn't the GUI frame be restored too? We haven't decided (likely be= cause the issue didn't present itself earlier than that bug report) how= to deal when running mixed frames' instances.

Thinking about these issues, I suddenly realized that, if we were to treat= -nw and GUI sessions as different (frameset-wise, I mean), we could just s= ave the GUI frameset and the -nw frameset as distinct entities in the deskt= op file, and just restore the one appropriate. No mixing.

Currently, if you have an emacs GUI instance with frames A, B, and = C. exit it, then enter a -nw session, frameset-restore tries to create fram= es A', B' and C' which share as many characteristics from A, B = and C as possible. Obviously not size or position, but windows, buffers sho= wn in them, etc. Then you return to GUI and get back A, B and C (assuming t= he -nw session didn't change or delete them). Well, it's not what h= appens *now*, but it is how the code was designed to perform.
But, is that what the user expects? Wouldn't it be easier t= o keep these kinds of sessions apart?

Additionally= , frameset.el is designed to allow manipulation of framesets as objects, me= aning that nothing precludes saving several of them (either in the desktop = save file, or another file) with some kind of user identifier (a name or wh= atever) and then restoring on demand the desired frameset. It's just th= at desktop.el takes the easiest route, which is to save and restore a singl= e frameset. But perhaps this isn't how we should be doing it.

All of this (bugs aside) is easy to implement, but before c= hanging one line of code we should know what we want.

<= div>> Because the original code had worse problems, and we didn't kn= ow how
> to fix it better than that.

<= div>Wouldn't want anyone to believe that I was complaining or belittlin= g you or anyone who had to deal with these bugs, I'm deeply sorry. Not = my intention at all. It's me who wrote the code and went MIA. My fault = entirely.

--f403045d5d7289f78e0546c3a597-- From MAILER-DAEMON Mon Jan 23 10:49:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVgs0-0007Rx-Eb for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 10:49:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33293) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVgrx-0007QD-7y for emacs-devel@gnu.org; Mon, 23 Jan 2017 10:49:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVgrt-00033W-96 for emacs-devel@gnu.org; Mon, 23 Jan 2017 10:49:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55878) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVgrt-00033S-5q; Mon, 23 Jan 2017 10:49:17 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4570 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cVgrs-0006As-G8; Mon, 23 Jan 2017 10:49:16 -0500 Date: Mon, 23 Jan 2017 17:49:12 +0200 Message-Id: <838tq14w07.fsf@gnu.org> From: Eli Zaretskii To: Juanma Barranquero CC: emacs-devel@gnu.org In-reply-to: (message from Juanma Barranquero on Mon, 23 Jan 2017 15:15:52 +0100) Subject: Re: GUI vs TTY when saving & restoring framesets Reply-to: Eli Zaretskii References: <834m0r5aiu.fsf@gnu.org> <83d1fe4fcq.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 15:49:22 -0000 > From: Juanma Barranquero > Date: Mon, 23 Jan 2017 15:15:52 +0100 > Cc: Emacs developers > > > That's fine with me, but if you read bug#17693, you will see that the > > original report there explicitly describes a situation where GUI > > frames were created by restoring desktop in a -nw session. > > It wasn't the intention. OTOH, as a -nw session on GNU/Linux can have both GUI and tty frames, I'm not sure > it is a bug, just we're entering unspecified territory. I mean, what if the user creates a GUI frame from a -nw > session, and then exits and reenters Emacs in -nw mode. Shouldn't the GUI frame be restored too? We > haven't decided (likely because the issue didn't present itself earlier than that bug report) how to deal when > running mixed frames' instances. A I've said earlier, if we think different users might want different behavior in this respect, we should have a customizable option. In any case, the simplest case should work as expected: when the desktop file records only one frame, it shall be restored as a single text-mode frame when Emacs is started with -nw, I think. > Thinking about these issues, I suddenly realized that, if we were to treat -nw and GUI sessions as different > (frameset-wise, I mean), we could just save the GUI frameset and the -nw frameset as distinct entities in the > desktop file, and just restore the one appropriate. No mixing. I'm not sure this is desirable. It is IMO more natural to have the same frameset for all sessions. But that's me. Full disclosure: I never restore my sessions into Emacs started with -nw, except for testing these issues. > All of this (bugs aside) is easy to implement, but before changing one line of code we should know what we > want. Frame restoration is a relatively recent feature, so I think we should first make sure it works correctly in the simple scenarios, before we start extending it to support more exotic ones. As one data point, I don't think anyone has yet requested the features you describe above. > > Because the original code had worse problems, and we didn't know how > > to fix it better than that. > > Wouldn't want anyone to believe that I was complaining or belittling you or anyone who had to deal with these > bugs, I'm deeply sorry. Not my intention at all. It's me who wrote the code and went MIA. My fault entirely. I didn't write the above to assign blame. We just did as best we could, under pressure from a looming release. From MAILER-DAEMON Mon Jan 23 11:15:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVhHC-0001QI-W2 for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 11:15:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40987) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVhHA-0001QC-HS for emacs-devel@gnu.org; Mon, 23 Jan 2017 11:15:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVhH9-0002l3-Da for emacs-devel@gnu.org; Mon, 23 Jan 2017 11:15:24 -0500 Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]:35561) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVhH7-0002kS-Eg; Mon, 23 Jan 2017 11:15:21 -0500 Received: by mail-wm0-x230.google.com with SMTP id r126so140524192wmr.0; Mon, 23 Jan 2017 08:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/QprjK+G9fyuHYonagbNrb1kFaFfN9yxhr8VwpbtqPc=; b=HI+pKd5a24lhwIvbFrQAvBjYBytPqG1jeKKPa9hFjf4jjFlVgweWJDC96xtnjyiix5 zKO1zNLmzvt1+a49UyEz4M+5dr+PodLtgCNX5MVwQ7UlCNQQ5kD2s1/4W5cuOj4qWR/v Lbe7/gHhKOUPHD/N7tNdhhRjkpS+liTKT16y3HomZ1SA6TPhjq29G1pjX3UlaWhuC6Cz 6bsEeRrMcZL1+UsZZ37vp4pUyxKSLn2tZ63NK7BJsDEmKqc2Ey7ypFlXR8W1bHBSnvfk 8kDq8ucGfxG57ajkLoOaLy0vWoLkGJIvehO2qJsbWqRgdt8mYPTdRQJpxwR1wk1NBlEf WrGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/QprjK+G9fyuHYonagbNrb1kFaFfN9yxhr8VwpbtqPc=; b=Ce+nfHbg2O7Vc0dRIWeulZCxuZ/4O/ewCBnxzLtSQw3gW7qaHsvEf4y1MXW5SMQ+sW jlBRSNwuV0h/kLXf7eezSJ8TMqU82c1nsWt01B24KKS8M5tcumy19J6i6doVJjUEASkX AQSMobz/H5DXit8owysabCPEADfg2m9hvaa/XxDTvYVxtgG+snqooD9ywWrTMQNLmqG2 3S9WE7kYI98nNwNEYbr32zwgVTm1WvR1iLKPP7QjE2fQOggdPUux/+HvV9FfFvShzVIp WejdYmkFewaEdkHQTayfva00N8hr4BR9REtxkwfz+hTXhDNwrzzSxUpiXH5WRaPyXXn5 3NUQ== X-Gm-Message-State: AIkVDXIij21mZyiipCQyii4yWIIGEwsouHX7LUexWw6OLb6HuVa7iZbFbDPihnwEGBdlzSyauOR2+iY05+M9yA== X-Received: by 10.223.152.210 with SMTP id w76mr27358068wrb.72.1485188120195; Mon, 23 Jan 2017 08:15:20 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.172.129 with HTTP; Mon, 23 Jan 2017 08:14:39 -0800 (PST) In-Reply-To: <838tq14w07.fsf@gnu.org> References: <834m0r5aiu.fsf@gnu.org> <83d1fe4fcq.fsf@gnu.org> <838tq14w07.fsf@gnu.org> From: Juanma Barranquero Date: Mon, 23 Jan 2017 17:14:39 +0100 Message-ID: Subject: Re: GUI vs TTY when saving & restoring framesets To: Eli Zaretskii Cc: Emacs developers Content-Type: multipart/alternative; boundary=001a114781c8543a7b0546c54ee3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 16:15:25 -0000 --001a114781c8543a7b0546c54ee3 Content-Type: text/plain; charset=UTF-8 On Mon, Jan 23, 2017 at 4:49 PM, Eli Zaretskii wrote: > A I've said earlier, if we think different users might want different > behavior in this respect, we should have a customizable option. Agreed. > In any case, the simplest case should work as expected: when the > desktop file records only one frame, it shall be restored as a single > text-mode frame when Emacs is started with -nw, I think. Yes. I'm surprised this failed. This is basic stuff. > I'm not sure this is desirable. It is IMO more natural to have the > same frameset for all sessions. But that's me. Full disclosure: I > never restore my sessions into Emacs started with -nw, except for > testing these issues. Same here. I never work with -nw except for testing purposes. > Frame restoration is a relatively recent feature, so I think we should > first make sure it works correctly in the simple scenarios, before we > start extending it to support more exotic ones. As one data point, I > don't think anyone has yet requested the features you describe above. Depending where we want to go, these features aren't more exotic, just a generalization of sorts. But I agree with you. Don't want to waste my time with something that people doesn't need. > I didn't write the above to assign blame. I know. But that you don't blame me doesn't mean I don't feel a little guilty. I've disliked when someone started some big (or user-visible) change in Emacs and then disappeared (not a very common occurrence, but not unheard of). And I did the same. Hi pot, meet kettle. --001a114781c8543a7b0546c54ee3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Mon, Jan 23, 2017 at 4:49 PM, Eli Zaretskii <eliz@gnu.org> wrote:
<= br>
> A I've said earlier, if we think different users might wan= t different
> behavior in this respect, we should have a customizable= option.

Agreed.

> In any cas= e, the simplest case should work as expected: when the
> desktop file= records only one frame, it shall be restored as a single
> text-mode= frame when Emacs is started with -nw, I think.

Yes. I= 9;m surprised this failed. This is basic stuff.

&g= t; I'm not sure this is desirable.=C2=A0 It is IMO more natural to have= the
> same frameset for all sessions.=C2=A0 But that's me.=C2=A0= Full disclosure: I
> never restore my sessions into Emacs started wi= th -nw, except for
> testing these issues.

Same her= e. I never work with -nw except for testing purposes.

<= div>> Frame restoration is a relatively recent feature, so I think we sh= ould
> first make sure it works correctly in the simple scenarios, be= fore we
> start extending it to support more exotic ones.=C2=A0 As on= e data point, I
> don't think anyone has yet requested the featur= es you describe above.

Depending where we want to go, the= se features aren't more exotic, just a generalization of sorts. But I a= gree with you. Don't want to waste my time with something that people d= oesn't need.

> I didn't write the above= to assign blame.

I know. But that you don't b= lame me doesn't mean I don't feel a little guilty. I've dislike= d when someone started some big (or user-visible) change in Emacs and then = disappeared (not a very common occurrence, but not unheard of). And I did t= he same. Hi pot, meet kettle.

--001a114781c8543a7b0546c54ee3-- From MAILER-DAEMON Mon Jan 23 11:17:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVhJ3-00025O-AQ for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 11:17:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVhJ1-00025H-Qj for emacs-devel@gnu.org; Mon, 23 Jan 2017 11:17:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVhIx-0003C0-S5 for emacs-devel@gnu.org; Mon, 23 Jan 2017 11:17:19 -0500 Received: from [195.159.176.226] (port=49617 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cVhIx-0003B5-L8 for emacs-devel@gnu.org; Mon, 23 Jan 2017 11:17:15 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cVhIZ-0000jX-NG for emacs-devel@gnu.org; Mon, 23 Jan 2017 17:16:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: GUI vs TTY when saving & restoring framesets Date: Mon, 23 Jan 2017 11:16:42 -0500 Lines: 34 Message-ID: References: <834m0r5aiu.fsf@gnu.org> <83d1fe4fcq.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:0sGI0mQJixtuKmuMx+cTGBsITrc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 16:17:20 -0000 > It wasn't the intention. OTOH, as a -nw session on GNU/Linux can have both > GUI and tty frames, I'm not sure it is a bug, just we're entering > unspecified territory. I mean, what if the user creates a GUI frame from a > -nw session, and then exits and reenters Emacs in -nw mode. Shouldn't the > GUI frame be restored too? We haven't decided (likely because the issue > didn't present itself earlier than that bug report) how to deal when > running mixed frames' instances. I think this is basically the same issue as "multiple X11 servers". IOW, the issue is how to handle frames on multiple "terminals" (in the sense of `frame-terminal`). I believe most users use Emacs in "single terminal" mode with very few exceptions, and even when they occasionally or often use a single Emacs session with frames on several terminals, they most likely don't want the "desktop save&restore" to pay attention to the frames on the "non-main terminal" because at startup those other terminals often don't exist or aren't accessible. There's also an issue of naming: the "main terminal" doesn't need to have a name (and in 99% of the cases shouldn't have a name: if I save an Emacs session in an environment where I had DISPLAY=:5, and try to restore it in an environment where DISPLAY=:4 it should use :4 rather than :5 to open my frames), whereas the other ones need to be named. > Thinking about these issues, I suddenly realized that, if we were to treat > -nw and GUI sessions as different (frameset-wise, I mean), we could just > save the GUI frameset and the -nw frameset as distinct entities in the > desktop file, and just restore the one appropriate. No mixing. Sounds like a good idea. Stefan From MAILER-DAEMON Mon Jan 23 12:39:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cViaW-00087e-IJ for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 12:39:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cViaT-00087H-Sa for emacs-devel@gnu.org; Mon, 23 Jan 2017 12:39:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cViaT-000157-1j for emacs-devel@gnu.org; Mon, 23 Jan 2017 12:39:25 -0500 Received: from mail-out.m-online.net ([212.18.0.10]:55503) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cViaP-000137-0j; Mon, 23 Jan 2017 12:39:21 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 3v6dpr3qrjz3hkdS; Mon, 23 Jan 2017 18:39:16 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3v6dpr333KzvkLV; Mon, 23 Jan 2017 18:39:16 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id fW2V6JuyJwei; Mon, 23 Jan 2017 18:39:15 +0100 (CET) X-Auth-Info: gzN3J9zQ62qOGfBCqCtGaq0BHhFwb5d2p+6RhGlWchM3yANp42fCeJCjqrCbuxvj Received: from igel.home (ppp-88-217-12-68.dynamic.mnet-online.de [88.217.12.68]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Mon, 23 Jan 2017 18:39:15 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id AE65D2C4098; Mon, 23 Jan 2017 18:39:14 +0100 (CET) From: Andreas Schwab To: Alan Mackenzie Cc: Eli Zaretskii , lekktu@gmail.com, emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> X-Yow: Of course, you UNDERSTAND about the PLAIDS in the SPIN CYCLE -- Date: Mon, 23 Jan 2017 18:39:14 +0100 In-Reply-To: <20170122185537.GC12823@acm> (Alan Mackenzie's message of "Sun, 22 Jan 2017 18:55:37 +0000") Message-ID: <87y3y1u14t.fsf@linux-m68k.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.18.0.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 17:39:26 -0000 On Jan 22 2017, Alan Mackenzie wrote: > I care a great deal about it. I have set up keys to in the > global key map to mean "switch to frame Fn". Thus, rather than just > being an arbitrary GUI window, each frame is associated with a particular > function key. I even have "Fn" in the mode line to see which frame I'm > in. Have you considered giving the frames fixed names? Then you won't depend on creation order. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From MAILER-DAEMON Mon Jan 23 13:02:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cViwq-0005hl-Ic for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 13:02:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cViwn-0005hO-Vs for emacs-devel@gnu.org; Mon, 23 Jan 2017 13:02:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cViwm-0001i2-M0 for emacs-devel@gnu.org; Mon, 23 Jan 2017 13:02:30 -0500 Received: from mout.gmx.net ([212.227.17.20]:57661) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cViwi-0001aC-JS; Mon, 23 Jan 2017 13:02:24 -0500 Received: from [192.168.1.100] ([213.162.68.112]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MNdxu-1cbnkn1Ara-0079zU; Mon, 23 Jan 2017 19:02:19 +0100 Message-ID: <58864524.8000603@gmx.at> Date: Mon, 23 Jan 2017 19:02:12 +0100 From: martin rudalics MIME-Version: 1.0 To: Andreas Schwab , Alan Mackenzie CC: lekktu@gmail.com, Eli Zaretskii , emacs-devel@gnu.org Subject: Re: GUI vs TTY when saving & restoring framesets References: <20170122132727.GA12823@acm> <831svv5a4l.fsf@gnu.org> <20170122180010.GB12823@acm> <83o9yz3qtw.fsf@gnu.org> <20170122185537.GC12823@acm> <87y3y1u14t.fsf@linux-m68k.org> In-Reply-To: <87y3y1u14t.fsf@linux-m68k.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:jzFqHg1uA7vaq7lAxBPqukxBA7mUXb9yuwomh89QNJjHxPE7fjj osAB5KEUN1PGA6nDwaEbyQFIPsU8UZwshbHUbr77kVmbTtX3ANI3bpIP4eBDi91zrj3UYjD GU+unIxXcbtXl09moB01x4ewwFFRMLszU4rclgw0IL9LWfnD4fzhFhnhkNfVUSITexZxr5b 8upgo8tupubjE/BAOtVOQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:Py0GiwbvzGg=:dyffPezm5uMqGVzxDwskaB k31wVQzA0wiL5ccxIpajbLOsemo+6A/Oqp7NeFBnvLKFe3r04bKtNoyHpSK3PMpnlQojY36xg Ic7GoTzd0MS6lBOcBYXvvNb7OKmpONrkQNa4hBVSPlGk9Xf0atwZD9TrP6pJFjo2ka4dB+K64 0it6tOASHJ9M5eNRut9rDzNLYX2lC92BgqxFr4fAM0cKWfSyTgBfklTWOcTrknldU9BBKqeYI uNP4L7vEJz7IXjZ8YIEhLkJGknKRjUqOfpvrq5yHXxkNb9yGAssb6hHV5Pv9krFKQiao0XsRl oQz2eO03GdseNL/UfhO+R0AjErXskxMSnLkkDBsQsXrlw31QbXiNlYBf+Jm26N16PMgvsgQvx Z+LtcNVE4SZvrfgmMz8kUJ8eSm5sogcCOLEslj7R3JIKJz2HRZZdRxs7eCGHtZIYGFRcg1he4 PS/GM4kfD6cRfn1b02ioiLify/vphClI2bBggI1p4Bx2LIWfPEO1bDVyCIC1pVa53tzuWnsL2 dbYZY3suCxx97hWqw1TDDJjBLar5CMYlcgk5Qf+B9zU6FfBZQ2FWXN7zN7TRafQluElKAm47t AT2WteGxmigUPaFaAuvYTb/tWxp5jmsI5491eGLjzIDjoQB1jD1tDtVgtRrWCX2/YTKcRPaA+ dw2+68ah7I4nFFIJgaYsTIMMMw47Plfd7D2sIgP2DihSwO2IuYTxlfDD/tJWm+7VOOPE5hb7/ s229w45eIaj///kiHjjSCDctgoppMgpoJb8OyyV7umXodolh98/4ItTfjALEhtJjtPBGbUGJC c0JMzhXdU57T0aM0uj81OIZu1kCsg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 18:02:31 -0000 > Have you considered giving the frames fixed names? Then you won't > depend on creation order. If the frame list is reversed by desktop, =E2=80=98next-frame=E2=80=99 in= the restored session will work like =E2=80=98previous-frame=E2=80=99 in the saved sess= ion. martin From MAILER-DAEMON Mon Jan 23 16:04:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cVlmk-0008Vc-Jb for mharc-emacs-devel@gnu.org; Mon, 23 Jan 2017 16:04:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52619) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVlmh-0008Tp-Qg for emacs-devel@gnu.org; Mon, 23 Jan 2017 16:04:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVlmh-00027Q-5Y for emacs-devel@gnu.org; Mon, 23 Jan 2017 16:04:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59748) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVlmh-00027M-38 for emacs-devel@gnu.org; Mon, 23 Jan 2017 16:04:15 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cVlmg-0005LV-K9; Mon, 23 Jan 2017 16:04:14 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Eli Zaretskii CC: emacs-devel@gnu.org In-reply-to: <837f6nxtdu.fsf@gnu.org> (message from Eli Zaretskii on Mon, 26 Dec 2016 05:26:53 +0200) Subject: Re: scrolling in shell buffer Reply-to: rms@gnu.org References: <83shpl5jnz.fsf@gnu.org> <83y3zb51eq.fsf@gnu.org> <83fulg0w07.fsf@gnu.org> <83k2aqzk37.fsf@gnu.org> <83lgv5xh4v.fsf@gnu.org> <837f6nxtdu.fsf@gnu.org> Message-Id: Date: Mon, 23 Jan 2017 16:04:14 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 21:04:16 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] If setting scroll-conservatively to 101 is the fix to make shell buffers keep the last line at the end of the window, would someone please install a fix to make comint locally do this? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Tue Jan 24 12:00:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW4S5-0000Po-OF for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 12:00:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW4Ru-00007n-Bg for emacs-devel@gnu.org; Tue, 24 Jan 2017 12:00:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW4Rr-0000Z2-BK for emacs-devel@gnu.org; Tue, 24 Jan 2017 12:00:02 -0500 Received: from proofpoint4.lanl.gov ([2001:400:4210:400::a4]:47954) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cW4Rr-0000Xz-5D for emacs-devel@gnu.org; Tue, 24 Jan 2017 11:59:59 -0500 Received: from mailrelay2.lanl.gov (mailrelay2.lanl.gov [128.165.4.103]) by mailgate4.lanl.gov (8.15.0.59/8.15.0.59) with ESMTP id v0OGxuPV031307 for ; Tue, 24 Jan 2017 09:59:56 -0700 Received: from localhost (localhost.localdomain [127.0.0.1]) by mailrelay2.lanl.gov (Postfix) with ESMTP id E9962F66168 for ; Tue, 24 Jan 2017 09:59:55 -0700 (MST) X-NIE-2-Virus-Scanner: amavisd-new at mailrelay2.lanl.gov Received: from bismuth.lanl.gov (bismuth.lanl.gov [128.165.246.103]) by mailrelay2.lanl.gov (Postfix) with ESMTP id D43A1F66167 for ; Tue, 24 Jan 2017 09:59:55 -0700 (MST) Subject: Re: Library defaults To: emacs-devel@gnu.org References: <878tq480hw.fsf@gnus.org> From: Davis Herring Organization: XCP-1 Message-ID: <141d209e-5452-f221-1c74-3c48231b3b84@lanl.gov> Date: Tue, 24 Jan 2017 09:59:55 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <878tq480hw.fsf@gnus.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.15.154, 1.0.8, 0.0.0000 definitions=2017-01-24_13:2017-01-23, 2017-01-24, 1970-01-01 signatures=0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 2001:400:4210:400::a4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 17:00:11 -0000 > So it's really: Make the defaults developer-friendly or source code > friendly? Because all calls from applications will end up looking like > > (with-url ("http..." :cookies t > :cache t > :verbose 0) > ...) > > And that's kinda sad, too. No, they should end up looking like (with-url ("http..." :cookies client4--cookies :cache client4--cache) ...) because it is not only the _fact_ of using cookies and cache but also the contents of those data stores that should be client-specific. Cookies serve as a "persona" that should be under the control of the client/user, and the client/user may know when a cache is stale or unneeded and want to clear it themselves. (I imagine there is also a privacy concern if two personas are used but they share a cache that can be detected via logging the HEAD requests that do not produce a GET.) In case it's not obvious, client4 would if appropriate offer a "don't-use-cookies/cache" customization that caused client4--cookies/cache to be nil. Davis PS - Yes, non-verbose should be the default, but that is indeed merely a stylistic concern. -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. From MAILER-DAEMON Tue Jan 24 13:09:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW5Wo-0002ts-1T for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 13:09:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45680) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW5Wg-0002mf-EZ for emacs-devel@gnu.org; Tue, 24 Jan 2017 13:09:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW5Wb-0001kN-Dd for emacs-devel@gnu.org; Tue, 24 Jan 2017 13:09:02 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:35071) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cW5Wb-0001ds-7L for emacs-devel@gnu.org; Tue, 24 Jan 2017 13:08:57 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cW5WN-0006No-LT; Tue, 24 Jan 2017 19:08:45 +0100 From: Lars Ingebrigtsen To: Davis Herring Cc: emacs-devel@gnu.org Subject: Re: Library defaults References: <878tq480hw.fsf@gnus.org> <141d209e-5452-f221-1c74-3c48231b3b84@lanl.gov> Date: Tue, 24 Jan 2017 19:08:37 +0100 In-Reply-To: <141d209e-5452-f221-1c74-3c48231b3b84@lanl.gov> (Davis Herring's message of "Tue, 24 Jan 2017 09:59:55 -0700") Message-ID: <87a8ag8h5m.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 18:09:08 -0000 Davis Herring writes: >> So it's really: Make the defaults developer-friendly or source code >> friendly? Because all calls from applications will end up looking like >> >> (with-url ("http..." :cookies t >> :cache t >> :verbose 0) >> ...) >> >> And that's kinda sad, too. > > No, they should end up looking like > > (with-url ("http..." :cookies client4--cookies > :cache client4--cache) > ...) Yes, major applications would look like that. (Or really -- eww would implement a function that would bar "third party cookies" etc according to user settings.) But not all clients are larger applications like that, and for those choosing the wrong defaults would result in slightly sad-looking code. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 24 14:03:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW6N2-0006Uz-7Y for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 14:03:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW6Mz-0006Pz-QJ for emacs-devel@gnu.org; Tue, 24 Jan 2017 14:03:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW6Mv-0004C9-OP for emacs-devel@gnu.org; Tue, 24 Jan 2017 14:03:05 -0500 Received: from mail-wj0-x244.google.com ([2a00:1450:400c:c01::244]:32817) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cW6Mv-0004Bq-Iq; Tue, 24 Jan 2017 14:03:01 -0500 Received: by mail-wj0-x244.google.com with SMTP id un2so3182193wjb.0; Tue, 24 Jan 2017 11:03:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version; bh=UbkIQNiClyR3iDTjlAc6oxwlkwuLmCLT+ozzniVQc9s=; b=NSOPwXxLaCYG9X+FAcQZzGK+Ai9zrOTE4uZILy1rFFoL1R7Xu/sqt7gJILj3rXCgQ4 HmOmztsHjb6gXqHnnY9gyVAmqbBJGTMRamBF2U/TqtZhS1XP+JVhvRL3ul8M7si/FiEN fOSrbjF3LALOCdQEYlKtK7U2GwhdCrdxCNG9W/g8huGHJSTFlmfl7KEscQDnMzP/t2uS jVPvLLRRmY319U1Ezp6/D6wrhLTC5CKdkfhkC/KIhYr9WWsJmuP1hMN8pZ4evqOcqUL7 3JbyT5NSHeu2iPfJNkPp8euYo0clglL/eqzWbLk+B11FwuNbPXSW3RDxNtE/LRVwA81V /lBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:date:message-id:mime-version; bh=UbkIQNiClyR3iDTjlAc6oxwlkwuLmCLT+ozzniVQc9s=; b=Q0L5f4uSYTHUJ/oGzY5fvtbBHjrfTFarCM3w2RR/44D4As2+fhNEmGXBTp71N8dUEA f+eo+yiJ5Eb+AXkjO9KiKto0dXKrVlBG0rR2q3Vqpkwr1JY/EXy3EeMzhzn43KoTRZ02 Ld9Tpe4qeIYl7xOjdyNQfHjQxAbHpTxOLWP8nu48RnN0a2CfYGBHEMZxxcDGvoFLDcaE 4Sqhs8vpkQ1DsnObTH6DA6XowvdVO8G/vNP88v6LhjfsDMm4hc3MT8TU73nuZcT8Ndsj mPjXvtQFteI/XcQSYT1fxkS7gLtS+OiHsDzfIhu20GnkUnT+JsydLIo5iNeG6t2iAJ/0 h+qg== X-Gm-Message-State: AIkVDXKAiII0zWK66mLSm0rtyoL4rZszxR3cRvuzPg44ojL2EW9ViGzYzvXIU7Md3Oequg== X-Received: by 10.223.155.197 with SMTP id e5mr29310988wrc.133.1485284579994; Tue, 24 Jan 2017 11:02:59 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id w99sm21361670wrb.5.2017.01.24.11.02.57 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Jan 2017 11:02:58 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87d1fe3hof.fsf@engster.org> (David Engster's message of "Sun, 22 Jan 2017 22:31:44 +0100") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Date: Tue, 24 Jan 2017 21:02:42 +0200 Message-ID: <87tw8o1dt9.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c01::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 19:03:06 -0000 > I just pushed my first try as scratch/last-cedet-merge. > > -David Just pinging back here. Making progress. Will have a first attempt at the tests up tomorrow night. Had some other stuff keeping me away from my PC at home lately. From MAILER-DAEMON Tue Jan 24 15:05:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW7L5-0003F5-NM for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 15:05:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW7L3-0003Ac-5z for emacs-devel@gnu.org; Tue, 24 Jan 2017 15:05:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW7Kz-0003sX-7g for emacs-devel@gnu.org; Tue, 24 Jan 2017 15:05:09 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:36153) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cW7Kz-0003sE-1m for emacs-devel@gnu.org; Tue, 24 Jan 2017 15:05:05 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cW7Kq-0007xx-Ps; Tue, 24 Jan 2017 21:04:59 +0100 From: Lars Ingebrigtsen To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> <83k29o5rvj.fsf@gnu.org> <877f5obckp.fsf@gnus.org> Date: Tue, 24 Jan 2017 21:04:50 +0100 In-Reply-To: (Stefan Monnier's message of "Sat, 21 Jan 2017 17:58:43 -0500") Message-ID: <87vat4ns0t.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 20:05:10 -0000 Stefan Monnier writes: >> Perhaps we could have a vote. The contenders are `with-url', >> `with-fetched-url', `with-url-contents' and >> `with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url'. > > I vote against with-url and > with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url. > The other two seem fine, OK, then we have 1 vote for `with-url', 1.5 votes for `with-fetched-url' and `with-url-contents' each, and zero for `with-contents-in-a-buffer-fetched-from-somewhere-specified-by-the-following-url'. The competition is heating up! -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 24 16:12:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW8Ob-0006zx-Tc for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 16:12:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW8OZ-0006zo-OL for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:12:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW8OU-0007NM-Qs for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:12:51 -0500 Received: from ocolin.muc.de ([193.149.48.4]:34885 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cW8OU-0007N1-Ld for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:12:46 -0500 Received: (qmail 84287 invoked by uid 3782); 24 Jan 2017 21:12:42 -0000 Received: from acm.muc.de (p548C7CD0.dip0.t-ipconnect.de [84.140.124.208]) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 24 Jan 2017 22:12:42 +0100 Received: (qmail 8330 invoked by uid 1000); 24 Jan 2017 21:12:27 -0000 Date: Tue, 24 Jan 2017 21:12:27 +0000 To: emacs-devel@gnu.org Subject: "Like `let*' but ....." Message-ID: <20170124211227.GC7358@acm> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 21:12:53 -0000 Hello, Emacs. The doc string of pcase-let* reads, in its entirety: "Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings of the form (PAT EXP)." What is not clear is precisely HOW `pcase' patterns are used for bindings, and what the semantics of (PAT EXP) are. There is no other documentation of pcase-let* that I'm aware of. Would somebody please explain it to me? In particular, I want to understand the following form from byte-compile-file-form-defalias in bytecomp.el: (pcase-let* ;; `macro' is non-nil if it defines a macro. ;; `fun' is the function part of `arg' (defaults to `arg'). (((or (and (or `(cons 'macro ,fun) `'(macro . ,fun)) (let macro t)) (and (let fun arg) (let macro nil))) arg) ;; `lam' is the lambda expression in `fun' (or nil if not ;; recognized). ((or `(,(or `quote `function) ,lam) (let lam nil)) fun) ;; `arglist' is the list of arguments (or t if not recognized). ;; `body' is the body of `lam' (or t if not recognized). ((or `(lambda ,arglist . ,body) ;; `(closure ,_ ,arglist . ,body) (and `(internal-make-closure ,arglist . ,_) (let body t)) (and (let arglist t) (let body t))) lam)) (unless (byte-compile-file-form-defmumble name macro arglist body rest) (when macro (if (null fun) (message "Macro %s unrecognized, won't work in file" name) (message "Macro %s partly recognized, trying our luck" name) (push (cons name (eval fun)) byte-compile-macro-environment))) (byte-compile-keep-pending form)))) What eludes me is points such as: (i) what variables are being bound? (ii) To what values? (iii) What do the `or's and `and's on Line 4, etc. mean? Incidentally, when I expand that form with macroexpand-all and print it with pp, the resulting form is 173 lines long, totally inscrutable, a typical portion of it looking like this: (if (null x) (let* ((x (cdr x))) (if (consp x) (let* ((x (car x)) (x (cdr x))) (if (null x) (funcall pcase-0 t x) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg))) (funcall pcase-0 nil arg)))) Is this efficient, in either run-time or the size of the byte code produced? -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Tue Jan 24 16:27:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cW8ce-0005Ci-AN for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 16:27:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53440) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cW8ca-0005Bo-Nh for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:27:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cW8cX-0003PR-KH for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:27:20 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35391) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cW8cX-0003PA-Gw for emacs-devel@gnu.org; Tue, 24 Jan 2017 16:27:17 -0500 Received: by mail-qt0-x243.google.com with SMTP id f4so28293650qte.2 for ; Tue, 24 Jan 2017 13:27:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=WlRfeb/HAB5T3OwKLZGaYyub2R2U4tVa0i6FeHDQA1I=; b=bs8HAzmNZwDyKGc7TKUv1TacAS9pKsG3mh8elFQ8i1ZM/7c6YqrpfCSClHhO/tAbEQ ypVTPR5CiGcI61kLEmRwWvyWMhhla8nWY0cqRmpPygC7fgl9xGEdJQhMACFJn6WrQ5BB JZ7Alta/BKTv0mCw49ZeOajWat036bmvtoiHB+FyouPbyp5ANwDklXC47hW8dUWLXi19 bWxz0H81OEFn7+oHCs+YwbUHLhZvqb88pPmk37RNyp+EEMcydyrgVFEIAlPbl36mipQD w9Rg4trAY2z7Zgadk83Z6tj5wZU6/WR3CeNX2E7QZEGHcMoQejL6EnpXl+48kj6QjZrG BTcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=WlRfeb/HAB5T3OwKLZGaYyub2R2U4tVa0i6FeHDQA1I=; b=n/vMU/GRXw7H6W6X6031GPitck3Y64sx41Ohl65176or0fAoNDemGzr8hAzLBYn2NY g5lESoaygxBTFOMOn0ED+gClcUB03VBD2fQ2G4baPfw6uPjWRsncAPxoQ0zL5KbWB89x vAKT07oRgLWm7teRF1uyBEwI8+J+MN3o0jGgNkz8GtmNvUVjEyrTRgEQlGBR2GP370V5 2sO5AyqsKIdIEX5oZKylDfjJj4ANEU3hMy/9RCJjDWqaptTG34zxL2ZmqmOEueu5x6NV v/kE6k7N+1+Ys087w/zwVsHUv43JiLnnsvZZfzLumMtdasP7VxExytm5RoQxBigy2U/p im2A== X-Gm-Message-State: AIkVDXJ/GUj/IUN4AKNa1u4oW5QD/mZDzNHzOd+eD0AhK4GJPcNwp6YlLOOx2c25qzY3sQ== X-Received: by 10.200.54.182 with SMTP id a51mr32002439qtc.221.1485293235338; Tue, 24 Jan 2017 13:27:15 -0800 (PST) Received: from [18.111.103.8] (dhcp-18-111-103-8.dyn.mit.edu. [18.111.103.8]) by smtp.gmail.com with ESMTPSA id 43sm17001537qty.26.2017.01.24.13.27.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Jan 2017 13:27:14 -0800 (PST) Subject: Re: "Like `let*' but ....." To: emacs-devel@gnu.org References: <20170124211227.GC7358@acm> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <8689586f-16fa-058e-6e9e-30e74b289593@gmail.com> Date: Tue, 24 Jan 2017 16:26:55 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20170124211227.GC7358@acm> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 21:27:21 -0000 On 2017-01-24 16:12, Alan Mackenzie wrote: > What is not clear is precisely HOW `pcase' patterns are used for > bindings, and what the semantics of (PAT EXP) are. Hi Alan, I find that mentally translating (pcase-let* (( )) ) to (pcase ( )) helps. This translation is mostly correct, with the added twist that the former is undefined if doesn't match . Then everything is as in the pcase documentation. Hopefully this helps! Cheers, Clment. From MAILER-DAEMON Tue Jan 24 18:10:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWAEL-0005U2-FT for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 18:10:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48017) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWAEK-0005Tv-04 for emacs-devel@gnu.org; Tue, 24 Jan 2017 18:10:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWAEG-00060l-0Y for emacs-devel@gnu.org; Tue, 24 Jan 2017 18:10:23 -0500 Received: from mout.web.de ([217.72.192.78]:63830) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWAEF-0005zx-Lv for emacs-devel@gnu.org; Tue, 24 Jan 2017 18:10:19 -0500 Received: from drachen.dragon ([88.67.99.137]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0Mf0cv-1ctzfZ249h-00OWNF; Wed, 25 Jan 2017 00:10:12 +0100 From: Michael Heerdegen To: Alan Mackenzie Cc: emacs-devel@gnu.org Subject: Re: "Like `let*' but ....." References: <20170124211227.GC7358@acm> Date: Wed, 25 Jan 2017 00:10:11 +0100 In-Reply-To: <20170124211227.GC7358@acm> (Alan Mackenzie's message of "Tue, 24 Jan 2017 21:12:27 +0000") Message-ID: <87lgu0qcks.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:gp+4bZ49s37GVV2RRIgZidkS6NZZW/h9vT/SlMzpm82zMsDc0wF +/HW9cVVmsvDIbaXdUYIxIblnfS1pw9KFpkKLewxzQ35U3GGL8DfkWva8z4cCiT0v8rshkj JRjZ66f52jM9USNrd5vxhWC+ohh7hN9oQeSfoz2zc8KzPKh8ayd/OIhrGUz3yn7LHENp3dT oFbp0/K7SZPv9svlTmntg== X-UI-Out-Filterresults: notjunk:1;V01:K0:4vI1Dx/Wne4=:n86Q2ZLAB/ZSm43TVyX2Pj jnBi9bCzYghjZBV2k0HQMcg2eUDMl8/XRioxwpFdqVlzcLObqYPHTuWtMMmS9GrGMQwa39HuU jfc5jHhnOOHylqS8M/ymrsDePJYi62PLpawwSsRvjWovsxVDB826x3HjBHoNTTE+HTG/cuI3l cfGTOYrmJ5xGAImeGipE0LNXYRcUYl0jtYppGDLSRreDVz558Ivf1ofBMxmDog6TJRaoRtgpa CFNdVKjTLeeR2QKAZMMiKqJurzwPwz46qqYr6rIhflx0xp4Sj0XWjgISUt1aNggTEvs3WTnQ4 Tt2IBKub6R0BMtywv7e/YQBuvxRJ03bbpS2sh9dNO0zcQgkN3W/t2Q0FQz1aCnS2fOdZvtCQS qSO5MPeundHFiY+Lnc3I0mw96+Xt+hd3Qqfub8/agIGT8fgfCJtBnzNKT76c8BOor+njbGn0h 6+nC+X5Q/UjDcM5dfVowkwghmZk9Xj++FxuEy2esb0X6Wz2kuQ+JOEULO26dgOPRIQQu9PS00 XIZh4chw0UY6kb23kedfx4oKwNJRo6FOw2rCs4oy4VGp6lBE14CG+TZGinlqc3OfxzgMAbBYE QlHxhv57YwbSkU1lvMZTVUmHc7miKUkaD7LoinTwMlzV76SQZsIJZk/mWBK61e6/tHxUDPPri 0Mi4H8fMQfaWB1t96sI/FkqTFWVLeNXLlvIlpT2ieV70nUVTj+JVmItIPnQ8houDMaaWVX2oM 2u6fDkljZraIzHhBrtPYq+9ooinBD+Y8kVBi/CXGOmxyRBbmueOGoi0bfFipvO77eGOyySyBS FXa4BX9 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.78 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jan 2017 23:10:25 -0000 Hello Alan, > The doc string of pcase-let* reads, in its entirety: > > "Like `let*' but where you can use `pcase' patterns for bindings. > BODY should be an expression, and BINDINGS should be a list of bindin= gs > of the form (PAT EXP)." > > What is not clear is precisely HOW `pcase' patterns are used for > bindings, and what the semantics of (PAT EXP) are. I think Cl=C3=A9ment's has answered that correctly. And for the semantics = of the patterns see C-h f pcase. > What eludes me is points such as: > (i) what variables are being bound? > (ii) To what values? > (iii) What do the `or's and `and's on Line 4, etc. mean? If you are interested in learning to understand `pcase' patterns: if you want to test what effect matching a pattern against some value has, I had written the following thing some time ago: #+begin_src emacs-lisp (defun my-pcase-matcher (pattern) "Turn pcase PATTERN into a predicate. For any given pcase PATTERN, return a predicate P that returns non-nil for any EXP when and only when PATTERN matches EXP. In that case, P returns a list of the form (bindings . BINDINGS) as non-nil value, where BINDINGS is a list of bindings that pattern matching would actually establish in a pcase branch. Example: (setq matcher (my-pcase-matcher '`(,(and (pred integerp) x) ,(and (pred integerp) (pred (< 0)) y)))) (funcall matcher '(1 0)) =3D=3D> nil (funcall matcher '(1 2)) =3D=3D> (bindings (x . 1) (y . 2))" (let ((arg (make-symbol "exp"))) `(lambda (,arg) ,(pcase--u `((,(pcase--match arg (pcase--macroexpand pattern)) ,(lambda (vars) `(list 'bindings ,@(nreverse (mapcar (lambda (pair) `(cons ',(car pair) ,(cdr pair))) vars)))))))))) #+end_src > Incidentally, when I expand that form with macroexpand-all and print it > with pp, the resulting form is 173 lines long, totally inscrutable, a > typical portion of it looking like this:=20 > > (if > (null x) > (let* > ((x > (cdr x))) Note that you should bind print-circle -> t and print-gensym -> t when printing to get a semantically equivalent printed representation of the macroexpansion. > Is this efficient, in either run-time or the size of the byte code > produced? Those highly nested expressions come from destructuring. I think the expansion is nearly as effecient as it could be. Dunno about the byte code size. Regards, Michael. From MAILER-DAEMON Tue Jan 24 21:21:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWDD1-0001rX-Vz for mharc-emacs-devel@gnu.org; Tue, 24 Jan 2017 21:21:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWDCz-0001rB-HE for emacs-devel@gnu.org; Tue, 24 Jan 2017 21:21:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWDCu-00005y-GB for emacs-devel@gnu.org; Tue, 24 Jan 2017 21:21:13 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:34465) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWDCu-00005g-8Z for emacs-devel@gnu.org; Tue, 24 Jan 2017 21:21:08 -0500 Received: by mail-lf0-x242.google.com with SMTP id q89so19147161lfi.1 for ; Tue, 24 Jan 2017 18:21:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=D2AuKDtK5rpZfbVdZbeCOrI4SMVC/8o/xIFBsq5USPg=; b=Sf8bPlK7KSLaW5NXO90kspddGYj5h8FT5U1HNZKJTnTbitqXgUvkGgQ5HiCztgeONh rNwqDAr2zc0NsyBJowUEO8HQpmlew738UswaxCw9pNGxFKapEiP/qPlbiTkKtu2Cnw8v J38FqlCVBJJIK5gapkfIUOyA1QGptrrDbNW/KlY01SOZAZRuwJFk0I371/9QNGpCbg7d pey9SF+Pq3rvHYF3+y5qXYHJz4z9AgEOK2LSAyXX72elRUy1o0usSfmjSeaIBka/80f5 nDFfP2mh6B/akRZK7KAgwS7ETEo6hPA9IzTMCw3Evn8gjHLRowt7dekqzizXIxjxpBb7 DEOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:cc:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=D2AuKDtK5rpZfbVdZbeCOrI4SMVC/8o/xIFBsq5USPg=; b=Y74vk4XusL3BAv7xY+oQkPXacC9f/HaYiHYhVgkS0XVv4gcHA5Q2EE2U/66OjBZOMw hBzDCBz7N0lsB0fZ2q4Qr1Hy1K04W41RToJ7JfB2KuWSHQqu1FUd8paX4gJT2Upqr8lI fVY7IxE34wDix3JIB6Qhw8gX2l1s8+zVdAgbZYuLRGgrUzuhG2CRS2sC2W09Lz3EOOYJ ufRkjuxTOP1dItEPubkxe+dXf9jfjQ+JBz1gYY8couMd8J6T7c8ZgnywR1CtUF+czcS0 rHl6JP9KX4MnC/rp49g6ay9JdnMFwCJzn6kIimeUqhYMGeTJ3yNwoacL+I8gl2yYhvIR Solw== X-Gm-Message-State: AIkVDXLILlxjuntSW8yqMiyUC//p0Oe5gUDH/tJi7jcNWyeJjlB03RbD/uH+2+/0qUryfw== X-Received: by 10.25.193.3 with SMTP id r3mr12044809lff.54.1485310865094; Tue, 24 Jan 2017 18:21:05 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id x78sm7864519lfb.44.2017.01.24.18.21.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Jan 2017 18:21:04 -0800 (PST) Sender: DG Subject: Re: [Emacs-diffs] master c290715: Add double-buffering support to reduce flicker To: emacs-devel@gnu.org, Daniel Colascione References: <20161029023035.8556.72592@vcs.savannah.gnu.org> <20161029023036.CB5D52201D5@vcs.savannah.gnu.org> Cc: 16621-done@debbugs.gnu.org, 12363-done@debbugs.gnu.org From: Dmitry Gutov Message-ID: Date: Wed, 25 Jan 2017 05:21:03 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <20161029023036.CB5D52201D5@vcs.savannah.gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 02:21:14 -0000 Version: 26.1 On 29.10.2016 05:30, Daniel Colascione wrote: > branch: master > commit c29071587c64efb30792bd72248d3c791abd9337 > Author: Daniel Colascione > Commit: Daniel Colascione > > Add double-buffering support to reduce flicker I'd like to add my belated gratitude. This is the kind of change that makes me happier to use Emacs and to continue contributing. Thanks, Daniel! From MAILER-DAEMON Wed Jan 25 00:08:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWFpE-0000Si-96 for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 00:08:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWFpC-0000Sb-31 for emacs-devel@gnu.org; Wed, 25 Jan 2017 00:08:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWFp8-0002Mf-Og for emacs-devel@gnu.org; Wed, 25 Jan 2017 00:08:50 -0500 Received: from [195.159.176.226] (port=45965 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWFp8-0002Lr-Hg for emacs-devel@gnu.org; Wed, 25 Jan 2017 00:08:46 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWFor-0001sh-Od for emacs-devel@gnu.org; Wed, 25 Jan 2017 06:08:29 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: "Like `let*' but ....." Date: Wed, 25 Jan 2017 00:08:01 -0500 Lines: 67 Message-ID: References: <20170124211227.GC7358@acm> <87lgu0qcks.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:7yV/TIXTfV6A5nLRoMAAILljrB0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 05:08:51 -0000 > Those highly nested expressions come from destructuring. > I think the expansion is nearly as effecient as it could be. There's definitely room for improvement. Some of it would be easier/cleaner to fix in the byte-compiler than in the pcase macro. The most costly part is the use of (funcall pcase-N ...). Such forms are used to avoid duplicating the body of a branch (in the case of `pcase-let` that means duplicating the body of the `pcase-let`), so they're important to avoid potential code size blow up, but they impose a significant performance cost. Luckily, in many cases we can avoid them (e.g. when the body is small, or when the patterns are simple enough that they don't lead to any duplication at all). BTW, regarding the big pcase-let* in byte-compile-file-form-defalias, it was partly an experiment in the use of pcase patterns. OT1H I'm not convinced the result speaks very much in favor of pcase, OTOH if you try to rewrite this code without pcase it's not pretty either. I'll read it for you: ;; `macro' is non-nil if it defines a macro. ;; `fun' is the function part of `arg' (defaults to `arg'). (((or (and (or `(cons 'macro ,fun) `'(macro . ,fun)) (let macro t)) (and (let fun arg) (let macro nil))) arg) This part binds two vars: `fun` and `macro`. Basically, it binds `fun` to the value of `arg` except that if `arg` is a "macro value", `fun` gets the value of the macro's function (and `macro` gets value t rather than nil). ;; `lam' is the lambda expression in `fun' (or nil if not ;; recognized). ((or `(,(or `quote `function) ,lam) (let lam nil)) fun) This only binds `lam`. It takes the `fun` apart and extracts a lambda expression from it (or nil if it can't). ;; `arglist' is the list of arguments (or t if not recognized). ;; `body' is the body of `lam' (or t if not recognized). ((or `(lambda ,arglist . ,body) ;; `(closure ,_ ,arglist . ,body) (and `(internal-make-closure ,arglist . ,_) (let body t)) (and (let arglist t) (let body t))) lam)) This tries to take apart `lam` and extract two parts: `arglist` and `body`. The complexity here is that `arg` doesn't hold a "macro value" (i.e. something of the form (macro . FUN)), but instead it holds an expression that will return a macro value. So `arg` can be of the form (quote (macro . FUN)) (cons 'macro 'FUN) (cons 'macro #'FUN) (cons 'macro (internal-make-closure ...)) ... and of course FUN is usually of the form (lambda ...) but it can also be a plain symbol, or a # object or god knows what else. Stefan From MAILER-DAEMON Wed Jan 25 02:14:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWHmc-0004QA-Kc for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 02:14:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39976) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWHma-0004Pt-LM for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:14:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWHmX-0002i0-FX for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:14:16 -0500 Received: from forward6h.cmail.yandex.net ([87.250.230.217]:42614) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWHmX-0002h8-1n for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:14:13 -0500 Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [77.88.29.84]) by forward6h.cmail.yandex.net (Yandex) with ESMTP id 625A1223DE for ; Wed, 25 Jan 2017 10:14:08 +0300 (MSK) Received: from smtp1p.mail.yandex.net (localhost.localdomain [127.0.0.1]) by smtp1p.mail.yandex.net (Yandex) with ESMTP id DFC5817807D0 for ; Wed, 25 Jan 2017 10:14:06 +0300 (MSK) Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id jJ0wVWC8t6-E5QWMhd4; Wed, 25 Jan 2017 10:14:05 +0300 (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.com; s=mail; t=1485328445; bh=X/aOaEkSmFa7LokIqT6GWG+WhhAngqFaV7YMjPo/gX8=; h=From:To:Cc:Subject:Date:Message-ID; b=D4UzZOQHwiGcoYa1yemf/upj0MuUfxweJipPwyz6bD/b8j65FqEc9glp+w691D/yz 14aujZ/KRJMsFLPB0TpAWT1S1YnRH7Pxnje+V2RkU7yktu5ZPaFvHVxLEVbgDsfDeX aq1JpSN9gT7k+ERvsa0xhPYOW6tJq6+x2mTstFP8= Authentication-Results: smtp1p.mail.yandex.net; dkim=pass header.i=@yandex.com X-Yandex-Suid-Status: 1 0 From: Colin Baxter To: emacs-devel@gnu.org Cc: Subject: gnutls.c make error Date: Wed, 25 Jan 2017 07:14:02 +0000 Message-ID: <87fuk7fw79.fsf@yandex.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAAAFz UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlQ TFRF19bYYWFo////Mo2MdQAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAEUSURB VCjPTVJBDsQgCIQE7jSR/2iid02Y/39l2eq2y6FxOgwy0xKRQosHkTh1mgwXylKaVDui0K8Qy/bJ CAuwh3DgaWMY8IAcEsQ3ySKYII/+RQU5gijg9H3OqJx38ma8U6WUEl3fnXLEXWqkRQ9IWhXz2U49 4gWIPwZkrwmV+gKMt03g/5r1gmKeGjnetaSdtiX5OsHYEmLNnu09D2w/hulS3+YSDM+w7eQ1py2S tZmQmsbbuVS5c9sDyF0KtcNouKmcjDGXaT1twWUW9w3WXNFLPx9loM4dnbGm70vvGGxE8dF2jrkU gL71dqEPcb/blpDPhbidQX1MHkloZTSg3sukI18t9A47Sc5fJI3/jMKr1GYfQ+A2sg9JwvEAAAAl dEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMjlUMTA6Mzg6MjErMDE6MDCUWKqkAAAAJXRFWHRkYXRl Om1vZGlmeQAyMDE2LTAyLTE4VDIwOjIyOjIyKzAwOjAwkZlUCwAAABF0RVh0anBlZzpjb2xvcnNw YWNlADIsdVWfAAAAIHRFWHRqcGVnOnNhbXBsaW5nLWZhY3RvcgAxeDEsMXgxLDF4MemV/HAAAAAA SUVORK5CYII= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 87.250.230.217 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 07:14:17 -0000 Hello, I have a make error after the latest pull on master. ---- gnutls.c: In function =E2=80=98emacs_gnutls_handle_error=E2=80=99: gnutls.c:589:18: error: =E2=80=98GNUTLS_E_PREMATURE_TERMINATION=E2=80=99 un= declared (first use in this function) gnutls.c:589:18: note: each undeclared identifier is reported only once for= each function it appears in make[1]: *** [gnutls.o] Error 1 make[1]: Leaving directory `/home/redknight/git/emacs/src' make: *** [src] Error 2 Compilation exited abnormally with code 2 at Wed Jan 25 07:02:38 ---- I'm using 3.2.0-4-686-pae #1 SMP Debian 3.2.84-1 i686 GNU/Linux. Colin. From MAILER-DAEMON Wed Jan 25 02:41:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWICw-00074k-Qt for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 02:41:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWICu-000735-Ec for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:41:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWICp-0001pv-Io for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:41:28 -0500 Received: from forward1j.cmail.yandex.net ([5.255.227.19]:36604) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWICp-0001ph-63 for emacs-devel@gnu.org; Wed, 25 Jan 2017 02:41:23 -0500 Received: from smtp2j.mail.yandex.net (smtp2j.mail.yandex.net [IPv6:2a02:6b8:0:801::ac]) by forward1j.cmail.yandex.net (Yandex) with ESMTP id 8888C20D95 for ; Wed, 25 Jan 2017 10:41:18 +0300 (MSK) Received: from smtp2j.mail.yandex.net (localhost.localdomain [127.0.0.1]) by smtp2j.mail.yandex.net (Yandex) with ESMTP id 74A943EC0BFE for ; Wed, 25 Jan 2017 10:41:17 +0300 (MSK) Received: by smtp2j.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id sEeC9QlTFv-fGnCW88U; Wed, 25 Jan 2017 10:41:16 +0300 (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.com; s=mail; t=1485330076; bh=bBciOxXIuj52wee96lFukk76yD0AqHlmLnKD9WzMKLA=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID; b=S2arm7eNuAP55ZbmMeVyvnHTxZSUFCWUSe7i+znurgMBjwkco6gkN4B46E9GpHBuv kVzhWYr/Zpa3cvQAOEyVVwYmcYYWTR2YxwZLZpGp97Dmjos5PGbx0v1jbqLU+Q5mGB wHHytMcpwJsxA9nNUd5wgWu2nqyuMhX1TIjTVd5I= Authentication-Results: smtp2j.mail.yandex.net; dkim=pass header.i=@yandex.com X-Yandex-Suid-Status: 1 0 From: Colin Baxter To: emacs-devel@gnu.org Cc: Subject: Re: gnutls.c make error References: <87fuk7fw79.fsf@yandex.com> Date: Wed, 25 Jan 2017 07:41:13 +0000 In-Reply-To: <87fuk7fw79.fsf@yandex.com> (Colin Baxter's message of "Wed, 25 Jan 2017 07:14:02 +0000") Message-ID: <87bmuvfuxy.fsf@yandex.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAAAFz UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlQ TFRF19bYYWFo////Mo2MdQAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAEUSURB VCjPTVJBDsQgCIQE7jSR/2iid02Y/39l2eq2y6FxOgwy0xKRQosHkTh1mgwXylKaVDui0K8Qy/bJ CAuwh3DgaWMY8IAcEsQ3ySKYII/+RQU5gijg9H3OqJx38ma8U6WUEl3fnXLEXWqkRQ9IWhXz2U49 4gWIPwZkrwmV+gKMt03g/5r1gmKeGjnetaSdtiX5OsHYEmLNnu09D2w/hulS3+YSDM+w7eQ1py2S tZmQmsbbuVS5c9sDyF0KtcNouKmcjDGXaT1twWUW9w3WXNFLPx9loM4dnbGm70vvGGxE8dF2jrkU gL71dqEPcb/blpDPhbidQX1MHkloZTSg3sukI18t9A47Sc5fJI3/jMKr1GYfQ+A2sg9JwvEAAAAl dEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMjlUMTA6Mzg6MjErMDE6MDCUWKqkAAAAJXRFWHRkYXRl Om1vZGlmeQAyMDE2LTAyLTE4VDIwOjIyOjIyKzAwOjAwkZlUCwAAABF0RVh0anBlZzpjb2xvcnNw YWNlADIsdVWfAAAAIHRFWHRqcGVnOnNhbXBsaW5nLWZhY3RvcgAxeDEsMXgxLDF4MemV/HAAAAAA SUVORK5CYII= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 5.255.227.19 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 07:41:29 -0000 On Wed, Jan 25 2017, Colin Baxter wrote: > Hello, > > I have a make error after the latest pull on master. > > ---- > > gnutls.c: In function =E2=80=98emacs_gnutls_handle_error=E2=80=99: > gnutls.c:589:18: error: =E2=80=98GNUTLS_E_PREMATURE_TERMINATION=E2=80=99 = undeclared > (first use in this function) > gnutls.c:589:18: note: each undeclared identifier is reported only > once for each function it appears in > make[1]: *** [gnutls.o] Error 1 > make[1]: Leaving directory `/home/redknight/git/emacs/src' > make: *** [src] Error 2 > > Compilation exited abnormally with code 2 at Wed Jan 25 07:02:38 > > ---- > > I'm using 3.2.0-4-686-pae #1 SMP Debian 3.2.84-1 i686 GNU/Linux. > > Colin. The error might have something to do with commit 42e23674133e881092c05814c6e11224e642f5f8 Tweak TLS error messaging on closed connections When I revert the commit on my local git distribution, the error goes away and emacs builds satisfactorily. Colin. From MAILER-DAEMON Wed Jan 25 07:51:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWN3C-0005A5-LN for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 07:51:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46510) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWN3A-00059z-Vi for emacs-devel@gnu.org; Wed, 25 Jan 2017 07:51:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWN36-0003gr-Vm for emacs-devel@gnu.org; Wed, 25 Jan 2017 07:51:45 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:37247) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWN36-0003gB-Ox for emacs-devel@gnu.org; Wed, 25 Jan 2017 07:51:40 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cWN32-0007xQ-2M; Wed, 25 Jan 2017 13:51:38 +0100 From: Lars Ingebrigtsen To: Colin Baxter Cc: emacs-devel@gnu.org Subject: Re: gnutls.c make error References: <87fuk7fw79.fsf@yandex.com> Date: Wed, 25 Jan 2017 13:51:30 +0100 In-Reply-To: <87fuk7fw79.fsf@yandex.com> (Colin Baxter's message of "Wed, 25 Jan 2017 07:14:02 +0000") Message-ID: <87pojb8fql.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 12:51:46 -0000 Colin Baxter writes: > gnutls.c: In function =E2=80=98emacs_gnutls_handle_error=E2=80=99: > gnutls.c:589:18: error: =E2=80=98GNUTLS_E_PREMATURE_TERMINATION=E2=80=99 = undeclared > (first use in this function) Hm, perhaps that symbol is only defined in some gnutls versions? I seem to be using gnutls 3.0 -- what version are you using? Anyway, I guess I'll have to add some autoconf tests... darn. --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 25 08:22:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWNWi-0003SA-Tj for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 08:22:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53141) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWNWh-0003RC-0S for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:22:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWNWe-0006fT-DT for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:22:15 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:38034) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWNWe-0006es-7d for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:22:12 -0500 Received: from 2.150.49.21.tmi.telenormobil.no ([2.150.49.21] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cWNWZ-0003Sx-9n; Wed, 25 Jan 2017 14:22:09 +0100 From: Lars Ingebrigtsen To: Colin Baxter Cc: emacs-devel@gnu.org Subject: Re: gnutls.c make error References: <87fuk7fw79.fsf@yandex.com> Date: Wed, 25 Jan 2017 14:22:01 +0100 In-Reply-To: <87fuk7fw79.fsf@yandex.com> (Colin Baxter's message of "Wed, 25 Jan 2017 07:14:02 +0000") Message-ID: <87inp38ebq.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 13:22:16 -0000 I've now pushed a fix that I think is likely to fix the problem (if the problem is indeed that you have an older gnutls version). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 25 08:57:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWO53-0005YL-GO for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 08:57:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33638) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWO50-0005Xw-N9 for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:57:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWO4x-0001Go-GF for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:57:42 -0500 Received: from forward4p.cmail.yandex.net ([77.88.31.19]:49589) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWO4x-0001Dx-49 for emacs-devel@gnu.org; Wed, 25 Jan 2017 08:57:39 -0500 Received: from smtp3m.mail.yandex.net (smtp3m.mail.yandex.net [77.88.61.130]) by forward4p.cmail.yandex.net (Yandex) with ESMTP id A88D520E83; Wed, 25 Jan 2017 16:57:35 +0300 (MSK) Received: from smtp3m.mail.yandex.net (localhost.localdomain [127.0.0.1]) by smtp3m.mail.yandex.net (Yandex) with ESMTP id CB21D2840E5A; Wed, 25 Jan 2017 16:57:34 +0300 (MSK) Received: by smtp3m.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 9oDfjaaDii-vXTaSGkl; Wed, 25 Jan 2017 16:57:33 +0300 (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.com; s=mail; t=1485352653; bh=6IG+lXPo4idS2Dxe2PGOn8kPYApPszNe1ifV15CPeV0=; h=From:To:Cc:Cc:Subject:References:Date:In-Reply-To:Message-ID; b=jWP5ABYNYDhbEaB+Z/3X4jEpF8/4qgt4ccMk1LZaJSzTOXAHctxut6sZe4Jdc+zud rx6sIkDkqxaNDePGro4tRs4DvJceziKaoKrjr4FuWsSJKNXlfsNBxjSD1g27h1Vm8P F2x64gtHAtBy7A+/842PnamV2QWVi+xqeXLp7w/o= Authentication-Results: smtp3m.mail.yandex.net; dkim=pass header.i=@yandex.com X-Yandex-Suid-Status: 1 0,1 0 From: Colin Baxter To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Cc: Subject: Re: gnutls.c make error References: <87fuk7fw79.fsf@yandex.com> <87pojb8fql.fsf@gnus.org> Date: Wed, 25 Jan 2017 13:57:30 +0000 In-Reply-To: <87pojb8fql.fsf@gnus.org> (Lars Ingebrigtsen's message of "Wed, 25 Jan 2017 13:51:30 +0100") Message-ID: <87r33r1bud.fsf@yandex.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAAAFz UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlQ TFRF19bYYWFo////Mo2MdQAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAEUSURB VCjPTVJBDsQgCIQE7jSR/2iid02Y/39l2eq2y6FxOgwy0xKRQosHkTh1mgwXylKaVDui0K8Qy/bJ CAuwh3DgaWMY8IAcEsQ3ySKYII/+RQU5gijg9H3OqJx38ma8U6WUEl3fnXLEXWqkRQ9IWhXz2U49 4gWIPwZkrwmV+gKMt03g/5r1gmKeGjnetaSdtiX5OsHYEmLNnu09D2w/hulS3+YSDM+w7eQ1py2S tZmQmsbbuVS5c9sDyF0KtcNouKmcjDGXaT1twWUW9w3WXNFLPx9loM4dnbGm70vvGGxE8dF2jrkU gL71dqEPcb/blpDPhbidQX1MHkloZTSg3sukI18t9A47Sc5fJI3/jMKr1GYfQ+A2sg9JwvEAAAAl dEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMjlUMTA6Mzg6MjErMDE6MDCUWKqkAAAAJXRFWHRkYXRl Om1vZGlmeQAyMDE2LTAyLTE4VDIwOjIyOjIyKzAwOjAwkZlUCwAAABF0RVh0anBlZzpjb2xvcnNw YWNlADIsdVWfAAAAIHRFWHRqcGVnOnNhbXBsaW5nLWZhY3RvcgAxeDEsMXgxLDF4MemV/HAAAAAA SUVORK5CYII= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 77.88.31.19 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 13:57:43 -0000 Hi Lars, On Wed, Jan 25 2017, Lars Ingebrigtsen wrote: > Colin Baxter writes: > >> gnutls.c: In function =E2=80=98emacs_gnutls_handle_error=E2=80=99: >> gnutls.c:589:18: error: =E2=80=98GNUTLS_E_PREMATURE_TERMINATION=E2=80=99= undeclared >> (first use in this function) > > Hm, perhaps that symbol is only defined in some gnutls versions? I seem > to be using gnutls 3.0 -- what version are you using? > > Anyway, I guess I'll have to add some autoconf tests... darn. I'm using GnuTLS 2.12.20. Best wishes, Colin. From MAILER-DAEMON Wed Jan 25 11:39:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWQbb-00084A-0x for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 11:39:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51415) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWQbY-000823-9U for emacs-devel@gnu.org; Wed, 25 Jan 2017 11:39:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWQbX-0001uo-9D for emacs-devel@gnu.org; Wed, 25 Jan 2017 11:39:28 -0500 Received: from mail-vk0-x236.google.com ([2607:f8b0:400c:c05::236]:35535) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWQbX-0001ud-43; Wed, 25 Jan 2017 11:39:27 -0500 Received: by mail-vk0-x236.google.com with SMTP id x75so137350039vke.2; Wed, 25 Jan 2017 08:39:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=dLFbtyxMLV9Q9ycNsafT7ewltzdgE3In3R111xRC/Rg=; b=AM5GY/ZheJoEpAlBTBRYyc6bJrWUsfbvITmd+RS/WZrpFdRWu1/mD1MrpVZuLI5/uA X2fo4MtHf+GNITKyDacJ1ERrA8mrMAqvTrF3C01EmMB9kUSTMAOIs+todwpRgSGRRy0J Gbn3zQ8nlkNPOSZz2hymaFS/VApHHPao0k39yN69qDoyzaGEdU5XWc4SdQnhL479ROxf gUVF3fmb0KXpnpRc76Hs64HlxqOt+dwO4gEOAa5uCOYkedTQpHdKaPOR1zn/pLxIau3U /pbsvWwxvMqH3xAUF+NE36L/qZ2jG78g8G44YMEpXyxskLIFuFxxF4L7ALrWbo88E9c/ tqjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=dLFbtyxMLV9Q9ycNsafT7ewltzdgE3In3R111xRC/Rg=; b=XAWYbmAp0ATfS+VktDYwHzaxFCQvhUiM7IFCE/OuKt/lInjWfKRtKU0Ta+KYDBTfTR 1rHLq0W+kfYaSXcfdfeNXEkaJ69qnA/RtfPJMxK7zPIy4B6Ipk4Y1JbodNA75MXoKDTL BdLO3g0mPNsKMtLCV3nHpvr3RQm4B7VcUBirZ6hAzHRP8ono7j+1RYbeBHpSjZq8tvqe kFlMy4rDBS93qqGi5z7YOK9H1KfU16a0Vns8tnjv5I4MeuTpMUyytF9BbQ1kKve4xlor DXOK5SCsHhRy33tvYKlWhl/E4T4MVal+InGc0imtQA6gsU66C3fPFDbfDfrPnWOaeVca Y5dw== X-Gm-Message-State: AIkVDXKRL2Ky3KMnpSNsVyMI79SyspII16NiceUbncmDjpllN+EwSXop0vlyDqe1LHt/GTeSzCUV/edciDCPnQ== X-Received: by 10.31.152.2 with SMTP id a2mr16202535vke.113.1485362364690; Wed, 25 Jan 2017 08:39:24 -0800 (PST) MIME-Version: 1.0 From: Kaushal Modi Date: Wed, 25 Jan 2017 16:39:14 +0000 Message-ID: Subject: Sync up the org in emacs master to org maint branch? To: Emacs developers , emacs-org list Cc: Bastien Guerry Content-Type: multipart/alternative; boundary=001a1141e7d61c393c0546ede080 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 16:39:29 -0000 --001a1141e7d61c393c0546ede080 Content-Type: text/plain; charset=UTF-8 Hi all, I am aware that in emacs 26, there are plans to change the way in how certain packages can be moved out of the emacs master and still can be installed seamlessly using the tarballs of those. Currently the org-mode version in emacs master is 8.2.10 and that it too old (> 2 years, ref: http://orgmode.org/cgit.cgi/org-mode.git/refs/). The current stable version of org-mode is 9.0.4 (released yesterday). At the time of releasing emacs 25.1, the org-mode in emacs master could have been synced up with the then 1.5 years newer and stable version of org (probably 8.3.5 or 8.3.6). But that got missed due to some reason. As a precaution that that does not repeat when emacs 26.x is released, should the org version in emacs master be synced with the now latest stable org version 9.0.4? If we are able the release the new packaging method in emacs 26.x, then we can remove org from emacs master completely, but if not, then at least as backup we have a newer org version to go out with that release. -- Kaushal Modi --001a1141e7d61c393c0546ede080 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi all,

I am aware that in emacs 26, th= ere are plans to change the way in how certain packages can be moved out of= the emacs master and still can be installed seamlessly using the tarballs = of those.

Currently the org-mode version in emacs = master is 8.2.10 and that it too old (> 2 years, ref: http://orgmode.org/cgit.cgi/org-mo= de.git/refs/). The current stable version of org-mode is 9.0.4 (release= d yesterday).

At the time of releasing emacs 25.1,= the org-mode in emacs master could have been synced up with the then 1.5 y= ears newer and stable version of org (probably 8.3.5 or 8.3.6). But that go= t missed due to some reason.

As a precaution that = that does not repeat when emacs 26.x is released, should the org version in= emacs master be synced with the now latest stable org version 9.0.4?
=

If we are able the release the new packaging method in = emacs 26.x, then we can remove org from emacs master completely, but if not= , then at least as backup we have a newer org version to go out with that r= elease.

--

Kaushal Modi

--001a1141e7d61c393c0546ede080-- From MAILER-DAEMON Wed Jan 25 11:55:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWQqa-0004GP-Oh for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 11:55:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56388) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWQqX-0004E9-Dv for emacs-devel@gnu.org; Wed, 25 Jan 2017 11:54:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWQqS-0006YZ-J4 for emacs-devel@gnu.org; Wed, 25 Jan 2017 11:54:57 -0500 Received: from mout.gmx.net ([212.227.17.20]:59983) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWQqS-0006Y9-8A; Wed, 25 Jan 2017 11:54:52 -0500 Received: from W530 ([46.166.188.231]) by mail.gmx.com (mrgmx103 [212.227.17.174]) with ESMTPSA (Nemesis) id 0MAy40-1cgN0n1FSe-009zss; Wed, 25 Jan 2017 17:54:49 +0100 From: Rasmus To: emacs-orgmode@gnu.org Cc: emacs-devel@gnu.org Subject: Re: Sync up the org in emacs master to org maint branch? References: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEX+/v7R0dG0tLT+3+CO jo4vLy8FBQVQUFD8jpD9z9D4CAj9sbL6PkD6TU75LzH7b3Fvb2/6qUImAAAACXBIWXMAAABIAAAA SABGyWs+AAACF0lEQVRIx9VV25akIAwEksjNC///tZMQpEHtnj67T8ODoqZCqlKgMf8yrHMW+ILf Amhpw/dXEKLen+LdGb/Q+SqmlIIxeU1b/AYAexJElms6bgB4lQTQ4rf0GneEtUXCnTP50Phoavbj 2J8RWhXft5QhpBSVRuZbSErnokADRK0h13dhq7fcESEPRSljJau6BBgUY7Hg2B9KykxXA0PoH3Mj Hy4AkkhoeeNIVBErXAGjCsf5tXacF57je0k9Pr+SV0ox3mWlV4rYyj2E8Pbo13mFoxkkVNngjf/I nk8qeNx3FTq/A3RvrRWVKvHwAdCFSRFYF+UBZyOncFfNh2hf3u551zsHWKYdV62w9rRb+rCBltrs Ne2DC9btWdNxx001bA+cvcQS77unY+P5GLC68cyfHbb4glh8pSzz0ubvRjlVtUNP7DcAZwx+A3BL O/pQW1K78gsLialWojaBzwCxXxFn8IR4kTIYmQdYtA7hAkBiAC9VRoBqUPz88+AhjLkUy5zdCFAN 0C+XY0hWkEDZSHYEQBE9rCxU3OUPIdmlLGgAV0rhuiu9cjNyS+OJK20AmjpDd1md7tRyBWhr8C6r O0MaANtRZZ9WMGekWMLPCsrjZQmL4iZva07NjDh2AnA2VzMfyTfvJvMh1cJQf7FXgFSLM0C9WGg2 sBN3CtNCBFbtR93IPLifnsiP/2kW6sTLZDo/4P/28w9J9xg9IdcehQAAAABJRU5ErkJggg== Cancel-Lock: sha1:m5dLGK1mhKmmJ9Tfy8p84lPohR0= Date: Wed, 25 Jan 2017 17:54:48 +0100 In-Reply-To: (Kaushal Modi's message of "Wed, 25 Jan 2017 16:39:14 +0000") Message-ID: <87a8afaxlz.fsf@gmx.us> MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:M29oZAJtrYt9ObXb2TNlVrMgzuCK7tdCjqSNaks8faEZ9lrcwJt wjQuHRhabj4oDCbT2y83WQTpPf+bVHyHGUHUA+CiSSZDgvCUBl8pSRvfhy2vUcyPYQi5rbd HX6G2aeU4CDT5/kq90wdOgCEMoVZu6+YqDg1LjvaWR2+K6v9iejsS6ARxmB5DmicaUw+a/i FAWCx1pZ6Y56IhdrKCPIg== X-UI-Out-Filterresults: notjunk:1;V01:K0:RC8sfCwQ0So=:oYBDaghMFqDYjVUhQb4g1R 1nIqnq8yZUtYrgo2ycKbjCBtlxiNtnOnRRDoZnK6C83LgUBavAyU6FHhpNlxQks5L6ya780+G GHn2n4YG0x7vpkp0cXilAGPVDPXHvguGSwv0Bo7bTmU9MXYxysp7Lg67LlVI2BdTa5RObEzS1 dNkDJ2aM3si4ASrs9euLD92CsQvGkK4XIvzxTLjTsCVeO76W22geeGU9i4bLTV7nTuES5qash itS1qTVaV7kRUo3gzqjHSOZqrfx+9POKeT07DJPdoM0H4+DT/Vl+1QoajJcecXYwe/Qi4XmUm VpeO+rdJVFXPqFEneuImPkie0nKa/W3vFC0O1Qioko7l5ICspX8vWpc0dtuym9TVU4/l0lPJn XKolVxiAujcbGRvm+ZFGqOf3FPgefezIPLOW07t5QL//GkGE+Xvx8UW2UUawl5W76wXu+m5mT AQ4Bg7uOv0zJw4UtPCkjym1mZQc0tSNggFLyXvmEHEvOsHPgYCrUDVaP+NAtZTl1L4NO6GDva hixpYeho7uVhjW91gX/8qauHnlRGfkgIMBUH/aVWB2RSMlTo5hmUi+/Mxt0WtSfAGfCqcNrf5 H8OQpvDFKzj4+uH87PuK9E2G/EUnU7ZXQUdWALzrxGgJrJgI/KJ/q8BQF6XnHkSrAJi+EPLVS 9gyAQgkGKN0x2kzUaSYCLQQUvBfFg0oE1Iv3nBW6Fk4BshLrPwkpZ1dJn8Kv5mSKtTaEUuFUY XfpnXiHLyQbAFRIZI5BGAKxu7Yhzn0Wy/PY9jm91uQi/qGxctwqoLFrSwmIe0gB2SdqrCbtFD co2UeYI X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 16:54:58 -0000 Hi, Kaushal Modi writes: > I am aware that in emacs 26, there are plans to change the way in how > certain packages can be moved out of the emacs master and still can be > installed seamlessly using the tarballs of those. Indeed. > Currently the org-mode version in emacs master is 8.2.10 and that it too > old (> 2 years, ref: http://orgmode.org/cgit.cgi/org-mode.git/refs/). The > current stable version of org-mode is 9.0.4 (released yesterday). > > At the time of releasing emacs 25.1, the org-mode in emacs master could > have been synced up with the then 1.5 years newer and stable version of org > (probably 8.3.5 or 8.3.6). But that got missed due to some reason. *AFAIR* it was too late and would thus not have received enough test from the general Emacs community. > As a precaution that that does not repeat when emacs 26.x is released, > should the org version in emacs master be synced with the now latest stable > org version 9.0.4? Yes. > If we are able the release the new packaging method in emacs 26.x, then we > can remove org from emacs master completely, but if not, then at least as > backup we have a newer org version to go out with that release. What is the current status? I am a bit confused about the policy at this point. I'm happy to try to update master to 9.0.4, but I was somehow under the impression that we were waiting for a solution to include ELPA packages in the Emacs tarball. Thanks, Rasmus -- However beautiful the theory, one should occasionally look at the evidence From MAILER-DAEMON Wed Jan 25 12:03:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWQyO-0003N3-PT for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 12:03:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59827) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWQyM-0003LQ-W9 for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:03:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWQyI-0001Ah-4Q for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:03:03 -0500 Received: from [195.159.176.226] (port=33768 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWQyH-0001AO-VA for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:02:58 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWQxv-0004PV-LP for emacs-devel@gnu.org; Wed, 25 Jan 2017 18:02:35 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: Re: message.el and mml-secure-bcc-is-safe Date: Wed, 25 Jan 2017 18:02:03 +0100 Lines: 8 Message-ID: <87d1fb3wfo.fsf@wavexx.thregr.org> References: <87tw9b9jud.fsf@wavexx.thregr.org> <87y3y49xt7.fsf@gnus.org> <874m0rgqff.fsf@informationelle-selbstbestimmung-im-internet.de> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:n0DEu+ViYXRwLKJj17vWF84paFw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 17:03:03 -0000 On Sun, Jan 22 2017, Jens Lechtenboerger wrote: >> I'm not sure... there might be subtleties there... I've added Jens to >> the Cc; he added the code so he might have an opinion. > > There was no particular reason for adding the bcc-check before > executing that hook. Feel free to exchange their order. Lars, are you going to commit this change, or should I prep a patch? From MAILER-DAEMON Wed Jan 25 12:15:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWRAj-0000lz-BG for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 12:15:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36174) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWRAg-0000lT-SY for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:15:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWRAd-0005Q0-Jr for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:15:46 -0500 Received: from [195.159.176.226] (port=34070 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWRAd-0005Pf-Dm for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:15:43 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWRAR-0003Om-5a for emacs-devel@gnu.org; Wed, 25 Jan 2017 18:15:31 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: Re: "reference to free variable" only during initialization Date: Wed, 25 Jan 2017 18:15:15 +0100 Lines: 34 Message-ID: <877f5j3vto.fsf@wavexx.thregr.org> References: <87ziiq4nll.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:EVqP9OCRfzCgK6npbpmtBa5/Y3M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 17:15:47 -0000 On Mon, Jan 16 2017, Noam Postavsky wrote: >> Warning (bytecomp): reference to free variable ‘isearchp-reg-beg’ >> >> during startup. The warning is generated by requiring >> modeline-posn.el[1], which is using ``isearchp-reg-beg`` (actually >> defvar-ed early on) inside a defadvice form. >> >> Is this expected? > > There is some unexpected interaction of defadvice with delayed > warnings. I had noticed this a while back, but never got around to > fixing it. `ad-compile-function' binds `warning-suppress-types', but > if warnings are delayed, then the warning call happens after that > binding is finished. This explains one difference, but it would mean that when the warning is not delayed, it would be lost[!]. That would be more serious. I assumed instead that defadvice was evaluating the body too early, before defvar (and thus generating an /incorrect/ warning). >> emacs -q -l ~/.emacs > > In this case, the warnings are not delayed. If you set after-init-time > to nil, then warnings will be delayed, so the same problem should > occur, I think: > > emacs -q --eval '(setq after-init-time nil)' -l ~/.emacs Actually, it doesn't work. No warning is generated in this case. But if I do the opposite: set after-init-time in the beginning of my ~/.emacs, then I can suppress the warning which indeed suggests some problem with the delaying. From MAILER-DAEMON Wed Jan 25 12:17:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWRBx-0001O9-2f for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 12:17:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36634) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWRBv-0001N7-65 for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:17:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWRBr-0005fJ-CM for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:17:02 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:57412) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWRBr-0005f4-5c for emacs-devel@gnu.org; Wed, 25 Jan 2017 12:16:59 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cWRBj-0007uP-U2; Wed, 25 Jan 2017 18:16:54 +0100 From: Lars Ingebrigtsen To: Yuri D'Elia Cc: emacs-devel@gnu.org Subject: Re: message.el and mml-secure-bcc-is-safe In-Reply-To: <87d1fb3wfo.fsf@wavexx.thregr.org> (Yuri D'Elia's message of "Wed, 25 Jan 2017 18:02:03 +0100") Date: Wed, 25 Jan 2017 18:16:19 +0100 Message-ID: <87vat3vz4s.fsf@gnus.org> References: <87tw9b9jud.fsf@wavexx.thregr.org> <87y3y49xt7.fsf@gnus.org> <874m0rgqff.fsf@informationelle-selbstbestimmung-im-internet.de> <87d1fb3wfo.fsf@wavexx.thregr.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 17:17:04 -0000 Yuri D'Elia writes: > On Sun, Jan 22 2017, Jens Lechtenboerger wrote: >>> I'm not sure... there might be subtleties there... I've added Jens to >>> the Cc; he added the code so he might have an opinion. >> >> There was no particular reason for adding the bcc-check before >> executing that hook. Feel free to exchange their order. > > Lars, are you going to commit this change, or should I prep a patch? Please prep a patch. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Wed Jan 25 14:50:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWTaQ-0006pA-7x for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 14:50:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWTaM-0006nr-32 for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:50:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWTaL-0005Zy-3a for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:50:26 -0500 Received: from mail-ot0-x234.google.com ([2607:f8b0:4003:c0f::234]:36004) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWTaK-0005ZR-V5 for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:50:25 -0500 Received: by mail-ot0-x234.google.com with SMTP id 32so1337780oth.3 for ; Wed, 25 Jan 2017 11:50:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=pDD5NgLWGUzC2/fBI+Mu3m1gAgRRDleHcsAkeac5MGg=; b=EiFMxPDKDGK4T3JaQ3XImYcvJh6p5oN1URqOEuodLUvbQetoJ2mFkLINNL9RmfqTPD 0Lcp6v7TQVRxxC7Hvbl7jpKBdeiWBy1Bn1QqOug4+9gTodt7O7rk8jI1EkUD7JZ+7mQB +xNweDX7uv/2Gb5nEsDeZmmi9MB+foI+LyVRR/z2nQwB/bbv7HgdSZT3/qvzGHUR6R/b Dnw6bPHSdJL3c0VbsxVsIb/oX4crFwMR5R104iHp4h+YCgiMPHOtxp4CJBU1qHRFQseS rgNDM8jNrOMbZWA2J+Hvb0QSO3hSJNgQCRBfWwidIQjhpoCQ2mtQCFpPUZA+G5BY9ZLR 325g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=pDD5NgLWGUzC2/fBI+Mu3m1gAgRRDleHcsAkeac5MGg=; b=ORVWz1kHHep9Eq7+Gzz7tfNUOAzsCRyGeHikmdIcGypebeUvLhLqwfr6Mr9yvO3UHL X2GAaffqUFqGsZtHL+9z+ulavvZ8ns4zlfJpMGHoq5v8ZIhPNB2Cw8TWbrHuym+lMNVM +tsNMCn+TehUHkKPGsupKvrxUWzQTGCIcE8KnZZgzqHT1aVXAXfsog9IMKenKFHVUkBz BTnAcPlVi+SLek4fbXt2aBwLdv8NpYWBcZ8/mHxSV68+fdkPXieTxM21eugTQe58XDUX nqGPtHsLODZBEoklj6Qt4zbARJnVp/C9nSQVGpTOWRBDTS/GIQ3wpnHx5rIwkIiv1Ae3 yYJA== X-Gm-Message-State: AIkVDXIv7rRvNxiUtKKW/h7CFQ65IvNBNw+l6Ol3BLGCMNWFKO+t1EVgxGHZEWyJC+S7UZ7I9PqAOUta9ur6GA== X-Received: by 10.157.29.100 with SMTP id m91mr22852200otm.6.1485373822667; Wed, 25 Jan 2017 11:50:22 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Wed, 25 Jan 2017 11:50:22 -0800 (PST) In-Reply-To: <877f5j3vto.fsf@wavexx.thregr.org> References: <87ziiq4nll.fsf@wavexx.thregr.org> <877f5j3vto.fsf@wavexx.thregr.org> From: Noam Postavsky Date: Wed, 25 Jan 2017 14:50:22 -0500 X-Google-Sender-Auth: vPmaneVsAV4Vy0SKq0ZCsklZwno Message-ID: Subject: Re: "reference to free variable" only during initialization To: "Yuri D'Elia" Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 19:50:28 -0000 On Wed, Jan 25, 2017 at 12:15 PM, Yuri D'Elia wrote: > On Mon, Jan 16 2017, Noam Postavsky wrote: >>> Warning (bytecomp): reference to free variable =E2=80=98isearchp-reg-be= g=E2=80=99 >>> >>> during startup. The warning is generated by requiring >>> modeline-posn.el[1], which is using ``isearchp-reg-beg`` (actually >>> defvar-ed early on) inside a defadvice form. >>> >>> Is this expected? >> >> There is some unexpected interaction of defadvice with delayed >> warnings. I had noticed this a while back, but never got around to >> fixing it. `ad-compile-function' binds `warning-suppress-types', but >> if warnings are delayed, then the warning call happens after that >> binding is finished. > > This explains one difference, but it would mean that when the warning is > not delayed, it would be lost[!]. That would be more serious. It shouldn't be lost, `warning-suppress-types' just stops the *Warnings* buffer from popping up. The warnings are still logged in the background. >> In this case, the warnings are not delayed. If you set after-init-time >> to nil, then warnings will be delayed, so the same problem should >> occur, I think: >> >> emacs -q --eval '(setq after-init-time nil)' -l ~/.emacs > > Actually, it doesn't work. No warning is generated in this case. Hmm, I can't reproduce your original case in 25.1 or 24.5, even after comme= nting (defvar isearchp-reg-beg) ; In `isearch+.el' (defvar isearchp-reg-end) ; In `isearch+.el' (defvar isearchp-restrict-to-region-flag) ; In `isearch+.el' at the top of modeline-posn.el. I have init.el with contents From MAILER-DAEMON Wed Jan 25 14:51:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWTbN-0007Oz-H7 for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 14:51:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWTbJ-0007LW-H2 for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:51:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWTbI-0005xV-KV for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:51:25 -0500 Received: from mail-ot0-x231.google.com ([2607:f8b0:4003:c0f::231]:33864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWTbI-0005xO-Fr for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:51:24 -0500 Received: by mail-ot0-x231.google.com with SMTP id f9so160000653otd.1 for ; Wed, 25 Jan 2017 11:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=NY4kqSqXTBcduanQDZolj0HLOEolNauSAGAiviwkoMw=; b=AylOEnw8imKHmtu5z6R2FwzUQrg1n0zAFcrmOzVkprKNiTX64VUh7Fmyj8F/ttzaRV 1h7KooW+N0CVlTFvjEC3ASgGKAwmeN2EbTWnbhDJO1cFYOi6KEkhbag9VdIhPEgIPOIm C5tUCv91umG9HStdPL+K+F5JnEtPrw55FaRMkbL/91TKcgPHu6KmDe/j9yb+OMEUy0bj I8LbineS4C2IPb8xqIbzsS8EvR8kIO6cEEwwD4AckkKlruSAybxYkiS/Pdb9Xn7/jUNB HB2wmFK/zT5hYdAV/j3CSGzIksou6kQFestOkl9Fj6HuvMGfOlRUGXit2Td5C9s7DilX paMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=NY4kqSqXTBcduanQDZolj0HLOEolNauSAGAiviwkoMw=; b=hPQKK7kUJ50R6zGNUSr/qgRWNH1vXvXtXmSxCAWy3ANO2DGTkV9CXNqIFRYtcpI2F9 oIbI8VFqq6utd1K2tom7UZsaYzIMxhdF79VdPmoXBmR4ebFt/NcK+jx3nSy+PiukXs75 ajbmSvinwNENCEdYY6/MH54jxRFfMr3TYxUYNN8t7rle7pWw/x0xA4FVE2opbX5xgx5e cIKy5AUTYPUoyP4OpMRPHk8RSddyYk3McXQFzrReDqYoK2wKyXpcXahv3kurqE2oP6lQ 2qlPf5OdhIRNzqFlhrmIrKCnaLr0weOurnnoGNaQD/ljLzaIsjrCVpd8PNoMwlx0nOPC JFrA== X-Gm-Message-State: AIkVDXJ4Ly78n2FAuROPAlI9M+0pMhSdgZastEI2BTiClp1xMSFZScpvcs8kgImyuxv3WT2jGJRjyBWM8rQv4Q== X-Received: by 10.157.14.85 with SMTP id n21mr22373371otd.244.1485373883792; Wed, 25 Jan 2017 11:51:23 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Wed, 25 Jan 2017 11:51:23 -0800 (PST) In-Reply-To: References: <87ziiq4nll.fsf@wavexx.thregr.org> <877f5j3vto.fsf@wavexx.thregr.org> From: Noam Postavsky Date: Wed, 25 Jan 2017 14:51:23 -0500 X-Google-Sender-Auth: i1T-LjPS7tQdnRwzAzqML9iFdrc Message-ID: Subject: Re: "reference to free variable" only during initialization To: "Yuri D'Elia" Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 19:51:27 -0000 Hit send too early. On Wed, Jan 25, 2017 at 2:50 PM, Noam Postavsky wrote: > at the top of modeline-posn.el. I have init.el with contents (add-to-list 'load-path "~/.emacs.d/lisp") (require 'modeline-posn) when I start emacs normally I see no warnings. From MAILER-DAEMON Wed Jan 25 15:32:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWUEr-0002cN-3Q for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 15:32:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWUEo-0002bx-7i for emacs-devel@gnu.org; Wed, 25 Jan 2017 15:32:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWUEh-000422-58 for emacs-devel@gnu.org; Wed, 25 Jan 2017 15:32:14 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37869) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWUEh-00041w-1c; Wed, 25 Jan 2017 15:32:07 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3144 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cWUEf-0001sY-P4; Wed, 25 Jan 2017 15:32:06 -0500 Date: Wed, 25 Jan 2017 22:31:46 +0200 Message-Id: <83fuk63mq5.fsf@gnu.org> From: Eli Zaretskii To: Rasmus CC: emacs-orgmode@gnu.org, emacs-devel@gnu.org In-reply-to: <87a8afaxlz.fsf@gmx.us> (message from Rasmus on Wed, 25 Jan 2017 17:54:48 +0100) Subject: Re: Sync up the org in emacs master to org maint branch? Reply-to: Eli Zaretskii References: <87a8afaxlz.fsf@gmx.us> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 20:32:15 -0000 > From: Rasmus > Date: Wed, 25 Jan 2017 17:54:48 +0100 > Cc: emacs-devel@gnu.org > > What is the current status? I am a bit confused about the policy at this > point. I'm happy to try to update master to 9.0.4, but I was somehow > under the impression that we were waiting for a solution to include ELPA > packages in the Emacs tarball. That could take a while, AFAIU, so I wouldn't recommend delaying the update on that behalf. Thanks. From MAILER-DAEMON Wed Jan 25 15:41:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWUNd-00079c-3A for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 15:41:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46103) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWTGY-00070l-2x for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:29:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWTGU-0007Dh-4u for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:29:58 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:41987) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWTGT-0007BW-Ro for emacs-devel@gnu.org; Wed, 25 Jan 2017 14:29:54 -0500 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v0PJOTXr073983 for ; Wed, 25 Jan 2017 14:29:51 -0500 Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by mx0a-001b2d01.pphosted.com with ESMTP id 286ua0jt68-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 25 Jan 2017 14:29:51 -0500 Received: from localhost by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 25 Jan 2017 12:29:50 -0700 Received: from d03dlp02.boulder.ibm.com (9.17.202.178) by e36.co.us.ibm.com (192.168.1.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 25 Jan 2017 12:29:48 -0700 Received: from b03cxnp08028.gho.boulder.ibm.com (b03cxnp08028.gho.boulder.ibm.com [9.17.130.20]) by d03dlp02.boulder.ibm.com (Postfix) with ESMTP id 5C9EC3E40030 for ; Wed, 25 Jan 2017 12:29:47 -0700 (MST) Received: from b03ledav002.gho.boulder.ibm.com (b03ledav002.gho.boulder.ibm.com [9.17.130.233]) by b03cxnp08028.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v0PJTluF7799190 for ; Wed, 25 Jan 2017 12:29:47 -0700 Received: from b03ledav002.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3489413603A for ; Wed, 25 Jan 2017 12:29:47 -0700 (MST) Received: from raptor.austin.ibm.com (unknown [9.53.94.36]) by b03ledav002.gho.boulder.ibm.com (Postfix) with ESMTP id 1EC43136040 for ; Wed, 25 Jan 2017 12:29:47 -0700 (MST) Received: from pixie.austin.ibm.com (pixie.austin.ibm.com [9.41.102.66]) by raptor.austin.ibm.com (AIX6.1/8.14.4/8.14.4) with ESMTP id v0PJTkQJ7143434 for ; Wed, 25 Jan 2017 13:29:46 -0600 From: Perry Smith Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: 64 bit emacs 25.1 on AIX Date: Wed, 25 Jan 2017 13:29:40 -0600 To: emacs-devel@gnu.org X-Mailer: Apple Mail (2.3259) X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 17012519-0020-0000-0000-00000B2E5DD6 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006497; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000200; SDB=6.00812613; UDB=6.00396324; IPR=6.00590031; BA=6.00005090; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00014046; XFM=3.00000011; UTC=2017-01-25 19:29:49 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17012519-0021-0000-0000-00005987123D Message-Id: <2B9A418E-17BF-4165-9576-CF6530BA9B52@us.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-01-25_14:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1701250182 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 X-Mailman-Approved-At: Wed, 25 Jan 2017 15:41:19 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 19:29:59 -0000 Hi, I=E2=80=99m trying to build emacs 25.1 using gcc 4.5.2 in 64 bit mode. = I have gotten to the point that temacs is created. It does not dump (or = unexec) but that is something I was hoping I could work on when I have = time. What I=E2=80=99d like to do for a temporary measure is just use temacs. = It does load up a bunch of stuff but I tend to just keep my emacs = running so the time penalty isn=E2=80=99t really a big deal to me. The first stumbling block was I needed to change PATH_DUMPLOADSEARCH. I = did that. Now, I=E2=80=99ve discovered that loadup.el sets exec-path to nil. Rather than track down and figure out all these things, I thought I = would just ask: =E2=80=9Cwhat is the recommended way to use temacs = rather than the preloaded emacs?" Thank you, Perry Smith From MAILER-DAEMON Wed Jan 25 16:21:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWV0l-0004D9-8U for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 16:21:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWV0i-0004AW-Fq for emacs-devel@gnu.org; Wed, 25 Jan 2017 16:21:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWV0f-00006d-Bz for emacs-devel@gnu.org; Wed, 25 Jan 2017 16:21:44 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:50664) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWV0f-00006H-5C for emacs-devel@gnu.org; Wed, 25 Jan 2017 16:21:41 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3091316008F; Wed, 25 Jan 2017 13:21:39 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id i68z1fOm5TKA; Wed, 25 Jan 2017 13:21:38 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 38FE61600A9; Wed, 25 Jan 2017 13:21:38 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Nko032bFJYhC; Wed, 25 Jan 2017 13:21:38 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 2155916008F; Wed, 25 Jan 2017 13:21:38 -0800 (PST) Subject: Re: 64 bit emacs 25.1 on AIX To: Perry Smith References: <2B9A418E-17BF-4165-9576-CF6530BA9B52@us.ibm.com> Cc: emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Wed, 25 Jan 2017 13:21:37 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <2B9A418E-17BF-4165-9576-CF6530BA9B52@us.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 21:21:46 -0000 On 01/25/2017 11:29 AM, Perry Smith wrote: > =E2=80=9Cwhat is the recommended way to use temacs rather than the prel= oaded emacs?" The temacs procedure has bitrotted a bit, I'm afraid. Ken Raeburn is=20 working on this, as one idea for fixing the Emacs dump problem is to=20 always run in temacs mode. See the scratch/raeburn-startup branch in the=20 Emacs git repository. Although this is not ready for prime-time, it may=20 be good enough for your purposes. The latest email I recall receiving=20 from Ken on this subject is archived here: http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00490.html From MAILER-DAEMON Wed Jan 25 19:45:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWYCG-0008WO-Uv for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 19:45:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWYCE-0008VL-SQ for emacs-devel@gnu.org; Wed, 25 Jan 2017 19:45:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWYCA-0001XB-TN for emacs-devel@gnu.org; Wed, 25 Jan 2017 19:45:50 -0500 Received: from proofpoint5.lanl.gov ([2001:400:4210:400::a5]:43096) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWYCA-0001Wv-N3 for emacs-devel@gnu.org; Wed, 25 Jan 2017 19:45:46 -0500 Received: from mailrelay1.lanl.gov (mailrelay1.lanl.gov [128.165.4.101]) by mailgate5.lanl.gov (8.15.0.59/8.15.0.59) with ESMTP id v0Q0jh12018017; Wed, 25 Jan 2017 17:45:43 -0700 Received: from localhost (localhost.localdomain [127.0.0.1]) by mailrelay1.lanl.gov (Postfix) with ESMTP id 5C6DC144E0E6; Wed, 25 Jan 2017 17:45:43 -0700 (MST) X-NIE-2-Virus-Scanner: amavisd-new at mailrelay1.lanl.gov Received: from bismuth.lanl.gov (bismuth.lanl.gov [128.165.246.103]) by mailrelay1.lanl.gov (Postfix) with ESMTP id 46CA7144E0E3; Wed, 25 Jan 2017 17:45:43 -0700 (MST) Subject: Re: Proposal: alias `clear-buffer` to `erase-buffer` To: Tianxiang Xiong References: Cc: Emacs developers From: Davis Herring Organization: XCP-1 Message-ID: <8175b48e-cbb7-4c55-fc18-12b5f3862d66@lanl.gov> Date: Wed, 25 Jan 2017 17:45:43 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.15.154, 1.0.8, 0.0.0000 definitions=2017-01-25_17:2017-01-24, 2017-01-25, 1970-01-01 signatures=0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 2001:400:4210:400::a5 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 00:45:51 -0000 > - `clear-string` > - `clear-rectangle` I'm not sure the analogy follows: these two replace a container's contents with some sort of blank, but don't change their size to be 0. Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. From MAILER-DAEMON Wed Jan 25 22:31:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWame-00051R-RF for mharc-emacs-devel@gnu.org; Wed, 25 Jan 2017 22:31:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33614) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWamc-00051E-HE for emacs-devel@gnu.org; Wed, 25 Jan 2017 22:31:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWamZ-00024N-DT for emacs-devel@gnu.org; Wed, 25 Jan 2017 22:31:34 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41724) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWamZ-00024I-Am; Wed, 25 Jan 2017 22:31:31 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3363 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cWamY-0001wP-1D; Wed, 25 Jan 2017 22:31:30 -0500 Date: Thu, 26 Jan 2017 05:31:15 +0200 Message-Id: <83efzq33b0.fsf@gnu.org> From: Eli Zaretskii To: Perry Smith CC: emacs-devel@gnu.org In-reply-to: <2B9A418E-17BF-4165-9576-CF6530BA9B52@us.ibm.com> (message from Perry Smith on Wed, 25 Jan 2017 13:29:40 -0600) Subject: Re: 64 bit emacs 25.1 on AIX Reply-to: Eli Zaretskii References: <2B9A418E-17BF-4165-9576-CF6530BA9B52@us.ibm.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 03:31:35 -0000 > From: Perry Smith > Date: Wed, 25 Jan 2017 13:29:40 -0600 > > Now, I’ve discovered that loadup.el sets exec-path to nil. > > Rather than track down and figure out all these things, I thought I would just ask: “what is the recommended way to use temacs rather than the preloaded emacs?" AFAIR, temacs was ever only used for testing and debugging Emacs. From MAILER-DAEMON Thu Jan 26 01:19:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWdPS-0001tQ-Pb for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 01:19:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWdPP-0001rv-O2 for emacs-devel@gnu.org; Thu, 26 Jan 2017 01:19:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWdPM-0001EB-Jy for emacs-devel@gnu.org; Thu, 26 Jan 2017 01:19:47 -0500 Received: from pb-smtp1.pobox.com ([64.147.108.70]:61848 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWdPM-0001E4-EX; Thu, 26 Jan 2017 01:19:44 -0500 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-smtp1.pobox.com (Postfix) with ESMTP id C5BE564D96; Thu, 26 Jan 2017 01:19:40 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=i9agRNkJQOJ9xVfs4KWNXipTJHY=; b=ZdjOqQ E0keQ/DhZ3Y/sAI33l5C0LdHuTsYuxUdJnkRzQL+h2W+736GJWIx/JZcIoTWUEOM aJ9+9pp63NXg4s+ziN6NQvJaNI6uAHo4Fsfz2KbfJLj4uJPhNmv8N6Zik2Hppv9h VLcoN5lAWDNczWA6lph3CqAs3s0IHwn+cYJ1E= Received: from pb-smtp1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp1.pobox.com (Postfix) with ESMTP id BC8BC64D95; Thu, 26 Jan 2017 01:19:40 -0500 (EST) Received: from localhost (unknown [24.60.167.92]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pb-smtp1.pobox.com (Postfix) with ESMTPSA id 3606664D94; Thu, 26 Jan 2017 01:19:40 -0500 (EST) From: Kyle Meyer To: Rasmus Cc: emacs-orgmode@gnu.org, emacs-devel@gnu.org, Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? References: <87a8afaxlz.fsf@gmx.us> X-Attribution: Kyle Date: Thu, 26 Jan 2017 01:19:33 -0500 In-Reply-To: <87a8afaxlz.fsf@gmx.us> (rasmus@gmx.us's message of "Wed, 25 Jan 2017 17:54:48 +0100") Message-ID: <87y3xys5qi.fsf@kyleam.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: 6B5B548E-E38F-11E6-80DE-FE3F13518317-24757444!pb-smtp1.pobox.com DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=kyleam.com; h=from:to:cc:subject:references:date:in-reply-to:message-id:mime-version:content-type; s=mesmtp; bh=i9agRNkJQOJ9xVfs4KWNXipTJHY=; b=LTUt4w5oYw/HvjnFkorEOgWMWzkfbLkpFKgbaOhiY5nUVas9DIxbUdRLZqumvEGJPDsNhSNLhC2VhUIqe0XNPh5Raa+Td1PCsm0dc2NLs785sCrCPmGr1jERcvay0RR+yqWlr2AKW56XNG3oLA/cdmfUtyyfNjjzegvzFgYjkFU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 64.147.108.70 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 06:19:48 -0000 Rasmus writes: > Kaushal Modi writes: [...] >> As a precaution that that does not repeat when emacs 26.x is released, >> should the org version in emacs master be synced with the now latest stable >> org version 9.0.4? > > Yes. We'd want at least one more release from maint, I think, so that'd be 9.0.5. >> If we are able the release the new packaging method in emacs 26.x, then we >> can remove org from emacs master completely, but if not, then at least as >> backup we have a newer org version to go out with that release. > > What is the current status? I am a bit confused about the policy at this > point. I'm happy to try to update master to 9.0.4, but I was somehow > under the impression that we were waiting for a solution to include ELPA > packages in the Emacs tarball. Rasmus, I've pushed a branch (emacs-sync) to the Org repo that applies several patches on top of maint. These make a few changes to org.texi and orgcard.tex that I think are appropriate for the sync. Feel free to ignore the branch if it's not helpful. Thanks. -- Kyle From MAILER-DAEMON Thu Jan 26 03:26:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWfOH-0003vR-3q for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 03:26:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51838) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWfOE-0003v5-GQ for emacs-devel@gnu.org; Thu, 26 Jan 2017 03:26:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWfOB-0001Pe-D6 for emacs-devel@gnu.org; Thu, 26 Jan 2017 03:26:42 -0500 Received: from mout.gmx.net ([212.227.15.19]:57935) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWfOB-0001PV-2j; Thu, 26 Jan 2017 03:26:39 -0500 Received: from detlef.gmx.de ([93.197.214.83]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M08ia-1cDua01NEK-00uLre; Thu, 26 Jan 2017 09:26:36 +0100 From: Michael Albinus To: Rasmus Cc: emacs-orgmode@gnu.org, emacs-devel@gnu.org Subject: Re: Sync up the org in emacs master to org maint branch? References: <87a8afaxlz.fsf@gmx.us> Date: Thu, 26 Jan 2017 09:26:35 +0100 In-Reply-To: <87a8afaxlz.fsf@gmx.us> (Rasmus's message of "Wed, 25 Jan 2017 17:54:48 +0100") Message-ID: <87k29i2pms.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:h00kznEjYt/SIKiFe/YHLlL+hdcKIEYeztiKETTPL4egM296c/O I2i6F6uWqOHKOabVLP2FTVbwj8rHmw1PLr67GA7uBAxZTTj4eV1rKdDkbsCuqS48Zan4nvP 3tw2OHFNixACDnzBDH+SlCVXmresgnXrBSgqdf23nlL1u0ATry20UPgLCb6I/HakYlZcCiu 4yVlZAmP4RKVUBEih5uzw== X-UI-Out-Filterresults: notjunk:1;V01:K0:7rw+d8vAVzo=:m/x68Pp/EcQFPkR9G9Qnb1 +ceonjCqszcHTylTtBvRhfoIWp2EArj42yoMhp6bGxSrbnWfg3EIsVGpdxJt53plsYu7k6TJk /I+OvdDUnRqYUcJECvC0ASE8UomJ3IEsYpRYEg0V/4sCrSQKysnStarFuwJ11UGmkxPH5IEVT VtqoL5D6X+X4jscOoabQVVWbYytTL0ocpbrHO/maos+OTwtYY1DRxmQ88afpfvA4QGJ8uPoB3 jwtIgPO55uHpwYDM9zbcX062+jbuOtlaI9+kSWc/xlpMLZ6jMOIhaxFOaUnazv0vsbSChBSal xrlA0GvslvDNf8xZ27/OIaj+l3+b1RI6w9FTuZ9NjT6jgA6GHUkcBkdS3lVgu+9Tnz+b1pyh4 B6tP6zfg6dzT10ubf6RRq6rF4v/T1wh/+urFsTxNZFBYIJ6oca5HshfBlw3giNsQHLMWgvXkw 6N8jKBPW2Uf5X1BFsSjAkxq+JsdLOPaZ8VqiieK7gXJmOgRaAUgUsUeGWH7+TQUpBzU1XEWyB 3v2DPVSmrsemiRZ820zf0vetlawqjGW+//lDhjwlgYp+UWSafF0+Cp28VmzbYc6wC0T7YC+yk U1N3/GUOZSq3m/CpTKjML0ncS+hiPqKhBpFZkvKaKBxR6MnC3vfSRqaUORZ12FTSV5SaACyuQ CPtfoxGaHKWxEwaF7tvn6EWk8iTEA2pFD74mWFQnfvebx+7B21pC5DLtKyHIEM/iGz+Ll2FTj emeFGe3RBnAFbkw0jf7yIXt4UEJwo/zbSgpK3znt2IZy3vOyTIao8vIOn6jW2fpjYT5YC2O1L V7QuVWB X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.19 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 08:26:43 -0000 Rasmus writes: > Hi, Hi, > *AFAIR* it was too late and would thus not have received enough test from > the general Emacs community. org-mode comes with some hundred ert test cases. It would be great if they'll land also in the Emacs master branch; this will give much more testing. > Thanks, > Rasmus Best regards, Michael. From MAILER-DAEMON Thu Jan 26 03:32:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWfTb-0006uf-18 for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 03:32:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWfTX-0006to-Vy for emacs-devel@gnu.org; Thu, 26 Jan 2017 03:32:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWfTU-00032k-T5 for emacs-devel@gnu.org; Thu, 26 Jan 2017 03:32:12 -0500 Received: from forward3p.cmail.yandex.net ([77.88.31.18]:42600) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWfTU-00032P-Fo for emacs-devel@gnu.org; Thu, 26 Jan 2017 03:32:08 -0500 Received: from smtp3m.mail.yandex.net (smtp3m.mail.yandex.net [77.88.61.130]) by forward3p.cmail.yandex.net (Yandex) with ESMTP id AD9CE20280; Thu, 26 Jan 2017 11:32:02 +0300 (MSK) Received: from smtp3m.mail.yandex.net (localhost.localdomain [127.0.0.1]) by smtp3m.mail.yandex.net (Yandex) with ESMTP id 18F892840CF6; Thu, 26 Jan 2017 11:32:01 +0300 (MSK) Received: by smtp3m.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id bGNAU5ui8q-W1sS6P0u; Thu, 26 Jan 2017 11:32:01 +0300 (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.com; s=mail; t=1485419521; bh=avixVuBQRLjS+yRHfeoPPkwQ3/1TRgbT9Bd9UPjZ8mk=; h=From:To:Cc:Cc:Subject:References:Date:In-Reply-To:Message-ID; b=AYwqJDeZ6xECKxAiFKbMe6yTT9A3QCkOZa2KkIHdnbfsvnl6ueI5FrJxqMrnF5Xqf Ctua5j8cep26dAcf+E2RqcWWgfmpFuDPMWkAsDUP0ehW0r9Egwlf7R3eMSmM5wBQ8b 5GLZEAqn3EB7mVu28iOhzj4ECcQSDbZEfsu6LVwQ= Authentication-Results: smtp3m.mail.yandex.net; dkim=pass header.i=@yandex.com X-Yandex-Suid-Status: 1 0,1 0 From: Colin Baxter To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Cc: Subject: Re: gnutls.c make error References: <87fuk7fw79.fsf@yandex.com> <87pojb8fql.fsf@gnus.org> Date: Thu, 26 Jan 2017 08:31:58 +0000 In-Reply-To: <87pojb8fql.fsf@gnus.org> (Lars Ingebrigtsen's message of "Wed, 25 Jan 2017 13:51:30 +0100") Message-ID: <87lgty1atd.fsf@yandex.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAAAFz UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlQ TFRF19bYYWFo////Mo2MdQAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAEUSURB VCjPTVJBDsQgCIQE7jSR/2iid02Y/39l2eq2y6FxOgwy0xKRQosHkTh1mgwXylKaVDui0K8Qy/bJ CAuwh3DgaWMY8IAcEsQ3ySKYII/+RQU5gijg9H3OqJx38ma8U6WUEl3fnXLEXWqkRQ9IWhXz2U49 4gWIPwZkrwmV+gKMt03g/5r1gmKeGjnetaSdtiX5OsHYEmLNnu09D2w/hulS3+YSDM+w7eQ1py2S tZmQmsbbuVS5c9sDyF0KtcNouKmcjDGXaT1twWUW9w3WXNFLPx9loM4dnbGm70vvGGxE8dF2jrkU gL71dqEPcb/blpDPhbidQX1MHkloZTSg3sukI18t9A47Sc5fJI3/jMKr1GYfQ+A2sg9JwvEAAAAl dEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMjlUMTA6Mzg6MjErMDE6MDCUWKqkAAAAJXRFWHRkYXRl Om1vZGlmeQAyMDE2LTAyLTE4VDIwOjIyOjIyKzAwOjAwkZlUCwAAABF0RVh0anBlZzpjb2xvcnNw YWNlADIsdVWfAAAAIHRFWHRqcGVnOnNhbXBsaW5nLWZhY3RvcgAxeDEsMXgxLDF4MemV/HAAAAAA SUVORK5CYII= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 77.88.31.18 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 08:32:13 -0000 Hi Lars, I thought I had posted a thank-you, but I find its not listed. I must have imagined writing it. Please accept my apologies for not confirming that I can now build emacs satisfactorily. And thank you again. Colin. On Wed, Jan 25 2017, Lars Ingebrigtsen wrote: > Colin Baxter writes: > >> gnutls.c: In function =E2=80=98emacs_gnutls_handle_error=E2=80=99: >> gnutls.c:589:18: error: =E2=80=98GNUTLS_E_PREMATURE_TERMINATION=E2=80=99= undeclared >> (first use in this function) > > Hm, perhaps that symbol is only defined in some gnutls versions? I seem > to be using gnutls 3.0 -- what version are you using? > > Anyway, I guess I'll have to add some autoconf tests... darn. From MAILER-DAEMON Thu Jan 26 08:03:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWjiF-0000jM-O6 for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56210) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWjiD-0000iA-Qe for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWjiC-0007DF-T2 for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:37 -0500 Received: from mail-yb0-x231.google.com ([2607:f8b0:4002:c09::231]:34461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWjiC-0007Cj-PD for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:36 -0500 Received: by mail-yb0-x231.google.com with SMTP id j82so39511787ybg.1 for ; Thu, 26 Jan 2017 05:03:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=wjjtXUQRg0LWe0mqhPDmEuoLf8hTFi6qYc9ulCw3fY8=; b=M79Onbn4O9KSuVT3f27rssbylQ3cbx2HFxV1Bokd+FnZFEmmnwGGFeo0WqxTNsV1DL 6+nKPANbUPhyJrvFUGExUWmRIXC/LSI03rVz3+cPPQekP/jvhKXNvisPBiR1OHIsFvOr DruXaP/+zETs/AV5YADih30yDcKCEucGJptlsY4xZ7McJfII5euCLf/ytENiZRbeqtdI g/YR+7pIjGcpzoRraqwIGE4OV5l2sX/bSIwfkjMjloh/vCmnVxSQpZ+ItbUspf0f4cyq V0dPycsdrfwgv+vmtOmn+OmGdtOia7t96Pi3Y0UQoaf4z6AkbzHD+ajXUdXjrzFPS7Lx loLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wjjtXUQRg0LWe0mqhPDmEuoLf8hTFi6qYc9ulCw3fY8=; b=aLq7m56Q5Ar8cbYGEsPbPNg6joJBk3HnXTpQ1UqLFlUWoNvlWAE4WtGOuSpwilFJSL bIvZzpkN8puBOzQu39rilk26Hh6l4odpBo9ooy0o+HSLS/nrCh50POZOPGySKUtaaa/k NYytnnMzmKEWJ4XrYWRRo53J+razHbRUVaLZhlGveMn4T+1RBuuJ8oo8AHbTsQaa5Ery ix3pFFLnBxM9GdE54ZTZzPIxmbSI9dBsbZh4EOkjLOARHomXZWNVMC0rUPB6No2Mes6F e0X87PvvH1yG0b+Cyngi2za3IcSn5iXLZk9hUffRvL5lmv8zMMLn5ZuOmnylr+6MI4Hp vwwQ== X-Gm-Message-State: AIkVDXKJQP6E5Wr0mSX+1DFBknDIOJTkuIhV6kQjQgDq9nKbRcHI5TzB3cdkvWDE1/rIfxKs4fMNYp69IWg3Iw== X-Received: by 10.13.244.1 with SMTP id d1mr1998096ywf.139.1485435814044; Thu, 26 Jan 2017 05:03:34 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Thu, 26 Jan 2017 05:03:33 -0800 (PST) From: Vibhav Pant Date: Thu, 26 Jan 2017 18:33:33 +0530 Message-ID: Subject: Critical bytecode bug with hash tables while dumping emacs. To: "emacs-devel@gnu.org" Content-Type: multipart/mixed; boundary=94eb2c03632c0888870546fefaec X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 13:03:38 -0000 --94eb2c03632c0888870546fefaec Content-Type: text/plain; charset=UTF-8 While, working on `byte-switch`, I discovered a critical bug when a hash table is present in the constant vector of a bytecode function. If such a function is called when temacs dumps a binary during the biuld process, all keys and their corresponding values change to that of a different hash table. The following patch demonstrates this by testing the value of 'foo` in a table mapping 'foo to 'bar, and erroring out if the test fails. This causes temacs to error out, failing the build. Since the current elisp codebase, doesn't use printed representation anywhere to represent hash tables, this bug doesn't come up. However, this may fail builds in the future, if future code does that. -- Vibhav Pant vibhavp@gmail.com --94eb2c03632c0888870546fefaec Content-Type: text/x-patch; charset=US-ASCII; name="wrong-hash-table.patch" Content-Disposition: attachment; filename="wrong-hash-table.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyee4mk90 ZGlmZiAtLWdpdCBhL2xpc3AvY3VzdG9tLmVsIGIvbGlzcC9jdXN0b20uZWwKaW5kZXggNzBiNjgz OWRiMy4uNDkzMzBiYjFhNCAxMDA2NDQKLS0tIGEvbGlzcC9jdXN0b20uZWwKKysrIGIvbGlzcC9j dXN0b20uZWwKQEAgLTE0Niw2ICsxNDYsMTAgQEAgY3VzdG9tLWRlY2xhcmUtdmFyaWFibGUKIHNl dCB0byBuaWwsIGFzIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcm9ndWUuIgogICAocHV0IHN5bWJv bCAnc3RhbmRhcmQtdmFsdWUgKHB1cmVjb3B5IChsaXN0IGRlZmF1bHQpKSkKICAgOzsgTWF5YmUg dGhpcyBvcHRpb24gd2FzIHJvZ3VlIGluIGFuIGVhcmxpZXIgdmVyc2lvbi4gIEl0IG5vIGxvbmdl ciBpcy4KKyAgKGxldCAoKGh0ICNzKGhhc2gtdGFibGUgc2l6ZSA2NSB0ZXN0IGVxbCByZWhhc2gt c2l6ZSAxLjUgcmVoYXNoLXRocmVzaG9sZCAwLjggZGF0YQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoZm9vIGJhcikpKSkKKyAgICAodW5sZXNzIChlcSAnYmFyIChnZXRoYXNoICdmb28gaHQp KQorICAgICAgKGVycm9yIChmb3JtYXQgIlRoaXMgc2hvdWxkbid0IGJlIGhhcHBlbmluZy4gSGFz aCB0YWJsZTogJXMiIGh0KSkpKQogICAod2hlbiAoZ2V0IHN5bWJvbCAnZm9yY2UtdmFsdWUpCiAg ICAgKHB1dCBzeW1ib2wgJ2ZvcmNlLXZhbHVlIG5pbCkpCiAgIChpZiAoa2V5d29yZHAgZG9jKQo= --94eb2c03632c0888870546fefaec-- From MAILER-DAEMON Thu Jan 26 08:41:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWkIV-0002iR-Ey for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 08:41:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWkIS-0002hD-R7 for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:41:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWkIN-0003Jc-Ve for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:41:04 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:10615) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWkIN-0003JM-PO for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:40:59 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DXLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZRWggiGHAQCAoIRQhIBAgEBAQEBAQFiKIRpAQQBViMFCws0EhQYDVKITAitFItEAQEBAQYCASSLGYUUhRUFj3yKaolbiRgBiCaGOpIPJQEweBMOhXMgiS0BAQE X-IPAS-Result: A0DXLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZRWggiGHAQCAoIRQhIBAgEBAQEBAQFiKIRpAQQBViMFCws0EhQYDVKITAitFItEAQEBAQYCASSLGYUUhRUFj3yKaolbiRgBiCaGOpIPJQEweBMOhXMgiS0BAQE X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="289712433" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 26 Jan 2017 08:40:57 -0500 Received: by pastel.home (Postfix, from userid 20848) id 37E68654C1; Thu, 26 Jan 2017 08:40:57 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Paul Eggert Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Message-ID: References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> Date: Thu, 26 Jan 2017 08:40:57 -0500 In-Reply-To: <20170126052542.828422201BC@vcs.savannah.gnu.org> (Paul Eggert's message of "Thu, 26 Jan 2017 05:25:42 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 13:41:05 -0000 > Set and clear immediate_quit before and after loop instead of > executing QUIT each time through the loop. This is OK for loops > that affect only locals. IIRC we have moved some QUIT checks *into* loops in the past in order to be able to interrupt inf-loops, such as when you do (memq 4 '#1=(1 . #1#)). Of course, for circular lists a better solution is to use the hare&tortoise, e.g. with FOR_EACH_TAIL. Stefan From MAILER-DAEMON Thu Jan 26 08:46:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWkNf-0005In-D2 for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 08:46:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWkNd-0005Ih-4E for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:46:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWkNY-0004bf-TU for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:46:25 -0500 Received: from [195.159.176.226] (port=38593 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWkNY-0004bW-Ms for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:46:20 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWkN9-0005JX-Lk for emacs-devel@gnu.org; Thu, 26 Jan 2017 14:45:55 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Rasmus Subject: Re: Sync up the org in emacs master to org maint branch? Date: Thu, 26 Jan 2017 14:45:49 +0100 Lines: 24 Message-ID: <874m0maq9e.fsf@gmx.us> References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAAAAAByaaZbAAAAAmJLR0QA/4ePzL8AAAAJcEhZ cwAAAEgAAABIAEbJaz4AAAIMSURBVEjHvZbLleswDEPDjlgKOkEnKAWFoBYW8RayEydRJvM246WO rkjw61v953f7M6DRIFlVBUeSJAIfAYCSLdmWk0QCuj8BTUpKrCQzEfuLSw3IiZRJ1L8S3czYMc8D VH+JkuKMUFXV8kzid9euAOyZiKjqhkRKb+7dqqoosquq9fJsg682LhpQ1Y4toTSnsFfi4pK6SpJo wqMqopoStnmoaldBImgRVCSSErm3QKIKJAGKlGxbfiuQszRIdBVAAAS16iOxXkQ8Mo0jKsR6P5mZ xNoA3QD6AEDK8mFhD1T3chQkAMpJDsTWRsPpEUX0ASRJJtkCIPHIeB+XZ5ngO9AAu6plk6jynF8m vpcTLgBZVcpMzC7Og3g0U9R9ACBV6+HEAi/3fTYITeEOSFXFjAUQugI6AEe8u0RZVVVo2oKzAWZd uR0z4zAM6Z7lmYm9TxyOU655tPIwyWeARyfLJrW4lW57XxqrhSyvVyVatmNb22o9tMuZWLIkKbb2 Fup+2A1099KffAaeGnGVSZzVctsW9arvZncDa3Am0iquLbCKSpRFyqfiT8CSDZz3EzuWVq9/3kD9 aLjY8jegu7rB5Y9Mifi+43oNDWvj0DuAopZkiW+D9QXoLhK0csjdLbnbs+RV3ZYJ9LmB+kdghUcX 5/tJxwtAre17GcBN/BDWNSqvsemXSP3dv8avv39wgAhOeVDQLwAAAABJRU5ErkJggg== Cancel-Lock: sha1:+5ax6AXGLS8xxCClJSWkiN/cBYM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 13:46:26 -0000 Eli Zaretskii writes: >> From: Rasmus >> Date: Wed, 25 Jan 2017 17:54:48 +0100 > >> Cc: emacs-devel@gnu.org >> >> What is the current status? I am a bit confused about the policy at this >> point. I'm happy to try to update master to 9.0.4, but I was somehow >> under the impression that we were waiting for a solution to include ELPA >> packages in the Emacs tarball. > > That could take a while, AFAIU, so I wouldn't recommend delaying the > update on that behalf. So would now be a good time to sync the Emacs master? I guess the appropriate way would be to make a new branch that can eventually be merged. Would you agree? Thanks, Rasmus -- Lasciate ogni speranza o voi che entrate: siete nella mani di'machellaio From MAILER-DAEMON Thu Jan 26 09:22:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWkwB-0001XG-Ec for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 09:22:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46473) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWkw6-0001WY-7j for emacs-devel@gnu.org; Thu, 26 Jan 2017 09:22:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWkw2-0006Hn-Sy for emacs-devel@gnu.org; Thu, 26 Jan 2017 09:22:02 -0500 Received: from [195.159.176.226] (port=34542 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWkw2-0006Hj-MT for emacs-devel@gnu.org; Thu, 26 Jan 2017 09:21:58 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWkvd-0006iP-5i for emacs-devel@gnu.org; Thu, 26 Jan 2017 15:21:33 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Sync up the org in emacs master to org maint branch? Date: Thu, 26 Jan 2017 09:21:19 -0500 Lines: 10 Message-ID: References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:Nn4TpfQMo01nRqxEBCPdhx1nYeY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 14:22:06 -0000 > So would now be a good time to sync the Emacs master? On `master`, "now" is pretty much *always* a good time to sync. More specifically, it's better to always keep `master` in sync with the upstream (applies not just to Org). "sync early, sync often", Stefan From MAILER-DAEMON Thu Jan 26 10:01:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWlYf-0002og-5S for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 10:01:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56400) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWlYY-0002nt-Ty for emacs-devel@gnu.org; Thu, 26 Jan 2017 10:01:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWlYR-0002Z0-1w for emacs-devel@gnu.org; Thu, 26 Jan 2017 10:01:47 -0500 Received: from mail-vk0-x235.google.com ([2607:f8b0:400c:c05::235]:33709) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWlYQ-0002Yo-T8; Thu, 26 Jan 2017 10:01:38 -0500 Received: by mail-vk0-x235.google.com with SMTP id k127so155553337vke.0; Thu, 26 Jan 2017 07:01:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=DHekbKp8i08butCHyrWa1LG98FxfPN9zJW4NWwwaozo=; b=KPU5g81jHdYT1gauWvfTftv+eQNGfhvy50BmqxHm4mKrVAtl+B+rhFQThdILjwdBST hO3TCAXNC1sPsadi6+RrZYxfOBUr2MDoXEo9usMDA66MtHNp9P3FTklTZ9mLwSyehP4K vDzVO8MVkDq21eyBDrALXtcEFSJSReOv+oN5axGB4o6swsimrrZ6cbGO1zgBBlMvRhau MBF/MpdhD5BFJk11dWuoooztKBckqjV6EEznaZELNQjHjkK7KUKAlacAoFsc1W3/WbYS rxZHgjCyEv476xFU9eNgD3SZTxy9X4dT1BMbEkYv1C7BVw7ZRcXeARDkoMK8BrqDCqow LteQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=DHekbKp8i08butCHyrWa1LG98FxfPN9zJW4NWwwaozo=; b=MQimCpWollOUv+E4su2nMJwBI4jfNsojI7xFoJDD13mSat87QqXvRkdW+80f+CUPKK gsZEHIaVBeTt/bj0eeOv23taPnaRxvlypuRZe40CKdeRnSrbhsT/2/3kMRDTjyiTgEWs xgDTIx3Hdr++b8QTFDtKXSHymKMBrHisxgmd7nwbVZ8iUxK5WETlfIsRUSMZHI1pWifa OD7rQgm5uvZFGOXegEEl52ybLo6E/VngFeOFoSzR31aGIcdXu/Pfezqd/ZYKhbA1LEXP XD4Il6nEzlvivOGUEoRXB8MAAIYdoAB9oGdLtdiEGzUvhL0Xp28aaQRwXdnE+6erT6XD NcBQ== X-Gm-Message-State: AIkVDXIBSkTGas/DFg1KoXlJgIL/BTMOiFqGysKohaMccJd6NxjBanOBwTrz5KRPgKFlG5Czx/8qYduFXGTSdA== X-Received: by 10.31.97.1 with SMTP id v1mr1592927vkb.172.1485442898024; Thu, 26 Jan 2017 07:01:38 -0800 (PST) MIME-Version: 1.0 References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> In-Reply-To: From: Kaushal Modi Date: Thu, 26 Jan 2017 15:01:26 +0000 Message-ID: Subject: Re: Sync up the org in emacs master to org maint branch? To: Stefan Monnier , Emacs developers , Kyle Meyer , Rasmus , emacs-org list Content-Type: multipart/alternative; boundary=001a114da5104562f2054700a0a4 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 15:01:51 -0000 --001a114da5104562f2054700a0a4 Content-Type: text/plain; charset=UTF-8 On Thu, Jan 26, 2017 at 1:19 AM Kyle Meyer wrote: > Rasmus writes: > We'd want at least one more release from maint, I think, so that'd be > 9.0.5. > Would it be OK to sync the current stable 9.0.4, and keep on updating with each stable release as time comes? We never know, we might end up with even higher stable releases by the time emacs 26.1 is released. I have been using emacs master and org master for ages now without any issues. So emacs master + org 9.0.4 should not cause any serious problems. The major issues I forsee are the few backward incompatible changes people might have to make when org changes from 8.2.x to 9.x (though all those changes are documented in ORG-NEWS). On Thu, Jan 26, 2017 at 8:46 AM Rasmus wrote: > So would now be a good time to sync the Emacs master? I guess the > appropriate way would be to make a new branch that can eventually be > merged. > Going by the same argument as above, do you think that merging org maint into emacs master directly is that risky? org master + emacs master has been super-stable for me. On Thu, Jan 26, 2017 at 9:22 AM Stefan Monnier wrote: > > So would now be a good time to sync the Emacs master? > > On `master`, "now" is pretty much *always* a good time to sync. > More specifically, it's better to always keep `master` in sync with the > upstream (applies not just to Org). > > "sync early, sync often", > +1! -- Kaushal Modi --001a114da5104562f2054700a0a4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Thu, Jan 26, 2017 at 1:19 AM Kyle = Meyer <kyle@kyleam.com> wrote:=
Rasmus <rasmus@g= mx.us> writes:
We'd want at least one mor= e release from maint, I think, so that'd be
9.0.= 5.

Would it be OK t= o sync the current stable 9.0.4, and keep on updating with each stable rele= ase as time comes? We never know, we might end up with even higher stable r= eleases by the time emacs 26.1 is released.

I have= been using emacs master and org master for ages now without any issues. So= emacs master=C2=A0+ org 9.0.4 should not cause any serious problems. The m= ajor issues I forsee are the few backward incompatible changes people might= have to make when org changes from 8.2.x to 9.x (though all those changes = are documented in ORG-NEWS).
=C2=A0
On Thu, Jan 26, 2017 at 8= :46 AM Rasmus <rasmus@gmx.us> wr= ote:
So would no= w be a good time to sync the Emacs master?=C2=A0 I guess the
appropriate way would be to make a new branch that can eventually = be
merged.=C2=A0

Going by the same argument as above, do you think that= merging org maint into emacs master directly is that risky? org master=C2= =A0+ emacs master has been super-stable for me.
=C2=A0
= =C2=A0
On Thu, Jan 2= 6, 2017 at 9:22 AM Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> So would now be a good time to sync the Emacs master?
On `master`, "now" is pretty much *always* a good time to sync. More specifically, it's better to always keep `master` in sync with the=
upstream (applies not just to Org).

"sync early, sync often",

+1!=C2=A0

=C2=A0
--

Kaushal Modi

--001a114da5104562f2054700a0a4-- From MAILER-DAEMON Thu Jan 26 10:40:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWm9Z-0007TZ-9d for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 10:40:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWm9T-0007O9-8b for emacs-devel@gnu.org; Thu, 26 Jan 2017 10:39:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWm9O-0006MR-G4 for emacs-devel@gnu.org; Thu, 26 Jan 2017 10:39:55 -0500 Received: from pb-smtp2.pobox.com ([64.147.108.71]:57530 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWm9O-0006MC-9A; Thu, 26 Jan 2017 10:39:50 -0500 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 9E59060997; Thu, 26 Jan 2017 10:39:49 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=Xwr1beWxVXJ1B8h2TJfRiH/fxVE=; b=IOSQJQ 7PN2H/Rqt5Z2E+Xq3Vd8tdnFsBraLf2sL7CQzvyYvTKr5Q0/WS0S0aygUpKbE3ES H9qxl4y/kGH+c2uIjZPK62dOcK2a2DaFNQtsREg3Gv7NbPotsGDnUfogP1AtduKG XYgNT9F4e0RvqioNThN99V9r6vFKeuSrhk8CY= Received: from pb-smtp2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 9560960996; Thu, 26 Jan 2017 10:39:49 -0500 (EST) Received: from localhost (unknown [130.132.173.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pb-smtp2.pobox.com (Postfix) with ESMTPSA id 120C560994; Thu, 26 Jan 2017 10:39:49 -0500 (EST) From: Kyle Meyer To: Kaushal Modi Cc: Stefan Monnier , Emacs developers , Rasmus , emacs-org list Subject: Re: Sync up the org in emacs master to org maint branch? References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> X-Attribution: Kyle Date: Thu, 26 Jan 2017 10:39:40 -0500 In-Reply-To: (Kaushal Modi's message of "Thu, 26 Jan 2017 15:01:26 +0000") Message-ID: <87r33psudf.fsf@kyleam.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: ABCC17DA-E3DD-11E6-9B97-A7617B1B28F4-24757444!pb-smtp2.pobox.com DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=kyleam.com; h=from:to:cc:subject:references:date:in-reply-to:message-id:mime-version:content-type; s=mesmtp; bh=Xwr1beWxVXJ1B8h2TJfRiH/fxVE=; b=KO83HHxhaANE3DPZ+QWAnSylIQ644kb3sgrS1+H7UlulFj3EhSvTMHaR29vmSXXZvUt+eSSPRPcFC8IPEtr7FwesPyh5N5ca7rIFbQ+bM2rtrWHbvG60FqXVjvb6ddn867IEpivaQSmzvR2NCnlJGpOOPNIeck0F9k7VtLwEnkk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 64.147.108.71 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 15:40:00 -0000 Kaushal Modi writes: > On Thu, Jan 26, 2017 at 1:19 AM Kyle Meyer wrote: > >> We'd want at least one more release from maint, I think, so that'd be >> 9.0.5. > > Would it be OK to sync the current stable 9.0.4, I don't think that's a good idea. Since 9.0.4, I've backported one remaining commit from Emacs, I've adjusted :version in defcustoms to the appropriate version for a sync targeting Emacs's master, and I've cleaned up the spacing in a few places so that all the files pass Emacs's pre-commit check. > and keep on updating with each stable release as time comes? Yes, that should be done. > We never know, we might end up with even higher stable releases by the > time emacs 26.1 is released. I suspect we will, given that 9.0.1 -> 9.0.4 have all been released since this November. -- Kyle From MAILER-DAEMON Thu Jan 26 11:01:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWmUY-0008Ra-HP for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 11:01:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44516) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWmUS-0008O2-Mt for emacs-devel@gnu.org; Thu, 26 Jan 2017 11:01:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWmUR-0006Cp-EU for emacs-devel@gnu.org; Thu, 26 Jan 2017 11:01:36 -0500 Received: from mail-ua0-x22a.google.com ([2607:f8b0:400c:c08::22a]:34858) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWmUR-0006Cd-9y; Thu, 26 Jan 2017 11:01:35 -0500 Received: by mail-ua0-x22a.google.com with SMTP id y9so186213459uae.2; Thu, 26 Jan 2017 08:01:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=CpTx5p46mJ6V8TZGp7GQni2Gqk0GQAlTLUOJRHLK37s=; b=LiqgiadlKpPbmHtJlejWjQYL8ONvNwEL6EBsC7LI8IWIhTNsiop4JrCvGBCJHTsMO3 vtQ5hv2k4uivxdvHaNhBtOcopFylL01V80tN2cEPQNXENbmI6F3CcuKDh5hYjcImpLze Z5ogi+AJv5FFIUQ6ZaRlWGuEuJ8PZU5rALWSCfUDfntOSrcZMx8SObCIpSYNQ7NauW32 gu4lkdzRAXx61RXxd6/Ms/Bmjw0hD2Zx/CH2XmiQK+8zIaUF2XaFDfnCQd4auqnpxuv/ dua412W2QKGcWz2wMqpduzOJJ1eMs77DW2CfckzKvYiQI8nfxFsRPdeLaLOq/NGmcnaR pgtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=CpTx5p46mJ6V8TZGp7GQni2Gqk0GQAlTLUOJRHLK37s=; b=Ehh2dlCqpNcAvah6t1/2Z6gVyyjxWRpfYYQH6tDf3oZjo+uBEofhNGnXDIm6ehnOHH PSUwkH5xg6VPaXW5n3DusigWynSvbLlEZgw8bqkA149F5WE3fRrdVn0d8CS6UwuY2hUx Z2oUPAsrTseR0YUcpY6auV0BUiGADt3r030hP+3FRJN0keeaCzvJuf5TA8/jsZsCNTNC bQVICP/SOA021kDtwJ8mQsNY3Br8z3Vy0DgOQaax3CHUF3XogRqH/tG/8UQsrF8WMMdY +3dNJQ7n0LLx3GwFWy33ud6T1kun4aV4YV0HkIS/QgX4keB9sSc66q07zFd6dpsyJ5dC oWbA== X-Gm-Message-State: AIkVDXLfHuPiQl3mHTTRL38oNiFtKHT53uSs0sjrwTmkZXoz+QsO9uST0+4gANHa8YBzCpuUxWxj7Gl1l5EZ4Q== X-Received: by 10.176.91.72 with SMTP id v8mr1959330uae.23.1485446494404; Thu, 26 Jan 2017 08:01:34 -0800 (PST) MIME-Version: 1.0 References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> <87r33psudf.fsf@kyleam.com> In-Reply-To: <87r33psudf.fsf@kyleam.com> From: Kaushal Modi Date: Thu, 26 Jan 2017 16:01:24 +0000 Message-ID: Subject: Re: Sync up the org in emacs master to org maint branch? To: Kyle Meyer Cc: Stefan Monnier , Emacs developers , Rasmus , emacs-org list Content-Type: multipart/alternative; boundary=f403045f7f2aa1c769054701761a X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 16:01:41 -0000 --f403045f7f2aa1c769054701761a Content-Type: text/plain; charset=UTF-8 On Thu, Jan 26, 2017 at 10:39 AM Kyle Meyer wrote: > Kaushal Modi writes: > > > On Thu, Jan 26, 2017 at 1:19 AM Kyle Meyer wrote: > > > >> We'd want at least one more release from maint, I think, so that'd be > >> 9.0.5. > > > > Would it be OK to sync the current stable 9.0.4, > > I don't think that's a good idea. Since 9.0.4, I've backported one > remaining commit from Emacs, I've adjusted :version in defcustoms to the > appropriate version for a sync targeting Emacs's master, and I've > cleaned up the spacing in a few places so that all the files pass > Emacs's pre-commit check. > Makes sense. Thanks for the explanation. > > We never know, we might end up with even higher stable releases by the > > time emacs 26.1 is released. > > I suspect we will, given that 9.0.1 -> 9.0.4 have all been released > since this November. > I don't believe that the target date has yet been set for releasing 26.1. We are currently on the release candidate testing stage of 25.2. So I will not be surprised if 26.1 get released even 3 months or 6 months from now. Eli? John? -- Kaushal Modi --f403045f7f2aa1c769054701761a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Thu, Jan 26= , 2017 at 10:39 AM Kyle Meyer <kyle@k= yleam.com> wrote:
Kaushal = Modi <kaushal.modi@gmail.com> writes:

> On Thu, Jan 26, 2017 at 1:19 AM Kyle Meyer <kyle@kyleam.com> w= rote:
>
>> We'd want at least one more release from maint, I think, so th= at'd be
>> 9.0.5.
>
> Would it be OK to sync the current stable 9.0.4,

I don't think that's a good idea.=C2=A0 Since 9.0.4, I've backp= orted one
remaining commit from Emacs, I've adjusted :version in defcustoms to th= e
appropriate version for a sync targeting Emacs's master, and I've cleaned up the spacing in a few places so that all the files pass
Emacs's pre-commit check.

=
Makes sense. Thanks for the explanation.
=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">> We never know, we might end up with even= higher stable releases by the
> time emacs 26.1 is released.

I suspect we will, given that 9.0.1 -> 9.0.4 have all been released
since this November.

I don't believe that the target date has yet been set for releasing 2= 6.1. We are currently on the release candidate testing stage of 25.2. So I = will not be surprised if 26.1 get released even 3 months or 6 months from n= ow. Eli? John?
--

Kaushal Modi

--f403045f7f2aa1c769054701761a-- From MAILER-DAEMON Thu Jan 26 11:36:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWn2H-0003C7-7q for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 11:36:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWn2F-0003Al-4U for emacs-devel@gnu.org; Thu, 26 Jan 2017 11:36:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWn2A-0001JY-DN for emacs-devel@gnu.org; Thu, 26 Jan 2017 11:36:31 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50366) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWn2A-0001JU-9p; Thu, 26 Jan 2017 11:36:26 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3624 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cWn28-0005HU-Tb; Thu, 26 Jan 2017 11:36:25 -0500 Date: Thu, 26 Jan 2017 18:36:07 +0200 Message-Id: <8360l13hjc.fsf@gnu.org> From: Eli Zaretskii To: Kaushal Modi CC: kyle@kyleam.com, emacs-orgmode@gnu.org, monnier@iro.umontreal.ca, rasmus@gmx.us, emacs-devel@gnu.org In-reply-to: (message from Kaushal Modi on Thu, 26 Jan 2017 16:01:24 +0000) Subject: Re: Sync up the org in emacs master to org maint branch? Reply-to: Eli Zaretskii References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> <87r33psudf.fsf@kyleam.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 16:36:32 -0000 > From: Kaushal Modi > Date: Thu, 26 Jan 2017 16:01:24 +0000 > Cc: emacs-org list , > Stefan Monnier , > Rasmus , Emacs developers > > I don't believe that the target date has yet been set for releasing 26.1. We are currently on the release > candidate testing stage of 25.2. So I will not be surprised if 26.1 get released even 3 months or 6 months from > now. Eli? John? AFAIR, we have never released a major version so quickly, and I don't see why this one would be different. A year at least, I'd say, probably more. From MAILER-DAEMON Thu Jan 26 12:33:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWnve-00042D-89 for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 12:33:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44623) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWnvX-00040a-Lf for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:33:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWnvS-0002Pn-Pk for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:33:39 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:42870) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWnvS-0002Ov-JX for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:33:34 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id CD2F716006A; Thu, 26 Jan 2017 09:33:31 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id uYS44kt7koN7; Thu, 26 Jan 2017 09:33:31 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 2ED2E1600C2; Thu, 26 Jan 2017 09:33:31 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id AQ5aN4J7vMHw; Thu, 26 Jan 2017 09:33:31 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 17BA016006A; Thu, 26 Jan 2017 09:33:31 -0800 (PST) Subject: Re: Critical bytecode bug with hash tables while dumping emacs. To: Vibhav Pant , Emacs development discussions References: From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <66c98f41-e9b3-2aa7-a2a2-4595dd4ee653@cs.ucla.edu> Date: Thu, 26 Jan 2017 09:33:30 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 17:33:44 -0000 On 01/26/2017 05:03 AM, Vibhav Pant wrote: > Since the current elisp codebase, doesn't use printed representation > anywhere to represent hash tables, this bug doesn't come up. In that case the bug is not critical, right? One way to address the problem is to say that code should not print hash tables before dumping. Admittedly this is a weird restriction that we should remove, but it's not urgent and we're planning to redo dumping anyway and can address this problem (if it still occurs) then. From MAILER-DAEMON Thu Jan 26 12:45:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWo6o-0003vq-Vd for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 12:45:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47009) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWo6m-0003ua-Ee for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:45:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWo6i-00062d-HK for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:45:16 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:45968) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWo6i-00062T-BD for emacs-devel@gnu.org; Thu, 26 Jan 2017 12:45:12 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 4D8231600C8; Thu, 26 Jan 2017 09:45:10 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id h-PswS-xa1js; Thu, 26 Jan 2017 09:45:09 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 88C781600CA; Thu, 26 Jan 2017 09:45:09 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id of2QrtjosHgf; Thu, 26 Jan 2017 09:45:09 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 714441600C8; Thu, 26 Jan 2017 09:45:09 -0800 (PST) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit To: Stefan Monnier , Emacs development discussions References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Thu, 26 Jan 2017 09:45:09 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 17:45:18 -0000 On 01/26/2017 05:40 AM, Stefan Monnier wrote: > IIRC we have moved some QUIT checks*into* loops in the past in order to > be able to interrupt inf-loops, such as when you do (memq 4 '#1=(1 . #1#)). I was under the impression that if immediate_quit is true, then a tight loop in C doesn't need to call maybe_quit (the new name for QUIT), as C-g will error out immediately. There is longstanding code in the interpreter that assumes this, for example in the implementation of nth. Unfortunately my impression is incorrect. If you byte-compile this: (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) and load the resulting .elc file and then execute (foo) on a 64-bit Emacs displaying X, then C-g does not interrupt Emacs and Emacs hangs while counting up to 2**61. (C-g works as expected with emacs -nw.) I will look into fixing this longstanding bug, as well as fixing similar bugs that I recently introduced. This leads me to wonder: what's the point of immediate_quit? If immediate_quit doesn't always cause C-g to immediately quit, why are we bothering with an immediate_quit variable? Or if immediate_quit makes sense, then should we arrange for a C-g under X to behave more like C-g on a terminal, and do a longjmp? (Shudder.) > Of course, for circular lists a better solution is to use the > hare&tortoise, e.g. with FOR_EACH_TAIL. Yes, that's something that could be done in these cases too. I'd like to get C-g fixed first, though. From MAILER-DAEMON Thu Jan 26 13:57:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWpEn-0000Xw-2s for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 13:57:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWpEg-0000UZ-JX for emacs-devel@gnu.org; Thu, 26 Jan 2017 13:57:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWpEf-0003V6-6y for emacs-devel@gnu.org; Thu, 26 Jan 2017 13:57:30 -0500 Received: from mail-yb0-x235.google.com ([2607:f8b0:4002:c09::235]:34659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWpEf-0003Uv-2z for emacs-devel@gnu.org; Thu, 26 Jan 2017 13:57:29 -0500 Received: by mail-yb0-x235.google.com with SMTP id j82so53350927ybg.1 for ; Thu, 26 Jan 2017 10:57:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=T5z1+lgDJvK4+fJXY/AtS0+AvuxoRcZgyMiKADvNGK0=; b=WElZ3mm1bXfR1N8g5G6NrnVHo5w/hde8xcJ32AdePBaSE4RwKIH4dKdHoVWrvCxMFr gJap/f2sigdots+/G+tPVNN/ebPz5xeQdjdwzc1N7xKGIJyFoZNmOejIXVCqSBIQlGQ9 Z+bmijRNsLTbz/Cf7/o73HvWjtdcp/RFM4c/i9efbbxOvAo6nQGjsvRkFGdK8dJfoQsM bqVOa7k0OFD4ujtDuSXwZrnIfxU9AP/lQysP+Aua6tpxg1SSIl0U8Fom29Va0/QjjXXt k5FU9JWfzV/+O5Qlzas48MARrvKzoZAUkHiZT+OXXYqD/td9KhknziHmNLPuwMNgTMPO TewQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=T5z1+lgDJvK4+fJXY/AtS0+AvuxoRcZgyMiKADvNGK0=; b=D4Ya+HvdWwAfdhnGswQ6+71TVvvwRzQPH2oKMb06PL2Xg8N2Uv4ynFqr8cDLxws02n cvz4Ow4cO/CRdi5mccwSA+9FJ5I2+dOcE3ZjnKHiDeQ0aX9uqf7uUoPtUww1cB4mSxAt lpcJrTK6aulkOfGpVh/qL5DzOitW/nfJrEDiSSVpWpt8WYmBGuu6LUKOj745lNXZTEIA MyXdCYc1pEJhPVLwPiMLKmIPDuSkIPZetHWn440JDGpcvPbYMfKG6/Zz71/2wTGMq2Zv KQLIUjs6xuybLnm7z8qQZuJhehHLTBsrVxkSp28GgG2P5eNrqp8a5hpCTgXSc86kEup4 q8IQ== X-Gm-Message-State: AIkVDXIBFJU5uPTkkeK61mKk+IjoXAafZll5d9eGVyU42Cf9/2zvU0/AQbGXlcRFfyaML3mOxpFA2l37guaRfw== X-Received: by 10.129.174.90 with SMTP id g26mr3476832ywk.25.1485457048105; Thu, 26 Jan 2017 10:57:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Thu, 26 Jan 2017 10:57:27 -0800 (PST) In-Reply-To: <66c98f41-e9b3-2aa7-a2a2-4595dd4ee653@cs.ucla.edu> References: <66c98f41-e9b3-2aa7-a2a2-4595dd4ee653@cs.ucla.edu> From: Vibhav Pant Date: Fri, 27 Jan 2017 00:27:27 +0530 Message-ID: Subject: Re: Critical bytecode bug with hash tables while dumping emacs. To: Paul Eggert Cc: Emacs development discussions Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 18:57:35 -0000 On Thu, Jan 26, 2017 at 11:03 PM, Paul Eggert wrote: > In that case the bug is not critical, right? One way to address the problem > is to say that code should not print hash tables before dumping. It's critical in the sense that any code loaded from loadup.el is effectively prohibited from using printed hash tables in any way. I've recently been working on adding a new 'switch` bytecode op (@ branch feature/byte-switch), which uses hash tables generated during compile time (so the constant vector stores printed hash tables) as jump tables. This bug breaks switch entirely. > we're planning to redo dumping anyway and can address this problem (if it still > occurs) then. I suspect this bug is related to purecopy, which I suppose isn't a part of the redo (or is it? I don't know much about the new dumping code). If anyone has any ideas about this issue, I'd appreciate some pointers on where to start. Thanks, Vibhav -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Thu Jan 26 14:06:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWpN1-0003qD-5i for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 14:06:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWpMu-0003q3-PT for emacs-devel@gnu.org; Thu, 26 Jan 2017 14:06:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWpMs-00061z-4Y for emacs-devel@gnu.org; Thu, 26 Jan 2017 14:06:00 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWpMs-00061t-0q; Thu, 26 Jan 2017 14:05:58 -0500 Received: from p4fed1fd1.dip0.t-ipconnect.de ([79.237.31.209]:51405 helo=MUTANT) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1cWpMr-0005Is-CN; Thu, 26 Jan 2017 14:05:57 -0500 From: Arash Esbati To: Juanma Barranquero Cc: =?iso-8859-1?Q?=D3scar?= Fuentes , Emacs developers Subject: Re: 64-bit build on Windows References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> Date: Thu, 26 Jan 2017 20:05:45 +0100 In-Reply-To: (Juanma Barranquero's message of "Sat, 21 Jan 2017 19:37:34 +0100") Message-ID: <86a8adhcae.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 19:06:05 -0000 Juanma Barranquero writes: > On Fri, Jan 20, 2017 at 3:32 PM, =D3scar Fuentes wrote: > >> I have no idea about PKG_CONFIG_PATH. The MSYS2 recipe does not mention >> it and seems to work just fine. > > Our instructions in nt/INSTALL.W64 do not talk about pkg-config, but they > show PKG_CONFIG_PATH used with configure: > > PKG_CONFIG_PATH=3D/mingw64/lib/pkgconfig \ > ./configure --prefix=3D/c/emacs/emacs-25 --without-imagemagick I think it is safe to drop the line with pkg-config as Msys2 does the right thing here. In file /etc/profile, you find these lines (unnecessary ones snipped): source '/etc/msystem' case "${MSYSTEM}" in MINGW32) MINGW_MOUNT_POINT=3D"${MINGW_PREFIX}" PKG_CONFIG_PATH=3D"${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT= }/share/pkgconfig" ;; MINGW64) MINGW_MOUNT_POINT=3D"${MINGW_PREFIX}" PKG_CONFIG_PATH=3D"${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT= }/share/pkgconfig" ;; *) PKG_CONFIG_PATH=3D"/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig" esac ${MINGW_PREFIX} is set in /etc/msystem to /mingw32 or /mingw64. I would suggest to put a line there saying that Dbus should be disabled on Windows. There was a bug report for AUCTeX where a .tex file could not be opened because Emacs was compiled without disabling Dbus.[1,2] Best, Arash Footnotes:=20 [1] http://lists.gnu.org/archive/html/bug-auctex/2016-09/msg00008.html [2] https://sourceforge.net/p/emacsbinw64/discussion/general/thread/87c80d= 2f/ From MAILER-DAEMON Thu Jan 26 14:54:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWq7z-0003KE-Sv for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 14:54:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWq7t-0003Jd-Kl for emacs-devel@gnu.org; Thu, 26 Jan 2017 14:54:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWq7p-0004pq-OB for emacs-devel@gnu.org; Thu, 26 Jan 2017 14:54:33 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:33596) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWq7p-0004pF-Hh; Thu, 26 Jan 2017 14:54:29 -0500 Received: by mail-wm0-x243.google.com with SMTP id r144so52816274wme.0; Thu, 26 Jan 2017 11:54:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=MKMNpomFQ9QBTizhAWH03o3SogsMcMpTWRag4ZF/YKU=; b=O/5ldD0hBJ2RbO27rjOD5j36k5pXNtcFPuid6o46qZ2TXU8ZOTQpXZaN5uQH0zeIz1 lpYxs4hkSMaXRI+TemtYn5F9/CPnoi58ykCfptCsxZRXWsVAvMJ2c+hcq/DlRwyemJQ4 yI63iW08sIde+2mmzXaP8e+LboYHJNggcMUUeJZp+OW/yQFm9G5yVy5Pkt8nbHnCLbcU YaP8UXlAfgPl4hcHBCubEK42WJkJ49U8ctmxFzqJoz7fl56NJB6roLiTtuUyCv9WI7os wIa6lWkCosxjTtigOcd1EM/a9RB7DRzik3xpGpQVpjtQDr0u1bquwvoEa7Qkf8DJ6yU6 dUTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=MKMNpomFQ9QBTizhAWH03o3SogsMcMpTWRag4ZF/YKU=; b=gBmpbqVvb1e/3zH3yTf4W5Ccmfnn88IKL8IOdlFq1ydli7I5qF8gC3VK4lBF0UFwzC bO6LF+CaZljICVNHTS0qpnD2+V/Tv2SBIXfWbdM7MlkDqnR2fAE9ur7l66SNEVBtlszM CYez6KfCKFzRQhqk39q5EUPjUZYfilahq1gmOp1ZTfUbXh6DXiTuu0UmCjIYehFWb/xl UNAU4SY4Oe4T08/+SsX3gHU8fd2giNyXMy/ihCBkvI30W4Ouoz9S45caeoSofrCqk8NO ZBWa5J0A8xpXgjwe7ehXNby9js9Z0LWjYrqJzsxzSxCyX94tzkuiOPpF2dCy2oWaXFH9 A1Ig== X-Gm-Message-State: AIkVDXI9p2k76gjcImIm3FGEaew4L4bgeLB/KHpt961rZUGJZDEyY9IN5sIA1VrNLZrp5A== X-Received: by 10.28.232.90 with SMTP id f87mr103803wmh.35.1485460466603; Thu, 26 Jan 2017 11:54:26 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id e72sm100302wma.16.2017.01.26.11.54.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Jan 2017 11:54:25 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87tw8o1dt9.fsf@gmail.com> Date: Thu, 26 Jan 2017 21:54:05 +0200 In-Reply-To: <87tw8o1dt9.fsf@gmail.com> (Edward John Steere's message of "Tue, 24 Jan 2017 21:02:42 +0200") Message-ID: <87mved7g2q.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 19:54:38 -0000 > Just pinging back here. Making progress. Will have a first attempt at > the tests up tomorrow night. Had some other stuff keeping me away from > my PC at home lately. Having some difficulty pushing up my branch. This is my first time pushing up a branch on emacs.git. My understanding is that team membership is sufficient for access rights. I'm getting a "connection reset by peer" error every time I try to push as follows: $ git push origin scratch/merge-cedet-tests Counting objects: 2548, done. Delta compression using up to 8 threads. Compressing objects: 100% (2336/2336), done. fatal: sha1 file '' write error: Connection reset by peer fatal: The remote end hung up unexpectedly error: failed to push some refs to 'git://git.savannah.gnu.org/emacs.git' After reading a blog post I thought that it might have something to do with the push being too large so I added the following to ~/.ssh/config in the hopes that regular null packets would keep the connection alive. Host git.savannah.gnu.org ServerAliveInterval 5 No luck though; so I tried pushing up only three commits and that failed with the same message as well. From MAILER-DAEMON Thu Jan 26 15:02:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWqFj-00066X-4O for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 15:02:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWqFf-00065g-5a for emacs-devel@gnu.org; Thu, 26 Jan 2017 15:02:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWqFa-0007Vs-Mw for emacs-devel@gnu.org; Thu, 26 Jan 2017 15:02:35 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52942) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWqFa-0007Vo-KF; Thu, 26 Jan 2017 15:02:30 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3742 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cWqFZ-0005OV-A4; Thu, 26 Jan 2017 15:02:30 -0500 Date: Thu, 26 Jan 2017 22:02:09 +0200 Message-Id: <83ziid1tfi.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: (message from Paul Eggert on Thu, 26 Jan 2017 09:45:09 -0800) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Reply-to: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 20:02:37 -0000 > From: Paul Eggert > Date: Thu, 26 Jan 2017 09:45:09 -0800 > > This leads me to wonder: what's the point of immediate_quit? If > immediate_quit doesn't always cause C-g to immediately quit, why are we > bothering with an immediate_quit variable? It's only tested in the TTY input code, AFAIK. > Or if immediate_quit makes sense, then should we arrange for a C-g > under X to behave more like C-g on a terminal, and do a longjmp? I hope not. From MAILER-DAEMON Thu Jan 26 16:06:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWrFY-00006E-MN for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 16:06:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWrFW-00005z-BZ for emacs-devel@gnu.org; Thu, 26 Jan 2017 16:06:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWrFT-00010j-7g for emacs-devel@gnu.org; Thu, 26 Jan 2017 16:06:30 -0500 Received: from randomsample.de ([5.45.97.173]:45552) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWrFS-0000zI-Tv; Thu, 26 Jan 2017 16:06:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=R+OmuR/F0N/v3EIO4yNglsfSasUpbxpN4c9Lm40pf38=; b=HkfdY2kilzzAV3eCkJlH1lM4mqvwVCXt7T2FCZ3jpqfaBdMVEA0QWK94ovU49QwxXY96xGGTxJ9a5VkAJCGGf6kgzCmAQXNy6OeEt2OaLtly/dk/uSUxMjuYxvzvuqxr; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cWrFK-0008NJ-OR; Thu, 26 Jan 2017 22:06:18 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87mved7g2q.fsf@gmail.com> (Edward John Steere's message of "Thu, 26 Jan 2017 21:54:05 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87tw8o1dt9.fsf@gmail.com> <87mved7g2q.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Thu, 26 Jan 2017 22:06:15 +0100 Message-ID: <87d1f91qgo.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 21:06:32 -0000 Edward John Steere writes: >> Just pinging back here. Making progress. Will have a first attempt at >> the tests up tomorrow night. Had some other stuff keeping me away from >> my PC at home lately. > > Having some difficulty pushing up my branch. This is my first time > pushing up a branch on emacs.git. My understanding is that team > membership is sufficient for access rights. > > I'm getting a "connection reset by peer" error every time I try to push > as follows: > > $ git push origin scratch/merge-cedet-tests > Counting objects: 2548, done. > Delta compression using up to 8 threads. > Compressing objects: 100% (2336/2336), done. > fatal: sha1 file '' write error: Connection reset by peer > fatal: The remote end hung up unexpectedly > error: failed to push some refs to 'git://git.savannah.gnu.org/emacs.git' You are trying to push with the git protocol, not with ssh. You need to use @git.sv.gnu.org:/srv/git/emacs.git. See also http://savannah.gnu.org/git/?group=emacs https://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs -David From MAILER-DAEMON Thu Jan 26 18:01:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWt2h-0005sQ-53 for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 18:01:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38916) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWt2Z-0005rR-1a for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:01:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWt2V-0006dU-3Y for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:01:15 -0500 Received: from [195.159.176.226] (port=54874 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWt2U-0006cw-Tp for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:01:11 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWt2G-0003yR-Dp for emacs-devel@gnu.org; Fri, 27 Jan 2017 00:00:56 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: with-url Date: Thu, 26 Jan 2017 18:00:47 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 14 Message-ID: <87lgtxtoio.fsf@lifelogs.com> References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:rewWXiA+lZyyMhuD6SHv9Am0qkM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 23:01:20 -0000 On Tue, 03 Jan 2017 12:47:15 -0500 Stefan Monnier wrote: >> 1) Return a Promise value. Emacs could use a standardized Promise structure >> in other places, too. SM> We have url-future (which got a "url-" prefix because we wanted to SM> experiment with it before making it global). I'm not sure if Stefan is in favor, so I'm either seconding or thirding. If you feel url-future is not right for `with-url', how about `with-url-future' with different call semantics but the same internals? Ted From MAILER-DAEMON Thu Jan 26 18:05:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWt6p-0007dr-Qs for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 18:05:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWt6m-0007df-7W for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:05:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWt6i-0008DG-4O for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:05:36 -0500 Received: from [195.159.176.226] (port=36317 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWt6h-0008DA-Uj for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:05:32 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cWt6J-0007Ti-GQ for emacs-devel@gnu.org; Fri, 27 Jan 2017 00:05:07 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Library defaults Date: Thu, 26 Jan 2017 18:03:54 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 24 Message-ID: <87h94ltodh.fsf@lifelogs.com> References: <878tq480hw.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:ys3jNcUgT7f8CQH/WufZK7pnDj8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 23:05:38 -0000 On Sun, 22 Jan 2017 00:19:23 +0100 Lars Ingebrigtsen wrote: LI> Controlling things like cookies and caching is an application-level LI> thing and not a library level thing (i.e., a browser like eww should LI> allow the user to control whether to send cookies or not; not a global LI> setting that affects the lower-level library). LI> But still, nice defaults in a low-level library is also nice. ... LI> So it's really: Make the defaults developer-friendly or source code LI> friendly? Because all calls from applications will end up looking like LI> (with-url ("http..." :cookies t LI> :cache t LI> :verbose 0) LI> ...) I think Michael Albinus' work with per-connection profiles/variables is useful here. I plan to use it with GnuTLS[1], at least, and I think it could be useful here as well. Ted [1] insert pithy footnote about time management From MAILER-DAEMON Thu Jan 26 18:09:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWtAQ-0001pr-Il for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 18:09:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41629) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWtAI-0001kZ-QQ for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:09:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWtAF-0001Cl-If for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:09:14 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:47519) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWtAF-0001BR-Ce for emacs-devel@gnu.org; Thu, 26 Jan 2017 18:09:11 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cWtA9-0000Um-D1 for emacs-devel@gnu.org; Fri, 27 Jan 2017 00:09:07 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: with-url In-Reply-To: <87lgtxtoio.fsf@lifelogs.com> (Ted Zlatanov's message of "Thu, 26 Jan 2017 18:00:47 -0500") Date: Fri, 27 Jan 2017 00:08:33 +0100 Message-ID: <87d1f92zda.fsf@gnus.org> References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87lgtxtoio.fsf@lifelogs.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 23:09:21 -0000 Ted Zlatanov writes: > If you feel url-future is not right for `with-url', how about > `with-url-future' with different call semantics but the same internals? I'm completely indifferent to the presence of a "future" version of `with-url'. :-) I'm sure one can be trivially made from `with-url' if suddenly all Emacs web programmers become future-crazy. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Thu Jan 26 21:48:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWwan-0002v8-BV for mharc-emacs-devel@gnu.org; Thu, 26 Jan 2017 21:48:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWwai-0002uz-FT for emacs-devel@gnu.org; Thu, 26 Jan 2017 21:48:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWwad-0008SE-QA for emacs-devel@gnu.org; Thu, 26 Jan 2017 21:48:44 -0500 Received: from mail-hampton.hostforweb.net ([205.234.186.191]:33662 helo=hampton.hostforweb.net) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cWwad-0008Ri-MT for emacs-devel@gnu.org; Thu, 26 Jan 2017 21:48:39 -0500 Received: from s70.gtokyofl21.vectant.ne.jp ([202.215.75.70]:60000 helo=localhost) by hampton.hostforweb.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cWwaV-00378Z-ME; Thu, 26 Jan 2017 20:48:36 -0600 Date: Fri, 27 Jan 2017 11:48:30 +0900 Message-ID: From: Katsumi Yamaoka To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> Organization: Emacsen advocacy group X-Face: #kKnN,xUnmKia.'[pp`; Omh}odZK)?7wQSl"4o04=EixTF+V[""w~iNbM9ZL+.b*_CxUmFk B#Fu[*?MZZH@IkN:!"\w%I_zt>[$nm7nQosZ<3eu; B:$Q_:p!',P.c0-_Cy[dz4oIpw0ESA^D*1Lw= L&i*6&( User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (i686-pc-cygwin) Cancel-Lock: sha1:nkQ3cF0jT+U3B0786her7lsI96Q= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-OutGoing-Spam-Status: No, score=-2.9 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hampton.hostforweb.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jpl.org X-Get-Message-Sender-Via: hampton.hostforweb.net: authenticated_id: yamaoka/from_h X-Authenticated-Sender: hampton.hostforweb.net: yamaoka@jpl.org X-Source: X-Source-Args: X-Source-Dir: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (barebone) [generic] [fuzzy] X-Received-From: 205.234.186.191 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 02:48:48 -0000 Hi Lars, On Wed, 25 Jan 2017 16:28:32 +0000, Lars Ingebrigtsen wrote: > branch: master > commit 97934ffb5673fe7d7498fb31a9bdf32fd8e0c5c7 > Author: Lars Ingebrigtsen > Commit: Lars Ingebrigtsen > Attach text files correctly in Message [...] > --- a/lisp/gnus/mml.el > +++ b/lisp/gnus/mml.el [...] > - (mm-with-multibyte-buffer > + (with-temp-buffer > + (set-buffer-multibyte nil) This breaks a message containing non-ASCII text to send; the contents are inserted into that unibyte buffer. See the article in the Emacs bug list (bug#25552). Could you please fix it? Thanks. From MAILER-DAEMON Fri Jan 27 00:39:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWzFz-0005qe-1I for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 00:39:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48588) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWzFw-0005qC-IB for emacs-devel@gnu.org; Fri, 27 Jan 2017 00:39:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWzFv-00067U-OH for emacs-devel@gnu.org; Fri, 27 Jan 2017 00:39:28 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:32961) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWzFr-000666-Ue; Fri, 27 Jan 2017 00:39:24 -0500 Received: by mail-wm0-x241.google.com with SMTP id r144so55606788wme.0; Thu, 26 Jan 2017 21:39:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=content-transfer-encoding:from:mime-version:subject:date:message-id :references:cc:in-reply-to:to; bh=hsTHAnQM/mJCu2vEPqqgpwXkQB2paRaES/VCJRk9Kxs=; b=WTgX3pPAXmPpqLWmtcT+FJfnaNZWeYHlW8hChsPR4EjHaqQ3v8V4rKGphD8XWqVeGi Qb/qvwFml9fWCvoOV5aNzTnuz8Q0msWQu2BknLaxMZ7N9bRfxboOM0Pn6p4RRMvG6f74 wEvYZyJZY8rwFlim5L+ES31fc0kw3KlrOmMSrnBOU8Sszs0dLlZ2pB85/UR6ijBGRbf5 wYyznyUvJk1/HNp2dxgzQzJw6ONet1edFWXBX1EjvtnBsXvJ4bEdvEapA0dTmUKj63Nt lrvue8DRPGWS/3UL4hC3xzVHDidfOhml6gk5nthkuxD2Qg+WnpZCJlrsGCCXGQ/hpEJh H7WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:content-transfer-encoding:from:mime-version :subject:date:message-id:references:cc:in-reply-to:to; bh=hsTHAnQM/mJCu2vEPqqgpwXkQB2paRaES/VCJRk9Kxs=; b=JemTcHFswSEXMt39XVKrk0zgHr1DB0ZA47sb2lGtk9kj4Hw6HUVNxN/skx6t2c64xn btdieC55W5dhwtELhoVjtiYZLuMAafYDVh706RVYs0QsnUSfbPlqayhH9AsSfNx9fSmO bc2Bhl+OVsZmD3q/uexRc6hWcfKr89c8eotJeB9i47oxNKs8I/3GOtcQm7aktwEmJXGI wb7avJiCwTo1e88qrpPegp4+M3efreLSkJOO93/I0tgFoO0Oz5D1AwD28r+juOZILKIR MuR/v+1wXIrCLao6GzYKIiuWu+BzVSZBgqs0fg8ciewsJQ1ege+0YymwsmaPCGc0KiVF sIWQ== X-Gm-Message-State: AIkVDXKnIhQl11kTAJME0aPCuuvy6yt0oMyiSTeFs3s0bfoO+JH5T3EbCvekEzSbHHRpvg== X-Received: by 10.28.4.10 with SMTP id 10mr1611738wme.142.1485495562679; Thu, 26 Jan 2017 21:39:22 -0800 (PST) Received: from [197.170.24.25] ([197.170.24.25]) by smtp.gmail.com with ESMTPSA id 191sm1898587wmo.21.2017.01.26.21.39.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Jan 2017 21:39:21 -0800 (PST) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit From: Edward Steere Mime-Version: 1.0 (1.0) Subject: Re: CEDET Merge Date: Fri, 27 Jan 2017 06:38:35 +0200 Message-Id: <44A7CD7E-9953-44F7-BA08-21178DA64673@gmail.com> References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87tw8o1dt9.fsf@gmail.com> <87mved7g2q.fsf@gmail.com> <87d1f91qgo.fsf@engster.org> Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org In-Reply-To: <87d1f91qgo.fsf@engster.org> To: David Engster X-Mailer: iPhone Mail (14C92) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 05:39:29 -0000 > On 26 Jan 2017, at 11:06 PM, David Engster wrote: > > Edward John Steere writes: >>> Just pinging back here. Making progress. Will have a first attempt at >>> the tests up tomorrow night. Had some other stuff keeping me away from >>> my PC at home lately. >> >> Having some difficulty pushing up my branch. This is my first time >> pushing up a branch on emacs.git. My understanding is that team >> membership is sufficient for access rights. >> >> I'm getting a "connection reset by peer" error every time I try to push >> as follows: >> >> $ git push origin scratch/merge-cedet-tests >> Counting objects: 2548, done. >> Delta compression using up to 8 threads. >> Compressing objects: 100% (2336/2336), done. >> fatal: sha1 file '' write error: Connection reset by peer >> fatal: The remote end hung up unexpectedly >> error: failed to push some refs to 'git://git.savannah.gnu.org/emacs.git' > > You are trying to push with the git protocol, not with ssh. You need to > use @git.sv.gnu.org:/srv/git/emacs.git. See also > > http://savannah.gnu.org/git/?group=emacs > https://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs > > -David Thanks David. I'll try again tonight. From MAILER-DAEMON Fri Jan 27 01:08:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cWzho-0003by-Dr for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 01:08:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51230) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWzhl-0003bB-OI for emacs-devel@gnu.org; Fri, 27 Jan 2017 01:08:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWzhk-0005bt-SK for emacs-devel@gnu.org; Fri, 27 Jan 2017 01:08:13 -0500 Received: from mail-wm0-x22f.google.com ([2a00:1450:400c:c09::22f]:38190) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWzhj-0005bQ-Bu; Fri, 27 Jan 2017 01:08:11 -0500 Received: by mail-wm0-x22f.google.com with SMTP id r144so120019307wme.1; Thu, 26 Jan 2017 22:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=cGpLZM3p3ODr9OhfgQ+CGKbiiXqG6WCDcxxV3ZgyYWc=; b=FyRfcObBecd5Hy9nKji31bNlpTZOLqfX9TMm13g3Goj+83b+Abpg08GeXJ5DQ4V0Uh SeStjQTaJKrqnvu9meCIguIHBHDF1Jt4jUHVYQ/S2sSvgH3ajrgbsLQt7QFPrjrGeuVt lBMLI6i0MedehdeOdi82U+sFdAeieJpvhuw5xPGbwVCmIYmiqxy4WQ9MKds20v9Vm3eb lDxXQGBDVQfBQ8FKhVuQ/wXtjmqfqgc9CS0Oq/X+iR6GbMqhO+gzhw58Tgcgeqx6xOY3 Ex31PRicG63QqvfvXIM/hRnXIW4ytBaY3yPblFMr8riDI/98yNJtwMH9wftGeS/8boYy H6Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=cGpLZM3p3ODr9OhfgQ+CGKbiiXqG6WCDcxxV3ZgyYWc=; b=dJrZovpaattuUK9PJCEaxC+mEPK6lB1V9GqzLGawdP7yzWy+DnjhNMHYioPZ5QjS8q Jgx0wzqR9sOX2Fk9hfULmGsLiRhVzOuizNEt9Rob/Lxsd7lhIKzCD7NqZDlN0DU6jSu8 IqXEx/sOZFUTmz5sul3QR2PZYVmH9+rcZg1NvCb0QeQVi4jZtbSO1SgaVUUWLQSgf/Lr pSHQTpXl3Qg1Pk1VoCaZ5kNw6ZhnOa2Hu1RTTQ4sj+5/xTUGNzHFy2eG0tkZZFu4yH/T imIQqtgO2j7pVL3UXAqYLUut/9/kzb87EBWjglUG9U52OvErZtEW2Td1cyTLoCBFmffo hsyw== X-Gm-Message-State: AIkVDXK7aNRxvVLZVzaD/cCQcops5jOwVgWYs+FpQ+dcgviR/6HKVuygOpWQA0PPovLv6FlBOLSPeNb/83UYWg== X-Received: by 10.28.111.75 with SMTP id k72mr1493365wmc.39.1485497290254; Thu, 26 Jan 2017 22:08:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.173.80 with HTTP; Thu, 26 Jan 2017 22:07:49 -0800 (PST) In-Reply-To: <86a8adhcae.fsf@gnu.org> References: <874m0tc0gn.fsf@russet.org.uk> <87efzxn6or.fsf@wanadoo.es> <86a8adhcae.fsf@gnu.org> From: Fabrice Popineau Date: Fri, 27 Jan 2017 07:07:49 +0100 Message-ID: Subject: Re: 64-bit build on Windows To: Arash Esbati Cc: Juanma Barranquero , =?UTF-8?Q?=C3=93scar_Fuentes?= , Emacs developers Content-Type: multipart/alternative; boundary=001a1147c2084cf27705470d4acb X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 06:08:14 -0000 --001a1147c2084cf27705470d4acb Content-Type: text/plain; charset=UTF-8 2017-01-26 20:05 GMT+01:00 Arash Esbati : > I would suggest to put a line there saying that Dbus should be disabled > on Windows. There was a bug report for AUCTeX where a .tex file could > not be opened because Emacs was compiled without disabling Dbus.[1,2] > > IMHO dbus should be disabled in configure script for MSYS2. The problem is that it gets detected, selected, compiled without errors. But Emacs sources are missing some pieces to make it functional (add_read_fd, add_write_fd). Fabrice --001a1147c2084cf27705470d4acb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


2017-01-26 20:05 GMT+01:00 Arash Esbati <arash@gnu.org>:
I would suggest to put a line there saying= that Dbus should be disabled
on Windows.=C2=A0 There was a bug report for AUCTeX where a .tex file could=
not be opened because Emacs was compiled without disabling Dbus.[1,2]


IMHO dbus should be disabled in config= ure script for MSYS2.
The problem is that it gets detected, selec= ted, compiled without errors.
But Emacs sources are missing some = pieces to make it functional (add_read_fd,
add_write_fd).

Fabrice

--001a1147c2084cf27705470d4acb-- From MAILER-DAEMON Fri Jan 27 02:58:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX1Q3-0003on-Gm for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 02:58:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX1Pz-0003nj-OM for emacs-devel@gnu.org; Fri, 27 Jan 2017 02:58:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX1Pw-00069Y-Pd for emacs-devel@gnu.org; Fri, 27 Jan 2017 02:57:59 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59222) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX1Pw-00069R-Mc; Fri, 27 Jan 2017 02:57:56 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3961 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cX1Pv-0002Ck-Oh; Fri, 27 Jan 2017 02:57:56 -0500 Date: Fri, 27 Jan 2017 09:57:44 +0200 Message-Id: <83tw8l0wav.fsf@gnu.org> From: Eli Zaretskii To: Katsumi Yamaoka CC: larsi@gnus.org, emacs-devel@gnu.org In-reply-to: (message from Katsumi Yamaoka on Fri, 27 Jan 2017 11:48:30 +0900) Subject: Re: master 97934ff: Attach text files correctly in Message Reply-to: Eli Zaretskii References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 07:58:00 -0000 > Date: Fri, 27 Jan 2017 11:48:30 +0900 > From: Katsumi Yamaoka > Cc: emacs-devel@gnu.org > > > --- a/lisp/gnus/mml.el > > +++ b/lisp/gnus/mml.el > [...] > > - (mm-with-multibyte-buffer > > + (with-temp-buffer > > + (set-buffer-multibyte nil) > > This breaks a message containing non-ASCII text to send; the > contents are inserted into that unibyte buffer. See the article > in the Emacs bug list (bug#25552). > Could you please fix it? When I read those changes, I actually wondered why it was necessary to set the buffer unibyte. It shouldn't be needed with the current Emacs codebase, inserting unibyte text into a multibyte buffer and then decoding it should "just work". From MAILER-DAEMON Fri Jan 27 04:41:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX328-000539-GV for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 04:41:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX326-000520-9q for emacs-devel@gnu.org; Fri, 27 Jan 2017 04:41:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX323-00088l-96 for emacs-devel@gnu.org; Fri, 27 Jan 2017 04:41:26 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60504) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX323-00088L-5n for emacs-devel@gnu.org; Fri, 27 Jan 2017 04:41:23 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4060 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cX31t-0005vo-1W; Fri, 27 Jan 2017 04:41:13 -0500 Date: Fri, 27 Jan 2017 11:41:02 +0200 Message-Id: <83lgtw2635.fsf@gnu.org> From: Eli Zaretskii To: rms@gnu.org CC: emacs-devel@gnu.org In-reply-to: (message from Richard Stallman on Mon, 23 Jan 2017 16:04:14 -0500) Subject: Re: scrolling in shell buffer Reply-to: Eli Zaretskii References: <83shpl5jnz.fsf@gnu.org> <83y3zb51eq.fsf@gnu.org> <83fulg0w07.fsf@gnu.org> <83k2aqzk37.fsf@gnu.org> <83lgv5xh4v.fsf@gnu.org> <837f6nxtdu.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 09:41:27 -0000 > From: Richard Stallman > CC: emacs-devel@gnu.org > Date: Mon, 23 Jan 2017 16:04:14 -0500 > > If setting scroll-conservatively to 101 is the fix to make shell buffers > keep the last line at the end of the window, would someone please > install a fix to make comint locally do this? Done. From MAILER-DAEMON Fri Jan 27 06:32:22 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX4lS-0004Nl-BS for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 06:32:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59526) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX4lP-0004Lk-Ug for emacs-devel@gnu.org; Fri, 27 Jan 2017 06:32:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX4lL-0003km-Ot for emacs-devel@gnu.org; Fri, 27 Jan 2017 06:32:19 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:38667) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX4lL-0003k8-JH; Fri, 27 Jan 2017 06:32:15 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cX4lD-00048u-G7; Fri, 27 Jan 2017 12:32:11 +0100 From: Lars Ingebrigtsen To: Eli Zaretskii Cc: Katsumi Yamaoka , emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> <83tw8l0wav.fsf@gnu.org> Date: Fri, 27 Jan 2017 12:32:01 +0100 In-Reply-To: <83tw8l0wav.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 27 Jan 2017 09:57:44 +0200") Message-ID: <87d1f8wxfy.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 11:32:21 -0000 Eli Zaretskii writes: > When I read those changes, I actually wondered why it was necessary to > set the buffer unibyte. It shouldn't be needed with the current Emacs > codebase, inserting unibyte text into a multibyte buffer and then > decoding it should "just work". We want neither encoding nor decoding of octets from files in that part of the code, so unibyte buffers are the right thing to do in the "file" part of that code. Text from other buffers should be handled otherwise, though... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 06:33:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX4mp-00062c-IU for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 06:33:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX4ml-0005zP-Ve for emacs-devel@gnu.org; Fri, 27 Jan 2017 06:33:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX4mk-0004Wx-B6 for emacs-devel@gnu.org; Fri, 27 Jan 2017 06:33:44 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:38720) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX4mk-0004Wc-4c for emacs-devel@gnu.org; Fri, 27 Jan 2017 06:33:42 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cX4mh-0003Nf-7u; Fri, 27 Jan 2017 12:33:41 +0100 From: Lars Ingebrigtsen To: Katsumi Yamaoka Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message In-Reply-To: (Katsumi Yamaoka's message of "Fri, 27 Jan 2017 11:48:30 +0900") Date: Fri, 27 Jan 2017 12:33:21 +0100 Message-ID: <874m0kwxdq.fsf@mouse> References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 11:33:45 -0000 Katsumi Yamaoka writes: > This breaks a message containing non-ASCII text to send; the > contents are inserted into that unibyte buffer. See the article > in the Emacs bug list (bug#25552). > Could you please fix it? I'm unable to reproduce the bug -- I can send messages with non-ASCII text just fine. Do you have a recipe for how to reproduce it? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 07:55:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX63Y-0002ih-R8 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48596) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX63V-0002fV-0A for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX63R-0004Sh-VZ for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:05 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40030) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX63R-0004Rv-PP for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:01 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cX63L-0000Nu-Fi; Fri, 27 Jan 2017 13:54:58 +0100 From: Lars Ingebrigtsen To: Katsumi Yamaoka Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message In-Reply-To: (Katsumi Yamaoka's message of "Fri, 27 Jan 2017 11:48:30 +0900") Date: Fri, 27 Jan 2017 13:42:43 +0100 Message-ID: <87tw8ksmgs.fsf@mouse> References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 12:55:06 -0000 Sorry; I'm able to reproduce the bug now. 8859-1 characters seems to survive the wrong transformations here, but not other characters. I'll fix it... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 07:55:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX63z-0002yy-RZ for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX63x-0002xX-Aq for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX63r-0004ZO-37 for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:33 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:40064) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX63q-0004ZI-Sd for emacs-devel@gnu.org; Fri, 27 Jan 2017 07:55:27 -0500 Received: from 2.150.50.220.tmi.telenormobil.no ([2.150.50.220] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cX63m-0002fO-BK; Fri, 27 Jan 2017 13:55:25 +0100 From: Lars Ingebrigtsen To: Katsumi Yamaoka Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message In-Reply-To: (Katsumi Yamaoka's message of "Fri, 27 Jan 2017 11:48:30 +0900") Date: Fri, 27 Jan 2017 13:54:38 +0100 Message-ID: <87k29gslwx.fsf@mouse> References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 12:55:34 -0000 =E3=83=BB OK, pushed a patch that seems to fix the issue. =E3=83=BB This is the test. =E3=83=BB Did it work? --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 08:15:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX6Mx-0005Kx-5P for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 08:15:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54009) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX6Ms-0005EJ-8H for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:15:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX6Mn-0002Uy-CI for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:15:06 -0500 Received: from norfolk.hostforweb.net ([205.234.200.233]:31763) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cX6Mn-0002Uk-8Y for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:15:01 -0500 Received: from localhost ([127.0.0.1]:17517) by norfolk.hostforweb.net with esmtpa (Exim 4.87) (envelope-from ) id 1cX6Mf-001xXz-9y; Fri, 27 Jan 2017 07:14:55 -0600 From: Katsumi Yamaoka To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> <874m0kwxdq.fsf@mouse> X-Face: #kKnN,xUnmKia.'[pp`; Omh}odZK)?7wQSl"4o04=EixTF+V[""w~iNbM9ZL+.b*_CxUmFk B#Fu[*?MZZH@IkN:!"\w%I_zt>[$nm7nQosZ<3eu; B:$Q_:p!',P.c0-_Cy[dz4oIpw0ESA^D*1Lw= L&i*6&( Date: Fri, 27 Jan 2017 22:14:43 +0900 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:y8nRKEwPJgsA9fW4r4gBqEkoPHU= MIME-Version: 1.0 Content-Type: text/plain X-OutGoing-Spam-Status: No, score=-0.2 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - norfolk.hostforweb.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jpl.org X-Get-Message-Sender-Via: norfolk.hostforweb.net: authenticated_id: yamaokac/only user confirmed/virtual account not confirmed X-Authenticated-Sender: norfolk.hostforweb.net: yamaokac X-Source: X-Source-Args: X-Source-Dir: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 205.234.200.233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 13:15:10 -0000 Lars Ingebrigtsen wrote: > Katsumi Yamaoka writes: > > This breaks a message containing non-ASCII text to send; the > > contents are inserted into that unibyte buffer. See the article > > in the Emacs bug list (bug#25552). > > Could you please fix it? > I'm unable to reproduce the bug -- I can send messages with non-ASCII > text just fine. > Do you have a recipe for how to reproduce it? Hmm, I do the same as usual. Write a message: From: foo To: bar Subject: B --text follows this line-- B And type `C-c C-c'. The problem is reproducible by `C-c RET P' as well. From MAILER-DAEMON Fri Jan 27 08:19:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX6Qu-0000MW-8r for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 08:19:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX6Qr-0000KU-5V for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:19:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX6Qm-0003ve-9J for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:19:13 -0500 Received: from norfolk.hostforweb.net ([205.234.200.233]:63534) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cX6Qm-0003v7-4C for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:19:08 -0500 Received: from localhost ([127.0.0.1]:19692) by norfolk.hostforweb.net with esmtpa (Exim 4.87) (envelope-from ) id 1cX6Qf-0022Pn-N9; Fri, 27 Jan 2017 07:19:06 -0600 From: Katsumi Yamaoka To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> <874m0kwxdq.fsf@mouse> X-Face: #kKnN,xUnmKia.'[pp`; Omh}odZK)?7wQSl"4o04=EixTF+V[""w~iNbM9ZL+.b*_CxUmFk B#Fu[*?MZZH@IkN:!"\w%I_zt>[$nm7nQosZ<3eu; B:$Q_:p!',P.c0-_Cy[dz4oIpw0ESA^D*1Lw= L&i*6&( Date: Fri, 27 Jan 2017 22:18:57 +0900 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:mCNAjTqcpvEq/4YfEPLrB5FlA1g= MIME-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - norfolk.hostforweb.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jpl.org X-Get-Message-Sender-Via: norfolk.hostforweb.net: authenticated_id: yamaokac/only user confirmed/virtual account not confirmed X-Authenticated-Sender: norfolk.hostforweb.net: yamaokac X-Source: X-Source-Args: X-Source-Dir: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 205.234.200.233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 13:19:15 -0000 Katsumi Yamaoka wrote: > Hmm, I do the same as usual. Write a message: > From: foo > To: bar > Subject: B > --text follows this line-- > B > And type `C-c C-c'. The problem is reproducible by `C-c RET P' > as well. Oops! I meant: From: foo To: bar Subject: $B$"(B --text follows this line-- $B$"(B From MAILER-DAEMON Fri Jan 27 08:46:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX6r0-000573-DS for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 08:46:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX6qx-00053l-PI for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:46:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX6qw-00041w-Gg for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:46:11 -0500 Received: from mail-yb0-x236.google.com ([2607:f8b0:4002:c09::236]:33862) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX6qw-0003yg-BT for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:46:10 -0500 Received: by mail-yb0-x236.google.com with SMTP id j82so67413616ybg.1 for ; Fri, 27 Jan 2017 05:46:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KZ3bTvQlA8iSJtG4s9LBYN3+g9LnFWfahWFHnSm1cNM=; b=tRQMkLqo+cL1eA5/si6mQXJJZ+CasBqrkrDiOjCx1LYczJFVEFHdX8AE/411lpc5u7 tZTLA6Y/1xZz07Zulb+Legx2nFhp3eqRJNyPdjvwdZuP2GYaWy9c8hhOGdprUVqWr2yh 9uNqQPtqawbQSaOP6jLxs7XMoYU+ebcFHmdiNhGZqb4MvLf3HT1OstPeeM6saIcXk2fU TYBL8FiYIPVizzGWXZJH1eIfcUnXmfpy+DkihQP2yltgh2mc3p1qgu1GbbRTQ5Kc1faI baAVnwhRCNtu84F27uXl0PsY7/BsEX0eko3Vz/JuT7jqD1qx+6gzBG9McT5/OvIiZcKg ZOkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KZ3bTvQlA8iSJtG4s9LBYN3+g9LnFWfahWFHnSm1cNM=; b=WLv1SjmmLVm6pqzv5bur9E0TklfgdjY7Y9Qr7fhMhoCQgu2Xl5tk+lfG1YdzV6M4LK A6jsOk0TtEnIYqZc2ZK8SYR/oNzctHr9IpNQlSWa6hbc20RlO4HsTyiTrkQIO9Dg05uO r5XbsVh9J4Wz8zQ7K8Nhhrjc9E0UzursR3HT9M8yqzDqL0JAxAf20afMhz5ucYfNn/+n fP1HyjvS/1ecrxQpzmcLVMQtuM1WvnfvNWwJuoYjaYOfiq5IbzhWAxlwmeMyWpGQ82T1 iW5HiLG8+Bxbygxm2ZbsgYj0c8tI385WiHWOEeKwWZa38NNhizB6PkC1PqkhVOXeCU3C O+UQ== X-Gm-Message-State: AIkVDXJ7IxXedq5oTdMaMcvVdmct5XY/vC13+ofXEagam+Gw6uoGUY71R6eDPBzZqBDWFl+hZPTTGn8s8cDxwg== X-Received: by 10.37.192.144 with SMTP id c138mr1686156ybf.123.1485524767619; Fri, 27 Jan 2017 05:46:07 -0800 (PST) MIME-Version: 1.0 References: <66c98f41-e9b3-2aa7-a2a2-4595dd4ee653@cs.ucla.edu> In-Reply-To: From: Vibhav Pant Date: Fri, 27 Jan 2017 13:45:57 +0000 Message-ID: Subject: Re: Critical bytecode bug with hash tables while dumping emacs. To: Paul Eggert Cc: Emacs development discussions Content-Type: multipart/mixed; boundary=001a11471f8a14f694054713b0d8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 13:46:13 -0000 --001a11471f8a14f694054713b0d8 Content-Type: multipart/alternative; boundary=001a11471f8a14f68f054713b0d6 --001a11471f8a14f68f054713b0d6 Content-Type: text/plain; charset=UTF-8 Also, this one line patch crashes temacs with a SIGSEGV - the hash table contents are possibly getting corrupted because of a bad memory write. On Fri, Jan 27, 2017 at 12:27 AM Vibhav Pant wrote: > On Thu, Jan 26, 2017 at 11:03 PM, Paul Eggert wrote: > > In that case the bug is not critical, right? One way to address the > problem > > is to say that code should not print hash tables before dumping. > > It's critical in the sense that any code loaded from loadup.el is > effectively > prohibited from using printed hash tables in any way. I've recently been > working on adding a new 'switch` bytecode op (@ branch > feature/byte-switch), > which uses hash tables generated during compile time (so the constant > vector > stores printed hash tables) as jump tables. This bug breaks switch > entirely. > > > we're planning to redo dumping anyway and can address this problem (if > it still > > occurs) then. > > I suspect this bug is related to purecopy, which I suppose isn't a part of > the > redo (or is it? I don't know much about the new dumping code). If anyone > has any > ideas about this issue, I'd appreciate some pointers on where to start. > > Thanks, > Vibhav > -- > Vibhav Pant > vibhavp@gmail.com > --001a11471f8a14f68f054713b0d6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Also, this one line patch crashes temacs with a SIGSEGV - = the hash table contents
are possibly getting corrupted because of a bad= memory write.

On Fri, = Jan 27, 2017 at 12:27 AM Vibhav Pant <vibhavp@gmail.com> wrote:
On Thu, Jan 26, 2017 at 11:03 PM, Paul Eggert <eggert@cs.ucla.edu&= gt; wrote:
> In that case the bug is not critical, right? One way to address the pr= oblem
> is to say that code should not print hash tables before dumping.

It's critical in the sense that any code loaded from loadup.el is effec= tively
prohibited from using printed hash tables in any way. I've recently bee= n
working on adding a new 'switch` bytecode op (@ branch feature/byte-swi= tch),
which uses hash tables generated during compile time (so the constant vecto= r
stores printed hash tables) as jump tables. This bug breaks switch entirely= .

> we're planning to redo dumping anyway and can address this problem= (if it still
> occurs) then.

I suspect this bug is related to purecopy, which I suppose isn't a part= of the
redo (or is it? I don't know much about the new dumping code). If anyon= e has any
ideas about this issue, I'd appreciate some pointers on where to start.=

Thanks,
Vibhav
--
Vibhav Pant
= vibhavp@gmail.com
--001a11471f8a14f68f054713b0d6-- --001a11471f8a14f694054713b0d8 Content-Type: text/x-patch; charset=US-ASCII; name="wrong-hash-table.patch" Content-Disposition: attachment; filename="wrong-hash-table.patch" Content-Transfer-Encoding: base64 Content-ID: <159e02c8f8b6d056c091> X-Attachment-Id: 159e02c8f8b6d056c091 ZGlmZiAtLWdpdCBhL2xpc3AvY3VzdG9tLmVsIGIvbGlzcC9jdXN0b20uZWwKaW5kZXggNzBiNjgz OWRiMy4uYmVjY2IyYjU0NSAxMDA2NDQKLS0tIGEvbGlzcC9jdXN0b20uZWwKKysrIGIvbGlzcC9j dXN0b20uZWwKQEAgLTE0NSw2ICsxNDUsOCBAQCBjdXN0b20tZGVjbGFyZS12YXJpYWJsZQogYHN0 YW5kYXJkLXZhbHVlJy4gIEF0IHRoZSBzYW1lIHRpbWUsIFNZTUJPTCdzIHByb3BlcnR5IGBmb3Jj ZS12YWx1ZScgaXMKIHNldCB0byBuaWwsIGFzIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcm9ndWUu IgogICAocHV0IHN5bWJvbCAnc3RhbmRhcmQtdmFsdWUgKHB1cmVjb3B5IChsaXN0IGRlZmF1bHQp KSkKKyAgKG1lc3NhZ2UgIiVzIiAjcyhoYXNoLXRhYmxlIHNpemUgNjUgdGVzdCBlcWwgcmVoYXNo LXNpemUgMS41IHJlaGFzaC10aHJlc2hvbGQgMC44IGRhdGEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgxIDIgMyA0IDUgNiA3IDggOSAxIGEgYSBiIGIgYyBjIGQgZCBlIGUgcSBxIHcg dyByIHIgdCB0KSkpCiAgIDs7IE1heWJlIHRoaXMgb3B0aW9uIHdhcyByb2d1ZSBpbiBhbiBlYXJs aWVyIHZlcnNpb24uICBJdCBubyBsb25nZXIgaXMuCiAgICh3aGVuIChnZXQgc3ltYm9sICdmb3Jj ZS12YWx1ZSkKICAgICAocHV0IHN5bWJvbCAnZm9yY2UtdmFsdWUgbmlsKSkK --001a11471f8a14f694054713b0d8-- From MAILER-DAEMON Fri Jan 27 08:50:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX6v9-0000Op-J9 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 08:50:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34437) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX6v4-0000LV-DZ for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:50:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX6v0-0006lF-Of for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:50:26 -0500 Received: from [195.159.176.226] (port=43982 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX6v0-0006kX-Hu for emacs-devel@gnu.org; Fri, 27 Jan 2017 08:50:22 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX6uU-00040a-H3 for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:49:50 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: with-url Date: Fri, 27 Jan 2017 08:49:22 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 13 Message-ID: <87wpdgsjdp.fsf@lifelogs.com> References: <87mvffva75.fsf@gnus.org> <9bd035f3-c7cd-0c8d-81b8-226fb24f608e@yandex.ru> <87lgtxtoio.fsf@lifelogs.com> <87d1f92zda.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:jOwptDAAlkklOZzKspVmXV8CbDk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 13:50:30 -0000 On Fri, 27 Jan 2017 00:08:33 +0100 Lars Ingebrigtsen wrote: LI> Ted Zlatanov writes: >> If you feel url-future is not right for `with-url', how about >> `with-url-future' with different call semantics but the same internals? LI> I'm completely indifferent to the presence of a "future" version of LI> `with-url'. :-) I'm sure one can be trivially made from `with-url' if LI> suddenly all Emacs web programmers become future-crazy. In that case I'll look into it once you merge your with-url branch. Ted From MAILER-DAEMON Fri Jan 27 09:38:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX7fM-0005Ty-Ez for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 09:38:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44681) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX7fH-0005QE-KB for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:38:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX7fE-0004PE-HS for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:38:11 -0500 Received: from [195.159.176.226] (port=37876 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX7fE-0004Op-Ax for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:38:08 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX7eq-0006Q1-Cx for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:37:44 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: [PATCH] Run 'mml-secure-bcc-is-safe after 'message-send-hook Date: Fri, 27 Jan 2017 15:37:24 +0100 Lines: 23 Message-ID: <87efzoy3ff.fsf_-_@wavexx.thregr.org> References: <87tw9b9jud.fsf@wavexx.thregr.org> <87y3y49xt7.fsf@gnus.org> <874m0rgqff.fsf@informationelle-selbstbestimmung-im-internet.de> <87d1fb3wfo.fsf@wavexx.thregr.org> <87vat3vz4s.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:AergkPt2EYw/7Bj0yeR9pIfGG3s= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 14:38:14 -0000 If the hook modifies the message (mml tags or headers), we should check bcc on the final message, not on the original. --- lisp/gnus/message.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 4f08b0b272..ce0dad9cb0 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -4119,8 +4119,8 @@ It should typically alter the sending method in some way or other." (let ((inhibit-read-only t)) (put-text-property (point-min) (point-max) 'read-only nil)) (message-fix-before-sending) - (mml-secure-bcc-is-safe) (run-hooks 'message-send-hook) + (mml-secure-bcc-is-safe) (when message-confirm-send (or (y-or-n-p "Send message? ") (keyboard-quit))) -- 2.11.0 From MAILER-DAEMON Fri Jan 27 09:56:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX7xO-0006ND-FK for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50400) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX7xF-00067u-Cx for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX7xC-00021k-C2 for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:45 -0500 Received: from [195.159.176.226] (port=52381 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX7xC-00021I-61 for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:42 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX7we-0004S3-Fm for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:56:08 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: Issues with partial repainting when enabling cairo Date: Fri, 27 Jan 2017 15:55:50 +0100 Lines: 13 Message-ID: <87bmus8scp.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cancel-Lock: sha1:AaFdRZqJfIzLRS0YMnh4yrueUSU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 14:56:52 -0000 I briefly tested a build from master with lucid+cairo enabled on X11. How experimental is "experimental" supposed to be? ;) It seems that some areas of the frame are not repainted correctly. For instance, scrolling by pages does not refresh the top (or bottom) lines at all. More properly, it seems to be a fixed area at the top/bottom - not really related to visual lines. Maybe related to 'scroll-margin? There are some bug reports about cairo on the bts, but nothing so glaring. From MAILER-DAEMON Fri Jan 27 09:57:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX7xU-0006Ss-R8 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 09:57:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX7xP-0006OQ-R4 for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX7xL-00023q-0Z for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:55 -0500 Received: from [195.159.176.226] (port=52723 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX7xK-00023X-Qj for emacs-devel@gnu.org; Fri, 27 Jan 2017 09:56:50 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX7wo-0005GR-WA for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:56:18 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: official Emacs Docker image Date: Fri, 27 Jan 2017 09:56:01 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 16 Message-ID: <87k29gsgam.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:B3zN4mpmP/DrTJ3UvuDz7/fVmuc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 14:56:59 -0000 On Sat, 31 Dec 2016 13:25:32 -0500 Richard Stallman wrote: RS> I guess that makes sense for special circumstances. Anyway, it does RS> no wrong to anyone. So please support it if you want to. After talking to RMS, I created https://hub.docker.com/u/fsfemacs and am currently the owner of the organization. The image, when ready, will be "fsfemacs/emacs". I named it that way to emphasize the FSF organization, rather than "gnuemacs" which would emphasize the GNU project. If you're interested in collaborating on a Dockerfile that builds 24.x and 25.x/master, let me know here or in e-mail. If you have one already, even better. Thanks Ted From MAILER-DAEMON Fri Jan 27 10:35:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX8Z6-0004Bz-GU for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 10:35:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX8Z4-0004AP-LN for emacs-devel@gnu.org; Fri, 27 Jan 2017 10:35:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX8Z1-0006PV-JR for emacs-devel@gnu.org; Fri, 27 Jan 2017 10:35:50 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48435) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX8Z1-0006PR-GJ; Fri, 27 Jan 2017 10:35:47 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4360 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cX8Z0-0000Oe-6H; Fri, 27 Jan 2017 10:35:47 -0500 Date: Fri, 27 Jan 2017 17:35:31 +0200 Message-Id: <834m0k1poc.fsf@gnu.org> From: Eli Zaretskii To: Yuri D'Elia CC: emacs-devel@gnu.org In-reply-to: <87bmus8scp.fsf@wavexx.thregr.org> (message from Yuri D'Elia on Fri, 27 Jan 2017 15:55:50 +0100) Subject: Re: Issues with partial repainting when enabling cairo Reply-to: Eli Zaretskii References: <87bmus8scp.fsf@wavexx.thregr.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 15:35:51 -0000 > From: Yuri D'Elia > Date: Fri, 27 Jan 2017 15:55:50 +0100 > > I briefly tested a build from master with lucid+cairo enabled on X11. > How experimental is "experimental" supposed to be? ;) > > It seems that some areas of the frame are not repainted correctly. > > For instance, scrolling by pages does not refresh the top (or bottom) > lines at all. More properly, it seems to be a fixed area at the > top/bottom - not really related to visual lines. > > Maybe related to 'scroll-margin? > > There are some bug reports about cairo on the bts, but nothing so > glaring. Glaring display bugs are the main problem with Cairo, AFAIK. We need motivated individuals who'd work on debugging and fixing those problems. TIA From MAILER-DAEMON Fri Jan 27 11:40:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX9ZG-0004RC-HJ for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 11:40:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47702) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX9ZD-0004Qh-Vc for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:40:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX9Z8-0003Ei-VL for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:40:03 -0500 Received: from [195.159.176.226] (port=59614 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX9Z8-0003Eb-P6 for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:39:58 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX9Yk-0000OO-3P for emacs-devel@gnu.org; Fri, 27 Jan 2017 17:39:34 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: Re: Issues with partial repainting when enabling cairo Date: Fri, 27 Jan 2017 17:39:17 +0100 Lines: 23 Message-ID: <871svoe9u2.fsf@wavexx.thregr.org> References: <87bmus8scp.fsf@wavexx.thregr.org> <834m0k1poc.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:V2xO88F64V06asmecu1wcqpMRys= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 16:40:04 -0000 On Fri, Jan 27 2017, Eli Zaretskii wrote: >> There are some bug reports about cairo on the bts, but nothing so >> glaring. > > Glaring display bugs are the main problem with Cairo, AFAIK. We need > motivated individuals who'd work on debugging and fixing those > problems. Apart from being newer, is there any advantage that cairo should bring to the display engine? When I was reading the display code (for debugging the line truncation hang some months ago) it didn't seem quickly approachable to the uninitiated. In addition, there's quite some historical baggage one needs to consider. Similarly, I wanted to fix the fontconf/Xresource discrepancy for the freetype rendering params, but again I ran out of time during the weekend :/ Each time I read the internals I can get further, but I've been using emacs for 10+ years, and I wonder what kind of guru one needs to be to have the balls^H^H^H^Hbeard to fix cairo ;) From MAILER-DAEMON Fri Jan 27 11:52:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX9ko-0001Mc-8L for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX9kl-0001If-LL for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX9kh-0006cg-Lf for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:51:59 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49238) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX9kh-0006ca-It; Fri, 27 Jan 2017 11:51:55 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4387 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cX9kg-0007OY-Ft; Fri, 27 Jan 2017 11:51:55 -0500 Date: Fri, 27 Jan 2017 18:51:40 +0200 Message-Id: <831svo1m5f.fsf@gnu.org> From: Eli Zaretskii To: Yuri D'Elia CC: emacs-devel@gnu.org In-reply-to: <871svoe9u2.fsf@wavexx.thregr.org> (message from Yuri D'Elia on Fri, 27 Jan 2017 17:39:17 +0100) Subject: Re: Issues with partial repainting when enabling cairo Reply-to: Eli Zaretskii References: <87bmus8scp.fsf@wavexx.thregr.org> <834m0k1poc.fsf@gnu.org> <871svoe9u2.fsf@wavexx.thregr.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 16:52:00 -0000 > From: Yuri D'Elia > Date: Fri, 27 Jan 2017 17:39:17 +0100 > > On Fri, Jan 27 2017, Eli Zaretskii wrote: > >> There are some bug reports about cairo on the bts, but nothing so > >> glaring. > > > > Glaring display bugs are the main problem with Cairo, AFAIK. We need > > motivated individuals who'd work on debugging and fixing those > > problems. > > Apart from being newer, is there any advantage that cairo should bring > to the display engine? It's supposed to be the future of GUI desktop on Unix, beyond Xlib interface and the traditional X server-client setup, so I think it's important for us to move in that direction. > When I was reading the display code (for debugging the line truncation > hang some months ago) it didn't seem quickly approachable to the > uninitiated. In addition, there's quite some historical baggage one > needs to consider. You are talking about xdisp.c, which is entirely irrelevant to Cairo. The Cairo-related code is in xterm.c and xfns.c (and also in ftcrfont.c (the "font driver") and in image.c, but those are most probably unrelated to what you see). > Each time I read the internals I can get further, but I've been using > emacs for 10+ years, and I wonder what kind of guru one needs to be to > have the balls^H^H^H^Hbeard to fix cairo ;) The trick is to investigate specific problems without trying to understand the entire big picture. I'm quite sure the basic design of the Cairo support is sound, the bugs are in minor details. Let me know if you need some guidance in finding the places where the scroll-related problems you saw could hide. TIA From MAILER-DAEMON Fri Jan 27 11:52:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cX9lM-0001p2-Qa for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cX9lK-0001mj-D4 for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cX9lG-0006kN-FW for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:34 -0500 Received: from [195.159.176.226] (port=60496 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cX9lG-0006k4-92 for emacs-devel@gnu.org; Fri, 27 Jan 2017 11:52:30 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cX9kw-0007zq-Kl for emacs-devel@gnu.org; Fri, 27 Jan 2017 17:52:10 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Issues with partial repainting when enabling cairo Date: Fri, 27 Jan 2017 11:51:47 -0500 Lines: 7 Message-ID: References: <87bmus8scp.fsf@wavexx.thregr.org> <834m0k1poc.fsf@gnu.org> <871svoe9u2.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:XoGmuORa3cnLLLPpP32ynq1IBW0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 16:52:35 -0000 > Apart from being newer, is there any advantage that cairo should bring > to the display engine? IIUC this would be to most natural path towards adding Wayland support. Stefan From MAILER-DAEMON Fri Jan 27 13:37:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXBOY-0000wq-Vt for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 13:37:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXBOW-0000v6-Ci for emacs-devel@gnu.org; Fri, 27 Jan 2017 13:37:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXBOV-0006tR-3E for emacs-devel@gnu.org; Fri, 27 Jan 2017 13:37:08 -0500 Received: from mail-yb0-x22d.google.com ([2607:f8b0:4002:c09::22d]:34453) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXBOU-0006tI-Ty for emacs-devel@gnu.org; Fri, 27 Jan 2017 13:37:07 -0500 Received: by mail-yb0-x22d.google.com with SMTP id j82so70244513ybg.1 for ; Fri, 27 Jan 2017 10:37:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=F46f8LlFaFfAlsq2h3nTbCLd45UhdIQ1CnW0ZpRyg/Q=; b=QNMalqIra5MeEQ2oePslBS1NYt/lVGAZSL6ZaeDjX0ziM1q8PZKazA13+CDLjDrVQB gKZmDU0K3Shc/Nn0snfRFw2H8qLwKJLzD3H9h0XdfGU9nNzf1qNyCAPQer8kO/uVhpUv GKBqZr6r/E+2zD+J5DYCrOTOUDyD98bFMzmBEhRXD9W5XlN5one4Imzhr5Ar2+qQmRau qokS9mgGnkZarmZHSgR4DpWFX/yXDgwbj+0orvznWXv3Dbzj9nRWDwF2ACUQ+kqpZSZf 8z/juKXoPJMLiWx37MpNUziHGODLPL+yiOqXr6jyWK8/HdxJxbv4rg6TYYhNuysB66JH kLaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=F46f8LlFaFfAlsq2h3nTbCLd45UhdIQ1CnW0ZpRyg/Q=; b=lRhBptBvtRO35TXZ3GUscEI4Jh8pQrkC9Wb1c3M1cljl0pPURh0Anbd6dRFscCJ6hH sqZunWtcuYhVJ6Ydxwzslb+iJqOXzgnwG99vmsAfWtI6WrBA01C7Day8QwWWC1sFk4Tc SE05rgWrliOYniGFoD4Z7p01TAStoqtCDones1d5KDFAOEY/zyo8yYAo3Fk1ZPbxJjPP zY/SlB4x7XVYzdMpCMhQzpf4XdzqX3lO+ohLMMKX72DkIg/osdBA3C2obepeuPjHYs0w lExDVyiZoiUhwIFiZJ5LMMkRMmhIXStrp2yOcNAQx9i5XekWn7j436r/7j5Efe+AY8fk h/EQ== X-Gm-Message-State: AIkVDXIS3p6F/P+iHci5v/EzNaSJAr7UiGIh7A30e6J427ITCQS8VbJKXmDd2ZWIAkvsIomi/lK1pKSwuH1HoQ== X-Received: by 10.37.70.86 with SMTP id t83mr2592817yba.180.1485542225794; Fri, 27 Jan 2017 10:37:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Fri, 27 Jan 2017 10:37:05 -0800 (PST) From: Vibhav Pant Date: Sat, 28 Jan 2017 00:07:05 +0530 Message-ID: Subject: [PATCH] Make purecopy create hash tables properly To: "emacs-devel@gnu.org" Content-Type: multipart/mixed; boundary=001a113c4860ab1023054717c09e X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 18:37:09 -0000 --001a113c4860ab1023054717c09e Content-Type: text/plain; charset=UTF-8 As of now, hash tables are purecopied by getting XVECTOR(table), and copying the contents to pure-alloced memory[0]. This resulted in purecopy returning a vector consisting of mostly nil and random numbers[1]. As the current lisp code doesn't use printed hash tables anywhere, this never caused a problem while dumping emacs. However, using printed hash tables in any code thats loaded in temacs causes the keys and values of the table to change [2], or segfaults temacs altogether [3]. The following patch attempts to fix this, by adding a make_pure_hash_table function that returns a copy of the provided Lisp_Hash_Table* value allocated in pure space. From my testing, this both the issues with printed hash tables in temacs, although I am not sure about the repercussions of blindly copying the header (vectorlike_header) from one Lisp_Hash_Table to another. Any feedback on this would be appreciated, as I would like to get this into master to continue work on byte-switch [4], which makes use of printed hash tables in the constant vector of bytecode functions. I'm not well versed with Emacs internals, apologies if anything above was incorrect. [0] http://git.savannah.gnu.org/cgit/emacs.git/tree/src/alloc.c#n5480 [1] http://ix.io/1ReZ [2] https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00568.html [3] https://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00597.html [4] http://git.savannah.gnu.org/cgit/emacs.git/tree/etc/TODO#n38 --- diff --git a/src/alloc.c b/src/alloc.c index f7b6515f4e..b64f2de224 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5434,6 +5434,33 @@ make_pure_vector (ptrdiff_t len) return new; } +static struct Lisp_Hash_Table * make_pure_hash_table(struct Lisp_Hash_Table *table); + +/* Return a hash table with the same parameters and values as that of TABLE + allocated from pure space. */ +static struct Lisp_Hash_Table * +make_pure_hash_table(struct Lisp_Hash_Table *table) +{ + struct Lisp_Hash_Table *pure = pure_alloc (sizeof *pure, Lisp_Vectorlike); + pure->header = table->header; + pure->weak = purecopy (table->weak); + pure->rehash_size = purecopy (table->rehash_size); + pure->rehash_threshold = purecopy(table->rehash_threshold); + pure->hash = purecopy (table->hash); + pure->next = purecopy (table->next); + pure->next_free = purecopy (table->next_free); + pure->index = purecopy (table->index); + pure->count = table->count; + pure->key_and_value = purecopy (table->key_and_value); + pure->test = table->test; + + if (table->next_weak) { + pure->next_weak = make_pure_hash_table (table->next_weak); + } + + return pure; +} + DEFUN ("purecopy", Fpurecopy, Spurecopy, 1, 1, 0, doc: /* Make a copy of object OBJ in pure storage. Recursively copies contents of vectors and cons cells. @@ -5477,7 +5504,11 @@ purecopy (Lisp_Object obj) obj = make_pure_string (SSDATA (obj), SCHARS (obj), SBYTES (obj), STRING_MULTIBYTE (obj)); - else if (COMPILEDP (obj) || VECTORP (obj) || HASH_TABLE_P (obj)) + else if (HASH_TABLE_P (obj)) { + struct Lisp_Hash_Table *h = make_pure_hash_table(XHASH_TABLE(obj)); + XSET_HASH_TABLE(obj, h); + } + else if (COMPILEDP (obj) || VECTORP (obj)) { struct Lisp_Vector *objp = XVECTOR (obj); ptrdiff_t nbytes = vector_nbytes (objp); -- Vibhav Pant vibhavp@gmail.com --001a113c4860ab1023054717c09e Content-Type: text/x-patch; charset=US-ASCII; name="purecopy_hash_table.patch" Content-Disposition: attachment; filename="purecopy_hash_table.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyg5bmt90 ZGlmZiAtLWdpdCBhL3NyYy9hbGxvYy5jIGIvc3JjL2FsbG9jLmMKaW5kZXggZjdiNjUxNWY0ZS4u YjY0ZjJkZTIyNCAxMDA2NDQKLS0tIGEvc3JjL2FsbG9jLmMKKysrIGIvc3JjL2FsbG9jLmMKQEAg LTU0MzQsNiArNTQzNCwzMyBAQCBtYWtlX3B1cmVfdmVjdG9yIChwdHJkaWZmX3QgbGVuKQogICBy ZXR1cm4gbmV3OwogfQogCitzdGF0aWMgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqIG1ha2VfcHVy ZV9oYXNoX3RhYmxlKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKnRhYmxlKTsKKworLyogUmV0dXJu IGEgaGFzaCB0YWJsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgYW5kIHZhbHVlcyBhcyB0aGF0 IG9mIFRBQkxFCisgICBhbGxvY2F0ZWQgZnJvbSBwdXJlIHNwYWNlLiAgKi8KK3N0YXRpYyBzdHJ1 Y3QgTGlzcF9IYXNoX1RhYmxlICoKK21ha2VfcHVyZV9oYXNoX3RhYmxlKHN0cnVjdCBMaXNwX0hh c2hfVGFibGUgKnRhYmxlKQoreworICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpwdXJlID0gcHVy ZV9hbGxvYyAoc2l6ZW9mICpwdXJlLCBMaXNwX1ZlY3Rvcmxpa2UpOworICBwdXJlLT5oZWFkZXIg PSB0YWJsZS0+aGVhZGVyOworICBwdXJlLT53ZWFrID0gcHVyZWNvcHkgKHRhYmxlLT53ZWFrKTsK KyAgcHVyZS0+cmVoYXNoX3NpemUgPSBwdXJlY29weSAodGFibGUtPnJlaGFzaF9zaXplKTsKKyAg cHVyZS0+cmVoYXNoX3RocmVzaG9sZCA9IHB1cmVjb3B5KHRhYmxlLT5yZWhhc2hfdGhyZXNob2xk KTsKKyAgcHVyZS0+aGFzaCA9IHB1cmVjb3B5ICh0YWJsZS0+aGFzaCk7CisgIHB1cmUtPm5leHQg PSBwdXJlY29weSAodGFibGUtPm5leHQpOworICBwdXJlLT5uZXh0X2ZyZWUgPSBwdXJlY29weSAo dGFibGUtPm5leHRfZnJlZSk7CisgIHB1cmUtPmluZGV4ID0gcHVyZWNvcHkgKHRhYmxlLT5pbmRl eCk7CisgIHB1cmUtPmNvdW50ID0gdGFibGUtPmNvdW50OworICBwdXJlLT5rZXlfYW5kX3ZhbHVl ID0gcHVyZWNvcHkgKHRhYmxlLT5rZXlfYW5kX3ZhbHVlKTsKKyAgcHVyZS0+dGVzdCA9IHRhYmxl LT50ZXN0OworCisgIGlmICh0YWJsZS0+bmV4dF93ZWFrKSB7CisgICAgcHVyZS0+bmV4dF93ZWFr ID0gbWFrZV9wdXJlX2hhc2hfdGFibGUgKHRhYmxlLT5uZXh0X3dlYWspOworICB9CisKKyAgcmV0 dXJuIHB1cmU7Cit9CisKIERFRlVOICgicHVyZWNvcHkiLCBGcHVyZWNvcHksIFNwdXJlY29weSwg MSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgYSBjb3B5IG9mIG9iamVjdCBPQkogaW4gcHVy ZSBzdG9yYWdlLgogUmVjdXJzaXZlbHkgY29waWVzIGNvbnRlbnRzIG9mIHZlY3RvcnMgYW5kIGNv bnMgY2VsbHMuCkBAIC01NDc3LDcgKzU1MDQsMTEgQEAgcHVyZWNvcHkgKExpc3BfT2JqZWN0IG9i aikKICAgICBvYmogPSBtYWtlX3B1cmVfc3RyaW5nIChTU0RBVEEgKG9iaiksIFNDSEFSUyAob2Jq KSwKIAkJCSAgICBTQllURVMgKG9iaiksCiAJCQkgICAgU1RSSU5HX01VTFRJQllURSAob2JqKSk7 Ci0gIGVsc2UgaWYgKENPTVBJTEVEUCAob2JqKSB8fCBWRUNUT1JQIChvYmopIHx8IEhBU0hfVEFC TEVfUCAob2JqKSkKKyAgZWxzZSBpZiAoSEFTSF9UQUJMRV9QIChvYmopKSB7CisgICAgc3RydWN0 IExpc3BfSGFzaF9UYWJsZSAqaCA9IG1ha2VfcHVyZV9oYXNoX3RhYmxlKFhIQVNIX1RBQkxFKG9i aikpOworICAgIFhTRVRfSEFTSF9UQUJMRShvYmosIGgpOworICB9CisgIGVsc2UgaWYgKENPTVBJ TEVEUCAob2JqKSB8fCBWRUNUT1JQIChvYmopKQogICAgIHsKICAgICAgIHN0cnVjdCBMaXNwX1Zl Y3RvciAqb2JqcCA9IFhWRUNUT1IgKG9iaik7CiAgICAgICBwdHJkaWZmX3QgbmJ5dGVzID0gdmVj dG9yX25ieXRlcyAob2JqcCk7Cg== --001a113c4860ab1023054717c09e-- From MAILER-DAEMON Fri Jan 27 14:11:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXBvJ-0004RM-CA for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:11:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXBvH-0004RD-D7 for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:11:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXBvD-0007MZ-Dt for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:10:59 -0500 Received: from mail-qt0-x236.google.com ([2607:f8b0:400d:c0d::236]:35050) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXBvD-0007LJ-8q for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:10:55 -0500 Received: by mail-qt0-x236.google.com with SMTP id x49so149601099qtc.2 for ; Fri, 27 Jan 2017 11:10:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version; bh=w7O9Vs68ysb2k0xB22IjfBPqoHRoKZkj9b73XlNtyok=; b=JO0aXZ6ulojFXXABvIzi76CxU1EeZjQnWUAMD3dxB+e7lJp3uIstEZ29FX8zujOad1 mz04hcCoZSp1F7IGugQwKVtwgUFjpu1Os1EYbsqgAw/FnI2tatnrfEXRaMHajnnY9Vh7 w4A+PoUBlqw7SYiwajnCBaMJpSDt9WJYTzJXIs0HhjJagqmcuKEWsQQVrEOrMintmF16 oY7kD9NZAbaq7qj1n5g3DMkWC7GkeXDH2daOt1jS5tnlOj7QpwTmJYikNsEfzylrI08Y zKssZxR0R5v84M+mDyHjSjiyZTjMjntff07sArfKwjThtSokdM0AZ6znteq0XTj2VuP8 7g1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=w7O9Vs68ysb2k0xB22IjfBPqoHRoKZkj9b73XlNtyok=; b=oFIk6XEnskp4xivpI4fW8m/n1rN1ZouTSy8v4gcoNsUvBURlHL6hi5B/xraKqznxVW vvzsuGKE7CyMG+HCDw8S9jwpUuZL/uoMwJEj4xIMt22kNdeIBt2mlkEdz2D3Cgflulxr 8aAPhgwxwfzQQ+YCX47TOumXZxTnUYpGei8I+47Exp/bjiiy1PJ5se9W2PNc0TkMcAmU bOt39XGHwKQjVm32eGgdAvSAjyEZTfe00QoLnu6dIvd/hMpyvXeXJSxrLcB2ZTGUVC1+ uFU80tKzlWp0+w0YUXEqhyg+qjwPHoqE0mUA8jH1URKGg6GQaDlUxCJeyFZZYXDrTixz LXvw== X-Gm-Message-State: AIkVDXI4mH88Dj+rAkYbcd3F4VO8066/5y5Ku0X3cpmPNmzCy2s8twr4htSAoDRAg5TbSzh7 X-Received: by 10.200.53.50 with SMTP id y47mr9202774qtb.114.1485544252710; Fri, 27 Jan 2017 11:10:52 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id w138sm4859262qka.27.2017.01.27.11.10.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 11:10:52 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id B70AF66372; Fri, 27 Jan 2017 14:10:51 -0500 (EST) From: Mark Oteiza To: emacs-devel@gnu.org Cc: Lars Ingebrigtsen Subject: [PATCH] checking eww download directory Date: Fri, 27 Jan 2017 14:10:51 -0500 Message-ID: <87wpdgmi84.fsf@udel.edu> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:11:00 -0000 Two things: - it would be nice if eww looked a little harder for an existing downloads directory. Perhaps what's below is too much, comments welcome - currently if eww-download-directory isn't accessible, emacs will download a file and the sentinel will fail, and one is left with a hidden buffer with the downloaded contents and no saved file. Easy solution: fail early by checking with access-file diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 0282fe68e6..6c62729849 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -55,9 +55,20 @@ eww-search-prefix :group 'eww :type 'string) -(defcustom eww-download-directory "~/Downloads/" +(defcustom eww-download-directory + (cond + ((memq system-type '(ms-dos windows-nt cygwin)) + (expand-file-name "Downloads" (getenv "USERPROFILE"))) + ((cl-some + (lambda (str) + (let ((f (expand-file-name str "~"))) + (and (file-directory-p f) + (string-match-p "downloads?" (downcase f)) + (abbreviate-file-name f)))) + (directory-files "~"))) + (t "~/Downloads/")) "Directory where files will downloaded." - :version "24.4" + :version "26.1" :group 'eww :type 'directory) @@ -1501,6 +1512,7 @@ eww-copy-page-url (defun eww-download () "Download URL under point to `eww-download-directory'." (interactive) + (access-file eww-download-directory "Download failed") (let ((url (get-text-property (point) 'shr-url))) (if (not url) (message "No URL under point") From MAILER-DAEMON Fri Jan 27 14:21:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXC5d-0000dO-VA for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:21:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52898) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXC5a-0000aw-Ga for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:21:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXC5X-0002IZ-AJ for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:21:38 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:36567) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXC5X-0002Ho-4A for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:21:35 -0500 Received: from 37.253.224.99.tmi.telenormobil.no ([37.253.224.99] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXC5R-0001lf-U6; Fri, 27 Jan 2017 20:21:32 +0100 From: Lars Ingebrigtsen To: Mark Oteiza Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory References: <87wpdgmi84.fsf@udel.edu> Date: Fri, 27 Jan 2017 20:21:16 +0100 In-Reply-To: <87wpdgmi84.fsf@udel.edu> (Mark Oteiza's message of "Fri, 27 Jan 2017 14:10:51 -0500") Message-ID: <87inp08g2b.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:21:41 -0000 Mark Oteiza writes: > - it would be nice if eww looked a little harder for an existing > downloads directory. Perhaps what's below is too much, comments > welcome [...] > -(defcustom eww-download-directory "~/Downloads/" > +(defcustom eww-download-directory > + (cond > + ((memq system-type '(ms-dos windows-nt cygwin)) > + (expand-file-name "Downloads" (getenv "USERPROFILE"))) > + ((cl-some > + (lambda (str) > + (let ((f (expand-file-name str "~"))) > + (and (file-directory-p f) > + (string-match-p "downloads?" (downcase f)) > + (abbreviate-file-name f)))) > + (directory-files "~"))) > + (t "~/Downloads/")) Yikes. There must be a gazillion places directories are defined under the home director. Do they all do this dance? If they do, perhaps it should be made into a library function? > + (access-file eww-download-directory "Download failed") Seem OK, except that the error message should say what the error is instead of this. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 14:27:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCBE-0003nM-4n for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:27:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54473) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCBB-0003nG-OK for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:27:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCB8-0003rn-Lq for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:27:25 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:36605) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXCB8-0003rW-Fk for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:27:22 -0500 Received: from 37.253.224.99.tmi.telenormobil.no ([37.253.224.99] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXCB2-0006fU-QN; Fri, 27 Jan 2017 20:27:19 +0100 From: Lars Ingebrigtsen To: Mark Oteiza Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory References: <87wpdgmi84.fsf@udel.edu> Date: Fri, 27 Jan 2017 20:27:10 +0100 In-Reply-To: <87wpdgmi84.fsf@udel.edu> (Mark Oteiza's message of "Fri, 27 Jan 2017 14:10:51 -0500") Message-ID: <87efzo8fsh.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:27:26 -0000 Mark Oteiza writes: > and the sentinel will fail, and one is left with a > hidden buffer with the downloaded contents and no saved file. (This has been fixed on the with-url branch.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Fri Jan 27 14:38:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCM4-0000j2-D2 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:38:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCM1-0000ga-48 for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:38:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCM0-00079D-6k for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:38:37 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:32978) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXCM0-00078q-2g for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:38:36 -0500 Received: by mail-qt0-x243.google.com with SMTP id n13so48050148qtc.0 for ; Fri, 27 Jan 2017 11:38:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=5NonhZN75JE8KJ0NODTOHSsXDRScE5mEQOvgv5csyDI=; b=HWHOxASnFmozkpBUhaBBZh3qebe8PzPRbbeHI/XeGQJlC4v75xo2RR59tLexOnOFHU ZHS8kWZ1uw3BP+xamD4bAKHCCAQiOpZgbS4XTTaSWiOQQQjDIjmtYGU6gODroudHvT8G loyw+bQK2Wm2++NzMrvaJH3/AiV2KbqBfCFvTpTq/jxt1jKzWePK4Pl+j0gKI7q9YMHH DDxG9PZ9eK+QF9S1QtY+Hrr3KWL2cZ4xsX1E27l3rargGNAhQIxpMrmGbqLg+krI47OY jL3FvXwjZxVmiR9OEwgzYP8VuWKGR+8aIZhvV0CbXBmcEZYTefH/lx2ZpCdPadA4Ebis G+1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=5NonhZN75JE8KJ0NODTOHSsXDRScE5mEQOvgv5csyDI=; b=ioJaOE3mPErfmf3OZEaFVgPIrZGTkhY6nalaamF/D/Er49EO7AMaQxuHP7Z63M4um8 xMeHWxKVCUPFqRwqMFipaF81sdB3+gA4a95fi60AvKdvAR47nS0qWZomiHWGTkWGK430 ZcoCsF8ZTuZZxrXLfRFPoFNgcbhLxyUL608QZEaGAjkQeUsKWdqGjltKegBrrZZLBcoT d/O5+Z4Ysat4970tDggM8nPRq5hyqH1FZop1M/I7x7LsS12nJcjJWpVKKXOlh4dAdm+9 PRrUjlANIV4Enq/0D8OYx1ur1F8RN+Y88MkLFwlU/Le6AMoIAf4ln5ZNsOq0GcGrpsnq QYGQ== X-Gm-Message-State: AIkVDXJt0aqLuUW+RIvlXLH1++1kHeXQxQ4j4Xcewq0mh5jyaQ6CIe04JreAAC/oZOGt4g== X-Received: by 10.55.195.148 with SMTP id r20mr9905539qkl.45.1485545913723; Fri, 27 Jan 2017 11:38:33 -0800 (PST) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id h184sm4905064qkf.23.2017.01.27.11.38.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 11:38:33 -0800 (PST) Subject: Re: [PATCH] checking eww download directory To: emacs-devel@gnu.org References: <87wpdgmi84.fsf@udel.edu> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> Date: Fri, 27 Jan 2017 14:38:31 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87wpdgmi84.fsf@udel.edu> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:38:38 -0000 On 2017-01-27 14:10, Mark Oteiza wrote: > - it would be nice if eww looked a little harder for an existing > downloads directory. Perhaps what's below is too much, comments > welcome This sounds like a great idea! And I'd say what's below is not enough, actually :) For example, it fails in locales that are not English (on French versions of Ubuntu, the Downloads folder is "Tlchargements"), or if users manually customized the name of that folder (I use ~/dls). How hard would it be to integrate with the xdg-user-dirs standard instead? On many GNU/Linux systems, running "xdg-user-dir DOWNLOAD" is enough (http://stackoverflow.com/questions/13161226/). This would make eww consistent with Firefox, too (they take the slightly more painful route of parsing ~/.config/user-dirs.dirs: https://dxr.mozilla.org/mozilla-release/source/xpcom/io/SpecialSystemDirectory.cpp#256) Cheers, Clment. From MAILER-DAEMON Fri Jan 27 14:45:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCSZ-0003tJ-RO for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:45:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57658) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCSX-0003rj-4L for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:45:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCSW-0000c7-2X for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:45:21 -0500 Received: from mail-oi0-x229.google.com ([2607:f8b0:4003:c06::229]:35065) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXCSV-0000bl-U4 for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:45:20 -0500 Received: by mail-oi0-x229.google.com with SMTP id j15so163096498oih.2 for ; Fri, 27 Jan 2017 11:45:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=UV5ton2t39XocYEcU+WsPxiEiCi3GKA/rmEX4zA/3wY=; b=E52CPd5B+O0dbeUTTrnzGlW9+WLAt78aH0K5zz4445LAaXtWkkhrGbKY1DRbk2t697 evajkToYU5Z7Z/egZQR9ptWDi6/pTNFk4wEXSenu89Chz0zKWKGUmFh8dtSQsABj2Po0 mT6cGIr9Noj7gWXm4pXhj7zmocDr9BMMU5s7rhU0qKpsOsfdXJKbBSJBKHS06QtGPupx hEQCjVcsewfQ4kAeaXk9i1Kh1yMvENGJbuAOTppMDdIeYfRCJvTIH7y7nFL+wJJC8Z38 UUYL/FqHSpHRjloHEwU06PtGejYf+f+5d06h+rTMzFMxVN4CSnogZQd3J2vRhT8lgcOD 1ydQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=UV5ton2t39XocYEcU+WsPxiEiCi3GKA/rmEX4zA/3wY=; b=aqmD0CFrn8ZBiVRnWvUD3qPIYvqwcfPaZS6gHv+9I3NnRy56R8s8j6CCotQLGVtS5v 04TlmMIMItC7vDTZRVaKBiwquYSUsy92d3tKWHVqnSh670RY9rP+3p37H0mAX9ZgpnF8 +dBaNIQtDQ9XQ8JaRQ0XRdXJquGby18z7X3wEFYSK++UuZbpnCPFhcySLPS5piBg4+2k byTqBbcFAm9X5BNmfTZVoKUiSa09J077gjD47ar28wcCfOV6Z2LO9zfxlQ+df3eSuqJy H40vtrsQurrI3RrIsNx3gCUSuaey94loo1KiVDuEBZexy7DM5UYmK5H25RkmYwIBF/AL KVOw== X-Gm-Message-State: AIkVDXIRsywfXuAuhDdInxuh4GjohQk1Qt/an8k/PMKVuVG6nQWML2UoWtw+3LFjugO3d5+Sl7zrN94fFiFN4w== X-Received: by 10.202.77.198 with SMTP id a189mr4946283oib.61.1485546317276; Fri, 27 Jan 2017 11:45:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.56.242 with HTTP; Fri, 27 Jan 2017 11:45:16 -0800 (PST) In-Reply-To: <87k29gsgam.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> From: Filipe Silva Date: Fri, 27 Jan 2017 17:45:16 -0200 Message-ID: Subject: Re: official Emacs Docker image To: Emacs developers Content-Type: multipart/alternative; boundary=001a1134fdc889f2f7054718b489 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:45:22 -0000 --001a1134fdc889f2f7054718b489 Content-Type: text/plain; charset=UTF-8 Ted, I think that before the portable dumper branch get's merged or the big elc file branch gets merged, you are going to have a really hard time writing a docker file for that because of: https://github.com/docker/docker/issues/22801 You'll probably will have to rely on "docker commiting" your image. That's how I do it for now. I built emacs from git head with it. On Fri, Jan 27, 2017 at 12:56 PM, Ted Zlatanov wrote: > On Sat, 31 Dec 2016 13:25:32 -0500 Richard Stallman wrote: > > RS> I guess that makes sense for special circumstances. Anyway, it does > RS> no wrong to anyone. So please support it if you want to. > > After talking to RMS, I created https://hub.docker.com/u/fsfemacs and am > currently the owner of the organization. The image, when ready, will be > "fsfemacs/emacs". I named it that way to emphasize the FSF organization, > rather than "gnuemacs" which would emphasize the GNU project. > > If you're interested in collaborating on a Dockerfile that builds 24.x > and 25.x/master, let me know here or in e-mail. If you have one already, > even better. > > Thanks > Ted > > > --001a1134fdc889f2f7054718b489 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Ted, I think that before the portable dumper bra= nch get's merged or the big elc file branch gets merged, you are going = to have a really hard time writing a docker file for that because of:=C2=A0= https://github.co= m/docker/docker/issues/22801


You'll probably will have to rely on "docker commitin= g" your image. That's how I do it for now. I built emacs from git = head with it.=C2=A0


On Fri, Jan 27, 2017 at 12:56 PM, Ted Zla= tanov <tzz@lifelogs.com> wrote:
On Sat, 31 Dec 2016 13:25:32 -0500 Richard Stallman <rms@gnu.org> wrote:

RS> I guess that makes sense for special circumstances.=C2=A0 Anyway, it= does
RS> no wrong to anyone.=C2=A0 So please support it if you want to.

After talking to RMS, I created https://hub.docker.com/u/fsfem= acs and am
currently the owner of the organization. The image, when ready, will be
"fsfemacs/emacs". I named it that way to emphasize the FSF organi= zation,
rather than "gnuemacs" which would emphasize the GNU project.

If you're interested in collaborating on a Dockerfile that builds 24.x<= br> and 25.x/master, let me know here or in e-mail. If you have one already, even better.

Thanks
Ted



--001a1134fdc889f2f7054718b489-- From MAILER-DAEMON Fri Jan 27 14:48:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCVW-0005vx-Je for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 14:48:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58351) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCVU-0005vq-9T for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:48:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCVQ-0001Ja-6e for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:48:24 -0500 Received: from mail-qt0-x235.google.com ([2607:f8b0:400d:c0d::235]:36140) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXCVQ-0001JT-1s for emacs-devel@gnu.org; Fri, 27 Jan 2017 14:48:20 -0500 Received: by mail-qt0-x235.google.com with SMTP id k15so152924967qtg.3 for ; Fri, 27 Jan 2017 11:48:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Bni0P9bErb2FD2EcBnvQvXGEQfd3V6xffNo9ndPhi4A=; b=ZdjipxTe6nlt2vsVfL2sIZH/NqWPxYKLbKu9dqXuElqilTb/FqRT6ykl16eE66Ec1m rPpDWIFezHAHZJ0lmVLacNnp1Z/K+H4qW83y7X04wt3o7i9oDWDt0paBgQaVhc58hVdz /XmVQJ/gVmAHlxMcs+uTY3RpoKt1ywyfVtkHVjednGhiAiK1bS7871zEWF8YuJ0bgvmH aEqKrs4dkGSfN26A2qQcre9RkGzUUgoUYmXy52YW3e2JT7ZYt4DHF23tCwq1PA8k5d7I YVbjlRyzJpKKqDQKH7wsEnQe+DqE7J+fE+k4UiP0NiANTM+a+8/E8Abip7hiWU604WAf ZOVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Bni0P9bErb2FD2EcBnvQvXGEQfd3V6xffNo9ndPhi4A=; b=IlPLcFEwbQa1wOqoMjIbROlAa1ygO5M54Ds2awDS09aSbCYS8GRof4u5XFPrXn4Xe0 5QI0+OX5sBN8obgQmw3A2cPIeI1yvrEWJfVnYNHRZLZO0zDz4W5F1iUvQxeyEHGXdB02 hEmtY1P+VX83oJQotkxtC2p3CJVfaOLLl2ferGsLOUKHCWnZLsA2xro+ryV5smINskVb fRi1wxAkloF3Lyj1oq1ecUrfH3VDM10Y6VUmXJ+nAei2fHTc+gGm7xrb/Cfzjz34+Wd9 0Qjive7PIf3Npt/TgGo6SVuc+2ZWirlrdzAcKB2djG1ZgWrHRCFO1wlUeRcSQeAYnc0w kn3g== X-Gm-Message-State: AIkVDXK429HnGJ7Lv5djZqOLXxi29UlFbWMP31Ubcu6fOFvty1C32WoHqGkvaT14UMW/fCt9 X-Received: by 10.200.40.242 with SMTP id j47mr9482091qtj.24.1485546498638; Fri, 27 Jan 2017 11:48:18 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id p46sm4938274qta.33.2017.01.27.11.48.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 11:48:17 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 09B7E66372; Fri, 27 Jan 2017 14:48:17 -0500 (EST) Date: Fri, 27 Jan 2017 14:48:16 -0500 From: Mark Oteiza To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory Message-ID: <20170127194816.GA18966@holos.localdomain> References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87inp08g2b.fsf@mouse> User-Agent: Mutt/1.7.2+27 (e4ad1dc9bfbd) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 19:48:25 -0000 On 27/01/17 at 08:21pm, Lars Ingebrigtsen wrote: > Mark Oteiza writes: > > > - it would be nice if eww looked a little harder for an existing > > downloads directory. Perhaps what's below is too much, comments > > welcome > > [...] > > > -(defcustom eww-download-directory "~/Downloads/" > > +(defcustom eww-download-directory > > + (cond > > + ((memq system-type '(ms-dos windows-nt cygwin)) > > + (expand-file-name "Downloads" (getenv "USERPROFILE"))) > > + ((cl-some > > + (lambda (str) > > + (let ((f (expand-file-name str "~"))) > > + (and (file-directory-p f) > > + (string-match-p "downloads?" (downcase f)) > > + (abbreviate-file-name f)))) > > + (directory-files "~"))) > > + (t "~/Downloads/")) > > Yikes. There must be a gazillion places directories are defined under > the home director. Do they all do this dance? If they do, perhaps it > should be made into a library function? I just went off of knowing it's called Downloads in windows, and trying to consider plural/nonplural and case insensitivity on Linux. Mine, for instance is just lower cased. So... the cl-some is probably overkill. This is something I've thought about and I know I've seen johnw kick the idea around somewhere, but it would take some work to generalize it. Just one example of what such a library might read is user-dirs.dirs for XDG thingies: https://www.freedesktop.org/wiki/Software/xdg-user-dirs/ It's a shell-looking file with lines like XDG_DOWNLOAD_DIR="$HOME/Downloads" > > + (access-file eww-download-directory "Download failed") > > Seem OK, except that the error message should say what the error is > instead of this. It does, access-file appends the error: Download failed: No such file or directory, ~/NOWOAIWJD From MAILER-DAEMON Fri Jan 27 15:10:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCr9-0007jr-Ar for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 15:10:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42560) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCr7-0007io-EO for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:10:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCr3-0001oR-Av for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:10:45 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52524) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCr3-0001oN-87; Fri, 27 Jan 2017 15:10:41 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1075 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXCr1-0002x2-Ve; Fri, 27 Jan 2017 15:10:40 -0500 Date: Fri, 27 Jan 2017 22:10:24 +0200 Message-Id: <83y3xwz2kv.fsf@gnu.org> From: Eli Zaretskii To: Mark Oteiza CC: larsi@gnus.org, emacs-devel@gnu.org In-reply-to: <20170127194816.GA18966@holos.localdomain> (message from Mark Oteiza on Fri, 27 Jan 2017 14:48:16 -0500) Subject: Re: [PATCH] checking eww download directory Reply-to: Eli Zaretskii References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> <20170127194816.GA18966@holos.localdomain> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 20:10:46 -0000 > Date: Fri, 27 Jan 2017 14:48:16 -0500 > From: Mark Oteiza > Cc: emacs-devel@gnu.org > > I just went off of knowing it's called Downloads in windows The Downloads directory exists on Windows only since Windows 7, it's not there on older versions. From MAILER-DAEMON Fri Jan 27 15:17:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXCxT-0003RC-8A for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 15:17:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXCxQ-0003Ps-FI for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:17:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXCxN-0003k6-8s for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:17:16 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:35153) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXCxN-0003k2-3q for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:17:13 -0500 Received: by mail-qt0-x241.google.com with SMTP id s58so7475578qtc.2 for ; Fri, 27 Jan 2017 12:17:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=EwILdfO3+4iB9C8EizWtGlX7QcHc/GyJnsj39juezDU=; b=kZn9NGmQgKmXy29ILU+vW0vE0Sw3B9snCBRv2sjFpvz1TwQACP3SX5lgxo6WLLgArp 1lXN6DaIbNcrqfYgjv3G8s3nLNKCcdzon9tkoTc+pLrgbgzs0FRxLHkZSuGOB/ZTc53C B/1iTM0VASZ45q2gm/+z/JBw9DXBZKICN7PQqkhSVFGSEhrHQik5+IiqeeQiIhq1O4Cm ZmUFEh9s27sLmQEyoVFDGNNXd/ywdaSyz/gJ7K0mJcfQSO3iFtBArk++a6wOZ++jcqvI RXGCfDFVORlSXrRvy9WMF7Ju96hdyemENrqwLEVrhFTzwgdUMkuVZUDPil1ZzAgHZv5j aaqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=EwILdfO3+4iB9C8EizWtGlX7QcHc/GyJnsj39juezDU=; b=UpJRP4speUMBbcRUd8vA0LvFRwa/jmX6ARfLFb6nIBtVATA/mZQYDbznDeaZ3is8TQ VwsBll3io2hX2R9CMUGl346JMt9KQTGoM3adCv6/DqG9qw+oGoVGl1RRe89iffrtfAHg g0tShXqQfBCVdGsoelhERn5KQRgo7C8ejrURs9Ij4dKCDkSWKQ4IAGSQ/yyz/W+fDkpr 7x10MnAWwaHpnGx1Tnu8Ab4zM6IilZgrqRUErhavPouto6cHqA68GRYfz2PXzMT7rMIO 7DL4ytRU5EH1RPmFlYOGPWYSOvzm1TU3IVSvj5LmZ5z/JmhuHWO/iryqgiV1aUWK8fs2 TjdQ== X-Gm-Message-State: AIkVDXLOn1SPTwTNss1ohsE46aNoTb5AwuLKvyERvviXCgQiA7fWeXcQJ82YvkDw5qLyjD4a X-Received: by 10.200.37.183 with SMTP id e52mr10034444qte.166.1485548232487; Fri, 27 Jan 2017 12:17:12 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id d15sm5000925qtg.22.2017.01.27.12.17.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 12:17:11 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 3A24766372; Fri, 27 Jan 2017 15:17:11 -0500 (EST) From: Mark Oteiza To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory References: <87wpdgmi84.fsf@udel.edu> <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> Date: Fri, 27 Jan 2017 15:17:10 -0500 In-Reply-To: <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> (=?utf-8?Q?=22Cl=C3=A9ment?= Pit-Claudel"'s message of "Fri, 27 Jan 2017 14:38:31 -0500") Message-ID: <87mvecntq1.fsf@udel.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 20:17:18 -0000 Cl=E9ment Pit-Claudel writes: > On 2017-01-27 14:10, Mark Oteiza wrote: >> - it would be nice if eww looked a little harder for an existing >> downloads directory. Perhaps what's below is too much, comments >> welcome > > This sounds like a great idea! And I'd say what's below is not > enough, actually :) For example, it fails in locales that are not > English (on French versions of Ubuntu, the Downloads folder is > "T=E9l=E9chargements"), or if users manually customized the name of that > folder (I use ~/dls). > > How hard would it be to integrate with the xdg-user-dirs standard > instead? On many GNU/Linux systems, running "xdg-user-dir DOWNLOAD" is > enough (http://stackoverflow.com/questions/13161226/). This would > make eww consistent with Firefox, too (they take the slightly more > painful route of parsing ~/.config/user-dirs.dirs: > https://dxr.mozilla.org/mozilla-release/source/xpcom/io/SpecialSystemDire= ctory.cpp#256) An xdg.el would be nice to have for elisp that interfaces with XDG-following things. mpc.el and image-dired.el are two files that come to mind: mpd follows [0], image-dired supports [1]. Actually, it looks like those are the only two files with XDG bits, and I put them there. How about that. Anyways, these aren't difficult to implement. If it would be a welcome addition I'd have a go at writing it. [0] https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html [1] https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-la= test.html P.S. Please Cc: From MAILER-DAEMON Fri Jan 27 15:21:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXD14-0006RS-LP for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 15:21:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46861) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXD11-0006OR-Kg for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:21:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXD0y-0005Bt-BP for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:20:59 -0500 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:33512) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXD0y-0005Ad-4O; Fri, 27 Jan 2017 15:20:56 -0500 Received: by mail-wm0-x243.google.com with SMTP id r144so60758176wme.0; Fri, 27 Jan 2017 12:20:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2who4LbK5/aBq50Iv/69iPPUAxrF3n0lxJGkB+Ft1LI=; b=ZYLB0oEY9SRrjbdanuSCoa7WvKqebzq+avHjNr5KcpaeNbG1nsknDh8gtKog4BxuPJ sXmGQdKLOcsPHH+mIjIJxaqKr5+0NnvTH5kJbJv3zqbTzHtFuGuJdTzy9aIr8fw7trne STEl52S60QcdHCWoaKnShb/ZblQUuZuzKnNIXFrtxUBVFfS5RZCXMR1pyNjEuhytPLBW nc7agXOu2Xmz23QcUrYEdTZIgDhA9RQBXOkyqUCCNyd39B0hD//5kcdNtnnbmcbIgLpo FEJKjXn5P2rl0MU5UcTKbNnjrXq3EO+52MzWoY0PdjE24+bv0vNL0x3kWAiUOJRtK8UF 7fHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2who4LbK5/aBq50Iv/69iPPUAxrF3n0lxJGkB+Ft1LI=; b=RLp0ZTzjVe+3wUCAp8sLqe+5mBacWRIBOlvy9/LDIi8XYpmjIUVjBE0NO5mOGO1mbQ dJMK/MqRjypDKwJeV+Pv+X24v6CRF/1lS0tTwqDjE3bGIYKD3DIhE4vFYNauFhSefYOg 6LcQsWQ81VPHU8RiX1//M2UOfBsO2/rrWaJpLd8/nbsPIxdBHdBp2HwayB0a1iAa/NF2 QxRCEgwP1FZOrgtxxsh743srb73Nfvp5GUQw6ehGpZTBdChMyIfy85FRNLfQ2r89BLjA oMOelfLKq9G6yeF0Bmzn4ZSjqoaB6zT3t8DgsRhSCH1ToVYRDz0SuqAZesNPV9AeC4UY +E+w== X-Gm-Message-State: AIkVDXKY0/79cDqW8oO51VV/aNRAPyINn72MLYIs0YeRT4+8hQ/P5USBk9UVtzXZQtJlBA== X-Received: by 10.28.188.9 with SMTP id m9mr4449591wmf.79.1485548453285; Fri, 27 Jan 2017 12:20:53 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id n10sm9565695wrb.9.2017.01.27.12.20.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 27 Jan 2017 12:20:52 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> Date: Fri, 27 Jan 2017 22:20:27 +0200 In-Reply-To: <87d1fe3hof.fsf@engster.org> (David Engster's message of "Sun, 22 Jan 2017 22:31:44 +0100") Message-ID: <87lgtwtfuc.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 20:21:01 -0000 David Engster writes: >> Edward John Steere writes: >>> As I said in my previous email I'll make a start on the tests. >> >> That's great, thanks! I'll push a branch with my progress soon. > > I just pushed my first try as scratch/last-cedet-merge. > > -David I've just pushed up a fairly rough attempt at merging the tests in scratch/merge-cedet-tests (it looks like tests were only ever merged to Emacs once.) I took the following approach: * I used git to format patches per test file. * changed the destination of the file in each patch to match the Emacs manual testing directory; * fixed any commit messages which failed the commit hook; * added a final commit to cleanup; which included the removal of duplicated test files not moved by the patching process and the removal of dependencies on language/project support which we're not merging The consequence of this approach is that my branch will add 316 commits. Many of the commit messages aren't up to scratch (they pass the commit hook but don't match the requirements outlined in CONTRIBUTE). I'm going to have to spend some time fixing the rest of the commits. I wanted to ask whether we should consider squashing all 316 commits into a "cedet-merge" commit since the changes are going to be documented in the ChangeLog. Finally; the tests don't run with the CEDET in Emacs. The first failure is caused by a missing SRecode template -- which I imagine David will have added on his branch. I haven't checked what happens when his and my changes are merged. From MAILER-DAEMON Fri Jan 27 15:31:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXDBN-0001OB-67 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 15:31:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52566) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXDBJ-0001KI-Vc for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:31:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXDBE-0002MY-Vg for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:31:38 -0500 Received: from ocolin.muc.de ([193.149.48.4]:28294 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cXDBE-0002LM-MJ for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:31:32 -0500 Received: (qmail 57630 invoked by uid 3782); 27 Jan 2017 20:31:30 -0000 Received: from acm.muc.de (p548C733D.dip0.t-ipconnect.de [84.140.115.61]) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 27 Jan 2017 21:31:29 +0100 Received: (qmail 27899 invoked by uid 1000); 27 Jan 2017 20:31:13 -0000 Date: Fri, 27 Jan 2017 20:31:13 +0000 To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: "Like `let*' but ....." Message-ID: <20170127203113.GA2630@acm> References: <20170124211227.GC7358@acm> <87lgu0qcks.fsf@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 20:31:39 -0000 Hello, Stefan. On Wed, Jan 25, 2017 at 00:08:01 -0500, Stefan Monnier wrote: [ .... ] > BTW, regarding the big pcase-let* in byte-compile-file-form-defalias, > it was partly an experiment in the use of pcase patterns. > OT1H I'm not convinced the result speaks very much in favor of pcase, > OTOH if you try to rewrite this code without pcase it's not > pretty either. > I'll read it for you: > ;; `macro' is non-nil if it defines a macro. > ;; `fun' is the function part of `arg' (defaults to `arg'). > (((or (and (or `(cons 'macro ,fun) `'(macro . ,fun)) (let macro t)) > (and (let fun arg) (let macro nil))) > arg) > This part binds two vars: `fun` and `macro`. > Basically, it binds `fun` to the value of `arg` except that if `arg` is > a "macro value", `fun` gets the value of the macro's function (and > `macro` gets value t rather than nil). OK, I think I might have got the semantics now. The `arg' at the end of that thing is the object upon which the pcase pattern at the beginning of it acts on. The `or's and `and's are pcase ones, not the primitives. The variables which are bound are precisely the cadrs of the three element lists beginning `(let ...)', none of the variables bound in the pcase form surviving after that form terminates. Er, actually that isn't true, looking at `lam' in the next bit. Variables bound within the pcase pattern remain bound over the entire pcase-let* form (unless, of course, a subsequent binding rebinds the same symbol). Am I right? > ;; `lam' is the lambda expression in `fun' (or nil if not > ;; recognized). > ((or `(,(or `quote `function) ,lam) (let lam nil)) > fun) > This only binds `lam`. It takes the `fun` apart and extracts a lambda > expression from it (or nil if it can't). > ;; `arglist' is the list of arguments (or t if not recognized). > ;; `body' is the body of `lam' (or t if not recognized). > ((or `(lambda ,arglist . ,body) > ;; `(closure ,_ ,arglist . ,body) > (and `(internal-make-closure ,arglist . ,_) (let body t)) > (and (let arglist t) (let body t))) > lam)) > This tries to take apart `lam` and extract two parts: `arglist` and `body`. > The complexity here is that `arg` doesn't hold a "macro value" > (i.e. something of the form (macro . FUN)), but instead it holds an > expression that will return a macro value. So `arg` can be of the form > (quote (macro . FUN)) > (cons 'macro 'FUN) > (cons 'macro #'FUN) > (cons 'macro (internal-make-closure ...)) > ... > and of course FUN is usually of the form (lambda ...) but it can also be > a plain symbol, or a # object or god knows what else. > Stefan -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Fri Jan 27 15:33:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXDDG-0003dk-Do for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 15:33:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53577) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXDDD-0003c2-Qa for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:33:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXDDD-0003Rb-5n for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:33:35 -0500 Received: from ocolin.muc.de ([193.149.48.4]:64573 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cXDDC-0003RV-R2 for emacs-devel@gnu.org; Fri, 27 Jan 2017 15:33:35 -0500 Received: (qmail 58073 invoked by uid 3782); 27 Jan 2017 20:33:34 -0000 Received: from acm.muc.de (p548C733D.dip0.t-ipconnect.de [84.140.115.61]) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 27 Jan 2017 21:33:33 +0100 Received: (qmail 27910 invoked by uid 1000); 27 Jan 2017 20:33:17 -0000 Date: Fri, 27 Jan 2017 20:33:17 +0000 To: =?iso-8859-1?Q?Cl=E9ment?= Pit-Claudel Cc: emacs-devel@gnu.org Subject: Re: "Like `let*' but ....." Message-ID: <20170127203317.GB2630@acm> References: <20170124211227.GC7358@acm> <8689586f-16fa-058e-6e9e-30e74b289593@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8689586f-16fa-058e-6e9e-30e74b289593@gmail.com> User-Agent: Mutt/1.7.2 (2016-11-26) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 193.149.48.4 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 20:33:36 -0000 Hello, Clment. On Tue, Jan 24, 2017 at 16:26:55 -0500, Clment Pit-Claudel wrote: > On 2017-01-24 16:12, Alan Mackenzie wrote: > > What is not clear is precisely HOW `pcase' patterns are used for > > bindings, and what the semantics of (PAT EXP) are. > Hi Alan, > I find that mentally translating (pcase-let* (( )) ) to > (pcase ( )) helps. This translation is mostly correct, with > the added twist that the former is undefined if doesn't match . > Then everything is as in the pcase documentation. Hopefully this helps! Yes, it does, I think. Thanks! > Cheers, > Clment. -- Alan Mackenzie (Nuremberg, Germany). From MAILER-DAEMON Fri Jan 27 16:04:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXDh6-0005kn-JI for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 16:04:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXDh3-0005kY-L2 for emacs-devel@gnu.org; Fri, 27 Jan 2017 16:04:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXDgy-0003Pv-OP for emacs-devel@gnu.org; Fri, 27 Jan 2017 16:04:25 -0500 Received: from randomsample.de ([5.45.97.173]:39390) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXDgy-0003Od-Et; Fri, 27 Jan 2017 16:04:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=ckvVgM5ddCqAWAAwOhmuu5TVPP/Ktu+oH3iNJAJrbnQ=; b=aiylEpc+oqez59xMSJp0AE6YiHNRTFgRfsu63VvUw/Z4rdituHP/87fn6q5TvdxdaDLg+Nda3meUi0V6P4xNMf7lbBSiSAJTYVO4aYeyTVafmX0k8Is9g9/JE1QvYUh/; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXDgw-0007B5-6Z; Fri, 27 Jan 2017 22:04:18 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87lgtwtfuc.fsf@gmail.com> (Edward John Steere's message of "Fri, 27 Jan 2017 22:20:27 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Fri, 27 Jan 2017 22:04:17 +0100 Message-ID: <874m0k1age.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 21:04:26 -0000 Edward John Steere writes: > David Engster writes: >>> Edward John Steere writes: >>>> As I said in my previous email I'll make a start on the tests. >>> >>> That's great, thanks! I'll push a branch with my progress soon. >> >> I just pushed my first try as scratch/last-cedet-merge. >> >> -David > > I've just pushed up a fairly rough attempt at merging the tests in > scratch/merge-cedet-tests Thank you. > (it looks like tests were only ever merged to Emacs once.) Yes. > I took the following approach: > > * I used git to format patches per test file. > * changed the destination of the file in each patch to match the Emacs > manual testing directory; > * fixed any commit messages which failed the commit hook; > * added a final commit to cleanup; which included the removal of > duplicated test files not moved by the patching process and the > removal of dependencies on language/project support which we're not > merging > > The consequence of this approach is that my branch will add 316 commits. > Many of the commit messages aren't up to scratch (they pass the commit > hook but don't match the requirements outlined in CONTRIBUTE). I'm > going to have to spend some time fixing the rest of the commits. I > wanted to ask whether we should consider squashing all 316 commits into > a "cedet-merge" commit since the changes are going to be documented in > the ChangeLog. There seems to be a misunderstanding here: The ChangeLog is generated from the commit log and not written separately anymore. I don't think it makes sense to fix up all the commits messages. The commits you've merged go back to the beginning of CEDET, and I don't think there's any sense it writing proper ChangeLogs for them now. They are only tests, after all. However, it is very good that we have the history on your branch, because it makes it much easier to check if all authors have signed papers (last I asked, authors of non-trivial tests were also required to have papers signed with the FSF). In my opinion, once we have decided which tests to keep and fixed them, we should squash them and commit it as a new test suite. > Finally; the tests don't run with the CEDET in Emacs. That's totally expected. I'll take a look at them. -David From MAILER-DAEMON Fri Jan 27 17:06:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXEfZ-0006oA-SH for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 17:06:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXEfY-0006k1-9z for Emacs-devel@gnu.org; Fri, 27 Jan 2017 17:06:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXEfT-0002gt-C2 for Emacs-devel@gnu.org; Fri, 27 Jan 2017 17:06:56 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:44840) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXEfT-0002gg-5t for Emacs-devel@gnu.org; Fri, 27 Jan 2017 17:06:51 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 93E5C16006A; Fri, 27 Jan 2017 14:06:47 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id VR1qHIU1NIwu; Fri, 27 Jan 2017 14:06:46 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E4B801600B9; Fri, 27 Jan 2017 14:06:46 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id ggD6eyEalFhE; Fri, 27 Jan 2017 14:06:46 -0800 (PST) Received: from [192.168.1.9] (unknown [47.153.188.248]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 9EE9316006A; Fri, 27 Jan 2017 14:06:46 -0800 (PST) Subject: Re: [PATCH] Make purecopy create hash tables properly To: Vibhav Pant , Emacs Development References: From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <5acadd78-ac09-9510-93a7-9811d3c803a8@cs.ucla.edu> Date: Fri, 27 Jan 2017 14:06:46 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 22:06:57 -0000 Thanks for the patch. It looks like the right thing to do. Could you plea= se fix=20 it up on the following minor ways? * Use GNU style for C code: space between function and paren, braces nest= ed GNU=20 style, etc. Look in neighboring code for examples. * Rewrite make_pure_hash_table so that it uses a loop rather than recursi= on,=20 when it follows the next_weak link. * Create a proper ChangeLog-style commit message. * Send bug-gnu-emacs email containing the patch in 'git format-patch' for= mat,=20 e.g., by using the command 'git send-email'. Please see the "Commit messa= ges"=20 section in CONTRIBUTE for details about the commit message style. Thanks again. From MAILER-DAEMON Fri Jan 27 17:21:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXEtj-0003XW-Vf for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 17:21:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXEti-0003XI-AC for emacs-devel@gnu.org; Fri, 27 Jan 2017 17:21:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXEth-0006si-Jj for emacs-devel@gnu.org; Fri, 27 Jan 2017 17:21:34 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33374) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXEth-0006se-FL for emacs-devel@gnu.org; Fri, 27 Jan 2017 17:21:33 -0500 Received: by mail-qk0-x241.google.com with SMTP id 11so10884705qkl.0 for ; Fri, 27 Jan 2017 14:21:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=cbdSGlE1ear4166g6ivZO6IuMtHRGz2booZFowg4itQ=; b=HqMX312jxa+qqqJxiJqSrSiqKFLB1VsbBg9SPdiBZw9Drh20xoX/C+L5R90ghTSc/1 RKo8ySu8YSWN9+dRzDPNYap+meZxMSo/QaSTDLVTXcKulI7JGog468VhhYQvklTLxYiu cr232U8oocYwj9ygmjA+b7+ymfgDCcZY8eJJKR5mhdXjQ8TpaNacH8/vuS8LD4gxa9Y+ gIyAAYYfK7cTA7S12BbWII1QEiYb7XjWhQW6X25oihb3R4PIRpFJ8u6+Vf8+wylBBsr9 42EsoV2rIGleXoS/j5HrbI4QoqONQCSXk/HEzxvWU7bqzHP5NPvttdUQWP7ksy/Y6NAx z1sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=cbdSGlE1ear4166g6ivZO6IuMtHRGz2booZFowg4itQ=; b=IokJBybXiRb4w5yyKkGuGPY+PxUF/KIBuGqkZ9mi9qqbGu7iwvYePcFWY30KT42eNX LanQL4RkTDbP4OT6/j4FoKpCeo12jM+dA+LGp2Y9X3du5SjTVzB71m7WLDS4cmc5RA0C C91FvZPYwlMvSXpI2P7wsOShLiJ3I8yODO7UYwss0oAeRSthEuLj6kFvLyGMRzYZOp0g fYWY8c5gsCA61BP9Car0glboaKMfU1bdZtgasDuXeZlasjrJOjXUM/jpoQEemkLcFk+L cwzoVqi7xjzJPHbPfpllizlW8Louo9zn7Azpa//eG6vfOpEYp7Kq6UusGyJaGYUviX63 9BVg== X-Gm-Message-State: AIkVDXLZAbMZY19IBKZd3GUe9xHtXi7lTMD8vmFQClYLSQbX9TzM40+oH45yMss4tugxgA== X-Received: by 10.55.22.97 with SMTP id g94mr10072644qkh.287.1485555693001; Fri, 27 Jan 2017 14:21:33 -0800 (PST) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id k18sm5250003qtc.12.2017.01.27.14.21.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 14:21:32 -0800 (PST) Subject: Re: [PATCH] checking eww download directory To: Mark Oteiza References: <87wpdgmi84.fsf@udel.edu> <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> <87mvecntq1.fsf@udel.edu> Cc: emacs-devel@gnu.org From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <6e689886-7171-ca8b-33d7-0cf5fb7804d3@gmail.com> Date: Fri, 27 Jan 2017 17:21:30 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <87mvecntq1.fsf@udel.edu> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 22:21:35 -0000 On 2017-01-27 15:17, Mark Oteiza wrote: > Anyways, these aren't difficult to implement. If it would be a welcome > addition I'd have a go at writing it. I think that would be very nice :) From MAILER-DAEMON Fri Jan 27 18:10:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXFfN-0000kh-7T for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 18:10:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50712) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXFfL-0000kY-6g for emacs-devel@gnu.org; Fri, 27 Jan 2017 18:10:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXFfI-0004cZ-2j for emacs-devel@gnu.org; Fri, 27 Jan 2017 18:10:47 -0500 Received: from [195.159.176.226] (port=39686 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXFfH-0004cL-S0 for emacs-devel@gnu.org; Fri, 27 Jan 2017 18:10:43 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXFf9-0000N9-Ne for emacs-devel@gnu.org; Sat, 28 Jan 2017 00:10:35 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: [PATCH] Make purecopy create hash tables properly Date: Fri, 27 Jan 2017 18:10:24 -0500 Lines: 51 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:piGGGc4WknDMZp5lbxe4A3U87GU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 23:10:48 -0000 > - else if (COMPILEDP (obj) || VECTORP (obj) || HASH_TABLE_P (obj)) > + else if (HASH_TABLE_P (obj)) { > + struct Lisp_Hash_Table *h = make_pure_hash_table(XHASH_TABLE(obj)); > + XSET_HASH_TABLE(obj, h); > + } > + else if (COMPILEDP (obj) || VECTORP (obj)) > { > struct Lisp_Vector *objp = XVECTOR (obj); > ptrdiff_t nbytes = vector_nbytes (objp); Oh, indeed, I see what was the problem: We relied on the generic vector-copy code for the hash-tables, whereas those do not only contain Lisp_Object fields (and they also contain some Lisp_Object fields which are beyond the part copied by the generic code). So another way to fix the code would something like the patch below (100% untested). Whichever option you take, please pay attention to `next_weak` because in your patch, you'll end up purecopying some of the other weak hash-tables but you won't register this one as a weak hash table, so it will lead to serious problems. Stefan diff --git a/src/alloc.c b/src/alloc.c index 1a6d4e2d56..c15bbf3a2f 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5519,6 +5519,18 @@ purecopy (Lisp_Object obj) memcpy (vec, objp, nbytes); for (i = 0; i < size; i++) vec->contents[i] = purecopy (vec->contents[i]); + if (HASH_TABLE_P (obj)) + { + struct Lisp_Hash_Table *old = (struct Lisp_Hash_Table *) objp; + struct Lisp_Hash_Table *new = (struct Lisp_Hash_Table *) vec; + new->count = new->count; + new->key_and_value = purecopy (old->key_and_value); + new->test = old->test; + new->next_weak = old->next_weak + if (!NILP (old->weak)) + /* Insert ourselves in the list of weak hash tables. */ + old->next_weak = new; + } XSETVECTOR (obj, vec); } else if (SYMBOLP (obj)) From MAILER-DAEMON Fri Jan 27 20:14:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXHag-0002aP-Rx for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 20:14:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXHae-0002a8-B8 for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:14:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXHaZ-0001hX-CC for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:14:04 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36512) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXHaZ-0001h4-8D for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:13:59 -0500 Received: by mail-qk0-x242.google.com with SMTP id i34so8674151qkh.3 for ; Fri, 27 Jan 2017 17:13:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=4FT77ecx+vvKhQSLNu/SiLXBnlmTdZ+7RqdByAI9QUY=; b=oyRHrg5PFW2x5Zf4xiNs9nJ9zk5F3tCHGEty5oJM3LlEMiXifWd0EJ2SEYqIP+aPkw xXEl8SizQdCROV1XF7atnG9Zkp0nHu3I0gCUMjdg428vzKuvxJtENXBNw8qOCnbbX3ON A8zUxhsEaHa9ouUB2RNnGvTohJI3U9iFnaAbzIFRA+38826BzaUJ40w3Ppc1sNqvpwAc ABGcVGV8g6HJ56TeN6NawEA71sJS6Le7EEPLirQQMZb46CBoO40ftbuQvtjn1l7qmHqh 9yDaOKeAeoyNQGl+rvdeLpuxiDRqeHK/fXY9aW6a/5394rCB1xcvPgNPSfrZ8xaFnalD GkgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=4FT77ecx+vvKhQSLNu/SiLXBnlmTdZ+7RqdByAI9QUY=; b=UO8cU4rxtk4yfxa7EjZlmvEsyoDuO9s2XKJYXcz25pO3iusfStxmii8vQityIoYQgv m+uPRms+PIUseULqxZ3IDpPBRyKHP3Dq/Zyd4625Sfg4OtAhwpCmGXSqQDWDGj/fhBgA 9rwEnziuWfOXUB9co6I2AsSLw7PUGxIfZQ65v8h0HU84tKQWYfXM/AoL9PuU70uAjwmY WWY00eM9d2xsnRxWQ7JbqXOW/ZvsUXjSpQBHH4E9eJR6esnpotvJKo20HmlTM4+haBNb XVRrklryjcfgjBkdS1aT3rKhxK3O7xYfU2ZLWOT8teYQEfQ3LdNDv18PW9y5UWaw/DKg uu/A== X-Gm-Message-State: AIkVDXLIo+RehSFMQbykEMaiLr4vIZpbWKLNlQrU9MgSkSqr4BlYs4zr29uRW017ZC4x5w== X-Received: by 10.55.120.3 with SMTP id t3mr10937741qkc.0.1485566038639; Fri, 27 Jan 2017 17:13:58 -0800 (PST) Received: from [18.111.113.197] (dhcp-18-111-113-197.dyn.mit.edu. [18.111.113.197]) by smtp.gmail.com with ESMTPSA id y23sm5566014qtc.38.2017.01.27.17.13.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jan 2017 17:13:58 -0800 (PST) Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: emacs-devel@gnu.org References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <4340ca39-c1ec-4e8b-9d9e-25e1431e88b4@gmail.com> Date: Fri, 27 Jan 2017 20:13:57 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 01:14:05 -0000 On 2016-11-06 14:03, Philipp Stephani wrote: > ERT should not have to install a debugger to do its job. Rather, > condition-case[...] should get direct access to the backtrace > (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24617). That would be wonderful. From MAILER-DAEMON Fri Jan 27 21:00:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXIJ6-0005Is-Jz for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 21:00:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41340) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXIJ4-0005Ik-KC for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:59:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXIJ3-0006NY-UO for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:59:58 -0500 Received: from mail-oi0-x231.google.com ([2607:f8b0:4003:c06::231]:35812) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXIJ3-0006Mr-Og for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:59:57 -0500 Received: by mail-oi0-x231.google.com with SMTP id j15so167440160oih.2 for ; Fri, 27 Jan 2017 17:59:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=aYW+A9LeZywSmpIcQ+h2Nf2cffY3K8QxHK6mjHR/mY8=; b=WofvjbG3+34L4GfDU19HZE5E8/jj3DQo5WlBOsKMWHEdY+T4zBInBe4tEsxpgFG/hy vwNLQgSf9q7UlvmblnaB1ELpT06S6fMC54TSaHFm/mshFdNCxf/y8+NIOV1w5RakTD0F ct7WbtDE0N/hvFoa4jOvsHApp+TVI02oSUQAVzXpax19w1pdzY5Bdt7rLAoC+cMvqV0H +e0wBLp0OO9wNOzOm3p5kW2LXO+U2pNK3pCvoxs5KLnt9ukAjdUpBRRfhnfool7mYWpo RUDnkaOhEJwhBFs9/hvcriJIi/YL9/k+dLI6NuKzqr2Gvs8Pl9hIHEiU1jF0UBAI3sDs 2P4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=aYW+A9LeZywSmpIcQ+h2Nf2cffY3K8QxHK6mjHR/mY8=; b=b+kqegb7ALDgeBcq/d9tP6HIc0nhA4BJU3kmKNhPlc67BrmNwvUWHLayVtsbKGBIwh ha0DKnEH2b+z3aRV8WJFYrgFvhBDAY0UDeeOlSn7fMv4s6ndcrGFqJofm9YBjYPEf/y6 Mtt9bF/NR0wPglCPzkWXD2VRalaJE+pUY59WRZmQqO9cxCLkPzwQW6jbYVSRJbFOI3HJ tJYZfUhBnkhR5seGk9I+vnMNi9wSkc1EEtgPpcnQRPahFIS7oRsLnno1oUTpOsIDvGA5 LTUh5fHxUUKcf9p42+6QeH2qB+uNO8o3e2Y6yejm4FyvCSlhFugtbDNWvpF6IiI8KIjx TMzQ== X-Gm-Message-State: AIkVDXLxnbIpo925HEoKi1N1jtp7fUjrGlKxeUFM24W51dnRCVEhiK0rgVNPT6ELDv1NvBVnb6tZCwxpUrgDNA== X-Received: by 10.202.4.84 with SMTP id 81mr6061348oie.127.1485568796949; Fri, 27 Jan 2017 17:59:56 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Fri, 27 Jan 2017 17:59:56 -0800 (PST) In-Reply-To: <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> From: Noam Postavsky Date: Fri, 27 Jan 2017 20:59:56 -0500 X-Google-Sender-Auth: 28bc-0babTdJfnAuApWHoRoEBEs Message-ID: Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Cc: Stefan Monnier , Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 01:59:59 -0000 On Fri, Jan 27, 2017 at 8:16 PM, Cl=C3=A9ment Pit--Claudel wrote: > On 2016-11-08 19:55, Noam Postavsky wrote: >> [...] Meanwhile, I've pushed the (funcall debugger...) solution to >> emacs-25 since that is less of a change vs 25.1 than what's there >> currently. > > Hi Noam and Stefan, > > Given the current implementation, how does one catch a failed assertion i= n a condition-case block (when debug-on-error is true)? If there is no eas= y way, could we add a defvar to make this behavior of cl-assertion-failed (= calling the debugger directly) optional? I guess let-binding `debugger' to a function which performs the logging should do the trick? > > (The broader context is that I'm trying to log all errors produced by an = Emacs server that doesn't have a terminal to write to, and I can't easily c= atch failed assertions.) > > Thanks! > Cl=C3=A9ment. > From MAILER-DAEMON Fri Jan 27 21:16:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXIYk-0000rF-GL for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 21:16:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42882) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXIYh-0000qj-6F for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:16:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXIYg-0001pw-2M for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:16:07 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58124) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXIYf-0001pq-V1 for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:16:05 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cXIYf-00017w-CO; Fri, 27 Jan 2017 21:16:05 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: emacs-devel@gnu.org Subject: Change in files.el Reply-to: rms@gnu.org Message-Id: Date: Fri, 27 Jan 2017 21:16:05 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 02:16:08 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Would someone please install this for me so that I don't have to struggle with git? log entry Allow a default predicate for save-some-buffers. * files.el (save-some-buffers-default-predicate): New defcustom. (save-some-buffers): Use that predicate when nil specified. NEWS: ** `save-some-buffers' now uses `save-some-buffers-default-predicate' to decide which buffers to ask about, PRED is nil. diff -u /home/rms/emacs-git/build-dec-29/lisp/files.el.\~1\~ /home/rms/emacs-git/build-dec-29/lisp/files.el --- /home/rms/emacs-git/build-dec-29/lisp/files.el.~1~ 2016-12-29 05:00:58.335998032 -0500 +++ /home/rms/emacs-git/build-dec-29/lisp/files.el 2017-01-27 09:29:16.747005021 -0500 @@ -5132,6 +5132,13 @@ "Non-nil means `save-some-buffers' should save this buffer without asking.") (make-variable-buffer-local 'buffer-save-without-query) +(defcustom save-some-buffers-default-predicate nil + "Default predicate for `save-some-buffers'. +This allows you to stop `save-some-buffers' from asking +about certain files that you'd usually rather not save." + :group 'auto-save + :type 'function) + (defun save-some-buffers (&optional arg pred) "Save some modified file-visiting buffers. Asks user about each one. You can answer `y' to save, `n' not to save, `C-r' to look at the @@ -5147,10 +5154,13 @@ If PRED is t, then certain non-file buffers will also be considered. If PRED is a zero-argument function, it indicates for each buffer whether to consider it or not when called with that buffer current. +PRED defaults to the value of `save-some-buffers-default-predicate'. See `save-some-buffers-action-alist' if you want to change the additional actions you can take on files." (interactive "P") + (unless pred + (setq pred save-some-buffers-default-predicate)) (save-window-excursion (let* (queried autosaved-buffers files-done abbrevs-done) @@ -6810,6 +6820,8 @@ Runs the members of `kill-emacs-query-functions' in turn and stops if any returns nil. If `confirm-kill-emacs' is non-nil, calls it." (interactive "P") + ;; Don't use save-some-buffers-default-predicate, because we want + ;; to ask about all the buffers before killing Emacs. (save-some-buffers arg t) (let ((confirm confirm-kill-emacs)) (and Diff finished. Fri Jan 27 09:29:25 2017 -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Fri Jan 27 21:18:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXIaq-0002Su-S6 for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 21:18:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXIao-0002Sm-Lc for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:18:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXIan-0003fC-QO for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:18:18 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58271) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXIan-0003f6-Mt for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:18:17 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cXIan-0001bf-72; Fri, 27 Jan 2017 21:18:17 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: emacs-devel@gnu.org In-reply-to: <87k29gsgam.fsf@lifelogs.com> (message from Ted Zlatanov on Fri, 27 Jan 2017 09:56:01 -0500) Subject: Re: official Emacs Docker image Reply-to: rms@gnu.org References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> Message-Id: Date: Fri, 27 Jan 2017 21:18:17 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 02:18:19 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > After talking to RMS, I created https://hub.docker.com/u/fsfemacs and am > currently the owner of the organization. The image, when ready, will be > "fsfemacs/emacs". I named it that way to emphasize the FSF organization, > rather than "gnuemacs" which would emphasize the GNU project. For this activity it is more correct to emphasize GNU rather than the FSF. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Fri Jan 27 21:46:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXJ2E-0002NJ-Kj for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 21:46:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49355) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXJ2C-0002IA-OW for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:46:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXJ27-0002Qd-SG for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:46:36 -0500 Received: from [195.159.176.226] (port=58410 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXJ27-0002QX-Lv for emacs-devel@gnu.org; Fri, 27 Jan 2017 21:46:31 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXJ1v-0001sS-4R for emacs-devel@gnu.org; Sat, 28 Jan 2017 03:46:19 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Change in files.el Date: Fri, 27 Jan 2017 21:46:06 -0500 Lines: 11 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:QcgUatlIhishTE89SbAsP9AG9w8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 02:46:37 -0000 > +(defcustom save-some-buffers-default-predicate nil > + "Default predicate for `save-some-buffers'. > +This allows you to stop `save-some-buffers' from asking > +about certain files that you'd usually rather not save." Please make it so that the var *always* has a function value. I.e. the default should not be nil but should be the actual default predicate. Stefan From MAILER-DAEMON Fri Jan 27 22:46:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXJy8-0000kw-5s for mharc-emacs-devel@gnu.org; Fri, 27 Jan 2017 22:46:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55178) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXJy5-0000kp-V8 for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:46:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXJy5-00027A-9A for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:46:25 -0500 Received: from mail-oi0-x234.google.com ([2607:f8b0:4003:c06::234]:35294) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXJy5-00026z-4B for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:46:25 -0500 Received: by mail-oi0-x234.google.com with SMTP id j15so168221378oih.2 for ; Fri, 27 Jan 2017 19:46:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=L8TLe3yDTZikmzTKCC1Hig6t6HnfL7QMWHqFnU6+jmg=; b=kiozwxTvEGpuvheany0IrkOUGxmXnRSUDFqvzNbr5X5Dnn+gzG/8LJwBp+0Q5Ihttq gn7adFWsJrWdJTVOtOgmxgzuKMSvW9c7ARtMQAwemz/lg165C+RkGsF5NBvgIXw8w9O4 ZDbJ6+hwoDBFvqhosVB5ku8RzAYDFoKWdlltldu+Rg6sQDtF2efJaCtyxr1auOcRkG8Y ga0K/0pd74K8ZhJL5WCsOakp2seKhMhdrfcYE39Ux8SeD1QgFdpWSKdosldbfKGaOJ4M 2UWQ3ELWp7gc8UTBffBDsOA8eRCd13F5EODtK7ZR0JdEbUH4YRzxzwncwRt6ud11ue+L 45Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=L8TLe3yDTZikmzTKCC1Hig6t6HnfL7QMWHqFnU6+jmg=; b=jJyWUAxKh4M8tEiHVYSsnC22+9SBBqeYeRBptloRuiSja/ZY5Fm0a+FdlvbQGLC65n 6EHnKL0yNYwIkK9lgEhA6waqiqh+aMAskCRxYz5hGbj61VvY9HpbTDzYnQJfAQZb1Hpw m9PZNsnO1SyqQ/YVRnu127HhWPOyd8iPnI+t7RuNiZGEcBO9zeccYYfbvFZuAdYPVyBv vqsucKH0S+bIJ0KcAgQFf/OuLIG2RDvvPtNSdL6oJuoX8qzV6pirtFeEFu0exBgdf3Vj yZaOlAuv/Zb6ximZu3wfO9E+vSySXpWV6N2/7LmeLx1m4y/J1hyaCOTxmpMuiKQ7qxQX 7zYQ== X-Gm-Message-State: AIkVDXI2lNhcw26KAot2OSEjq7DSLhnB3QxKuGFaOaymNv0Y8beMmZXtvPLL4LC6a1Rpauul7nobDM4jfvp86w== X-Received: by 10.202.172.136 with SMTP id v130mr6928700oie.167.1485575182901; Fri, 27 Jan 2017 19:46:22 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Fri, 27 Jan 2017 19:46:22 -0800 (PST) In-Reply-To: <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> From: Noam Postavsky Date: Fri, 27 Jan 2017 22:46:22 -0500 X-Google-Sender-Auth: feOaxQeM2Sy1duR3SQGRNTv_8mk Message-ID: Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Cc: Stefan Monnier , Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 03:46:26 -0000 On Fri, Jan 27, 2017 at 10:30 PM, Cl=C3=A9ment Pit--Claudel wrote: > On 2017-01-27 20:59, Noam Postavsky wrote: >> I guess let-binding `debugger' to a function which performs the >> logging should do the trick? > > I already do that, in fact, and I do re-throw the exception from there. = Looks like things didn't work because of the way `debugger' is called in `c= l--assertion-failed'. Is that call correct? The argument in (funcall debu= gger `(cl-assertion-failed ,form ,string ,@sargs)) doesn't seem to match th= e docs: > > If due to error, args are =E2=80=98error=E2=80=99 and a list of the a= rgs to =E2=80=98signal=E2=80=99. > > Is the call just missing an 'error argument? > Oh yeah, I guess it is. From MAILER-DAEMON Sat Jan 28 00:02:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXL9c-0007B7-SU for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 00:02:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37396) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXHdi-00048C-Ro for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:17:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXHdd-0002Wv-St for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:17:14 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:59360) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXHdd-0002V8-HO for emacs-devel@gnu.org; Fri, 27 Jan 2017 20:17:09 -0500 Received: from [18.111.113.197] ([18.111.113.197]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.184]) with ESMTPSA (Nemesis) id 0Lp7GG-1c3R4A2w7A-00esXu; Sat, 28 Jan 2017 02:16:50 +0100 Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: Noam Postavsky , Stefan Monnier References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> Cc: Emacs developers From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> Date: Fri, 27 Jan 2017 20:16:42 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="2dS9u41ug75gj9LH0USUkhj6Gxs1rms6b" X-Provags-ID: V03:K0:o2+xX8mDN4BYV6MYQ7xO7vStwYkk9CUXaNpVK4i3RigbW100UZm mIrnNOVyf8iWzBOVn+KErBItAVyeXQyoRlPHf+IQOVe2zVr3IHt2rxN/0SUHWSdm00BLgYc HzyHsIJGCypZ8mB59fkpTlpvPuLYwo/UV6+pKjHDu7U1VFFr0/7vVjjmT6vyAC5UJZ3e52G 2khlNCxbkRYHyynx3Bzbw== X-UI-Out-Filterresults: notjunk:1;V01:K0:ddsL1o6rFXg=:BsTWYawfZbrA9buHTSosEE K6vo2vmJDEk9WA0VxRM/Zf7dQU6ylLy2hPnUIocGSV/hEtZInWtNm8TVOkii8FIxWe0JsFqP+ 9nJ8GmpQD2nztwGyLDXlDCR0XQlPYjL0P2+7ITxTaKGlv6YotrqW5aVzlYTJYJSvoFDYT/lFQ ob5XFO0aue/y0DToSKnajgw1DqhRA/J6QNzQT1sdXQUT4BKIOEJceuyc3HztDPzfbJ7fU3VQR EPaDsVQzM9XpzzXQNwJOdws51Ixc7Ky4JZOVJ4Cdvj2Vikq1W6uPf8mM8OxYR0vJvzPX8HlA6 HfxRDb+5JHMFNvsY7uENTG5ix7b5BBFoaEy05+adj6jKV/Pc8cvWw+0asknWnFVqmdn5dSyme 7W5uKlPCjvhtSmDAeh64GBtfsLSCQSF3qCIb9UAKs4i+3qJJsMAhG8Cih3VjTsEdxQd+qtqV2 Hckmi72z5MUT2Z1YAoGeWXrmT3J/lnW0ux+N3KQh/yoB1zCiJuMFvoIiOG0SfYuzjPAbem/V9 vBSJ/s5UAGF+s3Ecz6tIRahqAV7FrUQPT3LE9/sJlL6TmVoMWpUyD5W4HH75v/yDT15UjjdE9 kjOQqhi6Y8NH3avWEPhleYNdnNT7qxxSgDARie1ez1ddAlzzsbHn7K25Iz6zPuhX8uEMv1/97 WKu8DCFekjqiqf1O5N41L0Rz3JgvNsk2vN8qkRkZu0mpHcj4Rilwgx+yT7RmPq637veY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.24 X-Mailman-Approved-At: Sat, 28 Jan 2017 00:02:23 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 01:17:17 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --2dS9u41ug75gj9LH0USUkhj6Gxs1rms6b Content-Type: multipart/mixed; boundary="TSjURpbOjbacfB4QM0M2i2m6ECP3gFbJF"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Noam Postavsky , Stefan Monnier Cc: Emacs developers Message-ID: <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> In-Reply-To: --TSjURpbOjbacfB4QM0M2i2m6ECP3gFbJF Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2016-11-08 19:55, Noam Postavsky wrote: > [...] Meanwhile, I've pushed the (funcall debugger...) solution to=20 > emacs-25 since that is less of a change vs 25.1 than what's there=20 > currently. Hi Noam and Stefan, Given the current implementation, how does one catch a failed assertion i= n a condition-case block (when debug-on-error is true)? If there is no e= asy way, could we add a defvar to make this behavior of cl-assertion-fail= ed (calling the debugger directly) optional? (The broader context is that I'm trying to log all errors produced by an = Emacs server that doesn't have a terminal to write to, and I can't easily= catch failed assertions.) Thanks! Cl=C3=A9ment. --TSjURpbOjbacfB4QM0M2i2m6ECP3gFbJF-- --2dS9u41ug75gj9LH0USUkhj6Gxs1rms6b 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 iQIcBAEBCAAGBQJYi/D6AAoJEPqg+cTm90wjYSoP/RG5iFUz4ifOLu9uSR+saIk0 7NPbRWnFwfyAxKy/UVsfgQLBxAKJTTJ5x3OtqaSESv5P+7d60oz6y2hi040ISCgp PcrcCVc36oTl7BNV65hHOWDefBzBzOROaMqPtAqy9wfqGoRGN1FcugfgJy3YWm9d wQIX2c0ZgY25RIIfidtPg41a08QNRxzZbDx6y0JG66d27SzAnBZoPgqGp01FPq05 1YpirWSpOiGeFEt8XmrD1KtJbJxW9EGhCeYLMmdCOF+NzJmUxNFWY1iTcS7lpx8b D8nk1q+UQfjoqieaSPDMcW/rJ65n2aD0tcpyBjC6bucqJoO3ywBWaaeHcK+O/lus Ac8td+/RBKFRQsR6mWbY7dqI6HJlwzUwb860c4CX6eNbb4nDWENkBEr79hxQeYFT p2rth2dKiDvizd1+90K1CSg6uMphQ6qg5MrUe5+vq1vTnLtmYBd6hurTyZN7kfXl 3qYMNrja0QhlH+xLi0EAeLzMyfGSINPxdh43hQATlNltBzFoDDa+LWiGsKFbKFTe /HtkvDxmBLRokrqZfuC3xKRbp+B6RybxaIkebtwKcgXS+m2aDiCX2xJ8o4T7l1C+ iteAkFw0qNhiO8FQ297S+oIh/CpxvHRs5kKRQ/s/IU+erFLnoMfqx7rOCK/+7M3v PB11M96dGop+RiM9waVd =tjpr -----END PGP SIGNATURE----- --2dS9u41ug75gj9LH0USUkhj6Gxs1rms6b-- From MAILER-DAEMON Sat Jan 28 00:02:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXL9e-0007Bt-1J for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 00:02:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXJjS-0005Kl-8j for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:31:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXJjP-0006Zk-1j for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:31:18 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:51797) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXJjO-0006Zc-Mj for emacs-devel@gnu.org; Fri, 27 Jan 2017 22:31:14 -0500 Received: from [18.111.113.197] ([18.111.113.197]) by mrelayeu.kundenserver.de (mreue005 [212.227.15.168]) with ESMTPSA (Nemesis) id 0MAAfN-1ceEfW0yDJ-00BKR1; Sat, 28 Jan 2017 04:30:55 +0100 Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: Noam Postavsky References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> Cc: Stefan Monnier , Emacs developers From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> Date: Fri, 27 Jan 2017 22:30:46 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="pHLbKOUeu458a7HFSVe6XqWX30fxRV9nq" X-Provags-ID: V03:K0:AxF/cXHvjBQmBIaQKj9xJgIP116dgxCAyJRCDu1H1HE3n6J/6Nf HgDXqkZ9I6rgjdmjwFhBdUGebvSSUt9XQe1IVjeJwJLUvoDHNGiAVcimL22aVbyrhizv+/7 dWkOV9k1yqNrl4TTcyX6SCifNA8yxqt8LcoG6uI16F37Ni4guBO2MPny5nBkmwLOIqUfIaF GWtEQWSBDkqopvXY4T8UQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:GMSdFKPZ0uA=:Th5iF1rSqyip6tG69lPlRC Pwuulg1kYShLlpOnoROtq6Z5/oTQW05dj9m2FjweAtt0Hsz6rBfvFvFRLgPEcClC85SxFlizK DbGMTzfYg/WNyfYXdh0ZN23RnBpjUd1vGJKfrhPZxJX98jtJM0LmwRL9jFFvacG9npWU0GNiG K8H/Ke3iNl7vBpD0M+HmNsaEbe6aqdAs6u74pOMhp88lIKZVXZADKkcum6FIuhHqQ4SKbxa8H Zs+u18Lza0aLAlQhHoBTbyx3v1TwqWdxcSqOGyEGDIQdYb23b5mb98YjeZajcuOLA+6JYnALm bOep59BT6eamrqpFRcTloVgBe/d/qgPOzf43z/6Mpiq2sifpHVSIphQEw82xU01rDoOOJyHrw 9y5VVjT9Sz8e4lAeMvCTp1qd+a1dAPFPapNP96MFWswgDRvd8qYG/oaEl8hZLXA+gkfGZcUiA r9KsHbIXZsf8DheZuPJ1iRjfdb58crTG1LesuE8TstkgnQXGRXJG1iqIqb9V389ddlyDzh5H4 ohmy96ix7iDuJq+ILKFAFhMmm7pZzUddSCW2dPW7LGFyZ0AyjC6V6+i5K0Ycnsd2Up1hqWlYZ GsLmWf1glFWBC7DiO5UAq27gevH7KNXu2dwu9deGhptZhcEVSF8mSKgfgRkeNHRdDDikrUgub WHHPlJBD2Jdk777jaVLeBXpv6mLZ/y19czMkDyY3IDY3y9zCdj8BZWBk2yCHx+dXImiY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 X-Mailman-Approved-At: Sat, 28 Jan 2017 00:02:24 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 03:31:19 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --pHLbKOUeu458a7HFSVe6XqWX30fxRV9nq Content-Type: multipart/mixed; boundary="QpW8RexgNDPwAx2NlsFMqBdVGHNSEGcux"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Noam Postavsky Cc: Stefan Monnier , Emacs developers Message-ID: <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> In-Reply-To: --QpW8RexgNDPwAx2NlsFMqBdVGHNSEGcux Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2017-01-27 20:59, Noam Postavsky wrote: > I guess let-binding `debugger' to a function which performs the > logging should do the trick? I already do that, in fact, and I do re-throw the exception from there. = Looks like things didn't work because of the way `debugger' is called in = `cl--assertion-failed'. Is that call correct? The argument in (funcall = debugger `(cl-assertion-failed ,form ,string ,@sargs)) doesn't seem to ma= tch the docs: Documentation: Function to call to invoke debugger. If due to frame exit, args are =E2=80=98exit=E2=80=99 and the value b= eing returned; this function=E2=80=99s value will be returned instead of that. If due to error, args are =E2=80=98error=E2=80=99 and a list of the a= rgs to =E2=80=98signal=E2=80=99. If due to =E2=80=98apply=E2=80=99 or =E2=80=98funcall=E2=80=99 entry,= one arg, =E2=80=98lambda=E2=80=99. If due to =E2=80=98eval=E2=80=99 entry, one arg, t. Is the call just missing an 'error argument? Thanks, Cl=C3=A9ment. --QpW8RexgNDPwAx2NlsFMqBdVGHNSEGcux-- --pHLbKOUeu458a7HFSVe6XqWX30fxRV9nq 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 iQIcBAEBCAAGBQJYjBBmAAoJEPqg+cTm90wjFzQP/jMyMsgmjo1cPMTeUY3vP9NW rPHMIvx3D/Qx99r+A5o/HJnMEfaodgMpJ2EyLIJu1kizM1p3f38ovVptg1fZBpue /rmhKZ/9DNel124bhx6PuvLKZgqSwP3yk2qVIgTTfpUZPp2748P1Ez94D/7BMmK3 1LLuOoZD//KGAAdsIGHfTN5SJNr3Sl45eM5vwonSht4m9Ii0zdlOlCn5dGdMINRv ni877vIHZ1xPwM6eg/OzMOv852prPBBEWX+NShvUdrBdiQaUqJfWrNGhS37vvl7r XBILukDtnqnU++Z4LWNikgzipvPfbGSfV9kcLislavLDpJgqCpksQ+IyCZ1mkrWI tmjtEl/sE6MVY3cS4gh7zR8UhMFBvXdU/X8Thoeatxvjz41zrWNJ+yNNhIbxWEuF zI/PiKsDzpsY57PDIIWFB/BbtG6A5F75yeMLJG5tsrrnkdUP8/Wx+1i9UAc7HqW9 qS7NNEC1QpMSze1Y7IQsozICs0GkeiawW4Sy+0gLRMdhV/w+l0xuKLYtVWkrHMl8 x8PbBcyASB+ufiUKutb6i0L2VW4jqbtVMQGkjK0Slpbe72i/W40IH/RDzP8cTQn2 89ybG9ro3UGlfKIQoYmNakk+LbCriT2nYiiSMMag38LuaMZK3FiK46/rQFS2XoMK tKqMqhGOKTYiDiIYNEqK =YSbF -----END PGP SIGNATURE----- --pHLbKOUeu458a7HFSVe6XqWX30fxRV9nq-- From MAILER-DAEMON Sat Jan 28 02:54:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXNpm-0001KK-Rn for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 02:54:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49668) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXNpk-0001KC-5K for emacs-devel@gnu.org; Sat, 28 Jan 2017 02:54:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXNpg-0000jv-F6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 02:54:04 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33460) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXNpg-0000jq-Bt; Sat, 28 Jan 2017 02:54:00 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1446 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXNpe-0003VQ-Nk; Sat, 28 Jan 2017 02:53:59 -0500 Date: Sat, 28 Jan 2017 09:53:50 +0200 Message-Id: <83r33nzkkx.fsf@gnu.org> From: Eli Zaretskii To: Mark Oteiza CC: cpitclaudel@gmail.com, emacs-devel@gnu.org In-reply-to: <87mvecntq1.fsf@udel.edu> (message from Mark Oteiza on Fri, 27 Jan 2017 15:17:10 -0500) Subject: Re: [PATCH] checking eww download directory Reply-to: Eli Zaretskii References: <87wpdgmi84.fsf@udel.edu> <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> <87mvecntq1.fsf@udel.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 07:54:05 -0000 > From: Mark Oteiza > Date: Fri, 27 Jan 2017 15:17:10 -0500 > Cc: emacs-devel@gnu.org > > > How hard would it be to integrate with the xdg-user-dirs standard > > instead? On many GNU/Linux systems, running "xdg-user-dir DOWNLOAD" is > > enough (http://stackoverflow.com/questions/13161226/). This would > > make eww consistent with Firefox, too (they take the slightly more > > painful route of parsing ~/.config/user-dirs.dirs: > > https://dxr.mozilla.org/mozilla-release/source/xpcom/io/SpecialSystemDirectory.cpp#256) > > An xdg.el would be nice to have for elisp that interfaces > with XDG-following things. mpc.el and image-dired.el are two files that > come to mind: mpd follows [0], image-dired > supports [1]. Actually, it looks like those are the only two files with > XDG bits, and I put them there. How about that. > > Anyways, these aren't difficult to implement. If it would be a welcome > addition I'd have a go at writing it. > > [0] https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html > [1] https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html This has come up before. I think this would be welcome, but one issue that didn't get resolved is how much of that should be automatic (i.e. should Emacs automatically search certain directories for certain kinds of files), and if so, how to split the imaginary xdg.el into two parts, with the automatic part living in some preloaded file (probably files.el). There's also the issue of whether users and/or Lisp programs should be able to disable this search (e.g., by binding some variable). Also, IMO supporting this on Windows will need a new primitive written in C, but that's an aside, and can be omitted in the initial implementation. Thanks. From MAILER-DAEMON Sat Jan 28 03:01:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXNxG-00041W-PU for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 03:01:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXNxE-0003uw-W3 for emacs-devel@gnu.org; Sat, 28 Jan 2017 03:01:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXNxE-0002v8-7E for emacs-devel@gnu.org; Sat, 28 Jan 2017 03:01:49 -0500 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]:33948) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXNxC-0002u3-Pd; Sat, 28 Jan 2017 03:01:46 -0500 Received: by mail-lf0-x244.google.com with SMTP id q89so27557882lfi.1; Sat, 28 Jan 2017 00:01:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=y0wqqrkaMmOeq+CwpHORIP1J92nCEuz+UnskRqakzPk=; b=dJaaXaLnebbRIJ9w5Ob3nUfSCpNdXNX8HjZXOqcxd+NkAwgoMb2FNmhxNi8wWH6xFk g9Ofu9qmTaK1vBau9gkCY5X3czkY/neoBNgGg+bp+nSjtX9PQtPfhJLPl3OoSOAXYRLM gulyujpMc9i94hW6pTtZRHRakEvMrDwkJe/H/ic32j6t4ty6oEHAD7+MF7xuZGhMhYu2 gzfzbfFxRXic9xl1GyAKgZYxl05KCDCQeW0ZQ+T6+/hx7Ho5oYT/pZR9O6LBSDV62vAh F6c43qlQfkdmWF1mjG0HDimiqquvgaXRztajTuyXSfPrARNekvdUd6BbK9SibzNcZqdT jDUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=y0wqqrkaMmOeq+CwpHORIP1J92nCEuz+UnskRqakzPk=; b=K8zHSsJKpQFxj0pa8yF7qG6rYOMJ+E/uvESBx27x5yJeokSOEjId/pyVbycu6Eht+3 l/9KAl8XpFD61IdUI1B2JhtvU/SfSzFeXHE5vrpHWxv5Uart8tuQgMqNpLtN3AAZnY3m I6vGabyoVSBVT7Eb/xvjnAsd70uRiBP3IS7lf/prwJK6IQNT4r5+V3LSRTGycJ+7EQxe 6XkZBf963T9c5Rt9G7k+8HPMtDQKCorlRSXFJn5ATN267c5EBzSG/UyGtPbJW8J/u0Wo InqcPPIZcPUJ07bDVnBucpZdxuj9sb/LMAzrEqlUhe9/uSJvTIr2gH3oWS593Jd+JNp7 Aa7Q== X-Gm-Message-State: AIkVDXIYFP5MejpH+FOmFqd7xGA5bga6L5DD6iPOO4AwFJMqJzepxeXwFtw/3im7njjXdIyc7y3T2mMr5hdfXg== X-Received: by 10.25.156.144 with SMTP id f138mr4270994lfe.80.1485590503619; Sat, 28 Jan 2017 00:01:43 -0800 (PST) MIME-Version: 1.0 Sender: yurivkhan@gmail.com Received: by 10.25.8.212 with HTTP; Sat, 28 Jan 2017 00:01:23 -0800 (PST) In-Reply-To: <83y3xwz2kv.fsf@gnu.org> References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> <20170127194816.GA18966@holos.localdomain> <83y3xwz2kv.fsf@gnu.org> From: Yuri Khan Date: Sat, 28 Jan 2017 15:01:23 +0700 X-Google-Sender-Auth: BYIJdJouBvleOX_iOFjtUXKcsnY Message-ID: Subject: Re: [PATCH] checking eww download directory To: Eli Zaretskii Cc: Mark Oteiza , Lars Magne Ingebrigtsen , Emacs developers Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 08:01:49 -0000 On Sat, Jan 28, 2017 at 3:10 AM, Eli Zaretskii wrote: > The Downloads directory exists on Windows only since Windows 7, it's > not there on older versions. The SHGetKnownFolderPath API function is supported since Vista, though. The politically correct way on Windows would probably be to try to call that with FOLDERID_Downloads, although since Windows 7 Microsoft dropped the dubious practice of localizing directory names on the file system, replacing it with the equally dubious practice of replacing actual directory names with localized strings in the shell UI instead. From MAILER-DAEMON Sat Jan 28 03:54:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXOmA-0003IR-Qx for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 03:54:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXOm5-0003Fc-R8 for emacs-devel@gnu.org; Sat, 28 Jan 2017 03:54:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXOm0-0001WY-Vt for emacs-devel@gnu.org; Sat, 28 Jan 2017 03:54:21 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34406) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXOm0-0001WU-Sk; Sat, 28 Jan 2017 03:54:16 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1477 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXOlz-0005Ni-K8; Sat, 28 Jan 2017 03:54:16 -0500 Date: Sat, 28 Jan 2017 10:54:06 +0200 Message-Id: <83o9yrzhsh.fsf@gnu.org> From: Eli Zaretskii To: Yuri Khan CC: mvoteiza@udel.edu, larsi@gnus.org, emacs-devel@gnu.org In-reply-to: (message from Yuri Khan on Sat, 28 Jan 2017 15:01:23 +0700) Subject: Re: [PATCH] checking eww download directory Reply-to: Eli Zaretskii References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> <20170127194816.GA18966@holos.localdomain> <83y3xwz2kv.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 08:54:25 -0000 > From: Yuri Khan > Date: Sat, 28 Jan 2017 15:01:23 +0700 > Cc: Mark Oteiza , Lars Magne Ingebrigtsen , > Emacs developers > > On Sat, Jan 28, 2017 at 3:10 AM, Eli Zaretskii wrote: > > > The Downloads directory exists on Windows only since Windows 7, it's > > not there on older versions. > > The SHGetKnownFolderPath API function is supported since Vista, > though. I'd prefer using SHGetFolderPath (which Emacs already uses), as its availability is almost universal on the supported versions of the OS. Probably in conjunction with CSIDL_PROFILE. > The politically correct way on Windows would probably be to > try to call that with FOLDERID_Downloads, although since Windows 7 > Microsoft dropped the dubious practice of localizing directory names > on the file system, replacing it with the equally dubious practice of > replacing actual directory names with localized strings in the shell > UI instead. My point was where do you put stuff if Downloads doesn't exist. That is separate from the issue of finding the directory when it does exist. From MAILER-DAEMON Sat Jan 28 04:11:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXP2S-0002WX-OR for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:11:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXP2H-0002Ew-8A for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:11:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXP2D-0007xZ-AB for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:11:05 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34924) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXP2D-0007xV-6e; Sat, 28 Jan 2017 04:11:01 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1638 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXP2C-0004Uj-4P; Sat, 28 Jan 2017 04:11:00 -0500 Date: Sat, 28 Jan 2017 11:10:51 +0200 Message-Id: <83mvebzh0k.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Fri, 27 Jan 2017 21:46:06 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:11:06 -0000 > From: Stefan Monnier > Date: Fri, 27 Jan 2017 21:46:06 -0500 > > > +(defcustom save-some-buffers-default-predicate nil > > + "Default predicate for `save-some-buffers'. > > +This allows you to stop `save-some-buffers' from asking > > +about certain files that you'd usually rather not save." > > Please make it so that the var *always* has a function value. Why is that important? From MAILER-DAEMON Sat Jan 28 04:24:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXPEu-0006um-Gt for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:24:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44269) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPEs-0006uZ-7y for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:24:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXPEp-0005dH-35 for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:24:06 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:35623) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXPEo-0005d0-TJ; Sat, 28 Jan 2017 04:24:03 -0500 Received: by mail-wm0-x241.google.com with SMTP id d140so63940983wmd.2; Sat, 28 Jan 2017 01:24:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=WIKReZzjHJM/QLq+8lJ2DTarKBT8Va+XA91OOOn/OGk=; b=SgyKruQ9KL9jATOAkBVnDECYhmwzTkXgmUSgvIEqVAyObUlaKJ5MN76YFI5tfWzcBQ Wdzi1A2ap6FlJu98T7t0xu82qqBBcBRGRfVckARaS1gjQxY3c2vmKJc4KWLgHXQ78jrs efQWfNuXuH9T2PJLUFbbmoaVQNOIZ6RbbsXBquxB0IKoFqljQ0n1Y4ah1id3y1pwwD7I +K/F3b/oH7pZ1sOud2nmWonx4qD+8g4hCO2WEz1+3+AZIY27qyfeNIjmC4m94PNZhkZO Uzkk3FYHJbEnldJNuILY1kMP86QEt2U4noKq6CBMCAuA+40VDo32YFHkw/P51z4bXtd8 wyzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=WIKReZzjHJM/QLq+8lJ2DTarKBT8Va+XA91OOOn/OGk=; b=eJpMxVInf/EJWDeCq8okVgtNYyXffxZHmLVyEMqLmj/H6OtBU+0dF9sT9V+k+xZ6yZ GbbpnulIo6bKc4eEbXtrJ9VdB6cacL0PhiSDvLNxcPRDDOw6fDI7ArK1eSi262WItk30 b5c85GoJFqam54U66M5GxCAaBQ32WrYs3LddiYqSGE0QoyVQml8x6qmpB8DazhqEQOCT wi8vPcR6iX4X3P3le+X13RtFg59PLrQJwAEa8F8tH1eFUPk62DV27pAygGCppncb9pTI fK3xwjgNILByzMlqxlwcLShm3A2BFEAZ7wC8CSizoaJuAGGfZ5N+CN23xM4zpZswLSfV +t6w== X-Gm-Message-State: AIkVDXK5HH03Rh5wtLhSymQL7FS5gjInWIeMh7XE3COFbU7v09TF8GTeX1aIg1U5poSRiA== X-Received: by 10.223.134.151 with SMTP id 23mr13079494wrx.0.1485595441695; Sat, 28 Jan 2017 01:24:01 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id b87sm7994007wmi.0.2017.01.28.01.23.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 28 Jan 2017 01:24:00 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> <874m0k1age.fsf@engster.org> Date: Sat, 28 Jan 2017 11:23:38 +0200 In-Reply-To: <874m0k1age.fsf@engster.org> (David Engster's message of "Fri, 27 Jan 2017 22:04:17 +0100") Message-ID: <8760kzo7vp.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:24:07 -0000 > There seems to be a misunderstanding here: The ChangeLog is generated > from the commit log and not written separately anymore. Alright. Out of interest: is there a command for generating all of the entries for a commit range? I'm only aware of C-x 4 a (add-change-log-entry-other-window) which seems to generate a change log entry for the current file and only for the latest commit. > I don't think it makes sense to fix up all the commits messages. The > commits you've merged go back to the beginning of CEDET, and I don't > think there's any sense it writing proper ChangeLogs for them now. They > are only tests, after all. However, it is very good that we have the > history on your branch, because it makes it much easier to check if all > authors have signed papers (last I asked, authors of non-trivial tests > were also required to have papers signed with the FSF). > > In my opinion, once we have decided which tests to keep and fixed them, > we should squash them and commit it as a new test suite. Agreed. >> Finally; the tests don't run with the CEDET in Emacs. > > That's totally expected. I'll take a look at them. > > -David I've just made some fixes to the tests this morning (I had messed up the merge of ia-utest.el and missed the whole of the cpproot directory for utests.) With that change the tests run with my current Emacs (which runs the modified CEDET that I created by merging Emacs-CEDET -> CEDET.) To anyone who has pulled my branch, scratch/merge-cedet-tests, I'd just ask that you git pull -f because I rewrote that branches history to correct my mistake. From MAILER-DAEMON Sat Jan 28 04:37:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXPSI-0002Si-Rl for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:37:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46138) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPSG-0002SY-Rq for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:37:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXPSB-00028n-S2 for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:37:56 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:35782) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXPSB-00025o-L6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:37:51 -0500 Received: by mail-wm0-x241.google.com with SMTP id d140so64002648wmd.2 for ; Sat, 28 Jan 2017 01:37:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:to; bh=kNdNAHDGlw7oBxO5J0sdlNITFQp+tNUgIee8+EiIZ+I=; b=mUqVjFFvgVRK6An6u4jIuyHWcJ3XoZkDLVn7IT6JA9D8OsKXKNvgIFmcoP64H5vuF8 bF4BnqIQ+V/XjCgg+JDmRsMHHT9xpHjxjZrS05ZZYeUDLGd/aZVonDnEwbo011WsrCmF 8+iQfOltiQT7aC22Ej6jI0mXp9jkBqjppb3fojwfZgibG50qYNjvJ9rM10utL3ytapAM yVDzFBmSsKIxlaX5q4KgL0j2CHzhniB/OhPfw5bR94qoq5AFHkj4PEgaVBBPqbLFanae Z+Y9t4raFciUn5Mzd8Bcge851oOJ4orwJl51rq9tIlF9SwIjbULbXXyLHg22L3vBXw2e w+sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=kNdNAHDGlw7oBxO5J0sdlNITFQp+tNUgIee8+EiIZ+I=; b=cGdEkXmECS8zur/24UUhMmLVUQGRHE22DhIOH0nBm5BiHePKH7C+iK8KtK1saA2JNH I07hzJVWK7w1aPhE76vV6HtYNOjNnifDgeQ8wdVd+ddCrqXM/V8zYipeY+cYzhYIF4sN cOQy39WJCymLEG3RPEQftTU8CQKpdrvJEBDNZv9ecZra3vkgkQabpZFYSgAEWE4eFjFt L6X1lLUAiCG/+ayU6pEEuTR84wHlyK1O0RGSktPYqgULTV0EBPyDwU3S2h6fai8YmLzs QPNoZQWC61v4uBCX0c9/T1WU7Ns08Nvycrq3DRjWYGSFCpkHcLfJWtx+a0NJUOFYyPlu DuXg== X-Gm-Message-State: AIkVDXJDHeVR7R5xoLHvLvH6ysoIJlDOmBvwRk1ftpwXHYAoxFeSxDFf5AaMzErskpWUpA== X-Received: by 10.223.134.253 with SMTP id 58mr13081854wry.46.1485596268953; Sat, 28 Jan 2017 01:37:48 -0800 (PST) Received: from [192.168.60.140] ([212.50.23.124]) by smtp.gmail.com with ESMTPSA id x25sm12071363wrx.27.2017.01.28.01.37.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 01:37:48 -0800 (PST) From: dptd dptd Content-Type: multipart/alternative; boundary="Apple-Mail=_8B5337C1-2228-4E3D-955F-81E40F02E197" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: mark-whole-buffer and unnecessary (point) call Message-Id: Date: Sat, 28 Jan 2017 11:37:47 +0200 To: emacs-devel@gnu.org X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:37:58 -0000 --Apple-Mail=_8B5337C1-2228-4E3D-955F-81E40F02E197 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hello everyone, This is my first e-mail to the emacs-devel so I hope my question will = not be the stupidest one in this mailing list history. I am an Emacs = newbie but I love it. I am also very interested in the lispy languages = and this is why I am learning elisp - I want to contribute. I am reading = =E2=80=9CAn Introduction to Programming in Emacs Lisp=E2=80=9D and in = the section 4.3.1 Body of mark-whole-buffer there is this text: "I don=E2=80=99t know why the expression in mark-whole-buffer is written = (push-mark (point)) and the expression in beginning-of-buffer is written = (push-mark). Perhaps whoever wrote the code did not know that the = arguments for push-mark are optional and that if push-mark is not passed = an argument, the function auto- matically sets mark at the location of = point by default.=E2=80=9D I have checked the newest source from the git repo and this (point) call = is still there. I removed it, evaluated and checked if the function = still works and yes - it works. Is there any reason why this call is = still there? I was wondering if I could / should remove it and submit my = first change request. However I assume that I do not understand = something here because everyone who have read this introduction knows = about it. Thanks in advance! Best regards, dptd= --Apple-Mail=_8B5337C1-2228-4E3D-955F-81E40F02E197 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Hello everyone,
This is my first e-mail to the = emacs-devel so I hope my question will not be the stupidest one in this = mailing list history. I am an Emacs newbie but I love it. I am also very = interested in the lispy languages and this is why I am learning elisp - = I want to contribute. I am reading =E2=80=9CAn Introduction to = Programming in Emacs Lisp=E2=80=9D and in the section 4.3.1 Body of = mark-whole-buffer there is this text:
"I don=E2=80=99t know why the expression in mark-whole-buffer = is written (push-mark (point)) and the expression in beginning-of-buffer = is written (push-mark). Perhaps whoever wrote the code did not know that = the arguments for push-mark are optional and that if push-mark is not = passed an argument, the function auto- matically sets mark at the = location of point by default.=E2=80=9D

I have checked the newest source from = the git repo and this (point) call is still there. I removed it, = evaluated and checked if the function still works and yes - it works. Is = there any reason why this call is still there? I was wondering if I = could / should remove it and submit my first change request. However I = assume that I do not understand something here because everyone who have = read this introduction knows about it.

Thanks in advance!

Best regards,
dptd
= --Apple-Mail=_8B5337C1-2228-4E3D-955F-81E40F02E197-- From MAILER-DAEMON Sat Jan 28 04:52:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXPgL-0006pB-SL for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:52:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPgG-0006bN-0t for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:52:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXPgC-0001CK-91 for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:52:24 -0500 Received: from mail-ua0-x231.google.com ([2607:f8b0:400c:c08::231]:33699) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXPgC-0001BA-4W for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:52:20 -0500 Received: by mail-ua0-x231.google.com with SMTP id i68so221163787uad.0 for ; Sat, 28 Jan 2017 01:52:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=CF9zFmFMzPy0R8QKuz6Fd50033fTlZw7P/fOgTbItDA=; b=n9C6jDkkgztW3ZxaygN6fewMeGYtR6tyKhr1ESCIafNw9TEX+rO2+32tq/Qt5UzKpK MIBNhWQ8E5Aq0rYfLc2bdFCGDybt8PZwNrhqlIGw7onmsGjC11Z5F2nM2id1YgeYEGcR 5vks9w5f9rkshVSmcHyWiUyA8p1LtsbxUgNwwVtPmjerH6jJTOBr98fwS7fhMKRPW7Ue E7J3euSDL5wvzmG43n276bvIiRr1QGKwZ9Su1VGFtUlViG/JvSJi5GTQz5/aPdmtpbe7 nQuEVdaLTmGzmfPDbBIrDvIFy4gh/GuSeK1k6kQ8WD5Xm5hzR17gAIHOmsnZ+2RwvL35 92VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=CF9zFmFMzPy0R8QKuz6Fd50033fTlZw7P/fOgTbItDA=; b=ZjOuUXiQvbnd1WMAfhimPVJAvUMdLmV1uw8kpWrUhptpnUhfy+fq00b5zvOUVke4iQ rErdcZv4L/9J0kh9q5MU3vDQsuHuSSy9oYV3EbgxHbVN7fv78dkFjPRFU7IYI6aRlcP7 unxCTO3ANFhaPsUNn7P8KJMpaaUGmwgp7KWg757mkiGf02yRgFLQ0kt5l4aGfhSiLssJ tw9LDz97RGHYeEJwp9E4OOMpxdTjp4UvG56Toz4UyfGh85E3smmJHdcYs+uZbEWh0PZQ isJHCIZ12Gw+6wI91+1OZ0ulrggqtw2cvZrImVY/lScNvkc0z7qDHaRlHmGlrU5fkBoB PSOQ== X-Gm-Message-State: AIkVDXJLKxbtv1bHCIniou/Xr15chyOomB2NVR7EUg0CKXS3iFzDSpGfN03YAX0JO8/r7Gh+/mTO3h4omVcdQw== X-Received: by 10.176.76.68 with SMTP id d4mr6528827uag.105.1485597138062; Sat, 28 Jan 2017 01:52:18 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.131.215 with HTTP; Sat, 28 Jan 2017 01:52:14 -0800 (PST) Received: by 10.103.131.215 with HTTP; Sat, 28 Jan 2017 01:52:14 -0800 (PST) In-Reply-To: <87vat4ns0t.fsf@gnus.org> References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <4dc615e7-ec73-60a5-426e-0d6986f15d76@yandex.ru> <0cb406fb-ffc4-a4ad-557a-2cacc99b8e75@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> <83k29o5rvj.fsf@gnu.org> <877f5obckp.fsf@gnus.org> <87vat4ns0t.fsf@gnus.org> From: =?UTF-8?Q?Elias_M=C3=A5rtenson?= Date: Sat, 28 Jan 2017 17:52:14 +0800 Message-ID: Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el To: Lars Magne Ingebrigtsen Cc: emacs-devel , Stefan Monnier Content-Type: multipart/alternative; boundary=f40304361ce8b193af05472489ea X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:52:28 -0000 --f40304361ce8b193af05472489ea Content-Type: text/plain; charset=UTF-8 Who is allowed to vote? I consider with-url to be less than ideal and not very clear. with-url-contents is a lot better. Regards, Elias On 25 Jan 2017 4:06 AM, "Lars Ingebrigtsen" wrote: Stefan Monnier writes: >> Perhaps we could have a vote. The contenders are `with-url', >> `with-fetched-url', `with-url-contents' and >> `with-contents-in-a-buffer-fetched-from-somewhere- specified-by-the-following-url'. > > I vote against with-url and > with-contents-in-a-buffer-fetched-from-somewhere- specified-by-the-following-url. > The other two seem fine, OK, then we have 1 vote for `with-url', 1.5 votes for `with-fetched-url' and `with-url-contents' each, and zero for `with-contents-in-a-buffer-fetched-from-somewhere- specified-by-the-following-url'. The competition is heating up! -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no --f40304361ce8b193af05472489ea Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Who is allowed to vote? I consider with-url to be less th= an ideal and not very clear. with-url-contents is a lot better.=C2=A0

Regards,=C2=A0
Elias=C2=A0


On 25 Jan 2017 4:06 AM, "Lars Ingebrigtsen" &= lt;larsi@gnus.org> wrote:
Stefan= Monnier <monnier@iro.umontr= eal.ca> writes:

>> Perhaps we could have a vote.=C2=A0 The contenders are `with-url&#= 39;,
>> `with-fetched-url', `with-url-contents' and
>> `with-contents-in-a-buffer-fetched-from-somewhere-specif= ied-by-the-following-url'.
>
> I vote against with-url and
> with-contents-in-a-buffer-fetched-from-somewhere-specified-b= y-the-following-url.
> The other two seem fine,

OK, then we have 1 vote for `with-url', 1.5 votes for `with-fetch= ed-url'
and `with-url-contents' each, and zero for
`with-contents-in-a-buffer-fetched-from-somewhere-specified-by-th= e-following-url'.

The competition is heating up!

--
(domestic pets only, the antidote for overdose, milk.)
=C2=A0 =C2=A0bloggy blog: http://lars.ingebrigtsen.no


--f40304361ce8b193af05472489ea-- From MAILER-DAEMON Sat Jan 28 04:56:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXPjn-00080H-TM for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48850) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPjl-00080B-BW for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXPjh-0002By-Cn for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:01 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35433) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPjh-0002Bu-9o; Sat, 28 Jan 2017 04:55:57 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1707 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXPjg-0000XZ-JP; Sat, 28 Jan 2017 04:55:57 -0500 Date: Sat, 28 Jan 2017 11:55:47 +0200 Message-Id: <83lgtvzexo.fsf@gnu.org> From: Eli Zaretskii To: dptd dptd CC: emacs-devel@gnu.org In-reply-to: (message from dptd dptd on Sat, 28 Jan 2017 11:37:47 +0200) Subject: Re: mark-whole-buffer and unnecessary (point) call Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:56:02 -0000 > From: dptd dptd > Date: Sat, 28 Jan 2017 11:37:47 +0200 > > Hello everyone, > This is my first e-mail to the emacs-devel so I hope my question will not be the stupidest one in this mailing > list history. I am an Emacs newbie but I love it. I am also very interested in the lispy languages and this is why > I am learning elisp - I want to contribute. Welcome aboard, and thanks in advance! > I have checked the newest source from the git repo and this (point) call is still there. I removed it, evaluated > and checked if the function still works and yes - it works. Is there any reason why this call is still there? I was > wondering if I could / should remove it and submit my first change request. However I assume that I do not > understand something here because everyone who have read this introduction knows about it. Searching for "(push-mark (point))" finds 28 hits in the Emacs Lisp files, so the above is not the only one. I have no idea why the corresponding authors didn't omit the argument. From MAILER-DAEMON Sat Jan 28 04:56:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXPkL-0008Pt-HB for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49009) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXPkI-0008Ed-PA for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXPkE-0002GF-Qe for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:34 -0500 Received: from randomsample.de ([5.45.97.173]:50553) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXPkE-0002FU-GO for emacs-devel@gnu.org; Sat, 28 Jan 2017 04:56:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From; bh=WN081oiIq1vnRi1qEWLWpZHz3gwtsB0OIlxmnH801fQ=; b=p8wPJJL/gVEOhukSPeynRMWckHQ/e8SipQ0uNIukMh8oVlMfC4s3iWth/kX51E8mrQdq2olMrE5tDtE7NguHHmZC0XXoDarR8j9F7h7SaXqsZNw2rbypcylRrarEDaq9; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXPkC-0002rQ-SI for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:56:28 +0100 From: David Engster To: emacs-devel@gnu.org Subject: Disable emacs-diffs mails for scratch branches User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sat, 28 Jan 2017 10:56:27 +0100 Message-ID: <87sho3zewk.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 09:56:35 -0000 Subject says it all. Could we please do that? I think it's pretty normal for scratch-Branches being deleted and pushed anew, and for large branches like cedet-merge or cedet-tests this needlessly creates hundreds of mails each time. -David From MAILER-DAEMON Sat Jan 28 05:25:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXQBz-0000oX-NF for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 05:25:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQBy-0000mi-Ht for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:25:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXQBx-0001BL-JS for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:25:10 -0500 Received: from mail-yb0-x244.google.com ([2607:f8b0:4002:c09::244]:34780) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXQBx-0001B0-E9 for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:25:09 -0500 Received: by mail-yb0-x244.google.com with SMTP id w194so23554513ybe.1 for ; Sat, 28 Jan 2017 02:25:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=36jMdAp+hNv4CS7dK9y0a806Vh1sDxV+DdXpTPM//4c=; b=qzODdIQaU6ZZgTuIELcppQh/vUoOyLsajgyhGCYB2kZjZC4/fk6Dy8FuazkTGvOTfL kI7Gf28bshq3/5QNXOoDTdVyCv1H87Gwh3vzVqy87k9MsCqZBs6XdyZpRk7q7fTLZ53o cMwag7wtRqSVASI6p/qWTJRoCqfUuWbIySyA3SIEuAQoWTPzd2K9SiqMvs28L7Kknb+c UGy5SASKN0SaVL9MqGJ07eDPF1Z33ihBL+i5z5Vlfuz5WyQqtwpcS3uJbAbMA6B2P6EK IjRowt2d67SSDrWWpnNhq3Nlh60/M8BmOBI32TY5lxKBoftFBEUP5bh5qpsyoYlhTU9K 8eYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=36jMdAp+hNv4CS7dK9y0a806Vh1sDxV+DdXpTPM//4c=; b=MQWneXU0c6S/jFU15ks69TzDPU2PSmb2Uu098eT6kEkuhyxjS8LlAwBicvuVPJLkRb xxWsSsCqkcIZlm6tmZZE3UdZfmXcSkEeaLFuXqusfmpofmuyw1CbqmQmA8FRfEr+5JCK IV7NhUgZvw1z+iKI0eQ9z+jJ50SbmGfBELeTsV3HgPQ1OIOoB1Ck3kJ8kvV7sNJp8lzh v0ec9AOEArzJRsXQMWnQPeTMkvq86lGLHCRj+4ED2DMUbQac8/06nW2CwlAqAdlzJMOs Rfs/+Sa0IcMZPJwq9bbEHiYFqerdfdRv4OGeBuyTEyUGed7sDsJQrQv36uefqzgbVqNz Uplw== X-Gm-Message-State: AIkVDXJ1NRKAOFkL++tt66q8uPYsMbUUwtOLQ4vQFVDpBVVGS72DvdS528H90SGb+MLKzkJyGApRFOdACoAtKA== X-Received: by 10.37.211.20 with SMTP id e20mr4187905ybf.99.1485599108640; Sat, 28 Jan 2017 02:25:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Sat, 28 Jan 2017 02:25:08 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Sat, 28 Jan 2017 15:55:08 +0530 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 10:25:11 -0000 On Sat, Jan 28, 2017 at 4:40 AM, Stefan Monnier wrote: > Whichever option you take, please pay attention to `next_weak` because > in your patch, you'll end up purecopying some of the other weak > hash-tables but you won't register this one as a weak hash table, so it > will lead to serious problems. Not sure if I'm correct here, but shouldn't we be *not* purecopying weak hash tables? Otherwise, GC will result in potentially writing over/freeing pure memory, something that we don't want to happen. Plus, I think that this opens another can of worms for code like this: (let ((h #s(hash-table data ()))) (puthash 'foo 'bar h)) or (defun a () #s(hash-table data ())) ;; the returned table might be purecopied ;; and the callee might write to it Which also writes to pure storage if the code is purecopied during dumping emacs. I'd recommend skipping purecopy for hash tables altogether, and add an internal :read-only flag to (make-hash-table) for hash tables we know aren't going to be be written to, and are thus safe to be purecopied (this would obviously only be useful for hash tables that are defined using printed syntax). -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Sat Jan 28 05:26:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXQDX-00024b-1H for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 05:26:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52382) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQDS-0001ow-Vp for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:26:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXQDP-0001TI-T0 for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:26:42 -0500 Received: from mail-yw0-x231.google.com ([2607:f8b0:4002:c05::231]:34607) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXQDP-0001TE-P2 for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:26:39 -0500 Received: by mail-yw0-x231.google.com with SMTP id w75so32248414ywg.1 for ; Sat, 28 Jan 2017 02:26:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=MsnzcoD+8X0OqEscV5RehP4JY7pbXooVU+v6K9G0viA=; b=qEaJKK8ToEUQhYTlksE2uehoFedV/lXrA7VkmNwUzEm8eWCIXRnNEYph7HLv0zprEq HeyDtCt6i/LcM/masG7icT7kW9Q3RlLvbZWMTJ62OJam3aaJo1RvF9kTSgJdnjYZvALr U4mPQoeFURbt5bIZNUchlnbeYnm/VyEy0fiJgsX8EigdvpO/sQzGlaqtx55oW4DxuGUq gYISLskXOMZUrUunTdybIJoQdZR6At9EJqICVKNbh++yvHzagDI/rIQCwRdHR9tF+Mpq rvvuX19ZcwW6ivO1Bii47efN9cAi1RO/9X630x1MyhQn8eZWGhbueO2M0LWFHkqXezNM mQxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=MsnzcoD+8X0OqEscV5RehP4JY7pbXooVU+v6K9G0viA=; b=OIDpiTC7D+JI1zINafs83Ev/Y4IEZDzvRgsYWhZpeWkrdS4KoX5XHuIN4Qs1eREiz1 VDeaGsc3cCNu6ScdEWRHaRbYx+hV17K3jRtwq/0/AxfiPBoAJfuiITh826wyIhlWdIjr xGXh2JnyF90ZUpa0JYnQ8wbReCQXdlxH45GW6i9FBdQhJD3ed4lAKjRKB1JJyOH3ux6R FrNacX0o7Um10xPSuuEjYAQvlq+aRoxHX6+J9HazM2OVgSC8REV+4o84Nj2hEVx/S2ZL 2wgUgSyiAEsJDfd68BhRIDIGY+cWMMfO2ZpGTgRyBPKAKwdsCrcJTaaKzojTyDQmh1wI 2UWw== X-Gm-Message-State: AIkVDXIkCUPkjTYfWCYidUrsC0OhiBPJEft4ykOQ6xhKsCNaG8z7kl/KLqm8a1hbXb+HyiRZg3U6KgDqs5FADw== X-Received: by 10.13.218.195 with SMTP id c186mr8902346ywe.15.1485599199198; Sat, 28 Jan 2017 02:26:39 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Sat, 28 Jan 2017 02:26:38 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Sat, 28 Jan 2017 15:56:38 +0530 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 10:26:44 -0000 On Sat, Jan 28, 2017 at 3:55 PM, Vibhav Pant wrote: > #s(hash-table data ())) ;; the returned table might be purecopied > ;; and the callee might write to it s/callee/caller/ -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Sat Jan 28 05:28:43 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXQFP-0002sr-K0 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 05:28:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53292) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQFN-0002sb-Ag for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:28:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXQFK-0002S0-75 for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:28:41 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35680) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQFK-0002Rs-3t; Sat, 28 Jan 2017 05:28:38 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1732 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXQFJ-0005Ck-F2; Sat, 28 Jan 2017 05:28:37 -0500 Date: Sat, 28 Jan 2017 12:28:29 +0200 Message-Id: <83k29fzdf6.fsf@gnu.org> From: Eli Zaretskii To: dptdescribe@gmail.com CC: emacs-devel@gnu.org In-reply-to: <83lgtvzexo.fsf@gnu.org> (message from Eli Zaretskii on Sat, 28 Jan 2017 11:55:47 +0200) Subject: Re: mark-whole-buffer and unnecessary (point) call Reply-to: Eli Zaretskii References: <83lgtvzexo.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 10:28:42 -0000 > Date: Sat, 28 Jan 2017 11:55:47 +0200 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org > > Searching for "(push-mark (point))" finds 28 hits And 97 hits for "(push-mark)", including 3 in simple.el. From MAILER-DAEMON Sat Jan 28 05:44:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXQUF-0000lW-6A for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 05:44:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55094) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQUD-0000lQ-AG for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:44:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXQUC-00067U-De for emacs-devel@gnu.org; Sat, 28 Jan 2017 05:44:01 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:33741) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXQU8-000667-Js; Sat, 28 Jan 2017 05:43:56 -0500 Received: by mail-wm0-x241.google.com with SMTP id v77so2879684wmv.0; Sat, 28 Jan 2017 02:43:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=N7QdDGFZ0PkmR4fuVGWt3MulMD+9m1chOmzIeW72tqU=; b=r6vIJWajlXXdxVUKyfkHcFB6c2+D+gg8QmMzZf7nM6VEoQ6YTkDMzYlYTijGU/aR4p cBrMAD5kTPesqqY1dxA9j7vAWQtCUkVQz4IwbkJHxvok1a0+guX3n4jeHFuxhbaZqrf7 Tl1pMSx4oTaJsHK3XJ2dgUPyiahvBKgyHUnTzDSz/AzNT8NJuLdSCZQ5r3jm4yFmSedk HClqrhNrJDtq19gchOQA3aIypZgRDQyVq4eDMeo9G5QcGNG7vPCNO6xNm7RpkOa/2iSi 1VLFN23foU6tj1O0MFffbq9ueSqTq7/fP15JhLJ8mEdZY60y41ZgxKuKs2VU/d4x39Wh Gy8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=N7QdDGFZ0PkmR4fuVGWt3MulMD+9m1chOmzIeW72tqU=; b=TkIF3iQEJNJvULmV/FlSbbnh9XKk3QFtiUA9EHZKj+B8h+VqBmVB/z9N2ltLjnSyXi VIIBpdjKIIoOR/gMHK6nRry7nJ2QDnKck9vw9JzalANaqtpRAGPG7AsVzDW3/ZrqNV3y Z5nNwtSNw8iaVFXz8RzR86uQTxZFD/1qo1/Qu9x5ExL9dkJcnWH8eZtkwBRDgI6CaS3Q ToQFSO95atCJ83WMBUpOS5HZ7GfLEMGlQ3bQ4ZXZ+JURv2bMk8OWQunF4GNiO3UmZTq0 7FmQDBJmCeAW4yBaAWQLj4d7f8s/voteyDEtJHQmD8zwPu8Un4pTKze+AFCi1RFuYvKL jmzg== X-Gm-Message-State: AIkVDXL5n75MklWybk9q4UGtmTTdRmnzqKkJw1JiCfuXsvaxNKziTQD//w/ZR1dTdxIgHQ== X-Received: by 10.28.236.149 with SMTP id h21mr6375774wmi.65.1485600235262; Sat, 28 Jan 2017 02:43:55 -0800 (PST) Received: from [192.168.60.140] ([212.50.23.124]) by smtp.gmail.com with ESMTPSA id b15sm12289127wra.4.2017.01.28.02.43.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 02:43:54 -0800 (PST) From: dptd dptd Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_C246D1A2-CFD0-40EF-858E-C5BBF0F49E1A" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: mark-whole-buffer and unnecessary (point) call Date: Sat, 28 Jan 2017 12:43:53 +0200 In-Reply-To: <83k29fzdf6.fsf@gnu.org> Cc: emacs-devel@gnu.org To: Eli Zaretskii References: <83lgtvzexo.fsf@gnu.org> <83k29fzdf6.fsf@gnu.org> X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 10:44:02 -0000 --Apple-Mail=_C246D1A2-CFD0-40EF-858E-C5BBF0F49E1A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 28 Jan 2017, at 12:28, Eli Zaretskii wrote: >=20 >> Date: Sat, 28 Jan 2017 11:55:47 +0200 >> From: Eli Zaretskii >> Cc: emacs-devel@gnu.org >>=20 >> Searching for "(push-mark (point))" finds 28 hits >=20 > And 97 hits for "(push-mark)", including 3 in simple.el. Alright so I think I can assume for now that call to (point) is really = not needed in such scenarios. I will unify it in the whole repo and try to send my first patch. We = will see what will happen=E2=80=A6 If it will be accepted then I will update =E2=80=9CAn Introduction to = Programming in Emacs Lisp=E2=80=9D tex file. Thanks Eli. :)= --Apple-Mail=_C246D1A2-CFD0-40EF-858E-C5BBF0F49E1A Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
On 28 Jan 2017, at 12:28, Eli Zaretskii <eliz@gnu.org> = wrote:

Date: Sat, 28 Jan 2017 = 11:55:47 +0200
From: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org

Searching = for "(push-mark (point))" finds 28 hits

And 97 hits for "(push-mark)", including 3 in simple.el.

Alright so I think I can assume for now that call to (point) = is really not needed in such scenarios.
I will = unify it in the whole repo and try to send my first patch. We will see = what will happen=E2=80=A6
If it will be accepted = then I will update =E2=80=9CAn Introduction to Programming = in Emacs Lisp=E2=80=9D tex file.

Thanks Eli. :)
= --Apple-Mail=_C246D1A2-CFD0-40EF-858E-C5BBF0F49E1A-- From MAILER-DAEMON Sat Jan 28 06:06:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXQqH-0007Ga-F3 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 06:06:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXQqE-00075m-Gx for emacs-devel@gnu.org; Sat, 28 Jan 2017 06:06:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXQqB-0003Xp-Cp for emacs-devel@gnu.org; Sat, 28 Jan 2017 06:06:46 -0500 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:36443) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXQqB-0003XY-4y for emacs-devel@gnu.org; Sat, 28 Jan 2017 06:06:43 -0500 Received: by mail-wm0-x234.google.com with SMTP id c85so150261393wmi.1 for ; Sat, 28 Jan 2017 03:06:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version:content-transfer-encoding; bh=5cnwmNL5BDXYltz/zPxj6a8i0anUL46MnW/pt3KNOwU=; b=R2RrsQE0cRffTKDumeoHNCuoK4/fw/eXYDVXaEeMlan2i47I06k0XOGoZQ28dLls4v 1e7lKlUbHM/7EMb7ztKtm2ANWoFmduOjVmlgNmsuzY8SPtlBMWBr3zithvoSuUAnO+GK IT5Uq4f6fvJ4WGOqfVPeuDPBGTtgjED2lvy4A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version:content-transfer-encoding; bh=5cnwmNL5BDXYltz/zPxj6a8i0anUL46MnW/pt3KNOwU=; b=SwBxMnXiJNewP922EwJaQOajcOY6xkromtQTLVGIB606+FLzP5nD/51sCgeQUPHEeq m+YAMYd9ESE4gqIAreDcK+FN95NU46URcP6++NDyPB216cTImt+JYCpHw7NkffSFdCT9 0YMYp5yU3hs1SohaapAjglPfYa3JDY2XkN+Gm95J7oAyFosoegyfs1Y0mojJqmdgw7cq qESbgFTGuVEaXx7Fj96dFhPBcMpNOLw02DxxpJEDq3PWY1rukvFED+Sjmp81EbRIG89l OvjnZQreoVpGDZ10lBLysjAPBNEDX1reBI1ehfndicwjLYudWgouxBGOLJ2GqJt2IWZK oEbA== X-Gm-Message-State: AIkVDXJU3jaeUrtdcGejM/57E8ZRpRUdLOEHq0HoRagqvJ3YFDRxbaTy5stns4QSZ3ckr/jw X-Received: by 10.28.185.193 with SMTP id j184mr7221934wmf.86.1485601602048; Sat, 28 Jan 2017 03:06:42 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id z134sm8266137wmc.20.2017.01.28.03.06.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 03:06:40 -0800 (PST) Received: from zen (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTPS id 1C2D63E0131; Sat, 28 Jan 2017 11:06:40 +0000 (GMT) References: <831tbxn5id.fsf@gnu.org> <87oaf1bvsb.fsf@wanadoo.es> <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> User-agent: mu4e 0.9.19; emacs 25.1.91.4 From: Alex =?utf-8?Q?Benn=C3=A9e?= To: John Wiegley Cc: Richard Stallman , emacs-devel@gnu.org Subject: Re: official Emacs Docker image In-reply-to: Date: Sat, 28 Jan 2017 11:06:40 +0000 Message-ID: <87o9yrcukf.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 11:06:47 -0000 John Wiegley writes: >>>>>> Richard Stallman writes: > >>> The final "image" as they call it will be an Emacs binary, built on that >>> base, that users can download and directly run from any of the major >>> operating systems (Mac OS X, Windows, any flavor of GNU/Linux). > >> At this point, I am confused, because the statements seem to conflict. > >> Would the "Docker image" of Emacs _include_ the base system? Or would it be >> an executable Emacs package that could be installed straight _on top of_ >> that base system? > > I see now that I was unclear: A Docker image is a self-contained tarball > containing a GNU/Linux kernel, necessary system software, and the final Emacs > executable that was built by the image recipe. Just a minor correction, Docker images do not contain kernels. They are purely a user-space construct. They are built to use the Linux kernel ABI and are virtualised to the extent they have their own pid/network/filesystem namespaces. > The Docker image contents, thus, can be entirely free software. Executing the > image on some platforms (such as Windows) may use proprietary software to > perform the execution (for example, VM provisioning software). -- Alex Bennée From MAILER-DAEMON Sat Jan 28 06:37:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXRJx-0006ID-UY for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 06:37:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32883) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXRJw-0006I7-4y for emacs-devel@gnu.org; Sat, 28 Jan 2017 06:37:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXRJv-0002Ep-3A for emacs-devel@gnu.org; Sat, 28 Jan 2017 06:37:28 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:34869) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXRJr-0002ED-5I; Sat, 28 Jan 2017 06:37:23 -0500 Received: by mail-wm0-x242.google.com with SMTP id d140so64606908wmd.2; Sat, 28 Jan 2017 03:37:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=5KCeUAkyDO7JG6S7qE/ebMzGPSOxdI27VIURo2naKdo=; b=THjfOe8+b0PH44r1NdxbfGVwGo1noB574xRx3KrXe5W66WPCSVvA7/KML/92gpdOjs L2YIPEHjFKvTJcMHF5DXUVJ3+YTKnzdlEfKVBaAkH+BtyUifSfzwaGPJpU8Eo+Az4eGM e8CxlJCh0e29dD+LI82yWn8AglNLL28I87Xwqp2xqnsdyvUjTgMO5DvkIqxsHChdRRzn CmxB/jj68HxkZ7F4PM8j+DKITjk2dJIdbJeCvaloy/HTmPxbJ0CSc/3gXs+RJL0RT44D ch9AC7lVYCrkGefBXBQdYhb0l+vD8YxemEDYO10GNu03JHWi76k6OsMkPTEHvMw6Jd1E sZaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=5KCeUAkyDO7JG6S7qE/ebMzGPSOxdI27VIURo2naKdo=; b=P0pFfa3NYK2Bm696bWc+bXvDE/1uSPddww+gWn6ckEL7vcD9+YSinT50jVvkbo1141 SQ2/tgGQfJb7/udusLgjV1QZ6lUiKHgnbE1k43P5+jumL0GwlFHnquRE4KX6Y8w+QX+K UM1qVuKL2TAr5/5+KVFNG+LrvDp4uBAKGHVPQvvSI0EkCCeOmXBLwBbUO5pi2pvpS3Zh PvSSNJkD9BH0MfsM6npV+SmDr0dIYQKmwou43rVrpxllQ/pN9X7xSJoZIyYo48AnrsiZ q2nydtRd7jS28I9PjGyH3cVvcjl7noNXFs0vU7L4UQSmu8qGV7XQhstUJZ6Xqbd8JhSw dZTA== X-Gm-Message-State: AIkVDXKFvOhMdt5rncs0FMuaIJz6USlwgsEyXDxkyyr2swXCeE1/FmPahGl1McdFSVYBRw== X-Received: by 10.28.45.213 with SMTP id t204mr4118415wmt.113.1485603441837; Sat, 28 Jan 2017 03:37:21 -0800 (PST) Received: from [192.168.60.140] ([212.50.23.124]) by smtp.gmail.com with ESMTPSA id x135sm8456280wme.23.2017.01.28.03.37.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 03:37:21 -0800 (PST) From: dptd dptd Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_DDAD6F23-6E22-4565-9F45-A609BDA92B78" Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: mark-whole-buffer and unnecessary (point) call Date: Sat, 28 Jan 2017 13:37:20 +0200 In-Reply-To: Cc: emacs-devel@gnu.org To: Eli Zaretskii References: <83lgtvzexo.fsf@gnu.org> <83k29fzdf6.fsf@gnu.org> X-Mailer: Apple Mail (2.3259) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 11:37:29 -0000 --Apple-Mail=_DDAD6F23-6E22-4565-9F45-A609BDA92B78 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 28 Jan 2017, at 12:43, dptd dptd wrote: >=20 >=20 >> On 28 Jan 2017, at 12:28, Eli Zaretskii > wrote: >>=20 >>> Date: Sat, 28 Jan 2017 11:55:47 +0200 >>> From: Eli Zaretskii > >>> Cc: emacs-devel@gnu.org >>>=20 >>> Searching for "(push-mark (point))" finds 28 hits >>=20 >> And 97 hits for "(push-mark)", including 3 in simple.el. >=20 > Alright so I think I can assume for now that call to (point) is really = not needed in such scenarios. > I will unify it in the whole repo and try to send my first patch. We = will see what will happen=E2=80=A6 > If it will be accepted then I will update =E2=80=9CAn Introduction to = Programming in Emacs Lisp=E2=80=9D tex file. >=20 > Thanks Eli. :) I have the patch ready. Should I simply send it as a plain text to the = emacs-diffs mailing list? I saw that people there are not writing any comments about the change = itself so there is no place for discussion. Another thing is the copyright assignment. My patch has more than 15 = lines of code so as far as I know I need to do that. I have read in the CONTRIBUTE that emacs-devel can help with = that. I have also read on the FSF page that I should probably contact with the package maintainer. Where can I = find any contact information? Thank you in advance. Best regards, dptd= --Apple-Mail=_DDAD6F23-6E22-4565-9F45-A609BDA92B78 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
On 28 Jan 2017, at 12:43, dptd dptd <dptdescribe@gmail.com> wrote:


On 28 Jan 2017, at 12:28, Eli Zaretskii <eliz@gnu.org> = wrote:

Date: Sat, 28 Jan 2017 = 11:55:47 +0200
From: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org

Searching = for "(push-mark (point))" finds 28 hits

And 97 hits for "(push-mark)", including 3 in simple.el.

Alright so I think I can assume for now that call to (point) = is really not needed in such scenarios.
I will = unify it in the whole repo and try to send my first patch. We will see = what will happen=E2=80=A6
If it will be accepted = then I will update =E2=80=9CAn Introduction to Programming = in Emacs Lisp=E2=80=9D tex file.

Thanks Eli. = :)

I = have the patch ready. Should I simply send it as a plain text to the = emacs-diffs mailing list?
I saw that people there = are not writing any comments about the change itself so there is no = place for discussion.
Another thing is the = copyright assignment. My patch has more than 15 lines of code so as far = as I know I need to
do that. I have read in the = CONTRIBUTE that emacs-devel can help with that. I have also read on the = FSF page
that I should probably contact with the = package maintainer. Where can I find any contact information?

Thank you in = advance.

Best = regards,
dptd
= --Apple-Mail=_DDAD6F23-6E22-4565-9F45-A609BDA92B78-- From MAILER-DAEMON Sat Jan 28 08:45:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTKD-0001SU-1u for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 08:45:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47945) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTKA-0001S7-Vg for emacs-devel@gnu.org; Sat, 28 Jan 2017 08:45:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTK6-0007kM-1e for emacs-devel@gnu.org; Sat, 28 Jan 2017 08:45:51 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:34882) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXTK5-0007kH-S0; Sat, 28 Jan 2017 08:45:45 -0500 Received: by mail-wm0-x244.google.com with SMTP id d140so65239907wmd.2; Sat, 28 Jan 2017 05:45:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=z9a2sDhwEeRux8tDayP6QQKO4qMswHDJ+Ljc+FuXvk0=; b=oKyUfn5hyCl0dT660VVW/Yh6bVnSh88nUP4PgmfCD/QT1ysBX+vnb0VZJEaNKtw4mm V+ue9zF6RjnOcsranQyrU8Kx9w44GoqG8jEiwSwTTS7CuPSWQKvUI87wzLjutL/Kb9XJ rl1l0dJTxhFM0ii1hTr8weuvRAipMhOCDMYxeWhPeKi3Ur+6LawrCfy9waU9cOqWiCue AneDWo0nnWHn0D27RXKqiRNSIlWqolJE6Kc64PxmJdMkmJklEMA21TvyTqM/tRvuMw7v wZFqAB4WERWYUFKF1AqB7gdc53KtTtKZ6x2kk06OT9ljbajpsw9OzimFmS7J77O2LJ5a yj0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=z9a2sDhwEeRux8tDayP6QQKO4qMswHDJ+Ljc+FuXvk0=; b=EBAAxqzrENvdxBv3jhozj2uklegrwXgiOD9yMgNwVywUdsCws9ZZF4hllTpg2/iXtj cjXacPiMYNliZbXIKsWIkQ0SZvpzDcC7ZHEOb/mbTQ4MZZD+vbW1Y9PzlSIZyAgjTPzI +vX9EmpHze1iHQiVjXl6FKe4zaAvPYQI66shIyhLq0BiC71t1iT+H2NWjQ8OIt53Nj4r qDWMfihg5pF84DSPYAUGJcknsYXToksKMUig81rjsLRdvH4E6riO+LM+C1woTINn7Oyp L2juIg3txjkfd7dlZirFVJw0Qn6Ow3wbdxlxTDtqQhhOccegspuqTTtWgL0JB3By/bn7 WeBw== X-Gm-Message-State: AIkVDXKGyeN9YoUUDOMbH4rXblZ+sNTDBf4v8TrbpX9A9EhM/wuJOyXVpN20pviMz8RFBg== X-Received: by 10.28.93.138 with SMTP id r132mr7330350wmb.17.1485611144567; Sat, 28 Jan 2017 05:45:44 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id q1sm9004687wmd.6.2017.01.28.05.45.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 28 Jan 2017 05:45:43 -0800 (PST) From: Edward John Steere To: David Engster Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> <874m0k1age.fsf@engster.org> Date: Sat, 28 Jan 2017 15:45:24 +0200 In-Reply-To: <874m0k1age.fsf@engster.org> (David Engster's message of "Fri, 27 Jan 2017 22:04:17 +0100") Message-ID: <87poj7mh6z.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 13:45:52 -0000 > That's totally expected. I'll take a look at them. > > -David I've just pushed another update to my branch which fixes another mistake in ia-utest, adds an include for the unit test root file and adds test resource files which I missed the first time round. I've created a local branch where I merged my branch to yours to see how we're doing. Here's what I've found after running both the unit and integration tests: * Utests in Error ** EDE Security (error "Corrupt object on disk") This is an error caused by the changes to how EIEIO objects auto load. They no longer include their parents as part of the auto load so all classes and class parents which are read from file must have their definitions loaded prior to de-serialising (this includes the entire inheritance hierarchy for the target class). I added the following requires to the body of `ede-proj-load' to rectify this (it's a total hack though): (require 'ede/proj-prog) (require 'ede/proj-aux) (require 'ede/proj-elisp) (require 'ede/proj-scheme) (require 'ede/proj-misc) (require 'ede/proj-prog) (require 'ede/proj-archive) (require 'ede/proj-shared) (require 'ede/proj-info) (require 'semantic/ede-grammar) Note that I haven't added this change here. ** Project Detection Tests I think that this also has to do with the changes to how classes are auto loaded, but I'm not sure. Running ede: project detection tests ... ERROR: (wrong-type-argument (or eieio-object class) nil obj) Running ede: project detect linux extra ... ERROR: (wrong-type-argument (or eieio-object class) nil obj) ** Test FMT (error "Cannot open tests/test-fmt.el for format tests") I debugged this one and it looks like it can't open test-fmt.el because semantic mode isn't active in Emacs lisp. ** Wisent Calculator Running wisent calculator ... ERROR: (void-function wisent-calc-utest) This function doesn't seem to exist in either repo (?) ** Waiting for Key Press Running working: wait-for-keypress ... ERROR: (void-function working-wait-for-keypress) This function doesn't seem to be in your branch. ** Interactive Test (error "Invalid face" modeline) I'm not sure where this face is defined, but it is indeed undefined during the test. ** C Parser Tests ERROR: (error "TAG INTERNAL DIFF: :prototype-flag :enum-type") Running semantic: C parser (ERT) ... ERROR: (ert-test-failed ((should (test-c-check-tags-length actual 1)) :form (test-c-check-tags-length nil 1) :value nil :explanation "Wrong number of tags. Expected: 1, actual: 0.")) Running semantic: C preprocessor ... ERROR: (error #("Found: >> int EDEPART (int b) << Expected: >> int C (int b) <<" 10 13 (face font-lock-type-face) 14 21 (face font-lock-function-name-face) 23 26 (face font-lock-type-face) 27 28 (face font-lock-variable-name-face) 47 50 (face font-lock-type-face) 51 52 (face font-lock-function-name-face) 54 57 (face font-lock-type-face) 58 59 (face font-lock-variable-name-face))) Are the new grammar files being compiled included correctly? ** Analyser Tests ERROR: (invalid-slot-name "#" :name) Haven't looked any further into this failure. ** SRecode Tests ERROR: (error "Entry # failed; expected: --[;; An includable we could use. Running srecode: fields ... ERROR: (error "Calculated size of # was not 5") Running srecode: project ... ERROR: (error "Project template not found when in project") Haven't looked into this one either. * Itests Break at first tag comparison (so they should get further when the Utests are fixed.) From MAILER-DAEMON Sat Jan 28 08:55:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTTE-0005Fz-0D for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 08:55:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49091) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTTB-0005Dl-Hb for emacs-devel@gnu.org; Sat, 28 Jan 2017 08:55:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTT7-0002LM-Kx for emacs-devel@gnu.org; Sat, 28 Jan 2017 08:55:09 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37147) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTT7-0002LG-HY; Sat, 28 Jan 2017 08:55:05 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1875 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXTT6-0006FW-B3; Sat, 28 Jan 2017 08:55:05 -0500 Date: Sat, 28 Jan 2017 15:54:54 +0200 Message-Id: <83fuk3z3v5.fsf@gnu.org> From: Eli Zaretskii To: dptd dptd CC: emacs-devel@gnu.org In-reply-to: (message from dptd dptd on Sat, 28 Jan 2017 13:37:20 +0200) Subject: Re: mark-whole-buffer and unnecessary (point) call Reply-to: Eli Zaretskii References: <83lgtvzexo.fsf@gnu.org> <83k29fzdf6.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 13:55:10 -0000 > From: dptd dptd > Date: Sat, 28 Jan 2017 13:37:20 +0200 > Cc: emacs-devel@gnu.org > > I have the patch ready. Should I simply send it as a plain text to the emacs-diffs mailing list? No, that list is for the VCS to send commits. Please send to bug-gnu-emacs@gnu.org instead, where it will be also recorded in our issue tracker. > Another thing is the copyright assignment. My patch has more than 15 lines of code so as far as I know I need > to > do that. I have read in the CONTRIBUTE that emacs-devel can help with that. I have also read on the FSF > page > that I should probably contact with the package maintainer. Where can I find any contact information? The relevant people are reading the above-mentioned list, so you don't need to look for them if you send there. I will send you the copyright assignment form off-list, so you will be able to start the legal paperwork rolling. Thanks. From MAILER-DAEMON Sat Jan 28 09:14:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTlv-0002iI-A1 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:14:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTls-0002i8-TV for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:14:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTlp-0000bf-Mm for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:14:28 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43561) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXTlp-0000ad-Gl for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:14:25 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXTlf-0007cS-EP; Sat, 28 Jan 2017 15:14:17 +0100 From: Lars Ingebrigtsen To: Mark Oteiza Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> <20170127194816.GA18966@holos.localdomain> Date: Sat, 28 Jan 2017 15:14:14 +0100 In-Reply-To: <20170127194816.GA18966@holos.localdomain> (Mark Oteiza's message of "Fri, 27 Jan 2017 14:48:16 -0500") Message-ID: <87lgtv6zm1.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:14:30 -0000 Mark Oteiza writes: > I just went off of knowing it's called Downloads in windows, and trying > to consider plural/nonplural and case insensitivity on Linux. Mine, for > instance is just lower cased. So... the cl-some is probably overkill. I think it's a good idea to try to find the "downloads" directory on the host system, but I think this should be factored out into its own function, so that we can use it in similar circumstances elsewhere. Or perhaps there aren't any other directories like that? Hm... well, "documents", perhaps, and "desktop"... >> > + (access-file eww-download-directory "Download failed") >> >> Seem OK, except that the error message should say what the error is >> instead of this. > > It does, access-file appends the error: > > Download failed: No such file or directory, ~/NOWOAIWJD Oh, cool. Perhaps this line from the doc string could be clearer: "The second argument STRING is used in the error message." -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 28 09:16:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTnj-0003iU-Kh for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:16:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTng-0003hB-Up for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:16:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTnd-00015S-Oj for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:16:20 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43584) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXTnd-00015D-Ij for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:16:17 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXTnY-0008MI-7h; Sat, 28 Jan 2017 15:16:14 +0100 From: Lars Ingebrigtsen To: Elias =?utf-8?Q?M=C3=A5rtenson?= Cc: emacs-devel , Stefan Monnier Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el References: <6d0c8c2e-8428-2fdb-0d6e-899f7b9d7ffd@nifty.com> <86ccb4af-5719-c017-26bb-fc06b4c904d2@yandex.ru> <83r35uxkr5.fsf@gnu.org> <4e12d4ad-cd6b-3087-5d7c-449d4c1886e2@yandex.ru> <83lgw1q9uu.fsf@gnu.org> <83eg1tq8is.fsf@gnu.org> <787e5206-53e0-752f-a339-4608d2f7ad39@yandex.ru> <87wpejvq3c.fsf@gnus.org> <83y3yxs682.fsf@gnu.org> <87fukcbexr.fsf@gnus.org> <83k29o5rvj.fsf@gnu.org> <877f5obckp.fsf@gnus.org> <87vat4ns0t.fsf@gnus.org> Date: Sat, 28 Jan 2017 15:16:11 +0100 In-Reply-To: ("Elias \=\?utf-8\?Q\?M\=C3\=A5rtenson\=22's\?\= message of "Sat, 28 Jan 2017 17:52:14 +0800") Message-ID: <87h94j6zis.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:16:22 -0000 Elias M=C3=A5rtenson writes: > Who is allowed to vote? I consider with-url to be less than ideal and not= very > clear. with-url-contents is a lot better.=20 OK, `with-url-contents' is now the clear leader here with 2.5 votes! --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 28 09:21:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTsc-0005WX-J6 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:21:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53498) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTsZ-0005W9-Ts for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:21:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTsW-0002D7-RG for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:21:23 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43630) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXTsW-0002D1-Kg for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:21:20 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXTsR-0006z8-Fu; Sat, 28 Jan 2017 15:21:17 +0100 From: Lars Ingebrigtsen To: Yuri D'Elia Cc: emacs-devel@gnu.org Subject: Re: [PATCH] Run 'mml-secure-bcc-is-safe after 'message-send-hook References: <87tw9b9jud.fsf@wavexx.thregr.org> <87y3y49xt7.fsf@gnus.org> <874m0rgqff.fsf@informationelle-selbstbestimmung-im-internet.de> <87d1fb3wfo.fsf@wavexx.thregr.org> <87vat3vz4s.fsf@gnus.org> <87efzoy3ff.fsf_-_@wavexx.thregr.org> Date: Sat, 28 Jan 2017 15:21:14 +0100 In-Reply-To: <87efzoy3ff.fsf_-_@wavexx.thregr.org> (Yuri D'Elia's message of "Fri, 27 Jan 2017 15:37:24 +0100") Message-ID: <87d1f76zad.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:21:24 -0000 Yuri D'Elia writes: > If the hook modifies the message (mml tags or headers), we should > check bcc on the final message, not on the original. Thanks; applied. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 28 09:25:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXTwT-0007Ix-29 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:25:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXTwN-0007Ie-Jo for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:25:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXTwK-0003RS-1O for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:25:19 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:43653) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXTwJ-0003RF-RW for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:25:15 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXTwF-0000Dm-Cl for emacs-devel@gnu.org; Sat, 28 Jan 2017 15:25:14 +0100 From: Lars Ingebrigtsen To: emacs-devel@gnu.org Subject: Re: master f83363d: Subject: Check Bcc after the Messag hook has run References: <20170128142130.17218.42233@vcs.savannah.gnu.org> <20170128142131.2877F22016E@vcs.savannah.gnu.org> Date: Sat, 28 Jan 2017 15:25:10 +0100 In-Reply-To: <20170128142131.2877F22016E@vcs.savannah.gnu.org> (Lars Ingebrigtsen's message of "Sat, 28 Jan 2017 14:21:31 +0000 (UTC)") Message-ID: <878tpv6z3t.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:25:23 -0000 larsi@gnus.org (Lars Ingebrigtsen) writes: > branch: master > commit f83363d30e1c78c228e57fe1a5e9ad8faf89f238 > Author: Yuri D'Elia > Commit: Lars Ingebrigtsen > > Subject: Check Bcc after the Messag hook has run > > * lisp/gnus/message.el (message-send): If the hook modifies > the message (mml tags or headers), we should check bcc on the > final message, not on the original. Oops; that one should have had a copyright-exemption thing in it. I momentarily thought this was a different Yuri... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sat Jan 28 09:40:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXUAv-0003Hu-CP for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:40:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXUAs-0003HT-Tj for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:40:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXUAs-0006T7-4T for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:40:18 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:58046) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXUAo-0006SU-97; Sat, 28 Jan 2017 09:40:14 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0B6PAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnCgBll4ZhgMEAgKCEUQQAQIBAQEBAQEBYihCEgGEFAZWIxALNBIUGA0kiQKtFItEAQEIAiWLGYoLHgWPfIpqkwmEfYMUhjqSDzYgeBMOhXMghjGCfAEBAQ X-IPAS-Result: A0B6PAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnCgBll4ZhgMEAgKCEUQQAQIBAQEBAQEBYihCEgGEFAZWIxALNBIUGA0kiQKtFItEAQEIAiWLGYoLHgWPfIpqkwmEfYMUhjqSDzYgeBMOhXMghjGCfAEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="290637784" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 28 Jan 2017 09:40:12 -0500 Received: by pastel.home (Postfix, from userid 20848) id 6DA1264EAB; Sat, 28 Jan 2017 09:40:11 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Change in files.el Message-ID: References: <83mvebzh0k.fsf@gnu.org> Date: Sat, 28 Jan 2017 09:40:11 -0500 In-Reply-To: <83mvebzh0k.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 28 Jan 2017 11:10:51 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:40:19 -0000 >> > +(defcustom save-some-buffers-default-predicate nil >> > + "Default predicate for `save-some-buffers'. >> > +This allows you to stop `save-some-buffers' from asking >> > +about certain files that you'd usually rather not save." >> Please make it so that the var *always* has a function value. > Why is that important? - So that you don't have to wrap each and every use inside an `if'. - Or so you don't have to fix the docstring to say what happens when the value is nil. - Or so you can use `add-function' on it. - More generally, so that you can slightly change its behavior without having to re-implement the default behavior by hand. - Also, so as to make sure that it is *possible* to reimplement the default behavior by hand (i.e. to make sure the predicate has access to all the info it needs to reproduce the default behavior). This is a rule we should try to follow for all *-function and *-predicate variables (as well as similar cases, such as process-filters and sentinels). Stefan From MAILER-DAEMON Sat Jan 28 09:58:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXUS8-0002WO-3a for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:58:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58010) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXUS6-0002WF-C6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:58:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXUS3-0001we-AP for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:58:06 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:37610) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXUS3-0001wa-7D; Sat, 28 Jan 2017 09:58:03 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2002 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXUS2-0007iJ-08; Sat, 28 Jan 2017 09:58:02 -0500 Date: Sat, 28 Jan 2017 16:57:50 +0200 Message-Id: <83bmurz0y9.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 09:40:11 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:58:07 -0000 > From: Stefan Monnier > Cc: emacs-devel@gnu.org > Date: Sat, 28 Jan 2017 09:40:11 -0500 > > >> Please make it so that the var *always* has a function value. > > Why is that important? > > - So that you don't have to wrap each and every use inside an `if'. > - Or so you don't have to fix the docstring to say what happens when the > value is nil. > - Or so you can use `add-function' on it. > - More generally, so that you can slightly change its behavior without > having to re-implement the default behavior by hand. > - Also, so as to make sure that it is *possible* to reimplement the > default behavior by hand (i.e. to make sure the predicate has access to all > the info it needs to reproduce the default behavior). These sound minor to me (and the last two are also possible without the requirement, AFAIU). By contrast, insisting on a function value instead of the default nil forces me to go through at least one more level of indirection when I need to understand what happens in a function that references such variables, which sounds like a more serious trouble from my POV. I was up to my neck in this when I needed to document all the various optional behaviors implemented in isearch.el, and bumped into similar issues several times elsewhere. So IME following that rule is a net loss. From MAILER-DAEMON Sat Jan 28 09:59:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXUSz-00030f-Dy for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 09:59:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXUSx-0002yx-PR for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:59:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXUSu-0002HM-Qi for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:58:59 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:6365) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXUSu-0002G4-K6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 09:58:56 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0A7FAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUhHiXCiYBkkeCD4IIhhwEAgKCEUAUAQIBAQEBAQEBYiiEaQEEAScvIwULCzQSFBgNJIh6CKxXPYtEAQEBBwIlixmKKQWPfIpqkwmIETGGCZIPHzd4Ew6DWx2BeyCJLQEBAQ X-IPAS-Result: A0A7FAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUhHiXCiYBkkeCD4IIhhwEAgKCEUAUAQIBAQEBAQEBYiiEaQEEAScvIwULCzQSFBgNJIh6CKxXPYtEAQEBBwIlixmKKQWPfIpqkwmIETGGCZIPHzd4Ew6DWx2BeyCJLQEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="290643420" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 28 Jan 2017 09:58:55 -0500 Received: by pastel.home (Postfix, from userid 20848) id 3086164EAB; Sat, 28 Jan 2017 09:58:55 -0500 (EST) From: Stefan Monnier To: Vibhav Pant Cc: "emacs-devel\@gnu.org" Subject: Re: [PATCH] Make purecopy create hash tables properly Message-ID: References: Date: Sat, 28 Jan 2017 09:58:55 -0500 In-Reply-To: (Vibhav Pant's message of "Sat, 28 Jan 2017 15:55:08 +0530") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 14:59:00 -0000 > Not sure if I'm correct here, but shouldn't we be *not* purecopying weak hash > tables? Good point. So we should check NILP (old->weak) and signal an error if set. And thus old->next_weak should always be NULL and is trivial to copy. > I'd recommend skipping purecopy for hash tables altogether, and add an That would imply we can't purecopy any object which ends up referencing a hash-table. Unless we arrange to keep track of those hash-tables which are referenced from purespace. We already do that for symbols, so maybe we can extend/generalize that mechanism (probably a good idea). > internal :read-only flag to (make-hash-table) for hash tables we know > aren't going to be be written to, and are thus safe to be purecopied > (this would obviously only be useful for hash tables that are defined > using printed syntax). For cons cells we do: CHECK_IMPURE (cell, XCONS (cell)); in `setcar', so we can do the same for hash-tables. Since purespace is contiguous, CHECK_IMPURE is pretty efficient, and since it only relies on the pointer value, the CPU can compute it in parallel with the access to the object (and the test itself is trivial to predict), so it should have a negligible impact on performance. Stefan From MAILER-DAEMON Sat Jan 28 10:31:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXUyc-0005gm-1t for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 10:31:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34764) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXUyZ-0005YK-T6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:31:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXUyW-0002s8-I5 for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:31:39 -0500 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:34676) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXUyW-0002rb-Ag; Sat, 28 Jan 2017 10:31:36 -0500 Received: by mail-lf0-x243.google.com with SMTP id q89so28104158lfi.1; Sat, 28 Jan 2017 07:31:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=8B5o68NnUomF32vEp1XxkXwz3E2cT7wFA0+qiX9UvFQ=; b=fik99wJAaE7w+Pr4QD8FAb3qxcKX/cAqH/wTnsxVsWYLISs6yTV3HF3bmaAajMgVyx I8ah0yFruQ3scwDhzCTcU/9QLZWw/NzpOkVPmDDi049YqgL6uFdUZe/qj6UpmGYN6MP5 34xT8E7YIkAh8q04tlDSB99zWRMnswDEOREx0Yp/CrTwhjV0fH0aBKHG5mHdy6MVdZVN QpBgHcKZFlY8RPmghO3nsbjpAllN7rYuRoCmuB1+9ItFgOl9fJ1h9+D6XlPDp3CNFuMw CqHsK31W5+j9KPPX+lWwQepW59+lZubuLnJcFBe1KLckhsWWO7/gC/lc+lTY9MbzIWOe ijVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=8B5o68NnUomF32vEp1XxkXwz3E2cT7wFA0+qiX9UvFQ=; b=FiwGt7o5FCASBZfSwJulFJIV5a5GmfKu5SLoh1P76At+oIYpthDLEwFWcPqUhdQmi/ 55H/cQSvo4GzZcOPMS6xKNCZO0D7EDuOLbFFQmibVq+IzodoJfnc3FpIjXgfFUZ5uxAy CD9Ruwb0mEGLLjtbs1hLkcgT+rFIvBmagw2pmWhB7abuO3nRXkXeTrky/5/nWiMBHKu0 gy23iq6PsmykaSvWvE27gPbOxXSB2CLT7pzbdgMWcJglYKvLy8ikQbwNLnUhjNdJFrao bZ9crNoFARUOJ3OxrVR+QfKpGR8a3oGpZ44JKXMRB/todXZ02/g6tIwyMeOQOBKZogMj he5g== X-Gm-Message-State: AIkVDXKXtluJW900LMFhNsKHmZt4mgZylRYr8XHaRFW91lLOecTp/OiQSdwHH0lWXfyQ0Q== X-Received: by 10.25.199.14 with SMTP id x14mr3692633lff.13.1485617493121; Sat, 28 Jan 2017 07:31:33 -0800 (PST) Received: from [192.168.1.174] ([178.252.127.239]) by smtp.googlemail.com with ESMTPSA id g4sm632683ljg.23.2017.01.28.07.31.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 07:31:32 -0800 (PST) Sender: DG Subject: Re: Change in files.el To: Eli Zaretskii , Stefan Monnier Cc: emacs-devel@gnu.org References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> From: Dmitry Gutov Message-ID: Date: Sat, 28 Jan 2017 18:31:29 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Thunderbird/51.0 MIME-Version: 1.0 In-Reply-To: <83bmurz0y9.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 15:31:40 -0000 On 28.01.2017 17:57, Eli Zaretskii wrote: > These sound minor to me (and the last two are also possible without > the requirement, AFAIU). By contrast, insisting on a function value > instead of the default nil forces me to go through at least one more > level of indirection when I need to understand what happens in a > function that references such variables, which sounds like a more > serious trouble from my POV. It's just one more level of indirection. We routinely deal with dozens of them. This above rule should just be adhered consistently, and the indirection won't be a surprise every time. On the plus side, you might get a smaller function that calls the -default one, because some code will be extracted. Finally, the default value of save-some-buffers-default-predicate can be #'ignore or #'identity (it's either this, or the previous paragraph, I'm not familiar with the code enough to be sure). > I was up to my neck in this when I > needed to document all the various optional behaviors implemented in > isearch.el, and bumped into similar issues several times elsewhere. isearch.el and etags.el have more egregious problems, such as extensive use of dynamic bindings. From MAILER-DAEMON Sat Jan 28 10:35:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXV2Q-00077X-8q for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 10:35:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35566) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXV2O-00077R-ST for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:35:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXV2L-0004eA-LM for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:35:36 -0500 Received: from [195.159.176.226] (port=37730 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXV2L-0004cq-Dz for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:35:33 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXV23-00041n-Oj for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:35:15 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Disable emacs-diffs mails for scratch branches Date: Sat, 28 Jan 2017 10:35:01 -0500 Lines: 17 Message-ID: References: <87sho3zewk.fsf@engster.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:cQHq7zBFKZjZ0355LkaI5PbirvU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 15:35:37 -0000 > Subject says it all. Could we please do that? I think it's pretty normal > for scratch-Branches being deleted and pushed anew, and for large > branches like cedet-merge or cedet-tests this needlessly creates > hundreds of mails each time. I agree that those 300 emails dumps are more annoying than useful. But FWIW, I see two problems with your suggestion: 1- I don't know how to do it. 2- I do find it very useful to see commits on scratch branches when those branches are used for gradual development (e.g. the byte-switch branch). Maybe the problem can be solved by sending one email per push instead of one email per commit. Stefan From MAILER-DAEMON Sat Jan 28 10:41:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXV7n-0000J0-0c for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 10:41:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36226) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXV7k-0000Ir-Qw for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:41:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXV7h-00073B-Dc for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:41:08 -0500 Received: from [195.159.176.226] (port=49754 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXV7h-00072v-74 for emacs-devel@gnu.org; Sat, 28 Jan 2017 10:41:05 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXV7S-00066m-So for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:40:50 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Change in files.el Date: Sat, 28 Jan 2017 10:40:41 -0500 Lines: 25 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:RyyDNzGCvCFgj9YloMMsYwk8RXg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 15:41:09 -0000 >> - So that you don't have to wrap each and every use inside an `if'. >> - Or so you don't have to fix the docstring to say what happens when the >> value is nil. >> - Or so you can use `add-function' on it. >> - More generally, so that you can slightly change its behavior without >> having to re-implement the default behavior by hand. >> - Also, so as to make sure that it is *possible* to reimplement the >> default behavior by hand (i.e. to make sure the predicate has access to all >> the info it needs to reproduce the default behavior). > These sound minor to me (and the last two are also possible without > the requirement, AFAIU). Hmm... how do you get the last two without that requirement? > By contrast, insisting on a function value instead of the default nil > forces me to go through at least one more level of indirection when > I need to understand what happens in a function that references such > variables, which sounds like a more serious trouble from my POV. I don't follow, sorry. I don't understand what you mean by "go through at least one more level of indirection" here. Could you explain with an example. Stefan From MAILER-DAEMON Sat Jan 28 11:08:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXVYN-00017x-KY for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 11:08:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39270) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXVYL-000173-Uo for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:08:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXVYI-0006No-08 for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:08:37 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38109) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXVYH-0006Nk-Si; Sat, 28 Jan 2017 11:08:33 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2071 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXVYH-0003W9-3Z; Sat, 28 Jan 2017 11:08:33 -0500 Date: Sat, 28 Jan 2017 18:08:20 +0200 Message-Id: <8360kzyxor.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 10:40:41 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 16:08:39 -0000 > From: Stefan Monnier > Date: Sat, 28 Jan 2017 10:40:41 -0500 > > >> - So that you don't have to wrap each and every use inside an `if'. > >> - Or so you don't have to fix the docstring to say what happens when the > >> value is nil. > >> - Or so you can use `add-function' on it. > >> - More generally, so that you can slightly change its behavior without > >> having to re-implement the default behavior by hand. > >> - Also, so as to make sure that it is *possible* to reimplement the > >> default behavior by hand (i.e. to make sure the predicate has access to all > >> the info it needs to reproduce the default behavior). > > These sound minor to me (and the last two are also possible without > > the requirement, AFAIU). > > Hmm... how do you get the last two without that requirement? Are we still talking about a predicate, i.e. a function that returns either t or nil? If so, I think the last two are so trivial that I don't know where to begin answering your question. > > By contrast, insisting on a function value instead of the default nil > > forces me to go through at least one more level of indirection when > > I need to understand what happens in a function that references such > > variables, which sounds like a more serious trouble from my POV. > > I don't follow, sorry. I don't understand what you mean by "go through > at least one more level of indirection" here. Could you explain with > an example. Let's say I'm looking at this code: (defcustom save-some-buffers-default-predicate nil ...) (unless pred (setq pred save-some-buffers-default-predicate)) (if pred DO-SOMETHING) Here I know immediately what happens when PRED is nil and save-some-buffers-default-predicate is at its default value. By contrast, this: (defcustom save-some-buffers-default-predicate #'some-func ...) (if save-some-buffers-default-predicate DO-SOMETHING) requires me to go and look at some-func, which is "one more level of indirection". From MAILER-DAEMON Sat Jan 28 11:13:10 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXVck-0003Pt-9Y for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 11:13:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXVci-0003PO-DX for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:13:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXVcd-00078A-Aq for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:13:08 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38170) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXVcd-000786-82; Sat, 28 Jan 2017 11:13:03 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2072 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXVcb-0003zM-3b; Sat, 28 Jan 2017 11:13:02 -0500 Date: Sat, 28 Jan 2017 18:12:48 +0200 Message-Id: <834m0jyxhb.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: (message from Dmitry Gutov on Sat, 28 Jan 2017 18:31:29 +0300) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 16:13:09 -0000 > Cc: emacs-devel@gnu.org > From: Dmitry Gutov > Date: Sat, 28 Jan 2017 18:31:29 +0300 > > On 28.01.2017 17:57, Eli Zaretskii wrote: > > > These sound minor to me (and the last two are also possible without > > the requirement, AFAIU). By contrast, insisting on a function value > > instead of the default nil forces me to go through at least one more > > level of indirection when I need to understand what happens in a > > function that references such variables, which sounds like a more > > serious trouble from my POV. > > It's just one more level of indirection. We routinely deal with dozens > of them. Each one is an additional annoyance, making maintenance harder. Given enough levels of indirection, it is practically impossible to understand what the code does just by looking at the source; you need to actually step through it in a debugger. And that makes maintenance a PITA, and in some cases might cause me to give up on a problem in despair. > This above rule should just be adhered consistently, and the > indirection won't be a surprise every time. There's no surprise here, only the annoying need to wade through indirection levels. > On the plus side, you might get a smaller function that calls the > -default one, because some code will be extracted. That's only a plus when you need to write that code, not when you need to understand or debug it. > Finally, the default value of save-some-buffers-default-predicate can be > #'ignore or #'identity (it's either this, or the previous paragraph, I'm > not familiar with the code enough to be sure). For predicates that need to return nil or t, the default value might be ridiculous, if it has to be wrapped in a function. > > I was up to my neck in this when I > > needed to document all the various optional behaviors implemented in > > isearch.el, and bumped into similar issues several times elsewhere. > > isearch.el and etags.el have more egregious problems, such as extensive > use of dynamic bindings. Yes, and using indirection doesn't help there. From MAILER-DAEMON Sat Jan 28 11:51:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXWDs-0007Oj-Vm for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 11:51:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45157) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWDq-0007Oc-Fv for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:51:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXWDp-0001og-7d for emacs-devel@gnu.org; Sat, 28 Jan 2017 11:51:30 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:19399) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXWDW-0001gR-2D; Sat, 28 Jan 2017 11:51:24 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0ByNQAu3EVY/0gvq8BdGgEBAQECAQEBAQgBAQEBgyoOAQEBAQEfhFuFVJwCJgGWXoYcBAICghFEEAECAQEBAQEBAWIoQhIBhBQBBAFWIwULCzQSFBgNJIh6CK0Ui0QBAQgCJYsZigseBY98imqbGoY6kg82IHgTDoVzIIYxgnwBAQE X-IPAS-Result: A0ByNQAu3EVY/0gvq8BdGgEBAQECAQEBAQgBAQEBgyoOAQEBAQEfhFuFVJwCJgGWXoYcBAICghFEEAECAQEBAQEBAWIoQhIBhBQBBAFWIwULCzQSFBgNJIh6CK0Ui0QBAQgCJYsZigseBY98imqbGoY6kg82IHgTDoVzIIYxgnwBAQE X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="290682524" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 28 Jan 2017 11:51:07 -0500 Received: by pastel.home (Postfix, from userid 20848) id B52776574D; Sat, 28 Jan 2017 11:51:07 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Cc: emacs-devel@gnu.org Subject: Re: Change in files.el Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> Date: Sat, 28 Jan 2017 11:51:07 -0500 In-Reply-To: <8360kzyxor.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 28 Jan 2017 18:08:20 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 16:51:31 -0000 >> >> - More generally, so that you can slightly change its behavior without >> >> having to re-implement the default behavior by hand. >> >> - Also, so as to make sure that it is *possible* to reimplement >> >> the default behavior by hand (i.e. to make sure the predicate has >> >> access to all the info it needs to reproduce the default >> >> behavior). >> > These sound minor to me (and the last two are also possible without >> > the requirement, AFAIU). >> Hmm... how do you get the last two without that requirement? > Are we still talking about a predicate, i.e. a function that returns > either t or nil? If so, I think the last two are so trivial that I > don't know where to begin answering your question. I don't see what the form of the return value changes to the problem. Regarding "More generally, so that you can slightly change its behavior without having to re-implement the default behavior by hand": - what code would you write which preserves the behavior except that it logs all calls to some global variable? - what code would you write which preserves the behavior except that it returns nil for one specific buffer? Regarding "Also, so as to make sure that it is *possible* to reimplement the default behavior by hand": in my experience trying to change *-function to default to a non-nil value, it often happens that the preexisting default behavior *cannot* be implemented faithfully (or without a lot of extra gymnastic) because it relies on some local variable which is not passed as argument to the predicate. The situation is often worse when the code is written in C, where the fix sometimes involves exporting new vars to Elisp, an that sometimes proves problematic because that var was not designed to be accessible to random code. > (defcustom save-some-buffers-default-predicate #'some-func > ...) > > (if save-some-buffers-default-predicate DO-SOMETHING) [ Side note: "(if save-some-buffers-default-predicate ...)" is already a bad idea. the only thing you should do with such a var is pass it to `funcall` or `apply`. ] > requires me to go and look at some-func, which is "one more level of > indirection". I see what you mean. Yes, the default behavior ends up moved into its own function. I'm surprised you feel so strongly about it, tho, because it never caused me such trouble. When debugging a specific execution, I'm usually doing it with Edebug, and indeed it might require some extra instrumentation step to get Edebug to enter `some-func`, but that hasn't been terribly annoying (otherwise, I'd have gotten around around to making `i` work on funcall to automate the extra step). And when just reading the code without any specific execution in mind, I typically don't look at the value of save-some-buffers-default-predicate at all since the code should work correctly regardless of that value and the same problem shows up if the (funcall save-some-buffers-default-predicate) is replaced by (if save-some-buffers-default-predicate (funcall save-some-buffers-default-predicate ..args..)) ..do-the-default-thing..) -- Stefan From MAILER-DAEMON Sat Jan 28 12:11:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXWXE-0006fL-TB for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 12:11:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWXC-0006ez-0I for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:11:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXWX7-0007RA-Er for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:11:29 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38708) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWX7-0007R3-BJ; Sat, 28 Jan 2017 12:11:25 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2137 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXWX6-0003bg-3J; Sat, 28 Jan 2017 12:11:25 -0500 Date: Sat, 28 Jan 2017 19:11:12 +0200 Message-Id: <83ziibxg7j.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 11:51:07 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 17:11:31 -0000 > From: Stefan Monnier > Cc: emacs-devel@gnu.org > Date: Sat, 28 Jan 2017 11:51:07 -0500 > > >> > These sound minor to me (and the last two are also possible without > >> > the requirement, AFAIU). > >> Hmm... how do you get the last two without that requirement? > > Are we still talking about a predicate, i.e. a function that returns > > either t or nil? If so, I think the last two are so trivial that I > > don't know where to begin answering your question. > > I don't see what the form of the return value changes to the problem. The default behavior is just the value t or nil, so reproducing the default behavior is trivial. E.g., in the case in point the default behavior is to always ask the user about every buffer, i.e. the default implementation simply always returns t. > Regarding "More generally, so that you can slightly change its > behavior without having to re-implement the default behavior by hand": > - what code would you write which preserves the behavior except that it > logs all calls to some global variable? > - what code would you write which preserves the behavior except that it > returns nil for one specific buffer? Here, everything you write in a non-default implementation belongs to the new functionality; the original functionality is a constant value returned unconditionally, and it's trivial to write. > Regarding "Also, so as to make sure that it is *possible* to reimplement > the default behavior by hand": in my experience trying to change > *-function to default to a non-nil value, it often happens that the > preexisting default behavior *cannot* be implemented faithfully (or > without a lot of extra gymnastic) because it relies on some local > variable which is not passed as argument to the predicate. Once again, the default behavior of a predicate is just t or nil, so I don't think I understand what you ware talking about here. > I see what you mean. Yes, the default behavior ends up moved into its > own function. I'm surprised you feel so strongly about it, tho, because > it never caused me such trouble. > > When debugging a specific execution, I'm usually doing it with Edebug, Tye need to use a debugger instead of just reading the code is already a huge annoyance, which tremendously slows down problem-solving, due to the need to arrange for some reproduction recipe, and then step through the code. > And when just reading the code without any specific execution in > mind, I typically don't look at the value of > save-some-buffers-default-predicate at all since the code should > work correctly regardless of that value Debugging a problem does not necessarily need to consider all possible values, it typically considers only one -- the one that causes the problem you are debugging. So it matters a lot whether you can understand what happens with that specific value, and indeed what _is_ that value, when the problem hits. In a vast majority of cases, you only have the final result in the user report: an error message or some incorrect output, and need to work your way back from that to the conditions and the logic which failed. Each indirection is one more obstacle in this analysis, and given enough of them the analysis becomes practically impossible (unless you are already well familiar with the code in question). From MAILER-DAEMON Sat Jan 28 12:23:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXWiv-0002PB-2N for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 12:23:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48460) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWis-0002Od-SH for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:23:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXWip-00039z-D6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:23:34 -0500 Received: from [195.159.176.226] (port=49803 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXWip-00038w-6b for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:23:31 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXWiI-0004L3-3D for emacs-devel@gnu.org; Sat, 28 Jan 2017 18:22:58 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Change in files.el Date: Sat, 28 Jan 2017 12:22:48 -0500 Lines: 30 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:i/oGXh0c0oTJyGbb12vQsGB/euE= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 17:23:35 -0000 >> I don't see what the form of the return value changes to the problem. > The default behavior is just the value t or nil, so reproducing the Sorry, I thought you were saying that the predicate's return value can only be nil or t, not that the predicate always returns the same value. Yes, in that case the default behavior is trivial, so it's easy to reproduce it by hand. Tho, of course, if that default behavior ever changes, then your manual reproduction of it will go stale. I was arguing the general case rather than only the specific case of save-some-buffers-default-predicate. >> I see what you mean. Yes, the default behavior ends up moved into its >> own function. I'm surprised you feel so strongly about it, tho, because >> it never caused me such trouble. >> When debugging a specific execution, I'm usually doing it with Edebug, > The need to use a debugger instead of just reading the code is already > a huge annoyance, I never felt like the need to run Edebug was caused by such additional indirections, so while I agree that it's great when I can debug the code just by reading it, I wouldn't attribute the annoyance of running Edebug to the kind of guideline I'm advocating. Anyway, I definitely see what you mean. I just disagree on the seriousness of the problem, and on the impact of the guideline on it. Stefan From MAILER-DAEMON Sat Jan 28 12:30:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXWpe-0004Ig-M1 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 12:30:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWpb-0004IW-PS for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:30:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXWpY-0007GQ-Gu for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:30:31 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39014) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXWpY-0007GI-Dj; Sat, 28 Jan 2017 12:30:28 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2147 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXWpX-0001qX-2H; Sat, 28 Jan 2017 12:30:28 -0500 Date: Sat, 28 Jan 2017 19:30:15 +0200 Message-Id: <83y3xvxfbs.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 12:22:48 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 17:30:32 -0000 > From: Stefan Monnier > Date: Sat, 28 Jan 2017 12:22:48 -0500 > > Anyway, I definitely see what you mean. I just disagree on the > seriousness of the problem, and on the impact of the guideline on it. The issue is not serious enough to prevent people from using the methods you'd like to see, but I question the wisdom of having a project-wide guidelines to _always_ use them is similar situations. From MAILER-DAEMON Sat Jan 28 12:42:45 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXX1R-0000RP-Dp for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 12:42:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXX1P-0000QT-MQ for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:42:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXX1M-00042b-Kj for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:42:43 -0500 Received: from [195.159.176.226] (port=33866 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXX1M-000425-Dm for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:42:40 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXX1A-0006kp-Kg for emacs-devel@gnu.org; Sat, 28 Jan 2017 18:42:28 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Change in files.el Date: Sat, 28 Jan 2017 12:42:22 -0500 Lines: 20 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:PtgVywcW75PezWsZaXGwQxJBXXc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 17:42:45 -0000 >> Anyway, I definitely see what you mean. I just disagree on the >> seriousness of the problem, and on the impact of the guideline on it. > The issue is not serious enough to prevent people from using the > methods you'd like to see, but I question the wisdom of having a > project-wide guidelines to _always_ use them is similar situations. I think the benefits are the following: - (eventually) more consistency, such as knowing that you can use `add-function` will work right on any *-predicate or *-function variable. - until recently, it was common for such variables to have a nil default value. Without an active effort to reverse this, we'll always end up with such new variables introduced with a nil default value (especially since it's very common for new such variables to have a trivial default behavior, and only accumulating complexity later on, at which point it's a lot more difficult to change the default to be non-nil). Stefan From MAILER-DAEMON Sat Jan 28 12:53:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXXC1-0003p8-MC for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 12:53:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53427) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXXBy-0003p1-KT for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:53:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXXBt-0001SZ-PW for emacs-devel@gnu.org; Sat, 28 Jan 2017 12:53:38 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39184) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXXBt-0001SV-MA; Sat, 28 Jan 2017 12:53:33 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2359 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXXBs-0004e3-SB; Sat, 28 Jan 2017 12:53:33 -0500 Date: Sat, 28 Jan 2017 19:53:25 +0200 Message-Id: <83wpdfxe96.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 12:42:22 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 17:53:40 -0000 > From: Stefan Monnier > Date: Sat, 28 Jan 2017 12:42:22 -0500 > > > The issue is not serious enough to prevent people from using the > > methods you'd like to see, but I question the wisdom of having a > > project-wide guidelines to _always_ use them is similar situations. > > I think the benefits are the following: > - (eventually) more consistency, such as knowing that you can use > `add-function` will work right on any *-predicate or > *-function variable. > - until recently, it was common for such variables to have a nil > default value. Without an active effort to reverse this, we'll always > end up with such new variables introduced with a nil default value > (especially since it's very common for new such variables to have > a trivial default behavior, and only accumulating complexity later > on, at which point it's a lot more difficult to change the default to > be non-nil). I'm saying that the benefits do not necessarily outweigh the downsides, at least IME. And since the goal of having this consistently everywhere is not really achievable in practice, given our development and maintenance procedures, we are buying disadvantages on account of an advantage that will never materialize. From MAILER-DAEMON Sat Jan 28 13:41:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXXwR-00021D-Tb for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 13:41:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60222) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXXwP-0001w6-D7 for emacs-devel@gnu.org; Sat, 28 Jan 2017 13:41:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXXwM-0001lL-Ap for emacs-devel@gnu.org; Sat, 28 Jan 2017 13:41:37 -0500 Received: from mail-qk0-x22d.google.com ([2607:f8b0:400d:c09::22d]:35487) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXXwM-0001l2-55 for emacs-devel@gnu.org; Sat, 28 Jan 2017 13:41:34 -0500 Received: by mail-qk0-x22d.google.com with SMTP id u25so93466882qki.2 for ; Sat, 28 Jan 2017 10:41:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2HhvEAIiHCh8ux6ksEyEah8BIeOPCwGbEpgeWlt+Sa0=; b=s8DjtQe5e/FnYz67A0exl4c+tx5RFAWCL9nDXeLhytEbvA8cjC7LZXxaEcdmnUAYcS YQE08XOm3GKONXQZob6uIFTWwQNWwGAx9Z2fFpUUf5FlwCvox7zmqffDZJfyvkQI5YY1 AzRMHw2NxoIyAs/BHdMMWa2UPpeZSi+5m60vc3aYLqnhTpGLT51izVEi1s6ITzpcAKRi NlVZ9rpmjWbek0iPnqko+3jVP25Khb0VWKRBIAfMnIWq6Cyt1LusYL3YOYuDy9LdvQd9 9UD2MT5/QAuablwEv/6fUqyw5ZZUz7L0R7H9+oFreYx1l1wA9DDKmqbKhFeCGp6FTlLR e2RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2HhvEAIiHCh8ux6ksEyEah8BIeOPCwGbEpgeWlt+Sa0=; b=ctDK6ZqicHPX1gQl7HAseax71XsQQgcvlYfGtEIMoKlJO2S4b7eaHG8zv8y8vbQcF6 lT672PVu3zbmbhyRhn4HQUOVoeVy/s2/XUW4jCpK7PNLgMAxIi8XR1W/4Y0b57SwvQ6k uY8Dyo2bc0qtXrqdK9Zwt52hOFJ6YdiKSsyHSOn0h2SmqRRK2sBrh+jyKVI27LxWhlLT VLWerOrNpwgRPEYByEKvZV1KHOvMNk3M2/YUn4Yd7g9nJ++z6EF8PrLUarI+ERgiLkHQ //9y5ApNoAsZTg3fMyovkjRO0zeiENxjBg71v9GKYZGvOgdD8Lr1MmcE7D+K+VIY2f1d KHrg== X-Gm-Message-State: AIkVDXJnSFvOX8Bw83kQXrLJvt8ezFfzwT2mFV4UBAjN+XmG2pBLMNfGeI+Vv83JhHk6yB61 X-Received: by 10.55.5.11 with SMTP id 11mr14390317qkf.262.1485628893399; Sat, 28 Jan 2017 10:41:33 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id i187sm7275030qkd.20.2017.01.28.10.41.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 10:41:32 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 8A29D66372; Sat, 28 Jan 2017 13:41:31 -0500 (EST) From: Mark Oteiza To: Stefan Monnier Cc: Eli Zaretskii , emacs-devel@gnu.org Subject: Re: Change in files.el References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> Date: Sat, 28 Jan 2017 13:41:31 -0500 In-Reply-To: (Stefan Monnier's message of "Sat, 28 Jan 2017 12:42:22 -0500") Message-ID: <87bmurjack.fsf@udel.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 18:41:38 -0000 Stefan Monnier writes: >>> Anyway, I definitely see what you mean. I just disagree on the >>> seriousness of the problem, and on the impact of the guideline on it. >> The issue is not serious enough to prevent people from using the >> methods you'd like to see, but I question the wisdom of having a >> project-wide guidelines to _always_ use them is similar situations. > > I think the benefits are the following: > - (eventually) more consistency, such as knowing that you can use > `add-function` will work right on any *-predicate or > *-function variable. > - until recently, it was common for such variables to have a nil > default value. Without an active effort to reverse this, we'll always > end up with such new variables introduced with a nil default value > (especially since it's very common for new such variables to have > a trivial default behavior, and only accumulating complexity later > on, at which point it's a lot more difficult to change the default to > be non-nil). Wasn't the reason any of these defaults changed simply so that add-function would work? Having the default be ignore suggests that one can/should always funcall a FOO-function, and its arguments (should it have any) will be evaluated. In order to avoid this we now have to check (as is the case in eldoc) if FOO-function is equal to nil or ignore. From MAILER-DAEMON Sat Jan 28 14:37:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXYoR-00025m-8L for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 14:37:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXYoP-00024G-7d for emacs-devel@gnu.org; Sat, 28 Jan 2017 14:37:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXYoM-0005nH-5Q for emacs-devel@gnu.org; Sat, 28 Jan 2017 14:37:25 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39973) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXYoM-0005nD-2F; Sat, 28 Jan 2017 14:37:22 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2432 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXYoK-0004BG-NN; Sat, 28 Jan 2017 14:37:21 -0500 Date: Sat, 28 Jan 2017 21:37:08 +0200 Message-Id: <83sho3x9gb.fsf@gnu.org> From: Eli Zaretskii To: Mark Oteiza CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <87bmurjack.fsf@udel.edu> (message from Mark Oteiza on Sat, 28 Jan 2017 13:41:31 -0500) Subject: Re: Change in files.el Reply-to: Eli Zaretskii References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <87bmurjack.fsf@udel.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 19:37:26 -0000 > From: Mark Oteiza > Date: Sat, 28 Jan 2017 13:41:31 -0500 > Cc: Eli Zaretskii , emacs-devel@gnu.org > > Wasn't the reason any of these defaults changed simply so that > add-function would work? Why is it important to support add-function, when we already have a variable that can be assigned a function value? If someone wants to customize the feature which will call a variable's value if non-nil, they just need to write a function which does what they want and assign it to that variable, no need for add-function. What am I missing? From MAILER-DAEMON Sat Jan 28 15:06:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXZGV-0002aw-K4 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 15:06:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39430) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXZGR-0002Zh-LW for emacs-devel@gnu.org; Sat, 28 Jan 2017 15:06:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXZGQ-0001pZ-Q3 for emacs-devel@gnu.org; Sat, 28 Jan 2017 15:06:23 -0500 Received: from mail-yb0-x244.google.com ([2607:f8b0:4002:c09::244]:36761) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXZGQ-0001p0-L7 for emacs-devel@gnu.org; Sat, 28 Jan 2017 15:06:22 -0500 Received: by mail-yb0-x244.google.com with SMTP id f67so9724742ybc.3 for ; Sat, 28 Jan 2017 12:06:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2/MKKkJVv9fOi/iEu6sTLm8D6WeLxrw8e8x4G07a8aY=; b=vMY7RsgsmdRWJXPBGxYN2AQg4PMeM2NvbDTpAy4qBkUznKPYUBddwN9O4HizgK0yzi Sb/W42ONkBpIDnoZ27kLzRzUPch+3JBj1hrHYW6kz80hgXGgc0zxH0v/AwHXh9csh+zk 2WLfi1ZrauidSSEhyNIh4TvYs3bn8AnZ7KPk3Lkai0FRxMBy9lCwon9noXHML/fJ5/KV rRj3up3U3ipRD9A1R+eee3f6MGFqbMqefNc7rQnsFXUupCDWFOYsqwONg9pEwM0Ks/jK Yn/JwuUyr+pt4epROQ9e4OXLFI2VQnS7susUiVlMLfcAwo8se3rMSMS1lJAGmd90KAsG 2MlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2/MKKkJVv9fOi/iEu6sTLm8D6WeLxrw8e8x4G07a8aY=; b=o5b5OtJXwuH169Dbxitl8EByN7VdXOBe99Nv9Xm1fjHe5IfA/6dbaNDgh2PLdqPzpC m5zW/1cHBWA0fDoZf7nZqyVt9aQvnz+xG2lF1SVWwqRMsaBHqloP9N91www9bLE//kty ULi0E5YgsqUqS0RVT8RhjRNSLcyAt3IU1cie7+yOjVrc3SlNmPQQAMzEbmWI+YhvLQeG QziAC892cG4uTkS8ov6yyn5nWP/fKbC3Mk6df6jRTsUqEi5nrC9j5o3yS9wVnkWJA1iP ILUkQa/ryekXZ8UtW3Z/NjEl8r5BPzJKFuwYqSoA+oFVaz2f4SAABmyiKoKHY6TBsmqP 4wQw== X-Gm-Message-State: AIkVDXI25Znn9sW8ugmODdn7L9lD70+ge+TOW1hzRj1fCWfFbgFbBixIicinwvFkUr+X0FW93qe3g/CgdVFtLA== X-Received: by 10.37.211.20 with SMTP id e20mr5589951ybf.99.1485633980582; Sat, 28 Jan 2017 12:06:20 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Vibhav Pant Date: Sat, 28 Jan 2017 20:06:09 +0000 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=94eb2c14812cadd1ea05472d1d3e X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4002:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 20:06:24 -0000 --94eb2c14812cadd1ea05472d1d3e Content-Type: text/plain; charset=UTF-8 On Sat 28 Jan, 2017, 8:28 PM Stefan Monnier, wrote: > Unless we arrange to keep track of those hash-tables > which are referenced from purespace. We already do that for symbols, so > maybe we can extend/generalize that mechanism (probably a good idea). > Where is this implemented? I could use this to do the same for hash tables. > --94eb2c14812cadd1ea05472d1d3e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Sat 28 Jan, 2017, 8:= 28 PM Stefan Monnier, <monni= er@iro.umontreal.ca> wrote:
= Unless we arrange to keep track of those hash-tables
which are referenced from purespace.=C2=A0 We already do that for symbols, = so
maybe we can extend/generalize that mechanism (probably a good idea).

Where is this impl= emented? I could use this to do the same for hash tables.
--94eb2c14812cadd1ea05472d1d3e-- From MAILER-DAEMON Sat Jan 28 16:01:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXa7I-0004lu-PL for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 16:01:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXa7C-0004ir-KW for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:00:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXa78-0006hi-2z for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:00:54 -0500 Received: from randomsample.de ([5.45.97.173]:32953) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXa77-0006gg-OS for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:00:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=Lf+NDcaDdmFiFhHbkkucNUKXqoAv51zqOsK8k6VD+YY=; b=BORB3LXD0y04OCnfFtJyrdgk3bagn0iKs//PkVBgMgkcWoyMZz2nQ65nF68VUK3qqCZ1Amm2Du4UBDSHV9xVdaAjYyi83Wr0b/PdPPNGtxrGaRipdKbHwYv6oQkWYMER; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXa73-0000Fh-UZ; Sat, 28 Jan 2017 22:00:46 +0100 From: David Engster To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Disable emacs-diffs mails for scratch branches In-Reply-To: (Stefan Monnier's message of "Sat, 28 Jan 2017 10:35:01 -0500") References: <87sho3zewk.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sat, 28 Jan 2017 22:00:39 +0100 Message-ID: <87o9yqzyq0.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 21:00:59 -0000 Stefan Monnier writes: >> Subject says it all. Could we please do that? I think it's pretty normal >> for scratch-Branches being deleted and pushed anew, and for large >> branches like cedet-merge or cedet-tests this needlessly creates >> hundreds of mails each time. > > I agree that those 300 emails dumps are more annoying than useful. > But FWIW, I see two problems with your suggestion: > 1- I don't know how to do it. We'd have to adapt the post-receive hook, or whatever else is triggering the mails. > 2- I do find it very useful to see commits on scratch branches when > those branches are used for gradual development (e.g. the byte-switch > branch). How about simply not naming those branches with the 'scratch' prefix, then? I was under the impression that 'scratch' means "can be force-pushed/deleted any time, don't base your work onto it". -David From MAILER-DAEMON Sat Jan 28 16:05:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXaBM-0007dL-8V for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 16:05:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45671) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXaBG-0007Va-AF for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:05:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXaBB-0000J0-GF for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:05:06 -0500 Received: from mail-qt0-x22c.google.com ([2607:f8b0:400d:c0d::22c]:32826) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXaBB-0000Ic-9d for emacs-devel@gnu.org; Sat, 28 Jan 2017 16:05:01 -0500 Received: by mail-qt0-x22c.google.com with SMTP id v23so175253052qtb.0 for ; Sat, 28 Jan 2017 13:04:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=qJqI2vAvZsPtLvuMdgxNSzAtoZaSmndI850epuF4qb8=; b=NXjnWnr8w/AIq8fgQzVr/t4wOUidbheKHGjgtp8RPxmOPaZeAiKBdj4zPmSxAdwiUf zy3ugyzHo4s5qY2O76UIB26dB4bl+ucrHQUEVGGSbd7l0WwkLGpmzPJIrSsC98p6GFMV x4kXptQrA0mfSQgotNHlFG/I7nIiblHoy+hRkmcb9uP9I4+pDS3KfSZ4KMJBeyByYO7g ECoa2aih9ArBCnc39tGvW5sjICXMAKd6MrYpuM1oEypV7DKi5urzpoSUFyzt5rKJ1Gsn yoYvpTJ8OhamNWA2gqFffZHWAs8jjz76eHKxmjA8AtYoWfDrrh91B0l/UnJQBT3Gck6U XZuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=qJqI2vAvZsPtLvuMdgxNSzAtoZaSmndI850epuF4qb8=; b=S1X2ioXO1tEm1Fep63QCCfkeYjas3ESf3c5j0Ru6C6aU74WLsf1bAMWNNRBm9eOc+U Zh9euZaD8glFfwkNxM/mzpj5i7suwT/gBenAsi0UeaQCMMsCbES13r5gI+zPOnnDUs+a jm/f363yU7JRzDKp3h/DDkIeR0u2aVkRWQ1gZGcBnLVfPECIJQbqSQX/dV/l01Gw6qWj fsqzSlRe4dNrAGHKR3zVFD6/JvlTeTYx+u8S9hv9nLNU577W4D1kCdkT/UResSll9kfZ zj6Rd3w5xt8BRdhNjdmRWlzTBY/rAHqYx1je2UVAbksw/oGL3Kg3TcOVjwyquONCpmUm plXg== X-Gm-Message-State: AIkVDXJ2HkBBN25wWu9mK/7P9nzovjjZ1IMarwzE7Yzt4k2/TE7ehks/P5YLoM8R1Z2ynIjI X-Received: by 10.200.51.100 with SMTP id u33mr14022843qta.110.1485637498513; Sat, 28 Jan 2017 13:04:58 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id s75sm7539428qka.36.2017.01.28.13.04.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 13:04:57 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id B56006622C; Sat, 28 Jan 2017 16:04:56 -0500 (EST) Date: Sat, 28 Jan 2017 16:04:56 -0500 From: Mark Oteiza To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: [PATCH] checking eww download directory Message-ID: <20170128210456.GA16992@holos.localdomain> References: <87wpdgmi84.fsf@udel.edu> <87inp08g2b.fsf@mouse> <20170127194816.GA18966@holos.localdomain> <87lgtv6zm1.fsf@mouse> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87lgtv6zm1.fsf@mouse> User-Agent: Mutt/1.7.2+27 (e4ad1dc9bfbd) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jan 2017 21:05:11 -0000 On 28/01/17 at 03:14pm, Lars Ingebrigtsen wrote: > Mark Oteiza writes: > > > I just went off of knowing it's called Downloads in windows, and trying > > to consider plural/nonplural and case insensitivity on Linux. Mine, for > > instance is just lower cased. So... the cl-some is probably overkill. > > I think it's a good idea to try to find the "downloads" directory on the > host system, but I think this should be factored out into its own > function, so that we can use it in similar circumstances elsewhere. Fair, I'll leave it. > Or perhaps there aren't any other directories like that? Hm... well, > "documents", perhaps, and "desktop"... > > >> > + (access-file eww-download-directory "Download failed") > >> > >> Seem OK, except that the error message should say what the error is > >> instead of this. > > > > It does, access-file appends the error: > > > > Download failed: No such file or directory, ~/NOWOAIWJD > > Oh, cool. Perhaps this line from the doc string could be clearer: Yep, useful function. I changed the docstring words to "prepended to" From MAILER-DAEMON Sat Jan 28 19:20:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXdES-00008A-Kr for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 19:20:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38622) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXdEP-00007x-IU for emacs-devel@gnu.org; Sat, 28 Jan 2017 19:20:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXdEM-0002qj-OI for emacs-devel@gnu.org; Sat, 28 Jan 2017 19:20:33 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41851) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXdEM-0002qd-G2 for emacs-devel@gnu.org; Sat, 28 Jan 2017 19:20:30 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cXdEL-0001Lw-VB; Sat, 28 Jan 2017 19:20:30 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: emacs-devel@gnu.org Subject: Docker Hub requires nonfree software to log in Reply-to: rms@gnu.org Message-Id: Date: Sat, 28 Jan 2017 19:20:29 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 00:20:36 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Mike Gerwitz reports that logging in on Docker Hub requires running nonfree Javascript software. While people don't need to log in to download images there, our putting an image there implies that we run that nonfree software. Why not distribute that image from a GNU Project server instead? It will work just the same. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sat Jan 28 19:21:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXdFZ-0001KZ-Qw for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 19:21:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39331) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXdFX-0001CG-Rl for emacs-devel@gnu.org; Sat, 28 Jan 2017 19:21:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXdFU-0003Er-Ut for emacs-devel@gnu.org; Sat, 28 Jan 2017 19:21:43 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41899) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXdFR-0003Dn-3E; Sat, 28 Jan 2017 19:21:37 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cXdFQ-0001Y7-Gp; Sat, 28 Jan 2017 19:21:36 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Stefan Monnier CC: eliz@gnu.org, emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sat, 28 Jan 2017 09:40:11 -0500) Subject: Re: Change in files.el Reply-to: rms@gnu.org References: <83mvebzh0k.fsf@gnu.org> Message-Id: Date: Sat, 28 Jan 2017 19:21:36 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 00:21:44 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > - So that you don't have to wrap each and every use inside an `if'. But...that use is already inside an `if'. This is the default for an argument which already can be nil. > - Or so you don't have to fix the docstring to say what happens when the > value is nil. I don't think it is necessary. > - Or so you can use `add-function' on it. But you can't do that anyway. > - More generally, so that you can slightly change its behavior without > having to re-implement the default behavior by hand. But `save-some-buffers' already implements the default behavior, since 1984. > - Also, so as to make sure that it is *possible* to reimplement the > default behavior by hand (i.e. to make sure the predicate has access to all > the info it needs to reproduce the default behavior). I don't think it is worth doing this much extra work merely to introduce a default value for the argument PRED. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sat Jan 28 20:01:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXdsV-0004hu-Ra for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 20:01:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXdsT-0004hY-0S for emacs-devel@gnu.org; Sat, 28 Jan 2017 20:01:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXdsP-0004qA-As for emacs-devel@gnu.org; Sat, 28 Jan 2017 20:01:57 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35200) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXdsP-0004py-2s for emacs-devel@gnu.org; Sat, 28 Jan 2017 20:01:53 -0500 Received: by mail-qk0-x244.google.com with SMTP id u25so14081443qki.2 for ; Sat, 28 Jan 2017 17:01:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=NsWQ12WHogmfHZ+vf2Abo5zJjw4J2whvrQI7PE6gMDQ=; b=q283FnDicaJJx1nHETn4zsPEQRlGaOsRwUsfQAgrCddr9G+2AbIv4nNIsmtP4Uq/0l EnGOFmQV8KyO6G+f5JUX6B+ZAYhRBTfyJ4G5mKwnVII5agCBBWrBDatqc72/HGlYQKRE KwPBlM+r0BTGNaFZc1ygs/mZLC5DWQ0zad/JIdiCxsB9+tu5zaOUo0b+FEiXrfNPW210 KeNO8jp9D+pD09cpkUfefUr9StWrq0O9yVtGNdinfsiL/SSguFOs96JHSK6zrWsU1QHj BWutdPN0SSMxSTELbt+dQvK0cLGo3T8M7U+ST3axJMdXV1GtCQhIRDT2qDe6FasFOGWl jBGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=NsWQ12WHogmfHZ+vf2Abo5zJjw4J2whvrQI7PE6gMDQ=; b=fYrDBHlJRf1DWeqTuJKTBaEqgdiz9RgcODdWW35QT5YvmSSp+eB8pHpyOtPMaXqPrJ Suw+UHeQ9SAr0FlHwQvIrnW3SFu9xAEnrN7OSgtvS5TB0NDfpQItnmL5nf0fXUSDfEft B2/sRBSRsmx7bDklwuCauMv4efgepV/eb49eXYSqq9sF8Bub41S+o2mkuPYuHySLHiXc 4PEuc+1+G0iAbEE8EMDBuBl/7NR2XdbNujSX1vfjbl3oGR+p0Z91fdUU6ynWGG3xz8os zPM0hCJtG656Lcn7uWWyqPqmfzfhv+/MWLdFCXG7xmannMJefldKTG7RYsOQ8rLUgJkF nayA== X-Gm-Message-State: AIkVDXK/fOwooY8DvV8BEpdj4ke5v1OQ3meweLhM7G1LzzaSuy98cqhaiChq31hyjs37yqco X-Received: by 10.55.22.77 with SMTP id g74mr16412889qkh.54.1485651712343; Sat, 28 Jan 2017 17:01:52 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id z123sm5485622qkd.45.2017.01.28.17.01.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 17:01:51 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 081126622C; Sat, 28 Jan 2017 20:01:50 -0500 (EST) Date: Sat, 28 Jan 2017 20:01:50 -0500 From: Mark Oteiza To: Eli Zaretskii Cc: cpitclaudel@gmail.com, emacs-devel@gnu.org Subject: Library for XDG things (was Re: [PATCH] checking eww download directory) Message-ID: <20170129010150.GB16992@holos.localdomain> References: <87wpdgmi84.fsf@udel.edu> <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> <87mvecntq1.fsf@udel.edu> <83r33nzkkx.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83r33nzkkx.fsf@gnu.org> User-Agent: Mutt/1.7.2+27 (e4ad1dc9bfbd) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 01:01:58 -0000 On 28/01/17 at 09:53am, Eli Zaretskii wrote: > > From: Mark Oteiza > > Date: Fri, 27 Jan 2017 15:17:10 -0500 > > Cc: emacs-devel@gnu.org > > > > > How hard would it be to integrate with the xdg-user-dirs standard > > > instead? On many GNU/Linux systems, running "xdg-user-dir DOWNLOAD" is > > > enough (http://stackoverflow.com/questions/13161226/). This would > > > make eww consistent with Firefox, too (they take the slightly more > > > painful route of parsing ~/.config/user-dirs.dirs: > > > https://dxr.mozilla.org/mozilla-release/source/xpcom/io/SpecialSystemDirectory.cpp#256) > > > > An xdg.el would be nice to have for elisp that interfaces > > with XDG-following things. mpc.el and image-dired.el are two files that > > come to mind: mpd follows [0], image-dired > > supports [1]. Actually, it looks like those are the only two files with > > XDG bits, and I put them there. How about that. > > > > Anyways, these aren't difficult to implement. If it would be a welcome > > addition I'd have a go at writing it. > > > > [0] https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html > > [1] https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html > > This has come up before. I think this would be welcome, but one issue > that didn't get resolved is how much of that should be automatic > (i.e. should Emacs automatically search certain directories for > certain kinds of files), and if so, how to split the imaginary xdg.el > into two parts, with the automatic part living in some preloaded file > (probably files.el). There's also the issue of whether users and/or > Lisp programs should be able to disable this search (e.g., by binding > some variable). Sounds like a daunting goal. I imagine having XDG bits preloaded would only really be necessary if Emacs decided it was going to follow the base directory spec (and probably only on GNU/Linux). In the mean time, the following is a small library of some useful functions. At least for the base directory spec it remains rather low level as the standard gives a lot of freedom to how applications want to handle multiple locations of config/data: ;;; xdg.el --- XDG specification and standard library -*- lexical-binding: t -*- ;; Copyright (C) 2017 Mark Oteiza ;; Author: Mark Oteiza ;; Keywords: files, data ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License ;; as published by the Free Software Foundation; either version 3 ;; of the License, or (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Library providing some convenience functions for the following XDG ;; standards and specifications ;; ;; - XDG Base Directory Specification ;; - Thumbnail Managing Standard ;; - xdg-user-dirs configuration ;;; Code: ;; XDG Base Directory Specification ;; https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html (defmacro xdg--dir-home (environ default-path) (declare (debug (stringp stringp))) (let ((env (make-symbol "env"))) `(let ((,env (getenv ,environ))) (if (or (null ,env) (not (file-name-absolute-p ,env))) (expand-file-name ,default-path) ,env)))) (defun xdg-config-home () "Return the base directory for user specific configuration files." (xdg--dir-home "XDG_CONFIG_HOME" "~/.config")) (defun xdg-cache-home () "Return the base directory for user specific cache files." (xdg--dir-home "XDG_CACHE_HOME" "~/.cache")) (defun xdg-data-home () "Return the base directory for user specific data files." (xdg--dir-home "XDG_DATA_HOME" "~/.local/share")) (defun xdg-runtime-dir () "Return the value of $XDG_RUNTIME_DIR." (getenv "XDG_RUNTIME_DIR")) (defun xdg-config-dirs () "Return the config directory search path as a list." (let ((env (getenv "XDG_CONFIG_DIRS"))) (if (or (null env) (string= env "")) '("/etc/xdg") (parse-colon-path env)))) (defun xdg-data-dirs () "Return the data directory search path as a list." (let ((env (getenv "XDG_CONFIG_DIRS"))) (if (or (null env) (string= env "")) '("/usr/local/share/" "/usr/share/") (parse-colon-path env)))) ;; Thumbnail Managing Standard ;; https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html (defun xdg-thumb-uri (filename) "Return the canonical URI for FILENAME. If FILENAME has absolute path /foo/bar.jpg, its canonical URI is file:///foo/bar.jpg" (concat "file://" (expand-file-name filename))) (defun xdg-thumb-name (filename) "Return the appropriate thumbnail filename for FILENAME." (concat (md5 (xdg-thumb-uri filename)) ".png")) (defun xdg-thumb-mtime (filename) "Return modification time of FILENAME as integral seconds from the epoch." (floor (float-time (nth 5 (file-attributes filename))))) ;; XDG User Directories ;; https://www.freedesktop.org/wiki/Software/xdg-user-dirs/ (defconst xdg-line-regexp (eval-when-compile (rx "XDG_" (group-n 1 (or "DESKTOP" "DOWNLOAD" "TEMPLATES" "PUBLICSHARE" "DOCUMENTS" "MUSIC" "PICTURES" "VIDEOS")) "_DIR=\"" (group-n 2 (or "/" "$HOME/") (*? (or (not (any "\"")) "\\\""))) "\"")) "Regexp matching non-comment lines in xdg-user-dirs config files.") (defvar xdg-user-dirs nil "Alist of directory keys and values.") (defun xdg--user-dirs-parse-line () "Return pair of user-dirs key to directory value in LINE, otherwise nil. This should be called at the beginning of a line." (skip-chars-forward "[:blank:]") (when (and (/= (following-char) ?#) (looking-at xdg-line-regexp)) (let ((k (match-string 1)) (v (match-string 2))) (when (and k v) (cons k v))))) (defun xdg--user-dirs-parse-file (filename) "Return alist of xdg-user-dirs from FILENAME." (let (elt res) (with-temp-buffer (insert-file-contents filename) (goto-char (point-min)) (while (not (eobp)) (setq elt (xdg--user-dirs-parse-line)) (when (consp elt) (push elt res)) (forward-line))) res)) (defun xdg-user-dir (name) "Return the path of user directory referred to by NAME." (when (null xdg-user-dirs) (setq xdg-user-dirs (xdg--user-dirs-parse-file (expand-file-name "user-dirs.dirs" (xdg-config-home))))) (cdr (assoc name xdg-user-dirs))) (provide 'xdg) ;;; xdg.el ends here From MAILER-DAEMON Sat Jan 28 21:09:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXevf-0003g7-74 for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 21:09:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50850) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXevc-0003fm-Tv for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:09:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXevZ-0007Sl-Pe for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:09:16 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:37987) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXevZ-0007Qk-I6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:09:13 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DXLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZRWggiGHAQCAoIRQRMBAgEBAQEBAQFiKIRpAQQBViMQCw4mEhQYDSSIegitFItEAQEBBwIlixmEKwEBhXwFj3yKapMJhH2DFIY6kg8hAjN4Ew6FcyCGf4IuAQEB X-IPAS-Result: A0DXLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZRWggiGHAQCAoIRQRMBAgEBAQEBAQFiKIRpAQQBViMQCw4mEhQYDSSIegitFItEAQEBBwIlixmEKwEBhXwFj3yKapMJhH2DFIY6kg8hAjN4Ew6FcyCGf4IuAQEB X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="290849655" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 28 Jan 2017 21:09:12 -0500 Received: by pastel.home (Postfix, from userid 20848) id 6D14065736; Sat, 28 Jan 2017 21:09:10 -0500 (EST) From: Stefan Monnier To: David Engster Cc: emacs-devel@gnu.org Subject: Re: Disable emacs-diffs mails for scratch branches Message-ID: References: <87sho3zewk.fsf@engster.org> <87o9yqzyq0.fsf@engster.org> Date: Sat, 28 Jan 2017 21:09:10 -0500 In-Reply-To: <87o9yqzyq0.fsf@engster.org> (David Engster's message of "Sat, 28 Jan 2017 22:00:39 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 02:09:18 -0000 >>> Subject says it all. Could we please do that? I think it's pretty normal >>> for scratch-Branches being deleted and pushed anew, and for large >>> branches like cedet-merge or cedet-tests this needlessly creates >>> hundreds of mails each time. >> I agree that those 300 emails dumps are more annoying than useful. >> But FWIW, I see two problems with your suggestion: >> 1- I don't know how to do it. > We'd have to adapt the post-receive hook, or whatever else is triggering > the mails. Yes, that much I know, but I also know that we don't have direct access to it. So it depends on Savannah admins, and if I was them I wouldn't just accept random patches, since AFAIK they use an existing mail-hook and so they probably want to stay close to the upstream version to be able to incorporate future changes. So, we should figure out exactly what choices we have available. >> 2- I do find it very useful to see commits on scratch branches when >> those branches are used for gradual development (e.g. the byte-switch >> branch). > How about simply not naming those branches with the 'scratch' prefix, > then? I was under the impression that 'scratch' means "can be > force-pushed/deleted any time, don't base your work onto it". AFAICT the byte-switch does belong to scratch. Being able/allowed to force-push/delete doesn't mean that you have to do it all the time. Stefan From MAILER-DAEMON Sat Jan 28 21:18:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXf4t-0006Mn-9K for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 21:18:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXf4q-0006MT-RY for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:18:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXf4n-0001vP-Md for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:18:48 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:50232) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXf4n-0001vJ-Fs for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:18:45 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DeLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZJHgg+CCIYcBAICghFCEgECAQEBAQEBAWIohGkBBAFWIxALNBIUGA0kiHoIrRSLRAEBAQcCJYsZiikFj3yKapJziCeGOpIPJgcpeBMOg1sdgXsgiS0BAQE X-IPAS-Result: A0DeLgAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZJHgg+CCIYcBAICghFCEgECAQEBAQEBAWIohGkBBAFWIxALNBIUGA0kiHoIrRSLRAEBAQcCJYsZiikFj3yKapJziCeGOpIPJgcpeBMOg1sdgXsgiS0BAQE X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="290852338" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 28 Jan 2017 21:18:45 -0500 Received: by pastel.home (Postfix, from userid 20848) id 708C565736; Sat, 28 Jan 2017 21:18:44 -0500 (EST) From: Stefan Monnier To: Vibhav Pant Cc: emacs-devel@gnu.org Subject: Re: [PATCH] Make purecopy create hash tables properly Message-ID: References: Date: Sat, 28 Jan 2017 21:18:44 -0500 In-Reply-To: (Vibhav Pant's message of "Sat, 28 Jan 2017 20:06:09 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 02:18:50 -0000 >> Unless we arrange to keep track of those hash-tables >> which are referenced from purespace. We already do that for symbols, so >> maybe we can extend/generalize that mechanism (probably a good idea). > Where is this implemented? I could use this to do the same for hash tables. Currently, it's implemented via the `pinned` bit in the symbol objects, plus the mark_pinned_symbols function. You could introduce a `pinned_objects` array instead. Stefan From MAILER-DAEMON Sat Jan 28 21:31:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXfHU-0001v4-Mz for mharc-emacs-devel@gnu.org; Sat, 28 Jan 2017 21:31:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52811) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXfHS-0001r4-7N for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:31:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXfHP-0005bT-6G for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:31:50 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:47382) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXfHO-0005au-W6 for emacs-devel@gnu.org; Sat, 28 Jan 2017 21:31:47 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cXfHJ-0001Vo-EY; Sun, 29 Jan 2017 03:31:43 +0100 From: Lars Ingebrigtsen To: David Engster Cc: emacs-devel@gnu.org Subject: Re: Disable emacs-diffs mails for scratch branches References: <87sho3zewk.fsf@engster.org> Date: Sun, 29 Jan 2017 03:31:40 +0100 In-Reply-To: <87sho3zewk.fsf@engster.org> (David Engster's message of "Sat, 28 Jan 2017 10:56:27 +0100") Message-ID: <87inoy61gz.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 02:31:51 -0000 David Engster writes: > Subject says it all. Could we please do that? Can't you just kill-file the messages you're not interested in? I mean score down. That's what I do with the scratch/ branches... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 29 01:01:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXiXv-000193-7V for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 01:01:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXiXs-00018l-Aq for emacs-devel@gnu.org; Sun, 29 Jan 2017 01:01:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXiXp-00031B-8N for emacs-devel@gnu.org; Sun, 29 Jan 2017 01:01:00 -0500 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:33964) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXiXo-000311-Ud for emacs-devel@gnu.org; Sun, 29 Jan 2017 01:00:57 -0500 Received: by mail-pf0-x244.google.com with SMTP id y143so21216939pfb.1 for ; Sat, 28 Jan 2017 22:00:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=Cxlmu97n+HMOdGlAffukRIXli0fMljtDBOEn0+xcKwU=; b=GrI33BHDhhauynYK5hEXkk6yHJ/Gz35i+7bktBkWg8CHn1vV4YlUDpL4fqtep+GZC+ eo3gipcyhZ+Kgu2oZKnEp3lUa+KvMk0Ic3Xhm0VvsgtUZH9KbQD7xH8rzdLNWScp063h DLgZpdryoKYzYCwH5vUKGTjlyfZ4SBamB8o0DiPr9jVmFpunKicHtjgIIwOmTIRZBJPb 6yP/fa76uK4ZqvKRZMLj4RM15p8dQXSLDNR2c9gSINu3yRrcaPlyEXeM/kYOgTTaYskB WmLkvuMDIq5jbqWAFaAW4Cu97W4k0mxmsaF0zASJnpnwPwhYSWk7UDh0GoE3ENqrtmrH iGaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=Cxlmu97n+HMOdGlAffukRIXli0fMljtDBOEn0+xcKwU=; b=bdCSwOSKhkk1/C9Gg/K8WKTqhIRXNh78hOVybc59MzN9u+6EiBVM5jVVbG+WzYO5gE TjlchpyvMEQRbW+l2VDMzY7WKI5ld7YxY32GaGi4bM9Zgb7ATKaC46NpzpG+YWnIjRRf uxj7JEDzpb/LYMW6ulYZV1fWACdr6F/vPZjQchqGl9tCUFAlnFcG6eTaarCaoOcEAC0h 5q+CqWvfRXN2N+f7E+OYwM9KGpj/HFbOO0scd3BJOoRebQaiMw63sTPFKd1OyO5EfZjn AyY6q5LFnKD6V24bcnCLeNqUoDIHjEYKPg6yNtfOHo+1JUiUuV+GUPXmo9jft4ifBxwc LWvg== X-Gm-Message-State: AIkVDXJigyC0ahDyhRUSyiBiZD5GxzgMjZVgciRj0SvwAE/NRKAc3UMKVbtFaX6k6yperg== X-Received: by 10.99.173.14 with SMTP id g14mr17764742pgf.176.1485669654175; Sat, 28 Jan 2017 22:00:54 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id j28sm22501770pfj.2.2017.01.28.22.00.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 22:00:53 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Sun, 29 Jan 2017 15:00:48 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Juri Linkov cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region In-Reply-To: <87lgtu4w5c.fsf@mail.linkov.net> Message-ID: References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> <87inp6nsdf.fsf@gmail.com> <87lgtu4w5c.fsf@mail.linkov.net> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-981600245-1485669653=:1959" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 06:01:02 -0000 --8323329-981600245-1485669653=:1959 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8BIT On Sun, 29 Jan 2017, Juri Linkov wrote: > I think this is a useful addition, thanks. One note below. > >> +Optional arg REGION, if non-nil, mean restrict search to the >> +specified region. Otherwise search the entire buffer. >> +When REGION is non-nil, it must be a cons (START . END). > > When someone decides to add support for rectangular regions in occur later, > your current implementation will make this problematic since it changes > the format ((START . END)) to (START . END), that makes difficult to support > ((START1 . END1) (START2 . END2) ...) later. > > Let's stick to the same format in all uses of the new ‘REGION’ arg, and > currently in occur support only the degenerate case of ((START . END)) > for non-rectangular regions. Thanks. I was also a bit worry with that detail. OK, i keep the general format ((START . END)). Let me know if the following patch is OK to be pushed: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >From 40ac0b30445f9581a5b4d6988d31089468a6a969 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 29 Jan 2017 14:46:10 +0900 Subject: [PATCH 1/2] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional arg REGION; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 47 +++++++++++++++++++++++++++++++------ 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index 12ff21f39a..a74cdb71df 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -310,6 +310,8 @@ substituted by a home directory by writing it as "/foo:/:/~/file". * Editing Changes in Emacs 26.1 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..0a8e480485 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. @@ -1369,6 +1374,11 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. +Optional arg REGION, if non-nil, mean restrict search to the +specified region. Otherwise search the entire buffer. +REGION must be a list of (START . END) positions as returned by +`region-bounds'. + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1396,24 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (and (use-region-p) (list (region-bounds))))) + (let* ((start (and (caar region) (max (caar region) (point-min)))) + (end (and (cdar region) (min (cdar region) (point-max)))) + (in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) (defvar ido-ignore-item-temp-list) @@ -1545,13 +1571,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1712,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (= matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1722,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) -- 2.11.0 >From a1ac23d9b5384524591fa9f6586a2665175caf6f Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 29 Jan 2017 14:46:27 +0900 Subject: [PATCH 2/2] Show current line highlighted in *Occur* buffer * lisp/replace.el (list-matching-lines-current-line-face) (list-matching-lines-jump-to-current-line): New user options. (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'list-matching-lines-current-line-face'. Set point on the first matching line after the current one. * etc/NEWS: Add entry for the new option. --- etc/NEWS | 4 ++++ lisp/replace.el | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index a74cdb71df..90b53aca16 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -311,6 +311,10 @@ substituted by a home directory by writing it as "/foo:/:/~/file". * Editing Changes in Emacs 26.1 +** Two new user options 'list-matching-lines-jump-to-current-line' and +'list-matching-lines-current-line-face' to show highlighted the current line +in the *Occur* buffer. + ** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. diff --git a/lisp/replace.el b/lisp/replace.el index 0a8e480485..8e51792f5e 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1304,6 +1304,19 @@ list-matching-lines-buffer-name-face :type 'face :group 'matching) +(defcustom list-matching-lines-current-line-face 'lazy-highlight + "Face used by \\[list-matching-lines] to highlight the current line." + :type 'face + :group 'matching + :version "26.1") + +(defcustom list-matching-lines-jump-to-current-line nil + "If non-nil, \\[list-matching-lines] shows the current line highlighted. +Set the point right after such line when there are matches after it." +:type 'boolean +:group 'matching +:version "26.1") + (defcustom list-matching-lines-prefix-face 'shadow "Face used by \\[list-matching-lines] to show the prefix column. If the face doesn't differ from the default face, @@ -1364,6 +1377,9 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) (defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. @@ -1382,6 +1398,9 @@ occur The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. +If `list-matching-lines-jump-to-current-line' is non-nil, then show +highlighted the current line and, if there are matches after it, then +set point in the first of those matches. If REGEXP contains upper case characters (excluding those preceded by `\\') and `search-upper-case' is non-nil, the matching is case-sensitive. @@ -1409,7 +1428,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1508,7 +1533,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1560,6 +1586,10 @@ occur-1 (if (= count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1572,7 +1602,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1580,12 +1611,16 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1686,6 +1721,18 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p) + (>= curr-line orig-line)) + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1699,6 +1746,18 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p)) + (with-current-buffer out-buf + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1732,8 +1791,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) -- 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.6) of 2017-01-29 Repository revision: d12e1ddf42cddcac56f98c5b3a65f5219d2d5968 --8323329-981600245-1485669653=:1959-- From MAILER-DAEMON Sun Jan 29 04:59:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXmGq-0000Ez-7y for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 04:59:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54171) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXmGo-0000Ej-Dp for emacs-devel@gnu.org; Sun, 29 Jan 2017 04:59:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXmGj-0000DM-IL for emacs-devel@gnu.org; Sun, 29 Jan 2017 04:59:38 -0500 Received: from randomsample.de ([5.45.97.173]:45087) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXmGj-0000Bx-8a for emacs-devel@gnu.org; Sun, 29 Jan 2017 04:59:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=bpfVVnp8NuJhOy42DGYyhflMEgVDrLnSkCtgc3KpOkQ=; b=iu/EQevZFCyYan5e/H40Nc69FJVnxJxQRa1VOsMdpuTncfI94ULzfqz32F8b8wQE+Yn+JXpB49AtG7U93ZpPdivGXHsh8X8cxLUVf52Vey5q0Pl5td2wlhHMmY2sp7ha; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXmGa-0007RD-AC; Sun, 29 Jan 2017 10:59:24 +0100 From: David Engster To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: Disable emacs-diffs mails for scratch branches In-Reply-To: <87inoy61gz.fsf@mouse> (Lars Ingebrigtsen's message of "Sun, 29 Jan 2017 03:31:40 +0100") References: <87sho3zewk.fsf@engster.org> <87inoy61gz.fsf@mouse> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 29 Jan 2017 10:59:16 +0100 Message-ID: <874m0inq4r.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 09:59:39 -0000 Lars Ingebrigtsen writes: > David Engster writes: > >> Subject says it all. Could we please do that? > > Can't you just kill-file the messages you're not interested in? I mean > score down. That's what I do with the scratch/ branches... Yeah sure, I do that as well. It's just that I'm kinda old-school and think that force-pushing an amended commit shouldn't trigger 300 mails... But since this doesn't seem to be easily changed, I guess we just live with it. -David From MAILER-DAEMON Sun Jan 29 07:39:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXolk-0005C2-5U for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 07:39:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40423) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXolh-0005Bv-P8 for emacs-devel@gnu.org; Sun, 29 Jan 2017 07:39:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXolc-0006Ab-T4 for emacs-devel@gnu.org; Sun, 29 Jan 2017 07:39:41 -0500 Received: from randomsample.de ([5.45.97.173]:47710) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXolc-00069y-JH for emacs-devel@gnu.org; Sun, 29 Jan 2017 07:39:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:To:From; bh=NRQNEviaVQ1h7Xd8CXc4SqyuHSqXnydInnRvr6XA/KQ=; b=hzryXpnSl5Kym3NqZWS7FxOPJ2EPOAgjQYmnr2j/lZHCJr9D5zVqg3V5o2GF8uzHidI+Ff1lqV+xWSJms/VXivyBXT+3rjlGlBo0qxbXNv50/KDYGJmN+KutxqZE7a4o; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXolb-00021R-09 for emacs-devel@gnu.org; Sun, 29 Jan 2017 13:39:35 +0100 From: David Engster To: emacs-devel@gnu.org Subject: Fixing "Unknown slot" warnings User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 29 Jan 2017 13:39:31 +0100 Message-ID: <87sho2m458.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 12:39:42 -0000 I'm currently fixing the above byte-compiler warnings for CEDET. I've replaced all the 'oref' with 'slot-value' and properly used quotes for the slot names, but there are some warnings remaining. The reason is that the byte-compiler has not seen the class declaration, so it does not know about the available slots. However, I cannot simply eval-when-compile-require the file with the class as it would create a circular dependency. Example: Compiling lisp/cedet/semantic.el issues In semantic-analyze-completion-at-point-function: cedet/semantic.el:1188:15:Warning: Unknown slot =E2=80=98bounds=E2=80=99 The class declaration for `semantic-analyze-context' is in semantic/analyze.el, which however itself requires semantic. How can I tell the compiler everything will be OK at runtime, similar to what 'declare-function' does for functions? -David From MAILER-DAEMON Sun Jan 29 08:20:40 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXpPM-0001d1-Bh for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 08:20:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXpPJ-0001bh-WD for emacs-devel@gnu.org; Sun, 29 Jan 2017 08:20:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXpPG-0007Jo-SG for emacs-devel@gnu.org; Sun, 29 Jan 2017 08:20:37 -0500 Received: from [195.159.176.226] (port=42736 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXpPG-0007IW-LO for emacs-devel@gnu.org; Sun, 29 Jan 2017 08:20:34 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXpOj-0002pS-3N for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:20:01 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Yuri D'Elia Subject: Re: master f83363d: Subject: Check Bcc after the Messag hook has run Date: Sun, 29 Jan 2017 14:19:48 +0100 Lines: 11 Message-ID: <87efzmnguj.fsf@wavexx.thregr.org> References: <20170128142130.17218.42233@vcs.savannah.gnu.org> <20170128142131.2877F22016E@vcs.savannah.gnu.org> <878tpv6z3t.fsf@mouse> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:lsRyoBeTB5U+0DTtQBEu39FnVaY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 13:20:38 -0000 On Sat, Jan 28 2017, Lars Ingebrigtsen wrote: >> Subject: Check Bcc after the Messag hook has run >> >> * lisp/gnus/message.el (message-send): If the hook modifies >> the message (mml tags or headers), we should check bcc on the >> final message, not on the original. > > Oops; that one should have had a copyright-exemption thing in it. I > momentarily thought this was a different Yuri... Shouldn't this be too small to count? From MAILER-DAEMON Sun Jan 29 09:42:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXqg5-0007qY-1i for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 09:42:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52167) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXqg3-0007qR-BI for emacs-devel@gnu.org; Sun, 29 Jan 2017 09:42:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXqfz-00009e-Ct for emacs-devel@gnu.org; Sun, 29 Jan 2017 09:41:59 -0500 Received: from [195.159.176.226] (port=50793 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXqfz-00009P-72 for emacs-devel@gnu.org; Sun, 29 Jan 2017 09:41:55 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXqfb-0003o3-Sa for emacs-devel@gnu.org; Sun, 29 Jan 2017 15:41:31 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Fixing "Unknown slot" warnings Date: Sun, 29 Jan 2017 09:41:18 -0500 Lines: 14 Message-ID: References: <87sho2m458.fsf@engster.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:yOPpKDoglqAD1Ss6rA/U/Q0f71M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 14:42:00 -0000 > How can I tell the compiler everything will be OK at runtime, similar to > what 'declare-function' does for functions? I don't think we have something for that right now. Maybe you can try something like: (eval-when-compile (defclass dummy () ((SLOT)))) Better would be to wrap this into an `eieio-declare-slot` macro (which could later be replaced by something which doesn't end up defining a class as a side-effect). Stefan From MAILER-DAEMON Sun Jan 29 10:35:31 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXrVr-0008DB-Kd for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 10:35:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57521) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXrVp-0008Cm-Ck for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:35:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXrVm-0002ea-5j for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:35:29 -0500 Received: from randomsample.de ([5.45.97.173]:50631) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXrVl-0002eK-SG for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:35:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=r0nRKfNi+fdnO8gcmV6vsaINJ02ZHtihNUuLgV0hsxA=; b=LmVumoMFOiYBngwsNqmgILniPEqFKq0NQ8zuQiYwlcqa7UaOsQkeP9h7RxS9MGzPsHrb2zdLSNzs5a0RQjl4wl6bmVlMjolL91fpL6yAMc0xObTZw6HaWxCpJbQ7cMuJ; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXrVi-0006QC-Ox; Sun, 29 Jan 2017 16:35:22 +0100 From: David Engster To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Fixing "Unknown slot" warnings In-Reply-To: (Stefan Monnier's message of "Sun, 29 Jan 2017 09:41:18 -0500") References: <87sho2m458.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 29 Jan 2017 16:35:19 +0100 Message-ID: <87o9ypnako.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 15:35:30 -0000 Stefan Monnier writes: >> How can I tell the compiler everything will be OK at runtime, similar to >> what 'declare-function' does for functions? > > I don't think we have something for that right now. > Maybe you can try something like: > > (eval-when-compile (defclass dummy () ((SLOT)))) > > Better would be to wrap this into an `eieio-declare-slot` macro (which > could later be replaced by something which doesn't end up defining > a class as a side-effect). After looking at the code, it seems all slot symbols are shoved into `eieio--known-slot-names' and the byte-compiler checks if a slot is in there, regardless of the class being used. So the following would already do the trick: (defmacro eieio-declare-slot (name) "Declares slot to be available at runtime." `(eval-when-compile (cl-pushnew ,name eieio--known-slot-names))) -David From MAILER-DAEMON Sun Jan 29 10:37:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXrXv-0001Gt-HT for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 10:37:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXrXt-0001GV-4c for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:37:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXrXs-0002xn-BU for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:37:37 -0500 Received: from mail-oi0-x231.google.com ([2607:f8b0:4003:c06::231]:34123) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXrXs-0002x2-5H for emacs-devel@gnu.org; Sun, 29 Jan 2017 10:37:36 -0500 Received: by mail-oi0-x231.google.com with SMTP id s203so51081008oie.1 for ; Sun, 29 Jan 2017 07:37:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=IL9fsxQXJ85+LcglTbSubaBz3XxHzXmmaIoJ9fdHfHU=; b=F+uJu2LzVRKpAfnIwa4dT1upEJXMjiF+f6iRrOo1pLby4f6aMDMfEi7oS0IKk5oO2F NRcUAOjADxqV7xHVobH3X45/bRuwd/y/g7+JUg5vsHNrhXvOgxPzX+oYNN9ywBHu3l49 rgfwRKYM32bkshogrYD4xENB19X7AsVBTxs9XjDJIZ3Cp+s14Gc32psO3rBIVoF5o2Lt I6Nj/anNaJakfbQF/ETeqCTdcw7ZWlOaKvZnA4kKYpfnkdK5mx+a2o01rRsr4ci9Fh9L TAFZBY4h74qDk8xyXYPpYdon9FPwt/azSrO2NfVL/eGqUpfXnN+Tu0JXPSTZ1Pk8tnjt xoew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=IL9fsxQXJ85+LcglTbSubaBz3XxHzXmmaIoJ9fdHfHU=; b=kg/0FIR9fSdS2YeyEPo6/k1r3pothkwDX9hWiS88+xLAWlaMWGsJy8DbUb5NF5XNpz BK7ehyhtIGZ/KrMScXA0R5MFXXfnil4CLhS0WtJa9b7KRIVnTK81+7gglS4Hd8tRQCR8 Plu2+CDchQugOmhJK+Ls2+DJsCcAEtt6I1QYpmvqZth1SOxC8HudN4e5cfM2veofp1EB FlP18Q4bmMwI5mG+uvEBzqWVtJ1srl7gGTRJid/ANDIYKlvQQ85tTP/uzdSICed61OgY hde/nLsLKKa72NLfXmdWsWOws+RGESda2qD7WqpPGx5uLxTJpLzznflN4HiujIQuib8a aCzQ== X-Gm-Message-State: AIkVDXLyThO3eQEYcP9oLguaw9StPie7YtBye9Ts8BX0rrJdtAYWeKw5SalD4g7HPdUVSApDifCW7qKRfP6r8g== X-Received: by 10.202.4.84 with SMTP id 81mr9258951oie.127.1485704253921; Sun, 29 Jan 2017 07:37:33 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Sun, 29 Jan 2017 07:37:33 -0800 (PST) In-Reply-To: References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> From: Noam Postavsky Date: Sun, 29 Jan 2017 10:37:33 -0500 X-Google-Sender-Auth: n27oe29Zo5Mas-a1B1ZlV_sOOVs Message-ID: Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Cc: Stefan Monnier , Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 15:37:38 -0000 On Fri, Jan 27, 2017 at 10:46 PM, Noam Postavsky wrote: > On Fri, Jan 27, 2017 at 10:30 PM, Cl=C3=A9ment Pit--Claudel > wrote: >> On 2017-01-27 20:59, Noam Postavsky wrote: >>> I guess let-binding `debugger' to a function which performs the >>> logging should do the trick? >> >> I already do that, in fact, and I do re-throw the exception from there. = Looks like things didn't work because of the way `debugger' is called in `= cl--assertion-failed'. Is that call correct? The argument in (funcall deb= ugger `(cl-assertion-failed ,form ,string ,@sargs)) doesn't seem to match t= he docs: >> >> If due to error, args are =E2=80=98error=E2=80=99 and a list of the = args to =E2=80=98signal=E2=80=99. >> >> Is the call just missing an 'error argument? >> > > Oh yeah, I guess it is. Um, should this be (funcall debugger 'error `(cl-assertion-failed ,form ,string ,@sargs)) or (funcall debugger 'error `(cl-assertion-failed (,form ,string ,@sargs))) I'm getting confused with all the levels of nesting and funcall/apply. From MAILER-DAEMON Sun Jan 29 11:10:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXs3Y-0002J2-RI for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 11:10:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33232) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXs3W-0002Iv-Lf for emacs-devel@gnu.org; Sun, 29 Jan 2017 11:10:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXs3T-0001Bd-J2 for emacs-devel@gnu.org; Sun, 29 Jan 2017 11:10:18 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:53062) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXs3T-000187-CX for emacs-devel@gnu.org; Sun, 29 Jan 2017 11:10:15 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cXs3I-0004J7-Mn; Sun, 29 Jan 2017 17:10:06 +0100 From: Lars Ingebrigtsen To: Katsumi Yamaoka Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> Date: Sun, 29 Jan 2017 17:10:04 +0100 In-Reply-To: (Katsumi Yamaoka's message of "Fri, 27 Jan 2017 11:48:30 +0900") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 16:10:19 -0000 Did the further changes I made in this area fix the problem you were seeing? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Sun Jan 29 12:08:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXsxO-0006oJ-Nl for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 12:08:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41310) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXsxM-0006o8-3j for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:08:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXsxI-0006OM-SY for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:08:00 -0500 Received: from [195.159.176.226] (port=34633 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXsxI-0006OG-MF for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:07:56 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXswt-0001AN-QK for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:07:31 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Fixing "Unknown slot" warnings Date: Sun, 29 Jan 2017 12:07:13 -0500 Lines: 19 Message-ID: References: <87sho2m458.fsf@engster.org> <87o9ypnako.fsf@engster.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:sHLSyVQLgv7tEpclef1bhrmjATk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 17:08:01 -0000 > After looking at the code, it seems all slot symbols are shoved into > `eieio--known-slot-names' and the byte-compiler checks if a slot is in > there, regardless of the class being used. So the following would > already do the trick: > (defmacro eieio-declare-slot (name) > "Declares slot to be available at runtime." > `(eval-when-compile (cl-pushnew ,name eieio--known-slot-names))) If you mean something to add to eieio, then yes, that's about right (tho you could also do it as (defmacro eieio-declare-slot (name) (cl-pushnew name eieio--known-slot-names) nil). My `defclass` solution was meant for use in code that must work with older Emacsen and/or older eieio without relying on internals like eieio--known-slot-names. Stefan From MAILER-DAEMON Sun Jan 29 12:23:27 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXtCJ-0001TI-K8 for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 12:23:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtCB-0001T7-VC for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:23:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXtC4-0000qs-T9 for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:23:19 -0500 Received: from mail-yb0-x243.google.com ([2607:f8b0:4002:c09::243]:33114) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXtC4-0000qo-LS for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:23:12 -0500 Received: by mail-yb0-x243.google.com with SMTP id 123so24541758ybe.0 for ; Sun, 29 Jan 2017 09:23:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=EHi1ma2gHuOGnMBWh3xk4swINsjOxYuBcGCcTMyNQYw=; b=rtcUWKLxAifTDv3c1z1XshLHlsfarAjGCKrYObaOnsqYNLFbb/x6u2ia7icNIajNFP 05AbabL0XSOXFUIN+frU2s2CbixFdKm23hCudnCbutvEZeIeJPYhWdLI0ZYs9yaLW1lO yLgawmn5eLkNqAlQpYH6owSGjqGs4Wj4m8gr4wC8zwNuHuc0H0fihv9i0amVGOscyr0I olprc43ELCoaZzkbk1wlRKJEZlJ+uHKY4ETbkwZoO8TnkPb5SsA1WaeYkJu7raMCi/m2 EQSc5KjmWqCYkEyO8O+sgBSpzoIkCNETxX7iCi9HqRjRl+uEtr1UUjAEhvc0hNUxC+7h R/gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=EHi1ma2gHuOGnMBWh3xk4swINsjOxYuBcGCcTMyNQYw=; b=IIqHEEB9J3JGhByogCoPQ5FKvJiC/5bL56rM6etWYw7OugP8gD9x0Hw2V6yWnQPxNk WbaaoE6sZzdFj8ORaeLHeQasTCyl81VDPoi7aLdCzbGSFZGWXzzrwpI1bx/UUlWZLL45 cL+QWzdO5pyZccOIbq+cVMdL5Dz087sDHBkfeABbKGqqWNslZ8hsyyoqk7eDD4uQ34zS WIeVuzjQtTrdohFWw43gDeomCAvgto3UyIpQPQK1WxkweAQX5SJc9blog/F3s6kkFWC+ aVmHNcy+exeUE4lmjqjLzK51yYztfR8LT7A9TDquZGvmQ3u2bUl2TGBm75LrL/6wsVED ceqQ== X-Gm-Message-State: AIkVDXLFI43v9crdBSuWb3OkUIrjijthVIHDWrhL69cOnZeI7j/15B7kPvx4b71+nC1Wpv/uAFx+6/9PYRqGNQ== X-Received: by 10.37.197.74 with SMTP id v71mr8715428ybe.33.1485710591488; Sun, 29 Jan 2017 09:23:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Sun, 29 Jan 2017 09:23:10 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Sun, 29 Jan 2017 22:53:10 +0530 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: multipart/mixed; boundary=94eb2c147b0e0ba57305473ef489 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 17:23:27 -0000 --94eb2c147b0e0ba57305473ef489 Content-Type: text/plain; charset=UTF-8 On Sat, Jan 28, 2017 at 8:28 PM, Stefan Monnier wrote: > Good point. So we should check NILP (old->weak) and signal an > error if set. And thus old->next_weak should always be NULL and is > trivial to copy. > That would imply we can't purecopy any object which ends up referencing > a hash-table. Unless we arrange to keep track of those hash-tables > which are referenced from purespace. We already do that for symbols, so > maybe we can extend/generalize that mechanism (probably a good idea). > > For cons cells we do: > > CHECK_IMPURE (cell, XCONS (cell)); > > in `setcar', so we can do the same for hash-tables. Since purespace is > contiguous, CHECK_IMPURE is pretty efficient, and since it only relies > on the pointer value, the CPU can compute it in parallel with the access to > the object (and the test itself is trivial to predict), so it should > have a negligible impact on performance. Based on these suggestions, I have made a few more modifications to the code: * `gethash' now takes an additional :purecopy argument. If non-nil, the table will/can be copied to pure storage when the Emacs binary is being dumped. Since objects in pure storage are read only, gethash enforces that :weak and :purecopy aren't non-nil at the same time, erroring out when the latter is true. * All functions that modify hash tables (`puthash', `clrhash' and `remhash') make sure that the table is not in pure storage (with CHECK_IMPURE). * `make_pure_hash_table' now also purecopies the hash table test, and enforces the checks above with `eassert'. * A new struct, `pinned_object' is used as a linked list to store objects that should be marked before every GC cycle. For now, this is only used when a hash table with the :purecopy property set to nil is passed to purecopy (but should be usable for other objects in the future). Should this work, or is there anything else I need to do? Thanks, Vibhav -- Vibhav Pant vibhavp@gmail.com diff --git a/src/alloc.c b/src/alloc.c index f7b6515f4e..7d1132c953 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5434,6 +5434,35 @@ make_pure_vector (ptrdiff_t len) return new; } +static struct Lisp_Hash_Table * +make_pure_hash_table (struct Lisp_Hash_Table *table) { + eassert (NILP (table->weak)); + eassert (!NILP (table->pure)); + + struct Lisp_Hash_Table *pure = pure_alloc (sizeof *pure, Lisp_Vectorlike); + struct hash_table_test pure_test = table->test; + + /* Purecopy the hash table test. */ + pure_test.name = purecopy (table->test.name); + pure_test.user_hash_function = purecopy (table->test.user_hash_function); + pure_test.user_cmp_function = purecopy (table->test.user_cmp_function); + + pure->test = pure_test; + pure->header = table->header; + pure->weak = purecopy (Qnil); + pure->rehash_size = purecopy (table->rehash_size); + pure->rehash_threshold = purecopy (table->rehash_threshold); + pure->hash = purecopy (table->hash); + pure->next = purecopy (table->next); + pure->next_free = purecopy (table->next_free); + pure->index = purecopy (table->index); + pure->count = table->count; + pure->key_and_value = purecopy (table->key_and_value); + pure->pure = purecopy (table->pure); + + return pure; +} + DEFUN ("purecopy", Fpurecopy, Spurecopy, 1, 1, 0, doc: /* Make a copy of object OBJ in pure storage. Recursively copies contents of vectors and cons cells. @@ -5442,14 +5471,22 @@ Does not copy symbols. Copies strings without text properties. */) { if (NILP (Vpurify_flag)) return obj; - else if (MARKERP (obj) || OVERLAYP (obj) - || HASH_TABLE_P (obj) || SYMBOLP (obj)) + else if (MARKERP (obj) || OVERLAYP (obj) || SYMBOLP (obj)) /* Can't purify those. */ return obj; else return purecopy (obj); } +struct pinned_object +{ + Lisp_Object object; + struct pinned_object *next; +}; + +/* Pinned objects are marked before every GC cycle. */ +static struct pinned_object *pinned_objects; + static Lisp_Object purecopy (Lisp_Object obj) { @@ -5477,7 +5514,26 @@ purecopy (Lisp_Object obj) obj = make_pure_string (SSDATA (obj), SCHARS (obj), SBYTES (obj), STRING_MULTIBYTE (obj)); - else if (COMPILEDP (obj) || VECTORP (obj) || HASH_TABLE_P (obj)) + else if (HASH_TABLE_P (obj)) + { + struct Lisp_Hash_Table *table = XHASH_TABLE (obj); + /* We cannot purecopy hash tables which haven't been defined with + :purecopy as non-nil, they aren't guaranteed to not change. */ + if (NILP (table->pure)) + { + /* Instead, the hash table is added to the list of pinned objects, + and is marked before GC. */ + struct pinned_object *o = xmalloc (sizeof *o); + o->object = obj; + o->next = pinned_objects; + pinned_objects = o; + return obj; + } + + struct Lisp_Hash_Table *h = make_pure_hash_table (table); + XSET_HASH_TABLE (obj, h); + } + else if (COMPILEDP (obj) || VECTORP (obj)) { struct Lisp_Vector *objp = XVECTOR (obj); ptrdiff_t nbytes = vector_nbytes (objp); @@ -5694,6 +5750,16 @@ compact_undo_list (Lisp_Object list) } static void +mark_pinned_objects (void) +{ + struct pinned_object *pobj; + for (pobj = pinned_objects; pobj; pobj = pobj->next) + { + mark_object (pobj->object); + } +} + +static void mark_pinned_symbols (void) { struct symbol_block *sblk; @@ -5813,6 +5879,7 @@ garbage_collect_1 (void *end) for (i = 0; i < staticidx; i++) mark_object (*staticvec[i]); + mark_pinned_objects (); mark_pinned_symbols (); mark_terminals (); mark_kboards (); diff --git a/src/category.c b/src/category.c index e5d261c1cf..ff287a4af3 100644 --- a/src/category.c +++ b/src/category.c @@ -67,7 +67,7 @@ hash_get_category_set (Lisp_Object table, Lisp_Object category_set) make_hash_table (hashtest_equal, make_number (DEFAULT_HASH_SIZE), make_float (DEFAULT_REHASH_SIZE), make_float (DEFAULT_REHASH_THRESHOLD), - Qnil)); + Qnil, Qnil)); h = XHASH_TABLE (XCHAR_TABLE (table)->extras[1]); i = hash_lookup (h, category_set, &hash); if (i >= 0) diff --git a/src/emacs-module.c b/src/emacs-module.c index e22c7dc5b7..69fa5c8e64 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -1016,7 +1016,7 @@ syms_of_module (void) = make_hash_table (hashtest_eq, make_number (DEFAULT_HASH_SIZE), make_float (DEFAULT_REHASH_SIZE), make_float (DEFAULT_REHASH_THRESHOLD), - Qnil); + Qnil, Qnil); Funintern (Qmodule_refs_hash, Qnil); DEFSYM (Qmodule_environments, "module-environments"); diff --git a/src/fns.c b/src/fns.c index b8ebfe5b2e..420bf6c1ee 100644 --- a/src/fns.c +++ b/src/fns.c @@ -34,6 +34,7 @@ along with GNU Emacs. If not, see . */ #include "buffer.h" #include "intervals.h" #include "window.h" +#include "puresize.h" static void sort_vector_copy (Lisp_Object, ptrdiff_t, Lisp_Object *restrict, Lisp_Object *restrict); @@ -3750,12 +3751,17 @@ allocate_hash_table (void) (table size) is >= REHASH_THRESHOLD. WEAK specifies the weakness of the table. If non-nil, it must be - one of the symbols `key', `value', `key-or-value', or `key-and-value'. */ + one of the symbols `key', `value', `key-or-value', or `key-and-value'. + + If PURECOPY is non-nil, the table can be copied to pure storage via + `purecopy' when Emacs is being dumped. Such tables can no longer be + changed after purecopy. */ Lisp_Object make_hash_table (struct hash_table_test test, Lisp_Object size, Lisp_Object rehash_size, - Lisp_Object rehash_threshold, Lisp_Object weak) + Lisp_Object rehash_threshold, Lisp_Object weak, + Lisp_Object pure) { struct Lisp_Hash_Table *h; Lisp_Object table; @@ -3774,6 +3780,8 @@ make_hash_table (struct hash_table_test test, if (XFASTINT (size) == 0) size = make_number (1); + if (!NILP (weak) && !NILP (pure)) + error ("Weak hash tables cannot be purecopied"); sz = XFASTINT (size); index_float = sz / XFLOAT_DATA (rehash_threshold); @@ -3796,6 +3804,7 @@ make_hash_table (struct hash_table_test test, h->hash = Fmake_vector (size, Qnil); h->next = Fmake_vector (size, Qnil); h->index = Fmake_vector (make_number (index_size), Qnil); + h->pure = pure; /* Set up the free list. */ for (i = 0; i < sz - 1; ++i) @@ -4460,10 +4469,14 @@ key, value, one of key or value, or both key and value, depending on WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK is nil. +:purecopy PURECOPY -- If PURECOPY is non-nil, the table can be copied +to pure storage when Emacs is being dumped, making the contents of the +table read only. WEAK should be nil for such tables. + usage: (make-hash-table &rest KEYWORD-ARGS) */) (ptrdiff_t nargs, Lisp_Object *args) { - Lisp_Object test, size, rehash_size, rehash_threshold, weak; + Lisp_Object test, size, rehash_size, rehash_threshold, weak, pure; struct hash_table_test testdesc; ptrdiff_t i; USE_SAFE_ALLOCA; @@ -4497,6 +4510,9 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */) testdesc.cmpfn = cmpfn_user_defined; } + /* See if there's a `:purecopy PURECOPY' argument. */ + i = get_key_arg (QCpurecopy, nargs, args, used); + pure = i ? args[i] : Qnil; /* See if there's a `:size SIZE' argument. */ i = get_key_arg (QCsize, nargs, args, used); size = i ? args[i] : Qnil; @@ -4538,7 +4554,8 @@ usage: (make-hash-table &rest KEYWORD-ARGS) */) signal_error ("Invalid argument list", args[i]); SAFE_FREE (); - return make_hash_table (testdesc, size, rehash_size, rehash_threshold, weak); + return make_hash_table (testdesc, size, rehash_size, rehash_threshold, weak, + pure); } @@ -4617,7 +4634,9 @@ DEFUN ("clrhash", Fclrhash, Sclrhash, 1, 1, 0, doc: /* Clear hash table TABLE and return it. */) (Lisp_Object table) { - hash_clear (check_hash_table (table)); + struct Lisp_Hash_Table *h = check_hash_table (table); + CHECK_IMPURE (table, h); + hash_clear (h); /* Be compatible with XEmacs. */ return table; } @@ -4641,9 +4660,10 @@ VALUE. In any case, return VALUE. */) (Lisp_Object key, Lisp_Object value, Lisp_Object table) { struct Lisp_Hash_Table *h = check_hash_table (table); + CHECK_IMPURE (table, h); + ptrdiff_t i; EMACS_UINT hash; - i = hash_lookup (h, key, &hash); if (i >= 0) set_hash_value_slot (h, i, value); @@ -4659,6 +4679,7 @@ DEFUN ("remhash", Fremhash, Sremhash, 2, 2, 0, (Lisp_Object key, Lisp_Object table) { struct Lisp_Hash_Table *h = check_hash_table (table); + CHECK_IMPURE (table, h); hash_remove_from_table (h, key); return Qnil; } @@ -5029,6 +5050,7 @@ syms_of_fns (void) DEFSYM (Qequal, "equal"); DEFSYM (QCtest, ":test"); DEFSYM (QCsize, ":size"); + DEFSYM (QCpurecopy, ":purecopy"); DEFSYM (QCrehash_size, ":rehash-size"); DEFSYM (QCrehash_threshold, ":rehash-threshold"); DEFSYM (QCweakness, ":weakness"); diff --git a/src/image.c b/src/image.c index 39677d2add..ad0143be48 100644 --- a/src/image.c +++ b/src/image.c @@ -4020,7 +4020,7 @@ xpm_make_color_table_h (void (**put_func) (Lisp_Object, const char *, int, return make_hash_table (hashtest_equal, make_number (DEFAULT_HASH_SIZE), make_float (DEFAULT_REHASH_SIZE), make_float (DEFAULT_REHASH_THRESHOLD), - Qnil); + Qnil, Qnil); } static void diff --git a/src/lisp.h b/src/lisp.h index 84d53bb1ee..91c430fe98 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1995,6 +1995,10 @@ struct Lisp_Hash_Table hash table size to reduce collisions. */ Lisp_Object index; + /* Non-nil if the table can be purecopied. Any changes the table after + purecopy will result in an error. */ + Lisp_Object pure; + /* Only the fields above are traced normally by the GC. The ones below `count' are special and are either ignored by the GC or traced in a special way (e.g. because of weakness). */ @@ -3364,7 +3368,7 @@ extern void sweep_weak_hash_tables (void); EMACS_UINT hash_string (char const *, ptrdiff_t); EMACS_UINT sxhash (Lisp_Object, int); Lisp_Object make_hash_table (struct hash_table_test, Lisp_Object, Lisp_Object, - Lisp_Object, Lisp_Object); + Lisp_Object, Lisp_Object, Lisp_Object); ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *); ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, EMACS_UINT); diff --git a/src/lread.c b/src/lread.c index ea2a1d1d85..17806922a8 100644 --- a/src/lread.c +++ b/src/lread.c @@ -2599,7 +2599,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list) Lisp_Object val = Qnil; /* The size is 2 * number of allowed keywords to make-hash-table. */ - Lisp_Object params[10]; + Lisp_Object params[12]; Lisp_Object ht; Lisp_Object key = Qnil; int param_count = 0; @@ -2636,6 +2636,11 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list) if (!NILP (params[param_count + 1])) param_count += 2; + params[param_count] = QCpurecopy; + params[param_count + 1] = Fplist_get (tmp, Qpurecopy); + if (!NILP (params[param_count + 1])) + param_count += 2; + /* This is the hash table data. */ data = Fplist_get (tmp, Qdata); @@ -4849,6 +4854,7 @@ that are loaded before your customizations are read! */); DEFSYM (Qdata, "data"); DEFSYM (Qtest, "test"); DEFSYM (Qsize, "size"); + DEFSYM (Qpurecopy, "purecopy"); DEFSYM (Qweakness, "weakness"); DEFSYM (Qrehash_size, "rehash-size"); DEFSYM (Qrehash_threshold, "rehash-threshold"); diff --git a/src/print.c b/src/print.c index 36d68a452e..db3d00f51f 100644 --- a/src/print.c +++ b/src/print.c @@ -1818,6 +1818,12 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag) print_object (h->rehash_threshold, printcharfun, escapeflag); } + if (!NILP (h->pure)) + { + print_c_string (" purecopy ", printcharfun); + print_object (h->pure, printcharfun, escapeflag); + } + print_c_string (" data ", printcharfun); /* Print the data here as a plist. */ diff --git a/src/profiler.c b/src/profiler.c index 88825bebdb..a223a7e7c0 100644 --- a/src/profiler.c +++ b/src/profiler.c @@ -48,7 +48,7 @@ make_log (EMACS_INT heap_size, EMACS_INT max_stack_depth) make_number (heap_size), make_float (DEFAULT_REHASH_SIZE), make_float (DEFAULT_REHASH_THRESHOLD), - Qnil); + Qnil, Qnil); struct Lisp_Hash_Table *h = XHASH_TABLE (log); /* What is special about our hash-tables is that the keys are pre-filled diff --git a/src/xterm.c b/src/xterm.c index 80cf8ce191..38229a5f31 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -12877,7 +12877,7 @@ keysyms. The default is nil, which is the same as `super'. */); Vx_keysym_table = make_hash_table (hashtest_eql, make_number (900), make_float (DEFAULT_REHASH_SIZE), make_float (DEFAULT_REHASH_THRESHOLD), - Qnil); + Qnil, Qnil); DEFVAR_BOOL ("x-frame-normalize-before-maximize", x_frame_normalize_before_maximize, --94eb2c147b0e0ba57305473ef489 Content-Type: text/x-patch; charset=US-ASCII; name="purecopy_hash_table.patch" Content-Disposition: attachment; filename="purecopy_hash_table.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyixplhx0 ZGlmZiAtLWdpdCBhL3NyYy9hbGxvYy5jIGIvc3JjL2FsbG9jLmMKaW5kZXggZjdiNjUxNWY0ZS4u N2QxMTMyYzk1MyAxMDA2NDQKLS0tIGEvc3JjL2FsbG9jLmMKKysrIGIvc3JjL2FsbG9jLmMKQEAg LTU0MzQsNiArNTQzNCwzNSBAQCBtYWtlX3B1cmVfdmVjdG9yIChwdHJkaWZmX3QgbGVuKQogICBy ZXR1cm4gbmV3OwogfQogCitzdGF0aWMgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqCittYWtlX3B1 cmVfaGFzaF90YWJsZSAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqdGFibGUpIHsKKyAgZWFzc2Vy dCAoTklMUCAodGFibGUtPndlYWspKTsKKyAgZWFzc2VydCAoIU5JTFAgKHRhYmxlLT5wdXJlKSk7 CisKKyAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqcHVyZSA9IHB1cmVfYWxsb2MgKHNpemVvZiAq cHVyZSwgTGlzcF9WZWN0b3JsaWtlKTsKKyAgc3RydWN0IGhhc2hfdGFibGVfdGVzdCBwdXJlX3Rl c3QgPSB0YWJsZS0+dGVzdDsKKworICAvKiBQdXJlY29weSB0aGUgaGFzaCB0YWJsZSB0ZXN0LiAg Ki8KKyAgcHVyZV90ZXN0Lm5hbWUgPSBwdXJlY29weSAodGFibGUtPnRlc3QubmFtZSk7CisgIHB1 cmVfdGVzdC51c2VyX2hhc2hfZnVuY3Rpb24gPSBwdXJlY29weSAodGFibGUtPnRlc3QudXNlcl9o YXNoX2Z1bmN0aW9uKTsKKyAgcHVyZV90ZXN0LnVzZXJfY21wX2Z1bmN0aW9uID0gcHVyZWNvcHkg KHRhYmxlLT50ZXN0LnVzZXJfY21wX2Z1bmN0aW9uKTsKKworICBwdXJlLT50ZXN0ID0gcHVyZV90 ZXN0OworICBwdXJlLT5oZWFkZXIgPSB0YWJsZS0+aGVhZGVyOworICBwdXJlLT53ZWFrID0gcHVy ZWNvcHkgKFFuaWwpOworICBwdXJlLT5yZWhhc2hfc2l6ZSA9IHB1cmVjb3B5ICh0YWJsZS0+cmVo YXNoX3NpemUpOworICBwdXJlLT5yZWhhc2hfdGhyZXNob2xkID0gcHVyZWNvcHkgKHRhYmxlLT5y ZWhhc2hfdGhyZXNob2xkKTsKKyAgcHVyZS0+aGFzaCA9IHB1cmVjb3B5ICh0YWJsZS0+aGFzaCk7 CisgIHB1cmUtPm5leHQgPSBwdXJlY29weSAodGFibGUtPm5leHQpOworICBwdXJlLT5uZXh0X2Zy ZWUgPSBwdXJlY29weSAodGFibGUtPm5leHRfZnJlZSk7CisgIHB1cmUtPmluZGV4ID0gcHVyZWNv cHkgKHRhYmxlLT5pbmRleCk7CisgIHB1cmUtPmNvdW50ID0gdGFibGUtPmNvdW50OworICBwdXJl LT5rZXlfYW5kX3ZhbHVlID0gcHVyZWNvcHkgKHRhYmxlLT5rZXlfYW5kX3ZhbHVlKTsKKyAgcHVy ZS0+cHVyZSA9IHB1cmVjb3B5ICh0YWJsZS0+cHVyZSk7CisKKyAgcmV0dXJuIHB1cmU7Cit9CisK IERFRlVOICgicHVyZWNvcHkiLCBGcHVyZWNvcHksIFNwdXJlY29weSwgMSwgMSwgMCwKICAgICAg ICBkb2M6IC8qIE1ha2UgYSBjb3B5IG9mIG9iamVjdCBPQkogaW4gcHVyZSBzdG9yYWdlLgogUmVj dXJzaXZlbHkgY29waWVzIGNvbnRlbnRzIG9mIHZlY3RvcnMgYW5kIGNvbnMgY2VsbHMuCkBAIC01 NDQyLDE0ICs1NDcxLDIyIEBAIERvZXMgbm90IGNvcHkgc3ltYm9scy4gIENvcGllcyBzdHJpbmdz IHdpdGhvdXQgdGV4dCBwcm9wZXJ0aWVzLiAgKi8pCiB7CiAgIGlmIChOSUxQIChWcHVyaWZ5X2Zs YWcpKQogICAgIHJldHVybiBvYmo7Ci0gIGVsc2UgaWYgKE1BUktFUlAgKG9iaikgfHwgT1ZFUkxB WVAgKG9iaikKLQkgICB8fCBIQVNIX1RBQkxFX1AgKG9iaikgfHwgU1lNQk9MUCAob2JqKSkKKyAg ZWxzZSBpZiAoTUFSS0VSUCAob2JqKSB8fCBPVkVSTEFZUCAob2JqKSB8fCBTWU1CT0xQIChvYmop KQogICAgIC8qIENhbid0IHB1cmlmeSB0aG9zZS4gICovCiAgICAgcmV0dXJuIG9iajsKICAgZWxz ZQogICAgIHJldHVybiBwdXJlY29weSAob2JqKTsKIH0KIAorc3RydWN0IHBpbm5lZF9vYmplY3QK K3sKKyAgTGlzcF9PYmplY3Qgb2JqZWN0OworICBzdHJ1Y3QgcGlubmVkX29iamVjdCAqbmV4dDsK K307CisKKy8qIFBpbm5lZCBvYmplY3RzIGFyZSBtYXJrZWQgYmVmb3JlIGV2ZXJ5IEdDIGN5Y2xl LiAgKi8KK3N0YXRpYyBzdHJ1Y3QgcGlubmVkX29iamVjdCAqcGlubmVkX29iamVjdHM7CisKIHN0 YXRpYyBMaXNwX09iamVjdAogcHVyZWNvcHkgKExpc3BfT2JqZWN0IG9iaikKIHsKQEAgLTU0Nzcs NyArNTUxNCwyNiBAQCBwdXJlY29weSAoTGlzcF9PYmplY3Qgb2JqKQogICAgIG9iaiA9IG1ha2Vf cHVyZV9zdHJpbmcgKFNTREFUQSAob2JqKSwgU0NIQVJTIChvYmopLAogCQkJICAgIFNCWVRFUyAo b2JqKSwKIAkJCSAgICBTVFJJTkdfTVVMVElCWVRFIChvYmopKTsKLSAgZWxzZSBpZiAoQ09NUElM RURQIChvYmopIHx8IFZFQ1RPUlAgKG9iaikgfHwgSEFTSF9UQUJMRV9QIChvYmopKQorICBlbHNl IGlmIChIQVNIX1RBQkxFX1AgKG9iaikpCisgICAgeworICAgICAgc3RydWN0IExpc3BfSGFzaF9U YWJsZSAqdGFibGUgPSBYSEFTSF9UQUJMRSAob2JqKTsKKyAgICAgIC8qIFdlIGNhbm5vdCBwdXJl Y29weSBoYXNoIHRhYmxlcyB3aGljaCBoYXZlbid0IGJlZW4gZGVmaW5lZCB3aXRoCisgICAgICAg ICA6cHVyZWNvcHkgYXMgbm9uLW5pbCwgdGhleSBhcmVuJ3QgZ3VhcmFudGVlZCB0byBub3QgY2hh bmdlLiAgKi8KKyAgICAgIGlmIChOSUxQICh0YWJsZS0+cHVyZSkpCisgICAgICAgIHsKKyAgICAg ICAgICAvKiBJbnN0ZWFkLCB0aGUgaGFzaCB0YWJsZSBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZiBw aW5uZWQgb2JqZWN0cywKKyAgICAgICAgICAgICBhbmQgaXMgbWFya2VkIGJlZm9yZSBHQy4gICov CisgICAgICAgICAgc3RydWN0IHBpbm5lZF9vYmplY3QgKm8gPSB4bWFsbG9jIChzaXplb2YgKm8p OworICAgICAgICAgIG8tPm9iamVjdCA9IG9iajsKKyAgICAgICAgICBvLT5uZXh0ID0gcGlubmVk X29iamVjdHM7CisgICAgICAgICAgcGlubmVkX29iamVjdHMgPSBvOworICAgICAgICAgIHJldHVy biBvYmo7CisgICAgICAgIH0KKworICAgICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IG1h a2VfcHVyZV9oYXNoX3RhYmxlICh0YWJsZSk7CisgICAgICBYU0VUX0hBU0hfVEFCTEUgKG9iaiwg aCk7CisgICAgfQorICBlbHNlIGlmIChDT01QSUxFRFAgKG9iaikgfHwgVkVDVE9SUCAob2JqKSkK ICAgICB7CiAgICAgICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKm9ianAgPSBYVkVDVE9SIChvYmopOwog ICAgICAgcHRyZGlmZl90IG5ieXRlcyA9IHZlY3Rvcl9uYnl0ZXMgKG9ianApOwpAQCAtNTY5NCw2 ICs1NzUwLDE2IEBAIGNvbXBhY3RfdW5kb19saXN0IChMaXNwX09iamVjdCBsaXN0KQogfQogCiBz dGF0aWMgdm9pZAorbWFya19waW5uZWRfb2JqZWN0cyAodm9pZCkKK3sKKyAgc3RydWN0IHBpbm5l ZF9vYmplY3QgKnBvYmo7CisgIGZvciAocG9iaiA9IHBpbm5lZF9vYmplY3RzOyBwb2JqOyBwb2Jq ID0gcG9iai0+bmV4dCkKKyAgICB7CisgICAgICBtYXJrX29iamVjdCAocG9iai0+b2JqZWN0KTsK KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCiBtYXJrX3Bpbm5lZF9zeW1ib2xzICh2b2lkKQogewog ICBzdHJ1Y3Qgc3ltYm9sX2Jsb2NrICpzYmxrOwpAQCAtNTgxMyw2ICs1ODc5LDcgQEAgZ2FyYmFn ZV9jb2xsZWN0XzEgKHZvaWQgKmVuZCkKICAgZm9yIChpID0gMDsgaSA8IHN0YXRpY2lkeDsgaSsr KQogICAgIG1hcmtfb2JqZWN0ICgqc3RhdGljdmVjW2ldKTsKIAorICBtYXJrX3Bpbm5lZF9vYmpl Y3RzICgpOwogICBtYXJrX3Bpbm5lZF9zeW1ib2xzICgpOwogICBtYXJrX3Rlcm1pbmFscyAoKTsK ICAgbWFya19rYm9hcmRzICgpOwpkaWZmIC0tZ2l0IGEvc3JjL2NhdGVnb3J5LmMgYi9zcmMvY2F0 ZWdvcnkuYwppbmRleCBlNWQyNjFjMWNmLi5mZjI4N2E0YWYzIDEwMDY0NAotLS0gYS9zcmMvY2F0 ZWdvcnkuYworKysgYi9zcmMvY2F0ZWdvcnkuYwpAQCAtNjcsNyArNjcsNyBAQCBoYXNoX2dldF9j YXRlZ29yeV9zZXQgKExpc3BfT2JqZWN0IHRhYmxlLCBMaXNwX09iamVjdCBjYXRlZ29yeV9zZXQp CiAgICAgICAgbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcXVhbCwgbWFrZV9udW1iZXIgKERF RkFVTFRfSEFTSF9TSVpFKSwKIAkJCW1ha2VfZmxvYXQgKERFRkFVTFRfUkVIQVNIX1NJWkUpLAog CQkJbWFrZV9mbG9hdCAoREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xEKSwKLQkJCVFuaWwpKTsKKwkJ CVFuaWwsIFFuaWwpKTsKICAgaCA9IFhIQVNIX1RBQkxFIChYQ0hBUl9UQUJMRSAodGFibGUpLT5l eHRyYXNbMV0pOwogICBpID0gaGFzaF9sb29rdXAgKGgsIGNhdGVnb3J5X3NldCwgJmhhc2gpOwog ICBpZiAoaSA+PSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLW1vZHVsZS5jIGIvc3JjL2VtYWNz LW1vZHVsZS5jCmluZGV4IGUyMmM3ZGM1YjcuLjY5ZmE1YzhlNjQgMTAwNjQ0Ci0tLSBhL3NyYy9l bWFjcy1tb2R1bGUuYworKysgYi9zcmMvZW1hY3MtbW9kdWxlLmMKQEAgLTEwMTYsNyArMTAxNiw3 IEBAIHN5bXNfb2ZfbW9kdWxlICh2b2lkKQogICAgID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVz dF9lcSwgbWFrZV9udW1iZXIgKERFRkFVTFRfSEFTSF9TSVpFKSwKIAkJICAgICAgIG1ha2VfZmxv YXQgKERFRkFVTFRfUkVIQVNIX1NJWkUpLAogCQkgICAgICAgbWFrZV9mbG9hdCAoREVGQVVMVF9S RUhBU0hfVEhSRVNIT0xEKSwKLQkJICAgICAgIFFuaWwpOworCQkgICAgICAgUW5pbCwgUW5pbCk7 CiAgIEZ1bmludGVybiAoUW1vZHVsZV9yZWZzX2hhc2gsIFFuaWwpOwogCiAgIERFRlNZTSAoUW1v ZHVsZV9lbnZpcm9ubWVudHMsICJtb2R1bGUtZW52aXJvbm1lbnRzIik7CmRpZmYgLS1naXQgYS9z cmMvZm5zLmMgYi9zcmMvZm5zLmMKaW5kZXggYjhlYmZlNWIyZS4uNDIwYmY2YzFlZSAxMDA2NDQK LS0tIGEvc3JjL2Zucy5jCisrKyBiL3NyYy9mbnMuYwpAQCAtMzQsNiArMzQsNyBAQCBhbG9uZyB3 aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCiAjaW5jbHVkZSAiYnVmZmVyLmgiCiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgiCiAjaW5j bHVkZSAid2luZG93LmgiCisjaW5jbHVkZSAicHVyZXNpemUuaCIKIAogc3RhdGljIHZvaWQgc29y dF92ZWN0b3JfY29weSAoTGlzcF9PYmplY3QsIHB0cmRpZmZfdCwKIAkJCSAgICAgIExpc3BfT2Jq ZWN0ICpyZXN0cmljdCwgTGlzcF9PYmplY3QgKnJlc3RyaWN0KTsKQEAgLTM3NTAsMTIgKzM3NTEs MTcgQEAgYWxsb2NhdGVfaGFzaF90YWJsZSAodm9pZCkKICAgICh0YWJsZSBzaXplKSBpcyA+PSBS RUhBU0hfVEhSRVNIT0xELgogCiAgICBXRUFLIHNwZWNpZmllcyB0aGUgd2Vha25lc3Mgb2YgdGhl IHRhYmxlLiAgSWYgbm9uLW5pbCwgaXQgbXVzdCBiZQotICAgb25lIG9mIHRoZSBzeW1ib2xzIGBr ZXknLCBgdmFsdWUnLCBga2V5LW9yLXZhbHVlJywgb3IgYGtleS1hbmQtdmFsdWUnLiAgKi8KKyAg IG9uZSBvZiB0aGUgc3ltYm9scyBga2V5JywgYHZhbHVlJywgYGtleS1vci12YWx1ZScsIG9yIGBr ZXktYW5kLXZhbHVlJy4KKworICAgSWYgUFVSRUNPUFkgaXMgbm9uLW5pbCwgdGhlIHRhYmxlIGNh biBiZSBjb3BpZWQgdG8gcHVyZSBzdG9yYWdlIHZpYQorICAgYHB1cmVjb3B5JyB3aGVuIEVtYWNz IGlzIGJlaW5nIGR1bXBlZC4gU3VjaCB0YWJsZXMgY2FuIG5vIGxvbmdlciBiZQorICAgY2hhbmdl ZCBhZnRlciBwdXJlY29weS4gICovCiAKIExpc3BfT2JqZWN0CiBtYWtlX2hhc2hfdGFibGUgKHN0 cnVjdCBoYXNoX3RhYmxlX3Rlc3QgdGVzdCwKIAkJIExpc3BfT2JqZWN0IHNpemUsIExpc3BfT2Jq ZWN0IHJlaGFzaF9zaXplLAotCQkgTGlzcF9PYmplY3QgcmVoYXNoX3RocmVzaG9sZCwgTGlzcF9P YmplY3Qgd2VhaykKKwkJIExpc3BfT2JqZWN0IHJlaGFzaF90aHJlc2hvbGQsIExpc3BfT2JqZWN0 IHdlYWssCisgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IHB1cmUpCiB7CiAgIHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKmg7CiAgIExpc3BfT2JqZWN0IHRhYmxlOwpAQCAtMzc3NCw2ICszNzgw LDggQEAgbWFrZV9oYXNoX3RhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3QsCiAKICAg aWYgKFhGQVNUSU5UIChzaXplKSA9PSAwKQogICAgIHNpemUgPSBtYWtlX251bWJlciAoMSk7Cisg IGlmICghTklMUCAod2VhaykgJiYgIU5JTFAgKHB1cmUpKQorICAgIGVycm9yICgiV2VhayBoYXNo IHRhYmxlcyBjYW5ub3QgYmUgcHVyZWNvcGllZCIpOwogCiAgIHN6ID0gWEZBU1RJTlQgKHNpemUp OwogICBpbmRleF9mbG9hdCA9IHN6IC8gWEZMT0FUX0RBVEEgKHJlaGFzaF90aHJlc2hvbGQpOwpA QCAtMzc5Niw2ICszODA0LDcgQEAgbWFrZV9oYXNoX3RhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZV90 ZXN0IHRlc3QsCiAgIGgtPmhhc2ggPSBGbWFrZV92ZWN0b3IgKHNpemUsIFFuaWwpOwogICBoLT5u ZXh0ID0gRm1ha2VfdmVjdG9yIChzaXplLCBRbmlsKTsKICAgaC0+aW5kZXggPSBGbWFrZV92ZWN0 b3IgKG1ha2VfbnVtYmVyIChpbmRleF9zaXplKSwgUW5pbCk7CisgIGgtPnB1cmUgPSBwdXJlOwog CiAgIC8qIFNldCB1cCB0aGUgZnJlZSBsaXN0LiAgKi8KICAgZm9yIChpID0gMDsgaSA8IHN6IC0g MTsgKytpKQpAQCAtNDQ2MCwxMCArNDQ2OSwxNCBAQCBrZXksIHZhbHVlLCBvbmUgb2Yga2V5IG9y IHZhbHVlLCBvciBib3RoIGtleSBhbmQgdmFsdWUsIGRlcGVuZGluZyBvbgogV0VBSy4gIFdFQUsg dCBpcyBlcXVpdmFsZW50IHRvIGBrZXktYW5kLXZhbHVlJy4gIERlZmF1bHQgdmFsdWUgb2YgV0VB SwogaXMgbmlsLgogCis6cHVyZWNvcHkgUFVSRUNPUFkgLS0gSWYgUFVSRUNPUFkgaXMgbm9uLW5p bCwgdGhlIHRhYmxlIGNhbiBiZSBjb3BpZWQKK3RvIHB1cmUgc3RvcmFnZSB3aGVuIEVtYWNzIGlz IGJlaW5nIGR1bXBlZCwgbWFraW5nIHRoZSBjb250ZW50cyBvZiB0aGUKK3RhYmxlIHJlYWQgb25s eS4gV0VBSyBzaG91bGQgYmUgbmlsIGZvciBzdWNoIHRhYmxlcy4KKwogdXNhZ2U6IChtYWtlLWhh c2gtdGFibGUgJnJlc3QgS0VZV09SRC1BUkdTKSAgKi8pCiAgIChwdHJkaWZmX3QgbmFyZ3MsIExp c3BfT2JqZWN0ICphcmdzKQogewotICBMaXNwX09iamVjdCB0ZXN0LCBzaXplLCByZWhhc2hfc2l6 ZSwgcmVoYXNoX3RocmVzaG9sZCwgd2VhazsKKyAgTGlzcF9PYmplY3QgdGVzdCwgc2l6ZSwgcmVo YXNoX3NpemUsIHJlaGFzaF90aHJlc2hvbGQsIHdlYWssIHB1cmU7CiAgIHN0cnVjdCBoYXNoX3Rh YmxlX3Rlc3QgdGVzdGRlc2M7CiAgIHB0cmRpZmZfdCBpOwogICBVU0VfU0FGRV9BTExPQ0E7CkBA IC00NDk3LDYgKzQ1MTAsOSBAQCB1c2FnZTogKG1ha2UtaGFzaC10YWJsZSAmcmVzdCBLRVlXT1JE LUFSR1MpICAqLykKICAgICAgIHRlc3RkZXNjLmNtcGZuID0gY21wZm5fdXNlcl9kZWZpbmVkOwog ICAgIH0KIAorICAvKiBTZWUgaWYgdGhlcmUncyBhIGA6cHVyZWNvcHkgUFVSRUNPUFknIGFyZ3Vt ZW50LiAgKi8KKyAgaSA9IGdldF9rZXlfYXJnIChRQ3B1cmVjb3B5LCBuYXJncywgYXJncywgdXNl ZCk7CisgIHB1cmUgPSBpID8gYXJnc1tpXSA6IFFuaWw7CiAgIC8qIFNlZSBpZiB0aGVyZSdzIGEg YDpzaXplIFNJWkUnIGFyZ3VtZW50LiAgKi8KICAgaSA9IGdldF9rZXlfYXJnIChRQ3NpemUsIG5h cmdzLCBhcmdzLCB1c2VkKTsKICAgc2l6ZSA9IGkgPyBhcmdzW2ldIDogUW5pbDsKQEAgLTQ1Mzgs NyArNDU1NCw4IEBAIHVzYWdlOiAobWFrZS1oYXNoLXRhYmxlICZyZXN0IEtFWVdPUkQtQVJHUykg ICovKQogICAgICAgc2lnbmFsX2Vycm9yICgiSW52YWxpZCBhcmd1bWVudCBsaXN0IiwgYXJnc1tp XSk7CiAKICAgU0FGRV9GUkVFICgpOwotICByZXR1cm4gbWFrZV9oYXNoX3RhYmxlICh0ZXN0ZGVz Yywgc2l6ZSwgcmVoYXNoX3NpemUsIHJlaGFzaF90aHJlc2hvbGQsIHdlYWspOworICByZXR1cm4g bWFrZV9oYXNoX3RhYmxlICh0ZXN0ZGVzYywgc2l6ZSwgcmVoYXNoX3NpemUsIHJlaGFzaF90aHJl c2hvbGQsIHdlYWssCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmUpOwogfQogCiAKQEAg LTQ2MTcsNyArNDYzNCw5IEBAIERFRlVOICgiY2xyaGFzaCIsIEZjbHJoYXNoLCBTY2xyaGFzaCwg MSwgMSwgMCwKICAgICAgICBkb2M6IC8qIENsZWFyIGhhc2ggdGFibGUgVEFCTEUgYW5kIHJldHVy biBpdC4gICovKQogICAoTGlzcF9PYmplY3QgdGFibGUpCiB7Ci0gIGhhc2hfY2xlYXIgKGNoZWNr X2hhc2hfdGFibGUgKHRhYmxlKSk7CisgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmggPSBjaGVj a19oYXNoX3RhYmxlICh0YWJsZSk7CisgIENIRUNLX0lNUFVSRSAodGFibGUsIGgpOworICBoYXNo X2NsZWFyIChoKTsKICAgLyogQmUgY29tcGF0aWJsZSB3aXRoIFhFbWFjcy4gICovCiAgIHJldHVy biB0YWJsZTsKIH0KQEAgLTQ2NDEsOSArNDY2MCwxMCBAQCBWQUxVRS4gIEluIGFueSBjYXNlLCBy ZXR1cm4gVkFMVUUuICAqLykKICAgKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgdmFsdWUs IExpc3BfT2JqZWN0IHRhYmxlKQogewogICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gY2hl Y2tfaGFzaF90YWJsZSAodGFibGUpOworICBDSEVDS19JTVBVUkUgKHRhYmxlLCBoKTsKKwogICBw dHJkaWZmX3QgaTsKICAgRU1BQ1NfVUlOVCBoYXNoOwotCiAgIGkgPSBoYXNoX2xvb2t1cCAoaCwg a2V5LCAmaGFzaCk7CiAgIGlmIChpID49IDApCiAgICAgc2V0X2hhc2hfdmFsdWVfc2xvdCAoaCwg aSwgdmFsdWUpOwpAQCAtNDY1OSw2ICs0Njc5LDcgQEAgREVGVU4gKCJyZW1oYXNoIiwgRnJlbWhh c2gsIFNyZW1oYXNoLCAyLCAyLCAwLAogICAoTGlzcF9PYmplY3Qga2V5LCBMaXNwX09iamVjdCB0 YWJsZSkKIHsKICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IGNoZWNrX2hhc2hfdGFibGUg KHRhYmxlKTsKKyAgQ0hFQ0tfSU1QVVJFICh0YWJsZSwgaCk7CiAgIGhhc2hfcmVtb3ZlX2Zyb21f dGFibGUgKGgsIGtleSk7CiAgIHJldHVybiBRbmlsOwogfQpAQCAtNTAyOSw2ICs1MDUwLDcgQEAg c3ltc19vZl9mbnMgKHZvaWQpCiAgIERFRlNZTSAoUWVxdWFsLCAiZXF1YWwiKTsKICAgREVGU1lN IChRQ3Rlc3QsICI6dGVzdCIpOwogICBERUZTWU0gKFFDc2l6ZSwgIjpzaXplIik7CisgIERFRlNZ TSAoUUNwdXJlY29weSwgIjpwdXJlY29weSIpOwogICBERUZTWU0gKFFDcmVoYXNoX3NpemUsICI6 cmVoYXNoLXNpemUiKTsKICAgREVGU1lNIChRQ3JlaGFzaF90aHJlc2hvbGQsICI6cmVoYXNoLXRo cmVzaG9sZCIpOwogICBERUZTWU0gKFFDd2Vha25lc3MsICI6d2Vha25lc3MiKTsKZGlmZiAtLWdp dCBhL3NyYy9pbWFnZS5jIGIvc3JjL2ltYWdlLmMKaW5kZXggMzk2NzdkMmFkZC4uYWQwMTQzYmU0 OCAxMDA2NDQKLS0tIGEvc3JjL2ltYWdlLmMKKysrIGIvc3JjL2ltYWdlLmMKQEAgLTQwMjAsNyAr NDAyMCw3IEBAIHhwbV9tYWtlX2NvbG9yX3RhYmxlX2ggKHZvaWQgKCoqcHV0X2Z1bmMpIChMaXNw X09iamVjdCwgY29uc3QgY2hhciAqLCBpbnQsCiAgIHJldHVybiBtYWtlX2hhc2hfdGFibGUgKGhh c2h0ZXN0X2VxdWFsLCBtYWtlX251bWJlciAoREVGQVVMVF9IQVNIX1NJWkUpLAogCQkJICBtYWtl X2Zsb2F0IChERUZBVUxUX1JFSEFTSF9TSVpFKSwKIAkJCSAgbWFrZV9mbG9hdCAoREVGQVVMVF9S RUhBU0hfVEhSRVNIT0xEKSwKLQkJCSAgUW5pbCk7CisJCQkgIFFuaWwsIFFuaWwpOwogfQogCiBz dGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggODRk NTNiYjFlZS4uOTFjNDMwZmU5OCAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlz cC5oCkBAIC0xOTk1LDYgKzE5OTUsMTAgQEAgc3RydWN0IExpc3BfSGFzaF9UYWJsZQogICAgICBo YXNoIHRhYmxlIHNpemUgdG8gcmVkdWNlIGNvbGxpc2lvbnMuICAqLwogICBMaXNwX09iamVjdCBp bmRleDsKIAorICAvKiBOb24tbmlsIGlmIHRoZSB0YWJsZSBjYW4gYmUgcHVyZWNvcGllZC4gQW55 IGNoYW5nZXMgdGhlIHRhYmxlIGFmdGVyCisgICAgIHB1cmVjb3B5IHdpbGwgcmVzdWx0IGluIGFu IGVycm9yLiAgKi8KKyAgTGlzcF9PYmplY3QgcHVyZTsKKwogICAvKiBPbmx5IHRoZSBmaWVsZHMg YWJvdmUgYXJlIHRyYWNlZCBub3JtYWxseSBieSB0aGUgR0MuICBUaGUgb25lcyBiZWxvdwogICAg ICBgY291bnQnIGFyZSBzcGVjaWFsIGFuZCBhcmUgZWl0aGVyIGlnbm9yZWQgYnkgdGhlIEdDIG9y IHRyYWNlZCBpbgogICAgICBhIHNwZWNpYWwgd2F5IChlLmcuIGJlY2F1c2Ugb2Ygd2Vha25lc3Mp LiAgKi8KQEAgLTMzNjQsNyArMzM2OCw3IEBAIGV4dGVybiB2b2lkIHN3ZWVwX3dlYWtfaGFzaF90 YWJsZXMgKHZvaWQpOwogRU1BQ1NfVUlOVCBoYXNoX3N0cmluZyAoY2hhciBjb25zdCAqLCBwdHJk aWZmX3QpOwogRU1BQ1NfVUlOVCBzeGhhc2ggKExpc3BfT2JqZWN0LCBpbnQpOwogTGlzcF9PYmpl Y3QgbWFrZV9oYXNoX3RhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0LCBMaXNwX09iamVjdCwg TGlzcF9PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0LCBM aXNwX09iamVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0LCBM aXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwogcHRyZGlmZl90IGhhc2hfbG9va3VwIChzdHJ1Y3Qg TGlzcF9IYXNoX1RhYmxlICosIExpc3BfT2JqZWN0LCBFTUFDU19VSU5UICopOwogcHRyZGlmZl90 IGhhc2hfcHV0IChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICosIExpc3BfT2JqZWN0LCBMaXNwX09i amVjdCwKIAkJICAgIEVNQUNTX1VJTlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2xyZWFkLmMgYi9zcmMv bHJlYWQuYwppbmRleCBlYTJhMWQxZDg1Li4xNzgwNjkyMmE4IDEwMDY0NAotLS0gYS9zcmMvbHJl YWQuYworKysgYi9zcmMvbHJlYWQuYwpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgcmVhZDEgKExpc3Bf T2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBmaXJzdF9pbl9saXN0KQogCSAgICAg IExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7CiAJICAgICAgLyogVGhlIHNpemUgaXMgMiAqIG51bWJl ciBvZiBhbGxvd2VkIGtleXdvcmRzIHRvCiAJCSBtYWtlLWhhc2gtdGFibGUuICAqLwotCSAgICAg IExpc3BfT2JqZWN0IHBhcmFtc1sxMF07CisJICAgICAgTGlzcF9PYmplY3QgcGFyYW1zWzEyXTsK IAkgICAgICBMaXNwX09iamVjdCBodDsKIAkgICAgICBMaXNwX09iamVjdCBrZXkgPSBRbmlsOwog CSAgICAgIGludCBwYXJhbV9jb3VudCA9IDA7CkBAIC0yNjM2LDYgKzI2MzYsMTEgQEAgcmVhZDEg KExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBmaXJzdF9pbl9saXN0KQog CSAgICAgIGlmICghTklMUCAocGFyYW1zW3BhcmFtX2NvdW50ICsgMV0pKQogCQlwYXJhbV9jb3Vu dCArPSAyOwogCisgICAgICAgICAgICAgIHBhcmFtc1twYXJhbV9jb3VudF0gPSBRQ3B1cmVjb3B5 OworICAgICAgICAgICAgICBwYXJhbXNbcGFyYW1fY291bnQgKyAxXSA9IEZwbGlzdF9nZXQgKHRt cCwgUXB1cmVjb3B5KTsKKyAgICAgICAgICAgICAgaWYgKCFOSUxQIChwYXJhbXNbcGFyYW1fY291 bnQgKyAxXSkpCisgICAgICAgICAgICAgICAgcGFyYW1fY291bnQgKz0gMjsKKwogCSAgICAgIC8q IFRoaXMgaXMgdGhlIGhhc2ggdGFibGUgZGF0YS4gICovCiAJICAgICAgZGF0YSA9IEZwbGlzdF9n ZXQgKHRtcCwgUWRhdGEpOwogCkBAIC00ODQ5LDYgKzQ4NTQsNyBAQCB0aGF0IGFyZSBsb2FkZWQg YmVmb3JlIHlvdXIgY3VzdG9taXphdGlvbnMgYXJlIHJlYWQhICAqLyk7CiAgIERFRlNZTSAoUWRh dGEsICJkYXRhIik7CiAgIERFRlNZTSAoUXRlc3QsICJ0ZXN0Iik7CiAgIERFRlNZTSAoUXNpemUs ICJzaXplIik7CisgIERFRlNZTSAoUXB1cmVjb3B5LCAicHVyZWNvcHkiKTsKICAgREVGU1lNIChR d2Vha25lc3MsICJ3ZWFrbmVzcyIpOwogICBERUZTWU0gKFFyZWhhc2hfc2l6ZSwgInJlaGFzaC1z aXplIik7CiAgIERFRlNZTSAoUXJlaGFzaF90aHJlc2hvbGQsICJyZWhhc2gtdGhyZXNob2xkIik7 CmRpZmYgLS1naXQgYS9zcmMvcHJpbnQuYyBiL3NyYy9wcmludC5jCmluZGV4IDM2ZDY4YTQ1MmUu LmRiM2QwMGY1MWYgMTAwNjQ0Ci0tLSBhL3NyYy9wcmludC5jCisrKyBiL3NyYy9wcmludC5jCkBA IC0xODE4LDYgKzE4MTgsMTIgQEAgcHJpbnRfb2JqZWN0IChMaXNwX09iamVjdCBvYmosIExpc3Bf T2JqZWN0IHByaW50Y2hhcmZ1biwgYm9vbCBlc2NhcGVmbGFnKQogCSAgICAgIHByaW50X29iamVj dCAoaC0+cmVoYXNoX3RocmVzaG9sZCwgcHJpbnRjaGFyZnVuLCBlc2NhcGVmbGFnKTsKIAkgICAg fQogCisgICAgICAgICAgaWYgKCFOSUxQIChoLT5wdXJlKSkKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgcHJpbnRfY19zdHJpbmcgKCIgcHVyZWNvcHkgIiwgcHJpbnRjaGFyZnVuKTsKKwkg ICAgICBwcmludF9vYmplY3QgKGgtPnB1cmUsIHByaW50Y2hhcmZ1biwgZXNjYXBlZmxhZyk7Cisg ICAgICAgICAgICB9CisKIAkgIHByaW50X2Nfc3RyaW5nICgiIGRhdGEgIiwgcHJpbnRjaGFyZnVu KTsKIAogCSAgLyogUHJpbnQgdGhlIGRhdGEgaGVyZSBhcyBhIHBsaXN0LiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Byb2ZpbGVyLmMgYi9zcmMvcHJvZmlsZXIuYwppbmRleCA4ODgyNWJlYmRiLi5hMjIz YTdlN2MwIDEwMDY0NAotLS0gYS9zcmMvcHJvZmlsZXIuYworKysgYi9zcmMvcHJvZmlsZXIuYwpA QCAtNDgsNyArNDgsNyBAQCBtYWtlX2xvZyAoRU1BQ1NfSU5UIGhlYXBfc2l6ZSwgRU1BQ1NfSU5U IG1heF9zdGFja19kZXB0aCkKIAkJCQkgICAgIG1ha2VfbnVtYmVyIChoZWFwX3NpemUpLAogCQkJ CSAgICAgbWFrZV9mbG9hdCAoREVGQVVMVF9SRUhBU0hfU0laRSksCiAJCQkJICAgICBtYWtlX2Zs b2F0IChERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQpLAotCQkJCSAgICAgUW5pbCk7CisJCQkJICAg ICBRbmlsLCBRbmlsKTsKICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IFhIQVNIX1RBQkxF IChsb2cpOwogCiAgIC8qIFdoYXQgaXMgc3BlY2lhbCBhYm91dCBvdXIgaGFzaC10YWJsZXMgaXMg dGhhdCB0aGUga2V5cyBhcmUgcHJlLWZpbGxlZApkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9z cmMveHRlcm0uYwppbmRleCA4MGNmOGNlMTkxLi4zODIyOWE1ZjMxIDEwMDY0NAotLS0gYS9zcmMv eHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtMTI4NzcsNyArMTI4NzcsNyBAQCBrZXlzeW1z LiAgVGhlIGRlZmF1bHQgaXMgbmlsLCB3aGljaCBpcyB0aGUgc2FtZSBhcyBgc3VwZXInLiAgKi8p OwogICBWeF9rZXlzeW1fdGFibGUgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxbCwgbWFr ZV9udW1iZXIgKDkwMCksCiAJCQkJICAgICBtYWtlX2Zsb2F0IChERUZBVUxUX1JFSEFTSF9TSVpF KSwKIAkJCQkgICAgIG1ha2VfZmxvYXQgKERFRkFVTFRfUkVIQVNIX1RIUkVTSE9MRCksCi0JCQkJ ICAgICBRbmlsKTsKKwkJCQkgICAgIFFuaWwsIFFuaWwpOwogCiAgIERFRlZBUl9CT09MICgieC1m cmFtZS1ub3JtYWxpemUtYmVmb3JlLW1heGltaXplIiwKIAkgICAgICAgeF9mcmFtZV9ub3JtYWxp emVfYmVmb3JlX21heGltaXplLAo= --94eb2c147b0e0ba57305473ef489-- From MAILER-DAEMON Sun Jan 29 12:31:07 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXtJj-0003cp-F6 for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 12:31:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44368) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtJd-0003bj-Hy for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:31:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXtJY-0002m9-GX for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:31:01 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:48899) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtJY-0002m5-Cv; Sun, 29 Jan 2017 12:30:56 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3086 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXtJX-0004oA-2t; Sun, 29 Jan 2017 12:30:56 -0500 Date: Sun, 29 Jan 2017 19:30:47 +0200 Message-Id: <83h94hydrs.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: (message from Paul Eggert on Thu, 26 Jan 2017 09:45:09 -0800) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Reply-to: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 17:31:06 -0000 > From: Paul Eggert > Date: Thu, 26 Jan 2017 09:45:09 -0800 > > I was under the impression that if immediate_quit is true, then a tight > loop in C doesn't need to call maybe_quit (the new name for QUIT), as > C-g will error out immediately. There is longstanding code in the > interpreter that assumes this, for example in the implementation of nth. > > Unfortunately my impression is incorrect. If you byte-compile this: > > (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) > > and load the resulting .elc file and then execute (foo) on a 64-bit > Emacs displaying X, then C-g does not interrupt Emacs and Emacs hangs > while counting up to 2**61. (C-g works as expected with emacs -nw.) I > will look into fixing this longstanding bug, as well as fixing similar > bugs that I recently introduced. > > This leads me to wonder: what's the point of immediate_quit? If > immediate_quit doesn't always cause C-g to immediately quit, why are we > bothering with an immediate_quit variable? Or if immediate_quit makes > sense, then should we arrange for a C-g under X to behave more like C-g > on a terminal, and do a longjmp? (Shudder.) Once upon a time Emacs on X would read input from a SIGIO handler. If you look in the sources for, say, Emacs 22.3, you will see there that the function input_available_signal, which was installed as the SIGIO handler, called handle_async_input, which read input from the window-system. As part of reading input, Emacs would QUIT immediately when it saw C-g, if immediate_quit was set and inhibit-quit was nil. Thus, functions that wanted to be interruptible could set immediate_quit non-zero and be sure they will be interrupted when the user pressed C-g. Later we decided that doing non-trivial stuff from signal handlers was not such a good idea. So nowadays, the SIGIO handler just sets a flag and returns. That flag is checked as part of QUIT (now rebranded as maybe_quit), and if found set, we quit at that time. This is why we started inserting QUIT in places that could potentially hang or take a long time -- to allow the user to interrupt them sooner rather than later. And that is why the recent changes which removed QUIT and added setting immediate_quit non-zero are a move in the wrong direction -- we should be doing the exact opposite. > > Of course, for circular lists a better solution is to use the > > hare&tortoise, e.g. with FOR_EACH_TAIL. > > Yes, that's something that could be done in these cases too. I'd like to > get C-g fixed first, though. If your plan for fixing this is anything other than restoring the removed calls to maybe_quit, please show or describe your planned changes before you install them. This tricky issue is further complicated by the concurrency features, so I think we should make sure the design is right before applying. Thanks. From MAILER-DAEMON Sun Jan 29 12:48:21 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXtaP-0007Jm-3g for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 12:48:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46516) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtaJ-0007Jf-Ho for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:48:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXtaE-0007G3-Vq for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:48:15 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:56904) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtaE-0007Et-Q8; Sun, 29 Jan 2017 12:48:10 -0500 Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v0THlv2X027155; Sun, 29 Jan 2017 12:47:58 -0500 Received: by ceviche.home (Postfix, from userid 20848) id B38BD66261; Sun, 29 Jan 2017 12:47:57 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Cc: Paul Eggert , emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Message-ID: References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> Date: Sun, 29 Jan 2017 12:47:57 -0500 In-Reply-To: <83h94hydrs.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 29 Jan 2017 19:30:47 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV5934=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5934> : inlines <5665> : streams <1730772> : uri <2367061> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 17:48:20 -0000 >>>>> "Eli" == Eli Zaretskii writes: [...] Thanks. This nicely matches what I remember, but I wasn't sure (I'm obviously quite familiar with this story, since I was the one who introduced the SYNC_INPUT changes, yet I never quite understood the details of the immediate_quit thingy). > This is why we started inserting QUIT in places that could potentially > hang or take a long time -- to allow the user to interrupt them sooner > rather than later. And that is why the recent changes which removed > QUIT and added setting immediate_quit non-zero are a move in the wrong > direction -- we should be doing the exact opposite. So, IIUC we should basically get rid of immediate_quit. Since I never really understood it, I'd be happy to see it disappear ;-) [ But, it's obviously not urgent. ] Stefan From MAILER-DAEMON Sun Jan 29 12:58:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXtkb-0000zv-Qt for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 12:58:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48292) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXtkY-0000zn-UI for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:58:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXtkV-0002hu-1U for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:58:50 -0500 Received: from [195.159.176.226] (port=33870 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXtkU-0002ho-Qr for emacs-devel@gnu.org; Sun, 29 Jan 2017 12:58:46 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXtkN-000411-E3 for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:58:39 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: [PATCH] Make purecopy create hash tables properly Date: Sun, 29 Jan 2017 12:58:23 -0500 Lines: 36 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:6gvHnFhGFW/FjgqSToP80/3lIiM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 17:58:52 -0000 > Based on these suggestions, I have made a few more modifications to the code: > * `gethash' now takes an additional :purecopy argument. If non-nil, the table > will/can be copied to pure storage when the Emacs binary is being dumped. > Since objects in pure storage are read only, gethash enforces that :weak and > :purecopy aren't non-nil at the same time, erroring out when the latter is true. Hmm... why do that in gethash? Why not just check NILP (obj->weak) when purecopying? > * All functions that modify hash tables (`puthash', `clrhash' and `remhash') > make sure that the table is not in pure storage (with CHECK_IMPURE). Good. > * `make_pure_hash_table' now also purecopies the hash table test, and enforces > the checks above with `eassert'. Sounds good. > * A new struct, `pinned_object' is used as a linked list to store objects that > should be marked before every GC cycle. For now, this is only used when > a hash table with the :purecopy property set to nil is passed to purecopy (but > should be usable for other objects in the future). An array would be significantly more efficient, but that sounds good. > Should this work, or is there anything else I need to do? I think this should work. > +make_pure_hash_table (struct Lisp_Hash_Table *table) { Nitpick: I'd call it `purecopy_hash_table`. Stefan From MAILER-DAEMON Sun Jan 29 14:14:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXuw9-0005f2-VJ for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 14:14:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXuw6-0005ej-DU for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:14:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXuw2-0003yO-I5 for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:14:50 -0500 Received: from mail-yw0-x231.google.com ([2607:f8b0:4002:c05::231]:33833) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXuw2-0003yC-CH for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:14:46 -0500 Received: by mail-yw0-x231.google.com with SMTP id w75so44876541ywg.1 for ; Sun, 29 Jan 2017 11:14:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=5/wQ3n08zUgYM+FoVWtBkG9161HKM1/iEXU0T6WFjDM=; b=TOW1it0siLt0rzDZqkykFDGNw3WbBpamTqEoBLGCWYKaqL52s4eONwhTZlSG0zde0s +vsh0x2FSytBsgRXgJIOQKE7lHu0P145kkWJtiSwfntAggHXPqEA8FqSFwriUpsmqe4V xXPRbK2zqhPpmmsJ6H/LbpCjQ84/TnPmmKTwLTCO1C2nkBak+KLHSf+1HkbCEfSDRNEt 3M4uBtvRaSOCAwn2VDpxKsnJys8KfYy3l75Lgevd+dxa1bha+NX0YAlelm+9qSrbJ02r G9Eoq3q8a79kSnWXHJ6Fq0+Kpv/OOshu+Oe04GkNFshftgbMwY6zW15C4AGXfXSs5MB4 X+rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=5/wQ3n08zUgYM+FoVWtBkG9161HKM1/iEXU0T6WFjDM=; b=J6ZLjN6qihXwMhip2g0OcFa+2gfZCr+mttHNsUZGeEBut65juHPgAJ/ZHSf2LV34Qh giDR3Epm0NEIPiCHUT98qOor2UJmg7uBSb1xIa+8t3k+loNpgJZAT1FYzryG8izqwBWP 9k90HynHg61G/s80quAw8J+ptv+YLX7AQYlZ7iGABQEql1oSTEhu4XWi5cHBiV1g97Rs q2Q5hkYaH4IyIN9jzgeq0X0yNsZIZmJxv5bYJpcVtVhE/IbFQQx1N9TbdFU+YL97rbcI 7Fc6NyDf3efMzPpEWn0TZaDZBWiFuKNCoATBvLt4K0W81lw7Ec7KTAnTcYvW2RUX3j7p QsYg== X-Gm-Message-State: AIkVDXIANz694eQTzTbMqLNM01Wez2ypahn7zq+KHLhl8DWfwHDOa7TX3M6ojQ3AKy3O3M2Y1b6wwfQmMtGWXg== X-Received: by 10.129.71.11 with SMTP id u11mr12122118ywa.79.1485717285687; Sun, 29 Jan 2017 11:14:45 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Sun, 29 Jan 2017 11:14:45 -0800 (PST) Received: by 10.129.153.77 with HTTP; Sun, 29 Jan 2017 11:14:45 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Mon, 30 Jan 2017 00:44:45 +0530 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=001a114d72ea0cd83f05474083b9 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 19:14:52 -0000 --001a114d72ea0cd83f05474083b9 Content-Type: text/plain; charset=UTF-8 On 29-Jan-2017 11:29 PM, "Stefan Monnier" wrote: Hmm... why do that in gethash? Why not just check NILP (obj->weak) when purecopying? The rationale for this was that weak tables wouldn't be purecopied, so it might be a good idea to inform the user about that beforhand. The simple NILP (obj->weak) check in purecopy is much easier and wouldn't generate errors, I'll switch to that instead. > Should this work, or is there anything else I need to do? I think this should work. Alright then, I'll push this to master after adding some more documentation. > +make_pure_hash_table (struct Lisp_Hash_Table *table) { Nitpick: I'd call it `purecopy_hash_table`. Other functions in alloc.c that perform pure allocation for different objects are named in the same way (make_pure_string, make_pure_vector), so I merely followed this convention. --001a114d72ea0cd83f05474083b9 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On 29-Jan-2017 11:29 PM, "Stefan Monnier" <monnier@iro.umontreal.ca> wrote= :
Hmm... why do that in gethash?=C2=A0 Why not just= check NILP (obj->weak)
when purecopying?
The rationale for this was that weak tables wouldn't be purecopi= ed, so it might be a good idea to inform the user about that beforhand. The= simple NILP (obj->weak) check in purecopy is much easier and wouldn'= ;t generate errors, I'll switch to that instead.

> Should this work, or is there anything else I need to do?

I think this should work.
Alright then, I'll push this to master after adding some more= documentation.
> +make_pure_hash_table (struct Lisp_Hash_Table *table) {

Nitpick: I'd call it `purecopy_hash_table`.
Other functions in alloc.c that perform pure allocatio= n for different objects are named in the same way (make_pure_string, make_p= ure_vector), so I merely followed this convention.=C2=A0

--001a114d72ea0cd83f05474083b9-- From MAILER-DAEMON Sun Jan 29 14:42:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXvMT-00030R-KE for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 14:42:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59905) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXvMN-00030A-Kf for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:42:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXvMJ-00069Y-PA for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:41:59 -0500 Received: from [195.159.176.226] (port=35326 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXvMJ-00069C-If for emacs-devel@gnu.org; Sun, 29 Jan 2017 14:41:55 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cXvMB-0008IU-1E for emacs-devel@gnu.org; Sun, 29 Jan 2017 20:41:47 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: [PATCH] Make purecopy create hash tables properly Date: Sun, 29 Jan 2017 14:41:47 -0500 Lines: 13 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:hGTYQex1m/FCo5GtUZ+t97B/w30= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 19:42:03 -0000 > Nitpick: I'd call it `purecopy_hash_table`. > > Other functions in alloc.c that perform pure allocation for different > objects are named in the same way (make_pure_string, > make_pure_vector), so I merely followed this convention. But those make pure objects "out of thin air", whereas in the present case what we do is to copy a pre-existing Lisp_Object into pure space. But, yes, you're right that the distinction is largely irrelevant, so either way is fine, Stefan From MAILER-DAEMON Sun Jan 29 15:16:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXvtc-0000tG-DO for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 15:16:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41230) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXvtZ-0000ss-6s for emacs-devel@gnu.org; Sun, 29 Jan 2017 15:16:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXvtV-00048z-2a for emacs-devel@gnu.org; Sun, 29 Jan 2017 15:16:17 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49961) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXvtU-00048v-Vh; Sun, 29 Jan 2017 15:16:13 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3462 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cXvtT-0007iL-PS; Sun, 29 Jan 2017 15:16:12 -0500 Date: Sun, 29 Jan 2017 22:16:03 +0200 Message-Id: <83bmupy64c.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier CC: eggert@cs.ucla.edu, emacs-devel@gnu.org In-reply-to: (message from Stefan Monnier on Sun, 29 Jan 2017 12:47:57 -0500) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Reply-to: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 20:16:18 -0000 > From: Stefan Monnier > Cc: Paul Eggert , emacs-devel@gnu.org > Date: Sun, 29 Jan 2017 12:47:57 -0500 > > So, IIUC we should basically get rid of immediate_quit. Not sure, because it's still used in TTY input, when C-g triggers SIGINT. With TTY input, we don't delay C-g handling as we do on X. From MAILER-DAEMON Sun Jan 29 16:10:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXwjc-00009V-7m for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 16:10:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47074) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXwjW-0008WT-T8 for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:10:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXwjS-0002ND-5d for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:09:57 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:36256) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXwjS-0002Mr-1E for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:09:54 -0500 Received: by mail-qk0-x243.google.com with SMTP id i34so13653253qkh.3 for ; Sun, 29 Jan 2017 13:09:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=MeAmgJOGkIGgxulD9HuFhAoq7qhPSeonJ6LFQhy9aV4=; b=VjY4iEPjPf2MOWsyRLMwwZzg+pFiY78QVP72NeAeVaRWiHgewfRQwFbCL/DXe0FghS 83mpfgAM5/xMkJiDqeKzI6ESH/P29+ZoqNQBI5ykgyJzQ2CeCo6unFc5+MOAVqt5/kYG fept6t+zBl7kXERHUt0HIQRJFTLDMR9S7GBWm5/liub8BOq9854HMmkYo3jrXXdOWzWV oFevbW9sw3eokb9byHY+LYaBDLBct0vHypHefhUIBiDVaA3rFWQ6Bb1MC25lpv2WG1ZK eGZ7onXz6fyrcRgAmLUgTKsRNmj0AWxLOtEATmG2SSnFFho8Au4g7AqqAmEtG3Armool aqRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=MeAmgJOGkIGgxulD9HuFhAoq7qhPSeonJ6LFQhy9aV4=; b=NnqvynIgnmKHDU3z87GUCyv/cRF8JNyCNNjk6erDKgI1+VSIaYhdNfvXeP9tnAGFjg cgBmkt/RdNtTYXv2W7yo5ztYriJl8DsrhksOGyBdvuORhiA+E7bRKx8DID2h0DM4dXp9 zbPFABUF2bJxSlw9nBDXXJLZ0SQYoefSEeFTeXewnAKh8sQBXPWdig5uyO2SIku2PZ9f FuS6t4erL8nuZ1UYom2sHgs5WzIEd6x+xnmB2G0AL03pwiKdPe9b1JsmJAnq2KtfqrAN DboUylD6q4AL9LSf1wpZWQANG6sgMBa15/dpMdw3+12MEa1u3T0dpE8o2f5paVXsJ3a5 dF1g== X-Gm-Message-State: AIkVDXJO+YXnOcn9j0DMVZOkYknKmCM+c1TIQYzCVR5knl+DyXoiW4dQRPmPDyZt/hBHHA== X-Received: by 10.55.42.208 with SMTP id q77mr18236646qkq.129.1485724192115; Sun, 29 Jan 2017 13:09:52 -0800 (PST) Received: from [192.168.1.104] (c-67-186-135-89.hsd1.ma.comcast.net. [67.186.135.89]) by smtp.gmail.com with ESMTPSA id w41sm10210305qtw.34.2017.01.29.13.09.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jan 2017 13:09:51 -0800 (PST) Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: emacs-devel@gnu.org References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Sun, 29 Jan 2017 16:09:50 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 21:10:02 -0000 On 2017-01-29 10:37, Noam Postavsky wrote: > On Fri, Jan 27, 2017 at 10:46 PM, Noam Postavsky > wrote: >> On Fri, Jan 27, 2017 at 10:30 PM, Clément Pit--Claudel >> wrote: >>> On 2017-01-27 20:59, Noam Postavsky wrote: >>>> I guess let-binding `debugger' to a function which performs the >>>> logging should do the trick? >>> >>> I already do that, in fact, and I do re-throw the exception from there. Looks like things didn't work because of the way `debugger' is called in `cl--assertion-failed'. Is that call correct? The argument in (funcall debugger `(cl-assertion-failed ,form ,string ,@sargs)) doesn't seem to match the docs: >>> >>> If due to error, args are ‘error’ and a list of the args to ‘signal’. >>> >>> Is the call just missing an 'error argument? >>> >> >> Oh yeah, I guess it is. > > Um, should this be > > (funcall debugger 'error `(cl-assertion-failed ,form ,string ,@sargs)) > > or > > (funcall debugger 'error `(cl-assertion-failed (,form ,string ,@sargs))) > > I'm getting confused with all the levels of nesting and funcall/apply. I think the second one. `debugger' gets two arguments, 'error and a list of arguments to `signal'. That list should have two entries: `cl-assertion-failed' and `(,form ,string ,@sargs). Thanks! From MAILER-DAEMON Sun Jan 29 16:26:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXwzP-0003Lu-97 for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 16:26:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49904) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXwzM-0003LV-BD for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:26:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXwzJ-0000js-7S for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:26:20 -0500 Received: from randomsample.de ([5.45.97.173]:56246) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXwzJ-0000im-0d for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:26:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=/lhNIA4MleaR07ZCbJpXsNugO812S2u4cMHEvVezw/I=; b=bj1ZoY+19WZOgrhg8AaC7N0l+j37LTlR7AIIRPRU445CSamnGzjZtxilmlEbhUSJ2prgN0dN0hsxY0wQ7t5Eb/5/jy5ToVS1Ro1RbRsJgxoce0vL1B8zDLc7v0PKlfs2; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXwzH-0006oh-Ea; Sun, 29 Jan 2017 22:26:15 +0100 From: David Engster To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: Fixing "Unknown slot" warnings In-Reply-To: (Stefan Monnier's message of "Sun, 29 Jan 2017 12:07:13 -0500") References: <87sho2m458.fsf@engster.org> <87o9ypnako.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 29 Jan 2017 22:26:14 +0100 Message-ID: <87vasx8snd.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 21:26:21 -0000 Stefan Monnier writes: >> After looking at the code, it seems all slot symbols are shoved into >> `eieio--known-slot-names' and the byte-compiler checks if a slot is in >> there, regardless of the class being used. So the following would >> already do the trick: > >> (defmacro eieio-declare-slot (name) >> "Declares slot to be available at runtime." >> `(eval-when-compile (cl-pushnew ,name eieio--known-slot-names))) > > If you mean something to add to eieio, then yes, that's about right > (tho you could also do it as (defmacro eieio-declare-slot (name) > (cl-pushnew name eieio--known-slot-names) nil). OK, I'll add that to EIEIO. > My `defclass` solution was meant for use in code that must work with > older Emacsen and/or older eieio without relying on internals like > eieio--known-slot-names. The new CEDET will only target the current master, so I finally don't have to care about older Emacsen anymore. -David From MAILER-DAEMON Sun Jan 29 16:34:39 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXx7P-0005kn-F0 for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 16:34:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51303) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXx7I-0005hN-OH for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:34:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXx7E-0001Rn-Rq for emacs-devel@gnu.org; Sun, 29 Jan 2017 16:34:32 -0500 Received: from randomsample.de ([5.45.97.173]:56484) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXx7E-0001RV-M3; Sun, 29 Jan 2017 16:34:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=dNBGQVM8xitAbq33zLtQS1AiDe20T5WwBiNNY3ItizY=; b=o4DIMXfphEV9g+IYt+eBwvouGVt4XSp+X1+Gev1R6sqc0DkOAvYQapz6ffuz/mXb1FZikbY4SdyugNWGGmc+qVgVdoWZt8UJek2Nym0UsFOKQ4UThkOhf1mtIiT0jHWq; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cXx7D-0006ss-9Y; Sun, 29 Jan 2017 22:34:27 +0100 From: David Engster To: Edward John Steere Cc: Eli Zaretskii , Stephen Leake , emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <8760kzo7vp.fsf@gmail.com> (Edward John Steere's message of "Sat, 28 Jan 2017 11:23:38 +0200") References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> <874m0k1age.fsf@engster.org> <8760kzo7vp.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Sun, 29 Jan 2017 22:34:26 +0100 Message-ID: <87o9yp8s9p.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 21:34:37 -0000 Edward John Steere writes: >> There seems to be a misunderstanding here: The ChangeLog is generated >> from the commit log and not written separately anymore. > > Alright. Out of interest: is there a command for generating all of the > entries for a commit range? I'm only aware of C-x 4 a > (add-change-log-entry-other-window) which seems to generate a change log > entry for the current file and only for the latest commit. You can use 'C-x 4 A' in a diff buffer. I usually do this: . Do 'M-x vc-dir' and choose repository . Hit 'D' to create a diff for the directory you want to create a ChangeLog for . Hit 'C-X 4 A' -David From MAILER-DAEMON Sun Jan 29 17:07:49 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdV-0005Dc-FV for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdT-0005DE-3d for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdS-0003Zg-8p for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:47 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33739) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdN-0003XO-0F; Sun, 29 Jan 2017 17:07:41 -0500 Received: by mail-qk0-x241.google.com with SMTP id 11so16390820qkl.0; Sun, 29 Jan 2017 14:07:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=7iq9xkBTKznzY7S0g7UYXnECQdGRtoyoZWGt2NjrWLw=; b=mGl38fic8J5fsmsWujAMyLsGfr96gEiPkSA7Jlj1JTGtEmwA4at5n6RS9lVrU3PTVD PL0ClHvlk6I1K3BGuVzKnzbcNvywSnLuvc2dx71jH0Q0SwKEFXR+ZbhDTrDb3O1SBKZq 7QYQzjdt837lXsyBcxbKXSzq/1yJH5WP5p2vKCZwMZo54KjSq9zkHWAao4eSSqiYhUYC wJZ5segiVi4yly5Ec+K5n+TG6WAswq1DPA3CJHPukp529T8IdcuAURa68DmMaM7tcEsV 741TjAkxi4HOqyfATKyvIhyFBJTyz8OYW6qqZo2dOejN0wm55ekV/1SpnCWIEnJSIH6N V2Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=7iq9xkBTKznzY7S0g7UYXnECQdGRtoyoZWGt2NjrWLw=; b=CCzFJUTGhXUhZdK3xL/PIdVW/nAnipvHbshaKyLNEXbBnkrJdSHnhV+/MFH9mfcedT Sn6gUUnoWYCUPVMRjqcWUcj564ZIYIU3LsxlG0oldlWSSdsT4a0kPjw+Doevn6PslDJH KozmElSiUUvdP4jTPWGoYhZW9xJXd/fchrFiGZTiQNDfh8J2J6Sgg7FkWhC32qepk2M1 FLi5f3LfwUDEP7WpzUz8Y4axBH4IGVasLR8Y+SFo4MaIwAIJvIbibB9DY3lYy2sjKavF JUj8y4Gh9EKXDkaHfFSEHRs30VA1vQl6Oy6JdVxnHFkLhcFKxquuK9yEoI82nJV+RZmd GC5w== X-Gm-Message-State: AIkVDXLcDp6CDBp/BOIeZpuaRzeswGyea8+xaW3zxPAHIcKVmC5su5HB5/gXxD4jK5Hy9A== X-Received: by 10.55.103.200 with SMTP id b191mr12768669qkc.243.1485727658999; Sun, 29 Jan 2017 14:07:38 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id k8sm10403344qke.29.2017.01.29.14.07.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:37 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 146D585F2CB; Sun, 29 Jan 2017 17:07:27 -0500 (EST) To: Eli Zaretskii Cc: Kaushal Modi , kyle@kyleam.com, emacs-orgmode@gnu.org, monnier@iro.umontreal.ca, rasmus@gmx.us, emacs-devel@gnu.org Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: <8360l13hjc.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 26 Jan 2017 18:36:07 +0200") Date: Sun, 29 Jan 2017 11:06:01 -0800 Message-ID: References: <87a8afaxlz.fsf@gmx.us> <83fuk63mq5.fsf@gnu.org> <874m0maq9e.fsf@gmx.us> <87r33psudf.fsf@kyleam.com> <8360l13hjc.fsf@gnu.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Eli Zaretskii , Kaushal Modi , kyle@kyleam.com, emacs-orgmode@gnu.org, monnier@iro.umontreal.ca, rasmus@gmx.us, emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:07:48 -0000 >>>>> "EZ" == Eli Zaretskii writes: EZ> AFAIR, we have never released a major version so quickly, and I don't see EZ> why this one would be different. A year at least, I'd say, probably more. This was my feeling as well. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 17:07:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdW-0005Ew-VV for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54893) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdS-0005DC-3p for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdQ-0003Z7-MM for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:46 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36816) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdQ-0003Z0-IJ; Sun, 29 Jan 2017 17:07:44 -0500 Received: by mail-qk0-x242.google.com with SMTP id i34so13784544qkh.3; Sun, 29 Jan 2017 14:07:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=0PDFqgQoEq+4071adU1tVWSMMJZV1VOEx2fXHhPkvcQ=; b=dDcfnxGVRZclSFU7JGZkuMinZl7+cyg9IphXYKWsZon4OZ5eldmCs9J/oZm5ND9XKP a6mAu90eO5pAE2U8Vdcx+ikf/MPQGrxfk9PFcgE8Sq3lS/Q5ZycHp/dVomVTiH1DRZsj IK7cFzndLO2CDxUxnwpgT8E3mDS5jBCMuqJvLsk312ghbKA7mHktiBBSfyN0qhVNw0+o IbNc6RcnjWyx/8VVWgTSoF3TLQKZrCH831h/79NrN72buNAmq9Mk7nkayqyg2Ic5sP28 a+RwT2OXBKfJp7hGeplMzBz1+FuO4JkNRZAEPNJ/getr6ypbGZyNJUGZz2S3wB7nYuWd LJ0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=0PDFqgQoEq+4071adU1tVWSMMJZV1VOEx2fXHhPkvcQ=; b=oGw7uOqQCZsKvyFekny1L9zs9e5RPdEtodZszFzloKsxDKaw4aE9RMjMSjbreKXQtq OG33VV1UThCIHuTWJCUWtbVBu2LgHDUOAR1PHEgVgj/uXdQ2z60ubEJf0ff6Bk+E2uAl hBTzK3zz369VtqNbKpvI7VqEbtvX+RkgzMVHxzedYE2BbvWWWbcBUSA9ei7kbKXHAK99 Sdav32H2bXKVScSLbM5DKVrhHW+w2sUMNywrm3zPVG5Q4XKLDlNg5iY1471l7WiI9DbG AsIzaoW1I3bceH7w/6pjAbKdRv3Jvcy9WJKC7gR13kq1K7HmL93hlHA7xj1gqHVeWx2a EQFQ== X-Gm-Message-State: AIkVDXKQBrCoBQS1FanbmE4xHMB9p4Vkm9Efyhfva9+5Jm/Cjx/SqMJqc1W4hiZcY8wa2Q== X-Received: by 10.55.23.78 with SMTP id i75mr18125469qkh.212.1485727663890; Sun, 29 Jan 2017 14:07:43 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id q5sm10386508qtc.36.2017.01.29.14.07.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:42 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 7B08085F2C7; Sun, 29 Jan 2017 17:07:26 -0500 (EST) To: Richard Stallman Cc: emacs-devel@gnu.org Subject: Re: Docker Hub requires nonfree software to log in In-Reply-To: (Richard Stallman's message of "Sat, 28 Jan 2017 19:20:29 -0500") Date: Sun, 29 Jan 2017 11:00:49 -0800 Message-ID: References: User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Richard Stallman , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:07:47 -0000 >>>>> "RS" == Richard Stallman writes: RS> Why not distribute that image from a GNU Project server instead? It will RS> work just the same. We could do that, it will just require an additional setup step. The advantage to DockerHub is that it's the default place that docker will look if you try to run an image that doesn't exist yet on your machine. If we provide a custom download location, people will need to either configure Docker to look there (which is needed for upgrades to happen seamlessly, should they follow the "latest" tag), or download and import the image manually. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 17:07:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdY-0005GS-LO for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54934) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdV-0005DP-98 for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdU-0003bY-Ef for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:49 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:32903) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdS-0003ZV-9h; Sun, 29 Jan 2017 17:07:46 -0500 Received: by mail-qt0-x242.google.com with SMTP id n13so53593488qtc.0; Sun, 29 Jan 2017 14:07:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=QI2/D7FPnGKY+/gEFQyicihpGK99svDtpnvnJhkCaI0=; b=ItTYWEI6yCqFu/7X8Dj+GZIOCij2Bd2r2zzJjngMkmOpdvlLKYMfUzHViHQxjzE8Sk LmGLbrXs5Ko4T/4NJ3LWWe4W+nb42SZdVDlNd9cGlsicP1zmchDO9a+EHzCRfqKYWK0b 2kI6HXoERFklrS6ipIEDGhHifMmavkHrfh+pUg7i19Zx3PJM/bDwDgc7efAJOKON030y CCVHB5l3ogOLQwVGYfUWoRWow1JBsZT1bz3j55JPH0UMS3jTkA7uNkjWwP1ntztvuRE7 QXmLlUgiM/4FG6xH9JoXVXZAJrTWqo+6XErLW3bisAWfqLwmjnz8CRWg3SJD1hHSAxlz bVPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=QI2/D7FPnGKY+/gEFQyicihpGK99svDtpnvnJhkCaI0=; b=HUVFoYQL+qcM52fJAyLpZODvz8p7waiD8tCb4kO8mYdYons9BG+kizA5hMAq6IFFEc WK5H4yns/iN+EwvJAFp3yIcFZYfu+KbTtvcly9A7MWJdoxsbRmayks9r91mzji8EiX/v 9Kwxht5qivT673k3uVBYH64+QRx4ajFqbsNDcfq7gXlacx7UwzXTXpWDYCktnY6qCz+K aG2+21cZVCRzRpC9/r3kqYXts4D0mGQeg6RyQ5O2cxCbOn00LnARVj3+tngEl5TlVTHQ AKrAdq7xsbk7L7BPxiMXQJD8+jvjEld1miy+ztaTzvKlthZIWN7JPQEkP6bE3ieP+bGh rI1g== X-Gm-Message-State: AIkVDXL2wIdLTvUunQPbQ7CdW9wyPFwrBgCKWghYdY2nFzDF/XHdhQqE8x+W8bDimsLT+Q== X-Received: by 10.200.42.182 with SMTP id b51mr17297617qta.101.1485727665848; Sun, 29 Jan 2017 14:07:45 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id z23sm10362906qkb.30.2017.01.29.14.07.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:43 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 17F3985F2BD; Sun, 29 Jan 2017 17:07:26 -0500 (EST) To: Eli Zaretskii Cc: Stefan Monnier , emacs-devel@gnu.org Subject: Re: Change in files.el In-Reply-To: <83wpdfxe96.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 28 Jan 2017 19:53:25 +0200") Date: Sun, 29 Jan 2017 10:59:09 -0800 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Eli Zaretskii , Stefan Monnier , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:07:51 -0000 >>>>> "EZ" == Eli Zaretskii writes: EZ> I'm saying that the benefits do not necessarily outweigh the downsides, at EZ> least IME. And since the goal of having this consistently everywhere is EZ> not really achievable in practice, given our development and maintenance EZ> procedures, we are buying disadvantages on account of an advantage that EZ> will never materialize. I have to say that Eli makes a compelling point here. Even if we mandate it today, we incur the job of keeping a constant look out for people violating this rule forever more, since there is no way to implicitly require it. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 17:07:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdf-0005Je-Le for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdY-0005G0-2l for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdX-0003cw-6H for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:52 -0500 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:36351) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdX-0003cU-2s for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:51 -0500 Received: by mail-qk0-x22a.google.com with SMTP id 11so112658479qkl.3 for ; Sun, 29 Jan 2017 14:07:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=y5USQL3nciv0Tb94X+h8tgPMXdYYoVLzzMaGQ22aGrw=; b=mVtQMTL/8yTOthdJ5jLduwDD8L7v5dc509mDVbmadmqaBGTh7LbMPOvzlqrOMOpoL0 fO+SNp2qtx0JBCKdaeZel1Xx062qv+5yNEzGnbJhZNDA73LXbRXYhusyAZIGtagfShFQ bZGmrg7DmLS93Vtfvq80kofIqmJVJG4ywl0By2ga//2hn1W+LJLA+yMm421n0tAXN5Rl T1AABC3Fi4pd2t9r154sO+g10Y6EHg3kAarh/m8tkpo4FXtbP2lw2fPm+lenNnskLIM+ 3ZNJtGQKOkc7jcE6Le2j7Bx430pqyj4O+di9T1NuGFDfHTk64m8Ak3B8fea4tCeoveSv JO+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=y5USQL3nciv0Tb94X+h8tgPMXdYYoVLzzMaGQ22aGrw=; b=p/Jkzv5V9aiDYmfwKltIGCZMKHGCPE3i+MRXaZDhQxvJnRUkFA1yq+E2xzumEt1HsO 6xxTxCFTDKGIpL/ZZlsEwZMoHIF19Oh1e2ghG0dx1AG+5swDGXFxYwn7mOossJx9+k2o SKFLcyiUyk6GgtJ007H560R8yiD0mgQ3wNsKynsJAkFlYMfcSi705+n2Xzo2DpnsflLb 1X/utJIInN+ZUa45n3CECV+n7+nJI9sVyiOYHbn0rl+6v8eC9IbDeMkACMSwYmysMSA1 T1hk+Cb6DyFJfTVgb2cRzyI1CG4IPg9btM11Nz/dLTRjRH1Y4ua90Q1Dduf/ued2NG9D rKoQ== X-Gm-Message-State: AIkVDXKE/kRxMFImuUMA6utEOJLvQtJIYF1qvvtuF6BCVjRtrPGMwczkqAFjQMwS1+uszg== X-Received: by 10.55.214.152 with SMTP id p24mr18477591qkl.223.1485727670643; Sun, 29 Jan 2017 14:07:50 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id 83sm10375692qky.43.2017.01.29.14.07.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:47 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 11E1C85F2E4; Sun, 29 Jan 2017 17:07:29 -0500 (EST) To: ben rudgers Cc: emacs-devel@gnu.org Subject: Re: Suggested additional example to Emacs Lisp Manual: Variables: Let In-Reply-To: (ben rudgers's message of "Tue, 17 Jan 2017 14:17:49 -0600") Date: Sun, 29 Jan 2017 11:20:37 -0800 Message-ID: References: User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: ben rudgers , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:07:57 -0000 >>>>> "br" == ben rudgers writes: br> The manual does not provide an example showing a locally scoped function. br> Though the behavior can potentially be inferred from the documentation of br> functions, an example showing the relationship between =let= and =funcall= br> might be of practical help for someone who has not made a deep dive into br> the manual. I think it would be better to encourage the use of `cl-flet' or `cl-labels', as though macros are specifically intended for binding local function definitions, and will automatically handle whether the function should be a `lambda' or a `closure', depending on the setting of `lexical-binding'. Your approach may have merit in terms of pedagogy, but I'd prefer to nudge users toward more idiomatic usage from the beginning. @example (require 'cl-macs) (defun foo (x) (cl-flet ((bar (y) (+ x y))) (bar 3))) (foo 4) @result{} 7 @end example -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 17:08:00 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdf-0005KO-SY for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdY-0005Gd-Pu for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdX-0003cq-3y for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:52 -0500 Received: from mail-qt0-x230.google.com ([2607:f8b0:400d:c0d::230]:35209) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdX-0003cP-08 for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:51 -0500 Received: by mail-qt0-x230.google.com with SMTP id x49so188704987qtc.2 for ; Sun, 29 Jan 2017 14:07:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=p/7co03esnlFeC32gSy6MTGn7FFQgagn2KX7Xs4DmA4=; b=NKN94LUF9e8IWJoITK4FFJjiMstqpMBryMOWJtpDpm6n7Fqmy8e6dWuTgKRJvCkhzR J+chotgQXun5JgDJ9XlF0/Pt40YEWcypUB1mSXYGfslEF8jMrvqvDuLLNahZ2EyG3RpB AXztnxwFGeDfRCq2CnaTPn6ocw2VwcFhHfO4pEqQ/+BGXuDccZOOeCsnIs+EkeiSNZD/ 76AYfTbMekLVhiYnjl5udGFqR4QGchMy5E8eGzCuRh6RsJinmQLdiX7lPNUKkNOxpey1 wpHQVFxrBEt29FvQX4OInVYCQ+VMyMOwRHe6+eCUwWV5ybZAmEmS+ocHkXz/sUZcHXho bOQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=p/7co03esnlFeC32gSy6MTGn7FFQgagn2KX7Xs4DmA4=; b=FGFppZvhz1egNPDiyU8iHeTrfNJFwkxc0JL0rShWkOS3eRmJ8U73zpOmbrEXDj05AH rLIA3NGB6aK+XP5FUHqwj9HH8eGt/vXsYxyBSvju1tvRn/Cex+7qeYXqbE8fCoEyXUHL fBn9U8hfVg4dOgc+sp8Fy5arZLd60gI5k1FSE7KkZt5NKgzFsTN6fDO46Aq/JJ9QiJQM 7VxMo9hqtES2GIfqeKylaV8QHLpsDE4HhVKET+0KM1RdKlCA7q51SWpArC7C7ZtiVn2c rG2btqEeY46g5y9cuZFWI1/a9tTXp9zhrZtdmXnGm4MkQLzF2PE9VZgkHHbp4bA41g1T +mUg== X-Gm-Message-State: AIkVDXJ4mzfSwhlskD/Rrall5NFWovCknpvjGd3xteMTQLDozGX3l8OvBeGbtOJLhKrsew== X-Received: by 10.200.53.244 with SMTP id l49mr17345363qtb.285.1485727669971; Sun, 29 Jan 2017 14:07:49 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id g13sm10427986qtg.8.2017.01.29.14.07.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:47 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id B667D85F2F4; Sun, 29 Jan 2017 17:07:30 -0500 (EST) To: Lee Hinman Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge In-Reply-To: <87y3y6bxw4.fsf@writequit.org> (Lee Hinman's message of "Thu, 19 Jan 2017 13:25:15 -0700") Date: Sun, 29 Jan 2017 11:25:11 -0800 Message-ID: References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <878tqawy2k.fsf@engster.org> <871sw2lp1i.fsf@gmail.com> <874m0ywvxa.fsf@engster.org> <9787CBF8-9449-4EE6-B3E3-72781A9D0861@gmail.com> <87vatdv1jy.fsf@engster.org> <5e4c1ef7-7698-1b34-0815-05420456362f@yandex.ru> <87fukhv0cr.fsf@engster.org> <8760lddpvy.fsf@writequit.org> <87pojldjdt.fsf@gmail.com> <877f5suj4g.fsf@engster.org> <87lgu7djkb.fsf@gmail.com> <87y3y6bxw4.fsf@writequit.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Lee Hinman , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:07:57 -0000 >>>>> "LH" == Lee Hinman writes: >> I couldn't agree more on this point. I also think that many users are >> itching to improve the aspects of CEDET which they use and that a move like >> this would make strides in making the project accessible to those kinds of >> contributions. Let's get this merge done so that we can get cracking on the >> ELPA projects too! :-) LH> I just sent off my contribution email to the FSF specifically so I could LH> help with this, so hopefully it moves forward! Let's start this month, I can make time for it. As a first step: What information is needed about CEDET, to correctly inject it into the distribution tarball? I'm betting it's slightly more than just a list of files mapped to tarball locations. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 17:08:02 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXxdi-0005MD-2P for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 17:08:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55027) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXxdf-0005JF-53 for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:08:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXxdd-0003fN-Hj for emacs-devel@gnu.org; Sun, 29 Jan 2017 17:07:59 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35010) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXxdX-0003dN-UW; Sun, 29 Jan 2017 17:07:51 -0500 Received: by mail-qk0-x242.google.com with SMTP id u25so16330541qki.2; Sun, 29 Jan 2017 14:07:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=1pk0N8/5fmJ30rd3NSS3MoN3xRA69ijqqjLp89h+Tpg=; b=ofLE4Q3ctwM5CwtVXrNuIuwd3uRRQsSJNeuQFMPADZX2e1XJAWWSjf8fCSZtTAotfv X3qn0cUN+i83WDk9WCB8AvXcAYjKzoFIGdIiJV/iKmPnM6psWEcStE/79ramkc4G8m91 neI8MiJpJU/LZlhL53T7nyjHZEJh9mSMcWz/W8hsE+KnIHrOdcxctFjJkr2GZv3WGQBM 9JdWBYAnpHjPfGJQtzFXkaEvKIym2ejyeqCuH2w8MJc33iFFEo0fJQTnuOcesZlXCbCn B09qDX/eacLqj5MDq3rsbXMs1tVgrScDsslrQSnoO7j4Q8HEb0Q4Sh8/ei38eI4hOpma zBlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=1pk0N8/5fmJ30rd3NSS3MoN3xRA69ijqqjLp89h+Tpg=; b=n9uJLqRbr3CuMkv4tsIV3nND7TBlXrjq1nCH3PtNugvsq0itPoc1GbXydAFAzXzhP3 64zZkQUCnFdtRlnQohK4+i8FDi2MxXIaM1xkp5hBeq7eDwusnn0lES7ZZMP10pIbZs9N JnBnxhJWn+fPvteY5mtNd7DQiuJ9swg84cjeN9dgDpCERI8ujvkzcYdZx9RPjn670NVa Irq2Q/qXQMmhRi93VKup0kiV3C5sIlz+YNu9RI3KKx+31TVNUOzFXnBIWcBa8cINpfts HlkyJZEWzJI2NYxc7y4NhkTMWJQ+pYrYE4gl/9JScrfcg/+fHPRN6SNHlcINHBEIKNUF dHzg== X-Gm-Message-State: AIkVDXJ4WXXe28DE4DdpvZC+r2zYlhE6MECESKtY7hPNMg+MekXWm6dbmof8CIq49BgbYQ== X-Received: by 10.55.104.136 with SMTP id d130mr8118573qkc.9.1485727671547; Sun, 29 Jan 2017 14:07:51 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id 7sm10381286qkx.49.2017.01.29.14.07.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 14:07:47 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 19A8E85F2DD; Sun, 29 Jan 2017 17:07:28 -0500 (EST) To: Kaushal Modi Cc: Emacs developers , emacs-org list , Bastien Guerry , Phillip Lord Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (Kaushal Modi's message of "Wed, 25 Jan 2017 16:39:14 +0000") Date: Sun, 29 Jan 2017 11:15:40 -0800 Message-ID: References: User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Kaushal Modi , Emacs developers , emacs-org list , Bastien Guerry , Phillip Lord MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 22:08:01 -0000 >>>>> "KM" == Kaushal Modi writes: KM> If we are able the release the new packaging method in emacs 26.x, then we KM> can remove org from emacs master completely, but if not, then at least as KM> backup we have a newer org version to go out with that release. For Emacs 26, I intend the new ELPA process to be in place, whereby "default" packages can be developed separately, and declare a way to get slip-streamed into the release tarball so users are unaware of the separate nature of their development. The CEDET developers have agreed to support this, and it sounds like you are willing to as well. If Lars is game, I'd like for Gnus to be third major package we do this for initially. That will reduce considerably the number of external files we track in Emacs.git. The precise technical details have yet to be worked out, but it shouldn't be too difficult. Phillip Lord has already began advance work on alternatives, and I've received offers of help from others to work on this new process. I think now is a good time to begin. The first step is to solidify what is meant by "tarball EPLA", and the means of slip-streaming a package's contents. This will require at least two bits: - Some form of declaration to indicate how external files should appear in the tarball. In order for the first version of this scheme to be as low impact as possible, this should probably be done with a sexp in a data file, to be checked in alongside the EPLA.git import of the project. - changes to "make dist" to integrate these files, and setup autoloading so their inclusion is transparent to end users. Please comment with your recommendations for the first, and supporting changes for the second, if anyone has ideas. Phillip, how is your work on these coming along? -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Sun Jan 29 18:06:34 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXyYM-00043S-Hb for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 18:06:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34961) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXyYD-0003zm-Q8 for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:06:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXyY5-0005kd-MP for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:06:25 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57640) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXyXu-0005hM-KI; Sun, 29 Jan 2017 18:06:07 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D70A21600ED; Sun, 29 Jan 2017 15:06:03 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id wtC3vXyeUXlZ; Sun, 29 Jan 2017 15:05:58 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 394DD1600EE; Sun, 29 Jan 2017 15:05:58 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id vTovXmOqms98; Sun, 29 Jan 2017 15:05:57 -0800 (PST) Received: from [192.168.1.28] (unknown [47.139.43.229]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8B44F1600ED; Sun, 29 Jan 2017 15:05:54 -0800 (PST) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit To: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org From: Paul Eggert Message-ID: <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> Date: Sun, 29 Jan 2017 15:05:50 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <83h94hydrs.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------74A8B1EA14E1B1B1F7934CEB" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 23:06:33 -0000 This is a multi-part message in MIME format. --------------74A8B1EA14E1B1B1F7934CEB Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit On 01/29/2017 09:30 AM, Eli Zaretskii wrote: > please show or describe your planned changes before you install them OK, attached. I've been using them for a few days and they work for me. After installing them, I plan to address the FOR_EACH_TAIL issue that Stefan mentioned earlier. While I'm in the neighborhood, I have drafted fixes for the TODO items mentioned in lisp.h's FOR_EACH_TAIL comments (I'm attacking loop unrolling in a different way). But one thing at a time. The idea of the attached code is to fix the problems I recently introduced in this area, along with some longstanding related bugs, e.g, (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) when byte-compiled on a 64-bit X platform (currently Emacs hangs and cannot be C-g'ed out of). --------------74A8B1EA14E1B1B1F7934CEB Content-Type: text/x-patch; name="0001-Remove-immediate_quit.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Remove-immediate_quit.patch" >From 291150778e4427d55703b4bd9a5543867d7ecf11 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 27 Jan 2017 08:58:51 -0800 Subject: [PATCH 1/3] Remove immediate_quit. The old code that sets and clears immediate_quit was ineffective except when Emacs is running in terminal mode, and has problematic race conditions anyway, so remove it. This will introduce some hangs when Emacs runs in terminal mode, and these hangs should be fixed in followup patches. * src/keyboard.c (immediate_quit): Remove. All uses removed. --- admin/notes/multi-tty | 5 ++--- src/bytecode.c | 4 ---- src/callproc.c | 8 +------- src/dired.c | 3 --- src/editfns.c | 9 ++------- src/eval.c | 2 -- src/fileio.c | 19 ------------------- src/fns.c | 42 ++++++++---------------------------------- src/indent.c | 2 -- src/keyboard.c | 45 +++++++-------------------------------------- src/lisp.h | 8 -------- src/process.c | 10 +--------- src/regex.c | 10 ++++------ src/search.c | 33 ++------------------------------- src/syntax.c | 30 ++---------------------------- src/w32fns.c | 11 +---------- src/window.c | 2 -- 17 files changed, 30 insertions(+), 213 deletions(-) diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index b58180e..d0096ad 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -1239,9 +1239,8 @@ DIARY OF CHANGES (Update: OK, it all seems so easy now (NOT). Input could be done synchronously (with wait_reading_process_input), or asynchronously by SIGIO or polling (SIGALRM). C-g either sets the Vquit_flag, - signals a 'quit condition (when immediate_quit), or throws to - 'getcjmp' when Emacs was waiting for input when the C-g event - arrived.) + signals a 'quit condition, or throws to 'getcjmp' when Emacs was + waiting for input when the C-g event arrived.) -- Replace wrong_kboard_jmpbuf with a special return value of read_char. It is absurd that we use setjmp/longjmp just to return diff --git a/src/bytecode.c b/src/bytecode.c index 499fb88..ed58d18 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -842,10 +842,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v1); EMACS_INT n = XINT (v1); - immediate_quit = true; while (--n >= 0 && CONSP (v2)) v2 = XCDR (v2); - immediate_quit = false; TOP = CAR (v2); NEXT; } @@ -1276,10 +1274,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v2); EMACS_INT n = XINT (v2); - immediate_quit = true; while (--n >= 0 && CONSP (v1)) v1 = XCDR (v1); - immediate_quit = false; TOP = CAR (v1); } else diff --git a/src/callproc.c b/src/callproc.c index 301ccf3..85674bb 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -198,11 +198,9 @@ call_process_cleanup (Lisp_Object buffer) { kill (-synch_process_pid, SIGINT); message1 ("Waiting for process to die...(type C-g again to kill it instantly)"); - immediate_quit = true; maybe_quit (); wait_for_termination (synch_process_pid, 0, 1); synch_process_pid = 0; - immediate_quit = false; message1 ("Waiting for process to die...done"); } #endif /* !MSDOS */ @@ -726,7 +724,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, process_coding.src_multibyte = 0; } - immediate_quit = true; maybe_quit (); if (0 <= fd0) @@ -769,7 +766,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, } /* Now NREAD is the total amount of data in the buffer. */ - immediate_quit = false; if (!nread) ; @@ -842,7 +838,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, we should have already detected a coding system. */ display_on_the_fly = true; } - immediate_quit = true; + maybe_quit (); } give_up: ; @@ -860,8 +856,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, wait_for_termination (pid, &status, fd0 < 0); #endif - immediate_quit = false; - /* Don't kill any children that the subprocess may have left behind when exiting. */ synch_process_pid = 0; diff --git a/src/dired.c b/src/dired.c index 52e81fb..5ea00fb 100644 --- a/src/dired.c +++ b/src/dired.c @@ -248,14 +248,11 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, /* Now that we have unwind_protect in place, we might as well allow matching to be interrupted. */ - immediate_quit = true; maybe_quit (); bool wanted = (NILP (match) || re_search (bufp, SSDATA (name), len, 0, len, 0) >= 0); - immediate_quit = false; - if (wanted) { if (!NILP (full)) diff --git a/src/editfns.c b/src/editfns.c index 82c6abb..b605437 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3053,7 +3053,6 @@ determines whether case is significant or ignored. */) i2 = begp2; i1_byte = buf_charpos_to_bytepos (bp1, i1); i2_byte = buf_charpos_to_bytepos (bp2, i2); - immediate_quit = true; while (i1 < endp1 && i2 < endp2) { @@ -3092,17 +3091,13 @@ determines whether case is significant or ignored. */) c1 = char_table_translate (trt, c1); c2 = char_table_translate (trt, c2); } + if (c1 != c2) - { - immediate_quit = false; - return make_number (c1 < c2 ? -1 - chars : chars + 1); - } + return make_number (c1 < c2 ? -1 - chars : chars + 1); chars++; } - immediate_quit = false; - /* The strings match as far as they go. If one is shorter, that one is less. */ if (chars < endp1 - begp1) diff --git a/src/eval.c b/src/eval.c index 62d4af1..844879d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1131,7 +1131,6 @@ unwind_to_catch (struct handler *catch, Lisp_Object value) /* Restore certain special C variables. */ set_poll_suppress_count (catch->poll_suppress_count); unblock_input_to (catch->interrupt_input_blocked); - immediate_quit = false; do { @@ -1517,7 +1516,6 @@ signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit) Lisp_Object clause = Qnil; struct handler *h; - immediate_quit = false; if (gc_in_progress || waiting_for_input) emacs_abort (); diff --git a/src/fileio.c b/src/fileio.c index b8706e1..3e28517 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1960,9 +1960,7 @@ permissions. */) report_file_error ("Copying permissions to", newname); } #else /* not WINDOWSNT */ - immediate_quit = true; ifd = emacs_open (SSDATA (encoded_file), O_RDONLY, 0); - immediate_quit = false; if (ifd < 0) report_file_error ("Opening input file", file); @@ -2024,7 +2022,6 @@ permissions. */) oldsize = out_st.st_size; } - immediate_quit = true; maybe_quit (); if (clone_file (ofd, ifd)) @@ -2047,8 +2044,6 @@ permissions. */) if (newsize < oldsize && ftruncate (ofd, newsize) != 0) report_file_error ("Truncating output file", newname); - immediate_quit = false; - #ifndef MSDOS /* Preserve the original file permissions, and if requested, also its owner and group. */ @@ -3402,13 +3397,11 @@ read_non_regular (Lisp_Object state) { int nbytes; - immediate_quit = true; maybe_quit (); nbytes = emacs_read (XSAVE_INTEGER (state, 0), ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + XSAVE_INTEGER (state, 1)), XSAVE_INTEGER (state, 2)); - immediate_quit = false; /* Fast recycle this object for the likely next call. */ free_misc (state); return make_number (nbytes); @@ -3867,7 +3860,6 @@ by calling `format-decode', which see. */) report_file_error ("Setting file position", orig_filename); } - immediate_quit = true; maybe_quit (); /* Count how many chars at the start of the file match the text at the beginning of the buffer. */ @@ -3906,7 +3898,6 @@ by calling `format-decode', which see. */) if (bufpos != nread) break; } - immediate_quit = false; /* If the file matches the buffer completely, there's no need to replace anything. */ if (same_at_start - BEGV_BYTE == end_offset - beg_offset) @@ -3918,7 +3909,6 @@ by calling `format-decode', which see. */) del_range_1 (same_at_start, same_at_end, 0, 0); goto handled; } - immediate_quit = true; maybe_quit (); /* Count how many chars at the end of the file match the text at the end of the buffer. But, if we have @@ -3976,7 +3966,6 @@ by calling `format-decode', which see. */) if (nread == 0) break; } - immediate_quit = false; if (! giveup_match_end) { @@ -4074,11 +4063,9 @@ by calling `format-decode', which see. */) quitting while reading a huge file. */ /* Allow quitting out of the actual I/O. */ - immediate_quit = true; maybe_quit (); this = emacs_read (fd, read_buf + unprocessed, READ_BUF_SIZE - unprocessed); - immediate_quit = false; if (this <= 0) break; @@ -4293,13 +4280,11 @@ by calling `format-decode', which see. */) /* Allow quitting out of the actual I/O. We don't make text part of the buffer until all the reading is done, so a C-g here doesn't do any harm. */ - immediate_quit = true; maybe_quit (); this = emacs_read (fd, ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + inserted), trytry); - immediate_quit = false; } if (this <= 0) @@ -5001,8 +4986,6 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, } } - immediate_quit = true; - if (STRINGP (start)) ok = a_write (desc, start, 0, SCHARS (start), &annotations, &coding); else if (XINT (start) != XINT (end)) @@ -5025,8 +5008,6 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, save_errno = errno; } - immediate_quit = false; - /* fsync is not crucial for temporary files. Nor for auto-save files, since they might lose some work anyway. */ if (open_and_close_file && !auto_saving && !write_region_inhibit_fsync) diff --git a/src/fns.c b/src/fns.c index b8ebfe5..03af092 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1360,18 +1360,15 @@ DEFUN ("nthcdr", Fnthcdr, Snthcdr, 2, 2, 0, CHECK_NUMBER (n); EMACS_INT num = XINT (n); Lisp_Object tail = list; - immediate_quit = true; for (EMACS_INT i = 0; i < num; i++) { if (! CONSP (tail)) { - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } tail = XCDR (tail); } - immediate_quit = false; return tail; } @@ -1418,17 +1415,12 @@ DEFUN ("memq", Fmemq, Smemq, 2, 2, 0, The value is actually the tail of LIST whose car is ELT. */) (Lisp_Object elt, Lisp_Object list) { - immediate_quit = true; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { if (EQ (XCAR (tail), elt)) - { - immediate_quit = false; - return tail; - } + return tail; } - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } @@ -1441,18 +1433,13 @@ The value is actually the tail of LIST whose car is ELT. */) if (!FLOATP (elt)) return Fmemq (elt, list); - immediate_quit = true; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { Lisp_Object tem = XCAR (tail); if (FLOATP (tem) && internal_equal (elt, tem, 0, 0, Qnil)) - { - immediate_quit = false; - return tail; - } + return tail; } - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } @@ -1463,15 +1450,12 @@ The value is actually the first element of LIST whose car is KEY. Elements of LIST that are not conses are ignored. */) (Lisp_Object key, Lisp_Object list) { - immediate_quit = true; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) - if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key)) - { - immediate_quit = false; + { + if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key)) return XCAR (tail); - } - immediate_quit = true; + } CHECK_LIST_END (tail, list); return Qnil; } @@ -1528,15 +1512,12 @@ DEFUN ("rassq", Frassq, Srassq, 2, 2, 0, The value is actually the first element of LIST whose cdr is KEY. */) (Lisp_Object key, Lisp_Object list) { - immediate_quit = true; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) - if (CONSP (XCAR (tail)) && EQ (XCDR (XCAR (tail)), key)) - { - immediate_quit = false; + { + if (CONSP (XCAR (tail)) && EQ (XCDR (XCAR (tail)), key)) return XCAR (tail); - } - immediate_quit = true; + } CHECK_LIST_END (tail, list); return Qnil; } @@ -2075,21 +2056,18 @@ use `(setq x (plist-put x prop val))' to be sure to use the new value. The PLIST is modified by side effects. */) (Lisp_Object plist, Lisp_Object prop, Lisp_Object val) { - immediate_quit = true; Lisp_Object prev = Qnil; for (Lisp_Object tail = plist; CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail))) { if (EQ (prop, XCAR (tail))) { - immediate_quit = false; Fsetcar (XCDR (tail), val); return plist; } prev = tail; } - immediate_quit = true; Lisp_Object newcell = Fcons (prop, Fcons (val, NILP (prev) ? plist : XCDR (XCDR (prev)))); if (NILP (prev)) @@ -2440,7 +2418,6 @@ usage: (nconc &rest LISTS) */) CHECK_CONS (tem); - immediate_quit = true; Lisp_Object tail; do { @@ -2449,7 +2426,6 @@ usage: (nconc &rest LISTS) */) } while (CONSP (tem)); - immediate_quit = false; rarely_quit (&quit_count); tem = args[argnum + 1]; @@ -2872,13 +2848,11 @@ property and a property with the value nil. The value is actually the tail of PLIST whose car is PROP. */) (Lisp_Object plist, Lisp_Object prop) { - immediate_quit = true; while (CONSP (plist) && !EQ (XCAR (plist), prop)) { plist = XCDR (plist); plist = CDR (plist); } - immediate_quit = false; return plist; } diff --git a/src/indent.c b/src/indent.c index 23951a1..33f709c 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1200,7 +1200,6 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, continuation_glyph_width = 0; /* In the fringe. */ #endif - immediate_quit = true; maybe_quit (); /* It's just impossible to be too paranoid here. */ @@ -1694,7 +1693,6 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, /* Nonzero if have just continued a line */ val_compute_motion.contin = (contin_hpos && prev_hpos == 0); - immediate_quit = false; return &val_compute_motion; } diff --git a/src/keyboard.c b/src/keyboard.c index d41603b..317669d 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -169,9 +169,6 @@ struct kboard *echo_kboard; Lisp_Object echo_message_buffer; -/* True means C-g should cause immediate error-signal. */ -bool immediate_quit; - /* Character that causes a quit. Normally C-g. If we are running on an ordinary terminal, this must be an ordinary @@ -3584,16 +3581,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, as input, set quit-flag to cause an interrupt. */ if (!NILP (Vthrow_on_input) && NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events))) - { - Vquit_flag = Vthrow_on_input; - /* If we're inside a function that wants immediate quits, - do it now. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - immediate_quit = false; - maybe_quit (); - } - } + Vquit_flag = Vthrow_on_input; } @@ -10445,30 +10433,12 @@ handle_interrupt (bool in_signal_handler) } else { - /* If executing a function that wants to be interrupted out of - and the user has not deferred quitting by binding `inhibit-quit' - then quit right away. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - struct gl_state_s saved; - - immediate_quit = false; - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); - saved = gl_state; - quit (); - gl_state = saved; - } - else - { /* Else request quit when it's safe. */ - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; - force_quit_count = count; - if (count == 3) - { - immediate_quit = true; - Vinhibit_quit = Qnil; - } - Vquit_flag = Qt; - } + /* Request quit when it's safe. */ + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; + force_quit_count = count; + if (count == 3) + Vinhibit_quit = Qnil; + Vquit_flag = Qt; } pthread_sigmask (SIG_SETMASK, &empty_mask, 0); @@ -10907,7 +10877,6 @@ init_keyboard (void) { /* This is correct before outermost invocation of the editor loop. */ command_loop_level = -1; - immediate_quit = false; quit_char = Ctl ('g'); Vunread_command_events = Qnil; timer_idleness_start_time = invalid_timespec (); diff --git a/src/lisp.h b/src/lisp.h index 84d53bb..219e9f8 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3127,11 +3127,6 @@ extern Lisp_Object memory_signal_data; impossible, of course. But it is very desirable to avoid creating loops where maybe_quit is impossible. - Exception: if you set immediate_quit, the handler that responds to - the C-g does the quit itself. This is a good thing to do around a - loop that has no side effects and (in particular) cannot call - arbitrary Lisp code. - If quit-flag is set to `kill-emacs' the SIGINT handler has received a request to exit Emacs when it is safe to do. @@ -4344,9 +4339,6 @@ extern char my_edata[]; extern char my_endbss[]; extern char *my_endbss_static; -/* True means ^G can quit instantly. */ -extern bool immediate_quit; - extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2)); diff --git a/src/process.c b/src/process.c index dbd4358..434a395 100644 --- a/src/process.c +++ b/src/process.c @@ -3431,7 +3431,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, break; } - immediate_quit = true; maybe_quit (); ret = connect (s, sa, addrlen); @@ -3439,8 +3438,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, if (ret == 0 || xerrno == EISCONN) { - /* The unwind-protect will be discarded afterwards. - Likewise for immediate_quit. */ + /* The unwind-protect will be discarded afterwards. */ break; } @@ -3481,8 +3479,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, } #endif /* !WINDOWSNT */ - immediate_quit = false; - /* Discard the unwind protect closing S. */ specpdl_ptr = specpdl + count; emacs_close (s); @@ -3539,8 +3535,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, #endif } - immediate_quit = false; - if (s < 0) { /* If non-blocking got this far - and failed - assume non-blocking is @@ -4012,7 +4006,6 @@ usage: (make-network-process &rest ARGS) */) struct addrinfo *res, *lres; int ret; - immediate_quit = true; maybe_quit (); struct addrinfo hints; @@ -4034,7 +4027,6 @@ usage: (make-network-process &rest ARGS) */) #else error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret); #endif - immediate_quit = false; for (lres = res; lres; lres = lres->ai_next) addrinfos = Fcons (conv_addrinfo_to_lisp (lres), addrinfos); diff --git a/src/regex.c b/src/regex.c index f6e67af..796f868 100644 --- a/src/regex.c +++ b/src/regex.c @@ -1728,10 +1728,8 @@ typedef struct /* Explicit quit checking is needed for Emacs, which uses polling to process input events. */ -#ifdef emacs -# define IMMEDIATE_QUIT_CHECK (immediate_quit ? maybe_quit () : (void) 0) -#else -# define IMMEDIATE_QUIT_CHECK ((void) 0) +#ifndef emacs +static void maybe_quit (void) {} #endif /* Structure to manage work area for range table. */ @@ -5820,7 +5818,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, /* Unconditionally jump (without popping any failure points). */ case jump: unconditional_jump: - IMMEDIATE_QUIT_CHECK; + maybe_quit (); EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ DEBUG_PRINT ("EXECUTING jump %d ", mcnt); p += mcnt; /* Do the jump. */ @@ -6168,7 +6166,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, /* We goto here if a matching operation fails. */ fail: - IMMEDIATE_QUIT_CHECK; + maybe_quit (); if (!FAIL_STACK_EMPTY ()) { re_char *str, *pat; diff --git a/src/search.c b/src/search.c index f54f44c..ed9c12c 100644 --- a/src/search.c +++ b/src/search.c @@ -277,7 +277,6 @@ looking_at_1 (Lisp_Object string, bool posix) !NILP (BVAR (current_buffer, enable_multibyte_characters))); /* Do a pending quit right away, to avoid paradoxical behavior */ - immediate_quit = true; maybe_quit (); /* Get pointers and sizes of the two strings @@ -311,7 +310,6 @@ looking_at_1 (Lisp_Object string, bool posix) (NILP (Vinhibit_changing_match_data) ? &search_regs : NULL), ZV_BYTE - BEGV_BYTE); - immediate_quit = false; #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); #endif @@ -399,7 +397,6 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, ? BVAR (current_buffer, case_canon_table) : Qnil), posix, STRING_MULTIBYTE (string)); - immediate_quit = true; re_match_object = string; val = re_search (bufp, SSDATA (string), @@ -407,7 +404,6 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, SBYTES (string) - pos_byte, (NILP (Vinhibit_changing_match_data) ? &search_regs : NULL)); - immediate_quit = false; /* Set last_thing_searched only when match data is changed. */ if (NILP (Vinhibit_changing_match_data)) @@ -471,13 +467,11 @@ fast_string_match_internal (Lisp_Object regexp, Lisp_Object string, bufp = compile_pattern (regexp, 0, table, 0, STRING_MULTIBYTE (string)); - immediate_quit = true; re_match_object = string; val = re_search (bufp, SSDATA (string), SBYTES (string), 0, SBYTES (string), 0); - immediate_quit = false; return val; } @@ -498,9 +492,7 @@ fast_c_string_match_ignore_case (Lisp_Object regexp, bufp = compile_pattern (regexp, 0, Vascii_canon_table, 0, 0); - immediate_quit = true; val = re_search (bufp, string, len, 0, len, 0); - immediate_quit = false; return val; } @@ -561,7 +553,6 @@ fast_looking_at (Lisp_Object regexp, ptrdiff_t pos, ptrdiff_t pos_byte, } buf = compile_pattern (regexp, 0, Qnil, 0, multibyte); - immediate_quit = true; #ifdef REL_ALLOC /* Prevent ralloc.c from relocating the current buffer while searching it. */ @@ -572,7 +563,6 @@ fast_looking_at (Lisp_Object regexp, ptrdiff_t pos, ptrdiff_t pos_byte, #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); #endif - immediate_quit = false; return len; } @@ -649,7 +639,7 @@ newline_cache_on_off (struct buffer *buf) If BYTEPOS is not NULL, set *BYTEPOS to the byte position corresponding to the returned character position. - If ALLOW_QUIT, set immediate_quit. That's good to do + If ALLOW_QUIT, check for quitting. That's good to do except when inside redisplay. */ ptrdiff_t @@ -685,8 +675,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (shortage != 0) *shortage = 0; - immediate_quit = allow_quit; - if (count > 0) while (start != end) { @@ -704,7 +692,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, ptrdiff_t next_change; int result = 1; - immediate_quit = false; while (start < end && result) { ptrdiff_t lim1; @@ -757,7 +744,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, start_byte = end_byte; break; } - immediate_quit = allow_quit; /* START should never be after END. */ if (start_byte > ceiling_byte) @@ -810,7 +796,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (--count == 0) { - immediate_quit = false; if (bytepos) *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); @@ -833,7 +818,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, ptrdiff_t next_change; int result = 1; - immediate_quit = false; while (start > end && result) { ptrdiff_t lim1; @@ -870,7 +854,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, start_byte = end_byte; break; } - immediate_quit = allow_quit; /* Start should never be at or before end. */ if (start_byte <= ceiling_byte) @@ -918,7 +901,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (++count >= 0) { - immediate_quit = false; if (bytepos) *bytepos = ceiling_byte + prev + 1; return BYTE_TO_CHAR (ceiling_byte + prev + 1); @@ -930,7 +912,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, } } - immediate_quit = false; if (shortage) *shortage = count * direction; if (bytepos) @@ -954,7 +935,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, the number of line boundaries left unfound, and position at the limit we bumped up against. - If ALLOW_QUIT, set immediate_quit. That's good to do + If ALLOW_QUIT, check for quitting. That's good to do except in special cases. */ ptrdiff_t @@ -1197,9 +1178,6 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, trt, posix, !NILP (BVAR (current_buffer, enable_multibyte_characters))); - immediate_quit = true; /* Quit immediately if user types ^G, - because letting this function finish - can take too long. */ maybe_quit (); /* Do a pending quit right away, to avoid paradoxical behavior */ /* Get pointers and sizes of the two strings @@ -1268,7 +1246,6 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } else { - immediate_quit = false; #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); #endif @@ -1313,7 +1290,6 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } else { - immediate_quit = false; #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); #endif @@ -1321,7 +1297,6 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } n--; } - immediate_quit = false; #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); #endif @@ -3231,8 +3206,6 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (shortage != 0) *shortage = 0; - immediate_quit = allow_quit; - if (count > 0) while (start != end) { @@ -3275,7 +3248,6 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (--count == 0) { - immediate_quit = false; if (bytepos) *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); @@ -3287,7 +3259,6 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, } } - immediate_quit = false; if (shortage) *shortage = count; if (bytepos) diff --git a/src/syntax.c b/src/syntax.c index f9e4093..e713922 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -1426,7 +1426,6 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) int ch0, ch1; Lisp_Object func, pos; - immediate_quit = true; maybe_quit (); SETUP_SYNTAX_TABLE (from, count); @@ -1436,10 +1435,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) while (1) { if (from == end) - { - immediate_quit = false; - return 0; - } + return 0; UPDATE_SYNTAX_TABLE_FORWARD (from); ch0 = FETCH_CHAR_AS_MULTIBYTE (from_byte); code = SYNTAX (ch0); @@ -1486,10 +1482,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) while (1) { if (from == beg) - { - immediate_quit = false; - return 0; - } + return 0; DEC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_BACKWARD (from); ch1 = FETCH_CHAR_AS_MULTIBYTE (from_byte); @@ -1536,8 +1529,6 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) count++; } - immediate_quit = false; - return from; } @@ -1921,7 +1912,6 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, stop = (pos >= GPT && GPT > XINT (lim)) ? GAP_END_ADDR : endp; } - immediate_quit = true; /* This code may look up syntax tables using functions that rely on the gl_state object. To make sure this object is not out of date, let's initialize it manually. @@ -2064,7 +2054,6 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, } SET_PT_BOTH (pos, pos_byte); - immediate_quit = false; SAFE_FREE (); return make_number (PT - start_point); @@ -2138,7 +2127,6 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) ptrdiff_t pos_byte = PT_BYTE; unsigned char *p, *endp, *stop; - immediate_quit = true; SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1); if (forwardp) @@ -2224,7 +2212,6 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) done: SET_PT_BOTH (pos, pos_byte); - immediate_quit = false; return make_number (PT - start_point); } @@ -2412,7 +2399,6 @@ between them, return t; otherwise return nil. */) count1 = XINT (count); stop = count1 > 0 ? ZV : BEGV; - immediate_quit = true; maybe_quit (); from = PT; @@ -2429,7 +2415,6 @@ between them, return t; otherwise return nil. */) if (from == stop) { SET_PT_BOTH (from, from_byte); - immediate_quit = false; return Qnil; } c = FETCH_CHAR_AS_MULTIBYTE (from_byte); @@ -2463,7 +2448,6 @@ between them, return t; otherwise return nil. */) comstyle = ST_COMMENT_STYLE; else if (code != Scomment) { - immediate_quit = false; DEC_BOTH (from, from_byte); SET_PT_BOTH (from, from_byte); return Qnil; @@ -2474,7 +2458,6 @@ between them, return t; otherwise return nil. */) from = out_charpos; from_byte = out_bytepos; if (!found) { - immediate_quit = false; SET_PT_BOTH (from, from_byte); return Qnil; } @@ -2494,7 +2477,6 @@ between them, return t; otherwise return nil. */) if (from <= stop) { SET_PT_BOTH (BEGV, BEGV_BYTE); - immediate_quit = false; return Qnil; } @@ -2587,7 +2569,6 @@ between them, return t; otherwise return nil. */) else if (code != Swhitespace || quoted) { leave: - immediate_quit = false; INC_BOTH (from, from_byte); SET_PT_BOTH (from, from_byte); return Qnil; @@ -2598,7 +2579,6 @@ between them, return t; otherwise return nil. */) } SET_PT_BOTH (from, from_byte); - immediate_quit = false; return Qt; } @@ -2640,7 +2620,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) from_byte = CHAR_TO_BYTE (from); - immediate_quit = true; maybe_quit (); SETUP_SYNTAX_TABLE (from, count); @@ -2801,7 +2780,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (depth) goto lose; - immediate_quit = false; return Qnil; /* End of object reached */ @@ -2984,7 +2962,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (depth) goto lose; - immediate_quit = false; return Qnil; done2: @@ -2992,7 +2969,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) } - immediate_quit = false; XSETFASTINT (val, from); return val; @@ -3173,7 +3149,6 @@ do { prev_from = from; \ UPDATE_SYNTAX_TABLE_FORWARD (from); \ } while (0) - immediate_quit = true; maybe_quit (); depth = state->depth; @@ -3432,7 +3407,6 @@ do { prev_from = from; \ state->levelstarts); state->prev_syntax = (SYNTAX_FLAGS_COMSTARTEND_FIRST (prev_from_syntax) || state->quoted) ? prev_from_syntax : Smax; - immediate_quit = false; } /* Convert a (lisp) parse state to the internal form used in diff --git a/src/w32fns.c b/src/w32fns.c index 6a576fc..1b628b0 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3168,16 +3168,7 @@ signal_user_input (void) Vquit_flag = Vthrow_on_input; /* Calling maybe_quit from this thread is a bad idea, since this unwinds the stack of the Lisp thread, and the Windows runtime - rightfully barfs. Disabled. */ -#if 0 - /* If we're inside a function that wants immediate quits, - do it now. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - immediate_quit = false; - maybe_quit (); - } -#endif + rightfully barfs. */ } } diff --git a/src/window.c b/src/window.c index 71a82b5..bc3f488 100644 --- a/src/window.c +++ b/src/window.c @@ -4770,7 +4770,6 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror) { ptrdiff_t count = SPECPDL_INDEX (); - immediate_quit = true; n = clip_to_bounds (INT_MIN, n, INT_MAX); wset_redisplay (XWINDOW (window)); @@ -4789,7 +4788,6 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror) /* Bug#15957. */ XWINDOW (window)->window_end_valid = false; - immediate_quit = false; } -- 2.9.3 --------------74A8B1EA14E1B1B1F7934CEB Content-Type: text/x-patch; name="0002-Revamp-quitting-and-fix-infloops.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0002-Revamp-quitting-and-fix-infloops.patch" >From db9f32e10b76294b21787bcc4b03cc36dce15ffe Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 27 Jan 2017 08:58:51 -0800 Subject: [PATCH 2/3] Revamp quitting and fix infloops This fixes some infinite loops that cannot be quitted out of, e.g., (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) when byte-compiled and when run under X. See: http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00577.html This also attempts to keep the performance improvements I recently added, as much as possible under the constraint that the infloops must be caught. In some cases this fixes infloop bugs recently introduced when I removed immediate_quit. * src/alloc.c (Fmake_list): Use rarely_quit, not maybe_quit, for speed in the usual case. * src/bytecode.c (exec_byte_code): * src/editfns.c (Fcompare_buffer_substrings): * src/fns.c (Fnthcdr): * src/syntax.c (scan_words, skip_chars, skip_syntaxes) (Fbackward_prefix_chars): Use rarely_quit so that users can C-g out of long loops. * src/callproc.c (call_process_cleanup, call_process): * src/fileio.c (read_non_regular, Finsert_file_contents): * src/indent.c (compute_motion): * src/syntax.c (scan_words, Fforward_comment): Remove now-unnecessary maybe_quit calls. * src/callproc.c (call_process): * src/doc.c (get_doc_string, Fsnarf_documentation): * src/fileio.c (Fcopy_file, read_non_regular, Finsert_file_contents): * src/lread.c (safe_to_load_version): * src/sysdep.c (system_process_attributes) [GNU_LINUX]: Use emacs_read_quit instead of emacs_read in places where C-g handling is safe. * src/eval.c (maybe_quit): Move comment here from lisp.h. * src/fileio.c (Fcopy_file, e_write): Use emacs_write_quit instead of emacs_write_sig in places where C-g handling is safe. * src/filelock.c (create_lock_file): Use emacs_write, not plain write, as emacs_write no longer has a problem. (read_lock_data): Use emacs_read, not read, as emacs_read no longer has a problem. * src/fns.c (rarely_quit): Move to lisp.h and rename to incr_rarely_quit. All uses changed.. * src/fns.c (Fmemq, Fmemql, Fassq, Frassq, Fplist_put, Fplist_member): * src/indent.c (compute_motion): * src/syntax.c (find_defun_start, back_comment, forw_comment) (Fforward_comment, scan_lists, scan_sexps_forward): Use incr_rarely_quit so that users can C-g out of long loops. * src/fns.c (Fnconc): Move incr_rarely_quit call to within inner loop, so that it catches C-g there too. * src/keyboard.c (tty_read_avail_input): Remove commented-out and now-obsolete code dealing with interrupts. * src/lisp.h (rarely_quit, incr_rarely_quit): New functions, the latter moved here from fns.c and renamed from rarely_quit. (emacs_read_quit, emacs_write_quit): New decls. * src/search.c (find_newline, search_buffer, find_newline1): Add maybe_quit to catch C-g. * src/sysdep.c (get_child_status): Always invoke maybe_quit if interruptible, so that the caller need not bother. (emacs_nointr_read, emacs_read_quit, emacs_write_quit): New functions. (emacs_read): Rewrite in terms of emacs_nointr_read. Do not handle C-g or signals; that is now for emacs_read_quit. (emacs_full_write): Replace PROCESS_SIGNALS two-way arg with INTERRUPTIBLE three-way arg. All uses changed. --- src/alloc.c | 2 +- src/bytecode.c | 16 ++++--- src/callproc.c | 9 +--- src/doc.c | 9 ++-- src/editfns.c | 1 + src/eval.c | 13 ++++++ src/fileio.c | 55 ++++++++++-------------- src/filelock.c | 7 +--- src/fns.c | 53 +++++++++++------------- src/indent.c | 11 +++-- src/keyboard.c | 48 +++++++-------------- src/lisp.h | 40 ++++++++++++------ src/lread.c | 2 +- src/search.c | 8 ++++ src/syntax.c | 112 +++++++++++++++++++++++++++++++------------------ src/sysdep.c | 129 +++++++++++++++++++++++++++++++++++++-------------------- 16 files changed, 295 insertions(+), 220 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index f7b6515..b24dd7f 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -2880,7 +2880,7 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0, for (EMACS_INT size = XFASTINT (length); 0 < size; size--) { val = Fcons (init, val); - maybe_quit (); + rarely_quit (size); } return val; diff --git a/src/bytecode.c b/src/bytecode.c index ed58d18..0f7420c 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -841,9 +841,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, { Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v1); - EMACS_INT n = XINT (v1); - while (--n >= 0 && CONSP (v2)) - v2 = XCDR (v2); + for (EMACS_INT n = XINT (v1); 0 < n && CONSP (v2); n--) + { + v2 = XCDR (v2); + rarely_quit (n); + } TOP = CAR (v2); NEXT; } @@ -1273,9 +1275,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, /* Exchange args and then do nth. */ Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v2); - EMACS_INT n = XINT (v2); - while (--n >= 0 && CONSP (v1)) - v1 = XCDR (v1); + for (EMACS_INT n = XINT (v2); 0 < n && CONSP (v1); n--) + { + v1 = XCDR (v1); + rarely_quit (n); + } TOP = CAR (v1); } else diff --git a/src/callproc.c b/src/callproc.c index 85674bb..710174c 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -198,7 +198,6 @@ call_process_cleanup (Lisp_Object buffer) { kill (-synch_process_pid, SIGINT); message1 ("Waiting for process to die...(type C-g again to kill it instantly)"); - maybe_quit (); wait_for_termination (synch_process_pid, 0, 1); synch_process_pid = 0; message1 ("Waiting for process to die...done"); @@ -724,8 +723,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, process_coding.src_multibyte = 0; } - maybe_quit (); - if (0 <= fd0) { enum { CALLPROC_BUFFER_SIZE_MIN = 16 * 1024 }; @@ -746,8 +743,8 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, nread = carryover; while (nread < bufsize - 1024) { - int this_read = emacs_read (fd0, buf + nread, - bufsize - nread); + int this_read = emacs_read_quit (fd0, buf + nread, + bufsize - nread); if (this_read < 0) goto give_up; @@ -838,8 +835,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, we should have already detected a coding system. */ display_on_the_fly = true; } - - maybe_quit (); } give_up: ; diff --git a/src/doc.c b/src/doc.c index 361d09a..1e7e3fc 100644 --- a/src/doc.c +++ b/src/doc.c @@ -186,7 +186,7 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool definition) If we read the same block last time, maybe skip this? */ if (space_left > 1024 * 8) space_left = 1024 * 8; - nread = emacs_read (fd, p, space_left); + nread = emacs_read_quit (fd, p, space_left); if (nread < 0) report_file_error ("Read error on documentation file", file); p[nread] = 0; @@ -590,16 +590,15 @@ the same file name is found in the `doc-directory'. */) Vdoc_file_name = filename; filled = 0; pos = 0; - while (1) + while (true) { - register char *end; if (filled < 512) - filled += emacs_read (fd, &buf[filled], sizeof buf - 1 - filled); + filled += emacs_read_quit (fd, &buf[filled], sizeof buf - 1 - filled); if (!filled) break; buf[filled] = 0; - end = buf + (filled < 512 ? filled : filled - 128); + char *end = buf + (filled < 512 ? filled : filled - 128); p = memchr (buf, '\037', end - buf); /* p points to ^_Ffunctionname\n or ^_Vvarname\n or ^_Sfilename\n. */ if (p) diff --git a/src/editfns.c b/src/editfns.c index b605437..4618164 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3096,6 +3096,7 @@ determines whether case is significant or ignored. */) return make_number (c1 < c2 ? -1 - chars : chars + 1); chars++; + rarely_quit (chars); } /* The strings match as far as they go. diff --git a/src/eval.c b/src/eval.c index 844879d..22b02b4 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1461,6 +1461,19 @@ process_quit_flag (void) quit (); } +/* Check quit-flag and quit if it is non-nil. Typing C-g does not + directly cause a quit; it only sets Vquit_flag. So the program + needs to call maybe_quit at times when it is safe to quit. Every + loop that might run for a long time or might not exit ought to call + maybe_quit at least once, at a safe place. Unless that is + impossible, of course. But it is very desirable to avoid creating + loops where maybe_quit is impossible. + + If quit-flag is set to `kill-emacs' the SIGINT handler has received + a request to exit Emacs when it is safe to do. + + When not quitting, process any pending signals. */ + void maybe_quit (void) { diff --git a/src/fileio.c b/src/fileio.c index 3e28517..a634eee 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2030,9 +2030,9 @@ permissions. */) { char buf[MAX_ALLOCA]; ptrdiff_t n; - for (newsize = 0; 0 < (n = emacs_read (ifd, buf, sizeof buf)); + for (newsize = 0; 0 < (n = emacs_read_quit (ifd, buf, sizeof buf)); newsize += n) - if (emacs_write_sig (ofd, buf, n) != n) + if (emacs_write_quit (ofd, buf, n) != n) report_file_error ("Write error", newname); if (n < 0) report_file_error ("Read error", file); @@ -3395,13 +3395,10 @@ decide_coding_unwind (Lisp_Object unwind_data) static Lisp_Object read_non_regular (Lisp_Object state) { - int nbytes; - - maybe_quit (); - nbytes = emacs_read (XSAVE_INTEGER (state, 0), - ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE - + XSAVE_INTEGER (state, 1)), - XSAVE_INTEGER (state, 2)); + int nbytes = emacs_read_quit (XSAVE_INTEGER (state, 0), + ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + + XSAVE_INTEGER (state, 1)), + XSAVE_INTEGER (state, 2)); /* Fast recycle this object for the likely next call. */ free_misc (state); return make_number (nbytes); @@ -3745,17 +3742,17 @@ by calling `format-decode', which see. */) int nread; if (st.st_size <= (1024 * 4)) - nread = emacs_read (fd, read_buf, 1024 * 4); + nread = emacs_read_quit (fd, read_buf, 1024 * 4); else { - nread = emacs_read (fd, read_buf, 1024); + nread = emacs_read_quit (fd, read_buf, 1024); if (nread == 1024) { int ntail; if (lseek (fd, - (1024 * 3), SEEK_END) < 0) report_file_error ("Setting file position", orig_filename); - ntail = emacs_read (fd, read_buf + nread, 1024 * 3); + ntail = emacs_read_quit (fd, read_buf + nread, 1024 * 3); nread = ntail < 0 ? ntail : nread + ntail; } } @@ -3860,14 +3857,11 @@ by calling `format-decode', which see. */) report_file_error ("Setting file position", orig_filename); } - maybe_quit (); /* Count how many chars at the start of the file match the text at the beginning of the buffer. */ - while (1) + while (true) { - int nread, bufpos; - - nread = emacs_read (fd, read_buf, sizeof read_buf); + int nread = emacs_read_quit (fd, read_buf, sizeof read_buf); if (nread < 0) report_file_error ("Read error", orig_filename); else if (nread == 0) @@ -3889,7 +3883,7 @@ by calling `format-decode', which see. */) break; } - bufpos = 0; + int bufpos = 0; while (bufpos < nread && same_at_start < ZV_BYTE && FETCH_BYTE (same_at_start) == read_buf[bufpos]) same_at_start++, bufpos++; @@ -3909,7 +3903,7 @@ by calling `format-decode', which see. */) del_range_1 (same_at_start, same_at_end, 0, 0); goto handled; } - maybe_quit (); + /* Count how many chars at the end of the file match the text at the end of the buffer. But, if we have already found that decoding is necessary, don't waste time. */ @@ -3931,7 +3925,8 @@ by calling `format-decode', which see. */) total_read = nread = 0; while (total_read < trial) { - nread = emacs_read (fd, read_buf + total_read, trial - total_read); + nread = emacs_read_quit (fd, read_buf + total_read, + trial - total_read); if (nread < 0) report_file_error ("Read error", orig_filename); else if (nread == 0) @@ -4057,16 +4052,13 @@ by calling `format-decode', which see. */) inserted = 0; /* Bytes put into CONVERSION_BUFFER so far. */ unprocessed = 0; /* Bytes not processed in previous loop. */ - while (1) + while (true) { /* Read at most READ_BUF_SIZE bytes at a time, to allow quitting while reading a huge file. */ - /* Allow quitting out of the actual I/O. */ - maybe_quit (); - this = emacs_read (fd, read_buf + unprocessed, - READ_BUF_SIZE - unprocessed); - + this = emacs_read_quit (fd, read_buf + unprocessed, + READ_BUF_SIZE - unprocessed); if (this <= 0) break; @@ -4280,11 +4272,10 @@ by calling `format-decode', which see. */) /* Allow quitting out of the actual I/O. We don't make text part of the buffer until all the reading is done, so a C-g here doesn't do any harm. */ - maybe_quit (); - this = emacs_read (fd, - ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE - + inserted), - trytry); + this = emacs_read_quit (fd, + ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + + inserted), + trytry); } if (this <= 0) @@ -5397,7 +5388,7 @@ e_write (int desc, Lisp_Object string, ptrdiff_t start, ptrdiff_t end, : (STRINGP (coding->dst_object) ? SSDATA (coding->dst_object) : (char *) BYTE_POS_ADDR (coding->dst_pos_byte))); - coding->produced -= emacs_write_sig (desc, buf, coding->produced); + coding->produced -= emacs_write_quit (desc, buf, coding->produced); if (coding->raw_destination) { diff --git a/src/filelock.c b/src/filelock.c index de65c52..67e8dbd 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -407,9 +407,7 @@ create_lock_file (char *lfname, char *lock_info_str, bool force) fcntl (fd, F_SETFD, FD_CLOEXEC); lock_info_len = strlen (lock_info_str); err = 0; - /* Use 'write', not 'emacs_write', as garbage collection - might signal an error, which would leak FD. */ - if (write (fd, lock_info_str, lock_info_len) != lock_info_len + if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len || fchmod (fd, S_IRUSR | S_IRGRP | S_IROTH) != 0) err = errno; /* There is no need to call fsync here, as the contents of @@ -490,8 +488,7 @@ read_lock_data (char *lfname, char lfinfo[MAX_LFINFO + 1]) int fd = emacs_open (lfname, O_RDONLY | O_NOFOLLOW, 0); if (0 <= fd) { - /* Use read, not emacs_read, since FD isn't unwind-protected. */ - ptrdiff_t read_bytes = read (fd, lfinfo, MAX_LFINFO + 1); + ptrdiff_t read_bytes = emacs_read (fd, lfinfo, MAX_LFINFO + 1); int read_errno = errno; if (emacs_close (fd) != 0) return -1; diff --git a/src/fns.c b/src/fns.c index 03af092..dc75d84 100644 --- a/src/fns.c +++ b/src/fns.c @@ -83,22 +83,6 @@ See Info node `(elisp)Random Numbers' for more details. */) return make_number (val); } -/* Heuristic on how many iterations of a tight loop can be safely done - before it's time to do a quit. This must be a power of 2. It - is nice but not necessary for it to equal USHRT_MAX + 1. */ -enum { QUIT_COUNT_HEURISTIC = 1 << 16 }; - -/* Process a quit, but do it only rarely, for efficiency. "Rarely" - means once per QUIT_COUNT_HEURISTIC or per USHRT_MAX + 1 times, - whichever is smaller. Use *QUIT_COUNT to count this. */ - -static void -rarely_quit (unsigned short int *quit_count) -{ - if (! (++*quit_count & (QUIT_COUNT_HEURISTIC - 1))) - maybe_quit (); -} - /* Random data-structure functions. */ DEFUN ("length", Flength, Slength, 1, 1, 0, @@ -1358,9 +1342,8 @@ DEFUN ("nthcdr", Fnthcdr, Snthcdr, 2, 2, 0, (Lisp_Object n, Lisp_Object list) { CHECK_NUMBER (n); - EMACS_INT num = XINT (n); Lisp_Object tail = list; - for (EMACS_INT i = 0; i < num; i++) + for (EMACS_INT num = XINT (n); 0 < num; num--) { if (! CONSP (tail)) { @@ -1368,6 +1351,7 @@ DEFUN ("nthcdr", Fnthcdr, Snthcdr, 2, 2, 0, return Qnil; } tail = XCDR (tail); + rarely_quit (num); } return tail; } @@ -1404,7 +1388,7 @@ The value is actually the tail of LIST whose car is ELT. */) { if (! NILP (Fequal (elt, XCAR (tail)))) return tail; - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1415,11 +1399,13 @@ DEFUN ("memq", Fmemq, Smemq, 2, 2, 0, The value is actually the tail of LIST whose car is ELT. */) (Lisp_Object elt, Lisp_Object list) { + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { if (EQ (XCAR (tail), elt)) return tail; + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1433,12 +1419,14 @@ The value is actually the tail of LIST whose car is ELT. */) if (!FLOATP (elt)) return Fmemq (elt, list); + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { Lisp_Object tem = XCAR (tail); if (FLOATP (tem) && internal_equal (elt, tem, 0, 0, Qnil)) return tail; + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1450,11 +1438,13 @@ The value is actually the first element of LIST whose car is KEY. Elements of LIST that are not conses are ignored. */) (Lisp_Object key, Lisp_Object list) { + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key)) return XCAR (tail); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1485,7 +1475,7 @@ The value is actually the first element of LIST whose car equals KEY. */) if (CONSP (car) && (EQ (XCAR (car), key) || !NILP (Fequal (XCAR (car), key)))) return car; - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1512,11 +1502,13 @@ DEFUN ("rassq", Frassq, Srassq, 2, 2, 0, The value is actually the first element of LIST whose cdr is KEY. */) (Lisp_Object key, Lisp_Object list) { + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { if (CONSP (XCAR (tail)) && EQ (XCDR (XCAR (tail)), key)) return XCAR (tail); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1535,7 +1527,7 @@ The value is actually the first element of LIST whose cdr equals KEY. */) if (CONSP (car) && (EQ (XCDR (car), key) || !NILP (Fequal (XCDR (car), key)))) return car; - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1690,7 +1682,7 @@ changing the value of a sequence `foo'. */) } else prev = tail; - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, seq); } @@ -1715,10 +1707,10 @@ This function may destructively modify SEQ to produce the value. */) for (prev = Qnil, tail = seq; CONSP (tail); tail = next) { - rarely_quit (&quit_count); next = XCDR (tail); Fsetcdr (tail, prev); prev = tail; + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, seq); seq = prev; @@ -1764,8 +1756,8 @@ See also the function `nreverse', which is used more often. */) unsigned short int quit_count = 0; for (new = Qnil; CONSP (seq); seq = XCDR (seq)) { - rarely_quit (&quit_count); new = Fcons (XCAR (seq), new); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (seq, seq); } @@ -2056,6 +2048,7 @@ use `(setq x (plist-put x prop val))' to be sure to use the new value. The PLIST is modified by side effects. */) (Lisp_Object plist, Lisp_Object prop, Lisp_Object val) { + unsigned short int quit_count = 0; Lisp_Object prev = Qnil; for (Lisp_Object tail = plist; CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail))) @@ -2067,6 +2060,7 @@ The PLIST is modified by side effects. */) } prev = tail; + incr_rarely_quit (&quit_count); } Lisp_Object newcell = Fcons (prop, Fcons (val, NILP (prev) ? plist : XCDR (XCDR (prev)))); @@ -2104,7 +2098,7 @@ one of the properties on the list. */) { if (! NILP (Fequal (prop, XCAR (tail)))) return XCAR (XCDR (tail)); - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } CHECK_LIST_END (tail, prop); @@ -2134,7 +2128,7 @@ The PLIST is modified by side effects. */) } prev = tail; - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); } Lisp_Object newcell = list2 (prop, val); if (NILP (prev)) @@ -2214,7 +2208,7 @@ internal_equal (Lisp_Object o1, Lisp_Object o2, int depth, bool props, unsigned short int quit_count = 0; tail_recurse: - rarely_quit (&quit_count); + incr_rarely_quit (&quit_count); if (EQ (o1, o2)) return 1; if (XTYPE (o1) != XTYPE (o2)) @@ -2423,11 +2417,10 @@ usage: (nconc &rest LISTS) */) { tail = tem; tem = XCDR (tail); + incr_rarely_quit (&quit_count); } while (CONSP (tem)); - rarely_quit (&quit_count); - tem = args[argnum + 1]; Fsetcdr (tail, tem); if (NILP (tem)) @@ -2848,10 +2841,12 @@ property and a property with the value nil. The value is actually the tail of PLIST whose car is PROP. */) (Lisp_Object plist, Lisp_Object prop) { + unsigned short int quit_count = 0; while (CONSP (plist) && !EQ (XCAR (plist), prop)) { plist = XCDR (plist); plist = CDR (plist); + incr_rarely_quit (&quit_count); } return plist; } diff --git a/src/indent.c b/src/indent.c index 33f709c..aff14ab 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1200,8 +1200,6 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, continuation_glyph_width = 0; /* In the fringe. */ #endif - maybe_quit (); - /* It's just impossible to be too paranoid here. */ eassert (from == BYTE_TO_CHAR (frombyte) && frombyte == CHAR_TO_BYTE (from)); @@ -1213,8 +1211,12 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, cmp_it.id = -1; composition_compute_stop_pos (&cmp_it, pos, pos_byte, to, Qnil); - while (1) + unsigned short int quit_count = 0; + + while (true) { + incr_rarely_quit (&quit_count); + while (pos == next_boundary) { ptrdiff_t pos_here = pos; @@ -1279,6 +1281,8 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, pos = newpos; pos_byte = CHAR_TO_BYTE (pos); } + + incr_rarely_quit (&quit_count); } /* Handle right margin. */ @@ -1601,6 +1605,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, pos = find_before_next_newline (pos, to, 1, &pos_byte); if (pos < to) INC_BOTH (pos, pos_byte); + incr_rarely_quit (&quit_count); } while (pos < to && indented_beyond_p (pos, pos_byte, diff --git a/src/keyboard.c b/src/keyboard.c index 317669d..a86e7c5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -7041,40 +7041,22 @@ tty_read_avail_input (struct terminal *terminal, /* Now read; for one reason or another, this will not block. NREAD is set to the number of chars read. */ - do - { - nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read); - /* POSIX infers that processes which are not in the session leader's - process group won't get SIGHUPs at logout time. BSDI adheres to - this part standard and returns -1 from read (0) with errno==EIO - when the control tty is taken away. - Jeffrey Honig says this is generally safe. */ - if (nread == -1 && errno == EIO) - return -2; /* Close this terminal. */ -#if defined (AIX) && defined (_BSD) - /* The kernel sometimes fails to deliver SIGHUP for ptys. - This looks incorrect, but it isn't, because _BSD causes - O_NDELAY to be defined in fcntl.h as O_NONBLOCK, - and that causes a value other than 0 when there is no input. */ - if (nread == 0) - return -2; /* Close this terminal. */ -#endif - } - while ( - /* We used to retry the read if it was interrupted. - But this does the wrong thing when O_NONBLOCK causes - an EAGAIN error. Does anybody know of a situation - where a retry is actually needed? */ -#if 0 - nread < 0 && (errno == EAGAIN || errno == EFAULT -#ifdef EBADSLT - || errno == EBADSLT -#endif - ) -#else - 0 + nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read); + /* POSIX infers that processes which are not in the session leader's + process group won't get SIGHUPs at logout time. BSDI adheres to + this part standard and returns -1 from read (0) with errno==EIO + when the control tty is taken away. + Jeffrey Honig says this is generally safe. */ + if (nread == -1 && errno == EIO) + return -2; /* Close this terminal. */ +#if defined AIX && defined _BSD + /* The kernel sometimes fails to deliver SIGHUP for ptys. + This looks incorrect, but it isn't, because _BSD causes + O_NDELAY to be defined in fcntl.h as O_NONBLOCK, + and that causes a value other than 0 when there is no input. */ + if (nread == 0) + return -2; /* Close this terminal. */ #endif - ); #ifndef USABLE_FIONREAD #if defined (USG) || defined (CYGWIN) diff --git a/src/lisp.h b/src/lisp.h index 219e9f8..1db76ce 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3119,24 +3119,36 @@ struct handler extern Lisp_Object memory_signal_data; -/* Check quit-flag and quit if it is non-nil. Typing C-g does not - directly cause a quit; it only sets Vquit_flag. So the program - needs to call maybe_quit at times when it is safe to quit. Every - loop that might run for a long time or might not exit ought to call - maybe_quit at least once, at a safe place. Unless that is - impossible, of course. But it is very desirable to avoid creating - loops where maybe_quit is impossible. - - If quit-flag is set to `kill-emacs' the SIGINT handler has received - a request to exit Emacs when it is safe to do. - - When not quitting, process any pending signals. */ - extern void maybe_quit (void); /* True if ought to quit now. */ #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) + +/* Heuristic on how many iterations of a tight loop can be safely done + before it's time to do a quit. This must be a power of 2. It + is nice but not necessary for it to equal USHRT_MAX + 1. */ + +enum { QUIT_COUNT_HEURISTIC = 1 << 16 }; + +/* Process a quit rarely, based on a counter COUNT, for efficiency. + "Rarely" means once per QUIT_COUNT_HEURISTIC or per USHRT_MAX + 1 + times, whichever is smaller (somewhat arbitrary, but often faster). */ + +INLINE void +rarely_quit (unsigned short int count) +{ + if (! (count & (QUIT_COUNT_HEURISTIC - 1))) + maybe_quit (); +} + +/* Increment *QUIT_COUNT and rarely quit. */ + +INLINE void +incr_rarely_quit (unsigned short int *quit_count) +{ + rarely_quit (++*quit_count); +} extern Lisp_Object Vascii_downcase_table; extern Lisp_Object Vascii_canon_table; @@ -4212,8 +4224,10 @@ extern int emacs_open (const char *, int, int); extern int emacs_pipe (int[2]); extern int emacs_close (int); extern ptrdiff_t emacs_read (int, void *, ptrdiff_t); +extern ptrdiff_t emacs_read_quit (int, void *, ptrdiff_t); extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t); extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t); +extern ptrdiff_t emacs_write_quit (int, void const *, ptrdiff_t); extern void emacs_perror (char const *); extern void unlock_all_files (void); diff --git a/src/lread.c b/src/lread.c index ea2a1d1..6875c8b 100644 --- a/src/lread.c +++ b/src/lread.c @@ -910,7 +910,7 @@ safe_to_load_version (int fd) /* Read the first few bytes from the file, and look for a line specifying the byte compiler version used. */ - nbytes = emacs_read (fd, buf, sizeof buf); + nbytes = emacs_read_quit (fd, buf, sizeof buf); if (nbytes > 0) { /* Skip to the next newline, skipping over the initial `ELC' diff --git a/src/search.c b/src/search.c index ed9c12c..084adda 100644 --- a/src/search.c +++ b/src/search.c @@ -800,6 +800,8 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); } + if (allow_quit) + maybe_quit (); } start_byte = lim_byte; @@ -905,6 +907,8 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, *bytepos = ceiling_byte + prev + 1; return BYTE_TO_CHAR (ceiling_byte + prev + 1); } + if (allow_quit) + maybe_quit (); } start_byte = ceiling_byte; @@ -1252,6 +1256,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, return (n); } n++; + maybe_quit (); } while (n > 0) { @@ -1296,6 +1301,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, return (0 - n); } n--; + maybe_quit (); } #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); @@ -3252,6 +3258,8 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); } + if (allow_quit) + maybe_quit (); } start_byte = lim_byte; diff --git a/src/syntax.c b/src/syntax.c index e713922..06fe50b 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -593,6 +593,7 @@ static ptrdiff_t find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte) { ptrdiff_t opoint = PT, opoint_byte = PT_BYTE; + unsigned short int quit_count = 0; /* Use previous finding, if it's valid and applies to this inquiry. */ if (current_buffer == find_start_buffer @@ -621,11 +622,9 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte) SETUP_BUFFER_SYNTAX_TABLE (); while (PT > BEGV) { - int c; - /* Open-paren at start of line means we may have found our defun-start. */ - c = FETCH_CHAR_AS_MULTIBYTE (PT_BYTE); + int c = FETCH_CHAR_AS_MULTIBYTE (PT_BYTE); if (SYNTAX (c) == Sopen) { SETUP_SYNTAX_TABLE (PT + 1, -1); /* Try again... */ @@ -637,6 +636,7 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte) } /* Move to beg of previous line. */ scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1); + incr_rarely_quit (&quit_count); } /* Record what we found, for the next try. */ @@ -715,6 +715,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, ptrdiff_t nesting = 1; /* Current comment nesting. */ int c; int syntax = 0; + unsigned short int quit_count = 0; /* FIXME: A }} comment-ender style leads to incorrect behavior in the case of {{ c }}} because we ignore the last two chars which are @@ -724,6 +725,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, that determines quote parity to the comment-end. */ while (from != stop) { + incr_rarely_quit (&quit_count); + ptrdiff_t temp_byte; int prev_syntax; bool com2start, com2end, comstart; @@ -951,7 +954,9 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, defun_start_byte = CHAR_TO_BYTE (defun_start); } } - } while (defun_start < comment_end); + incr_rarely_quit (&quit_count); + } + while (defun_start < comment_end); from_byte = CHAR_TO_BYTE (from); UPDATE_SYNTAX_TABLE_FORWARD (from - 1); @@ -1417,22 +1422,20 @@ DEFUN ("internal-describe-syntax-value", Finternal_describe_syntax_value, COUNT negative means scan backward and stop at word beginning. */ ptrdiff_t -scan_words (register ptrdiff_t from, register EMACS_INT count) +scan_words (ptrdiff_t from, EMACS_INT count) { - register ptrdiff_t beg = BEGV; - register ptrdiff_t end = ZV; - register ptrdiff_t from_byte = CHAR_TO_BYTE (from); - register enum syntaxcode code; + ptrdiff_t beg = BEGV; + ptrdiff_t end = ZV; + ptrdiff_t from_byte = CHAR_TO_BYTE (from); + enum syntaxcode code; int ch0, ch1; Lisp_Object func, pos; - maybe_quit (); - SETUP_SYNTAX_TABLE (from, count); while (count > 0) { - while (1) + while (true) { if (from == end) return 0; @@ -1445,6 +1448,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; if (code == Sword) break; + rarely_quit (from); } /* Now CH0 is a character which begins a word and FROM is the position of the next character. */ @@ -1473,13 +1477,14 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; INC_BOTH (from, from_byte); ch0 = ch1; + rarely_quit (from); } } count--; } while (count < 0) { - while (1) + while (true) { if (from == beg) return 0; @@ -1492,6 +1497,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; if (code == Sword) break; + rarely_quit (from); } /* Now CH1 is a character which ends a word and FROM is the position of it. */ @@ -1524,6 +1530,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; } ch1 = ch0; + rarely_quit (from); } } count++; @@ -1961,9 +1968,10 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, } fwd_ok: p += nbytes, pos++, pos_byte += nbytes; + rarely_quit (pos); } else - while (1) + while (true) { if (p >= stop) { @@ -1985,15 +1993,14 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, break; fwd_unibyte_ok: p++, pos++, pos_byte++; + rarely_quit (pos); } } else { if (multibyte) - while (1) + while (true) { - unsigned char *prev_p; - if (p <= stop) { if (p <= endp) @@ -2001,8 +2008,11 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, p = GPT_ADDR; stop = endp; } - prev_p = p; - while (--p >= stop && ! CHAR_HEAD_P (*p)); + unsigned char *prev_p = p; + do + p--; + while (stop <= p && ! CHAR_HEAD_P (*p)); + c = STRING_CHAR (p); if (! NILP (iso_classes) && in_classes (c, iso_classes)) @@ -2026,9 +2036,10 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, } back_ok: pos--, pos_byte -= prev_p - p; + rarely_quit (pos); } else - while (1) + while (true) { if (p <= stop) { @@ -2050,6 +2061,7 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, break; back_unibyte_ok: p--, pos--, pos_byte--; + rarely_quit (pos); } } @@ -2155,6 +2167,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (! fastmap[SYNTAX (c)]) goto done; p += nbytes, pos++, pos_byte += nbytes; + rarely_quit (pos); } while (!parse_sexp_lookup_properties || pos < gl_state.e_property); @@ -2171,10 +2184,8 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (multibyte) { - while (1) + while (true) { - unsigned char *prev_p; - if (p <= stop) { if (p <= endp) @@ -2183,17 +2194,22 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) stop = endp; } UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); - prev_p = p; - while (--p >= stop && ! CHAR_HEAD_P (*p)); + + unsigned char *prev_p = p; + do + p--; + while (stop <= p && ! CHAR_HEAD_P (*p)); + c = STRING_CHAR (p); if (! fastmap[SYNTAX (c)]) break; pos--, pos_byte -= prev_p - p; + rarely_quit (pos); } } else { - while (1) + while (true) { if (p <= stop) { @@ -2206,6 +2222,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (! fastmap[SYNTAX (p[-1])]) break; p--, pos--, pos_byte--; + rarely_quit (pos); } } } @@ -2273,9 +2290,10 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, ptrdiff_t *charpos_ptr, ptrdiff_t *bytepos_ptr, EMACS_INT *incomment_ptr, int *last_syntax_ptr) { - register int c, c1; - register enum syntaxcode code; - register int syntax, other_syntax; + unsigned short int quit_count = 0; + int c, c1; + enum syntaxcode code; + int syntax, other_syntax; if (nesting <= 0) nesting = -1; @@ -2367,6 +2385,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, UPDATE_SYNTAX_TABLE_FORWARD (from); nesting++; } + + incr_rarely_quit (&quit_count); } *charpos_ptr = from; *bytepos_ptr = from_byte; @@ -2394,13 +2414,12 @@ between them, return t; otherwise return nil. */) ptrdiff_t out_charpos, out_bytepos; EMACS_INT dummy; int dummy2; + unsigned short int quit_count = 0; CHECK_NUMBER (count); count1 = XINT (count); stop = count1 > 0 ? ZV : BEGV; - maybe_quit (); - from = PT; from_byte = PT_BYTE; @@ -2441,6 +2460,7 @@ between them, return t; otherwise return nil. */) INC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_FORWARD (from); } + incr_rarely_quit (&quit_count); } while (code == Swhitespace || (code == Sendcomment && c == '\n')); @@ -2469,11 +2489,8 @@ between them, return t; otherwise return nil. */) while (count1 < 0) { - while (1) + while (true) { - bool quoted; - int syntax; - if (from <= stop) { SET_PT_BOTH (BEGV, BEGV_BYTE); @@ -2482,9 +2499,9 @@ between them, return t; otherwise return nil. */) DEC_BOTH (from, from_byte); /* char_quoted does UPDATE_SYNTAX_TABLE_BACKWARD (from). */ - quoted = char_quoted (from, from_byte); + bool quoted = char_quoted (from, from_byte); c = FETCH_CHAR_AS_MULTIBYTE (from_byte); - syntax = SYNTAX_WITH_FLAGS (c); + int syntax = SYNTAX_WITH_FLAGS (c); code = SYNTAX (c); comstyle = 0; comnested = SYNTAX_FLAGS_COMMENT_NESTED (syntax); @@ -2527,6 +2544,7 @@ between them, return t; otherwise return nil. */) } else if (from == stop) break; + incr_rarely_quit (&quit_count); } if (fence_found == 0) { @@ -2573,6 +2591,8 @@ between them, return t; otherwise return nil. */) SET_PT_BOTH (from, from_byte); return Qnil; } + + incr_rarely_quit (&quit_count); } count1++; @@ -2612,6 +2632,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) EMACS_INT dummy; int dummy2; bool multibyte_symbol_p = sexpflag && multibyte_syntax_as_symbol; + unsigned short int quit_count = 0; if (depth > 0) min_depth = 0; @@ -2627,6 +2648,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) { while (from < stop) { + incr_rarely_quit (&quit_count); bool comstart_first, prefix; int syntax, other_syntax; UPDATE_SYNTAX_TABLE_FORWARD (from); @@ -2695,6 +2717,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) goto done; } INC_BOTH (from, from_byte); + incr_rarely_quit (&quit_count); } goto done; @@ -2766,6 +2789,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (c_code == Scharquote || c_code == Sescape) INC_BOTH (from, from_byte); INC_BOTH (from, from_byte); + incr_rarely_quit (&quit_count); } INC_BOTH (from, from_byte); if (!depth && sexpflag) goto done; @@ -2791,11 +2815,11 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) { while (from > stop) { - int syntax; + incr_rarely_quit (&quit_count); DEC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_BACKWARD (from); c = FETCH_CHAR_AS_MULTIBYTE (from_byte); - syntax= SYNTAX_WITH_FLAGS (c); + int syntax = SYNTAX_WITH_FLAGS (c); code = syntax_multibyte (c, multibyte_symbol_p); if (depth == min_depth) last_good = from; @@ -2867,6 +2891,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) default: goto done2; } DEC_BOTH (from, from_byte); + incr_rarely_quit (&quit_count); } goto done2; @@ -2929,13 +2954,14 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (syntax_multibyte (c, multibyte_symbol_p) == code) break; } + incr_rarely_quit (&quit_count); } if (code == Sstring_fence && !depth && sexpflag) goto done2; break; case Sstring: stringterm = FETCH_CHAR_AS_MULTIBYTE (from_byte); - while (1) + while (true) { if (from == stop) goto lose; @@ -2949,6 +2975,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) == Sstring)) break; } + incr_rarely_quit (&quit_count); } if (!depth && sexpflag) goto done2; break; @@ -3061,6 +3088,7 @@ the prefix syntax flag (p). */) if (pos <= beg) break; DEC_BOTH (pos, pos_byte); + rarely_quit (pos); } SET_PT_BOTH (opoint, opoint_byte); @@ -3131,6 +3159,7 @@ scan_sexps_forward (struct lisp_parse_state *state, bool found; ptrdiff_t out_bytepos, out_charpos; int temp; + unsigned short int quit_count = 0; prev_from = from; prev_from_byte = from_byte; @@ -3200,6 +3229,7 @@ do { prev_from = from; \ while (from < end) { + incr_rarely_quit (&quit_count); INC_FROM; if ((from < end) @@ -3256,6 +3286,7 @@ do { prev_from = from; \ goto symdone; } INC_FROM; + incr_rarely_quit (&quit_count); } symdone: curlevel->prev = curlevel->last; @@ -3366,6 +3397,7 @@ do { prev_from = from; \ break; } INC_FROM; + incr_rarely_quit (&quit_count); } } string_end: diff --git a/src/sysdep.c b/src/sysdep.c index e172dc0..4155c20 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -382,19 +382,23 @@ get_child_status (pid_t child, int *status, int options, bool interruptible) so that another thread running glib won't find them. */ eassert (child > 0); - while ((pid = waitpid (child, status, options)) < 0) + while (true) { + /* Note: the MS-Windows emulation of waitpid calls maybe_quit + internally. */ + if (interruptible) + maybe_quit (); + + pid = waitpid (child, status, options); + if (0 <= pid) + break; + /* Check that CHILD is a child process that has not been reaped, and that STATUS and OPTIONS are valid. Otherwise abort, as continuing after this internal error could cause Emacs to become confused and kill innocent-victim processes. */ if (errno != EINTR) emacs_abort (); - - /* Note: the MS-Windows emulation of waitpid calls maybe_quit - internally. */ - if (interruptible) - maybe_quit (); } /* If successful and status is requested, tell wait_reading_process_output @@ -2503,78 +2507,113 @@ emacs_close (int fd) #define MAX_RW_COUNT (INT_MAX >> 18 << 18) #endif -/* Read from FILEDESC to a buffer BUF with size NBYTE, retrying if interrupted. +/* Read from FD to a buffer BUF with size NBYTE. + If interrupted, either quit or retry the read. + Process any quits and pending signals immediately if INTERRUPTIBLE. Return the number of bytes read, which might be less than NBYTE. - On error, set errno and return -1. */ -ptrdiff_t -emacs_read (int fildes, void *buf, ptrdiff_t nbyte) + On error, set errno to a value other than EINTR, and return -1. */ +static ptrdiff_t +emacs_nointr_read (int fd, void *buf, ptrdiff_t nbyte, bool interruptible) { - ssize_t rtnval; + ssize_t result; /* There is no need to check against MAX_RW_COUNT, since no caller ever passes a size that large to emacs_read. */ + do + { + if (interruptible) + maybe_quit (); + result = read (fd, buf, nbyte); + } + while (result < 0 && errno == EINTR); - while ((rtnval = read (fildes, buf, nbyte)) == -1 - && (errno == EINTR)) - maybe_quit (); - return (rtnval); + return result; } -/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if interrupted - or if a partial write occurs. If interrupted, process pending - signals if PROCESS SIGNALS. Return the number of bytes written, setting - errno if this is less than NBYTE. */ +/* Read from FD to a buffer BUF with size NBYTE. + If interrupted, retry the read. Return the number of bytes read, + which might be less than NBYTE. On error, set errno to a value + other than EINTR, and return -1. */ +ptrdiff_t +emacs_read (int fd, void *buf, ptrdiff_t nbyte) +{ + return emacs_nointr_read (fd, buf, nbyte, false); +} + +/* Like emacs_read, but also process quits and pending signals. */ +ptrdiff_t +emacs_read_quit (int fd, void *buf, ptrdiff_t nbyte) +{ + return emacs_nointr_read (fd, buf, nbyte, true); +} + +/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if + interrupted or if a partial write occurs. Process any quits + immediately if INTERRUPTIBLE is positive, and process any pending + signals immediately if INTERRUPTIBLE is nonzero. Return the number + of bytes written; if this is less than NBYTE, set errno to a value + other than EINTR. */ static ptrdiff_t -emacs_full_write (int fildes, char const *buf, ptrdiff_t nbyte, - bool process_signals) +emacs_full_write (int fd, char const *buf, ptrdiff_t nbyte, + int interruptible) { ptrdiff_t bytes_written = 0; while (nbyte > 0) { - ssize_t n = write (fildes, buf, min (nbyte, MAX_RW_COUNT)); + ssize_t n = write (fd, buf, min (nbyte, MAX_RW_COUNT)); if (n < 0) { - if (errno == EINTR) + if (errno != EINTR) + break; + + if (interruptible) { - /* I originally used maybe_quit but that might cause files to - be truncated if you hit C-g in the middle of it. --Stef */ - if (process_signals && pending_signals) + if (0 < interruptible) + maybe_quit (); + if (pending_signals) process_pending_signals (); - continue; } - else - break; } - - buf += n; - nbyte -= n; - bytes_written += n; + else + { + buf += n; + nbyte -= n; + bytes_written += n; + } } return bytes_written; } -/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if - interrupted or if a partial write occurs. Return the number of - bytes written, setting errno if this is less than NBYTE. */ +/* Write to FD from a buffer BUF with size NBYTE, retrying if + interrupted or if a partial write occurs. Do not process quits or + pending signals. Return the number of bytes written, setting errno + if this is less than NBYTE. */ +ptrdiff_t +emacs_write (int fd, void const *buf, ptrdiff_t nbyte) +{ + return emacs_full_write (fd, buf, nbyte, 0); +} + +/* Like emacs_write, but also process pending signals. */ ptrdiff_t -emacs_write (int fildes, void const *buf, ptrdiff_t nbyte) +emacs_write_sig (int fd, void const *buf, ptrdiff_t nbyte) { - return emacs_full_write (fildes, buf, nbyte, 0); + return emacs_full_write (fd, buf, nbyte, -1); } -/* Like emacs_write, but also process pending signals if interrupted. */ +/* Like emacs_write, but also process quits and pending signals. */ ptrdiff_t -emacs_write_sig (int fildes, void const *buf, ptrdiff_t nbyte) +emacs_write_quit (int fd, void const *buf, ptrdiff_t nbyte) { - return emacs_full_write (fildes, buf, nbyte, 1); + return emacs_full_write (fd, buf, nbyte, 1); } /* Write a diagnostic to standard error that contains MESSAGE and a string derived from errno. Preserve errno. Do not buffer stderr. - Do not process pending signals if interrupted. */ + Do not process quits or pending signals if interrupted. */ void emacs_perror (char const *message) { @@ -3168,7 +3207,7 @@ system_process_attributes (Lisp_Object pid) else { record_unwind_protect_int (close_file_unwind, fd); - nread = emacs_read (fd, procbuf, sizeof procbuf - 1); + nread = emacs_read_quit (fd, procbuf, sizeof procbuf - 1); } if (0 < nread) { @@ -3289,7 +3328,7 @@ system_process_attributes (Lisp_Object pid) /* Leave room even if every byte needs escaping below. */ readsize = (cmdline_size >> 1) - nread; - nread_incr = emacs_read (fd, cmdline + nread, readsize); + nread_incr = emacs_read_quit (fd, cmdline + nread, readsize); nread += max (0, nread_incr); } while (nread_incr == readsize); @@ -3402,7 +3441,7 @@ system_process_attributes (Lisp_Object pid) else { record_unwind_protect_int (close_file_unwind, fd); - nread = emacs_read (fd, &pinfo, sizeof pinfo); + nread = emacs_read_quit (fd, &pinfo, sizeof pinfo); } if (nread == sizeof pinfo) -- 2.9.3 --------------74A8B1EA14E1B1B1F7934CEB Content-Type: text/x-patch; name="0003-Add-delq-list-arg-check.patch" Content-Disposition: attachment; filename="0003-Add-delq-list-arg-check.patch" Content-Transfer-Encoding: quoted-printable >From f5f93b6c425925a5fe65adc791051150bc29ff53 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 28 Jan 2017 16:45:56 -0800 Subject: [PATCH 3/3] Add delq list arg check MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit * src/fns.c (Fdelq): Check that list is a proper list. This is more compatible with what =E2=80=98delete=E2=80=99 does. --- src/fns.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fns.c b/src/fns.c index dc75d84..4fc1b63 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1561,6 +1561,7 @@ argument. */) else prev =3D tail; } + CHECK_LIST_END (tail, list); return list; } =20 --=20 2.9.3 --------------74A8B1EA14E1B1B1F7934CEB-- From MAILER-DAEMON Sun Jan 29 18:34:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXyzQ-0003bz-8J for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 18:34:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXyzM-0003aZ-ME for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:34:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXyzJ-0008HB-H7 for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:34:28 -0500 Received: from mail-hampton.hostforweb.net ([205.234.186.191]:58486 helo=hampton.hostforweb.net) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXyzJ-00081h-D8 for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:34:25 -0500 Received: from s70.gtokyofl21.vectant.ne.jp ([202.215.75.70]:60000 helo=localhost) by hampton.hostforweb.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from ) id 1cXyyb-001fPl-0J; Sun, 29 Jan 2017 17:33:42 -0600 Date: Mon, 30 Jan 2017 08:33:44 +0900 Message-ID: From: Katsumi Yamaoka To: Lars Ingebrigtsen Cc: emacs-devel@gnu.org Subject: Re: master 97934ff: Attach text files correctly in Message References: <20170125162832.21457.64236@vcs.savannah.gnu.org> <20170125162832.648B4220158@vcs.savannah.gnu.org> Organization: Emacsen advocacy group X-Face: #kKnN,xUnmKia.'[pp`; Omh}odZK)?7wQSl"4o04=EixTF+V[""w~iNbM9ZL+.b*_CxUmFk B#Fu[*?MZZH@IkN:!"\w%I_zt>[$nm7nQosZ<3eu; B:$Q_:p!',P.c0-_Cy[dz4oIpw0ESA^D*1Lw= L&i*6&( User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (i686-pc-cygwin) Cancel-Lock: sha1:BKJSE4mPlg6jGLsFddz8vQzQOHI= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-OutGoing-Spam-Status: No, score=-2.9 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hampton.hostforweb.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jpl.org X-Get-Message-Sender-Via: hampton.hostforweb.net: authenticated_id: yamaoka/from_h X-Authenticated-Sender: hampton.hostforweb.net: yamaoka@jpl.org X-Source: X-Source-Args: X-Source-Dir: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (barebone) [generic] [fuzzy] X-Received-From: 205.234.186.191 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 23:34:30 -0000 On Sun, 29 Jan 2017 17:10:04 +0100, Lars Ingebrigtsen wrote: > Did the further changes I made in this area fix the problem you were > seeing? At least sending =EF=BC=AA=EF=BD=81=EF=BD=90=EF=BD=81=EF=BD=8E=EF=BD=85=EF= =BD=93=EF=BD=85 mails is OK. Thanks for fixing. I'm going to look into the new code for every feature. Regards, From MAILER-DAEMON Sun Jan 29 18:54:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXzIX-0007XC-3E for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 18:54:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXzIT-0007X2-7N for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:54:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXzIQ-0002FU-OZ for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:54:13 -0500 Received: from mail-vk0-x229.google.com ([2607:f8b0:400c:c05::229]:36537) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cXzIQ-0002EV-JW for emacs-devel@gnu.org; Sun, 29 Jan 2017 18:54:10 -0500 Received: by mail-vk0-x229.google.com with SMTP id t8so206711997vke.3 for ; Sun, 29 Jan 2017 15:54:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=FDZ+nUAFrErrGKidwZ/Ydbft+wlB0DmJfJd/vgJ1Yxc=; b=pXnBAS0WB6xUN7Y7PWEpwoi9tGQDHU5OCmM6FLEF+XCp0wAaj+K0F76E9vQ3U4eBLz X2M+43Foy6ywJOLd2mbuM3FHqi/WjBR8brgrX+oXfb8qRPR53whRJHVWevvK6YUg2hBU isMlVC4Yol2swmkYh4k7Wn0GyQpNJqrW1YLePvIGUPptexUsNrH8sw9ijLxwmnvUniKv GUeZosRYcJLdsB9FC9iCUVILfksQ0rfVzp5HvdcYFe9KAi6OsSnKWMFr/WSyl8t8oZjO +7eOWnDluCfEI1qilMt2fOIGaxn/PQcQWNn2J9FwCCB3O+Ntjzokep9UmH2un63WmjQ1 L9Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=FDZ+nUAFrErrGKidwZ/Ydbft+wlB0DmJfJd/vgJ1Yxc=; b=PBeaqXoZkr12QoV7v5tNgB9Stqnr7abCifROwS05+drxNwiABjXuliBsouV6FCSW0T pONLuH0DGp6uvK3ECKs7LnU1ny6HrpA91RK35bAwb/LooDZrymOvKzaQuV1bI8YNdTTX o5+toNZGkcurIr5VGeGUyvF/mD3/OAxBuQk09Y22omPINW737qiYFFQ39c7rCxFKWFQ5 ZbrmZ+/qjqSrVBOuiMrx3chVPrj9lugE5SQ8JhOfiue8JuDCwS66HW6asotPE92Y1XuF iMCeXfyFmxFjSCr/duy/D/JQzefdFKn/h5xaYcRC0XfzBrgF92ggvKu0/T4ehU8ZdrgO ITGQ== X-Gm-Message-State: AIkVDXLoVDN6mPWhyil+noe+bKQGgWfxK7R1WF5lb2sJ3kqHAFcYTEfV32ctxzeW7PD5Go14F9wk5Xz/D3vX6w== X-Received: by 10.31.132.129 with SMTP id g123mr9327162vkd.94.1485734048393; Sun, 29 Jan 2017 15:54:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.159.39.169 with HTTP; Sun, 29 Jan 2017 15:54:07 -0800 (PST) Received: by 10.159.39.169 with HTTP; Sun, 29 Jan 2017 15:54:07 -0800 (PST) In-Reply-To: References: <8175b48e-cbb7-4c55-fc18-12b5f3862d66@lanl.gov> From: Kaushal Modi Date: Sun, 29 Jan 2017 18:54:07 -0500 Message-ID: Subject: Re: Proposal: alias `clear-buffer` to `erase-buffer` To: Davis Herring Cc: Tianxiang Xiong , Emacs developers Content-Type: multipart/alternative; boundary=001a1145a5ba2f723f0547446a1a X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Jan 2017 23:54:15 -0000 --001a1145a5ba2f723f0547446a1a Content-Type: text/plain; charset=UTF-8 On Jan 25, 2017 7:45 PM, "Davis Herring" wrote: - `clear-string` > - `clear-rectangle` > I'm not sure the analogy follows: these two replace a container's contents with some sort of blank, but don't change their size to be 0. +1 erase-buffer makes more sense. --001a1145a5ba2f723f0547446a1a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Jan 25, 2017 7:45 PM, "Davis Herring" <herring@lanl.gov> wrote:
<= blockquote class=3D"quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc = solid;padding-left:1ex">
- `clear-string`
- `clear-rectangle`

I'm not sure the analogy follows: these two replace a container's c= ontents with some sort of blank, but don't change their size to be 0.

= +1 erase-buffer makes more sense.=C2=A0

--001a1145a5ba2f723f0547446a1a-- From MAILER-DAEMON Sun Jan 29 19:34:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cXzvE-000723-1b for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 19:34:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50372) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cXzvB-00071p-FC for emacs-devel@gnu.org; Sun, 29 Jan 2017 19:34:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cXzv8-0002lZ-Da for emacs-devel@gnu.org; Sun, 29 Jan 2017 19:34:13 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:50709 helo=homiemail-a13.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cXzv8-0002l4-7N for emacs-devel@gnu.org; Sun, 29 Jan 2017 19:34:10 -0500 Received: from homiemail-a13.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a13.g.dreamhost.com (Postfix) with ESMTP id CA338334075; Sun, 29 Jan 2017 16:34:07 -0800 (PST) Received: from localhost.linkov.net (m213-100-238-78.cust.tele2.ee [213.100.238.78]) (Authenticated sender: jurta@jurta.org) by homiemail-a13.g.dreamhost.com (Postfix) with ESMTPA id 01A6C33406C; Sun, 29 Jan 2017 16:34:06 -0800 (PST) From: Juri Linkov To: Tino Calancha Cc: Emacs developers Subject: Re: [patch] Run occur command restricted to a region Organization: LINKOV.NET References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> <87inp6nsdf.fsf@gmail.com> <87lgtu4w5c.fsf@mail.linkov.net> Date: Mon, 30 Jan 2017 02:09:08 +0200 In-Reply-To: (Tino Calancha's message of "Sun, 29 Jan 2017 15:00:48 +0900 (JST)") Message-ID: <878tpt1m4b.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 69.163.253.7 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 00:34:14 -0000 >>> +Optional arg REGION, if non-nil, mean restrict search to the >>> +specified region. Otherwise search the entire buffer. >>> +When REGION is non-nil, it must be a cons (START . END). >> >> When someone decides to add support for rectangular regions in occur l= ater, >> your current implementation will make this problematic since it change= s >> the format ((START . END)) to (START . END), that makes difficult to s= upport >> ((START1 . END1) (START2 . END2) ...) later. >> >> Let's stick to the same format in all uses of the new =E2=80=98REGION=E2= =80=99 arg, and >> currently in occur support only the degenerate case of ((START . END)) >> for non-rectangular regions. > > Thanks. I was also a bit worry with that detail. > OK, i keep the general format ((START . END)). > Let me know if the following patch is OK to be pushed: Looks good to me, but you have to ask Eli for the permission to push. From MAILER-DAEMON Sun Jan 29 20:07:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY0RV-00059f-4k for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 20:07:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54666) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY0RT-00059X-8f for emacs-devel@gnu.org; Sun, 29 Jan 2017 20:07:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY0RQ-00088m-4u for emacs-devel@gnu.org; Sun, 29 Jan 2017 20:07:35 -0500 Received: from [195.159.176.226] (port=35429 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY0RP-00087g-UI for emacs-devel@gnu.org; Sun, 29 Jan 2017 20:07:32 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cY0RG-0001md-H5 for emacs-devel@gnu.org; Mon, 30 Jan 2017 02:07:22 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Sync up the org in emacs master to org maint branch? Date: Sun, 29 Jan 2017 20:07:12 -0500 Lines: 9 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:1H8qHEnFJ5lEifDDH4liJyXKA1c= Cc: emacs-orgmode@gnu.org X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 01:07:36 -0000 > Please comment with your recommendations for the first, and supporting > changes for the second, if anyone has ideas. Phillip, how is your > work on these coming along? BTW, the easiest packages with which to start experimenting are those which are already in elpa.git. Stefan From MAILER-DAEMON Sun Jan 29 21:50:53 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY23Q-0006eh-Vq for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 21:50:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY23N-0006d3-VX for emacs-devel@gnu.org; Sun, 29 Jan 2017 21:50:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY23M-00054f-Tw for emacs-devel@gnu.org; Sun, 29 Jan 2017 21:50:50 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52938) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY23J-00053E-Hs; Sun, 29 Jan 2017 21:50:45 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cY23I-0005BH-PE; Sun, 29 Jan 2017 21:50:44 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: John Wiegley CC: emacs-devel@gnu.org In-reply-to: (message from John Wiegley on Sun, 29 Jan 2017 11:00:49 -0800) Subject: Re: Docker Hub requires nonfree software to log in Reply-to: rms@gnu.org References: Message-Id: Date: Sun, 29 Jan 2017 21:50:44 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 02:50:50 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > We could do that, it will just require an additional setup step. The advantage > to DockerHub is that it's the default place that docker will look if you try > to run an image that doesn't exist yet on your machine. If we provide a custom > download location, people will need to either configure Docker to look there > (which is needed for upgrades to happen seamlessly, should they follow the > "latest" tag), or download and import the image manually. That's not the end of the world. So that's what we should to do. Given our example, maybe people will convince Docker Hub to fix their problem so we can upload our image there. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Sun Jan 29 22:57:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY36M-0002b2-7X for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 22:57:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46787) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY36J-0002Yz-QY for emacs-devel@gnu.org; Sun, 29 Jan 2017 22:57:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY36F-000282-OY for emacs-devel@gnu.org; Sun, 29 Jan 2017 22:57:55 -0500 Received: from [195.159.176.226] (port=34444 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY36F-00026I-ID for emacs-devel@gnu.org; Sun, 29 Jan 2017 22:57:51 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cY367-0005Op-Pi for emacs-devel@gnu.org; Mon, 30 Jan 2017 04:57:43 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Leo Liu Subject: Re: Change in files.el Date: Mon, 30 Jan 2017 11:57:42 +0800 Lines: 11 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (macOS 10.12.3) Face: iVBORw0KGgoAAAANSUhEUgAAACkAAAApAQAAAACAGz1bAAABKElEQVQYlWNg3NIt5FDPUPt7 4+X79Qyucz5/ugik+L2PBgKpyphaIK921q23QDnG0NBQoMr/vaWl9f8ZLL78uPv5PwN7RETfzXoG jhmFz27XM0RXmpuY/WfY+fv0Mc56BvFybfXA/wwL5t/wF61n2PU59axXPcOVzbmSW/8zrNt1benC /ww70hqUU/4zKCtrT9jwn8FhwynbufUMendE2aLqGRpdX9al1zM8eh17lKeeQcTMrdD5P8P3j/YT Q/8zXHSb7p1Qz/C4OM2JuZ7hgtI7K6AjqsMnf8j4z8C6xG1tw3+GqpqvsVn/GTzmpD9j/8/wP/oZ S/l/Bka+QO/g/wy15ueeFQL9N1O8mPU/g+umV3t1gdT0/1bTgHLqYVeXAlWKpMWt+w8Az82C9nHf X0cAAAAASUVORK5CYII= Cancel-Lock: sha1:Ux+xVhGKsojV//IfzOwnksRJ2FM= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 03:57:56 -0000 On 2017-01-29 10:59 -0800, John Wiegley wrote: > I have to say that Eli makes a compelling point here. Even if we mandate it > today, we incur the job of keeping a constant look out for people violating > this rule forever more, since there is no way to implicitly require it. This is not something new today. The efforts have been going on for a while. I think it is good practice as well. For a variable named with -predicate or -function it would be a surprise if it were not a function. Leo From MAILER-DAEMON Sun Jan 29 23:27:51 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY3ZH-0007fs-Pa for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 23:27:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49167) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY3ZG-0007fk-0h for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:27:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY3ZC-0002ft-SG for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:27:49 -0500 Received: from mail-pf0-x229.google.com ([2607:f8b0:400e:c00::229]:33937) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY3ZC-0002fO-M7 for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:27:46 -0500 Received: by mail-pf0-x229.google.com with SMTP id e4so86953829pfg.1 for ; Sun, 29 Jan 2017 20:27:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=nX3Lpp56j4IoX/ZC0IkQGAmMmpl1HBPrM0Vgl7lJZco=; b=rSlOZth7CRWrN41R/IPMQqbN4WaiiU5Mzwx2mpYq2FBsnxvyo288k0LTxBJVMxrnQm 8srlO0K3cGSfxJEV6BmogO2VyWDV8tNAftfMOflciXmRAJaP4nfcLEtkPHJJ05Ab7vBN ATUES/efEilr2qHU1bS7ALHZ3TlBjE4z78WYMJ+DV87EGX6l+rjO/lAmYqifw8LD3dO1 8tscGq7LfC1mzB+9ihrUBvErUooW1w8ljLnNGULn8y2d6AibvlQ7ac+kcKAVvsn5dSdz TErYF8KsO5Tb1HGyrJZwQIKSEXDJPk0YsEAQpCmbpT2Ia0xQ2Mko4I6/jhxn0m7mGeQQ U2Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=nX3Lpp56j4IoX/ZC0IkQGAmMmpl1HBPrM0Vgl7lJZco=; b=mux3K6juJeEFySKN00mR+tD8KV6fwCwWmPk1G1zRa1t5w115c3kNgGOeJE8miIF1Dl +OzTHpdljDdUmz9j7BTmVWMz6CCJ2f9Pxm/hZ3jxsgjzJqpu3P+nw3hgDgHqc2en6djX TEzCtG2N3xw2S/aMPoAzyqvDrZXZcCkjmLStZ1pzjXohM3/JIijqeiGiNyutvrB8fPFL R7+vNbge4qAsAO+/O398J1zoGQplgynkaFzpVcx1qO57v4i+Uzm5aGSziANnWgU5ueRR VFK62Ikx6xXTId0ddhF8Yv/zAffwYTIHgZMqzUFtl8xD0ZniyL8drfYVA4plmJBACHFD CNfQ== X-Gm-Message-State: AIkVDXIOsz0G8Go5GMu0sfbPH35BVOkU0H21z5nN4ZZ8Vpk3MGT1FL/FoB8P5Ks30xw+Aw== X-Received: by 10.99.55.91 with SMTP id g27mr22188897pgn.65.1485750465629; Sun, 29 Jan 2017 20:27:45 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id 66sm27806797pfx.29.2017.01.29.20.27.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jan 2017 20:27:44 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Mon, 30 Jan 2017 13:27:41 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Juri Linkov cc: Tino Calancha , Emacs developers Subject: Re: [patch] Run occur command restricted to a region In-Reply-To: <878tpt1m4b.fsf@mail.linkov.net> Message-ID: References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> <87inp6nsdf.fsf@gmail.com> <87lgtu4w5c.fsf@mail.linkov.net> <878tpt1m4b.fsf@mail.linkov.net> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-1068127251-1485750464=:1861" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 04:27:50 -0000 --8323329-1068127251-1485750464=:1861 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8BIT On Mon, 30 Jan 2017, Juri Linkov wrote: >>>> +Optional arg REGION, if non-nil, mean restrict search to the >>>> +specified region. Otherwise search the entire buffer. >>>> +When REGION is non-nil, it must be a cons (START . END). >>> >>> When someone decides to add support for rectangular regions in occur later, >>> your current implementation will make this problematic since it changes >>> the format ((START . END)) to (START . END), that makes difficult to support >>> ((START1 . END1) (START2 . END2) ...) later. >>> >>> Let's stick to the same format in all uses of the new ‘REGION’ arg, and >>> currently in occur support only the degenerate case of ((START . END)) >>> for non-rectangular regions. >> >> Thanks. I was also a bit worry with that detail. >> OK, i keep the general format ((START . END)). >> Let me know if the following patch is OK to be pushed: > > Looks good to me, but you have to ask Eli for the permission to push. OK, I will ask. Thank you very much for your help implementing this. --8323329-1068127251-1485750464=:1861-- From MAILER-DAEMON Sun Jan 29 23:48:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY3tC-0005dg-D3 for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 23:48:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY3t9-0005dZ-Gj for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:48:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY3t4-0003r3-RA for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:48:23 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:34861) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY3t4-0003qF-HE; Sun, 29 Jan 2017 23:48:18 -0500 Received: by mail-pf0-x241.google.com with SMTP id f144so22485481pfa.2; Sun, 29 Jan 2017 20:48:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=rMIaM0FKv0HwVRB8Z59e3jqjTNk58zUSfDZVEhnYmvE=; b=hWMBQIFyKCniBisbOyg10us1W0YbOqgEZXZCW7Xss3VcnarFNVog+K+gmrxXkICMx9 yT8R4MfcVvzcIYlc6xVurYmYIZLIl0VxH7PWdhEgnTRUpHTFgXEHeGylw1+X7/a8/yMP XiJYB8HvttLpvAcaIbBGiVN6PuCMRz+lKMsDZJwFy+QvIExd24LLkZAStjVtLr18l2I5 tTgBLGBxthGmY964EjrUdX5Mqojp8x5+cscOqNj/f1hq8g2ZGJyjEl+xIk2cn+CG+Krt bYFLSqOm+/tkDxBYSCmK2j59UjNVgiaWe8yjJ2j0wOE09Ycn7rlLZbTeGskxlcwqKYMy JLyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=rMIaM0FKv0HwVRB8Z59e3jqjTNk58zUSfDZVEhnYmvE=; b=m/VVd2qZ9wlz2kDGKcuLimTdRv0r8GY/xA1sUiNqYO2VywnG3xNRIMofql9tqn0/+N 2FkcibPSokSEUJ3nNljXIx2bnMhbYmokoq27rQOIEMaEAxpc/wGUdoJbY5f/2oVeAvhC wm8AMj+y0WxGsixYDyodCWKxRfeQiE5f+3nzmWzG5A7Lj+UyPbjCPR/FpQOisY6dc/xz wTcaeWlepwLtrwEj9tEk6ME5d3B2dl3VtkgOSde1lq2jdarSEQUhTz4jGsfJrHSMfMFT sbl2QL74jPp8xTL14KjMslsnoc5vIfp92raaUNd2uQYhNfF5al0+pK5XrPaa2n/0ZJLn ssTw== X-Gm-Message-State: AIkVDXIacpEB7KrxvJZrdEIo6cvlQFKOWQ7QoMwS1EMWCM6niybYlSdk9ToBvayopCyEgw== X-Received: by 10.99.174.71 with SMTP id e7mr22191286pgp.3.1485751697191; Sun, 29 Jan 2017 20:48:17 -0800 (PST) Received: from calancha-pc (33.94.100.220.dy.bbexcite.jp. [220.100.94.33]) by smtp.gmail.com with ESMTPSA id n79sm27955487pfj.31.2017.01.29.20.48.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 29 Jan 2017 20:48:16 -0800 (PST) From: Tino Calancha To: John Wiegley , Eli Zaretskii Cc: Juri Linkov , tino.calancha@gmail.com, Emacs developers Subject: Re: [patch] Run occur command restricted to a region References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> <87inp6nsdf.fsf@gmail.com> <87lgtu4w5c.fsf@mail.linkov.net> <878tpt1m4b.fsf@mail.linkov.net> Date: Mon, 30 Jan 2017 13:48:02 +0900 In-Reply-To: <878tpt1m4b.fsf@mail.linkov.net> (Juri Linkov's message of "Mon, 30 Jan 2017 02:09:08 +0200") Message-ID: <874m0hrw59.fsf@calancha-pc> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 04:48:26 -0000 Hi, Juri and me have being working on extend `occur' so that it can run restricted to the region. We propose the patch below. Please let us know if it's OK for you to push this patch into the master branch. Best regards, Tino Juri Linkov writes: >>> Let's stick to the same format in all uses of the new =E2=80=98REGION= =E2=80=99 arg, and >>> currently in occur support only the degenerate case of ((START . END)) >>> for non-rectangular regions. >> >> OK, i keep the general format ((START . END)). >> Let me know if the following patch is OK to be pushed: > > Looks good to me, but you have to ask Eli for the permission to push. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; >From 40ac0b30445f9581a5b4d6988d31089468a6a969 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 29 Jan 2017 14:46:10 +0900 Subject: [PATCH 1/2] Allow occur command to operate on the region See discussion in: https://lists.gnu.org/archive/html/emacs-devel/2016-12/msg01084.html * lisp/replace.el (occur--region-start, occur--region-end) (occur--matches-threshold): New variables. (occur-engine): Use them. (occur): Idem. Add optional arg REGION; if non-nil occur applies in that region. * doc/lispintro/emacs-lisp-intro.texi (Keybindings): Update manual * doc/emacs/search.texi (Other Repeating Search: Idem. ; etc/NEWS: Add entry to announce the change. --- doc/emacs/search.texi | 3 +++ doc/lispintro/emacs-lisp-intro.texi | 8 ++++--- etc/NEWS | 2 ++ lisp/replace.el | 47 +++++++++++++++++++++++++++++++-= ----- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b728258973..28e25bec43 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1672,6 +1672,9 @@ Other Repeating Search no upper-case letters and @code{case-fold-search} is non-@code{nil}. Aside from @code{occur} and its variants, all operate on the text from point to the end of the buffer, or on the region if it is active. +The command @code{occur} will operate on the region if +it is active as well; when the region is not active, @code{occur} +operates in the whole buffer. @findex list-matching-lines @findex occur diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp= -intro.texi index 830c072cf5..36d767737d 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -17151,9 +17151,11 @@ Keybindings @findex occur The @code{occur} command shows all the lines in the current buffer -that contain a match for a regular expression. Matching lines are -shown in a buffer called @file{*Occur*}. That buffer serves as a menu -to jump to occurrences. +that contain a match for a regular expression. When the region is +active, @code{occur} restricts matches to such region. Otherwise it +uses the entire buffer. +Matching lines are shown in a buffer called @file{*Occur*}. +That buffer serves as a menu to jump to occurrences. @findex global-unset-key @cindex Unbinding key diff --git a/etc/NEWS b/etc/NEWS index 12ff21f39a..a74cdb71df 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -310,6 +310,8 @@ substituted by a home directory by writing it as "/foo:= /:/~/file". * Editing Changes in Emacs 26.1 + +** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. 'undo', undo the last replacement; bound to 'u'. diff --git a/lisp/replace.el b/lisp/replace.el index ff91734445..0a8e480485 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1360,7 +1360,12 @@ occur-rename-buffer "*") (or unique-p (not interactive-p))))) -(defun occur (regexp &optional nlines) +;; Region limits when `occur' applies on a region. +(defvar occur--region-start nil) +(defvar occur--region-end nil) +(defvar occur--matches-threshold nil) + +(defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. If a match spreads across multiple lines, all those lines are shown. @@ -1369,6 +1374,11 @@ occur NLINES defaults to `list-matching-lines-default-context-lines'. Interactively it is the prefix arg. +Optional arg REGION, if non-nil, mean restrict search to the +specified region. Otherwise search the entire buffer. +REGION must be a list of (START . END) positions as returned by +`region-bounds'. + The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. @@ -1386,8 +1396,24 @@ occur program. When there is no parenthesized subexpressions in REGEXP the entire match is collected. In any case the searched buffer is not modified." - (interactive (occur-read-primary-args)) - (occur-1 regexp nlines (list (current-buffer)))) + (interactive + (nconc (occur-read-primary-args) + (and (use-region-p) (list (region-bounds))))) + (let* ((start (and (caar region) (max (caar region) (point-min)))) + (end (and (cdar region) (min (cdar region) (point-max)))) + (in-region-p (or start end))) + (when in-region-p + (or start (setq start (point-min))) + (or end (setq end (point-max)))) + (let ((occur--region-start start) + (occur--region-end end) + (occur--matches-threshold + (and in-region-p + (line-number-at-pos (min start end))))) + (save-excursion ; If no matches `occur-1' doesn't restore the point. + (and in-region-p (narrow-to-region start end)) + (occur-1 regexp nlines (list (current-buffer))) + (and in-region-p (widen)))))) (defvar ido-ignore-item-temp-list) @@ -1545,13 +1571,15 @@ occur-engine (let ((global-lines 0) ;; total count of matching lines (global-matches 0) ;; total count of matches (coding nil) - (case-fold-search case-fold)) + (case-fold-search case-fold) + (in-region-p (and occur--region-start occur--region-end))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) (let ((lines 0) ;; count of matching lines (matches 0) ;; count of matches - (curr-line 1) ;; line count + (curr-line ;; line count + (or occur--matches-threshold 1)) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) @@ -1684,7 +1712,7 @@ occur-engine (let ((beg (point)) end) (insert (propertize - (format "%d match%s%s%s in buffer: %s\n" + (format "%d match%s%s%s in buffer: %s%s\n" matches (if (=3D matches 1) "" "es") ;; Don't display the same number of lines ;; and matches in case of 1 match per line. @@ -1694,7 +1722,12 @@ occur-engine ;; Don't display regexp for multi-buffer. (if (> (length buffers) 1) "" (occur-regexp-descr regexp)) - (buffer-name buf)) + (buffer-name buf) + (if in-region-p + (format " within region: %d-%d" + occur--region-start + occur--region-end) + "")) 'read-only t)) (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) --=20 2.11.0 >From a1ac23d9b5384524591fa9f6586a2665175caf6f Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sun, 29 Jan 2017 14:46:27 +0900 Subject: [PATCH 2/2] Show current line highlighted in *Occur* buffer * lisp/replace.el (list-matching-lines-current-line-face) (list-matching-lines-jump-to-current-line): New user options. (occur--orig-line, occur--orig-line-str): New variables. (occur, occur-engine): Use them. (occur--final-pos): New variable. (occur-1): Use it. (occur-engine): Idem. Show the current line with 'list-matching-lines-current-line-face'. Set point on the first matching line after the current one. * etc/NEWS: Add entry for the new option. --- etc/NEWS | 4 ++++ lisp/replace.el | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++= +---- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index a74cdb71df..90b53aca16 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -311,6 +311,10 @@ substituted by a home directory by writing it as "/foo= :/:/~/file". * Editing Changes in Emacs 26.1 +** Two new user options 'list-matching-lines-jump-to-current-line' and +'list-matching-lines-current-line-face' to show highlighted the current li= ne +in the *Occur* buffer. + ** The 'occur' command can now operate on the region. +++ ** New bindings for 'query-replace-map'. diff --git a/lisp/replace.el b/lisp/replace.el index 0a8e480485..8e51792f5e 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1304,6 +1304,19 @@ list-matching-lines-buffer-name-face :type 'face :group 'matching) +(defcustom list-matching-lines-current-line-face 'lazy-highlight + "Face used by \\[list-matching-lines] to highlight the current line." + :type 'face + :group 'matching + :version "26.1") + +(defcustom list-matching-lines-jump-to-current-line nil + "If non-nil, \\[list-matching-lines] shows the current line highlighted. +Set the point right after such line when there are matches after it." +:type 'boolean +:group 'matching +:version "26.1") + (defcustom list-matching-lines-prefix-face 'shadow "Face used by \\[list-matching-lines] to show the prefix column. If the face doesn't differ from the default face, @@ -1364,6 +1377,9 @@ occur-rename-buffer (defvar occur--region-start nil) (defvar occur--region-end nil) (defvar occur--matches-threshold nil) +(defvar occur--orig-line nil) +(defvar occur--orig-line-str nil) +(defvar occur--final-pos nil) (defun occur (regexp &optional nlines region) "Show all lines in the current buffer containing a match for REGEXP. @@ -1382,6 +1398,9 @@ occur The lines are shown in a buffer named `*Occur*'. It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. +If `list-matching-lines-jump-to-current-line' is non-nil, then show +highlighted the current line and, if there are matches after it, then +set point in the first of those matches. If REGEXP contains upper case characters (excluding those preceded by `\\= ') and `search-upper-case' is non-nil, the matching is case-sensitive. @@ -1409,7 +1428,13 @@ occur (occur--region-end end) (occur--matches-threshold (and in-region-p - (line-number-at-pos (min start end))))) + (line-number-at-pos (min start end)))) + (occur--orig-line + (line-number-at-pos (point))) + (occur--orig-line-str + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) (save-excursion ; If no matches `occur-1' doesn't restore the point. (and in-region-p (narrow-to-region start end)) (occur-1 regexp nlines (list (current-buffer))) @@ -1508,7 +1533,8 @@ occur-1 (occur-mode)) (let ((inhibit-read-only t) ;; Don't generate undo entries for creation of the initial contents. - (buffer-undo-list t)) + (buffer-undo-list t) + (occur--final-pos nil)) (erase-buffer) (let ((count (if (stringp nlines) @@ -1560,6 +1586,10 @@ occur-1 (if (=3D count 0) (kill-buffer occur-buf) (display-buffer occur-buf) + (when occur--final-pos + (set-window-point + (get-buffer-window occur-buf 'all-frames) + occur--final-pos)) (setq next-error-last-buffer occur-buf) (setq buffer-read-only t) (set-buffer-modified-p nil) @@ -1572,7 +1602,8 @@ occur-engine (global-matches 0) ;; total count of matches (coding nil) (case-fold-search case-fold) - (in-region-p (and occur--region-start occur--region-end))) + (in-region-p (and occur--region-start occur--region-end)) + (multi-occur-p (cdr buffers))) ;; Map over all the buffers (dolist (buf buffers) (when (buffer-live-p buf) @@ -1580,12 +1611,16 @@ occur-engine (matches 0) ;; count of matches (curr-line ;; line count (or occur--matches-threshold 1)) + (orig-line occur--orig-line) + (orig-line-str occur--orig-line-str) + (orig-line-shown-p) (prev-line nil) ;; line number of prev match endpt (prev-after-lines nil) ;; context lines of prev match (matchbeg 0) (origpt nil) (begpt nil) (endpt nil) + (finalpt nil) (marker nil) (curstring "") (ret nil) @@ -1686,6 +1721,18 @@ occur-engine (nth 0 ret)))) ;; Actually insert the match display data (with-current-buffer out-buf + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p) + (>=3D curr-line orig-line)) + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")) + (setq orig-line-shown-p t finalpt (point))) (insert data))) (goto-char endpt)) (if endpt @@ -1699,6 +1746,18 @@ occur-engine (forward-line 1)) (goto-char (point-max))) (setq prev-line (1- curr-line))) + ;; Insert original line if haven't done yet. + (when (and list-matching-lines-jump-to-current-line + (not multi-occur-p) + (not orig-line-shown-p)) + (with-current-buffer out-buf + (insert + (concat + (propertize + (format "%7d:%s" orig-line orig-line-str) + 'face list-matching-lines-current-line-face + 'mouse-face 'mode-line-highlight + 'help-echo "Current line") "\n")))) ;; Flush remaining context after-lines. (when prev-after-lines (with-current-buffer out-buf @@ -1732,8 +1791,11 @@ occur-engine (setq end (point)) (add-text-properties beg end `(occur-title ,buf)) (when title-face - (add-face-text-property beg end title-face))) - (goto-char (point-min))))))) + (add-face-text-property beg end title-face)) + (goto-char (if finalpt + (setq occur--final-pos + (cl-incf finalpt (- end beg))) + (point-min))))))))) ;; Display total match count and regexp for multi-buffer. (when (and (not (zerop global-lines)) (> (length buffers) 1)) (goto-char (point-min)) --=20 2.11.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; In GNU Emacs 26.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.6) of 2017-01-29 Repository revision: d12e1ddf42cddcac56f98c5b3a65f5219d2d5968 From MAILER-DAEMON Sun Jan 29 23:53:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY3yC-0006yW-Iz for mharc-emacs-devel@gnu.org; Sun, 29 Jan 2017 23:53:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY3y9-0006yP-Es for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:53:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY3y8-0000U6-4W for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:53:33 -0500 Received: from mail-qt0-x22c.google.com ([2607:f8b0:400d:c0d::22c]:34675) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY3y7-0000SS-Tz for emacs-devel@gnu.org; Sun, 29 Jan 2017 23:53:32 -0500 Received: by mail-qt0-x22c.google.com with SMTP id w20so125497047qtb.1 for ; Sun, 29 Jan 2017 20:53:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=JiY6urF6Od8B36d6iuWOr0WsnQGPA0n3KahXbhhlB0M=; b=dO1q3HNs3Rtha/Obzt7t/CLrhl/n1rnb4052N9Rl2pUTd2Re18iFxzlEfDXz1hI8KY 36+2JCmpVRE2FYbxc0DBcilTF2dBctvRTesug+m71Dy/BiAusZ/J4egu6wN15q63DD3P 3vgO3PA9jh532XmLd/2S+L2Yjr6QvpF38cgnjgkvk25WZgXfrIzafpqs1BGl5i/8H1lB QgXk+oNTX3HhKUVeFYfnA06LNq2zAX45i7J+BewD4LG72C0Szx6hvrkrtv7SyRkaNxm9 jiul4Jysq1kyo5KLWxckkK8P5cDpYDNzqiL+oqKVVm32ZhyeiRgPIdn8H2vHqk0pwPB/ vQAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=JiY6urF6Od8B36d6iuWOr0WsnQGPA0n3KahXbhhlB0M=; b=PZ1BQ/N0QQnHKCXjI17sKQ3Svpq1Qzw1ht2QSP+/5sgILtFWtwCOzrq0xaZbjVWfg8 G9jm0rHqvx6CXVykN4QcukTm1+A2b8TKswyd+DoFo7nS8p3qreE1xH0/AtJ3nMq7bWXd uz+9YKQvApP+/7OCj2MZoKmawQUGPVGyOstDlvWlaOaKTge0D3E/OrG5Ba6Rv9TzP0Be JWMugxmQkU0Ta+a57Gz36mLehdVTDaJXnpIa8lJABFykzmRKsOibpmkINBY26+01HXOj mI2u+gYtrySC+HFBRD8HVp8lzXC4deSSXehV4GvMjAPgo9xAlBHZNHmTxRJhSLdPqL4r Elcg== X-Gm-Message-State: AIkVDXL+f/qAjQV635DXKoPqYreOiJHHg9XWWO0fl61sFJ8OBxqwO/NAAZehGmI6Xt8J3CTHpx3kxJ3BTfl//w== X-Received: by 10.200.43.115 with SMTP id 48mr19767714qtv.157.1485752009709; Sun, 29 Jan 2017 20:53:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.97.33 with HTTP; Sun, 29 Jan 2017 20:53:29 -0800 (PST) In-Reply-To: References: From: ben rudgers Date: Sun, 29 Jan 2017 22:53:29 -0600 Message-ID: Subject: Re: Suggested additional example to Emacs Lisp Manual: Variables: Let To: ben rudgers , emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=001a113f4434c35f7b054748985b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 04:53:34 -0000 --001a113f4434c35f7b054748985b Content-Type: text/plain; charset=UTF-8 Thanks John, I don't disagree about the utility of cl-flet or cl-labels. Because 'cl is documented in an independent document it is unclear to me how that example would fit into the current editorial structure of the *GNU Emacs Lisp Reference Manual*. Obviously if 'cl-flet and 'cl-labels were merged into GNU Emacs Lisp, the example would work to illustrate a method for writing a locally defined functions. With the added benefit of avoiding the more cumbersome 'funcall structure. Ben On Sun, Jan 29, 2017 at 1:20 PM, John Wiegley wrote: > >>>>> "br" == ben rudgers writes: > > br> The manual does not provide an example showing a locally scoped > function. > br> Though the behavior can potentially be inferred from the documentation > of > br> functions, an example showing the relationship between =let= and > =funcall= > br> might be of practical help for someone who has not made a deep dive > into > br> the manual. > > I think it would be better to encourage the use of `cl-flet' or > `cl-labels', > as though macros are specifically intended for binding local function > definitions, and will automatically handle whether the function should be a > `lambda' or a `closure', depending on the setting of `lexical-binding'. > > Your approach may have merit in terms of pedagogy, but I'd prefer to nudge > users toward more idiomatic usage from the beginning. > > @example > (require 'cl-macs) > (defun foo (x) > (cl-flet ((bar (y) (+ x y))) > (bar 3))) > (foo 4) > @result{} 7 > @end example > > -- > John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F > http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 > --001a113f4434c35f7b054748985b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Thanks John,

I don't disagree about= the utility of cl-flet or cl-labels.

Because 'cl is= documented in an independent document it is unclear to me how that example= would fit into the current editorial structure of the *GNU Emacs Lisp Refe= rence Manual*.

Obviously if 'cl-flet and '= cl-labels were merged into GNU Emacs Lisp, the example would work to illust= rate a method for writing a locally defined functions. With the added benef= it of avoiding the more cumbersome 'funcall structure.

Ben


=C2=A0

On Sun, Jan 29,= 2017 at 1:20 PM, John Wiegley <jwiegley@gmail.com> wrote:<= br>
>>>>> "br" =3D= =3D ben rudgers <ben.rudgers@gm= ail.com> writes:

br> The manual does not provide an example showing a locally scoped func= tion.
br> Though the behavior can potentially be inferred from the documentati= on of
br> functions, an example showing the relationship between =3Dlet=3D and= =3Dfuncall=3D
br> might be of practical help for someone who has not made a deep dive = into
br> the manual.

I think it would be better to encourage the use of `cl-flet' or `cl-lab= els',
as though macros are specifically intended for binding local function
definitions, and will automatically handle whether the function should be a=
`lambda' or a `closure', depending on the setting of `lexical-bindi= ng'.

Your approach may have merit in terms of pedagogy, but I'd prefer to nu= dge
users toward more idiomatic usage from the beginning.

@example
(require 'cl-macs)
(defun foo (x)
=C2=A0 (cl-flet ((bar (y) (+ x y)))
=C2=A0 =C2=A0 (bar 3)))
(foo 4)
=C2=A0 =C2=A0 =C2=A0@result{} 7
@end example

--
John Wiegley=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = GPG fingerprint =3D 4710 CF98 AF9B 327B B80F
htt= p://newartisans.com=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 60E1 46C4 BD1A 7AC1 4BA2

--001a113f4434c35f7b054748985b-- From MAILER-DAEMON Mon Jan 30 00:13:41 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY4Hd-00024K-Ob for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 00:13:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY4Hb-00024E-It for emacs-devel@gnu.org; Mon, 30 Jan 2017 00:13:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY4HY-0002u2-F7 for emacs-devel@gnu.org; Mon, 30 Jan 2017 00:13:39 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33700) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY4HY-0002t1-AH for emacs-devel@gnu.org; Mon, 30 Jan 2017 00:13:36 -0500 Received: by mail-qt0-x243.google.com with SMTP id n13so54351367qtc.0 for ; Sun, 29 Jan 2017 21:13:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=j1qicg4ktQ7glQC0UQzvB8gl3hkSuVsvKdKtuIHWSKc=; b=YVDYPnkQFp2kg7uGYCrXYYCuUYLPLwWCnGSbVk3RyNQ+xZuu837fwlQVy57P5GzOg/ 1ea5BHLQvy9alwb7EGQwa5eXqLZC4rh/e0XCa/MacQProISJ9eHtu64mvDOCb3/p7eBc iWZRDStwTJDBoIoBfNd+4nNSKVMvlbwKusFlyr8BFqfnJTTdZiwH2ec+VJafexUh7Kb/ DkZewtZ8Ly8uPEqxdIbCDDADC5V/2KCGsIeNRDhaMVXlyyfnoH8G6PrgoBAMd6V+hi6R P4zVQ62NuTaXUTxumz5YoQKDRFIV3+p0oWyCZ25lEu+HXOZGo1HoKG+iBkLudQE2wkPR FqTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=j1qicg4ktQ7glQC0UQzvB8gl3hkSuVsvKdKtuIHWSKc=; b=NQ4qLIIfsYEfR5GaD7ukuaRb0KWpNziRUoTt0YLyuKntMVsh8wgn3iVc9XmDMBfqxB EHywawuBBiIeON39S9Tr/mbx8yBZgh+foa15ishEZlyRVqEK6uYdG62AqeH2ou44/PZx K0FFL1MIuzqHoYKkWijfEzJpF3HmbeQYsMm5c3vpygngFQ/kNods81EmQzo7/CRkmuXD aZey4B7bl+iRINnLku9DeNk9la1PIasTpl0r3ZHp0JMI9/m84NMnFp1y6fsk4FQb8KNo MIe35bxNHdERir0CwKPDn3dXhpYxALjIQjI30CcZHkhnvtgnh1i8R+BgBUk+vX0zdZ9A BHlw== X-Gm-Message-State: AIkVDXLo0Je037qoLcnuR+SN1uI99O3QAO7yIn6FcepZjc0mAfHpu7QIDlJDxeY40+P+gA== X-Received: by 10.237.59.28 with SMTP id p28mr18047212qte.152.1485753215669; Sun, 29 Jan 2017 21:13:35 -0800 (PST) Received: from [18.189.98.234] (dhcp-18-189-98-234.dyn.MIT.EDU. [18.189.98.234]) by smtp.gmail.com with ESMTPSA id x62sm11221934qkg.31.2017.01.29.21.13.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jan 2017 21:13:35 -0800 (PST) To: Emacs developers From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Subject: Converting compositions to strings Message-ID: Date: Mon, 30 Jan 2017 00:13:34 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 05:13:40 -0000 Hi emacs-devel, Many compositions can be represented as strings: for example, prettify-symbols-mode composes "lambda" into "λ", and nameless prettifies the name of the current package as ":" or "::". How can I reconstruct these strings from the value of the 'composition' text property? Small experiments suggest that for single-character compositions the property has the shape (_ _ [?λ]) and for multi-character compositions (_ _ [?x _ ?y _ …]), but I also found instances of the shape ((_ ?x _ _)), and ((_ . ?x)) (I think). Is there a recipe that I can use to construct a string representation of a composition? (I realize that many compositions can't adequately be represented as plain strings; I'm only interested in those that can). Thanks! Clément. From MAILER-DAEMON Mon Jan 30 02:47:47 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cY6gl-0007IP-E4 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 02:47:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44652) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cY6gj-0007H5-FW for emacs-devel@gnu.org; Mon, 30 Jan 2017 02:47:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cY6gi-0004Dd-Hr for emacs-devel@gnu.org; Mon, 30 Jan 2017 02:47:45 -0500 Received: from randomsample.de ([5.45.97.173]:38224) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cY6gc-0003yb-JY; Mon, 30 Jan 2017 02:47:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=JlyP9/7zgnEE3rlZWIJsKAVQJG1MCNUX9LetWcmtBsc=; b=Mf16LGIS75E6HngF3P1aR9Rm1qoympDRwXxFGSS1b2CAEnwZe78RD8zUhuC5EUjd6rhmgtpweTm30UTiL56Sw/PeSeLH2VVKlpzBLLKMQt8y/mty4AUfeuhivkC3FBJo; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cY6ga-000449-Jm; Mon, 30 Jan 2017 08:47:36 +0100 From: David Engster To: Kaushal Modi Cc: Emacs developers , emacs-org list , Bastien Guerry , Phillip Lord Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (John Wiegley's message of "Sun, 29 Jan 2017 11:15:40 -0800") References: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Mon, 30 Jan 2017 08:47:31 +0100 Message-ID: <87k29d7zvw.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 07:47:46 -0000 John Wiegley writes: >>>>>> "KM" == Kaushal Modi writes: > > KM> If we are able the release the new packaging method in emacs 26.x, then we > KM> can remove org from emacs master completely, but if not, then at least as > KM> backup we have a newer org version to go out with that release. > > For Emacs 26, I intend the new ELPA process to be in place, whereby "default" > packages can be developed separately, and declare a way to get slip-streamed > into the release tarball so users are unaware of the separate nature of their > development. > > The CEDET developers have agreed to support this, and it sounds like you are > willing to as well. This is a misunderstanding. I said I wanted to move support for certain languages and project types into ELPA, not CEDET core. I'm still of the opinion that moving it completely to ELPA is a mistake. > If Lars is game, I'd like for Gnus to be third major > package we do this for initially. That will reduce considerably the number of > external files we track in Emacs.git. CEDET and Gnus are not external anymore. Both have abandonded their upstream repos and moved to Emacs, because the faster development of Emacs has made that necessary. -David From MAILER-DAEMON Mon Jan 30 07:43:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYBJ1-00011H-0C for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 07:43:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYBIy-0000wE-Ip for emacs-devel@gnu.org; Mon, 30 Jan 2017 07:43:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYBIx-0008Di-UN for emacs-devel@gnu.org; Mon, 30 Jan 2017 07:43:32 -0500 Received: from mail-yb0-x234.google.com ([2607:f8b0:4002:c09::234]:33686) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYBIx-0008DS-P7 for emacs-devel@gnu.org; Mon, 30 Jan 2017 07:43:31 -0500 Received: by mail-yb0-x234.google.com with SMTP id w194so193881308ybe.0 for ; Mon, 30 Jan 2017 04:43:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=21wBA2hQ5PckyE3tSe+5VsZsK9AuR9xsikCkWCoaHJA=; b=OO0PHw5dXUZaE1isGYIeMSNiuGR21AylJUClGMOU8rs6fWv8pt20AzsHjBMKqBx4I8 pbX7r4LgXa2yO3MKGBflppeE/9KWhXD2X1j1QIR4CtWxqZEHOZoBGeX8KeV2WLt4NfTM ZJJ7FCQbSj63ECVVyqujhPX6uI6qLYhVZ5WLiASRkXNpvgAwNsnlg244rkJoJWXpB00c F3L3gqAKuCac1jv8JgSRUNht9sL9QBR+fLnZEun8dlyEpA60WJHXc/mh4C9eE63h5rEI 6ny7+lBFA0CRRIz36tTFxTgh7fK3kmNn+hTzSsFc8Afh4Tn/DWNBnxQRIVUycK1K6Mgr sltg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=21wBA2hQ5PckyE3tSe+5VsZsK9AuR9xsikCkWCoaHJA=; b=G+X56wTbFwO/y6c6/wNcxQpZFOmezEwITjEcwMARRMHTlu361CbmCd+BgbIzLiQber gfe0gkgj0iITr/64HAl8D5RdU7XeLbk5oJR6ur4vZRaiA/fbLXUbEWpPErus3HvB1FlY 7mr2Sp1TZbs5TuBgOU6NRCcLrg09mE7WNu/+YkC4vErvVlvcryJUOKmFEAAfx2oLax/V GGRnrcDucqYEs2GXbeByYuDQLEFFNWvSulkYjriLSPG162tFdrDf9eJWM2+HG/6K269b iHEhcR0zsm9prFo/8TvUfbPCY/RoSCvVLQFXowFn9AXmRoQfJT3jzRluvxR70oaPIPDf 1eSA== X-Gm-Message-State: AIkVDXInb3Oic0lbp2m3CDU6zPKb7fbAOYaSsvm6M1voGcUOJ0wIZbBXSs3FkfzqbLSqMqT2YnFVOliIrI11IQ== X-Received: by 10.37.197.74 with SMTP id v71mr11102472ybe.33.1485780209526; Mon, 30 Jan 2017 04:43:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Mon, 30 Jan 2017 04:43:29 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Mon, 30 Jan 2017 18:13:29 +0530 Message-ID: Subject: Re: [PATCH] Make purecopy create hash tables properly To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 12:43:33 -0000 On Mon, Jan 30, 2017 at 1:11 AM, Stefan Monnier wrote: > But those make pure objects "out of thin air", whereas in the present > case what we do is to copy a pre-existing Lisp_Object into pure space. > But, yes, you're right that the distinction is largely irrelevant, so > either way is fine, Ah, that makes sense. I've renamed the function accordingly and pushed the changes to master. Thanks, Vibhav -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Mon Jan 30 08:23:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYBvT-0003Ik-CU for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 08:23:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYBvQ-0003H2-MP for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:23:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYBvN-00021h-Hm for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:23:16 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:39458) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYBvN-00021b-At for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:23:13 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cYBvK-0005pl-H2; Mon, 30 Jan 2017 14:23:12 +0100 From: Lars Ingebrigtsen To: Yuri D'Elia Cc: emacs-devel@gnu.org Subject: Re: master f83363d: Subject: Check Bcc after the Messag hook has run References: <20170128142130.17218.42233@vcs.savannah.gnu.org> <20170128142131.2877F22016E@vcs.savannah.gnu.org> <878tpv6z3t.fsf@mouse> <87efzmnguj.fsf@wavexx.thregr.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEU3LTbEuL2AdX0DAQKZ jpimm6QCAAEEAQKglJ4NCA0Qn1beAAACMklEQVQ4jXWUT2vjMBDFZ5V0g29VqWFzc0UWtmct8bU1 Cvi4LTH4HugHiA4ixwYHfFS9XYK+7b6R7eAu3XfQn/npeUaRFKo+15E+j7fFCLaFKU1ZNub0H0c9 9M8AhTFl+++3GCxcVGB5ihJTMNU+5ljYPM5s39rc5iOwzmqrNSIWnc71vmYww5jnrF3f9WBxAezS 2gGcpg5OgEaj3bejw8U4orlDIr2vmgHoEQw5qm3cR+76sCOuybm8BzMAFJy7bpHEYnM3gOhe5+5t QbYveAC7tV6/IMmfJLO7SY6vL71+ZoLW+iPQbHmTt8sPYKZ3KGgNkC7xQcs7j/uYcYXuQHdSLkP/ M/fgt80POKPNo5TXzxjxebQRYDmAAHi4DxNwPgN4z8BnIQlnd2Zwqs4BoPOcQ1HHIAwOvgUdMchI JDwbHQwyupKS/FUEXXQED3t3H74wEIseGIDEE0DG4D4oABpARpQEiiDxCkMK84ZBpVQEnUyDz5Ig lKgNg6dUZQkpgBtc0cSLH1Vt+BlI+axwXcnLay8oEeou7R0SJCOw11/ApEopv8FxYpAqpTLxeiR0 K8xvI9hgtFXqQcgbKpR65CmDrVjBlG6L7zCazZNMy2IO0G4DKdPW1XGDwk9VY1RG8+hw2JK6iHi7 79FhD+MLoxiFIjjiDgKFUXzqETQBR+MOl/fHD+897rxt28YYM80yN8M/Q90OKtsSa7COQR3DRbFa qZUyg1DuKS5tzEcVZD5X8RdRi2OmN0aUogAAAABJRU5ErkJggg== Date: Mon, 30 Jan 2017 14:23:10 +0100 In-Reply-To: <87efzmnguj.fsf@wavexx.thregr.org> (Yuri D'Elia's message of "Sun, 29 Jan 2017 14:19:48 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 13:23:17 -0000 Yuri D'Elia writes: > On Sat, Jan 28 2017, Lars Ingebrigtsen wrote: >>> Subject: Check Bcc after the Messag hook has run >>> >>> * lisp/gnus/message.el (message-send): If the hook modifies >>> the message (mml tags or headers), we should check bcc on the >>> final message, not on the original. >> >> Oops; that one should have had a copyright-exemption thing in it. I >> momentarily thought this was a different Yuri... > > Shouldn't this be too small to count? Yes, that's what the "copyright-exemption thing". It marks the patch as too small to count. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Mon Jan 30 08:34:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYC6b-0000Te-U9 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 08:34:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36526) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYC6a-0000TX-A1 for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:34:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYC6X-0004ot-7C for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:34:48 -0500 Received: from [195.159.176.226] (port=57016 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYC6W-0004ob-Tz for emacs-devel@gnu.org; Mon, 30 Jan 2017 08:34:45 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYC6M-0000BU-Ox for emacs-devel@gnu.org; Mon, 30 Jan 2017 14:34:34 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Converting compositions to strings Date: Mon, 30 Jan 2017 08:34:31 -0500 Lines: 7 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) Cancel-Lock: sha1:oRU1pLxIbvhBIqy1VQ+NDLpAea4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 13:34:49 -0000 > How can I reconstruct these strings from the value of the 'composition' text > property? This value is documented explicitly as being "internal! don't look at it!". Stefan From MAILER-DAEMON Mon Jan 30 09:24:58 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYCt7-0003as-R6 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 09:24:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYCt5-0003Yn-Ca for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:24:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYCt2-0003RX-97 for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:24:55 -0500 Received: from [195.159.176.226] (port=42367 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYCt2-0003RG-1z for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:24:52 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYCsu-0005ku-7W for emacs-devel@gnu.org; Mon, 30 Jan 2017 15:24:44 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Converting compositions to strings Date: Mon, 30 Jan 2017 09:24:45 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 10 Message-ID: <87sho0r5g2.fsf@lifelogs.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:anl2WrE6zWgwRwu2dS8tW46BV7Q= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 14:24:56 -0000 On Mon, 30 Jan 2017 00:13:34 -0500 Clément Pit-Claudel wrote: CP> Many compositions can be represented as strings: for example, prettify-symbols-mode composes "lambda" into "λ", and nameless prettifies the name of the current package as ":" or "::". CP> How can I reconstruct these strings from the value of the 'composition' text CP> property? Can you explain why you need this? Ted From MAILER-DAEMON Mon Jan 30 09:32:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYD0X-0002Nv-K2 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 09:32:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50883) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYD0U-0002LK-Ea for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:32:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYD0R-0005ge-DJ for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:32:34 -0500 Received: from [195.159.176.226] (port=52745 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYD0R-0005fP-7X for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:32:31 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYD0K-0005Bm-9O for emacs-devel@gnu.org; Mon, 30 Jan 2017 15:32:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Docker Hub requires nonfree software to log in Date: Mon, 30 Jan 2017 09:32:21 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 28 Message-ID: <87o9yor53e.fsf@lifelogs.com> References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:bwiWULABSexxg68fnBn+2oSR3wY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 14:32:35 -0000 On Sun, 29 Jan 2017 21:50:44 -0500 Richard Stallman wrote: >> We could do that, it will just require an additional setup step. The advantage >> to DockerHub is that it's the default place that docker will look if you try >> to run an image that doesn't exist yet on your machine. If we provide a custom >> download location, people will need to either configure Docker to look there >> (which is needed for upgrades to happen seamlessly, should they follow the >> "latest" tag), or download and import the image manually. RS> That's not the end of the world. So that's what we should to do. RS> Given our example, maybe people will convince Docker Hub to fix their RS> problem so we can upload our image there. I think you're confusing two things: Docker Hub as a web site (which requires nonfree software to use during *setup*) and Docker Hub as an image repository (which requires nothing but Docker itself, it's like a package repository with automated builds per package). They may talk to the same backend databases, but they are not the same thing. Building an alternative to Docker Hub is an interesting proposition, but not a blocker to this work. Until there's an alternative, I'm keeping the Docker Hub account active and will set up builds there. When there's an alternative, I'm happy to migrate it or duplicate it. Ted From MAILER-DAEMON Mon Jan 30 09:40:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYD7z-00007q-L2 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 09:40:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53059) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYD7y-00006W-21 for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:40:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYD7x-0000Se-6l for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:40:18 -0500 Received: from [195.159.176.226] (port=35129 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYD7x-0000SD-0K for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:40:17 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYD7k-0004WA-Gd for emacs-devel@gnu.org; Mon, 30 Jan 2017 15:40:04 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: official Emacs Docker image Date: Mon, 30 Jan 2017 09:36:34 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 25 Message-ID: <87k29cr4wd.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:WsxhUsriLWESB/cUeun8gzhexkQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 14:40:19 -0000 On Fri, 27 Jan 2017 17:45:16 -0200 Filipe Silva wrote: FS> Ted, I think that before the portable dumper branch get's merged or the big FS> elc file branch gets merged, you are going to have a really hard time FS> writing a docker file for that because of: FS> https://github.com/docker/docker/issues/22801 FS> You'll probably will have to rely on "docker commiting" your image. That's FS> how I do it for now. I built emacs from git head with it. One of the goals is to let every user `docker build' it locally. I can wait for the portable dumper, and meanwhile I can push a manual image if you show me how. Or I can make you one of the owners and you can push it yourself. On Fri, 27 Jan 2017 21:18:17 -0500 Richard Stallman wrote: RS> For this activity it is more correct to emphasize GNU rather than the FSF. OK, it's "gnuemacs" on Docker Hub now. As before, e-mail me if you think you can help develop the "gnuemacs/emacs" image for our users and I'll add you. Thanks Ted From MAILER-DAEMON Mon Jan 30 09:45:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYDCn-0004MU-Rl for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 09:45:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54702) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDCm-0004Ku-2N for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:45:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYDCh-0002hK-GM for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:45:16 -0500 Received: from [195.159.176.226] (port=42183 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYDCh-0002gL-AI for emacs-devel@gnu.org; Mon, 30 Jan 2017 09:45:11 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYDCZ-0006c9-Mm for emacs-devel@gnu.org; Mon, 30 Jan 2017 15:45:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Library for XDG things (was Re: [PATCH] checking eww download directory) Date: Mon, 30 Jan 2017 09:40:24 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 10 Message-ID: <87d1f4r4pz.fsf@lifelogs.com> References: <87wpdgmi84.fsf@udel.edu> <66463069-a49f-1dc1-2399-a8e5c60af5ca@gmail.com> <87mvecntq1.fsf@udel.edu> <83r33nzkkx.fsf@gnu.org> <20170129010150.GB16992@holos.localdomain> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:PEd0vCav0A9jwiCm5JyOmI38VtQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 14:45:17 -0000 On Sat, 28 Jan 2017 20:01:50 -0500 Mark Oteiza wrote: MO> In the mean time, the following is a small library of some useful MO> functions. At least for the base directory spec it remains rather low MO> level as the standard gives a lot of freedom to how applications want to MO> handle multiple locations of config/data: I think this would be an excellent addition to Emacs. Ted From MAILER-DAEMON Mon Jan 30 10:18:56 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYDjM-0004Tk-SQ for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 10:18:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35773) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDjK-0004TK-5C for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:18:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYDjG-0007ls-Uk for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:18:54 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDjG-0007lm-Qq; Mon, 30 Jan 2017 10:18:50 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3969 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYDjF-0003Tr-Tw; Mon, 30 Jan 2017 10:18:50 -0500 Date: Mon, 30 Jan 2017 17:18:47 +0200 Message-Id: <83a8a8y3s8.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel CC: emacs-devel@gnu.org In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Mon, 30 Jan 2017 00:13:34 -0500) Subject: Re: Converting compositions to strings Reply-to: Eli Zaretskii References: MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 15:18:55 -0000 > From: Clément Pit-Claudel > Date: Mon, 30 Jan 2017 00:13:34 -0500 > > Many compositions can be represented as strings: for example, prettify-symbols-mode composes "lambda" into "λ", and nameless prettifies the name of the current package as ":" or "::". > > How can I reconstruct these strings from the value of the 'composition' text property? Small experiments suggest that for single-character compositions the property has the shape (_ _ [?λ]) and for multi-character compositions (_ _ [?x _ ?y _ …]), but I also found instances of the shape ((_ ?x _ _)), and ((_ . ?x)) (I think). The information about this can be found in the doc strong of compose-region, under COMPONENTS. > Is there a recipe that I can use to construct a string representation of a composition? (I realize that many compositions can't adequately be represented as plain strings; I'm only interested in those that can). I don't really understand what you mean by "string representation of a composition". In general, a composition doesn't represent a string, and even those that are represented by characters or strings in the property are many times something other than a string. The ones that seem to be relevant to what you are looking for (I'm guessing) are a small class, and I don't think you can discern them from the others unless you look at the "rules" parts of a composition. From MAILER-DAEMON Mon Jan 30 10:33:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYDxA-0003bX-OW for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 10:33:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDx8-0003a7-3D for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:33:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYDx3-0004Aq-TH for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:33:10 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDx3-0004Am-Qa; Mon, 30 Jan 2017 10:33:05 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4029 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYDx2-00039J-UN; Mon, 30 Jan 2017 10:33:05 -0500 Date: Mon, 30 Jan 2017 17:33:02 +0200 Message-Id: <8337g0y34h.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> (message from Paul Eggert on Sun, 29 Jan 2017 15:05:50 -0800) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Reply-to: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 15:33:11 -0000 > Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org > From: Paul Eggert > Date: Sun, 29 Jan 2017 15:05:50 -0800 > > The idea of the attached code is to fix the problems I recently introduced in this area, along with some longstanding related bugs, e.g, (defun foo () (nth most-positive-fixnum '#1=(1 . #1#))) when byte-compiled on a 64-bit X platform (currently Emacs hangs and cannot be C-g'ed out of). Thanks, some comments follow: + On error, set errno to a value other than EINTR, and return -1. */ +static ptrdiff_t +emacs_nointr_read (int fd, void *buf, ptrdiff_t nbyte, bool interruptible) The "nointr" part in the name of the function seems to be in contradiction to what the function actually does. More generally, I don't understand why we need both this and emacs_read, which cannot be interrupted. Why not have just emacs_read which can be interrupted, and use that all over? I've reviewed the places where you left the call to emacs_read, and I don't see why those would be "unsafe" for C-g. @@ -198,7 +198,6 @@ call_process_cleanup (Lisp_Object buffer) { kill (-synch_process_pid, SIGINT); message1 ("Waiting for process to die...(type C-g again to kill it instantly)"); - maybe_quit (); wait_for_termination (synch_process_pid, 0, 1); I think it would be good to add a comment here saying that wait_for_termination will quit if the user hits C-g there. +INLINE void +rarely_quit (unsigned short int count) +{ + if (! (count & (QUIT_COUNT_HEURISTIC - 1))) + maybe_quit (); +} + +/* Increment *QUIT_COUNT and rarely quit. */ + +INLINE void +incr_rarely_quit (unsigned short int *quit_count) +{ + rarely_quit (++*quit_count); +} Does it really pay off to have two almost identical functions? Why not have just rarely_quit, and increment the counter by hand where we need that? @@ -1252,6 +1256,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, return (n); } n++; + maybe_quit (); } while (n > 0) { regex.c calls maybe_quit internally, so why do we need this additional call? @@ -1296,6 +1301,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, return (0 - n); } n--; + maybe_quit (); } #ifdef REL_ALLOC r_alloc_inhibit_buffer_relocation (0); This can quit without calling r_alloc_inhibit_buffer_relocation, which will leave ralloc.c in a state where it doesn't do relocations, which is a crash waiting to happen. @@ -637,6 +636,7 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte) } /* Move to beg of previous line. */ scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1); + incr_rarely_quit (&quit_count); } /* Record what we found, for the next try. */ scan_newline calls maybe_quit internally, so the call to incr_rarely_quit shouldn't be necessary, I think. @@ -724,6 +725,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, that determines quote parity to the comment-end. */ while (from != stop) { + incr_rarely_quit (&quit_count); + Is it safe to quit from back_comment? It manipulates a global variable gl_state, and I don't see unwind-protect calls anywhere in sight. @@ -1445,6 +1448,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; if (code == Sword) break; + rarely_quit (from); } /* Now CH0 is a character which begins a word and FROM is the position of the next character. */ Same here (and in a few more places in scan_words where you added such calls). @@ -2183,17 +2194,22 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) stop = endp; } UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); - prev_p = p; - while (--p >= stop && ! CHAR_HEAD_P (*p)); + + unsigned char *prev_p = p; + do + p--; + while (stop <= p && ! CHAR_HEAD_P (*p)); + c = STRING_CHAR (p); if (! fastmap[SYNTAX (c)]) break; pos--, pos_byte -= prev_p - p; + rarely_quit (pos); } Same here. Same issue in forw_comment and in scan_lists. @@ -10445,30 +10433,12 @@ handle_interrupt (bool in_signal_handler) } else { - /* If executing a function that wants to be interrupted out of - and the user has not deferred quitting by binding `inhibit-quit' - then quit right away. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - struct gl_state_s saved; - - immediate_quit = false; - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); - saved = gl_state; - quit (); - gl_state = saved; - } - else - { /* Else request quit when it's safe. */ - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; - force_quit_count = count; - if (count == 3) - { - immediate_quit = true; - Vinhibit_quit = Qnil; - } - Vquit_flag = Qt; - } + /* Request quit when it's safe. */ + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; + force_quit_count = count; + if (count == 3) + Vinhibit_quit = Qnil; + Vquit_flag = Qt; } This loses the feature whereby C-g on a TTY would quit much faster. Why is this a good idea? And if it is a good idea, why do we still generate SIGINT on C-g (and force GDB to handle SIGINT specially to support that)? Thanks again for working on this. From MAILER-DAEMON Mon Jan 30 10:36:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYDzv-0005n5-OM for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 10:36:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39680) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDzt-0005lf-D4 for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:36:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYDzq-0005If-9C for emacs-devel@gnu.org; Mon, 30 Jan 2017 10:36:01 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60384) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYDzq-0005Ia-5k; Mon, 30 Jan 2017 10:35:58 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4030 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYDzp-0000WM-CU; Mon, 30 Jan 2017 10:35:57 -0500 Date: Mon, 30 Jan 2017 17:35:53 +0200 Message-Id: <831svky2zq.fsf@gnu.org> From: Eli Zaretskii To: Tino Calancha CC: jwiegley@gmail.com, juri@linkov.net, emacs-devel@gnu.org In-reply-to: <874m0hrw59.fsf@calancha-pc> (message from Tino Calancha on Mon, 30 Jan 2017 13:48:02 +0900) Subject: Re: [patch] Run occur command restricted to a region Reply-to: Eli Zaretskii References: <87vau3jl6f.fsf@gmail.com> <87shp6uwvj.fsf@mail.linkov.net> <83h95lua2f.fsf@gnu.org> <878tqxm1wh.fsf@mail.linkov.net> <87r34ozq20.fsf@gmail.com> <87inq0xhiw.fsf@mail.linkov.net> <87d1g55h8d.fsf@mail.linkov.net> <87r33ywquz.fsf@mail.linkov.net> <87ziilc05e.fsf@gmail.com> <8760l9wcci.fsf@mail.linkov.net> <87fukb2xmk.fsf@gmail.com> <87h94qu01u.fsf@mail.linkov.net> <87inp6nsdf.fsf@gmail.com> <87lgtu4w5c.fsf@mail.linkov.net> <878tpt1m4b.fsf@mail.linkov.net> <874m0hrw59.fsf@calancha-pc> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 15:36:02 -0000 > From: Tino Calancha > Cc: Juri Linkov , tino.calancha@gmail.com, Emacs developers > Date: Mon, 30 Jan 2017 13:48:02 +0900 > > Juri and me have being working on extend `occur' so that it > can run restricted to the region. > We propose the patch below. > Please let us know if it's OK for you to push this patch into > the master branch. If everyone is happy with this, I don't see any reasons not to push. One comment: the NEWS entry that describes features already documented in the corresponding manual should be marked with "+++", see the explanation at the head of NEWS. Thanks. From MAILER-DAEMON Mon Jan 30 11:01:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYEOU-0000xz-1O for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYEOR-0000we-Nq for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYEOQ-0006EL-N1 for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:23 -0500 Received: from mail-qt0-x232.google.com ([2607:f8b0:400d:c0d::232]:33471) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYEOQ-0006EC-Je for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:22 -0500 Received: by mail-qt0-x232.google.com with SMTP id v23so207433281qtb.0 for ; Mon, 30 Jan 2017 08:01:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=i2qRuFJW2hZiLfj1n0kICWGb85Weel54cMCMzePTK1k=; b=NDjk4FgvwAVobMs2LHAuSO1pV30DWJqO0Rt91FKmuVJAnsqKDEtWwCSTWOECwXH/pi z/uRqXAlfXV7xIlt4SF3WqJ4+zpxnCnqBEG7hoNN6vwwNplrI4MT8TqxzQdfUN45HBTu UBnx0joyMt1bP7pWQtvyiznkoFgWGex5qChjJtVm5Gs4N07m54xCYO+smm7D4UQe1XE3 XlUa1Ja5LFuVa+maYoawvTGNXz7Fqc8Nf64guH1tSSqYt/gbySKjuHeMoOl4N/SwFlmP elwrOmqXPkPu50CraSxzp8zDWQEJZUV2XU4/zmAEh4NKaQrrV5frifhBowMf8WP/smNz 4bVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=i2qRuFJW2hZiLfj1n0kICWGb85Weel54cMCMzePTK1k=; b=BIvi1cdozKhTvt3WiaLVwu8EVR5Yw8SoRiR9wq9oMLDQucPUPb5E5KIfqkgTUrvCWu OTIvdlnpYXmKq24EUWjIXtPPTwLVbkPhcttnLaBq5rIIVwEWNwrmwIGGZAJ4abzuZiIi WVymgH/l/0ACPnvdaKnhhP5Cy1QzmAF4+m8tHmKaHhgNEtsFhPrEKdPzRmbYZ+DvZs5V uMyJVLTPYEdSXbVIBD09h7pVrYVooRgSt3bq3wdamCCN9cGQOvCUBHmQ9ghpuy49TJ0v BbscNvdrEW49PxOa4RT1VNfi8jjGIHLkVHYcv9aB5DfGwZYou8BtzUdO9p8GjwQsTgJ7 G59w== X-Gm-Message-State: AIkVDXKnx9HNydr4neKVnBTk9O5Gyg5Ro+giHxAtiPmWHcpYkPd+voymlT5oE/NSQ8PnMQ== X-Received: by 10.200.1.2 with SMTP id e2mr19805303qtg.142.1485792081886; Mon, 30 Jan 2017 08:01:21 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id q5sm12562170qtc.36.2017.01.30.08.01.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Jan 2017 08:01:18 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id B027D865649; Mon, 30 Jan 2017 11:01:16 -0500 (EST) To: Leo Liu Cc: emacs-devel@gnu.org Subject: Re: Change in files.el In-Reply-To: (Leo Liu's message of "Mon, 30 Jan 2017 11:57:42 +0800") Date: Mon, 30 Jan 2017 10:58:23 -0500 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Leo Liu , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:01:25 -0000 >>>>> "LL" == Leo Liu writes: LL> This is not something new today. The efforts have been going on for a LL> while. I think it is good practice as well. For a variable named with LL> -predicate or -function it would be a surprise if it were not a function. Can add-function infer that a -function variable with a value of "nil" is equivalent to it having a value of 'ignore? -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Mon Jan 30 11:01:37 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYEOf-00019b-AB for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46410) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYEOa-000133-6e for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYEOU-0006F8-BB for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:01:32 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:34107) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYEOO-0006Dg-3I; Mon, 30 Jan 2017 11:01:20 -0500 Received: by mail-qk0-x242.google.com with SMTP id e1so19509756qkh.1; Mon, 30 Jan 2017 08:01:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=KRa8D79Evh0aJkh25LZkhtpjsutsqquNsr0lqs+4AWE=; b=kt2hEezHaCKPtqasGbgLQ8CCz05gczcNZ1H2W8bGJsDcPvBeEbMaXzLOifCSScaG5c 4y3oKnj9U6MJgueencY80O9MnwRuTWrMPO4g0KCstSmnuuINxU1Nt2K/KACgWkCMjfK6 LY+JbbgWxWxM+4Uy3qIRvHorjpCPmhSC0IdEg9hRUmb0tcmc2LjLdkNxwnyG6iB0qRLD MBRFpaxs2dYDPFCu6o/bt6RTzPk50t0Wg8g5gGByExiFii2+At3ze5z1X0yPZ7MdhJEL wcCuaSWd4koivUTxg3F1mBdaichB0uzNaB/la/kiGvS/twmZ+3tuPjwNfS9neMUYv3Go h0bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=KRa8D79Evh0aJkh25LZkhtpjsutsqquNsr0lqs+4AWE=; b=WYKlJRJp/Nog+xfE34+9tLdpSjV2LcyJPmrYIX5tRrRZrEM4ldd0Gady+9twcP0KHC jFsQ2b945bFpas9ygmBvR7Gk0WmlnwHyRzIK9xLD9OxaC2i+5Uq/5U55DxDzMnnlpzxz NXLDfu0/6XQ6SNGyM0Bd0hr7Vye1lTUNhTaxx9T9mY7gudB8qZpVtlhEeGBTKXAF5Z6F XORb39xrme4hfFCXBIeNa4MHYeOBMaPETo9qtBJUPvGAMW8CM3C8dl0eBnAWgVLOxi0w tVNP6nN7x57xDgiwMfqLACID5gTxfstAhKiaJJQP2utgKz3SkyDKPJcokD86VKvg0W6C 8/qg== X-Gm-Message-State: AIkVDXIosZ/i97qc0G+wbD2D64c+yFWTaEGcjhHN9TEgvcJOH76LAM5y9t/qi+R1bwAw6w== X-Received: by 10.55.146.67 with SMTP id u64mr6004172qkd.37.1485792079153; Mon, 30 Jan 2017 08:01:19 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id h56sm12507149qte.24.2017.01.30.08.01.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Jan 2017 08:01:18 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id E04C686564C; Mon, 30 Jan 2017 11:01:16 -0500 (EST) To: David Engster Cc: Kaushal Modi , Bastien Guerry , Phillip Lord , emacs-org list , Emacs developers Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: <87k29d7zvw.fsf@engster.org> (David Engster's message of "Mon, 30 Jan 2017 08:47:31 +0100") Date: Mon, 30 Jan 2017 10:59:39 -0500 Message-ID: References: <87k29d7zvw.fsf@engster.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: David Engster , Kaushal Modi , Bastien Guerry , Phillip Lord , emacs-org list , Emacs developers MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:01:35 -0000 >>>>> "DE" == David Engster writes: DE> This is a misunderstanding. I said I wanted to move support for certain DE> languages and project types into ELPA, not CEDET core. I'm still of the DE> opinion that moving it completely to ELPA is a mistake. It would only be a mistake if other parts of core need to use it. If only users make use of it, then having it ELPA will be invisible to them. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Mon Jan 30 11:23:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYEjg-0004Lr-Ax for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:23:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51826) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYEjd-0004LU-Pf for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:23:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYEjc-00060p-R3 for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:23:17 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33626) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYEjc-00060g-Lp for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:23:16 -0500 Received: by mail-qk0-x243.google.com with SMTP id 11so19547713qkl.0 for ; Mon, 30 Jan 2017 08:23:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=RnFpUUjshw+YyWgmsOoLtSfzyIy1QhDiO/+Z/xu5A98=; b=luJlaEhhEQ2NkM1xiKJxwrpdVe4KWxAnbTl2nPloGa1sOelBsw2PNUSSJpVXoWSCH6 P3VWPPtzWr9dPSl2Qh4fOoYyOxs/SRoOLWLxm0DNogh47bSzxlCS3LMbe+uA1AbuNly5 zVoEGGN4gSBkjO8Q+SQMaCeZSkuADKGxoPuZ0uxw7Qvbzuvp37/iIGidYIZcZ87V3apB P9QCUixoRLioaRkouZbK81yOvlXlyGj+ijw8UZt0ZHY3shSp6edNheDsP8Rck3ehzvFh NKZwu2BAe3nXXERNGZ7SEXHndz1qkLyh8wXJPOf2UGjjAArtcHfKAGqzRvQjLmXFlvJu /cJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=RnFpUUjshw+YyWgmsOoLtSfzyIy1QhDiO/+Z/xu5A98=; b=iwCEW4KgPFoL5WhNY1tCl0R3h9W2PfgOzjvwIuEwylOFw93HWl06tpMJFac0W9Vwgm ii+/baexVGLOb1Qe+/9TFrxLcw35oHXNh0GVy4kA3L3zNJ0g/ZXKxrAxMZXvkx+SGzv+ 9NHBJ3tG34q3OPlZPzieaJDMtIYz01i56um+4ENIWqK8cGeeMh9+0MHynJFIBP19CilU w/UdaR4lJuAp5GKUx0UKPBgXf8QB9RbanPuSZ0t+irXzMrm2eMvB0H+/UmYagLK87ZMC O/NPlynFyWr6U77YT+KT+wTbYOgXB15mJO/1d8sR8qC3v5ddZ6TLeUZGHKjTjAon2RSl CqPg== X-Gm-Message-State: AIkVDXLWlL1AWmk0TGPkCHbz5g88KRb9cM3tGom9rugGMIPv7HyQP8gV3lq2Fq/lm6IqQA== X-Received: by 10.55.20.156 with SMTP id 28mr21263328qku.44.1485793396022; Mon, 30 Jan 2017 08:23:16 -0800 (PST) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id g13sm12659734qtg.8.2017.01.30.08.23.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jan 2017 08:23:15 -0800 (PST) Subject: Re: Converting compositions to strings To: emacs-devel@gnu.org References: From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <97e60fb9-c7aa-7d21-cd42-330e3e8d1511@gmail.com> Date: Mon, 30 Jan 2017 11:23:15 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:23:19 -0000 On 2017-01-30 08:34, Stefan Monnier wrote: >> How can I reconstruct these strings from the value of the 'composition' text >> property? > > This value is documented explicitly as being "internal! don't look at it!". I saw that :) Are you offering to implement a high-level primitive that does what I need without looking at it? ;) From MAILER-DAEMON Mon Jan 30 11:27:13 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYEnR-0005VQ-QV for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:27:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYEnP-0005V6-W4 for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:27:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYEnO-0007EO-Tg for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:27:12 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:34575) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYEnO-0007EC-PI for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:27:10 -0500 Received: by mail-qk0-x241.google.com with SMTP id e1so19632770qkh.1 for ; Mon, 30 Jan 2017 08:27:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=TDZr7WH+I1UeZr6c+paa/lPqB4JXtJoWsMW3IDB26wc=; b=igP21wvoQegr2Rndg3lz7t5j45sor12Yt9vMlU9qG5DdPkKSVG+mBEqF1IolBRCeaV D+/MNRUGETNTmfBB4gOtQ7mQz44WVtcY8AXdc3R7Xi6ruabMdYclzEzFlfV8CeuhZ7sM dA27fmNXxy9VQWVRRUcIBp6XqWTCuySNkku9JHS37SL+G8mhOJDu1OnqUVi4lpRwmqc7 QODevKEcs+aoteenClh0fzgEXxiFepv2aGfRtQ+UOXF2YAJsTArd0roFq+h5vppLOkr7 eVjXX6Oouuwb/EtvJJndLS1MnK6/QOPxWclMFZRwCHHLDF/M/gRz74tOFxnUa/e6+O7t P/5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=TDZr7WH+I1UeZr6c+paa/lPqB4JXtJoWsMW3IDB26wc=; b=OqgFNhNK9r1cfzmC1h1EkyKHeMDh1uoPf1Ygp3MTA2nAkk78cUBrQxE8d+b+U0IyB5 UL8d4ZWtfJxIW3nzJC4ZZzzJssvz0IUi87ZKE2z2kmsTfjkKsrI4zR2OeTCpb9/QvsOR Bw1Cj5v09Qe2ODg4uGliks4rfPgUz8SztshTaY7Kxga6qc5zU6OIzzDrJmEgux5xSPb1 qp905NFWnAjKaOGtvH7syE4srZTMzetUU6Cb0nJ33kFKAS5uH2OpcelgYJ+0GwFEV+pj m2B7L46bMSXvRhV5hlgpvUWD8nGORAeT6DflP4PYdy2lymHz11mxTQUBE6Pwt5jXQlN2 cYTg== X-Gm-Message-State: AIkVDXKluuFE7QM3dyLOl4LVXnCwqMXVZaIBML/Um7auyUfoNOB7Cxdo04dVIZ4W7IWVVQ== X-Received: by 10.55.168.137 with SMTP id r131mr22315212qke.177.1485793630135; Mon, 30 Jan 2017 08:27:10 -0800 (PST) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id z4sm9416009qkc.7.2017.01.30.08.27.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jan 2017 08:27:09 -0800 (PST) Subject: Re: Converting compositions to strings To: emacs-devel@gnu.org References: <87sho0r5g2.fsf@lifelogs.com> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <158310d0-2f94-6da8-3ac1-10ee563fbf30@gmail.com> Date: Mon, 30 Jan 2017 11:27:09 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <87sho0r5g2.fsf@lifelogs.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:27:13 -0000 On 2017-01-30 09:24, Ted Zlatanov wrote: > Can you explain why you need this? Sure :) I need it for (an equivalent of) htmlfontify. In the current version, exporting a buffer to HTML ignores compositions entirely (including prettify-symbols-mode). I posted a patch that extends htmlfontify to render compositions a while ago, but the approach that I used there wasn't very principled (https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00845.html). Clément. From MAILER-DAEMON Mon Jan 30 11:39:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYEz4-0002ii-Ao for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:39:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56050) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYEz1-0002dA-Sl for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:39:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYEz1-00044B-1R for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:39:11 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:34065) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYEz0-00043z-T6; Mon, 30 Jan 2017 11:39:10 -0500 Received: by mail-qk0-x243.google.com with SMTP id e1so19687912qkh.1; Mon, 30 Jan 2017 08:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=tT4+4r2+UzJFuPuRQ2Hqv8CilkjBzciNtO054g9srlQ=; b=eFK/8x+w9BncvkDunwrw83yVQLnTWuCVdFS4yX+EsVjAXT+P9zgBc1zddmVzobn8Zy tu1G4TMZDGheXN7WFDd/3PfEs3ke6sTxeb18gHQ3+A+5yzLPwKeZlnlCGj9W6q/oGFWn PCE0CC90Q3/2WefIzQy1CNQKsKU9ej4uhR59DK+JpPmC6fCx4mEeqVEiAEA6koLLwMCT kEE16DUBiMUJUlhp31peT3GwXkePK7QEJ1+TSTHEoE5Rs5pWcpdxCGRL/7JtI2ALykiI Eaomr/+o76+ehTOFOGWrtZecrub0CEyk7Li9Zy+/9/TB4Gmjm+Y7FWuku8xu/WMpnmZz GzCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=tT4+4r2+UzJFuPuRQ2Hqv8CilkjBzciNtO054g9srlQ=; b=N1W5HQ2xgXksn9/DpAEydphVxqZDcnuYuLlTTfdYWzs+McJ7cvc2VF3QLPJTXuCx76 dSVeq3P4WmD7VGB0+tb/FZ/Sg2c4sRMAg6YQEyoGuogj81iOUhHCWqDUNKgh2KiF0XBD kVhYcPzV4JrIjymm/wTBgO3Rfz4EbB40BnHNQaC66H+yDmPIbK3vnYiU68QuaCr/bz6y rAWBPf46uuFZszJwAKstq9Lk2SIc+H6HLf26KTf5w4leUyKocD0tQEcgMwm8RK++yn4e DpKw/limzMvz9nCzaKEvSAIINOlCI/L+5wQUrpOqDgPwzZkTO2spBUpV+LWaSJFfyihg XPqQ== X-Gm-Message-State: AIkVDXLG1ehVPDB4GP69s4jqZ2AdG7+KcCzJO3guXScIhs7nEvVxk/KMJqQedAgVhOd72w== X-Received: by 10.55.98.5 with SMTP id w5mr21598668qkb.165.1485794350095; Mon, 30 Jan 2017 08:39:10 -0800 (PST) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id c83sm12657198qkg.8.2017.01.30.08.39.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jan 2017 08:39:09 -0800 (PST) Subject: Re: Converting compositions to strings To: Eli Zaretskii References: <83a8a8y3s8.fsf@gnu.org> Cc: emacs-devel@gnu.org From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Mon, 30 Jan 2017 11:39:09 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <83a8a8y3s8.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:39:13 -0000 On 2017-01-30 10:18, Eli Zaretskii wrote: > The information about this can be found in the doc strong of > compose-region, under COMPONENTS. Thanks. This covers only "relative" compositions, right? Is there more information on non-relative compositions somewhere? >> Is there a recipe that I can use to construct a string >> representation of a composition? (I realize that many compositions >> can't adequately be represented as plain strings; I'm only >> interested in those that can). > > The ones that seem to be relevant to what you are looking for (I'm > guessing) are a small class, and I don't think you can discern them > from the others unless you look at the "rules" parts of a > composition. Looking at the rules sounds fine; thanks! I think these compositions form a small class in terms of what Emacs supports, but that class seems to most if not all uses of composition that I see in my daily use of Emacs (where are other compositions used, beyond character spacing in what-cursor-position?). Based on your pointers, the following seems to work OK for me (I guess it could be extended to cover the (Bl . Br) case, but I haven't seen that pop up yet in practice). (defun esh--parse-composition (components) "Translate composition COMPONENTS into a string." (let ((chars (list (aref components 0))) (nrules (/ (length components) 2))) (dotimes (nrule nrules) (let* ((rule (aref components (+ 1 (* 2 nrule)))) (char (aref components (+ 2 (* 2 nrule))))) (pcase rule (`(Br . Bl) (push char chars)) (_ (error "Unsupported composition COMPONENTS"))))) (concat chars))) Thanks, Clément. From MAILER-DAEMON Mon Jan 30 11:52:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYFBh-0002oG-D1 for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 11:52:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59445) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYFBf-0002mj-A6 for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:52:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYFBc-0008UR-9Z for emacs-devel@gnu.org; Mon, 30 Jan 2017 11:52:15 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33053) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYFBc-0008UN-6E; Mon, 30 Jan 2017 11:52:12 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4123 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYFBa-0000E1-VV; Mon, 30 Jan 2017 11:52:11 -0500 Date: Mon, 30 Jan 2017 18:52:00 +0200 Message-Id: <83y3xswkwf.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel CC: emacs-devel@gnu.org In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Mon, 30 Jan 2017 11:39:09 -0500) Subject: Re: Converting compositions to strings Reply-to: Eli Zaretskii References: <83a8a8y3s8.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 16:52:16 -0000 > Cc: emacs-devel@gnu.org > From: Clément Pit-Claudel > Date: Mon, 30 Jan 2017 11:39:09 -0500 > > On 2017-01-30 10:18, Eli Zaretskii wrote: > > The information about this can be found in the doc strong of > > compose-region, under COMPONENTS. > > Thanks. This covers only "relative" compositions, right? Is there more information on non-relative compositions somewhere? No, AFAIK this documents both relative and rule-based compositions. > > The ones that seem to be relevant to what you are looking for (I'm > > guessing) are a small class, and I don't think you can discern them > > from the others unless you look at the "rules" parts of a > > composition. > > Looking at the rules sounds fine; thanks! I think these compositions form a small class in terms of what Emacs supports, but that class seems to most if not all uses of composition that I see in my daily use of Emacs (where are other compositions used, beyond character spacing in what-cursor-position?). > > Based on your pointers, the following seems to work OK for me (I guess it could be extended to cover the (Bl . Br) case, but I haven't seen that pop up yet in practice). > > (defun esh--parse-composition (components) > "Translate composition COMPONENTS into a string." > (let ((chars (list (aref components 0))) > (nrules (/ (length components) 2))) > (dotimes (nrule nrules) > (let* ((rule (aref components (+ 1 (* 2 nrule)))) > (char (aref components (+ 2 (* 2 nrule))))) > (pcase rule > (`(Br . Bl) (push char chars)) > (_ (error "Unsupported composition COMPONENTS"))))) > (concat chars))) I think if we want to be able to produce text with all the text properties and overlays expressed explicitly as text, we need to write a back-end for xdisp.c that "displays" to a buffer. It shouldn't be hard, the number of interface routines a back-end needs to support is not large; see 'struct redisplay_interface' in dispextern.h. From MAILER-DAEMON Mon Jan 30 12:11:11 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYFTz-0005Va-9W for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 12:11:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35794) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYFTw-0005VE-LN for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:11:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYFTr-0006fC-T7 for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:11:08 -0500 Received: from sender163-mail.zoho.com ([74.201.84.163]:21071) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYFTr-0006dI-KF for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:11:03 -0500 Received: from localhost (141.80.193.18 [141.80.193.18]) by mx.zohomail.com with SMTPS id 1485796257215808.4514319617045; Mon, 30 Jan 2017 09:10:57 -0800 (PST) References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> User-agent: mu4e 0.9.18; emacs 25.1.1 From: Ricardo Wurmus To: Filipe Silva Cc: Emacs developers Subject: Re: official Emacs Docker image In-reply-to: Date: Mon, 30 Jan 2017 18:10:53 +0100 Message-ID: <87k29cmq1u.fsf@elephly.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 74.201.84.163 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 17:11:09 -0000 Filipe Silva writes: > Ted, I think that before the portable dumper branch get's merged or the b= ig > elc file branch gets merged, you are going to have a really hard time > writing a docker file for that because of: > https://github.com/docker/docker/issues/22801 I would like to state again that we (i.e. the GNU project) already have a way to build valid Docker images for Emacs using GNU Guix. It does not even involve the use of Docker, nor does it require a third-party =E2=80=9Cbase image=E2=80=9D of a GNU+Linux system. For the lack of up-to-date HTML documentation see the Texinfo source file of the manual here: http://git.savannah.gnu.org/cgit/guix.git/tree/doc/guix.texi#n2480 Since Guix abides by the FSDG we can also be certain that the generated image contains nothing but software libre. Would it be helpful if the Guix project provided a Docker image for the latest release for download? To me it seems only natural for GNU Emacs and GNU Guix to cooperate; it=E2=80=99s all GNU. -- Ricardo GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC https://elephly.net From MAILER-DAEMON Mon Jan 30 12:44:17 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYG01-0000gq-5D for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 12:44:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYFzz-0000gk-GH for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:44:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYFzw-0001NE-BC for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:44:15 -0500 Received: from [195.159.176.226] (port=44912 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYFzw-0001M5-4Q for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:44:12 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYFzm-0000uT-FC for emacs-devel@gnu.org; Mon, 30 Jan 2017 18:44:02 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: official Emacs Docker image Date: Mon, 30 Jan 2017 12:44:00 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 36 Message-ID: <8737g0qw7z.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> <87k29cmq1u.fsf@elephly.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:d2v2rre1iDHiHw8BYDsKa3m8EIc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 17:44:16 -0000 On Mon, 30 Jan 2017 18:10:53 +0100 Ricardo Wurmus wrote: RW> Filipe Silva writes: >> Ted, I think that before the portable dumper branch get's merged or the big >> elc file branch gets merged, you are going to have a really hard time >> writing a docker file for that because of: >> https://github.com/docker/docker/issues/22801 RW> I would like to state again that we (i.e. the GNU project) already have RW> a way to build valid Docker images for Emacs using GNU Guix. It does RW> not even involve the use of Docker, nor does it require a third-party RW> “base image” of a GNU+Linux system. I don't see a problem providing both as "gnuemacs/guix-emacs" and "gnuemacs/docker-emacs" or something like that. Or as tags of "gnuemacs/emacs". I don't think they are equivalent, though, so the need for a `docker build' solution is still there. RW> Would it be helpful if the Guix project provided a Docker image for the RW> latest release for download? To me it seems only natural for GNU Emacs RW> and GNU Guix to cooperate; it’s all GNU. Sure. But there's more that Docker Hub offers: a global namespace; a distributed download service; automated builds. You can upload the Guix image to Docker Hub and get all of those benefits except the automated builds: see https://docs.docker.com/docker-hub/repos/ If you can pack an ARM build into the image so it's multiarch, that's great too. I know there's a way to do it with the Docker tools, so the image format supports it. But it's definitely not a requirement. I can add you to the Docker Hub account so you can do at least the first uploads. Later we can automate them through Hydra or some other CI tool. Ted From MAILER-DAEMON Mon Jan 30 12:50:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYG5q-0002Sq-1p for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 12:50:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45124) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYG5o-0002Sh-CC for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:50:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYG5l-0002rM-8d for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:50:16 -0500 Received: from [195.159.176.226] (port=53516 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYG5l-0002rE-2C for emacs-devel@gnu.org; Mon, 30 Jan 2017 12:50:13 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYG5d-0005Jp-Ev for emacs-devel@gnu.org; Mon, 30 Jan 2017 18:50:05 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Converting compositions to strings Date: Mon, 30 Jan 2017 12:48:00 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 15 Message-ID: <87y3xsphgv.fsf@lifelogs.com> References: <87sho0r5g2.fsf@lifelogs.com> <158310d0-2f94-6da8-3ac1-10ee563fbf30@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:H0gn6ze6hJaJfynmKLJPcPJ3DKc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 17:50:17 -0000 On Mon, 30 Jan 2017 11:27:09 -0500 Clment Pit-Claudel wrote: CP> On 2017-01-30 09:24, Ted Zlatanov wrote: >> Can you explain why you need this? CP> Sure :) I need it for (an equivalent of) htmlfontify. In the current version, CP> exporting a buffer to HTML ignores compositions entirely (including CP> prettify-symbols-mode). I posted a patch that extends htmlfontify to render CP> compositions a while ago, but the approach that I used there wasn't very CP> principled CP> (https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00845.html). I see, thanks for explaining. That sounds fun, I would use it. Ted From MAILER-DAEMON Mon Jan 30 13:06:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYGLG-0005Av-VT for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 13:06:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49066) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYGLE-0005Ai-Ns for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:06:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYGLE-0007BQ-1f for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:06:12 -0500 Received: from mail-yb0-x22e.google.com ([2607:f8b0:4002:c09::22e]:35886) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYGLD-0007B2-U3 for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:06:11 -0500 Received: by mail-yb0-x22e.google.com with SMTP id 123so99327872ybe.3 for ; Mon, 30 Jan 2017 10:06:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=zqN0MXLkVqAlHLDOT8ksxzD4yYwm1932usZn/ykQjg8=; b=Figv6kWpjqIZTfBbLfUAxJaecqHCEEDLZbRjDzFuCqF3sNV2v0doQAxrIJ+ssKv69t Un+0NSDK813SfbOk+sbStJbKSVx8lcUwXMx6SQFf4+aYq9AQ1XMVcq1rPwoX7L269H/W n1LEaGnn0C2ZkqQ8JBGl9LFx2A71BCocj4G0eSQpSxLHsMqWG8wH0EiYsbNuSotWRijn npbbPFvUeX8mFe/n//XMQIdL6EHoblXbRHSYA1/zwlivumliHHBxcm8AdDqGdiDlfBkS nHlMQXMQKk+4vNwZj5bYqyW4AYQGfWChgY0cmP8PyHJNMsJgWlvzRZhq5JcXlxyUpYBn t66Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=zqN0MXLkVqAlHLDOT8ksxzD4yYwm1932usZn/ykQjg8=; b=h5xaLpfYv+/DhEhVnzp1s+3mJ5EhYtPhmaUrq+9g1zrUJxzmeVUR0S+1Zwtv+QHTDg V3hrx3zt3ndt037elTRTRn3og4PFsOyxXfgS7Or/oDwmS0ZZ6XLT+bj56G2xBXu23sC8 oRsFOsYCQ4ltmUoQzSD9B30HkhtLq/mAIxqVIP/DUj87brxuiyogWiKC92oruwKEjJsD EqZ6Qunl4qrekbgD2RC+6B0QpC5gXGEU+unPBYNiqCl8dIFJwlYt1Omzrbec5Bu0whoE uKqt681//+zqyepTCFcA7rrTQXK2I9TsfI0norZPPuidoxUnGtYlqfIBoWjSgoQh3abz m9cQ== X-Gm-Message-State: AIkVDXKiCei6M5pXerF2aUWXz1DLcwGfi9UGGM+z51iD/o50bH/kofReXCpUe7RmffzfMWYN9KnT0UxE4/vPsw== X-Received: by 10.37.211.20 with SMTP id e20mr11171628ybf.99.1485799571010; Mon, 30 Jan 2017 10:06:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Mon, 30 Jan 2017 10:06:10 -0800 (PST) From: Vibhav Pant Date: Mon, 30 Jan 2017 23:36:10 +0530 Message-ID: Subject: Debugging errors in bytecomp code? To: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 18:06:13 -0000 Is there a way to enter the debugger when a error in bytecomp code itself is encountered? Right now, all errors including compilation ones are printed to the *Compile-Log* buffer, making it impossible to get a backtrace for internal compiler errors. -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Mon Jan 30 13:38:01 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYGq0-00050w-UT for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 13:38:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55319) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYGpy-0004yN-2S for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:37:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYGpx-0000Nn-2R for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:37:58 -0500 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:36686) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYGpw-0000N2-RE for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:37:56 -0500 Received: by mail-lf0-x22b.google.com with SMTP id z134so199217528lff.3 for ; Mon, 30 Jan 2017 10:37:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=IocUzuI1msu2Exjp3HW3qMK+/PLyRIJEi+FfLI0i0LQ=; b=JptRnGRvVftE9jtrtlq1URP0y87jOvvcNQ5jhkusreH60JYZSsKz4lXycjnsQP+l3i 83/1V38U8IyCp46qkzvjd2TirdZtExkg8LAsVzSBj1UtG07eyoQ1sJhdD18a05Oek14p 0p9s3U63rnscrrcyaTL46FYVcoP1Uf/ktTtbxCRtj2XIV3IU2C1O0sWy+mGUSy5SnM/6 F1lRLtqUq4im8ykkp4+4w5l4K/tOL6U5OcWI5wZRDmNDPF70JCuk5dlG1Z9QVgIjV19l Fe4SlbC9jUMd4IXAsAgNp7DqhlFJ7ViKOwmqDMfQW5/PF/K19nfRm6NFDDs8OF/GTTRp bXew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=IocUzuI1msu2Exjp3HW3qMK+/PLyRIJEi+FfLI0i0LQ=; b=JmBZM0CwEprpqjSxoyslSLzw2LTffBTzBxvjOpeAajmN2+vzy/L0ghr2Hg0lKK3ATf 2ZNpgDP0zIJFX+OOmRBmIoy3V3whBLXpR7q8F6cq8PZKBA2OzDkeGeRXDN7l4vF+u3AP HQIwEUe+lPxOPr9FOG/DS9HNMB18v9qHtRm5ZTACZY/xkfc+wGS0mIZeqw/1Zr0CUnXB F7PgU5lLTacvhEjOKkH/84P+AH8pQ8T4cJFj6eAngCI+y6tT5k4fBR/zwy0VjzSwmv2p 2RFZByaqIYsrsnTZnY0ErIhCnlUGGKOKTNZ1Rw54HOunqLC9VF6Xrzoppd1Z/A+6Z54q KX7g== X-Gm-Message-State: AIkVDXKPM/dcIhaQreRgFBe7o6Zvo9YtETk0guMP8fV2ctDP9qBFywknLnT65j4Z6deTF3JDvGyFj5OwJu4ZTg== X-Received: by 10.25.156.213 with SMTP id f204mr7546649lfe.27.1485801475054; Mon, 30 Jan 2017 10:37:55 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.19.193 with HTTP; Mon, 30 Jan 2017 10:37:54 -0800 (PST) From: Jordon Biondo Date: Mon, 30 Jan 2017 13:37:54 -0500 Message-ID: Subject: Revisiting `setq-local`s signature To: Emacs development discussions Content-Type: multipart/alternative; boundary=001a11402f5420a25b0547541d30 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 18:37:59 -0000 --001a11402f5420a25b0547541d30 Content-Type: text/plain; charset=UTF-8 A while ago I brought up the inconstant signatures of `setq`, `setq-default` and `setq-local`. In short, I want `setq-local` to have the same signature as `setq` and `setq-local`. (setq* VAR VAL VAR VAL...) See thread: http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00448.html I appreciate Stefan's input back then, but I'd like to revisit the issue, get further input, and see if I can change some minds about the issue. If you believe the variadic signature of `setq` and `setq-default` is not ideal, consider that backwards compatibility erases any chance that those two functions will lose that feature, and consider the benefits of being consistently wrong over being inconsistently right. Are maintainers and users still opposed to this change? If not I'd be happy to update the patch from the previous thread. Regards -Jordon --001a11402f5420a25b0547541d30 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
A while ago I brought up the inconstant signatures of `set= q`, `setq-default` and `setq-local`. In short, I want `setq-local` to have = the same signature as `setq` and `setq-local`. (setq* VAR VAL VAR VAL...)

I appreciate = Stefan's input back then, but I'd like to revisit the issue, get fu= rther input, and see if I can change some minds about the issue.
=
If you believe the variadic signature of `setq` and `setq-de= fault` is not ideal, consider that backwards compatibility erases any chanc= e that those two functions will lose that feature, and consider the benefit= s of being consistently wrong over being inconsistently right.
Are maintainers and users still opposed to this change? If not= I'd be happy to update the patch from the previous thread.
<= br>
Regards
-Jordon
--001a11402f5420a25b0547541d30-- From MAILER-DAEMON Mon Jan 30 13:51:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYH3K-0007gE-4V for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 13:51:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58935) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYH3G-0007WL-Sx for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:51:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYH3C-0004Dm-TZ for emacs-devel@gnu.org; Mon, 30 Jan 2017 13:51:43 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:34698) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYH3C-0004DI-Mx; Mon, 30 Jan 2017 13:51:38 -0500 Received: by mail-wm0-x244.google.com with SMTP id c85so78864017wmi.1; Mon, 30 Jan 2017 10:51:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=gDDS2gnW8pfDjc8f6ODrHhzjyl1EQSdseahDCNqfzAA=; b=tSWjS0x+UJAKOQ6ZwdqX+9OlbDWuYi6Tm6ybxbGUaCHAV+tbOjwL7aR20yY8kFiQQj NwmVJEIvzGmiVnEB8iC1DIzxVzj7p0cWzLdDbsynD/ml2H3oEN/fpFVbdA00oEbfWWHd yU12fuBzeKzVTK7B/oHn1a2q8+3vQpKeZVll4d0ZrrQ1WZyHnL0ONi65QN9KUM4nF6Bv NjniM4WDv+NyqiQ9UTaAfEVFAqxQYn0ebu6bH17WPBiw8R+dToSUTSJS/Xwv/2e8W4II KWF1Io6GCI0DUXQQqNHeQUJJzYWdKcQXeuR9z8my9QDpUhWuWEimy5Dwi09LmPsmlmr8 SFGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=gDDS2gnW8pfDjc8f6ODrHhzjyl1EQSdseahDCNqfzAA=; b=pufr+JK3XRCO7IoPmvi5LCYrteslAeqWByUyaXKu55aK4A9h71FRcRfuR5Di6QAchT 1XSGYgKBSd+Czj1EalYh6am/C9qeJgdQBsIGedVYdEeOSD4aL5IRMSa6rL7yh+sB9feB 6m6PyR3+eJ7ylVpOz6e9/RUZkGddqz3GLupMo6zt94AMjzMc+3W8PsFJO4BCVdeRbMCQ J7ekn8iRdu59CN0F76eLV6f1DFpIEWcyPWhKQgbUmSWa3BgqnNqSt7SNjycjDb8fuVzC G1XQ+utg0YGt9ql5xWGmXH9WZcLtXkguj7ARRsP/ZU86TB+tlNAO6gFTvcUMg4s/icU6 sZZw== X-Gm-Message-State: AIkVDXK4FUYg3mBEKR0/XTiSDRkPct1+tCjFPH0WAol4ivLjcZgwmk3XT6bqg3/RWiJjJg== X-Received: by 10.28.54.226 with SMTP id y95mr14669078wmh.105.1485802297169; Mon, 30 Jan 2017 10:51:37 -0800 (PST) Received: from edward ([41.193.194.172]) by smtp.gmail.com with ESMTPSA id l37sm24130440wrc.41.2017.01.30.10.51.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Jan 2017 10:51:36 -0800 (PST) From: Edward John Steere To: David Engster Cc: Kaushal Modi , Bastien Guerry , Phillip Lord , emacs-org list , Emacs developers Subject: Re: Sync up the org in emacs master to org maint branch? References: <87k29d7zvw.fsf@engster.org> Date: Mon, 30 Jan 2017 20:51:19 +0200 In-Reply-To: (John Wiegley's message of "Mon, 30 Jan 2017 10:59:39 -0500") Message-ID: <87efzk2xg8.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 18:51:44 -0000 > > DE> This is a misunderstanding. I said I wanted to move support for certain > DE> languages and project types into ELPA, not CEDET core. I'm still of the > DE> opinion that moving it completely to ELPA is a mistake. > > It would only be a mistake if other parts of core need to use it. If only > users make use of it, then having it ELPA will be invisible to them. Apologies in advance for the significant verbage. I just want to provide context. * Context regarding CEDET: (apologies: I know this thread is more concerned with org mode and, if you'll bare with me, I think that this is relevant.) I started the CEDET merge process a few months ago. There was talk on the CEDET mailing list regarding the difficulty of getting going with CEDET as a user and/or a developer. One of the ideas put forward was that there ought to be a merge into Emacs so that one wouldn't have to clone the repo, build the code and install it with some ELisp config. hacking. I got in touch with Eric directly and bounced some ideas passed him. Subsequently I volunteered to help with the merge. I got in touch with JohnW and (not being very familiar with Emacs development) asked some basic questions about how to go about accomplishing the merge. What resulted instead was the idea that we should try to look at streamlining how CEDET get's included with the Emacs tarball rather than having it live in two repositories. I agreed with the idea and got to work on getting a version of CEDET together which would work with 26. I merged in the Emacs -> CEDET direction and ended up with a version of CEDET which is a WIP and works with Emacs 26. Some time passed between then and the start of the discussions here. I think that the approach has evolved past what I was originally planning on working towards and is now something along the lines of: do a final merge of core CEDET components and make the rest into a series of ELPA packages. * What I think that we shouldn't lose sight of (if I may suggest it): is that packaging CEDET, Org Mode and other packages like them in a process which integrates them only when producing the tarball would serve to simplify things for everyone. Emacs core wouldn't be able to depend on packages which are more relevant to the users (and package developers) of Emacs, but these packages would still there like they always have been when one downloads binary Emacs. I'm new around here and I know that I lack the context and experience in this project to make such swooping suggestions or judge the validity of these points, but I thought that they would be worth raising. Kind regards, Edward Steere From MAILER-DAEMON Mon Jan 30 14:28:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYHdE-0000th-0Q for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 14:28:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYHdA-0000sF-QR for emacs-devel@gnu.org; Mon, 30 Jan 2017 14:28:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYHd6-0000d3-5U for emacs-devel@gnu.org; Mon, 30 Jan 2017 14:28:48 -0500 Received: from randomsample.de ([5.45.97.173]:49752) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYHd5-0000Yh-Ot; Mon, 30 Jan 2017 14:28:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=x9iusOYKsAYLqhxWoqa4gvxM6L6fbfwWQxRcliey4Is=; b=p1zEnpvsUsRC3j2YEPfkrq/HaPE7jKTMVPvu46byH9h2wwmSt2gxAfL1V/lYoLrdpsH4UZ7kd4nXxvazTv6zCjF5T+6gPd7Bc0GnSJu3/jG/cdkHm3Je7a37WO4bN7N1; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cYHcx-0004eB-Hk; Mon, 30 Jan 2017 20:28:35 +0100 From: David Engster To: Kaushal Modi Cc: Bastien Guerry , Phillip Lord , emacs-org list , Emacs developers Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (John Wiegley's message of "Mon, 30 Jan 2017 10:59:39 -0500") References: <87k29d7zvw.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Mon, 30 Jan 2017 20:28:30 +0100 Message-ID: <87fuk08i01.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 19:28:50 -0000 John Wiegley writes: >>>>>> "DE" == David Engster writes: > > DE> This is a misunderstanding. I said I wanted to move support for certain > DE> languages and project types into ELPA, not CEDET core. I'm still of the > DE> opinion that moving it completely to ELPA is a mistake. > > It would only be a mistake if other parts of core need to use it. If only > users make use of it, then having it ELPA will be invisible to them. It is a mistake because you are creating more moving targets and bring them together very late in the release process. This reduces the amount of testing that is done for those packages, so bugs will be noticed later and the quality of the relases suffer. It moves even more work into the RC-phase, which is already crowded and where people who can fix those bugs might not be readily available. It removes those packages from Emacs CI, so that breakages due to changes in core are not immediately noticed, and often times they have to be fixed not by those who created the breakage, but by those who notice them. -David From MAILER-DAEMON Mon Jan 30 16:53:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYJsq-00040g-MN for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 16:53:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYJsl-0003yF-6L for emacs-devel@gnu.org; Mon, 30 Jan 2017 16:53:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYJsh-00038m-SN for emacs-devel@gnu.org; Mon, 30 Jan 2017 16:53:03 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:47870) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYJsb-0002zu-HX; Mon, 30 Jan 2017 16:52:54 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 67E981600A7; Mon, 30 Jan 2017 13:52:51 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 9vlWwGs8GDHH; Mon, 30 Jan 2017 13:52:50 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3161C1600A8; Mon, 30 Jan 2017 13:52:50 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id MFOiRd-SbTHl; Mon, 30 Jan 2017 13:52:50 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id EC3941600A7; Mon, 30 Jan 2017 13:52:49 -0800 (PST) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit To: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> <8337g0y34h.fsf@gnu.org> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> Date: Mon, 30 Jan 2017 13:52:46 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <8337g0y34h.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------34CC71419F9E78E8F2F005B7" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 21:53:06 -0000 This is a multi-part message in MIME format. --------------34CC71419F9E78E8F2F005B7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for reviewing the patches. I installed the little patch for delq as that's relatively independent and was not commented on. Attached is a revised set of patches. The first two of are the same as before (rebased), and the third patch attempts to address several of your comments directly. The other comments are remarked on below. On 01/30/2017 07:33 AM, Eli Zaretskii wrote: > I don't understand why we need both this and > emacs_read, which cannot be interrupted. Why not have just emacs_read > which can be interrupted, and use that all over? For example, filelock.c's read_lock_data opens a file, uses emacs_read to read it, and then closes the file. If read_lock_data used emacs_read_quit it might process a quit, which would skip the close and leak a file descriptor. The read_lock_data issue could be fixed by having it call record_unwind_protect_int (close_file_unwind, fd) before calling emacs_read. Possibly all these dicey uses of emacs_read could be fixed in a similar way. However, that would be a bigger and more-intrusive change, and in the read_lock_data case it arguably would be overkill and I wanted to keep the patch smaller. I used emacs_read_quit only in places that I verified were safe, and stuck with emacs_read when I wasn't sure, or where more-intrusive changes would be needed. > > @@ -1252,6 +1256,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, > return (n); > } > n++; > + maybe_quit (); > } > while (n > 0) > { > > regex.c calls maybe_quit internally, so why do we need this additional > call? The regex code does not always call maybe_quit. For example, without this additional call, (re-search-forward "[[:alpha:]]" nil nil most-positive-fixnum) would loop indefinitely in a buffer containing only alphabetic characters on a 64-bit platform. > @@ -724,6 +725,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, > that determines quote parity to the comment-end. */ > while (from != stop) > { > + incr_rarely_quit (&quit_count); > + > > Is it safe to quit from back_comment? It manipulates a global > variable gl_state, and I don't see unwind-protect calls anywhere in > sight. It should be OK. The current master sets immediate_quit=true in back_comment's callers (both scan_lists and Fforward_comment), so current master already lets back_comment quit. If Emacs quits in back_comment, it should longjmp to code that reinitializes gl_state before using it. This also applies to the other places you mentioned. The idea is to insert maybe_quit calls in code that was already subject to immediate_quit=true in the current master, so it should be safe to quit. > @@ -10445,30 +10433,12 @@ handle_interrupt (bool in_signal_handler) > } > else > { > - /* If executing a function that wants to be interrupted out of > - and the user has not deferred quitting by binding `inhibit-quit' > - then quit right away. */ > - if (immediate_quit && NILP (Vinhibit_quit)) > - { > - struct gl_state_s saved; > - > - immediate_quit = false; > - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); > - saved = gl_state; > - quit (); > - gl_state = saved; > - } > - else > - { /* Else request quit when it's safe. */ > - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > - force_quit_count = count; > - if (count == 3) > - { > - immediate_quit = true; > - Vinhibit_quit = Qnil; > - } > - Vquit_flag = Qt; > - } > + /* Request quit when it's safe. */ > + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > + force_quit_count = count; > + if (count == 3) > + Vinhibit_quit = Qnil; > + Vquit_flag = Qt; > } > > This loses the feature whereby C-g on a TTY would quit much faster. > Why is this a good idea? Speed is not a problem, as C-g (with the proposed changes) should quit just as fast on a TTY as it already does under X, and it's been working that way under X for some time. The good idea here is to simplify the analysis of C code, so that reviewers no longer have to worry about random asynchronous longjmps that depend on settings of global variables, something that is a real pain to reason about. Instead, quitting will work the same on a TTY as it does on a GUI, making maintenance easier overall. > And if it is a good idea, why do we still > generate SIGINT on C-g (and force GDB to handle SIGINT specially to > support that)? Inertia, I think. Having C-g generate SIGINT made sense when we had immediate_quit. I expect that it is a useless appendage now, and that in a later patch we can change Emacs so that C-g no longer generates SIGINT but is instead processed like any other input character. --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0001-Remove-immediate_quit.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Remove-immediate_quit.patch" RnJvbSBkY2UwZTYwOWQ3N2ZlN2VkYWE2YzNlYmY1ZTEzMGZlMWE4ZDM0MDBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDI3IEphbiAyMDE3IDA4OjU4OjUxIC0wODAwClN1YmplY3Q6IFtQQVRD SCAxLzNdIFJlbW92ZSBpbW1lZGlhdGVfcXVpdC4KClRoZSBvbGQgY29kZSB0aGF0IHNldHMg YW5kIGNsZWFycyBpbW1lZGlhdGVfcXVpdCB3YXMKaW5lZmZlY3RpdmUgZXhjZXB0IHdoZW4g RW1hY3MgaXMgcnVubmluZyBpbiB0ZXJtaW5hbCBtb2RlLCBhbmQKaGFzIHByb2JsZW1hdGlj IHJhY2UgY29uZGl0aW9ucyBhbnl3YXksIHNvIHJlbW92ZSBpdC4gIFRoaXMKd2lsbCBpbnRy b2R1Y2Ugc29tZSBoYW5ncyB3aGVuIEVtYWNzIHJ1bnMgaW4gdGVybWluYWwgbW9kZSwKYW5k IHRoZXNlIGhhbmdzIHNob3VsZCBiZSBmaXhlZCBpbiBmb2xsb3d1cCBwYXRjaGVzLgoqIHNy Yy9rZXlib2FyZC5jIChpbW1lZGlhdGVfcXVpdCk6IFJlbW92ZS4gIEFsbCB1c2VzIHJlbW92 ZWQuCi0tLQogYWRtaW4vbm90ZXMvbXVsdGktdHR5IHwgIDUgKystLS0KIHNyYy9ieXRlY29k ZS5jICAgICAgICB8ICA0IC0tLS0KIHNyYy9jYWxscHJvYy5jICAgICAgICB8ICA4ICstLS0t LS0tCiBzcmMvZGlyZWQuYyAgICAgICAgICAgfCAgMyAtLS0KIHNyYy9lZGl0Zm5zLmMgICAg ICAgICB8ICA5ICsrLS0tLS0tLQogc3JjL2V2YWwuYyAgICAgICAgICAgIHwgIDIgLS0KIHNy Yy9maWxlaW8uYyAgICAgICAgICB8IDE5IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9mbnMu YyAgICAgICAgICAgICB8IDQyICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogc3JjL2luZGVudC5jICAgICAgICAgIHwgIDIgLS0KIHNyYy9rZXlib2FyZC5j ICAgICAgICB8IDQ1ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2xpc3AuaCAgICAgICAgICAgIHwgIDggLS0tLS0tLS0KIHNyYy9wcm9jZXNz LmMgICAgICAgICB8IDEwICstLS0tLS0tLS0KIHNyYy9yZWdleC5jICAgICAgICAgICB8IDEw ICsrKystLS0tLS0KIHNyYy9zZWFyY2guYyAgICAgICAgICB8IDMzICsrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3N5bnRheC5jICAgICAgICAgIHwgMzAgKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvdzMyZm5zLmMgICAgICAgICAgfCAxMSAr LS0tLS0tLS0tLQogc3JjL3dpbmRvdy5jICAgICAgICAgIHwgIDIgLS0KIDE3IGZpbGVzIGNo YW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9hZG1pbi9ub3Rlcy9tdWx0aS10dHkgYi9hZG1pbi9ub3Rlcy9tdWx0aS10dHkKaW5kZXgg YjU4MTgwZS4uZDAwOTZhZCAxMDA2NDQKLS0tIGEvYWRtaW4vbm90ZXMvbXVsdGktdHR5Cisr KyBiL2FkbWluL25vdGVzL211bHRpLXR0eQpAQCAtMTIzOSw5ICsxMjM5LDggQEAgRElBUlkg T0YgQ0hBTkdFUwogICAgKFVwZGF0ZTogT0ssIGl0IGFsbCBzZWVtcyBzbyBlYXN5IG5vdyAo Tk9UKS4gIElucHV0IGNvdWxkIGJlIGRvbmUKICAgIHN5bmNocm9ub3VzbHkgKHdpdGggd2Fp dF9yZWFkaW5nX3Byb2Nlc3NfaW5wdXQpLCBvciBhc3luY2hyb25vdXNseQogICAgYnkgU0lH SU8gb3IgcG9sbGluZyAoU0lHQUxSTSkuICBDLWcgZWl0aGVyIHNldHMgdGhlIFZxdWl0X2Zs YWcsCi0gICBzaWduYWxzIGEgJ3F1aXQgY29uZGl0aW9uICh3aGVuIGltbWVkaWF0ZV9xdWl0 KSwgb3IgdGhyb3dzIHRvCi0gICAnZ2V0Y2ptcCcgd2hlbiBFbWFjcyB3YXMgd2FpdGluZyBm b3IgaW5wdXQgd2hlbiB0aGUgQy1nIGV2ZW50Ci0gICBhcnJpdmVkLikKKyAgIHNpZ25hbHMg YSAncXVpdCBjb25kaXRpb24sIG9yIHRocm93cyB0byAnZ2V0Y2ptcCcgd2hlbiBFbWFjcyB3 YXMKKyAgIHdhaXRpbmcgZm9yIGlucHV0IHdoZW4gdGhlIEMtZyBldmVudCBhcnJpdmVkLikK IAogLS0gUmVwbGFjZSB3cm9uZ19rYm9hcmRfam1wYnVmIHdpdGggYSBzcGVjaWFsIHJldHVy biB2YWx1ZSBvZgogICAgcmVhZF9jaGFyLiAgSXQgaXMgYWJzdXJkIHRoYXQgd2UgdXNlIHNl dGptcC9sb25nam1wIGp1c3QgdG8gcmV0dXJuCmRpZmYgLS1naXQgYS9zcmMvYnl0ZWNvZGUu YyBiL3NyYy9ieXRlY29kZS5jCmluZGV4IDQ5OWZiODguLmVkNThkMTggMTAwNjQ0Ci0tLSBh L3NyYy9ieXRlY29kZS5jCisrKyBiL3NyYy9ieXRlY29kZS5jCkBAIC04NDIsMTAgKzg0Miw4 IEBAIGV4ZWNfYnl0ZV9jb2RlIChMaXNwX09iamVjdCBieXRlc3RyLCBMaXNwX09iamVjdCB2 ZWN0b3IsIExpc3BfT2JqZWN0IG1heGRlcHRoLAogCSAgICBMaXNwX09iamVjdCB2MiA9IFBP UCwgdjEgPSBUT1A7CiAJICAgIENIRUNLX05VTUJFUiAodjEpOwogCSAgICBFTUFDU19JTlQg biA9IFhJTlQgKHYxKTsKLQkgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogCSAgICB3aGls ZSAoLS1uID49IDAgJiYgQ09OU1AgKHYyKSkKIAkgICAgICB2MiA9IFhDRFIgKHYyKTsKLQkg ICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKIAkgICAgVE9QID0gQ0FSICh2Mik7CiAJICAg IE5FWFQ7CiAJICB9CkBAIC0xMjc2LDEwICsxMjc0LDggQEAgZXhlY19ieXRlX2NvZGUgKExp c3BfT2JqZWN0IGJ5dGVzdHIsIExpc3BfT2JqZWN0IHZlY3RvciwgTGlzcF9PYmplY3QgbWF4 ZGVwdGgsCiAJCUxpc3BfT2JqZWN0IHYyID0gUE9QLCB2MSA9IFRPUDsKIAkJQ0hFQ0tfTlVN QkVSICh2Mik7CiAJCUVNQUNTX0lOVCBuID0gWElOVCAodjIpOwotCQlpbW1lZGlhdGVfcXVp dCA9IHRydWU7CiAJCXdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAodjEpKQogCQkgIHYxID0g WENEUiAodjEpOwotCQlpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQlUT1AgPSBDQVIgKHYx KTsKIAkgICAgICB9CiAJICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyYy9jYWxscHJvYy5jIGIv c3JjL2NhbGxwcm9jLmMKaW5kZXggMzAxY2NmMy4uODU2NzRiYiAxMDA2NDQKLS0tIGEvc3Jj L2NhbGxwcm9jLmMKKysrIGIvc3JjL2NhbGxwcm9jLmMKQEAgLTE5OCwxMSArMTk4LDkgQEAg Y2FsbF9wcm9jZXNzX2NsZWFudXAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKICAgICB7CiAgICAg ICBraWxsICgtc3luY2hfcHJvY2Vzc19waWQsIFNJR0lOVCk7CiAgICAgICBtZXNzYWdlMSAo IldhaXRpbmcgZm9yIHByb2Nlc3MgdG8gZGllLi4uKHR5cGUgQy1nIGFnYWluIHRvIGtpbGwg aXQgaW5zdGFudGx5KSIpOwotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgICAg bWF5YmVfcXVpdCAoKTsKICAgICAgIHdhaXRfZm9yX3Rlcm1pbmF0aW9uIChzeW5jaF9wcm9j ZXNzX3BpZCwgMCwgMSk7CiAgICAgICBzeW5jaF9wcm9jZXNzX3BpZCA9IDA7Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICAgICAgbWVzc2FnZTEgKCJXYWl0aW5nIGZvciBw cm9jZXNzIHRvIGRpZS4uLmRvbmUiKTsKICAgICB9CiAjZW5kaWYJLyogIU1TRE9TICovCkBA IC03MjYsNyArNzI0LDYgQEAgY2FsbF9wcm9jZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3Bf T2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogICAgICAgcHJvY2Vzc19jb2Rpbmcuc3JjX211 bHRpYnl0ZSA9IDA7CiAgICAgfQogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5 YmVfcXVpdCAoKTsKIAogICBpZiAoMCA8PSBmZDApCkBAIC03NjksNyArNzY2LDYgQEAgY2Fs bF9wcm9jZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmls ZWZkLAogCSAgICB9CiAKIAkgIC8qIE5vdyBOUkVBRCBpcyB0aGUgdG90YWwgYW1vdW50IG9m IGRhdGEgaW4gdGhlIGJ1ZmZlci4gICovCi0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CiAJICBpZiAoIW5yZWFkKQogCSAgICA7CkBAIC04NDIsNyArODM4LDcgQEAgY2FsbF9wcm9j ZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAog CQkgd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBkZXRlY3RlZCBhIGNvZGluZyBzeXN0ZW0uICAq LwogCSAgICAgIGRpc3BsYXlfb25fdGhlX2ZseSA9IHRydWU7CiAJICAgIH0KLQkgIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKKwogCSAgbWF5YmVfcXVpdCAoKTsKIAl9CiAgICAgZ2l2ZV91 cDogOwpAQCAtODYwLDggKzg1Niw2IEBAIGNhbGxfcHJvY2VzcyAocHRyZGlmZl90IG5hcmdz LCBMaXNwX09iamVjdCAqYXJncywgaW50IGZpbGVmZCwKICAgd2FpdF9mb3JfdGVybWluYXRp b24gKHBpZCwgJnN0YXR1cywgZmQwIDwgMCk7CiAjZW5kaWYKIAotICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwotCiAgIC8qIERvbid0IGtpbGwgYW55IGNoaWxkcmVuIHRoYXQgdGhlIHN1 YnByb2Nlc3MgbWF5IGhhdmUgbGVmdCBiZWhpbmQKICAgICAgd2hlbiBleGl0aW5nLiAgKi8K ICAgc3luY2hfcHJvY2Vzc19waWQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2RpcmVkLmMgYi9z cmMvZGlyZWQuYwppbmRleCA1MmU4MWZiLi41ZWEwMGZiIDEwMDY0NAotLS0gYS9zcmMvZGly ZWQuYworKysgYi9zcmMvZGlyZWQuYwpAQCAtMjQ4LDE0ICsyNDgsMTEgQEAgZGlyZWN0b3J5 X2ZpbGVzX2ludGVybmFsIChMaXNwX09iamVjdCBkaXJlY3RvcnksIExpc3BfT2JqZWN0IGZ1 bGwsCiAKICAgICAgIC8qIE5vdyB0aGF0IHdlIGhhdmUgdW53aW5kX3Byb3RlY3QgaW4gcGxh Y2UsIHdlIG1pZ2h0IGFzIHdlbGwKIAkgYWxsb3cgbWF0Y2hpbmcgdG8gYmUgaW50ZXJydXB0 ZWQuICAqLwotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgICAgbWF5YmVfcXVp dCAoKTsKIAogICAgICAgYm9vbCB3YW50ZWQgPSAoTklMUCAobWF0Y2gpCiAJCSAgICAgfHwg cmVfc2VhcmNoIChidWZwLCBTU0RBVEEgKG5hbWUpLCBsZW4sIDAsIGxlbiwgMCkgPj0gMCk7 CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0KICAgICAgIGlmICh3YW50ZWQp CiAJewogCSAgaWYgKCFOSUxQIChmdWxsKSkKZGlmZiAtLWdpdCBhL3NyYy9lZGl0Zm5zLmMg Yi9zcmMvZWRpdGZucy5jCmluZGV4IDgyYzZhYmIuLmI2MDU0MzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9lZGl0Zm5zLmMKKysrIGIvc3JjL2VkaXRmbnMuYwpAQCAtMzA1Myw3ICszMDUzLDYgQEAg ZGV0ZXJtaW5lcyB3aGV0aGVyIGNhc2UgaXMgc2lnbmlmaWNhbnQgb3IgaWdub3JlZC4gICov KQogICBpMiA9IGJlZ3AyOwogICBpMV9ieXRlID0gYnVmX2NoYXJwb3NfdG9fYnl0ZXBvcyAo YnAxLCBpMSk7CiAgIGkyX2J5dGUgPSBidWZfY2hhcnBvc190b19ieXRlcG9zIChicDIsIGky KTsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogCiAgIHdoaWxlIChpMSA8IGVuZHAxICYm IGkyIDwgZW5kcDIpCiAgICAgewpAQCAtMzA5MiwxNyArMzA5MSwxMyBAQCBkZXRlcm1pbmVz IHdoZXRoZXIgY2FzZSBpcyBzaWduaWZpY2FudCBvciBpZ25vcmVkLiAgKi8pCiAJICBjMSA9 IGNoYXJfdGFibGVfdHJhbnNsYXRlICh0cnQsIGMxKTsKIAkgIGMyID0gY2hhcl90YWJsZV90 cmFuc2xhdGUgKHRydCwgYzIpOwogCX0KKwogICAgICAgaWYgKGMxICE9IGMyKQotCXsKLQkg IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0JICByZXR1cm4gbWFrZV9udW1iZXIgKGMxIDwg YzIgPyAtMSAtIGNoYXJzIDogY2hhcnMgKyAxKTsKLQl9CisJcmV0dXJuIG1ha2VfbnVtYmVy IChjMSA8IGMyID8gLTEgLSBjaGFycyA6IGNoYXJzICsgMSk7CiAKICAgICAgIGNoYXJzKys7 CiAgICAgfQogCi0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0KICAgLyogVGhlIHN0cmlu Z3MgbWF0Y2ggYXMgZmFyIGFzIHRoZXkgZ28uCiAgICAgIElmIG9uZSBpcyBzaG9ydGVyLCB0 aGF0IG9uZSBpcyBsZXNzLiAgKi8KICAgaWYgKGNoYXJzIDwgZW5kcDEgLSBiZWdwMSkKZGlm ZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDYyZDRhZjEuLjg0NDg3 OWQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMTEzMSw3 ICsxMTMxLDYgQEAgdW53aW5kX3RvX2NhdGNoIChzdHJ1Y3QgaGFuZGxlciAqY2F0Y2gsIExp c3BfT2JqZWN0IHZhbHVlKQogICAvKiBSZXN0b3JlIGNlcnRhaW4gc3BlY2lhbCBDIHZhcmlh Ymxlcy4gICovCiAgIHNldF9wb2xsX3N1cHByZXNzX2NvdW50IChjYXRjaC0+cG9sbF9zdXBw cmVzc19jb3VudCk7CiAgIHVuYmxvY2tfaW5wdXRfdG8gKGNhdGNoLT5pbnRlcnJ1cHRfaW5w dXRfYmxvY2tlZCk7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAKICAgZG8KICAgICB7 CkBAIC0xNTE3LDcgKzE1MTYsNiBAQCBzaWduYWxfb3JfcXVpdCAoTGlzcF9PYmplY3QgZXJy b3Jfc3ltYm9sLCBMaXNwX09iamVjdCBkYXRhLCBib29sIGtleWJvYXJkX3F1aXQpCiAgIExp c3BfT2JqZWN0IGNsYXVzZSA9IFFuaWw7CiAgIHN0cnVjdCBoYW5kbGVyICpoOwogCi0gIGlt bWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIGlmIChnY19pbl9wcm9ncmVzcyB8fCB3YWl0aW5n X2Zvcl9pbnB1dCkKICAgICBlbWFjc19hYm9ydCAoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Zp bGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IGE0NmNmYzcuLmExMDk3MzcgMTAwNjQ0Ci0t LSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTE5NjAsOSArMTk2MCw3 IEBAIHBlcm1pc3Npb25zLiAgKi8pCiAgICAgICByZXBvcnRfZmlsZV9lcnJvciAoIkNvcHlp bmcgcGVybWlzc2lvbnMgdG8iLCBuZXduYW1lKTsKICAgICB9CiAjZWxzZSAvKiBub3QgV0lO RE9XU05UICovCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgaWZkID0gZW1hY3Nfb3Bl biAoU1NEQVRBIChlbmNvZGVkX2ZpbGUpLCBPX1JET05MWSwgMCk7Ci0gIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAKICAgaWYgKGlmZCA8IDApCiAgICAgcmVwb3J0X2ZpbGVfZXJyb3Ig KCJPcGVuaW5nIGlucHV0IGZpbGUiLCBmaWxlKTsKQEAgLTIwMjQsNyArMjAyMiw2IEBAIHBl cm1pc3Npb25zLiAgKi8pCiAJb2xkc2l6ZSA9IG91dF9zdC5zdF9zaXplOwogICAgIH0KIAot ICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1heWJlX3F1aXQgKCk7CiAKICAgaWYgKGNs b25lX2ZpbGUgKG9mZCwgaWZkKSkKQEAgLTIwNDcsOCArMjA0NCw2IEBAIHBlcm1pc3Npb25z LiAgKi8pCiAgIGlmIChuZXdzaXplIDwgb2xkc2l6ZSAmJiBmdHJ1bmNhdGUgKG9mZCwgbmV3 c2l6ZSkgIT0gMCkKICAgICByZXBvcnRfZmlsZV9lcnJvciAoIlRydW5jYXRpbmcgb3V0cHV0 IGZpbGUiLCBuZXduYW1lKTsKIAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAjaWZu ZGVmIE1TRE9TCiAgIC8qIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBmaWxlIHBlcm1pc3Npb25z LCBhbmQgaWYgcmVxdWVzdGVkLCBhbHNvIGl0cwogICAgICBvd25lciBhbmQgZ3JvdXAuICAq LwpAQCAtMzQwMywxMyArMzM5OCwxMSBAQCByZWFkX25vbl9yZWd1bGFyIChMaXNwX09iamVj dCBzdGF0ZSkKIHsKICAgaW50IG5ieXRlczsKIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7 CiAgIG1heWJlX3F1aXQgKCk7CiAgIG5ieXRlcyA9IGVtYWNzX3JlYWQgKFhTQVZFX0lOVEVH RVIgKHN0YXRlLCAwKSwKIAkJICAgICAgICgoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZVEUg LSBCRUdfQllURQogCQkJKyBYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMSkpLAogCQkgICAgICAg WFNBVkVfSU5URUdFUiAoc3RhdGUsIDIpKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsK ICAgLyogRmFzdCByZWN5Y2xlIHRoaXMgb2JqZWN0IGZvciB0aGUgbGlrZWx5IG5leHQgY2Fs bC4gICovCiAgIGZyZWVfbWlzYyAoc3RhdGUpOwogICByZXR1cm4gbWFrZV9udW1iZXIgKG5i eXRlcyk7CkBAIC0zODY4LDcgKzM4NjEsNiBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2Rl Jywgd2hpY2ggc2VlLiAgKi8pCiAJICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBm aWxlIHBvc2l0aW9uIiwgb3JpZ19maWxlbmFtZSk7CiAJfQogCi0gICAgICBpbW1lZGlhdGVf cXVpdCA9IHRydWU7CiAgICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyogQ291bnQgaG93 IG1hbnkgY2hhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlCiAJIG1hdGNoIHRoZSB0ZXh0 IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4gICovCkBAIC0zOTA3LDcgKzM4OTks NiBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICBp ZiAoYnVmcG9zICE9IG5yZWFkKQogCSAgICBicmVhazsKIAl9Ci0gICAgICBpbW1lZGlhdGVf cXVpdCA9IGZhbHNlOwogICAgICAgLyogSWYgdGhlIGZpbGUgbWF0Y2hlcyB0aGUgYnVmZmVy IGNvbXBsZXRlbHksCiAJIHRoZXJlJ3Mgbm8gbmVlZCB0byByZXBsYWNlIGFueXRoaW5nLiAg Ki8KICAgICAgIGlmIChzYW1lX2F0X3N0YXJ0IC0gQkVHVl9CWVRFID09IGVuZF9vZmZzZXQg LSBiZWdfb2Zmc2V0KQpAQCAtMzkxOSw3ICszOTEwLDYgQEAgYnkgY2FsbGluZyBgZm9ybWF0 LWRlY29kZScsIHdoaWNoIHNlZS4gICovKQogCSAgZGVsX3JhbmdlXzEgKHNhbWVfYXRfc3Rh cnQsIHNhbWVfYXRfZW5kLCAwLCAwKTsKIAkgIGdvdG8gaGFuZGxlZDsKIAl9Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyog Q291bnQgaG93IG1hbnkgY2hhcnMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogCSBtYXRjaCB0 aGUgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICBCdXQsIGlmIHdlIGhhdmUKQEAg LTM5NzcsNyArMzk2Nyw2IEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGljaCBz ZWUuICAqLykKIAkgIGlmIChucmVhZCA9PSAwKQogCSAgICBicmVhazsKIAl9Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgICAgICBpZiAoISBnaXZldXBfbWF0Y2hfZW5k KQogCXsKQEAgLTQwNzUsMTEgKzQwNjQsOSBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2Rl Jywgd2hpY2ggc2VlLiAgKi8pCiAJICAgICBxdWl0dGluZyB3aGlsZSByZWFkaW5nIGEgaHVn ZSBmaWxlLiAgKi8KIAogCSAgLyogQWxsb3cgcXVpdHRpbmcgb3V0IG9mIHRoZSBhY3R1YWwg SS9PLiAgKi8KLQkgIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKIAkgIG1heWJlX3F1aXQgKCk7 CiAJICB0aGlzID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdW5wcm9jZXNzZWQsCiAJ CQkgICAgIFJFQURfQlVGX1NJWkUgLSB1bnByb2Nlc3NlZCk7Ci0JICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwogCiAJICBpZiAodGhpcyA8PSAwKQogCSAgICBicmVhazsKQEAgLTQyOTQs MTMgKzQyODEsMTEgQEAgYnkgY2FsbGluZyBgZm9ybWF0LWRlY29kZScsIHdoaWNoIHNlZS4g ICovKQogCSAgICAvKiBBbGxvdyBxdWl0dGluZyBvdXQgb2YgdGhlIGFjdHVhbCBJL08uICBX ZSBkb24ndCBtYWtlIHRleHQKIAkgICAgICAgcGFydCBvZiB0aGUgYnVmZmVyIHVudGlsIGFs bCB0aGUgcmVhZGluZyBpcyBkb25lLCBzbyBhIEMtZwogCSAgICAgICBoZXJlIGRvZXNuJ3Qg ZG8gYW55IGhhcm0uICAqLwotCSAgICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAJICAgIG1h eWJlX3F1aXQgKCk7CiAJICAgIHRoaXMgPSBlbWFjc19yZWFkIChmZCwKIAkJCSAgICAgICAo KGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKIAkJCQkrIGluc2VydGVk KSwKIAkJCSAgICAgICB0cnl0cnkpOwotCSAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CSAgfQogCiAJaWYgKHRoaXMgPD0gMCkKQEAgLTUwMDIsOCArNDk4Nyw2IEBAIHdyaXRlX3Jl Z2lvbiAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3Qg ZmlsZW5hbWUsCiAJfQogICAgIH0KIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7Ci0KICAg aWYgKFNUUklOR1AgKHN0YXJ0KSkKICAgICBvayA9IGFfd3JpdGUgKGRlc2MsIHN0YXJ0LCAw LCBTQ0hBUlMgKHN0YXJ0KSwgJmFubm90YXRpb25zLCAmY29kaW5nKTsKICAgZWxzZSBpZiAo WElOVCAoc3RhcnQpICE9IFhJTlQgKGVuZCkpCkBAIC01MDI2LDggKzUwMDksNiBAQCB3cml0 ZV9yZWdpb24gKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQsIExpc3BfT2Jq ZWN0IGZpbGVuYW1lLAogICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwogICAgIH0KIAotICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAgIC8qIGZzeW5jIGlzIG5vdCBjcnVjaWFsIGZv ciB0ZW1wb3JhcnkgZmlsZXMuICBOb3IgZm9yIGF1dG8tc2F2ZQogICAgICBmaWxlcywgc2lu Y2UgdGhleSBtaWdodCBsb3NlIHNvbWUgd29yayBhbnl3YXkuICAqLwogICBpZiAob3Blbl9h bmRfY2xvc2VfZmlsZSAmJiAhYXV0b19zYXZpbmcgJiYgIXdyaXRlX3JlZ2lvbl9pbmhpYml0 X2ZzeW5jKQpkaWZmIC0tZ2l0IGEvc3JjL2Zucy5jIGIvc3JjL2Zucy5jCmluZGV4IDEzNmEy MTkuLjQ0NDMzOWMgMTAwNjQ0Ci0tLSBhL3NyYy9mbnMuYworKysgYi9zcmMvZm5zLmMKQEAg LTEzNjEsMTggKzEzNjEsMTUgQEAgREVGVU4gKCJudGhjZHIiLCBGbnRoY2RyLCBTbnRoY2Ry LCAyLCAyLCAwLAogICBDSEVDS19OVU1CRVIgKG4pOwogICBFTUFDU19JTlQgbnVtID0gWElO VCAobik7CiAgIExpc3BfT2JqZWN0IHRhaWwgPSBsaXN0OwotICBpbW1lZGlhdGVfcXVpdCA9 IHRydWU7CiAgIGZvciAoRU1BQ1NfSU5UIGkgPSAwOyBpIDwgbnVtOyBpKyspCiAgICAgewog ICAgICAgaWYgKCEgQ09OU1AgKHRhaWwpKQogCXsKLQkgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAJICBDSEVDS19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAJICByZXR1cm4gUW5pbDsK IAl9CiAgICAgICB0YWlsID0gWENEUiAodGFpbCk7CiAgICAgfQotICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwogICByZXR1cm4gdGFpbDsKIH0KIApAQCAtMTQxOSwxNyArMTQxNiwxMiBA QCBERUZVTiAoIm1lbXEiLCBGbWVtcSwgU21lbXEsIDIsIDIsIDAsCiBUaGUgdmFsdWUgaXMg YWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAgKi8pCiAgIChM aXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIGltbWVkaWF0ZV9xdWl0 ID0gdHJ1ZTsKICAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09O U1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgaWYgKEVRIChY Q0FSICh0YWlsKSwgZWx0KSkKLQl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCSAg cmV0dXJuIHRhaWw7Ci0JfQorCXJldHVybiB0YWlsOwogICAgIH0KLSAgaW1tZWRpYXRlX3F1 aXQgPSBmYWxzZTsKICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4g UW5pbDsKIH0KQEAgLTE0NDIsMTggKzE0MzQsMTMgQEAgVGhlIHZhbHVlIGlzIGFjdHVhbGx5 IHRoZSB0YWlsIG9mIExJU1Qgd2hvc2UgY2FyIGlzIEVMVC4gICovKQogICBpZiAoIUZMT0FU UCAoZWx0KSkKICAgICByZXR1cm4gRm1lbXEgKGVsdCwgbGlzdCk7CiAKLSAgaW1tZWRpYXRl X3F1aXQgPSB0cnVlOwogICBMaXNwX09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0 OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBMaXNw X09iamVjdCB0ZW0gPSBYQ0FSICh0YWlsKTsKICAgICAgIGlmIChGTE9BVFAgKHRlbSkgJiYg aW50ZXJuYWxfZXF1YWwgKGVsdCwgdGVtLCAwLCAwLCBRbmlsKSkKLQl7Ci0JICBpbW1lZGlh dGVfcXVpdCA9IGZhbHNlOwotCSAgcmV0dXJuIHRhaWw7Ci0JfQorCXJldHVybiB0YWlsOwog ICAgIH0KLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgQ0hFQ0tfTElTVF9FTkQgKHRh aWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKIH0KQEAgLTE0NjQsMTUgKzE0NTEsMTIgQEAg VGhlIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBlbGVtZW50IG9mIExJU1Qgd2hvc2Ug Y2FyIGlzIEtFWS4KIEVsZW1lbnRzIG9mIExJU1QgdGhhdCBhcmUgbm90IGNvbnNlcyBhcmUg aWdub3JlZC4gICovKQogICAoTGlzcF9PYmplY3Qga2V5LCBMaXNwX09iamVjdCBsaXN0KQog ewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIExpc3BfT2JqZWN0IHRhaWw7CiAgIGZv ciAodGFpbCA9IGxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQotICAg IGlmIChDT05TUCAoWENBUiAodGFpbCkpICYmIEVRIChYQ0FSIChYQ0FSICh0YWlsKSksIGtl eSkpCi0gICAgICB7Ci0JaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKKyAgICB7CisgICAgICBp ZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAmJiBFUSAoWENBUiAoWENBUiAodGFpbCkpLCBrZXkp KQogCXJldHVybiBYQ0FSICh0YWlsKTsKLSAgICAgIH0KLSAgaW1tZWRpYXRlX3F1aXQgPSBm YWxzZTsKKyAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJu IFFuaWw7CiB9CkBAIC0xNTI5LDE1ICsxNTEzLDEyIEBAIERFRlVOICgicmFzc3EiLCBGcmFz c3EsIFNyYXNzcSwgMiwgMiwgMCwKIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3Qg ZWxlbWVudCBvZiBMSVNUIHdob3NlIGNkciBpcyBLRVkuICAqLykKICAgKExpc3BfT2JqZWN0 IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwog ICBMaXNwX09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7 IHRhaWwgPSBYQ0RSICh0YWlsKSkKLSAgICBpZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAmJiBF USAoWENEUiAoWENBUiAodGFpbCkpLCBrZXkpKQotICAgICAgewotCWltbWVkaWF0ZV9xdWl0 ID0gZmFsc2U7CisgICAgeworICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEg KFhDRFIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAg ICB9Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CisgICAgfQogICBDSEVDS19MSVNUX0VO RCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwogfQpAQCAtMjA3NywyMSArMjA1OCwx OCBAQCB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUg dG8gdXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBl ZmZlY3RzLiAgKi8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCwg TGlzcF9PYmplY3QgdmFsKQogewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIExpc3Bf T2JqZWN0IHByZXYgPSBRbmlsOwogICBmb3IgKExpc3BfT2JqZWN0IHRhaWwgPSBwbGlzdDsg Q09OU1AgKHRhaWwpICYmIENPTlNQIChYQ0RSICh0YWlsKSk7CiAgICAgICAgdGFpbCA9IFhD RFIgKFhDRFIgKHRhaWwpKSkKICAgICB7CiAgICAgICBpZiAoRVEgKHByb3AsIFhDQVIgKHRh aWwpKSkKIAl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCSAgRnNldGNhciAoWENE UiAodGFpbCksIHZhbCk7CiAJICByZXR1cm4gcGxpc3Q7CiAJfQogCiAgICAgICBwcmV2ID0g dGFpbDsKICAgICB9Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIExpc3BfT2JqZWN0 IG5ld2NlbGwKICAgICA9IEZjb25zIChwcm9wLCBGY29ucyAodmFsLCBOSUxQIChwcmV2KSA/ IHBsaXN0IDogWENEUiAoWENEUiAocHJldikpKSk7CiAgIGlmIChOSUxQIChwcmV2KSkKQEAg LTI0NDIsNyArMjQyMCw2IEBAIHVzYWdlOiAobmNvbmMgJnJlc3QgTElTVFMpICAqLykKIAog ICAgICAgQ0hFQ0tfQ09OUyAodGVtKTsKIAotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVl OwogICAgICAgTGlzcF9PYmplY3QgdGFpbDsKICAgICAgIGRvCiAJewpAQCAtMjQ1MSw3ICsy NDI4LDYgQEAgdXNhZ2U6IChuY29uYyAmcmVzdCBMSVNUUykgICovKQogCX0KICAgICAgIHdo aWxlIChDT05TUCAodGVtKSk7CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAg ICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCiAgICAgICB0ZW0gPSBhcmdzW2Fy Z251bSArIDFdOwpAQCAtMjg3NCwxMyArMjg1MCwxMSBAQCBwcm9wZXJ0eSBhbmQgYSBwcm9w ZXJ0eSB3aXRoIHRoZSB2YWx1ZSBuaWwuCiBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRh aWwgb2YgUExJU1Qgd2hvc2UgY2FyIGlzIFBST1AuICAqLykKICAgKExpc3BfT2JqZWN0IHBs aXN0LCBMaXNwX09iamVjdCBwcm9wKQogewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAg IHdoaWxlIChDT05TUCAocGxpc3QpICYmICFFUSAoWENBUiAocGxpc3QpLCBwcm9wKSkKICAg ICB7CiAgICAgICBwbGlzdCA9IFhDRFIgKHBsaXN0KTsKICAgICAgIHBsaXN0ID0gQ0RSIChw bGlzdCk7CiAgICAgfQotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICByZXR1cm4gcGxp c3Q7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmRlbnQuYyBiL3NyYy9pbmRlbnQuYwppbmRl eCAyMzk1MWExLi4zM2Y3MDljIDEwMDY0NAotLS0gYS9zcmMvaW5kZW50LmMKKysrIGIvc3Jj L2luZGVudC5jCkBAIC0xMjAwLDcgKzEyMDAsNiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlm Zl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICAg IGNvbnRpbnVhdGlvbl9nbHlwaF93aWR0aCA9IDA7ICAvKiBJbiB0aGUgZnJpbmdlLiAgKi8K ICNlbmRpZgogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5YmVfcXVpdCAoKTsK IAogICAvKiBJdCdzIGp1c3QgaW1wb3NzaWJsZSB0byBiZSB0b28gcGFyYW5vaWQgaGVyZS4g ICovCkBAIC0xNjk0LDcgKzE2OTMsNiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZy b20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICAvKiBOb256 ZXJvIGlmIGhhdmUganVzdCBjb250aW51ZWQgYSBsaW5lICovCiAgIHZhbF9jb21wdXRlX21v dGlvbi5jb250aW4gPSAoY29udGluX2hwb3MgJiYgcHJldl9ocG9zID09IDApOwogCi0gIGlt bWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIHJldHVybiAmdmFsX2NvbXB1dGVfbW90aW9uOwog fQogCmRpZmYgLS1naXQgYS9zcmMva2V5Ym9hcmQuYyBiL3NyYy9rZXlib2FyZC5jCmluZGV4 IDBjMDRkOTUuLjMxNzY2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBiL3Ny Yy9rZXlib2FyZC5jCkBAIC0xNjksOSArMTY5LDYgQEAgc3RydWN0IGtib2FyZCAqZWNob19r Ym9hcmQ7CiAKIExpc3BfT2JqZWN0IGVjaG9fbWVzc2FnZV9idWZmZXI7CiAKLS8qIFRydWUg bWVhbnMgQy1nIHNob3VsZCBjYXVzZSBpbW1lZGlhdGUgZXJyb3Itc2lnbmFsLiAgKi8KLWJv b2wgaW1tZWRpYXRlX3F1aXQ7Ci0KIC8qIENoYXJhY3RlciB0aGF0IGNhdXNlcyBhIHF1aXQu ICBOb3JtYWxseSBDLWcuCiAKICAgIElmIHdlIGFyZSBydW5uaW5nIG9uIGFuIG9yZGluYXJ5 IHRlcm1pbmFsLCB0aGlzIG11c3QgYmUgYW4gb3JkaW5hcnkKQEAgLTM1ODQsMTYgKzM1ODEs NyBAQCBrYmRfYnVmZmVyX3N0b3JlX2J1ZmZlcmVkX2V2ZW50ICh1bmlvbiBidWZmZXJlZF9p bnB1dF9ldmVudCAqZXZlbnQsCiAgICAgIGFzIGlucHV0LCBzZXQgcXVpdC1mbGFnIHRvIGNh dXNlIGFuIGludGVycnVwdC4gICovCiAgIGlmICghTklMUCAoVnRocm93X29uX2lucHV0KQog ICAgICAgJiYgTklMUCAoRm1lbXEgKGlnbm9yZV9ldmVudCwgVndoaWxlX25vX2lucHV0X2ln bm9yZV9ldmVudHMpKSkKLSAgICB7Ci0gICAgICBWcXVpdF9mbGFnID0gVnRocm93X29uX2lu cHV0OwotICAgICAgLyogSWYgd2UncmUgaW5zaWRlIGEgZnVuY3Rpb24gdGhhdCB3YW50cyBp bW1lZGlhdGUgcXVpdHMsCi0JIGRvIGl0IG5vdy4gICovCi0gICAgICBpZiAoaW1tZWRpYXRl X3F1aXQgJiYgTklMUCAoVmluaGliaXRfcXVpdCkpCi0JewotCSAgaW1tZWRpYXRlX3F1aXQg PSBmYWxzZTsKLQkgIG1heWJlX3F1aXQgKCk7Ci0JfQotICAgIH0KKyAgICBWcXVpdF9mbGFn ID0gVnRocm93X29uX2lucHV0OwogfQogCiAKQEAgLTEwNDQ1LDMwICsxMDQzMywxMiBAQCBo YW5kbGVfaW50ZXJydXB0IChib29sIGluX3NpZ25hbF9oYW5kbGVyKQogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIC8qIElmIGV4ZWN1dGluZyBhIGZ1bmN0aW9uIHRoYXQgd2FudHMg dG8gYmUgaW50ZXJydXB0ZWQgb3V0IG9mCi0JIGFuZCB0aGUgdXNlciBoYXMgbm90IGRlZmVy cmVkIHF1aXR0aW5nIGJ5IGJpbmRpbmcgYGluaGliaXQtcXVpdCcKLQkgdGhlbiBxdWl0IHJp Z2h0IGF3YXkuICAqLwotICAgICAgaWYgKGltbWVkaWF0ZV9xdWl0ICYmIE5JTFAgKFZpbmhp Yml0X3F1aXQpICYmICF3YWl0aW5nX2Zvcl9pbnB1dCkKLQl7Ci0JICBzdHJ1Y3QgZ2xfc3Rh dGVfcyBzYXZlZDsKLQotCSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQkgIHB0aHJlYWRf c2lnbWFzayAoU0lHX1NFVE1BU0ssICZlbXB0eV9tYXNrLCAwKTsKLQkgIHNhdmVkID0gZ2xf c3RhdGU7Ci0JICBxdWl0ICgpOwotCSAgZ2xfc3RhdGUgPSBzYXZlZDsKLQl9Ci0gICAgICBl bHNlCi0gICAgICAgIHsgLyogRWxzZSByZXF1ZXN0IHF1aXQgd2hlbiBpdCdzIHNhZmUuICAq LwotCSAgaW50IGNvdW50ID0gTklMUCAoVnF1aXRfZmxhZykgPyAxIDogZm9yY2VfcXVpdF9j b3VudCArIDE7Ci0JICBmb3JjZV9xdWl0X2NvdW50ID0gY291bnQ7Ci0JICBpZiAoY291bnQg PT0gMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0 cnVlOwotICAgICAgICAgICAgICBWaW5oaWJpdF9xdWl0ID0gUW5pbDsKLSAgICAgICAgICAg IH0KLSAgICAgICAgICBWcXVpdF9mbGFnID0gUXQ7Ci0gICAgICAgIH0KKyAgICAgIC8qIFJl cXVlc3QgcXVpdCB3aGVuIGl0J3Mgc2FmZS4gICovCisgICAgICBpbnQgY291bnQgPSBOSUxQ IChWcXVpdF9mbGFnKSA/IDEgOiBmb3JjZV9xdWl0X2NvdW50ICsgMTsKKyAgICAgIGZvcmNl X3F1aXRfY291bnQgPSBjb3VudDsKKyAgICAgIGlmIChjb3VudCA9PSAzKQorCVZpbmhpYml0 X3F1aXQgPSBRbmlsOworICAgICAgVnF1aXRfZmxhZyA9IFF0OwogICAgIH0KIAogICBwdGhy ZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7CkBAIC0xMDkwNyw3 ICsxMDg3Nyw2IEBAIGluaXRfa2V5Ym9hcmQgKHZvaWQpCiB7CiAgIC8qIFRoaXMgaXMgY29y cmVjdCBiZWZvcmUgb3V0ZXJtb3N0IGludm9jYXRpb24gb2YgdGhlIGVkaXRvciBsb29wLiAg Ki8KICAgY29tbWFuZF9sb29wX2xldmVsID0gLTE7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAgIHF1aXRfY2hhciA9IEN0bCAoJ2cnKTsKICAgVnVucmVhZF9jb21tYW5kX2V2ZW50 cyA9IFFuaWw7CiAgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUgPSBpbnZhbGlkX3RpbWVz cGVjICgpOwpkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggOTFj NDMwZi4uNjg2NmQwZiAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5o CkBAIC0zMTMxLDExICszMTMxLDYgQEAgZXh0ZXJuIExpc3BfT2JqZWN0IG1lbW9yeV9zaWdu YWxfZGF0YTsKICAgIGltcG9zc2libGUsIG9mIGNvdXJzZS4gIEJ1dCBpdCBpcyB2ZXJ5IGRl c2lyYWJsZSB0byBhdm9pZCBjcmVhdGluZwogICAgbG9vcHMgd2hlcmUgbWF5YmVfcXVpdCBp cyBpbXBvc3NpYmxlLgogCi0gICBFeGNlcHRpb246IGlmIHlvdSBzZXQgaW1tZWRpYXRlX3F1 aXQsIHRoZSBoYW5kbGVyIHRoYXQgcmVzcG9uZHMgdG8KLSAgIHRoZSBDLWcgZG9lcyB0aGUg cXVpdCBpdHNlbGYuICBUaGlzIGlzIGEgZ29vZCB0aGluZyB0byBkbyBhcm91bmQgYQotICAg bG9vcCB0aGF0IGhhcyBubyBzaWRlIGVmZmVjdHMgYW5kIChpbiBwYXJ0aWN1bGFyKSBjYW5u b3QgY2FsbAotICAgYXJiaXRyYXJ5IExpc3AgY29kZS4KLQogICAgSWYgcXVpdC1mbGFnIGlz IHNldCB0byBga2lsbC1lbWFjcycgdGhlIFNJR0lOVCBoYW5kbGVyIGhhcyByZWNlaXZlZAog ICAgYSByZXF1ZXN0IHRvIGV4aXQgRW1hY3Mgd2hlbiBpdCBpcyBzYWZlIHRvIGRvLgogCkBA IC00MzQ4LDkgKzQzNDMsNiBAQCBleHRlcm4gY2hhciBteV9lZGF0YVtdOwogZXh0ZXJuIGNo YXIgbXlfZW5kYnNzW107CiBleHRlcm4gY2hhciAqbXlfZW5kYnNzX3N0YXRpYzsKIAotLyog VHJ1ZSBtZWFucyBeRyBjYW4gcXVpdCBpbnN0YW50bHkuICAqLwotZXh0ZXJuIGJvb2wgaW1t ZWRpYXRlX3F1aXQ7Ci0KIGV4dGVybiB2b2lkICp4bWFsbG9jIChzaXplX3QpIEFUVFJJQlVU RV9NQUxMT0NfU0laRSAoKDEpKTsKIGV4dGVybiB2b2lkICp4emFsbG9jIChzaXplX3QpIEFU VFJJQlVURV9NQUxMT0NfU0laRSAoKDEpKTsKIGV4dGVybiB2b2lkICp4cmVhbGxvYyAodm9p ZCAqLCBzaXplX3QpIEFUVFJJQlVURV9BTExPQ19TSVpFICgoMikpOwpkaWZmIC0tZ2l0IGEv c3JjL3Byb2Nlc3MuYyBiL3NyYy9wcm9jZXNzLmMKaW5kZXggZGJkNDM1OC4uNDM0YTM5NSAx MDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MuYworKysgYi9zcmMvcHJvY2Vzcy5jCkBAIC0zNDMx LDcgKzM0MzEsNiBAQCBjb25uZWN0X25ldHdvcmtfc29ja2V0IChMaXNwX09iamVjdCBwcm9j LCBMaXNwX09iamVjdCBhZGRyaW5mb3MsCiAJICBicmVhazsKIAl9CiAKLSAgICAgIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKICAgICAgIG1heWJlX3F1aXQgKCk7CiAKICAgICAgIHJldCA9 IGNvbm5lY3QgKHMsIHNhLCBhZGRybGVuKTsKQEAgLTM0MzksOCArMzQzOCw3IEBAIGNvbm5l Y3RfbmV0d29ya19zb2NrZXQgKExpc3BfT2JqZWN0IHByb2MsIExpc3BfT2JqZWN0IGFkZHJp bmZvcywKIAogICAgICAgaWYgKHJldCA9PSAwIHx8IHhlcnJubyA9PSBFSVNDT05OKQogCXsK LQkgIC8qIFRoZSB1bndpbmQtcHJvdGVjdCB3aWxsIGJlIGRpc2NhcmRlZCBhZnRlcndhcmRz LgotCSAgICAgTGlrZXdpc2UgZm9yIGltbWVkaWF0ZV9xdWl0LiAgKi8KKwkgIC8qIFRoZSB1 bndpbmQtcHJvdGVjdCB3aWxsIGJlIGRpc2NhcmRlZCBhZnRlcndhcmRzLiAgKi8KIAkgIGJy ZWFrOwogCX0KIApAQCAtMzQ4MSw4ICszNDc5LDYgQEAgY29ubmVjdF9uZXR3b3JrX3NvY2tl dCAoTGlzcF9PYmplY3QgcHJvYywgTGlzcF9PYmplY3QgYWRkcmluZm9zLAogCX0KICNlbmRp ZiAvKiAhV0lORE9XU05UICovCiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0K ICAgICAgIC8qIERpc2NhcmQgdGhlIHVud2luZCBwcm90ZWN0IGNsb3NpbmcgUy4gICovCiAg ICAgICBzcGVjcGRsX3B0ciA9IHNwZWNwZGwgKyBjb3VudDsKICAgICAgIGVtYWNzX2Nsb3Nl IChzKTsKQEAgLTM1MzksOCArMzUzNSw2IEBAIGNvbm5lY3RfbmV0d29ya19zb2NrZXQgKExp c3BfT2JqZWN0IHByb2MsIExpc3BfT2JqZWN0IGFkZHJpbmZvcywKICNlbmRpZgogICAgIH0K IAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAgIGlmIChzIDwgMCkKICAgICB7CiAg ICAgICAvKiBJZiBub24tYmxvY2tpbmcgZ290IHRoaXMgZmFyIC0gYW5kIGZhaWxlZCAtIGFz c3VtZSBub24tYmxvY2tpbmcgaXMKQEAgLTQwMTIsNyArNDAwNiw2IEBAIHVzYWdlOiAobWFr ZS1uZXR3b3JrLXByb2Nlc3MgJnJlc3QgQVJHUykgICovKQogICAgICAgc3RydWN0IGFkZHJp bmZvICpyZXMsICpscmVzOwogICAgICAgaW50IHJldDsKIAotICAgICAgaW1tZWRpYXRlX3F1 aXQgPSB0cnVlOwogICAgICAgbWF5YmVfcXVpdCAoKTsKIAogICAgICAgc3RydWN0IGFkZHJp bmZvIGhpbnRzOwpAQCAtNDAzNCw3ICs0MDI3LDYgQEAgdXNhZ2U6IChtYWtlLW5ldHdvcmst cHJvY2VzcyAmcmVzdCBBUkdTKSAgKi8pCiAjZWxzZQogCWVycm9yICgiJXMvJXMgZ2V0YWRk cmluZm8gZXJyb3IgJWQiLCBTU0RBVEEgKGhvc3QpLCBwb3J0c3RyaW5nLCByZXQpOwogI2Vu ZGlmCi0gICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgICAgICBmb3IgKGxyZXMg PSByZXM7IGxyZXM7IGxyZXMgPSBscmVzLT5haV9uZXh0KQogCWFkZHJpbmZvcyA9IEZjb25z IChjb252X2FkZHJpbmZvX3RvX2xpc3AgKGxyZXMpLCBhZGRyaW5mb3MpOwpkaWZmIC0tZ2l0 IGEvc3JjL3JlZ2V4LmMgYi9zcmMvcmVnZXguYwppbmRleCBmNmU2N2FmLi43OTZmODY4IDEw MDY0NAotLS0gYS9zcmMvcmVnZXguYworKysgYi9zcmMvcmVnZXguYwpAQCAtMTcyOCwxMCAr MTcyOCw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIC8qIEV4cGxpY2l0IHF1aXQgY2hlY2tpbmcg aXMgbmVlZGVkIGZvciBFbWFjcywgd2hpY2ggdXNlcyBwb2xsaW5nIHRvCiAgICBwcm9jZXNz IGlucHV0IGV2ZW50cy4gICovCi0jaWZkZWYgZW1hY3MKLSMgZGVmaW5lIElNTUVESUFURV9R VUlUX0NIRUNLIChpbW1lZGlhdGVfcXVpdCA/IG1heWJlX3F1aXQgKCkgOiAodm9pZCkgMCkK LSNlbHNlCi0jIGRlZmluZSBJTU1FRElBVEVfUVVJVF9DSEVDSyAoKHZvaWQpIDApCisjaWZu ZGVmIGVtYWNzCitzdGF0aWMgdm9pZCBtYXliZV9xdWl0ICh2b2lkKSB7fQogI2VuZGlmCiAM CiAvKiBTdHJ1Y3R1cmUgdG8gbWFuYWdlIHdvcmsgYXJlYSBmb3IgcmFuZ2UgdGFibGUuICAq LwpAQCAtNTgyMCw3ICs1ODE4LDcgQEAgcmVfbWF0Y2hfMl9pbnRlcm5hbCAoc3RydWN0IHJl X3BhdHRlcm5fYnVmZmVyICpidWZwLCBjb25zdF9yZV9jaGFyICpzdHJpbmcxLAogCS8qIFVu Y29uZGl0aW9uYWxseSBqdW1wICh3aXRob3V0IHBvcHBpbmcgYW55IGZhaWx1cmUgcG9pbnRz KS4gICovCiAJY2FzZSBqdW1wOgogCXVuY29uZGl0aW9uYWxfanVtcDoKLQkgIElNTUVESUFU RV9RVUlUX0NIRUNLOworCSAgbWF5YmVfcXVpdCAoKTsKIAkgIEVYVFJBQ1RfTlVNQkVSX0FO RF9JTkNSIChtY250LCBwKTsJLyogR2V0IHRoZSBhbW91bnQgdG8ganVtcC4gICovCiAJICBE RUJVR19QUklOVCAoIkVYRUNVVElORyBqdW1wICVkICIsIG1jbnQpOwogCSAgcCArPSBtY250 OwkJCQkvKiBEbyB0aGUganVtcC4gICovCkBAIC02MTY4LDcgKzYxNjYsNyBAQCByZV9tYXRj aF8yX2ludGVybmFsIChzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnAsIGNvbnN0X3Jl X2NoYXIgKnN0cmluZzEsCiAKICAgICAvKiBXZSBnb3RvIGhlcmUgaWYgYSBtYXRjaGluZyBv cGVyYXRpb24gZmFpbHMuICovCiAgICAgZmFpbDoKLSAgICAgIElNTUVESUFURV9RVUlUX0NI RUNLOworICAgICAgbWF5YmVfcXVpdCAoKTsKICAgICAgIGlmICghRkFJTF9TVEFDS19FTVBU WSAoKSkKIAl7CiAJICByZV9jaGFyICpzdHIsICpwYXQ7CmRpZmYgLS1naXQgYS9zcmMvc2Vh cmNoLmMgYi9zcmMvc2VhcmNoLmMKaW5kZXggZjU0ZjQ0Yy4uZWQ5YzEyYyAxMDA2NDQKLS0t IGEvc3JjL3NlYXJjaC5jCisrKyBiL3NyYy9zZWFyY2guYwpAQCAtMjc3LDcgKzI3Nyw2IEBA IGxvb2tpbmdfYXRfMSAoTGlzcF9PYmplY3Qgc3RyaW5nLCBib29sIHBvc2l4KQogCQkJICAh TklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVy cykpKTsKIAogICAvKiBEbyBhIHBlbmRpbmcgcXVpdCByaWdodCBhd2F5LCB0byBhdm9pZCBw YXJhZG94aWNhbCBiZWhhdmlvciAqLwotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1h eWJlX3F1aXQgKCk7CiAKICAgLyogR2V0IHBvaW50ZXJzIGFuZCBzaXplcyBvZiB0aGUgdHdv IHN0cmluZ3MKQEAgLTMxMSw3ICszMTAsNiBAQCBsb29raW5nX2F0XzEgKExpc3BfT2JqZWN0 IHN0cmluZywgYm9vbCBwb3NpeCkKIAkJICAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0 Y2hfZGF0YSkKIAkJICAgPyAmc2VhcmNoX3JlZ3MgOiBOVUxMKSwKIAkJICBaVl9CWVRFIC0g QkVHVl9CWVRFKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICNpZmRlZiBSRUxfQUxM T0MKICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpA QCAtMzk5LDcgKzM5Nyw2IEBAIHN0cmluZ19tYXRjaF8xIChMaXNwX09iamVjdCByZWdleHAs IExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3Qgc3RhcnQsCiAJCQkgICA/IEJWQVIg KGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Nhbm9uX3RhYmxlKSA6IFFuaWwpLAogCQkJICBwb3Np eCwKIAkJCSAgU1RSSU5HX01VTFRJQllURSAoc3RyaW5nKSk7Ci0gIGltbWVkaWF0ZV9xdWl0 ID0gdHJ1ZTsKICAgcmVfbWF0Y2hfb2JqZWN0ID0gc3RyaW5nOwogCiAgIHZhbCA9IHJlX3Nl YXJjaCAoYnVmcCwgU1NEQVRBIChzdHJpbmcpLApAQCAtNDA3LDcgKzQwNCw2IEBAIHN0cmlu Z19tYXRjaF8xIChMaXNwX09iamVjdCByZWdleHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlz cF9PYmplY3Qgc3RhcnQsCiAJCSAgIFNCWVRFUyAoc3RyaW5nKSAtIHBvc19ieXRlLAogCQkg ICAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0Y2hfZGF0YSkKIAkJICAgID8gJnNlYXJj aF9yZWdzIDogTlVMTCkpOwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgIC8qIFNl dCBsYXN0X3RoaW5nX3NlYXJjaGVkIG9ubHkgd2hlbiBtYXRjaCBkYXRhIGlzIGNoYW5nZWQu ICAqLwogICBpZiAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0Y2hfZGF0YSkpCkBAIC00 NzEsMTMgKzQ2NywxMSBAQCBmYXN0X3N0cmluZ19tYXRjaF9pbnRlcm5hbCAoTGlzcF9PYmpl Y3QgcmVnZXhwLCBMaXNwX09iamVjdCBzdHJpbmcsCiAKICAgYnVmcCA9IGNvbXBpbGVfcGF0 dGVybiAocmVnZXhwLCAwLCB0YWJsZSwKIAkJCSAgMCwgU1RSSU5HX01VTFRJQllURSAoc3Ry aW5nKSk7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgcmVfbWF0Y2hfb2JqZWN0ID0g c3RyaW5nOwogCiAgIHZhbCA9IHJlX3NlYXJjaCAoYnVmcCwgU1NEQVRBIChzdHJpbmcpLAog CQkgICBTQllURVMgKHN0cmluZyksIDAsCiAJCSAgIFNCWVRFUyAoc3RyaW5nKSwgMCk7Ci0g IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTQ5OCw5 ICs0OTIsNyBAQCBmYXN0X2Nfc3RyaW5nX21hdGNoX2lnbm9yZV9jYXNlIChMaXNwX09iamVj dCByZWdleHAsCiAgIGJ1ZnAgPSBjb21waWxlX3BhdHRlcm4gKHJlZ2V4cCwgMCwKIAkJCSAg VmFzY2lpX2Nhbm9uX3RhYmxlLCAwLAogCQkJICAwKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0 cnVlOwogICB2YWwgPSByZV9zZWFyY2ggKGJ1ZnAsIHN0cmluZywgbGVuLCAwLCBsZW4sIDAp OwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICByZXR1cm4gdmFsOwogfQogCkBAIC01 NjEsNyArNTUzLDYgQEAgZmFzdF9sb29raW5nX2F0IChMaXNwX09iamVjdCByZWdleHAsIHB0 cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKICAgICB9CiAKICAgYnVmID0gY29t cGlsZV9wYXR0ZXJuIChyZWdleHAsIDAsIFFuaWwsIDAsIG11bHRpYnl0ZSk7Ci0gIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKICNpZmRlZiBSRUxfQUxMT0MKICAgLyogUHJldmVudCByYWxs b2MuYyBmcm9tIHJlbG9jYXRpbmcgdGhlIGN1cnJlbnQgYnVmZmVyIHdoaWxlCiAgICAgIHNl YXJjaGluZyBpdC4gICovCkBAIC01NzIsNyArNTYzLDYgQEAgZmFzdF9sb29raW5nX2F0IChM aXNwX09iamVjdCByZWdleHAsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwK ICNpZmRlZiBSRUxfQUxMT0MKICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0aW9u ICgwKTsKICNlbmRpZgotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgIHJldHVybiBs ZW47CiB9CkBAIC02NDksNyArNjM5LDcgQEAgbmV3bGluZV9jYWNoZV9vbl9vZmYgKHN0cnVj dCBidWZmZXIgKmJ1ZikKICAgIElmIEJZVEVQT1MgaXMgbm90IE5VTEwsIHNldCAqQllURVBP UyB0byB0aGUgYnl0ZSBwb3NpdGlvbiBjb3JyZXNwb25kaW5nCiAgICB0byB0aGUgcmV0dXJu ZWQgY2hhcmFjdGVyIHBvc2l0aW9uLgogCi0gICBJZiBBTExPV19RVUlULCBzZXQgaW1tZWRp YXRlX3F1aXQuICBUaGF0J3MgZ29vZCB0byBkbworICAgSWYgQUxMT1dfUVVJVCwgY2hlY2sg Zm9yIHF1aXR0aW5nLiAgVGhhdCdzIGdvb2QgdG8gZG8KICAgIGV4Y2VwdCB3aGVuIGluc2lk ZSByZWRpc3BsYXkuICAqLwogCiBwdHJkaWZmX3QKQEAgLTY4NSw4ICs2NzUsNiBAQCBmaW5k X25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRp ZmZfdCBlbmQsCiAgIGlmIChzaG9ydGFnZSAhPSAwKQogICAgICpzaG9ydGFnZSA9IDA7CiAK LSAgaW1tZWRpYXRlX3F1aXQgPSBhbGxvd19xdWl0OwotCiAgIGlmIChjb3VudCA+IDApCiAg ICAgd2hpbGUgKHN0YXJ0ICE9IGVuZCkKICAgICAgIHsKQEAgLTcwNCw3ICs2OTIsNiBAQCBm aW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0 cmRpZmZfdCBlbmQsCiAgICAgICAgICAgICBwdHJkaWZmX3QgbmV4dF9jaGFuZ2U7CiAJICAg IGludCByZXN1bHQgPSAxOwogCi0gICAgICAgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNl OwogICAgICAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kICYmIHJlc3VsdCkKIAkgICAgICB7 CiAJCXB0cmRpZmZfdCBsaW0xOwpAQCAtNzU3LDcgKzc0NCw2IEBAIGZpbmRfbmV3bGluZSAo cHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwK IAkJc3RhcnRfYnl0ZSA9IGVuZF9ieXRlOwogCQlicmVhazsKIAkgICAgICB9Ci0gICAgICAg ICAgICBpbW1lZGlhdGVfcXVpdCA9IGFsbG93X3F1aXQ7CiAKICAgICAgICAgICAgIC8qIFNU QVJUIHNob3VsZCBuZXZlciBiZSBhZnRlciBFTkQuICAqLwogICAgICAgICAgICAgaWYgKHN0 YXJ0X2J5dGUgPiBjZWlsaW5nX2J5dGUpCkBAIC04MTAsNyArNzk2LDYgQEAgZmluZF9uZXds aW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFydF9ieXRlLCBwdHJkaWZmX3Qg ZW5kLAogCiAJICAgICAgaWYgKC0tY291bnQgPT0gMCkKIAkJewotCQkgIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAJCSAgaWYgKGJ5dGVwb3MpCiAJCSAgICAqYnl0ZXBvcyA9IGxpbV9i eXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFSIChsaW1fYnl0ZSArIG5leHQp OwpAQCAtODMzLDcgKzgxOCw2IEBAIGZpbmRfbmV3bGluZSAocHRyZGlmZl90IHN0YXJ0LCBw dHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwKICAgICAgICAgICAgIHB0cmRp ZmZfdCBuZXh0X2NoYW5nZTsKIAkgICAgaW50IHJlc3VsdCA9IDE7CiAKLSAgICAgICAgICAg IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgICAgICAgICAgICB3aGlsZSAoc3RhcnQgPiBl bmQgJiYgcmVzdWx0KQogCSAgICAgIHsKIAkJcHRyZGlmZl90IGxpbTE7CkBAIC04NzAsNyAr ODU0LDYgQEAgZmluZF9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFy dF9ieXRlLCBwdHJkaWZmX3QgZW5kLAogCQlzdGFydF9ieXRlID0gZW5kX2J5dGU7CiAJCWJy ZWFrOwogCSAgICAgIH0KLSAgICAgICAgICAgIGltbWVkaWF0ZV9xdWl0ID0gYWxsb3dfcXVp dDsKIAogICAgICAgICAgICAgLyogU3RhcnQgc2hvdWxkIG5ldmVyIGJlIGF0IG9yIGJlZm9y ZSBlbmQuICAqLwogICAgICAgICAgICAgaWYgKHN0YXJ0X2J5dGUgPD0gY2VpbGluZ19ieXRl KQpAQCAtOTE4LDcgKzkwMSw2IEBAIGZpbmRfbmV3bGluZSAocHRyZGlmZl90IHN0YXJ0LCBw dHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwKIAogCSAgICAgIGlmICgrK2Nv dW50ID49IDApCiAJCXsKLQkJICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQkgIGlmIChi eXRlcG9zKQogCQkgICAgKmJ5dGVwb3MgPSBjZWlsaW5nX2J5dGUgKyBwcmV2ICsgMTsKIAkJ ICByZXR1cm4gQllURV9UT19DSEFSIChjZWlsaW5nX2J5dGUgKyBwcmV2ICsgMSk7CkBAIC05 MzAsNyArOTEyLDYgQEAgZmluZF9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZf dCBzdGFydF9ieXRlLCBwdHJkaWZmX3QgZW5kLAogICAgICAgICB9CiAgICAgICB9CiAKLSAg aW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgaWYgKHNob3J0YWdlKQogICAgICpzaG9ydGFn ZSA9IGNvdW50ICogZGlyZWN0aW9uOwogICBpZiAoYnl0ZXBvcykKQEAgLTk1NCw3ICs5MzUs NyBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5 dGUsIHB0cmRpZmZfdCBlbmQsCiAgICB0aGUgbnVtYmVyIG9mIGxpbmUgYm91bmRhcmllcyBs ZWZ0IHVuZm91bmQsIGFuZCBwb3NpdGlvbiBhdAogICAgdGhlIGxpbWl0IHdlIGJ1bXBlZCB1 cCBhZ2FpbnN0LgogCi0gICBJZiBBTExPV19RVUlULCBzZXQgaW1tZWRpYXRlX3F1aXQuICBU aGF0J3MgZ29vZCB0byBkbworICAgSWYgQUxMT1dfUVVJVCwgY2hlY2sgZm9yIHF1aXR0aW5n LiAgVGhhdCdzIGdvb2QgdG8gZG8KICAgIGV4Y2VwdCBpbiBzcGVjaWFsIGNhc2VzLiAgKi8K IAogcHRyZGlmZl90CkBAIC0xMTk3LDkgKzExNzgsNiBAQCBzZWFyY2hfYnVmZmVyIChMaXNw X09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKIAkJ CSAgICAgIHRydCwgcG9zaXgsCiAJCQkgICAgICAhTklMUCAoQlZBUiAoY3VycmVudF9idWZm ZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycykpKTsKIAotICAgICAgaW1tZWRpYXRl X3F1aXQgPSB0cnVlOwkvKiBRdWl0IGltbWVkaWF0ZWx5IGlmIHVzZXIgdHlwZXMgXkcsCi0J CQkJICAgYmVjYXVzZSBsZXR0aW5nIHRoaXMgZnVuY3Rpb24gZmluaXNoCi0JCQkJICAgY2Fu IHRha2UgdG9vIGxvbmcuICovCiAgICAgICBtYXliZV9xdWl0ICgpOwkJLyogRG8gYSBwZW5k aW5nIHF1aXQgcmlnaHQgYXdheSwKIAkJCQkgICB0byBhdm9pZCBwYXJhZG94aWNhbCBiZWhh dmlvciAqLwogICAgICAgLyogR2V0IHBvaW50ZXJzIGFuZCBzaXplcyBvZiB0aGUgdHdvIHN0 cmluZ3MKQEAgLTEyNjgsNyArMTI0Niw2IEBAIHNlYXJjaF9idWZmZXIgKExpc3BfT2JqZWN0 IHN0cmluZywgcHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlLAogCSAgICB9CiAJ ICBlbHNlCiAJICAgIHsKLQkgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogI2lmZGVm IFJFTF9BTExPQwogICAgICAgICAgICAgICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9j YXRpb24gKDApOwogI2VuZGlmCkBAIC0xMzEzLDcgKzEyOTAsNiBAQCBzZWFyY2hfYnVmZmVy IChMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0 ZSwKIAkgICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgaW1tZWRpYXRlX3F1aXQgPSBm YWxzZTsKICNpZmRlZiBSRUxfQUxMT0MKICAgICAgICAgICAgICAgcl9hbGxvY19pbmhpYml0 X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpAQCAtMTMyMSw3ICsxMjk3LDYgQEAg c2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJk aWZmX3QgcG9zX2J5dGUsCiAJICAgIH0KIAkgIG4tLTsKIAl9Ci0gICAgICBpbW1lZGlhdGVf cXVpdCA9IGZhbHNlOwogI2lmZGVmIFJFTF9BTExPQwogICAgICAgcl9hbGxvY19pbmhpYml0 X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpAQCAtMzIzMSw4ICszMjA2LDYgQEAg ZmluZF9uZXdsaW5lMSAocHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRfYnl0ZSwg cHRyZGlmZl90IGVuZCwKICAgaWYgKHNob3J0YWdlICE9IDApCiAgICAgKnNob3J0YWdlID0g MDsKIAotICBpbW1lZGlhdGVfcXVpdCA9IGFsbG93X3F1aXQ7Ci0KICAgaWYgKGNvdW50ID4g MCkKICAgICB3aGlsZSAoc3RhcnQgIT0gZW5kKQogICAgICAgewpAQCAtMzI3NSw3ICszMjQ4 LDYgQEAgZmluZF9uZXdsaW5lMSAocHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRf Ynl0ZSwgcHRyZGlmZl90IGVuZCwKIAogCSAgICAgIGlmICgtLWNvdW50ID09IDApCiAJCXsK LQkJICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQkgIGlmIChieXRlcG9zKQogCQkgICAg KmJ5dGVwb3MgPSBsaW1fYnl0ZSArIG5leHQ7CiAJCSAgcmV0dXJuIEJZVEVfVE9fQ0hBUiAo bGltX2J5dGUgKyBuZXh0KTsKQEAgLTMyODcsNyArMzI1OSw2IEBAIGZpbmRfbmV3bGluZTEg KHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQs CiAgICAgICAgIH0KICAgICAgIH0KIAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICBp ZiAoc2hvcnRhZ2UpCiAgICAgKnNob3J0YWdlID0gY291bnQ7CiAgIGlmIChieXRlcG9zKQpk aWZmIC0tZ2l0IGEvc3JjL3N5bnRheC5jIGIvc3JjL3N5bnRheC5jCmluZGV4IGY5ZTQwOTMu LmU3MTM5MjIgMTAwNjQ0Ci0tLSBhL3NyYy9zeW50YXguYworKysgYi9zcmMvc3ludGF4LmMK QEAgLTE0MjYsNyArMTQyNiw2IEBAIHNjYW5fd29yZHMgKHJlZ2lzdGVyIHB0cmRpZmZfdCBm cm9tLCByZWdpc3RlciBFTUFDU19JTlQgY291bnQpCiAgIGludCBjaDAsIGNoMTsKICAgTGlz cF9PYmplY3QgZnVuYywgcG9zOwogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5 YmVfcXVpdCAoKTsKIAogICBTRVRVUF9TWU5UQVhfVEFCTEUgKGZyb20sIGNvdW50KTsKQEAg LTE0MzYsMTAgKzE0MzUsNyBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZmX3QgZnJv bSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogICAgICAgd2hpbGUgKDEpCiAJewogCSAg aWYgKGZyb20gPT0gZW5kKQotCSAgICB7Ci0JICAgICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxz ZTsKLQkgICAgICByZXR1cm4gMDsKLQkgICAgfQorCSAgICByZXR1cm4gMDsKIAkgIFVQREFU RV9TWU5UQVhfVEFCTEVfRk9SV0FSRCAoZnJvbSk7CiAJICBjaDAgPSBGRVRDSF9DSEFSX0FT X01VTFRJQllURSAoZnJvbV9ieXRlKTsKIAkgIGNvZGUgPSBTWU5UQVggKGNoMCk7CkBAIC0x NDg2LDEwICsxNDgyLDcgQEAgc2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20s IHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKICAgICAgIHdoaWxlICgxKQogCXsKIAkgIGlm IChmcm9tID09IGJlZykKLQkgICAgewotCSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7 Ci0JICAgICAgcmV0dXJuIDA7Ci0JICAgIH0KKwkgICAgcmV0dXJuIDA7CiAJICBERUNfQk9U SCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgIFVQREFURV9TWU5UQVhfVEFCTEVfQkFDS1dBUkQg KGZyb20pOwogCSAgY2gxID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKGZyb21fYnl0ZSk7 CkBAIC0xNTM2LDggKzE1MjksNiBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZmX3Qg ZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogICAgICAgY291bnQrKzsKICAgICB9 CiAKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQogICByZXR1cm4gZnJvbTsKIH0KIApA QCAtMTkyMSw3ICsxOTEyLDYgQEAgc2tpcF9jaGFycyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9P YmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJc3RvcCA9IChwb3MgPj0gR1BUICYm IEdQVCA+IFhJTlQgKGxpbSkpID8gR0FQX0VORF9BRERSIDogZW5kcDsKICAgICAgIH0KIAot ICAgIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgICAvKiBUaGlzIGNvZGUgbWF5IGxvb2sg dXAgc3ludGF4IHRhYmxlcyB1c2luZyBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIHRoZQogICAg ICAgIGdsX3N0YXRlIG9iamVjdC4gIFRvIG1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyBub3Qg b3V0IG9mIGRhdGUsCiAgICAgICAgbGV0J3MgaW5pdGlhbGl6ZSBpdCBtYW51YWxseS4KQEAg LTIwNjQsNyArMjA1NCw2IEBAIHNraXBfY2hhcnMgKGJvb2wgZm9yd2FyZHAsIExpc3BfT2Jq ZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltLAogICAgICAgfQogCiAgICAgU0VUX1BUX0JP VEggKHBvcywgcG9zX2J5dGUpOwotICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAKICAg ICBTQUZFX0ZSRUUgKCk7CiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChQVCAtIHN0YXJ0X3Bv aW50KTsKQEAgLTIxMzgsNyArMjEyNyw2IEBAIHNraXBfc3ludGF4ZXMgKGJvb2wgZm9yd2Fy ZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltKQogICAgIHB0cmRpZmZf dCBwb3NfYnl0ZSA9IFBUX0JZVEU7CiAgICAgdW5zaWduZWQgY2hhciAqcCwgKmVuZHAsICpz dG9wOwogCi0gICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgIFNFVFVQX1NZTlRBWF9U QUJMRSAocG9zLCBmb3J3YXJkcCA/IDEgOiAtMSk7CiAKICAgICBpZiAoZm9yd2FyZHApCkBA IC0yMjI0LDcgKzIyMTIsNiBAQCBza2lwX3N5bnRheGVzIChib29sIGZvcndhcmRwLCBMaXNw X09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSkKIAogICBkb25lOgogICAgIFNFVF9Q VF9CT1RIIChwb3MsIHBvc19ieXRlKTsKLSAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChQVCAtIHN0YXJ0X3BvaW50KTsKICAgfQpAQCAt MjQxMiw3ICsyMzk5LDYgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJl dHVybiBuaWwuICAqLykKICAgY291bnQxID0gWElOVCAoY291bnQpOwogICBzdG9wID0gY291 bnQxID4gMCA/IFpWIDogQkVHVjsKIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1h eWJlX3F1aXQgKCk7CiAKICAgZnJvbSA9IFBUOwpAQCAtMjQyOSw3ICsyNDE1LDYgQEAgYmV0 d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgIGlm IChmcm9tID09IHN0b3ApCiAJICAgIHsKIAkgICAgICBTRVRfUFRfQk9USCAoZnJvbSwgZnJv bV9ieXRlKTsKLQkgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCSAgICAgIHJldHVy biBRbmlsOwogCSAgICB9CiAJICBjID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKGZyb21f Ynl0ZSk7CkBAIC0yNDYzLDcgKzI0NDgsNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBv dGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCWNvbXN0eWxlID0gU1RfQ09NTUVOVF9TVFlM RTsKICAgICAgIGVsc2UgaWYgKGNvZGUgIT0gU2NvbW1lbnQpCiAJewotCSAgaW1tZWRpYXRl X3F1aXQgPSBmYWxzZTsKIAkgIERFQ19CT1RIIChmcm9tLCBmcm9tX2J5dGUpOwogCSAgU0VU X1BUX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICByZXR1cm4gUW5pbDsKQEAgLTI0NzQs NyArMjQ1OCw2IEBAIGJldHdlZW4gdGhlbSwgcmV0dXJuIHQ7IG90aGVyd2lzZSByZXR1cm4g bmlsLiAgKi8pCiAgICAgICBmcm9tID0gb3V0X2NoYXJwb3M7IGZyb21fYnl0ZSA9IG91dF9i eXRlcG9zOwogICAgICAgaWYgKCFmb3VuZCkKIAl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZh bHNlOwogCSAgU0VUX1BUX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICByZXR1cm4gUW5p bDsKIAl9CkBAIC0yNDk0LDcgKzI0NzcsNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBv dGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCSAgaWYgKGZyb20gPD0gc3RvcCkKIAkgICAg ewogCSAgICAgIFNFVF9QVF9CT1RIIChCRUdWLCBCRUdWX0JZVEUpOwotCSAgICAgIGltbWVk aWF0ZV9xdWl0ID0gZmFsc2U7CiAJICAgICAgcmV0dXJuIFFuaWw7CiAJICAgIH0KIApAQCAt MjU4Nyw3ICsyNTY5LDYgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJl dHVybiBuaWwuICAqLykKIAkgIGVsc2UgaWYgKGNvZGUgIT0gU3doaXRlc3BhY2UgfHwgcXVv dGVkKQogCSAgICB7CiAJICAgIGxlYXZlOgotCSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgU0VUX1BU X0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgcmV0dXJuIFFuaWw7CkBAIC0yNTk4 LDcgKzI1NzksNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2UgcmV0dXJu IG5pbC4gICovKQogICAgIH0KIAogICBTRVRfUFRfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsK LSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgcmV0dXJuIFF0OwogfQogDApAQCAtMjY0 MCw3ICsyNjIwLDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBj b3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogCiAgIGZyb21fYnl0ZSA9 IENIQVJfVE9fQllURSAoZnJvbSk7CiAKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICBt YXliZV9xdWl0ICgpOwogCiAgIFNFVFVQX1NZTlRBWF9UQUJMRSAoZnJvbSwgY291bnQpOwpA QCAtMjgwMSw3ICsyNzgwLDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNT X0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgICAgaWYg KGRlcHRoKQogCWdvdG8gbG9zZTsKIAotICAgICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsK ICAgICAgIHJldHVybiBRbmlsOwogCiAgICAgICAvKiBFbmQgb2Ygb2JqZWN0IHJlYWNoZWQg Ki8KQEAgLTI5ODQsNyArMjk2Miw2IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9tLCBF TUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKICAgICAg IGlmIChkZXB0aCkKIAlnb3RvIGxvc2U7CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAgICAgICByZXR1cm4gUW5pbDsKIAogICAgIGRvbmUyOgpAQCAtMjk5Miw3ICsyOTY5 LDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1B Q1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgIH0KIAogCi0gIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAgIFhTRVRGQVNUSU5UICh2YWwsIGZyb20pOwogICByZXR1cm4gdmFs OwogCkBAIC0zMTczLDcgKzMxNDksNiBAQCBkbyB7IHByZXZfZnJvbSA9IGZyb207CQkJCVwK ICAgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwlcCiAgIH0gd2hp bGUgKDApCiAKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICBtYXliZV9xdWl0ICgpOwog CiAgIGRlcHRoID0gc3RhdGUtPmRlcHRoOwpAQCAtMzQzMiw3ICszNDA3LDYgQEAgZG8geyBw cmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRlLT5sZXZlbHN0YXJ0cyk7CiAgIHN0YXRlLT5wcmV2X3N5bnRheCA9IChTWU5UQVhf RkxBR1NfQ09NU1RBUlRFTkRfRklSU1QgKHByZXZfZnJvbV9zeW50YXgpCiAgICAgICAgICAg ICAgICAgICAgICAgICB8fCBzdGF0ZS0+cXVvdGVkKSA/IHByZXZfZnJvbV9zeW50YXggOiBT bWF4OwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogfQogCiAvKiBDb252ZXJ0IGEgKGxp c3ApIHBhcnNlIHN0YXRlIHRvIHRoZSBpbnRlcm5hbCBmb3JtIHVzZWQgaW4KZGlmZiAtLWdp dCBhL3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRleCA2YTU3NmZjLi4xYjYyOGIw IDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC0zMTY4 LDE2ICszMTY4LDcgQEAgc2lnbmFsX3VzZXJfaW5wdXQgKHZvaWQpCiAgICAgICBWcXVpdF9m bGFnID0gVnRocm93X29uX2lucHV0OwogICAgICAgLyogQ2FsbGluZyBtYXliZV9xdWl0IGZy b20gdGhpcyB0aHJlYWQgaXMgYSBiYWQgaWRlYSwgc2luY2UgdGhpcwogCSB1bndpbmRzIHRo ZSBzdGFjayBvZiB0aGUgTGlzcCB0aHJlYWQsIGFuZCB0aGUgV2luZG93cyBydW50aW1lCi0J IHJpZ2h0ZnVsbHkgYmFyZnMuICBEaXNhYmxlZC4gICovCi0jaWYgMAotICAgICAgLyogSWYg d2UncmUgaW5zaWRlIGEgZnVuY3Rpb24gdGhhdCB3YW50cyBpbW1lZGlhdGUgcXVpdHMsCi0J IGRvIGl0IG5vdy4gICovCi0gICAgICBpZiAoaW1tZWRpYXRlX3F1aXQgJiYgTklMUCAoVmlu aGliaXRfcXVpdCkpCi0JewotCSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQkgIG1heWJl X3F1aXQgKCk7Ci0JfQotI2VuZGlmCisJIHJpZ2h0ZnVsbHkgYmFyZnMuICAqLwogICAgIH0K IH0KIApkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5jIGIvc3JjL3dpbmRvdy5jCmluZGV4IDcx YTgyYjUuLmJjM2Y0ODggMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYworKysgYi9zcmMvd2lu ZG93LmMKQEAgLTQ3NzAsNyArNDc3MCw2IEBAIHdpbmRvd19zY3JvbGwgKExpc3BfT2JqZWN0 IHdpbmRvdywgRU1BQ1NfSU5UIG4sIGJvb2wgd2hvbGUsIGJvb2wgbm9lcnJvcikKIHsKICAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAotICBpbW1lZGlhdGVfcXVp dCA9IHRydWU7CiAgIG4gPSBjbGlwX3RvX2JvdW5kcyAoSU5UX01JTiwgbiwgSU5UX01BWCk7 CiAKICAgd3NldF9yZWRpc3BsYXkgKFhXSU5ET1cgKHdpbmRvdykpOwpAQCAtNDc4OSw3ICs0 Nzg4LDYgQEAgd2luZG93X3Njcm9sbCAoTGlzcF9PYmplY3Qgd2luZG93LCBFTUFDU19JTlQg biwgYm9vbCB3aG9sZSwgYm9vbCBub2Vycm9yKQogCiAgIC8qIEJ1ZyMxNTk1Ny4gICovCiAg IFhXSU5ET1cgKHdpbmRvdyktPndpbmRvd19lbmRfdmFsaWQgPSBmYWxzZTsKLSAgaW1tZWRp YXRlX3F1aXQgPSBmYWxzZTsKIH0KIAogCi0tIAoyLjkuMwoK --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0002-Revamp-quitting-and-fix-infloops.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Revamp-quitting-and-fix-infloops.patch" RnJvbSA5YmE4MzY1ZjJmZDQ3NGYxZDZhYzE5NjU5OGVkYmFjMjM4YWNiZWZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDI3IEphbiAyMDE3IDA4OjU4OjUxIC0wODAwClN1YmplY3Q6IFtQQVRD SCAyLzNdIFJldmFtcCBxdWl0dGluZyBhbmQgZml4IGluZmxvb3BzCgpUaGlzIGZpeGVzIHNv bWUgaW5maW5pdGUgbG9vcHMgdGhhdCBjYW5ub3QgYmUgcXVpdHRlZCBvdXQgb2YsCmUuZy4s IChkZWZ1biBmb28gKCkgKG50aCBtb3N0LXBvc2l0aXZlLWZpeG51bSAnIzE9KDEgLiAjMSMp KSkKd2hlbiBieXRlLWNvbXBpbGVkIGFuZCB3aGVuIHJ1biB1bmRlciBYLiAgU2VlOgpodHRw Oi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNy0wMS9tc2cw MDU3Ny5odG1sClRoaXMgYWxzbyBhdHRlbXB0cyB0byBrZWVwIHRoZSBwZXJmb3JtYW5jZSBp bXByb3ZlbWVudHMgSSByZWNlbnRseQphZGRlZCwgYXMgbXVjaCBhcyBwb3NzaWJsZSB1bmRl ciB0aGUgY29uc3RyYWludCB0aGF0IHRoZSBpbmZsb29wcwptdXN0IGJlIGNhdWdodC4gIElu IHNvbWUgY2FzZXMgdGhpcyBmaXhlcyBpbmZsb29wIGJ1Z3MgcmVjZW50bHkKaW50cm9kdWNl ZCB3aGVuIEkgcmVtb3ZlZCBpbW1lZGlhdGVfcXVpdC4KKiBzcmMvYWxsb2MuYyAoRm1ha2Vf bGlzdCk6ClVzZSByYXJlbHlfcXVpdCwgbm90IG1heWJlX3F1aXQsIGZvciBzcGVlZCBpbiB0 aGUgdXN1YWwgY2FzZS4KKiBzcmMvYnl0ZWNvZGUuYyAoZXhlY19ieXRlX2NvZGUpOgoqIHNy Yy9lZGl0Zm5zLmMgKEZjb21wYXJlX2J1ZmZlcl9zdWJzdHJpbmdzKToKKiBzcmMvZm5zLmMg KEZudGhjZHIpOgoqIHNyYy9zeW50YXguYyAoc2Nhbl93b3Jkcywgc2tpcF9jaGFycywgc2tp cF9zeW50YXhlcykKKEZiYWNrd2FyZF9wcmVmaXhfY2hhcnMpOgpVc2UgcmFyZWx5X3F1aXQg c28gdGhhdCB1c2VycyBjYW4gQy1nIG91dCBvZiBsb25nIGxvb3BzLgoqIHNyYy9jYWxscHJv Yy5jIChjYWxsX3Byb2Nlc3NfY2xlYW51cCwgY2FsbF9wcm9jZXNzKToKKiBzcmMvZmlsZWlv LmMgKHJlYWRfbm9uX3JlZ3VsYXIsIEZpbnNlcnRfZmlsZV9jb250ZW50cyk6Ciogc3JjL2lu ZGVudC5jIChjb21wdXRlX21vdGlvbik6Ciogc3JjL3N5bnRheC5jIChzY2FuX3dvcmRzLCBG Zm9yd2FyZF9jb21tZW50KToKUmVtb3ZlIG5vdy11bm5lY2Vzc2FyeSBtYXliZV9xdWl0IGNh bGxzLgoqIHNyYy9jYWxscHJvYy5jIChjYWxsX3Byb2Nlc3MpOgoqIHNyYy9kb2MuYyAoZ2V0 X2RvY19zdHJpbmcsIEZzbmFyZl9kb2N1bWVudGF0aW9uKToKKiBzcmMvZmlsZWlvLmMgKEZj b3B5X2ZpbGUsIHJlYWRfbm9uX3JlZ3VsYXIsIEZpbnNlcnRfZmlsZV9jb250ZW50cyk6Ciog c3JjL2xyZWFkLmMgKHNhZmVfdG9fbG9hZF92ZXJzaW9uKToKKiBzcmMvc3lzZGVwLmMgKHN5 c3RlbV9wcm9jZXNzX2F0dHJpYnV0ZXMpIFtHTlVfTElOVVhdOgpVc2UgZW1hY3NfcmVhZF9x dWl0IGluc3RlYWQgb2YgZW1hY3NfcmVhZCBpbiBwbGFjZXMgd2hlcmUKQy1nIGhhbmRsaW5n IGlzIHNhZmUuCiogc3JjL2V2YWwuYyAobWF5YmVfcXVpdCk6IE1vdmUgY29tbWVudCBoZXJl IGZyb20gbGlzcC5oLgoqIHNyYy9maWxlaW8uYyAoRmNvcHlfZmlsZSwgZV93cml0ZSk6ClVz ZSBlbWFjc193cml0ZV9xdWl0IGluc3RlYWQgb2YgZW1hY3Nfd3JpdGVfc2lnIGluIHBsYWNl cyB3aGVyZQpDLWcgaGFuZGxpbmcgaXMgc2FmZS4KKiBzcmMvZmlsZWxvY2suYyAoY3JlYXRl X2xvY2tfZmlsZSk6IFVzZSBlbWFjc193cml0ZSwgbm90CnBsYWluIHdyaXRlLCBhcyBlbWFj c193cml0ZSBubyBsb25nZXIgaGFzIGEgcHJvYmxlbS4KKHJlYWRfbG9ja19kYXRhKTogVXNl IGVtYWNzX3JlYWQsIG5vdCByZWFkLCBhcyBlbWFjc19yZWFkCm5vIGxvbmdlciBoYXMgYSBw cm9ibGVtLgoqIHNyYy9mbnMuYyAocmFyZWx5X3F1aXQpOiBNb3ZlIHRvIGxpc3AuaCBhbmQg cmVuYW1lIHRvCmluY3JfcmFyZWx5X3F1aXQuICBBbGwgdXNlcyBjaGFuZ2VkLi4KKiBzcmMv Zm5zLmMgKEZtZW1xLCBGbWVtcWwsIEZhc3NxLCBGcmFzc3EsIEZwbGlzdF9wdXQsIEZwbGlz dF9tZW1iZXIpOgoqIHNyYy9pbmRlbnQuYyAoY29tcHV0ZV9tb3Rpb24pOgoqIHNyYy9zeW50 YXguYyAoZmluZF9kZWZ1bl9zdGFydCwgYmFja19jb21tZW50LCBmb3J3X2NvbW1lbnQpCihG Zm9yd2FyZF9jb21tZW50LCBzY2FuX2xpc3RzLCBzY2FuX3NleHBzX2ZvcndhcmQpOgpVc2Ug aW5jcl9yYXJlbHlfcXVpdCBzbyB0aGF0IHVzZXJzIGNhbiBDLWcgb3V0IG9mIGxvbmcgbG9v cHMuCiogc3JjL2Zucy5jIChGbmNvbmMpOiBNb3ZlIGluY3JfcmFyZWx5X3F1aXQgY2FsbCB0 byB3aXRoaW4KaW5uZXIgbG9vcCwgc28gdGhhdCBpdCBjYXRjaGVzIEMtZyB0aGVyZSB0b28u Ciogc3JjL2tleWJvYXJkLmMgKHR0eV9yZWFkX2F2YWlsX2lucHV0KTogUmVtb3ZlIGNvbW1l bnRlZC1vdXQKYW5kIG5vdy1vYnNvbGV0ZSBjb2RlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRz LgoqIHNyYy9saXNwLmggKHJhcmVseV9xdWl0LCBpbmNyX3JhcmVseV9xdWl0KTogTmV3IGZ1 bmN0aW9ucywKdGhlIGxhdHRlciBtb3ZlZCBoZXJlIGZyb20gZm5zLmMgYW5kIHJlbmFtZWQg ZnJvbSByYXJlbHlfcXVpdC4KKGVtYWNzX3JlYWRfcXVpdCwgZW1hY3Nfd3JpdGVfcXVpdCk6 IE5ldyBkZWNscy4KKiBzcmMvc2VhcmNoLmMgKGZpbmRfbmV3bGluZSwgc2VhcmNoX2J1ZmZl ciwgZmluZF9uZXdsaW5lMSk6CkFkZCBtYXliZV9xdWl0IHRvIGNhdGNoIEMtZy4KKiBzcmMv c3lzZGVwLmMgKGdldF9jaGlsZF9zdGF0dXMpOiBBbHdheXMgaW52b2tlIG1heWJlX3F1aXQK aWYgaW50ZXJydXB0aWJsZSwgc28gdGhhdCB0aGUgY2FsbGVyIG5lZWQgbm90IGJvdGhlci4K KGVtYWNzX25vaW50cl9yZWFkLCBlbWFjc19yZWFkX3F1aXQsIGVtYWNzX3dyaXRlX3F1aXQp OgpOZXcgZnVuY3Rpb25zLgooZW1hY3NfcmVhZCk6IFJld3JpdGUgaW4gdGVybXMgb2YgZW1h Y3Nfbm9pbnRyX3JlYWQuCkRvIG5vdCBoYW5kbGUgQy1nIG9yIHNpZ25hbHM7IHRoYXQgaXMg bm93IGZvciBlbWFjc19yZWFkX3F1aXQuCihlbWFjc19mdWxsX3dyaXRlKTogUmVwbGFjZSBQ Uk9DRVNTX1NJR05BTFMgdHdvLXdheSBhcmcKd2l0aCBJTlRFUlJVUFRJQkxFIHRocmVlLXdh eSBhcmcuICBBbGwgdXNlcyBjaGFuZ2VkLgotLS0KIHNyYy9hbGxvYy5jICAgIHwgICAyICst CiBzcmMvYnl0ZWNvZGUuYyB8ICAxNiArKysrLS0tCiBzcmMvY2FsbHByb2MuYyB8ICAgOSAr LS0tCiBzcmMvZG9jLmMgICAgICB8ICAgOSArKy0tCiBzcmMvZWRpdGZucy5jICB8ICAgMSAr CiBzcmMvZXZhbC5jICAgICB8ICAxMyArKysrKysKIHNyYy9maWxlaW8uYyAgIHwgIDU1ICsr KysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2ZpbGVsb2NrLmMgfCAgIDcgKy0tLQogc3Jj L2Zucy5jICAgICAgfCAgNTMgKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvaW5kZW50 LmMgICB8ICAxMSArKystLQogc3JjL2tleWJvYXJkLmMgfCAgNDggKysrKysrKy0tLS0tLS0t LS0tLS0tCiBzcmMvbGlzcC5oICAgICB8ICA0MCArKysrKysrKysrKystLS0tLS0KIHNyYy9s cmVhZC5jICAgIHwgICAyICstCiBzcmMvc2VhcmNoLmMgICB8ICAgOCArKysrCiBzcmMvc3lu dGF4LmMgICB8IDExMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tCiBzcmMvc3lzZGVwLmMgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDE2IGZpbGVzIGNoYW5nZWQs IDI5NSBpbnNlcnRpb25zKCspLCAyMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2FsbG9jLmMgYi9zcmMvYWxsb2MuYwppbmRleCBkZDJiNjg4Li4yMDM4ZTkzIDEwMDY0NAot LS0gYS9zcmMvYWxsb2MuYworKysgYi9zcmMvYWxsb2MuYwpAQCAtMjg4MCw3ICsyODgwLDcg QEAgREVGVU4gKCJtYWtlLWxpc3QiLCBGbWFrZV9saXN0LCBTbWFrZV9saXN0LCAyLCAyLCAw LAogICBmb3IgKEVNQUNTX0lOVCBzaXplID0gWEZBU1RJTlQgKGxlbmd0aCk7IDAgPCBzaXpl OyBzaXplLS0pCiAgICAgewogICAgICAgdmFsID0gRmNvbnMgKGluaXQsIHZhbCk7Ci0gICAg ICBtYXliZV9xdWl0ICgpOworICAgICAgcmFyZWx5X3F1aXQgKHNpemUpOwogICAgIH0KIAog ICByZXR1cm4gdmFsOwpkaWZmIC0tZ2l0IGEvc3JjL2J5dGVjb2RlLmMgYi9zcmMvYnl0ZWNv ZGUuYwppbmRleCBlZDU4ZDE4Li4wZjc0MjBjIDEwMDY0NAotLS0gYS9zcmMvYnl0ZWNvZGUu YworKysgYi9zcmMvYnl0ZWNvZGUuYwpAQCAtODQxLDkgKzg0MSwxMSBAQCBleGVjX2J5dGVf Y29kZSAoTGlzcF9PYmplY3QgYnl0ZXN0ciwgTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09i amVjdCBtYXhkZXB0aCwKIAkgIHsKIAkgICAgTGlzcF9PYmplY3QgdjIgPSBQT1AsIHYxID0g VE9QOwogCSAgICBDSEVDS19OVU1CRVIgKHYxKTsKLQkgICAgRU1BQ1NfSU5UIG4gPSBYSU5U ICh2MSk7Ci0JICAgIHdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAodjIpKQotCSAgICAgIHYy ID0gWENEUiAodjIpOworCSAgICBmb3IgKEVNQUNTX0lOVCBuID0gWElOVCAodjEpOyAwIDwg biAmJiBDT05TUCAodjIpOyBuLS0pCisJICAgICAgeworCQl2MiA9IFhDRFIgKHYyKTsKKwkJ cmFyZWx5X3F1aXQgKG4pOworCSAgICAgIH0KIAkgICAgVE9QID0gQ0FSICh2Mik7CiAJICAg IE5FWFQ7CiAJICB9CkBAIC0xMjczLDkgKzEyNzUsMTEgQEAgZXhlY19ieXRlX2NvZGUgKExp c3BfT2JqZWN0IGJ5dGVzdHIsIExpc3BfT2JqZWN0IHZlY3RvciwgTGlzcF9PYmplY3QgbWF4 ZGVwdGgsCiAJCS8qIEV4Y2hhbmdlIGFyZ3MgYW5kIHRoZW4gZG8gbnRoLiAgKi8KIAkJTGlz cF9PYmplY3QgdjIgPSBQT1AsIHYxID0gVE9QOwogCQlDSEVDS19OVU1CRVIgKHYyKTsKLQkJ RU1BQ1NfSU5UIG4gPSBYSU5UICh2Mik7Ci0JCXdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAo djEpKQotCQkgIHYxID0gWENEUiAodjEpOworCQlmb3IgKEVNQUNTX0lOVCBuID0gWElOVCAo djIpOyAwIDwgbiAmJiBDT05TUCAodjEpOyBuLS0pCisJCSAgeworCQkgICAgdjEgPSBYQ0RS ICh2MSk7CisJCSAgICByYXJlbHlfcXVpdCAobik7CisJCSAgfQogCQlUT1AgPSBDQVIgKHYx KTsKIAkgICAgICB9CiAJICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyYy9jYWxscHJvYy5jIGIv c3JjL2NhbGxwcm9jLmMKaW5kZXggODU2NzRiYi4uNzEwMTc0YyAxMDA2NDQKLS0tIGEvc3Jj L2NhbGxwcm9jLmMKKysrIGIvc3JjL2NhbGxwcm9jLmMKQEAgLTE5OCw3ICsxOTgsNiBAQCBj YWxsX3Byb2Nlc3NfY2xlYW51cCAoTGlzcF9PYmplY3QgYnVmZmVyKQogICAgIHsKICAgICAg IGtpbGwgKC1zeW5jaF9wcm9jZXNzX3BpZCwgU0lHSU5UKTsKICAgICAgIG1lc3NhZ2UxICgi V2FpdGluZyBmb3IgcHJvY2VzcyB0byBkaWUuLi4odHlwZSBDLWcgYWdhaW4gdG8ga2lsbCBp dCBpbnN0YW50bHkpIik7Ci0gICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgd2FpdF9mb3Jf dGVybWluYXRpb24gKHN5bmNoX3Byb2Nlc3NfcGlkLCAwLCAxKTsKICAgICAgIHN5bmNoX3By b2Nlc3NfcGlkID0gMDsKICAgICAgIG1lc3NhZ2UxICgiV2FpdGluZyBmb3IgcHJvY2VzcyB0 byBkaWUuLi5kb25lIik7CkBAIC03MjQsOCArNzIzLDYgQEAgY2FsbF9wcm9jZXNzIChwdHJk aWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogICAgICAgcHJv Y2Vzc19jb2Rpbmcuc3JjX211bHRpYnl0ZSA9IDA7CiAgICAgfQogCi0gIG1heWJlX3F1aXQg KCk7Ci0KICAgaWYgKDAgPD0gZmQwKQogICAgIHsKICAgICAgIGVudW0geyBDQUxMUFJPQ19C VUZGRVJfU0laRV9NSU4gPSAxNiAqIDEwMjQgfTsKQEAgLTc0Niw4ICs3NDMsOCBAQCBjYWxs X3Byb2Nlc3MgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGludCBmaWxl ZmQsCiAJICBucmVhZCA9IGNhcnJ5b3ZlcjsKIAkgIHdoaWxlIChucmVhZCA8IGJ1ZnNpemUg LSAxMDI0KQogCSAgICB7Ci0JICAgICAgaW50IHRoaXNfcmVhZCA9IGVtYWNzX3JlYWQgKGZk MCwgYnVmICsgbnJlYWQsCi0JCQkJCSAgYnVmc2l6ZSAtIG5yZWFkKTsKKwkgICAgICBpbnQg dGhpc19yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZDAsIGJ1ZiArIG5yZWFkLAorCQkJCQkg ICAgICAgYnVmc2l6ZSAtIG5yZWFkKTsKIAogCSAgICAgIGlmICh0aGlzX3JlYWQgPCAwKQog CQlnb3RvIGdpdmVfdXA7CkBAIC04MzgsOCArODM1LDYgQEAgY2FsbF9wcm9jZXNzIChwdHJk aWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogCQkgd2Ugc2hv dWxkIGhhdmUgYWxyZWFkeSBkZXRlY3RlZCBhIGNvZGluZyBzeXN0ZW0uICAqLwogCSAgICAg IGRpc3BsYXlfb25fdGhlX2ZseSA9IHRydWU7CiAJICAgIH0KLQotCSAgbWF5YmVfcXVpdCAo KTsKIAl9CiAgICAgZ2l2ZV91cDogOwogCmRpZmYgLS1naXQgYS9zcmMvZG9jLmMgYi9zcmMv ZG9jLmMKaW5kZXggMzYxZDA5YS4uMWU3ZTNmYyAxMDA2NDQKLS0tIGEvc3JjL2RvYy5jCisr KyBiL3NyYy9kb2MuYwpAQCAtMTg2LDcgKzE4Niw3IEBAIGdldF9kb2Nfc3RyaW5nIChMaXNw X09iamVjdCBmaWxlcG9zLCBib29sIHVuaWJ5dGUsIGJvb2wgZGVmaW5pdGlvbikKICAgICAg ICAgIElmIHdlIHJlYWQgdGhlIHNhbWUgYmxvY2sgbGFzdCB0aW1lLCBtYXliZSBza2lwIHRo aXM/ICAqLwogICAgICAgaWYgKHNwYWNlX2xlZnQgPiAxMDI0ICogOCkKIAlzcGFjZV9sZWZ0 ID0gMTAyNCAqIDg7Ci0gICAgICBucmVhZCA9IGVtYWNzX3JlYWQgKGZkLCBwLCBzcGFjZV9s ZWZ0KTsKKyAgICAgIG5yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZCwgcCwgc3BhY2VfbGVm dCk7CiAgICAgICBpZiAobnJlYWQgPCAwKQogCXJlcG9ydF9maWxlX2Vycm9yICgiUmVhZCBl cnJvciBvbiBkb2N1bWVudGF0aW9uIGZpbGUiLCBmaWxlKTsKICAgICAgIHBbbnJlYWRdID0g MDsKQEAgLTU5MCwxNiArNTkwLDE1IEBAIHRoZSBzYW1lIGZpbGUgbmFtZSBpcyBmb3VuZCBp biB0aGUgYGRvYy1kaXJlY3RvcnknLiAgKi8pCiAgIFZkb2NfZmlsZV9uYW1lID0gZmlsZW5h bWU7CiAgIGZpbGxlZCA9IDA7CiAgIHBvcyA9IDA7Ci0gIHdoaWxlICgxKQorICB3aGlsZSAo dHJ1ZSkKICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICplbmQ7CiAgICAgICBpZiAoZmls bGVkIDwgNTEyKQotCWZpbGxlZCArPSBlbWFjc19yZWFkIChmZCwgJmJ1ZltmaWxsZWRdLCBz aXplb2YgYnVmIC0gMSAtIGZpbGxlZCk7CisJZmlsbGVkICs9IGVtYWNzX3JlYWRfcXVpdCAo ZmQsICZidWZbZmlsbGVkXSwgc2l6ZW9mIGJ1ZiAtIDEgLSBmaWxsZWQpOwogICAgICAgaWYg KCFmaWxsZWQpCiAJYnJlYWs7CiAKICAgICAgIGJ1ZltmaWxsZWRdID0gMDsKLSAgICAgIGVu ZCA9IGJ1ZiArIChmaWxsZWQgPCA1MTIgPyBmaWxsZWQgOiBmaWxsZWQgLSAxMjgpOworICAg ICAgY2hhciAqZW5kID0gYnVmICsgKGZpbGxlZCA8IDUxMiA/IGZpbGxlZCA6IGZpbGxlZCAt IDEyOCk7CiAgICAgICBwID0gbWVtY2hyIChidWYsICdcMDM3JywgZW5kIC0gYnVmKTsKICAg ICAgIC8qIHAgcG9pbnRzIHRvIF5fRmZ1bmN0aW9ubmFtZVxuIG9yIF5fVnZhcm5hbWVcbiBv ciBeX1NmaWxlbmFtZVxuLiAgKi8KICAgICAgIGlmIChwKQpkaWZmIC0tZ2l0IGEvc3JjL2Vk aXRmbnMuYyBiL3NyYy9lZGl0Zm5zLmMKaW5kZXggYjYwNTQzNy4uNDYxODE2NCAxMDA2NDQK LS0tIGEvc3JjL2VkaXRmbnMuYworKysgYi9zcmMvZWRpdGZucy5jCkBAIC0zMDk2LDYgKzMw OTYsNyBAQCBkZXRlcm1pbmVzIHdoZXRoZXIgY2FzZSBpcyBzaWduaWZpY2FudCBvciBpZ25v cmVkLiAgKi8pCiAJcmV0dXJuIG1ha2VfbnVtYmVyIChjMSA8IGMyID8gLTEgLSBjaGFycyA6 IGNoYXJzICsgMSk7CiAKICAgICAgIGNoYXJzKys7CisgICAgICByYXJlbHlfcXVpdCAoY2hh cnMpOwogICAgIH0KIAogICAvKiBUaGUgc3RyaW5ncyBtYXRjaCBhcyBmYXIgYXMgdGhleSBn by4KZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDg0NDg3OWQu LjIyYjAyYjQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAt MTQ2MSw2ICsxNDYxLDE5IEBAIHByb2Nlc3NfcXVpdF9mbGFnICh2b2lkKQogICBxdWl0ICgp OwogfQogCisvKiBDaGVjayBxdWl0LWZsYWcgYW5kIHF1aXQgaWYgaXQgaXMgbm9uLW5pbC4g IFR5cGluZyBDLWcgZG9lcyBub3QKKyAgIGRpcmVjdGx5IGNhdXNlIGEgcXVpdDsgaXQgb25s eSBzZXRzIFZxdWl0X2ZsYWcuICBTbyB0aGUgcHJvZ3JhbQorICAgbmVlZHMgdG8gY2FsbCBt YXliZV9xdWl0IGF0IHRpbWVzIHdoZW4gaXQgaXMgc2FmZSB0byBxdWl0LiAgRXZlcnkKKyAg IGxvb3AgdGhhdCBtaWdodCBydW4gZm9yIGEgbG9uZyB0aW1lIG9yIG1pZ2h0IG5vdCBleGl0 IG91Z2h0IHRvIGNhbGwKKyAgIG1heWJlX3F1aXQgYXQgbGVhc3Qgb25jZSwgYXQgYSBzYWZl IHBsYWNlLiAgVW5sZXNzIHRoYXQgaXMKKyAgIGltcG9zc2libGUsIG9mIGNvdXJzZS4gIEJ1 dCBpdCBpcyB2ZXJ5IGRlc2lyYWJsZSB0byBhdm9pZCBjcmVhdGluZworICAgbG9vcHMgd2hl cmUgbWF5YmVfcXVpdCBpcyBpbXBvc3NpYmxlLgorCisgICBJZiBxdWl0LWZsYWcgaXMgc2V0 IHRvIGBraWxsLWVtYWNzJyB0aGUgU0lHSU5UIGhhbmRsZXIgaGFzIHJlY2VpdmVkCisgICBh IHJlcXVlc3QgdG8gZXhpdCBFbWFjcyB3aGVuIGl0IGlzIHNhZmUgdG8gZG8uCisKKyAgIFdo ZW4gbm90IHF1aXR0aW5nLCBwcm9jZXNzIGFueSBwZW5kaW5nIHNpZ25hbHMuICAqLworCiB2 b2lkCiBtYXliZV9xdWl0ICh2b2lkKQogewpkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIv c3JjL2ZpbGVpby5jCmluZGV4IGExMDk3MzcuLjM4NDAwNjIgMTAwNjQ0Ci0tLSBhL3NyYy9m aWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTIwMzAsOSArMjAzMCw5IEBAIHBlcm1p c3Npb25zLiAgKi8pCiAgICAgewogICAgICAgY2hhciBidWZbTUFYX0FMTE9DQV07CiAgICAg ICBwdHJkaWZmX3QgbjsKLSAgICAgIGZvciAobmV3c2l6ZSA9IDA7IDAgPCAobiA9IGVtYWNz X3JlYWQgKGlmZCwgYnVmLCBzaXplb2YgYnVmKSk7CisgICAgICBmb3IgKG5ld3NpemUgPSAw OyAwIDwgKG4gPSBlbWFjc19yZWFkX3F1aXQgKGlmZCwgYnVmLCBzaXplb2YgYnVmKSk7CiAJ ICAgbmV3c2l6ZSArPSBuKQotCWlmIChlbWFjc193cml0ZV9zaWcgKG9mZCwgYnVmLCBuKSAh PSBuKQorCWlmIChlbWFjc193cml0ZV9xdWl0IChvZmQsIGJ1ZiwgbikgIT0gbikKIAkgIHJl cG9ydF9maWxlX2Vycm9yICgiV3JpdGUgZXJyb3IiLCBuZXduYW1lKTsKICAgICAgIGlmIChu IDwgMCkKIAlyZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBmaWxlKTsKQEAgLTMz OTYsMTMgKzMzOTYsMTAgQEAgZGVjaWRlX2NvZGluZ191bndpbmQgKExpc3BfT2JqZWN0IHVu d2luZF9kYXRhKQogc3RhdGljIExpc3BfT2JqZWN0CiByZWFkX25vbl9yZWd1bGFyIChMaXNw X09iamVjdCBzdGF0ZSkKIHsKLSAgaW50IG5ieXRlczsKLQotICBtYXliZV9xdWl0ICgpOwot ICBuYnl0ZXMgPSBlbWFjc19yZWFkIChYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMCksCi0JCSAg ICAgICAoKGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKLQkJCSsgWFNB VkVfSU5URUdFUiAoc3RhdGUsIDEpKSwKLQkJICAgICAgIFhTQVZFX0lOVEVHRVIgKHN0YXRl LCAyKSk7CisgIGludCBuYnl0ZXMgPSBlbWFjc19yZWFkX3F1aXQgKFhTQVZFX0lOVEVHRVIg KHN0YXRlLCAwKSwKKwkJCQkoKGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZ VEUKKwkJCQkgKyBYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMSkpLAorCQkJCVhTQVZFX0lOVEVH RVIgKHN0YXRlLCAyKSk7CiAgIC8qIEZhc3QgcmVjeWNsZSB0aGlzIG9iamVjdCBmb3IgdGhl IGxpa2VseSBuZXh0IGNhbGwuICAqLwogICBmcmVlX21pc2MgKHN0YXRlKTsKICAgcmV0dXJu IG1ha2VfbnVtYmVyIChuYnl0ZXMpOwpAQCAtMzc0NiwxNyArMzc0MywxNyBAQCBieSBjYWxs aW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICAgICAgaW50IG5yZWFk OwogCiAJICAgICAgaWYgKHN0LnN0X3NpemUgPD0gKDEwMjQgKiA0KSkKLQkJbnJlYWQgPSBl bWFjc19yZWFkIChmZCwgcmVhZF9idWYsIDEwMjQgKiA0KTsKKwkJbnJlYWQgPSBlbWFjc19y ZWFkX3F1aXQgKGZkLCByZWFkX2J1ZiwgMTAyNCAqIDQpOwogCSAgICAgIGVsc2UKIAkJewot CQkgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmLCAxMDI0KTsKKwkJICBucmVh ZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJlYWRfYnVmLCAxMDI0KTsKIAkJICBpZiAobnJl YWQgPT0gMTAyNCkKIAkJICAgIHsKIAkJICAgICAgaW50IG50YWlsOwogCQkgICAgICBpZiAo bHNlZWsgKGZkLCAtICgxMDI0ICogMyksIFNFRUtfRU5EKSA8IDApCiAJCQlyZXBvcnRfZmls ZV9lcnJvciAoIlNldHRpbmcgZmlsZSBwb3NpdGlvbiIsCiAJCQkJCSAgIG9yaWdfZmlsZW5h bWUpOwotCQkgICAgICBudGFpbCA9IGVtYWNzX3JlYWQgKGZkLCByZWFkX2J1ZiArIG5yZWFk LCAxMDI0ICogMyk7CisJCSAgICAgIG50YWlsID0gZW1hY3NfcmVhZF9xdWl0IChmZCwgcmVh ZF9idWYgKyBucmVhZCwgMTAyNCAqIDMpOwogCQkgICAgICBucmVhZCA9IG50YWlsIDwgMCA/ IG50YWlsIDogbnJlYWQgKyBudGFpbDsKIAkJICAgIH0KIAkJfQpAQCAtMzg2MSwxNCArMzg1 OCwxMSBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJ ICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBmaWxlIHBvc2l0aW9uIiwgb3JpZ19m aWxlbmFtZSk7CiAJfQogCi0gICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyogQ291bnQg aG93IG1hbnkgY2hhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlCiAJIG1hdGNoIHRoZSB0 ZXh0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4gICovCi0gICAgICB3aGlsZSAo MSkKKyAgICAgIHdoaWxlICh0cnVlKQogCXsKLQkgIGludCBucmVhZCwgYnVmcG9zOwotCi0J ICBucmVhZCA9IGVtYWNzX3JlYWQgKGZkLCByZWFkX2J1Ziwgc2l6ZW9mIHJlYWRfYnVmKTsK KwkgIGludCBucmVhZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJlYWRfYnVmLCBzaXplb2Yg cmVhZF9idWYpOwogCSAgaWYgKG5yZWFkIDwgMCkKIAkgICAgcmVwb3J0X2ZpbGVfZXJyb3Ig KCJSZWFkIGVycm9yIiwgb3JpZ19maWxlbmFtZSk7CiAJICBlbHNlIGlmIChucmVhZCA9PSAw KQpAQCAtMzg5MCw3ICszODg0LDcgQEAgYnkgY2FsbGluZyBgZm9ybWF0LWRlY29kZScsIHdo aWNoIHNlZS4gICovKQogCSAgICAgIGJyZWFrOwogCSAgICB9CiAKLQkgIGJ1ZnBvcyA9IDA7 CisJICBpbnQgYnVmcG9zID0gMDsKIAkgIHdoaWxlIChidWZwb3MgPCBucmVhZCAmJiBzYW1l X2F0X3N0YXJ0IDwgWlZfQllURQogCQkgJiYgRkVUQ0hfQllURSAoc2FtZV9hdF9zdGFydCkg PT0gcmVhZF9idWZbYnVmcG9zXSkKIAkgICAgc2FtZV9hdF9zdGFydCsrLCBidWZwb3MrKzsK QEAgLTM5MTAsNyArMzkwNCw3IEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGlj aCBzZWUuICAqLykKIAkgIGRlbF9yYW5nZV8xIChzYW1lX2F0X3N0YXJ0LCBzYW1lX2F0X2Vu ZCwgMCwgMCk7CiAJICBnb3RvIGhhbmRsZWQ7CiAJfQotICAgICAgbWF5YmVfcXVpdCAoKTsK KwogICAgICAgLyogQ291bnQgaG93IG1hbnkgY2hhcnMgYXQgdGhlIGVuZCBvZiB0aGUgZmls ZQogCSBtYXRjaCB0aGUgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICBCdXQsIGlm IHdlIGhhdmUKIAkgYWxyZWFkeSBmb3VuZCB0aGF0IGRlY29kaW5nIGlzIG5lY2Vzc2FyeSwg ZG9uJ3Qgd2FzdGUgdGltZS4gICovCkBAIC0zOTMyLDcgKzM5MjYsOCBAQCBieSBjYWxsaW5n IGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICB0b3RhbF9yZWFkID0gbnJl YWQgPSAwOwogCSAgd2hpbGUgKHRvdGFsX3JlYWQgPCB0cmlhbCkKIAkgICAgewotCSAgICAg IG5yZWFkID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdG90YWxfcmVhZCwgdHJpYWwg LSB0b3RhbF9yZWFkKTsKKwkgICAgICBucmVhZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJl YWRfYnVmICsgdG90YWxfcmVhZCwKKwkJCQkgICAgICAgdHJpYWwgLSB0b3RhbF9yZWFkKTsK IAkgICAgICBpZiAobnJlYWQgPCAwKQogCQlyZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJy b3IiLCBvcmlnX2ZpbGVuYW1lKTsKIAkgICAgICBlbHNlIGlmIChucmVhZCA9PSAwKQpAQCAt NDA1OCwxNiArNDA1MywxMyBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2gg c2VlLiAgKi8pCiAgICAgICBpbnNlcnRlZCA9IDA7CQkvKiBCeXRlcyBwdXQgaW50byBDT05W RVJTSU9OX0JVRkZFUiBzbyBmYXIuICAqLwogICAgICAgdW5wcm9jZXNzZWQgPSAwOwkJLyog Qnl0ZXMgbm90IHByb2Nlc3NlZCBpbiBwcmV2aW91cyBsb29wLiAgKi8KIAotICAgICAgd2hp bGUgKDEpCisgICAgICB3aGlsZSAodHJ1ZSkKIAl7CiAJICAvKiBSZWFkIGF0IG1vc3QgUkVB RF9CVUZfU0laRSBieXRlcyBhdCBhIHRpbWUsIHRvIGFsbG93CiAJICAgICBxdWl0dGluZyB3 aGlsZSByZWFkaW5nIGEgaHVnZSBmaWxlLiAgKi8KIAotCSAgLyogQWxsb3cgcXVpdHRpbmcg b3V0IG9mIHRoZSBhY3R1YWwgSS9PLiAgKi8KLQkgIG1heWJlX3F1aXQgKCk7Ci0JICB0aGlz ID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdW5wcm9jZXNzZWQsCi0JCQkgICAgIFJF QURfQlVGX1NJWkUgLSB1bnByb2Nlc3NlZCk7Ci0KKwkgIHRoaXMgPSBlbWFjc19yZWFkX3F1 aXQgKGZkLCByZWFkX2J1ZiArIHVucHJvY2Vzc2VkLAorCQkJCSAgUkVBRF9CVUZfU0laRSAt IHVucHJvY2Vzc2VkKTsKIAkgIGlmICh0aGlzIDw9IDApCiAJICAgIGJyZWFrOwogCkBAIC00 MjgxLDExICs0MjczLDEwIEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGljaCBz ZWUuICAqLykKIAkgICAgLyogQWxsb3cgcXVpdHRpbmcgb3V0IG9mIHRoZSBhY3R1YWwgSS9P LiAgV2UgZG9uJ3QgbWFrZSB0ZXh0CiAJICAgICAgIHBhcnQgb2YgdGhlIGJ1ZmZlciB1bnRp bCBhbGwgdGhlIHJlYWRpbmcgaXMgZG9uZSwgc28gYSBDLWcKIAkgICAgICAgaGVyZSBkb2Vz bid0IGRvIGFueSBoYXJtLiAgKi8KLQkgICAgbWF5YmVfcXVpdCAoKTsKLQkgICAgdGhpcyA9 IGVtYWNzX3JlYWQgKGZkLAotCQkJICAgICAgICgoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZ VEUgLSBCRUdfQllURQotCQkJCSsgaW5zZXJ0ZWQpLAotCQkJICAgICAgIHRyeXRyeSk7CisJ ICAgIHRoaXMgPSBlbWFjc19yZWFkX3F1aXQgKGZkLAorCQkJCSAgICAoKGNoYXIgKikgQkVH X0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKKwkJCQkgICAgICsgaW5zZXJ0ZWQpLAorCQkJ CSAgICB0cnl0cnkpOwogCSAgfQogCiAJaWYgKHRoaXMgPD0gMCkKQEAgLTUzOTgsNyArNTM4 OSw3IEBAIGVfd3JpdGUgKGludCBkZXNjLCBMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZf dCBzdGFydCwgcHRyZGlmZl90IGVuZCwKIAkJICAgICAgIDogKFNUUklOR1AgKGNvZGluZy0+ ZHN0X29iamVjdCkKIAkJCSAgPyBTU0RBVEEgKGNvZGluZy0+ZHN0X29iamVjdCkKIAkJCSAg OiAoY2hhciAqKSBCWVRFX1BPU19BRERSIChjb2RpbmctPmRzdF9wb3NfYnl0ZSkpKTsKLQkg IGNvZGluZy0+cHJvZHVjZWQgLT0gZW1hY3Nfd3JpdGVfc2lnIChkZXNjLCBidWYsIGNvZGlu Zy0+cHJvZHVjZWQpOworCSAgY29kaW5nLT5wcm9kdWNlZCAtPSBlbWFjc193cml0ZV9xdWl0 IChkZXNjLCBidWYsIGNvZGluZy0+cHJvZHVjZWQpOwogCiAJICBpZiAoY29kaW5nLT5yYXdf ZGVzdGluYXRpb24pCiAJICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9maWxlbG9jay5jIGIvc3Jj L2ZpbGVsb2NrLmMKaW5kZXggZGU2NWM1Mi4uNjdlOGRiZCAxMDA2NDQKLS0tIGEvc3JjL2Zp bGVsb2NrLmMKKysrIGIvc3JjL2ZpbGVsb2NrLmMKQEAgLTQwNyw5ICs0MDcsNyBAQCBjcmVh dGVfbG9ja19maWxlIChjaGFyICpsZm5hbWUsIGNoYXIgKmxvY2tfaW5mb19zdHIsIGJvb2wg Zm9yY2UpCiAJICAgIGZjbnRsIChmZCwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CiAJICBsb2Nr X2luZm9fbGVuID0gc3RybGVuIChsb2NrX2luZm9fc3RyKTsKIAkgIGVyciA9IDA7Ci0JICAv KiBVc2UgJ3dyaXRlJywgbm90ICdlbWFjc193cml0ZScsIGFzIGdhcmJhZ2UgY29sbGVjdGlv bgotCSAgICAgbWlnaHQgc2lnbmFsIGFuIGVycm9yLCB3aGljaCB3b3VsZCBsZWFrIEZELiAg Ki8KLQkgIGlmICh3cml0ZSAoZmQsIGxvY2tfaW5mb19zdHIsIGxvY2tfaW5mb19sZW4pICE9 IGxvY2tfaW5mb19sZW4KKwkgIGlmIChlbWFjc193cml0ZSAoZmQsIGxvY2tfaW5mb19zdHIs IGxvY2tfaW5mb19sZW4pICE9IGxvY2tfaW5mb19sZW4KIAkgICAgICB8fCBmY2htb2QgKGZk LCBTX0lSVVNSIHwgU19JUkdSUCB8IFNfSVJPVEgpICE9IDApCiAJICAgIGVyciA9IGVycm5v OwogCSAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIGZzeW5jIGhlcmUsIGFzIHRoZSBj b250ZW50cyBvZgpAQCAtNDkwLDggKzQ4OCw3IEBAIHJlYWRfbG9ja19kYXRhIChjaGFyICps Zm5hbWUsIGNoYXIgbGZpbmZvW01BWF9MRklORk8gKyAxXSkKICAgICAgIGludCBmZCA9IGVt YWNzX29wZW4gKGxmbmFtZSwgT19SRE9OTFkgfCBPX05PRk9MTE9XLCAwKTsKICAgICAgIGlm ICgwIDw9IGZkKQogCXsKLQkgIC8qIFVzZSByZWFkLCBub3QgZW1hY3NfcmVhZCwgc2luY2Ug RkQgaXNuJ3QgdW53aW5kLXByb3RlY3RlZC4gICovCi0JICBwdHJkaWZmX3QgcmVhZF9ieXRl cyA9IHJlYWQgKGZkLCBsZmluZm8sIE1BWF9MRklORk8gKyAxKTsKKwkgIHB0cmRpZmZfdCBy ZWFkX2J5dGVzID0gZW1hY3NfcmVhZCAoZmQsIGxmaW5mbywgTUFYX0xGSU5GTyArIDEpOwog CSAgaW50IHJlYWRfZXJybm8gPSBlcnJubzsKIAkgIGlmIChlbWFjc19jbG9zZSAoZmQpICE9 IDApCiAJICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3NyYy9mbnMuYyBiL3NyYy9mbnMu YwppbmRleCA0NDQzMzljLi40MWMwYzU4IDEwMDY0NAotLS0gYS9zcmMvZm5zLmMKKysrIGIv c3JjL2Zucy5jCkBAIC04NCwyMiArODQsNiBAQCBTZWUgSW5mbyBub2RlIGAoZWxpc3ApUmFu ZG9tIE51bWJlcnMnIGZvciBtb3JlIGRldGFpbHMuICAqLykKICAgcmV0dXJuIG1ha2VfbnVt YmVyICh2YWwpOwogfQogDAotLyogSGV1cmlzdGljIG9uIGhvdyBtYW55IGl0ZXJhdGlvbnMg b2YgYSB0aWdodCBsb29wIGNhbiBiZSBzYWZlbHkgZG9uZQotICAgYmVmb3JlIGl0J3MgdGlt ZSB0byBkbyBhIHF1aXQuICBUaGlzIG11c3QgYmUgYSBwb3dlciBvZiAyLiAgSXQKLSAgIGlz IG5pY2UgYnV0IG5vdCBuZWNlc3NhcnkgZm9yIGl0IHRvIGVxdWFsIFVTSFJUX01BWCArIDEu ICAqLwotZW51bSB7IFFVSVRfQ09VTlRfSEVVUklTVElDID0gMSA8PCAxNiB9OwotCi0vKiBQ cm9jZXNzIGEgcXVpdCwgYnV0IGRvIGl0IG9ubHkgcmFyZWx5LCBmb3IgZWZmaWNpZW5jeS4g ICJSYXJlbHkiCi0gICBtZWFucyBvbmNlIHBlciBRVUlUX0NPVU5UX0hFVVJJU1RJQyBvciBw ZXIgVVNIUlRfTUFYICsgMSB0aW1lcywKLSAgIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgVXNl ICpRVUlUX0NPVU5UIHRvIGNvdW50IHRoaXMuICAqLwotCi1zdGF0aWMgdm9pZAotcmFyZWx5 X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCAqcXVpdF9jb3VudCkKLXsKLSAgaWYgKCEgKCsr KnF1aXRfY291bnQgJiAoUVVJVF9DT1VOVF9IRVVSSVNUSUMgLSAxKSkpCi0gICAgbWF5YmVf cXVpdCAoKTsKLX0KLQogLyogUmFuZG9tIGRhdGEtc3RydWN0dXJlIGZ1bmN0aW9ucy4gICov CiAKIERFRlVOICgibGVuZ3RoIiwgRmxlbmd0aCwgU2xlbmd0aCwgMSwgMSwgMCwKQEAgLTEz NTksOSArMTM0Myw4IEBAIERFRlVOICgibnRoY2RyIiwgRm50aGNkciwgU250aGNkciwgMiwg MiwgMCwKICAgKExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGxpc3QpCiB7CiAgIENIRUNL X05VTUJFUiAobik7Ci0gIEVNQUNTX0lOVCBudW0gPSBYSU5UIChuKTsKICAgTGlzcF9PYmpl Y3QgdGFpbCA9IGxpc3Q7Ci0gIGZvciAoRU1BQ1NfSU5UIGkgPSAwOyBpIDwgbnVtOyBpKysp CisgIGZvciAoRU1BQ1NfSU5UIG51bSA9IFhJTlQgKG4pOyAwIDwgbnVtOyBudW0tLSkKICAg ICB7CiAgICAgICBpZiAoISBDT05TUCAodGFpbCkpCiAJewpAQCAtMTM2OSw2ICsxMzUyLDcg QEAgREVGVU4gKCJudGhjZHIiLCBGbnRoY2RyLCBTbnRoY2RyLCAyLCAyLCAwLAogCSAgcmV0 dXJuIFFuaWw7CiAJfQogICAgICAgdGFpbCA9IFhDRFIgKHRhaWwpOworICAgICAgcmFyZWx5 X3F1aXQgKG51bSk7CiAgICAgfQogICByZXR1cm4gdGFpbDsKIH0KQEAgLTE0MDUsNyArMTM4 OSw3IEBAIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3NlIGNh ciBpcyBFTFQuICAqLykKICAgICB7CiAgICAgICBpZiAoISBOSUxQIChGZXF1YWwgKGVsdCwg WENBUiAodGFpbCkpKSkKIAlyZXR1cm4gdGFpbDsKLSAgICAgIHJhcmVseV9xdWl0ICgmcXVp dF9jb3VudCk7CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAg fQogICBDSEVDS19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAt MTQxNiwxMSArMTQwMCwxMyBAQCBERUZVTiAoIm1lbXEiLCBGbWVtcSwgU21lbXEsIDIsIDIs IDAsCiBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIg aXMgRUxULiAgKi8pCiAgIChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7 CisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKICAgTGlzcF9PYmplY3Qg dGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAo dGFpbCkpCiAgICAgewogICAgICAgaWYgKEVRIChYQ0FSICh0YWlsKSwgZWx0KSkKIAlyZXR1 cm4gdGFpbDsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9 CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0x NDM0LDEyICsxNDIwLDE0IEBAIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBM SVNUIHdob3NlIGNhciBpcyBFTFQuICAqLykKICAgaWYgKCFGTE9BVFAgKGVsdCkpCiAgICAg cmV0dXJuIEZtZW1xIChlbHQsIGxpc3QpOwogCisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0 X2NvdW50ID0gMDsKICAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsg Q09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgTGlzcF9P YmplY3QgdGVtID0gWENBUiAodGFpbCk7CiAgICAgICBpZiAoRkxPQVRQICh0ZW0pICYmIGlu dGVybmFsX2VxdWFsIChlbHQsIHRlbSwgMCwgMCwgUW5pbCkpCiAJcmV0dXJuIHRhaWw7Cisg ICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVDS19M SVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ1MSwxMSArMTQz OSwxMyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElT VCB3aG9zZSBjYXIgaXMgS0VZLgogRWxlbWVudHMgb2YgTElTVCB0aGF0IGFyZSBub3QgY29u c2VzIGFyZSBpZ25vcmVkLiAgKi8pCiAgIChMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0 IGxpc3QpCiB7CisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKICAgTGlz cF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWls ID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkg JiYgRVEgKFhDQVIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7 CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVD S19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ4Niw3ICsx NDc2LDcgQEAgVGhlIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBlbGVtZW50IG9mIExJ U1Qgd2hvc2UgY2FyIGVxdWFscyBLRVkuICAqLykKICAgICAgIGlmIChDT05TUCAoY2FyKQog CSAgJiYgKEVRIChYQ0FSIChjYXIpLCBrZXkpIHx8ICFOSUxQIChGZXF1YWwgKFhDQVIgKGNh ciksIGtleSkpKSkKIAlyZXR1cm4gY2FyOwotICAgICAgcmFyZWx5X3F1aXQgKCZxdWl0X2Nv dW50KTsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9CiAg IENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTEz LDExICsxNTAzLDEzIEBAIERFRlVOICgicmFzc3EiLCBGcmFzc3EsIFNyYXNzcSwgMiwgMiwg MCwKIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3QgZWxlbWVudCBvZiBMSVNUIHdo b3NlIGNkciBpcyBLRVkuICAqLykKICAgKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3Qg bGlzdCkKIHsKKyAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICBMaXNw X09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwg PSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBpZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAm JiBFUSAoWENEUiAoWENBUiAodGFpbCkpLCBrZXkpKQogCXJldHVybiBYQ0FSICh0YWlsKTsK KyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNL X0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTM2LDcgKzE1 MjgsNyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElT VCB3aG9zZSBjZHIgZXF1YWxzIEtFWS4gICovKQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJ ICAmJiAoRVEgKFhDRFIgKGNhciksIGtleSkgfHwgIU5JTFAgKEZlcXVhbCAoWENEUiAoY2Fy KSwga2V5KSkpKQogCXJldHVybiBjYXI7Ci0gICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAg Q0hFQ0tfTElTVF9FTkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKQEAgLTE2OTIs NyArMTY4NCw3IEBAIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHNlcXVlbmNlIGBmb28nLiAg Ki8pCiAJICAgIH0KIAkgIGVsc2UKIAkgICAgcHJldiA9IHRhaWw7Ci0JICByYXJlbHlfcXVp dCAoJnF1aXRfY291bnQpOworCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwog CX0KICAgICAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBzZXEpOwogICAgIH0KQEAgLTE3MTcs MTAgKzE3MDksMTAgQEAgVGhpcyBmdW5jdGlvbiBtYXkgZGVzdHJ1Y3RpdmVseSBtb2RpZnkg U0VRIHRvIHByb2R1Y2UgdGhlIHZhbHVlLiAgKi8pCiAKICAgICAgIGZvciAocHJldiA9IFFu aWwsIHRhaWwgPSBzZXE7IENPTlNQICh0YWlsKTsgdGFpbCA9IG5leHQpCiAJewotCSAgcmFy ZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKIAkgIG5leHQgPSBYQ0RSICh0YWlsKTsKIAkgIEZz ZXRjZHIgKHRhaWwsIHByZXYpOwogCSAgcHJldiA9IHRhaWw7CisJICBpbmNyX3JhcmVseV9x dWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIHNl cSk7CiAgICAgICBzZXEgPSBwcmV2OwpAQCAtMTc2Niw4ICsxNzU4LDggQEAgU2VlIGFsc28g dGhlIGZ1bmN0aW9uIGBucmV2ZXJzZScsIHdoaWNoIGlzIHVzZWQgbW9yZSBvZnRlbi4gICov KQogICAgICAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICAgICAgZm9y IChuZXcgPSBRbmlsOyBDT05TUCAoc2VxKTsgc2VxID0gWENEUiAoc2VxKSkKIAl7Ci0JICBy YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCSAgbmV3ID0gRmNvbnMgKFhDQVIgKHNlcSks IG5ldyk7CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg Q0hFQ0tfTElTVF9FTkQgKHNlcSwgc2VxKTsKICAgICB9CkBAIC0yMDU4LDYgKzIwNTAsNyBA QCB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8g dXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZl Y3RzLiAgKi8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCwgTGlz cF9PYmplY3QgdmFsKQogeworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7 CiAgIExpc3BfT2JqZWN0IHByZXYgPSBRbmlsOwogICBmb3IgKExpc3BfT2JqZWN0IHRhaWwg PSBwbGlzdDsgQ09OU1AgKHRhaWwpICYmIENPTlNQIChYQ0RSICh0YWlsKSk7CiAgICAgICAg dGFpbCA9IFhDRFIgKFhDRFIgKHRhaWwpKSkKQEAgLTIwNjksNiArMjA2Miw3IEBAIFRoZSBQ TElTVCBpcyBtb2RpZmllZCBieSBzaWRlIGVmZmVjdHMuICAqLykKIAl9CiAKICAgICAgIHBy ZXYgPSB0YWlsOworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAg IH0KICAgTGlzcF9PYmplY3QgbmV3Y2VsbAogICAgID0gRmNvbnMgKHByb3AsIEZjb25zICh2 YWwsIE5JTFAgKHByZXYpID8gcGxpc3QgOiBYQ0RSIChYQ0RSIChwcmV2KSkpKTsKQEAgLTIx MDYsNyArMjEwMCw3IEBAIG9uZSBvZiB0aGUgcHJvcGVydGllcyBvbiB0aGUgbGlzdC4gICov KQogICAgIHsKICAgICAgIGlmICghIE5JTFAgKEZlcXVhbCAocHJvcCwgWENBUiAodGFpbCkp KSkKIAlyZXR1cm4gWENBUiAoWENEUiAodGFpbCkpOwotICAgICAgcmFyZWx5X3F1aXQgKCZx dWl0X2NvdW50KTsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAg ICB9CiAKICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIHByb3ApOwpAQCAtMjEzNiw3ICsyMTMw LDcgQEAgVGhlIFBMSVNUIGlzIG1vZGlmaWVkIGJ5IHNpZGUgZWZmZWN0cy4gICovKQogCX0K IAogICAgICAgcHJldiA9IHRhaWw7Ci0gICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291bnQp OworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAgTGlz cF9PYmplY3QgbmV3Y2VsbCA9IGxpc3QyIChwcm9wLCB2YWwpOwogICBpZiAoTklMUCAocHJl dikpCkBAIC0yMjE2LDcgKzIyMTAsNyBAQCBpbnRlcm5hbF9lcXVhbCAoTGlzcF9PYmplY3Qg bzEsIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGJvb2wgcHJvcHMsCiAKICAgdW5zaWdu ZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogIHRhaWxfcmVjdXJzZToKLSAgcmFyZWx5 X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQp OwogICBpZiAoRVEgKG8xLCBvMikpCiAgICAgcmV0dXJuIDE7CiAgIGlmIChYVFlQRSAobzEp ICE9IFhUWVBFIChvMikpCkBAIC0yNDI1LDExICsyNDE5LDEwIEBAIHVzYWdlOiAobmNvbmMg JnJlc3QgTElTVFMpICAqLykKIAl7CiAJICB0YWlsID0gdGVtOwogCSAgdGVtID0gWENEUiAo dGFpbCk7CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg d2hpbGUgKENPTlNQICh0ZW0pKTsKIAotICAgICAgcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKLQogICAgICAgdGVtID0gYXJnc1thcmdudW0gKyAxXTsKICAgICAgIEZzZXRjZHIgKHRh aWwsIHRlbSk7CiAgICAgICBpZiAoTklMUCAodGVtKSkKQEAgLTI4NTAsMTAgKzI4NDMsMTIg QEAgcHJvcGVydHkgYW5kIGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgbmlsLgogVGhlIHZh bHVlIGlzIGFjdHVhbGx5IHRoZSB0YWlsIG9mIFBMSVNUIHdob3NlIGNhciBpcyBQUk9QLiAg Ki8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCkKIHsKKyAgdW5z aWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICB3aGlsZSAoQ09OU1AgKHBsaXN0 KSAmJiAhRVEgKFhDQVIgKHBsaXN0KSwgcHJvcCkpCiAgICAgewogICAgICAgcGxpc3QgPSBY Q0RSIChwbGlzdCk7CiAgICAgICBwbGlzdCA9IENEUiAocGxpc3QpOworICAgICAgaW5jcl9y YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAgcmV0dXJuIHBsaXN0OwogfQpk aWZmIC0tZ2l0IGEvc3JjL2luZGVudC5jIGIvc3JjL2luZGVudC5jCmluZGV4IDMzZjcwOWMu LmFmZjE0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmRlbnQuYworKysgYi9zcmMvaW5kZW50LmMK QEAgLTEyMDAsOCArMTIwMCw2IEBAIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwg cHRyZGlmZl90IGZyb21ieXRlLCBFTUFDU19JTlQgZnJvbXZwb3MsCiAgICAgY29udGludWF0 aW9uX2dseXBoX3dpZHRoID0gMDsgIC8qIEluIHRoZSBmcmluZ2UuICAqLwogI2VuZGlmCiAK LSAgbWF5YmVfcXVpdCAoKTsKLQogICAvKiBJdCdzIGp1c3QgaW1wb3NzaWJsZSB0byBiZSB0 b28gcGFyYW5vaWQgaGVyZS4gICovCiAgIGVhc3NlcnQgKGZyb20gPT0gQllURV9UT19DSEFS IChmcm9tYnl0ZSkgJiYgZnJvbWJ5dGUgPT0gQ0hBUl9UT19CWVRFIChmcm9tKSk7CiAKQEAg LTEyMTMsOCArMTIxMSwxMiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZyb20sIHB0 cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICBjbXBfaXQuaWQgPSAt MTsKICAgY29tcG9zaXRpb25fY29tcHV0ZV9zdG9wX3BvcyAoJmNtcF9pdCwgcG9zLCBwb3Nf Ynl0ZSwgdG8sIFFuaWwpOwogCi0gIHdoaWxlICgxKQorICB1bnNpZ25lZCBzaG9ydCBpbnQg cXVpdF9jb3VudCA9IDA7CisKKyAgd2hpbGUgKHRydWUpCiAgICAgeworICAgICAgaW5jcl9y YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCiAgICAgICB3aGlsZSAocG9zID09IG5leHRf Ym91bmRhcnkpCiAJewogCSAgcHRyZGlmZl90IHBvc19oZXJlID0gcG9zOwpAQCAtMTI3OSw2 ICsxMjgxLDggQEAgY29tcHV0ZV9tb3Rpb24gKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3Qg ZnJvbWJ5dGUsIEVNQUNTX0lOVCBmcm9tdnBvcywKIAkgICAgICBwb3MgPSBuZXdwb3M7CiAJ ICAgICAgcG9zX2J5dGUgPSBDSEFSX1RPX0JZVEUgKHBvcyk7CiAJICAgIH0KKworCSAgaW5j cl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCX0KIAogICAgICAgLyogSGFuZGxlIHJp Z2h0IG1hcmdpbi4gICovCkBAIC0xNjAxLDYgKzE2MDUsNyBAQCBjb21wdXRlX21vdGlvbiAo cHRyZGlmZl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9z LAogCQkJICAgICAgcG9zID0gZmluZF9iZWZvcmVfbmV4dF9uZXdsaW5lIChwb3MsIHRvLCAx LCAmcG9zX2J5dGUpOwogCQkJICAgICAgaWYgKHBvcyA8IHRvKQogCQkJCUlOQ19CT1RIIChw b3MsIHBvc19ieXRlKTsKKwkJCSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKIAkJCSAgICB9CiAJCQkgIHdoaWxlIChwb3MgPCB0bwogCQkJCSAmJiBpbmRlbnRlZF9i ZXlvbmRfcCAocG9zLCBwb3NfYnl0ZSwKZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIv c3JjL2tleWJvYXJkLmMKaW5kZXggMzE3NjY5ZC4uYTg2ZTdjNSAxMDA2NDQKLS0tIGEvc3Jj L2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJkLmMKQEAgLTcwNDEsNDAgKzcwNDEsMjIg QEAgdHR5X3JlYWRfYXZhaWxfaW5wdXQgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwsCiAK ICAgLyogTm93IHJlYWQ7IGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIsIHRoaXMgd2lsbCBu b3QgYmxvY2suCiAgICAgIE5SRUFEIGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIGNoYXJzIHJl YWQuICAqLwotICBkbwotICAgIHsKLSAgICAgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmlsZW5v ICh0dHktPmlucHV0KSwgKGNoYXIgKikgY2J1Ziwgbl90b19yZWFkKTsKLSAgICAgIC8qIFBP U0lYIGluZmVycyB0aGF0IHByb2Nlc3NlcyB3aGljaCBhcmUgbm90IGluIHRoZSBzZXNzaW9u IGxlYWRlcidzCi0gICAgICAgICBwcm9jZXNzIGdyb3VwIHdvbid0IGdldCBTSUdIVVBzIGF0 IGxvZ291dCB0aW1lLiAgQlNESSBhZGhlcmVzIHRvCi0gICAgICAgICB0aGlzIHBhcnQgc3Rh bmRhcmQgYW5kIHJldHVybnMgLTEgZnJvbSByZWFkICgwKSB3aXRoIGVycm5vPT1FSU8KLSAg ICAgICAgIHdoZW4gdGhlIGNvbnRyb2wgdHR5IGlzIHRha2VuIGF3YXkuCi0gICAgICAgICBK ZWZmcmV5IEhvbmlnIDxqY2hAYnNkaS5jb20+IHNheXMgdGhpcyBpcyBnZW5lcmFsbHkgc2Fm ZS4gICovCi0gICAgICBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0gRUlPKQotICAgICAg ICByZXR1cm4gLTI7ICAgICAgICAgIC8qIENsb3NlIHRoaXMgdGVybWluYWwuICAqLwotI2lm IGRlZmluZWQgKEFJWCkgJiYgZGVmaW5lZCAoX0JTRCkKLSAgICAgIC8qIFRoZSBrZXJuZWwg c29tZXRpbWVzIGZhaWxzIHRvIGRlbGl2ZXIgU0lHSFVQIGZvciBwdHlzLgotICAgICAgICAg VGhpcyBsb29rcyBpbmNvcnJlY3QsIGJ1dCBpdCBpc24ndCwgYmVjYXVzZSBfQlNEIGNhdXNl cwotICAgICAgICAgT19OREVMQVkgdG8gYmUgZGVmaW5lZCBpbiBmY250bC5oIGFzIE9fTk9O QkxPQ0ssCi0gICAgICAgICBhbmQgdGhhdCBjYXVzZXMgYSB2YWx1ZSBvdGhlciB0aGFuIDAg d2hlbiB0aGVyZSBpcyBubyBpbnB1dC4gICovCi0gICAgICBpZiAobnJlYWQgPT0gMCkKLSAg ICAgICAgcmV0dXJuIC0yOyAgICAgICAgICAvKiBDbG9zZSB0aGlzIHRlcm1pbmFsLiAgKi8K LSNlbmRpZgotICAgIH0KLSAgd2hpbGUgKAotICAgICAgICAgLyogV2UgdXNlZCB0byByZXRy eSB0aGUgcmVhZCBpZiBpdCB3YXMgaW50ZXJydXB0ZWQuCi0gICAgICAgICAgICBCdXQgdGhp cyBkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIE9fTk9OQkxPQ0sgY2F1c2VzCi0gICAgICAg ICAgICBhbiBFQUdBSU4gZXJyb3IuICBEb2VzIGFueWJvZHkga25vdyBvZiBhIHNpdHVhdGlv bgotICAgICAgICAgICAgd2hlcmUgYSByZXRyeSBpcyBhY3R1YWxseSBuZWVkZWQ/ICAqLwot I2lmIDAKLSAgICAgICAgIG5yZWFkIDwgMCAmJiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5v ID09IEVGQVVMVAotI2lmZGVmIEVCQURTTFQKLSAgICAgICAgICAgICAgICAgICAgICAgfHwg ZXJybm8gPT0gRUJBRFNMVAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICkKLSNl bHNlCi0gICAgICAgICAwCisgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmlsZW5vICh0dHktPmlu cHV0KSwgKGNoYXIgKikgY2J1Ziwgbl90b19yZWFkKTsKKyAgLyogUE9TSVggaW5mZXJzIHRo YXQgcHJvY2Vzc2VzIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNlc3Npb24gbGVhZGVyJ3MKKyAg ICAgcHJvY2VzcyBncm91cCB3b24ndCBnZXQgU0lHSFVQcyBhdCBsb2dvdXQgdGltZS4gIEJT REkgYWRoZXJlcyB0bworICAgICB0aGlzIHBhcnQgc3RhbmRhcmQgYW5kIHJldHVybnMgLTEg ZnJvbSByZWFkICgwKSB3aXRoIGVycm5vPT1FSU8KKyAgICAgd2hlbiB0aGUgY29udHJvbCB0 dHkgaXMgdGFrZW4gYXdheS4KKyAgICAgSmVmZnJleSBIb25pZyA8amNoQGJzZGkuY29tPiBz YXlzIHRoaXMgaXMgZ2VuZXJhbGx5IHNhZmUuICAqLworICBpZiAobnJlYWQgPT0gLTEgJiYg ZXJybm8gPT0gRUlPKQorICAgIHJldHVybiAtMjsgICAgICAgICAgLyogQ2xvc2UgdGhpcyB0 ZXJtaW5hbC4gICovCisjaWYgZGVmaW5lZCBBSVggJiYgZGVmaW5lZCBfQlNECisgIC8qIFRo ZSBrZXJuZWwgc29tZXRpbWVzIGZhaWxzIHRvIGRlbGl2ZXIgU0lHSFVQIGZvciBwdHlzLgor ICAgICBUaGlzIGxvb2tzIGluY29ycmVjdCwgYnV0IGl0IGlzbid0LCBiZWNhdXNlIF9CU0Qg Y2F1c2VzCisgICAgIE9fTkRFTEFZIHRvIGJlIGRlZmluZWQgaW4gZmNudGwuaCBhcyBPX05P TkJMT0NLLAorICAgICBhbmQgdGhhdCBjYXVzZXMgYSB2YWx1ZSBvdGhlciB0aGFuIDAgd2hl biB0aGVyZSBpcyBubyBpbnB1dC4gICovCisgIGlmIChucmVhZCA9PSAwKQorICAgIHJldHVy biAtMjsgICAgICAgICAgLyogQ2xvc2UgdGhpcyB0ZXJtaW5hbC4gICovCiAjZW5kaWYKLSAg ICAgICAgICk7CiAKICNpZm5kZWYgVVNBQkxFX0ZJT05SRUFECiAjaWYgZGVmaW5lZCAoVVNH KSB8fCBkZWZpbmVkIChDWUdXSU4pCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xp c3AuaAppbmRleCA2ODY2ZDBmLi41OTc2ZGExIDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisr KyBiL3NyYy9saXNwLmgKQEAgLTMxMjMsMjQgKzMxMjMsMzYgQEAgc3RydWN0IGhhbmRsZXIK IAogZXh0ZXJuIExpc3BfT2JqZWN0IG1lbW9yeV9zaWduYWxfZGF0YTsKIAotLyogQ2hlY2sg cXVpdC1mbGFnIGFuZCBxdWl0IGlmIGl0IGlzIG5vbi1uaWwuICBUeXBpbmcgQy1nIGRvZXMg bm90Ci0gICBkaXJlY3RseSBjYXVzZSBhIHF1aXQ7IGl0IG9ubHkgc2V0cyBWcXVpdF9mbGFn LiAgU28gdGhlIHByb2dyYW0KLSAgIG5lZWRzIHRvIGNhbGwgbWF5YmVfcXVpdCBhdCB0aW1l cyB3aGVuIGl0IGlzIHNhZmUgdG8gcXVpdC4gIEV2ZXJ5Ci0gICBsb29wIHRoYXQgbWlnaHQg cnVuIGZvciBhIGxvbmcgdGltZSBvciBtaWdodCBub3QgZXhpdCBvdWdodCB0byBjYWxsCi0g ICBtYXliZV9xdWl0IGF0IGxlYXN0IG9uY2UsIGF0IGEgc2FmZSBwbGFjZS4gIFVubGVzcyB0 aGF0IGlzCi0gICBpbXBvc3NpYmxlLCBvZiBjb3Vyc2UuICBCdXQgaXQgaXMgdmVyeSBkZXNp cmFibGUgdG8gYXZvaWQgY3JlYXRpbmcKLSAgIGxvb3BzIHdoZXJlIG1heWJlX3F1aXQgaXMg aW1wb3NzaWJsZS4KLQotICAgSWYgcXVpdC1mbGFnIGlzIHNldCB0byBga2lsbC1lbWFjcycg dGhlIFNJR0lOVCBoYW5kbGVyIGhhcyByZWNlaXZlZAotICAgYSByZXF1ZXN0IHRvIGV4aXQg RW1hY3Mgd2hlbiBpdCBpcyBzYWZlIHRvIGRvLgotCi0gICBXaGVuIG5vdCBxdWl0dGluZywg cHJvY2VzcyBhbnkgcGVuZGluZyBzaWduYWxzLiAgKi8KLQogZXh0ZXJuIHZvaWQgbWF5YmVf cXVpdCAodm9pZCk7CiAKIC8qIFRydWUgaWYgb3VnaHQgdG8gcXVpdCBub3cuICAqLwogCiAj ZGVmaW5lIFFVSVRQICghTklMUCAoVnF1aXRfZmxhZykgJiYgTklMUCAoVmluaGliaXRfcXVp dCkpCisKKy8qIEhldXJpc3RpYyBvbiBob3cgbWFueSBpdGVyYXRpb25zIG9mIGEgdGlnaHQg bG9vcCBjYW4gYmUgc2FmZWx5IGRvbmUKKyAgIGJlZm9yZSBpdCdzIHRpbWUgdG8gZG8gYSBx dWl0LiAgVGhpcyBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gIEl0CisgICBpcyBuaWNlIGJ1dCBu b3QgbmVjZXNzYXJ5IGZvciBpdCB0byBlcXVhbCBVU0hSVF9NQVggKyAxLiAgKi8KKworZW51 bSB7IFFVSVRfQ09VTlRfSEVVUklTVElDID0gMSA8PCAxNiB9OworCisvKiBQcm9jZXNzIGEg cXVpdCByYXJlbHksIGJhc2VkIG9uIGEgY291bnRlciBDT1VOVCwgZm9yIGVmZmljaWVuY3ku CisgICAiUmFyZWx5IiBtZWFucyBvbmNlIHBlciBRVUlUX0NPVU5UX0hFVVJJU1RJQyBvciBw ZXIgVVNIUlRfTUFYICsgMQorICAgdGltZXMsIHdoaWNoZXZlciBpcyBzbWFsbGVyIChzb21l d2hhdCBhcmJpdHJhcnksIGJ1dCBvZnRlbiBmYXN0ZXIpLiAgKi8KKworSU5MSU5FIHZvaWQK K3JhcmVseV9xdWl0ICh1bnNpZ25lZCBzaG9ydCBpbnQgY291bnQpCit7CisgIGlmICghIChj b3VudCAmIChRVUlUX0NPVU5UX0hFVVJJU1RJQyAtIDEpKSkKKyAgICBtYXliZV9xdWl0ICgp OworfQorCisvKiBJbmNyZW1lbnQgKlFVSVRfQ09VTlQgYW5kIHJhcmVseSBxdWl0LiAgKi8K KworSU5MSU5FIHZvaWQKK2luY3JfcmFyZWx5X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCAq cXVpdF9jb3VudCkKK3sKKyAgcmFyZWx5X3F1aXQgKCsrKnF1aXRfY291bnQpOworfQogDAog ZXh0ZXJuIExpc3BfT2JqZWN0IFZhc2NpaV9kb3duY2FzZV90YWJsZTsKIGV4dGVybiBMaXNw X09iamVjdCBWYXNjaWlfY2Fub25fdGFibGU7CkBAIC00MjE2LDggKzQyMjgsMTAgQEAgZXh0 ZXJuIGludCBlbWFjc19vcGVuIChjb25zdCBjaGFyICosIGludCwgaW50KTsKIGV4dGVybiBp bnQgZW1hY3NfcGlwZSAoaW50WzJdKTsKIGV4dGVybiBpbnQgZW1hY3NfY2xvc2UgKGludCk7 CiBleHRlcm4gcHRyZGlmZl90IGVtYWNzX3JlYWQgKGludCwgdm9pZCAqLCBwdHJkaWZmX3Qp OworZXh0ZXJuIHB0cmRpZmZfdCBlbWFjc19yZWFkX3F1aXQgKGludCwgdm9pZCAqLCBwdHJk aWZmX3QpOwogZXh0ZXJuIHB0cmRpZmZfdCBlbWFjc193cml0ZSAoaW50LCB2b2lkIGNvbnN0 ICosIHB0cmRpZmZfdCk7CiBleHRlcm4gcHRyZGlmZl90IGVtYWNzX3dyaXRlX3NpZyAoaW50 LCB2b2lkIGNvbnN0ICosIHB0cmRpZmZfdCk7CitleHRlcm4gcHRyZGlmZl90IGVtYWNzX3dy aXRlX3F1aXQgKGludCwgdm9pZCBjb25zdCAqLCBwdHJkaWZmX3QpOwogZXh0ZXJuIHZvaWQg ZW1hY3NfcGVycm9yIChjaGFyIGNvbnN0ICopOwogCiBleHRlcm4gdm9pZCB1bmxvY2tfYWxs X2ZpbGVzICh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9scmVhZC5jIGIvc3JjL2xyZWFkLmMK aW5kZXggMTc4MDY5Mi4uMDk0YWE2MiAxMDA2NDQKLS0tIGEvc3JjL2xyZWFkLmMKKysrIGIv c3JjL2xyZWFkLmMKQEAgLTkxMCw3ICs5MTAsNyBAQCBzYWZlX3RvX2xvYWRfdmVyc2lvbiAo aW50IGZkKQogCiAgIC8qIFJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBmcm9tIHRoZSBmaWxl LCBhbmQgbG9vayBmb3IgYSBsaW5lCiAgICAgIHNwZWNpZnlpbmcgdGhlIGJ5dGUgY29tcGls ZXIgdmVyc2lvbiB1c2VkLiAgKi8KLSAgbmJ5dGVzID0gZW1hY3NfcmVhZCAoZmQsIGJ1Ziwg c2l6ZW9mIGJ1Zik7CisgIG5ieXRlcyA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIGJ1Ziwgc2l6 ZW9mIGJ1Zik7CiAgIGlmIChuYnl0ZXMgPiAwKQogICAgIHsKICAgICAgIC8qIFNraXAgdG8g dGhlIG5leHQgbmV3bGluZSwgc2tpcHBpbmcgb3ZlciB0aGUgaW5pdGlhbCBgRUxDJwpkaWZm IC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4IGVkOWMxMmMuLjA4 NGFkZGEgMTAwNjQ0Ci0tLSBhL3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAg LTgwMCw2ICs4MDAsOCBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlm Zl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAgICAqYnl0ZXBvcyA9IGxpbV9i eXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFSIChsaW1fYnl0ZSArIG5leHQp OwogCQl9CisJICAgICAgaWYgKGFsbG93X3F1aXQpCisJCW1heWJlX3F1aXQgKCk7CiAgICAg ICAgICAgICB9CiAKIAkgIHN0YXJ0X2J5dGUgPSBsaW1fYnl0ZTsKQEAgLTkwNSw2ICs5MDcs OCBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5 dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAgICAqYnl0ZXBvcyA9IGNlaWxpbmdfYnl0ZSArIHBy ZXYgKyAxOwogCQkgIHJldHVybiBCWVRFX1RPX0NIQVIgKGNlaWxpbmdfYnl0ZSArIHByZXYg KyAxKTsKIAkJfQorCSAgICAgIGlmIChhbGxvd19xdWl0KQorCQltYXliZV9xdWl0ICgpOwog ICAgICAgICAgICAgfQogCiAJICBzdGFydF9ieXRlID0gY2VpbGluZ19ieXRlOwpAQCAtMTI1 Miw2ICsxMjU2LDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJk aWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgICAgcmV0dXJuIChuKTsKIAkg ICAgfQogCSAgbisrOworCSAgbWF5YmVfcXVpdCAoKTsKIAl9CiAgICAgICB3aGlsZSAobiA+ IDApCiAJewpAQCAtMTI5Niw2ICsxMzAxLDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmpl Y3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgICAg cmV0dXJuICgwIC0gbik7CiAJICAgIH0KIAkgIG4tLTsKKwkgIG1heWJlX3F1aXQgKCk7CiAJ fQogI2lmZGVmIFJFTF9BTExPQwogICAgICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxv Y2F0aW9uICgwKTsKQEAgLTMyNTIsNiArMzI1OCw4IEBAIGZpbmRfbmV3bGluZTEgKHB0cmRp ZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAg ICAqYnl0ZXBvcyA9IGxpbV9ieXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFS IChsaW1fYnl0ZSArIG5leHQpOwogCQl9CisJICAgICAgaWYgKGFsbG93X3F1aXQpCisJCW1h eWJlX3F1aXQgKCk7CiAgICAgICAgICAgICB9CiAKIAkgIHN0YXJ0X2J5dGUgPSBsaW1fYnl0 ZTsKZGlmZiAtLWdpdCBhL3NyYy9zeW50YXguYyBiL3NyYy9zeW50YXguYwppbmRleCBlNzEz OTIyLi4wNmZlNTBiIDEwMDY0NAotLS0gYS9zcmMvc3ludGF4LmMKKysrIGIvc3JjL3N5bnRh eC5jCkBAIC01OTMsNiArNTkzLDcgQEAgc3RhdGljIHB0cmRpZmZfdAogZmluZF9kZWZ1bl9z dGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogewogICBwdHJkaWZm X3Qgb3BvaW50ID0gUFQsIG9wb2ludF9ieXRlID0gUFRfQllURTsKKyAgdW5zaWduZWQgc2hv cnQgaW50IHF1aXRfY291bnQgPSAwOwogCiAgIC8qIFVzZSBwcmV2aW91cyBmaW5kaW5nLCBp ZiBpdCdzIHZhbGlkIGFuZCBhcHBsaWVzIHRvIHRoaXMgaW5xdWlyeS4gICovCiAgIGlmIChj dXJyZW50X2J1ZmZlciA9PSBmaW5kX3N0YXJ0X2J1ZmZlcgpAQCAtNjIxLDExICs2MjIsOSBA QCBmaW5kX2RlZnVuX3N0YXJ0IChwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUp CiAgIFNFVFVQX0JVRkZFUl9TWU5UQVhfVEFCTEUgKCk7CiAgIHdoaWxlIChQVCA+IEJFR1Yp CiAgICAgewotICAgICAgaW50IGM7Ci0KICAgICAgIC8qIE9wZW4tcGFyZW4gYXQgc3RhcnQg b2YgbGluZSBtZWFucyB3ZSBtYXkgaGF2ZSBmb3VuZCBvdXIKIAkgZGVmdW4tc3RhcnQuICAq LwotICAgICAgYyA9IEZFVENIX0NIQVJfQVNfTVVMVElCWVRFIChQVF9CWVRFKTsKKyAgICAg IGludCBjID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKFBUX0JZVEUpOwogICAgICAgaWYg KFNZTlRBWCAoYykgPT0gU29wZW4pCiAJewogCSAgU0VUVVBfU1lOVEFYX1RBQkxFIChQVCAr IDEsIC0xKTsJLyogVHJ5IGFnYWluLi4uICovCkBAIC02MzcsNiArNjM2LDcgQEAgZmluZF9k ZWZ1bl9zdGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogCX0KICAg ICAgIC8qIE1vdmUgdG8gYmVnIG9mIHByZXZpb3VzIGxpbmUuICAqLwogICAgICAgc2Nhbl9u ZXdsaW5lIChQVCwgUFRfQllURSwgQkVHViwgQkVHVl9CWVRFLCAtMiwgMSk7CisgICAgICBp bmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogCiAgIC8qIFJlY29yZCB3 aGF0IHdlIGZvdW5kLCBmb3IgdGhlIG5leHQgdHJ5LiAgKi8KQEAgLTcxNSw2ICs3MTUsNyBA QCBiYWNrX2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBw dHJkaWZmX3Qgc3RvcCwKICAgcHRyZGlmZl90IG5lc3RpbmcgPSAxOwkJLyogQ3VycmVudCBj b21tZW50IG5lc3RpbmcuICAqLwogICBpbnQgYzsKICAgaW50IHN5bnRheCA9IDA7CisgIHVu c2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKIAogICAvKiBGSVhNRTogQSB9fSBj b21tZW50LWVuZGVyIHN0eWxlIGxlYWRzIHRvIGluY29ycmVjdCBiZWhhdmlvcgogICAgICBp biB0aGUgY2FzZSBvZiB7eyBjIH19fSBiZWNhdXNlIHdlIGlnbm9yZSB0aGUgbGFzdCB0d28g Y2hhcnMgd2hpY2ggYXJlCkBAIC03MjQsNiArNzI1LDggQEAgYmFja19jb21tZW50IChwdHJk aWZmX3QgZnJvbSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAgICAg IHRoYXQgZGV0ZXJtaW5lcyBxdW90ZSBwYXJpdHkgdG8gdGhlIGNvbW1lbnQtZW5kLiAgKi8K ICAgd2hpbGUgKGZyb20gIT0gc3RvcCkKICAgICB7CisgICAgICBpbmNyX3JhcmVseV9xdWl0 ICgmcXVpdF9jb3VudCk7CisKICAgICAgIHB0cmRpZmZfdCB0ZW1wX2J5dGU7CiAgICAgICBp bnQgcHJldl9zeW50YXg7CiAgICAgICBib29sIGNvbTJzdGFydCwgY29tMmVuZCwgY29tc3Rh cnQ7CkBAIC05NTEsNyArOTU0LDkgQEAgYmFja19jb21tZW50IChwdHJkaWZmX3QgZnJvbSwg cHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJCSAgZGVmdW5fc3RhcnRf Ynl0ZSA9IENIQVJfVE9fQllURSAoZGVmdW5fc3RhcnQpOwogCQl9CiAJICAgIH0KLQl9IHdo aWxlIChkZWZ1bl9zdGFydCA8IGNvbW1lbnRfZW5kKTsKKwkgIGluY3JfcmFyZWx5X3F1aXQg KCZxdWl0X2NvdW50KTsKKwl9CisgICAgICB3aGlsZSAoZGVmdW5fc3RhcnQgPCBjb21tZW50 X2VuZCk7CiAKICAgICAgIGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CiAgICAg ICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20gLSAxKTsKQEAgLTE0MTcsMjIg KzE0MjIsMjAgQEAgREVGVU4gKCJpbnRlcm5hbC1kZXNjcmliZS1zeW50YXgtdmFsdWUiLCBG aW50ZXJuYWxfZGVzY3JpYmVfc3ludGF4X3ZhbHVlLAogICAgQ09VTlQgbmVnYXRpdmUgbWVh bnMgc2NhbiBiYWNrd2FyZCBhbmQgc3RvcCBhdCB3b3JkIGJlZ2lubmluZy4gICovCiAKIHB0 cmRpZmZfdAotc2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVy IEVNQUNTX0lOVCBjb3VudCkKK3NjYW5fd29yZHMgKHB0cmRpZmZfdCBmcm9tLCBFTUFDU19J TlQgY291bnQpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBiZWcgPSBCRUdWOwotICByZWdp c3RlciBwdHJkaWZmX3QgZW5kID0gWlY7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tX2J5 dGUgPSBDSEFSX1RPX0JZVEUgKGZyb20pOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUg Y29kZTsKKyAgcHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIHB0cmRpZmZfdCBlbmQgPSBaVjsK KyAgcHRyZGlmZl90IGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CisgIGVudW0g c3ludGF4Y29kZSBjb2RlOwogICBpbnQgY2gwLCBjaDE7CiAgIExpc3BfT2JqZWN0IGZ1bmMs IHBvczsKIAotICBtYXliZV9xdWl0ICgpOwotCiAgIFNFVFVQX1NZTlRBWF9UQUJMRSAoZnJv bSwgY291bnQpOwogCiAgIHdoaWxlIChjb3VudCA+IDApCiAgICAgewotICAgICAgd2hpbGUg KDEpCisgICAgICB3aGlsZSAodHJ1ZSkKIAl7CiAJICBpZiAoZnJvbSA9PSBlbmQpCiAJICAg IHJldHVybiAwOwpAQCAtMTQ0NSw2ICsxNDQ4LDcgQEAgc2Nhbl93b3JkcyAocmVnaXN0ZXIg cHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKIAkgICAgYnJlYWs7 CiAJICBpZiAoY29kZSA9PSBTd29yZCkKIAkgICAgYnJlYWs7CisJICByYXJlbHlfcXVpdCAo ZnJvbSk7CiAJfQogICAgICAgLyogTm93IENIMCBpcyBhIGNoYXJhY3RlciB3aGljaCBiZWdp bnMgYSB3b3JkIGFuZCBGUk9NIGlzIHRoZQogICAgICAgICAgcG9zaXRpb24gb2YgdGhlIG5l eHQgY2hhcmFjdGVyLiAgKi8KQEAgLTE0NzMsMTMgKzE0NzcsMTQgQEAgc2Nhbl93b3JkcyAo cmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKIAkJ YnJlYWs7CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgY2gw ID0gY2gxOworCSAgICAgIHJhcmVseV9xdWl0IChmcm9tKTsKIAkgICAgfQogCX0KICAgICAg IGNvdW50LS07CiAgICAgfQogICB3aGlsZSAoY291bnQgPCAwKQogICAgIHsKLSAgICAgIHdo aWxlICgxKQorICAgICAgd2hpbGUgKHRydWUpCiAJewogCSAgaWYgKGZyb20gPT0gYmVnKQog CSAgICByZXR1cm4gMDsKQEAgLTE0OTIsNiArMTQ5Nyw3IEBAIHNjYW5fd29yZHMgKHJlZ2lz dGVyIHB0cmRpZmZfdCBmcm9tLCByZWdpc3RlciBFTUFDU19JTlQgY291bnQpCiAJICAgIGJy ZWFrOwogCSAgaWYgKGNvZGUgPT0gU3dvcmQpCiAJICAgIGJyZWFrOworCSAgcmFyZWx5X3F1 aXQgKGZyb20pOwogCX0KICAgICAgIC8qIE5vdyBDSDEgaXMgYSBjaGFyYWN0ZXIgd2hpY2gg ZW5kcyBhIHdvcmQgYW5kIEZST00gaXMgdGhlCiAgICAgICAgICBwb3NpdGlvbiBvZiBpdC4g ICovCkBAIC0xNTI0LDYgKzE1MzAsNyBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZm X3QgZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogCQkgIGJyZWFrOwogCQl9CiAJ ICAgICAgY2gxID0gY2gwOworCSAgICAgIHJhcmVseV9xdWl0IChmcm9tKTsKIAkgICAgfQog CX0KICAgICAgIGNvdW50Kys7CkBAIC0xOTYxLDkgKzE5NjgsMTAgQEAgc2tpcF9jaGFycyAo Ym9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJ CX0KIAkgICAgZndkX29rOgogCSAgICAgIHAgKz0gbmJ5dGVzLCBwb3MrKywgcG9zX2J5dGUg Kz0gbmJ5dGVzOworCSAgICAgIHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAJZWxzZQot CSAgd2hpbGUgKDEpCisJICB3aGlsZSAodHJ1ZSkKIAkgICAgewogCSAgICAgIGlmIChwID49 IHN0b3ApCiAJCXsKQEAgLTE5ODUsMTUgKzE5OTMsMTQgQEAgc2tpcF9jaGFycyAoYm9vbCBm b3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJCWJyZWFr OwogCSAgICBmd2RfdW5pYnl0ZV9vazoKIAkgICAgICBwKyssIHBvcysrLCBwb3NfYnl0ZSsr OworCSAgICAgIHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAgICAgICB9CiAgICAgZWxz ZQogICAgICAgewogCWlmIChtdWx0aWJ5dGUpCi0JICB3aGlsZSAoMSkKKwkgIHdoaWxlICh0 cnVlKQogCSAgICB7Ci0JICAgICAgdW5zaWduZWQgY2hhciAqcHJldl9wOwotCiAJICAgICAg aWYgKHAgPD0gc3RvcCkKIAkJewogCQkgIGlmIChwIDw9IGVuZHApCkBAIC0yMDAxLDggKzIw MDgsMTEgQEAgc2tpcF9jaGFycyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5n LCBMaXNwX09iamVjdCBsaW0sCiAJCSAgcCA9IEdQVF9BRERSOwogCQkgIHN0b3AgPSBlbmRw OwogCQl9Ci0JICAgICAgcHJldl9wID0gcDsKLQkgICAgICB3aGlsZSAoLS1wID49IHN0b3Ag JiYgISBDSEFSX0hFQURfUCAoKnApKTsKKwkgICAgICB1bnNpZ25lZCBjaGFyICpwcmV2X3Ag PSBwOworCSAgICAgIGRvCisJCXAtLTsKKwkgICAgICB3aGlsZSAoc3RvcCA8PSBwICYmICEg Q0hBUl9IRUFEX1AgKCpwKSk7CisKIAkgICAgICBjID0gU1RSSU5HX0NIQVIgKHApOwogCiAJ ICAgICAgaWYgKCEgTklMUCAoaXNvX2NsYXNzZXMpICYmIGluX2NsYXNzZXMgKGMsIGlzb19j bGFzc2VzKSkKQEAgLTIwMjYsOSArMjAzNiwxMCBAQCBza2lwX2NoYXJzIChib29sIGZvcndh cmRwLCBMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSwKIAkJfQogCSAgICBi YWNrX29rOgogCSAgICAgIHBvcy0tLCBwb3NfYnl0ZSAtPSBwcmV2X3AgLSBwOworCSAgICAg IHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAJZWxzZQotCSAgd2hpbGUgKDEpCisJICB3 aGlsZSAodHJ1ZSkKIAkgICAgewogCSAgICAgIGlmIChwIDw9IHN0b3ApCiAJCXsKQEAgLTIw NTAsNiArMjA2MSw3IEBAIHNraXBfY2hhcnMgKGJvb2wgZm9yd2FyZHAsIExpc3BfT2JqZWN0 IHN0cmluZywgTGlzcF9PYmplY3QgbGltLAogCQlicmVhazsKIAkgICAgYmFja191bmlieXRl X29rOgogCSAgICAgIHAtLSwgcG9zLS0sIHBvc19ieXRlLS07CisJICAgICAgcmFyZWx5X3F1 aXQgKHBvcyk7CiAJICAgIH0KICAgICAgIH0KIApAQCAtMjE1NSw2ICsyMTY3LDcgQEAgc2tp cF9zeW50YXhlcyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09i amVjdCBsaW0pCiAJCWlmICghIGZhc3RtYXBbU1lOVEFYIChjKV0pCiAJCSAgZ290byBkb25l OwogCQlwICs9IG5ieXRlcywgcG9zKyssIHBvc19ieXRlICs9IG5ieXRlczsKKwkJcmFyZWx5 X3F1aXQgKHBvcyk7CiAJICAgICAgfQogCSAgICB3aGlsZSAoIXBhcnNlX3NleHBfbG9va3Vw X3Byb3BlcnRpZXMKIAkJICAgfHwgcG9zIDwgZ2xfc3RhdGUuZV9wcm9wZXJ0eSk7CkBAIC0y MTcxLDEwICsyMTg0LDggQEAgc2tpcF9zeW50YXhlcyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9P YmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0pCiAKIAlpZiAobXVsdGlieXRlKQogCSAg ewotCSAgICB3aGlsZSAoMSkKKwkgICAgd2hpbGUgKHRydWUpCiAJICAgICAgewotCQl1bnNp Z25lZCBjaGFyICpwcmV2X3A7Ci0KIAkJaWYgKHAgPD0gc3RvcCkKIAkJICB7CiAJCSAgICBp ZiAocCA8PSBlbmRwKQpAQCAtMjE4MywxNyArMjE5NCwyMiBAQCBza2lwX3N5bnRheGVzIChi b29sIGZvcndhcmRwLCBMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSkKIAkJ ICAgIHN0b3AgPSBlbmRwOwogCQkgIH0KIAkJVVBEQVRFX1NZTlRBWF9UQUJMRV9CQUNLV0FS RCAocG9zIC0gMSk7Ci0JCXByZXZfcCA9IHA7Ci0JCXdoaWxlICgtLXAgPj0gc3RvcCAmJiAh IENIQVJfSEVBRF9QICgqcCkpOworCisJCXVuc2lnbmVkIGNoYXIgKnByZXZfcCA9IHA7CisJ CWRvCisJCSAgcC0tOworCQl3aGlsZSAoc3RvcCA8PSBwICYmICEgQ0hBUl9IRUFEX1AgKCpw KSk7CisKIAkJYyA9IFNUUklOR19DSEFSIChwKTsKIAkJaWYgKCEgZmFzdG1hcFtTWU5UQVgg KGMpXSkKIAkJICBicmVhazsKIAkJcG9zLS0sIHBvc19ieXRlIC09IHByZXZfcCAtIHA7CisJ CXJhcmVseV9xdWl0IChwb3MpOwogCSAgICAgIH0KIAkgIH0KIAllbHNlCiAJICB7Ci0JICAg IHdoaWxlICgxKQorCSAgICB3aGlsZSAodHJ1ZSkKIAkgICAgICB7CiAJCWlmIChwIDw9IHN0 b3ApCiAJCSAgewpAQCAtMjIwNiw2ICsyMjIyLDcgQEAgc2tpcF9zeW50YXhlcyAoYm9vbCBm b3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0pCiAJCWlmICgh IGZhc3RtYXBbU1lOVEFYIChwWy0xXSldKQogCQkgIGJyZWFrOwogCQlwLS0sIHBvcy0tLCBw b3NfYnl0ZS0tOworCQlyYXJlbHlfcXVpdCAocG9zKTsKIAkgICAgICB9CiAJICB9CiAgICAg ICB9CkBAIC0yMjczLDkgKzIyOTAsMTAgQEAgZm9yd19jb21tZW50IChwdHJkaWZmX3QgZnJv bSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJICAgICAgcHRyZGlm Zl90ICpjaGFycG9zX3B0ciwgcHRyZGlmZl90ICpieXRlcG9zX3B0ciwKIAkgICAgICBFTUFD U19JTlQgKmluY29tbWVudF9wdHIsIGludCAqbGFzdF9zeW50YXhfcHRyKQogewotICByZWdp c3RlciBpbnQgYywgYzE7Ci0gIHJlZ2lzdGVyIGVudW0gc3ludGF4Y29kZSBjb2RlOwotICBy ZWdpc3RlciBpbnQgc3ludGF4LCBvdGhlcl9zeW50YXg7CisgIHVuc2lnbmVkIHNob3J0IGlu dCBxdWl0X2NvdW50ID0gMDsKKyAgaW50IGMsIGMxOworICBlbnVtIHN5bnRheGNvZGUgY29k ZTsKKyAgaW50IHN5bnRheCwgb3RoZXJfc3ludGF4OwogCiAgIGlmIChuZXN0aW5nIDw9IDAp IG5lc3RpbmcgPSAtMTsKIApAQCAtMjM2Nyw2ICsyMzg1LDggQEAgZm9yd19jb21tZW50IChw dHJkaWZmX3QgZnJvbSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJ ICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwogCSAgbmVzdGluZysrOwog CX0KKworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAg KmNoYXJwb3NfcHRyID0gZnJvbTsKICAgKmJ5dGVwb3NfcHRyID0gZnJvbV9ieXRlOwpAQCAt MjM5NCwxMyArMjQxNCwxMiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2Ug cmV0dXJuIG5pbC4gICovKQogICBwdHJkaWZmX3Qgb3V0X2NoYXJwb3MsIG91dF9ieXRlcG9z OwogICBFTUFDU19JTlQgZHVtbXk7CiAgIGludCBkdW1teTI7CisgIHVuc2lnbmVkIHNob3J0 IGludCBxdWl0X2NvdW50ID0gMDsKIAogICBDSEVDS19OVU1CRVIgKGNvdW50KTsKICAgY291 bnQxID0gWElOVCAoY291bnQpOwogICBzdG9wID0gY291bnQxID4gMCA/IFpWIDogQkVHVjsK IAotICBtYXliZV9xdWl0ICgpOwotCiAgIGZyb20gPSBQVDsKICAgZnJvbV9ieXRlID0gUFRf QllURTsKIApAQCAtMjQ0MSw2ICsyNDYwLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsg b3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICBJTkNfQk9USCAoZnJvbSwgZnJv bV9ieXRlKTsKIAkgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwog CSAgICB9CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg d2hpbGUgKGNvZGUgPT0gU3doaXRlc3BhY2UgfHwgKGNvZGUgPT0gU2VuZGNvbW1lbnQgJiYg YyA9PSAnXG4nKSk7CiAKQEAgLTI0NjksMTEgKzI0ODksOCBAQCBiZXR3ZWVuIHRoZW0sIHJl dHVybiB0OyBvdGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCiAgIHdoaWxlIChjb3VudDEg PCAwKQogICAgIHsKLSAgICAgIHdoaWxlICgxKQorICAgICAgd2hpbGUgKHRydWUpCiAJewot CSAgYm9vbCBxdW90ZWQ7Ci0JICBpbnQgc3ludGF4OwotCiAJICBpZiAoZnJvbSA8PSBzdG9w KQogCSAgICB7CiAJICAgICAgU0VUX1BUX0JPVEggKEJFR1YsIEJFR1ZfQllURSk7CkBAIC0y NDgyLDkgKzI0OTksOSBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2UgcmV0 dXJuIG5pbC4gICovKQogCiAJICBERUNfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgIC8q IGNoYXJfcXVvdGVkIGRvZXMgVVBEQVRFX1NZTlRBWF9UQUJMRV9CQUNLV0FSRCAoZnJvbSku ICAqLwotCSAgcXVvdGVkID0gY2hhcl9xdW90ZWQgKGZyb20sIGZyb21fYnl0ZSk7CisJICBi b29sIHF1b3RlZCA9IGNoYXJfcXVvdGVkIChmcm9tLCBmcm9tX2J5dGUpOwogCSAgYyA9IEZF VENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgc3ludGF4ID0gU1lOVEFY X1dJVEhfRkxBR1MgKGMpOworCSAgaW50IHN5bnRheCA9IFNZTlRBWF9XSVRIX0ZMQUdTIChj KTsKIAkgIGNvZGUgPSBTWU5UQVggKGMpOwogCSAgY29tc3R5bGUgPSAwOwogCSAgY29tbmVz dGVkID0gU1lOVEFYX0ZMQUdTX0NPTU1FTlRfTkVTVEVEIChzeW50YXgpOwpAQCAtMjUyNyw2 ICsyNTQ0LDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKIAkJICAgIH0KIAkJICBlbHNlIGlmIChmcm9tID09IHN0b3ApCiAJCSAgICBi cmVhazsKKwkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJCX0KIAkgICAg ICBpZiAoZmVuY2VfZm91bmQgPT0gMCkKIAkJewpAQCAtMjU3Myw2ICsyNTkxLDggQEAgYmV0 d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAg ICBTRVRfUFRfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgICAgICByZXR1cm4gUW5pbDsK IAkgICAgfQorCisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogCiAg ICAgICBjb3VudDErKzsKQEAgLTI2MTIsNiArMjYzMiw3IEBAIHNjYW5fbGlzdHMgKEVNQUNT X0lOVCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhw ZmxhZykKICAgRU1BQ1NfSU5UIGR1bW15OwogICBpbnQgZHVtbXkyOwogICBib29sIG11bHRp Ynl0ZV9zeW1ib2xfcCA9IHNleHBmbGFnICYmIG11bHRpYnl0ZV9zeW50YXhfYXNfc3ltYm9s OworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7CiAKICAgaWYgKGRlcHRo ID4gMCkgbWluX2RlcHRoID0gMDsKIApAQCAtMjYyNyw2ICsyNjQ4LDcgQEAgc2Nhbl9saXN0 cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBi b29sIHNleHBmbGFnKQogICAgIHsKICAgICAgIHdoaWxlIChmcm9tIDwgc3RvcCkKIAl7CisJ ICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJICBib29sIGNvbXN0YXJ0X2Zp cnN0LCBwcmVmaXg7CiAJICBpbnQgc3ludGF4LCBvdGhlcl9zeW50YXg7CiAJICBVUERBVEVf U1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwpAQCAtMjY5NSw2ICsyNzE3LDcgQEAgc2Nh bl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRl cHRoLCBib29sIHNleHBmbGFnKQogCQkgICAgICBnb3RvIGRvbmU7CiAJCSAgICB9CiAJCSAg SU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1 aXRfY291bnQpOwogCQl9CiAJICAgICAgZ290byBkb25lOwogCkBAIC0yNzY2LDYgKzI3ODks NyBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFD U19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAJCSAgaWYgKGNfY29kZSA9PSBTY2hhcnF1 b3RlIHx8IGNfY29kZSA9PSBTZXNjYXBlKQogCQkgICAgSU5DX0JPVEggKGZyb20sIGZyb21f Ynl0ZSk7CiAJCSAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJl bHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZy b21fYnl0ZSk7CiAJICAgICAgaWYgKCFkZXB0aCAmJiBzZXhwZmxhZykgZ290byBkb25lOwpA QCAtMjc5MSwxMSArMjgxNSwxMSBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJvbSwgRU1B Q1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAgICAgewog ICAgICAgd2hpbGUgKGZyb20gPiBzdG9wKQogCXsKLQkgIGludCBzeW50YXg7CisJICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJICBERUNfQk9USCAoZnJvbSwgZnJvbV9i eXRlKTsKIAkgIFVQREFURV9TWU5UQVhfVEFCTEVfQkFDS1dBUkQgKGZyb20pOwogCSAgYyA9 IEZFVENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgc3ludGF4PSBTWU5U QVhfV0lUSF9GTEFHUyAoYyk7CisJICBpbnQgc3ludGF4ID0gU1lOVEFYX1dJVEhfRkxBR1Mg KGMpOwogCSAgY29kZSA9IHN5bnRheF9tdWx0aWJ5dGUgKGMsIG11bHRpYnl0ZV9zeW1ib2xf cCk7CiAJICBpZiAoZGVwdGggPT0gbWluX2RlcHRoKQogCSAgICBsYXN0X2dvb2QgPSBmcm9t OwpAQCAtMjg2Nyw2ICsyODkxLDcgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVN QUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogCQkgICAg ICBkZWZhdWx0OiBnb3RvIGRvbmUyOwogCQkgICAgICB9CiAJCSAgREVDX0JPVEggKGZyb20s IGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9 CiAJICAgICAgZ290byBkb25lMjsKIApAQCAtMjkyOSwxMyArMjk1NCwxNCBAQCBzY2FuX2xp c3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgs IGJvb2wgc2V4cGZsYWcpCiAJCSAgICAgIGlmIChzeW50YXhfbXVsdGlieXRlIChjLCBtdWx0 aWJ5dGVfc3ltYm9sX3ApID09IGNvZGUpCiAJCQlicmVhazsKIAkJICAgIH0KKwkJICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoY29kZSA9PSBT c3RyaW5nX2ZlbmNlICYmICFkZXB0aCAmJiBzZXhwZmxhZykgZ290byBkb25lMjsKIAkgICAg ICBicmVhazsKIAogCSAgICBjYXNlIFNzdHJpbmc6CiAJICAgICAgc3RyaW5ndGVybSA9IEZF VENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgICAgIHdoaWxlICgxKQor CSAgICAgIHdoaWxlICh0cnVlKQogCQl7CiAJCSAgaWYgKGZyb20gPT0gc3RvcCkKIAkJICAg IGdvdG8gbG9zZTsKQEAgLTI5NDksNiArMjk3NSw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lO VCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxh ZykKIAkJCSAgICAgID09IFNzdHJpbmcpKQogCQkJYnJlYWs7CiAJCSAgICB9CisJCSAgaW5j cl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9CiAJICAgICAgaWYgKCFkZXB0aCAm JiBzZXhwZmxhZykgZ290byBkb25lMjsKIAkgICAgICBicmVhazsKQEAgLTMwNjEsNiArMzA4 OCw3IEBAIHRoZSBwcmVmaXggc3ludGF4IGZsYWcgKHApLiAgKi8pCiAgICAgICBpZiAocG9z IDw9IGJlZykKICAgICAgICAgYnJlYWs7CiAgICAgICBERUNfQk9USCAocG9zLCBwb3NfYnl0 ZSk7CisgICAgICByYXJlbHlfcXVpdCAocG9zKTsKICAgICB9CiAKICAgU0VUX1BUX0JPVEgg KG9wb2ludCwgb3BvaW50X2J5dGUpOwpAQCAtMzEzMSw2ICszMTU5LDcgQEAgc2Nhbl9zZXhw c19mb3J3YXJkIChzdHJ1Y3QgbGlzcF9wYXJzZV9zdGF0ZSAqc3RhdGUsCiAgIGJvb2wgZm91 bmQ7CiAgIHB0cmRpZmZfdCBvdXRfYnl0ZXBvcywgb3V0X2NoYXJwb3M7CiAgIGludCB0ZW1w OworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7CiAKICAgcHJldl9mcm9t ID0gZnJvbTsKICAgcHJldl9mcm9tX2J5dGUgPSBmcm9tX2J5dGU7CkBAIC0zMjAwLDYgKzMy MjksNyBAQCBkbyB7IHByZXZfZnJvbSA9IGZyb207CQkJCVwKIAogICB3aGlsZSAoZnJvbSA8 IGVuZCkKICAgICB7CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAg ICAgICBJTkNfRlJPTTsKIAogICAgICAgaWYgKChmcm9tIDwgZW5kKQpAQCAtMzI1Niw2ICsz Mjg2LDcgQEAgZG8geyBwcmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAJCSAgZ290byBzeW1kb25l OwogCQl9CiAJICAgICAgSU5DX0ZST007CisJICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1 aXRfY291bnQpOwogCSAgICB9CiAJc3ltZG9uZToKIAkgIGN1cmxldmVsLT5wcmV2ID0gY3Vy bGV2ZWwtPmxhc3Q7CkBAIC0zMzY2LDYgKzMzOTcsNyBAQCBkbyB7IHByZXZfZnJvbSA9IGZy b207CQkJCVwKIAkJICAgIGJyZWFrOwogCQkgIH0KIAkJSU5DX0ZST007CisJCWluY3JfcmFy ZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKIAkgICAgICB9CiAJICB9CiAJc3RyaW5nX2VuZDoK ZGlmZiAtLWdpdCBhL3NyYy9zeXNkZXAuYyBiL3NyYy9zeXNkZXAuYwppbmRleCBlMTcyZGMw Li40MTU1YzIwIDEwMDY0NAotLS0gYS9zcmMvc3lzZGVwLmMKKysrIGIvc3JjL3N5c2RlcC5j CkBAIC0zODIsMTkgKzM4MiwyMyBAQCBnZXRfY2hpbGRfc3RhdHVzIChwaWRfdCBjaGlsZCwg aW50ICpzdGF0dXMsIGludCBvcHRpb25zLCBib29sIGludGVycnVwdGlibGUpCiAgICAgIHNv IHRoYXQgYW5vdGhlciB0aHJlYWQgcnVubmluZyBnbGliIHdvbid0IGZpbmQgdGhlbS4gICov CiAgIGVhc3NlcnQgKGNoaWxkID4gMCk7CiAKLSAgd2hpbGUgKChwaWQgPSB3YWl0cGlkIChj aGlsZCwgc3RhdHVzLCBvcHRpb25zKSkgPCAwKQorICB3aGlsZSAodHJ1ZSkKICAgICB7Cisg ICAgICAvKiBOb3RlOiB0aGUgTVMtV2luZG93cyBlbXVsYXRpb24gb2Ygd2FpdHBpZCBjYWxs cyBtYXliZV9xdWl0CisJIGludGVybmFsbHkuICAqLworICAgICAgaWYgKGludGVycnVwdGli bGUpCisJbWF5YmVfcXVpdCAoKTsKKworICAgICAgcGlkID0gd2FpdHBpZCAoY2hpbGQsIHN0 YXR1cywgb3B0aW9ucyk7CisgICAgICBpZiAoMCA8PSBwaWQpCisJYnJlYWs7CisKICAgICAg IC8qIENoZWNrIHRoYXQgQ0hJTEQgaXMgYSBjaGlsZCBwcm9jZXNzIHRoYXQgaGFzIG5vdCBi ZWVuIHJlYXBlZCwKIAkgYW5kIHRoYXQgU1RBVFVTIGFuZCBPUFRJT05TIGFyZSB2YWxpZC4g IE90aGVyd2lzZSBhYm9ydCwKIAkgYXMgY29udGludWluZyBhZnRlciB0aGlzIGludGVybmFs IGVycm9yIGNvdWxkIGNhdXNlIEVtYWNzIHRvCiAJIGJlY29tZSBjb25mdXNlZCBhbmQga2ls bCBpbm5vY2VudC12aWN0aW0gcHJvY2Vzc2VzLiAgKi8KICAgICAgIGlmIChlcnJubyAhPSBF SU5UUikKIAllbWFjc19hYm9ydCAoKTsKLQotICAgICAgLyogTm90ZTogdGhlIE1TLVdpbmRv d3MgZW11bGF0aW9uIG9mIHdhaXRwaWQgY2FsbHMgbWF5YmVfcXVpdAotCSBpbnRlcm5hbGx5 LiAgKi8KLSAgICAgIGlmIChpbnRlcnJ1cHRpYmxlKQotCW1heWJlX3F1aXQgKCk7CiAgICAg fQogCiAgIC8qIElmIHN1Y2Nlc3NmdWwgYW5kIHN0YXR1cyBpcyByZXF1ZXN0ZWQsIHRlbGwg d2FpdF9yZWFkaW5nX3Byb2Nlc3Nfb3V0cHV0CkBAIC0yNTAzLDc4ICsyNTA3LDExMyBAQCBl bWFjc19jbG9zZSAoaW50IGZkKQogI2RlZmluZSBNQVhfUldfQ09VTlQgKElOVF9NQVggPj4g MTggPDwgMTgpCiAjZW5kaWYKIAotLyogUmVhZCBmcm9tIEZJTEVERVNDIHRvIGEgYnVmZmVy IEJVRiB3aXRoIHNpemUgTkJZVEUsIHJldHJ5aW5nIGlmIGludGVycnVwdGVkLgorLyogUmVh ZCBmcm9tIEZEIHRvIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUgTkJZVEUuCisgICBJZiBpbnRl cnJ1cHRlZCwgZWl0aGVyIHF1aXQgb3IgcmV0cnkgdGhlIHJlYWQuCisgICBQcm9jZXNzIGFu eSBxdWl0cyBhbmQgcGVuZGluZyBzaWduYWxzIGltbWVkaWF0ZWx5IGlmIElOVEVSUlVQVElC TEUuCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLCB3aGljaCBtaWdodCBi ZSBsZXNzIHRoYW4gTkJZVEUuCi0gICBPbiBlcnJvciwgc2V0IGVycm5vIGFuZCByZXR1cm4g LTEuICAqLwotcHRyZGlmZl90Ci1lbWFjc19yZWFkIChpbnQgZmlsZGVzLCB2b2lkICpidWYs IHB0cmRpZmZfdCBuYnl0ZSkKKyAgIE9uIGVycm9yLCBzZXQgZXJybm8gdG8gYSB2YWx1ZSBv dGhlciB0aGFuIEVJTlRSLCBhbmQgcmV0dXJuIC0xLiAgKi8KK3N0YXRpYyBwdHJkaWZmX3QK K2VtYWNzX25vaW50cl9yZWFkIChpbnQgZmQsIHZvaWQgKmJ1ZiwgcHRyZGlmZl90IG5ieXRl LCBib29sIGludGVycnVwdGlibGUpCiB7Ci0gIHNzaXplX3QgcnRudmFsOworICBzc2l6ZV90 IHJlc3VsdDsKIAogICAvKiBUaGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGFnYWluc3QgTUFY X1JXX0NPVU5ULCBzaW5jZSBubyBjYWxsZXIgZXZlcgogICAgICBwYXNzZXMgYSBzaXplIHRo YXQgbGFyZ2UgdG8gZW1hY3NfcmVhZC4gICovCisgIGRvCisgICAgeworICAgICAgaWYgKGlu dGVycnVwdGlibGUpCisJbWF5YmVfcXVpdCAoKTsKKyAgICAgIHJlc3VsdCA9IHJlYWQgKGZk LCBidWYsIG5ieXRlKTsKKyAgICB9CisgIHdoaWxlIChyZXN1bHQgPCAwICYmIGVycm5vID09 IEVJTlRSKTsKIAotICB3aGlsZSAoKHJ0bnZhbCA9IHJlYWQgKGZpbGRlcywgYnVmLCBuYnl0 ZSkpID09IC0xCi0JICYmIChlcnJubyA9PSBFSU5UUikpCi0gICAgbWF5YmVfcXVpdCAoKTsK LSAgcmV0dXJuIChydG52YWwpOworICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBXcml0ZSB0 byBGSUxFREVTIGZyb20gYSBidWZmZXIgQlVGIHdpdGggc2l6ZSBOQllURSwgcmV0cnlpbmcg aWYgaW50ZXJydXB0ZWQKLSAgIG9yIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnMuICBJZiBp bnRlcnJ1cHRlZCwgcHJvY2VzcyBwZW5kaW5nCi0gICBzaWduYWxzIGlmIFBST0NFU1MgU0lH TkFMUy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4sIHNldHRpbmcKLSAg IGVycm5vIGlmIHRoaXMgaXMgbGVzcyB0aGFuIE5CWVRFLiAgKi8KKy8qIFJlYWQgZnJvbSBG RCB0byBhIGJ1ZmZlciBCVUYgd2l0aCBzaXplIE5CWVRFLgorICAgSWYgaW50ZXJydXB0ZWQs IHJldHJ5IHRoZSByZWFkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCwKKyAg IHdoaWNoIG1pZ2h0IGJlIGxlc3MgdGhhbiBOQllURS4gIE9uIGVycm9yLCBzZXQgZXJybm8g dG8gYSB2YWx1ZQorICAgb3RoZXIgdGhhbiBFSU5UUiwgYW5kIHJldHVybiAtMS4gICovCitw dHJkaWZmX3QKK2VtYWNzX3JlYWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5 dGUpCit7CisgIHJldHVybiBlbWFjc19ub2ludHJfcmVhZCAoZmQsIGJ1ZiwgbmJ5dGUsIGZh bHNlKTsKK30KKworLyogTGlrZSBlbWFjc19yZWFkLCBidXQgYWxzbyBwcm9jZXNzIHF1aXRz IGFuZCBwZW5kaW5nIHNpZ25hbHMuICAqLworcHRyZGlmZl90CitlbWFjc19yZWFkX3F1aXQg KGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUpCit7CisgIHJldHVybiBlbWFj c19ub2ludHJfcmVhZCAoZmQsIGJ1ZiwgbmJ5dGUsIHRydWUpOworfQorCisvKiBXcml0ZSB0 byBGSUxFREVTIGZyb20gYSBidWZmZXIgQlVGIHdpdGggc2l6ZSBOQllURSwgcmV0cnlpbmcg aWYKKyAgIGludGVycnVwdGVkIG9yIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnMuICBQcm9j ZXNzIGFueSBxdWl0cworICAgaW1tZWRpYXRlbHkgaWYgSU5URVJSVVBUSUJMRSBpcyBwb3Np dGl2ZSwgYW5kIHByb2Nlc3MgYW55IHBlbmRpbmcKKyAgIHNpZ25hbHMgaW1tZWRpYXRlbHkg aWYgSU5URVJSVVBUSUJMRSBpcyBub256ZXJvLiAgUmV0dXJuIHRoZSBudW1iZXIKKyAgIG9m IGJ5dGVzIHdyaXR0ZW47IGlmIHRoaXMgaXMgbGVzcyB0aGFuIE5CWVRFLCBzZXQgZXJybm8g dG8gYSB2YWx1ZQorICAgb3RoZXIgdGhhbiBFSU5UUi4gICovCiBzdGF0aWMgcHRyZGlmZl90 Ci1lbWFjc19mdWxsX3dyaXRlIChpbnQgZmlsZGVzLCBjaGFyIGNvbnN0ICpidWYsIHB0cmRp ZmZfdCBuYnl0ZSwKLQkJICBib29sIHByb2Nlc3Nfc2lnbmFscykKK2VtYWNzX2Z1bGxfd3Jp dGUgKGludCBmZCwgY2hhciBjb25zdCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUsCisJCSAgaW50 IGludGVycnVwdGlibGUpCiB7CiAgIHB0cmRpZmZfdCBieXRlc193cml0dGVuID0gMDsKIAog ICB3aGlsZSAobmJ5dGUgPiAwKQogICAgIHsKLSAgICAgIHNzaXplX3QgbiA9IHdyaXRlIChm aWxkZXMsIGJ1ZiwgbWluIChuYnl0ZSwgTUFYX1JXX0NPVU5UKSk7CisgICAgICBzc2l6ZV90 IG4gPSB3cml0ZSAoZmQsIGJ1ZiwgbWluIChuYnl0ZSwgTUFYX1JXX0NPVU5UKSk7CiAKICAg ICAgIGlmIChuIDwgMCkKIAl7Ci0JICBpZiAoZXJybm8gPT0gRUlOVFIpCisJICBpZiAoZXJy bm8gIT0gRUlOVFIpCisJICAgIGJyZWFrOworCisJICBpZiAoaW50ZXJydXB0aWJsZSkKIAkg ICAgewotCSAgICAgIC8qIEkgb3JpZ2luYWxseSB1c2VkIG1heWJlX3F1aXQgYnV0IHRoYXQg bWlnaHQgY2F1c2UgZmlsZXMgdG8KLQkJIGJlIHRydW5jYXRlZCBpZiB5b3UgaGl0IEMtZyBp biB0aGUgbWlkZGxlIG9mIGl0LiAgLS1TdGVmICAqLwotCSAgICAgIGlmIChwcm9jZXNzX3Np Z25hbHMgJiYgcGVuZGluZ19zaWduYWxzKQorCSAgICAgIGlmICgwIDwgaW50ZXJydXB0aWJs ZSkKKwkJbWF5YmVfcXVpdCAoKTsKKwkgICAgICBpZiAocGVuZGluZ19zaWduYWxzKQogCQlw cm9jZXNzX3BlbmRpbmdfc2lnbmFscyAoKTsKLQkgICAgICBjb250aW51ZTsKIAkgICAgfQot CSAgZWxzZQotCSAgICBicmVhazsKIAl9Ci0KLSAgICAgIGJ1ZiArPSBuOwotICAgICAgbmJ5 dGUgLT0gbjsKLSAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gbjsKKyAgICAgIGVsc2UKKwl7CisJ ICBidWYgKz0gbjsKKwkgIG5ieXRlIC09IG47CisJICBieXRlc193cml0dGVuICs9IG47CisJ fQogICAgIH0KIAogICByZXR1cm4gYnl0ZXNfd3JpdHRlbjsKIH0KIAotLyogV3JpdGUgdG8g RklMRURFUyBmcm9tIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUgTkJZVEUsIHJldHJ5aW5nIGlm Ci0gICBpbnRlcnJ1cHRlZCBvciBpZiBhIHBhcnRpYWwgd3JpdGUgb2NjdXJzLiAgUmV0dXJu IHRoZSBudW1iZXIgb2YKLSAgIGJ5dGVzIHdyaXR0ZW4sIHNldHRpbmcgZXJybm8gaWYgdGhp cyBpcyBsZXNzIHRoYW4gTkJZVEUuICAqLworLyogV3JpdGUgdG8gRkQgZnJvbSBhIGJ1ZmZl ciBCVUYgd2l0aCBzaXplIE5CWVRFLCByZXRyeWluZyBpZgorICAgaW50ZXJydXB0ZWQgb3Ig aWYgYSBwYXJ0aWFsIHdyaXRlIG9jY3Vycy4gIERvIG5vdCBwcm9jZXNzIHF1aXRzIG9yCisg ICBwZW5kaW5nIHNpZ25hbHMuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVu LCBzZXR0aW5nIGVycm5vCisgICBpZiB0aGlzIGlzIGxlc3MgdGhhbiBOQllURS4gICovCitw dHJkaWZmX3QKK2VtYWNzX3dyaXRlIChpbnQgZmQsIHZvaWQgY29uc3QgKmJ1ZiwgcHRyZGlm Zl90IG5ieXRlKQoreworICByZXR1cm4gZW1hY3NfZnVsbF93cml0ZSAoZmQsIGJ1ZiwgbmJ5 dGUsIDApOworfQorCisvKiBMaWtlIGVtYWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHBl bmRpbmcgc2lnbmFscy4gICovCiBwdHJkaWZmX3QKLWVtYWNzX3dyaXRlIChpbnQgZmlsZGVz LCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKK2VtYWNzX3dyaXRlX3NpZyAo aW50IGZkLCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKIHsKLSAgcmV0dXJu IGVtYWNzX2Z1bGxfd3JpdGUgKGZpbGRlcywgYnVmLCBuYnl0ZSwgMCk7CisgIHJldHVybiBl bWFjc19mdWxsX3dyaXRlIChmZCwgYnVmLCBuYnl0ZSwgLTEpOwogfQogCi0vKiBMaWtlIGVt YWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHBlbmRpbmcgc2lnbmFscyBpZiBpbnRlcnJ1 cHRlZC4gICovCisvKiBMaWtlIGVtYWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHF1aXRz IGFuZCBwZW5kaW5nIHNpZ25hbHMuICAqLwogcHRyZGlmZl90Ci1lbWFjc193cml0ZV9zaWcg KGludCBmaWxkZXMsIHZvaWQgY29uc3QgKmJ1ZiwgcHRyZGlmZl90IG5ieXRlKQorZW1hY3Nf d3JpdGVfcXVpdCAoaW50IGZkLCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkK IHsKLSAgcmV0dXJuIGVtYWNzX2Z1bGxfd3JpdGUgKGZpbGRlcywgYnVmLCBuYnl0ZSwgMSk7 CisgIHJldHVybiBlbWFjc19mdWxsX3dyaXRlIChmZCwgYnVmLCBuYnl0ZSwgMSk7CiB9CiAK IC8qIFdyaXRlIGEgZGlhZ25vc3RpYyB0byBzdGFuZGFyZCBlcnJvciB0aGF0IGNvbnRhaW5z IE1FU1NBR0UgYW5kIGEKICAgIHN0cmluZyBkZXJpdmVkIGZyb20gZXJybm8uICBQcmVzZXJ2 ZSBlcnJuby4gIERvIG5vdCBidWZmZXIgc3RkZXJyLgotICAgRG8gbm90IHByb2Nlc3MgcGVu ZGluZyBzaWduYWxzIGlmIGludGVycnVwdGVkLiAgKi8KKyAgIERvIG5vdCBwcm9jZXNzIHF1 aXRzIG9yIHBlbmRpbmcgc2lnbmFscyBpZiBpbnRlcnJ1cHRlZC4gICovCiB2b2lkCiBlbWFj c19wZXJyb3IgKGNoYXIgY29uc3QgKm1lc3NhZ2UpCiB7CkBAIC0zMTY4LDcgKzMyMDcsNyBA QCBzeXN0ZW1fcHJvY2Vzc19hdHRyaWJ1dGVzIChMaXNwX09iamVjdCBwaWQpCiAgIGVsc2UK ICAgICB7CiAgICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChjbG9zZV9maWxlX3Vu d2luZCwgZmQpOwotICAgICAgbnJlYWQgPSBlbWFjc19yZWFkIChmZCwgcHJvY2J1Ziwgc2l6 ZW9mIHByb2NidWYgLSAxKTsKKyAgICAgIG5yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZCwg cHJvY2J1Ziwgc2l6ZW9mIHByb2NidWYgLSAxKTsKICAgICB9CiAgIGlmICgwIDwgbnJlYWQp CiAgICAgewpAQCAtMzI4OSw3ICszMzI4LDcgQEAgc3lzdGVtX3Byb2Nlc3NfYXR0cmlidXRl cyAoTGlzcF9PYmplY3QgcGlkKQogCSAgLyogTGVhdmUgcm9vbSBldmVuIGlmIGV2ZXJ5IGJ5 dGUgbmVlZHMgZXNjYXBpbmcgYmVsb3cuICAqLwogCSAgcmVhZHNpemUgPSAoY21kbGluZV9z aXplID4+IDEpIC0gbnJlYWQ7CiAKLQkgIG5yZWFkX2luY3IgPSBlbWFjc19yZWFkIChmZCwg Y21kbGluZSArIG5yZWFkLCByZWFkc2l6ZSk7CisJICBucmVhZF9pbmNyID0gZW1hY3NfcmVh ZF9xdWl0IChmZCwgY21kbGluZSArIG5yZWFkLCByZWFkc2l6ZSk7CiAJICBucmVhZCArPSBt YXggKDAsIG5yZWFkX2luY3IpOwogCX0KICAgICAgIHdoaWxlIChucmVhZF9pbmNyID09IHJl YWRzaXplKTsKQEAgLTM0MDIsNyArMzQ0MSw3IEBAIHN5c3RlbV9wcm9jZXNzX2F0dHJpYnV0 ZXMgKExpc3BfT2JqZWN0IHBpZCkKICAgZWxzZQogICAgIHsKICAgICAgIHJlY29yZF91bndp bmRfcHJvdGVjdF9pbnQgKGNsb3NlX2ZpbGVfdW53aW5kLCBmZCk7Ci0gICAgICBucmVhZCA9 IGVtYWNzX3JlYWQgKGZkLCAmcGluZm8sIHNpemVvZiBwaW5mbyk7CisgICAgICBucmVhZCA9 IGVtYWNzX3JlYWRfcXVpdCAoZmQsICZwaW5mbywgc2l6ZW9mIHBpbmZvKTsKICAgICB9CiAK ICAgaWYgKG5yZWFkID09IHNpemVvZiBwaW5mbykKLS0gCjIuOS4zCgo= --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0003-Fix-quitting-bug-when-buffers-are-frozen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0003-Fix-quitting-bug-when-buffers-are-frozen.patch" RnJvbSA1MWRmMTJhY2MwMGM5MTYyOWRmMmVmODU1MTI4OTc4NDU1Njk1MGZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDMwIEphbiAyMDE3IDEzOjMwOjA3IC0wODAwClN1YmplY3Q6IFtQQVRD SCAzLzNdIEZpeCBxdWl0dGluZyBidWcgd2hlbiBidWZmZXJzIGFyZSBmcm96ZW4KClByb2Js ZW0gbm90ZWQgYnkgRWxpIFphcmV0c2tpaSBpbjoKaHR0cDovL2xpc3RzLmdudS5vcmcvYXJj aGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTctMDEvbXNnMDA3MjEuaHRtbApUaGlzIHBhdGNo IGFsc28gZml4ZXMgc29tZSBvdGhlciBpc3N1ZXMgaW4gdGhhdCByZXBvcnQuCiogc3JjL2xp c3AuaCAoaW5jcl9yYXJlbHlfcXVpdCk6IFJlbW92ZS4KQWxsIGNhbGxlcnMgY2hhbmdlZCB0 byB1c2UgcmFyZWx5X3F1aXQgZGlyZWN0bHkuCiogc3JjL3NlYXJjaC5jIChmcmVlemVfYnVm ZmVyX3JlbG9jYXRpb24pCih0aGF3X2J1ZmZlcl9yZWxvY2F0aW9uKTogTmV3IGZ1bmN0aW9u cy4KKGxvb2tpbmdfYXRfMSwgZmFzdF9sb29raW5nX2F0LCBzZWFyY2hfYnVmZmVyKToKVXNl IHRoZW0gdG8gZml4IGJ1ZyB3aGVuIHF1aXR0aW5nIHdoZW4gYnVmZmVycyBhcmUgZnJvemVu LgoqIHNyYy9zeXNkZXAuYyAoZW1hY3NfaW50cl9yZWFkKTogUmVuYW1lIGZyb20gZW1hY3Nf bm9pbnRyX3JlYWQuCkFsbCB1c2VzIGNoYW5nZWQuCi0tLQogc3JjL2NhbGxwcm9jLmMgfCAg MyArKysKIHNyYy9mbnMuYyAgICAgIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KIHNyYy9pbmRlbnQuYyAgIHwgIDYgKysrLS0tCiBzcmMvbGlzcC5oICAgICB8ICA4 IC0tLS0tLS0tCiBzcmMvc2VhcmNoLmMgICB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3N5bnRheC5jICAgfCAz NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvc3lzZGVwLmMgICB8 IDEwICsrKysrLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgODAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2NhbGxwcm9jLmMgYi9zcmMvY2FsbHBy b2MuYwppbmRleCA3MTAxNzRjLi44NDMyNGM0IDEwMDY0NAotLS0gYS9zcmMvY2FsbHByb2Mu YworKysgYi9zcmMvY2FsbHByb2MuYwpAQCAtMTk4LDcgKzE5OCwxMCBAQCBjYWxsX3Byb2Nl c3NfY2xlYW51cCAoTGlzcF9PYmplY3QgYnVmZmVyKQogICAgIHsKICAgICAgIGtpbGwgKC1z eW5jaF9wcm9jZXNzX3BpZCwgU0lHSU5UKTsKICAgICAgIG1lc3NhZ2UxICgiV2FpdGluZyBm b3IgcHJvY2VzcyB0byBkaWUuLi4odHlwZSBDLWcgYWdhaW4gdG8ga2lsbCBpdCBpbnN0YW50 bHkpIik7CisKKyAgICAgIC8qIFRoaXMgd2lsbCBxdWl0IG9uIEMtZy4gICovCiAgICAgICB3 YWl0X2Zvcl90ZXJtaW5hdGlvbiAoc3luY2hfcHJvY2Vzc19waWQsIDAsIDEpOworCiAgICAg ICBzeW5jaF9wcm9jZXNzX3BpZCA9IDA7CiAgICAgICBtZXNzYWdlMSAoIldhaXRpbmcgZm9y IHByb2Nlc3MgdG8gZGllLi4uZG9uZSIpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9mbnMu YyBiL3NyYy9mbnMuYwppbmRleCA0MWMwYzU4Li5hYzdjMWYyIDEwMDY0NAotLS0gYS9zcmMv Zm5zLmMKKysrIGIvc3JjL2Zucy5jCkBAIC0xMzg5LDcgKzEzODksNyBAQCBUaGUgdmFsdWUg aXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAgKi8pCiAg ICAgewogICAgICAgaWYgKCEgTklMUCAoRmVxdWFsIChlbHQsIFhDQVIgKHRhaWwpKSkpCiAJ cmV0dXJuIHRhaWw7Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7Cisg ICAgICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1Rf RU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNDA2LDcgKzE0MDYsNyBA QCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMg RUxULiAgKi8pCiAgICAgewogICAgICAgaWYgKEVRIChYQ0FSICh0YWlsKSwgZWx0KSkKIAly ZXR1cm4gdGFpbDsKLSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAg ICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogICAgIH0KICAgQ0hFQ0tfTElTVF9F TkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKQEAgLTE0MjcsNyArMTQyNyw3IEBA IFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3NlIGNhciBpcyBF TFQuICAqLykKICAgICAgIExpc3BfT2JqZWN0IHRlbSA9IFhDQVIgKHRhaWwpOwogICAgICAg aWYgKEZMT0FUUCAodGVtKSAmJiBpbnRlcm5hbF9lcXVhbCAoZWx0LCB0ZW0sIDAsIDAsIFFu aWwpKQogCXJldHVybiB0YWlsOwotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworICAgICAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVD S19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ0NSw3ICsx NDQ1LDcgQEAgRWxlbWVudHMgb2YgTElTVCB0aGF0IGFyZSBub3QgY29uc2VzIGFyZSBpZ25v cmVkLiAgKi8pCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEg KFhDQVIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAg ICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAo KytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsK ICAgcmV0dXJuIFFuaWw7CkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBUaGUgdmFsdWUgaXMgYWN0 dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjYXIgZXF1YWxzIEtFWS4g ICovKQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJICAmJiAoRVEgKFhDQVIgKGNhciksIGtl eSkgfHwgIU5JTFAgKEZlcXVhbCAoWENBUiAoY2FyKSwga2V5KSkpKQogCXJldHVybiBjYXI7 Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlf cXVpdCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBs aXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTA5LDcgKzE1MDksNyBAQCBUaGUgdmFsdWUg aXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjZHIgaXMgS0VZ LiAgKi8pCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEgKFhD RFIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAgICBp bmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAoKytx dWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAg cmV0dXJuIFFuaWw7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFs bHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjZHIgZXF1YWxzIEtFWS4gICov KQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJICAmJiAoRVEgKFhDRFIgKGNhciksIGtleSkg fHwgIU5JTFAgKEZlcXVhbCAoWENEUiAoY2FyKSwga2V5KSkpKQogCXJldHVybiBjYXI7Ci0g ICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0 KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNjg0LDcgKzE2ODQsNyBAQCBjaGFuZ2luZyB0aGUg dmFsdWUgb2YgYSBzZXF1ZW5jZSBgZm9vJy4gICovKQogCSAgICB9CiAJICBlbHNlCiAJICAg IHByZXYgPSB0YWlsOwotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCSAg cmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9FTkQg KHRhaWwsIHNlcSk7CiAgICAgfQpAQCAtMTcxMiw3ICsxNzEyLDcgQEAgVGhpcyBmdW5jdGlv biBtYXkgZGVzdHJ1Y3RpdmVseSBtb2RpZnkgU0VRIHRvIHByb2R1Y2UgdGhlIHZhbHVlLiAg Ki8pCiAJICBuZXh0ID0gWENEUiAodGFpbCk7CiAJICBGc2V0Y2RyICh0YWlsLCBwcmV2KTsK IAkgIHByZXYgPSB0YWlsOwotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwor CSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9F TkQgKHRhaWwsIHNlcSk7CiAgICAgICBzZXEgPSBwcmV2OwpAQCAtMTc1OSw3ICsxNzU5LDcg QEAgU2VlIGFsc28gdGhlIGZ1bmN0aW9uIGBucmV2ZXJzZScsIHdoaWNoIGlzIHVzZWQgbW9y ZSBvZnRlbi4gICovKQogICAgICAgZm9yIChuZXcgPSBRbmlsOyBDT05TUCAoc2VxKTsgc2Vx ID0gWENEUiAoc2VxKSkKIAl7CiAJICBuZXcgPSBGY29ucyAoWENBUiAoc2VxKSwgbmV3KTsK LQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgr K3F1aXRfY291bnQpOwogCX0KICAgICAgIENIRUNLX0xJU1RfRU5EIChzZXEsIHNlcSk7CiAg ICAgfQpAQCAtMjA2Miw3ICsyMDYyLDcgQEAgVGhlIFBMSVNUIGlzIG1vZGlmaWVkIGJ5IHNp ZGUgZWZmZWN0cy4gICovKQogCX0KIAogICAgICAgcHJldiA9IHRhaWw7Ci0gICAgICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAoKytxdWl0 X2NvdW50KTsKICAgICB9CiAgIExpc3BfT2JqZWN0IG5ld2NlbGwKICAgICA9IEZjb25zIChw cm9wLCBGY29ucyAodmFsLCBOSUxQIChwcmV2KSA/IHBsaXN0IDogWENEUiAoWENEUiAocHJl dikpKSk7CkBAIC0yMTAwLDcgKzIxMDAsNyBAQCBvbmUgb2YgdGhlIHByb3BlcnRpZXMgb24g dGhlIGxpc3QuICAqLykKICAgICB7CiAgICAgICBpZiAoISBOSUxQIChGZXF1YWwgKHByb3As IFhDQVIgKHRhaWwpKSkpCiAJcmV0dXJuIFhDQVIgKFhDRFIgKHRhaWwpKTsKLSAgICAgIGlu Y3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1 aXRfY291bnQpOwogICAgIH0KIAogICBDSEVDS19MSVNUX0VORCAodGFpbCwgcHJvcCk7CkBA IC0yMTMwLDcgKzIxMzAsNyBAQCBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZl Y3RzLiAgKi8pCiAJfQogCiAgICAgICBwcmV2ID0gdGFpbDsKLSAgICAgIGluY3JfcmFyZWx5 X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQp OwogICAgIH0KICAgTGlzcF9PYmplY3QgbmV3Y2VsbCA9IGxpc3QyIChwcm9wLCB2YWwpOwog ICBpZiAoTklMUCAocHJldikpCkBAIC0yMjEwLDcgKzIyMTAsNyBAQCBpbnRlcm5hbF9lcXVh bCAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGJvb2wgcHJv cHMsCiAKICAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogIHRhaWxfcmVj dXJzZToKLSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKICAgaWYgKEVRIChvMSwgbzIpKQogICAgIHJldHVybiAxOwog ICBpZiAoWFRZUEUgKG8xKSAhPSBYVFlQRSAobzIpKQpAQCAtMjQxOSw3ICsyNDE5LDcgQEAg dXNhZ2U6IChuY29uYyAmcmVzdCBMSVNUUykgICovKQogCXsKIAkgIHRhaWwgPSB0ZW07CiAJ ICB0ZW0gPSBYQ0RSICh0YWlsKTsKLQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogCX0KICAgICAgIHdoaWxlIChD T05TUCAodGVtKSk7CiAKQEAgLTI4NDgsNyArMjg0OCw3IEBAIFRoZSB2YWx1ZSBpcyBhY3R1 YWxseSB0aGUgdGFpbCBvZiBQTElTVCB3aG9zZSBjYXIgaXMgUFJPUC4gICovKQogICAgIHsK ICAgICAgIHBsaXN0ID0gWENEUiAocGxpc3QpOwogICAgICAgcGxpc3QgPSBDRFIgKHBsaXN0 KTsKLSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVs eV9xdWl0ICgrK3F1aXRfY291bnQpOwogICAgIH0KICAgcmV0dXJuIHBsaXN0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2luZGVudC5jIGIvc3JjL2luZGVudC5jCmluZGV4IGFmZjE0YWIuLmY2 MzBlYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmRlbnQuYworKysgYi9zcmMvaW5kZW50LmMKQEAg LTEyMTUsNyArMTIxNSw3IEBAIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwgcHRy ZGlmZl90IGZyb21ieXRlLCBFTUFDU19JTlQgZnJvbXZwb3MsCiAKICAgd2hpbGUgKHRydWUp CiAgICAgewotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICAgICAg cmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAKICAgICAgIHdoaWxlIChwb3MgPT0gbmV4 dF9ib3VuZGFyeSkKIAl7CkBAIC0xMjgyLDcgKzEyODIsNyBAQCBjb21wdXRlX21vdGlvbiAo cHRyZGlmZl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9z LAogCSAgICAgIHBvc19ieXRlID0gQ0hBUl9UT19CWVRFIChwb3MpOwogCSAgICB9CiAKLQkg IGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1 aXRfY291bnQpOwogCX0KIAogICAgICAgLyogSGFuZGxlIHJpZ2h0IG1hcmdpbi4gICovCkBA IC0xNjA1LDcgKzE2MDUsNyBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZyb20sIHB0 cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogCQkJICAgICAgcG9zID0g ZmluZF9iZWZvcmVfbmV4dF9uZXdsaW5lIChwb3MsIHRvLCAxLCAmcG9zX2J5dGUpOwogCQkJ ICAgICAgaWYgKHBvcyA8IHRvKQogCQkJCUlOQ19CT1RIIChwb3MsIHBvc19ieXRlKTsKLQkJ CSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkJCSAgICAgIHJhcmVs eV9xdWl0ICgrK3F1aXRfY291bnQpOwogCQkJICAgIH0KIAkJCSAgd2hpbGUgKHBvcyA8IHRv CiAJCQkJICYmIGluZGVudGVkX2JleW9uZF9wIChwb3MsIHBvc19ieXRlLApkaWZmIC0tZ2l0 IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggNTk3NmRhMS4uMDI2NGQ0ZiAxMDA2 NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBAIC0zMTQ1LDE0ICszMTQ1 LDYgQEAgcmFyZWx5X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCBjb3VudCkKICAgaWYgKCEg KGNvdW50ICYgKFFVSVRfQ09VTlRfSEVVUklTVElDIC0gMSkpKQogICAgIG1heWJlX3F1aXQg KCk7CiB9Ci0KLS8qIEluY3JlbWVudCAqUVVJVF9DT1VOVCBhbmQgcmFyZWx5IHF1aXQuICAq LwotCi1JTkxJTkUgdm9pZAotaW5jcl9yYXJlbHlfcXVpdCAodW5zaWduZWQgc2hvcnQgaW50 ICpxdWl0X2NvdW50KQotewotICByYXJlbHlfcXVpdCAoKysqcXVpdF9jb3VudCk7Ci19CiAM CiBleHRlcm4gTGlzcF9PYmplY3QgVmFzY2lpX2Rvd25jYXNlX3RhYmxlOwogZXh0ZXJuIExp c3BfT2JqZWN0IFZhc2NpaV9jYW5vbl90YWJsZTsKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2gu YyBiL3NyYy9zZWFyY2guYwppbmRleCAwODRhZGRhLi4zM2NiMDJhIDEwMDY0NAotLS0gYS9z cmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC05OSw2ICs5OSwyNSBAQCBtYXRj aGVyX292ZXJmbG93ICh2b2lkKQogICBlcnJvciAoIlN0YWNrIG92ZXJmbG93IGluIHJlZ2V4 cCBtYXRjaGVyIik7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlemVfYnVmZmVyX3JlbG9jYXRp b24gKHZvaWQpCit7CisjaWZkZWYgUkVMX0FMTE9DCisgIC8qIFByZXZlbnQgcmFsbG9jLmMg ZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZlciB3aGlsZQorICAgICBzZWFyY2hp bmcgaXQuICAqLworICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEpOwor ICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChyX2FsbG9jX2luaGliaXRfYnVmZmVyX3Jl bG9jYXRpb24sIDApOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCit0aGF3X2J1ZmZlcl9y ZWxvY2F0aW9uICh2b2lkKQoreworI2lmZGVmIFJFTF9BTExPQworICB1bmJpbmRfdG8gKFNQ RUNQRExfSU5ERVggKCkgLSAxLCBRbmlsKTsKKyNlbmRpZgorfQorCiAvKiBDb21waWxlIGEg cmVnZXhwIGFuZCBzaWduYWwgYSBMaXNwIGVycm9yIGlmIGFueXRoaW5nIGdvZXMgd3Jvbmcu CiAgICBQQVRURVJOIGlzIHRoZSBwYXR0ZXJuIHRvIGNvbXBpbGUuCiAgICBDUCBpcyB0aGUg cGxhY2UgdG8gcHV0IHRoZSByZXN1bHQuCkBAIC0zMDAsMTkgKzMxOSwxMyBAQCBsb29raW5n X2F0XzEgKExpc3BfT2JqZWN0IHN0cmluZywgYm9vbCBwb3NpeCkKIAogICByZV9tYXRjaF9v YmplY3QgPSBRbmlsOwogCi0jaWZkZWYgUkVMX0FMTE9DCi0gIC8qIFByZXZlbnQgcmFsbG9j LmMgZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZlciB3aGlsZQotICAgICBzZWFy Y2hpbmcgaXQuICAqLwotICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEp OwotI2VuZGlmCisgIGZyZWV6ZV9idWZmZXJfcmVsb2NhdGlvbiAoKTsKICAgaSA9IHJlX21h dGNoXzIgKGJ1ZnAsIChjaGFyICopIHAxLCBzMSwgKGNoYXIgKikgcDIsIHMyLAogCQkgIFBU X0JZVEUgLSBCRUdWX0JZVEUsCiAJCSAgKE5JTFAgKFZpbmhpYml0X2NoYW5naW5nX21hdGNo X2RhdGEpCiAJCSAgID8gJnNlYXJjaF9yZWdzIDogTlVMTCksCiAJCSAgWlZfQllURSAtIEJF R1ZfQllURSk7Ci0jaWZkZWYgUkVMX0FMTE9DCi0gIHJfYWxsb2NfaW5oaWJpdF9idWZmZXJf cmVsb2NhdGlvbiAoMCk7Ci0jZW5kaWYKKyAgdGhhd19idWZmZXJfcmVsb2NhdGlvbiAoKTsK IAogICBpZiAoaSA9PSAtMikKICAgICBtYXRjaGVyX292ZXJmbG93ICgpOwpAQCAtNTUzLDE2 ICs1NjYsMTAgQEAgZmFzdF9sb29raW5nX2F0IChMaXNwX09iamVjdCByZWdleHAsIHB0cmRp ZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKICAgICB9CiAKICAgYnVmID0gY29tcGls ZV9wYXR0ZXJuIChyZWdleHAsIDAsIFFuaWwsIDAsIG11bHRpYnl0ZSk7Ci0jaWZkZWYgUkVM X0FMTE9DCi0gIC8qIFByZXZlbnQgcmFsbG9jLmMgZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJy ZW50IGJ1ZmZlciB3aGlsZQotICAgICBzZWFyY2hpbmcgaXQuICAqLwotICByX2FsbG9jX2lu aGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEpOwotI2VuZGlmCisgIGZyZWV6ZV9idWZmZXJf cmVsb2NhdGlvbiAoKTsKICAgbGVuID0gcmVfbWF0Y2hfMiAoYnVmLCAoY2hhciAqKSBwMSwg czEsIChjaGFyICopIHAyLCBzMiwKIAkJICAgIHBvc19ieXRlLCBOVUxMLCBsaW1pdF9ieXRl KTsKLSNpZmRlZiBSRUxfQUxMT0MKLSAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0 aW9uICgwKTsKLSNlbmRpZgorICB0aGF3X2J1ZmZlcl9yZWxvY2F0aW9uICgpOwogCiAgIHJl dHVybiBsZW47CiB9CkBAIC0xMjA0LDExICsxMjExLDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlz cF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJ fQogICAgICAgcmVfbWF0Y2hfb2JqZWN0ID0gUW5pbDsKIAotI2lmZGVmIFJFTF9BTExPQwot ICAvKiBQcmV2ZW50IHJhbGxvYy5jIGZyb20gcmVsb2NhdGluZyB0aGUgY3VycmVudCBidWZm ZXIgd2hpbGUKLSAgICAgc2VhcmNoaW5nIGl0LiAgKi8KLSAgcl9hbGxvY19pbmhpYml0X2J1 ZmZlcl9yZWxvY2F0aW9uICgxKTsKLSNlbmRpZgorICAgICAgZnJlZXplX2J1ZmZlcl9yZWxv Y2F0aW9uICgpOwogCiAgICAgICB3aGlsZSAobiA8IDApCiAJewpAQCAtMTI1MCw5ICsxMjUz LDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9z LCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewotI2lmZGVm IFJFTF9BTExPQwotICAgICAgICAgICAgICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9j YXRpb24gKDApOwotI2VuZGlmCisJICAgICAgdGhhd19idWZmZXJfcmVsb2NhdGlvbiAoKTsK IAkgICAgICByZXR1cm4gKG4pOwogCSAgICB9CiAJICBuKys7CkBAIC0xMjk1LDE3ICsxMjk2 LDEzIEBAIHNlYXJjaF9idWZmZXIgKExpc3BfT2JqZWN0IHN0cmluZywgcHRyZGlmZl90IHBv cywgcHRyZGlmZl90IHBvc19ieXRlLAogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKLSNpZmRl ZiBSRUxfQUxMT0MKLSAgICAgICAgICAgICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxv Y2F0aW9uICgwKTsKLSNlbmRpZgorCSAgICAgIHRoYXdfYnVmZmVyX3JlbG9jYXRpb24gKCk7 CiAJICAgICAgcmV0dXJuICgwIC0gbik7CiAJICAgIH0KIAkgIG4tLTsKIAkgIG1heWJlX3F1 aXQgKCk7CiAJfQotI2lmZGVmIFJFTF9BTExPQwotICAgICAgcl9hbGxvY19pbmhpYml0X2J1 ZmZlcl9yZWxvY2F0aW9uICgwKTsKLSNlbmRpZgorICAgICAgdGhhd19idWZmZXJfcmVsb2Nh dGlvbiAoKTsKICAgICAgIHJldHVybiAocG9zKTsKICAgICB9CiAgIGVsc2UJCQkJLyogbm9u LVJFIGNhc2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9zeW50YXguYyBiL3NyYy9zeW50YXguYwpp bmRleCAwNmZlNTBiLi43YWE0M2U2IDEwMDY0NAotLS0gYS9zcmMvc3ludGF4LmMKKysrIGIv c3JjL3N5bnRheC5jCkBAIC01OTMsNyArNTkzLDYgQEAgc3RhdGljIHB0cmRpZmZfdAogZmlu ZF9kZWZ1bl9zdGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogewog ICBwdHJkaWZmX3Qgb3BvaW50ID0gUFQsIG9wb2ludF9ieXRlID0gUFRfQllURTsKLSAgdW5z aWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogCiAgIC8qIFVzZSBwcmV2aW91cyBm aW5kaW5nLCBpZiBpdCdzIHZhbGlkIGFuZCBhcHBsaWVzIHRvIHRoaXMgaW5xdWlyeS4gICov CiAgIGlmIChjdXJyZW50X2J1ZmZlciA9PSBmaW5kX3N0YXJ0X2J1ZmZlcgpAQCAtNjM2LDcg KzYzNSw2IEBAIGZpbmRfZGVmdW5fc3RhcnQgKHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBw b3NfYnl0ZSkKIAl9CiAgICAgICAvKiBNb3ZlIHRvIGJlZyBvZiBwcmV2aW91cyBsaW5lLiAg Ki8KICAgICAgIHNjYW5fbmV3bGluZSAoUFQsIFBUX0JZVEUsIEJFR1YsIEJFR1ZfQllURSwg LTIsIDEpOwotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0K IAogICAvKiBSZWNvcmQgd2hhdCB3ZSBmb3VuZCwgZm9yIHRoZSBuZXh0IHRyeS4gICovCkBA IC03MjUsNyArNzIzLDcgQEAgYmFja19jb21tZW50IChwdHJkaWZmX3QgZnJvbSwgcHRyZGlm Zl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAgICAgIHRoYXQgZGV0ZXJtaW5lcyBx dW90ZSBwYXJpdHkgdG8gdGhlIGNvbW1lbnQtZW5kLiAgKi8KICAgd2hpbGUgKGZyb20gIT0g c3RvcCkKICAgICB7Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7Cisg ICAgICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAogICAgICAgcHRyZGlmZl90IHRl bXBfYnl0ZTsKICAgICAgIGludCBwcmV2X3N5bnRheDsKQEAgLTk1NCw3ICs5NTIsNyBAQCBi YWNrX2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBwdHJk aWZmX3Qgc3RvcCwKIAkJICBkZWZ1bl9zdGFydF9ieXRlID0gQ0hBUl9UT19CWVRFIChkZWZ1 bl9zdGFydCk7CiAJCX0KIAkgICAgfQotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworCSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgd2hpbGUg KGRlZnVuX3N0YXJ0IDwgY29tbWVudF9lbmQpOwogCkBAIC0yMzg2LDcgKzIzODQsNyBAQCBm b3J3X2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBwdHJk aWZmX3Qgc3RvcCwKIAkgIG5lc3RpbmcrKzsKIAl9CiAKLSAgICAgIGluY3JfcmFyZWx5X3F1 aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwog ICAgIH0KICAgKmNoYXJwb3NfcHRyID0gZnJvbTsKICAgKmJ5dGVwb3NfcHRyID0gZnJvbV9i eXRlOwpAQCAtMjQ2MCw3ICsyNDU4LDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3Ro ZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICBJTkNfQk9USCAoZnJvbSwgZnJvbV9i eXRlKTsKIAkgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwogCSAg ICB9Ci0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKIAl9CiAgICAgICB3aGlsZSAoY29kZSA9PSBTd2hpdGVzcGFj ZSB8fCAoY29kZSA9PSBTZW5kY29tbWVudCAmJiBjID09ICdcbicpKTsKIApAQCAtMjU0NCw3 ICsyNTQyLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKIAkJICAgIH0KIAkJICBlbHNlIGlmIChmcm9tID09IHN0b3ApCiAJCSAgICBi cmVhazsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJCSAgcmFyZWx5 X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoZmVuY2VfZm91bmQgPT0g MCkKIAkJewpAQCAtMjU5Miw3ICsyNTkwLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsg b3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICByZXR1cm4gUW5pbDsKIAkgICAg fQogCi0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKIAl9CiAKICAgICAgIGNvdW50MSsrOwpAQCAtMjY0OCw3ICsy NjQ2LDcgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwg RU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgIHsKICAgICAgIHdoaWxlIChm cm9tIDwgc3RvcCkKIAl7Ci0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJ ICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkgIGJvb2wgY29tc3RhcnRfZmlyc3Qs IHByZWZpeDsKIAkgIGludCBzeW50YXgsIG90aGVyX3N5bnRheDsKIAkgIFVQREFURV9TWU5U QVhfVEFCTEVfRk9SV0FSRCAoZnJvbSk7CkBAIC0yNzE3LDcgKzI3MTUsNyBAQCBzY2FuX2xp c3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgs IGJvb2wgc2V4cGZsYWcpCiAJCSAgICAgIGdvdG8gZG9uZTsKIAkJICAgIH0KIAkJICBJTkNf Qk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9j b3VudCk7CisJCSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBn b3RvIGRvbmU7CiAKQEAgLTI3ODksNyArMjc4Nyw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lO VCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxh ZykKIAkJICBpZiAoY19jb2RlID09IFNjaGFycXVvdGUgfHwgY19jb2RlID09IFNlc2NhcGUp CiAJCSAgICBJTkNfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkJICBJTkNfQk9USCAoZnJv bSwgZnJvbV9ieXRlKTsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJ CSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBJTkNfQk9USCAo ZnJvbSwgZnJvbV9ieXRlKTsKIAkgICAgICBpZiAoIWRlcHRoICYmIHNleHBmbGFnKSBnb3Rv IGRvbmU7CkBAIC0yODE1LDcgKzI4MTMsNyBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJv bSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAg ICAgewogICAgICAgd2hpbGUgKGZyb20gPiBzdG9wKQogCXsKLQkgIGluY3JfcmFyZWx5X3F1 aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogCSAg REVDX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICBVUERBVEVfU1lOVEFYX1RBQkxFX0JB Q0tXQVJEIChmcm9tKTsKIAkgIGMgPSBGRVRDSF9DSEFSX0FTX01VTFRJQllURSAoZnJvbV9i eXRlKTsKQEAgLTI4OTEsNyArMjg4OSw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9t LCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKIAkJ ICAgICAgZGVmYXVsdDogZ290byBkb25lMjsKIAkJICAgICAgfQogCQkgIERFQ19CT1RIIChm cm9tLCBmcm9tX2J5dGUpOwotCQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsK KwkJICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkJfQogCSAgICAgIGdvdG8gZG9u ZTI7CiAKQEAgLTI5NTQsNyArMjk1Miw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9t LCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKIAkJ ICAgICAgaWYgKHN5bnRheF9tdWx0aWJ5dGUgKGMsIG11bHRpYnl0ZV9zeW1ib2xfcCkgPT0g Y29kZSkKIAkJCWJyZWFrOwogCQkgICAgfQotCQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0 X2NvdW50KTsKKwkJICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkJfQogCSAgICAg IGlmIChjb2RlID09IFNzdHJpbmdfZmVuY2UgJiYgIWRlcHRoICYmIHNleHBmbGFnKSBnb3Rv IGRvbmUyOwogCSAgICAgIGJyZWFrOwpAQCAtMjk3NSw3ICsyOTczLDcgQEAgc2Nhbl9saXN0 cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBi b29sIHNleHBmbGFnKQogCQkJICAgICAgPT0gU3N0cmluZykpCiAJCQlicmVhazsKIAkJICAg IH0KLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJCSAgcmFyZWx5X3F1 aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoIWRlcHRoICYmIHNleHBmbGFn KSBnb3RvIGRvbmUyOwogCSAgICAgIGJyZWFrOwpAQCAtMzIyOSw3ICszMjI3LDcgQEAgZG8g eyBwcmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAKICAgd2hpbGUgKGZyb20gPCBlbmQpCiAgICAg ewotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICAgICAgcmFyZWx5 X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAgICAgICBJTkNfRlJPTTsKIAogICAgICAgaWYgKChm cm9tIDwgZW5kKQpAQCAtMzI4Niw3ICszMjg0LDcgQEAgZG8geyBwcmV2X2Zyb20gPSBmcm9t OwkJCQlcCiAJCSAgZ290byBzeW1kb25lOwogCQl9CiAJICAgICAgSU5DX0ZST007Ci0JICAg ICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCSAgICAgIHJhcmVseV9xdWl0 ICgrK3F1aXRfY291bnQpOwogCSAgICB9CiAJc3ltZG9uZToKIAkgIGN1cmxldmVsLT5wcmV2 ID0gY3VybGV2ZWwtPmxhc3Q7CkBAIC0zMzk3LDcgKzMzOTUsNyBAQCBkbyB7IHByZXZfZnJv bSA9IGZyb207CQkJCVwKIAkJICAgIGJyZWFrOwogCQkgIH0KIAkJSU5DX0ZST007Ci0JCWlu Y3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkJcmFyZWx5X3F1aXQgKCsrcXVpdF9j b3VudCk7CiAJICAgICAgfQogCSAgfQogCXN0cmluZ19lbmQ6CmRpZmYgLS1naXQgYS9zcmMv c3lzZGVwLmMgYi9zcmMvc3lzZGVwLmMKaW5kZXggNDE1NWMyMC4uOTFiMmE1YyAxMDA2NDQK LS0tIGEvc3JjL3N5c2RlcC5jCisrKyBiL3NyYy9zeXNkZXAuYwpAQCAtMjUwOCwxMiArMjUw OCwxMiBAQCBlbWFjc19jbG9zZSAoaW50IGZkKQogI2VuZGlmCiAKIC8qIFJlYWQgZnJvbSBG RCB0byBhIGJ1ZmZlciBCVUYgd2l0aCBzaXplIE5CWVRFLgotICAgSWYgaW50ZXJydXB0ZWQs IGVpdGhlciBxdWl0IG9yIHJldHJ5IHRoZSByZWFkLgotICAgUHJvY2VzcyBhbnkgcXVpdHMg YW5kIHBlbmRpbmcgc2lnbmFscyBpbW1lZGlhdGVseSBpZiBJTlRFUlJVUFRJQkxFLgorICAg SWYgaW50ZXJydXB0ZWQsIHByb2Nlc3MgYW55IHF1aXRzIGFuZCBwZW5kaW5nIHNpZ25hbHMg aW1tZWRpYXRlbHkKKyAgIGlmIElOVEVSUlVQVElCTEUsIGFuZCB0aGVuIHJldHJ5IHRoZSBy ZWFkIHVubGVzcyBxdWl0dGluZy4KICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJl YWQsIHdoaWNoIG1pZ2h0IGJlIGxlc3MgdGhhbiBOQllURS4KICAgIE9uIGVycm9yLCBzZXQg ZXJybm8gdG8gYSB2YWx1ZSBvdGhlciB0aGFuIEVJTlRSLCBhbmQgcmV0dXJuIC0xLiAgKi8K IHN0YXRpYyBwdHJkaWZmX3QKLWVtYWNzX25vaW50cl9yZWFkIChpbnQgZmQsIHZvaWQgKmJ1 ZiwgcHRyZGlmZl90IG5ieXRlLCBib29sIGludGVycnVwdGlibGUpCitlbWFjc19pbnRyX3Jl YWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUsIGJvb2wgaW50ZXJydXB0 aWJsZSkKIHsKICAgc3NpemVfdCByZXN1bHQ7CiAKQEAgLTI1MzcsMTQgKzI1MzcsMTQgQEAg ZW1hY3Nfbm9pbnRyX3JlYWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUs IGJvb2wgaW50ZXJydXB0aWJsZSkKIHB0cmRpZmZfdAogZW1hY3NfcmVhZCAoaW50IGZkLCB2 b2lkICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKIHsKLSAgcmV0dXJuIGVtYWNzX25vaW50cl9y ZWFkIChmZCwgYnVmLCBuYnl0ZSwgZmFsc2UpOworICByZXR1cm4gZW1hY3NfaW50cl9yZWFk IChmZCwgYnVmLCBuYnl0ZSwgZmFsc2UpOwogfQogCiAvKiBMaWtlIGVtYWNzX3JlYWQsIGJ1 dCBhbHNvIHByb2Nlc3MgcXVpdHMgYW5kIHBlbmRpbmcgc2lnbmFscy4gICovCiBwdHJkaWZm X3QKIGVtYWNzX3JlYWRfcXVpdCAoaW50IGZkLCB2b2lkICpidWYsIHB0cmRpZmZfdCBuYnl0 ZSkKIHsKLSAgcmV0dXJuIGVtYWNzX25vaW50cl9yZWFkIChmZCwgYnVmLCBuYnl0ZSwgdHJ1 ZSk7CisgIHJldHVybiBlbWFjc19pbnRyX3JlYWQgKGZkLCBidWYsIG5ieXRlLCB0cnVlKTsK IH0KIAogLyogV3JpdGUgdG8gRklMRURFUyBmcm9tIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUg TkJZVEUsIHJldHJ5aW5nIGlmCi0tIAoyLjkuMwoK --------------34CC71419F9E78E8F2F005B7-- From MAILER-DAEMON Mon Jan 30 19:14:52 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYM60-0004L8-5u for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 19:14:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYM5x-0004L2-NV for emacs-devel@gnu.org; Mon, 30 Jan 2017 19:14:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYM5w-0007Wx-B0 for emacs-devel@gnu.org; Mon, 30 Jan 2017 19:14:49 -0500 Received: from mail-ot0-x22c.google.com ([2607:f8b0:4003:c0f::22c]:33331) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYM5w-0007Wq-4S for emacs-devel@gnu.org; Mon, 30 Jan 2017 19:14:48 -0500 Received: by mail-ot0-x22c.google.com with SMTP id 73so255199630otj.0 for ; Mon, 30 Jan 2017 16:14:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=v4aPZ6sIxAbYKjDEzKE/FSffIe8gY7pxJXigb+Kv6qo=; b=Q+oJX8bg1puV4hHnz8hlFqwW84u7VgRZyL4yAxPWORC5kU+RVOjw62D4Y/6ztz78o/ yjzkBWgLloLD0ARD9PZOJt8jVPqiKDjmOac6q8Rl5NrCiUo98Zo4k5WM8VodcgKZc3VI FE9847gy4vCTmT7VJYgaNt21xDsvntqKDEYsaugSRjhls8zXGYU4x6nJo1rdAn/na/F2 W1eMW15eY7eyrbHKi/DRfWpE0qNfOH3w4cQbjPegkq4jsUuAdMIVW07gzu7/9SRG0h6v wYBkJTcMNGEt+mINULDV/mYQjuc13NfYPSJAjyduGOw/Qoh2k2Xy1DIAbuEhhZ42Lkr4 JBYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=v4aPZ6sIxAbYKjDEzKE/FSffIe8gY7pxJXigb+Kv6qo=; b=dnb9Letfxo9dAhgiyHglK/MOejGUPU8/mJ60iqs4Y7kln+h7i05hIFTaUUiRPri5yk CfplR8pLAffoapU1JXmd4b8o8qTEdsCDH6Yp3BYo02vVKYD8qrFzs2FUewkNG1cBaeH+ 7VcSF2u9wqTv2zBIS7hMlqgwKRHspUoYysCDmQaPJf4EAnwwAkv34EygfoJvzUiyN84G WNqQo1eqiyDE6jX+Iotd6U+JRrNMG5qLX4in/ZxqA8Uzr7jyT5bBYP70Q/uZn+cwXFr2 OkkaujoG13ZqInwmym5mspLKd/X8hW98FZyK0pKDLpGOIcVW5aBUCJtJaajDUY+P8hD0 /tvw== X-Gm-Message-State: AIkVDXJZGHqxiBeV5SG+aJTqAf13Q4jyf72tLBQ5DAaT1FuyRZ4EDRDbAwxnZif+y4MT+BwReDkNXA1kQXj3vQ== X-Received: by 10.157.62.29 with SMTP id a29mr13049390otd.48.1485821686748; Mon, 30 Jan 2017 16:14:46 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.56.242 with HTTP; Mon, 30 Jan 2017 16:14:46 -0800 (PST) In-Reply-To: <8737g0qw7z.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> <87k29cmq1u.fsf@elephly.net> <8737g0qw7z.fsf@lifelogs.com> From: Filipe Silva Date: Mon, 30 Jan 2017 22:14:46 -0200 Message-ID: Subject: Re: official Emacs Docker image To: Emacs developers Content-Type: multipart/alternative; boundary=f403045e360cd69f8f054758d141 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 00:14:51 -0000 --f403045e360cd69f8f054758d141 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Ted, https://hub.docker.com/r/gnuemacs/emacs/ is giving me http 404. Is that the correct address? On Mon, Jan 30, 2017 at 3:44 PM, Ted Zlatanov wrote: > On Mon, 30 Jan 2017 18:10:53 +0100 Ricardo Wurmus > wrote: > > RW> Filipe Silva writes: > > >> Ted, I think that before the portable dumper branch get's merged or th= e > big > >> elc file branch gets merged, you are going to have a really hard time > >> writing a docker file for that because of: > >> https://github.com/docker/docker/issues/22801 > > RW> I would like to state again that we (i.e. the GNU project) already ha= ve > RW> a way to build valid Docker images for Emacs using GNU Guix. It does > RW> not even involve the use of Docker, nor does it require a third-party > RW> =E2=80=9Cbase image=E2=80=9D of a GNU+Linux system. > > I don't see a problem providing both as "gnuemacs/guix-emacs" and > "gnuemacs/docker-emacs" or something like that. Or as tags of > "gnuemacs/emacs". I don't think they are equivalent, though, so the need > for a `docker build' solution is still there. > > RW> Would it be helpful if the Guix project provided a Docker image for t= he > RW> latest release for download? To me it seems only natural for GNU Ema= cs > RW> and GNU Guix to cooperate; it=E2=80=99s all GNU. > > Sure. But there's more that Docker Hub offers: a global namespace; a > distributed download service; automated builds. You can upload the Guix > image to Docker Hub and get all of those benefits except the automated > builds: see https://docs.docker.com/docker-hub/repos/ > > If you can pack an ARM build into the image so it's multiarch, that's > great too. I know there's a way to do it with the Docker tools, so the > image format supports it. But it's definitely not a requirement. > > I can add you to the Docker Hub account so you can do at least the first > uploads. Later we can automate them through Hydra or some other CI tool. > > Ted > > > --f403045e360cd69f8f054758d141 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Ted,=C2=A0

https://hub.docker.com/r/gnuemacs/emacs/= is giving me http 404. Is that the correct address?

On Mon, Jan 3= 0, 2017 at 3:44 PM, Ted Zlatanov <tzz@lifelogs.com> wrote:
On Mon, 30 Jan 2017 18:10:53 +0100 Ricardo = Wurmus <rekado@elephly.net>= wrote:

RW> Filipe Silva <filipe.si= lva@gmail.com> writes:

>> Ted, I think that before the portable dumper branch get's merg= ed or the big
>> elc file branch gets merged, you are going to have a really hard t= ime
>> writing a docker file for that because of:
>> https://github.com/docker/docker/issues/2= 2801

RW> I would like to state again that we (i.e. the GNU project) al= ready have
RW> a way to build valid Docker images for Emacs using GNU Guix.=C2=A0 I= t does
RW> not even involve the use of Docker, nor does it require a third-part= y
RW> =E2=80=9Cbase image=E2=80=9D of a GNU+Linux system.

I don't see a problem providing both as "gnuemacs/guix-emacs"= and
"gnuemacs/docker-emacs" or something like that. Or as tags of
"gnuemacs/emacs". I don't think they are equivalent, though, = so the need
for a `docker build' solution is still there.

RW> Would it be helpful if the Guix project provided a Docker image for = the
RW> latest release for download?=C2=A0 To me it seems only natural for G= NU Emacs
RW> and GNU Guix to cooperate; it=E2=80=99s all GNU.

Sure. But there's more that Docker Hub offers: a global namespace; a distributed download service; automated builds. You can upload the Guix
image to Docker Hub and get all of those benefits except the automated
builds: see https://docs.docker.com/docker-hub/repos/<= /a>

If you can pack an ARM build into the image so it's multiarch, that'= ;s
great too. I know there's a way to do it with the Docker tools, so the<= br> image format supports it. But it's definitely not a requirement.

I can add you to the Docker Hub account so you can do at least the first uploads. Later we can automate them through Hydra or some other CI tool.
Ted



--f403045e360cd69f8f054758d141-- From MAILER-DAEMON Mon Jan 30 21:53:16 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYOZI-0004NZ-IQ for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 21:53:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYOZF-0004M4-Sy for emacs-devel@gnu.org; Mon, 30 Jan 2017 21:53:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYOZF-0002xp-6x for emacs-devel@gnu.org; Mon, 30 Jan 2017 21:53:13 -0500 Received: from mail-oi0-x241.google.com ([2607:f8b0:4003:c06::241]:36006) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYOZF-0002xh-2F for emacs-devel@gnu.org; Mon, 30 Jan 2017 21:53:13 -0500 Received: by mail-oi0-x241.google.com with SMTP id u143so27284463oif.3 for ; Mon, 30 Jan 2017 18:53:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=p+damTNOBiif6Bdji+BKmPN2ae/vnqWsS1nZCm65eZs=; b=QEdDnMdzmAnRORK1Ei1mtnFG4Z6ss9zFcc2PwcmKH4jR0P+PWmCCdM/pYK1eG6J+pf 6aZDMZfvQRS1jWBVZBEQ5UMRU859BywULgH3fo2owxyy1tlLDcB84o+coEUHuQIR5KYA JA6h8vZE7rRtLsmGo3y5kYp6NCy728I5g6sQ/iGpzvI3NENdS/K5/QciEvQLdpEFLvvR 9gmud/7GTrxs0X9waN1hdvH7KXjwFN7Te6/7F/W5xcpbuudszJjNdtonNPOUVr21SDVb 1eA8bxmj1xm2HMZv3HXxp8rk9nOOPCCC03/3kVIR1r6+bJ9cdiHFiaaF/525fWqoZ1I+ N9nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=p+damTNOBiif6Bdji+BKmPN2ae/vnqWsS1nZCm65eZs=; b=QFP9R4tyDvWZ2TWq5667i/XaBIidzRv6l9n5h4Jn8K09TnHxsyONHXFBDUG2jA6GMk X7OEd5mXZfMN5C0eH0pbxQeJhz+gl8NHPGo76qIdvsWHv2nwUUskJIV0DPv2Van1eJw1 fvkDxoid32oH024Q4OuorbLsEgFT67s0GjJcJnGLywoMED3ZuztPUA+lcsC+ju0Z8c3d S9RKVK7ZwifKcVX8SiuCGYLIDN7U20xFTo3X4G8cW71tWlT/6Of+faI2nX84fEy8jfMp jRSrIBT5itmTrc9JNN4l54EpHluC7xOBKUGpSk0G04iCWHFK2r0IJd8JhwTUP7ETuWCB rWEw== X-Gm-Message-State: AIkVDXKb0+qUF/kwpFssbx7kgXzZvAxoj1F4cQaQtl4sKkxsXK4xpApSTjjtdY3wbXkNZB0xQAetiunGoeP1PA== X-Received: by 10.202.4.84 with SMTP id 81mr12875998oie.127.1485831192073; Mon, 30 Jan 2017 18:53:12 -0800 (PST) MIME-Version: 1.0 Sender: npostavs@gmail.com Received: by 10.157.21.117 with HTTP; Mon, 30 Jan 2017 18:53:11 -0800 (PST) In-Reply-To: References: <20161105015720.6371.89806@vcs.savannah.gnu.org> <20161105015720.88A6322012D@vcs.savannah.gnu.org> <4f7ad1cf-7632-abea-e15e-a3fdfff795c6@gmail.com> <12a5baea-9bca-994f-ec92-5ddd36321c11@gmail.com> From: Noam Postavsky Date: Mon, 30 Jan 2017 21:53:11 -0500 X-Google-Sender-Auth: GIrFCgDYwmMn4qQQ7i8wSXVpSog Message-ID: Subject: Re: [Emacs-diffs] emacs-25 db436e9: Don't call debug on failed cl-assert To: =?UTF-8?Q?Cl=C3=A9ment_Pit=2DClaudel?= Cc: Emacs developers Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 02:53:14 -0000 On Sun, Jan 29, 2017 at 4:09 PM, Cl=C3=A9ment Pit-Claudel wrote: >> Um, should this be >> >> (funcall debugger 'error `(cl-assertion-failed ,form ,string ,@sargs)) >> >> or >> >> (funcall debugger 'error `(cl-assertion-failed (,form ,string ,@sargs))) >> >> I'm getting confused with all the levels of nesting and funcall/apply. > > > I think the second one. `debugger' gets two arguments, 'error and a list= of arguments to `signal'. That list should have two entries: `cl-assertio= n-failed' and `(,form ,string ,@sargs). > Pushed to emacs-25 [1: 72ef710]. 1: 2017-01-30 21:45:02 -0500 72ef710f6e1c8e334fd50da9480a8cb151e823a2 Fix call to debugger on assertion failure From MAILER-DAEMON Mon Jan 30 22:34:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYPDA-0005HZ-UF for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 22:34:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYPD8-0005GV-M4 for emacs-devel@gnu.org; Mon, 30 Jan 2017 22:34:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYPD7-0005Y2-S0 for emacs-devel@gnu.org; Mon, 30 Jan 2017 22:34:26 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:40887) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYPD6-0005XL-7F; Mon, 30 Jan 2017 22:34:24 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cYPD5-0007eA-8P; Mon, 30 Jan 2017 22:34:23 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Ted Zlatanov CC: emacs-devel@gnu.org In-reply-to: <87o9yor53e.fsf@lifelogs.com> (message from Ted Zlatanov on Mon, 30 Jan 2017 09:32:21 -0500) Subject: Re: Docker Hub requires nonfree software to log in Reply-to: rms@gnu.org References: <87o9yor53e.fsf@lifelogs.com> Message-Id: Date: Mon, 30 Jan 2017 22:34:23 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 03:34:27 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I think you're confusing two things: Docker Hub as a web site (which > requires nonfree software to use during *setup*) and Docker Hub as an > image repository (which requires nothing but Docker itself, it's like a > package repository with automated builds per package). They may talk to > the same backend databases, but they are not the same thing. This is the first I heard of the distinction. A concrete practical question: does it work to prepare and upload images without running nonfree JS code? If so, we can go ahead and upload images. > Building an alternative to Docker Hub is an interesting proposition, but > not a blocker to this work. That seems to be a misunderstanding -- I didn't propose we do that, only that we distribute our Emacs images from some FSF server. The image is just a file, right? So we can distribute it any way that we distribute other files, right? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Mon Jan 30 22:47:15 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYPPX-0008IE-5Z for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 22:47:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55549) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYPPV-0008I7-JB for emacs-devel@gnu.org; Mon, 30 Jan 2017 22:47:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYPPS-0000i7-G1 for emacs-devel@gnu.org; Mon, 30 Jan 2017 22:47:13 -0500 Received: from mail-pf0-x229.google.com ([2607:f8b0:400e:c00::229]:33750) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYPPS-0000ht-9h for emacs-devel@gnu.org; Mon, 30 Jan 2017 22:47:10 -0500 Received: by mail-pf0-x229.google.com with SMTP id y143so98124647pfb.0 for ; Mon, 30 Jan 2017 19:47:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=MMmcqaq7BVe76mDbaQCqnbwxY8TClXHK4lXzL6rJCfs=; b=tQJUsdNBftND4Uou80kU7eW2cwhgR9KWmsOMHG1FJGe5uLsPNe/18RcE1lx0frSsAi FO47yog016LC3CnLEJsczMx0VHjCo3TlliqIedU8W9O4/rJ7enQEOaYCzohz6Ykzkur0 v6VYznVfvywTV8al2GZCw91gYIVWWRLRUpM1WJbCjHn/ExK5ZrQ9e9dIalxuoNVPpbuN KMT7x8uPpRFu/NW3LgWivK7pE+PNRegRJdxf/PLmRuf8NmeXDR/CXD/jBS/2e8E81m5C 4b2PLPAuj1wUqBhLjwKaWBwhhh9a7Mpu0avnxjx7eiznWYyeIDU/2j8HPe43C6qJsFRx DIWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=MMmcqaq7BVe76mDbaQCqnbwxY8TClXHK4lXzL6rJCfs=; b=NBXS3LVn9MJaP1triqmRfju5UujJYJUHLy8KKlQUMaX13q58IS9cgm6Ha040XREwA7 kxLXRWv70mqEYYDHUsQQEJIXHA+XaJnqQDOJUlJ9vrCQc4DLzxb2jRkVDCZGVEdybptj cekRWK/9WD+adbBLBZLG4HoYKyzdXpccNznd8K3Ohs/rCU9ze0rC+Ror9T2KVkomWv6F 1RHiF5Yh3fPUI3VqBwk/2VKLOWTdGfm/t/FqMdPYWpQyqa1lB2nOzZLlkgZHim90gXDb F4fH+ySKyOrWV0mJkSE5c66Msiu3vT5Ye5vvsQClqtJlLsiIukx3u1Zy+EeFTudhz1sT Mq6A== X-Gm-Message-State: AIkVDXK+NaUmcxaXdV/P+oPgGjO1mEO3b8ZlpMAY4DDfuOeD4jNClzyPvV8/2XD6u8VNMw== X-Received: by 10.84.173.168 with SMTP id p37mr36685778plb.30.1485834429281; Mon, 30 Jan 2017 19:47:09 -0800 (PST) Received: from calancha-pc (104.81.147.124.dy.bbexcite.jp. [124.147.81.104]) by smtp.gmail.com with ESMTPSA id e13sm36292927pgf.48.2017.01.30.19.47.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jan 2017 19:47:08 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Tue, 31 Jan 2017 12:47:05 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Jordon Biondo cc: Tino Calancha , Emacs development discussions Subject: Re: Revisiting `setq-local`s signature In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-764228563-1485834428=:1908" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 03:47:14 -0000 --8323329-764228563-1485834428=:1908 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT On Mon, 30 Jan 2017, Jordon Biondo wrote: > A while ago I brought up the inconstant signatures of `setq`, `setq-default` and `setq-local`. In short, I want `setq-local` to > have the same signature as `setq` and `setq-local`. (setq* VAR VAL VAR VAL...) > See thread: http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00448.html > > I appreciate Stefan's input back then, but I'd like to revisit the issue, get further input, and see if I can change some minds > about the issue. > > If you believe the variadic signature of `setq` and `setq-default` is not ideal, consider that backwards compatibility erases any > chance that those two functions will lose that feature, and consider the benefits of being consistently wrong over being > inconsistently right. > > Are maintainers and users still opposed to this change? If not I'd be happy to update the patch from the previous thread. Richard Stallman writes: > It is most natural for setq-local to have the same calling convention > as setq. +1 FWIW, i am in favour of naturalness too. Regards, Tino --8323329-764228563-1485834428=:1908-- From MAILER-DAEMON Mon Jan 30 23:19:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYPun-0003xy-1j for mharc-emacs-devel@gnu.org; Mon, 30 Jan 2017 23:19:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYPul-0003xm-0X for emacs-devel@gnu.org; Mon, 30 Jan 2017 23:19:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYPuh-0008JC-Uv for emacs-devel@gnu.org; Mon, 30 Jan 2017 23:19:31 -0500 Received: from [195.159.176.226] (port=55084 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYPuh-0008Iy-Ny for emacs-devel@gnu.org; Mon, 30 Jan 2017 23:19:27 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYPua-0004XJ-P7 for emacs-devel@gnu.org; Tue, 31 Jan 2017 05:19:20 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Leo Liu Subject: Re: Change in files.el Date: Tue, 31 Jan 2017 12:19:20 +0800 Lines: 8 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (macOS 10.12.3) Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAElBMVEUAAAAAAP+LRRP0pGC+ vr7///+7mT1iAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMO DhglKe4AAAEsSURBVCjPbZNBboQwDEV/Cd4X9QJRThApmn0XYW+Jyf2v0m+HhqDBgiAe9rcTG7QH w/1Vn2Ar8gBb/ocywSN3qK9T3z4eFDB4eApocBpeBs1RSykoJd8gQcm8pGmHXFso3ajnmsqV0TnY DQkOfXUfN5NwaI7AWTVOyEhcu1aHmdWItHddUVUcUgUBCkitu8V6ditHVOVdqzl2EQ1ZVGTbdK0V 7cqn8vWzoU5Q/bF9Y/Y0cRU1xwkys5dJ+Dt6pBDWifcNQml8Gh2JVmPSoQzo7en0grswkxrUGYJ7 0hSxxAGr7ZMwYcHIzprpi7TENEE1xtiYxixRlCfPBsUUrwHD7uGIwATrbnODJcVrPpVn3hxiGloe m/S+z3CtuzUSMo83N4DPH+F0evwR3P4A2k+75838OKQAAAAASUVORK5CYII= Cancel-Lock: sha1:R7E2YOAPgON9zwBrz4HXu4Qo2Rw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 04:19:31 -0000 On 2017-01-30 10:58 -0500, John Wiegley wrote: > Can add-function infer that a -function variable with a value of "nil" is > equivalent to it having a value of 'ignore? It doesn't make sense for add-function to default to #'ignore. In many cases `nil' of these variables doesn't mean #'ignore. Leo From MAILER-DAEMON Tue Jan 31 04:48:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYV36-0005J0-TO for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 04:48:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49473) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYV34-0005In-Tv for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:48:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYV2z-0008W4-Vg for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:48:26 -0500 Received: from mout.web.de ([212.227.15.14]:63459) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYV2z-0008Va-KR for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:48:21 -0500 Received: from drachen.dragon ([88.67.99.137]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LopdT-1by2Yn1yZv-00gq8y; Tue, 31 Jan 2017 10:48:14 +0100 From: Michael Heerdegen To: Emacs Development Cc: Dima Kogan Subject: f3c77d11af origin/master origin/HEAD stash Date: Tue, 31 Jan 2017 10:48:13 +0100 Message-ID: <87bmun36hu.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:v4Huvn8O2nUOnXVvqWGHFz4oEo4ujjofCf51sKLK0F/ovq6sddb J9IEiA+JV7NAev8Ibke1uYT88Rje9OjjOrrS5soZHoX/at6YQAQVf0cW8Gdpb8ZcXU+JqCj M5eDosuyx6TyOc/JXHLa9DeR4XV+dp967Vh6zsO3Yb47nlATdlpXD4mU+H/3AZkFLxoY3w3 Oae2Tk1kW07a77udgX2Hw== X-UI-Out-Filterresults: notjunk:1;V01:K0:yY9TDLyGovs=:KCFlzV/PyOVmesXsegDWv7 Wc0+PTEHDr2FS3NElZttSwL3CxKoibfoN7FgHpLM3JG32YQEWQxUAQr5lPEyBgQitz4kpLpBJ 9KxwU5rE7FZVMOShQyXuhFaaE0wbw6+yeSkb4X/VM4rQ9DYX6u0/XO5A/XQivNp6UacL7xARF nyeOf5K9sHgzF2enHM9NDixUoLKHdby7RoSJqXYR2NsZt4fvKeKLNPTKObkZ/0LVR/qIwcxg7 dJKEUj1QOgjhLARRrJ8R/EwmUfa+NdcLHqlwtgDr42w7ZMjP7hdRqGetEB740kYUCvrSkuFfk 9o/KwIpyskDyo3rAkvuzYj/ClBQEOuiCLKGTmgNlTuYUqm6DTb3+yPbOffW3aCmrkruWJOzHm WM3UQ90DtuWxQ0KLsuQRizmrtXFJeEYhQ0QYtmhRLTWqKomngOxL7ZVdmxi+nmhGYB14iwYTk ZA1Qwb1eAwdPaJ4ZZsuDdj5NQpuCpmcrOZytj4XqaP2jFzivebhaWq17imqghjugwtrHa/2oD sBa+DjbkgxKL4cvLtIa6pTy8RhnjdxIpYuuZkzxHKK3qApOv3jJSNAIaNivsr8z2JRuUEsKyP Wt1LbBZUuSFM/xPBLG7MF9R/5vU6Uhb8tm455vvJxwsfoytLtG13kv3JoKbWf20j6yD6u0oF8 2lelqNUMZ4AA5WDANe6wYURHu27eIgdB4mnvPS0kVoZgF9HbOAA3f17LB7QPcAEV+j8W+gOwy wX3VFya5YUyAG7kHEjYT20WnlMUbGWGcuyi3s/5rrmn4+cQ9RDe26l29UfVJigzDS2+mNZMfL Qo8/Hge X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.14 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 09:48:27 -0000 Hi, this commit looks like it had been committed accidentally: f3c77d11af origin/master origin/HEAD stash It has no description of what it does. Should it be reverted? Thanks, Michael. From MAILER-DAEMON Tue Jan 31 04:56:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYVAn-0007uu-1O for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 04:56:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51329) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYVAk-0007uh-U1 for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:56:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYVAg-0002Qt-Vx for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:56:22 -0500 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYVAg-0002Q4-QZ for emacs-devel@gnu.org; Tue, 31 Jan 2017 04:56:18 -0500 Received: by mail-pf0-x243.google.com with SMTP id y143so27069760pfb.1 for ; Tue, 31 Jan 2017 01:56:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=OJ561JGF3ChkQSQSsBmgq96LLxgfkwU2/5UP6Qx3i1A=; b=KMbcnKaUbzQR/ybJOnmKE0b3r3IQPukIKxle8sJ/DBM20pBF9cKDub9ayOv8DLuhgC kMDf3tn8VMlyfpVO6P/tEpNRI7UgcQPE69nqEpLVu4z/ediX7AIa2MAy3Zmc3JtMtnoz jyVcdbgY5ybR/NkbpQzsNr9IL3MFq5aJ7/EEb7KfirsjQse8roHipcjsPgpkD4eq5Xr9 VdmSFwwr7ESXHnyIIvSIuQW+G1wcv1uTdfgiTwVC654/UEChlj7cFikr44HmpZ+midv7 xwSdP9hXgnhie/X9s+Or76jTExeyhPZwNvkOF/w2QNsGXyr3mGdPGF7TbIdS0uWS9gGD TLig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=OJ561JGF3ChkQSQSsBmgq96LLxgfkwU2/5UP6Qx3i1A=; b=kHZ3tnlSRRIOd+Dc+V08l7a8E7DiI476vP5ehOMbBJXPX8HXHnBmLYqrSb15uMIcGq lgbz8q2yQuVLWdRlMYnRuzHQdiGq4jXfxOl//zI5bMkiLOhr/CRq2pRCLynU3NgXwEZr eYi8Xcj4EbA/Py49hPyxqAAcV4feVqo88k4n04tONtmC7WrUZi+qJNXlVDYjn0Oqxd/F qz8QXjaHU2mjP1x+KbzkyGZ6WwsBqvyidt2bfYg5p5j1uB+xHeaVCC/XKXV0liKP7ngg 8y/Y7kHa96Rpjsasc4J0mCDelk8O1GCqX/GyOgjbcJTUE7NAVT1MdwepdKoGb7Sf0z4k nbVA== X-Gm-Message-State: AIkVDXKa+E4+EDSP9ll/wcIWmSbv8Y4/kIpsQGOqbexlM7yOJ0C9E50JNzqqWNVcTvQ2bQ== X-Received: by 10.98.28.196 with SMTP id c187mr27915518pfc.92.1485856577806; Tue, 31 Jan 2017 01:56:17 -0800 (PST) Received: from calancha-pc ([103.5.140.135]) by smtp.gmail.com with ESMTPSA id z74sm39318765pfd.70.2017.01.31.01.56.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jan 2017 01:56:17 -0800 (PST) From: Tino Calancha X-Google-Original-From: Tino Calancha Date: Tue, 31 Jan 2017 18:56:13 +0900 (JST) X-X-Sender: calancha@calancha-pc To: Michael Heerdegen cc: Emacs Development Subject: Re: f3c77d11af origin/master origin/HEAD stash In-Reply-To: <87bmun36hu.fsf@drachen> Message-ID: References: <87bmun36hu.fsf@drachen> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::243 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 09:56:23 -0000 On Tue, 31 Jan 2017, Michael Heerdegen wrote: > Hi, > > this commit looks like it had been committed accidentally: > > f3c77d11af origin/master origin/HEAD stash > > It has no description of what it does. Indeed, it has one: stash It must be stashing. > > Should it be reverted? I think so. From MAILER-DAEMON Tue Jan 31 08:56:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYYvL-00086N-SN for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 08:56:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYYvH-0007xJ-TY for emacs-devel@gnu.org; Tue, 31 Jan 2017 08:56:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYYvE-0001of-SN for emacs-devel@gnu.org; Tue, 31 Jan 2017 08:56:40 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:45226) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYYvE-0001oB-LW for emacs-devel@gnu.org; Tue, 31 Jan 2017 08:56:36 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0A3KQAu3EVY/0gvq8BdGgEBAQECAQEBAQgBAQEBgzgBAQEBAR9agQaCe4VUnAImAZZXBx4LhXMEAgKCEUMRAQIBAQEBAQEBYiiEaQEBAQIBAQElLxgLBQsLNBIUEwEEDSQTiGcIDqxJPYtEAQEBAQEBBAEBAQEeBYsZhBiGEQWOf32KaoZLhW2GUYgRMYYJh2CKLzUheBMOI4M5HIF7IDSGPASCOQEBAQ X-IPAS-Result: A0A3KQAu3EVY/0gvq8BdGgEBAQECAQEBAQgBAQEBgzgBAQEBAR9agQaCe4VUnAImAZZXBx4LhXMEAgKCEUMRAQIBAQEBAQEBYiiEaQEBAQIBAQElLxgLBQsLNBIUEwEEDSQTiGcIDqxJPYtEAQEBAQEBBAEBAQEeBYsZhBiGEQWOf32KaoZLhW2GUYgRMYYJh2CKLzUheBMOI4M5HIF7IDSGPASCOQEBAQ X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="291651411" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 31 Jan 2017 08:56:30 -0500 Received: by pastel.home (Postfix, from userid 20848) id 7A5A865786; Tue, 31 Jan 2017 08:56:30 -0500 (EST) From: Stefan Monnier To: Dima Kogan Cc: emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master f3c77d1 2/2: stash Message-ID: References: <20170131080330.5905.82666@vcs.savannah.gnu.org> <20170131080330.F300522017C@vcs.savannah.gnu.org> Date: Tue, 31 Jan 2017 08:56:30 -0500 In-Reply-To: <20170131080330.F300522017C@vcs.savannah.gnu.org> (Dima Kogan's message of "Tue, 31 Jan 2017 08:03:30 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 13:56:41 -0000 Hmm? Did you really mean to commit this? If so, there's a problem with the commit message, Stefan >>>>> "Dima" == Dima Kogan writes: > branch: master > commit f3c77d11af65f3b319b1784b4c3cf08c51aa7997 > Author: Dima Kogan > Commit: Dima Kogan > stash > --- > lisp/comint.el | 6 +++++- > lisp/emacs-lisp/debug.el | 54 ++++++++++++++++++++++++++++++++++++++++++++++ > lisp/shell.el | 2 ++ > src/data.c | 50 ++++++++++++++++++++++++++++++++++++++++++ > src/fns.c | 4 ++++ > 5 files changed, 115 insertions(+), 1 deletion(-) > diff --git a/lisp/comint.el b/lisp/comint.el > index b23f72e..c82c3d0 100644 > --- a/lisp/comint.el > +++ b/lisp/comint.el > @@ -1879,6 +1879,7 @@ Similarly for Soar, Scheme, etc." > (let ((echo-len (- comint-last-input-end > comint-last-input-start))) > ;; Wait for all input to be echoed: > + > (while (and (> (+ comint-last-input-end echo-len) > (point-max)) > (accept-process-output proc) > @@ -1890,6 +1891,7 @@ Similarly for Soar, Scheme, etc." > ;; (+ comint-last-input-start > ;; (- (point-max) comint-last-input-end)) > nil comint-last-input-end (point-max))))) > + > (if (and > (<= (+ comint-last-input-end echo-len) > (point-max)) > @@ -1901,6 +1903,7 @@ Similarly for Soar, Scheme, etc." > ;; Certain parts of the text to be deleted may have > ;; been mistaken for prompts. We have to prevent > ;; problems when `comint-prompt-read-only' is non-nil. > + > (let ((inhibit-read-only t)) > (delete-region comint-last-input-end > (+ comint-last-input-end echo-len)) > @@ -1909,6 +1912,7 @@ Similarly for Soar, Scheme, etc." > (goto-char comint-last-input-end) > (comint-update-fence))))))) > + > ;; This used to call comint-output-filter-functions, > ;; but that scrolled the buffer in undesirable ways. > (run-hook-with-args 'comint-output-filter-functions ""))))) > @@ -2666,7 +2670,7 @@ This command is like `M-.' in bash." > (set-marker comint-insert-previous-argument-last-start-pos (point)) > ;; Insert the argument. > (let ((input-string (comint-previous-input-string 0))) > - (when (string-match "[ \t\n]*&" input-string) > + (when (string-match "[ \t\n]*&[ \t\n]*$" input-string) > ;; strip terminating '&' > (setq input-string (substring input-string 0 (match-beginning 0)))) > (insert (comint-arguments input-string index index))) > diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el > index cb77148..faa323f 100644 > --- a/lisp/emacs-lisp/debug.el > +++ b/lisp/emacs-lisp/debug.el > @@ -816,6 +816,60 @@ Redefining FUNCTION also cancels it." > '((depth . -100))) > function) > +;;;###autoload > +;; (defun debug-on-set (symbol) > +;; "Request FUNCTION to invoke debugger each time it is called. > + > +;; When called interactively, prompt for FUNCTION in the minibuffer. > + > +;; This works by modifying the definition of FUNCTION. If you tell the > +;; debugger to continue, FUNCTION's execution proceeds. If FUNCTION is a > +;; normal function or a macro written in Lisp, you can also step through > +;; its execution. FUNCTION can also be a primitive that is not a special > +;; form, in which case stepping is not possible. Break-on-entry for > +;; primitive functions only works when that function is called from Lisp. > + > +;; Use \\[cancel-debug-on-entry] to cancel the effect of this command. > +;; Redefining FUNCTION also cancels it." > +;; (interactive > +;; (let ((v (variable-at-point)) > +;; (enable-recursive-minibuffers t) > +;; (orig-buffer (current-buffer)) > +;; val) > +;; (setq val (completing-read > +;; (if (symbolp v) > +;; (format > +;; "Debug on set to symbol (default %s): " v) > +;; "Debug on set to symbol: ") > +;; #'help--symbol-completion-table > +;; (lambda (vv) > +;; ;; In case the variable only exists in the buffer > +;; ;; the command we switch back to that buffer before > +;; ;; we examine the variable. > +;; (with-current-buffer orig-buffer > +;; (or (get vv 'variable-documentation) > +;; (and (boundp vv) (not (keywordp vv)))))) > +;; t nil nil > +;; (if (symbolp v) (symbol-name v)))) > +;; (list (if (equal val "") > +;; v (intern val))))) > + > + > + > +;; (interactive > +;; (let* ((var-default (variable-at-point)) > +;; (var (completing-read > +;; (if var-default > +;; (format "Debug on set to symbol (default %s): " var-default) > +;; "Debug on set to symbol: ") > +;; nil > +;; #'boundp > +;; t nil nil (symbol-name var-default)))) > +;; (list (if (equal var "") var-default (intern var))))) > +;; (advice-add function :before #'debug--implement-debug-on-entry > +;; '((depth . -100))) > +;; function) > + > (defun debug--function-list () > "List of functions currently set for debug on entry." > (let ((funs '())) > diff --git a/lisp/shell.el b/lisp/shell.el > index c8a8555..c7ba64e 100644 > --- a/lisp/shell.el > +++ b/lisp/shell.el > @@ -1000,6 +1000,8 @@ command again." > (let ((pt (point)) > (regexp > (concat > + ;; comint-process-echoes is the thing that breaks the > + ;; throbber > (if comint-process-echoes > ;; Skip command echo if the process echoes > (concat "\\(" (regexp-quote shell-dirstack-query) "\n\\)") > diff --git a/src/data.c b/src/data.c > index 8e07bf0..26ff994 100644 > --- a/src/data.c > +++ b/src/data.c > @@ -1304,6 +1304,56 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where, > default: emacs_abort (); > } > + > + const char* symname = SDATA(sym->name); > + > + if( EQ(Vwatch_object, symbol) ) > + { > + static int nest_level = 0; > + if(nest_level++ == 0) > + { > + switch(sym->redirect) > + { > + case SYMBOL_PLAINVAL: > + { > + AUTO_STRING (format, "Setting symbol '%s'; redirect: SYMBOL_PLAINVAL"); > + CALLN (Fmessage, format, SYMBOL_NAME (symbol)); > + break; > + } > + case SYMBOL_VARALIAS: > + { > + AUTO_STRING (format, "Setting symbol '%s'; redirect: SYMBOL_VARALIAS"); > + CALLN (Fmessage, format, SYMBOL_NAME (symbol)); > + break; > + } > + case SYMBOL_LOCALIZED: > + { > + AUTO_STRING (format, "Setting symbol '%s'; redirect: SYMBOL_LOCALIZED"); > + CALLN (Fmessage, format, SYMBOL_NAME (symbol)); > + break; > + } > + case SYMBOL_FORWARDED: > + { > + AUTO_STRING (format, "Setting symbol '%s'; redirect: SYMBOL_FORWARDED"); > + CALLN (Fmessage, format, SYMBOL_NAME (symbol)); > + break; > + } > + > + default: > + { > + AUTO_STRING (format, "Setting symbol '%s'; redirect: UNKNOWN"); > + CALLN (Fmessage, format, SYMBOL_NAME (symbol)); > + break; > + } > + } > + } > + nest_level--; > + } > + > + > + > + > + > start: > switch (sym->redirect) > { > diff --git a/src/fns.c b/src/fns.c > index 136a219..9eabc14 100644 > --- a/src/fns.c > +++ b/src/fns.c > @@ -5120,6 +5120,10 @@ On some platforms, file selection dialogs are also enabled if this is > non-nil. */); > use_dialog_box = 1; > + DEFVAR_LISP("watch-object", Vwatch_object, > + doc: /* Symbol to watch. */); > + Vwatch_object = Qnil; > + > DEFVAR_BOOL ("use-file-dialog", use_file_dialog, > doc: /* Non-nil means mouse commands use a file dialog to ask for files. > This applies to commands from menus and tool bar buttons even when > _______________________________________________ > Emacs-diffs mailing list > Emacs-diffs@gnu.org > https://lists.gnu.org/mailman/listinfo/emacs-diffs From MAILER-DAEMON Tue Jan 31 09:02:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZ0e-0005jD-7B for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZ0Y-0005az-2c for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZ0U-0002sg-4d for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:06 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:36597) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZ0N-0002rt-FV; Tue, 31 Jan 2017 09:01:55 -0500 Received: by mail-qk0-x244.google.com with SMTP id i34so21152104qkh.3; Tue, 31 Jan 2017 06:01:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=lV2S7tdRLLsd15/x6qJAj3369+1pHfwYn1lyG9X9muM=; b=bDbZqRkIYnDYeK3wECfnth9XhRDKYzYMnWkVm5D8f3LD7X8Rlm+7qcDBld66ZOWKK2 RnBygVYUkuMTII50yONDBmOmsjKDUanXg6CuH2NYoUypUKl4PdK1iKD+xM/4dNzTnWOT 0YAk+FS7zeQHTCoV8J7TFE/0umelAx52QgZ8GFPp5ITNBcf6cj/N93nvGranQm3azhbB sJf8a36iiKkI9lSdL/ord9hkih7pzlK2oNGeMmgElorKfyCXvYO9xaT49+wr+jMOGxNJ 4WhApdHuk69oPjjjhUq6xZJ4jz+44ITovNRDV7uY+5ktOBt2OtVfD94HSQQiezyrIgJX NRkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=lV2S7tdRLLsd15/x6qJAj3369+1pHfwYn1lyG9X9muM=; b=qhjzAXWxgaN54XZe9TOmjNSLYDVcmD+BfjpfjU22bxCZElgYong+Kg5AdA/G1F4kg+ Z8P/nwbBbr8Us7N4ibwk5Z4cGXfcPe9F5C913CRGeNf7ahjXsI9kn9hNbf/K/9UXDDrG 8iDeTRbH6Xy6CliFnMIveeBQQVf70F+Vijx1M6Z6C7bsrvJ5HoCf5fMq4YvfY7OWSpYj 2VUvsNAN/GRFlxO8+YomMeOsrThlA6e62ByglURj7oXU/86JZPj3wVLnKbOnDN0VLt9q fjlNQxpi1SEVO9n/9gHwccZ0CUXyFLDCDA4hqCbaOcYcFag3pwn25bblh6VtTegGHe6N 2LWA== X-Gm-Message-State: AIkVDXKqophAPfRfvkF+ZKpMLpN9UnsddO+EUUKaVAtmKumDVLCJj8AX9hVCRn/cEM2Tcg== X-Received: by 10.55.159.20 with SMTP id i20mr26154720qke.317.1485871314636; Tue, 31 Jan 2017 06:01:54 -0800 (PST) Received: from Hermes.local ([216.57.92.130]) by smtp.gmail.com with ESMTPSA id h124sm15368613qke.40.2017.01.31.06.01.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2017 06:01:53 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by RFC1918.na.baesystems.com (Postfix, from userid 501) id 850A4868F96; Mon, 30 Jan 2017 16:52:27 -0500 (EST) To: David Engster Cc: Kaushal Modi , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: <87fuk08i01.fsf@engster.org> (David Engster's message of "Mon, 30 Jan 2017 20:28:30 +0100") Date: Mon, 30 Jan 2017 16:52:22 -0500 Message-ID: References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: David Engster , Kaushal Modi , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:02:10 -0000 >>>>> "DE" == David Engster writes: DE> It is a mistake because you are creating more moving targets and bring DE> them together very late in the release process. This reduces the amount of DE> testing that is done for those packages, so bugs will be noticed later and DE> the quality of the relases suffer. It moves even more work into the DE> RC-phase, which is already crowded and where people who can fix those bugs DE> might not be readily available. It removes those packages from Emacs CI, DE> so that breakages due to changes in core are not immediately noticed, and DE> often times they have to be fixed not by those who created the breakage, DE> but by those who notice them. These are issues to be fixed in the way ELPA integrates with our development process. I recognize today's ELPA may have these drawbacks, but I believe they can be fixed. We're moving toward a future where Emacs.git will represent "core Emacs", and only contain what core needs (plus a few historical bits, I'm sure). There should be no argument for keeping a project in core just to gain auxiliary benefits. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Tue Jan 31 09:02:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZ0z-0006Bs-Ka for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40266) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZ0x-00069b-Is for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZ0u-0002vV-Gi for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:31 -0500 Received: from mail-qk0-x233.google.com ([2607:f8b0:400d:c09::233]:33333) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZ0u-0002vN-DK for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:02:28 -0500 Received: by mail-qk0-x233.google.com with SMTP id s140so164743453qke.0 for ; Tue, 31 Jan 2017 06:02:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=JlrfObRDA3856HZE4zDSKKVGHgoKam9JFUlwT8DtVZw=; b=JkmqGpgC0UBajRaPK5gh2JWl6KZjbu8HVjdQRBJRr637b/Tr0XATqAZMg+JzAd7Fg3 8C4WpYN96d6NjbcXSjajeHgyAahmj/5oDJrjTIdboTUkcRAc8ei4wVRBd1zn00L064/b u81D5hgUsbtzQy4ErestzePymQzEX1U/nxD/vGCpCqFlhjlzkWGHgf/l7hOR2M5BUPVr 4NtRLZjTNfkQsVVV+zpY1cUB6hrWMkdSx8KgQHL0QdMulVAF5iqtOLcAEY4lGLTz/5g/ NRfaVSiumyizzbwyofH/MeN8tmS0/2wjz2b6JGsC0AR0gwDClSUp8vawNp0AdqdLxrVS JzSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=JlrfObRDA3856HZE4zDSKKVGHgoKam9JFUlwT8DtVZw=; b=RNi9JrpKpu1DBK0hXzwPSu6D0y3mfoB+2Mo8ySlWOwC85AzBzJgU29xf9L8E5q3glP TgyQL3h38noOG1eRTUtGOfxtAeKIlwMfOij+OXuzEqIsH2NpDLYk+1GfNLHGVmL9cm2J bRkhQFMG9lUPP0r8BdCEi6sB9+T4JlQW4Wt9Y2k0d38RmHvaSuWezaFZd1LwbdIMW7S9 6CENn0Kcq2V50ldrHEIfRAHuF05Cug9XRr4V6d6aocNkWCdk2u5bIrpSuSy8UKjP1h6U IOePi8Nnd03pRUyuQUU5JHGrc3HFFI0nCpzfv+nz/Mj6ormd3bRBLEk4nnb4/YKkxOoe dtJA== X-Gm-Message-State: AIkVDXLDwWNMTaACmDWis1OdpZITHEif8pT40NbpkeA5u35UoRbSIbEyYqxiBVxz+nHAnQ== X-Received: by 10.55.178.133 with SMTP id b127mr20629179qkf.170.1485871347764; Tue, 31 Jan 2017 06:02:27 -0800 (PST) Received: from Hermes.local ([216.57.92.130]) by smtp.gmail.com with ESMTPSA id f35sm15318818qtb.49.2017.01.31.06.02.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2017 06:02:26 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 979F186C19D; Tue, 31 Jan 2017 09:02:25 -0500 (EST) To: Leo Liu Cc: emacs-devel@gnu.org Subject: Re: Change in files.el In-Reply-To: (Leo Liu's message of "Tue, 31 Jan 2017 12:19:20 +0800") Date: Tue, 31 Jan 2017 09:01:52 -0500 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Leo Liu , emacs-devel@gnu.org MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:02:32 -0000 >>>>> "LL" == Leo Liu writes: LL> On 2017-01-30 10:58 -0500, John Wiegley wrote: >> Can add-function infer that a -function variable with a value of "nil" is >> equivalent to it having a value of 'ignore? LL> It doesn't make sense for add-function to default to #'ignore. In many LL> cases `nil' of these variables doesn't mean #'ignore. I see, that is a bit unfortunate. The value of having a default would be to know what the default behavior is, without having to track down the logic. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Tue Jan 31 09:22:36 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZKO-0007eH-I3 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:22:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44260) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZKL-0007dL-Oy for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:22:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZKK-0000Np-Py for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:22:33 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:51205) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZKG-0000Lc-8w; Tue, 31 Jan 2017 09:22:28 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cYZK8-0006he-La; Tue, 31 Jan 2017 15:22:22 +0100 From: Lars Ingebrigtsen To: David Engster Cc: Kaushal Modi , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord Subject: Re: Sync up the org in emacs master to org maint branch? References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAKlBMVEWB/v4AAOAAAOMIMfsL e/wFBvo88/0HrP0AAO0IFvsBAN0LUfoAAOgAAP9eAcMbAAABpklEQVQ4jX3SMWuDQBQH8Df1Q5Qu 3ULJdukQHBWkZHaQInQIly8guSFTAgWHZgo3HCFDnIpkM5Dh6JBNAp2CoIPfpXfR04sxfYN4/rh7 /6dCJKsfJEFTc/kI5CX5TAutsnkFYZAzxuiQMsqYp8FueY45H3EzNkeDH7FFwdMyd1zHocylrtxR fD2WkHjFdWUlhEnRhpcLBMsbON2Do4RtcguLCwTt50VxgX47k8wrodcBIi9EidMBzxK6dhwj2AZd MI/gdu4yFoQdaWUs2N2M9y9kp3twhKiGVIuXzSH6VQvGGkgXDeQIsWJTd2+OWhlChg2EFaSIc4TQ poZvdZLBRcWqT1DDmVuWALUlg55qIUAQeq1OBvUO1/sSaLWuwbBsX7Svh1GQ723iu3EzIqgx1gKQ Dl51807IzDA1UKHsKZntzU0HYDzej2gDVQ82wBhPfR7TFhjGVMjkQKzhNQx8LIsQK/Z0cA53wLUJ /gDAY2KZeqqcCgCAhwnxTU+DtLAa2Ohz5Pb0Atj233RwnEM3MHbAJRA/1mHF7RqqjwvyZ09RXAJg X8EfRu0wFrq2O7cAAAAASUVORK5CYII= Date: Tue, 31 Jan 2017 15:22:20 +0100 In-Reply-To: (John Wiegley's message of "Mon, 30 Jan 2017 16:52:22 -0500") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:22:35 -0000 John Wiegley writes: > We're moving toward a future where Emacs.git will represent "core > Emacs", and only contain what core needs (plus a few historical bits, > I'm sure). There should be no argument for keeping a project in core > just to gain auxiliary benefits. I'm massively unenthusiastic about this future. Things in ELPA has to be backwards-and-forwards compatible with a wide Emacs version range, which makes maintaining things much more work. When you develop things in "Emacs core", you have one specific target and can make large internal changes without these considerations. Emacs doesn't seem to have a massive surfeit of developers, so I wonder where this plan comes from. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 31 09:31:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZTC-0006b7-22 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46605) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZT9-0006ZA-Cv for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZT4-0003ZB-GF for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:39 -0500 Received: from [195.159.176.226] (port=55297 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZT4-0003Y6-8O for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:34 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYZSu-0003LU-OF for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:31:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Converting compositions to strings Date: Tue, 31 Jan 2017 09:31:24 -0500 Lines: 12 Message-ID: References: <83a8a8y3s8.fsf@gnu.org> <83y3xswkwf.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:q+3NjL9pXZ0dFWkcntgBJins9wQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:31:40 -0000 > I think if we want to be able to produce text with all the text > properties and overlays expressed explicitly as text, we need to write > a back-end for xdisp.c that "displays" to a buffer. It shouldn't be > hard, the number of interface routines a back-end needs to support is > not large; see 'struct redisplay_interface' in dispextern.h. And IIRC it was mentioned that it would be helpful for some ERT tests (and even more so, if it can render the whole screen, so we can test the appearance of the modeline and headerline as well). Stefan From MAILER-DAEMON Tue Jan 31 09:31:42 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZTC-0006bh-LS for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46607) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZT9-0006ZB-DN for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZT4-0003ZQ-Vy for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:39 -0500 Received: from [195.159.176.226] (port=55335 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZT4-0003Z1-Or for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:31:34 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYZSw-0003QV-KX for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:31:26 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: Docker Hub requires nonfree software to log in Date: Tue, 31 Jan 2017 09:31:25 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 46 Message-ID: <87zii7nvwi.fsf@lifelogs.com> References: <87o9yor53e.fsf@lifelogs.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:E6K5C5Wi9Vgsbc8ZKk/GJflhMPg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:31:40 -0000 On Mon, 30 Jan 2017 22:34:23 -0500 Richard Stallman wrote: >> I think you're confusing two things: Docker Hub as a web site (which >> requires nonfree software to use during *setup*) and Docker Hub as an >> image repository (which requires nothing but Docker itself, it's like a >> package repository with automated builds per package). They may talk to >> the same backend databases, but they are not the same thing. RS> This is the first I heard of the distinction. I think many of us assumed we were talking about the same thing. Sorry if I added to the confusion. RS> A concrete practical question: does it work to prepare and upload RS> images without running nonfree JS code? RS> If so, we can go ahead and upload images. Yes, correct. Just think of it as a package repository with automated builds. You can upload your own package, built locally. That's what we may do for the Guix images, if the Guix developers are interested. >> Building an alternative to Docker Hub is an interesting proposition, but >> not a blocker to this work. RS> That seems to be a misunderstanding -- I didn't propose we do that, RS> only that we distribute our Emacs images from some FSF server. The RS> image is just a file, right? Docker images are distributed as checksummed (and optionally signed) layers, so you don't have to download layers you already have locally. They can also be distributed as archives but that's a lot more expensive because all the layers have to be downloaded. So it's a little more complicated than just serving files. RS> So we can distribute it any way that we distribute other files, right? We can distribute archives as files, but that's suboptimal. We can also set up a FSF Docker repository that serves checksummed signed layers just like Docker Hub. It would be a nice Savannah add-on. But it's not a blocker to putting Emacs on Docker Hub, since the "official GNU Emacs Docker image" can live in multiple places, and the goal is to make it available to the users. Ted From MAILER-DAEMON Tue Jan 31 09:35:24 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYZWm-0000o0-Ql for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 09:35:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47861) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYZWe-0000kR-NE for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:35:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYZWZ-0004v6-R9 for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:35:16 -0500 Received: from [195.159.176.226] (port=60108 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYZWZ-0004uS-K9 for emacs-devel@gnu.org; Tue, 31 Jan 2017 09:35:11 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYZWR-0002V6-SC for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Debugging errors in bytecomp code? Date: Tue, 31 Jan 2017 09:32:28 -0500 Lines: 9 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:0m/UpLX31IewQz2puJAi3Ukxi/U= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 14:35:23 -0000 > Is there a way to enter the debugger when a error in bytecomp code > itself is encountered? Right now, all errors including compilation ones > are printed to the *Compile-Log* buffer, making it impossible to get > a backtrace for internal compiler errors. (setq byte-compiler-debug t) ? Stefan From MAILER-DAEMON Tue Jan 31 10:08:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYa3D-0001tZ-77 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:08:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYa37-0001pZ-54 for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:08:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYa33-0007rc-3M for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:08:49 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34539) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYa2x-0007qF-4O; Tue, 31 Jan 2017 10:08:39 -0500 Received: by mail-qt0-x242.google.com with SMTP id w20so26723046qtb.1; Tue, 31 Jan 2017 07:08:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version; bh=LTXDkWNCrfEvr64vnz3A1bQwgwd+znsEP2Nk9vuOHcA=; b=nAZg9ZodZvLe+a1HIocfXm+LvsQNK5G3mdCPQBuUGOafoFiq/uCCkqnVwRY+1rVFzR Qh2xoJJzkFnBeAAmzHr0vQzbqHZxAxXnI/H6+doi9LHGweKR7MaJBlUDDQeIU3ZnrINN 78JKFwv+kmq+fvyg5ZH6s0UaCxVrGRoVYLg44nxBYrWcwtP0p9xzBstLoLVJzJrBXV6x EICz3cNo5Klefz5Lzh1VqXSQYgBbD+tLI0p8jaN1BXzAvPE0/FNHlwyMkLObi/IlfaQq /5G+/zcY8s7BEC0CD/2slUKpAn1XRbJ3sf0XdgRpJ/lcaPT7narWQ7Q5m6w9xioszWV3 KYHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id :references:user-agent:mail-followup-to:mime-version; bh=LTXDkWNCrfEvr64vnz3A1bQwgwd+znsEP2Nk9vuOHcA=; b=sCIEvDzjkvMAxzYC/56uwwSG9XW0yo6NSvLuKESE7mooExo6jdj8YssmKtWBCSisYF ioiIxhmZ6cEzHzfFXIPAsAYjUI/Zqb/brQyRbACpZwZryY50N+hoYr/ZK6PKm/rfJrEi 1THgQFu09KAW10u73lRc0bDl0Yn/Wo26n3YlIxAQQuK4o7HcmA2tOy+CAX0PYIAUiZKA vP7/skQgTUHBCVdYtRrEVOBJuuY6+JG6WhiFtCOATmN49rLrxLf+lEeRzj1BOIum2yFz YnLIPEQFpqMEaKqaGfR2CJvGNJioI1HkbfQk/qvbjSNangQoyr9vTAQIddp6DyklecZL RMRQ== X-Gm-Message-State: AIkVDXKV5yGJcjKpL5hI7OwM1yGP4gZwCxK5DYdJ7Kj0Kvlo1OaibUyjb6wHni9O8cc2UA== X-Received: by 10.200.56.211 with SMTP id g19mr25135243qtc.177.1485875318496; Tue, 31 Jan 2017 07:08:38 -0800 (PST) Received: from Hermes.local (125.sub-174-192-22.myvzw.com. [174.192.22.125]) by smtp.gmail.com with ESMTPSA id h124sm15529469qke.40.2017.01.31.07.08.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2017 07:08:37 -0800 (PST) From: John Wiegley X-Google-Original-From: "John Wiegley" Received: by Hermes.local (Postfix, from userid 501) id 7620C86C9D1; Tue, 31 Jan 2017 10:08:36 -0500 (EST) To: Lars Ingebrigtsen Cc: David Engster , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (Lars Ingebrigtsen's message of "Tue, 31 Jan 2017 15:22:20 +0100") Date: Tue, 31 Jan 2017 10:08:33 -0500 Message-ID: References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> User-Agent: Gnus/5.130016 (Ma Gnus v0.16) Emacs/25.1.91 (darwin) Mail-Followup-To: Lars Ingebrigtsen , David Engster , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::242 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:08:53 -0000 >>>>> "LI" == Lars Ingebrigtsen writes: LI> I'm massively unenthusiastic about this future. Things in ELPA has to be LI> backwards-and-forwards compatible with a wide Emacs version range, which LI> makes maintaining things much more work. When you develop things in "Emacs LI> core", you have one specific target and can make large internal changes LI> without these considerations. So far, all of these arguments against a tighter development integration with ELPA have been predicated on the way that ELPA is used today. ELPA is under our control; we can adjust our process to suit the needs of Emacs development. LI> Emacs doesn't seem to have a massive surfeit of developers, so I wonder LI> where this plan comes from. It comes from the desire to decouple the development of large, mostly external projects, from core Emacs. They don't belong in Emacs.git. -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2 From MAILER-DAEMON Tue Jan 31 10:15:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYa9Z-0007JR-Gz for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:15:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57286) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYa9X-0007HK-4l for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:15:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYa9W-000125-03 for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:15:27 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:52631) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYa9R-00010N-Dm; Tue, 31 Jan 2017 10:15:21 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cYa9H-0000Bh-TZ; Tue, 31 Jan 2017 16:15:15 +0100 From: Lars Ingebrigtsen To: David Engster Cc: Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAKlBMVEWB/v4AAOAAAOMIMfsL e/wFBvo88/0HrP0AAO0IFvsBAN0LUfoAAOgAAP9eAcMbAAABpklEQVQ4jX3SMWuDQBQH8Df1Q5Qu 3ULJdukQHBWkZHaQInQIly8guSFTAgWHZgo3HCFDnIpkM5Dh6JBNAp2CoIPfpXfR04sxfYN4/rh7 /6dCJKsfJEFTc/kI5CX5TAutsnkFYZAzxuiQMsqYp8FueY45H3EzNkeDH7FFwdMyd1zHocylrtxR fD2WkHjFdWUlhEnRhpcLBMsbON2Do4RtcguLCwTt50VxgX47k8wrodcBIi9EidMBzxK6dhwj2AZd MI/gdu4yFoQdaWUs2N2M9y9kp3twhKiGVIuXzSH6VQvGGkgXDeQIsWJTd2+OWhlChg2EFaSIc4TQ poZvdZLBRcWqT1DDmVuWALUlg55qIUAQeq1OBvUO1/sSaLWuwbBsX7Svh1GQ723iu3EzIqgx1gKQ Dl51807IzDA1UKHsKZntzU0HYDzej2gDVQ82wBhPfR7TFhjGVMjkQKzhNQx8LIsQK/Z0cA53wLUJ /gDAY2KZeqqcCgCAhwnxTU+DtLAa2Ohz5Pb0Atj233RwnEM3MHbAJRA/1mHF7RqqjwvyZ09RXAJg X8EfRu0wFrq2O7cAAAAASUVORK5CYII= Date: Tue, 31 Jan 2017 16:15:11 +0100 In-Reply-To: (John Wiegley's message of "Tue, 31 Jan 2017 10:08:33 -0500") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:15:28 -0000 John Wiegley writes: > So far, all of these arguments against a tighter development integration with > ELPA have been predicated on the way that ELPA is used today. ELPA is under > our control; we can adjust our process to suit the needs of Emacs development. Yes, but external packages lose much of their value if they aren't developed in a compatible manner. > LI> Emacs doesn't seem to have a massive surfeit of developers, so I wonder > LI> where this plan comes from. > > It comes from the desire to decouple the development of large, mostly external > projects, from core Emacs. They don't belong in Emacs.git. But you're talking about coupling ELPA tighter with core Emacs, too. "They don't belong" isn't really much of an argument here. The question is: What is the most effective way for Emacs developers to spend their time? I can't really see that anybody has made the case that shifting stuff from Emacs core to ELPA will mean less work for... well, anybody. (Except perhaps CEDET. There seems to be a lot of merging problems there.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 31 10:32:04 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYaPa-0005WF-Py for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:32:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYaPY-0005Sq-AO for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:32:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYaPX-0004mH-EE for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:32:00 -0500 Received: from randomsample.de ([5.45.97.173]:41472) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYaPO-0004kG-QZ; Tue, 31 Jan 2017 10:31:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=TJ+lzdrh4BMjOCp6Iz6txC6H0rBxieiba1SDyytyrWk=; b=p8twJuPLaAYabpFAHrB+o0ULbb/7cQ4+XtWG6zvuCnBpXiyRhiGwkxS6dN7so8URmbYc9zhDzPrdJWEQRW3JcmBYgHOYujvrB/RnENstK3n2KRwVRStFfSd/ekVz0kt+; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cYaPL-0005IA-Qk; Tue, 31 Jan 2017 16:31:47 +0100 From: David Engster To: Lars Ingebrigtsen Cc: Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (Lars Ingebrigtsen's message of "Tue, 31 Jan 2017 16:15:11 +0100") References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 31 Jan 2017 16:31:37 +0100 Message-ID: <87h94f6yau.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:32:01 -0000 Lars Ingebrigtsen writes: > The question is: What is the most effective way for Emacs developers to > spend their time? I can't really see that anybody has made the case > that shifting stuff from Emacs core to ELPA will mean less work for... > well, anybody. > > (Except perhaps CEDET. There seems to be a lot of merging problems > there.) This is precisely why we're currently moving all development to Emacs and abandon the external repo. At least we were planning to... -David From MAILER-DAEMON Tue Jan 31 10:33:38 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYaR8-0006xh-3W for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:33:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYaR2-0006up-Gl for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:33:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYaQy-00058W-Kk for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:33:32 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:53296) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYaQs-00056o-CU; Tue, 31 Jan 2017 10:33:22 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cYaQn-0006Dm-E4; Tue, 31 Jan 2017 16:33:19 +0100 From: Lars Ingebrigtsen To: David Engster Cc: Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> <87h94f6yau.fsf@engster.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAKlBMVEWB/v4AAOAAAOMIMfsL e/wFBvo88/0HrP0AAO0IFvsBAN0LUfoAAOgAAP9eAcMbAAABpklEQVQ4jX3SMWuDQBQH8Df1Q5Qu 3ULJdukQHBWkZHaQInQIly8guSFTAgWHZgo3HCFDnIpkM5Dh6JBNAp2CoIPfpXfR04sxfYN4/rh7 /6dCJKsfJEFTc/kI5CX5TAutsnkFYZAzxuiQMsqYp8FueY45H3EzNkeDH7FFwdMyd1zHocylrtxR fD2WkHjFdWUlhEnRhpcLBMsbON2Do4RtcguLCwTt50VxgX47k8wrodcBIi9EidMBzxK6dhwj2AZd MI/gdu4yFoQdaWUs2N2M9y9kp3twhKiGVIuXzSH6VQvGGkgXDeQIsWJTd2+OWhlChg2EFaSIc4TQ poZvdZLBRcWqT1DDmVuWALUlg55qIUAQeq1OBvUO1/sSaLWuwbBsX7Svh1GQ723iu3EzIqgx1gKQ Dl51807IzDA1UKHsKZntzU0HYDzej2gDVQ82wBhPfR7TFhjGVMjkQKzhNQx8LIsQK/Z0cA53wLUJ /gDAY2KZeqqcCgCAhwnxTU+DtLAa2Ohz5Pb0Atj233RwnEM3MHbAJRA/1mHF7RqqjwvyZ09RXAJg X8EfRu0wFrq2O7cAAAAASUVORK5CYII= Date: Tue, 31 Jan 2017 16:33:17 +0100 In-Reply-To: <87h94f6yau.fsf@engster.org> (David Engster's message of "Tue, 31 Jan 2017 16:31:37 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:33:36 -0000 David Engster writes: >> (Except perhaps CEDET. There seems to be a lot of merging problems >> there.) > > This is precisely why we're currently moving all development to Emacs > and abandon the external repo. At least we were planning to... Oh, great. One less thing that would be helped by moving to ELPA. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 31 10:44:09 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYabJ-00083x-Jf for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:44:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYabC-0007yJ-IN for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:44:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYab9-0007yH-T1 for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:44:02 -0500 Received: from [195.159.176.226] (port=43281 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYab9-0007xS-Mt for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:43:59 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYZkx-0001J5-6P for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:50:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-devel@gnu.org From: Stefan Monnier Subject: Re: Change in files.el Date: Tue, 31 Jan 2017 09:46:19 -0500 Lines: 9 Message-ID: References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) Cancel-Lock: sha1:TO3rNEiWAXqCkPRrvbElKWM1bTk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:44:08 -0000 > Can add-function infer that a -function variable with a value of "nil" is > equivalent to it having a value of 'ignore? As Leo pointed out, in 99% of the cases, nil is not equivalent to `ignore' in those variables. And if it were, then what would be the benefit to use nil instead of using `ignore' as the default value? Stefan From MAILER-DAEMON Tue Jan 31 10:45:59 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYad5-0001LO-Jv for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:45:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36453) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYad0-0001HD-TG for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:45:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYad0-0008Ky-38 for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:45:54 -0500 Received: from randomsample.de ([5.45.97.173]:41612) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYacs-0008Ir-Co; Tue, 31 Jan 2017 10:45:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=Vkotiw5yNc3yTIZ13fsWgkz4k1sldCkA17NI56hPN0o=; b=dskF6zt3caHuJCii6Q1srH9Y+r0vSDjGoMKhA1k2tyge8J1uGYFDtDPYMeM90MaGlTlc4OC4gIIWDs4Rn5tgch7YtedUkk7l9DrNHALIuG3RmJHterCa8gRuormdR/tz; Received: from ip4d16b353.dynamic.kabel-deutschland.de ([77.22.179.83] helo=isaac) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1cYacq-0005R0-Lb; Tue, 31 Jan 2017 16:45:44 +0100 From: David Engster To: Kaushal Modi Cc: Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: (John Wiegley's message of "Mon, 30 Jan 2017 16:52:22 -0500") References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Date: Tue, 31 Jan 2017 16:45:43 +0100 Message-ID: <87d1f36xnc.fsf@engster.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 5.45.97.173 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:45:58 -0000 John Wiegley writes: >>>>>> "DE" == David Engster writes: > > DE> It is a mistake because you are creating more moving targets and bring > DE> them together very late in the release process. This reduces the amount of > DE> testing that is done for those packages, so bugs will be noticed later and > DE> the quality of the relases suffer. It moves even more work into the > DE> RC-phase, which is already crowded and where people who can fix those bugs > DE> might not be readily available. It removes those packages from Emacs CI, > DE> so that breakages due to changes in core are not immediately noticed, and > DE> often times they have to be fixed not by those who created the breakage, > DE> but by those who notice them. > > These are issues to be fixed in the way ELPA integrates with our development > process. I recognize today's ELPA may have these drawbacks, but I believe they > can be fixed. This really has not much to do with how ELPA works. My points above are about the underlying concept you are proposing: moving packages out of Emacs core and hence removing them from current Emacs development, but still bundling them with the release. It's a have-and-eat-cake concept. > We're moving toward a future where Emacs.git will represent "core Emacs", and > only contain what core needs (plus a few historical bits, I'm sure). There > should be no argument for keeping a project in core just to gain auxiliary > benefits. Of the points I raise above, which fall under "just to gain auxiliary benefits"? I'm honestly confused. I'm specifically talking about the quality of the Emacs relases. Also, I currently have no idea how to continue with CEDET, as the future where development should happen is unclear, and I get the feeling we're just waisting our time with the ongoing merge. -David From MAILER-DAEMON Tue Jan 31 10:49:19 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYagJ-0004AX-J6 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:49:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37379) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYagG-00048O-4t for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:49:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYagD-00012u-1M for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:49:16 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49038) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYagC-00012q-Tf; Tue, 31 Jan 2017 10:49:12 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4910 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYagB-0003EB-2U; Tue, 31 Jan 2017 10:49:12 -0500 Date: Tue, 31 Jan 2017 17:48:45 +0200 Message-Id: <83fujzw7qa.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> (message from Paul Eggert on Mon, 30 Jan 2017 13:52:46 -0800) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Reply-to: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> <8337g0y34h.fsf@gnu.org> <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:49:18 -0000 > Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org > From: Paul Eggert > Date: Mon, 30 Jan 2017 13:52:46 -0800 > > I don't understand why we need both this and > emacs_read, which cannot be interrupted. Why not have just emacs_read > which can be interrupted, and use that all over? > > For example, filelock.c's read_lock_data opens a file, uses emacs_read to read it, and then closes the file. If read_lock_data used emacs_read_quit it might process a quit, which would skip the close and leak a file descriptor. > > The read_lock_data issue could be fixed by having it call record_unwind_protect_int (close_file_unwind, fd) before calling emacs_read. Possibly all these dicey uses of emacs_read could be fixed in a similar way. However, that would be a bigger and more-intrusive change, and in the read_lock_data case it arguably would be overkill and I wanted to keep the patch smaller. I used emacs_read_quit only in places that I verified were safe, and stuck with emacs_read when I wasn't sure, or where more-intrusive changes would be needed. I indeed think that we should make emacs_read support quitting, and add unwind_protect calls where we currently don't. This should be safer in the long run, and also simpler. As for overhead, operations like locking a file should indeed normally be very fast, but could take perceptible time in some exceptional conditions, like networked volumes or high I/O load, in which case users may wish to interrupt that. But yes, this could be done as a separate changeset. > @@ -1252,6 +1256,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, > ptrdiff_t pos_byte, > return (n); > } > n++; > + maybe_quit (); > } > while (n > 0) > { > regex.c calls maybe_quit internally, so why do we need this additional > call? > > The regex code does not always call maybe_quit. For example, without this additional call, (re-search-forward "[[:alpha:]]" nil nil most-positive-fixnum) would loop indefinitely in a buffer containing only alphabetic characters on a 64-bit platform. Then maybe we should add maybe_quit calls in regex.c instead? Currently, immediate_quit is non-zero all the time re_search_2 runs, so on a TTY a C-g will can stop regex.c in its tracks anywhere. I thought we wanted to make GUI sessions as responsive as TTY sessions. > @@ -724,6 +725,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, > ptrdiff_t stop, > that determines quote parity to the comment-end. */ > while (from != stop) > { > + incr_rarely_quit (&quit_count); > + > > Is it safe to quit from back_comment? It manipulates a global > variable gl_state, and I don't see unwind-protect calls anywhere in > sight. > > It should be OK. The current master sets immediate_quit=true in back_comment's callers (both scan_lists and Fforward_comment), so current master already lets back_comment quit. Yes, but that is why we have gl_state-related dance in handle_interrupt, and your changes delete that part. > If Emacs quits in back_comment, it should longjmp to code that reinitializes gl_state before using it. But unwinding the Lisp stack could run some Lisp that uses syntax.c functions, before we longjmp, right? > This also applies to the other places you mentioned. The idea is to insert maybe_quit calls in code that was already subject to immediate_quit=true in the current master, so it should be safe to quit. That assumes all the immediate_quit=true settings were safe. Previously, they were only in effect on TTY frames, whereas now the maybe_quit calls will be in effect everywhere, so their exposure to various use cases will be much wider. That's why I think it's prudent to take a good look at these places while we make these changes. But I don't feel I know enough about this aspect of syntax.c. Stefan, can you comment on this, please? > @@ -10445,30 +10433,12 @@ handle_interrupt (bool in_signal_handler) > } > else > { > - /* If executing a function that wants to be interrupted out of > - and the user has not deferred quitting by binding `inhibit-quit' > - then quit right away. */ > - if (immediate_quit && NILP (Vinhibit_quit)) > - { > - struct gl_state_s saved; > - > - immediate_quit = false; > - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); > - saved = gl_state; > - quit (); > - gl_state = saved; > - } > - else > - { /* Else request quit when it's safe. */ > - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > - force_quit_count = count; > - if (count == 3) > - { > - immediate_quit = true; > - Vinhibit_quit = Qnil; > - } > - Vquit_flag = Qt; > - } > + /* Request quit when it's safe. */ > + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > + force_quit_count = count; > + if (count == 3) > + Vinhibit_quit = Qnil; > + Vquit_flag = Qt; > } > > This loses the feature whereby C-g on a TTY would quit much faster. > Why is this a good idea? > > Speed is not a problem, as C-g (with the proposed changes) should quit just as fast on a TTY as it already does under X, and it's been working that way under X for some time. No, it will be slower. A signal handler will always react faster than any solution based on polling. A signal handler is also capable of interrupting calls to standard C library functions. It is true that we already have this issue on GUI frames, but I still feel uneasy about losing this feature. TTY frames are still quite popular, even today, in particular for remote sessions. What do others think about this? > And if it is a good idea, why do we still > generate SIGINT on C-g (and force GDB to handle SIGINT specially to > support that)? > > Inertia, I think. Having C-g generate SIGINT made sense when we had immediate_quit. I expect that it is a useless appendage now, and that in a later patch we can change Emacs so that C-g no longer generates SIGINT but is instead processed like any other input character. No, I don't think we can remove the SIGINT generation: if we do, there will be nothing to set the quit-flag on TTY frames. Also, the "emergency exit" feature is also based on SIGINT. The new patches still include both rarely_quit and incr_rarely_quit (in the second patchset), which I thought you decided to remove. Did you send the correct patches? Thanks. From MAILER-DAEMON Tue Jan 31 10:52:35 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYajT-0006Ye-02 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 10:52:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYajQ-0006XJ-Gi for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:52:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYajN-0001my-GI for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:52:32 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:34682) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYajN-0001mh-9Z for emacs-devel@gnu.org; Tue, 31 Jan 2017 10:52:29 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 339F12051D; Tue, 31 Jan 2017 10:52:27 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute5.internal (MEProxy); Tue, 31 Jan 2017 10:52:27 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=secretsauce.net; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=OGD4Ro3RwlhmHIfTQurBZipB0mc=; b=QSTKlC n+qSmeZ684mBk30agUVdTLxv9+//AUXD7LqINvT0KjmfZI6H5pexp9htfwBrHT8N e24hqAnhV0HCtfbvAIe3oMdKZAYM7jR/2u34faWpWfWAqBcwJj83dcvvyyXPNNVa Z28ZM36OEFTuC0LbTiw7ELnYurVOdC5APsT7o= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=OGD4Ro3RwlhmHI fTQurBZipB0mc=; b=IyVxzTrACTRjKj1dTKwWqxyaFtkgUEclVO+8/jpmW3QMaI 0IDG5h+nXVxZ9pmgAudSXQAoubVBmgJifKY9cgi+xetT5vNwcPM61AEsymZSpBYD Hs60rybr39YPrJzgQji7TDxHz7AiT2nNodwnLoqZ39W3sBToQdEnNtr5L6vek= X-ME-Sender: X-Sasl-enc: iqrh3ZXa74PrBFx+wGpLm0Mb/1g1XRl2+qmanzMnaeOo 1485877946 Received: from scrawny (50-1-153-216.dsl.dynamic.fusionbroadband.com [50.1.153.216]) by mail.messagingengine.com (Postfix) with ESMTPA id DC3AE7E65B; Tue, 31 Jan 2017 10:52:26 -0500 (EST) Received: from dima by scrawny with local (Exim 4.88) (envelope-from ) id 1cYajJ-0005r9-5U; Tue, 31 Jan 2017 07:52:25 -0800 References: <20170131080330.5905.82666@vcs.savannah.gnu.org> <20170131080330.F300522017C@vcs.savannah.gnu.org> User-agent: mu4e 0.9.19; emacs 26.0.50.1 From: Dima Kogan To: Stefan Monnier Cc: emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master f3c77d1 2/2: stash In-reply-to: Date: Tue, 31 Jan 2017 07:52:25 -0800 Message-ID: <87y3xruszq.fsf@secretsauce.net> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 15:52:33 -0000 Stefan Monnier writes: > Hmm? Did you really mean to commit this? > If so, there's a problem with the commit message, Crap. The last two commits were errors: I pushed the wrong branch. Pushing a revert. Sorry. From MAILER-DAEMON Tue Jan 31 11:21:29 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbBR-0007kX-2C for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 11:21:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45301) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbBP-0007im-1F for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:21:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbBO-0000hd-4K for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:21:27 -0500 Received: from mail-vk0-x22f.google.com ([2607:f8b0:400c:c05::22f]:34974) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYbBN-0000hZ-WD for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:21:26 -0500 Received: by mail-vk0-x22f.google.com with SMTP id x75so240362487vke.2 for ; Tue, 31 Jan 2017 08:21:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=pZ17HkTFH5+FBgWNh3zqO3f45l/v1wb6pJi8ZK+yKRI=; b=GjviiSymzl//1qQoQH+L73rD42CsaVFs+oGfi0JZgH+LCrM127sLaKfu6mh373S9o4 AG6SkAVepZUPUlOHGRKh9PktdCTvb0J6N4tuCiC/ZoOpUWRPt2y4wdilJG1OLgZ8TWf+ BhPLuoTPW0VY9KpsWMYrUm0NPzPi5uQNZFJILrsSyLlYs/H0peXl9KcoMlAW/p6E/pO6 3wdTsTa3i7mxucu0minoWlQqN7AvSMa7ikkyCihP9EOyvoeza1MjS7vzLMguvGW+uQhT lcbuXo/tfRRVTwL4ofsU7CfcjzTX4ng2jvdkezVb6aZasRDC2YSrUCs9x+6Q7QTU3VW1 GAZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=pZ17HkTFH5+FBgWNh3zqO3f45l/v1wb6pJi8ZK+yKRI=; b=s5TDAAhPRqRsIj3ET1NmUicih4seYlLD9DIvE5hS+m2h5nCn0zKJfhke1vBar+Uaf3 Vhf3M+wQW/bq24TBY41whmr7aZsyQvUEycEuTJlDHuCuVQvgo4vI1Ek+sHHxh7Ep/EgG 3UY5lRd5Vu0t2lQ4iNPS3eNoGGKAJViVrQ6ryyDnIu1iY6BUCIje7PNs+GsyyPqJzRqS WbvyIMEEppkmJcxNubOU/pcp1hdzQ1NrqYUShPr9XNBDn4BzBb+T9pvpTyubVfLjtjX5 2e9zFIvuaV8gU6MdD2T+WZvEHknpNU5s4v51WLE6mlfgG9m2JQ5KSHfdqL8rGI6Bo6FR 1hpw== X-Gm-Message-State: AIkVDXIKurUr1SgI34ofKZdamL73vYYRsxz1IEvb3wgbRdrQgMVV24RCYVNcxg3G/ydJL8o4zxs9MhDP8FeoqA== X-Received: by 10.31.62.71 with SMTP id l68mr13547898vka.175.1485879685088; Tue, 31 Jan 2017 08:21:25 -0800 (PST) MIME-Version: 1.0 References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> In-Reply-To: From: Kaushal Modi Date: Tue, 31 Jan 2017 16:21:14 +0000 Message-ID: Subject: Re: Change in files.el To: Stefan Monnier , emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=001a11447a54cf0ceb05476652f4 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c05::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 16:21:28 -0000 --001a11447a54cf0ceb05476652f4 Content-Type: text/plain; charset=UTF-8 Just a data point from a user: I would appreciate the consistency of variables named with -function/-predicate suffixes to have a function has a default value. Being able to use add-function on just variables is very convenient (I use it to tweak region-extract-function). The default values also serve as good examples. On Tue, Jan 31, 2017 at 10:54 AM Stefan Monnier wrote: > Can add-function infer that a -function variable with a value of "nil" is > equivalent to it having a value of 'ignore? As Leo pointed out, in 99% of the cases, nil is not equivalent to `ignore' in those variables. And if it were, then what would be the benefit to use nil instead of using `ignore' as the default value? --001a11447a54cf0ceb05476652f4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Just a data point fro= m a user:

I would appreciate the consistency of variables named with -= function/-predicate suffixes to have a function has a default value. Being = able to use add-function on just variables is very convenient (I use it to = tweak region-extract-function). The default values also serve as good examp= les.

> Can add-func= tion infer that a -function variable with a value of "nil" is
> equivalent to it having a value of 'ignore?

As Leo pointed out, in 99% of the cases, nil is not equivalent to
`ignore' in those variables.=C2=A0 And if it were, then what would be t= he
benefit to use nil instead of using `ignore' as the default value?

--001a11447a54cf0ceb05476652f4-- From MAILER-DAEMON Tue Jan 31 11:31:48 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbLP-0001lA-7d for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 11:31:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48480) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbLM-0001jB-Km for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:31:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbLH-0003LY-LT for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:31:44 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:60469) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYbLD-0003Kn-RT; Tue, 31 Jan 2017 11:31:35 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0B8PAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZZehhwEAgKCEUQQAQIBAQEBAQEBYihCEgGEFAEEAVYjEAs0EhQYDSSIegitFItEAQEBAQYCASSLGYopBY98imqbGoY6kg82IHgTDoVzIIYxgnwBAQE X-IPAS-Result: A0B8PAAu3EVY/0gvq8BdGwEBAQMBAQEJAQEBgzgBAQEBAR+EW4VUnAImAZZehhwEAgKCEUQQAQIBAQEBAQEBYihCEgGEFAEEAVYjEAs0EhQYDSSIegitFItEAQEBAQYCASSLGYopBY98imqbGoY6kg82IHgTDoVzIIYxgnwBAQE X-IronPort-AV: E=Sophos;i="5.33,749,1477972800"; d="scan'208";a="291663570" Received: from 192-171-47-72.cpe.pppoe.ca (HELO pastel.home) ([192.171.47.72]) by smtp.teksavvy.com with ESMTP; 31 Jan 2017 11:31:33 -0500 Received: by pastel.home (Postfix, from userid 20848) id 9629165786; Tue, 31 Jan 2017 11:31:33 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Cc: Paul Eggert , emacs-devel@gnu.org Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Message-ID: References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> <8337g0y34h.fsf@gnu.org> <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> <83fujzw7qa.fsf@gnu.org> Date: Tue, 31 Jan 2017 11:31:33 -0500 In-Reply-To: <83fujzw7qa.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 31 Jan 2017 17:48:45 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 16:31:45 -0000 >>> regex.c calls maybe_quit internally, so why do we need this >>> additional call? >> >> The regex code does not always call maybe_quit. For example, without >> this additional call, (re-search-forward "[[:alpha:]]" nil nil >> most-positive-fixnum) would loop indefinitely in a buffer containing >> only alphabetic characters on a 64-bit platform. > > Then maybe we should add maybe_quit calls in regex.c instead? FWIW, in the case or (re-search-forward "[[:alpha:]]" nil nil most-positive-fixnum) the regexp matches themselves are constant-time operations, repeated in search.c, so it makes sense to put the maybe_quit in search.c rather than in regexp.c. Clearly both options will/would work, but I think the general design of maybe_quit is that we should not need to put one in code whose runtime is constant. IOW the maybe_quit calls should be on the backward-edges of loops which means that running a loop a single time may but does not need to call maybe_quit. Stefan From MAILER-DAEMON Tue Jan 31 11:51:05 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbe4-0002jf-QZ for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbdz-0002f1-CG for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbdy-0000sN-L0 for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:50:59 -0500 Received: from mail-yb0-x235.google.com ([2607:f8b0:4002:c09::235]:33656) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYbdy-0000rb-Gx for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:50:58 -0500 Received: by mail-yb0-x235.google.com with SMTP id w194so230001818ybe.0 for ; Tue, 31 Jan 2017 08:50:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=TNQ4HMheTK3/sJA8TNntLWomb9EL6Laq3ttCxWe2ps0=; b=oKAJ+ezDUeP08xR1zXz1jl+BEMbUXgX/hzNgTAf0ogaf9L6Rz6BH4gCVyvS9tWEy1u CYCm8+3EI9XsA3TWUQMhsASqliWUBRhGV75NoP6jfYYWNAMH9tnYzd1D1C8CNWtBJDIi S45ovl9wMJRgLmTJRPZuruAZ2mgUmrck3X/o2ZDbKBJ0BZZAMDrIS3OP/o6DAjN3AhzS lqQt352v6c17q0epmmtfdgmZneGxqp08H1XDB6kb87jjk6llQgI2Vuoh/GNphbKjZucV p/gOSF2gxv48mJMkAuP8qV4WbsQa8mxYHj/AyCK53u9MsAwFEexcW5x/XPKJYSCf0Nfd HUPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=TNQ4HMheTK3/sJA8TNntLWomb9EL6Laq3ttCxWe2ps0=; b=QaLzmxqaykASgHgErIE4Qq8Z9goSab5TdyLu5vo9HBLV2PMOnqBJ6PSpUtutDtpPXw NcwLk6vtFKF8jrJAVyQBR1Raqyd83q2/4LjmVQ4mmLR19x5tPCLCY5AT0UnKpagMJaip NA15cUNKUdUAgQx+U43pSV2L818ztKc0I0b8PnTlbiPXBdCrXawUUjbZLYfn/mKOrf8J Lim9FVIX25p0Z3myGpXCtJZBmCHPtGMCS1x3Im5nrEiIYPBDSWaC+WfWn5SB5XZfKXPv ROvB0mP+fCVum0X8j0vxGzjJcOnB/lDZL5K3vj90UFdOUde0d5u9RkpO/+60uNpKmRSa ix1g== X-Gm-Message-State: AIkVDXLj5vhxAAyoi3bQPs49eFlPSdTy8wYIVVmeEs44JeJOJQ9Hu35+p+RAxsTWw+MkFqaAnyzTGkz2zG6DFw== X-Received: by 10.129.174.90 with SMTP id g26mr21713591ywk.25.1485881457492; Tue, 31 Jan 2017 08:50:57 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.153.77 with HTTP; Tue, 31 Jan 2017 08:50:56 -0800 (PST) In-Reply-To: References: From: Vibhav Pant Date: Tue, 31 Jan 2017 22:20:56 +0530 Message-ID: Subject: Re: Debugging errors in bytecomp code? To: Stefan Monnier Cc: "emacs-devel@gnu.org" Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 16:51:03 -0000 ah, thanks. On Tue, Jan 31, 2017 at 8:02 PM, Stefan Monnier wrote: >> Is there a way to enter the debugger when a error in bytecomp code >> itself is encountered? Right now, all errors including compilation ones >> are printed to the *Compile-Log* buffer, making it impossible to get >> a backtrace for internal compiler errors. > > (setq byte-compiler-debug t) ? > > > Stefan > > -- Vibhav Pant vibhavp@gmail.com From MAILER-DAEMON Tue Jan 31 11:51:54 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbes-0003MQ-Jw for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53333) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbep-0003K6-U3 for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbem-0001dY-Sq for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:52 -0500 Received: from hermes.netfonds.no ([80.91.224.195]:46482) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYbem-0001XK-MU for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:51:48 -0500 Received: from cm-84.215.1.64.getinternet.no ([84.215.1.64] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1cYbeh-00026b-0D; Tue, 31 Jan 2017 17:51:45 +0100 From: Lars Ingebrigtsen To: David Engster Cc: emacs-devel@gnu.org Subject: Re: CEDET Merge References: <87r348ul9n.fsf@gmail.com> <87lgugm2qg.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> <874m0k1age.fsf@engster.org> <8760kzo7vp.fsf@gmail.com> <87o9yp8s9p.fsf@engster.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAKlBMVEWB/v4AAOAAAOMIMfsL e/wFBvo88/0HrP0AAO0IFvsBAN0LUfoAAOgAAP9eAcMbAAABpklEQVQ4jX3SMWuDQBQH8Df1Q5Qu 3ULJdukQHBWkZHaQInQIly8guSFTAgWHZgo3HCFDnIpkM5Dh6JBNAp2CoIPfpXfR04sxfYN4/rh7 /6dCJKsfJEFTc/kI5CX5TAutsnkFYZAzxuiQMsqYp8FueY45H3EzNkeDH7FFwdMyd1zHocylrtxR fD2WkHjFdWUlhEnRhpcLBMsbON2Do4RtcguLCwTt50VxgX47k8wrodcBIi9EidMBzxK6dhwj2AZd MI/gdu4yFoQdaWUs2N2M9y9kp3twhKiGVIuXzSH6VQvGGkgXDeQIsWJTd2+OWhlChg2EFaSIc4TQ poZvdZLBRcWqT1DDmVuWALUlg55qIUAQeq1OBvUO1/sSaLWuwbBsX7Svh1GQ723iu3EzIqgx1gKQ Dl51807IzDA1UKHsKZntzU0HYDzej2gDVQ82wBhPfR7TFhjGVMjkQKzhNQx8LIsQK/Z0cA53wLUJ /gDAY2KZeqqcCgCAhwnxTU+DtLAa2Ohz5Pb0Atj233RwnEM3MHbAJRA/1mHF7RqqjwvyZ09RXAJg X8EfRu0wFrq2O7cAAAAASUVORK5CYII= Date: Tue, 31 Jan 2017 17:51:42 +0100 In-Reply-To: <87o9yp8s9p.fsf@engster.org> (David Engster's message of "Sun, 29 Jan 2017 22:34:26 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 16:51:53 -0000 David Engster writes: >> Alright. Out of interest: is there a command for generating all of the >> entries for a commit range? I'm only aware of C-x 4 a >> (add-change-log-entry-other-window) which seems to generate a change log >> entry for the current file and only for the latest commit. > > You can use 'C-x 4 A' in a diff buffer. I usually do this: > > . Do 'M-x vc-dir' and choose repository > > . Hit 'D' to create a diff for the directory you want to create a > ChangeLog for > > . Hit 'C-X 4 A' Oh, nice! Thanks. Didn't know about that one... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From MAILER-DAEMON Tue Jan 31 11:57:46 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbkY-00010r-LE for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 11:57:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbkW-0000yl-Ay for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:57:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbkR-0005DI-In for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:57:44 -0500 Received: from [195.159.176.226] (port=36941 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYbkR-0005D8-CW for emacs-devel@gnu.org; Tue, 31 Jan 2017 11:57:39 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYZWT-0002Y0-Iw for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:05 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: official Emacs Docker image Date: Tue, 31 Jan 2017 09:32:57 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 9 Message-ID: <87vasvnvty.fsf@lifelogs.com> References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> <87k29cmq1u.fsf@elephly.net> <8737g0qw7z.fsf@lifelogs.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:RwSnNkIhbCY3J7z87O7UOX+5Lpw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 16:57:45 -0000 On Mon, 30 Jan 2017 22:14:46 -0200 Filipe Silva wrote: FS> https://hub.docker.com/r/gnuemacs/emacs/ is giving me http 404. Is that the FS> correct address? Create a Docker Hub account and let me know what it is. I'll add you to the owners so you can upload the image. Ted From MAILER-DAEMON Tue Jan 31 12:00:32 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYbnD-0003Kh-RZ for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 12:00:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55201) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYbn5-0003Eo-Ft for emacs-devel@gnu.org; Tue, 31 Jan 2017 12:00:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYbmz-0006Pb-5l for emacs-devel@gnu.org; Tue, 31 Jan 2017 12:00:23 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:58828) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYbmr-0006ML-Eg; Tue, 31 Jan 2017 12:00:09 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 2DC531600BF; Tue, 31 Jan 2017 09:00:07 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id a3MSlqxLXzno; Tue, 31 Jan 2017 09:00:02 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id ECB971600BC; Tue, 31 Jan 2017 09:00:01 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 3WTU_hcq2CNA; Tue, 31 Jan 2017 09:00:01 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id BC5CE1600B6; Tue, 31 Jan 2017 09:00:01 -0800 (PST) Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit To: Eli Zaretskii References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> <8337g0y34h.fsf@gnu.org> <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> <83fujzw7qa.fsf@gnu.org> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Tue, 31 Jan 2017 08:59:54 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <83fujzw7qa.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------25D08756DEE326A9ACD42ACF" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 17:00:30 -0000 This is a multi-part message in MIME format. --------------25D08756DEE326A9ACD42ACF Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 01/31/2017 07:48 AM, Eli Zaretskii wrote: > Then maybe we should add maybe_quit calls in regex.c instead? We already have them there, everywhere that the regex code could do a lot of computation. In places where it's fast and bounded, we don't have them as they would slow things down. > Currently, immediate_quit is non-zero all the time re_search_2 runs, > so on a TTY a C-g will can stop regex.c in its tracks anywhere. I > thought we wanted to make GUI sessions as responsive as TTY sessions. That has not been my goal. C-g in GUI sessions is already plenty fast enough for human interaction. (If they are not, we should fix that; but I don't know of any bugs in the regexp-searching area.) Whatever way we do it, treating GUI and TTY sessions the same as far as quitting goes simplifies maintenance significantly. > >> It should be OK. The current master sets immediate_quit=true in back_comment's callers (both scan_lists and Fforward_comment), so current master already lets back_comment quit. > Yes, but that is why we have gl_state-related dance in > handle_interrupt, and your changes delete that part. That gl_state-related dance is present only because 'quit ()' can return instead of quitting, which means that the code could asynchronously reenter the regexp code. Since that call to 'quit' is no longer present, that sort of reentry is no longer possible, and we don't need the dance. > >> If Emacs quits in back_comment, it should longjmp to code that reinitializes gl_state before using it. > But unwinding the Lisp stack could run some Lisp that uses syntax.c > functions, before we longjmp, right? No, because the interruptible regexp code does not call Lisp code: it does not try to reenter itself. > That assumes all the immediate_quit=true settings were safe. That sort of thing has been in Emacs for ages, and I daresay it's been tested at least as well as, if not even more than, the GUI approach to quitting searching. When I was using Emacs in the 1980s computers were not nearly as fast and people's keystrokes were just as fast as they are now. So it's reasonable to place some confidence in those settings. Quite possibly we could make improvements in this area later, but it's conservative to stick with those settings for now. > Speed is not a problem, as C-g (with the proposed changes) should quit just as fast on a TTY as it already does under X, and it's been working that way under X for some time. > No, it will be slower. Apparently I was not clear enough. I was not saying that the change won't delay C-g handling in ttys; obviously it will. All I was saying is that C-g will be handled as fast on ttys as it is on GUIs, which is good enough. > The new patches still include both rarely_quit and incr_rarely_quit > (in the second patchset), which I thought you decided to remove. Did > you send the correct patches? Yes, the third patch removed incr_rarely_quit. I'm not a big fan of rewriting history. For your convenience I've attached a combined patch, that's just all the patches squashed together so that there isn't any incr_rarely_quit. --------------25D08756DEE326A9ACD42ACF Content-Type: text/x-patch; name="quit.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="quit.diff" diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index b58180e..d0096ad 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -1239,9 +1239,8 @@ DIARY OF CHANGES (Update: OK, it all seems so easy now (NOT). Input could be done synchronously (with wait_reading_process_input), or asynchronously by SIGIO or polling (SIGALRM). C-g either sets the Vquit_flag, - signals a 'quit condition (when immediate_quit), or throws to - 'getcjmp' when Emacs was waiting for input when the C-g event - arrived.) + signals a 'quit condition, or throws to 'getcjmp' when Emacs was + waiting for input when the C-g event arrived.) -- Replace wrong_kboard_jmpbuf with a special return value of read_char. It is absurd that we use setjmp/longjmp just to return diff --git a/src/alloc.c b/src/alloc.c index b59220c..e909d31 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -2880,7 +2880,7 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0, for (EMACS_INT size = XFASTINT (length); 0 < size; size--) { val = Fcons (init, val); - maybe_quit (); + rarely_quit (size); } return val; diff --git a/src/bytecode.c b/src/bytecode.c index 499fb88..0f7420c 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -841,11 +841,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, { Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v1); - EMACS_INT n = XINT (v1); - immediate_quit = true; - while (--n >= 0 && CONSP (v2)) - v2 = XCDR (v2); - immediate_quit = false; + for (EMACS_INT n = XINT (v1); 0 < n && CONSP (v2); n--) + { + v2 = XCDR (v2); + rarely_quit (n); + } TOP = CAR (v2); NEXT; } @@ -1275,11 +1275,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, /* Exchange args and then do nth. */ Lisp_Object v2 = POP, v1 = TOP; CHECK_NUMBER (v2); - EMACS_INT n = XINT (v2); - immediate_quit = true; - while (--n >= 0 && CONSP (v1)) - v1 = XCDR (v1); - immediate_quit = false; + for (EMACS_INT n = XINT (v2); 0 < n && CONSP (v1); n--) + { + v1 = XCDR (v1); + rarely_quit (n); + } TOP = CAR (v1); } else diff --git a/src/callproc.c b/src/callproc.c index 301ccf3..84324c4 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -198,11 +198,11 @@ call_process_cleanup (Lisp_Object buffer) { kill (-synch_process_pid, SIGINT); message1 ("Waiting for process to die...(type C-g again to kill it instantly)"); - immediate_quit = true; - maybe_quit (); + + /* This will quit on C-g. */ wait_for_termination (synch_process_pid, 0, 1); + synch_process_pid = 0; - immediate_quit = false; message1 ("Waiting for process to die...done"); } #endif /* !MSDOS */ @@ -726,9 +726,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, process_coding.src_multibyte = 0; } - immediate_quit = true; - maybe_quit (); - if (0 <= fd0) { enum { CALLPROC_BUFFER_SIZE_MIN = 16 * 1024 }; @@ -749,8 +746,8 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, nread = carryover; while (nread < bufsize - 1024) { - int this_read = emacs_read (fd0, buf + nread, - bufsize - nread); + int this_read = emacs_read_quit (fd0, buf + nread, + bufsize - nread); if (this_read < 0) goto give_up; @@ -769,7 +766,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, } /* Now NREAD is the total amount of data in the buffer. */ - immediate_quit = false; if (!nread) ; @@ -842,8 +838,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, we should have already detected a coding system. */ display_on_the_fly = true; } - immediate_quit = true; - maybe_quit (); } give_up: ; @@ -860,8 +854,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, wait_for_termination (pid, &status, fd0 < 0); #endif - immediate_quit = false; - /* Don't kill any children that the subprocess may have left behind when exiting. */ synch_process_pid = 0; diff --git a/src/dired.c b/src/dired.c index 52e81fb..5ea00fb 100644 --- a/src/dired.c +++ b/src/dired.c @@ -248,14 +248,11 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, /* Now that we have unwind_protect in place, we might as well allow matching to be interrupted. */ - immediate_quit = true; maybe_quit (); bool wanted = (NILP (match) || re_search (bufp, SSDATA (name), len, 0, len, 0) >= 0); - immediate_quit = false; - if (wanted) { if (!NILP (full)) diff --git a/src/doc.c b/src/doc.c index 361d09a..1e7e3fc 100644 --- a/src/doc.c +++ b/src/doc.c @@ -186,7 +186,7 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool definition) If we read the same block last time, maybe skip this? */ if (space_left > 1024 * 8) space_left = 1024 * 8; - nread = emacs_read (fd, p, space_left); + nread = emacs_read_quit (fd, p, space_left); if (nread < 0) report_file_error ("Read error on documentation file", file); p[nread] = 0; @@ -590,16 +590,15 @@ the same file name is found in the `doc-directory'. */) Vdoc_file_name = filename; filled = 0; pos = 0; - while (1) + while (true) { - register char *end; if (filled < 512) - filled += emacs_read (fd, &buf[filled], sizeof buf - 1 - filled); + filled += emacs_read_quit (fd, &buf[filled], sizeof buf - 1 - filled); if (!filled) break; buf[filled] = 0; - end = buf + (filled < 512 ? filled : filled - 128); + char *end = buf + (filled < 512 ? filled : filled - 128); p = memchr (buf, '\037', end - buf); /* p points to ^_Ffunctionname\n or ^_Vvarname\n or ^_Sfilename\n. */ if (p) diff --git a/src/editfns.c b/src/editfns.c index 82c6abb..4618164 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3053,7 +3053,6 @@ determines whether case is significant or ignored. */) i2 = begp2; i1_byte = buf_charpos_to_bytepos (bp1, i1); i2_byte = buf_charpos_to_bytepos (bp2, i2); - immediate_quit = true; while (i1 < endp1 && i2 < endp2) { @@ -3092,17 +3091,14 @@ determines whether case is significant or ignored. */) c1 = char_table_translate (trt, c1); c2 = char_table_translate (trt, c2); } + if (c1 != c2) - { - immediate_quit = false; - return make_number (c1 < c2 ? -1 - chars : chars + 1); - } + return make_number (c1 < c2 ? -1 - chars : chars + 1); chars++; + rarely_quit (chars); } - immediate_quit = false; - /* The strings match as far as they go. If one is shorter, that one is less. */ if (chars < endp1 - begp1) diff --git a/src/eval.c b/src/eval.c index 62d4af1..22b02b4 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1131,7 +1131,6 @@ unwind_to_catch (struct handler *catch, Lisp_Object value) /* Restore certain special C variables. */ set_poll_suppress_count (catch->poll_suppress_count); unblock_input_to (catch->interrupt_input_blocked); - immediate_quit = false; do { @@ -1462,6 +1461,19 @@ process_quit_flag (void) quit (); } +/* Check quit-flag and quit if it is non-nil. Typing C-g does not + directly cause a quit; it only sets Vquit_flag. So the program + needs to call maybe_quit at times when it is safe to quit. Every + loop that might run for a long time or might not exit ought to call + maybe_quit at least once, at a safe place. Unless that is + impossible, of course. But it is very desirable to avoid creating + loops where maybe_quit is impossible. + + If quit-flag is set to `kill-emacs' the SIGINT handler has received + a request to exit Emacs when it is safe to do. + + When not quitting, process any pending signals. */ + void maybe_quit (void) { @@ -1517,7 +1529,6 @@ signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit) Lisp_Object clause = Qnil; struct handler *h; - immediate_quit = false; if (gc_in_progress || waiting_for_input) emacs_abort (); diff --git a/src/fileio.c b/src/fileio.c index a46cfc7..3840062 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1960,9 +1960,7 @@ permissions. */) report_file_error ("Copying permissions to", newname); } #else /* not WINDOWSNT */ - immediate_quit = true; ifd = emacs_open (SSDATA (encoded_file), O_RDONLY, 0); - immediate_quit = false; if (ifd < 0) report_file_error ("Opening input file", file); @@ -2024,7 +2022,6 @@ permissions. */) oldsize = out_st.st_size; } - immediate_quit = true; maybe_quit (); if (clone_file (ofd, ifd)) @@ -2033,9 +2030,9 @@ permissions. */) { char buf[MAX_ALLOCA]; ptrdiff_t n; - for (newsize = 0; 0 < (n = emacs_read (ifd, buf, sizeof buf)); + for (newsize = 0; 0 < (n = emacs_read_quit (ifd, buf, sizeof buf)); newsize += n) - if (emacs_write_sig (ofd, buf, n) != n) + if (emacs_write_quit (ofd, buf, n) != n) report_file_error ("Write error", newname); if (n < 0) report_file_error ("Read error", file); @@ -2047,8 +2044,6 @@ permissions. */) if (newsize < oldsize && ftruncate (ofd, newsize) != 0) report_file_error ("Truncating output file", newname); - immediate_quit = false; - #ifndef MSDOS /* Preserve the original file permissions, and if requested, also its owner and group. */ @@ -3401,15 +3396,10 @@ decide_coding_unwind (Lisp_Object unwind_data) static Lisp_Object read_non_regular (Lisp_Object state) { - int nbytes; - - immediate_quit = true; - maybe_quit (); - nbytes = emacs_read (XSAVE_INTEGER (state, 0), - ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE - + XSAVE_INTEGER (state, 1)), - XSAVE_INTEGER (state, 2)); - immediate_quit = false; + int nbytes = emacs_read_quit (XSAVE_INTEGER (state, 0), + ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + + XSAVE_INTEGER (state, 1)), + XSAVE_INTEGER (state, 2)); /* Fast recycle this object for the likely next call. */ free_misc (state); return make_number (nbytes); @@ -3753,17 +3743,17 @@ by calling `format-decode', which see. */) int nread; if (st.st_size <= (1024 * 4)) - nread = emacs_read (fd, read_buf, 1024 * 4); + nread = emacs_read_quit (fd, read_buf, 1024 * 4); else { - nread = emacs_read (fd, read_buf, 1024); + nread = emacs_read_quit (fd, read_buf, 1024); if (nread == 1024) { int ntail; if (lseek (fd, - (1024 * 3), SEEK_END) < 0) report_file_error ("Setting file position", orig_filename); - ntail = emacs_read (fd, read_buf + nread, 1024 * 3); + ntail = emacs_read_quit (fd, read_buf + nread, 1024 * 3); nread = ntail < 0 ? ntail : nread + ntail; } } @@ -3868,15 +3858,11 @@ by calling `format-decode', which see. */) report_file_error ("Setting file position", orig_filename); } - immediate_quit = true; - maybe_quit (); /* Count how many chars at the start of the file match the text at the beginning of the buffer. */ - while (1) + while (true) { - int nread, bufpos; - - nread = emacs_read (fd, read_buf, sizeof read_buf); + int nread = emacs_read_quit (fd, read_buf, sizeof read_buf); if (nread < 0) report_file_error ("Read error", orig_filename); else if (nread == 0) @@ -3898,7 +3884,7 @@ by calling `format-decode', which see. */) break; } - bufpos = 0; + int bufpos = 0; while (bufpos < nread && same_at_start < ZV_BYTE && FETCH_BYTE (same_at_start) == read_buf[bufpos]) same_at_start++, bufpos++; @@ -3907,7 +3893,6 @@ by calling `format-decode', which see. */) if (bufpos != nread) break; } - immediate_quit = false; /* If the file matches the buffer completely, there's no need to replace anything. */ if (same_at_start - BEGV_BYTE == end_offset - beg_offset) @@ -3919,8 +3904,7 @@ by calling `format-decode', which see. */) del_range_1 (same_at_start, same_at_end, 0, 0); goto handled; } - immediate_quit = true; - maybe_quit (); + /* Count how many chars at the end of the file match the text at the end of the buffer. But, if we have already found that decoding is necessary, don't waste time. */ @@ -3942,7 +3926,8 @@ by calling `format-decode', which see. */) total_read = nread = 0; while (total_read < trial) { - nread = emacs_read (fd, read_buf + total_read, trial - total_read); + nread = emacs_read_quit (fd, read_buf + total_read, + trial - total_read); if (nread < 0) report_file_error ("Read error", orig_filename); else if (nread == 0) @@ -3977,7 +3962,6 @@ by calling `format-decode', which see. */) if (nread == 0) break; } - immediate_quit = false; if (! giveup_match_end) { @@ -4069,18 +4053,13 @@ by calling `format-decode', which see. */) inserted = 0; /* Bytes put into CONVERSION_BUFFER so far. */ unprocessed = 0; /* Bytes not processed in previous loop. */ - while (1) + while (true) { /* Read at most READ_BUF_SIZE bytes at a time, to allow quitting while reading a huge file. */ - /* Allow quitting out of the actual I/O. */ - immediate_quit = true; - maybe_quit (); - this = emacs_read (fd, read_buf + unprocessed, - READ_BUF_SIZE - unprocessed); - immediate_quit = false; - + this = emacs_read_quit (fd, read_buf + unprocessed, + READ_BUF_SIZE - unprocessed); if (this <= 0) break; @@ -4294,13 +4273,10 @@ by calling `format-decode', which see. */) /* Allow quitting out of the actual I/O. We don't make text part of the buffer until all the reading is done, so a C-g here doesn't do any harm. */ - immediate_quit = true; - maybe_quit (); - this = emacs_read (fd, - ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE - + inserted), - trytry); - immediate_quit = false; + this = emacs_read_quit (fd, + ((char *) BEG_ADDR + PT_BYTE - BEG_BYTE + + inserted), + trytry); } if (this <= 0) @@ -5002,8 +4978,6 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, } } - immediate_quit = true; - if (STRINGP (start)) ok = a_write (desc, start, 0, SCHARS (start), &annotations, &coding); else if (XINT (start) != XINT (end)) @@ -5026,8 +5000,6 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, save_errno = errno; } - immediate_quit = false; - /* fsync is not crucial for temporary files. Nor for auto-save files, since they might lose some work anyway. */ if (open_and_close_file && !auto_saving && !write_region_inhibit_fsync) @@ -5417,7 +5389,7 @@ e_write (int desc, Lisp_Object string, ptrdiff_t start, ptrdiff_t end, : (STRINGP (coding->dst_object) ? SSDATA (coding->dst_object) : (char *) BYTE_POS_ADDR (coding->dst_pos_byte))); - coding->produced -= emacs_write_sig (desc, buf, coding->produced); + coding->produced -= emacs_write_quit (desc, buf, coding->produced); if (coding->raw_destination) { diff --git a/src/filelock.c b/src/filelock.c index de65c52..67e8dbd 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -407,9 +407,7 @@ create_lock_file (char *lfname, char *lock_info_str, bool force) fcntl (fd, F_SETFD, FD_CLOEXEC); lock_info_len = strlen (lock_info_str); err = 0; - /* Use 'write', not 'emacs_write', as garbage collection - might signal an error, which would leak FD. */ - if (write (fd, lock_info_str, lock_info_len) != lock_info_len + if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len || fchmod (fd, S_IRUSR | S_IRGRP | S_IROTH) != 0) err = errno; /* There is no need to call fsync here, as the contents of @@ -490,8 +488,7 @@ read_lock_data (char *lfname, char lfinfo[MAX_LFINFO + 1]) int fd = emacs_open (lfname, O_RDONLY | O_NOFOLLOW, 0); if (0 <= fd) { - /* Use read, not emacs_read, since FD isn't unwind-protected. */ - ptrdiff_t read_bytes = read (fd, lfinfo, MAX_LFINFO + 1); + ptrdiff_t read_bytes = emacs_read (fd, lfinfo, MAX_LFINFO + 1); int read_errno = errno; if (emacs_close (fd) != 0) return -1; diff --git a/src/fns.c b/src/fns.c index 136a219..ac7c1f2 100644 --- a/src/fns.c +++ b/src/fns.c @@ -84,22 +84,6 @@ See Info node `(elisp)Random Numbers' for more details. */) return make_number (val); } -/* Heuristic on how many iterations of a tight loop can be safely done - before it's time to do a quit. This must be a power of 2. It - is nice but not necessary for it to equal USHRT_MAX + 1. */ -enum { QUIT_COUNT_HEURISTIC = 1 << 16 }; - -/* Process a quit, but do it only rarely, for efficiency. "Rarely" - means once per QUIT_COUNT_HEURISTIC or per USHRT_MAX + 1 times, - whichever is smaller. Use *QUIT_COUNT to count this. */ - -static void -rarely_quit (unsigned short int *quit_count) -{ - if (! (++*quit_count & (QUIT_COUNT_HEURISTIC - 1))) - maybe_quit (); -} - /* Random data-structure functions. */ DEFUN ("length", Flength, Slength, 1, 1, 0, @@ -1359,20 +1343,17 @@ DEFUN ("nthcdr", Fnthcdr, Snthcdr, 2, 2, 0, (Lisp_Object n, Lisp_Object list) { CHECK_NUMBER (n); - EMACS_INT num = XINT (n); Lisp_Object tail = list; - immediate_quit = true; - for (EMACS_INT i = 0; i < num; i++) + for (EMACS_INT num = XINT (n); 0 < num; num--) { if (! CONSP (tail)) { - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } tail = XCDR (tail); + rarely_quit (num); } - immediate_quit = false; return tail; } @@ -1408,7 +1389,7 @@ The value is actually the tail of LIST whose car is ELT. */) { if (! NILP (Fequal (elt, XCAR (tail)))) return tail; - rarely_quit (&quit_count); + rarely_quit (++quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1419,17 +1400,14 @@ DEFUN ("memq", Fmemq, Smemq, 2, 2, 0, The value is actually the tail of LIST whose car is ELT. */) (Lisp_Object elt, Lisp_Object list) { - immediate_quit = true; + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { if (EQ (XCAR (tail), elt)) - { - immediate_quit = false; - return tail; - } + return tail; + rarely_quit (++quit_count); } - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } @@ -1442,18 +1420,15 @@ The value is actually the tail of LIST whose car is ELT. */) if (!FLOATP (elt)) return Fmemq (elt, list); - immediate_quit = true; + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) { Lisp_Object tem = XCAR (tail); if (FLOATP (tem) && internal_equal (elt, tem, 0, 0, Qnil)) - { - immediate_quit = false; - return tail; - } + return tail; + rarely_quit (++quit_count); } - immediate_quit = false; CHECK_LIST_END (tail, list); return Qnil; } @@ -1464,15 +1439,14 @@ The value is actually the first element of LIST whose car is KEY. Elements of LIST that are not conses are ignored. */) (Lisp_Object key, Lisp_Object list) { - immediate_quit = true; + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) - if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key)) - { - immediate_quit = false; + { + if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key)) return XCAR (tail); - } - immediate_quit = false; + rarely_quit (++quit_count); + } CHECK_LIST_END (tail, list); return Qnil; } @@ -1502,7 +1476,7 @@ The value is actually the first element of LIST whose car equals KEY. */) if (CONSP (car) && (EQ (XCAR (car), key) || !NILP (Fequal (XCAR (car), key)))) return car; - rarely_quit (&quit_count); + rarely_quit (++quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1529,15 +1503,14 @@ DEFUN ("rassq", Frassq, Srassq, 2, 2, 0, The value is actually the first element of LIST whose cdr is KEY. */) (Lisp_Object key, Lisp_Object list) { - immediate_quit = true; + unsigned short int quit_count = 0; Lisp_Object tail; for (tail = list; CONSP (tail); tail = XCDR (tail)) - if (CONSP (XCAR (tail)) && EQ (XCDR (XCAR (tail)), key)) - { - immediate_quit = false; + { + if (CONSP (XCAR (tail)) && EQ (XCDR (XCAR (tail)), key)) return XCAR (tail); - } - immediate_quit = false; + rarely_quit (++quit_count); + } CHECK_LIST_END (tail, list); return Qnil; } @@ -1555,7 +1528,7 @@ The value is actually the first element of LIST whose cdr equals KEY. */) if (CONSP (car) && (EQ (XCDR (car), key) || !NILP (Fequal (XCDR (car), key)))) return car; - rarely_quit (&quit_count); + rarely_quit (++quit_count); } CHECK_LIST_END (tail, list); return Qnil; @@ -1711,7 +1684,7 @@ changing the value of a sequence `foo'. */) } else prev = tail; - rarely_quit (&quit_count); + rarely_quit (++quit_count); } CHECK_LIST_END (tail, seq); } @@ -1736,10 +1709,10 @@ This function may destructively modify SEQ to produce the value. */) for (prev = Qnil, tail = seq; CONSP (tail); tail = next) { - rarely_quit (&quit_count); next = XCDR (tail); Fsetcdr (tail, prev); prev = tail; + rarely_quit (++quit_count); } CHECK_LIST_END (tail, seq); seq = prev; @@ -1785,8 +1758,8 @@ See also the function `nreverse', which is used more often. */) unsigned short int quit_count = 0; for (new = Qnil; CONSP (seq); seq = XCDR (seq)) { - rarely_quit (&quit_count); new = Fcons (XCAR (seq), new); + rarely_quit (++quit_count); } CHECK_LIST_END (seq, seq); } @@ -2077,21 +2050,20 @@ use `(setq x (plist-put x prop val))' to be sure to use the new value. The PLIST is modified by side effects. */) (Lisp_Object plist, Lisp_Object prop, Lisp_Object val) { - immediate_quit = true; + unsigned short int quit_count = 0; Lisp_Object prev = Qnil; for (Lisp_Object tail = plist; CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail))) { if (EQ (prop, XCAR (tail))) { - immediate_quit = false; Fsetcar (XCDR (tail), val); return plist; } prev = tail; + rarely_quit (++quit_count); } - immediate_quit = false; Lisp_Object newcell = Fcons (prop, Fcons (val, NILP (prev) ? plist : XCDR (XCDR (prev)))); if (NILP (prev)) @@ -2128,7 +2100,7 @@ one of the properties on the list. */) { if (! NILP (Fequal (prop, XCAR (tail)))) return XCAR (XCDR (tail)); - rarely_quit (&quit_count); + rarely_quit (++quit_count); } CHECK_LIST_END (tail, prop); @@ -2158,7 +2130,7 @@ The PLIST is modified by side effects. */) } prev = tail; - rarely_quit (&quit_count); + rarely_quit (++quit_count); } Lisp_Object newcell = list2 (prop, val); if (NILP (prev)) @@ -2238,7 +2210,7 @@ internal_equal (Lisp_Object o1, Lisp_Object o2, int depth, bool props, unsigned short int quit_count = 0; tail_recurse: - rarely_quit (&quit_count); + rarely_quit (++quit_count); if (EQ (o1, o2)) return 1; if (XTYPE (o1) != XTYPE (o2)) @@ -2442,18 +2414,15 @@ usage: (nconc &rest LISTS) */) CHECK_CONS (tem); - immediate_quit = true; Lisp_Object tail; do { tail = tem; tem = XCDR (tail); + rarely_quit (++quit_count); } while (CONSP (tem)); - immediate_quit = false; - rarely_quit (&quit_count); - tem = args[argnum + 1]; Fsetcdr (tail, tem); if (NILP (tem)) @@ -2874,13 +2843,13 @@ property and a property with the value nil. The value is actually the tail of PLIST whose car is PROP. */) (Lisp_Object plist, Lisp_Object prop) { - immediate_quit = true; + unsigned short int quit_count = 0; while (CONSP (plist) && !EQ (XCAR (plist), prop)) { plist = XCDR (plist); plist = CDR (plist); + rarely_quit (++quit_count); } - immediate_quit = false; return plist; } diff --git a/src/indent.c b/src/indent.c index 23951a1..f630ebb 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1200,9 +1200,6 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, continuation_glyph_width = 0; /* In the fringe. */ #endif - immediate_quit = true; - maybe_quit (); - /* It's just impossible to be too paranoid here. */ eassert (from == BYTE_TO_CHAR (frombyte) && frombyte == CHAR_TO_BYTE (from)); @@ -1214,8 +1211,12 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, cmp_it.id = -1; composition_compute_stop_pos (&cmp_it, pos, pos_byte, to, Qnil); - while (1) + unsigned short int quit_count = 0; + + while (true) { + rarely_quit (++quit_count); + while (pos == next_boundary) { ptrdiff_t pos_here = pos; @@ -1280,6 +1281,8 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, pos = newpos; pos_byte = CHAR_TO_BYTE (pos); } + + rarely_quit (++quit_count); } /* Handle right margin. */ @@ -1602,6 +1605,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, pos = find_before_next_newline (pos, to, 1, &pos_byte); if (pos < to) INC_BOTH (pos, pos_byte); + rarely_quit (++quit_count); } while (pos < to && indented_beyond_p (pos, pos_byte, @@ -1694,7 +1698,6 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos, /* Nonzero if have just continued a line */ val_compute_motion.contin = (contin_hpos && prev_hpos == 0); - immediate_quit = false; return &val_compute_motion; } diff --git a/src/keyboard.c b/src/keyboard.c index 0c04d95..a86e7c5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -169,9 +169,6 @@ struct kboard *echo_kboard; Lisp_Object echo_message_buffer; -/* True means C-g should cause immediate error-signal. */ -bool immediate_quit; - /* Character that causes a quit. Normally C-g. If we are running on an ordinary terminal, this must be an ordinary @@ -3584,16 +3581,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, as input, set quit-flag to cause an interrupt. */ if (!NILP (Vthrow_on_input) && NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events))) - { - Vquit_flag = Vthrow_on_input; - /* If we're inside a function that wants immediate quits, - do it now. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - immediate_quit = false; - maybe_quit (); - } - } + Vquit_flag = Vthrow_on_input; } @@ -7053,40 +7041,22 @@ tty_read_avail_input (struct terminal *terminal, /* Now read; for one reason or another, this will not block. NREAD is set to the number of chars read. */ - do - { - nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read); - /* POSIX infers that processes which are not in the session leader's - process group won't get SIGHUPs at logout time. BSDI adheres to - this part standard and returns -1 from read (0) with errno==EIO - when the control tty is taken away. - Jeffrey Honig says this is generally safe. */ - if (nread == -1 && errno == EIO) - return -2; /* Close this terminal. */ -#if defined (AIX) && defined (_BSD) - /* The kernel sometimes fails to deliver SIGHUP for ptys. - This looks incorrect, but it isn't, because _BSD causes - O_NDELAY to be defined in fcntl.h as O_NONBLOCK, - and that causes a value other than 0 when there is no input. */ - if (nread == 0) - return -2; /* Close this terminal. */ -#endif - } - while ( - /* We used to retry the read if it was interrupted. - But this does the wrong thing when O_NONBLOCK causes - an EAGAIN error. Does anybody know of a situation - where a retry is actually needed? */ -#if 0 - nread < 0 && (errno == EAGAIN || errno == EFAULT -#ifdef EBADSLT - || errno == EBADSLT -#endif - ) -#else - 0 + nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read); + /* POSIX infers that processes which are not in the session leader's + process group won't get SIGHUPs at logout time. BSDI adheres to + this part standard and returns -1 from read (0) with errno==EIO + when the control tty is taken away. + Jeffrey Honig says this is generally safe. */ + if (nread == -1 && errno == EIO) + return -2; /* Close this terminal. */ +#if defined AIX && defined _BSD + /* The kernel sometimes fails to deliver SIGHUP for ptys. + This looks incorrect, but it isn't, because _BSD causes + O_NDELAY to be defined in fcntl.h as O_NONBLOCK, + and that causes a value other than 0 when there is no input. */ + if (nread == 0) + return -2; /* Close this terminal. */ #endif - ); #ifndef USABLE_FIONREAD #if defined (USG) || defined (CYGWIN) @@ -10445,30 +10415,12 @@ handle_interrupt (bool in_signal_handler) } else { - /* If executing a function that wants to be interrupted out of - and the user has not deferred quitting by binding `inhibit-quit' - then quit right away. */ - if (immediate_quit && NILP (Vinhibit_quit) && !waiting_for_input) - { - struct gl_state_s saved; - - immediate_quit = false; - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); - saved = gl_state; - quit (); - gl_state = saved; - } - else - { /* Else request quit when it's safe. */ - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; - force_quit_count = count; - if (count == 3) - { - immediate_quit = true; - Vinhibit_quit = Qnil; - } - Vquit_flag = Qt; - } + /* Request quit when it's safe. */ + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; + force_quit_count = count; + if (count == 3) + Vinhibit_quit = Qnil; + Vquit_flag = Qt; } pthread_sigmask (SIG_SETMASK, &empty_mask, 0); @@ -10907,7 +10859,6 @@ init_keyboard (void) { /* This is correct before outermost invocation of the editor loop. */ command_loop_level = -1; - immediate_quit = false; quit_char = Ctl ('g'); Vunread_command_events = Qnil; timer_idleness_start_time = invalid_timespec (); diff --git a/src/lisp.h b/src/lisp.h index 58e2288..1ac3816 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3123,29 +3123,28 @@ struct handler extern Lisp_Object memory_signal_data; -/* Check quit-flag and quit if it is non-nil. Typing C-g does not - directly cause a quit; it only sets Vquit_flag. So the program - needs to call maybe_quit at times when it is safe to quit. Every - loop that might run for a long time or might not exit ought to call - maybe_quit at least once, at a safe place. Unless that is - impossible, of course. But it is very desirable to avoid creating - loops where maybe_quit is impossible. +extern void maybe_quit (void); - Exception: if you set immediate_quit, the handler that responds to - the C-g does the quit itself. This is a good thing to do around a - loop that has no side effects and (in particular) cannot call - arbitrary Lisp code. +/* True if ought to quit now. */ - If quit-flag is set to `kill-emacs' the SIGINT handler has received - a request to exit Emacs when it is safe to do. +#define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) - When not quitting, process any pending signals. */ +/* Heuristic on how many iterations of a tight loop can be safely done + before it's time to do a quit. This must be a power of 2. It + is nice but not necessary for it to equal USHRT_MAX + 1. */ -extern void maybe_quit (void); +enum { QUIT_COUNT_HEURISTIC = 1 << 16 }; -/* True if ought to quit now. */ +/* Process a quit rarely, based on a counter COUNT, for efficiency. + "Rarely" means once per QUIT_COUNT_HEURISTIC or per USHRT_MAX + 1 + times, whichever is smaller (somewhat arbitrary, but often faster). */ -#define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) +INLINE void +rarely_quit (unsigned short int count) +{ + if (! (count & (QUIT_COUNT_HEURISTIC - 1))) + maybe_quit (); +} extern Lisp_Object Vascii_downcase_table; extern Lisp_Object Vascii_canon_table; @@ -4221,8 +4220,10 @@ extern int emacs_open (const char *, int, int); extern int emacs_pipe (int[2]); extern int emacs_close (int); extern ptrdiff_t emacs_read (int, void *, ptrdiff_t); +extern ptrdiff_t emacs_read_quit (int, void *, ptrdiff_t); extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t); extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t); +extern ptrdiff_t emacs_write_quit (int, void const *, ptrdiff_t); extern void emacs_perror (char const *); extern void unlock_all_files (void); @@ -4348,9 +4349,6 @@ extern char my_edata[]; extern char my_endbss[]; extern char *my_endbss_static; -/* True means ^G can quit instantly. */ -extern bool immediate_quit; - extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2)); diff --git a/src/lread.c b/src/lread.c index 1780692..094aa62 100644 --- a/src/lread.c +++ b/src/lread.c @@ -910,7 +910,7 @@ safe_to_load_version (int fd) /* Read the first few bytes from the file, and look for a line specifying the byte compiler version used. */ - nbytes = emacs_read (fd, buf, sizeof buf); + nbytes = emacs_read_quit (fd, buf, sizeof buf); if (nbytes > 0) { /* Skip to the next newline, skipping over the initial `ELC' diff --git a/src/process.c b/src/process.c index dbd4358..434a395 100644 --- a/src/process.c +++ b/src/process.c @@ -3431,7 +3431,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, break; } - immediate_quit = true; maybe_quit (); ret = connect (s, sa, addrlen); @@ -3439,8 +3438,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, if (ret == 0 || xerrno == EISCONN) { - /* The unwind-protect will be discarded afterwards. - Likewise for immediate_quit. */ + /* The unwind-protect will be discarded afterwards. */ break; } @@ -3481,8 +3479,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, } #endif /* !WINDOWSNT */ - immediate_quit = false; - /* Discard the unwind protect closing S. */ specpdl_ptr = specpdl + count; emacs_close (s); @@ -3539,8 +3535,6 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos, #endif } - immediate_quit = false; - if (s < 0) { /* If non-blocking got this far - and failed - assume non-blocking is @@ -4012,7 +4006,6 @@ usage: (make-network-process &rest ARGS) */) struct addrinfo *res, *lres; int ret; - immediate_quit = true; maybe_quit (); struct addrinfo hints; @@ -4034,7 +4027,6 @@ usage: (make-network-process &rest ARGS) */) #else error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret); #endif - immediate_quit = false; for (lres = res; lres; lres = lres->ai_next) addrinfos = Fcons (conv_addrinfo_to_lisp (lres), addrinfos); diff --git a/src/regex.c b/src/regex.c index f6e67af..796f868 100644 --- a/src/regex.c +++ b/src/regex.c @@ -1728,10 +1728,8 @@ typedef struct /* Explicit quit checking is needed for Emacs, which uses polling to process input events. */ -#ifdef emacs -# define IMMEDIATE_QUIT_CHECK (immediate_quit ? maybe_quit () : (void) 0) -#else -# define IMMEDIATE_QUIT_CHECK ((void) 0) +#ifndef emacs +static void maybe_quit (void) {} #endif /* Structure to manage work area for range table. */ @@ -5820,7 +5818,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, /* Unconditionally jump (without popping any failure points). */ case jump: unconditional_jump: - IMMEDIATE_QUIT_CHECK; + maybe_quit (); EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ DEBUG_PRINT ("EXECUTING jump %d ", mcnt); p += mcnt; /* Do the jump. */ @@ -6168,7 +6166,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, /* We goto here if a matching operation fails. */ fail: - IMMEDIATE_QUIT_CHECK; + maybe_quit (); if (!FAIL_STACK_EMPTY ()) { re_char *str, *pat; diff --git a/src/search.c b/src/search.c index f54f44c..33cb02a 100644 --- a/src/search.c +++ b/src/search.c @@ -99,6 +99,25 @@ matcher_overflow (void) error ("Stack overflow in regexp matcher"); } +static void +freeze_buffer_relocation (void) +{ +#ifdef REL_ALLOC + /* Prevent ralloc.c from relocating the current buffer while + searching it. */ + r_alloc_inhibit_buffer_relocation (1); + record_unwind_protect_int (r_alloc_inhibit_buffer_relocation, 0); +#endif +} + +static void +thaw_buffer_relocation (void) +{ +#ifdef REL_ALLOC + unbind_to (SPECPDL_INDEX () - 1, Qnil); +#endif +} + /* Compile a regexp and signal a Lisp error if anything goes wrong. PATTERN is the pattern to compile. CP is the place to put the result. @@ -277,7 +296,6 @@ looking_at_1 (Lisp_Object string, bool posix) !NILP (BVAR (current_buffer, enable_multibyte_characters))); /* Do a pending quit right away, to avoid paradoxical behavior */ - immediate_quit = true; maybe_quit (); /* Get pointers and sizes of the two strings @@ -301,20 +319,13 @@ looking_at_1 (Lisp_Object string, bool posix) re_match_object = Qnil; -#ifdef REL_ALLOC - /* Prevent ralloc.c from relocating the current buffer while - searching it. */ - r_alloc_inhibit_buffer_relocation (1); -#endif + freeze_buffer_relocation (); i = re_match_2 (bufp, (char *) p1, s1, (char *) p2, s2, PT_BYTE - BEGV_BYTE, (NILP (Vinhibit_changing_match_data) ? &search_regs : NULL), ZV_BYTE - BEGV_BYTE); - immediate_quit = false; -#ifdef REL_ALLOC - r_alloc_inhibit_buffer_relocation (0); -#endif + thaw_buffer_relocation (); if (i == -2) matcher_overflow (); @@ -399,7 +410,6 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, ? BVAR (current_buffer, case_canon_table) : Qnil), posix, STRING_MULTIBYTE (string)); - immediate_quit = true; re_match_object = string; val = re_search (bufp, SSDATA (string), @@ -407,7 +417,6 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, SBYTES (string) - pos_byte, (NILP (Vinhibit_changing_match_data) ? &search_regs : NULL)); - immediate_quit = false; /* Set last_thing_searched only when match data is changed. */ if (NILP (Vinhibit_changing_match_data)) @@ -471,13 +480,11 @@ fast_string_match_internal (Lisp_Object regexp, Lisp_Object string, bufp = compile_pattern (regexp, 0, table, 0, STRING_MULTIBYTE (string)); - immediate_quit = true; re_match_object = string; val = re_search (bufp, SSDATA (string), SBYTES (string), 0, SBYTES (string), 0); - immediate_quit = false; return val; } @@ -498,9 +505,7 @@ fast_c_string_match_ignore_case (Lisp_Object regexp, bufp = compile_pattern (regexp, 0, Vascii_canon_table, 0, 0); - immediate_quit = true; val = re_search (bufp, string, len, 0, len, 0); - immediate_quit = false; return val; } @@ -561,18 +566,10 @@ fast_looking_at (Lisp_Object regexp, ptrdiff_t pos, ptrdiff_t pos_byte, } buf = compile_pattern (regexp, 0, Qnil, 0, multibyte); - immediate_quit = true; -#ifdef REL_ALLOC - /* Prevent ralloc.c from relocating the current buffer while - searching it. */ - r_alloc_inhibit_buffer_relocation (1); -#endif + freeze_buffer_relocation (); len = re_match_2 (buf, (char *) p1, s1, (char *) p2, s2, pos_byte, NULL, limit_byte); -#ifdef REL_ALLOC - r_alloc_inhibit_buffer_relocation (0); -#endif - immediate_quit = false; + thaw_buffer_relocation (); return len; } @@ -649,7 +646,7 @@ newline_cache_on_off (struct buffer *buf) If BYTEPOS is not NULL, set *BYTEPOS to the byte position corresponding to the returned character position. - If ALLOW_QUIT, set immediate_quit. That's good to do + If ALLOW_QUIT, check for quitting. That's good to do except when inside redisplay. */ ptrdiff_t @@ -685,8 +682,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (shortage != 0) *shortage = 0; - immediate_quit = allow_quit; - if (count > 0) while (start != end) { @@ -704,7 +699,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, ptrdiff_t next_change; int result = 1; - immediate_quit = false; while (start < end && result) { ptrdiff_t lim1; @@ -757,7 +751,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, start_byte = end_byte; break; } - immediate_quit = allow_quit; /* START should never be after END. */ if (start_byte > ceiling_byte) @@ -810,11 +803,12 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (--count == 0) { - immediate_quit = false; if (bytepos) *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); } + if (allow_quit) + maybe_quit (); } start_byte = lim_byte; @@ -833,7 +827,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, ptrdiff_t next_change; int result = 1; - immediate_quit = false; while (start > end && result) { ptrdiff_t lim1; @@ -870,7 +863,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, start_byte = end_byte; break; } - immediate_quit = allow_quit; /* Start should never be at or before end. */ if (start_byte <= ceiling_byte) @@ -918,11 +910,12 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (++count >= 0) { - immediate_quit = false; if (bytepos) *bytepos = ceiling_byte + prev + 1; return BYTE_TO_CHAR (ceiling_byte + prev + 1); } + if (allow_quit) + maybe_quit (); } start_byte = ceiling_byte; @@ -930,7 +923,6 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, } } - immediate_quit = false; if (shortage) *shortage = count * direction; if (bytepos) @@ -954,7 +946,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, the number of line boundaries left unfound, and position at the limit we bumped up against. - If ALLOW_QUIT, set immediate_quit. That's good to do + If ALLOW_QUIT, check for quitting. That's good to do except in special cases. */ ptrdiff_t @@ -1197,9 +1189,6 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, trt, posix, !NILP (BVAR (current_buffer, enable_multibyte_characters))); - immediate_quit = true; /* Quit immediately if user types ^G, - because letting this function finish - can take too long. */ maybe_quit (); /* Do a pending quit right away, to avoid paradoxical behavior */ /* Get pointers and sizes of the two strings @@ -1222,11 +1211,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } re_match_object = Qnil; -#ifdef REL_ALLOC - /* Prevent ralloc.c from relocating the current buffer while - searching it. */ - r_alloc_inhibit_buffer_relocation (1); -#endif + freeze_buffer_relocation (); while (n < 0) { @@ -1268,13 +1253,11 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } else { - immediate_quit = false; -#ifdef REL_ALLOC - r_alloc_inhibit_buffer_relocation (0); -#endif + thaw_buffer_relocation (); return (n); } n++; + maybe_quit (); } while (n > 0) { @@ -1313,18 +1296,13 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } else { - immediate_quit = false; -#ifdef REL_ALLOC - r_alloc_inhibit_buffer_relocation (0); -#endif + thaw_buffer_relocation (); return (0 - n); } n--; + maybe_quit (); } - immediate_quit = false; -#ifdef REL_ALLOC - r_alloc_inhibit_buffer_relocation (0); -#endif + thaw_buffer_relocation (); return (pos); } else /* non-RE case */ @@ -3231,8 +3209,6 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (shortage != 0) *shortage = 0; - immediate_quit = allow_quit; - if (count > 0) while (start != end) { @@ -3275,11 +3251,12 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, if (--count == 0) { - immediate_quit = false; if (bytepos) *bytepos = lim_byte + next; return BYTE_TO_CHAR (lim_byte + next); } + if (allow_quit) + maybe_quit (); } start_byte = lim_byte; @@ -3287,7 +3264,6 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end, } } - immediate_quit = false; if (shortage) *shortage = count; if (bytepos) diff --git a/src/syntax.c b/src/syntax.c index f9e4093..7aa43e6 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -621,11 +621,9 @@ find_defun_start (ptrdiff_t pos, ptrdiff_t pos_byte) SETUP_BUFFER_SYNTAX_TABLE (); while (PT > BEGV) { - int c; - /* Open-paren at start of line means we may have found our defun-start. */ - c = FETCH_CHAR_AS_MULTIBYTE (PT_BYTE); + int c = FETCH_CHAR_AS_MULTIBYTE (PT_BYTE); if (SYNTAX (c) == Sopen) { SETUP_SYNTAX_TABLE (PT + 1, -1); /* Try again... */ @@ -715,6 +713,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, ptrdiff_t nesting = 1; /* Current comment nesting. */ int c; int syntax = 0; + unsigned short int quit_count = 0; /* FIXME: A }} comment-ender style leads to incorrect behavior in the case of {{ c }}} because we ignore the last two chars which are @@ -724,6 +723,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, that determines quote parity to the comment-end. */ while (from != stop) { + rarely_quit (++quit_count); + ptrdiff_t temp_byte; int prev_syntax; bool com2start, com2end, comstart; @@ -951,7 +952,9 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, defun_start_byte = CHAR_TO_BYTE (defun_start); } } - } while (defun_start < comment_end); + rarely_quit (++quit_count); + } + while (defun_start < comment_end); from_byte = CHAR_TO_BYTE (from); UPDATE_SYNTAX_TABLE_FORWARD (from - 1); @@ -1417,29 +1420,23 @@ DEFUN ("internal-describe-syntax-value", Finternal_describe_syntax_value, COUNT negative means scan backward and stop at word beginning. */ ptrdiff_t -scan_words (register ptrdiff_t from, register EMACS_INT count) +scan_words (ptrdiff_t from, EMACS_INT count) { - register ptrdiff_t beg = BEGV; - register ptrdiff_t end = ZV; - register ptrdiff_t from_byte = CHAR_TO_BYTE (from); - register enum syntaxcode code; + ptrdiff_t beg = BEGV; + ptrdiff_t end = ZV; + ptrdiff_t from_byte = CHAR_TO_BYTE (from); + enum syntaxcode code; int ch0, ch1; Lisp_Object func, pos; - immediate_quit = true; - maybe_quit (); - SETUP_SYNTAX_TABLE (from, count); while (count > 0) { - while (1) + while (true) { if (from == end) - { - immediate_quit = false; - return 0; - } + return 0; UPDATE_SYNTAX_TABLE_FORWARD (from); ch0 = FETCH_CHAR_AS_MULTIBYTE (from_byte); code = SYNTAX (ch0); @@ -1449,6 +1446,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; if (code == Sword) break; + rarely_quit (from); } /* Now CH0 is a character which begins a word and FROM is the position of the next character. */ @@ -1477,19 +1475,17 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; INC_BOTH (from, from_byte); ch0 = ch1; + rarely_quit (from); } } count--; } while (count < 0) { - while (1) + while (true) { if (from == beg) - { - immediate_quit = false; - return 0; - } + return 0; DEC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_BACKWARD (from); ch1 = FETCH_CHAR_AS_MULTIBYTE (from_byte); @@ -1499,6 +1495,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; if (code == Sword) break; + rarely_quit (from); } /* Now CH1 is a character which ends a word and FROM is the position of it. */ @@ -1531,13 +1528,12 @@ scan_words (register ptrdiff_t from, register EMACS_INT count) break; } ch1 = ch0; + rarely_quit (from); } } count++; } - immediate_quit = false; - return from; } @@ -1921,7 +1917,6 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, stop = (pos >= GPT && GPT > XINT (lim)) ? GAP_END_ADDR : endp; } - immediate_quit = true; /* This code may look up syntax tables using functions that rely on the gl_state object. To make sure this object is not out of date, let's initialize it manually. @@ -1971,9 +1966,10 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, } fwd_ok: p += nbytes, pos++, pos_byte += nbytes; + rarely_quit (pos); } else - while (1) + while (true) { if (p >= stop) { @@ -1995,15 +1991,14 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, break; fwd_unibyte_ok: p++, pos++, pos_byte++; + rarely_quit (pos); } } else { if (multibyte) - while (1) + while (true) { - unsigned char *prev_p; - if (p <= stop) { if (p <= endp) @@ -2011,8 +2006,11 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, p = GPT_ADDR; stop = endp; } - prev_p = p; - while (--p >= stop && ! CHAR_HEAD_P (*p)); + unsigned char *prev_p = p; + do + p--; + while (stop <= p && ! CHAR_HEAD_P (*p)); + c = STRING_CHAR (p); if (! NILP (iso_classes) && in_classes (c, iso_classes)) @@ -2036,9 +2034,10 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, } back_ok: pos--, pos_byte -= prev_p - p; + rarely_quit (pos); } else - while (1) + while (true) { if (p <= stop) { @@ -2060,11 +2059,11 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, break; back_unibyte_ok: p--, pos--, pos_byte--; + rarely_quit (pos); } } SET_PT_BOTH (pos, pos_byte); - immediate_quit = false; SAFE_FREE (); return make_number (PT - start_point); @@ -2138,7 +2137,6 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) ptrdiff_t pos_byte = PT_BYTE; unsigned char *p, *endp, *stop; - immediate_quit = true; SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1); if (forwardp) @@ -2167,6 +2165,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (! fastmap[SYNTAX (c)]) goto done; p += nbytes, pos++, pos_byte += nbytes; + rarely_quit (pos); } while (!parse_sexp_lookup_properties || pos < gl_state.e_property); @@ -2183,10 +2182,8 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (multibyte) { - while (1) + while (true) { - unsigned char *prev_p; - if (p <= stop) { if (p <= endp) @@ -2195,17 +2192,22 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) stop = endp; } UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); - prev_p = p; - while (--p >= stop && ! CHAR_HEAD_P (*p)); + + unsigned char *prev_p = p; + do + p--; + while (stop <= p && ! CHAR_HEAD_P (*p)); + c = STRING_CHAR (p); if (! fastmap[SYNTAX (c)]) break; pos--, pos_byte -= prev_p - p; + rarely_quit (pos); } } else { - while (1) + while (true) { if (p <= stop) { @@ -2218,13 +2220,13 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim) if (! fastmap[SYNTAX (p[-1])]) break; p--, pos--, pos_byte--; + rarely_quit (pos); } } } done: SET_PT_BOTH (pos, pos_byte); - immediate_quit = false; return make_number (PT - start_point); } @@ -2286,9 +2288,10 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, ptrdiff_t *charpos_ptr, ptrdiff_t *bytepos_ptr, EMACS_INT *incomment_ptr, int *last_syntax_ptr) { - register int c, c1; - register enum syntaxcode code; - register int syntax, other_syntax; + unsigned short int quit_count = 0; + int c, c1; + enum syntaxcode code; + int syntax, other_syntax; if (nesting <= 0) nesting = -1; @@ -2380,6 +2383,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, UPDATE_SYNTAX_TABLE_FORWARD (from); nesting++; } + + rarely_quit (++quit_count); } *charpos_ptr = from; *bytepos_ptr = from_byte; @@ -2407,14 +2412,12 @@ between them, return t; otherwise return nil. */) ptrdiff_t out_charpos, out_bytepos; EMACS_INT dummy; int dummy2; + unsigned short int quit_count = 0; CHECK_NUMBER (count); count1 = XINT (count); stop = count1 > 0 ? ZV : BEGV; - immediate_quit = true; - maybe_quit (); - from = PT; from_byte = PT_BYTE; @@ -2429,7 +2432,6 @@ between them, return t; otherwise return nil. */) if (from == stop) { SET_PT_BOTH (from, from_byte); - immediate_quit = false; return Qnil; } c = FETCH_CHAR_AS_MULTIBYTE (from_byte); @@ -2456,6 +2458,7 @@ between them, return t; otherwise return nil. */) INC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_FORWARD (from); } + rarely_quit (++quit_count); } while (code == Swhitespace || (code == Sendcomment && c == '\n')); @@ -2463,7 +2466,6 @@ between them, return t; otherwise return nil. */) comstyle = ST_COMMENT_STYLE; else if (code != Scomment) { - immediate_quit = false; DEC_BOTH (from, from_byte); SET_PT_BOTH (from, from_byte); return Qnil; @@ -2474,7 +2476,6 @@ between them, return t; otherwise return nil. */) from = out_charpos; from_byte = out_bytepos; if (!found) { - immediate_quit = false; SET_PT_BOTH (from, from_byte); return Qnil; } @@ -2486,23 +2487,19 @@ between them, return t; otherwise return nil. */) while (count1 < 0) { - while (1) + while (true) { - bool quoted; - int syntax; - if (from <= stop) { SET_PT_BOTH (BEGV, BEGV_BYTE); - immediate_quit = false; return Qnil; } DEC_BOTH (from, from_byte); /* char_quoted does UPDATE_SYNTAX_TABLE_BACKWARD (from). */ - quoted = char_quoted (from, from_byte); + bool quoted = char_quoted (from, from_byte); c = FETCH_CHAR_AS_MULTIBYTE (from_byte); - syntax = SYNTAX_WITH_FLAGS (c); + int syntax = SYNTAX_WITH_FLAGS (c); code = SYNTAX (c); comstyle = 0; comnested = SYNTAX_FLAGS_COMMENT_NESTED (syntax); @@ -2545,6 +2542,7 @@ between them, return t; otherwise return nil. */) } else if (from == stop) break; + rarely_quit (++quit_count); } if (fence_found == 0) { @@ -2587,18 +2585,18 @@ between them, return t; otherwise return nil. */) else if (code != Swhitespace || quoted) { leave: - immediate_quit = false; INC_BOTH (from, from_byte); SET_PT_BOTH (from, from_byte); return Qnil; } + + rarely_quit (++quit_count); } count1++; } SET_PT_BOTH (from, from_byte); - immediate_quit = false; return Qt; } @@ -2632,6 +2630,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) EMACS_INT dummy; int dummy2; bool multibyte_symbol_p = sexpflag && multibyte_syntax_as_symbol; + unsigned short int quit_count = 0; if (depth > 0) min_depth = 0; @@ -2640,7 +2639,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) from_byte = CHAR_TO_BYTE (from); - immediate_quit = true; maybe_quit (); SETUP_SYNTAX_TABLE (from, count); @@ -2648,6 +2646,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) { while (from < stop) { + rarely_quit (++quit_count); bool comstart_first, prefix; int syntax, other_syntax; UPDATE_SYNTAX_TABLE_FORWARD (from); @@ -2716,6 +2715,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) goto done; } INC_BOTH (from, from_byte); + rarely_quit (++quit_count); } goto done; @@ -2787,6 +2787,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (c_code == Scharquote || c_code == Sescape) INC_BOTH (from, from_byte); INC_BOTH (from, from_byte); + rarely_quit (++quit_count); } INC_BOTH (from, from_byte); if (!depth && sexpflag) goto done; @@ -2801,7 +2802,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (depth) goto lose; - immediate_quit = false; return Qnil; /* End of object reached */ @@ -2813,11 +2813,11 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) { while (from > stop) { - int syntax; + rarely_quit (++quit_count); DEC_BOTH (from, from_byte); UPDATE_SYNTAX_TABLE_BACKWARD (from); c = FETCH_CHAR_AS_MULTIBYTE (from_byte); - syntax= SYNTAX_WITH_FLAGS (c); + int syntax = SYNTAX_WITH_FLAGS (c); code = syntax_multibyte (c, multibyte_symbol_p); if (depth == min_depth) last_good = from; @@ -2889,6 +2889,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) default: goto done2; } DEC_BOTH (from, from_byte); + rarely_quit (++quit_count); } goto done2; @@ -2951,13 +2952,14 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (syntax_multibyte (c, multibyte_symbol_p) == code) break; } + rarely_quit (++quit_count); } if (code == Sstring_fence && !depth && sexpflag) goto done2; break; case Sstring: stringterm = FETCH_CHAR_AS_MULTIBYTE (from_byte); - while (1) + while (true) { if (from == stop) goto lose; @@ -2971,6 +2973,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) == Sstring)) break; } + rarely_quit (++quit_count); } if (!depth && sexpflag) goto done2; break; @@ -2984,7 +2987,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) if (depth) goto lose; - immediate_quit = false; return Qnil; done2: @@ -2992,7 +2994,6 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag) } - immediate_quit = false; XSETFASTINT (val, from); return val; @@ -3085,6 +3086,7 @@ the prefix syntax flag (p). */) if (pos <= beg) break; DEC_BOTH (pos, pos_byte); + rarely_quit (pos); } SET_PT_BOTH (opoint, opoint_byte); @@ -3155,6 +3157,7 @@ scan_sexps_forward (struct lisp_parse_state *state, bool found; ptrdiff_t out_bytepos, out_charpos; int temp; + unsigned short int quit_count = 0; prev_from = from; prev_from_byte = from_byte; @@ -3173,7 +3176,6 @@ do { prev_from = from; \ UPDATE_SYNTAX_TABLE_FORWARD (from); \ } while (0) - immediate_quit = true; maybe_quit (); depth = state->depth; @@ -3225,6 +3227,7 @@ do { prev_from = from; \ while (from < end) { + rarely_quit (++quit_count); INC_FROM; if ((from < end) @@ -3281,6 +3284,7 @@ do { prev_from = from; \ goto symdone; } INC_FROM; + rarely_quit (++quit_count); } symdone: curlevel->prev = curlevel->last; @@ -3391,6 +3395,7 @@ do { prev_from = from; \ break; } INC_FROM; + rarely_quit (++quit_count); } } string_end: @@ -3432,7 +3437,6 @@ do { prev_from = from; \ state->levelstarts); state->prev_syntax = (SYNTAX_FLAGS_COMSTARTEND_FIRST (prev_from_syntax) || state->quoted) ? prev_from_syntax : Smax; - immediate_quit = false; } /* Convert a (lisp) parse state to the internal form used in diff --git a/src/sysdep.c b/src/sysdep.c index e172dc0..91b2a5c 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -382,19 +382,23 @@ get_child_status (pid_t child, int *status, int options, bool interruptible) so that another thread running glib won't find them. */ eassert (child > 0); - while ((pid = waitpid (child, status, options)) < 0) + while (true) { + /* Note: the MS-Windows emulation of waitpid calls maybe_quit + internally. */ + if (interruptible) + maybe_quit (); + + pid = waitpid (child, status, options); + if (0 <= pid) + break; + /* Check that CHILD is a child process that has not been reaped, and that STATUS and OPTIONS are valid. Otherwise abort, as continuing after this internal error could cause Emacs to become confused and kill innocent-victim processes. */ if (errno != EINTR) emacs_abort (); - - /* Note: the MS-Windows emulation of waitpid calls maybe_quit - internally. */ - if (interruptible) - maybe_quit (); } /* If successful and status is requested, tell wait_reading_process_output @@ -2503,78 +2507,113 @@ emacs_close (int fd) #define MAX_RW_COUNT (INT_MAX >> 18 << 18) #endif -/* Read from FILEDESC to a buffer BUF with size NBYTE, retrying if interrupted. +/* Read from FD to a buffer BUF with size NBYTE. + If interrupted, process any quits and pending signals immediately + if INTERRUPTIBLE, and then retry the read unless quitting. Return the number of bytes read, which might be less than NBYTE. - On error, set errno and return -1. */ -ptrdiff_t -emacs_read (int fildes, void *buf, ptrdiff_t nbyte) + On error, set errno to a value other than EINTR, and return -1. */ +static ptrdiff_t +emacs_intr_read (int fd, void *buf, ptrdiff_t nbyte, bool interruptible) { - ssize_t rtnval; + ssize_t result; /* There is no need to check against MAX_RW_COUNT, since no caller ever passes a size that large to emacs_read. */ + do + { + if (interruptible) + maybe_quit (); + result = read (fd, buf, nbyte); + } + while (result < 0 && errno == EINTR); - while ((rtnval = read (fildes, buf, nbyte)) == -1 - && (errno == EINTR)) - maybe_quit (); - return (rtnval); + return result; } -/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if interrupted - or if a partial write occurs. If interrupted, process pending - signals if PROCESS SIGNALS. Return the number of bytes written, setting - errno if this is less than NBYTE. */ +/* Read from FD to a buffer BUF with size NBYTE. + If interrupted, retry the read. Return the number of bytes read, + which might be less than NBYTE. On error, set errno to a value + other than EINTR, and return -1. */ +ptrdiff_t +emacs_read (int fd, void *buf, ptrdiff_t nbyte) +{ + return emacs_intr_read (fd, buf, nbyte, false); +} + +/* Like emacs_read, but also process quits and pending signals. */ +ptrdiff_t +emacs_read_quit (int fd, void *buf, ptrdiff_t nbyte) +{ + return emacs_intr_read (fd, buf, nbyte, true); +} + +/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if + interrupted or if a partial write occurs. Process any quits + immediately if INTERRUPTIBLE is positive, and process any pending + signals immediately if INTERRUPTIBLE is nonzero. Return the number + of bytes written; if this is less than NBYTE, set errno to a value + other than EINTR. */ static ptrdiff_t -emacs_full_write (int fildes, char const *buf, ptrdiff_t nbyte, - bool process_signals) +emacs_full_write (int fd, char const *buf, ptrdiff_t nbyte, + int interruptible) { ptrdiff_t bytes_written = 0; while (nbyte > 0) { - ssize_t n = write (fildes, buf, min (nbyte, MAX_RW_COUNT)); + ssize_t n = write (fd, buf, min (nbyte, MAX_RW_COUNT)); if (n < 0) { - if (errno == EINTR) + if (errno != EINTR) + break; + + if (interruptible) { - /* I originally used maybe_quit but that might cause files to - be truncated if you hit C-g in the middle of it. --Stef */ - if (process_signals && pending_signals) + if (0 < interruptible) + maybe_quit (); + if (pending_signals) process_pending_signals (); - continue; } - else - break; } - - buf += n; - nbyte -= n; - bytes_written += n; + else + { + buf += n; + nbyte -= n; + bytes_written += n; + } } return bytes_written; } -/* Write to FILEDES from a buffer BUF with size NBYTE, retrying if - interrupted or if a partial write occurs. Return the number of - bytes written, setting errno if this is less than NBYTE. */ +/* Write to FD from a buffer BUF with size NBYTE, retrying if + interrupted or if a partial write occurs. Do not process quits or + pending signals. Return the number of bytes written, setting errno + if this is less than NBYTE. */ +ptrdiff_t +emacs_write (int fd, void const *buf, ptrdiff_t nbyte) +{ + return emacs_full_write (fd, buf, nbyte, 0); +} + +/* Like emacs_write, but also process pending signals. */ ptrdiff_t -emacs_write (int fildes, void const *buf, ptrdiff_t nbyte) +emacs_write_sig (int fd, void const *buf, ptrdiff_t nbyte) { - return emacs_full_write (fildes, buf, nbyte, 0); + return emacs_full_write (fd, buf, nbyte, -1); } -/* Like emacs_write, but also process pending signals if interrupted. */ +/* Like emacs_write, but also process quits and pending signals. */ ptrdiff_t -emacs_write_sig (int fildes, void const *buf, ptrdiff_t nbyte) +emacs_write_quit (int fd, void const *buf, ptrdiff_t nbyte) { - return emacs_full_write (fildes, buf, nbyte, 1); + return emacs_full_write (fd, buf, nbyte, 1); } /* Write a diagnostic to standard error that contains MESSAGE and a string derived from errno. Preserve errno. Do not buffer stderr. - Do not process pending signals if interrupted. */ + Do not process quits or pending signals if interrupted. */ void emacs_perror (char const *message) { @@ -3168,7 +3207,7 @@ system_process_attributes (Lisp_Object pid) else { record_unwind_protect_int (close_file_unwind, fd); - nread = emacs_read (fd, procbuf, sizeof procbuf - 1); + nread = emacs_read_quit (fd, procbuf, sizeof procbuf - 1); } if (0 < nread) { @@ -3289,7 +3328,7 @@ system_process_attributes (Lisp_Object pid) /* Leave room even if every byte needs escaping below. */ readsize = (cmdline_size >> 1) - nread; - nread_incr = emacs_read (fd, cmdline + nread, readsize); + nread_incr = emacs_read_quit (fd, cmdline + nread, readsize); nread += max (0, nread_incr); } while (nread_incr == readsize); @@ -3402,7 +3441,7 @@ system_process_attributes (Lisp_Object pid) else { record_unwind_protect_int (close_file_unwind, fd); - nread = emacs_read (fd, &pinfo, sizeof pinfo); + nread = emacs_read_quit (fd, &pinfo, sizeof pinfo); } if (nread == sizeof pinfo) diff --git a/src/w32fns.c b/src/w32fns.c index 6a576fc..1b628b0 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3168,16 +3168,7 @@ signal_user_input (void) Vquit_flag = Vthrow_on_input; /* Calling maybe_quit from this thread is a bad idea, since this unwinds the stack of the Lisp thread, and the Windows runtime - rightfully barfs. Disabled. */ -#if 0 - /* If we're inside a function that wants immediate quits, - do it now. */ - if (immediate_quit && NILP (Vinhibit_quit)) - { - immediate_quit = false; - maybe_quit (); - } -#endif + rightfully barfs. */ } } diff --git a/src/window.c b/src/window.c index 71a82b5..bc3f488 100644 --- a/src/window.c +++ b/src/window.c @@ -4770,7 +4770,6 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror) { ptrdiff_t count = SPECPDL_INDEX (); - immediate_quit = true; n = clip_to_bounds (INT_MIN, n, INT_MAX); wset_redisplay (XWINDOW (window)); @@ -4789,7 +4788,6 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror) /* Bug#15957. */ XWINDOW (window)->window_end_valid = false; - immediate_quit = false; } --------------25D08756DEE326A9ACD42ACF-- From MAILER-DAEMON Tue Jan 31 13:07:23 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYcpv-00005x-2n for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:07:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46626) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYcpt-0008W6-7n for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:07:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYcpp-00038B-9A for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:07:21 -0500 Received: from mail-ot0-x236.google.com ([2607:f8b0:4003:c0f::236]:35923) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYcpp-00037t-4V for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:07:17 -0500 Received: by mail-ot0-x236.google.com with SMTP id 32so113216148oth.3 for ; Tue, 31 Jan 2017 10:07:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=v60LqTZY7dxLhpz8R3kTOvoN6SRLuq4lcXeWsuYxZO0=; b=NCw4N0iyY4bU13xOBtu68/IiOGjN8usEtsWKdaB1zEUwEDOw0JhotDrW0Dsq2oEDo2 PSjYYKthT7aOJ26c6oJQjGVtlrEuEaUOImTBCKsiziwSjovezG0fq5n2tHNaAvUp+7b/ Nrq8r/yX3eBG16Q1cp9odhKBeRoonUT/+cnlrFT8VUJ0Tro5BS33EedGwBSH5YxCzdmU xtPVJLsjjUBLUVELKlkhTiEmWPurOp5kx6W9lrI/GFXaXtrjfY1YB3wonMw6gIMocV7U lurn73IBk/UYWF5nErWoBsuUGS+hTP1Bd6hxwyw/FIzpI+7SHcTWtb/o57gFLrZDXpbf vImQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=v60LqTZY7dxLhpz8R3kTOvoN6SRLuq4lcXeWsuYxZO0=; b=E/TtJkA3vZtprqlFwCbJVfnL36UQsz5ihhaGCjKsBPKsEOLqyDiykRHuvwxAy4/hB1 wcK9oZtLkA7+N1aE/DZKVgFMkulITr4GWTC/OxH/mnNnkVUCk84uxQHMmOP5oMX2GCx2 pUwBD6YUYVMuHR0izjbPv4sbj9DmXXrbhX7EmPOFJ2kcq3WIxAr8crUashPkr59aZCDH y/00BjRVYisPNaXtQeW1D6o4yE5G9VuoyYF4Yp1QdnwN8x4nVjvneHhM7UGBzM3JUtg0 Z8ZPiXtQH3bD36pCWGaTqObwkAL1sUm1zSwqqyK7TCwjQykrt3of2A064eQpTAM11109 ENbQ== X-Gm-Message-State: AIkVDXLAPK3vflm6CitIbxt+1u0JWznrx5GzMkKcnO/hhL8bPzZCsdaq3tRIfnLMFw4bzXjZXTliZ9gca/f/sw== X-Received: by 10.157.16.27 with SMTP id h27mr13107370ote.120.1485886036316; Tue, 31 Jan 2017 10:07:16 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Tue, 31 Jan 2017 18:07:05 +0000 Message-ID: Subject: Re: Debugging errors in bytecomp code? To: Stefan Monnier , emacs-devel@gnu.org Content-Type: multipart/mixed; boundary=001a113dffc05f3703054767cda8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:07:22 -0000 --001a113dffc05f3703054767cda8 Content-Type: multipart/alternative; boundary=001a113dffc05f36fe054767cda6 --001a113dffc05f36fe054767cda6 Content-Type: text/plain; charset=UTF-8 Stefan Monnier schrieb am Di., 31. Jan. 2017 um 15:36 Uhr: > > Is there a way to enter the debugger when a error in bytecomp code > > itself is encountered? Right now, all errors including compilation ones > > are printed to the *Compile-Log* buffer, making it impossible to get > > a backtrace for internal compiler errors. > > (setq byte-compiler-debug t) ? > > While there, here's a patch to document this variable: --001a113dffc05f36fe054767cda6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Stefan= Monnier <monnier@iro.umontr= eal.ca> schrieb am Di., 31. Jan. 2017 um 15:36=C2=A0Uhr:
> Is there a way to enter the debugger when= a error in bytecomp code
> itself is encountered? Right now, all errors including compilation one= s
> are printed to the *Compile-Log* buffer, making it impossible to get > a backtrace for internal compiler errors.

(setq byte-compiler-debug t) ?


While there, here's a patch to documen= t this variable:
=C2=A0
--001a113dffc05f36fe054767cda6-- --001a113dffc05f3703054767cda8 Content-Type: text/plain; charset=US-ASCII; name="0001-Document-variable-byte-compile-debug.txt" Content-Disposition: attachment; filename="0001-Document-variable-byte-compile-debug.txt" Content-Transfer-Encoding: base64 Content-ID: <159f5b550097c47b5e11> X-Attachment-Id: 159f5b550097c47b5e11 RnJvbSA0ZDgxZWI0NTBlZjUyMTliNTUxZTAxZTdkZjdmMDg3ODRmZGMzMjMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFR1ZSwgMzEgSmFuIDIwMTcgMTk6MDQ6MzYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBEb2N1 bWVudCB2YXJpYWJsZSBgYnl0ZS1jb21waWxlLWRlYnVnJwoKKiBsaXNwL2VtYWNzLWxpc3AvYnl0 ZWNvbXAuZWwgKGJ5dGUtY29tcGlsZS1kZWJ1Zyk6IERvY3VtZW50IHZhcmlhYmxlLgotLS0KIGxp c3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbCB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2J5 dGVjb21wLmVsIGIvbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVsCmluZGV4IGViM2Y0NmQzZDcu LjJjODA4YTViNGIgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbAorKysg Yi9saXNwL2VtYWNzLWxpc3AvYnl0ZWNvbXAuZWwKQEAgLTQxMSw3ICs0MTEsOCBAQCBieXRlLWNv bXBpbGUtY2FsbC10cmVlLXNvcnQKICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IG5hbWUpIChjb25z dCBjYWxsZXJzKSAoY29uc3QgY2FsbHMpCiAJCSAoY29uc3QgY2FsbHMrY2FsbGVycykgKGNvbnN0 IG5pbCkpKQogCi0oZGVmdmFyIGJ5dGUtY29tcGlsZS1kZWJ1ZyBuaWwpCisoZGVmdmFyIGJ5dGUt Y29tcGlsZS1kZWJ1ZyBuaWwKKyAgIklmIG5vbi1uaWwsIGJ5dGUgY29tcGlsZSBlcnJvcnMgd2ls bCBiZSByYWlzZWQgYXMgc2lnbmFscyBpbnN0ZWFkIG9mIGxvZ2dlZC4iKQogKGRlZnZhciBieXRl LWNvbXBpbGUtY29uc3RhbnRzIG5pbAogICAiTGlzdCBvZiBhbGwgY29uc3RhbnRzIGVuY291bnRl cmVkIGR1cmluZyBjb21waWxhdGlvbiBvZiB0aGlzIGZvcm0uIikKIChkZWZ2YXIgYnl0ZS1jb21w aWxlLXZhcmlhYmxlcyBuaWwKLS0gCjIuMTEuMC40ODMuZzA4N2RhN2I3Yy1nb29nCgo= --001a113dffc05f3703054767cda8-- From MAILER-DAEMON Tue Jan 31 13:13:28 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYcvo-0006NK-LZ for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:13:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYcvl-0006KJ-On for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:13:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYcvk-00066O-Pz for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:13:25 -0500 Received: from mail-ot0-x22d.google.com ([2607:f8b0:4003:c0f::22d]:36166) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYcvk-00065t-KE for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:13:24 -0500 Received: by mail-ot0-x22d.google.com with SMTP id 32so113351620oth.3 for ; Tue, 31 Jan 2017 10:13:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=cfoiiG7BU6AtXYKpHFAT+41haEYvW+QpthErYQPvHNs=; b=UTgkuJQlH+nNlPEstQJIDgCMuU9gKtv/G4SbQRGGYgD9Ok7UvDRwYSThHcud1w5HLd 23YvBGui/CTCHA7FRc5a7CWoYMcEhQWPRzZr2pXDRv6rLpYmlBM0o2UUXxCA+s0CEQDn 7h6Xe5eQkx0sxTuddx3QyNFw5sCbXhqKRGU6mN/ap1bPtZVSNVQzT6SADFu4dwE0DXHZ Xf+Q3HhenOg7nnuvxiux2+FjZOphiYhi9guVfD3N+zZW/0jAVyrY7nS0/v69vgj6RRVg KCYuLy/E1ZvuZ512bD9dN0NYJgg78jSNqD3senTC/pM5hxLaQ/Mb1937HuEXiGeX9Qp6 +7Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=cfoiiG7BU6AtXYKpHFAT+41haEYvW+QpthErYQPvHNs=; b=AItUbJfgAZjrn119Vlbu2da73HD1JJ8KdHXAjewJDwzM6M6tTC583/Jpxl1vS9e/MQ x0ms7xw8KKtLvBGHckixe2LidHfBgjMU6WtDAFXa/QMPdG+Rq0EpCadY29JMouVwLODE o2SmeaPSSbqB5tTtAJZEZyaqNVtUcWYTK5lgQKgn2kthpEDu2/HPtAlsLiCtLMwYC76u 6dnT6jdK25a8GErAKIcnsEom38R/cFkcZaRq7VvF2GP6Oa5YtmxFEmhqtGCGFYtKqbLC VdZ1jlZxX0K08Aj7Z/1QAac+AyQTVN2wwtl0fA2isdBHvx1IGUae3O79dmSJ7mdpghkZ jCyQ== X-Gm-Message-State: AIkVDXI0XuXP71SH8HwA+O7p9EFZS2pp1y5ikapKFPsjDjOeTn/epDldf0frVE3mNSNanHvuo9NZXbcdJ+GPLQ== X-Received: by 10.157.15.186 with SMTP id d55mr15120415otd.146.1485886404037; Tue, 31 Jan 2017 10:13:24 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Philipp Stephani Date: Tue, 31 Jan 2017 18:13:13 +0000 Message-ID: Subject: Re: Revisiting `setq-local`s signature To: Jordon Biondo , Emacs development discussions Content-Type: multipart/alternative; boundary=001a113deb204a1413054767e3e5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c0f::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:13:27 -0000 --001a113deb204a1413054767e3e5 Content-Type: text/plain; charset=UTF-8 Jordon Biondo schrieb am Mo., 30. Jan. 2017 um 19:39 Uhr: > A while ago I brought up the inconstant signatures of `setq`, > `setq-default` and `setq-local`. In short, I want `setq-local` to have the > same signature as `setq` and `setq-local`. (setq* VAR VAL VAR VAL...) > > See thread: > http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00448.html > > I appreciate Stefan's input back then, but I'd like to revisit the issue, > get further input, and see if I can change some minds about the issue. > > If you believe the variadic signature of `setq` and `setq-default` is not > ideal, consider that backwards compatibility erases any chance that those > two functions will lose that feature, and consider the benefits of being > consistently wrong over being inconsistently right. > > Are maintainers and users still opposed to this change? If not I'd be > happy to update the patch from the previous thread. > As a user, I'm still opposed to this change. I don't think consistency is important enough in this case to justify the "worse" signature. Consistency is not a goal in itself, but should serve the goal to increase readability and lower the barriers for new contributors. I don't think that the simpler signature of setq-local is in any way confusing because of this inconsistency. --001a113deb204a1413054767e3e5 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Jordon= Biondo <jordonbiondo@gmail.co= m> schrieb am Mo., 30. Jan. 2017 um 19:39=C2=A0Uhr:
A while ago I = brought up the inconstant signatures of `setq`, `setq-default` and `setq-lo= cal`. In short, I want `setq-local` to have the same signature as `setq` an= d `setq-local`. (setq* VAR VAL VAR VAL...)


I appreciate Stefan's input bac= k then, but I'd like to revisit the issue, get further input, and see i= f I can change some minds about the issue.
If you believe the var= iadic signature of `setq` and `setq-default` is not ideal, consider that ba= ckwards compatibility erases any chance that those two functions will lose = that feature, and consider the benefits of being consistently wrong over be= ing inconsistently right.

Are maintainers and users still opposed= to this change? If not I'd be happy to update the patch from the previ= ous thread.

As a user, I'm = still opposed to this change. I don't think consistency is important en= ough in this case to justify the "worse" signature. Consistency i= s not a goal in itself, but should serve the goal to increase readability a= nd lower the barriers for new contributors. I don't think that the simp= ler signature of setq-local is in any way confusing because of this inconsi= stency.
--001a113deb204a1413054767e3e5-- From MAILER-DAEMON Tue Jan 31 13:40:26 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdLu-0004jG-Cs for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:40:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdLr-0004hq-8x for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:40:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdLn-0007W6-69 for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:40:23 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:49577) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYdLm-0007UW-TB for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:40:19 -0500 Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v0VIeEjc017956 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 31 Jan 2017 18:40:15 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id v0VIeDC3000800 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 31 Jan 2017 18:40:14 GMT Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v0VIeCkf009053; Tue, 31 Jan 2017 18:40:13 GMT MIME-Version: 1.0 Message-ID: <82b4b3b7-ff61-42a7-b9fb-df3cc26a3f30@default> Date: Tue, 31 Jan 2017 10:40:10 -0800 (PST) From: Drew Adams Sender: Drew Adams To: Kaushal Modi , Stefan Monnier , emacs-devel@gnu.org Subject: Default value of variables named `*-function' [was: Change in files.el] References: <83mvebzh0k.fsf@gnu.org> <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <83wpdfxe96.fsf@gnu.org> In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6753.5000 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Source-IP: userv0021.oracle.com [156.151.31.71] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 141.146.126.69 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:40:25 -0000 > I would appreciate the consistency of variables named > with -function/-predicate suffixes to have a function > has a default value. Being able to use add-function on > just variables is very convenient (I use it to tweak > region-extract-function). The default values also serve > as good examples. My comment here is not about providing an implicit/automatic default value. (I doubt that that is needed or a good idea, but I could be wrong.) My comment is that the default value for a given variable whose value is intended to be a (single) function _should usually_ be function `ignore'. Not implicitly (see previous paragraph) but explicitly: (defvar foo-function 'ignore). TL;DR: Start `-function' vars out with value `ignore', possibly advised, so `remove-function' can get you back to a no-op. But please read on... If the default value needs to be a function that does something (which is common), then instead of using, as the default value, the function that provides the default behavior, use `ignore' as the default value AND advise it immediately with the function that provides the default behavior. Why? Because then you can use `remove-function' to get a no-op. You need not set or bind the variable to 'ignore' to do that; just repeated `remove-function' will get you to the no-op `ignore'. `remove-function' is analogous to setting a cons-valued=20 variable to its cdr. If `(cdr (last xs))' is not nil then xs is not a true list (it is dotted). Using `ignore' as the starting point for function advice is like=20 using () as the starting point (the last cdr) of a list. Function `ignore' is more or less to advice what () is to a list of functions - an identity element. Advising the function that is the value of a `*-function' variable gives you the possibility of, in effect, applying any number of functions. Using `:after-while' or `:before-until', for example, gives you much the same effect as you get with a normal or abnormal hook (as opposed to a `*-function' hook). But there is this big difference between a hook whose value is a list of functions (a la `add-hook') and a `*-function' variable whose value is a function that is advised with, say, `:after-while': With a hook that is a list of functions, you can remove them all using `remove-hook'. With an advised function, the value is always a function. You can of course change the value to `ignore', but you cannot, just using `remove-function', get to a no-op function. Unless, that is, the starting point (the default value) is `ignore'. Hence my suggestion: Start with `ignore', advising it immediately if some default behavior is called for. That lets users and code use just `add-function' and `remove-function' to get the effect they have with `add-hook' and `remove-hook': a (possibly empty) sequence of functions applied in order. I pointed this out in a parenthical remark in this post: http://lists.gnu.org/archive/html/emacs-devel/2016-10/msg00415.html (Note that one difference from a hook is that a hook does not privilege the first hook function in any way (or the last, depending on how you look at it). Removing advice is not equivalent to `remove-hook'. It never "empties the hook" completely - the function that was advised is still there after removal of all advice.) Here's a case in point: Variable `isearch-filter-predicate' has a function value or nil. This is legacy. Users and code can still bind it or set it to nil. But they cannot set it to a list of functions. IOW, it is basically a single-function variable (which would normally be named `*-function') - except for the ability to use nil instead. I have code that lets you (interactively) add to, remove from, etc. the behavior of `isearch-filter-predicate' on the fly. For more info, see https://www.emacswiki.org/emacs/DynamicIsearchFiltering. You can hit a key to change the current filter predicate in ways like these: C-z - Remove a predicate that you specify (default: last-added predicate). C-z & Add a predicate, AND-ing it as an `:after-while' filter. C-z % Add a predicate that requires search hits to match a regexp you provide. C-z || Add a predicate, OR-ing it as a `:before-until' filter. C-z |1 Replace the last-added filter by OR-ing it with another. C-z ~~ Complement the overall filter predicate. C-z ~1 Replace the last-added filter by its complement. C-z ! Set the overall filter predicate. C-z 0 Reset the overall filter predicate to its default value (`isearch-filter-visible'). C-z c Add a predicate that limits search between two columns that you specify. C-z @ Add a predicate that constrains searching within a=20 given distance of (near) another search pattern (you specify the distance and pattern). Since the default value of `isearch-filter-predicate' is not `ignore' but `isearch-filter-visible', you cannot just add and remove advice to get a no-op behavior or a behavior that is not a modification of `isearch-filter-visible'. Instead, you must set (or bind) `isearch-filter-predicate'. This is a defect, resulting from legacy: (1) using nil instead of `ignore' as the no-op filter and (2) using `isearch-filter-visible' instead of `ignore' as the default filter. It would be nice to be able to just add & remove advice, to control the behavior. But that always acts on function `isearch-filter-visible', not on `ignore'. Code should of course be _able_ to set or bind the variable value - no question about that. But things are more flexible if you can _also_ do pretty much anything to modify the behavior using just advice. If my suggestion were applied to the case of `isearch-filter-predicate' then (1) it would be renamed (e.g., to `isearch-filter-function'), and (2) its default value would be `ignore'. Now, because `isearch-filter-predicate' is legacy, (1) the variable renaming would need to deprecate (but continue to support) the old name, and (2) the variable value nil would need to continue to be supported. This is just an example, to try to get across the suggestion that (1) we use `ignore' as the (explicit, not automatic/implied) default value of variables named `*-function', and (2) for any such variable whose default behavior needs to be a no-op, we immediately (i.e., by default) advise it to provide that default behavior. That gives users & code two ways to change it to a no-op: (a) set the variable value to `ignore' or (b) remove all advice from the default function (`ignore'). In a way, this amounts to saying that what is said (correctly) in (elisp) `Advice combinators' about various kinds of advice being "comparable for single-function hooks to (add-hook..." is not also true for `remove-function' - unless the starting point is function `ignore'. Repeatedly applying `remove-hook' will eventually get you to (), but repeatedly applying `remove-function' will not get you to `ignore', unless... You might point out that if a user or code _does_ just set the value of such a variable to some other function than `ignore' then `remove-function' will _not_ get back to `ignore'. Clearly. The effect of setting or (with a little more work) binding can be had using just advice, but nothing prevents someone from not using advice to change the value. Dunno whether I was clear or I am missing something important. But WDOT? From MAILER-DAEMON Tue Jan 31 13:48:33 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdTl-0002kO-0U for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdTi-0002iO-Pm for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdTe-0002gD-Ov for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:30 -0500 Received: from gproxy6-pub.mail.unifiedlayer.com ([67.222.39.168]:58236) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cYdTe-0002fd-AN for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:26 -0500 Received: (qmail 18332 invoked by uid 0); 31 Jan 2017 18:48:20 -0000 Received: from unknown (HELO cmgw3) (10.0.90.84) by gproxy6.mail.unifiedlayer.com with SMTP; 31 Jan 2017 18:48:20 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id f6oG1u0072f2jeq016oKiZ; Tue, 31 Jan 2017 11:48:20 -0700 X-Authority-Analysis: v=2.1 cv=WOnsABcR c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IgFoBzBjUZAA:10 a=pGLkceISAAAA:8 a=Kq7ySIidErwuQKe5I2IA:9 a=6kGIvZw6iX1k4Y-7sg4_:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=83K29UJPBGWQFJDuhaIGg6gdlPdYtuRxgIK2XNxgmxo=; b=ZaNLgT2BVdP7zsRkW+xiMbRuPU yuDx4OfMjvmUmFtuf9KsIqUV+t8ruMQfaMLCSeFMjleqZvcukkn/9ZR4JEDzJyw4NVjTM8vAYeoSN SIzEoC3fwUSjBZ6KCQ/jXmG1s; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:34574 helo=pokyo) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cYdTT-0008Rg-S8; Tue, 31 Jan 2017 11:48:15 -0700 From: Tom Tromey To: Philipp Stephani Cc: Jordon Biondo , Emacs development discussions Subject: Re: Revisiting `setq-local`s signature References: X-Attribution: Tom Date: Tue, 31 Jan 2017 11:48:14 -0700 In-Reply-To: (Philipp Stephani's message of "Tue, 31 Jan 2017 18:13:13 +0000") Message-ID: <8737fzcbgx.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cYdTT-0008Rg-S8 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (pokyo) [174.16.146.181]:34574 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 67.222.39.168 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:48:31 -0000 >>>>> "Philipp" == Philipp Stephani writes: Philipp> As a user, I'm still opposed to this change. I don't think Philipp> consistency is important enough in this case to justify the Philipp> "worse" signature. Whether it's worse is a matter of opinion. FWIW I got bit by this recently - I copied a setq into a major mode definition, changing it to use setq-local ... oops. Not the worst thing, but an annoyance. Tom From MAILER-DAEMON Tue Jan 31 13:48:44 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdTw-0002yd-9G for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33162) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdTq-0002rH-QE for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdTm-0002jQ-OB for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:38 -0500 Received: from [195.159.176.226] (port=51979 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYdTm-0002id-Hm for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:48:34 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYdTe-0002WG-E4 for emacs-devel@gnu.org; Tue, 31 Jan 2017 19:48:26 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: CEDET Merge Date: Tue, 31 Jan 2017 13:48:17 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 26 Message-ID: <87a8a7t6a6.fsf@flea> References: <87r348ul9n.fsf@gmail.com> <87inpelu8i.fsf@gmail.com> <837f5uajlk.fsf@gnu.org> <87a8aqlqz8.fsf@gmail.com> <8360leahxr.fsf@gnu.org> <8760lelq68.fsf@gmail.com> <83wpdt8yo2.fsf@gnu.org> <87inpd650y.fsf@gmail.com> <8660ldabje.fsf@stephe-leake.org> <8737gh5sqw.fsf@gmail.com> <87k29tv0r4.fsf@engster.org> <8737gguipm.fsf@engster.org> <87h94vdj3n.fsf@gmail.com> <87o9z2sog1.fsf@engster.org> <87d1fe3hof.fsf@engster.org> <87lgtwtfuc.fsf@gmail.com> <874m0k1age.fsf@engster.org> <8760kzo7vp.fsf@gmail.com> <87o9yp8s9p.fsf@engster.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:pcgGO2K/eZ8czEdefPFHRSwrRb4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:48:42 -0000 On Tue, 31 Jan 2017 17:51:42 +0100 Lars Ingebrigtsen wrote: LI> David Engster writes: >>> Alright. Out of interest: is there a command for generating all of the >>> entries for a commit range? I'm only aware of C-x 4 a >>> (add-change-log-entry-other-window) which seems to generate a change log >>> entry for the current file and only for the latest commit. >> >> You can use 'C-x 4 A' in a diff buffer. I usually do this: >> >> . Do 'M-x vc-dir' and choose repository >> >> . Hit 'D' to create a diff for the directory you want to create a >> ChangeLog for >> >> . Hit 'C-X 4 A' LI> Oh, nice! Thanks. Didn't know about that one... THANK YOU David, can you add that method to emacs.git/CONTRIBUTE? Right now it only has the `add-change-log-entry-other-window' way. Or I can do it if you prefer... Ted From MAILER-DAEMON Tue Jan 31 13:55:25 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdaP-0002J4-4V for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:55:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34632) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdaN-0002Hn-H1 for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:55:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdaK-0004pC-Ca for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:55:23 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51565) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdaK-0004p5-AQ; Tue, 31 Jan 2017 13:55:20 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1037 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cYdaJ-0005gx-2t; Tue, 31 Jan 2017 13:55:20 -0500 Date: Tue, 31 Jan 2017 20:54:55 +0200 Message-Id: <83d1f3vz40.fsf@gnu.org> From: Eli Zaretskii To: Philipp Stephani CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org In-reply-to: (message from Philipp Stephani on Tue, 31 Jan 2017 18:07:05 +0000) Subject: Re: Debugging errors in bytecomp code? Reply-to: Eli Zaretskii References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:55:24 -0000 > From: Philipp Stephani > Date: Tue, 31 Jan 2017 18:07:05 +0000 > > (setq byte-compiler-debug t) ? > > While there, here's a patch to document this variable: Thanks, please also document it in the ELisp manual, and push both changes to emacs-25. From MAILER-DAEMON Tue Jan 31 13:57:50 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdck-0005DL-I9 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 13:57:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdci-0005Bo-Vf for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:57:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdcf-0005KQ-P3 for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:57:49 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:27670) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYdcf-0005Hm-F5 for emacs-devel@gnu.org; Tue, 31 Jan 2017 13:57:45 -0500 Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v0VIvfee012592 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 31 Jan 2017 18:57:41 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v0VIvfZE031016 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 31 Jan 2017 18:57:41 GMT Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v0VIvegb022088; Tue, 31 Jan 2017 18:57:40 GMT MIME-Version: 1.0 Message-ID: <97d4f384-5126-4fc4-8902-0bdb59fa5ae4@default> Date: Tue, 31 Jan 2017 10:57:39 -0800 (PST) From: Drew Adams Sender: Drew Adams To: Philipp Stephani , Jordon Biondo , Emacs development discussions Subject: RE: Revisiting `setq-local`s signature References: In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6753.5000 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Source-IP: aserv0022.oracle.com [141.146.126.234] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 141.146.126.69 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 18:57:49 -0000 > As a user, I'm still opposed to this change. I don't think > consistency is important enough in this case to justify the > "worse" signature. You don't say what is "worse" about it. > Consistency is not a goal in itself, but should serve the > goal to increase readability and lower the barriers for new > contributors. Yes, consistency is not a goal in itself. But you do not say how the suggested inconsistency here increases readability or lowers the barriers for new contributors. > I don't think that the simpler signature of setq-local is in > any way confusing because of this inconsistency. How is it simpler? What _prevents_ a user from setting only a single variable value each time s?he uses `setq-local'? Additional assignments would be optional. In fact, even the first assignment would be optional, if we follow the `setq' model. Is your statement about readability based on your feeling that the first of these two sexps is more readable than the=20 second? If so, there are at least some people who don't feel=20 that way. (progn (setq-local foo 1) (setq-local bar 2) (setq-local fot 8) (setq-local tof 3) (setq-local baz 2) (setq-local zab 4) (setq-local flt 6)) (setq-local foo 1 bar 2 fot 8 tof 3 baz 2 zab 4 flt 6) I don't see an argument that points to a downside to _allowing_ a variable number of assignments. From MAILER-DAEMON Tue Jan 31 14:14:06 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdsU-00046y-68 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 14:14:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39261) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdsQ-00043t-QO for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:14:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdsP-00021c-HZ for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:14:02 -0500 Received: from mail-lf0-x234.google.com ([2a00:1450:4010:c07::234]:33827) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYdsP-00020K-6G for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:14:01 -0500 Received: by mail-lf0-x234.google.com with SMTP id v186so216765847lfa.1 for ; Tue, 31 Jan 2017 11:14:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=XQIWDRwsZWxwevlu4ZUyqfXZNyHlvwDv4PlE0018kQM=; b=TSg9qkHW2Wpnd0qMkdN0Bqho2juxwO6vM4AnVt4YBJX4p13mg2n30Ej3pmx21rjkxV 9loQ92kuH8w7YWA3Gyc8sPDg8luxGORoIiWw6uw82kVJQ0xhL0bqjR9DCR++zO2R9obA Hqn7c0iwcmcY/V3ElaESIoAVx5L7k6qKVY2ghfMBSQrRodxEHOaaWS1o7lbWQ4xHXzRb HuvQn3k/XdsPwNrHvjMrSDeD5mv5/0oUSpPKoqyyplTfjiWD7u7ehRbQQbhJ4whxfT9t 4eOge1T9WQXAu7HJk4jVu0+iDlOfMJPtsy+KhZZOLV/X1eMVh2TF6/6dBxb32vpsmKl1 jN7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=XQIWDRwsZWxwevlu4ZUyqfXZNyHlvwDv4PlE0018kQM=; b=Tv/FJCd+zRMVRFlIy2fWArWP6wccGzWIbZZu2JABdwavwMj9NJfLSr4d7pQ+dzx9jD I/9UKePuDF/eTMeVS8VE8YyBF9Q26UWWbIqeInaeJhy24wuQsGuC840q8B9rMfQFy61g M8dGrxHemUbXYZZPIvTK61YCHkuJqY9qvrddpR1IkZ6RpQxdaPnqdl07oKmrCSFlKvXQ 6rClM+Aw3Jh5y5SSfn99YogHfOsISi5THggN0B45u7XEoQ4xd9xXZDjQh3OVT7glAHOy HGGVQ6wE6YHIQdb+WknzHqGuWoDv9ml3TYpGLgQxPfX093u8u7t4XwUiZa5w3Uj2MMvS +pDw== X-Gm-Message-State: AIkVDXL1eUJczW4uzxM/YPunSuaEej9u3efiAjGBG1LuuEmATg0NQbVFZJNq+8zIPkx0nWka+SnuNf5kisRHfw== X-Received: by 10.25.145.4 with SMTP id t4mr9319774lfd.171.1485890039562; Tue, 31 Jan 2017 11:13:59 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.19.193 with HTTP; Tue, 31 Jan 2017 11:13:59 -0800 (PST) In-Reply-To: <97d4f384-5126-4fc4-8902-0bdb59fa5ae4@default> References: <97d4f384-5126-4fc4-8902-0bdb59fa5ae4@default> From: Jordon Biondo Date: Tue, 31 Jan 2017 14:13:59 -0500 Message-ID: Subject: Re: Revisiting `setq-local`s signature To: Drew Adams Cc: Philipp Stephani , Emacs development discussions Content-Type: multipart/alternative; boundary=94eb2c1cd7a0fbca41054768bb10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 19:14:04 -0000 --94eb2c1cd7a0fbca41054768bb10 Content-Type: text/plain; charset=UTF-8 > > As a user, I'm still opposed to this change. I don't think consistency is > important enough in this case to justify the "worse" signature. Consistency > is not a goal in itself, but should serve the goal to increase readability > and lower the barriers for new contributors. I don't think that the simpler > signature of setq-local is in any way confusing because of this > inconsistency. FWIW the reason I am bringing this up again is that I watched as a coworker, and new emacser, struggled with the inconstantly while I helped them setup their config with a new major mode. I explained the issue and that I'd try to fix it before which is when they brought up the "better to be consistently wrong" idea which I thought made a good case. On Tue, Jan 31, 2017 at 1:57 PM, Drew Adams wrote: > > As a user, I'm still opposed to this change. I don't think > > consistency is important enough in this case to justify the > > "worse" signature. > > You don't say what is "worse" about it. > > > Consistency is not a goal in itself, but should serve the > > goal to increase readability and lower the barriers for new > > contributors. > > Yes, consistency is not a goal in itself. But you do not say > how the suggested inconsistency here increases readability or > lowers the barriers for new contributors. > > > I don't think that the simpler signature of setq-local is in > > any way confusing because of this inconsistency. > > How is it simpler? What _prevents_ a user from setting only > a single variable value each time s?he uses `setq-local'? > > Additional assignments would be optional. In fact, even the > first assignment would be optional, if we follow the `setq' > model. > > Is your statement about readability based on your feeling > that the first of these two sexps is more readable than the > second? If so, there are at least some people who don't feel > that way. > > (progn > (setq-local foo 1) > (setq-local bar 2) > (setq-local fot 8) > (setq-local tof 3) > (setq-local baz 2) > (setq-local zab 4) > (setq-local flt 6)) > > (setq-local foo 1 > bar 2 > fot 8 > tof 3 > baz 2 > zab 4 > flt 6) > > I don't see an argument that points to a downside to _allowing_ > a variable number of assignments. > --94eb2c1cd7a0fbca41054768bb10 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
As a user, I'm still opposed to this change. I= don't think consistency is important enough in this case to justify th= e "worse" signature. Consistency is not a goal in itself, but sho= uld serve the goal to increase readability and lower the barriers for new c= ontributors. I don't think that the simpler signature of setq-local is = in any way confusing because of this inconsistency.

FWIW the reason I am bringing this up again is that I watch= ed as a coworker, and new emacser, struggled with the inconstantly while I = helped them setup their config with a new major mode. I explained the issue= and that I'd try to fix it before which is when they brought up the &q= uot;better to be consistently wrong" idea which I thought made a good = case.=C2=A0

On Tue, Jan 31, 2017 at 1:57 PM, Drew Adams <drew.adams@oracle.c= om> wrote:
> As a user, I'm still opposed to this change. I don't think > consistency is important enough in this case to justify the
> "worse" signature.

You don't say what is "worse" about it.

> Consistency is not a goal in itself, but should serve the
> goal to increase readability and lower the barriers for new
> contributors.

Yes, consistency is not a goal in itself.=C2=A0 But you do not say how the suggested inconsistency here increases readability or
lowers the barriers for new contributors.

> I don't think that the simpler signature of setq-local is in
> any way confusing because of this inconsistency.

How is it simpler?=C2=A0 What _prevents_ a user from setting only a single variable value each time s?he uses `setq-local'?

Additional assignments would be optional.=C2=A0 In fact, even the
first assignment would be optional, if we follow the `setq'
model.

Is your statement about readability based on your feeling
that the first of these two sexps is more readable than the
second?=C2=A0 If so, there are at least some people who don't feel
that way.

(progn
=C2=A0(setq-local foo 1)
=C2=A0(setq-local bar 2)
=C2=A0(setq-local fot 8)
=C2=A0(setq-local tof 3)
=C2=A0(setq-local baz 2)
=C2=A0(setq-local zab 4)
=C2=A0(setq-local flt 6))

(setq-local foo 1
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bar 2
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 fot 8
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 tof 3
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 baz 2
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 zab 4
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 flt 6)

I don't see an argument that points to a downside to _allowing_
a variable number of assignments.

--94eb2c1cd7a0fbca41054768bb10-- From MAILER-DAEMON Tue Jan 31 14:20:55 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYdz5-00020X-AE for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 14:20:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYdz2-0001yI-Rf for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:20:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYdyz-0005RV-LI for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:20:52 -0500 Received: from [195.159.176.226] (port=40187 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYdyz-0005RG-EM for emacs-devel@gnu.org; Tue, 31 Jan 2017 14:20:49 -0500 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1cYdyq-0001li-QM for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:20:40 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Reply-To: emacs-devel@gnu.org To: emacs-devel@gnu.org From: Ted Zlatanov Subject: Re: RFC: defcustom display-popup-menus for display-popup-menus-p Date: Tue, 31 Jan 2017 14:20:38 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Lines: 8 Message-ID: <8760kvt4s9.fsf@flea> References: <87y3z9hxs1.fsf@lifelogs.com> <83r35110yv.fsf@gnu.org> <87r351hv1y.fsf@lifelogs.com> <83mvfp0zzd.fsf@gnu.org> <87d1gdhzm4.fsf@lifelogs.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:hWNBx7ATfAE4a05+DpA7mSCXQGA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 19:20:53 -0000 On Tue, 27 Dec 2016 15:43:31 -0500 Ted Zlatanov wrote: TZ> Is this OK? I tried to be as clear and concise as possible since that TZ> function's docstring is already pretty long. I pushed my suggested change; thanks for your help! Ted From MAILER-DAEMON Tue Jan 31 15:11:57 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYemT-00024o-8Y for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 15:11:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52339) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYemR-00021T-7x for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:11:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYemQ-0001yH-I4 for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:11:55 -0500 Received: from mail-oi0-x229.google.com ([2607:f8b0:4003:c06::229]:36579) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYemP-0001xl-AK; Tue, 31 Jan 2017 15:11:53 -0500 Received: by mail-oi0-x229.google.com with SMTP id u143so221256983oif.3; Tue, 31 Jan 2017 12:11:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=x3u0mFT+OScBm7KsPB+jXAJeI7YTMPWX154PgfM/QsE=; b=r9pvoMrdKTYLAmsMSinrn6gqU6SZkj0fzo31dqBijuHXQ67/8eApwNsS/zUDxmVD+n QWJfcACtoBuxZb50G47LFiXoMsfFwFLBp4xRvypKM0MGsBPJ3+l0fi9+vLl2PIuw7RZj PPp/SIcJyDcn8mLVXoXL151XaB5jPz7frtnkYWMDxz43U35rYjuN+nUXPnO/D2n2XxeB ZR14sq0qS0AKNgw5HrDbgMC0qk6FuMQBuXeJe9wZgDftb3bPwBJoGA70v2WdBj6/5EV3 9cC2cUIJmzAceHja4hWtleaIMLb+FkpRP0xgu7vf0EFHkUPcHLGksaO+F69+NIp917ro JN4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=x3u0mFT+OScBm7KsPB+jXAJeI7YTMPWX154PgfM/QsE=; b=NU2WiQMk24YrOyNWcBk2SwAH7QkPvP6LmIw2yu/hIvzWb7jqRgFWw4OEVS3obr5jS0 ldYHMPPqg8/x9E2b+1k7VO+ArYvHw0mfC8IIpMJw+gCOTJX/A0YTC8V9KnH7LwWfwCVB krkkAa/x+IKkD9+XDaVHEXOTLYeMcWplXZt2y3v2ssNHGIAHpbvvwVMUR8XFoiicD9pY Gr15SJpvxjEyu/3EsNkCnlRFypTN3XdGROc5MtkDl4PEmZVXZEFFdooDH7jwG6E2pNvN Hk/vajTYddonFbWhR6JYHlGUbCmueBmEW7eYHQneUFyEyOqtp4opdvWcee7jADKdK2qZ AUaw== X-Gm-Message-State: AIkVDXKVBDqzHvcoIfEME1pxgSVUqOCsgateZ/9qcWOnBwEC1cLxoIBdT6ZwcIcuwSHNgi2M5lm5br5Q1tXSVg== X-Received: by 10.202.172.136 with SMTP id v130mr16781296oie.167.1485893512729; Tue, 31 Jan 2017 12:11:52 -0800 (PST) MIME-Version: 1.0 References: <83d1f3vz40.fsf@gnu.org> In-Reply-To: <83d1f3vz40.fsf@gnu.org> From: Philipp Stephani Date: Tue, 31 Jan 2017 20:11:41 +0000 Message-ID: Subject: Re: Debugging errors in bytecomp code? To: Eli Zaretskii Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org Content-Type: multipart/alternative; boundary=001a113ce9bc00201c0547698bfb X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 20:11:56 -0000 --001a113ce9bc00201c0547698bfb Content-Type: text/plain; charset=UTF-8 Eli Zaretskii schrieb am Di., 31. Jan. 2017 um 19:55 Uhr: > > From: Philipp Stephani > > Date: Tue, 31 Jan 2017 18:07:05 +0000 > > > > (setq byte-compiler-debug t) ? > > > > While there, here's a patch to document this variable: > > Thanks, please also document it in the ELisp manual, and push both > changes to emacs-25. > Done. --001a113ce9bc00201c0547698bfb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


Eli Za= retskii <eliz@gnu.org> schrieb am= Di., 31. Jan. 2017 um 19:55=C2=A0Uhr:
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Tue, 31 Jan 2017 18:07:05 +0000
>
>=C2=A0 (setq byte-compiler-debug t) ?
>
> While there, here's a patch to document this variable:

Thanks, please also document it in the ELisp manual, and push both
changes to emacs-25.

Done.=C2=A0
--001a113ce9bc00201c0547698bfb-- From MAILER-DAEMON Tue Jan 31 15:35:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYf8u-0002ir-3A for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57824) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYf8q-0002ej-MX for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYf8m-000807-Jk for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:04 -0500 Received: from gproxy4-pub.mail.unifiedlayer.com ([69.89.23.142]:59810) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1cYf8m-0007yw-1i for emacs-devel@gnu.org; Tue, 31 Jan 2017 15:35:00 -0500 Received: (qmail 19090 invoked by uid 0); 31 Jan 2017 20:34:48 -0000 Received: from unknown (HELO cmgw4) (10.0.90.85) by gproxy4.mail.unifiedlayer.com with SMTP; 31 Jan 2017 20:34:48 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw4 with id f8aj1u00Q2f2jeq018amc6; Tue, 31 Jan 2017 13:34:48 -0700 X-Authority-Analysis: v=2.1 cv=Pets2ERd c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IkcTkHD0fZMA:10 a=IgFoBzBjUZAA:10 a=uUEaCB_WrpbFSeCVnhoA:9 a=QEXdDO2ut3YA:10 a=L03L2QfmqWoA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID: Date:Subject:To:From:Sender:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=fUfQGIwkEr8BTXI9ogzqQWi+n0VJVkdvIzZBjYGSheo=; b=fZLehJaR/2HJ8LCJ6fYfdqu4zP IhGi8ZTIK+jVDYyJIOoJprp0Tkj9OsCq1J1k2cBj/3NZuToHepxMLSICHjdCTmmh3fE/B3w4RVOk8 fD350zstwl0mx0qIU5Sg2wp30; Received: from 174-16-146-181.hlrn.qwest.net ([174.16.146.181]:50708 helo=bapiya) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cYf8U-00027i-J9; Tue, 31 Jan 2017 13:34:42 -0700 From: Tom Tromey To: Emacs discussions Subject: html, css, and js modes working together X-Attribution: Tom Date: Tue, 31 Jan 2017 13:34:40 -0700 Message-ID: <87o9ynarz3.fsf@tromey.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box522.bluehost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 174.16.146.181 X-Exim-ID: 1cYf8U-00027i-J9 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 174-16-146-181.hlrn.qwest.net (bapiya) [174.16.146.181]:50708 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 69.89.23.142 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 20:35:06 -0000 I tried to send this last night but it bounced for some reason. This patch changes the html, css, and js modes to work together a bit. With this, the contents of a " + (1 + (prog1 css-mode-syntax-table + (let ((start (nth 2 (match-data))) + (end (nth 3 (match-data)))) + (funcall css-syntax-propertize-function start end) + (add-text-properties start end '(syntax-multiline t)))))) + ("\\(\\(\n\\|.\\)*?\\)" + (1 + (prog1 js-mode-syntax-table + (let ((start (nth 2 (match-data))) + (end (nth 3 (match-data)))) + (js-syntax-propertize start end) + (add-text-properties start end '(syntax-multiline t)))))) + sgml-syntax-propertize-rules) + "Syntactic keywords for `html-mode'.") + +(defun html-indent-line () + "Indent the current line as HTML." + (interactive) + (let* ((context (save-excursion (car (last (sgml-get-context))))) + (tag (when (and context + (eq (sgml-tag-type context) 'open) + (> (point) (sgml-tag-start context))) + (sgml-tag-name context)))) + (cond + ((equal tag "style") + ;; CSS. + (save-restriction + (let ((base-indent (save-excursion + (goto-char (sgml-tag-end context)) + (sgml-calculate-indent)))) + (narrow-to-region (sgml-tag-end context) (point-max)) + (let ((prog-indentation-context (list base-indent + (cons (point-min) nil) + nil))) + (with-smie-rules (css-smie-grammar #'css-smie-rules) + (smie-indent-line)))))) + ((equal tag "script") + ;; Javascript. + (save-restriction + (let ((base-indent (save-excursion + (goto-char (sgml-tag-end context)) + (sgml-calculate-indent)))) + (narrow-to-region (sgml-tag-end context) (point-max)) + (let ((prog-indentation-context (list base-indent + (cons (point-min) nil) + nil))) + (js-indent-line))))) + (t + ;; HTML. + (sgml-indent-line))))) + + + ;;;###autoload (define-derived-mode html-mode sgml-mode '(sgml-xml-mode "XHTML" "HTML") "Major mode based on SGML mode for editing HTML documents. @@ -2270,6 +2345,8 @@ html-mode (eval-after-load \"sgml-mode\" \\=3D'(aset sgml-char-names ?\\=3D' nil)) =20 \\{html-mode-map}" + ;; A hack to avoid a circular dependency. + (require 'js) (setq-local sgml-display-text html-display-text) (setq-local sgml-tag-face-alist html-tag-face-alist) (setq-local sgml-tag-alist html-tag-alist) @@ -2281,6 +2358,11 @@ html-mode (lambda () (char-before (match-end 0)))) (setq-local add-log-current-defun-function #'html-current-defun-name) (setq-local sentence-end-base "[.?!][]\"'=E2=80=9D)}]*\\(<[^>]*>\\)*") + (setq-local indent-line-function #'html-indent-line) + + (setq-local syntax-propertize-function html-syntax-propertize-function) + (add-hook 'syntax-propertize-extend-region-functions + #'syntax-propertize-multiline 'append 'local) =20 (when (fboundp 'libxml-parse-html-region) (defvar css-class-list-function) From MAILER-DAEMON Tue Jan 31 16:56:14 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYgPO-0007pI-PE for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 16:56:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYgPJ-0007mP-R2 for emacs-devel@gnu.org; Tue, 31 Jan 2017 16:56:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYgPF-0002nl-Ow for emacs-devel@gnu.org; Tue, 31 Jan 2017 16:56:09 -0500 Received: from smtp129.ord.emailsrvr.com ([173.203.6.129]:54277) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYgPF-0002lq-Jm; Tue, 31 Jan 2017 16:56:05 -0500 Received: from smtp17.relay.ord1a.emailsrvr.com (localhost [127.0.0.1]) by smtp17.relay.ord1a.emailsrvr.com (SMTP Server) with ESMTP id 2AD8C4021A; Tue, 31 Jan 2017 16:56:00 -0500 (EST) X-Auth-ID: board-president@tomahawk-creek-hoa.com Received: by smtp17.relay.ord1a.emailsrvr.com (Authenticated sender: board-president-AT-tomahawk-creek-hoa.com) with ESMTPSA id 4D3B74015F; Tue, 31 Jan 2017 16:55:59 -0500 (EST) X-Sender-Id: board-president@tomahawk-creek-hoa.com Received: from Takver4 (76-218-37-33.lightspeed.kscymo.sbcglobal.net [76.218.37.33]) (using TLSv1.2 with cipher AES128-GCM-SHA256) by 0.0.0.0:587 (trex/5.7.12); Tue, 31 Jan 2017 16:56:00 -0500 From: Stephen Leake To: Lars Ingebrigtsen Cc: David Engster , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> Date: Tue, 31 Jan 2017 15:55:56 -0600 In-Reply-To: (Lars Ingebrigtsen's message of "Tue, 31 Jan 2017 15:22:20 +0100") Message-ID: <8660ku7v2r.fsf@stephe-leake.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.91 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 173.203.6.129 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 21:56:13 -0000 Lars Ingebrigtsen writes: > John Wiegley writes: > >> We're moving toward a future where Emacs.git will represent "core >> Emacs", and only contain what core needs (plus a few historical bits, >> I'm sure). There should be no argument for keeping a project in core >> just to gain auxiliary benefits. > > I'm massively unenthusiastic about this future. Things in ELPA has to > be backwards-and-forwards compatible with a wide Emacs version range, no, they don't. That is one possible policy, but each package decides for itself whether to follow it. You can have ;; package-requires: ((emacs "25.2")) if you want. If you want to maintain two versions, one for older emacs, one for newer, you'll need two different package names, similar to gtk2, gtk3. It does appear we need a "next release" branch in ELPA git similar to "master" in emacs git, so the released ELPA package is still available, but those working on emacs master can access the leading edge ELPA packages. > Emacs doesn't seem to have a massive surfeit of developers, so I wonder > where this plan comes from. Several developers prefer the decoupled development cycle of ELPA packages. It is primarily up to the package developers whether a package is in core or not, at least until it is clear that there is no advantage to being in core. -- -- Stephe From MAILER-DAEMON Tue Jan 31 18:19:30 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYhhy-000139-Rk for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 18:19:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58950) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYhhx-00012z-78 for emacs-devel@gnu.org; Tue, 31 Jan 2017 18:19:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYhhw-0008No-2t for emacs-devel@gnu.org; Tue, 31 Jan 2017 18:19:29 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:33874) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYhhr-0008LQ-Hs; Tue, 31 Jan 2017 18:19:23 -0500 Received: by mail-wm0-x241.google.com with SMTP id c85so1658842wmi.1; Tue, 31 Jan 2017 15:19:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:user-agent :mail-followup-to:date:message-id:mime-version :content-transfer-encoding; bh=QpglS3cFUlfXbiXbKByKlwPMxGuDOYGXfSL5gcsCVuU=; b=Yy7BQFEf6bJkm5bWvEzGPgUWZt+c8yw4ZKsyLBLe2ouoNEtnfJMKyU+ODicdxYMk7c lYxyIFLJ7BgdUBLQJDrI/3PrDr9BX5am3YHnDOVWrZBdQLktWh9W4Fzeio8E3DCvCVRn gf1kexAfn/w+TMVrYEzv0k/IFAJB5F/QGzI3ofG+hOB8LM53pgr1pNTeW1P9AELlBnJU h+mHTqo05aYwhPUXaLXoimqNoC2PEnXX3NCKLd6LTKHLMzePkGoZ5sJyDjpe+PpRZ8/3 x8ldUJOnVg8w0hBBY0Io8kE5ZXNHQArD5DyF8r66qDFyIQBz8rH+WeIgQ9MbR+eRmlQQ ObSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references :user-agent:mail-followup-to:date:message-id:mime-version :content-transfer-encoding; bh=QpglS3cFUlfXbiXbKByKlwPMxGuDOYGXfSL5gcsCVuU=; b=N7ThBw+kB/8rz50l4DvT8bKS+M7/Iwxj76Tv1arNfaX7MiPwuyGrZIeyar1UqJKwna SkHYjbN/vQMKjr4XGxROCzZop4mMWCCweM6SnDRfaKOCn6TWr2A/kMUaPKVq8S4k8cvU clbGUyUCQOAjLOoGWlWi1Wnw3LuGjv4f+oR1TeYBQcoUuk6LuvHt3oVJoLMq+1B2hHcB fWX16CE+Jrzd//o/gAu4p2HB8df5u2JJcrEYuBpD24F3C3lnrf5LlZcFmcYKLn4dz0zn ADZp6PKhfcHT8En5ZC+ucI4ABnI89X8rb82keKASSOC9COoXhrdIjmqZBPiF/RFEAtJg HcMA== X-Gm-Message-State: AIkVDXJoVhqp/P/M3MMRg2Xx9VhqK08TiRFCeQ6sl4eerZpV5WE/zY5dmXXRcZ+9eGNXWQ== X-Received: by 10.223.152.2 with SMTP id v2mr26412765wrb.109.1485904762252; Tue, 31 Jan 2017 15:19:22 -0800 (PST) Received: from localhost (host-78-149-164-155.as13285.net. [78.149.164.155]) by smtp.gmail.com with ESMTPSA id s17sm30800493wrc.6.2017.01.31.15.19.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2017 15:19:21 -0800 (PST) From: Aaron Ecay To: Lars Ingebrigtsen , David Engster Cc: Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Subject: Re: Sync up the org in emacs master to org maint branch? In-Reply-To: References: <87k29d7zvw.fsf@engster.org> <87fuk08i01.fsf@engster.org> User-Agent: Notmuch/0.23.5 (https://notmuchmail.org) Emacs/26.0.50.1 (x86_64-unknown-linux-gnu) X-Clacks-Overhead: GNU Terry Pratchett Mail-Followup-To: Lars Ingebrigtsen , David Engster , Bastien Guerry , Emacs developers , emacs-org list , Phillip Lord , Kaushal Modi Date: Tue, 31 Jan 2017 23:19:19 +0000 Message-ID: <87inou7r7s.fsf@trex> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 23:19:30 -0000 Hi Lars, 2017ko urtarrilak 31an, Lars Ingebrigtsen-ek idatzi zuen: >=20 > John Wiegley writes: >=20 >> We're moving toward a future where Emacs.git will represent "core >> Emacs", and only contain what core needs (plus a few historical bits, >> I'm sure). There should be no argument for keeping a project in core >> just to gain auxiliary benefits. >=20 > I'm massively unenthusiastic about this future. Things in ELPA has to > be backwards-and-forwards compatible with a wide Emacs version range, This seems like a technical limitation of ELPA=CA=BCs current implementatio= n, rather than a conceptual impossibility. If ELPA made available (on the server for downloading, and in the client for installing) old versions of packages, then users could always be offered the latest compatible version, but not later incompatible ones. Developers would have to be a little more diligent about declaring their packages=CA=BC dependencies on emacs major versions (or on other packages, = if they depend on parts of core that have migrated to ELPA), but this would be a small hurdle. Aaron PS Speaking of dependency management, I=CA=BCd be more worried that this ki= nd of approach will accelerate the advent of dependency hell with ELPA packages...but I think all package repos have to confront that problem eventually. So I=CA=BCd file that thought under =E2=80=9Cinevitable growin= g pains=E2=80=9D rather than =E2=80=9Carguments against=E2=80=9D. --=20 Aaron Ecay From MAILER-DAEMON Tue Jan 31 19:26:18 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYikc-0008FI-C7 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 19:26:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39536) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYikW-0008DO-H2 for emacs-devel@gnu.org; Tue, 31 Jan 2017 19:26:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYikT-00083Q-CO for emacs-devel@gnu.org; Tue, 31 Jan 2017 19:26:12 -0500 Received: from mail-qt0-x235.google.com ([2607:f8b0:400d:c0d::235]:36655) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYikT-00083H-4H for emacs-devel@gnu.org; Tue, 31 Jan 2017 19:26:09 -0500 Received: by mail-qt0-x235.google.com with SMTP id k15so250988361qtg.3 for ; Tue, 31 Jan 2017 16:26:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=i1DgIDeJTTl32yF9vM9Z4j9tJAz+D7/TRqh8VSwz4K8=; b=M6C0awM7MbNGGASEQHBzl2CiSkJiLoXlqwva+Up1MV1nQCZXgIqkzfby7614uaA1+x 51vGuqZ0m35T7Skd88RMZkHB3ODNlrDPIWkd6Iw/PFAmXuzr4jR3yXEzoqt8waMq4ezP LAs85Y3uqPd0T/C+eK8RRu0JwLB6es/jacGcxgTMRM7Af2NSpmXOSXtUboV8BLlZ651o O83lKE3NFHWJXqGBC4WO19ktvbKSt34nIFggvL2yWs53jcxhPbyCnzc2HTsy7NBHW7XV pR3d8Mmu44AkkzQLr1XTIFmV4m5xD4XTd+NNpAGnQGBqkJFcsZcm2KJliuwBLepDic8G lDuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=i1DgIDeJTTl32yF9vM9Z4j9tJAz+D7/TRqh8VSwz4K8=; b=aesdAAG1e68SdPQAeTO0QyfpuhxX/PMppysGck1CwxIZlyVhiUDIxpM0f6OYnAdyua 4YtbuGlWP9P1XLJVvndMR9Flbc37W28gr6ytMQVDpN0YmemQYN6eCho+DiA+ITJWRTID KToVo9FoQDsRT6rD5TusQdpU+s5kBF9rxZmoEpVWGitmkexulfUsQg3HTz4x7kvOP/T7 m2s4AG1gZ8TCbIYZVG2nRB6d2x942JbOYueFeQEXMGHLyut2pXnfIRFGL0mUUrbQUwS+ CZNyoI6YoNQd6nYVaRgFsMuVdEcqqGgK0LLryeFquTVfAq2pTLnz2kT30E0myulYqbJ5 6D0A== X-Gm-Message-State: AIkVDXKvGMRlLXn2Ib1kfOddAFUU22pn+ToYujmae3xIzEFvAXXguOTHfoHcZdvbqvI+NBeN X-Received: by 10.200.2.8 with SMTP id k8mr48031qtg.163.1485908767942; Tue, 31 Jan 2017 16:26:07 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id r30sm16892762qtc.15.2017.01.31.16.26.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jan 2017 16:26:07 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 72E3D60D6A; Tue, 31 Jan 2017 19:26:06 -0500 (EST) Date: Tue, 31 Jan 2017 19:26:06 -0500 From: Mark Oteiza To: emacs-devel@gnu.org Subject: [PATCH] Add XDG utility library Message-ID: <20170201002606.GA4224@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.7.2+27 (e4ad1dc9bfbd) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 00:26:16 -0000 * etc/NEWS: Mention new library. * lisp/xdg.el: New file. --- Will otherwise commit in a week or so. etc/NEWS | 2 + lisp/xdg.el | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 lisp/xdg.el diff --git a/etc/NEWS b/etc/NEWS index 12ff21f39a..5f0f440b0b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -677,6 +677,8 @@ processes on exit. ** New Elisp data-structure library 'radix-tree'. +** New library 'xdg' with utilities for some XDG standards and specs. + * Incompatible Lisp Changes in Emacs 26.1 diff --git a/lisp/xdg.el b/lisp/xdg.el new file mode 100644 index 0000000000..51218e339d --- /dev/null +++ b/lisp/xdg.el @@ -0,0 +1,144 @@ +;;; xdg.el --- XDG specification and standard support -*- lexical-binding: t -*- + +;; Copyright (C) 2017 Free Software Foundation, Inc. + +;; Author: Mark Oteiza +;; Created: 27 January 2017 +;; Keywords: files, data + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3 of the License, +;; or (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; Library providing some convenience functions for the following XDG +;; standards and specifications +;; +;; - XDG Base Directory Specification +;; - Thumbnail Managing Standard +;; - xdg-user-dirs configuration + +;;; Code: + + +;; XDG Base Directory Specification +;; https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + +(defmacro xdg--dir-home (environ default-path) + (declare (debug (stringp stringp))) + (let ((env (make-symbol "env"))) + `(let ((,env (getenv ,environ))) + (if (or (null ,env) (not (file-name-absolute-p ,env))) + (expand-file-name ,default-path) + ,env)))) + +(defun xdg-config-home () + "Return the base directory for user specific configuration files." + (xdg--dir-home "XDG_CONFIG_HOME" "~/.config")) + +(defun xdg-cache-home () + "Return the base directory for user specific cache files." + (xdg--dir-home "XDG_CACHE_HOME" "~/.cache")) + +(defun xdg-data-home () + "Return the base directory for user specific data files." + (xdg--dir-home "XDG_DATA_HOME" "~/.local/share")) + +(defun xdg-runtime-dir () + "Return the value of $XDG_RUNTIME_DIR." + (getenv "XDG_RUNTIME_DIR")) + +(defun xdg-config-dirs () + "Return the config directory search path as a list." + (let ((env (getenv "XDG_CONFIG_DIRS"))) + (if (or (null env) (string= env "")) + '("/etc/xdg") + (parse-colon-path env)))) + +(defun xdg-data-dirs () + "Return the data directory search path as a list." + (let ((env (getenv "XDG_CONFIG_DIRS"))) + (if (or (null env) (string= env "")) + '("/usr/local/share/" "/usr/share/") + (parse-colon-path env)))) + + +;; Thumbnail Managing Standard +;; https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html + +(defun xdg-thumb-uri (filename) + "Return the canonical URI for FILENAME. +If FILENAME has absolute path /foo/bar.jpg, its canonical URI is +file:///foo/bar.jpg" + (concat "file://" (expand-file-name filename))) + +(defun xdg-thumb-name (filename) + "Return the appropriate thumbnail filename for FILENAME." + (concat (md5 (xdg-thumb-uri filename)) ".png")) + +(defun xdg-thumb-mtime (filename) + "Return modification time of FILENAME as integral seconds from the epoch." + (floor (float-time (nth 5 (file-attributes filename))))) + + +;; XDG User Directories +;; https://www.freedesktop.org/wiki/Software/xdg-user-dirs/ + +(defconst xdg-line-regexp + (eval-when-compile + (rx "XDG_" + (group-n 1 (or "DESKTOP" "DOWNLOAD" "TEMPLATES" "PUBLICSHARE" + "DOCUMENTS" "MUSIC" "PICTURES" "VIDEOS")) + "_DIR=\"" + (group-n 2 (or "/" "$HOME/") (*? (or (not (any "\"")) "\\\""))) + "\"")) + "Regexp matching non-comment lines in xdg-user-dirs config files.") + +(defvar xdg-user-dirs nil + "Alist of directory keys and values.") + +(defun xdg--user-dirs-parse-line () + "Return pair of user-dirs key to directory value in LINE, otherwise nil. +This should be called at the beginning of a line." + (skip-chars-forward "[:blank:]") + (when (and (/= (following-char) ?#) + (looking-at xdg-line-regexp)) + (let ((k (match-string 1)) + (v (match-string 2))) + (when (and k v) (cons k v))))) + +(defun xdg--user-dirs-parse-file (filename) + "Return alist of xdg-user-dirs from FILENAME." + (let (elt res) + (with-temp-buffer + (insert-file-contents filename) + (goto-char (point-min)) + (while (not (eobp)) + (setq elt (xdg--user-dirs-parse-line)) + (when (consp elt) (push elt res)) + (forward-line))) + res)) + +(defun xdg-user-dir (name) + "Return the path of user directory referred to by NAME." + (when (null xdg-user-dirs) + (setq xdg-user-dirs + (xdg--user-dirs-parse-file + (expand-file-name "user-dirs.dirs" (xdg-config-home))))) + (cdr (assoc name xdg-user-dirs))) + +(provide 'xdg) + +;;; xdg.el ends here -- 2.11.0 From MAILER-DAEMON Tue Jan 31 20:26:08 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYjgW-0003l4-Nm for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 20:26:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYjgU-0003kt-6y for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:26:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYjgT-0005cH-H4 for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:26:06 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:56579) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYjgP-0005Yw-TM; Tue, 31 Jan 2017 20:26:01 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id v111PwlC023653; Tue, 31 Jan 2017 20:25:59 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 8CC49AE0B7; Tue, 31 Jan 2017 20:25:58 -0500 (EST) From: Stefan Monnier To: emacs-devel@gnu.org Cc: Thien-Thi Nguyen Subject: Re: [elpa] master 48cbab3: [gnugo int] Avoid latent order-of-evaluation error. Message-ID: References: <20170131213559.9292.29086@vcs.savannah.gnu.org> <20170131213600.2F81222015F@vcs.savannah.gnu.org> Date: Tue, 31 Jan 2017 20:25:58 -0500 In-Reply-To: <20170131213600.2F81222015F@vcs.savannah.gnu.org> (Thien-Thi Nguyen's message of "Tue, 31 Jan 2017 21:36:00 +0000 (UTC)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.1 X-NAI-Spam-Rules: 3 Rules triggered GEN_SPAM_FEATRE=0.1, EDT_SA_DN_PASS=0, RV5936=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5936> : inlines <5671> : streams <1730964> : uri <2368672> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 01:26:07 -0000 > + ;; Albeit elegant, this assumes LtR OoE, unfortunately. Elisp is not Scheme: the order of evaluation is L2R. Stefan From MAILER-DAEMON Tue Jan 31 20:39:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYjt1-0000Fy-MG for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 20:39:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52355) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYjsy-0000DS-TG for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:39:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYjsv-0000sw-Q8 for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:39:00 -0500 Received: from mail-it0-x22c.google.com ([2607:f8b0:4001:c0b::22c]:37715) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYjsv-0000sl-Ke for emacs-devel@gnu.org; Tue, 31 Jan 2017 20:38:57 -0500 Received: by mail-it0-x22c.google.com with SMTP id r185so7827555ita.0 for ; Tue, 31 Jan 2017 17:38:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:mime-version; bh=gyM6fter1CCn0FUaCu9jYNpDYmQOjXFyfaPX1CbUNtw=; b=j/IneqQZytOMe9vuZgV2RCZ/TlWrKbLEa6DY8szf5RebhoqroQd1fjBoxvsHHiS3eO QjuaZ8kGT/PSGzK+ZGA33ZQd0HANb+cnYeZl1Tv551yWfzm3bfH70ezjtMKF+U63dErx ljZI0helvoHqDK0feyLTTngnGJd7y4DYrVHuW/i06O6i2N80oPkQBI4FzHF9jke8NY5g 3p1NvQrXy6l1v2nbvRVRAqMBP6eAYkQlFUIUry83SEfj2TUjqwjQiYz8yDMIRK62dFk6 qNbY56XLsDyM4qwnAwbzBsteJjf3pTs2zYSoiEBRyefcR0JmGQV59Ff5ZDRDFBBGhJgq 7ygg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :mime-version; bh=gyM6fter1CCn0FUaCu9jYNpDYmQOjXFyfaPX1CbUNtw=; b=lBQ9ZnB9LlL692V08BzJNug5+Yjq2/cnN7hWpP0/J5TUTlX6GE3P0ExqJa8FUhyJyv lZDUCiydMahMqAegqfwtZ+u5pbCjuJnXj/jZ4dpFBh4wYJJJwzA045xwWkkM223G0UIN c1nCcCvjm8qQNCu56Wv8LTk4bfq1S7L9CKkv/EBy/c/V6XYlwaoMxMOFlLluSF0bafZA KlXk/tNat7l+M1YMP1gKj6C4bYk/VvpC3NeKFwdY7wqcejfDokv86ON4r+loVwlKZi8J 34eQmDG3TaQfV61nVLKNSlSWYYX0wrtd31oU0M182hExJ8jXK48T6ufoAtD5uyid+nnx nQug== X-Gm-Message-State: AIkVDXLPBvgsCV5mgDpDqRdHkC4629E3G7CXJZWYJd4TV9pVypaXPBw3fMmbnZP6AD/1PQ== X-Received: by 10.36.37.145 with SMTP id g139mr23327798itg.24.1485913136950; Tue, 31 Jan 2017 17:38:56 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id 96sm11092028ioh.27.2017.01.31.17.38.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2017 17:38:56 -0800 (PST) Sender: Noam Postavsky From: npostavs@users.sourceforge.net To: emacs-devel@gnu.org, dgutov@yandex.ru Subject: [Emacs-diffs] master 8ba236e 2/2: Escape dash in xref rgrep regexp Date: Tue, 31 Jan 2017 20:40:05 -0500 Message-ID: <874m0er8ne.fsf@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c0b::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 01:39:01 -0000 > + ;; 'grep -E -foo' results in 'grep: oo: No such file or directory'. > + ;; while 'grep -e -foo' inexplicably doesn't. "-E" says to use extended regexp syntax for patterns. "-e" says the next argument is a pattern. > + (when (eq (aref regexp 0) ?-) > + (setq regexp (concat "\\" regexp))) > (let* ((grep-find-template (replace-regexp-in-string "-e " "-E " > grep-find-template t t)) So they're not interchangeable, and I don't see why we're replacing "-e" with "-E". I guess (replace-regexp-in-string "" " -E" grep-find-template t t) would make more sense. From MAILER-DAEMON Tue Jan 31 22:03:12 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYlCS-0003uw-0h for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35879) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYlCP-0003tK-28 for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYlCO-000363-7E for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:09 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58539) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYlCO-00035z-4a for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:08 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cYlCN-00040d-JH; Tue, 31 Jan 2017 22:03:07 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: emacs-devel@gnu.org CC: emacs-devel@gnu.org In-reply-to: <87zii7nvwi.fsf@lifelogs.com> (message from Ted Zlatanov on Tue, 31 Jan 2017 09:31:25 -0500) Subject: Re: Docker Hub requires nonfree software to log in Reply-to: rms@gnu.org References: <87o9yor53e.fsf@lifelogs.com> <87zii7nvwi.fsf@lifelogs.com> Message-Id: Date: Tue, 31 Jan 2017 22:03:07 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 03:03:10 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > RS> A concrete practical question: does it work to prepare and upload > RS> images without running nonfree JS code? > RS> If so, we can go ahead and upload images. > Yes, correct. Just think of it as a package repository with automated > builds. You can upload your own package, built locally. That's what we > may do for the Guix images, if the Guix developers are interested. That's good. What exactly is it that requires nonfree JS code to use? And what job does it do? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Tue Jan 31 22:04:03 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYlDH-0004Hn-On for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 22:04:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36435) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYlDC-0004Ed-GT for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:04:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYlDB-0003S9-PL for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:58 -0500 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58588) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYlDB-0003S4-Mn for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:03:57 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cYlDB-0006MA-9a; Tue, 31 Jan 2017 22:03:57 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: emacs-devel@gnu.org CC: emacs-devel@gnu.org In-reply-to: <87vasvnvty.fsf@lifelogs.com> (message from Ted Zlatanov on Tue, 31 Jan 2017 09:32:57 -0500) Subject: Re: official Emacs Docker image Reply-to: rms@gnu.org References: <87mvukq7gd.fsf_-_@lifelogs.com> <877fcyg5ah.fsf@lifelogs.com> <87h9c0b6bd.fsf@lifelogs.com> <878txa9zvx.fsf@lifelogs.com> <87k29gsgam.fsf@lifelogs.com> <87k29cmq1u.fsf@elephly.net> <8737g0qw7z.fsf@lifelogs.com> <87vasvnvty.fsf@lifelogs.com> Message-Id: Date: Tue, 31 Jan 2017 22:03:57 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 03:04:00 -0000 [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Create a Docker Hub account and let me know what it is. I'll add you to > the owners so you can upload the image. Here we seem to have returned to the use of the accounts that require nonfree Javascript code to create. Please DO NOT post anything using a Docker Hub account if making or using such an account requires nonfree software. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From MAILER-DAEMON Tue Jan 31 22:49:20 2017 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cYlv6-0000FH-Q2 for mharc-emacs-devel@gnu.org; Tue, 31 Jan 2017 22:49:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42196) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYlv4-0000Ek-8e for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:49:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYlv1-0005X0-6Y for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:49:18 -0500 Received: from mail-qt0-x233.google.com ([2607:f8b0:400d:c0d::233]:33034) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cYlv1-0005W6-1j for emacs-devel@gnu.org; Tue, 31 Jan 2017 22:49:15 -0500 Received: by mail-qt0-x233.google.com with SMTP id v23so253339007qtb.0 for ; Tue, 31 Jan 2017 19:49:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=9L+hdtznEgDcwZCo/SSRzdFoFKYMepRHOvsRRE5lnGc=; b=bEeC768ZrH6Ci+BDk2DTI+AI9frLlP0aed9m0fC1m1pJ85ZMOkfe9FdwI14YLwcREQ dOuTVZJ5SGnTVKaUKigl2oXp9A2C/yWVt/LV0qtBS7wdfw9PEjQrrxqKVLeucuWIQISR 2Ir8dplXgPmJUzxnVFcZjXDXKkDAs9ESIz359qbavbihOMkqEA+Y0k++bCMsTOre/6pg CnlLJ73tVWdezJa4TS+xx+aFSJHXRRQwEdXg9VeVeSVD3nXE1l54/dHtqf+WZSStkdSZ wG5dw8ISjwZAlkj1UaEhJujtaDFI8/MU8ZsWEU71hd5/Xq3UUOsmuClhmmUGapDw25f9 vG/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=9L+hdtznEgDcwZCo/SSRzdFoFKYMepRHOvsRRE5lnGc=; b=GVZ126FPJNHB33KepFhACADp6ncO0m8umO6UmsThueWg7AnxDSwzoZqTIAGQ7j3cRv s2pi+frUdrw+spnQa0DfcY9HqHtLbkQodlHjqkVH2GBeit/EvnhVAFNZB1XK3s/wuraj tDKhqsVvAyJfZZhQpzM/X/p84LQJMD78TLW7FN3dI7irN03hzSSn1S9DGVYdQciIcHPh soCnQfrJqeX9BsoXU7N29YfbHj5dCgeRLMCahKEJFS+BzpJ1Wh8dME2OC38G51X68pTn gqfZz1qOdlI21szpl6hu3Yiu/t+zWFecD7a4tRmYI4O7s+GMu+XeJcjc20AyIX9bOa/F ajvA== X-Gm-Message-State: AIkVDXLsQK3cfVOBDeUPwPPx4KQTxKEibQLZTc7AFRFFfbwZybZ8753aDCiX/dqIkzcVKL1o X-Received: by 10.200.53.71 with SMTP id z7mr654638qtb.203.1485920954182; Tue, 31 Jan 2017 19:49:14 -0800 (PST) Received: from holos.localdomain (pool-173-67-40-97.bltmmd.fios.verizon.net. [173.67.40.97]) by smtp.gmail.com with ESMTPSA id f126sm8172447qkc.47.2017.01.31.19.49.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jan 2017 19:49:13 -0800 (PST) Received: by holos.localdomain (Postfix, from userid 1000) id 510C060D6A; Tue, 31 Jan 2017 22:49:12 -0500 (EST) Date: Tue, 31 Jan 2017 22:49:12 -0500 From: Mark Oteiza To: Eli Zaretskii Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org Subject: Re: Change in files.el Message-ID: <20170201034912.GA15975@holos.localdomain> References: <83bmurz0y9.fsf@gnu.org> <8360kzyxor.fsf@gnu.org> <83ziibxg7j.fsf@gnu.org> <83y3xvxfbs.fsf@gnu.org> <87bmurjack.fsf@udel.edu> <83sho3x9gb.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83sho3x9gb.fsf@gnu.org> User-Agent: Mutt/1.7.2+27 (e4ad1dc9bfbd) (2016-11-26) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Feb 2017 03:49:19 -0000 On 28/01/17 at 09:37pm, Eli Zaretskii wrote: > > From: Mark Oteiza > > Date: Sat, 28 Jan 2017 13:41:31 -0500 > > Cc: Eli Zaretskii , emacs-devel@gnu.org > > > > Wasn't the reason any of these defaults changed simply so that > > add-function would work? > > Why is it important to support add-function, when we already have a > variable that can be assigned a function value? If someone wants to > customize the feature which will call a variable's value if non-nil, > they just need to write a function which does what they want and > assign it to that variable, no need for add-function. What am I > missing? You're not missing anything.