From unknown Sun Jun 22 17:12:56 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#67687 <67687@debbugs.gnu.org> To: bug#67687 <67687@debbugs.gnu.org> Subject: Status: Feature request: automatic tags management Reply-To: bug#67687 <67687@debbugs.gnu.org> Date: Mon, 23 Jun 2025 00:12:56 +0000 retitle 67687 Feature request: automatic tags management reassign 67687 emacs submitter 67687 Jon Eskin severity 67687 wishlist thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 07 06:44:09 2023 Received: (at submit) by debbugs.gnu.org; 7 Dec 2023 11:44:09 +0000 Received: from localhost ([127.0.0.1]:41266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBCnY-0007qs-TY for submit@debbugs.gnu.org; Thu, 07 Dec 2023 06:44:09 -0500 Received: from lists.gnu.org ([2001:470:142::17]:35474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBCnW-0007qA-Qc for submit@debbugs.gnu.org; Thu, 07 Dec 2023 06:44:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rBCnD-00013m-Jv for bug-gnu-emacs@gnu.org; Thu, 07 Dec 2023 06:43:47 -0500 Received: from mail-yw1-x112e.google.com ([2607:f8b0:4864:20::112e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rBCnC-0000fO-2M for bug-gnu-emacs@gnu.org; Thu, 07 Dec 2023 06:43:47 -0500 Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5d05ff42db0so5738457b3.2 for ; Thu, 07 Dec 2023 03:43:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701949424; x=1702554224; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=T2vNih/Pp7o1vFHrs9FSL6dWNy5QcLKMAxoB00cs1OY=; b=gFeysFoNrTCYI7UmRn7XNW/0Qk8NP07yeX/o/nXDI9/qVOlC6Ni96m0Z2Aaryu8imJ RKbj9mVIiqOUB/Ft4p7IaJ5Fiwh8Pgd4eZJkoK9YdLa1ZwfrVTTAmZmYr0WtoU/K0+KU AjxQMwlUZYKKUKEK9XrIa9GZD7riSp++MYWvgkiuPVFhKpeHHzjPwwTEMlEQ+ti3lUl0 yLnUnN0h4h4FbctzxQrtn6mkfTfO02rccqpfBe1mo8EmPdfNyi/5P80Uf3vbQwq1D++0 P640ZyHs2/kZ0y9jQifrd4cMcWpQtTBQTC7cICjevsQeMThVXPiEJuGR498Bmza1dBVi QBQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701949424; x=1702554224; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=T2vNih/Pp7o1vFHrs9FSL6dWNy5QcLKMAxoB00cs1OY=; b=AL8e/x0cDrAuq8rhH0ERUuIsJE3EYVsr+77Rm85a+iJZliMlV6q3V0+B76v3U8AmNd JsToTTp9lK9j2os7NL39LbDdK64RgV9GNkhyArJkgqMXGUJtz7ogcBTE+hifvXHfVsYA 02R0TVqERU7J9QgbNv9rfYEyS3jDQJoDfvZEfmhV5PcmDIaLOFZ4ZyGjOT8X1bX3oqp7 6f3yJr6QiWVw3HwLLkmseno/10gUa7aCTM5MmcEfNFvUPSuMK5/6yNOFyVcEn5IWmvOf htfYZiQ8adOxZ7NUgIAeFYRh42ZWaVHtRlxnB1fZVqxPAhHVsD+COvriwdvhmPcccWvh rkag== X-Gm-Message-State: AOJu0YwFq2nR16ax1il005LiJXOi/zwzeHCHK8HX3XZBNGxRAThG581b D9KOcdoJgMavrbS46zUTnn/KT4td1RW2tzg3eiRCOqur7bQ= X-Google-Smtp-Source: AGHT+IG83BbooWqc4N92o5Ymsyn3CLfnKeLF921+7mUzkQez6BUK+8dObslm5wOmtj+5p5jXsmUikvghb9e7B3b4aMw= X-Received: by 2002:a81:a14b:0:b0:5d7:1941:2c33 with SMTP id y72-20020a81a14b000000b005d719412c33mr2113066ywg.96.1701949423737; Thu, 07 Dec 2023 03:43:43 -0800 (PST) MIME-Version: 1.0 From: Jon Eskin Date: Thu, 7 Dec 2023 06:43:32 -0500 Message-ID: Subject: Feature request: automatic tags management To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary="000000000000d3e22f060be9fa2a" Received-SPF: pass client-ip=2607:f8b0:4864:20::112e; envelope-from=eskinjp@gmail.com; helo=mail-yw1-x112e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --000000000000d3e22f060be9fa2a Content-Type: text/plain; charset="UTF-8" Sublime text and the vim extension vim-gutentags ( https://github.com/ludovicchabant/vim-gutentags) allow you to open projects and immediately go to symbol definitions and references without any configuration or setup. They also handle background indexing as you work. It would be very nice if Emacs had an option to work the same way, where I could open a project and immediately navigate symbols built from the project.el root, without having to manually futz around with tags. --000000000000d3e22f060be9fa2a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sublime text and the vim extension vim-gutentags (https://github.com/lud= ovicchabant/vim-gutentags) allow you to open projects and immediately g= o to symbol definitions and references without any configuration or setup. = They also handle background indexing as you work.

It would be very n= ice if Emacs had an option to work the same way, where I could open a proje= ct and immediately navigate symbols built from the project.el root, without= having to manually futz around with tags.
--000000000000d3e22f060be9fa2a-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 07 10:57:26 2023 Received: (at 67687) by debbugs.gnu.org; 7 Dec 2023 15:57:26 +0000 Received: from localhost ([127.0.0.1]:42834 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBGkg-0004MQ-7U for submit@debbugs.gnu.org; Thu, 07 Dec 2023 10:57:26 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:60839) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBGkc-0004M9-Gg for 67687@debbugs.gnu.org; Thu, 07 Dec 2023 10:57:25 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 36BB55C0244; Thu, 7 Dec 2023 10:57:04 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 07 Dec 2023 10:57:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm3; t= 1701964624; x=1702051024; bh=fQMj4N0xblVpl1+TCLd+o0cs8BQwUhb3iYa JpsRWw18=; b=ST/q19NSUWkOzD4ZmOp+0aN6BKk4VjiaLa+Le1nT86X2PcCTU3F aznv3MX/CAnURwK14pgH9l/9prIuxKCmfQt2k73/oIehJrd7C3sN+ynGHxA68WN2 s3QMQnNWsU8xQxnaWztV6kZ/6dec/mS8Upso3Q+xzxBocMU0KDABPBeuH3WXOm1B vgeKPIkjSst8sOyOycL62Izqe29863FM+buaT9+ygq7WpBXwyro5X8ZWRZJ6VMTj ZuLI8xRYqJBWSwrw6iLpiLYXapf7NDXw4QE7puZp6Lrqzx5wo/Ua/YGzZWoVyAfC Cmd5PW/fVnzVTqD6EvNG3oQ8FuCpueAEBnw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1701964624; x= 1702051024; bh=fQMj4N0xblVpl1+TCLd+o0cs8BQwUhb3iYaJpsRWw18=; b=K cJaABewdn63IPk4oVfCBtQfRvLyKw5MhauyANL4Zi9i7m1Xti/D0V4cdV408GG8b MEXRPLN9sNQHzUECIcaHuXmEytiOjTgqHmcw0qwDAkro7vB0qghGVvGEustcI7Za wRm36Je7w1uXtVP98lROE4L0yQS04vI5xoznF0LSPB0JnP++sz612u9zLgSN+kyo LoHF+KUlKC5/aLVTQ3Qzrn2ODQ506yrwEhvVn4L2UJ1t3EKt16JcU8nGia8x3M0i LDYXNWLU+s1AQ4x78YkXSCtkMbElhYDCYIZOC9Rtev6JSAx0kiKupV5cbDpJZGAv b5pAS5hDzZkH6CH+8KU8A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudekfedgvddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpedvleejleeghedtuddvtedugfefjeejgfelveethedvhfffledvhfetvefhgffh geenucffohhmrghinhepghhithhhuhgsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 7 Dec 2023 10:57:03 -0500 (EST) Message-ID: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> Date: Thu, 7 Dec 2023 17:57:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Jon Eskin , 67687@debbugs.gnu.org References: From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 67687 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) Hi! On 07/12/2023 13:43, Jon Eskin wrote: > Sublime text and the vim extension vim-gutentags > (https://github.com/ludovicchabant/vim-gutentags > ) allow you to open > projects and immediately go to symbol definitions and references without > any configuration or setup. They also handle background indexing as you > work. > > It would be very nice if Emacs had an option to work the same way, where > I could open a project and immediately navigate symbols built from the > project.el root, without having to manually futz around with tags. I have some related work that's been lying in a drawer as of late. Do you know what gutentags does when a file is deleted, or added externally, or you switch to a different Git branch and many files change their contents at once? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 07 14:57:42 2023 Received: (at 67687) by debbugs.gnu.org; 7 Dec 2023 19:57:42 +0000 Received: from localhost ([127.0.0.1]:43193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBKVC-0006YS-6Z for submit@debbugs.gnu.org; Thu, 07 Dec 2023 14:57:42 -0500 Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]:48291) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rBKV8-0006Y5-1j for 67687@debbugs.gnu.org; Thu, 07 Dec 2023 14:57:40 -0500 Received: by mail-qk1-x729.google.com with SMTP id af79cd13be357-77db736aae5so52951785a.0 for <67687@debbugs.gnu.org>; Thu, 07 Dec 2023 11:57:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701979040; x=1702583840; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=F7nLyzO/Mma4n4yj9VXEElmZ73TcZGHZEQ9yJBHtdpw=; b=OGn81deE9U0cs48IUWTcsk8h8Drr3ZDHZS+vvzCxn9kGcRewFB/57dO3IjDuaFkZwU yWBKYk42A5yZwPvV5EXqYnlUOJxTIRF7WH92//nJUCsi+o46BVvbOHiVtp6gIa4O/Vzf +34eFtRzFR9Ps8Zr8WdONwOQwTlMtFtzE/0LJaYGY6bBfHkx8Nkz5F2D8SGvRzNlx5eq YUVfawIE2arUwhTMr0xI1qhP/T5aVL4c/xvFTbakE9SSPWeJcP7YaMVPyCqWGiH26QXQ PYKIv7dSuAjtRTY/K2wBhSwud3mDf2agNopQ6MRZ22gGW/3wTbwEpgyLitCVmaoCSZjW RmhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701979040; x=1702583840; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F7nLyzO/Mma4n4yj9VXEElmZ73TcZGHZEQ9yJBHtdpw=; b=R+ajW+GzdPXbUHh/6nPqccrokIFHa8AW3+LB4mCvHPUwB7Y+VdnXdc7LmoR9Fe1bCA /gTt4goeZsCAKJFxl0YVyaAfaDx2anCJgu/O/59MbxJhjf3/Tcy9x0rCA9g0Kn8e/a8V 3stkq9K41By7mFE7KBm1xqRBCs9WDoEVHifK2TEXA5X1vfN49WFwfapCMel1smrguOrS zoda9ETArUoBKB5EmAtHUx20wmfcChY/60KMf+CawhkI8pj25WiE5AP899oQvbNfuqZ7 BsmalgfxLIY+F1uiMh+B/m8/qyrkyDy6ei/Lm91GdZiUp74v0bpN0bpP2YI/7AWPzbxu Msfg== X-Gm-Message-State: AOJu0Yw604exC0zz5fzrF9LAS1/rpH8ZlBvDT9pRpTSya3JYnJOKBFY3 YD3NuPoaA2rhcE+0oe+XRBE= X-Google-Smtp-Source: AGHT+IE3LOxAM1I1XxiDzb77mPaxeWP7Yksui4NsIcLr3NQlj2S54cFLUQhiZzPFbEyuv+5STsBKjQ== X-Received: by 2002:a05:620a:828c:b0:77b:c47e:727f with SMTP id ox12-20020a05620a828c00b0077bc47e727fmr1597919qkn.28.1701979039752; Thu, 07 Dec 2023 11:57:19 -0800 (PST) Received: from smtpclient.apple (pool-173-73-227-157.washdc.fios.verizon.net. [173.73.227.157]) by smtp.gmail.com with ESMTPSA id b5-20020a05620a270500b0076ce061f44dsm148131qkp.25.2023.12.07.11.57.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Dec 2023 11:57:19 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\)) Subject: Re: bug#67687: Feature request: automatic tags management From: Jon Eskin In-Reply-To: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> Date: Thu, 7 Dec 2023 14:57:08 -0500 Content-Transfer-Encoding: quoted-printable Message-Id: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> To: Dmitry Gutov X-Mailer: Apple Mail (2.3774.200.91.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Dmitry! > I have some related work that's been lying in a drawer as of late. >=20 > Do you know what gutentags does when a file is deleted, or added = externally, or you switch to a different Git branch and many files = change their contents at once? To my knowledge, changes to tags due to files being added or deleted are = regenerated only when vim is started inside the project. Switching to a = different git branch should work the same, because it=E2=80=99s only = looking at the filesystem. If the editor is already running, such changes will not be picked up; = even if you try to navigate to a tag that no longer exists, I do not = believe that it will regenerate tags automatically until you close and = re-open the editor. When you save a file inside the editor, it will wipe out tags for that = individual file and regenerate them. Here are some docs for customization options you might find interesting: *gutentags_generate_on_missing* g:gutentags_generate_on_missing If set to 1, Gutentags will start generating an = initial tag file if a file is open in a project where no = tags file is found. See |gutentags_project_root| for = how Gutentags locates the project. When set to 0, Gutentags will only generate the = first time the file is saved (if |gutentags_generate_on_write| is set to 1), or = when |GutentagsUpdate| or |GutentagsGenerate| is run. Defaults to 1. = *gutentags_generate_on_new* g:gutentags_generate_on_new If set to 1, Gutentags will start generating the = tag file when a new project is open. A new project = is considered open when a buffer is created for a = file whose corresponding tag file has not been "seen" = yet in the current Vim session -- which pretty much = means when you open the first file in a given source = control repository. When set to 0, Gutentags won't do anything = special. See also |gutentags_generate_on_missing| and |gutentags_generate_on_write|. Defaults to 1. = *gutentags_generate_on_write* g:gutentags_generate_on_write If set to 1, Gutentags will update the current project's tag file when a file inside that = project is saved. See |gutentags_project_root| for how = Gutentags locates the project. When set to 0, Gutentags won't do anything on = save. This means that the project's tag file won't = reflect the latest changes, and you will have to run |GutentagsUpdate| manually. Defaults to 1. = *gutentags_generate_on_empty_buffer* g:gutentags_generate_on_empty_buffer If set to 1, Gutentags will start generating the = tag file even if there's no buffer currently open, = as long as the current working directory (as returned by |:cd|) is inside a known project. This is useful if you want Gutentags to generate = the tag file right after opening Vim. Defaults to 0. More can be found here: = https://github.com/ludovicchabant/vim-gutentags/blob/master/doc/gutentags.= txt= From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 09 21:41:45 2023 Received: (at 67687) by debbugs.gnu.org; 10 Dec 2023 02:41:45 +0000 Received: from localhost ([127.0.0.1]:49231 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rC9lH-0007OH-TG for submit@debbugs.gnu.org; Sat, 09 Dec 2023 21:41:44 -0500 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]:56261) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rC9lE-0007O0-TK for 67687@debbugs.gnu.org; Sat, 09 Dec 2023 21:41:42 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 8FCD332002E8; Sat, 9 Dec 2023 21:41:20 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sat, 09 Dec 2023 21:41:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm3; t=1702176080; x=1702262480; bh=M2 VsqNgb53ARWndVAH/PU4GbNQ4tthgbB1CPm0AfxbM=; b=rZrJWj6R4Xek1FZ2eE VVeBSD9qY78ekhSpNcJHZtKqdw1pl4nhS+7sQeFhhGQLiLJNyTWYpZjog+bY4E8Y hlGs4c5N0DydOVZQXlhPILUeFvRRmt2XJYZK1M75S1z6AU/+ii+N7hQlwQgcIAB0 HVEJTKE9AnlFwxnQhL0cL7Q6ttKM4ER4+nusWwiCtSwXwC2/GyKLXpz3rKpwZ6Gc hAo6lUM9IoLLxWFbDqr6YIyYAFmsFTRuHVEA4JREEvDQ9QX8BVQT/xEXaqLl1Abu CdrJG3bZ5LutIxQfA8HES532WNqW5QyrtpaknOkwkYH05BGJ9oKtaf4pWuHoPjsH HkvA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; t=1702176080; x=1702262480; bh=M2VsqNgb53ARW ndVAH/PU4GbNQ4tthgbB1CPm0AfxbM=; b=ompTh3NE+zZzMEryQg60O71/Rwo50 xchS5C1S2a3d2pimRcrg6OI+BKWPdTAa25eZPadgPIcq8+TmdDFmWRInym88W0NI fKFmvIAx7ccBxWMZoLX3Pl1+ls8lcq/yYfheKKL8bkEBvN71p1KqoCflbLDjaDEs NarZiH0a8Ucn45RMsFkx5hC7sY9NAgsdOxoj1K92lz66E3PREHUmbQpyj1iiCB1d fjaPl7g2x6gPDJZqsFW+EZYxhpoPH7KqmwzN6ehWA2qSFUlb0pFN7c8RaOkTHZuv txdJ87j4ujuaYIq+XTLltdfJhjbMWso/r6Mj21oSJqeVWn/6CA6FG9bTA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudekledggeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehteekgfetieeujeeuvddtvdelteffleejteduvdefffejieehheeuteffveei jeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 9 Dec 2023 21:41:18 -0500 (EST) Content-Type: multipart/mixed; boundary="------------GvAN742nYxTQ3XNRwqPixTlj" Message-ID: Date: Sun, 10 Dec 2023 04:41:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Jon Eskin References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> From: Dmitry Gutov In-Reply-To: X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) This is a multi-part message in MIME format. --------------GvAN742nYxTQ3XNRwqPixTlj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Jon! On 07/12/2023 21:57, Jon Eskin wrote: >> I have some related work that's been lying in a drawer as of late. >> >> Do you know what gutentags does when a file is deleted, or added externally, or you switch to a different Git branch and many files change their contents at once? > To my knowledge, changes to tags due to files being added or deleted are regenerated only when vim is started inside the project. Switching to a different git branch should work the same, because it’s only looking at the filesystem. > > If the editor is already running, such changes will not be picked up; even if you try to navigate to a tag that no longer exists, I do not believe that it will regenerate tags automatically until you close and re-open the editor. > > When you save a file inside the editor, it will wipe out tags for that individual file and regenerate them. All right, sounds like this kind of limited guarantees (tags getting out of date occasionally, e.g. when switching branches) is apparently okay. See attached the aforementioned related work, with some updates and simplifications (e.g. this version of the patch doesn't require a change to project.el). Usage: 'M-x etags-regen-mode' to turn it on (or customize this variable, to have it on from the beginning of each session), then as soon as you use features based on tags (such as M-. or completion) the table should get generated automatically for the current project, and then get updated when files are edited and saved. Some features could be added later (such as asynchronous updates or -- someday -- filenotify based invalidations), but I think the current state is useful already. Feedback welcome. --------------GvAN742nYxTQ3XNRwqPixTlj Content-Type: text/x-patch; charset=UTF-8; name="etags-regen.diff" Content-Disposition: attachment; filename="etags-regen.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmQzMDg1OTFjNDc1IDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tbGFuZy1y ZWdleHAtYWxpc3QKKyAgICAgICAgICAuCisgICAgICAgICAgKCgoImMiICJvYmpjIikgLgor ICAgICAgICAgICAgKCIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJcXChbXlwiXStcXClc Ii9cXDEvIgorICAgICAgICAgICAgICIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJbXlwi XStcIixbIFx0XVxcKFtBLVphLXowLTlfXStcXCkvXFwxLyIpKSkpCisgICAgICAgICAoZXRh Z3MtcmVnZW4taWdub3JlcyAuICgidGVzdC9tYW51YWwvZXRhZ3MvIikpCiAgICAgICAgICAo dmMtcHJlcGFyZS1wYXRjaGVzLXNlcGFyYXRlbHkgLiBuaWwpKSkKICAoYy1tb2RlIC4gKChj LWZpbGUtc3R5bGUgLiAiR05VIikKICAgICAgICAgICAgIChjLW5vaXNlLW1hY3JvLW5hbWVz IC4gKCJJTkxJTkUiICJOT19JTkxJTkUiICJBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5ERUZJ TkVEIgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwgYi9saXNw L3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZWNiNmU4YWUyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3Byb2dt b2Rlcy9ldGFncy1yZWdlbi5lbApAQCAtMCwwICsxLDM1NSBAQAorOzs7IGV0YWdzLXJlZ2Vu LmVsIC0tLSBBdXRvLShyZSlyZWdlbmVyYXRpbmcgdGFncyAgLSotIGxleGljYWwtYmluZGlu ZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDIxLCAyMDIzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRyeSBHdXRvdiA8ZG1pdHJ5QGd1 dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK Kzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBh bG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBTaW1wbGUgdGFncyBnZW5l cmF0aW9uIHdpdGggYXV0b21hdGljIGludmFsaWRhdGlvbi4KKworOzs7IENvZGU6CisKKyhy ZXF1aXJlICdjbC1saWIpCisKKyhkZWZncm91cCBldGFncy1yZWdlbiBuaWwKKyAgIkF1dG8t KHJlKWdlbmVyYXRpbmcgdGFncy4iCisgIDpncm91cCAndG9vbHMpCisKKyhkZWZ2YXIgZXRh Z3MtcmVnZW4tLXRhZ3MtZmlsZSBuaWwpCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QgbmlsKQorKGRlZnZhciBldGFncy1yZWdlbi0tbmV3LWZpbGUgbmlsKQorCisoZGVjbGFy ZS1mdW5jdGlvbiBwcm9qZWN0LXJvb3QgInByb2plY3QiKQorKGRlY2xhcmUtZnVuY3Rpb24g cHJvamVjdC1maWxlcyAicHJvamVjdCIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4tcHJv Z3JhbSAoZXhlY3V0YWJsZS1maW5kICJldGFncyIpCisgICJOYW1lIG9mIHRoZSBldGFncyBl eGVjdXRhYmxlLiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBoZXJlIHdvdWxk IGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9uIGl0IGJlaW5n IGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisgIDp0eXBlICdm aWxlKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAiVEFHUyIKKyAgIk5h bWUgb2YgdGhlIHRhZ3MgZmlsZSB0byBjcmVhdGUgaW5zaWRlIHRoZSBwcm9qZWN0LiIKKyAg OnR5cGUgJ3N0cmluZykKKworKGRlZmN1c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlv bnMgbmlsCisgICJMaXN0IG9mIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBl dGFncyBwcm9ncmFtLiIKKyAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKSkKKworKGRlZmN1c3Rv bSBldGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBuaWwKKyAgIk1hcHBpbmcgb2YgbGFu Z3VhZ2VzIHRvIGFkZGl0aW9uYWwgcmVnZXhwcyBmb3IgdGFncy4KKworRWFjaCBsYW5ndWFn ZSBzaG91bGQgYmUgb25lIG9mIHRoZSByZWNvZ25pemVkIGJ5IGV0YWdzLCBzZWUKK2BldGFn cyAtLWhlbHAnLiAgRWFjaCB0YWcgcmVnZXhwIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUg Zm9ybWF0CithcyBkb2N1bWVudGVkIGZvciB0aGUgYC0tcmVnZXgnIGFyZ3VtZW50cy4KKwor V2Ugc3VwcG9ydCBvbmx5IEVtYWNzJ3MgZXRhZ3MgcHJvZ3JhbSB3aXRoIHRoaXMgb3B0aW9u LiIKKyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoY29ucworICAgICAgICAgICA6dGFn ICJMYW5ndWFnZXMgZ3JvdXAiCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJM YW5ndWFnZSBuYW1lIikpCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJUYWcg UmVnZXhwIikpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1sYW5n LXJlZ2V4cC1hbGlzdCAnc2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFtYmRhICh2YWx1 ZSkKKyAgICAgICAoYW5kIChsaXN0cCB2YWx1ZSkKKyAgICAgICAgICAgIChzZXEtZXZlcnkt cAorICAgICAgICAgICAgIChsYW1iZGEgKGdyb3VwKQorICAgICAgICAgICAgICAgKGFuZCAo Y29uc3AgZ3JvdXApCisgICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2FyIGdyb3VwKSkK KyAgICAgICAgICAgICAgICAgICAgKGxpc3RwIChjZHIgZ3JvdXApKQorICAgICAgICAgICAg ICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGxh bmcpCisgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHN0cmluZ3AgbGFuZykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIlxcYFthLXoqK10rXFwn IiBsYW5nKSkpCisgICAgICAgICAgICAgICAgICAgICAoY2FyIGdyb3VwKSkKKyAgICAgICAg ICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAoY2RyIGdyb3VwKSkpKQorICAg ICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBYWFg6IFdlIGhhdmUgdG8gbGlzdCBhbGwgZXh0 ZW5zaW9uczogZXRhZ3MgZmFsbHMgYmFjayB0byBGb3J0cmFuLgorOzsgaHR0cDovL2xpc3Rz LmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTgtMDEvbXNnMDAzMjMuaHRt bAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMKKyAgJygicmIiICJq cyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIgImgiICJoaCIgImhwcCIKKyAgICAi amF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAicGhwIiAiZXJsIiAiaHJsIgorICAg ICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFzbSIgImFkcyIgImFkYiIgImFkYSIp CisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucy4KKworRmlsZSBleHRlbnNpb25zIHRvIGdlbmVy YXRlIHRoZSB0YWdzIGZvci4iCisgIDp0eXBlICcocmVwZWF0IChzdHJpbmcgOnRhZyAiRmls ZSBleHRlbnNpb24iKSkpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1m aWxlLWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFs dWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFsdWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5 LXAKKyAgICAgICAgICAgICAobGFtYmRhIChleHQpCisgICAgICAgICAgICAgICAoYW5kIChz dHJpbmdwIGV4dCkKKyAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wICJcXGBb YS16QS1aMC05XStcXCciIGV4dCkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBG SVhNRTogT25seSBwbGFpbiBzdWJzdHJpbmdzIHN1cHBvcnRlZCBjdXJyZW50bHkuCisoZGVm Y3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9yZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBy dWxlcywgaW4gdGhlIGZvcm1hdCBvZiBgcHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICco cmVwZWF0CisgICAgICAgICAgKHN0cmluZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKSkKKwor Ozs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0YWdzLXJlZ2VuLWlnbm9yZXMgJ3NhZmUtbG9jYWwt dmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFs dWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVlKSkpKQorCiso ZGVmdmFyIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUgIipldGFncy1yZWdlbi10 YWdzLWVycm9ycyoiKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1tdGltZXMgKHByb2op CisgIChsZXQgKChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBwcm9qKSkKKyAgICAg ICAgKG10aW1lcyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkpCisgICAgICAgIGZp bGUtbmFtZS1oYW5kbGVyLWFsaXN0KQorICAgIChkb2xpc3QgKGYgZmlsZXMpCisgICAgICAo Y29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgKHB1dGhhc2ggZgorICAgICAgICAgICAg ICAgICAgIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAgICAgICAgICAg ICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIGYpKQorICAgICAgICAgICAgICAgICAgIG10aW1l cykKKyAgICAgICAgKGZpbGUtbWlzc2luZyBuaWwpKSkKKyAgICBtdGltZXMpKQorCisoZGVm dW4gZXRhZ3MtcmVnZW4tLXJlZnJlc2ggKHByb2opCisgIChzYXZlLWV4Y3Vyc2lvbgorICAg IChsZXQqICgodGFncy1maWxlIChleHBhbmQtZmlsZS1uYW1lIGV0YWdzLXJlZ2VuLXRhZ3Mt ZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0 LXJvb3QgcHJvaikpKQorICAgICAgICAgICAodGFncy1tdGltZSAoZmlsZS1hdHRyaWJ1dGUt bW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJp YnV0ZXMgdGFncy1maWxlKSkpCisgICAgICAgICAgIChhbGwtbXRpbWVzIChldGFncy1yZWdl bi0tYWxsLW10aW1lcyBwcm9qKSkKKyAgICAgICAgICAgYWRkZWQtZmlsZXMKKyAgICAgICAg ICAgY2hhbmdlZC1maWxlcworICAgICAgICAgICByZW1vdmVkLWZpbGVzKQorICAgICAgKGV0 YWdzLXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkK KyAgICAgIChzZXQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgdGFncy1maWxlKSkKKyAgICAg IChkb2xpc3QgKGZpbGUgKHRhZ3MtdGFibGUtZmlsZXMpKQorICAgICAgICAobGV0ICgobXRp bWUgKGdldGhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgKChudWxsIG10aW1lKQorICAgICAgICAgICAgKHB1c2ggZmlsZSByZW1vdmVkLWZp bGVzKSkKKyAgICAgICAgICAgKCh0aW1lLWxlc3MtcCB0YWdzLW10aW1lIG10aW1lKQorICAg ICAgICAgICAgKHB1c2ggZmlsZSBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgKHJlbWhh c2ggZmlsZSBhbGwtbXRpbWVzKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChyZW1o YXNoIGZpbGUgYWxsLW10aW1lcykpKSkpCisgICAgICAobWFwaGFzaAorICAgICAgIChsYW1i ZGEgKGtleSBfdmFsdWUpCisgICAgICAgICAocHVzaCBrZXkgYWRkZWQtZmlsZXMpKQorICAg ICAgIGFsbC1tdGltZXMpCisgICAgICAoaWYgKD4gKCsgKGxlbmd0aCBhZGRlZC1maWxlcykK KyAgICAgICAgICAgICAgICAobGVuZ3RoIGNoYW5nZWQtZmlsZXMpCisgICAgICAgICAgICAg ICAgKGxlbmd0aCByZW1vdmVkLWZpbGVzKSkKKyAgICAgICAgICAgICAxMDApCisgICAgICAg ICAgKHByb2duCisgICAgICAgICAgICAobWVzc2FnZSAiZXRhZ3MtcmVnZW46IFRvbyBtYW55 IGNoYW5nZXMsIGZhbGxpbmcgYmFjayB0byBmdWxsIHJlc2NhbiIpCisgICAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgICAgIChkb2xpc3QgKGZpbGUgKG5j b25jIHJlbW92ZWQtZmlsZXMgY2hhbmdlZC1maWxlcykpCisgICAgICAgICAgKGV0YWdzLXJl Z2VuLS1yZW1vdmUtdGFnIGZpbGUpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxl cyBhZGRlZC1maWxlcykKKyAgICAgICAgICAoYXBwbHkgIydldGFncy1yZWdlbi0tYXBwZW5k LXRhZ3MKKyAgICAgICAgICAgICAgICAgKG5jb25jIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmls ZXMpKSkKKyAgICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMgcmVt b3ZlZC1maWxlcykKKyAgICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAg ICAgICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAgIChzYXZlLWJ1 ZmZlciAwKSkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlICgp CisgIChsZXQgKChwcm9qKSkKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QKKyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVmYXVsdC1k aXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRh Z3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFu dXApKQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290KQorICAg ICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgKGV4cGFuZC1maWxlLW5hbWUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi10YWdzLWZpbGUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC1yb290CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHByb2ogKHByb2plY3QtY3VycmVudCkpKSkpKQorICAg ICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFibGUsIHJlZnJlc2hpbmcuLi4i KQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2opKQorICAgICh3aGVuIChhbmQg KG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3Mt dGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChvciBwcm9qIChwcm9q ZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2VuZXJhdGluZyBuZXcgdGFncyB0 YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUtdG8tc2Vjb25kcykpKQorICAg ICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJvaikKKyAgICAgICAgKG1lc3Nh Z2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNlY29uZHMpIHN0YXJ0KSkpKSkp CisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChwcm9qKQorICAobGV0KiAoKHJv b3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRpcmVjdG9yeSBy b290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nhbm5pbmcgbW9yZSBlZmZpY2ll bnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRlcmluZyBieSBnbG9iIHRvIHBy b2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgorICAgICAgICAgKGZpbGVzIChw cm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNoLXJlIChjb25jYXQKKyAgICAg ICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1vcHQg ZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAgICAgICAgICAgICAgICAiXFwn IikpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikgKG9yIChub3QgKHN0 cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBI YW5kbGUgZXRhZ3MtcmVnZW4taWdub3JlcyBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICAo c3RyaW5nLW1hdGNoLXAgIi9cXC4jIiBmKQorICAgICAgICAgICAgICAgIChjbC1zb21lIChs YW1iZGEgKGlnbm9yZSkgKHN0cmluZy1zZWFyY2ggaWdub3JlIGYpKQorICAgICAgICAgICAg ICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLWlnbm9yZXMpKSkKKyAgICAgZmlsZXMpKSkKKwor KGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWdlbmVyYXRlIChwcm9qKQorICAocmVxdWlyZSAn ZGlyZWQpCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290IHByb2opKQorICAgICAgICAg KGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICAoZmlsZXMgKGV0YWdzLXJlZ2Vu LS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgICAodGFncy1maWxlIChleHBhbmQtZmlsZS1u YW1lIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSByb290KSkKKyAgICAgICAgIChjdGFncy1wIChl dGFncy1yZWdlbi0tY3RhZ3MtcCkpCisgICAgICAgICAoY29tbWFuZCAoZm9ybWF0ICIlcyAl cyAlcyAtIC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1w cm9ncmFtCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0 eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0t YnVpbGQtcHJvZ3JhbS1vcHRpb25zIGN0YWdzLXApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjdGFn cydzIGV0YWdzIHJlcXVpcmVzICctTCcgZm9yIHN0ZGluIGlucHV0LgorICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgY3RhZ3MtcCAiLUwiICIiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICB0YWdzLWZpbGUpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKG1h cGMgKGxhbWJkYSAoZikKKyAgICAgICAgICAgICAgKGluc2VydCBmICJcbiIpKQorICAgICAg ICAgICAgZmlsZXMpCisgICAgICAoc2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1p bikgKHBvaW50LW1heCkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5pbCBuaWwgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSB0KSkKKyAgICAoZXRh Z3MtcmVnZW4tLXZpc2l0LXRhYmxlIHRhZ3MtZmlsZSByb290KSkpCisKKyhkZWZ1biBldGFn cy1yZWdlbi0tdmlzaXQtdGFibGUgKHRhZ3MtZmlsZSByb290KQorICA7OyBJbnZhbGlkYXRl IHRoZSBzY2FubmVkIHRhZ3MgYWZ0ZXIgYW55IGNoYW5nZSBpcyB3cml0dGVuIHRvIGRpc2su CisgIChhZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1m aWxlKQorICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFy ay1hcy1uZXcpCisgIChzZXRxIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgdGFncy1maWxlCisg ICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3Qgcm9vdCkKKyAgKHZpc2l0LXRhZ3MtdGFi bGUgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tY3Rh Z3MtcCAoKQorICAoc3RyaW5nLXNlYXJjaCAiQ3RhZ3MiCisgICAgICAgICAgICAgICAgIChz aGVsbC1jb21tYW5kLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMg LS12ZXJzaW9uIiBldGFncy1yZWdlbi1wcm9ncmFtKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVn ZW4tLWJ1aWxkLXByb2dyYW0tb3B0aW9ucyAoY3RhZ3MtcCkKKyAgKHdoZW4gKGFuZCBldGFn cy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBjdGFncy1wKQorICAgICh1c2VyLWVycm9yICJl dGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggQ3Rh Z3MiKSkKKyAgKG5jb25jCisgICAobWFwY2FuCisgICAgKGxhbWJkYSAoZ3JvdXApCisgICAg ICAobWFwY2FuCisgICAgICAgKGxhbWJkYSAobGFuZykKKyAgICAgICAgIChtYXBjYXIgKGxh bWJkYSAocmVnZXhwKQorICAgICAgICAgICAgICAgICAgIChjb25jYXQgIi0tcmVnZXg9Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAieyVzfSVzIiBsYW5nIHJlZ2V4cCkp KSkKKyAgICAgICAgICAgICAgICAgKGNkciBncm91cCkpKQorICAgICAgIChjYXIgZ3JvdXAp KSkKKyAgICBldGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCkKKyAgIGV0YWdzLXJlZ2Vu LXByb2dyYW0tb3B0aW9ucykpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tdXBkYXRlLWZpbGUg KCkKKyAgOzsgVE9ETzogTWF5YmUgb25seSBkbyB0aGlzIHdoZW4gRW1hY3MgaXMgaWRsZSBm b3IgYSBiaXQuICBPciBkZWZlcgorICA7OyB0aGUgdXBkYXRlcyBhbmQgZG8gdGhlbSBsYXRl ciBpbiBidXJzdHMgd2hlbiB0aGUgdGFibGUgaXMgdXNlZC4KKyAgKGxldCAoKGZpbGUtbmFt ZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAodGFncy1maWxlLWJ1ZiAoZ2V0LWZpbGUt YnVmZmVyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUpKQorICAgICAgICBwciBzaG91bGQtc2Nh bikKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICh3aGVuIHRhZ3MtZmlsZS1idWYKKyAg ICAgICAgKGNvbmQKKyAgICAgICAgICgoYW5kIGV0YWdzLXJlZ2VuLS1uZXctZmlsZQorICAg ICAgICAgICAgICAgKGtpbGwtbG9jYWwtdmFyaWFibGUgJ2V0YWdzLXJlZ2VuLS1uZXctZmls ZSkKKyAgICAgICAgICAgICAgIChzZXRxIHByIChwcm9qZWN0LWN1cnJlbnQpKQorICAgICAg ICAgICAgICAgKGVxdWFsIChwcm9qZWN0LXJvb3QgcHIpIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QpCisgICAgICAgICAgICAgICAobWVtYmVyIGZpbGUtbmFtZSAocHJvamVjdC1maWxlcyBw cikpKQorICAgICAgICAgIChzZXQtYnVmZmVyIHRhZ3MtZmlsZS1idWYpCisgICAgICAgICAg KHNldHEgc2hvdWxkLXNjYW4gdCkpCisgICAgICAgICAoKHByb2duIChzZXQtYnVmZmVyIHRh Z3MtZmlsZS1idWYpCisgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0tcmVtb3ZlLXRh ZyBmaWxlLW5hbWUpKQorICAgICAgICAgIChzZXRxIHNob3VsZC1zY2FuIHQpKSkpCisgICAg ICAod2hlbiBzaG91bGQtc2NhbgorICAgICAgICAoZXRhZ3MtcmVnZW4tLWFwcGVuZC10YWdz IGZpbGUtbmFtZSkKKyAgICAgICAgKGxldCAoKHNhdmUtc2lsZW50bHkgdCkKKyAgICAgICAg ICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQorICAgICAgICAgIChzYXZlLWJ1ZmZlciAw KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tcmVtb3ZlLXRhZyAoZmlsZS1uYW1lKQor ICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAod2hlbiAoc2VhcmNoLWZvcndhcmQgKGZv cm1hdCAiXGZcbiVzLCIgZmlsZS1uYW1lKSBuaWwgdCkKKyAgICAobGV0ICgoc3RhcnQgKG1h dGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAoc2VhcmNoLWZvcndhcmQgIlxmXG4iIG5pbCAn bW92ZSkKKyAgICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICAgICAgKGRl bGV0ZS1yZWdpb24gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlb2JwKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KQorICAgICAgICAgICAgICAgICAg ICAgICAgICgtIChwb2ludCkgMikpKSkpCisgICAgdCkpCisKKyhkZWZ1biBldGFncy1yZWdl bi0tYXBwZW5kLXRhZ3MgKCZyZXN0IGZpbGUtbmFtZXMpCisgIChnb3RvLWNoYXIgKHBvaW50 LW1heCkpCisgIChsZXQgKChvcHRpb25zIChldGFncy1yZWdlbi0tYnVpbGQtcHJvZ3JhbS1v cHRpb25zIChldGFncy1yZWdlbi0tY3RhZ3MtcCkpKQorICAgICAgICAoaW5oaWJpdC1yZWFk LW9ubHkgdCkpCisgICAgOzsgRklYTUU6IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5 IGZhc3RlciwgdGhvdWdoLgorICAgIDs7IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuCisgICAg KHNoZWxsLWNvbW1hbmQKKyAgICAgKGZvcm1hdCAiJXMgJXMgJXMgLW8gLSIKKyAgICAgICAg ICAgICBldGFncy1yZWdlbi1wcm9ncmFtIChtYXBjb25jYXQgIydpZGVudGl0eSBvcHRpb25z ICIgIikKKyAgICAgICAgICAgICAobWFwY29uY2F0ICMnaWRlbnRpdHkgZmlsZS1uYW1lcyAi ICIpKQorICAgICB0IGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUpKQorICA7OyBG SVhNRTogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXM/CisgIDs7IENvbXBsZXRp b24gdGFibGUgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBsYWNlIHdoZXJlIHRoZQorICA7OyB1 cGRhdGUgaXMgbm90IGluY3JlbWVudGFsLgorICAoc2V0cS1kZWZhdWx0IHRhZ3MtY29tcGxl dGlvbi10YWJsZSBuaWwpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3ICgp CisgICh1bmxlc3MgYnVmZmVyLWZpbGUtbnVtYmVyCisgICAgKHNldHEtbG9jYWwgZXRhZ3Mt cmVnZW4tLW5ldy1maWxlIHQpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFu dXAgKCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZm ZXIgKGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAo YW5kIGJ1ZmZlcgorICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHNl dHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAgICAgICAgdGFncy10YWJsZS1saXN0IG5pbAor ICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsCisgICAgICAgICAgZXRhZ3Mt cmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAocmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUtaG9v ayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUt c2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3KSkKKworOzs7IyMjYXV0b2xv YWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFncy1yZWdlbi1tb2RlCisgICJHZW5lcmF0ZSB0 YWdzIGF1dG9tYXRpY2FsbHkuIgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1v ZGUKKyAgICAgIChwcm9nbgorICAgICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFj a2VuZCA6YmVmb3JlCisgICAgICAgICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJl LWdlbmVyYXRlKQorICAgICAgICAoYWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBv aW50LWZ1bmN0aW9uIDpiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdl bi0tbWF5YmUtZ2VuZXJhdGUpKQorICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1i YWNrZW5kICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVt b3ZlICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0t bWF5YmUtZ2VuZXJhdGUpCisgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKwor KHByb3ZpZGUgJ2V0YWdzLXJlZ2VuKQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJl Cg== --------------GvAN742nYxTQ3XNRwqPixTlj-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 10 06:39:30 2023 Received: (at 67687) by debbugs.gnu.org; 10 Dec 2023 11:39:30 +0000 Received: from localhost ([127.0.0.1]:49625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rCI9f-0000YZ-2J for submit@debbugs.gnu.org; Sun, 10 Dec 2023 06:39:30 -0500 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]:51646) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rCI9Z-0000YI-6A for 67687@debbugs.gnu.org; Sun, 10 Dec 2023 06:39:25 -0500 Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-67ac8e5566cso26163766d6.3 for <67687@debbugs.gnu.org>; Sun, 10 Dec 2023 03:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702208341; x=1702813141; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=N+dqUhYEY+R71aUcUGwGI/N9m0jx/LnlZ6ThW5V0Mp8=; b=mfkteSMNyx5EX3Qmz/TyJNnTGiT9eUy0bNn78MEFjfCmYcZESZPA8W8wn2vCgOAegC b7Z+503G4EcJUY4pjdQiTUhdhpyiBpfe7nQLyydZAXX3/hqq+dBMiY7xF3+y9yAsp3Sx a2r3qDnTmCiD2XSsyfsmujiPtAP8VbYipfO5wCGRCkBvn6Z2sXIEXsRM75fuKISwY+nI Di5ZktKQXkdu2QO1kZd6g9fsj27Me3NIB4Yv/ZsWeRpFnrUPpvgWLc7gNqOLXdq/ggMR UdjDBtf0zxijBprnSTdvZymRSASuOffN7PW8M6skaPWbqifdN+8YJD52AFWpdjTvwoA1 oQmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702208341; x=1702813141; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N+dqUhYEY+R71aUcUGwGI/N9m0jx/LnlZ6ThW5V0Mp8=; b=E2GEpS8/0dRSDpFQ+MWlZzulS1vPsJavNFsngZX6DmvHnUZcjMoVA79CDadTKwPMLu Vxi8OLSVIiJBDqjB3R1zp3S0YTRBk/MiLKb/ZfzN+FGAd1QyVl+YEnykMY+qYNUwgoKL FeRczomTgKh/xQIPl/Ia1Hgxzcni718MCOhQYK/om28fnDP1pUjz2a2Ms0Vedjo//vWZ CTgNtuIpmq/B3BM+hJwSMtlYeH4GC6w5ng1eiiubbgUWHVWOPvhsCEh/gtISey5zthKE 7lXn2LHB22Fca2OxfQTZ1Bj4zHeMLF3BaNTmegX6RY8DrBxZhDASkvGReG4lfax8D5eE hKFg== X-Gm-Message-State: AOJu0Yxm1xnEGD2aaQcYFElHk98C0Is0UeGe/iJKIl/KwCL5oxVZAeJV kngiAyvpiNgqyoWezn9GyU4= X-Google-Smtp-Source: AGHT+IFcvD5jRMt4C2k/JEmn9Y6LvIj89EpZXwRVCuHZs5ZAQsqx6aFkAO+0QecNQkt0dG23wwF/KA== X-Received: by 2002:ad4:420d:0:b0:67a:33fa:ebb3 with SMTP id k13-20020ad4420d000000b0067a33faebb3mr3531698qvp.58.1702208341395; Sun, 10 Dec 2023 03:39:01 -0800 (PST) Received: from smtpclient.apple (pool-173-73-227-157.washdc.fios.verizon.net. [173.73.227.157]) by smtp.gmail.com with ESMTPSA id c11-20020a0ce64b000000b0067ab7eada1dsm2388707qvn.59.2023.12.10.03.39.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Dec 2023 03:39:00 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\)) Subject: Re: bug#67687: Feature request: automatic tags management From: Jon Eskin In-Reply-To: Date: Sun, 10 Dec 2023 06:38:50 -0500 Content-Transfer-Encoding: quoted-printable Message-Id: <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> To: Dmitry Gutov X-Mailer: Apple Mail (2.3774.200.91.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > All right, sounds like this kind of limited guarantees (tags getting = out of date occasionally, e.g. when switching branches) is apparently = okay. >=20 > See attached the aforementioned related work, with some updates and = simplifications (e.g. this version of the patch doesn't require a change = to project.el). >=20 > Usage: 'M-x etags-regen-mode' to turn it on (or customize this = variable, to have it on from the beginning of each session), then as = soon as you use features based on tags (such as M-. or completion) the = table should get generated automatically for the current project, and = then get updated when files are edited and saved. >=20 > Some features could be added later (such as asynchronous updates or -- = someday -- filenotify based invalidations), but I think the current = state is useful already. >=20 > Feedback welcome. Wow! This is excellent, worked like a charm on my end. I=E2=80=99m going to get this set up on a few different machines and = take some time to build feedback. Thank you!= From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 20 16:12:09 2023 Received: (at 67687) by debbugs.gnu.org; 20 Dec 2023 21:12:09 +0000 Received: from localhost ([127.0.0.1]:41927 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG3rM-0007iz-VL for submit@debbugs.gnu.org; Wed, 20 Dec 2023 16:12:09 -0500 Received: from mail-qk1-x72e.google.com ([2607:f8b0:4864:20::72e]:50520) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG3rL-0007ic-Mm for 67687@debbugs.gnu.org; Wed, 20 Dec 2023 16:12:08 -0500 Received: by mail-qk1-x72e.google.com with SMTP id af79cd13be357-7810c332a2cso2807285a.1 for <67687@debbugs.gnu.org>; Wed, 20 Dec 2023 13:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703106718; x=1703711518; darn=debbugs.gnu.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=fm4nJBnYdv9M4Mxk04/AArdRPSx2WkPYnZmTZJXssfI=; b=kiQHHYJh96mmTB7lo2s/C53lgD3E8MlX4cW/mJC7to4tTfkUUnbwWFsPx+eoRuo6we QiDWLQEix6UruynSkv9JGQGcG+budwZCaqvzwickradF9OPUr3tQ3ysd2zSBSZe4ozm8 FfqOykly5JT1Z3YRMUvqY3TwCDYjFd6xy6QJ3ZYrioOGvZ7lRlBnn9FmI3oAV+PVYqvS MJOMEbaiezfj9dxYoGe2Ct0WkzfFmzBLhvVQU/JMYBza1TRyLR15kpOfpOuPgSRmwH5J y+eA8oEgZlGSrfuV35Ttszprj/V4Pzc7vbfAlv8JjmKUvtA48Scsi2wWzHlP/Y+i3wqM JMDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703106718; x=1703711518; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fm4nJBnYdv9M4Mxk04/AArdRPSx2WkPYnZmTZJXssfI=; b=MYno/DatL2OVdUP6oXgwjWudW53TE3QpwA8aqdv4/28bzaTE3XiCDa0nEGOswRK5rL MEENQBKrFsuSCLly8ePAHZwL/zHSEP+9piYSLakygfitK2SFoFe74tLsfX6ttf++Xr4e lpVJCkKleaKUAlnLPy33BM8k4GE+AywEdoYe7UIOR9LnX+hS2rHevdiR1QffaS5odm7f HudcpzV+cegdUrAvTS06zGBkg1FF0lnu1B4nUdJXDD3Voe1TNkjO01NbzesSoyReXo6i KDnk5E9knAaepR42x6Fpvg+Chfxzau+zjo3yWb7+1HwQ7c9rtpcr8iTl3cet4y+sPau8 4L9w== X-Gm-Message-State: AOJu0YyFfG5fYb95CqWi8XGIld/8l4gtGMS8lLTBi2DiUvzeZVmJPWO4 1DGwPVN/2N0j/dPQydyJj08= X-Google-Smtp-Source: AGHT+IFUToOnpN7OS7hAw8UZbbRxPBSKcfS8kS0eiAZBRr6y8DLJcLX/BMYd/ElSv4q2tL5eHv0s9g== X-Received: by 2002:a05:620a:838f:b0:77f:eca:34d4 with SMTP id pb15-20020a05620a838f00b0077f0eca34d4mr25760838qkn.99.1703106718470; Wed, 20 Dec 2023 13:11:58 -0800 (PST) Received: from smtpclient.apple (pool-173-73-227-157.washdc.fios.verizon.net. [173.73.227.157]) by smtp.gmail.com with ESMTPSA id h4-20020a37c444000000b0077fafc08e46sm192914qkm.84.2023.12.20.13.11.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Dec 2023 13:11:58 -0800 (PST) From: Jon Eskin Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_A13C04BF-4DB2-436E-B56D-E8CAAB40C3AD" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\)) Subject: Re: bug#67687: Feature request: automatic tags management Date: Wed, 20 Dec 2023 16:11:47 -0500 In-Reply-To: <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> To: Dmitry Gutov References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> X-Mailer: Apple Mail (2.3774.200.91.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --Apple-Mail=_A13C04BF-4DB2-436E-B56D-E8CAAB40C3AD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > Wow! This is excellent, worked like a charm on my end. >=20 > I=E2=80=99m going to get this set up on a few different machines and = take some time to build feedback. >=20 > Thank you! Just a quick follow up - I=E2=80=99ve been using this every day. I=E2=80=99= ve been able to work without thinking about tags at all, and it=E2=80=99s = been a huge QOL upgrade for me.=20 The only road-bumps I had in the last few weeks were the following: 1) In some repositories I unknowingly had an existing universal ctags = file =E2=80=9Ctags=E2=80=9D. When I did, trying to goto-def would give = an error like "user-error: File /Users/jon/development/c/clp/TAGS is not = a valid tags table=E2=80=9D. This was misleading, because the actual = file on my filesystem is "/Users/jon/development/c/clp/tags=E2=80=9D. = Usually I differentiate ctags format from etags by the capitalization of = the filename, and that error message makes it look like it=E2=80=99s an = etags file. I=E2=80=99m guessing this has something to do with MacOS = file system case insensitivity on the file system. 2) I had always generated tags with a path argument for some reason, so = when I customized =E2=80=9CEtags Regen Program=E2=80=9D to =E2=80=9Cctags = -e -R .=E2=80=9D, I got an error since it appends an -o option to the = end. I just needed to glance at the source and experiment for a minute = to realize I just needed to remove the =E2=80=9C.=E2=80=9D. I don=E2=80=99t mean to suggest those are problems to be fixed, I = can=E2=80=99t really think of any addition or change that would make = sense to try to address them, but I figured I would report them in case = you had any ideas. Overall this package gets a big thumbs up from me and I think it would = be a great inclusion in a future release. Thank you for sharing it! Jon= --Apple-Mail=_A13C04BF-4DB2-436E-B56D-E8CAAB40C3AD Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
Wow! = This is excellent, worked like a charm on my end.

I=E2=80=99m = going to get this set up on a few different machines and take some time = to build feedback.

Thank = you!

Just a quick follow up - = I=E2=80=99ve been using this every day. I=E2=80=99ve been able to work = without thinking about tags at all, and it=E2=80=99s been a huge QOL = upgrade for me. 

The only road-bumps I had = in the last few weeks were the following:

1) In = some repositories I unknowingly had an existing universal ctags file = =E2=80=9Ctags=E2=80=9D. When I did, trying to goto-def would give an = error like "user-error: File /Users/jon/development/c/clp/TAGS is not a = valid tags table=E2=80=9D. This was misleading, because the actual file = on my filesystem is "/Users/jon/development/c/clp/tags=E2=80=9D. = Usually I differentiate ctags format from etags by the = capitalization of the filename, and that error message makes it look = like it=E2=80=99s an etags file. I=E2=80=99m guessing this has something = to do with MacOS file system case insensitivity on the file = system.

2) I had always generated tags with a = path argument for some reason, so when I customized =E2=80=9CEtags Regen = Program=E2=80=9D to =E2=80=9Cctags -e -R .=E2=80=9D, I got an error = since it appends an -o option to the end. I just needed to glance at the = source and experiment for a minute to realize I just needed to remove = the =E2=80=9C.=E2=80=9D.

I don=E2=80=99t mean = to suggest those are problems to be fixed, I can=E2=80=99t really think = of any addition or change that would make sense to try to address them, = but I figured I would report them in case you had any = ideas.

Overall this package gets a big thumbs = up from me and I think it would be a great inclusion in a future = release. Thank you for sharing = it!

Jon
= --Apple-Mail=_A13C04BF-4DB2-436E-B56D-E8CAAB40C3AD-- From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 20 19:24:16 2023 Received: (at 67687) by debbugs.gnu.org; 21 Dec 2023 00:24:16 +0000 Received: from localhost ([127.0.0.1]:42088 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG6rH-0004FI-On for submit@debbugs.gnu.org; Wed, 20 Dec 2023 19:24:16 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:60765) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG6rF-0004F5-PS for 67687@debbugs.gnu.org; Wed, 20 Dec 2023 19:24:14 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 1B01B5C072A; Wed, 20 Dec 2023 19:24:05 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Wed, 20 Dec 2023 19:24:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1703118245; x=1703204645; bh=rSOE84PTNwr8XSQzvvKZ3Ps1W8VUu78iAEFuT8qJ8J8=; b= LXLFntbABAMFyn7I+UJxse3x/nmN8ZzbpDgOjXtue5CKXilwF4gsdbxLYRztT9/6 V5mxi2DitQLU3l8HAxYZRg/coKuY9+EQRG6507gsLlPOqTxCyMzxDkQ/CTZoFDjG S5yZB4uXI4EEjqvKUDlNibmx4DhIgxAjnndThU+X6ezzuLwXKtnjQpvcX2z3Qz7q tP3bUNthlN2HEKBOmwIq0PRis3CvOQArI7q/zcdMBe5Rs//y8FTis2JlYfuj3cZe fJCXpe5/qGm16Au0T+zeoVZ6G40R660BsRwAxOdz7rM0In4bPox7qA0gUvITyEzx Hh9vtEViuDP5GhvRcDVZag== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703118245; x= 1703204645; bh=rSOE84PTNwr8XSQzvvKZ3Ps1W8VUu78iAEFuT8qJ8J8=; b=f W1+NNmL35dnPbU3+m2NPQhQRwK2EgtKByhHhQBT5BdweELzxTkbLevGmPXfAVDNt fiqgnS0K+Nd5IxSAWVOTUOt94tE7ff+umFQcqgz3PfUNS3OkH5lelfpLS3NYI92Y CYR+DYl4m25vcRe3rngAM7r4n+EpqGVnydFejRLfkeCF5bD6VIZwBbLpzN3v3wU0 CurNVftIWPOP8wmpUN55NRl46QIEE1sy2Tasz45RxOhn94LevdEnE8HP3wWZmAGG UT2Ip9iT++DqTbMH1Ps4/73MdxMNDdj2vV5Q0srzkGOizVVyrF3Y+zvlazknrDTQ LCR+n7X5IzijqOC9VRHRw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvddufedgvdefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtfeejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhephfffheeljeffgeffueeghfekkedtfffgheejvdegjeettdduheeufffggfef jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 20 Dec 2023 19:24:03 -0500 (EST) Message-ID: <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> Date: Thu, 21 Dec 2023 02:24:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Jon Eskin , Eli Zaretskii , Stefan Kangas References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) On 20/12/2023 23:11, Jon Eskin wrote: > >> Wow! This is excellent, worked like a charm on my end. >> >> I’m going to get this set up on a few different machines and take some >> time to build feedback. >> >> Thank you! > > Just a quick follow up - I’ve been using this every day. I’ve been able > to work without thinking about tags at all, and it’s been a huge QOL > upgrade for me. Excellent. > The only road-bumps I had in the last few weeks were the following: > > 1) In some repositories I unknowingly had an existing universal ctags > file “tags”. When I did, trying to goto-def would give an error like > "user-error: File /Users/jon/development/c/clp/TAGS is not a valid tags > table”. This was misleading, because the actual file on my filesystem is > "/Users/jon/development/c/clp/tags”. Usually I differentiate ctags > format from etags by the capitalization of the filename, and that error > message makes it look like it’s an etags file. I’m guessing this has > something to do with MacOS file system case insensitivity on the file > system. Hm, the first advice I would give is customize 'etags-regen-tags-file' to something else -- e.g. "RETAGS"? Then it won't match existing files. Later we could also add some file format verification (a regexp search or two), but probably not in the first version. > 2) I had always generated tags with a path argument for some reason, so > when I customized “Etags Regen Program” to “ctags -e -R .”, I got an > error since it appends an -o option to the end. I just needed to glance > at the source and experiment for a minute to realize I just needed to > remove the “.”. And "-R", I hope. Though it probably makes no difference, since none of the arguments passed to it are directories. Yeah, "-R ." is antithetical to how the program is used. We can extend the :type argument for this option, adding "ctags -e" at least. Maybe a longer docstring as well. > I don’t mean to suggest those are problems to be fixed, I can’t really > think of any addition or change that would make sense to try to address > them, but I figured I would report them in case you had any ideas. > > Overall this package gets a big thumbs up from me and I think it would > be a great inclusion in a future release. Thank you for sharing it! Thanks for testing! That is a good sign (with another positive bit of feedback on Reddit yesterday), so I think it's time to ask the head maintainers what they think about the inclusion of this feature in the core now. Eli/Stefan? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 21 02:40:49 2023 Received: (at 67687) by debbugs.gnu.org; 21 Dec 2023 07:40:49 +0000 Received: from localhost ([127.0.0.1]:42319 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGDfk-0007HY-LZ for submit@debbugs.gnu.org; Thu, 21 Dec 2023 02:40:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37674) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGDfg-0007HK-J3 for 67687@debbugs.gnu.org; Thu, 21 Dec 2023 02:40:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGDfV-0000rJ-E9; Thu, 21 Dec 2023 02:40:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ZkSIQ5P9xo/nXGT9SCzm4uG56GmKk52O/qBYbRo03XA=; b=PLVWJheYrHqa /ecA0bUkGQKyR1Bb688TdWZhzCZT/dxOXqLexBOX1EJLj7FMupoP7qtjDH+FxHx54SPSOQALy8wFP cIPD8N6Z+8Zv0JyacNi0k4az/T3GHt3HQSMq4xtpsa9TVTUzeKs42O1rc8FJJRxAx5rWvj9zARMa1 5bvUE2YhaRi7eVYJVvvH3eGz0ZR9DF1TiTID9KmC66aKV8iUdxZxZqORiwSIF8pswRYq0SFj7C0I4 eBRC+k9zick7r8COySZ+Rj8EGCeyCuCY7t06AyUzm6xXhDb1mJ/p+S+LRqQn1ZR2wuuhc4zX0DrHc LvV+DqRmltL/JzTK4Jm1XQ==; Date: Thu, 21 Dec 2023 09:40:09 +0200 Message-Id: <835y0sgg12.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> (message from Dmitry Gutov on Thu, 21 Dec 2023 02:24:01 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 21 Dec 2023 02:24:01 +0200 > Cc: 67687@debbugs.gnu.org > From: Dmitry Gutov > > That is a good sign (with another positive bit of feedback on Reddit > yesterday), so I think it's time to ask the head maintainers what they > think about the inclusion of this feature in the core now. > > Eli/Stefan? I didn't hear about any disadvantages; are there any issues we need to consider? Does the etags test suite still pass after these changes? Some comments based on a superficial look at the branch: . there are no updates for NEWS and the Emacs manual . the doc string of etags-regen-mode should explain more about what it does . the new -L switch to etags is not mentioned in --help and in the man page of etags . defcustoms don't have a :version tag . etags-regen-lang-regexp-alist could have a shorter name: etags-regen-regexp-alist, and its doc string should describe the form of the alist . in the safe-local-variable form of etags-regen-lang-regexp-alist, why do we force the language name to match a certain regexp, and likewise with extensions in etags-regen-file-extensions? . the shell command in etags-regen--all-mtimes is non-portable: it needs xargs and stat commands; please use directory-files-recursively with file-attributes instead, at least as fallback . I see several FIXMEs and TODOs in the code . I wonder whether we should make sure etags supports the new -L switch, and signal an error if not -- since you invoke etags via PATH, it is quite possible to invoke an older version, the one installed on the system, and not the one in the repository, as long as Emacs 30 is not installed . why does etags-regen--tags-generate require 'dired? . why do we have to use advice-add/remove in etags-regen-mode? can't we add hooks to the relevant functions instead? . you are removing a project-files method from project.el -- isn't that backward-incompatible? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 21 11:46:38 2023 Received: (at 67687) by debbugs.gnu.org; 21 Dec 2023 16:46:38 +0000 Received: from localhost ([127.0.0.1]:45326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGMBx-0000p8-Vk for submit@debbugs.gnu.org; Thu, 21 Dec 2023 11:46:38 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:40053) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGMBw-0000ot-C2 for 67687@debbugs.gnu.org; Thu, 21 Dec 2023 11:46:36 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 0D8E35C00E2; Thu, 21 Dec 2023 11:46:26 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 21 Dec 2023 11:46:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1703177186; x=1703263586; bh=isWuG1fUongCnbthvwzXPVQZFPRLm5GEhlNeND3eDPU=; b= i+39kqcyRtrOzpRfOYN2H8llliEupHze8sCfLQwBkUkdHYU63OjOOI9a02G+VqKK FgUNdT9/N8pOJJoxKK8PLZbBcYJMNrRjUXbzxpbGX1fmr7ZE99xIxlHQHVd0duo+ //kr+9Cv6+hEyKQiJvpGM8+vl5MZvPR1bzWOdxjVTX/u7SZfGN6POICSI5Z2SG/y YKmAYwkEWhJxZf/UgKpXdhWXvIymrIQD5F2ZLLf355Z5N20sI4e9lRQCGlbuvjoR 3D5hi2PZZrmMF54n3ghvs/+bLJy9jO0HxWmr1Sxq9Em6Wx5Sjn351PRRN9gLfo4V wuBEP474Rzr4ycJzXO/eYw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703177186; x= 1703263586; bh=isWuG1fUongCnbthvwzXPVQZFPRLm5GEhlNeND3eDPU=; b=V fKSVMlTLU7VbLxO3j4vNipvh6tcqB+OkP3STQR6gRmhIhXOBsf3h32itQuzeMmqb F2NdTWNNczIrD8zbU4BHOgaaQl7PqHDDUMUGiJVpvf9x0T4XasddrFiYY64KynDo aOo3Dtutrb9p5eywMcLIqVG8lVqrrFW3IusVZ6vDTjmopAwav7M47O+ephz5e9K9 k5cFUGIUL6MwzyJAMcnr5HLifteQM2qbndf6lJ6gKcWqGiVFLivzYz8MyGahYi/N 6Ys+QwXHknhxwuWYM/HAhTaNNIaeS5Htt6DM7o4PzHJ35vzMo4fIfJNpMZHc3vBG JYzxMA3eBtwtDStIhIMlw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdduhedgieejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepiefgteevheevveffheeltdeukeeiieekueefgedugfefgefhudelgfefveel vdevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Dec 2023 11:46:23 -0500 (EST) Message-ID: Date: Thu, 21 Dec 2023 18:46:11 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <835y0sgg12.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) On 21/12/2023 09:40, Eli Zaretskii wrote: >> Date: Thu, 21 Dec 2023 02:24:01 +0200 >> Cc: 67687@debbugs.gnu.org >> From: Dmitry Gutov >> >> That is a good sign (with another positive bit of feedback on Reddit >> yesterday), so I think it's time to ask the head maintainers what they >> think about the inclusion of this feature in the core now. >> >> Eli/Stefan? > > I didn't hear about any disadvantages; are there any issues we need to > consider? Nothing major, I believe. But someone in charge should make a yes-or-no decision. Also, the patch adds a new value to .dir-locals.el (to make etags-regen-mode easy to use for Emacs development right away). If someone edits their development branch with an older (e.g. stable) version of Emacs, this will be one more unsafe-variable warning to handle at least once. > Does the etags test suite still pass after these changes? I don't see why it would be affected. The mode is off by default anyway -- though I think it might be a good idea to flip it on after some more testing. But that is up to you and Stefan K. as well. > Some comments based on a superficial look at the branch: > > . there are no updates for NEWS and the Emacs manual I'll certainly add something to NEWS. Not sure where and what should be in the manual. > . the doc string of etags-regen-mode should explain more about what > it does Fair. > . the new -L switch to etags is not mentioned in --help and in the > man page of etags You're probably looking at the Git branch in the repository. See instead the patch attached to this bug report. I've removed a bunch of less essential changes. Some to be considered for later (the project.el changes, which make file listing somewhat faster), and some not. The -L flag is in the latter category. > . defcustoms don't have a :version tag Will add. > . etags-regen-lang-regexp-alist could have a shorter name: > etags-regen-regexp-alist, and its doc string should describe the > form of the alist It seemed that "lang" is good to have in the name, so the variable's meaning is more obvious, but I don't really mind changing it. > . in the safe-local-variable form of etags-regen-lang-regexp-alist, > why do we force the language name to match a certain regexp, and > likewise with extensions in etags-regen-file-extensions? That's mostly defensive programming. Indeed, shell-quote-argument should deal with most of the potential security problems. > . the shell command in etags-regen--all-mtimes is non-portable: it > needs xargs and stat commands; please use > directory-files-recursively with file-attributes instead, at least > as fallback This is already done in the latest version (etags-regen.diff in the bug attachments). Which brings a problem: the mode is now likely unusable over Tramp in any project of significant size. Something to improve later. > . I see several FIXMEs and TODOs in the code I don't plan on addressing any of those before the first checkin. > . I wonder whether we should make sure etags supports the new -L > switch, and signal an error if not -- since you invoke etags > via PATH, it is quite possible to invoke an older version, the one > installed on the system, and not the one in the repository, as > long as Emacs 30 is not installed Yeah, this is not a problem anymore, see above. > . why does etags-regen--tags-generate require 'dired? A remnant of some older code. Removed it. > . why do we have to use advice-add/remove in etags-regen-mode? can't > we add hooks to the relevant functions instead? We can, and probably will do. What I like about the current solution, though, is that it can be published to GNU ELPA (as "core" package) verbatim, and work with older emacsen as well. > . you are removing a project-files method from project.el -- isn't > that backward-incompatible? Not in the latest patch. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 21 18:37:22 2023 Received: (at 67687) by debbugs.gnu.org; 21 Dec 2023 23:37:22 +0000 Received: from localhost ([127.0.0.1]:45689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGSbR-0005mV-LU for submit@debbugs.gnu.org; Thu, 21 Dec 2023 18:37:22 -0500 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:51711) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGSbP-0005mI-4p for 67687@debbugs.gnu.org; Thu, 21 Dec 2023 18:37:20 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id D75173200A79; Thu, 21 Dec 2023 18:37:08 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Thu, 21 Dec 2023 18:37:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1703201828; x=1703288228; bh=EoOzmujMEX RYdtQYxW31+h7tgO81f8nVvZn4SUI9Xv4=; b=WNgd5smJ89jlbFLIWKqrlERh+R 2Oium3H0nZaOEJF4Q8tDU15Elf8/Eaf0ICtUkQXc5deGJGTecZOx96ixWwMI9b4+ zZzytilz9sJl0Dv1oDVyKM+ySnxCvZYJq27t96D9bvgmty+225T8/NA4lYX9X8Ql GBs53X23II1HM8C0nemJwTs+dOLIcR+8jN0kN1whl8ItigkCdsmBuSsndMx64h8e ARgnrufbPdD5LZ7vbEzptRggoQyWf6n0EaZlp/fvvS276N55gNUXmjtad196tLxu Y/9dovOEF+vkpR300Twdn1uUhwVL3YdXFoLKoOSheIBxKFQZEGkUtP4rxogQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1703201828; x=1703288228; bh=EoOzmujMEXRYdtQYxW31+h7tgO81 f8nVvZn4SUI9Xv4=; b=YJpaWJ2zoJcOUyN92nPNix6S8NXR1KN0L2MlRcxWHlWv Ffe4hNrhfQttPiRW9bf42XnSdY6IzQLsCT2W9p8s6MH63LrqePcaS5x80E5o0Vgq esLqxQ5cRES5gvAE0dHNlh1gRCnTJXEpdbgZKNb/YhS5Gmtoa/z1s+sy7YyS4qC8 2sDE9RzaCFxYfV1CsHGAL8D+pMvRssnMa1fFd309ZDw0yeAhK2FoGuYxOCLLUIHS 7/+kKshxQouT03e+gOI1loo7cAEZbGBtS8AP6DmNX+jkxwGwwxwQAE5cKzszcyvZ qnY++NoLZrk8EIMSVyyQ+CkMQPqFzSxEoKCuiOCdvg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdduiedguddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeiheegkeetgffghefhgeeiveeuudegvdeuteffhfettdelleehkeffledvuddt leenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Dec 2023 18:37:06 -0500 (EST) Content-Type: multipart/mixed; boundary="------------S9YQl2j6jNWsjRptU7ehtB9r" Message-ID: <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> Date: Fri, 22 Dec 2023 01:37:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US From: Dmitry Gutov To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> In-Reply-To: X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) This is a multi-part message in MIME format. --------------S9YQl2j6jNWsjRptU7ehtB9r Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 21/12/2023 18:46, Dmitry Gutov wrote: > See instead the patch attached to this bug report. Here's an update, incorporating the feedback from here and there. --------------S9YQl2j6jNWsjRptU7ehtB9r Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v2.diff" Content-Disposition: attachment; filename="etags-regen-v2.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmQzMDg1OTFjNDc1IDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tbGFuZy1y ZWdleHAtYWxpc3QKKyAgICAgICAgICAuCisgICAgICAgICAgKCgoImMiICJvYmpjIikgLgor ICAgICAgICAgICAgKCIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJcXChbXlwiXStcXClc Ii9cXDEvIgorICAgICAgICAgICAgICIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJbXlwi XStcIixbIFx0XVxcKFtBLVphLXowLTlfXStcXCkvXFwxLyIpKSkpCisgICAgICAgICAoZXRh Z3MtcmVnZW4taWdub3JlcyAuICgidGVzdC9tYW51YWwvZXRhZ3MvIikpCiAgICAgICAgICAo dmMtcHJlcGFyZS1wYXRjaGVzLXNlcGFyYXRlbHkgLiBuaWwpKSkKICAoYy1tb2RlIC4gKChj LWZpbGUtc3R5bGUgLiAiR05VIikKICAgICAgICAgICAgIChjLW5vaXNlLW1hY3JvLW5hbWVz IC4gKCJJTkxJTkUiICJOT19JTkxJTkUiICJBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5ERUZJ TkVEIgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA5MGZmMjNiNzkz Ny4uMzcyNjY1NTIzOWUgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBA IC0xMjA4LDYgKzEyMDgsMTEgQEAgdGhlIG5lZWRzIG9mIHVzZXJzIHdpdGggcmVkLWdyZWVu IG9yIGJsdWUteWVsbG93IGNvbG9yIGRlZmljaWVuY3kuCiBUaGUgSW5mbyBtYW51YWwgIiht b2R1cy10aGVtZXMpIFRvcCIgZGVzY3JpYmVzIHRoZSBkZXRhaWxzIGFuZAogc2hvd2Nhc2Vz IGFsbCB0aGVpciBjdXN0b21pemF0aW9uIG9wdGlvbnMuCiAKKyoqIE5ldyBnbG9iYWwgbWlu b3IgbW9kZSAnZXRhZ3MtcmVnZW4tbW9kZScuCitUaGlzIG1pbm9yIG1vZGUgZ2VuZXJhdGVz IHRoZSB0YWdzIHRhYmxlIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlCitjdXJyZW50IHBy b2plY3QgY29uZmlndXJhdGlvbiwgYW5kIGxhdGVyIHVwZGF0ZXMgaXQgYXMgeW91IGVkaXQg dGhlCitmaWxlcyBhbmQgc2F2ZSB0aGUgY2hhbmdlcy4KKwogDAogKiBJbmNvbXBhdGlibGUg TGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMwLjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9k ZXMvZXRhZ3MtcmVnZW4uZWwgYi9saXNwL3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjZjNDE3OGFlODYKLS0tIC9k ZXYvbnVsbAorKysgYi9saXNwL3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApAQCAtMCwwICsx LDM4NCBAQAorOzs7IGV0YWdzLXJlZ2VuLmVsIC0tLSBBdXRvLShyZSlyZWdlbmVyYXRpbmcg dGFncyAgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAy MDIxLCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6 IERtaXRyeSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scwor Cis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwg c2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5 OgorCis7OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMg b24gc2F2ZS4KKzs7Cis7OyBUaGUgZ29hbCBvZiB0aGlzIG1vZGUgaXMgdG8gcHJvdmlkZSBh IGZlYXR1cmUgdGhhdCBzaG91bGQgYmUKKzs7IGZhbWlsaWFyIHRvIHRoZSB1c2VycyBvZiBj ZXJ0YWluIGxpZ2h0d2VpZ2h0IHByb2dyYW1tZXIncyBlZGl0b3JzLAorOzsgc3VjaCBhcyBT dWJsaW1lIFRleHQuICBXaGljaCBpcyAiZ28gdG8gZGVmaW5pdGlvbiIgd2l0aCBhdXRvbWF0 aWMKKzs7IGluZGV4aW5nLCBhZGRlZCBpbiBTVDMgKHJlbGVhc2VkIGluIDIwMTcpLgorOzsK Kzs7IEF0IHRoZSBtb21lbnQgcmVpbmRleGluZyB3b3JrcyBvZmYgYmVmb3JlL2FmdGVyLXNh dmUtaG9vaywgYnV0IHRvCis7OyBoYW5kbGUgbW9yZSBjb21wbGV4IGNoYW5nZXMgKGUuZy4g dGhlIHVzZXIgc3dpdGNoaW5nIHRvIGFub3RoZXIKKzs7IGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvIHNvbWV0aGluZworOzsgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor CisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0gKGV4ZWN1dGFibGUtZmluZCAiZXRh Z3MiKQorICAiTmFtZSBvZiB0aGUgZXRhZ3MgcHJvZ3JhbS4KKworSWYgeW91IG9ubHkgaGF2 ZSBgY3RhZ3MnIGluc3RhbGxlZCwgeW91IGNhbiBhbHNvIHNldCB0aGlzIHRvCitcImN0YWdz IC1lXCIuICBTb21lIGZlYXR1cmVzIG1pZ2h0IG5vdCBiZSBzdXBwb3J0ZWQgdGhpcyB3YXku IgorICA7OyBBbHdheXMgaGF2aW5nIG91ciAnZXRhZ3MnIGhlcmUgd291bGQgYmUgZWFzaWVy LCBidXQgd2UgY2FuJ3QKKyAgOzsgYWx3YXlzIHJlbHkgb24gaXQgYmVpbmcgaW5zdGFsbGVk LiAgU28gaXQgbWlnaHQgYmUgY3RhZ3MncyBldGFncy4KKyAgOnR5cGUgJ2ZpbGUpCisKKyhk ZWZjdXN0b20gZXRhZ3MtcmVnZW4tdGFncy1maWxlICJUQUdTIgorICAiTmFtZSBvZiB0aGUg dGFncyBmaWxlIHRvIGNyZWF0ZSBpbnNpZGUgdGhlIHByb2plY3QuCisKK1RoaXMgdmFsdWUg c2hvdWxkIGVpdGhlciBiZSBhIHNpbXBsZSBmaWxlIG5hbWUgKG5vIGRpcmVjdG9yeQorc3Bl Y2lmaWVkKSwgb3IgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBwcm9qZWN0IHJvb3QgZGly ZWN0b3J5CithbmQgcmV0dXJucyBhIGRpc3RpbmN0IGZpbGUgbmFtZSBmb3IgdGhlIHRhZ3Mg ZmlsZSBmb3IgaXQuICBUaGUKK2xhdHRlciBvcHRpb24gaXMgbW9zdCB1c2VmdWwgd2hlbiB5 b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBvdXRzaWRlIC0t IGUuZy4gaW4gYHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeScuIgorICA6dHlwZSAnKGNob2lj ZSAoc3RyaW5nIDp0YWcgIkZpbGUgbmFtZSIpCisgICAgICAgICAgICAgICAgIChmdW5jdGlv biA6dGFnICJGdW5jdGlvbiB0aGF0IHJldHVybnMgZmlsZSBuYW1lIikpKQorCisoZGVmY3Vz dG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0tb3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRp b25hbCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGV0YWdzIHByb2dyYW0uIgorICA6dHlwZSAn KHJlcGVhdCBzdHJpbmcpKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlz dCBuaWwKKyAgIk1hcHBpbmcgb2YgbGFuZ3VhZ2VzIHRvIGFkZGl0aW9uYWwgcmVnZXhwcyBm b3IgdGFncy4KKworVGhlIHZhbHVlIG11c3QgYmUgYSBsaXN0IG9mIGNvbnNlcyAoTEFOR1VB R0VTIC4gVEFHLVJFR0VYUFMpCit3aGVyZSBib3RoIGNhciBhbmQgY2RyIGFyZSBsaXN0cyBv ZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBvbmUgb2YgdGhlIHJlY29n bml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBFYWNoIHRhZyByZWdleHAg c2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2FzIGRvY3VtZW50ZWQgZm9yIHRo ZSBgLS1yZWdleCcgYXJndW1lbnRzLgorCitXZSBjdXJyZW50bHkgc3VwcG9ydCBvbmx5IEVt YWNzJ3MgZXRhZ3MgcHJvZ3JhbSB3aXRoIHRoaXMgb3B0aW9uLiIKKyAgOnR5cGUgJyhyZXBl YXQKKyAgICAgICAgICAoY29ucworICAgICAgICAgICA6dGFnICJMYW5ndWFnZXMgZ3JvdXAi CisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJMYW5ndWFnZSBuYW1lIikpCisg ICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJUYWcgUmVnZXhwIikpKSkpCisKKzs7 OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgJ3NhZmUtbG9j YWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAg dmFsdWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAobGFtYmRh IChncm91cCkKKyAgICAgICAgICAgICAgIChhbmQgKGNvbnNwIGdyb3VwKQorICAgICAgICAg ICAgICAgICAgICAobGlzdHAgKGNhciBncm91cCkpCisgICAgICAgICAgICAgICAgICAgIChs aXN0cCAoY2RyIGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMn c3RyaW5ncCAoY2FyIGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1w ICMnc3RyaW5ncCAoY2RyIGdyb3VwKSkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7 OyBXZSBoYXZlIHRvIGxpc3QgYWxsIGV4dGVuc2lvbnM6IGV0YWdzIGZhbGxzIGJhY2sgdG8g Rm9ydHJhbgorOzsgd2hlbiBpdCBjYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBm aWxlLgorOzsgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVs LzIwMTgtMDEvbXNnMDAzMjMuaHRtbAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4 dGVuc2lvbnMKKyAgJygicmIiICJqcyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIg ImgiICJoaCIgImhwcCIKKyAgICAiamF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAi cGhwIiAiZXJsIiAiaHJsIgorICAgICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFz bSIgImFkcyIgImFkYiIgImFkYSIpCisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucy4KKworRmls ZSBleHRlbnNpb25zIHRvIGdlbmVyYXRlIHRoZSB0YWdzIGZvci4iCisgIDp0eXBlICcocmVw ZWF0IChzdHJpbmcgOnRhZyAiRmlsZSBleHRlbnNpb24iKSkpCisKKzs7OyMjI2F1dG9sb2Fk CisocHV0ICdldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFi bGUKKyAgICAgKGxhbWJkYSAodmFsdWUpIChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5 LXAgIydzdHJpbmdwIHZhbHVlKSkpKQorCis7OyBGSVhNRTogT25seSBwbGFpbiBzdWJzdHJp bmdzIHN1cHBvcnRlZCBjdXJyZW50bHkuCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9y ZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBydWxlcywgaW4gdGhlIGZvcm1hdCBvZiBg cHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICcocmVwZWF0CisgICAgICAgICAgKHN0cmlu ZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0 YWdzLXJlZ2VuLWlnbm9yZXMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAo dmFsdWUpIChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVl KSkpKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUgIipldGFn cy1yZWdlbi10YWdzLWVycm9ycyoiKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1tdGlt ZXMgKHByb2opCisgIChsZXQgKChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBwcm9q KSkKKyAgICAgICAgKG10aW1lcyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkpCisg ICAgICAgIGZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0KQorICAgIChkb2xpc3QgKGYgZmlsZXMp CisgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgKHB1dGhhc2ggZgorICAg ICAgICAgICAgICAgICAgIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAg ICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIGYpKQorICAgICAgICAgICAgICAg ICAgIG10aW1lcykKKyAgICAgICAgKGZpbGUtbWlzc2luZyBuaWwpKSkKKyAgICBtdGltZXMp KQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgKHByb2opCisgIChp ZiAoZnVuY3Rpb25wIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSkKKyAgICAgIChmdW5jYWxsIGV0 YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKQorICAgIChleHBhbmQt ZmlsZS1uYW1lIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKSkp CisKKyhkZWZ1biBldGFncy1yZWdlbi0tcmVmcmVzaCAocHJvaikKKyAgKHNhdmUtZXhjdXJz aW9uCisgICAgKGxldCogKCh0YWdzLWZpbGUgKGV0YWdzLXJlZ2VuLS1jaG9vc2UtdGFncy1m aWxlIHByb2opKQorICAgICAgICAgICAodGFncy1tdGltZSAoZmlsZS1hdHRyaWJ1dGUtbW9k aWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJpYnV0 ZXMgdGFncy1maWxlKSkpCisgICAgICAgICAgIChhbGwtbXRpbWVzIChldGFncy1yZWdlbi0t YWxsLW10aW1lcyBwcm9qKSkKKyAgICAgICAgICAgYWRkZWQtZmlsZXMKKyAgICAgICAgICAg Y2hhbmdlZC1maWxlcworICAgICAgICAgICByZW1vdmVkLWZpbGVzKQorICAgICAgKGV0YWdz LXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAg ICAgIChzZXQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgdGFncy1maWxlKSkKKyAgICAgIChk b2xpc3QgKGZpbGUgKHRhZ3MtdGFibGUtZmlsZXMpKQorICAgICAgICAobGV0ICgobXRpbWUg KGdldGhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAg ICAgKChudWxsIG10aW1lKQorICAgICAgICAgICAgKHB1c2ggZmlsZSByZW1vdmVkLWZpbGVz KSkKKyAgICAgICAgICAgKCh0aW1lLWxlc3MtcCB0YWdzLW10aW1lIG10aW1lKQorICAgICAg ICAgICAgKHB1c2ggZmlsZSBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgKHJlbWhhc2gg ZmlsZSBhbGwtbXRpbWVzKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChyZW1oYXNo IGZpbGUgYWxsLW10aW1lcykpKSkpCisgICAgICAobWFwaGFzaAorICAgICAgIChsYW1iZGEg KGtleSBfdmFsdWUpCisgICAgICAgICAocHVzaCBrZXkgYWRkZWQtZmlsZXMpKQorICAgICAg IGFsbC1tdGltZXMpCisgICAgICAoaWYgKD4gKCsgKGxlbmd0aCBhZGRlZC1maWxlcykKKyAg ICAgICAgICAgICAgICAobGVuZ3RoIGNoYW5nZWQtZmlsZXMpCisgICAgICAgICAgICAgICAg KGxlbmd0aCByZW1vdmVkLWZpbGVzKSkKKyAgICAgICAgICAgICAxMDApCisgICAgICAgICAg KHByb2duCisgICAgICAgICAgICAobWVzc2FnZSAiZXRhZ3MtcmVnZW46IFRvbyBtYW55IGNo YW5nZXMsIGZhbGxpbmcgYmFjayB0byBmdWxsIHJlc2NhbiIpCisgICAgICAgICAgICAoZXRh Z3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgICAgIChkb2xpc3QgKGZpbGUgKG5jb25j IHJlbW92ZWQtZmlsZXMgY2hhbmdlZC1maWxlcykpCisgICAgICAgICAgKGV0YWdzLXJlZ2Vu LS1yZW1vdmUtdGFnIGZpbGUpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxlcyBh ZGRlZC1maWxlcykKKyAgICAgICAgICAoYXBwbHkgIydldGFncy1yZWdlbi0tYXBwZW5kLXRh Z3MKKyAgICAgICAgICAgICAgICAgKG5jb25jIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMp KSkKKyAgICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMgcmVtb3Zl ZC1maWxlcykKKyAgICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAg ICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAgIChzYXZlLWJ1ZmZl ciAwKSkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlICgpCisg IChsZXQgKChwcm9qKSkKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QK KyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVmYXVsdC1kaXJl Y3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRhZ3Mt cmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAp KQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290KQorICAgICAg ICAgICAgICAgOzsgSWYgZXhpc3RpbmcgdGFibGUgaXMgdmlzaXRlZCB0aGF0J3Mgbm90IGdl bmVyYXRlZCBieQorICAgICAgICAgICAgICAgOzsgdGhpcyBtb2RlLCBza2lwIGFsbCBmdW5j dGlvbmFsaXR5LgorICAgICAgICAgICAgICAgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAg ICAoZmlsZS1leGlzdHMtcCAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChwcm9qZWN0LWN1cnJlbnQp KSkpKQorICAgICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFibGUsIHJlZnJl c2hpbmcuLi4iKQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2opKQorICAgICh3 aGVuIChhbmQgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChvciBw cm9qIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2VuZXJhdGluZyBu ZXcgdGFncyB0YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUtdG8tc2Vjb25k cykpKQorICAgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJvaikKKyAgICAg ICAgKG1lc3NhZ2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNlY29uZHMpIHN0 YXJ0KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChwcm9qKQorICAo bGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRp cmVjdG9yeSByb290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nhbm5pbmcgbW9y ZSBlZmZpY2llbnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRlcmluZyBieSBn bG9iIHRvIHByb2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgorICAgICAgICAg KGZpbGVzIChwcm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNoLXJlIChjb25j YXQKKyAgICAgICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAgICAgICAgKHJl Z2V4cC1vcHQgZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAgICAgICAgICAg ICAgICAiXFwnIikpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikgKG9y IChub3QgKHN0cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAgIDs7 IEZJWE1FOiBIYW5kbGUgZXRhZ3MtcmVnZW4taWdub3JlcyBwcm9wZXJseS4KKyAgICAgICAg ICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIi9cXC4jIiBmKQorICAgICAgICAgICAgICAgIChj bC1zb21lIChsYW1iZGEgKGlnbm9yZSkgKHN0cmluZy1zZWFyY2ggaWdub3JlIGYpKQorICAg ICAgICAgICAgICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLWlnbm9yZXMpKSkKKyAgICAgZmls ZXMpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWdlbmVyYXRlIChwcm9qKQorICAo bGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRp cmVjdG9yeSByb290KQorICAgICAgICAgKGZpbGVzIChldGFncy1yZWdlbi0tYWxsLWZpbGVz IHByb2opKQorICAgICAgICAgKHRhZ3MtZmlsZSAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdz LWZpbGUgcHJvaikpCisgICAgICAgICAoY3RhZ3MtcCAoZXRhZ3MtcmVnZW4tLWN0YWdzLXAp KQorICAgICAgICAgKGNvbW1hbmQgKGZvcm1hdCAiJXMgJXMgJXMgLSAtbyAlcyIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbQorICAgICAgICAgICAg ICAgICAgICAgICAgICAobWFwY29uY2F0ICMnaWRlbnRpdHkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZXRhZ3MtcmVnZW4tLWJ1aWxkLXByb2dyYW0tb3B0aW9u cyBjdGFncy1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY3RhZ3MncyBldGFncyByZXF1aXJlcyAn LUwnIGZvciBzdGRpbiBpbnB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGN0 YWdzLXAgIi1MIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy1maWxlKSkp CisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgIChtYXBjIChsYW1iZGEgKGYpCisgICAg ICAgICAgICAgIChpbnNlcnQgZiAiXG4iKSkKKyAgICAgICAgICAgIGZpbGVzKQorICAgICAg KHNoZWxsLWNvbW1hbmQtb24tcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGNvbW1h bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwgbmlsIGV0YWdzLXJlZ2Vu LS1lcnJvcnMtYnVmZmVyLW5hbWUgdCkpCisgICAgKGV0YWdzLXJlZ2VuLS12aXNpdC10YWJs ZSB0YWdzLWZpbGUgcm9vdCkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXZpc2l0LXRhYmxl ICh0YWdzLWZpbGUgcm9vdCkKKyAgOzsgSW52YWxpZGF0ZSB0aGUgc2Nhbm5lZCB0YWdzIGFm dGVyIGFueSBjaGFuZ2UgaXMgd3JpdHRlbiB0byBkaXNrLgorICAoYWRkLWhvb2sgJ2FmdGVy LXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSkKKyAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3KQorICAoc2V0cSBl dGFncy1yZWdlbi0tdGFncy1maWxlIHRhZ3MtZmlsZQorICAgICAgICBldGFncy1yZWdlbi0t dGFncy1yb290IHJvb3QpCisgICh2aXNpdC10YWdzLXRhYmxlIGV0YWdzLXJlZ2VuLS10YWdz LWZpbGUpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWN0YWdzLXAgKCkKKyAgKHN0cmluZy1z ZWFyY2ggIkN0YWdzIgorICAgICAgICAgICAgICAgICAoc2hlbGwtY29tbWFuZC10by1zdHJp bmcKKyAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzIC0tdmVyc2lvbiIgZXRhZ3MtcmVn ZW4tcHJvZ3JhbSkpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9w dGlvbnMgKGN0YWdzLXApCisgICh3aGVuIChhbmQgZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0 IGN0YWdzLXApCisgICAgKHVzZXItZXJyb3IgImV0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCBp cyBub3Qgc3VwcG9ydGVkIHdpdGggQ3RhZ3MiKSkKKyAgKG5jb25jCisgICAobWFwY2FuCisg ICAgKGxhbWJkYSAoZ3JvdXApCisgICAgICAobWFwY2FuCisgICAgICAgKGxhbWJkYSAobGFu ZykKKyAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAocmVnZXhwKQorICAgICAgICAgICAgICAg ICAgIChjb25jYXQgIi0tcmVnZXg9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNo ZWxsLXF1b3RlLWFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1h dCAieyVzfSVzIiBsYW5nIHJlZ2V4cCkpKSkKKyAgICAgICAgICAgICAgICAgKGNkciBncm91 cCkpKQorICAgICAgIChjYXIgZ3JvdXApKSkKKyAgICBldGFncy1yZWdlbi1yZWdleHAtYWxp c3QpCisgICBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlvbnMpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLXVwZGF0ZS1maWxlICgpCisgIDs7IFRPRE86IE1heWJlIG9ubHkgZG8gdGhpcyB3 aGVuIEVtYWNzIGlzIGlkbGUgZm9yIGEgYml0LiAgT3IgZGVmZXIKKyAgOzsgdGhlIHVwZGF0 ZXMgYW5kIGRvIHRoZW0gbGF0ZXIgaW4gYnVyc3RzIHdoZW4gdGhlIHRhYmxlIGlzIHVzZWQu CisgIChsZXQgKChmaWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkKKyAgICAgICAgKHRhZ3Mt ZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkp CisgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg KHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgZXRh Z3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJs ZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAgICAgICAgICAgICAgKHNldHEgcHIgKHBy b2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAgICAoZXF1YWwgKHByb2plY3Qtcm9vdCBw cikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAgICAgICAgICAgICAgIChtZW1iZXIgZmls ZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisgICAgICAgICAgKHNldC1idWZmZXIgdGFn cy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBzaG91bGQtc2NhbiB0KSkKKyAgICAgICAg ICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAgICAgICAg KGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUtbmFtZSkpCisgICAgICAgICAgKHNldHEg c2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVuIHNob3VsZC1zY2FuCisgICAgICAgIChl dGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAobGV0ICgoc2F2 ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCisg ICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1y ZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICh3 aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5hbWUpIG5pbCB0 KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAgICAgIChzZWFy Y2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGluaGliaXQtcmVh ZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkpKSkKKyAgICB0 KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3QgZmlsZS1uYW1l cykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlvbnMgKGV0YWdz LXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1jdGFncy1wKSkp CisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6IGNhbGwtcHJv Y2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7IExpa2UgMTBt cyB2cyAyMG1zIGhlcmUuCisgICAgKHNoZWxsLWNvbW1hbmQKKyAgICAgKGZvcm1hdCAiJXMg JXMgJXMgLW8gLSIKKyAgICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFtIChtYXBjb25j YXQgIydpZGVudGl0eSBvcHRpb25zICIgIikKKyAgICAgICAgICAgICAobWFwY29uY2F0ICMn aWRlbnRpdHkgZmlsZS1uYW1lcyAiICIpKQorICAgICB0IGV0YWdzLXJlZ2VuLS1lcnJvcnMt YnVmZmVyLW5hbWUpKQorICA7OyBGSVhNRTogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGRv IHRoaXM/CisgIDs7IENvbXBsZXRpb24gdGFibGUgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBs YWNlIHdoZXJlIHRoZQorICA7OyB1cGRhdGUgaXMgbm90IGluY3JlbWVudGFsLgorICAoc2V0 cS1kZWZhdWx0IHRhZ3MtY29tcGxldGlvbi10YWJsZSBuaWwpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLW1hcmstYXMtbmV3ICgpCisgICh3aGVuIChhbmQgZXRhZ3MtcmVnZW4tLXRhZ3Mt cm9vdAorICAgICAgICAgICAgIChub3QgYnVmZmVyLWZpbGUtbnVtYmVyKSkKKyAgICAoc2V0 cS1sb2NhbCBldGFncy1yZWdlbi0tbmV3LWZpbGUgdCkpKQorCisoZGVmdW4gZXRhZ3MtcmVn ZW4tLXRhZ3MtY2xlYW51cCAoKQorICAod2hlbiBldGFncy1yZWdlbi0tdGFncy1maWxlCisg ICAgKGxldCAoKGJ1ZmZlciAoZ2V0LWZpbGUtYnVmZmVyIGV0YWdzLXJlZ2VuLS10YWdzLWZp bGUpKSkKKyAgICAgIChhbmQgYnVmZmVyCisgICAgICAgICAgIChraWxsLWJ1ZmZlciBidWZm ZXIpKSkKKyAgICAoc2V0cSB0YWdzLWZpbGUtbmFtZSBuaWwKKyAgICAgICAgICB0YWdzLXRh YmxlLWxpc3QgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSBuaWwKKyAg ICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkpCisgIChyZW1vdmUtaG9vayAn YWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQorICAocmVtb3Zl LWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1uZXcpKQor CisoZGVmdmFyIGV0YWdzLXJlZ2VuLW1vZGUtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKQor Cis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIGV0YWdzLXJlZ2VuLW1vZGUK KyAgIkdlbmVyYXRlIGFuZCB1cGRhdGUgdGhlIHRhZ3MgYXV0b21hdGljYWxseS4KKworVGhp cyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJh c2VkIG9uCit0aGUgY3VycmVudCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1 cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMu IgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1vZGUKKyAgICAgIChwcm9nbgor ICAgICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFja2VuZCA6YmVmb3JlCisgICAg ICAgICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgICAg ICAoYWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9uIDpiZWZv cmUKKyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUp KQorICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1iYWNrZW5kICMnZXRhZ3MtcmVn ZW4tLW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVtb3ZlICd0YWdzLWNvbXBsZXRp b24tYXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisg ICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKworKHByb3ZpZGUgJ2V0YWdzLXJl Z2VuKQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJlCg== --------------S9YQl2j6jNWsjRptU7ehtB9r-- From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 23 20:43:45 2023 Received: (at 67687) by debbugs.gnu.org; 24 Dec 2023 01:43:45 +0000 Received: from localhost ([127.0.0.1]:51524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rHDWq-0002DF-8W for submit@debbugs.gnu.org; Sat, 23 Dec 2023 20:43:45 -0500 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:40941) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rHDWo-0002D0-Bm for 67687@debbugs.gnu.org; Sat, 23 Dec 2023 20:43:43 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 8D3483200A30; Sat, 23 Dec 2023 20:43:30 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Sat, 23 Dec 2023 20:43:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1703382210; x=1703468610; bh=QDe1lpSnh+ L2Vtxs/tOTFVhpK4UM9JQu3BItA3+Cmzo=; b=p3ruBDfCB4e8TCwyxZVZ5v0YHa YU7WwBwosNq2vFvOjqgcAu6YXV/vUDKEluaqJygC2tDt0MM86WhkWgrCdyde2T/O tolAhlhXMoIy/czHRT9W3/sNvKA7ACmnkMwwIgteph1Z30dEWPr+5C6Db6TxetH3 41vSJhjTYuWugb8dk0woRRt0iZF9aLqG226BLUBCNVNccPVgK911RX7xZXMjaRQG JTyaCiOZBkADIp0q4dv0u3HzqGB1FoE/ikFdESGWeDYkWEQdQhxcKrihKRoZw5Zx mQhsZnexBW3cYB/jP1nyEE1JwMF7cKgBH7YsBL2+LL4ArRuetfaiCoqFkdFQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1703382210; x=1703468610; bh=QDe1lpSnh+L2Vtxs/tOTFVhpK4UM 9JQu3BItA3+Cmzo=; b=FY+cDgmQR8WD+SJTzHBFKbTkXKeRw0VKzgsWygkrs+GS XElXvafpZy0gy3r2HMIPZdZHjClDF19dLUcZblsDjXbsVhch58iU9i5pmdfSiti9 ti4r+t+ICrZKQKFkNm8NAvbbi193WfGg/7lW9pBxx27YCT4UXIJ2WlSeq3paGHvj T3tUZeaKZM/uJaumplTERzFhYCdgsHzRGMBdUSnaMrOlFUxmGPhL+6IjldsKkKiF ot+bsob/qeYivTH4BGJvkzF5F2dY7J5Rd2mipIw6lr7/LTxNfYn31Zpi36NHbgVr w0vIfhO7+HNwBAeH+216UW7SjJih2QEc/f4QN0ewSA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvddvtddgfeejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpedtvdeugedvteelvdegvefguedtgfethefggeffkedtkeegveeifeeiudejueff ffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 23 Dec 2023 20:43:28 -0500 (EST) Content-Type: multipart/mixed; boundary="------------tVrEx8w7FeNSDtzk4CvPYG0r" Message-ID: Date: Sun, 24 Dec 2023 03:43:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US From: Dmitry Gutov To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> In-Reply-To: <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------tVrEx8w7FeNSDtzk4CvPYG0r Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 22/12/2023 01:37, Dmitry Gutov wrote: > On 21/12/2023 18:46, Dmitry Gutov wrote: >> See instead the patch attached to this bug report. > > Here's an update, incorporating the feedback from here and there. Fixed a typo in dir-locals and implemented better support for etags-regen-ignores (though with one omission). To me it looks good to check in now. --------------tVrEx8w7FeNSDtzk4CvPYG0r Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v3.diff" Content-Disposition: attachment; filename="etags-regen-v3.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggNmRmMTdhYTNmMGEuLjJm ZjMzNTZkM2M5IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTIz OCw2ICsxMjM4LDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg4YjczMDE5NWMzCi0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MTEg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMSwg MjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0aG9yOiBEbWl0 cnkgR3V0b3YgPGRtaXRyeUBndXRvdi5kZXY+Cis7OyBLZXl3b3JkczogdG9vbHMKKworOzsg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7 OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKwor OzsgU2ltcGxlIGF1dG9tYXRpYyB0YWdzIGdlbmVyYXRpb24gd2l0aCB1cGRhdGVzIG9uIHNh dmUuCis7OworOzsgVGhlIGdvYWwgb2YgdGhpcyBtb2RlIGlzIHRvIHByb3ZpZGUgYSBmZWF0 dXJlIHRoYXQgc2hvdWxkIGJlCis7OyBmYW1pbGlhciB0byB0aGUgdXNlcnMgb2YgY2VydGFp biBsaWdodHdlaWdodCBwcm9ncmFtbWVyJ3MgZWRpdG9ycywKKzs7IHN1Y2ggYXMgU3VibGlt ZSBUZXh0LiAgV2hpY2ggaXMgImdvIHRvIGRlZmluaXRpb24iIHdpdGggYXV0b21hdGljCis7 OyBpbmRleGluZywgYWRkZWQgaW4gU1QzIChyZWxlYXNlZCBpbiAyMDE3KS4KKzs7Cis7OyBB dCB0aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhv b2ssIGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChlLmcuIHRoZSB1 c2VyIHN3aXRjaGluZyB0byBhbm90aGVyCis7OyBicmFuY2ggZnJvbSB0aGUgdGVybWluYWwp IHdlIGNhbiBsb29rIGludG8gcGx1Z2dpbmcgaW50byBzb21ldGhpbmcKKzs7IGxpa2UgYGZp bGVub3RpZnknLgorOzsKKzs7IE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgZGlzYWJsZXMgaXRz ZWxmIGlmIHRoZSB1c2VyIGhhcyBzb21lIHRhZ3MKKzs7IHRhYmxlIGFscmVhZHkgdmlzaXRl ZCAod2l0aCBgTS14IHZpc2l0LXRhZ3MtdGFibGUnLCBvciB0aHJvdWdoIGFuCis7OyBleHBs aWNpdCBwcm9tcHQgdHJpZ2dlcmVkIGJ5IHNvbWUgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHRh Z3MpLgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2NsLWxpYikKKworKGRlZmdyb3VwIGV0 YWdzLXJlZ2VuIG5pbAorICAiQXV0by0ocmUpZ2VuZXJhdGluZyB0YWdzLiIKKyAgOmdyb3Vw ICd0b29scykKKworKGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1maWxlIG5pbCkKKyhkZWZ2 YXIgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS1u ZXctZmlsZSBuaWwpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3Qtcm9vdCAicHJvamVj dCIpCisoZGVjbGFyZS1mdW5jdGlvbiBwcm9qZWN0LWZpbGVzICJwcm9qZWN0IikKKyhkZWNs YXJlLWZ1bmN0aW9uIGRpcmVkLWdsb2ItcmVnZXhwICJkaXJlZCIpCisKKyhkZWZjdXN0b20g ZXRhZ3MtcmVnZW4tcHJvZ3JhbSAoZXhlY3V0YWJsZS1maW5kICJldGFncyIpCisgICJOYW1l IG9mIHRoZSBldGFncyBwcm9ncmFtLgorCitJZiB5b3Ugb25seSBoYXZlIGBjdGFncycgaW5z dGFsbGVkLCB5b3UgY2FuIGFsc28gc2V0IHRoaXMgdG8KK1wiY3RhZ3MgLWVcIi4gIFNvbWUg ZmVhdHVyZXMgbWlnaHQgbm90IGJlIHN1cHBvcnRlZCB0aGlzIHdheS4iCisgIDs7IEFsd2F5 cyBoYXZpbmcgb3VyICdldGFncycgaGVyZSB3b3VsZCBiZSBlYXNpZXIsIGJ1dCB3ZSBjYW4n dAorICA7OyBhbHdheXMgcmVseSBvbiBpdCBiZWluZyBpbnN0YWxsZWQuICBTbyBpdCBtaWdo dCBiZSBjdGFncydzIGV0YWdzLgorICA6dHlwZSAnZmlsZSkKKworKGRlZmN1c3RvbSBldGFn cy1yZWdlbi10YWdzLWZpbGUgIlRBR1MiCisgICJOYW1lIG9mIHRoZSB0YWdzIGZpbGUgdG8g Y3JlYXRlIGluc2lkZSB0aGUgcHJvamVjdC4KKworVGhpcyB2YWx1ZSBzaG91bGQgZWl0aGVy IGJlIGEgc2ltcGxlIGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5CitzcGVjaWZpZWQpLCBvciBh IGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkKK2FuZCBy ZXR1cm5zIGEgZGlzdGluY3QgZmlsZSBuYW1lIGZvciB0aGUgdGFncyBmaWxlIGZvciBpdC4g IFRoZQorbGF0dGVyIG9wdGlvbiBpcyBtb3N0IHVzZWZ1bCB3aGVuIHlvdSBwcmVmZXIgdG8g c3RvcmUgdGhlIHRhZworZmlsZXMgc29tZXdoZXJlIG91dHNpZGUgLS0gZS5nLiBpbiBgdGVt cG9yYXJ5LWZpbGUtZGlyZWN0b3J5Jy4iCisgIDp0eXBlICcoY2hvaWNlIChzdHJpbmcgOnRh ZyAiRmlsZSBuYW1lIikKKyAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0 aW9uIHRoYXQgcmV0dXJucyBmaWxlIG5hbWUiKSkpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVn ZW4tcHJvZ3JhbS1vcHRpb25zIG5pbAorICAiTGlzdCBvZiBhZGRpdGlvbmFsIG9wdGlvbnMg dG8gcGFzcyB0byB0aGUgZXRhZ3MgcHJvZ3JhbS4iCisgIDp0eXBlICcocmVwZWF0IHN0cmlu ZykpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0IG5pbAorICAiTWFw cGluZyBvZiBsYW5ndWFnZXMgdG8gYWRkaXRpb25hbCByZWdleHBzIGZvciB0YWdzLgorCitU aGUgdmFsdWUgbXVzdCBiZSBhIGxpc3Qgb2YgY29uc2VzIChMQU5HVUFHRVMgLiBUQUctUkVH RVhQUykKK3doZXJlIGJvdGggY2FyIGFuZCBjZHIgYXJlIGxpc3RzIG9mIHN0cmluZ3MuCisK K0VhY2ggbGFuZ3VhZ2Ugc2hvdWxkIGJlIG9uZSBvZiB0aGUgcmVjb2duaXplZCBieSBldGFn cywgc2VlCitgZXRhZ3MgLS1oZWxwJy4gIEVhY2ggdGFnIHJlZ2V4cCBzaG91bGQgYmUgYSBz dHJpbmcgaW4gdGhlIGZvcm1hdAorYXMgZG9jdW1lbnRlZCBmb3IgdGhlIGAtLXJlZ2V4JyBh cmd1bWVudHMuCisKK1dlIGN1cnJlbnRseSBzdXBwb3J0IG9ubHkgRW1hY3MncyBldGFncyBw cm9ncmFtIHdpdGggdGhpcyBvcHRpb24uIgorICA6dHlwZSAnKHJlcGVhdAorICAgICAgICAg IChjb25zCisgICAgICAgICAgIDp0YWcgIkxhbmd1YWdlcyBncm91cCIKKyAgICAgICAgICAg KHJlcGVhdCAoc3RyaW5nIDp0YWcgIkxhbmd1YWdlIG5hbWUiKSkKKyAgICAgICAgICAgKHJl cGVhdCAoc3RyaW5nIDp0YWcgIlRhZyBSZWdleHAiKSkpKSkKKworOzs7IyMjYXV0b2xvYWQK KyhwdXQgJ2V0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCAnc2FmZS1sb2NhbC12YXJpYWJsZQor ICAgICAobGFtYmRhICh2YWx1ZSkKKyAgICAgICAoYW5kIChsaXN0cCB2YWx1ZSkKKyAgICAg ICAgICAgIChzZXEtZXZlcnktcAorICAgICAgICAgICAgIChsYW1iZGEgKGdyb3VwKQorICAg ICAgICAgICAgICAgKGFuZCAoY29uc3AgZ3JvdXApCisgICAgICAgICAgICAgICAgICAgIChs aXN0cCAoY2FyIGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3RwIChjZHIgZ3Jv dXApKQorICAgICAgICAgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIChjYXIg Z3JvdXApKQorICAgICAgICAgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIChj ZHIgZ3JvdXApKSkpCisgICAgICAgICAgICAgdmFsdWUpKSkpCisKKzs7IFdlIGhhdmUgdG8g bGlzdCBhbGwgZXh0ZW5zaW9uczogZXRhZ3MgZmFsbHMgYmFjayB0byBGb3J0cmFuCis7OyB3 aGVuIGl0IGNhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGZpbGUuCis7OyBodHRw Oi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxOC0wMS9tc2cw MDMyMy5odG1sCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLWZpbGUtZXh0ZW5zaW9ucworICAn KCJyYiIgImpzIiAicHkiICJwbCIgImVsIiAiYyIgImNwcCIgImNjIiAiaCIgImhoIiAiaHBw IgorICAgICJqYXZhIiAiZ28iICJjbCIgImxpc3AiICJwcm9sb2ciICJwaHAiICJlcmwiICJo cmwiCisgICAgIkYiICJmIiAiZjkwIiAiZm9yIiAiY3MiICJhIiAiYXNtIiAiYWRzIiAiYWRi IiAiYWRhIikKKyAgIkNvZGUgZmlsZSBleHRlbnNpb25zLgorCitGaWxlIGV4dGVuc2lvbnMg dG8gZ2VuZXJhdGUgdGhlIHRhZ3MgZm9yLiIKKyAgOnR5cGUgJyhyZXBlYXQgKHN0cmluZyA6 dGFnICJGaWxlIGV4dGVuc2lvbiIpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0YWdz LXJlZ2VuLWZpbGUtZXh0ZW5zaW9ucyAnc2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFt YmRhICh2YWx1ZSkgKGFuZCAobGlzdHAgdmFsdWUpIChzZXEtZXZlcnktcCAjJ3N0cmluZ3Ag dmFsdWUpKSkpCisKKzs7IEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IHJvb3QgYW5jaG9yaW5n IHlldC4KKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4taWdub3JlcyBuaWwKKyAgIkFkZGl0aW9u YWwgaWdub3JlIHJ1bGVzLCBpbiB0aGUgZm9ybWF0IG9mIGBwcm9qZWN0LWlnbm9yZXMnLiIK KyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoc3RyaW5nIDp0YWcgIkdsb2IgdG8gaWdu b3JlIikpKQorCis7OzsjIyNhdXRvbG9hZAorKHB1dCAnZXRhZ3MtcmVnZW4taWdub3JlcyAn c2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFtYmRhICh2YWx1ZSkgKGFuZCAobGlzdHAg dmFsdWUpIChzZXEtZXZlcnktcCAjJ3N0cmluZ3AgdmFsdWUpKSkpCisKKyhkZWZ2YXIgZXRh Z3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSAiKmV0YWdzLXJlZ2VuLXRhZ3MtZXJyb3Jz KiIpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLW10aW1lcyAocHJvaikKKyAgKGxldCAo KGZpbGVzIChldGFncy1yZWdlbi0tYWxsLWZpbGVzIHByb2opKQorICAgICAgICAobXRpbWVz IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsKSkKKyAgICAgICAgZmlsZS1uYW1lLWhh bmRsZXItYWxpc3QpCisgICAgKGRvbGlzdCAoZiBmaWxlcykKKyAgICAgIChjb25kaXRpb24t Y2FzZSBuaWwKKyAgICAgICAgICAocHV0aGFzaCBmCisgICAgICAgICAgICAgICAgICAgKGZp bGUtYXR0cmlidXRlLW1vZGlmaWNhdGlvbi10aW1lCisgICAgICAgICAgICAgICAgICAgIChm aWxlLWF0dHJpYnV0ZXMgZikpCisgICAgICAgICAgICAgICAgICAgbXRpbWVzKQorICAgICAg ICAoZmlsZS1taXNzaW5nIG5pbCkpKQorICAgIG10aW1lcykpCisKKyhkZWZ1biBldGFncy1y ZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZSAocHJvaikKKyAgKGlmIChmdW5jdGlvbnAgZXRhZ3Mt cmVnZW4tdGFncy1maWxlKQorICAgICAgKGZ1bmNhbGwgZXRhZ3MtcmVnZW4tdGFncy1maWxl IChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAgKGV4cGFuZC1maWxlLW5hbWUgZXRhZ3MtcmVn ZW4tdGFncy1maWxlIChwcm9qZWN0LXJvb3QgcHJvaikpKSkKKworKGRlZnVuIGV0YWdzLXJl Z2VuLS1yZWZyZXNoIChwcm9qKQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAobGV0KiAoKHRh Z3MtZmlsZSAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgcHJvaikpCisgICAgICAg ICAgICh0YWdzLW10aW1lIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAg ICAgICAgICAgICAgICAgICAgICAgKGZpbGUtYXR0cmlidXRlcyB0YWdzLWZpbGUpKSkKKyAg ICAgICAgICAgKGFsbC1tdGltZXMgKGV0YWdzLXJlZ2VuLS1hbGwtbXRpbWVzIHByb2opKQor ICAgICAgICAgICBhZGRlZC1maWxlcworICAgICAgICAgICBjaGFuZ2VkLWZpbGVzCisgICAg ICAgICAgIHJlbW92ZWQtZmlsZXMpCisgICAgICAoZXRhZ3MtcmVnZW4tLXZpc2l0LXRhYmxl IHRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKQorICAgICAgKHNldC1idWZmZXIgKGdl dC1maWxlLWJ1ZmZlciB0YWdzLWZpbGUpKQorICAgICAgKGRvbGlzdCAoZmlsZSAodGFncy10 YWJsZS1maWxlcykpCisgICAgICAgIChsZXQgKChtdGltZSAoZ2V0aGFzaCBmaWxlIGFsbC1t dGltZXMpKSkKKyAgICAgICAgICAoY29uZAorICAgICAgICAgICAoKG51bGwgbXRpbWUpCisg ICAgICAgICAgICAocHVzaCBmaWxlIHJlbW92ZWQtZmlsZXMpKQorICAgICAgICAgICAoKHRp bWUtbGVzcy1wIHRhZ3MtbXRpbWUgbXRpbWUpCisgICAgICAgICAgICAocHVzaCBmaWxlIGNo YW5nZWQtZmlsZXMpCisgICAgICAgICAgICAocmVtaGFzaCBmaWxlIGFsbC1tdGltZXMpKQor ICAgICAgICAgICAodAorICAgICAgICAgICAgKHJlbWhhc2ggZmlsZSBhbGwtbXRpbWVzKSkp KSkKKyAgICAgIChtYXBoYXNoCisgICAgICAgKGxhbWJkYSAoa2V5IF92YWx1ZSkKKyAgICAg ICAgIChwdXNoIGtleSBhZGRlZC1maWxlcykpCisgICAgICAgYWxsLW10aW1lcykKKyAgICAg IChpZiAoPiAoKyAobGVuZ3RoIGFkZGVkLWZpbGVzKQorICAgICAgICAgICAgICAgIChsZW5n dGggY2hhbmdlZC1maWxlcykKKyAgICAgICAgICAgICAgICAobGVuZ3RoIHJlbW92ZWQtZmls ZXMpKQorICAgICAgICAgICAgIDEwMCkKKyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAg IChtZXNzYWdlICJldGFncy1yZWdlbjogVG9vIG1hbnkgY2hhbmdlcywgZmFsbGluZyBiYWNr IHRvIGZ1bGwgcmVzY2FuIikKKyAgICAgICAgICAgIChldGFncy1yZWdlbi0tdGFncy1jbGVh bnVwKSkKKyAgICAgICAgKGRvbGlzdCAoZmlsZSAobmNvbmMgcmVtb3ZlZC1maWxlcyBjaGFu Z2VkLWZpbGVzKSkKKyAgICAgICAgICAoZXRhZ3MtcmVnZW4tLXJlbW92ZS10YWcgZmlsZSkp CisgICAgICAgICh3aGVuIChvciBjaGFuZ2VkLWZpbGVzIGFkZGVkLWZpbGVzKQorICAgICAg ICAgIChhcHBseSAjJ2V0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncworICAgICAgICAgICAgICAg ICAobmNvbmMgY2hhbmdlZC1maWxlcyBhZGRlZC1maWxlcykpKQorICAgICAgICAod2hlbiAo b3IgY2hhbmdlZC1maWxlcyBhZGRlZC1maWxlcyByZW1vdmVkLWZpbGVzKQorICAgICAgICAg IChsZXQgKChzYXZlLXNpbGVudGx5IHQpCisgICAgICAgICAgICAgICAgKG1lc3NhZ2UtbG9n LW1heCBuaWwpKQorICAgICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkpCisKKyhkZWZ1 biBldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUgKCkKKyAgKGxldCAoKHByb2opKQorICAg ICh3aGVuIChhbmQgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdAorICAgICAgICAgICAgICAgKG5v dCAoZmlsZS1pbi1kaXJlY3RvcnktcCBkZWZhdWx0LWRpcmVjdG9yeQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290KSkp CisgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgKHdoZW4gKGFuZCAo bm90IGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QpCisgICAgICAgICAgICAgICA7OyBJZiBleGlz dGluZyB0YWJsZSBpcyB2aXNpdGVkIHRoYXQncyBub3QgZ2VuZXJhdGVkIGJ5CisgICAgICAg ICAgICAgICA7OyB0aGlzIG1vZGUsIHNraXAgYWxsIGZ1bmN0aW9uYWxpdHkuCisgICAgICAg ICAgICAgICAobm90IChvciB0YWdzLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAg ICAgdGFncy10YWJsZS1saXN0KSkKKyAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wIChl dGFncy1yZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXRxIHByb2ogKHByb2plY3QtY3VycmVudCkpKSkpCisgICAgICAobWVzc2Fn ZSAiRm91bmQgZXhpc3RpbmcgdGFncyB0YWJsZSwgcmVmcmVzaGluZy4uLiIpCisgICAgICAo ZXRhZ3MtcmVnZW4tLXJlZnJlc2ggcHJvaikpCisgICAgKHdoZW4gKGFuZCAobm90IChvciB0 YWdzLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFncy10YWJsZS1saXN0 KSkKKyAgICAgICAgICAgICAgIChzZXRxIHByb2ogKG9yIHByb2ogKHByb2plY3QtY3VycmVu dCkpKSkKKyAgICAgIChtZXNzYWdlICJHZW5lcmF0aW5nIG5ldyB0YWdzIHRhYmxlLi4uIikK KyAgICAgIChsZXQgKChzdGFydCAodGltZS10by1zZWNvbmRzKSkpCisgICAgICAgIChldGFn cy1yZWdlbi0tdGFncy1nZW5lcmF0ZSBwcm9qKQorICAgICAgICAobWVzc2FnZSAiLi4uZG9u ZSAoJS4yZiBzKSIgKC0gKHRpbWUtdG8tc2Vjb25kcykgc3RhcnQpKSkpKSkKKworKGRlZnVu IGV0YWdzLXJlZ2VuLS1hbGwtZmlsZXMgKHByb2opCisgIChsZXQqICgocm9vdCAocHJvamVj dC1yb290IHByb2opKQorICAgICAgICAgKGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAg ICAgICA7OyBUT0RPOiBNYWtlIHRoZSBzY2FubmluZyBtb3JlIGVmZmljaWVudCwgZS5nLiBt b3ZlIHRoZQorICAgICAgICAgOzsgZmlsdGVyaW5nIGJ5IGdsb2IgdG8gcHJvamVjdCAocHJv amVjdC1maWxlcy1maWx0ZXJlZC4uLikuCisgICAgICAgICAoZmlsZXMgKHByb2plY3QtZmls ZXMgcHJvaikpCisgICAgICAgICAobWF0Y2gtcmUgKGNvbmNhdAorICAgICAgICAgICAgICAg ICAgICAiXFwuIgorICAgICAgICAgICAgICAgICAgICAocmVnZXhwLW9wdCBldGFncy1yZWdl bi1maWxlLWV4dGVuc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICJcXCciKSkKKyAgICAg ICAgIChpci1zdGFydCAoMS0gKGxlbmd0aCByb290KSkpCisgICAgICAgICAoaWdub3Jlcy1y ZWdleHBzCisgICAgICAgICAgKG1hcGNhciAjJ2V0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhw CisgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1pZ25vcmVzKSkpCisgICAgKGNsLWRl bGV0ZS1pZgorICAgICAobGFtYmRhIChmKSAob3IgKG5vdCAoc3RyaW5nLW1hdGNoLXAgbWF0 Y2gtcmUgZikpCisgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wICIvXFwuIyIgZikK KyAgICAgICAgICAgICAgICAoY2wtc29tZSAobGFtYmRhIChpZ25vcmUpIChzdHJpbmctbWF0 Y2ggaWdub3JlIGYgaXItc3RhcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y ZXMtcmVnZXhwcykpKQorICAgICBmaWxlcykpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWln bm9yZS1yZWdleHAgKGlnbm9yZSkKKyAgKHJlcXVpcmUgJ2RpcmVkKQorICA7OyBJdCdzIHNv bWV3aGF0IGJyaXR0bGUgdG8gcmVseSBvbiBEaXJlZC4KKyAgKGxldCAoKHJlIChkaXJlZC1n bG9iLXJlZ2V4cCBpZ25vcmUpKSkKKyAgICA7OyBXZSBjb3VsZCBpbXBsZW1lbnQgcm9vdCBh bmNob3JpbmcgaGVyZSwgYnV0IFxcPSBkb2Vzbid0IHdvcmsgaW4KKyAgICA7OyBzdHJpbmct bWF0Y2ggOi0oLgorICAgIChjb25jYXQgKHVubGVzcyAoZXEgPy8gKGFyZWYgcmUgMykpICIv IikKKyAgICAgICAgICAgIDs7IEN1dHRpbmcgb2ZmIHRoZSBhbmNob3JzLgorICAgICAgICAg ICAgKHN1YnN0cmluZyByZSAyICgtIChsZW5ndGggcmUpIDIpKQorICAgICAgICAgICAgKHVu bGVzcyAoZXEgPy8gKGFyZWYgcmUgKC0gKGxlbmd0aCByZSkgMykpKQorICAgICAgICAgICAg ICA7OyBFaXRoZXIgbWF0Y2ggYSBmdWxsIG5hbWUgc2VnbWVudCwgb3IgZW9zLgorICAgICAg ICAgICAgICAiXFwoPzovXFx8XFwnXFwpIikpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10 YWdzLWdlbmVyYXRlIChwcm9qKQorICAobGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9q KSkKKyAgICAgICAgIChkZWZhdWx0LWRpcmVjdG9yeSByb290KQorICAgICAgICAgKGZpbGVz IChldGFncy1yZWdlbi0tYWxsLWZpbGVzIHByb2opKQorICAgICAgICAgKHRhZ3MtZmlsZSAo ZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgcHJvaikpCisgICAgICAgICAoY3RhZ3Mt cCAoZXRhZ3MtcmVnZW4tLWN0YWdzLXApKQorICAgICAgICAgKGNvbW1hbmQgKGZvcm1hdCAi JXMgJXMgJXMgLSAtbyAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXRhZ3MtcmVn ZW4tcHJvZ3JhbQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0ICMnaWRl bnRpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXRhZ3MtcmVn ZW4tLWJ1aWxkLXByb2dyYW0tb3B0aW9ucyBjdGFncy1wKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg Y3RhZ3MncyBldGFncyByZXF1aXJlcyAnLUwnIGZvciBzdGRpbiBpbnB1dC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGlmIGN0YWdzLXAgIi1MIiAiIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFncy1maWxlKSkpCisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAg IChtYXBjIChsYW1iZGEgKGYpCisgICAgICAgICAgICAgIChpbnNlcnQgZiAiXG4iKSkKKyAg ICAgICAgICAgIGZpbGVzKQorICAgICAgKHNoZWxsLWNvbW1hbmQtb24tcmVnaW9uIChwb2lu dC1taW4pIChwb2ludC1tYXgpIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuaWwgbmlsIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUgdCkpCisgICAg KGV0YWdzLXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgcm9vdCkpKQorCisoZGVmdW4g ZXRhZ3MtcmVnZW4tLXZpc2l0LXRhYmxlICh0YWdzLWZpbGUgcm9vdCkKKyAgOzsgSW52YWxp ZGF0ZSB0aGUgc2Nhbm5lZCB0YWdzIGFmdGVyIGFueSBjaGFuZ2UgaXMgd3JpdHRlbiB0byBk aXNrLgorICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRh dGUtZmlsZSkKKyAgKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4t LW1hcmstYXMtbmV3KQorICAoc2V0cSBldGFncy1yZWdlbi0tdGFncy1maWxlIHRhZ3MtZmls ZQorICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290IHJvb3QpCisgICh2aXNpdC10YWdz LXRhYmxlIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4t LWN0YWdzLXAgKCkKKyAgKHN0cmluZy1zZWFyY2ggIkN0YWdzIgorICAgICAgICAgICAgICAg ICAoc2hlbGwtY29tbWFuZC10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAgIChmb3JtYXQg IiVzIC0tdmVyc2lvbiIgZXRhZ3MtcmVnZW4tcHJvZ3JhbSkpKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGN0YWdzLXApCisgICh3aGVuIChhbmQg ZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0IGN0YWdzLXApCisgICAgKHVzZXItZXJyb3IgImV0 YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggQ3RhZ3MiKSkK KyAgKG5jb25jCisgICAobWFwY2FuCisgICAgKGxhbWJkYSAoZ3JvdXApCisgICAgICAobWFw Y2FuCisgICAgICAgKGxhbWJkYSAobGFuZykKKyAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAo cmVnZXhwKQorICAgICAgICAgICAgICAgICAgIChjb25jYXQgIi0tcmVnZXg9IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZvcm1hdCAieyVzfSVzIiBsYW5nIHJlZ2V4cCkpKSkKKyAg ICAgICAgICAgICAgICAgKGNkciBncm91cCkpKQorICAgICAgIChjYXIgZ3JvdXApKSkKKyAg ICBldGFncy1yZWdlbi1yZWdleHAtYWxpc3QpCisgICBldGFncy1yZWdlbi1wcm9ncmFtLW9w dGlvbnMpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlICgpCisgIDs7IFRP RE86IE1heWJlIG9ubHkgZG8gdGhpcyB3aGVuIEVtYWNzIGlzIGlkbGUgZm9yIGEgYml0LiAg T3IgZGVmZXIKKyAgOzsgdGhlIHVwZGF0ZXMgYW5kIGRvIHRoZW0gbGF0ZXIgaW4gYnVyc3Rz IHdoZW4gdGhlIHRhYmxlIGlzIHVzZWQuCisgIChsZXQqICgoZmlsZS1uYW1lIGJ1ZmZlci1m aWxlLW5hbWUpCisgICAgICAgICAodGFncy1maWxlLWJ1ZiAoYW5kIGV0YWdzLXJlZ2VuLS10 YWdzLXJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldC1maWxlLWJ1ZmZl ciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAgICAocmVsbmFtZSAoY29uY2F0 ICIvIiAoZmlsZS1yZWxhdGl2ZS1uYW1lIGZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290 KSkpCisgICAgICAgICAoaWdub3JlcyBldGFncy1yZWdlbi1pZ25vcmVzKQorICAgICAgICAg cHIgc2hvdWxkLXNjYW4pCisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAod2hlbiB0YWdz LWZpbGUtYnVmCisgICAgICAgIChjb25kCisgICAgICAgICAoKGFuZCBldGFncy1yZWdlbi0t bmV3LWZpbGUKKyAgICAgICAgICAgICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdldGFncy1y ZWdlbi0tbmV3LWZpbGUpCisgICAgICAgICAgICAgICAoc2V0cSBwciAocHJvamVjdC1jdXJy ZW50KSkKKyAgICAgICAgICAgICAgIChlcXVhbCAocHJvamVjdC1yb290IHByKSBldGFncy1y ZWdlbi0tdGFncy1yb290KQorICAgICAgICAgICAgICAgKG1lbWJlciBmaWxlLW5hbWUgKHBy b2plY3QtZmlsZXMgcHIpKSkKKyAgICAgICAgICAoc2V0LWJ1ZmZlciB0YWdzLWZpbGUtYnVm KQorICAgICAgICAgIChzZXRxIHNob3VsZC1zY2FuIHQpKQorICAgICAgICAgKChwcm9nbiAo c2V0LWJ1ZmZlciB0YWdzLWZpbGUtYnVmKQorICAgICAgICAgICAgICAgICAoZXRhZ3MtcmVn ZW4tLXJlbW92ZS10YWcgZmlsZS1uYW1lKSkKKyAgICAgICAgICAoc2V0cSBzaG91bGQtc2Nh biB0KSkpKQorICAgICAgKHdoZW4gKGFuZCBzaG91bGQtc2NhbgorICAgICAgICAgICAgICAg ICAobm90IChjbC1zb21lCisgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlnbm9y ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhwIGlnbm9yZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsbmFtZSkpCisgICAgICAgICAgICAgICAg ICAgICAgIGlnbm9yZXMpKSkKKyAgICAgICAgKGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyBm aWxlLW5hbWUpCisgICAgICAgIChsZXQgKChzYXZlLXNpbGVudGx5IHQpCisgICAgICAgICAg ICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAoc2F2ZS1idWZmZXIgMCkp KSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXJlbW92ZS10YWcgKGZpbGUtbmFtZSkKKyAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgKHdoZW4gKHNlYXJjaC1mb3J3YXJkIChmb3Jt YXQgIlxmXG4lcywiIGZpbGUtbmFtZSkgbmlsIHQpCisgICAgKGxldCAoKHN0YXJ0IChtYXRj aC1iZWdpbm5pbmcgMCkpKQorICAgICAgKHNlYXJjaC1mb3J3YXJkICJcZlxuIiBuaWwgJ21v dmUpCisgICAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCisgICAgICAgIChkZWxl dGUtcmVnaW9uIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZW9icCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoLSAocG9pbnQpIDIpKSkpKQorICAgIHQpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4t LWFwcGVuZC10YWdzICgmcmVzdCBmaWxlLW5hbWVzKQorICAoZ290by1jaGFyIChwb2ludC1t YXgpKQorICAobGV0ICgob3B0aW9ucyAoZXRhZ3MtcmVnZW4tLWJ1aWxkLXByb2dyYW0tb3B0 aW9ucyAoZXRhZ3MtcmVnZW4tLWN0YWdzLXApKSkKKyAgICAgICAgKGluaGliaXQtcmVhZC1v bmx5IHQpKQorICAgIDs7IFhYWDogY2FsbC1wcm9jZXNzIGlzIHNpZ25pZmljYW50bHkgZmFz dGVyLCB0aG91Z2guCisgICAgOzsgTGlrZSAxMG1zIHZzIDIwbXMgaGVyZS4KKyAgICAoc2hl bGwtY29tbWFuZAorICAgICAoZm9ybWF0ICIlcyAlcyAlcyAtbyAtIgorICAgICAgICAgICAg IGV0YWdzLXJlZ2VuLXByb2dyYW0gKG1hcGNvbmNhdCAjJ2lkZW50aXR5IG9wdGlvbnMgIiAi KQorICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eSBmaWxlLW5hbWVzICIgIikp CisgICAgIHQgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSkpCisgIDs7IEZJWE1F OiBJcyB0aGVyZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcz8KKyAgOzsgQ29tcGxldGlvbiB0 YWJsZSBpcyB0aGUgb25seSByZW1haW5pbmcgcGxhY2Ugd2hlcmUgdGhlCisgIDs7IHVwZGF0 ZSBpcyBub3QgaW5jcmVtZW50YWwuCisgIChzZXRxLWRlZmF1bHQgdGFncy1jb21wbGV0aW9u LXRhYmxlIG5pbCkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tbWFyay1hcy1uZXcgKCkKKyAg KHdoZW4gKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAgICAgKG5vdCBi dWZmZXItZmlsZS1udW1iZXIpKQorICAgIChzZXRxLWxvY2FsIGV0YWdzLXJlZ2VuLS1uZXct ZmlsZSB0KSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tdGFncy1jbGVhbnVwICgpCisgICh3 aGVuIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUKKyAgICAobGV0ICgoYnVmZmVyIChnZXQtZmls ZS1idWZmZXIgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSkpKQorICAgICAgKGFuZCBidWZmZXIK KyAgICAgICAgICAgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKQorICAgICh0YWdzLXJlc2V0LXRh Z3MtdGFibGVzKQorICAgIChzZXRxIHRhZ3MtZmlsZS1uYW1lIG5pbAorICAgICAgICAgIHRh Z3MtdGFibGUtbGlzdCBuaWwKKyAgICAgICAgICBldGFncy1yZWdlbi0tdGFncy1maWxlIG5p bAorICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QgbmlsKSkKKyAgKHJlbW92ZS1o b29rICdhZnRlci1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tdXBkYXRlLWZpbGUpCisgIChy ZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS1tYXJrLWFzLW5l dykpCisKKyhkZWZ2YXIgZXRhZ3MtcmVnZW4tbW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1h cCkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLW1pbm9yLW1vZGUgZXRhZ3MtcmVnZW4t bW9kZQorICAiR2VuZXJhdGUgYW5kIHVwZGF0ZSB0aGUgdGFncyBhdXRvbWF0aWNhbGx5Lgor CitUaGlzIG1pbm9yIG1vZGUgZ2VuZXJhdGVzIHRoZSB0YWdzIHRhYmxlIGF1dG9tYXRpY2Fs bHkgYmFzZWQgb24KK3RoZSBjdXJyZW50IHByb2plY3QgY29uZmlndXJhdGlvbiwgYW5kIGxh dGVyIHVwZGF0ZXMgaXQgYXMgeW91CitlZGl0IHRoZSBmaWxlcyBhbmQgc2F2ZSB0aGUgY2hh bmdlcy4iCisgIDpnbG9iYWwgdAorICAoaWYgZXRhZ3MtcmVnZW4tbW9kZQorICAgICAgKHBy b2duCisgICAgICAgIChhZHZpY2UtYWRkICdldGFncy0teHJlZi1iYWNrZW5kIDpiZWZvcmUK KyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisg ICAgICAgIChhZHZpY2UtYWRkICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24g OmJlZm9yZQorICAgICAgICAgICAgICAgICAgICAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5l cmF0ZSkpCisgICAgKGFkdmljZS1yZW1vdmUgJ2V0YWdzLS14cmVmLWJhY2tlbmQgIydldGFn cy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisgICAgKGFkdmljZS1yZW1vdmUgJ3RhZ3MtY29t cGxldGlvbi1hdC1wb2ludC1mdW5jdGlvbiAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0 ZSkKKyAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpKQorCisocHJvdmlkZSAnZXRh Z3MtcmVnZW4pCisKKzs7OyBldGFncy1yZWdlbi5lbCBlbmRzIGhlcmUK --------------tVrEx8w7FeNSDtzk4CvPYG0r-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 28 04:31:09 2023 Received: (at 67687) by debbugs.gnu.org; 28 Dec 2023 09:31:09 +0000 Received: from localhost ([127.0.0.1]:38486 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rImjM-00058V-De for submit@debbugs.gnu.org; Thu, 28 Dec 2023 04:31:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rImjJ-0004xv-U9 for 67687@debbugs.gnu.org; Thu, 28 Dec 2023 04:31:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rImjE-00041A-UF; Thu, 28 Dec 2023 04:31:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2xQ6BNnl3eEPEHYsetxcZzrcPecDueKYCCU68MGYm7k=; b=AoFQj8x+ZuQU nZJKUjrpiGnbWu/dEB+R0Knr3Hu3HVwLVoXzojiX10UzXTUcA+bRgRv86KsLtGfRZfC5OBUvH8xIY ZBtagUMXgR9gZ2hUJmW0c0EwoMfJSaa1w/6+Gs9ZQdaalaYY+JLZ3GA9X19JcloYVWpbup5i/2lYJ 8xC/1TWe0WGhXW/Txoy/5nQpyez34vrEtzlcg/RU4iypp/H1g5MbWihrMYjp9QOnaRwi0NekIJCv1 0UicTtoNGXDw3yZNPh6dLyU4lGbC3JIfUanwCxjHLnzqucrMyN+Zq2dPA2iaAqFZhOm5lOkbeRoh+ 1jQnn4iPxkiWAF3vj8dPDQ==; Date: Thu, 28 Dec 2023 11:30:20 +0200 Message-Id: <83y1de7jyr.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: (message from Dmitry Gutov on Sun, 24 Dec 2023 03:43:25 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 24 Dec 2023 03:43:25 +0200 > From: Dmitry Gutov > Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com > > On 22/12/2023 01:37, Dmitry Gutov wrote: > > On 21/12/2023 18:46, Dmitry Gutov wrote: > >> See instead the patch attached to this bug report. > > > > Here's an update, incorporating the feedback from here and there. > > Fixed a typo in dir-locals and implemented better support for > etags-regen-ignores (though with one omission). > > To me it looks good to check in now. Thanks, I have a few minor comments. > +(defcustom etags-regen-program (executable-find "etags") > + "Name of the etags program. > + > +If you only have `ctags' installed, you can also set this to > +\"ctags -e\". Some features might not be supported this way." > + ;; Always having our 'etags' here would be easier, but we can't > + ;; always rely on it being installed. So it might be ctags's etags. > + :type 'file) Please add :version tags to all the defcustoms you add. > +(defcustom etags-regen-tags-file "TAGS" > + "Name of the tags file to create inside the project. This and the other defcustom's here should say in the first line of the doc string that they are for etags-regen-mode. This will help discoverability and also produce a more helpful display with the various apropos commands. > +This value should either be a simple file name (no directory ^^^^^^^^^^ "The value" or just "Value". > +specified), or a function that accepts a project root directory > +and returns a distinct file name for the tags file for it. That function should also return only a file name without leading directories, right? If so, the text should be more explicit about that. For example: Value should be either a string specifying a file name without leading directories, or or a function that accepts a project's root directory and returns such a file name, to be used as the tags file for that project. > The > +latter option is most useful when you prefer to store the tag ^^^^^^ Using "option" in a doc string of a user option might be ambiguous. I suggest to use "alternative" or "possibility" instead. > +files somewhere outside -- e.g. in `temporary-file-directory'." So the function could return a file name _with_ leading directories? > +;;;###autoload > +(put 'etags-regen-file-extensions 'safe-local-variable > + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) Why not use list-of-strings-p here? > +;;;###autoload > +(put 'etags-regen-ignores 'safe-local-variable > + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) And here. > + (if (> (+ (length added-files) > + (length changed-files) > + (length removed-files)) > + 100) > + (progn > + (message "etags-regen: Too many changes, falling back to full rescan") Should the magic 100 value be a defvar, not a hard-coded constant? > +(defun etags-regen--maybe-generate () > + (let ((proj)) Would (let (proj) do here? IOW, why the extra pair of parens? > + (lambda (f) (or (not (string-match-p match-re f)) > + (string-match-p "/\\.#" f) Is that '/' there to detect regexps for absolute file names? If so, that won't work for Windows. > +(defun etags-regen--ignore-regexp (ignore) > + (require 'dired) > + ;; It's somewhat brittle to rely on Dired. > + (let ((re (dired-glob-regexp ignore))) > + ;; We could implement root anchoring here, but \\= doesn't work in > + ;; string-match :-(. > + (concat (unless (eq ?/ (aref re 3)) "/") > + ;; Cutting off the anchors. > + (substring re 2 (- (length re) 2)) > + (unless (eq ?/ (aref re (- (length re) 3))) > + ;; Either match a full name segment, or eos. > + "\\(?:/\\|\\'\\)")))) Same here: what is the purpose of comparisons with a slash? I think we need some more comments there explaining the logic of the code. > +(defun etags-regen--append-tags (&rest file-names) > + (goto-char (point-max)) > + (let ((options (etags-regen--build-program-options (etags-regen--ctags-p))) > + (inhibit-read-only t)) > + ;; XXX: call-process is significantly faster, though. > + ;; Like 10ms vs 20ms here. > + (shell-command > + (format "%s %s %s -o -" > + etags-regen-program (mapconcat #'identity options " ") > + (mapconcat #'identity file-names " ")) > + t etags-regen--errors-buffer-name)) Should we indeed use call-process? From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 29 17:17:56 2023 Received: (at 67687) by debbugs.gnu.org; 29 Dec 2023 22:17:56 +0000 Received: from localhost ([127.0.0.1]:42423 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJLAy-0001We-Fa for submit@debbugs.gnu.org; Fri, 29 Dec 2023 17:17:56 -0500 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]:53643) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJLAu-0001WN-Fz for 67687@debbugs.gnu.org; Fri, 29 Dec 2023 17:17:54 -0500 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-5537114380bso5789785a12.3 for <67687@debbugs.gnu.org>; Fri, 29 Dec 2023 14:17:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703888266; x=1704493066; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=1N0NIfCs/4J7ZpLfrJQkgxwqN46OlxEesf9z7KQQOj4=; b=dhjZlmADtjrDf9L96fd/mBzxG80ByKmFoCoeK7bs28Z3MTKEVaOnS9zS+mP9aKYNEM w/fVONV2ubjv0khuDmxAr+Rndp1dDv9PCh1/7w9rX+C2+f/Hx58SAkskOsOQLUyqaSSa lOiruPTOQ7ALJRh3n5xinDmmWi9o7w50Mokh2Vq1QMtlmes4bNKvcIit0NHQpP3abJ9z AUD7x1acQzu7Tj4yzcd6CLft+hVCZmOSOCjsHM1GIZjEqOmq+Rb9Rw0iO90uBPvAsK7q 1ZQ+UIIKMQn2qPJtD2Lf+9pNkccGzNzuxvrlsijBIoF2aq2FpYPsRo2zwNosrRCPQX/Q M9CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703888266; x=1704493066; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1N0NIfCs/4J7ZpLfrJQkgxwqN46OlxEesf9z7KQQOj4=; b=QsrZAyaB/UpFJK3zyMGP5Bvvo3K4Ppl1bjciDAa+28xgarPBl7dpCWnyl5OL3+a02o W3QdB5lLwI61jFDJBvPEzskeabzO/8dAoi5OIIPDpAcDT6IxoYqyVrt4RvmN7we2xfXL NfO6DpkdtFJyLt54nA2DI/jOnrbXpZrbHWlpSPNMkfsDBZSTQA/xdZ3/+MvY4jRAsGkO CjRsxCOq2ElwR7SkvMGPNUZHAKxHcLJe6JF1Oe/Nub2vjjaNgv8r2/uV0Up+b9+1cedt 1q0krW/pQ3lD8D1+KfR1P+spLbLOsGhyT6WPvFYQXP5vGNDDBEYEI5e8r4CRB1e2alBc 5JlA== X-Gm-Message-State: AOJu0Yxu1WU4hac8dr0ywLwqI1Mj9Hf4GOgiDNSiGEjwqLd8yRrtKK+7 FM9Q3p1bcmlf1s+SrDI6Wi8oC1hWyRqiXbMHvVc= X-Google-Smtp-Source: AGHT+IE552z/IK2J/OBPRQ0ywEU6MwxvpUAAC4dmaSAdxdpVOiWR+stNtFQwglkrUEh69xpZIMMqs0dJDLhgmmog3MA= X-Received: by 2002:a50:a454:0:b0:552:8151:c192 with SMTP id v20-20020a50a454000000b005528151c192mr7791845edb.6.1703888266268; Fri, 29 Dec 2023 14:17:46 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 29 Dec 2023 14:17:45 -0800 From: Stefan Kangas In-Reply-To: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> MIME-Version: 1.0 Date: Fri, 29 Dec 2023 14:17:45 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: >> . there are no updates for NEWS and the Emacs manual > > I'll certainly add something to NEWS. Not sure where and what should be > in the manual. How about a new node describing this feature under `(emacs) Tags Tables`? > Which brings a problem: the mode is now likely unusable over Tramp in > any project of significant size. Something to improve later. Should this be documented somewhere? From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 29 17:29:52 2023 Received: (at 67687) by debbugs.gnu.org; 29 Dec 2023 22:29:52 +0000 Received: from localhost ([127.0.0.1]:42450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJLMV-0001oZ-Oe for submit@debbugs.gnu.org; Fri, 29 Dec 2023 17:29:52 -0500 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]:42051) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJLMT-0001oM-Ha for 67687@debbugs.gnu.org; Fri, 29 Dec 2023 17:29:50 -0500 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-5534dcfdd61so12474492a12.0 for <67687@debbugs.gnu.org>; Fri, 29 Dec 2023 14:29:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703888983; x=1704493783; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=IBBhrDAGrJOcbiUcaIpV+3UIHLQwkk03bFJobOiUgOo=; b=Z3sEzCJ+gO1y/n3mWDhIkM5XOm0XyKpgIsp1NgGU0+PPfIQfTFdDZV7WL1mLVv9fG7 IEjyQOlMODucH4szbTQ0T8V/7BLOO/H90FkQYlMvPMWSZTudNpu3rghac2ZEGAhXuHUO 2qjmPFzdbJCrqf0eQdypUHU8RMaeBQ3jx0LcaO60ob2/96y4T1P+KxBwdCy4dGUnBtwc q2B8txwjn67ncouELwOiQGpcWyZGqyHTJa8Cnc9wN2e1SFBp41TXFXLkYVHyVrpRf2lf vqqHdlrLSD3/wBXlp41sxOMebFPYilX5ulDdoTGVrtheqLM24vERy5JdSdYJhbjg5+0p qWkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703888983; x=1704493783; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IBBhrDAGrJOcbiUcaIpV+3UIHLQwkk03bFJobOiUgOo=; b=voqi0AzsMexZSktRhzhzMVXTVGH2cqgo1WfJc7zZ2OIa6Uzq5JDepFIkVX9dfQiY+t Y+CLLS/vbf6eGyby/CZIJzw0E9e+i9HtnnszGoj8GB/w3rH+Wq5w75Z9wi5fX7r8QZhV 0Rd6mpMUGjkvH1HIULvHuAHXhucohMm5qMNwTmExtr/bojo1Pq7tvJsqviG0j5t142Cy ZXcefH4hpiW8IgeKqgtttd3QNbduT4+svZ2F+/lvc8ugogUh/XjtikrUNtHIT+iTtt9K C8JSN6Uu3+PRfu925JmXen+R1d7bzd6M2bdgYRLX9Bx8yrUnAut35f9ZdvWSK4/VRdMC AoEg== X-Gm-Message-State: AOJu0YwWJzAlEbl2mL3Yw8fnkpRDBmgnMENMApMch1/2edaRxHrwZwaU n87bGCT2lroPCWWl1NtH1QSWEsCRg95YLJfYdwGfZOeIddY= X-Google-Smtp-Source: AGHT+IE2uwQjJZb6MfeyU9mGUidB0W9qZiWl/dzHMQwb/+a5bj2Jxjh9EjvSRlwZZFRA3nuSn3U5IwY2DCYtLZSXuoU= X-Received: by 2002:a05:6402:13d2:b0:554:fefd:bcbd with SMTP id a18-20020a05640213d200b00554fefdbcbdmr7382288edx.10.1703888983525; Fri, 29 Dec 2023 14:29:43 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 29 Dec 2023 14:29:43 -0800 From: Stefan Kangas In-Reply-To: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> MIME-Version: 1.0 Date: Fri, 29 Dec 2023 14:29:43 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: > Fixed a typo in dir-locals and implemented better support for > etags-regen-ignores (though with one omission). > > To me it looks good to check in now. Thanks for working on this long overdue feature. Do we really need a minor mode for this, or should it just be a defcustom in etags? We have tons of minor modes for this or that various minor feature, and the list in e.g. `C-h m' is really starting to look really long, at least in my use. I wonder whether that is really justified. > diff --git a/.dir-locals.el b/.dir-locals.el > index e087aa89cd1..ce7febca851 100644 > --- a/.dir-locals.el > +++ b/.dir-locals.el > @@ -8,6 +8,12 @@ > (vc-git-annotate-switches . "-w") > (bug-reference-url-format . "https://debbugs.gnu.org/%s") > (diff-add-log-use-relative-names . t) > + (etags-regen-regexp-alist > + . > + ((("c" "objc") . > + ("/[ \t]*DEFVAR_[A-Z_ \t(]+\"\\([^\"]+\\)\"/\\1/" > + "/[ \t]*DEFVAR_[A-Z_ \t(]+\"[^\"]+\",[ \t]\\([A-Za-z0-9_]+\\)/\\1/")))) > + (etags-regen-ignores . ("test/manual/etags/")) I'm not terribly familiar with how etags is implemented, so please forgive me if some of these questions are naive. Is there any way around having to do so much manual setup to get this to work? The above regexp is rather complex. And is the idea that users will customize this by themselves? Is it feasible to shift most of that work to major mode authors [perhaps only partially]? > diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.el > new file mode 100644 > index 00000000000..88b730195c3 > --- /dev/null > +++ b/lisp/progmodes/etags-regen.el > @@ -0,0 +1,411 @@ > +;;; etags-regen.el --- Auto-(re)regenerating tags -*- lexical-binding: t -*- > + > +;; Copyright (C) 2021, 2023 Free Software Foundation, Inc. Using just 2021-2023 here is fine. > +;;; Commentary: > + > +;; Simple automatic tags generation with updates on save. > +;; > +;; The goal of this mode is to provide a feature that should be > +;; familiar to the users of certain lightweight programmer's editors, > +;; such as Sublime Text. Which is "go to definition" with automatic > +;; indexing, added in ST3 (released in 2017). This makes it sound like we're just copying others, when we could be more confident. Emacs has had the described feature since before 2017. I propose dropping all references to Sublime Text and reducing the above to simply saying: This library provides automatic indexing for Emacs "go to definition" feature, the `xref-go-forward' command (bound to `M-.' by default). > +;; At the moment reindexing works off before/after-save-hook, but to > +;; handle more complex changes (e.g. the user switching to another (We usually prefer "for example" to "e.g.".) From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 29 20:31:21 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 01:31:22 +0000 Received: from localhost ([127.0.0.1]:42631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJOC9-0006Lj-D9 for submit@debbugs.gnu.org; Fri, 29 Dec 2023 20:31:21 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:54129) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJOC8-0006Fh-13 for 67687@debbugs.gnu.org; Fri, 29 Dec 2023 20:31:20 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 60ABD5C00E2; Fri, 29 Dec 2023 20:31:14 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Fri, 29 Dec 2023 20:31:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1703899874; x=1703986274; bh=IPYnNfjNVxYjef+oomTBiCsJQOqIQitC+/DkXOgxjJU=; b= grPYLlD9hfrq+w8k8X2EtG65Tqm/FSBWgfMo+7DX/v/QXH481AMzm/Ij2yA8dhgU FzNeFfvSoqLyC91eAoah1L21TPscyaiCGqkXYIyPZaYEw27slDhaS2ipNCyxhZFc iEoLVWe+b89YC6P25kWwY8X4hk72PV5FQtAugx8iS8pl08VjGlWHpyixhhcXPyIb hRs7BCZgvPk832SVEt4TlLjjAsX6AGubvd7yO1djFvVaIKv2mEdavYpLiD9s+7tl XrDD8OX8Aw2JJg6HqAZwK+aPgVbLi2jvwtdfzw5LoLLRLNfilPd+K9arvlgJARwu RhavayFlFf7K/sPNFYvH2g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703899874; x= 1703986274; bh=IPYnNfjNVxYjef+oomTBiCsJQOqIQitC+/DkXOgxjJU=; b=G uzug61SxrIUTEF7e4qSVha0JqnixlMT2zCigKwTUbNPoVCWTZzkmeUvsCvYcooJs 8MnUAdfJQXtRf7i6NsRyx2sq5BPL7qVNw7VJ2MI6prjdTwNtz8aZ+1QwwgOYcTXt egzEKXbfk0siV5sRHoFL2DgUKQC2aaXf/Jk4/IWSuXC6sk3laKW8qvtLjdUwae0N e/pabXFw1H+SZm+jq9RO4DXE/J3FQEYFfMAJTGSbcS6Pd45KtU3adLZj2fNkW+kx i/NvJtvqNAv1iNcgOCw248nLpI9qCBGJaQM95YF8r21t2dYDq+vCVpoDH4pXzSR2 oxH9Knl+EWl/2ZrMzHpuA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefgedgfeejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 29 Dec 2023 20:31:12 -0500 (EST) Message-ID: <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> Date: Sat, 30 Dec 2023 03:31:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 30/12/2023 00:17, Stefan Kangas wrote: > Dmitry Gutov writes: > >>> . there are no updates for NEWS and the Emacs manual >> >> I'll certainly add something to NEWS. Not sure where and what should be >> in the manual. > > How about a new node describing this feature under `(emacs) Tags > Tables`? Good suggestion, but that still leaves the problem of organizing the text. Do you want, perchance, to give it a try yourself? Optimally, it might need a significant rewrite: we wouldn't point the user to 'etags' right away, or the "Create Tags Table" section. The average user taking advantage of etags-regen-mode might not even need to know what a "tags table" is (or only know that in very broad strokes), so depending on our eventual approach we might drop that node, or rearrange the nodes in a particular order, prefacing that one ("Create Tags Table") as the approach for advanced users. >> Which brings a problem: the mode is now likely unusable over Tramp in >> any project of significant size. Something to improve later. > > Should this be documented somewhere? Maybe, maybe not. The previous solution using xargs and stat (as still implemented on the branch -- now outdated) should work for most remote hosts (unixy ones). So it's likely a matter of having a user interested in this and giving them a short enough patch to try. From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 29 20:50:16 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 01:50:16 +0000 Received: from localhost ([127.0.0.1]:42647 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJOUR-0001FB-Dt for submit@debbugs.gnu.org; Fri, 29 Dec 2023 20:50:15 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:52673) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJOUP-0001Eu-2Q for 67687@debbugs.gnu.org; Fri, 29 Dec 2023 20:50:13 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 91BBA5C0217; Fri, 29 Dec 2023 20:50:06 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 29 Dec 2023 20:50:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1703901006; x=1703987406; bh=KuAD1Oqw/YK3hZhCQtcX61pMONb1i41G9952kXfPiqE=; b= J/WR8EkA9meikkMSVw5BIg8TrPHqlzbX26OkIb3F6/+Us9Nk2eiq3g7rYadVVA8Y MBCT/pAVBcjugwE5m27mPM9ADqtTf06ljtfX3RceTKyZ8eNRHq8Ap0GcbJiY1uU4 btjyVx6oFyxCsVjAaZaoSD6gzdM8kh8tGjV1YLMismgOpsWSsH+GcAyHgeO5kXvl iBV0eHjLOf56qVCKHpJpyNAbOJmyXuwrBQNFlUJMcc7EJrg2GjQF5Og28TLwvLU+ nkk9iRJOGaG1loh8TgPAoP6/tPPlekYN2nQDmmSUn1+cvgVBWj2Q6pzVaC90/2XN yB5AcTl//03PErnhkUD8/w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703901006; x= 1703987406; bh=KuAD1Oqw/YK3hZhCQtcX61pMONb1i41G9952kXfPiqE=; b=w TT8yYJNdUV6odXjfY9qm5X3rqRAEeC+7tiwpDJEfY3S8MOjQcEpw+dzcpGGhH8He IFs6NA6MR1VLRkWdLkePd6sxBeIdFxlmxw0tkrTt+QV00lc43r6nDoMwkVCKTz3i uu7erIK4za7lrFxzxM7N5t7Jd5bJ8ww2NEGczGqo8Klfzu5PKZINEBLpiU2lzKyZ qQ9cgRC8Qx12eC7Gz1v44C7rwj+VxrcrDDh3yj27aGogD2JEHLL+4YJpAWd1PDzz wFtDcRW1YYVWeKjKBTyIUfjvA8mLXazyArz2IB3YDVDmPoF0aEQUQUXrm2H+HK8H HydTIYPI/CEaJQVcojmCQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefgedggeduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepffeifedvleeukedtgfelieegudfgveekfeejveejffetffeuueeugefhveei uddvnecuffhomhgrihhnpehgnhhurdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 29 Dec 2023 20:50:04 -0500 (EST) Message-ID: Date: Sat, 30 Dec 2023 03:50:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 30/12/2023 00:29, Stefan Kangas wrote: > Dmitry Gutov writes: > >> Fixed a typo in dir-locals and implemented better support for >> etags-regen-ignores (though with one omission). >> >> To me it looks good to check in now. > > Thanks for working on this long overdue feature. > > Do we really need a minor mode for this, or should it just be a > defcustom in etags? We have tons of minor modes for this or that > various minor feature, and the list in e.g. `C-h m' is really starting > to look really long, at least in my use. I wonder whether that is > really justified. As long as it's in a separate file, it should be easy to publish it to ELPA (as "core" package). Which is an option that's nice to have, even if not essential. Sometime later, when the features and implementation stabilize, we could merge the files, leaving the code in ELPA for older emacsen. Or something like that. >> diff --git a/.dir-locals.el b/.dir-locals.el >> index e087aa89cd1..ce7febca851 100644 >> --- a/.dir-locals.el >> +++ b/.dir-locals.el >> @@ -8,6 +8,12 @@ >> (vc-git-annotate-switches . "-w") >> (bug-reference-url-format . "https://debbugs.gnu.org/%s") >> (diff-add-log-use-relative-names . t) >> + (etags-regen-regexp-alist >> + . >> + ((("c" "objc") . >> + ("/[ \t]*DEFVAR_[A-Z_ \t(]+\"\\([^\"]+\\)\"/\\1/" >> + "/[ \t]*DEFVAR_[A-Z_ \t(]+\"[^\"]+\",[ \t]\\([A-Za-z0-9_]+\\)/\\1/")))) >> + (etags-regen-ignores . ("test/manual/etags/")) > > I'm not terribly familiar with how etags is implemented, so please > forgive me if some of these questions are naive. > > Is there any way around having to do so much manual setup to get this to > work? The above regexp is rather complex. > > And is the idea that users will customize this by themselves? Is it > feasible to shift most of that work to major mode authors [perhaps only > partially]? This is only necessary for language constructs not supported by etags OOtB. Such as our C macros which define Elisp functions and variables. These are the same regexps that we have in our Makefile. So this is a per-project thing, rather than per-language. Most users and projects shouldn't need it, or wouldn't need it right away. >> diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.el >> new file mode 100644 >> index 00000000000..88b730195c3 >> --- /dev/null >> +++ b/lisp/progmodes/etags-regen.el >> @@ -0,0 +1,411 @@ >> +;;; etags-regen.el --- Auto-(re)regenerating tags -*- lexical-binding: t -*- >> + >> +;; Copyright (C) 2021, 2023 Free Software Foundation, Inc. > > Using just 2021-2023 here is fine. Ok. >> +;;; Commentary: >> + >> +;; Simple automatic tags generation with updates on save. >> +;; >> +;; The goal of this mode is to provide a feature that should be >> +;; familiar to the users of certain lightweight programmer's editors, >> +;; such as Sublime Text. Which is "go to definition" with automatic >> +;; indexing, added in ST3 (released in 2017). > > This makes it sound like we're just copying others, when we could be > more confident. Emacs has had the described feature since before 2017. > I propose dropping all references to Sublime Text and reducing the above > to simply saying: But... it didn't? Otherwise you wouldn't have called it "long overdue", right? Anyway, I'm not married to the above text, it's just a description of how I'm thinking about the problem. But I would invite you and other to consider how the ST users take advantage of automatic indexing without having to be aware of how information is stored behind the scenes (tag files or not), when considering the sections of the manual touching on etags-regen-mode. > This library provides automatic indexing for Emacs "go to > definition" feature, the `xref-go-forward' command (bound to `M-.' > by default). Sure. We could also add some text that would distinguish it from the general notion of "automatic indexing", so that the users of Eglot, for example, don't consider it necessary to enable this mode. Even though they would also want indexing to remain automatic. >> +;; At the moment reindexing works off before/after-save-hook, but to >> +;; handle more complex changes (e.g. the user switching to another > > (We usually prefer "for example" to "e.g.".) No problem. Though searching across the codebase, the number of hits for these two options seems to be about the same (5K vs 4K). From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 29 22:05:14 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 03:05:15 +0000 Received: from localhost ([127.0.0.1]:42761 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJPez-0007vR-G9 for submit@debbugs.gnu.org; Fri, 29 Dec 2023 22:05:14 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:60085) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJPew-0007v9-BO for 67687@debbugs.gnu.org; Fri, 29 Dec 2023 22:05:11 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 1D7B65C01CC; Fri, 29 Dec 2023 22:05:04 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 29 Dec 2023 22:05:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1703905504; x=1703991904; bh=IIzqWrY6TX akqFAv6NnGBWKyEOYC1SJvxcfUeKxsfF4=; b=SoOJQ+JXqEiA2jPMokAFTo3WV7 83CKqgGkV2dKcN+vGNcU+RQB/ZKo7owPmFrWwwZFmJzzdxrZpoKvN/piNS2Stcd8 3tbEfPXVAyaCWyHwVV4THjZ4Wa414Ljm59QJRZSGXKt9wM+l3ai5bhO+m0yOCeGg CbcSmP/8xszYBCbXgbp0W6mZj/eoXWckU+CwAYfxCr9o8M9cj1lswx9VULrq6JfH piRjSJKb20m7/n6b/HrjN6Eob1S3G//O72TbIGUOJzg0bZz0mg9egAaLZ+cXpOLR FzkZfHkOrw9uRsjiXOo5ysGME2DD1Sma6QKcaBd+YRcAneYIGMBH72YCUmnQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1703905504; x=1703991904; bh=IIzqWrY6TXakqFAv6NnGBWKyEOYC 1SJvxcfUeKxsfF4=; b=P3xRImoQXPurnkumVhVKVnXIAciKbkvYT9b8nhHexRp6 QuTKzd7KtNbn0o2IM30ptNbK9xHdSymBSTbvFJgjy1IvI0/qxCTipyTZiJHADXOI XLHkoWaC2knJYIbH2Zdet+Aar8gkqnNIQe+VqKQ9FPUm4y9m3wlEk5sZ/2OxKFf9 03P1EOOxtpWhbGmNV2o0VwBVa5hmrohmKNEX6af0Ujtanj8BihQGwdK8WlSoV6B3 USTc2hug3r6Fxly+Z7QD9VWiJ1Y6rebwOtjQQq+nK3BUZ76w79adanpsAv5RAhlF FDp/+tpv0NxvpAhyBnzZXPSeLgFIypkiaLhLEJ2rKg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefgedgheeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehleefudekudduveekieelgfeiffdvkefhkeeljeeujeegueekveffkeejjeev heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 29 Dec 2023 22:05:02 -0500 (EST) Content-Type: multipart/mixed; boundary="------------cn8oUXtey9HuQ1BhDNWNPXYu" Message-ID: <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> Date: Sat, 30 Dec 2023 05:05:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83y1de7jyr.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------cn8oUXtey9HuQ1BhDNWNPXYu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 28/12/2023 11:30, Eli Zaretskii wrote: >> Date: Sun, 24 Dec 2023 03:43:25 +0200 >> From: Dmitry Gutov >> Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com >> >> On 22/12/2023 01:37, Dmitry Gutov wrote: >>> On 21/12/2023 18:46, Dmitry Gutov wrote: >>>> See instead the patch attached to this bug report. >>> >>> Here's an update, incorporating the feedback from here and there. >> >> Fixed a typo in dir-locals and implemented better support for >> etags-regen-ignores (though with one omission). >> >> To me it looks good to check in now. > > Thanks, I have a few minor comments. Attaching the next version, which addresses most but not all comments of yours and Stefan's. >> +(defcustom etags-regen-program (executable-find "etags") >> + "Name of the etags program. >> + >> +If you only have `ctags' installed, you can also set this to >> +\"ctags -e\". Some features might not be supported this way." >> + ;; Always having our 'etags' here would be easier, but we can't >> + ;; always rely on it being installed. So it might be ctags's etags. >> + :type 'file) > > Please add :version tags to all the defcustoms you add. Done. >> +(defcustom etags-regen-tags-file "TAGS" >> + "Name of the tags file to create inside the project. > > This and the other defcustom's here should say in the first line of > the doc string that they are for etags-regen-mode. This will help > discoverability and also produce a more helpful display with the > various apropos commands. I've tried, but it seems hard to fit into most of them while keeping to the requisite max number of columns. Only managed to fit that into etags-regen-program and etags-regen-file-extensions. TBH, most of the time it would seem superfluous, given the namespaced names. But it's probably good to mention in 'etags-regen-program', on balance. >> +This value should either be a simple file name (no directory > ^^^^^^^^^^ > "The value" or just "Value". Ok. >> +specified), or a function that accepts a project root directory >> +and returns a distinct file name for the tags file for it. > > That function should also return only a file name without leading > directories, right? If so, the text should be more explicit about > that. For example: > > Value should be either a string specifying a file name without > leading directories, or or a function that accepts a project's root > directory and returns such a file name, to be used as the tags file > for that project. > >> The >> +latter option is most useful when you prefer to store the tag > ^^^^^^ > Using "option" in a doc string of a user option might be ambiguous. I > suggest to use "alternative" or "possibility" instead. Done. >> +files somewhere outside -- e.g. in `temporary-file-directory'." > > So the function could return a file name _with_ leading directories? Indeed. So I added "absolute" to the docstring. We could allow it to return a nondirectory name too, if somebody finds a use case. >> +;;;###autoload >> +(put 'etags-regen-file-extensions 'safe-local-variable >> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > > Why not use list-of-strings-p here? Again, that "core ELPA" consideration. We could deploy this feature to a number of released Emacs versions, if we don't introduce such dependencies. >> +;;;###autoload >> +(put 'etags-regen-ignores 'safe-local-variable >> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > > And here. > >> + (if (> (+ (length added-files) >> + (length changed-files) >> + (length removed-files)) >> + 100) >> + (progn >> + (message "etags-regen: Too many changes, falling back to full rescan") > > Should the magic 100 value be a defvar, not a hard-coded constant? Moved it to a defvar. >> +(defun etags-regen--maybe-generate () >> + (let ((proj)) > > Would > > (let (proj) > > do here? IOW, why the extra pair of parens? Altered. >> + (lambda (f) (or (not (string-match-p match-re f)) >> + (string-match-p "/\\.#" f) > > Is that '/' there to detect regexps for absolute file names? If so, > that won't work for Windows. It's to detect backup files. >> +(defun etags-regen--ignore-regexp (ignore) >> + (require 'dired) >> + ;; It's somewhat brittle to rely on Dired. >> + (let ((re (dired-glob-regexp ignore))) >> + ;; We could implement root anchoring here, but \\= doesn't work in >> + ;; string-match :-(. >> + (concat (unless (eq ?/ (aref re 3)) "/") >> + ;; Cutting off the anchors. >> + (substring re 2 (- (length re) 2)) >> + (unless (eq ?/ (aref re (- (length re) 3))) >> + ;; Either match a full name segment, or eos. >> + "\\(?:/\\|\\'\\)")))) > > Same here: what is the purpose of comparisons with a slash? I think > we need some more comments there explaining the logic of the code. We compare with a slash to see whether the glob was matching against a directory (in which case it's already anchored to the name of a file name segment), otherwise we add such anchoring to either the end of a file name segment or eos (thus allowing a glob match both directory names and file names). Added a shorter comment saying the same. >> +(defun etags-regen--append-tags (&rest file-names) >> + (goto-char (point-max)) >> + (let ((options (etags-regen--build-program-options (etags-regen--ctags-p))) >> + (inhibit-read-only t)) >> + ;; XXX: call-process is significantly faster, though. >> + ;; Like 10ms vs 20ms here. >> + (shell-command >> + (format "%s %s %s -o -" >> + etags-regen-program (mapconcat #'identity options " ") >> + (mapconcat #'identity file-names " ")) >> + t etags-regen--errors-buffer-name)) > > Should we indeed use call-process? Something for later improvement. Looking at the code, I believe I decided to use 'shell-command' for the first version because of how easy it makes to output stderr to a separate buffer. call-process only offers writing them to a file. --------------cn8oUXtey9HuQ1BhDNWNPXYu Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v4.diff" Content-Disposition: attachment; filename="etags-regen-v4.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZjgyNTY0OTQ2YjcuLjZk NmJjYTE4N2RlIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTI0 Myw2ICsxMjQzLDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyYWU5Y2U0ZjBhCi0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MjAg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMS0y MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRy eSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMgb24gc2F2 ZS4KKzs7Cis7OyBUaGlzIG1vZGUgcHJvdmlkZXMgYXV0b21hdGljIGluZGV4aW5nIGZvciBF bWFjcyAiZ28gdG8gZGVmaW5pdGlvbiIKKzs7IGZlYXR1cmUsIHRoZSBgeHJlZi1nby1mb3J3 YXJkJyBjb21tYW5kIChib3VuZCB0byBgTS0uJyBieSBkZWZhdWx0KS4KKzs7Cis7OyBBdCB0 aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhvb2ss IGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChlLmcuIHRoZSB1c2Vy IHN3aXRjaGluZyB0byBhbm90aGVyCis7OyBicmFuY2ggZnJvbSB0aGUgdGVybWluYWwpIHdl IGNhbiBsb29rIGludG8gcGx1Z2dpbmcgaW50byBzb21ldGhpbmcKKzs7IGxpa2UgYGZpbGVu b3RpZnknLgorOzsKKzs7IE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgZGlzYWJsZXMgaXRzZWxm IGlmIHRoZSB1c2VyIGhhcyBzb21lIHRhZ3MKKzs7IHRhYmxlIGFscmVhZHkgdmlzaXRlZCAo d2l0aCBgTS14IHZpc2l0LXRhZ3MtdGFibGUnLCBvciB0aHJvdWdoIGFuCis7OyBleHBsaWNp dCBwcm9tcHQgdHJpZ2dlcmVkIGJ5IHNvbWUgZmVhdHVyZSB0aGF0IHJlcXVpcmVzIHRhZ3Mp LgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2NsLWxpYikKKworKGRlZmdyb3VwIGV0YWdz LXJlZ2VuIG5pbAorICAiQXV0by0ocmUpZ2VuZXJhdGluZyB0YWdzLiIKKyAgOmdyb3VwICd0 b29scykKKworKGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1maWxlIG5pbCkKKyhkZWZ2YXIg ZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS1uZXct ZmlsZSBuaWwpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3Qtcm9vdCAicHJvamVjdCIp CisoZGVjbGFyZS1mdW5jdGlvbiBwcm9qZWN0LWZpbGVzICJwcm9qZWN0IikKKyhkZWNsYXJl LWZ1bmN0aW9uIGRpcmVkLWdsb2ItcmVnZXhwICJkaXJlZCIpCisKKyhkZWZjdXN0b20gZXRh Z3MtcmVnZW4tcHJvZ3JhbSAoZXhlY3V0YWJsZS1maW5kICJldGFncyIpCisgICJOYW1lIG9m IHRoZSBldGFncyBwcm9ncmFtIHVzZWQgYnkgYGV0YWdzLXJlZ2VuLW1vZGUnLgorCitJZiB5 b3Ugb25seSBoYXZlIGBjdGFncycgaW5zdGFsbGVkLCB5b3UgY2FuIGFsc28gc2V0IHRoaXMg dG8KK1wiY3RhZ3MgLWVcIi4gIFNvbWUgZmVhdHVyZXMgbWlnaHQgbm90IGJlIHN1cHBvcnRl ZCB0aGlzIHdheS4iCisgIDs7IEFsd2F5cyBoYXZpbmcgb3VyICdldGFncycgaGVyZSB3b3Vs ZCBiZSBlYXNpZXIsIGJ1dCB3ZSBjYW4ndAorICA7OyBhbHdheXMgcmVseSBvbiBpdCBiZWlu ZyBpbnN0YWxsZWQuICBTbyBpdCBtaWdodCBiZSBjdGFncydzIGV0YWdzLgorICA6dHlwZSAn ZmlsZQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4tdGFn cy1maWxlICJUQUdTIgorICAiTmFtZSBvZiB0aGUgdGFncyBmaWxlIHRvIGNyZWF0ZSBpbnNp ZGUgdGhlIHByb2plY3QuCisKK1RoZSB2YWx1ZSBzaG91bGQgZWl0aGVyIGJlIGEgc2ltcGxl IGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5CitzcGVjaWZpZWQpLCBvciBhIGZ1bmN0aW9uIHRo YXQgYWNjZXB0cyBhIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkKK2FuZCByZXR1cm5zIGEgZGlz dGluY3QgYWJzb2x1dGUgZmlsZSBuYW1lIGZvciBpdHMgdGFncyBmaWxlLiAgVGhlCitsYXR0 ZXIgcG9zc2liaWxpdHkgaXMgdXNlZnVsIHdoZW4geW91IHByZWZlciB0byBzdG9yZSB0aGUg dGFnCitmaWxlcyBzb21ld2hlcmUgb3V0c2lkZSAtLSBlLmcuIGluIGB0ZW1wb3JhcnktZmls ZS1kaXJlY3RvcnknLiIKKyAgOnR5cGUgJyhjaG9pY2UgKHN0cmluZyA6dGFnICJGaWxlIG5h bWUiKQorICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiRnVuY3Rpb24gdGhhdCBy ZXR1cm5zIGZpbGUgbmFtZSIpKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20g ZXRhZ3MtcmVnZW4tcHJvZ3JhbS1vcHRpb25zIG5pbAorICAiTGlzdCBvZiBhZGRpdGlvbmFs IG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZXRhZ3MgcHJvZ3JhbS4iCisgIDp0eXBlICcocmVw ZWF0IHN0cmluZykKKyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIGV0YWdzLXJl Z2VuLXJlZ2V4cC1hbGlzdCBuaWwKKyAgIk1hcHBpbmcgb2YgbGFuZ3VhZ2VzIHRvIGFkZGl0 aW9uYWwgcmVnZXhwcyBmb3IgdGFncy4KKworVGhlIHZhbHVlIG11c3QgYmUgYSBsaXN0IG9m IGNvbnNlcyAoTEFOR1VBR0VTIC4gVEFHLVJFR0VYUFMpCit3aGVyZSBib3RoIGNhciBhbmQg Y2RyIGFyZSBsaXN0cyBvZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBv bmUgb2YgdGhlIHJlY29nbml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBF YWNoIHRhZyByZWdleHAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2FzIGRv Y3VtZW50ZWQgZm9yIHRoZSBgLS1yZWdleCcgYXJndW1lbnRzLgorCitXZSBjdXJyZW50bHkg c3VwcG9ydCBvbmx5IEVtYWNzJ3MgZXRhZ3MgcHJvZ3JhbSB3aXRoIHRoaXMgb3B0aW9uLiIK KyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoY29ucworICAgICAgICAgICA6dGFnICJM YW5ndWFnZXMgZ3JvdXAiCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJMYW5n dWFnZSBuYW1lIikpCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJUYWcgUmVn ZXhwIikpKSkKKyAgOnZlcnNpb24gIjMwLjEiKQorCis7OzsjIyNhdXRvbG9hZAorKHB1dCAn ZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0ICdzYWZlLWxvY2FsLXZhcmlhYmxlCisgICAgIChs YW1iZGEgKHZhbHVlKQorICAgICAgIChhbmQgKGxpc3RwIHZhbHVlKQorICAgICAgICAgICAg KHNlcS1ldmVyeS1wCisgICAgICAgICAgICAgKGxhbWJkYSAoZ3JvdXApCisgICAgICAgICAg ICAgICAoYW5kIChjb25zcCBncm91cCkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3RwIChj YXIgZ3JvdXApKQorICAgICAgICAgICAgICAgICAgICAobGlzdHAgKGNkciBncm91cCkpCisg ICAgICAgICAgICAgICAgICAgIChzZXEtZXZlcnktcCAjJ3N0cmluZ3AgKGNhciBncm91cCkp CisgICAgICAgICAgICAgICAgICAgIChzZXEtZXZlcnktcCAjJ3N0cmluZ3AgKGNkciBncm91 cCkpKSkKKyAgICAgICAgICAgICB2YWx1ZSkpKSkKKworOzsgV2UgaGF2ZSB0byBsaXN0IGFs bCBleHRlbnNpb25zOiBldGFncyBmYWxscyBiYWNrIHRvIEZvcnRyYW4KKzs7IHdoZW4gaXQg Y2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgZmlsZS4KKzs7IGh0dHA6Ly9saXN0 cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9lbWFjcy1kZXZlbC8yMDE4LTAxL21zZzAwMzIzLmh0 bWwKKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zCisgICcoInJiIiAi anMiICJweSIgInBsIiAiZWwiICJjIiAiY3BwIiAiY2MiICJoIiAiaGgiICJocHAiCisgICAg ImphdmEiICJnbyIgImNsIiAibGlzcCIgInByb2xvZyIgInBocCIgImVybCIgImhybCIKKyAg ICAiRiIgImYiICJmOTAiICJmb3IiICJjcyIgImEiICJhc20iICJhZHMiICJhZGIiICJhZGEi KQorICAiQ29kZSBmaWxlIGV4dGVuc2lvbnMgZm9yIGBldGFncy1yZWdlbi1tb2RlJy4KKwor RmlsZSBleHRlbnNpb25zIHRvIGdlbmVyYXRlIHRoZSB0YWdzIGZvci4iCisgIDp0eXBlICco cmVwZWF0IChzdHJpbmcgOnRhZyAiRmlsZSBleHRlbnNpb24iKSkKKyAgOnZlcnNpb24gIjMw LjEiKQorCis7OzsjIyNhdXRvbG9hZAorKHB1dCAnZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNp b25zICdzYWZlLWxvY2FsLXZhcmlhYmxlCisgICAgIChsYW1iZGEgKHZhbHVlKSAoYW5kIChs aXN0cCB2YWx1ZSkgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCB2YWx1ZSkpKSkKKworOzsgRklY TUU6IFdlIGRvbid0IHN1cHBvcnQgcm9vdCBhbmNob3JpbmcgeWV0LgorKGRlZmN1c3RvbSBl dGFncy1yZWdlbi1pZ25vcmVzIG5pbAorICAiQWRkaXRpb25hbCBpZ25vcmUgcnVsZXMsIGlu IHRoZSBmb3JtYXQgb2YgYHByb2plY3QtaWdub3JlcycuIgorICA6dHlwZSAnKHJlcGVhdAor ICAgICAgICAgIChzdHJpbmcgOnRhZyAiR2xvYiB0byBpZ25vcmUiKSkKKyAgOnZlcnNpb24g IjMwLjEiKQorCis7OzsjIyNhdXRvbG9hZAorKHB1dCAnZXRhZ3MtcmVnZW4taWdub3JlcyAn c2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFtYmRhICh2YWx1ZSkgKGFuZCAobGlzdHAg dmFsdWUpIChzZXEtZXZlcnktcCAjJ3N0cmluZ3AgdmFsdWUpKSkpCisKKyhkZWZ2YXIgZXRh Z3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSAiKmV0YWdzLXJlZ2VuLXRhZ3MtZXJyb3Jz KiIpCisKKyhkZWZ2YXIgZXRhZ3MtcmVnZW4tLXJlc2Nhbi1maWxlcy1saW1pdCAxMDApCisK KyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLW10aW1lcyAocHJvaikKKyAgKGxldCAoKGZpbGVz IChldGFncy1yZWdlbi0tYWxsLWZpbGVzIHByb2opKQorICAgICAgICAobXRpbWVzIChtYWtl LWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsKSkKKyAgICAgICAgZmlsZS1uYW1lLWhhbmRsZXIt YWxpc3QpCisgICAgKGRvbGlzdCAoZiBmaWxlcykKKyAgICAgIChjb25kaXRpb24tY2FzZSBu aWwKKyAgICAgICAgICAocHV0aGFzaCBmCisgICAgICAgICAgICAgICAgICAgKGZpbGUtYXR0 cmlidXRlLW1vZGlmaWNhdGlvbi10aW1lCisgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0 dHJpYnV0ZXMgZikpCisgICAgICAgICAgICAgICAgICAgbXRpbWVzKQorICAgICAgICAoZmls ZS1taXNzaW5nIG5pbCkpKQorICAgIG10aW1lcykpCisKKyhkZWZ1biBldGFncy1yZWdlbi0t Y2hvb3NlLXRhZ3MtZmlsZSAocHJvaikKKyAgKGlmIChmdW5jdGlvbnAgZXRhZ3MtcmVnZW4t dGFncy1maWxlKQorICAgICAgKGZ1bmNhbGwgZXRhZ3MtcmVnZW4tdGFncy1maWxlIChwcm9q ZWN0LXJvb3QgcHJvaikpCisgICAgKGV4cGFuZC1maWxlLW5hbWUgZXRhZ3MtcmVnZW4tdGFn cy1maWxlIChwcm9qZWN0LXJvb3QgcHJvaikpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1y ZWZyZXNoIChwcm9qKQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAobGV0KiAoKHRhZ3MtZmls ZSAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgcHJvaikpCisgICAgICAgICAgICh0 YWdzLW10aW1lIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZpbGUtYXR0cmlidXRlcyB0YWdzLWZpbGUpKSkKKyAgICAgICAg ICAgKGFsbC1tdGltZXMgKGV0YWdzLXJlZ2VuLS1hbGwtbXRpbWVzIHByb2opKQorICAgICAg ICAgICBhZGRlZC1maWxlcworICAgICAgICAgICBjaGFuZ2VkLWZpbGVzCisgICAgICAgICAg IHJlbW92ZWQtZmlsZXMpCisgICAgICAoZXRhZ3MtcmVnZW4tLXZpc2l0LXRhYmxlIHRhZ3Mt ZmlsZSAocHJvamVjdC1yb290IHByb2opKQorICAgICAgKHNldC1idWZmZXIgKGdldC1maWxl LWJ1ZmZlciB0YWdzLWZpbGUpKQorICAgICAgKGRvbGlzdCAoZmlsZSAodGFncy10YWJsZS1m aWxlcykpCisgICAgICAgIChsZXQgKChtdGltZSAoZ2V0aGFzaCBmaWxlIGFsbC1tdGltZXMp KSkKKyAgICAgICAgICAoY29uZAorICAgICAgICAgICAoKG51bGwgbXRpbWUpCisgICAgICAg ICAgICAocHVzaCBmaWxlIHJlbW92ZWQtZmlsZXMpKQorICAgICAgICAgICAoKHRpbWUtbGVz cy1wIHRhZ3MtbXRpbWUgbXRpbWUpCisgICAgICAgICAgICAocHVzaCBmaWxlIGNoYW5nZWQt ZmlsZXMpCisgICAgICAgICAgICAocmVtaGFzaCBmaWxlIGFsbC1tdGltZXMpKQorICAgICAg ICAgICAodAorICAgICAgICAgICAgKHJlbWhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpKSkKKyAg ICAgIChtYXBoYXNoCisgICAgICAgKGxhbWJkYSAoa2V5IF92YWx1ZSkKKyAgICAgICAgIChw dXNoIGtleSBhZGRlZC1maWxlcykpCisgICAgICAgYWxsLW10aW1lcykKKyAgICAgIChpZiAo PiAoKyAobGVuZ3RoIGFkZGVkLWZpbGVzKQorICAgICAgICAgICAgICAgIChsZW5ndGggY2hh bmdlZC1maWxlcykKKyAgICAgICAgICAgICAgICAobGVuZ3RoIHJlbW92ZWQtZmlsZXMpKQor ICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLS1yZXNjYW4tZmlsZXMtbGltaXQpCisgICAgICAg ICAgKHByb2duCisgICAgICAgICAgICAobWVzc2FnZSAiZXRhZ3MtcmVnZW46IFRvbyBtYW55 IGNoYW5nZXMsIGZhbGxpbmcgYmFjayB0byBmdWxsIHJlc2NhbiIpCisgICAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgICAgIChkb2xpc3QgKGZpbGUgKG5j b25jIHJlbW92ZWQtZmlsZXMgY2hhbmdlZC1maWxlcykpCisgICAgICAgICAgKGV0YWdzLXJl Z2VuLS1yZW1vdmUtdGFnIGZpbGUpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxl cyBhZGRlZC1maWxlcykKKyAgICAgICAgICAoYXBwbHkgIydldGFncy1yZWdlbi0tYXBwZW5k LXRhZ3MKKyAgICAgICAgICAgICAgICAgKG5jb25jIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmls ZXMpKSkKKyAgICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMgcmVt b3ZlZC1maWxlcykKKyAgICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAg ICAgICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAgIChzYXZlLWJ1 ZmZlciAwKSkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlICgp CisgIChsZXQgKHByb2opCisgICAgKHdoZW4gKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290 CisgICAgICAgICAgICAgICAobm90IChmaWxlLWluLWRpcmVjdG9yeS1wIGRlZmF1bHQtZGly ZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0YWdz LXJlZ2VuLS10YWdzLXJvb3QpKSkKKyAgICAgIChldGFncy1yZWdlbi0tdGFncy1jbGVhbnVw KSkKKyAgICAod2hlbiAoYW5kIChub3QgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAgICAg ICAgICAgICAgIDs7IElmIGV4aXN0aW5nIHRhYmxlIGlzIHZpc2l0ZWQgdGhhdCdzIG5vdCBn ZW5lcmF0ZWQgYnkKKyAgICAgICAgICAgICAgIDs7IHRoaXMgbW9kZSwgc2tpcCBhbGwgZnVu Y3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgIChub3QgKG9yIHRhZ3MtZmlsZS1uYW1lCisg ICAgICAgICAgICAgICAgICAgICAgICB0YWdzLXRhYmxlLWxpc3QpKQorICAgICAgICAgICAg ICAgKGZpbGUtZXhpc3RzLXAgKGV0YWdzLXJlZ2VuLS1jaG9vc2UtdGFncy1maWxlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcHJvaiAocHJvamVjdC1jdXJyZW50 KSkpKSkKKyAgICAgIChtZXNzYWdlICJGb3VuZCBleGlzdGluZyB0YWdzIHRhYmxlLCByZWZy ZXNoaW5nLi4uIikKKyAgICAgIChldGFncy1yZWdlbi0tcmVmcmVzaCBwcm9qKSkKKyAgICAo d2hlbiAoYW5kIChub3QgKG9yIHRhZ3MtZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAg ICAgICB0YWdzLXRhYmxlLWxpc3QpKQorICAgICAgICAgICAgICAgKHNldHEgcHJvaiAob3Ig cHJvaiAocHJvamVjdC1jdXJyZW50KSkpKQorICAgICAgKG1lc3NhZ2UgIkdlbmVyYXRpbmcg bmV3IHRhZ3MgdGFibGUuLi4iKQorICAgICAgKGxldCAoKHN0YXJ0ICh0aW1lLXRvLXNlY29u ZHMpKSkKKyAgICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWdlbmVyYXRlIHByb2opCisgICAg ICAgIChtZXNzYWdlICIuLi5kb25lICglLjJmIHMpIiAoLSAodGltZS10by1zZWNvbmRzKSBz dGFydCkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyAocHJvaikKKyAg KGxldCogKChyb290IChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAgICAgICAoZGVmYXVsdC1k aXJlY3Rvcnkgcm9vdCkKKyAgICAgICAgIDs7IFRPRE86IE1ha2UgdGhlIHNjYW5uaW5nIG1v cmUgZWZmaWNpZW50LCBlLmcuIG1vdmUgdGhlCisgICAgICAgICA7OyBmaWx0ZXJpbmcgYnkg Z2xvYiB0byBwcm9qZWN0IChwcm9qZWN0LWZpbGVzLWZpbHRlcmVkLi4uKS4KKyAgICAgICAg IChmaWxlcyAocHJvamVjdC1maWxlcyBwcm9qKSkKKyAgICAgICAgIChtYXRjaC1yZSAoY29u Y2F0CisgICAgICAgICAgICAgICAgICAgICJcXC4iCisgICAgICAgICAgICAgICAgICAgIChy ZWdleHAtb3B0IGV0YWdzLXJlZ2VuLWZpbGUtZXh0ZW5zaW9ucykKKyAgICAgICAgICAgICAg ICAgICAgIlxcJyIpKQorICAgICAgICAgKGlyLXN0YXJ0ICgxLSAobGVuZ3RoIHJvb3QpKSkK KyAgICAgICAgIChpZ25vcmVzLXJlZ2V4cHMKKyAgICAgICAgICAobWFwY2FyICMnZXRhZ3Mt cmVnZW4tLWlnbm9yZS1yZWdleHAKKyAgICAgICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLWln bm9yZXMpKSkKKyAgICAoY2wtZGVsZXRlLWlmCisgICAgIChsYW1iZGEgKGYpIChvciAobm90 IChzdHJpbmctbWF0Y2gtcCBtYXRjaC1yZSBmKSkKKyAgICAgICAgICAgICAgICAoc3RyaW5n LW1hdGNoLXAgIi9cXC4jIiBmKQorICAgICAgICAgICAgICAgIChjbC1zb21lIChsYW1iZGEg KGlnbm9yZSkgKHN0cmluZy1tYXRjaCBpZ25vcmUgZiBpci1zdGFydCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgaWdub3Jlcy1yZWdleHBzKSkpCisgICAgIGZpbGVzKSkpCisKKyhk ZWZ1biBldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cCAoaWdub3JlKQorICAocmVxdWlyZSAn ZGlyZWQpCisgIDs7IEl0J3Mgc29tZXdoYXQgYnJpdHRsZSB0byByZWx5IG9uIERpcmVkLgor ICAobGV0ICgocmUgKGRpcmVkLWdsb2ItcmVnZXhwIGlnbm9yZSkpKQorICAgIDs7IFdlIGNv dWxkIGltcGxlbWVudCByb290IGFuY2hvcmluZyBoZXJlLCBidXQgXFw9IGRvZXNuJ3Qgd29y ayBpbgorICAgIDs7IHN0cmluZy1tYXRjaCA6LSguCisgICAgKGNvbmNhdCAodW5sZXNzIChl cSA/LyAoYXJlZiByZSAzKSkgIi8iKQorICAgICAgICAgICAgOzsgQ3V0dGluZyBvZmYgdGhl IGFuY2hvcnMuCisgICAgICAgICAgICAoc3Vic3RyaW5nIHJlIDIgKC0gKGxlbmd0aCByZSkg MikpCisgICAgICAgICAgICA7OyBUaGlzIHdheSB3ZSBhbGxvdyBhIGdsb2IgdG8gbWF0Y2gg YWdhaW5zdCBhIGRpcmVjdG9yeQorICAgICAgICAgICAgOzsgbmFtZSwgb3IgYSBmaWxlIG5h bWUuICBBbmQgd2hlbiBpdCBlbmRzIHdpdGggLyBhbHJlYWR5LAorICAgICAgICAgICAgOzsg bm8gbmVlZCB0byBhZGQgdGhlIGFuY2hvcmluZy4KKyAgICAgICAgICAgICh1bmxlc3MgKGVx ID8vIChhcmVmIHJlICgtIChsZW5ndGggcmUpIDMpKSkKKyAgICAgICAgICAgICAgOzsgRWl0 aGVyIG1hdGNoIGEgZnVsbCBuYW1lIHNlZ21lbnQsIG9yIGVvcy4KKyAgICAgICAgICAgICAg IlxcKD86L1xcfFxcJ1xcKSIpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tdGFncy1nZW5l cmF0ZSAocHJvaikKKyAgKGxldCogKChyb290IChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAg ICAgICAoZGVmYXVsdC1kaXJlY3Rvcnkgcm9vdCkKKyAgICAgICAgIChmaWxlcyAoZXRhZ3Mt cmVnZW4tLWFsbC1maWxlcyBwcm9qKSkKKyAgICAgICAgICh0YWdzLWZpbGUgKGV0YWdzLXJl Z2VuLS1jaG9vc2UtdGFncy1maWxlIHByb2opKQorICAgICAgICAgKGN0YWdzLXAgKGV0YWdz LXJlZ2VuLS1jdGFncy1wKSkKKyAgICAgICAgIChjb21tYW5kIChmb3JtYXQgIiVzICVzICVz IC0gLW8gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLXByb2dy YW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2lkZW50aXR5Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1idWls ZC1wcm9ncmFtLW9wdGlvbnMgY3RhZ3MtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGN0YWdzJ3Mg ZXRhZ3MgcmVxdWlyZXMgJy1MJyBmb3Igc3RkaW4gaW5wdXQuCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiBjdGFncy1wICItTCIgIiIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhZ3MtZmlsZSkpKQorICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAobWFwYyAo bGFtYmRhIChmKQorICAgICAgICAgICAgICAoaW5zZXJ0IGYgIlxuIikpCisgICAgICAgICAg ICBmaWxlcykKKyAgICAgIChzaGVsbC1jb21tYW5kLW9uLXJlZ2lvbiAocG9pbnQtbWluKSAo cG9pbnQtbWF4KSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls IG5pbCBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lIHQpKQorICAgIChldGFncy1y ZWdlbi0tdmlzaXQtdGFibGUgdGFncy1maWxlIHJvb3QpKSkKKworKGRlZnVuIGV0YWdzLXJl Z2VuLS12aXNpdC10YWJsZSAodGFncy1maWxlIHJvb3QpCisgIDs7IEludmFsaWRhdGUgdGhl IHNjYW5uZWQgdGFncyBhZnRlciBhbnkgY2hhbmdlIGlzIHdyaXR0ZW4gdG8gZGlzay4KKyAg KGFkZC1ob29rICdhZnRlci1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tdXBkYXRlLWZpbGUp CisgIChhZGQtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS1tYXJrLWFz LW5ldykKKyAgKHNldHEgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSB0YWdzLWZpbGUKKyAgICAg ICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCByb290KQorICAodmlzaXQtdGFncy10YWJsZSBl dGFncy1yZWdlbi0tdGFncy1maWxlKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1jdGFncy1w ICgpCisgIChzdHJpbmctc2VhcmNoICJDdGFncyIKKyAgICAgICAgICAgICAgICAgKHNoZWxs LWNvbW1hbmQtdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcyAtLXZl cnNpb24iIGV0YWdzLXJlZ2VuLXByb2dyYW0pKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0t YnVpbGQtcHJvZ3JhbS1vcHRpb25zIChjdGFncy1wKQorICAod2hlbiAoYW5kIGV0YWdzLXJl Z2VuLXJlZ2V4cC1hbGlzdCBjdGFncy1wKQorICAgICh1c2VyLWVycm9yICJldGFncy1yZWdl bi1yZWdleHAtYWxpc3QgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEN0YWdzIikpCisgIChuY29u YworICAgKG1hcGNhbgorICAgIChsYW1iZGEgKGdyb3VwKQorICAgICAgKG1hcGNhbgorICAg ICAgIChsYW1iZGEgKGxhbmcpCisgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHJlZ2V4cCkK KyAgICAgICAgICAgICAgICAgICAoY29uY2F0ICItLXJlZ2V4PSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChmb3JtYXQgInslc30lcyIgbGFuZyByZWdleHApKSkpCisgICAgICAgICAg ICAgICAgIChjZHIgZ3JvdXApKSkKKyAgICAgICAoY2FyIGdyb3VwKSkpCisgICAgZXRhZ3Mt cmVnZW4tcmVnZXhwLWFsaXN0KQorICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbS1vcHRpb25zKSkK KworKGRlZnVuIGV0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSAoKQorICA7OyBUT0RPOiBNYXli ZSBvbmx5IGRvIHRoaXMgd2hlbiBFbWFjcyBpcyBpZGxlIGZvciBhIGJpdC4gIE9yIGRlZmVy CisgIDs7IHRoZSB1cGRhdGVzIGFuZCBkbyB0aGVtIGxhdGVyIGluIGJ1cnN0cyB3aGVuIHRo ZSB0YWJsZSBpcyB1c2VkLgorICAobGV0KiAoKGZpbGUtbmFtZSBidWZmZXItZmlsZS1uYW1l KQorICAgICAgICAgKHRhZ3MtZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQtZmlsZS1idWZmZXIgZXRhZ3Mt cmVnZW4tLXRhZ3MtZmlsZSkpKQorICAgICAgICAgKHJlbG5hbWUgKGNvbmNhdCAiLyIgKGZp bGUtcmVsYXRpdmUtbmFtZSBmaWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAg ICAgICAgKGlnbm9yZXMgZXRhZ3MtcmVnZW4taWdub3JlcykKKyAgICAgICAgIHByIHNob3Vs ZC1zY2FuKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKHdoZW4gdGFncy1maWxlLWJ1 ZgorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgZXRhZ3MtcmVnZW4tLW5ldy1maWxl CisgICAgICAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZXRhZ3MtcmVnZW4tLW5l dy1maWxlKQorICAgICAgICAgICAgICAgKHNldHEgcHIgKHByb2plY3QtY3VycmVudCkpCisg ICAgICAgICAgICAgICAoZXF1YWwgKHByb2plY3Qtcm9vdCBwcikgZXRhZ3MtcmVnZW4tLXRh Z3Mtcm9vdCkKKyAgICAgICAgICAgICAgIChtZW1iZXIgZmlsZS1uYW1lIChwcm9qZWN0LWZp bGVzIHByKSkpCisgICAgICAgICAgKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAg ICAgICAoc2V0cSBzaG91bGQtc2NhbiB0KSkKKyAgICAgICAgICgocHJvZ24gKHNldC1idWZm ZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1yZW1v dmUtdGFnIGZpbGUtbmFtZSkpCisgICAgICAgICAgKHNldHEgc2hvdWxkLXNjYW4gdCkpKSkK KyAgICAgICh3aGVuIChhbmQgc2hvdWxkLXNjYW4KKyAgICAgICAgICAgICAgICAgKG5vdCAo Y2wtc29tZQorICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpZ25vcmUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cCBpZ25vcmUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICBp Z25vcmVzKSkpCisgICAgICAgIChldGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1l KQorICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVz c2FnZS1sb2ctbWF4IG5pbCkpCisgICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKwor KGRlZnVuIGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNo YXIgKHBvaW50LW1pbikpCisgICh3aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxu JXMsIiBmaWxlLW5hbWUpIG5pbCB0KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5u aW5nIDApKSkKKyAgICAgIChzZWFyY2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAg ICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lv biBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0g KHBvaW50KSAyKSkpKSkKKyAgICB0KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQt dGFncyAoJnJlc3QgZmlsZS1uYW1lcykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAg KGxldCAoKG9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0 YWdzLXJlZ2VuLS1jdGFncy1wKSkpCisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkK KyAgICA7OyBYWFg6IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhv dWdoLgorICAgIDs7IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuCisgICAgKHNoZWxsLWNvbW1h bmQKKyAgICAgKGZvcm1hdCAiJXMgJXMgJXMgLW8gLSIKKyAgICAgICAgICAgICBldGFncy1y ZWdlbi1wcm9ncmFtIChtYXBjb25jYXQgIydpZGVudGl0eSBvcHRpb25zICIgIikKKyAgICAg ICAgICAgICAobWFwY29uY2F0ICMnaWRlbnRpdHkgZmlsZS1uYW1lcyAiICIpKQorICAgICB0 IGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUpKQorICA7OyBGSVhNRTogSXMgdGhl cmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXM/CisgIDs7IENvbXBsZXRpb24gdGFibGUgaXMg dGhlIG9ubHkgcmVtYWluaW5nIHBsYWNlIHdoZXJlIHRoZQorICA7OyB1cGRhdGUgaXMgbm90 IGluY3JlbWVudGFsLgorICAoc2V0cS1kZWZhdWx0IHRhZ3MtY29tcGxldGlvbi10YWJsZSBu aWwpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3ICgpCisgICh3aGVuIChh bmQgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdAorICAgICAgICAgICAgIChub3QgYnVmZmVyLWZp bGUtbnVtYmVyKSkKKyAgICAoc2V0cS1sb2NhbCBldGFncy1yZWdlbi0tbmV3LWZpbGUgdCkp KQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCAoKQorICAod2hlbiBldGFn cy1yZWdlbi0tdGFncy1maWxlCisgICAgKGxldCAoKGJ1ZmZlciAoZ2V0LWZpbGUtYnVmZmVy IGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUpKSkKKyAgICAgIChhbmQgYnVmZmVyCisgICAgICAg ICAgIChraWxsLWJ1ZmZlciBidWZmZXIpKSkKKyAgICAodGFncy1yZXNldC10YWdzLXRhYmxl cykKKyAgICAoc2V0cSB0YWdzLWZpbGUtbmFtZSBuaWwKKyAgICAgICAgICB0YWdzLXRhYmxl LWxpc3QgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSBuaWwKKyAgICAg ICAgICBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkpCisgIChyZW1vdmUtaG9vayAnYWZ0 ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQorICAocmVtb3ZlLWhv b2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1uZXcpKQorCiso ZGVmdmFyIGV0YWdzLXJlZ2VuLW1vZGUtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKQorCis7 OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIGV0YWdzLXJlZ2VuLW1vZGUKKyAg IkdlbmVyYXRlIGFuZCB1cGRhdGUgdGhlIHRhZ3MgYXV0b21hdGljYWxseS4KKworVGhpcyBt aW5vciBtb2RlIGdlbmVyYXRlcyB0aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2Vk IG9uCit0aGUgY3VycmVudCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRh dGVzIGl0IGFzIHlvdQorZWRpdCB0aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuIgor ICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1vZGUKKyAgICAgIChwcm9nbgorICAg ICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFja2VuZCA6YmVmb3JlCisgICAgICAg ICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgICAgICAo YWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9uIDpiZWZvcmUK KyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpKQor ICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1iYWNrZW5kICMnZXRhZ3MtcmVnZW4t LW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVtb3ZlICd0YWdzLWNvbXBsZXRpb24t YXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisgICAg KGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKworKHByb3ZpZGUgJ2V0YWdzLXJlZ2Vu KQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJlCg== --------------cn8oUXtey9HuQ1BhDNWNPXYu-- From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 02:34:16 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 07:34:16 +0000 Received: from localhost ([127.0.0.1]:42942 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJTrL-0003Cq-M7 for submit@debbugs.gnu.org; Sat, 30 Dec 2023 02:34:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40294) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJTrK-0003Cd-BS for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 02:34:15 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJTrE-00074t-33; Sat, 30 Dec 2023 02:34:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=GgKekBQCXcYbNeGFfM5qs7HaqO/Uc4hmZnerrZUC2oU=; b=Pp6lIiV9btXp 1IJ75mmdJEux4CMYMB2BsbP8giNb2HlYX4EZkI7CicdryvvUVIzd+smbmKG8LAl1wuiXsaRduRvpI LbG1kcQ52QSaseFFZIi3hWbqoCO5Grpu/yUWJ62/IurrloecyPkNQewjhkbFNA04cLtYF4XjxAEpE 9LmHscwTJ9zxTh0qdO3+aPiHcvea1UIirIT5Y1WR0ec+tav4d9/VHfiwlIq8chf9DiP/leiCND/hh rwV8Sv0dsyGTTPOnM1skCs40zFdZQWuuGaiujWDv5rIv2Lr1StRjZpuJdNQ+tqS6fUZdz6Kr8+CG2 fCAk8MuaFLi2WCFItocloA==; Date: Sat, 30 Dec 2023 09:33:58 +0200 Message-Id: <83tto0400p.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> (message from Dmitry Gutov on Sat, 30 Dec 2023 05:05:01 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 30 Dec 2023 05:05:01 +0200 > Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com > From: Dmitry Gutov > > >> +(defcustom etags-regen-tags-file "TAGS" > >> + "Name of the tags file to create inside the project. > > > > This and the other defcustom's here should say in the first line of > > the doc string that they are for etags-regen-mode. This will help > > discoverability and also produce a more helpful display with the > > various apropos commands. > > I've tried, but it seems hard to fit into most of them while keeping to > the requisite max number of columns. Only managed to fit that into > etags-regen-program and etags-regen-file-extensions. > > TBH, most of the time it would seem superfluous, given the namespaced > names. But it's probably good to mention in 'etags-regen-program', on > balance. I suggest some minor improvements in this area below. > >> +;;;###autoload > >> +(put 'etags-regen-file-extensions 'safe-local-variable > >> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > > > > Why not use list-of-strings-p here? > > Again, that "core ELPA" consideration. We could deploy this feature to a > number of released Emacs versions, if we don't introduce such dependencies. Isn't this covered by the compat package on ELPA? If not, I think it should be. > >> + (lambda (f) (or (not (string-match-p match-re f)) > >> + (string-match-p "/\\.#" f) > > > > Is that '/' there to detect regexps for absolute file names? If so, > > that won't work for Windows. > > It's to detect backup files. Can you add a comment there to that effect? > > >> +(defun etags-regen--ignore-regexp (ignore) > >> + (require 'dired) > >> + ;; It's somewhat brittle to rely on Dired. > >> + (let ((re (dired-glob-regexp ignore))) > >> + ;; We could implement root anchoring here, but \\= doesn't work in > >> + ;; string-match :-(. > >> + (concat (unless (eq ?/ (aref re 3)) "/") > >> + ;; Cutting off the anchors. > >> + (substring re 2 (- (length re) 2)) > >> + (unless (eq ?/ (aref re (- (length re) 3))) > >> + ;; Either match a full name segment, or eos. > >> + "\\(?:/\\|\\'\\)")))) > > > > Same here: what is the purpose of comparisons with a slash? I think > > we need some more comments there explaining the logic of the code. > > We compare with a slash to see whether the glob was matching against a > directory (in which case it's already anchored to the name of a file > name segment), otherwise we add such anchoring to either the end of a > file name segment or eos (thus allowing a glob match both directory > names and file names). > > Added a shorter comment saying the same. Thanks, but I miss in that comment explanations of the "magic" constants 2 and 3. Could we add that, please? > >> +(defun etags-regen--append-tags (&rest file-names) > >> + (goto-char (point-max)) > >> + (let ((options (etags-regen--build-program-options (etags-regen--ctags-p))) > >> + (inhibit-read-only t)) > >> + ;; XXX: call-process is significantly faster, though. > >> + ;; Like 10ms vs 20ms here. > >> + (shell-command > >> + (format "%s %s %s -o -" > >> + etags-regen-program (mapconcat #'identity options " ") > >> + (mapconcat #'identity file-names " ")) > >> + t etags-regen--errors-buffer-name)) > > > > Should we indeed use call-process? > > Something for later improvement. > > Looking at the code, I believe I decided to use 'shell-command' for the > first version because of how easy it makes to output stderr to a > separate buffer. call-process only offers writing them to a file. How about mentioning this issue in that comment? > +(defcustom etags-regen-tags-file "TAGS" > + "Name of the tags file to create inside the project. I suggest Name of the tags file to create inside the project by `etags-regen-mode'. > +(defcustom etags-regen-program-options nil > + "List of additional options to pass to the etags program." I suggest List of additional options for etags program invoked by `etags-regen-mode'. > +(defcustom etags-regen-regexp-alist nil > + "Mapping of languages to additional regexps for tags. I suggest Mapping of languages to etags regexps for `etags-regen-mode'. > +(define-minor-mode etags-regen-mode > + "Generate and update the tags automatically. I suggest Minor mode to automatically generate and update tags tables. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 15:32:14 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 20:32:14 +0000 Received: from localhost ([127.0.0.1]:45126 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJg0A-0008D6-2R for submit@debbugs.gnu.org; Sat, 30 Dec 2023 15:32:13 -0500 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]:59760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJg05-0008CN-BT for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 15:32:08 -0500 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-2ccebd0377fso19272221fa.3 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 12:32:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703968318; x=1704573118; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=4/RsoNnWEdCRXSaL7N8IXlu6yyGp0MfG/Cgx2Ttmp5M=; b=GognyWtCsHEN8EH6KD76mz4khHzEqN9SZVaHA7jCqcIHEk8BucKaqsQX90nP8IjmCf XBCobWDZy6sGEc68EFHJlxSYUyqMSR6BA8fMLPOFrwVhrP3lz/1mTxvdG3/jgQKvMtnt jHTWt8O92OBCp5nf1uxBVwt8Uy3o5ZPbm6k8KWWvDmvcHjKVhaMJLc738DymYBIYwKK/ h2eO3ygxwzC+2hUkmi+2XFhuI/gE9nhI8td6mWFJoXzmZWRFRlfw+hdXFlzoXW21oaJc zkqdw1dq9/MlwQJNYGNa/vZGbTYBdrbn7SQLEl+06EgciwwyptwHAHASVD9z0Fe51deB k12g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703968318; x=1704573118; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4/RsoNnWEdCRXSaL7N8IXlu6yyGp0MfG/Cgx2Ttmp5M=; b=mAkD7xbpQOWNYtpExP+mYYdkPiN+RQE4NjAUMf50S4Qyzxlii6YpOdQpnVeJEOiWvf spGnf7wZ4EiS667nfh3qZKudkEDaPG17HQsYYtcuGgItZ4tKT2Efgy17izC2h5U5T/Yi 0onm9kO+ncBw+8ejly1ULNWWAtaVsPEPmudVx4Pfmvot5T6la3I2G5W9OpINALFn2Qqn 3ZLSN0juQsroTy7ccwm26ztYOOdyj8Cua/Od1vuyVNVIJeuRojwF8WgyBNKjC06yXt3L bv1RvCmW9JgsgzJFJp7rF6CM1XRDLBMqnOaX1217jcqd/Zu8Xm5Q8agNkVKH7FL/okWa mqKg== X-Gm-Message-State: AOJu0YyACWlXPsXTAMHo9N5oNcArJ45+tbvvGWkjINVZAStCTu7ExmRZ JL/Nbb6ryZ9Jf/LtVMFYHi8xKevak8+GSi8pqtE= X-Google-Smtp-Source: AGHT+IF5mo1Xls6jA1i2NF5LIqbvvD/HqP7xL+FXc0abj6NdDbwXFj17/2NXUAYlHM9r6j0Jd4Hi6UTz4BDMJ3f36Ec= X-Received: by 2002:a2e:b1c5:0:b0:2cc:e70b:325c with SMTP id e5-20020a2eb1c5000000b002cce70b325cmr967829lja.161.1703968318136; Sat, 30 Dec 2023 12:31:58 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 12:31:57 -0800 From: Stefan Kangas In-Reply-To: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 12:31:57 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: > As long as it's in a separate file, it should be easy to publish it to > ELPA (as "core" package). Which is an option that's nice to have, even > if not essential. Sometime later, when the features and implementation > stabilize, we could merge the files, leaving the code in ELPA for older > emacsen. Or something like that. That overall plan sounds good to me, thanks. We'll have to decide on the details as we go of course, but clearly it makes sense to allow the feature some breathing room to stabilize. > This is only necessary for language constructs not supported by etags > OOtB. Such as our C macros which define Elisp functions and variables. > These are the same regexps that we have in our Makefile. > > So this is a per-project thing, rather than per-language. Most users and > projects shouldn't need it, or wouldn't need it right away. Ah, that makes more sense to me now. Thank you. Would it be helpful to put that explanation in the .dir-locals.el file itself? >>> +;;; Commentary: >>> + >>> +;; Simple automatic tags generation with updates on save. >>> +;; >>> +;; The goal of this mode is to provide a feature that should be >>> +;; familiar to the users of certain lightweight programmer's editors, >>> +;; such as Sublime Text. Which is "go to definition" with automatic >>> +;; indexing, added in ST3 (released in 2017). >> >> This makes it sound like we're just copying others, when we could be >> more confident. Emacs has had the described feature since before 2017. >> I propose dropping all references to Sublime Text and reducing the above >> to simply saying: > > But... it didn't? Otherwise you wouldn't have called it "long overdue", > right? Uhm, yeah, that could have been more clear. I must have hatched a key sentence when editing, or something. Please let me try again. The proposed text seemed to open up for the misunderstanding that "go to definition" is a new feature, that Sublime text introduced in 2017 and Emacs will now get in version 30.1. I think we should clarify that the new feature is only "automatic indexing". Furthermore, doing things for the user in the background is hardly revolutionary enough that we need to give Sublime text the credit for the invention, or anything like that. It's rather mundane these days, as far as features go. Users have learned to expect it. This is what makes the feature long overdue. Does that make more sense? > Anyway, I'm not married to the above text, it's just a description of > how I'm thinking about the problem. But I would invite you and other to > consider how the ST users take advantage of automatic indexing without > having to be aware of how information is stored behind the scenes (tag > files or not), when considering the sections of the manual touching on > etags-regen-mode. > >> This library provides automatic indexing for Emacs "go to >> definition" feature, the `xref-go-forward' command (bound to `M-.' >> by default). > > Sure. > > We could also add some text that would distinguish it from the general > notion of "automatic indexing", so that the users of Eglot, for example, > don't consider it necessary to enable this mode. Even though they would > also want indexing to remain automatic. Indeed, the possible confusion with eglot could bear some documenting. Perhaps we should add a new paragraph to the commentary explaining how this feature will (or will not) interact with Eglot. >>> +;; At the moment reindexing works off before/after-save-hook, but to >>> +;; handle more complex changes (e.g. the user switching to another >> >> (We usually prefer "for example" to "e.g.".) > > No problem. > > Though searching across the codebase, the number of hits for these two > options seems to be about the same (5K vs 4K). Search for "abbreviations" in (info "(elisp) Documentation Tips"). But when we made that addition, we didn't bother changing all existing documentation. IIRC, most people in that discussion preferred a more gradual approach. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 15:56:51 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 20:56:51 +0000 Received: from localhost ([127.0.0.1]:45142 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJgO2-00035n-Kp for submit@debbugs.gnu.org; Sat, 30 Dec 2023 15:56:51 -0500 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:55668) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJgNx-00035V-Bn for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 15:56:49 -0500 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-555f581aed9so671498a12.3 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 12:56:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703969799; x=1704574599; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=JryjSP3Hr94GnkzwWUpjn44NKN05Ykrz9pi7F0RYD1Q=; b=fZxDDXDtvQpuHBVLs557eoLwXJwmqhFs0i1HuRiLlLsJwWIjoChm63jLjV2d7tbkR/ sVJ/iPjAa9nvi3njqRaL2TymHXwkV9GiOjEnGe3J7DO15BFBucVEeJ+jbnnnFuY99BN6 IajUOVSl4dXb3t+CfHVyriCFXOO7WNyg4FojymbW59bjy4SlmfxvNOHVrZ42updp4oyV 1wEznGbE3Ms9gabp8Ym9s0A6giJZgMnUN+KELJ6nFuGG7JqlOJN7ZAUJx52DnlhGfHl1 SxLgTItGmOBk1h9Ka6hhnivOYK9kPVQ5hVAnmr5ENcQBfrh87/wayWNgenzmKbxnG6dJ Lm0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703969799; x=1704574599; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JryjSP3Hr94GnkzwWUpjn44NKN05Ykrz9pi7F0RYD1Q=; b=MiLBfskQ2cq/itCU9IzPGbUdGKkGd+eQWDXChO9Dx2m1JDVQU888S98yK2D6IiKs3E s55n0Zqe2Wk82VEAXV2oQsfdwcm1z59C+L2gb/WlXCEiKbRmts/kLAeuthlTCk9/NwA4 vllyt6jaDpz/CrpmUhGeWHbaMY+0QOzP9e+Caz8lAtVTgMSsa0l37ISNuxWFO69phKyz f4fzK6wd9AU9JyYiqWxdzGANp0ZeR0l88LYtPlW/Y/vlr8a1aNqkhkdj8MHAtAKPm42G TIkz+Vf2x+RvdVGvYQPdOjQGOT8r9UcwHhbVkN820/eGoC0t5zJjH9SYa0nkHUcYyqsC WoNQ== X-Gm-Message-State: AOJu0Yyr5WjiVgZgvJrc+QcJpUBPhAaX1XkvzyxxH8w2YM7NHuLDxNUK 8U/RQsi31SBvM/hyn1gG4rxL4MQAvCSDDAte8lw= X-Google-Smtp-Source: AGHT+IEg7PvFhBE88akhVpMpachpbutORDb+buP6tAPpSbjyYc6VJxGzBSr/1YY+WI3sBZbuneYiJLvfuAPYN4ccAQ0= X-Received: by 2002:a50:8714:0:b0:553:4a57:a5a8 with SMTP id i20-20020a508714000000b005534a57a5a8mr9320577edb.16.1703969798776; Sat, 30 Dec 2023 12:56:38 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 12:56:38 -0800 From: Stefan Kangas In-Reply-To: <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 12:56:38 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, Michael Albinus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: > On 30/12/2023 00:17, Stefan Kangas wrote: >> Dmitry Gutov writes: >> >>>> . there are no updates for NEWS and the Emacs manual >>> >>> I'll certainly add something to NEWS. Not sure where and what should be >>> in the manual. >> >> How about a new node describing this feature under `(emacs) Tags >> Tables`? > > Good suggestion, but that still leaves the problem of organizing the text. > > Do you want, perchance, to give it a try yourself? > > Optimally, it might need a significant rewrite: we wouldn't point the > user to 'etags' right away, or the "Create Tags Table" section. > > The average user taking advantage of etags-regen-mode might not even > need to know what a "tags table" is (or only know that in very broad > strokes), so depending on our eventual approach we might drop that node, > or rearrange the nodes in a particular order, prefacing that one > ("Create Tags Table") as the approach for advanced users. Indeed, all good points. In an ideal world, "tags tables" would be an implementation detail, perhaps only of interest to users with highly specific and customized workflows. I won't have time to work on a proper patch right now, but perhaps something along these lines (warning: a *very* rough draft): diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 0725d889747..f3d09b48f12 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -2666,6 +2666,9 @@ Tags Tables by using one of the commands from other packages that can produce such tables in the same format.) + Instead of creating a tags table manually, you might want to have it +created automatically for you. @xref{Update Tags Table}. + Emacs uses the tags tables via the @code{etags} package as one of the supported backends for @code{xref}. Because tags tables are produced by the @command{etags} command that is part of an Emacs @@ -2683,7 +2686,8 @@ Tags Tables @menu * Tag Syntax:: Tag syntax for various types of code and text files. -* Create Tags Table:: Creating a tags table with @command{etags}. +* Update Tags Table:: Creating a tags table automatically. +* Create Tags Table:: Creating a tags table manually with @command{etags}. * Etags Regexps:: Create arbitrary tags using regular expressions. @end menu @@ -2877,8 +2881,21 @@ Tag Syntax You can also generate tags based on regexp matching (@pxref{Etags Regexps}) to handle other formats and languages. +@node Update Tags Table +@subsubsection Keeping Tags Tables up to date + + The easiest way to manage tags tables is by enabling +@code{etags-regen-mode} (@kbd{M-x etags-regen-mode RET}). This minor +mode generates the tags table automatically based on the current +project configuration, and later updates it as you edit the files and +save the changes. + +Note that this feature disables itself if you have already manually +visited a tags table (with @kbd{M-x visit-tags-table}, or through an +explicit prompt triggered by some feature that requires tags). + @node Create Tags Table -@subsubsection Creating Tags Tables +@subsubsection Creating Tags Tables Manually @cindex @command{etags} program The @command{etags} program is used to create a tags table file. It knows >>> Which brings a problem: the mode is now likely unusable over Tramp in >>> any project of significant size. Something to improve later. >> >> Should this be documented somewhere? > > Maybe, maybe not. The previous solution using xargs and stat (as still > implemented on the branch -- now outdated) should work for most remote > hosts (unixy ones). So it's likely a matter of having a user interested > in this and giving them a short enough patch to try. Right. I basically never use Tramp, so I'm leaving this to others. Copying in Michael in case he has any comments. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 17:50:57 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 22:50:58 +0000 Received: from localhost ([127.0.0.1]:45193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJiAT-0001Yt-GT for submit@debbugs.gnu.org; Sat, 30 Dec 2023 17:50:57 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:57471) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJiAP-0001Ye-8V for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 17:50:55 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 5DE875C015C; Sat, 30 Dec 2023 17:50:46 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sat, 30 Dec 2023 17:50:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1703976646; x=1704063046; bh=fdlzUlNbNYQ7XJKfkjmVuDB2BNwYXyI5NzZDop4UTgU=; b= sDX87WluTFiGxsnH+VwdstZ0Rm2NsboXlvHy0yiwE3045J+/mh403OC7/2IylItD 8pwzSoIFcYzSJAOHUb6lLycFNmqA0eMn2bE69VexBpG5vZOUlzy9ALP1N5SXaIKd mkGJS7EBFg5dxYSUWcEFe1E/r5STSUnINXxg1ZA/IQulHdJJdpYhHENaT9a+5qw7 VH05B0QxkXUJu1tZK5sEP22lFYR0zL1dlu8DyQ5Zfn1Pgb1toTrY251qXwNePgub CnpRMDbBe2Zn3gCC+PUAKx0lWvCFyH+kxgW3g/1VscMA8XSVVNjCom8kEZqarOC5 xe0YrfLf3gwlx2RFkCijMA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703976646; x= 1704063046; bh=fdlzUlNbNYQ7XJKfkjmVuDB2BNwYXyI5NzZDop4UTgU=; b=A 2jPtNNkb2e3MuCUlnTlD/TKIBOwDQ6N1E9CvW8yxfu+B5XurApBmwcySP9ufo7uA l9SaHOckj+OhwJYtzvB1rRdsOOSwhqmLZfZ0d7ZL7MJl2btWwnEvOwi6xWbRvnO3 VwoLY6SYzH0bk0iz+51J6tYse4NYU57hRlnQArtxAN7Rgxj5kAt5GZP+1k2w0b9Z xhICzxsaZObUXe53FthZs2Snxgmr9K8KYK5IuWGV20MrrBqrg6IX8BIHp7BuLnaa SdqXDi0S7ISrlbkxzejWDC9NX4j0muJJ4fsJ4zdTHTlJeJGCvc5Lkf8G4Evta2ei vwRGEoNmZbl5WisYz4fHQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefiedgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 30 Dec 2023 17:50:45 -0500 (EST) Message-ID: <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> Date: Sun, 31 Dec 2023 00:50:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 30/12/2023 22:31, Stefan Kangas wrote: >> This is only necessary for language constructs not supported by etags >> OOtB. Such as our C macros which define Elisp functions and variables. >> These are the same regexps that we have in our Makefile. >> >> So this is a per-project thing, rather than per-language. Most users and >> projects shouldn't need it, or wouldn't need it right away. > > Ah, that makes more sense to me now. Thank you. > > Would it be helpful to put that explanation in the .dir-locals.el file > itself? .dir-locals.el already usually hosts per-project settings. And most users of this feature probably aren't going to read Emacs's one. I've added another sentence to the docstring, let's see if it helps. >>>> +;;; Commentary: >>>> + >>>> +;; Simple automatic tags generation with updates on save. >>>> +;; >>>> +;; The goal of this mode is to provide a feature that should be >>>> +;; familiar to the users of certain lightweight programmer's editors, >>>> +;; such as Sublime Text. Which is "go to definition" with automatic >>>> +;; indexing, added in ST3 (released in 2017). >>> >>> This makes it sound like we're just copying others, when we could be >>> more confident. Emacs has had the described feature since before 2017. >>> I propose dropping all references to Sublime Text and reducing the above >>> to simply saying: >> >> But... it didn't? Otherwise you wouldn't have called it "long overdue", >> right? > > Uhm, yeah, that could have been more clear. I must have hatched a key > sentence when editing, or something. Please let me try again. > > The proposed text seemed to open up for the misunderstanding that "go to > definition" is a new feature, that Sublime text introduced in 2017 and > Emacs will now get in version 30.1. You might be right. The file/feature only contains the automatic indexing part, though. > I think we should clarify that the new feature is only "automatic > indexing". Furthermore, doing things for the user in the background is > hardly revolutionary enough that we need to give Sublime text the credit > for the invention, or anything like that. It's rather mundane these > days, as far as features go. Users have learned to expect it. > > This is what makes the feature long overdue. Yeah, it's hardly an innovation, more like in the "why don't we have this yet" department. But while automatic indexing has been around for a while, having it OOtB in lightweight editors wasn't commonplace. So as I recall it for ST3 (first beta in 2013, release in 2017) it was a meaningful step forward. The complex IDEs already had this for a long time, of course (but each was more specialized, and worked with a smaller number of languages). >> We could also add some text that would distinguish it from the general >> notion of "automatic indexing", so that the users of Eglot, for example, >> don't consider it necessary to enable this mode. Even though they would >> also want indexing to remain automatic. > > Indeed, the possible confusion with eglot could bear some documenting. > Perhaps we should add a new paragraph to the commentary explaining how > this feature will (or will not) interact with Eglot. Suggestions welcome. I'm not sure how to phrase that without mentioning etags, tags files, and xref backends (in general and the names of specific ones). >>>> +;; At the moment reindexing works off before/after-save-hook, but to >>>> +;; handle more complex changes (e.g. the user switching to another >>> >>> (We usually prefer "for example" to "e.g.".) >> >> No problem. >> >> Though searching across the codebase, the number of hits for these two >> options seems to be about the same (5K vs 4K). > > Search for "abbreviations" in (info "(elisp) Documentation Tips"). > > But when we made that addition, we didn't bother changing all existing > documentation. IIRC, most people in that discussion preferred a more > gradual approach. All right, I've replaced the two "e.g."'s in user-facing text. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 18:24:05 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 23:24:05 +0000 Received: from localhost ([127.0.0.1]:45238 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJigX-0007bX-Ax for submit@debbugs.gnu.org; Sat, 30 Dec 2023 18:24:05 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:41121) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJigT-0007b2-Oz for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 18:24:03 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id B4EEB5C01C5; Sat, 30 Dec 2023 18:23:55 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Sat, 30 Dec 2023 18:23:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1703978635; x=1704065035; bh=WPHS+nX2xSPJDhgz7bsuvECaeiu4T9Q/B8xQl4R9J8Y=; b= gsBUpSyUKExHp0TY21cQso3+YywUFniPIaIXgQNGK2XSRbLtt394aMes7JHlBaXj b1GwE2OPLW5THDvWgPkNb9ErEhWkXyl1+lWwc35he95eCKogf1APHXHEwBvDvfX2 +vhFx80DPQ+BR/odwIbwjVMh3XU6bX+KFAeGM0QG0TfNIxe4WtIwdSTRjogVloHS Eo6+FqPAsfLwn4Io9z8v8KR+DX4DkLZxLpGoMF07TRwsfLjNcbvVUO9kM3+ezyLF hjO8Vs1RBVLZ1m4E5++WIVrn7XFdbJXWekL+VbykWzZBmHBSUfGHM85bL7uwi7Qf bziPgVOcALjeihT1QWZSyA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703978635; x= 1704065035; bh=WPHS+nX2xSPJDhgz7bsuvECaeiu4T9Q/B8xQl4R9J8Y=; b=D Yci+TwJyO71YFnm3DeLJvtwEcfO8B6HNjcdmvJdxtcUJV3/Gq+krUk1U0VM4kumz rfnSYHSTz28MUBBkKfP4ADiD5+cSTawgmZl+51lTiYSlJCRgScD6FhjjQwBySuFQ 6XZbWhFHpwrGGiQfcyw+85tEVX7H85NXSh/WHDoMN8QHIcd60KQidxcyVRD4f4Of HpkswjTy/Zj6r3goup05/SrUclvcUARnaB2tGq+YyhcLCHN0oDXo9PjM5jzwGqpw JTkgMFE8bJSPbvCsnQKnueKrCTCJ2+Oh8Hez0v4r8a/cpF4QEJNS8gqCILR7hark Fus2c1q+pPHd//U62XFKw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefiedgudduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 30 Dec 2023 18:23:53 -0500 (EST) Message-ID: Date: Sun, 31 Dec 2023 01:23:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, Michael Albinus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 30/12/2023 22:56, Stefan Kangas wrote: > Dmitry Gutov writes: > >> On 30/12/2023 00:17, Stefan Kangas wrote: >>> Dmitry Gutov writes: >>> >>>>> . there are no updates for NEWS and the Emacs manual >>>> I'll certainly add something to NEWS. Not sure where and what should be >>>> in the manual. >>> How about a new node describing this feature under `(emacs) Tags >>> Tables`? >> Good suggestion, but that still leaves the problem of organizing the text. >> >> Do you want, perchance, to give it a try yourself? >> >> Optimally, it might need a significant rewrite: we wouldn't point the >> user to 'etags' right away, or the "Create Tags Table" section. >> >> The average user taking advantage of etags-regen-mode might not even >> need to know what a "tags table" is (or only know that in very broad >> strokes), so depending on our eventual approach we might drop that node, >> or rearrange the nodes in a particular order, prefacing that one >> ("Create Tags Table") as the approach for advanced users. > Indeed, all good points. In an ideal world, "tags tables" would be an > implementation detail, perhaps only of interest to users with highly > specific and customized workflows. > > I won't have time to work on a proper patch right now, but perhaps > something along these lines (warning: a*very* rough draft): > > diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi > index 0725d889747..f3d09b48f12 100644 > --- a/doc/emacs/maintaining.texi > +++ b/doc/emacs/maintaining.texi > @@ -2666,6 +2666,9 @@ Tags Tables > by using one of the commands from other packages that can produce such > tables in the same format.) > > + Instead of creating a tags table manually, you might want to have it > +created automatically for you. @xref{Update Tags Table}. > + > Emacs uses the tags tables via the @code{etags} package as one of > the supported backends for @code{xref}. Because tags tables are > produced by the @command{etags} command that is part of an Emacs > @@ -2683,7 +2686,8 @@ Tags Tables > > @menu > * Tag Syntax:: Tag syntax for various types of code and text files. > -* Create Tags Table:: Creating a tags table with @command{etags}. > +* Update Tags Table:: Creating a tags table automatically. > +* Create Tags Table:: Creating a tags table manually with @command{etags}. > * Etags Regexps:: Create arbitrary tags using regular expressions. > @end menu > > @@ -2877,8 +2881,21 @@ Tag Syntax > You can also generate tags based on regexp matching (@pxref{Etags > Regexps}) to handle other formats and languages. > > +@node Update Tags Table > +@subsubsection Keeping Tags Tables up to date > + > + The easiest way to manage tags tables is by enabling > +@code{etags-regen-mode} (@kbd{M-x etags-regen-mode RET}). This minor > +mode generates the tags table automatically based on the current > +project configuration, and later updates it as you edit the files and > +save the changes. > + > +Note that this feature disables itself if you have already manually > +visited a tags table (with @kbd{M-x visit-tags-table}, or through an > +explicit prompt triggered by some feature that requires tags). > + > @node Create Tags Table > -@subsubsection Creating Tags Tables > +@subsubsection Creating Tags Tables Manually > @cindex @command{etags} program > > The @command{etags} program is used to create a tags table file. It knows Thanks! This is already an improvement. Regarding node names: if we call the new node "Update Tags Table", the users might want to visit it after "Create Tags Table" (to maybe see how to keep a tags table updated after creating it manually), and then read that this is not supported, as you note in the second paragraph. We might implement something like that later, but it would have to be off by default, I think. What if we call them "Automatic Tags Table" and "Manual Tags Table"? Or "Creating Tags Table Automatically" and "Creating Tags Table Manually"? From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 18:26:07 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 23:26:07 +0000 Received: from localhost ([127.0.0.1]:45242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJiiV-0007ec-0X for submit@debbugs.gnu.org; Sat, 30 Dec 2023 18:26:07 -0500 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]:42300) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJiiS-0007e2-Dv for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 18:26:05 -0500 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5559df64497so3730581a12.1 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 15:26:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703978758; x=1704583558; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=PkxgIGEihQQm94Nl8qJn9WOH+NBfgobFtW3wXIoExuY=; b=LjaDVn0FRt02LT8WMRJ2njcQ6wjsPwFwgIxBo11Tr7w7jzRN0iV3cyR5YERyDqot1v 1lOMPgh97Ko/Vo/9m10WDRv5CdSRwYgfG/7R6VgAgqtxvFapnPIMSBqPpWH5tPMoGMeE F2wn9LhWmWJ12C7lShonkCk4OA0sGw/Nb/3e8NVx8V3BknU89dAjbOaIuaSRQMfjHz+W wNdbJugf/EKPKLTBZ3toldayeyspWSvEeHf6k6ydTKIW6nccU2socCffovoxm1R10iMB PLuNZPruWJVZtxmn6rZNoqHg2SzanrzE6ZOrmsHCXSL+3Kc1NhaGSF3I01BYzXyYd5Hc WXOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703978758; x=1704583558; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PkxgIGEihQQm94Nl8qJn9WOH+NBfgobFtW3wXIoExuY=; b=k4HA82i6b7IhHiULg5DFjYi+yk02wLztx0KyL+KYNuHVOaqjeadY8yp688ZDRebp5O k49okMFDUbhaFyjd01aCe926QXRvFmPLt+76pDsPll3OiVGCUe4RI10Nsa19V6GdiriX 6Z+lSfK33oBTqcC0LMolRJvSnBflYi+d4U8YqRdNI4udmwQrnZtAFRsQD0AB9UsAcJAw jyKO4Lock6LeFTMURGoc5z6CH16KGTdWCUXamYosE0N97YBvcFy6+soQ/tRwyzpH0LWN q69xdUko8xGGMWEYFCBPcUmTGu4yKKxZlw7fKnnNcWL4b2s4IXnNkDI9uBu99PKTDmQP LA5A== X-Gm-Message-State: AOJu0YzNpmw32dAuEvXrqLeuDeZZolLZpuCXjO9x2u/kUpBHawNFEOR7 o7e8fOjENCuYfuWWZwA5ZjG5RWcO7OGRjfo2C2A= X-Google-Smtp-Source: AGHT+IFlT3DpVlg+mhN3VJlMU2g958lSgz+pXgvZhhcdCGJOL5irSyFY/DJkrzmJXE4I7/nB/X+/+aHo4M4tnY87ldw= X-Received: by 2002:a50:baae:0:b0:555:9b82:3b31 with SMTP id x43-20020a50baae000000b005559b823b31mr4507986ede.34.1703978757804; Sat, 30 Dec 2023 15:25:57 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 15:25:57 -0800 From: Stefan Kangas In-Reply-To: <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 15:25:57 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: > On 30/12/2023 22:31, Stefan Kangas wrote: > >> Would it be helpful to put that explanation in the .dir-locals.el file >> itself? > > .dir-locals.el already usually hosts per-project settings. And most > users of this feature probably aren't going to read Emacs's one. I was mostly thinking about us poor Emacs maintainers, but either way is fine by me. > Yeah, it's hardly an innovation, more like in the "why don't we have > this yet" department. But while automatic indexing has been around for a > while, having it OOtB in lightweight editors wasn't commonplace. So as I > recall it for ST3 (first beta in 2013, release in 2017) it was a > meaningful step forward. The complex IDEs already had this for a long > time, of course (but each was more specialized, and worked with a > smaller number of languages). OK, that's interesting, as far as text editor history goes. Still, I'm hesitant to give them too much acknowledgement for what basically amounts to no longer being among the worst in class. As you say, IDEs have already been doing this type of thing for a long time. Sublime Text is non-free software too, which doesn't do much to make me happier about mentioning their name. But if you think it's a useful piece of history, then by all means let's keep it. Perhaps it could be moved to a separate history section rather than the introductory paragraph, though? It's your call. >> Indeed, the possible confusion with eglot could bear some documenting. >> Perhaps we should add a new paragraph to the commentary explaining how >> this feature will (or will not) interact with Eglot. > > Suggestions welcome. I'm not sure how to phrase that without mentioning > etags, tags files, and xref backends (in general and the names of > specific ones). The most pressing thing to explain, I think, is what happens if you run both this mode and eglot. Users will want to run the global mode but still use eglot for some projects. I don't really have a concrete suggestion, as I don't have a clear idea of how it works. :-) But I think eglot will just take over and the etags stuff will be ignored, no? From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 18:43:38 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 23:43:38 +0000 Received: from localhost ([127.0.0.1]:45285 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJizR-0002GQ-9L for submit@debbugs.gnu.org; Sat, 30 Dec 2023 18:43:38 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:57357) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJizO-0002GC-BS for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 18:43:35 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 3846E5C01D3; Sat, 30 Dec 2023 18:43:28 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sat, 30 Dec 2023 18:43:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1703979808; x=1704066208; bh=PR5kadpJe1 xGyOtnO6HR9VolVWgxXNaJIi7T8gPLdhE=; b=CjD1yCxiX4E7PWgHMVLg98BH+d LJluyPgrc8mA53Pw6094LxxcVOZq3VmHvNvP3im4TYuQSfD0OtNcg2vwh4S4Wylr Q1VDS3p4cXY4D06GXQ53u/hfW7TiPRq6cblJb7CuvCsfniqlpoFVZYFobc5f8jfE 9nNiT0YsfB/U/I+caJlXRkn/2rLPBYjmjiWBrrFqwmfvkuCo6ShGEYKsgEEarYMR FPSAtyWhHOvlKZEbMDNnq1u1i40PYsurbtmXgXdBKvXzn+LC7ZXfIunOxRiv2lj3 vk61VkgRlEFTMgWug2M6VnWEcv2Y+EEau4D04Z+Q1FN5o0O+q1JLzkEIk57A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1703979808; x=1704066208; bh=PR5kadpJe1xGyOtnO6HR9VolVWgx XNaJIi7T8gPLdhE=; b=uu1ZGVbg2bR5JNEDA074PCeDo2y5Hn/adIpiqqgeNpw9 U+rEkaXKNaWdZMdEj7ZH8j3QiOrSIdtg5EhGKY1At+eEZjwTsBe/CqYpnvsZSYub JnoE7xV1EsipfEQE7jc8s/1XY7qEAbK5vaucxcDAaj7shh0Y16keltFETWaAk7L9 ciyvnSJO9GYrzCe/OkT1IcHKHzbwwdRoUtlan5ItpjJkmIHrcQt7tmOeKy8KKY41 RCrphK9Z7H8D2G4NPis2n3JHg83ssYmbH63d7DlcaMIUM89nWrVZ7Y8wIFIQgx9Y xoG5E4LUhhxTz7GR2dgFpZjQADFTu2fhbEhbxHSaVg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefiedgudehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehleefudekudduveekieelgfeiffdvkefhkeeljeeujeegueekveffkeejjeev heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 30 Dec 2023 18:43:26 -0500 (EST) Content-Type: multipart/mixed; boundary="------------06UVoILLd3ugSVn4W0GEQQmZ" Message-ID: <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> Date: Sun, 31 Dec 2023 01:43:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83tto0400p.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------06UVoILLd3ugSVn4W0GEQQmZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30/12/2023 09:33, Eli Zaretskii wrote: >> Date: Sat, 30 Dec 2023 05:05:01 +0200 >> Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com >> From: Dmitry Gutov >> >>>> +(defcustom etags-regen-tags-file "TAGS" >>>> + "Name of the tags file to create inside the project. >>> >>> This and the other defcustom's here should say in the first line of >>> the doc string that they are for etags-regen-mode. This will help >>> discoverability and also produce a more helpful display with the >>> various apropos commands. >> >> I've tried, but it seems hard to fit into most of them while keeping to >> the requisite max number of columns. Only managed to fit that into >> etags-regen-program and etags-regen-file-extensions. >> >> TBH, most of the time it would seem superfluous, given the namespaced >> names. But it's probably good to mention in 'etags-regen-program', on >> balance. > > I suggest some minor improvements in this area below. All right. >>>> +;;;###autoload >>>> +(put 'etags-regen-file-extensions 'safe-local-variable >>>> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) >>> >>> Why not use list-of-strings-p here? >> >> Again, that "core ELPA" consideration. We could deploy this feature to a >> number of released Emacs versions, if we don't introduce such dependencies. > > Isn't this covered by the compat package on ELPA? If not, I think it > should be. These forms go into generated autoloads file for each installed package (*-autoloads.el). I think compat doesn't make list-of-string-p autoloaded, and autoloads files don't usually have (require ...) forms. So while I haven't really tested this and could be missing something, it seems brittle to rely on 'compat' for this function (if at all possible). >>>> + (lambda (f) (or (not (string-match-p match-re f)) >>>> + (string-match-p "/\\.#" f) >>> >>> Is that '/' there to detect regexps for absolute file names? If so, >>> that won't work for Windows. >> >> It's to detect backup files. > > Can you add a comment there to that effect? Added. >>>> +(defun etags-regen--ignore-regexp (ignore) >>>> + (require 'dired) >>>> + ;; It's somewhat brittle to rely on Dired. >>>> + (let ((re (dired-glob-regexp ignore))) >>>> + ;; We could implement root anchoring here, but \\= doesn't work in >>>> + ;; string-match :-(. >>>> + (concat (unless (eq ?/ (aref re 3)) "/") >>>> + ;; Cutting off the anchors. >>>> + (substring re 2 (- (length re) 2)) >>>> + (unless (eq ?/ (aref re (- (length re) 3))) >>>> + ;; Either match a full name segment, or eos. >>>> + "\\(?:/\\|\\'\\)")))) >>> >>> Same here: what is the purpose of comparisons with a slash? I think >>> we need some more comments there explaining the logic of the code. >> >> We compare with a slash to see whether the glob was matching against a >> directory (in which case it's already anchored to the name of a file >> name segment), otherwise we add such anchoring to either the end of a >> file name segment or eos (thus allowing a glob match both directory >> names and file names). >> >> Added a shorter comment saying the same. > > Thanks, but I miss in that comment explanations of the "magic" > constants 2 and 3. Could we add that, please? 2 is the length of both anchors, 3 is the index of the character right after the anchor. There is already a comment about cutting off the anchors, I've expanded it a bit. >>>> +(defun etags-regen--append-tags (&rest file-names) >>>> + (goto-char (point-max)) >>>> + (let ((options (etags-regen--build-program-options (etags-regen--ctags-p))) >>>> + (inhibit-read-only t)) >>>> + ;; XXX: call-process is significantly faster, though. >>>> + ;; Like 10ms vs 20ms here. >>>> + (shell-command >>>> + (format "%s %s %s -o -" >>>> + etags-regen-program (mapconcat #'identity options " ") >>>> + (mapconcat #'identity file-names " ")) >>>> + t etags-regen--errors-buffer-name)) >>> >>> Should we indeed use call-process? >> >> Something for later improvement. >> >> Looking at the code, I believe I decided to use 'shell-command' for the >> first version because of how easy it makes to output stderr to a >> separate buffer. call-process only offers writing them to a file. > > How about mentioning this issue in that comment? Added. >> +(defcustom etags-regen-tags-file "TAGS" >> + "Name of the tags file to create inside the project. > > I suggest > > Name of the tags file to create inside the project by `etags-regen-mode'. > >> +(defcustom etags-regen-program-options nil >> + "List of additional options to pass to the etags program." > > I suggest > > List of additional options for etags program invoked by `etags-regen-mode'. > >> +(defcustom etags-regen-regexp-alist nil >> + "Mapping of languages to additional regexps for tags. > > I suggest > > Mapping of languages to etags regexps for `etags-regen-mode'. > >> +(define-minor-mode etags-regen-mode >> + "Generate and update the tags automatically. > > I suggest > > Minor mode to automatically generate and update tags tables. Replaced, thanks. Latest revision attached. Any further comments? --------------06UVoILLd3ugSVn4W0GEQQmZ Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v5.diff" Content-Disposition: attachment; filename="etags-regen-v5.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZjgyNTY0OTQ2YjcuLjZk NmJjYTE4N2RlIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTI0 Myw2ICsxMjQzLDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUxZmNhMWM0ZTQ0Ci0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MjQg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMS0y MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRy eSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMgb24gc2F2 ZS4KKzs7Cis7OyBUaGlzIG1vZGUgcHJvdmlkZXMgYXV0b21hdGljIGluZGV4aW5nIGZvciBF bWFjcyAiZ28gdG8gZGVmaW5pdGlvbiIKKzs7IGZlYXR1cmUsIHRoZSBgeHJlZi1nby1mb3J3 YXJkJyBjb21tYW5kIChib3VuZCB0byBgTS0uJyBieSBkZWZhdWx0KS4KKzs7Cis7OyBBdCB0 aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhvb2ss IGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChmb3IgZXhhbXBsZSwg dGhlIHVzZXIgc3dpdGNoaW5nIHRvCis7OyBhbm90aGVyIGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvCis7OyBzb21ldGhpbmcgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor KGRlY2xhcmUtZnVuY3Rpb24gZGlyZWQtZ2xvYi1yZWdleHAgImRpcmVkIikKKworKGRlZmN1 c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtIChleGVjdXRhYmxlLWZpbmQgImV0YWdzIikKKyAg Ik5hbWUgb2YgdGhlIGV0YWdzIHByb2dyYW0gdXNlZCBieSBgZXRhZ3MtcmVnZW4tbW9kZScu CisKK0lmIHlvdSBvbmx5IGhhdmUgYGN0YWdzJyBpbnN0YWxsZWQsIHlvdSBjYW4gYWxzbyBz ZXQgdGhpcyB0bworXCJjdGFncyAtZVwiLiAgU29tZSBmZWF0dXJlcyBtaWdodCBub3QgYmUg c3VwcG9ydGVkIHRoaXMgd2F5LiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBo ZXJlIHdvdWxkIGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9u IGl0IGJlaW5nIGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisg IDp0eXBlICdmaWxlCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSBldGFncy1y ZWdlbi10YWdzLWZpbGUgIlRBR1MiCisgICJOYW1lIG9mIHRoZSB0YWdzIGZpbGUgdG8gY3Jl YXRlIGluc2lkZSB0aGUgcHJvamVjdCBieSBgZXRhZ3MtcmVnZW4tbW9kZScuCisKK1RoZSB2 YWx1ZSBzaG91bGQgZWl0aGVyIGJlIGEgc2ltcGxlIGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5 CitzcGVjaWZpZWQpLCBvciBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcHJvamVjdCBy b290IGRpcmVjdG9yeQorYW5kIHJldHVybnMgYSBkaXN0aW5jdCBhYnNvbHV0ZSBmaWxlIG5h bWUgZm9yIGl0cyB0YWdzIGZpbGUuICBUaGUKK2xhdHRlciBwb3NzaWJpbGl0eSBpcyB1c2Vm dWwgd2hlbiB5b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBl bHNlLCBmb3IgZXhhbXBsZSBpbiBgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5Jy4iCisgIDp0 eXBlICcoY2hvaWNlIChzdHJpbmcgOnRhZyAiRmlsZSBuYW1lIikKKyAgICAgICAgICAgICAg ICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmaWxlIG5hbWUiKSkK KyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0t b3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIGZvciBldGFncyBw cm9ncmFtIGludm9rZWQgYnkgYGV0YWdzLXJlZ2VuLW1vZGUnLiIKKyAgOnR5cGUgJyhyZXBl YXQgc3RyaW5nKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVn ZW4tcmVnZXhwLWFsaXN0IG5pbAorICAiTWFwcGluZyBvZiBsYW5ndWFnZXMgdG8gZXRhZ3Mg cmVnZXhwcyBmb3IgYGV0YWdzLXJlZ2VuLW1vZGUnLgorCitUaGVzZSByZWdleHBzIGFyZSB1 c2VkIGluIGFkZGl0aW9uIHRvIHRoZSB0YWdzIG1hZGUgd2l0aCB0aGUKK3N0YW5kYXJkIHBh cnNpbmcgYmFzZWQgb24gdGhlIGxhbmd1YWdlLgorCitUaGUgdmFsdWUgbXVzdCBiZSBhIGxp c3Qgb2YgY29uc2VzIChMQU5HVUFHRVMgLiBUQUctUkVHRVhQUykKK3doZXJlIGJvdGggY2Fy IGFuZCBjZHIgYXJlIGxpc3RzIG9mIHN0cmluZ3MuCisKK0VhY2ggbGFuZ3VhZ2Ugc2hvdWxk IGJlIG9uZSBvZiB0aGUgcmVjb2duaXplZCBieSBldGFncywgc2VlCitgZXRhZ3MgLS1oZWxw Jy4gIEVhY2ggdGFnIHJlZ2V4cCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAor YXMgZG9jdW1lbnRlZCBmb3IgdGhlIGAtLXJlZ2V4JyBhcmd1bWVudHMgKHdpdGhvdXQgYHts YW5ndWFnZX0nKS4KKworV2UgY3VycmVudGx5IHN1cHBvcnQgb25seSBFbWFjcydzIGV0YWdz IHByb2dyYW0gd2l0aCB0aGlzIG9wdGlvbi4iCisgIDp0eXBlICcocmVwZWF0CisgICAgICAg ICAgKGNvbnMKKyAgICAgICAgICAgOnRhZyAiTGFuZ3VhZ2VzIGdyb3VwIgorICAgICAgICAg ICAocmVwZWF0IChzdHJpbmcgOnRhZyAiTGFuZ3VhZ2UgbmFtZSIpKQorICAgICAgICAgICAo cmVwZWF0IChzdHJpbmcgOnRhZyAiVGFnIFJlZ2V4cCIpKSkpCisgIDp2ZXJzaW9uICIzMC4x IikKKworOzs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCAn c2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFtYmRhICh2YWx1ZSkKKyAgICAgICAoYW5k IChsaXN0cCB2YWx1ZSkKKyAgICAgICAgICAgIChzZXEtZXZlcnktcAorICAgICAgICAgICAg IChsYW1iZGEgKGdyb3VwKQorICAgICAgICAgICAgICAgKGFuZCAoY29uc3AgZ3JvdXApCisg ICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2FyIGdyb3VwKSkKKyAgICAgICAgICAgICAg ICAgICAgKGxpc3RwIChjZHIgZ3JvdXApKQorICAgICAgICAgICAgICAgICAgICAoc2VxLWV2 ZXJ5LXAgIydzdHJpbmdwIChjYXIgZ3JvdXApKQorICAgICAgICAgICAgICAgICAgICAoc2Vx LWV2ZXJ5LXAgIydzdHJpbmdwIChjZHIgZ3JvdXApKSkpCisgICAgICAgICAgICAgdmFsdWUp KSkpCisKKzs7IFdlIGhhdmUgdG8gbGlzdCBhbGwgZXh0ZW5zaW9uczogZXRhZ3MgZmFsbHMg YmFjayB0byBGb3J0cmFuCis7OyB3aGVuIGl0IGNhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUg b2YgdGhlIGZpbGUuCis7OyBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1h Y3MtZGV2ZWwvMjAxOC0wMS9tc2cwMDMyMy5odG1sCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2Vu LWZpbGUtZXh0ZW5zaW9ucworICAnKCJyYiIgImpzIiAicHkiICJwbCIgImVsIiAiYyIgImNw cCIgImNjIiAiaCIgImhoIiAiaHBwIgorICAgICJqYXZhIiAiZ28iICJjbCIgImxpc3AiICJw cm9sb2ciICJwaHAiICJlcmwiICJocmwiCisgICAgIkYiICJmIiAiZjkwIiAiZm9yIiAiY3Mi ICJhIiAiYXNtIiAiYWRzIiAiYWRiIiAiYWRhIikKKyAgIkNvZGUgZmlsZSBleHRlbnNpb25z IGZvciBgZXRhZ3MtcmVnZW4tbW9kZScuCisKK0ZpbGUgZXh0ZW5zaW9ucyB0byBnZW5lcmF0 ZSB0aGUgdGFncyBmb3IuIgorICA6dHlwZSAnKHJlcGVhdCAoc3RyaW5nIDp0YWcgIkZpbGUg ZXh0ZW5zaW9uIikpCisgIDp2ZXJzaW9uICIzMC4xIikKKworOzs7IyMjYXV0b2xvYWQKKyhw dXQgJ2V0YWdzLXJlZ2VuLWZpbGUtZXh0ZW5zaW9ucyAnc2FmZS1sb2NhbC12YXJpYWJsZQor ICAgICAobGFtYmRhICh2YWx1ZSkgKGFuZCAobGlzdHAgdmFsdWUpIChzZXEtZXZlcnktcCAj J3N0cmluZ3AgdmFsdWUpKSkpCisKKzs7IEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IHJvb3Qg YW5jaG9yaW5nIHlldC4KKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4taWdub3JlcyBuaWwKKyAg IkFkZGl0aW9uYWwgaWdub3JlIHJ1bGVzLCBpbiB0aGUgZm9ybWF0IG9mIGBwcm9qZWN0LWln bm9yZXMnLiIKKyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoc3RyaW5nIDp0YWcgIkds b2IgdG8gaWdub3JlIikpCisgIDp2ZXJzaW9uICIzMC4xIikKKworOzs7IyMjYXV0b2xvYWQK KyhwdXQgJ2V0YWdzLXJlZ2VuLWlnbm9yZXMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAg KGxhbWJkYSAodmFsdWUpIChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJp bmdwIHZhbHVlKSkpKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5h bWUgIipldGFncy1yZWdlbi10YWdzLWVycm9ycyoiKQorCisoZGVmdmFyIGV0YWdzLXJlZ2Vu LS1yZXNjYW4tZmlsZXMtbGltaXQgMTAwKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1t dGltZXMgKHByb2opCisgIChsZXQgKChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBw cm9qKSkKKyAgICAgICAgKG10aW1lcyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkp CisgICAgICAgIGZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0KQorICAgIChkb2xpc3QgKGYgZmls ZXMpCisgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgKHB1dGhhc2ggZgor ICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQor ICAgICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIGYpKQorICAgICAgICAgICAg ICAgICAgIG10aW1lcykKKyAgICAgICAgKGZpbGUtbWlzc2luZyBuaWwpKSkKKyAgICBtdGlt ZXMpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgKHByb2opCisg IChpZiAoZnVuY3Rpb25wIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSkKKyAgICAgIChmdW5jYWxs IGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKQorICAgIChleHBh bmQtZmlsZS1uYW1lIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2op KSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tcmVmcmVzaCAocHJvaikKKyAgKHNhdmUtZXhj dXJzaW9uCisgICAgKGxldCogKCh0YWdzLWZpbGUgKGV0YWdzLXJlZ2VuLS1jaG9vc2UtdGFn cy1maWxlIHByb2opKQorICAgICAgICAgICAodGFncy1tdGltZSAoZmlsZS1hdHRyaWJ1dGUt bW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJp YnV0ZXMgdGFncy1maWxlKSkpCisgICAgICAgICAgIChhbGwtbXRpbWVzIChldGFncy1yZWdl bi0tYWxsLW10aW1lcyBwcm9qKSkKKyAgICAgICAgICAgYWRkZWQtZmlsZXMKKyAgICAgICAg ICAgY2hhbmdlZC1maWxlcworICAgICAgICAgICByZW1vdmVkLWZpbGVzKQorICAgICAgKGV0 YWdzLXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkK KyAgICAgIChzZXQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgdGFncy1maWxlKSkKKyAgICAg IChkb2xpc3QgKGZpbGUgKHRhZ3MtdGFibGUtZmlsZXMpKQorICAgICAgICAobGV0ICgobXRp bWUgKGdldGhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgKChudWxsIG10aW1lKQorICAgICAgICAgICAgKHB1c2ggZmlsZSByZW1vdmVkLWZp bGVzKSkKKyAgICAgICAgICAgKCh0aW1lLWxlc3MtcCB0YWdzLW10aW1lIG10aW1lKQorICAg ICAgICAgICAgKHB1c2ggZmlsZSBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgKHJlbWhh c2ggZmlsZSBhbGwtbXRpbWVzKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChyZW1o YXNoIGZpbGUgYWxsLW10aW1lcykpKSkpCisgICAgICAobWFwaGFzaAorICAgICAgIChsYW1i ZGEgKGtleSBfdmFsdWUpCisgICAgICAgICAocHVzaCBrZXkgYWRkZWQtZmlsZXMpKQorICAg ICAgIGFsbC1tdGltZXMpCisgICAgICAoaWYgKD4gKCsgKGxlbmd0aCBhZGRlZC1maWxlcykK KyAgICAgICAgICAgICAgICAobGVuZ3RoIGNoYW5nZWQtZmlsZXMpCisgICAgICAgICAgICAg ICAgKGxlbmd0aCByZW1vdmVkLWZpbGVzKSkKKyAgICAgICAgICAgICBldGFncy1yZWdlbi0t cmVzY2FuLWZpbGVzLWxpbWl0KQorICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgKG1l c3NhZ2UgImV0YWdzLXJlZ2VuOiBUb28gbWFueSBjaGFuZ2VzLCBmYWxsaW5nIGJhY2sgdG8g ZnVsbCByZXNjYW4iKQorICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAp KQorICAgICAgICAoZG9saXN0IChmaWxlIChuY29uYyByZW1vdmVkLWZpbGVzIGNoYW5nZWQt ZmlsZXMpKQorICAgICAgICAgIChldGFncy1yZWdlbi0tcmVtb3ZlLXRhZyBmaWxlKSkKKyAg ICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMpCisgICAgICAgICAg KGFwcGx5ICMnZXRhZ3MtcmVnZW4tLWFwcGVuZC10YWdzCisgICAgICAgICAgICAgICAgIChu Y29uYyBjaGFuZ2VkLWZpbGVzIGFkZGVkLWZpbGVzKSkpCisgICAgICAgICh3aGVuIChvciBj aGFuZ2VkLWZpbGVzIGFkZGVkLWZpbGVzIHJlbW92ZWQtZmlsZXMpCisgICAgICAgICAgKGxl dCAoKHNhdmUtc2lsZW50bHkgdCkKKyAgICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4 IG5pbCkpCisgICAgICAgICAgICAoc2F2ZS1idWZmZXIgMCkpKSkpKSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0ZSAoKQorICAobGV0IChwcm9qKQorICAgICh3aGVu IChhbmQgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdAorICAgICAgICAgICAgICAgKG5vdCAoZmls ZS1pbi1kaXJlY3RvcnktcCBkZWZhdWx0LWRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290KSkpCisgICAg ICAoZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgKHdoZW4gKGFuZCAobm90IGV0 YWdzLXJlZ2VuLS10YWdzLXJvb3QpCisgICAgICAgICAgICAgICA7OyBJZiBleGlzdGluZyB0 YWJsZSBpcyB2aXNpdGVkIHRoYXQncyBub3QgZ2VuZXJhdGVkIGJ5CisgICAgICAgICAgICAg ICA7OyB0aGlzIG1vZGUsIHNraXAgYWxsIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICAg ICAobm90IChvciB0YWdzLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFn cy10YWJsZS1saXN0KSkKKyAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wIChldGFncy1y ZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIHByb2ogKHByb2plY3QtY3VycmVudCkpKSkpCisgICAgICAobWVzc2FnZSAiRm91 bmQgZXhpc3RpbmcgdGFncyB0YWJsZSwgcmVmcmVzaGluZy4uLiIpCisgICAgICAoZXRhZ3Mt cmVnZW4tLXJlZnJlc2ggcHJvaikpCisgICAgKHdoZW4gKGFuZCAobm90IChvciB0YWdzLWZp bGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFncy10YWJsZS1saXN0KSkKKyAg ICAgICAgICAgICAgIChzZXRxIHByb2ogKG9yIHByb2ogKHByb2plY3QtY3VycmVudCkpKSkK KyAgICAgIChtZXNzYWdlICJHZW5lcmF0aW5nIG5ldyB0YWdzIHRhYmxlLi4uIikKKyAgICAg IChsZXQgKChzdGFydCAodGltZS10by1zZWNvbmRzKSkpCisgICAgICAgIChldGFncy1yZWdl bi0tdGFncy1nZW5lcmF0ZSBwcm9qKQorICAgICAgICAobWVzc2FnZSAiLi4uZG9uZSAoJS4y ZiBzKSIgKC0gKHRpbWUtdG8tc2Vjb25kcykgc3RhcnQpKSkpKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1hbGwtZmlsZXMgKHByb2opCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290 IHByb2opKQorICAgICAgICAgKGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICA7 OyBUT0RPOiBNYWtlIHRoZSBzY2FubmluZyBtb3JlIGVmZmljaWVudCwgZS5nLiBtb3ZlIHRo ZQorICAgICAgICAgOzsgZmlsdGVyaW5nIGJ5IGdsb2IgdG8gcHJvamVjdCAocHJvamVjdC1m aWxlcy1maWx0ZXJlZC4uLikuCisgICAgICAgICAoZmlsZXMgKHByb2plY3QtZmlsZXMgcHJv aikpCisgICAgICAgICAobWF0Y2gtcmUgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAi XFwuIgorICAgICAgICAgICAgICAgICAgICAocmVnZXhwLW9wdCBldGFncy1yZWdlbi1maWxl LWV4dGVuc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICJcXCciKSkKKyAgICAgICAgIChp ci1zdGFydCAoMS0gKGxlbmd0aCByb290KSkpCisgICAgICAgICAoaWdub3Jlcy1yZWdleHBz CisgICAgICAgICAgKG1hcGNhciAjJ2V0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhwCisgICAg ICAgICAgICAgICAgICBldGFncy1yZWdlbi1pZ25vcmVzKSkpCisgICAgKGNsLWRlbGV0ZS1p ZgorICAgICAobGFtYmRhIChmKSAob3IgKG5vdCAoc3RyaW5nLW1hdGNoLXAgbWF0Y2gtcmUg ZikpCisgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wICIvXFwuIyIgZikgO0JhY2t1 cCBmaWxlcy4KKyAgICAgICAgICAgICAgICAoY2wtc29tZSAobGFtYmRhIChpZ25vcmUpIChz dHJpbmctbWF0Y2ggaWdub3JlIGYgaXItc3RhcnQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgIGlnbm9yZXMtcmVnZXhwcykpKQorICAgICBmaWxlcykpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLWlnbm9yZS1yZWdleHAgKGlnbm9yZSkKKyAgKHJlcXVpcmUgJ2RpcmVkKQorICA7 OyBJdCdzIHNvbWV3aGF0IGJyaXR0bGUgdG8gcmVseSBvbiBEaXJlZC4KKyAgKGxldCAoKHJl IChkaXJlZC1nbG9iLXJlZ2V4cCBpZ25vcmUpKSkKKyAgICA7OyBXZSBjb3VsZCBpbXBsZW1l bnQgcm9vdCBhbmNob3JpbmcgaGVyZSwgYnV0IFxcPSBkb2Vzbid0IHdvcmsgaW4KKyAgICA7 OyBzdHJpbmctbWF0Y2ggOi0oLgorICAgIChjb25jYXQgKHVubGVzcyAoZXEgPy8gKGFyZWYg cmUgMykpICIvIikKKyAgICAgICAgICAgIDs7IEN1dHRpbmcgb2ZmIHRoZSBhbmNob3JzIGFk ZGVkIGJ5IGBkaXJlZC1nbG9iLXJlZ2V4cCcuCisgICAgICAgICAgICAoc3Vic3RyaW5nIHJl IDIgKC0gKGxlbmd0aCByZSkgMikpCisgICAgICAgICAgICA7OyBUaGlzIHdheSB3ZSBhbGxv dyBhIGdsb2IgdG8gbWF0Y2ggYWdhaW5zdCBhIGRpcmVjdG9yeQorICAgICAgICAgICAgOzsg bmFtZSwgb3IgYSBmaWxlIG5hbWUuICBBbmQgd2hlbiBpdCBlbmRzIHdpdGggLyBhbHJlYWR5 LAorICAgICAgICAgICAgOzsgbm8gbmVlZCB0byBhZGQgdGhlIGFuY2hvcmluZy4KKyAgICAg ICAgICAgICh1bmxlc3MgKGVxID8vIChhcmVmIHJlICgtIChsZW5ndGggcmUpIDMpKSkKKyAg ICAgICAgICAgICAgOzsgRWl0aGVyIG1hdGNoIGEgZnVsbCBuYW1lIHNlZ21lbnQsIG9yIGVv cy4KKyAgICAgICAgICAgICAgIlxcKD86L1xcfFxcJ1xcKSIpKSkpCisKKyhkZWZ1biBldGFn cy1yZWdlbi0tdGFncy1nZW5lcmF0ZSAocHJvaikKKyAgKGxldCogKChyb290IChwcm9qZWN0 LXJvb3QgcHJvaikpCisgICAgICAgICAoZGVmYXVsdC1kaXJlY3Rvcnkgcm9vdCkKKyAgICAg ICAgIChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBwcm9qKSkKKyAgICAgICAgICh0 YWdzLWZpbGUgKGV0YWdzLXJlZ2VuLS1jaG9vc2UtdGFncy1maWxlIHByb2opKQorICAgICAg ICAgKGN0YWdzLXAgKGV0YWdzLXJlZ2VuLS1jdGFncy1wKSkKKyAgICAgICAgIChjb21tYW5k IChmb3JtYXQgIiVzICVzICVzIC0gLW8gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAg IGV0YWdzLXJlZ2VuLXByb2dyYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNv bmNhdCAjJ2lkZW50aXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgY3RhZ3MtcCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGN0YWdzJ3MgZXRhZ3MgcmVxdWlyZXMgJy1MJyBmb3Igc3RkaW4gaW5wdXQu CisgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBjdGFncy1wICItTCIgIiIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtZmlsZSkpKQorICAgICh3aXRoLXRlbXAtYnVm ZmVyCisgICAgICAobWFwYyAobGFtYmRhIChmKQorICAgICAgICAgICAgICAoaW5zZXJ0IGYg IlxuIikpCisgICAgICAgICAgICBmaWxlcykKKyAgICAgIChzaGVsbC1jb21tYW5kLW9uLXJl Z2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBjb21tYW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmlsIG5pbCBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1l IHQpKQorICAgIChldGFncy1yZWdlbi0tdmlzaXQtdGFibGUgdGFncy1maWxlIHJvb3QpKSkK KworKGRlZnVuIGV0YWdzLXJlZ2VuLS12aXNpdC10YWJsZSAodGFncy1maWxlIHJvb3QpCisg IDs7IEludmFsaWRhdGUgdGhlIHNjYW5uZWQgdGFncyBhZnRlciBhbnkgY2hhbmdlIGlzIHdy aXR0ZW4gdG8gZGlzay4KKyAgKGFkZC1ob29rICdhZnRlci1zYXZlLWhvb2sgIydldGFncy1y ZWdlbi0tdXBkYXRlLWZpbGUpCisgIChhZGQtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAjJ2V0 YWdzLXJlZ2VuLS1tYXJrLWFzLW5ldykKKyAgKHNldHEgZXRhZ3MtcmVnZW4tLXRhZ3MtZmls ZSB0YWdzLWZpbGUKKyAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCByb290KQorICAo dmlzaXQtdGFncy10YWJsZSBldGFncy1yZWdlbi0tdGFncy1maWxlKSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS1jdGFncy1wICgpCisgIChzdHJpbmctc2VhcmNoICJDdGFncyIKKyAgICAg ICAgICAgICAgICAgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nCisgICAgICAgICAgICAgICAg ICAoZm9ybWF0ICIlcyAtLXZlcnNpb24iIGV0YWdzLXJlZ2VuLXByb2dyYW0pKSkpCisKKyhk ZWZ1biBldGFncy1yZWdlbi0tYnVpbGQtcHJvZ3JhbS1vcHRpb25zIChjdGFncy1wKQorICAo d2hlbiAoYW5kIGV0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCBjdGFncy1wKQorICAgICh1c2Vy LWVycm9yICJldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgaXMgbm90IHN1cHBvcnRlZCB3aXRo IEN0YWdzIikpCisgIChuY29uYworICAgKG1hcGNhbgorICAgIChsYW1iZGEgKGdyb3VwKQor ICAgICAgKG1hcGNhbgorICAgICAgIChsYW1iZGEgKGxhbmcpCisgICAgICAgICAobWFwY2Fy IChsYW1iZGEgKHJlZ2V4cCkKKyAgICAgICAgICAgICAgICAgICAoY29uY2F0ICItLXJlZ2V4 PSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgInslc30lcyIgbGFuZyByZWdl eHApKSkpCisgICAgICAgICAgICAgICAgIChjZHIgZ3JvdXApKSkKKyAgICAgICAoY2FyIGdy b3VwKSkpCisgICAgZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0KQorICAgZXRhZ3MtcmVnZW4t cHJvZ3JhbS1vcHRpb25zKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSAo KQorICA7OyBUT0RPOiBNYXliZSBvbmx5IGRvIHRoaXMgd2hlbiBFbWFjcyBpcyBpZGxlIGZv ciBhIGJpdC4gIE9yIGRlZmVyCisgIDs7IHRoZSB1cGRhdGVzIGFuZCBkbyB0aGVtIGxhdGVy IGluIGJ1cnN0cyB3aGVuIHRoZSB0YWJsZSBpcyB1c2VkLgorICAobGV0KiAoKGZpbGUtbmFt ZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAgKHRhZ3MtZmlsZS1idWYgKGFuZCBldGFn cy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQt ZmlsZS1idWZmZXIgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSkpKQorICAgICAgICAgKHJlbG5h bWUgKGNvbmNhdCAiLyIgKGZpbGUtcmVsYXRpdmUtbmFtZSBmaWxlLW5hbWUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRhZ3MtcmVnZW4t LXRhZ3Mtcm9vdCkpKQorICAgICAgICAgKGlnbm9yZXMgZXRhZ3MtcmVnZW4taWdub3JlcykK KyAgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg KHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgZXRh Z3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJs ZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAgICAgICAgICAgICAgKHNldHEgcHIgKHBy b2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAgICAoZXF1YWwgKHByb2plY3Qtcm9vdCBw cikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAgICAgICAgICAgICAgIChtZW1iZXIgZmls ZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisgICAgICAgICAgKHNldC1idWZmZXIgdGFn cy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBzaG91bGQtc2NhbiB0KSkKKyAgICAgICAg ICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAgICAgICAg KGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUtbmFtZSkpCisgICAgICAgICAgKHNldHEg c2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVuIChhbmQgc2hvdWxkLXNjYW4KKyAgICAg ICAgICAgICAgICAgKG5vdCAoY2wtc29tZQorICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhIChpZ25vcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1w CisgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4 cCBpZ25vcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG5hbWUpKQorICAgICAg ICAgICAgICAgICAgICAgICBpZ25vcmVzKSkpCisgICAgICAgIChldGFncy1yZWdlbi0tYXBw ZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQor ICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCisgICAgICAgICAgKHNhdmUt YnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIChmaWxl LW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICh3aGVuIChzZWFyY2gtZm9y d2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5hbWUpIG5pbCB0KQorICAgIChsZXQgKChz dGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAgICAgIChzZWFyY2gtZm9yd2FyZCAiXGZc biIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAg ICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAoaWYg KGVvYnApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkpKSkKKyAgICB0KSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3QgZmlsZS1uYW1lcykKKyAgKGdvdG8tY2hh ciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1idWlsZC1w cm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1jdGFncy1wKSkpCisgICAgICAgIChpbmhp Yml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZp Y2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUu ICBCdXQgYHNoZWxsLWNvbW1hbmQnIG1ha2VzIGl0IGVhc3kgdG8KKyAgICA7OyBkaXJlY3Qg c3RkZXJyIHRvIGEgc2VwYXJhdGUgYnVmZmVyLgorICAgIChzaGVsbC1jb21tYW5kCisgICAg IChmb3JtYXQgIiVzICVzICVzIC1vIC0iCisgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tcHJv Z3JhbSAobWFwY29uY2F0ICMnaWRlbnRpdHkgb3B0aW9ucyAiICIpCisgICAgICAgICAgICAg KG1hcGNvbmNhdCAjJ2lkZW50aXR5IGZpbGUtbmFtZXMgIiAiKSkKKyAgICAgdCBldGFncy1y ZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lKSkKKyAgOzsgRklYTUU6IElzIHRoZXJlIGEgYmV0 dGVyIHdheSB0byBkbyB0aGlzPworICA7OyBDb21wbGV0aW9uIHRhYmxlIGlzIHRoZSBvbmx5 IHJlbWFpbmluZyBwbGFjZSB3aGVyZSB0aGUKKyAgOzsgdXBkYXRlIGlzIG5vdCBpbmNyZW1l bnRhbC4KKyAgKHNldHEtZGVmYXVsdCB0YWdzLWNvbXBsZXRpb24tdGFibGUgbmlsKSkKKwor KGRlZnVuIGV0YWdzLXJlZ2VuLS1tYXJrLWFzLW5ldyAoKQorICAod2hlbiAoYW5kIGV0YWdz LXJlZ2VuLS10YWdzLXJvb3QKKyAgICAgICAgICAgICAobm90IGJ1ZmZlci1maWxlLW51bWJl cikpCisgICAgKHNldHEtbG9jYWwgZXRhZ3MtcmVnZW4tLW5ldy1maWxlIHQpKSkKKworKGRl ZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAgKCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4t LXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZmZXIgKGdldC1maWxlLWJ1ZmZlciBldGFncy1y ZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAoYW5kIGJ1ZmZlcgorICAgICAgICAgICAoa2ls bC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHRhZ3MtcmVzZXQtdGFncy10YWJsZXMpCisgICAg KHNldHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAgICAgICAgdGFncy10YWJsZS1saXN0IG5p bAorICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsCisgICAgICAgICAgZXRh Z3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAocmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUt aG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSkKKyAgKHJlbW92ZS1ob29rICdiZWZv cmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3KSkKKworKGRlZnZhciBl dGFncy1yZWdlbi1tb2RlLW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkKKworOzs7IyMjYXV0 b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFncy1yZWdlbi1tb2RlCisgICJNaW5vciBt b2RlIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYW5kIHVwZGF0ZSB0YWdzIHRhYmxlcy4K KworVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNh bGx5IGJhc2VkIG9uCit0aGUgY3VycmVudCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBs YXRlciB1cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNo YW5nZXMuIgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1vZGUKKyAgICAgIChw cm9nbgorICAgICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFja2VuZCA6YmVmb3Jl CisgICAgICAgICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQor ICAgICAgICAoYWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9u IDpiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2Vu ZXJhdGUpKQorICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1iYWNrZW5kICMnZXRh Z3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVtb3ZlICd0YWdzLWNv bXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJh dGUpCisgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKworKHByb3ZpZGUgJ2V0 YWdzLXJlZ2VuKQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJlCg== --------------06UVoILLd3ugSVn4W0GEQQmZ-- From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 18:59:10 2023 Received: (at 67687) by debbugs.gnu.org; 30 Dec 2023 23:59:10 +0000 Received: from localhost ([127.0.0.1]:45300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJjET-0005K3-Jl for submit@debbugs.gnu.org; Sat, 30 Dec 2023 18:59:10 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:38327) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJjEQ-0005JU-C7 for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 18:59:08 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 06DFE5C01B4; Sat, 30 Dec 2023 18:59:00 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sat, 30 Dec 2023 18:59:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1703980740; x=1704067140; bh=k8L9cLR/gC3vC/dYo8mkCXRwyjYFjlmt6xChwlrTw7c=; b= BsW9S4NMRij1GLeErdb5vWZttHa1FdUXMP2rAf42v35yysxNiHFTZlz1jUAvmcd6 kmoOGntszY3i8v1/nZBQApaLqxKSJwRabC3/W/DkzJQIAXpUbav7eUsX2gDUXjB/ pYKOtct/1KBQ2hy7bJ+W6pH+cyH5DG+39EFsJVjL8AiS5nVtQ3tDK5S7EUUThNka jjYZQoVOJd6Q3uAxiPxAupfrFq6DKkrQRz+KFBQSri9PdCqmu2bIqU1V/b8JnHmD er2GTAvNMivuPJEe6kGczWtkoJ/lxuxDWesgOWwnXCIjDV3vzfRrFr0SVIGFz+ut l9nmIGXbCHhYeI7C7omrsw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1703980740; x= 1704067140; bh=k8L9cLR/gC3vC/dYo8mkCXRwyjYFjlmt6xChwlrTw7c=; b=Z SkKv77DEBiwymviryHeaCe9E9mSDdyOef1krPqbBgqq0m0Z7zTzrX/jge15W1hoF Ms99BFxKsCJMognFxo5s13BlCnnr84/91bJkfrT5ABM3nSGdJbhamOBgYDp+R+K8 Lu2RzDGBII4KiF/ptw1E/UFDEiL8KBD3r0ahpjoXFBoZ95QOJpsqKjMZYx91RkZ/ 6Fg8kg/QWV+v5dgKczB3CbVSdPbBqvjzjc2dERVo6uQI0kgckhP/HyrqMHcGrs9v 6weNpzy4+lQrDBv9dBP2fsVwY7lVDGAtDQlzwNMKrDouvZo/DPrShEoZJL5cXqRI rgb/mWOG4kwxM1WRM+30w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefiedgudekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 30 Dec 2023 18:58:58 -0500 (EST) Message-ID: <2ee5f84b-868e-4f7c-9c82-58234c4677a1@gutov.dev> Date: Sun, 31 Dec 2023 01:58:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 01:25, Stefan Kangas wrote: > Dmitry Gutov writes: > >> On 30/12/2023 22:31, Stefan Kangas wrote: >> >>> Would it be helpful to put that explanation in the .dir-locals.el file >>> itself? >> >> .dir-locals.el already usually hosts per-project settings. And most >> users of this feature probably aren't going to read Emacs's one. > > I was mostly thinking about us poor Emacs maintainers, but either way is > fine by me. Speaking of maintainers, I'm curious if I'll ever see the day when 'make tags' outputs "Use 'M-x etags-regen-mode' instead" ;-) >> Yeah, it's hardly an innovation, more like in the "why don't we have >> this yet" department. But while automatic indexing has been around for a >> while, having it OOtB in lightweight editors wasn't commonplace. So as I >> recall it for ST3 (first beta in 2013, release in 2017) it was a >> meaningful step forward. The complex IDEs already had this for a long >> time, of course (but each was more specialized, and worked with a >> smaller number of languages). > > OK, that's interesting, as far as text editor history goes. > > Still, I'm hesitant to give them too much acknowledgement for what > basically amounts to no longer being among the worst in class. As you > say, IDEs have already been doing this type of thing for a long time. > Sublime Text is non-free software too, which doesn't do much to make me > happier about mentioning their name. GNU software has a long history of taking inspiration from non-free software, though. > But if you think it's a useful piece of history, then by all means let's > keep it. Perhaps it could be moved to a separate history section rather > than the introductory paragraph, though? It's your call. Nah, let's keep your alternative. I might mention it somewhere later, e.g. in a blog post. >>> Indeed, the possible confusion with eglot could bear some documenting. >>> Perhaps we should add a new paragraph to the commentary explaining how >>> this feature will (or will not) interact with Eglot. >> >> Suggestions welcome. I'm not sure how to phrase that without mentioning >> etags, tags files, and xref backends (in general and the names of >> specific ones). > > The most pressing thing to explain, I think, is what happens if you run > both this mode and eglot. Users will want to run the global mode but > still use eglot for some projects. Or lsp-mode, or cider, or a bunch of other Xref and completion backends that are still around but are less popular than LSP. Oh BTW elisp-mode will also continue to use its own backends, unaffected by etags-regen-mode (unless xref-etags-mode is on), even if we decide to mention only the built-in solutions. > I don't really have a concrete suggestion, as I don't have a clear idea > of how it works. :-) But I think eglot will just take over and the > etags stuff will be ignored, no? In Eglot-managed buffers -- yes. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 19:03:32 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 00:03:32 +0000 Received: from localhost ([127.0.0.1]:45310 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJjIh-00084e-S2 for submit@debbugs.gnu.org; Sat, 30 Dec 2023 19:03:32 -0500 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:57423) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJjIf-00084M-UP for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 19:03:30 -0500 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-5559bb6b29dso2419311a12.2 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 16:03:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703981002; x=1704585802; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=7AUAUG3z02TYkoylieQmASJDvxxJfhXFbeEHvywWoa8=; b=bBIFZ//DJtPYZMbeJHu+KtM6P1Gxs8a5KbBu4jtMiePOGVX6tCkMf0ijfYgJzd1jZP WHQb0iP+yTShRJnbUaY2P19X4+DyxiL7oBYeWmIN2aarDQMxf+BOdjd7MziLzDMpeBn8 psGIbcsyX5ONfm8dEfzmu90gcvutO5ilZiWZsArMdFbxFUpFlYpgj5zzQPl7yva57Enf MOK/kDuci85dDqMBccgNOMQWTfpZd4YwuYjrZ2EfHTzF3hktIsB/ilJ9Ail7TN0ZOT1k S+G3wQtpzPp42Q/WuTAGB/92cQSgk2AFSEALVx/u4WV+8Yb+bjXbJEthI05jj8dOWAlL CtlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703981002; x=1704585802; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7AUAUG3z02TYkoylieQmASJDvxxJfhXFbeEHvywWoa8=; b=u13j2TB2jS36MrWlt+Bos5gR3iJvFp2Dey0FoCZxCTIW7XesGaS4u23f/P6HraZzDh rJsegeyJB6suZLghkq9kljoI4k5gDl1A7m/dQCF1H4xeMjCUC45/n0ewN2U3K+++24AU ZSE3pcxIrNbvYYd7eXTWdWtY2G5aG6apuCBirdwNi8ZDjvCrNYLsg5xJKFlBiUdWTYU9 /Fqxr12I6+XiXEVQAfHDbiXcRp1u5pluY70ver4eMfr8Oct43Ubh3Sw2hpcyVz9RQMGG d4XcDo1kJht5wUPLwasLThILFkRLgWEfrj5bCzTQRLsy53Wj5weB5u8W+HdSh+zu5Jue FOvA== X-Gm-Message-State: AOJu0Yxr0asoaVyMyqRsYJC91XkATCmz72zP6FY3EgsD1rz48JtQ4sV+ zD/BFrLaCD0PBaenROhY/IMwMwHaCLT8QLhFItYAVKqC4sI= X-Google-Smtp-Source: AGHT+IFQ7Qy5wdfCzJcTLjQM6QBoreL9dctip1GjbXIZcrt4S0P/tigfEqnBh1M21JYuX+9PBuJKIM4UOU9tN4g2D2c= X-Received: by 2002:a50:bb03:0:b0:540:4c04:ab94 with SMTP id y3-20020a50bb03000000b005404c04ab94mr7602566ede.42.1703981002323; Sat, 30 Dec 2023 16:03:22 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 16:03:22 -0800 From: Stefan Kangas In-Reply-To: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 16:03:22 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, Michael Albinus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: > What if we call them "Automatic Tags Table" and "Manual Tags Table"? Much better, yes. > Or "Creating Tags Table Automatically" and "Creating Tags Table > Manually"? Also better, but perhaps a bit long? I think we try to keep node names relatively short (IIUC, because the layout in `M-x info' doesn't play well with long names). From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 30 20:02:47 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 01:02:47 +0000 Received: from localhost ([127.0.0.1]:45336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJkE2-00034b-R8 for submit@debbugs.gnu.org; Sat, 30 Dec 2023 20:02:47 -0500 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:42277) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJkDy-00034M-UT for 67687@debbugs.gnu.org; Sat, 30 Dec 2023 20:02:45 -0500 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5559df64497so3783105a12.1 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 17:02:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703984556; x=1704589356; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=XwOu1prVybvb9Vu1/hpee4JtoQY1EFvf7fgvYBFDSco=; b=g3Y5lW57utut4Y/pwaHgq1K3uq7xN07m6fh8J57Lp0Q2GefZ2iDy6ykv+eGh1+sv7Z oCnlMdF4EXc7cpxRIztlQhU/K7kMN+Cq3YWuEcC+VFB933zZv+Hfd+NQkk8ZcDepLlMD WGmHQgkZvM6Vhq1mYz7QZuSdcyhyJYdd0JYBpcpxBOxceOHjtpfzEkhXbBRL5NLm4VAQ 6V0vQedCYj2oKoinHnvQUiNDLlfVs9WzV9FfHi3z+6HrAW9Ju4FYjfmHhaDT+b2e/V1r ouYiWjRdHkzPUjccD07fffxZxFnTJIb2ehRsLIN8OhVnEs2pAZdHVa8L0I4gjbFBtk7B n7zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703984556; x=1704589356; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XwOu1prVybvb9Vu1/hpee4JtoQY1EFvf7fgvYBFDSco=; b=jNNM/ViWfkhm+xooRwj0fAUfCpDDIreJ3YmYBWXaXEvgqdXLPJ17LtHBQEhU+AzlJJ uA+Y7Tl8wyQjQw12ZR1cMD2BTfRRzQbkOq2eENT/J90UI8VEiy3xzDOAp5mJONzmpT4O ZXR/mIwyjPZF4HFRHneSD8kNanYAbaY+2EYFCeKLxxN2ZPfBzWYQGIL0Yg/8Fe8OPmyb QYZL+jTSby+1+WP+3FKodFAO1Ksa/4tZZygYk+JDlzoSENIwMURiSBuhv1bkgu4Rgb+c gTK7VRK7yU/EPIM1uW+ZGohye85lXGdBvtsP0jFlmlycytF0849LTd7BxIPi4W1+m/Vf zaEg== X-Gm-Message-State: AOJu0YyScDLDl3ba+HpVI1RCtvHQpPso9WEnntsUf0IYw6KpwdUo+CvU o0uqm+EqCOFpLmEAlfLB+tOCFTS4oEm+mUkHmMk= X-Google-Smtp-Source: AGHT+IFI6lJpWtD3JYAcLUV+6hTHYnD0Zf7ChWDu/gF8YZIFYLRnTrBmUrm1S2/fiEN0f49amQYnUXFQNioZ25vdW/E= X-Received: by 2002:a50:8a94:0:b0:554:25b6:8fc with SMTP id j20-20020a508a94000000b0055425b608fcmr12674729edj.31.1703984555918; Sat, 30 Dec 2023 17:02:35 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 17:02:35 -0800 From: Stefan Kangas In-Reply-To: <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 17:02:35 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) My review below. I wasn't paying attention to the full discussion, so please just ignore any points that you have already discussed with Eli. Dmitry Gutov writes: > diff --git a/etc/NEWS b/etc/NEWS > index f82564946b7..6d6bca187de 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -1243,6 +1243,11 @@ the needs of users with red-green or blue-yellow c= olor deficiency. > The Info manual "(modus-themes) Top" describes the details and > showcases all their customization options. > > +** New global minor mode 'etags-regen-mode'. > +This minor mode generates the tags table automatically based on the > +current project configuration, and later updates it as you edit the > +files and save the changes. Consider referring to the relevant section in the info manual. > + > =0C > * Incompatible Lisp Changes in Emacs 30.1 > > diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.e= l > new file mode 100644 > index 00000000000..e1fca1c4e44 > --- /dev/null > +++ b/lisp/progmodes/etags-regen.el > @@ -0,0 +1,424 @@ > +;;; etags-regen.el --- Auto-(re)regenerating tags -*- lexical-binding: = t -*- > + > +;; Copyright (C) 2021-2023 Free Software Foundation, Inc. > + > +;; Author: Dmitry Gutov > +;; Keywords: tools > + > +;; 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: > + > +;; Simple automatic tags generation with updates on save. > +;; > +;; This mode provides automatic indexing for Emacs "go to definition" > +;; feature, the `xref-go-forward' command (bound to `M-.' by default). > +;; > +;; At the moment reindexing works off before/after-save-hook, but to > +;; handle more complex changes (for example, the user switching to > +;; another branch from the terminal) we can look into plugging into > +;; something like `filenotify'. > +;; > +;; Note that this feature disables itself if the user has some tags > +;; table already visited (with `M-x visit-tags-table', or through an > +;; explicit prompt triggered by some feature that requires tags). > + > +;;; Code: > + > +(require 'cl-lib) > + > +(defgroup etags-regen nil > + "Auto-(re)generating tags." > + :group 'tools) How about: "Auto-generate \"tags\" file." > + > +(defvar etags-regen--tags-file nil) > +(defvar etags-regen--tags-root nil) > +(defvar etags-regen--new-file nil) > + > +(declare-function project-root "project") > +(declare-function project-files "project") > +(declare-function dired-glob-regexp "dired") > + > +(defcustom etags-regen-program (executable-find "etags") > + "Name of the etags program used by `etags-regen-mode'. > + > +If you only have `ctags' installed, you can also set this to > +\"ctags -e\". Some features might not be supported this way." > + ;; Always having our 'etags' here would be easier, but we can't > + ;; always rely on it being installed. So it might be ctags's etags. > + :type 'file > + :version "30.1") > + > +(defcustom etags-regen-tags-file "TAGS" > + "Name of the tags file to create inside the project by `etags-regen-mo= de'. > + > +The value should either be a simple file name (no directory > +specified), or a function that accepts the project root directory > +and returns a distinct absolute file name for its tags file. The > +latter possibility is useful when you prefer to store the tag > +files somewhere else, for example in `temporary-file-directory'." > + :type '(choice (string :tag "File name") > + (function :tag "Function that returns file name")) > + :version "30.1") Did you consider making it always store the TAGS files somewhere in `temporary-file-directory'? They should be rather ephemereal in any case, I think? In that case, we could perhaps even ignore an existing TAGS file, if this mode is enabled. Perhaps as an option. > + > +(defcustom etags-regen-program-options nil > + "List of additional options for etags program invoked by `etags-regen-= mode'." > + :type '(repeat string) > + :version "30.1") Perhaps add: See the full list of options that `etags' accepts in Info node `(emacs) Create Tags Table'. Should this be marked unsafe? Actually, same question for all of the above defcustoms, given that we use `shell-command-to-string'. Speaking of which, should we have more `shell-quote-argument' below? I didn't look at every example, but maybe you did. > + > +(defcustom etags-regen-regexp-alist nil > + "Mapping of languages to etags regexps for `etags-regen-mode'. > + > +These regexps are used in addition to the tags made with the > +standard parsing based on the language. > + > +The value must be a list of conses (LANGUAGES . TAG-REGEXPS) > +where both car and cdr are lists of strings. I think that should better be: where both LANGUAGES and TAG-REGEXPS are lists of strings. I'm not sure we should say "conses" there, or should we? I think we usually prefer something like: The value is a list where each element has the form (LANGUAGES . TAG-REGEXPS) I think this is better because it sounds less foreign to random users with no background in ELisp. But Eli is much better than me at this. :-) > + > +Each language should be one of the recognized by etags, see > +`etags --help'. Each tag regexp should be a string in the format > +as documented for the `--regex' arguments (without `{language}'). ^^ Nit, but I think "as" could be scratched. > + > +We currently support only Emacs's etags program with this option." > + :type '(repeat > + (cons > + :tag "Languages group" > + (repeat (string :tag "Language name")) > + (repeat (string :tag "Tag Regexp")))) > + :version "30.1") > + > +;;;###autoload > +(put 'etags-regen-regexp-alist 'safe-local-variable > + (lambda (value) > + (and (listp value) > + (seq-every-p > + (lambda (group) > + (and (consp group) > + (listp (car group)) > + (listp (cdr group)) > + (seq-every-p #'stringp (car group)) > + (seq-every-p #'stringp (cdr group)))) > + value)))) > + > +;; We have to list all extensions: etags falls back to Fortran > +;; when it cannot determine the type of the file. (A battle-tested default, if nothing else. ;-) > +;; http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00323.html > +(defcustom etags-regen-file-extensions > + '("rb" "js" "py" "pl" "el" "c" "cpp" "cc" "h" "hh" "hpp" > + "java" "go" "cl" "lisp" "prolog" "php" "erl" "hrl" > + "F" "f" "f90" "for" "cs" "a" "asm" "ads" "adb" "ada") > + "Code file extensions for `etags-regen-mode'. > +File extensions to generate the tags for." > + :type '(repeat (string :tag "File extension")) > + :version "30.1") > + > +;;;###autoload > +(put 'etags-regen-file-extensions 'safe-local-variable > + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > + > +;; FIXME: We don't support root anchoring yet. What is root anchoring? Does it deserve a sentence that explains what it is? > +(defcustom etags-regen-ignores nil > + "Additional ignore rules, in the format of `project-ignores'." > + :type '(repeat > + (string :tag "Glob to ignore")) > + :version "30.1") > + > +;;;###autoload > +(put 'etags-regen-ignores 'safe-local-variable > + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > + > +(defvar etags-regen--errors-buffer-name "*etags-regen-tags-errors*") > + > +(defvar etags-regen--rescan-files-limit 100) > + > +(defun etags-regen--all-mtimes (proj) > + (let ((files (etags-regen--all-files proj)) > + (mtimes (make-hash-table :test 'equal)) > + file-name-handler-alist) > + (dolist (f files) > + (condition-case nil > + (puthash f > + (file-attribute-modification-time > + (file-attributes f)) > + mtimes) > + (file-missing nil))) > + mtimes)) Could we use file notifications for this? Maybe as a future improvement. Other than that, LGTM. Thanks again for working on this. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 01:34:43 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 06:34:43 +0000 Received: from localhost ([127.0.0.1]:45531 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJpPG-0002A1-SU for submit@debbugs.gnu.org; Sun, 31 Dec 2023 01:34:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJpPF-00029p-AS for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 01:34:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJpP8-0003aO-Ln; Sun, 31 Dec 2023 01:34:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TVD/mZpljboxPaoL45k241WVjx0FHt5984tuLVa5mso=; b=kEJcipgxBdWX J/wkhLx7aKY5a8EsRM2sl/a6wfbmAmQ4KuXw4SL97dkLi8CLBDnXTxnTgZmeiFx//L6+LHGnxXfA2 8SsrZFrVGbEAOQL+s/VM91PKFoOo2C1GZesvQCxJnQf2Bp7D6Ro7E/MVsrTkw+vfB/eCUpm26d18l NtEs9x3FSyMdONX3fHbG75hrJ/c02B4Ps42ETXEmb5620LtiKGpm6OjlHoWt0ZSmZVWMXY/siRvV2 ClLA0i2sC8hv8GO4oOFuHfjxJHDMGceSyueDx0/hVYeW84psY0/Yv8hkXdg8ejRTkpX5BWHpGKmky GcFSzZJY8eHum7ZFP8SMPw==; Date: Sun, 31 Dec 2023 08:34:27 +0200 Message-Id: <83v88e3moc.fsf@gnu.org> From: Eli Zaretskii To: Stefan Kangas In-Reply-To: (message from Stefan Kangas on Sat, 30 Dec 2023 12:56:38 -0800) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: dmitry@gutov.dev, eskinjp@gmail.com, michael.albinus@gmx.de, 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Sat, 30 Dec 2023 12:56:38 -0800 > Cc: eskinjp@gmail.com, 67687@debbugs.gnu.org, > Michael Albinus > > @menu > * Tag Syntax:: Tag syntax for various types of code and text files. > -* Create Tags Table:: Creating a tags table with @command{etags}. > +* Update Tags Table:: Creating a tags table automatically. > +* Create Tags Table:: Creating a tags table manually with @command{etags}. > * Etags Regexps:: Create arbitrary tags using regular expressions. > @end menu Please don't change the order of the sections. "Create" should precede "update", since the regen feature is optional. If this order requires some changes in how the text is written, please make those changes, but putting "update" before "create" is illogical. Also, the description of "update" says "create", which is another brow-raising factor. > +@node Update Tags Table > +@subsubsection Keeping Tags Tables up to date > + > + The easiest way to manage tags tables is by enabling > +@code{etags-regen-mode} (@kbd{M-x etags-regen-mode RET}). It is too early to say this, because if we do, people will ask why that mode is not turned on by default. We may turn it on by default some day (and then the text will need to be rearranged or rewritten), but we are not there yet, so let's please not put the cart before the horse, and let's describe etags-regen-mode as what it is: an optional minor mode that was just added, and should yet withstand the test of time before we consider recommending it as _the_ primary MO. > +Note that this feature disables itself if you have already manually > +visited a tags table (with @kbd{M-x visit-tags-table}, or through an > +explicit prompt triggered by some feature that requires tags). This aspect is IMO somewhat problematic. I wasn't aware of it, and now that I read this, I'm not sure it is correct and will meet user expectations. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 02:07:21 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 07:07:21 +0000 Received: from localhost ([127.0.0.1]:45538 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJpuq-00006b-Rn for submit@debbugs.gnu.org; Sun, 31 Dec 2023 02:07:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:45472) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJpuo-00006P-5s for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 02:07:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJpuh-000102-7m; Sun, 31 Dec 2023 02:07:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=yStS81FgoVC3G4cIDaOj3lJ6aasuKhzOb2q6QTdxW8U=; b=MDAiF3eDbBkq TMShk9cz17kjwj3KE+T1N/3gAorhgkr7UfDM5N05zFJcB6yasD9JlxLd4a2PiatQzlZt17W6WW7Yt VEpCwMlPlgJRvmLWiXV+ow2vQvpjGpipq71Ol/K2pV67k13Y3qIfz1XoqTf13zM29T+o7p/ZmVvtg mxro5pDY5bC+dTWzV78eOqc6o5ax8IBIPGO1n4S+XORcm8uUlXKwBWkaqCF0boIP3p3Nm9RLmcqPO E0KqEunz/UJ3WUwPfFJc4gx7ARJ95lM6OrbHcv3wlPtiMEgQ6ewpEuTzDFqe7kT4QZ0+sTWTS7sTC fShHu3w4SmUK5BJIC3sq2A==; Date: Sun, 31 Dec 2023 09:07:03 +0200 Message-Id: <83plym3l60.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> (message from Dmitry Gutov on Sun, 31 Dec 2023 01:43:25 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 31 Dec 2023 01:43:25 +0200 > Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com > From: Dmitry Gutov > > >>>> +;;;###autoload > >>>> +(put 'etags-regen-file-extensions 'safe-local-variable > >>>> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) > >>> > >>> Why not use list-of-strings-p here? > >> > >> Again, that "core ELPA" consideration. We could deploy this feature to a > >> number of released Emacs versions, if we don't introduce such dependencies. > > > > Isn't this covered by the compat package on ELPA? If not, I think it > > should be. > > These forms go into generated autoloads file for each installed package > (*-autoloads.el). I think compat doesn't make list-of-string-p > autoloaded, and autoloads files don't usually have (require ...) forms. > > So while I haven't really tested this and could be missing something, it > seems brittle to rely on 'compat' for this function (if at all possible). It is also extremely ugly to have those large functions in a bundled package, when we already have list-of-strings-p in Emacs 29. So how about defining list-of-strings-p in etags-regen for older versions, and then using it in the safe-local-variable property? Or some other solution to make this more elegant. Wanting to let users use this with older Emacsen has its limits, and IMNSHO this one crosses that limit. > Latest revision attached. Any further comments? None from me, thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 02:23:03 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 07:23:03 +0000 Received: from localhost ([127.0.0.1]:45558 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJqA2-00035f-Um for submit@debbugs.gnu.org; Sun, 31 Dec 2023 02:23:03 -0500 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]:49630) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJq9x-000358-Q3 for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 02:23:01 -0500 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-555f95cc2e4so871228a12.3 for <67687@debbugs.gnu.org>; Sat, 30 Dec 2023 23:22:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704007371; x=1704612171; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=IKJrHFjOg6LxL5ivumh04gsokHcOf5xkwG9Flx4W8DI=; b=BLM4tYyQD/eeM1xmVncXJMg3t3JLSFp7JIExgB/hG7R0Kzy6JTUvyJ+GYIEWGv9u28 KrutfOa5d4SUfSEWpv2Xj82fJsGAdSZhR4l5svsaXg2hgpOAaqe7QQOTqDwNXB89q5Q9 tY3YdkUJaVrI7wpRCfo5SbfnZaKGMOxchaE809JlSOm6Vm5lfwvugQ+uIQeRfjgEqD+d hee4vXiIePfk4T++4qjtH+plAFj7KGiLWdR9ctFWuCTWfZ5TGvptuWkvZMpieEBRJUgv advDLjwR++iybD+uzSxUx04C2NhMYgckB67EtAEyx/Wjue1KKEPq783H0krrvrm0aeu5 Qctw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704007371; x=1704612171; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IKJrHFjOg6LxL5ivumh04gsokHcOf5xkwG9Flx4W8DI=; b=j89ji84AQW19XuqRP7tz7ntb7Q3b2BFl1eozSUfAS7xnrQ1bbbMU9B/1f5zJfQhzo9 7RMk08gwoyeY20WyO9KROB8oAdm0e35jkf9YbSbWE/6dBBjUsSGrN/SeI9I0hLZbzWHK YEmrEZzksIE6GX+0MUsakvuVO2Q9DNv5oJd9Uv44fhm5zDv9CUhjqwIGxbjuP08N1HTQ QbhJKpquH0BU08W8R2CcKOCHNL58mO02eD7TATdJ2phX9KL/3vlYh4OEqyWWbHTQNRep Ye21P1i+TJxs+P4+yC1hCpKjMLxCiDjd1u5eZm3MVZ4uq7e1PX4Va7ER4pJo2LlSy1L2 SpFg== X-Gm-Message-State: AOJu0YxUNiCzbtcG6P0nWAayGv1ooctG6i9GWYLUKJP+BknPxiMAYAgy rrforlF9y6JZs6F1PVZvCt51XroxKLhSYKju3wE= X-Google-Smtp-Source: AGHT+IH1AjdBP/04RFI5dElRaBkZDCmHe7+kNvt2KygkrOtZzSJlpomah7t25bWT2zRaTP64f9blJcg1AS1LdqPPbQQ= X-Received: by 2002:a50:9556:0:b0:554:8b8c:4ce2 with SMTP id v22-20020a509556000000b005548b8c4ce2mr7880540eda.63.1704007370608; Sat, 30 Dec 2023 23:22:50 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Dec 2023 23:22:49 -0800 From: Stefan Kangas In-Reply-To: <83v88e3moc.fsf@gnu.org> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> MIME-Version: 1.0 Date: Sat, 30 Dec 2023 23:22:49 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: dmitry@gutov.dev, eskinjp@gmail.com, michael.albinus@gmx.de, 67687@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> @menu >> * Tag Syntax:: Tag syntax for various types of code and text files. >> -* Create Tags Table:: Creating a tags table with @command{etags}. >> +* Update Tags Table:: Creating a tags table automatically. >> +* Create Tags Table:: Creating a tags table manually with @command{etags}. >> * Etags Regexps:: Create arbitrary tags using regular expressions. >> @end menu > > Please don't change the order of the sections. "Create" should > precede "update", since the regen feature is optional. If this order > requires some changes in how the text is written, please make those > changes, but putting "update" before "create" is illogical. Also, the > description of "update" says "create", which is another brow-raising > factor. Nothing was moved, I think? This sections is new. :-) I have no real opinion on the best order; Dmitriy's renamed node name is "automatic tags table", which could come before or after "manual". However, as you point out below, the feature is new and perhaps shouldn't be mentioned first for that reason. > It is too early to say this, because if we do, people will ask why > that mode is not turned on by default. We may turn it on by default > some day (and then the text will need to be rearranged or rewritten), > but we are not there yet, so let's please not put the cart before the > horse, and let's describe etags-regen-mode as what it is: an optional > minor mode that was just added, and should yet withstand the test of > time before we consider recommending it as _the_ primary MO. Makes sense, yes. Note that my proposed text was written very quickly, and intended more like a starting point for the structure than anything else. (It also doesn't document any user options, etc.) From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 02:23:27 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 07:23:27 +0000 Received: from localhost ([127.0.0.1]:45562 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJqAR-00036c-AN for submit@debbugs.gnu.org; Sun, 31 Dec 2023 02:23:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJqAP-00036L-MI for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 02:23:26 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJqAJ-0003Rj-6b; Sun, 31 Dec 2023 02:23:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=xVpMrlPWaar73arP8XiXIqrfSvR6p7/Pqdt4d1SHnyc=; b=HpKlFIbogeqQ jAt56mr2Kh5ePRyJuYkoc27GC/OlX6kx6bAItrdBl0SU38JSqFAYDpc3VC8fMcEw9aSbclM0aMJXm xGKlpfqI5yheJ3dxZvalGP2cyEYHYz4wTEFFjsOOKortDk+snVDssVPTBqite1hbIs3hqv2Q6bOgV R9dOFbn6TaWNsCyGYxtZ/UncwvCoV8hFjHaRX2uE42yL9vs0Gp+y5Lg7rXko0Dpx4dbPvOi2/x9d4 9xOrCdMLKCfxtfoa3QnerfK7DBsFsJl6N7gS3wg/Yh2U5SYIShZXLAWfZIqa5S5YZoD1LtOIucfwF d7bToWPqWCT/9BdCegC6Fw==; Date: Sun, 31 Dec 2023 09:23:12 +0200 Message-Id: <83jzou3kf3.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <2ee5f84b-868e-4f7c-9c82-58234c4677a1@gutov.dev> (message from Dmitry Gutov on Sun, 31 Dec 2023 01:58:55 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> <2ee5f84b-868e-4f7c-9c82-58234c4677a1@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 31 Dec 2023 01:58:55 +0200 > Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com > From: Dmitry Gutov > > On 31/12/2023 01:25, Stefan Kangas wrote: > > Dmitry Gutov writes: > > > >> On 30/12/2023 22:31, Stefan Kangas wrote: > >> > >>> Would it be helpful to put that explanation in the .dir-locals.el file > >>> itself? > >> > >> .dir-locals.el already usually hosts per-project settings. And most > >> users of this feature probably aren't going to read Emacs's one. > > > > I was mostly thinking about us poor Emacs maintainers, but either way is > > fine by me. > > Speaking of maintainers, I'm curious if I'll ever see the day when 'make > tags' outputs "Use 'M-x etags-regen-mode' instead" ;-) I don't yet see why we'd need that. As one data point, my TAGS files in the Emacs repository were generated in Feb 2023, and I still use them almost every day without any visible problems. And for Lisp code, M-. doesn't use TAGS by default anyway. Unlike "indexing" in other IDEs, the Emacs tags commands are well equipped to cope with changes in sources, and don't fail catastrophically when there are such changes, as long as functions and variables don't move between files. The auto-regen mode might be needed for some projects where source files change significantly at high pace, but not in Emacs, at least not IME. So whether this mode should be turned on by default is something that is yet to be seen. Let's not hurry and make decisions in haste, certainly not wrt the use of this as part of Emacs maintenance. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 10:21:51 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 15:21:51 +0000 Received: from localhost ([127.0.0.1]:46777 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxdP-0007HD-5e for submit@debbugs.gnu.org; Sun, 31 Dec 2023 10:21:51 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:51499) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxdN-0007H0-5J for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 10:21:49 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id C61D05C0075; Sun, 31 Dec 2023 10:21:42 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 31 Dec 2023 10:21:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704036102; x=1704122502; bh=Kq2k3m771+WR8AodAcDIj/prfevbtr14eu1AbYYC8z0=; b= EuK16hzHc85FDRgrCWOYf5HmZfnTeTlOc3V1ZYk8YNA7gSHIq7fCgd8ASILH8rrZ 8L9Me5lCvdkKB6vSEzQEj76Z2d99gmGlu8ierdKCFBQY8vXezRN7IsX7KSWw6+Ea cYqa3VPtyvIgPjE1NytrTNqUYI54jfzexI81YEMxwuE6/kGq8xFsKyj4E6VrPVax 617409ZaJeIzW8zo+FO/zz+ZBf2/46dXTATiKdS2ZYqmYDVoK52iUPbcpLXp7akh OSMvJpKfmcME95OgVvHycwEsV+qRNLZjQnbU6wuhKVMg+JJ3xZt4ZNutlr4pIoCf CVo7krlgeJQ+4DgCo3Jlow== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704036102; x= 1704122502; bh=Kq2k3m771+WR8AodAcDIj/prfevbtr14eu1AbYYC8z0=; b=8 doq1D15Q/GydIcI+O8zak5iOx/RD7CIcxvubD7HAzlVFOTUylY9ZUzH5CYbFUrJb RiIRuIbMkEDE2a2w7EyCdx/mx+Kv6arnh30wtJ8cFd5pA2V2mBFIhj1Lz4aSqHGV V/X4kSaHTWjo1AerhhaBbj9feqm8uCsihhKnAN1/aDZQPzGzLFUnEsQd22LP8QwE IqTtA+QAaGCrC1UsN1Wv4u2DKE069oZ1GLqt7DyAj+drGWseoPU8bbDyRC2xgC+2 5bZzrmJjOS3QegKPsaoFXbajjinxEyI/Oa77PmnQPUbeqAwr9cpJiDve7chHaQQU +1xm3j+BeIpzm1UAwAarQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefkedghedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 10:21:41 -0500 (EST) Message-ID: <8372abc4-c9d4-4eb4-8c74-460d11443aff@gutov.dev> Date: Sun, 31 Dec 2023 17:21:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> <83plym3l60.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83plym3l60.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 09:07, Eli Zaretskii wrote: >> Date: Sun, 31 Dec 2023 01:43:25 +0200 >> Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com >> From: Dmitry Gutov >> >>>>>> +;;;###autoload >>>>>> +(put 'etags-regen-file-extensions 'safe-local-variable >>>>>> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) >>>>> >>>>> Why not use list-of-strings-p here? >>>> >>>> Again, that "core ELPA" consideration. We could deploy this feature to a >>>> number of released Emacs versions, if we don't introduce such dependencies. >>> >>> Isn't this covered by the compat package on ELPA? If not, I think it >>> should be. >> >> These forms go into generated autoloads file for each installed package >> (*-autoloads.el). I think compat doesn't make list-of-string-p >> autoloaded, and autoloads files don't usually have (require ...) forms. >> >> So while I haven't really tested this and could be missing something, it >> seems brittle to rely on 'compat' for this function (if at all possible). > > It is also extremely ugly to have those large functions in a bundled > package, when we already have list-of-strings-p in Emacs 29. So how > about defining list-of-strings-p in etags-regen for older versions, > and then using it in the safe-local-variable property? Even that wouldn't work, I think, for the same reason: the autoloads file doesn't load the related package eagerly. Though I suppose we could force one specific function definition into autoloads. > Or some other > solution to make this more elegant. Wanting to let users use this > with older Emacsen has its limits, and IMNSHO this one crosses that > limit. We already do this in project.el for one variable, too. If you like, we could simplify the forms further, though, dropping the string-match-p checks. Forms for etags-regen-file-extensions and etags-regen-ignores would look like the one for project-vc-extra-root-markers. The form for etags-regen-lang-regexp-alist is not a lists-of-string-p to begin with, so it will be more complex (it's "alist of lists of strings"). From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 10:22:49 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 15:22:49 +0000 Received: from localhost ([127.0.0.1]:46782 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxeK-0007Il-LK for submit@debbugs.gnu.org; Sun, 31 Dec 2023 10:22:49 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:34247) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxeJ-0007IY-G3 for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 10:22:48 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 17F5C5C0076; Sun, 31 Dec 2023 10:22:41 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sun, 31 Dec 2023 10:22:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704036161; x=1704122561; bh=pfZu1KLGMRKMS8lt8RzS/ZWOpT8fxhXonBtqaT2GoEE=; b= f1O9OOi9EZ7iUxKF7vF49oB+f9hTzsl+GcM9SZB3LyqCiNqUlQToFlczU4a2NPy6 YE2s9JzaVajtf5D1wExM76moSctzeYerWRS3wD74meRVaLOj1a9QJh/4Ghx2xCua 1jYnMvGUrh2cCZer4SGGWKz7zSoa/BdHMLRXH3GNR3iDFWX59PVZDcv5fJf7bB3J nbeJZ66px+y/DsT51Fi7rIVUxcuWqylZ3/rDStv0HM3WmmkQVshLabsAFR+BMT/x tuL4trIhrc/y7QZwqV0QMGGpaQEZWlNvpzvHnXnooZ7f5ghJKtDbYwY9c8HD6Z1v xQuumIgqjl1Rfcv4B3cO4A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704036161; x= 1704122561; bh=pfZu1KLGMRKMS8lt8RzS/ZWOpT8fxhXonBtqaT2GoEE=; b=c rbT7WLaqANxw083epHNVjeO0y6vCcz9MZZ5cHxAYLUNWWDBJ+RunndWOVq5K6fNB vTg0K9/9gniddsok+jJbhW5q2fyzOxLG0sd265JT23l7X+Vs/m1BgApBlkjt2/2T SPnSnGzT/3JjHYALAc5WQMImXlyrqkH6sMZ9Zj0XlXQOxkzGg+Vkwdy2Vy94mEoR niDoYX4r0dVW+/6EiXKdMH+pFzccOrF7DK7ucgHgOpkf7W1WKqb7Bpl0WCqx96xY etRsqnZO2AYqWY82MicrKZ6badqmnwjdA5NbX2l+4RLBNjSrq3xBPnBolPgNe3/o JcpiGL2vu3TCu5IwizIYA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefkedghedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepgeelfeetkefghfdvhfdtgeevveevteetgeetveegtedthefhudekteehffeu keeknecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 10:22:39 -0500 (EST) Message-ID: <3a0ee290-6519-4eb0-a922-67f562ce02b4@gutov.dev> Date: Sun, 31 Dec 2023 17:22:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 09:22, Stefan Kangas wrote: > Eli Zaretskii writes: > >>> @menu >>> * Tag Syntax:: Tag syntax for various types of code and text files. >>> -* Create Tags Table:: Creating a tags table with @command{etags}. >>> +* Update Tags Table:: Creating a tags table automatically. >>> +* Create Tags Table:: Creating a tags table manually with @command{etags}. >>> * Etags Regexps:: Create arbitrary tags using regular expressions. >>> @end menu >> Please don't change the order of the sections. "Create" should >> precede "update", since the regen feature is optional. If this order >> requires some changes in how the text is written, please make those >> changes, but putting "update" before "create" is illogical. Also, the >> description of "update" says "create", which is another brow-raising >> factor. > Nothing was moved, I think? This sections is new. 🙂 > > I have no real opinion on the best order; Dmitriy's renamed node name is > "automatic tags table", which could come before or after "manual". > > However, as you point out below, the feature is new and perhaps > shouldn't be mentioned first for that reason. I'm happy to leave all the manual-related decisions to you guys. If it shouldn't be in the manual initially -- no objections from me. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 10:25:46 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 15:25:46 +0000 Received: from localhost ([127.0.0.1]:46788 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxhC-0007NT-FK for submit@debbugs.gnu.org; Sun, 31 Dec 2023 10:25:46 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:48501) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxhA-0007NG-Pu for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 10:25:45 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 6D7935C0076; Sun, 31 Dec 2023 10:25:38 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 31 Dec 2023 10:25:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704036338; x=1704122738; bh=PfsbOw+472T6n+YpL4H9rcmQrvxz6m8OYNpjQ4+jQ+E=; b= LDK+wDYKRWYsLup33ddhHsiEfWD8jtcVdY3oR0HzxmKI+ii3zC/ZbCMkIGBuCDbC ooVhM+OiKKIVzvi9EeMc+n9JKJyKQqTt7C4ohiQZJGDqC5H9fPc9l9e7mGMegPrp lexZwE60nIsWf3YUxC+OS3Pq/haHKZh0xCKRLtIv3UTtgyoOiEOg/aRoAkmS0VUY TwTG92DtYXBE9CxAKvS3dSSqOgYwsmcDvBrCAohjaxBcOphUk5SMVStWoC2oKMS8 2e6Sam0BXDo24yMqLCTi5MZv8e4+nfdb9k7wvX/LODbavDS5zz/PRncHWHtek76r ip3NdUn3kxgoJlW3oyI3mA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704036338; x= 1704122738; bh=PfsbOw+472T6n+YpL4H9rcmQrvxz6m8OYNpjQ4+jQ+E=; b=9 YGN13+H7wb3Zy+gy3y1ZDreg71pjbGXNwuVA5zcA33rtHsrELr7HJKDPcUoObgRD luNeRu11gJQVbmK7Cbd90hXfI9GOlDCQop2jOeu4OfUVp8434lJE/wiSE82Ug4vo GZyEI3KIpoOjXfnuqNJ7HOq8FCNTx+t8/XcX+EmckoFjGYzIamAv+Jabbzt0wD/p sFz3BlNwj6q1LO801b9e1l482aIzKb7HPftjP2zbMoZlEg3UH3BrZg8AQFII6Tko 6vxWefipJ6m7nauAXvOjeW7L+NRRuoWTOU7lOrlLG6xW6suVh3EMtB73UVeOLCx8 /J3IenwBfJC6wNncmP2vg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefkedgheefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 10:25:36 -0500 (EST) Message-ID: Date: Sun, 31 Dec 2023 17:25:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii , Stefan Kangas References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83v88e3moc.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 08:34, Eli Zaretskii wrote: >> +Note that this feature disables itself if you have already manually >> +visited a tags table (with @kbd{M-x visit-tags-table}, or through an >> +explicit prompt triggered by some feature that requires tags). > This aspect is IMO somewhat problematic. I wasn't aware of it, and > now that I read this, I'm not sure it is correct and will meet user > expectations. I'm pretty sure you asked for it: that even when this mode is on, it shouldn't interfere with completion tables explicitly visited by the user. And either way it seems like a prerequisite for enabling etags-regen-mode by default sometimes in the future. Unless we decide to deprecate 'M-x visit-tags-table' at the same time. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 10:31:29 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 15:31:30 +0000 Received: from localhost ([127.0.0.1]:46795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxmj-0001cF-7I for submit@debbugs.gnu.org; Sun, 31 Dec 2023 10:31:29 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:39165) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJxmh-0001Vq-3e for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 10:31:27 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id BA41E5C00C4; Sun, 31 Dec 2023 10:31:20 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sun, 31 Dec 2023 10:31:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704036680; x=1704123080; bh=8r7sEGdIqPYSLaVWDjSGsuY+Tu+KuwJb8cb5y+aiBw8=; b= VEeufYeUuNXMH4N1C8Can49tAvsTVHHLwhEkeIDCtOQzJX1jqxcVEdv5Vbs7i26d ufvIpGYw2rwv5dSQs1j5cW1zsmTJ0wxWbKaSpxzAWfGgMqS/LHqOjzQAtRVIaZYH VbxWgNykwFCPounUkhtDQ9TT6zoF8OqCVUtLTz0+i4zLKxmTgRTLcgXDrOmCywoH FfKoBYz0wzQ2l4wSkJCCNQtcinWNpa5laLNS9Qzxq7hYaJfFTeVeG7uXjjswNvSk NBWTCcWtQqDeowF8drTc4wVpMAn+xO8ca5eNasvZIJtgA2sL/T3JKh5AQiEA7gUy d0G1IwXqSxzEpJkQzeEi7w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704036680; x= 1704123080; bh=8r7sEGdIqPYSLaVWDjSGsuY+Tu+KuwJb8cb5y+aiBw8=; b=D gh4rz88aMHU1Xn8zqKPRxEtRsoGATrEtUWmeWIPBMvE4fE9qDviQsIHpxLmrQF+F bEeYDchqYOYJ3u5+okTanBmW3XsaYpe2bp1HNOVn2m7ZU38+OYqvFUOTbewulxTx z7sAZNH3Y/Z4iqxRzir8jKL2QDcJvzyafJXuFugoFb6sQLMy0PrIrsHcz9tDoCPh B9x66He+gR/s3rM+dAERXmY/wkBeniqxJcUNk6nGTx58oKoCT5vmPwP092aJ+dUq A+0DIuDkRHX5V3dpdsyjloC1ShmXJBsVoFCruN3jXrn0CkmSHyFnyx3gwWMSoDcE qf0yW9bZp4QHB8Y2AmYEQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefkedgheegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 10:31:19 -0500 (EST) Message-ID: <0799e182-55dd-4d01-81c8-352799972703@gutov.dev> Date: Sun, 31 Dec 2023 17:31:17 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <75a55999-72b9-40dd-a1b7-5c272956fc4a@gutov.dev> <2ee5f84b-868e-4f7c-9c82-58234c4677a1@gutov.dev> <83jzou3kf3.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83jzou3kf3.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 09:23, Eli Zaretskii wrote: >> Date: Sun, 31 Dec 2023 01:58:55 +0200 >> Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com >> From: Dmitry Gutov >> >> On 31/12/2023 01:25, Stefan Kangas wrote: >>> Dmitry Gutov writes: >>> >>>> On 30/12/2023 22:31, Stefan Kangas wrote: >>>> >>>>> Would it be helpful to put that explanation in the .dir-locals.el file >>>>> itself? >>>> >>>> .dir-locals.el already usually hosts per-project settings. And most >>>> users of this feature probably aren't going to read Emacs's one. >>> >>> I was mostly thinking about us poor Emacs maintainers, but either way is >>> fine by me. >> >> Speaking of maintainers, I'm curious if I'll ever see the day when 'make >> tags' outputs "Use 'M-x etags-regen-mode' instead" ;-) > > I don't yet see why we'd need that. There is no hard requirement indeed. > As one data point, my TAGS files > in the Emacs repository were generated in Feb 2023, and I still use > them almost every day without any visible problems. And for Lisp > code, M-. doesn't use TAGS by default anyway. > > Unlike "indexing" in other IDEs, the Emacs tags commands are well > equipped to cope with changes in sources, and don't fail > catastrophically when there are such changes, as long as functions and > variables don't move between files. The auto-regen mode might be > needed for some projects where source files change significantly at > high pace, but not in Emacs, at least not IME. The upside is not having to generate tags to begin with (e.g. for new contributors, or new repository checkouts/worktrees/etc), and not worrying about keeping them updated even when you add or remove a function. No matter how rare, that still happens. There are some downsides too (e.g. some runtime overhead), let's wait and see if those turn out to be noticeable enough. > So whether this mode should be turned on by default is something that > is yet to be seen. Let's not hurry and make decisions in haste, > certainly not wrt the use of this as part of Emacs maintenance. I'm not proposing any haste in that respect. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 11:43:10 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 16:43:10 +0000 Received: from localhost ([127.0.0.1]:46918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJyu6-0005l9-7z for submit@debbugs.gnu.org; Sun, 31 Dec 2023 11:43:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38616) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJyu4-0005kx-Mg for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 11:43:09 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJytx-0002dq-G8; Sun, 31 Dec 2023 11:43:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=I/hYznn+VB/NkqH4UI4tWHkPNEYhkq+n3eFs9I6h9Wg=; b=R556Xy3IMImQ K1oRr97IHCdNk0cSe9KlAYgIIfpAkuEtVw7mKt9RHRx4ZsdtWA+z2RO6IjZ4j7ZTiwPNQtUmVg6il GzWrZJkdfqKmbPEEwgOO5XqSeGYM4WHD19mZiTRcgLR2vOxOSpX9FFD6rf8GAvGDDTsCM8HKDjLkD gNcgrwV9OPRuZCyTb2tUTC7H0bt0OIUD1FUJvekI8njRQ54Hz6vie36BUB/E2camDwDBCXHCnnhga rdvURg7SPkcjqeOpxOMPeeTNR38xSgy6KhpI0ehCTKoRqe+0WU5B1KTD5EnV2U946CjQyejr1wzPO iCo7dIR3glkZad9OcMsjjw==; Date: Sun, 31 Dec 2023 18:42:55 +0200 Message-Id: <835y0e2ui8.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: (message from Dmitry Gutov on Sun, 31 Dec 2023 17:25:35 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 31 Dec 2023 17:25:35 +0200 > Cc: eskinjp@gmail.com, 67687@debbugs.gnu.org, michael.albinus@gmx.de > From: Dmitry Gutov > > On 31/12/2023 08:34, Eli Zaretskii wrote: > >> +Note that this feature disables itself if you have already manually > >> +visited a tags table (with @kbd{M-x visit-tags-table}, or through an > >> +explicit prompt triggered by some feature that requires tags). > > This aspect is IMO somewhat problematic. I wasn't aware of it, and > > now that I read this, I'm not sure it is correct and will meet user > > expectations. > > I'm pretty sure you asked for it: that even when this mode is on, it > shouldn't interfere with completion tables explicitly visited by the user. "Interfere" and "prevent automatic regeneration" is not the same. I think this probably warrants a separate defcustom: some people might want such regeneration, even if the tags table was loaded manually, others won't. And I think the default should be to regenerate them regardless. > And either way it seems like a prerequisite for enabling > etags-regen-mode by default sometimes in the future. How so? The fact that I loaded TAGS doesn't necessarily mean I don't want it updated when the sources change. Or what am I missing? From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 12:53:41 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 17:53:41 +0000 Received: from localhost ([127.0.0.1]:47010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK00L-0003re-3Q for submit@debbugs.gnu.org; Sun, 31 Dec 2023 12:53:41 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:34313) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK00I-0003rP-W7 for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 12:53:39 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 305BE5C019C; Sun, 31 Dec 2023 12:53:32 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sun, 31 Dec 2023 12:53:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704045212; x=1704131612; bh=g1hHqxjQIVkndQguZY6HL91XuqNryUp1aG5Awuh20l8=; b= Y1KzcLTVYCuL2mgXs4UMqxDE36WyHBqn2CaK8RkHJHVZ7oIxZpHCYRPoI4Cp1dSU jJ9VwuqhalOdKsTNmVYUmwG8CeRW9mBKwWQYcIby4Jv3y+fTyCNQ3FEuoNK2ywoP PEltjZkq2y0De59RgrksHI+BXpbrytAb6UYAO5leXAggaNhKIEmTHzwTaqzX9Mmu RnIlO/iWMfqIUTxFC1IXpR1VAY5CbooXmv3XgpeOzX8/3AGKqwhOZkgibYkraB5c x2YTyiKbvHOhrvoi5ka0GN/El/LL8odDj/Bg+Vr44Kz9Nnotl+Cf/p+/mJvhM9Vt 2QthfF+A8ev0GwZ1FmEkYA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704045212; x= 1704131612; bh=g1hHqxjQIVkndQguZY6HL91XuqNryUp1aG5Awuh20l8=; b=Z TH4k3DesDZzB8o8H60Q4HN7muHVbawR9QrOxXLVhvTLugfq7WEzkDQ5eGqyrPJwy 29EXFjkP/4uyvsYOIUZXhOTgXsfuyFHg3PuxpWZ44RsrASNTuU9Tv/MxG8Lzcel+ LdTiEv+ri046HYonuZs8mcvW1E2cgRZvnIOoxXhf83FvwwehkV8oILV9ifpW2w4j nPTOKOsbxgNPikdYImAJ488sWgYx5bLFPOweM3zZOdsn/QU/m+9NiDSEcuyogK3a +pdRTeFZpqpe50siStSYqnhQqXAISkO5DxyRpvD699hwRn2StD51Mvz5QOfeFvBx Gia2VQ4PWScz5qOWK+BfQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefkedgkeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 12:53:30 -0500 (EST) Message-ID: <95132856-65b0-4812-a124-52e0da674330@gutov.dev> Date: Sun, 31 Dec 2023 19:53:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <835y0e2ui8.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 18:42, Eli Zaretskii wrote: >> Date: Sun, 31 Dec 2023 17:25:35 +0200 >> Cc: eskinjp@gmail.com, 67687@debbugs.gnu.org, michael.albinus@gmx.de >> From: Dmitry Gutov >> >> On 31/12/2023 08:34, Eli Zaretskii wrote: >>>> +Note that this feature disables itself if you have already manually >>>> +visited a tags table (with @kbd{M-x visit-tags-table}, or through an >>>> +explicit prompt triggered by some feature that requires tags). >>> This aspect is IMO somewhat problematic. I wasn't aware of it, and >>> now that I read this, I'm not sure it is correct and will meet user >>> expectations. >> >> I'm pretty sure you asked for it: that even when this mode is on, it >> shouldn't interfere with completion tables explicitly visited by the user. > > "Interfere" and "prevent automatic regeneration" is not the same. > > I think this probably warrants a separate defcustom: some people might > want such regeneration, even if the tags table was loaded manually, > others won't. And I think the default should be to regenerate them > regardless. Like mentioned previously, I think we'll get such an option sooner or later, but not in the first check-in. It merits an additional discussion, at least. >> And either way it seems like a prerequisite for enabling >> etags-regen-mode by default sometimes in the future. > > How so? The fact that I loaded TAGS doesn't necessarily mean I don't > want it updated when the sources change. Or what am I missing? a) We won't add new files to the index, because we (apparently) can't simply use the project's list of files -- there is no guarantee that it matches the fileset that the original author of the TAGS file had in mind. b) There is no way to pick up the --regex options used for generating the original TAGS, or any other options we don't know about. So if we were to just use the logic of regenerating tags for newly changed files, we would end up with a mix of tags in some files based on the set of --regex used in the past, and with tags for new files based on the configured set of --regex options. Either way, we get a poorly-defined behavior with edge cases that are likely to surprise the user at different points of time. So we might indeed grow such a capability, but it'll probably stay off by default. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 14:27:19 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 19:27:19 +0000 Received: from localhost ([127.0.0.1]:47044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK1Sx-0004pM-6Y for submit@debbugs.gnu.org; Sun, 31 Dec 2023 14:27:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39450) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK1Su-0004p7-ME for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 14:27:17 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rK1Sn-0001rx-Jv; Sun, 31 Dec 2023 14:27:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=YaU7jwt8W9DbTjuo5PVVjx7Wwq/tuDLZzd8/Zgbmx/0=; b=bd5tPfqV5N22 pwg+6uuVX8K7q7LFRFRpzqmnAIgGUPQjaDkOMQ76XIGUuNE1YfFDTxDwfmzBvjKE2+MdJ9GNEcQJQ bnbQihgZHciTkT9pgxmqL2X+wk+NsI72bxXxI0UJLfQlLWMdNn5pWrht9lQivHWxvfFo8JNIOCF1h 2zTD7LiaSOiEKtRCBWERJuqHDXMw5ZvAPN6vdrlb4TqJYiI2KJPK0Cm3hp2g+hVT49SuJn1sxrcK9 EhoRQ+xPLDxXEMrJCwACM/oYBMgHpBu6qPIQsiPjJYi50AbGuf/cbhpBEY0rowFwbCbo4vUsj+eNv MCBOfEHYm90EHAiJkMIViQ==; Date: Sun, 31 Dec 2023 21:27:03 +0200 Message-Id: <8334vi2mwo.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <95132856-65b0-4812-a124-52e0da674330@gutov.dev> (message from Dmitry Gutov on Sun, 31 Dec 2023 19:53:27 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 31 Dec 2023 19:53:27 +0200 > Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > michael.albinus@gmx.de > From: Dmitry Gutov > > >> And either way it seems like a prerequisite for enabling > >> etags-regen-mode by default sometimes in the future. > > > > How so? The fact that I loaded TAGS doesn't necessarily mean I don't > > want it updated when the sources change. Or what am I missing? > > a) We won't add new files to the index, because we (apparently) can't > simply use the project's list of files -- there is no guarantee that it > matches the fileset that the original author of the TAGS file had in mind. The user has etags-regen-ignores to control that. > b) There is no way to pick up the --regex options used for generating > the original TAGS, or any other options we don't know about. There are defcustoms to control both of those. > Either way, we get a poorly-defined behavior with edge cases that are > likely to surprise the user at different points of time. So we might > indeed grow such a capability, but it'll probably stay off by default. I agree that sometimes it could be against the user's expectations. But I also think that other times it is according to user's expectations. Which tells me that this is a separate issue that needs a separate knob; we shouldn't deterministically deduce what users want in this respect from the fact that he/she loaded an existing tags table. Moreover, it is quite possible that even when the mode is turned on, users might want sometimes to load tags tables manually. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 18:29:44 2023 Received: (at 67687) by debbugs.gnu.org; 31 Dec 2023 23:29:44 +0000 Received: from localhost ([127.0.0.1]:47169 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK5FX-00029J-8s for submit@debbugs.gnu.org; Sun, 31 Dec 2023 18:29:44 -0500 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:38113) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK5FU-000295-MB for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 18:29:42 -0500 Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailout.west.internal (Postfix) with ESMTP id 129033200A25; Sun, 31 Dec 2023 18:29:32 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Sun, 31 Dec 2023 18:29:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1704065372; x=1704151772; bh=bElDxQ5j0b XgOhCm5t3d5dipWiGEejlvzG4taN/tNdc=; b=Qg8c8M+q+BAZO30L9sRLWNUoVe qIsKk45V14+NIDU/dB+NTii7iy6cKgUDnt5/pkCj45XhMV02Qp9Xj0ii41gbdbT/ I1lH00DONQRSk8hEF4HtJmNn9ar9LMLoWeUwotCmltQIual8ESgN5Rj22RXavF8S 3JijRC+ixLY3eIWnGhwSF8BWwK/ATCtNieVtasSE7WUbq8y3ZzF9JxDoLTmKEGh0 Y5FOG2/eYxSb2CXaxDEltiMXJXp15g2R18xw1KhENNQadf4HItOxlqb2+WjPpcsG 4SH3ObThf38Fhzr6rgLzMZ/6fjZRT3b4s/NzYKV5wESTkuE2m4MG2WmQ+ryg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1704065372; x=1704151772; bh=bElDxQ5j0bXgOhCm5t3d5dipWiGE ejlvzG4taN/tNdc=; b=uqZbUiC1ATrl/pPdh67dB7DaC0B8eDtoL8Yjkkxgw9gR XSe1WmvlQL1F2M9QsK9+xfoQ3VK3224i7V6Xew7EUij/6GK63c1pq6AjvRPoW5gj OT0ORmyrpsHq1j7SV67TqDqmDNcqYY5M7aTUEM6XLre2llB47ShTw8PwKiEFxsoN RkygFpT5y9vDs+1Ut9RAGotOpI+yIMxu9hm0TLvQgRM3bHfpRj4wIWPyh7iMgaf1 xGc2L7JHCb53vNS2nxIuNLVq6WhxB9ZEA6FLQJHHeow+/9KSaIBwdjZcNFY6GOT0 ENGqZSzyPvwIZJGiiAd/TrhRYaMOt3pTwAVZISEang== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefledguddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeelkeejiedvffdtgeejvdffffelueelkefhtdekjeehuefgteduheegfefhieek jeenucffohhmrghinhepghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 18:29:30 -0500 (EST) Content-Type: multipart/mixed; boundary="------------c1oUp20z0oKrVKmD4iWXq0F8" Message-ID: <2c7ce860-17cf-4955-8150-5474e36faca0@gutov.dev> Date: Mon, 1 Jan 2024 01:29:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> From: Dmitry Gutov In-Reply-To: X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------c1oUp20z0oKrVKmD4iWXq0F8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 31/12/2023 03:02, Stefan Kangas wrote: > My review below. I wasn't paying attention to the full discussion, so > please just ignore any points that you have already discussed with Eli. Thanks. > Dmitry Gutov writes: > >> diff --git a/etc/NEWS b/etc/NEWS >> index f82564946b7..6d6bca187de 100644 >> --- a/etc/NEWS >> +++ b/etc/NEWS >> @@ -1243,6 +1243,11 @@ the needs of users with red-green or blue-yellow color deficiency. >> The Info manual "(modus-themes) Top" describes the details and >> showcases all their customization options. >> >> +** New global minor mode 'etags-regen-mode'. >> +This minor mode generates the tags table automatically based on the >> +current project configuration, and later updates it as you edit the >> +files and save the changes. > > Consider referring to the relevant section in the info manual. I guess we'll add that reference later when/if we document it in the manual. >> +(require 'cl-lib) >> + >> +(defgroup etags-regen nil >> + "Auto-(re)generating tags." >> + :group 'tools) > > How about: > > "Auto-generate \"tags\" file." Sorry, I don't understand the meaning of the quotes. The file name is TAGS, if we wanted to refer to it. You also dropped the bit in quotes that implies the automatic updates, too. We can say "Auto-(re)generate tags file". Though knowing how the tags are stored might not be that necessary, if the generation and loading/refresh happens automatically. >> +(defcustom etags-regen-tags-file "TAGS" >> + "Name of the tags file to create inside the project by `etags-regen-mode'. >> + >> +The value should either be a simple file name (no directory >> +specified), or a function that accepts the project root directory >> +and returns a distinct absolute file name for its tags file. The >> +latter possibility is useful when you prefer to store the tag >> +files somewhere else, for example in `temporary-file-directory'." >> + :type '(choice (string :tag "File name") >> + (function :tag "Function that returns file name")) >> + :version "30.1") > > Did you consider making it always store the TAGS files somewhere in > `temporary-file-directory'? They should be rather ephemereal in any > case, I think? This was my approach originally, but the downside was always having to generate the tags fully when Emacs is restarted. The current code also refreshes existing tags file when there are not too many changed files to process. Now that etags-regen-tags-file can be a function that returns stable file names corresponding to project root even in /tmp, that feature can still work (until /tmp is cleared). Whether that should be the default, I don't know. Perhaps people will like the easier access to the generated file that the current default allows. > In that case, we could perhaps even ignore an existing TAGS file, if > this mode is enabled. Perhaps as an option. This will happen if no tags file is visited and (funcall etags-regen-tags-file root) returns a different file. >> + >> +(defcustom etags-regen-program-options nil >> + "List of additional options for etags program invoked by `etags-regen-mode'." >> + :type '(repeat string) >> + :version "30.1") > > Perhaps add: > > See the full list of options that `etags' accepts in Info node > `(emacs) Create Tags Table'. > > Should this be marked unsafe? Actually, same question for all of the > above defcustoms, given that we use `shell-command-to-string'. Given that this option doesn't have the 'safe-local-variable' property, do we need to do something else? > Speaking of which, should we have more `shell-quote-argument' below? > I didn't look at every example, but maybe you did. Indeed, the processing of etags-regen-program-options was missing the conversion through shell-quote-argument. In case, for example. someone adds an option with a value that includes a space. >> + >> +(defcustom etags-regen-regexp-alist nil >> + "Mapping of languages to etags regexps for `etags-regen-mode'. >> + >> +These regexps are used in addition to the tags made with the >> +standard parsing based on the language. >> + >> +The value must be a list of conses (LANGUAGES . TAG-REGEXPS) >> +where both car and cdr are lists of strings. > > I think that should better be: > > where both LANGUAGES and TAG-REGEXPS are lists of strings. > > I'm not sure we should say "conses" there, or should we? I think we > usually prefer something like: > > The value is a list where each element has the form > (LANGUAGES . TAG-REGEXPS) > > I think this is better because it sounds less foreign to random users > with no background in ELisp. > > But Eli is much better than me at this. :-) Why not, I've replaced the text with your versions. >> + >> +Each language should be one of the recognized by etags, see >> +`etags --help'. Each tag regexp should be a string in the format >> +as documented for the `--regex' arguments (without `{language}'). > ^^ > > Nit, but I think "as" could be scratched. Ok. >> + >> +We currently support only Emacs's etags program with this option." >> + :type '(repeat >> + (cons >> + :tag "Languages group" >> + (repeat (string :tag "Language name")) >> + (repeat (string :tag "Tag Regexp")))) >> + :version "30.1") >> + >> +;;;###autoload >> +(put 'etags-regen-regexp-alist 'safe-local-variable >> + (lambda (value) >> + (and (listp value) >> + (seq-every-p >> + (lambda (group) >> + (and (consp group) >> + (listp (car group)) >> + (listp (cdr group)) >> + (seq-every-p #'stringp (car group)) >> + (seq-every-p #'stringp (cdr group)))) >> + value)))) >> + >> +;; We have to list all extensions: etags falls back to Fortran >> +;; when it cannot determine the type of the file. > > (A battle-tested default, if nothing else. ;-) I'd rather etags skipped unknown files, but there is no such option. >> +;;;###autoload >> +(put 'etags-regen-file-extensions 'safe-local-variable >> + (lambda (value) (and (listp value) (seq-every-p #'stringp value)))) >> + >> +;; FIXME: We don't support root anchoring yet. > > What is root anchoring? Does it deserve a sentence that explains what > it is? It's the "to root an entry" thing described in the docstring for `project-ignores', which is referenced. >> +(defvar etags-regen--errors-buffer-name "*etags-regen-tags-errors*") >> + >> +(defvar etags-regen--rescan-files-limit 100) >> + >> +(defun etags-regen--all-mtimes (proj) >> + (let ((files (etags-regen--all-files proj)) >> + (mtimes (make-hash-table :test 'equal)) >> + file-name-handler-alist) >> + (dolist (f files) >> + (condition-case nil >> + (puthash f >> + (file-attribute-modification-time >> + (file-attributes f)) >> + mtimes) >> + (file-missing nil))) >> + mtimes)) > > Could we use file notifications for this? Maybe as a future > improvement. File notifications are mentioned in the Commentary. Someday. The thread about expected problems with our filenotify integration was sometime between these two, but I can't find it now :-( https://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00369.html https://lists.gnu.org/archive/html/emacs-devel/2020-12/msg00680.html https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg00428.html Perhaps filenotify-recursively will help (https://lists.gnu.org/archive/html/emacs-devel/2021-08/msg00876.html). > Other than that, LGTM. > > Thanks again for working on this. Thanks! Next revision attached. --------------c1oUp20z0oKrVKmD4iWXq0F8 Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v6.diff" Content-Disposition: attachment; filename="etags-regen-v6.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYmE0MGVmYTJlOWQuLjA5 MjhhZTVhMmRjIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTI3 MCw2ICsxMjcwLDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBjNDM5N2FiYjU2Ci0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MjYg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMS0y MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRy eSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMgb24gc2F2 ZS4KKzs7Cis7OyBUaGlzIG1vZGUgcHJvdmlkZXMgYXV0b21hdGljIGluZGV4aW5nIGZvciBF bWFjcyAiZ28gdG8gZGVmaW5pdGlvbiIKKzs7IGZlYXR1cmUsIHRoZSBgeHJlZi1nby1mb3J3 YXJkJyBjb21tYW5kIChib3VuZCB0byBgTS0uJyBieSBkZWZhdWx0KS4KKzs7Cis7OyBBdCB0 aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhvb2ss IGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChmb3IgZXhhbXBsZSwg dGhlIHVzZXIgc3dpdGNoaW5nIHRvCis7OyBhbm90aGVyIGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvCis7OyBzb21ldGhpbmcgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor KGRlY2xhcmUtZnVuY3Rpb24gZGlyZWQtZ2xvYi1yZWdleHAgImRpcmVkIikKKworKGRlZmN1 c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtIChleGVjdXRhYmxlLWZpbmQgImV0YWdzIikKKyAg Ik5hbWUgb2YgdGhlIGV0YWdzIHByb2dyYW0gdXNlZCBieSBgZXRhZ3MtcmVnZW4tbW9kZScu CisKK0lmIHlvdSBvbmx5IGhhdmUgYGN0YWdzJyBpbnN0YWxsZWQsIHlvdSBjYW4gYWxzbyBz ZXQgdGhpcyB0bworXCJjdGFncyAtZVwiLiAgU29tZSBmZWF0dXJlcyBtaWdodCBub3QgYmUg c3VwcG9ydGVkIHRoaXMgd2F5LiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBo ZXJlIHdvdWxkIGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9u IGl0IGJlaW5nIGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisg IDp0eXBlICdmaWxlCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSBldGFncy1y ZWdlbi10YWdzLWZpbGUgIlRBR1MiCisgICJOYW1lIG9mIHRoZSB0YWdzIGZpbGUgdG8gY3Jl YXRlIGluc2lkZSB0aGUgcHJvamVjdCBieSBgZXRhZ3MtcmVnZW4tbW9kZScuCisKK1RoZSB2 YWx1ZSBzaG91bGQgZWl0aGVyIGJlIGEgc2ltcGxlIGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5 CitzcGVjaWZpZWQpLCBvciBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcHJvamVjdCBy b290IGRpcmVjdG9yeQorYW5kIHJldHVybnMgYSBkaXN0aW5jdCBhYnNvbHV0ZSBmaWxlIG5h bWUgZm9yIGl0cyB0YWdzIGZpbGUuICBUaGUKK2xhdHRlciBwb3NzaWJpbGl0eSBpcyB1c2Vm dWwgd2hlbiB5b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBl bHNlLCBmb3IgZXhhbXBsZSBpbiBgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5Jy4iCisgIDp0 eXBlICcoY2hvaWNlIChzdHJpbmcgOnRhZyAiRmlsZSBuYW1lIikKKyAgICAgICAgICAgICAg ICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmaWxlIG5hbWUiKSkK KyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0t b3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIGZvciBldGFncyBw cm9ncmFtIGludm9rZWQgYnkgYGV0YWdzLXJlZ2VuLW1vZGUnLiIKKyAgOnR5cGUgJyhyZXBl YXQgc3RyaW5nKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVn ZW4tcmVnZXhwLWFsaXN0IG5pbAorICAiTWFwcGluZyBvZiBsYW5ndWFnZXMgdG8gZXRhZ3Mg cmVnZXhwcyBmb3IgYGV0YWdzLXJlZ2VuLW1vZGUnLgorCitUaGVzZSByZWdleHBzIGFyZSB1 c2VkIGluIGFkZGl0aW9uIHRvIHRoZSB0YWdzIG1hZGUgd2l0aCB0aGUKK3N0YW5kYXJkIHBh cnNpbmcgYmFzZWQgb24gdGhlIGxhbmd1YWdlLgorCitUaGUgdmFsdWUgbXVzdCBiZSBhIGxp c3Qgd2hlcmUgZWFjaCBlbGVtZW50IGhhcyB0aGUKK2Zvcm0gKExBTkdVQUdFUyAuIFRBRy1S RUdFWFBTKSB3aGVyZSBib3RoIExBTkdVQUdFUyBhbmQKK1RBRy1SRUdFWFBTIGFyZSBsaXN0 cyBvZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBvbmUgb2YgdGhlIHJl Y29nbml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBFYWNoIHRhZyByZWdl eHAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2RvY3VtZW50ZWQgZm9yIHRo ZSBgLS1yZWdleCcgYXJndW1lbnRzICh3aXRob3V0IGB7bGFuZ3VhZ2V9JykuCisKK1dlIGN1 cnJlbnRseSBzdXBwb3J0IG9ubHkgRW1hY3MncyBldGFncyBwcm9ncmFtIHdpdGggdGhpcyBv cHRpb24uIgorICA6dHlwZSAnKHJlcGVhdAorICAgICAgICAgIChjb25zCisgICAgICAgICAg IDp0YWcgIkxhbmd1YWdlcyBncm91cCIKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0 YWcgIkxhbmd1YWdlIG5hbWUiKSkKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0YWcg IlRhZyBSZWdleHAiKSkpKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2Fk CisocHV0ICdldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgJ3NhZmUtbG9jYWwtdmFyaWFibGUK KyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFsdWUpCisgICAg ICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAobGFtYmRhIChncm91cCkKKyAg ICAgICAgICAgICAgIChhbmQgKGNvbnNwIGdyb3VwKQorICAgICAgICAgICAgICAgICAgICAo bGlzdHAgKGNhciBncm91cCkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2RyIGdy b3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAoY2Fy IGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAo Y2RyIGdyb3VwKSkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBXZSBoYXZlIHRv IGxpc3QgYWxsIGV4dGVuc2lvbnM6IGV0YWdzIGZhbGxzIGJhY2sgdG8gRm9ydHJhbgorOzsg d2hlbiBpdCBjYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBmaWxlLgorOzsgaHR0 cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTgtMDEvbXNn MDAzMjMuaHRtbAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMKKyAg JygicmIiICJqcyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIgImgiICJoaCIgImhw cCIKKyAgICAiamF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAicGhwIiAiZXJsIiAi aHJsIgorICAgICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFzbSIgImFkcyIgImFk YiIgImFkYSIpCisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucyBmb3IgYGV0YWdzLXJlZ2VuLW1v ZGUnLgorCitGaWxlIGV4dGVuc2lvbnMgdG8gZ2VuZXJhdGUgdGhlIHRhZ3MgZm9yLiIKKyAg OnR5cGUgJyhyZXBlYXQgKHN0cmluZyA6dGFnICJGaWxlIGV4dGVuc2lvbiIpKQorICA6dmVy c2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1maWxl LWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUp IChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVlKSkpKQor Cis7OyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCByb290IGFuY2hvcmluZyB5ZXQuCisoZGVm Y3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9yZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBy dWxlcywgaW4gdGhlIGZvcm1hdCBvZiBgcHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICco cmVwZWF0CisgICAgICAgICAgKHN0cmluZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKQorICA6 dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1p Z25vcmVzICdzYWZlLWxvY2FsLXZhcmlhYmxlCisgICAgIChsYW1iZGEgKHZhbHVlKSAoYW5k IChsaXN0cCB2YWx1ZSkgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCB2YWx1ZSkpKSkKKworKGRl ZnZhciBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lICIqZXRhZ3MtcmVnZW4tdGFn cy1lcnJvcnMqIikKKworKGRlZnZhciBldGFncy1yZWdlbi0tcmVzY2FuLWZpbGVzLWxpbWl0 IDEwMCkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hbGwtbXRpbWVzIChwcm9qKQorICAobGV0 ICgoZmlsZXMgKGV0YWdzLXJlZ2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgIChtdGlt ZXMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpKQorICAgICAgICBmaWxlLW5hbWUt aGFuZGxlci1hbGlzdCkKKyAgICAoZG9saXN0IChmIGZpbGVzKQorICAgICAgKGNvbmRpdGlv bi1jYXNlIG5pbAorICAgICAgICAgIChwdXRoYXNoIGYKKyAgICAgICAgICAgICAgICAgICAo ZmlsZS1hdHRyaWJ1dGUtbW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAg KGZpbGUtYXR0cmlidXRlcyBmKSkKKyAgICAgICAgICAgICAgICAgICBtdGltZXMpCisgICAg ICAgIChmaWxlLW1pc3NpbmcgbmlsKSkpCisgICAgbXRpbWVzKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1jaG9vc2UtdGFncy1maWxlIChwcm9qKQorICAoaWYgKGZ1bmN0aW9ucCBldGFn cy1yZWdlbi10YWdzLWZpbGUpCisgICAgICAoZnVuY2FsbCBldGFncy1yZWdlbi10YWdzLWZp bGUgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAoZXhwYW5kLWZpbGUtbmFtZSBldGFncy1y ZWdlbi10YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLXJlZnJlc2ggKHByb2opCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChsZXQqICgo dGFncy1maWxlIChldGFncy1yZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAg ICAgICAgKHRhZ3MtbXRpbWUgKGZpbGUtYXR0cmlidXRlLW1vZGlmaWNhdGlvbi10aW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIHRhZ3MtZmlsZSkpKQor ICAgICAgICAgICAoYWxsLW10aW1lcyAoZXRhZ3MtcmVnZW4tLWFsbC1tdGltZXMgcHJvaikp CisgICAgICAgICAgIGFkZGVkLWZpbGVzCisgICAgICAgICAgIGNoYW5nZWQtZmlsZXMKKyAg ICAgICAgICAgcmVtb3ZlZC1maWxlcykKKyAgICAgIChldGFncy1yZWdlbi0tdmlzaXQtdGFi bGUgdGFncy1maWxlIChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAgICAoc2V0LWJ1ZmZlciAo Z2V0LWZpbGUtYnVmZmVyIHRhZ3MtZmlsZSkpCisgICAgICAoZG9saXN0IChmaWxlICh0YWdz LXRhYmxlLWZpbGVzKSkKKyAgICAgICAgKGxldCAoKG10aW1lIChnZXRoYXNoIGZpbGUgYWxs LW10aW1lcykpKQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgobnVsbCBtdGltZSkK KyAgICAgICAgICAgIChwdXNoIGZpbGUgcmVtb3ZlZC1maWxlcykpCisgICAgICAgICAgICgo dGltZS1sZXNzLXAgdGFncy1tdGltZSBtdGltZSkKKyAgICAgICAgICAgIChwdXNoIGZpbGUg Y2hhbmdlZC1maWxlcykKKyAgICAgICAgICAgIChyZW1oYXNoIGZpbGUgYWxsLW10aW1lcykp CisgICAgICAgICAgICh0CisgICAgICAgICAgICAocmVtaGFzaCBmaWxlIGFsbC1tdGltZXMp KSkpKQorICAgICAgKG1hcGhhc2gKKyAgICAgICAobGFtYmRhIChrZXkgX3ZhbHVlKQorICAg ICAgICAgKHB1c2gga2V5IGFkZGVkLWZpbGVzKSkKKyAgICAgICBhbGwtbXRpbWVzKQorICAg ICAgKGlmICg+ICgrIChsZW5ndGggYWRkZWQtZmlsZXMpCisgICAgICAgICAgICAgICAgKGxl bmd0aCBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgICAgIChsZW5ndGggcmVtb3ZlZC1m aWxlcykpCisgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXJlc2Nhbi1maWxlcy1saW1pdCkK KyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgIChtZXNzYWdlICJldGFncy1yZWdlbjog VG9vIG1hbnkgY2hhbmdlcywgZmFsbGluZyBiYWNrIHRvIGZ1bGwgcmVzY2FuIikKKyAgICAg ICAgICAgIChldGFncy1yZWdlbi0tdGFncy1jbGVhbnVwKSkKKyAgICAgICAgKGRvbGlzdCAo ZmlsZSAobmNvbmMgcmVtb3ZlZC1maWxlcyBjaGFuZ2VkLWZpbGVzKSkKKyAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXJlbW92ZS10YWcgZmlsZSkpCisgICAgICAgICh3aGVuIChvciBjaGFu Z2VkLWZpbGVzIGFkZGVkLWZpbGVzKQorICAgICAgICAgIChhcHBseSAjJ2V0YWdzLXJlZ2Vu LS1hcHBlbmQtdGFncworICAgICAgICAgICAgICAgICAobmNvbmMgY2hhbmdlZC1maWxlcyBh ZGRlZC1maWxlcykpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxlcyBhZGRlZC1m aWxlcyByZW1vdmVkLWZpbGVzKQorICAgICAgICAgIChsZXQgKChzYXZlLXNpbGVudGx5IHQp CisgICAgICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQorICAgICAgICAgICAg KHNhdmUtYnVmZmVyIDApKSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tbWF5YmUtZ2Vu ZXJhdGUgKCkKKyAgKGxldCAocHJvaikKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10 YWdzLXJvb3QKKyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVm YXVsdC1kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdz LWNsZWFudXApKQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290 KQorICAgICAgICAgICAgICAgOzsgSWYgZXhpc3RpbmcgdGFibGUgaXMgdmlzaXRlZCB0aGF0 J3Mgbm90IGdlbmVyYXRlZCBieQorICAgICAgICAgICAgICAgOzsgdGhpcyBtb2RlLCBza2lw IGFsbCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgKG5vdCAob3IgdGFncy1maWxl LW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAg ICAgICAgICAgICAoZmlsZS1leGlzdHMtcCAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZp bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChwcm9qZWN0 LWN1cnJlbnQpKSkpKQorICAgICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFi bGUsIHJlZnJlc2hpbmcuLi4iKQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2op KQorICAgICh3aGVuIChhbmQgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBw cm9qIChvciBwcm9qIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2Vu ZXJhdGluZyBuZXcgdGFncyB0YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUt dG8tc2Vjb25kcykpKQorICAgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJv aikKKyAgICAgICAgKG1lc3NhZ2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNl Y29uZHMpIHN0YXJ0KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChw cm9qKQorICAobGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChk ZWZhdWx0LWRpcmVjdG9yeSByb290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nh bm5pbmcgbW9yZSBlZmZpY2llbnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRl cmluZyBieSBnbG9iIHRvIHByb2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgor ICAgICAgICAgKGZpbGVzIChwcm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNo LXJlIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAg ICAgICAgKHJlZ2V4cC1vcHQgZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAg ICAgICAgICAgICAgICAiXFwnIikpCisgICAgICAgICAoaXItc3RhcnQgKDEtIChsZW5ndGgg cm9vdCkpKQorICAgICAgICAgKGlnbm9yZXMtcmVnZXhwcworICAgICAgICAgIChtYXBjYXIg IydldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cAorICAgICAgICAgICAgICAgICAgZXRhZ3Mt cmVnZW4taWdub3JlcykpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikg KG9yIChub3QgKHN0cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAg IChzdHJpbmctbWF0Y2gtcCAiL1xcLiMiIGYpIDtCYWNrdXAgZmlsZXMuCisgICAgICAgICAg ICAgICAgKGNsLXNvbWUgKGxhbWJkYSAoaWdub3JlKSAoc3RyaW5nLW1hdGNoIGlnbm9yZSBm IGlyLXN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzLXJlZ2V4cHMp KSkKKyAgICAgZmlsZXMpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhw IChpZ25vcmUpCisgIChyZXF1aXJlICdkaXJlZCkKKyAgOzsgSXQncyBzb21ld2hhdCBicml0 dGxlIHRvIHJlbHkgb24gRGlyZWQuCisgIChsZXQgKChyZSAoZGlyZWQtZ2xvYi1yZWdleHAg aWdub3JlKSkpCisgICAgOzsgV2UgY291bGQgaW1wbGVtZW50IHJvb3QgYW5jaG9yaW5nIGhl cmUsIGJ1dCBcXD0gZG9lc24ndCB3b3JrIGluCisgICAgOzsgc3RyaW5nLW1hdGNoIDotKC4K KyAgICAoY29uY2F0ICh1bmxlc3MgKGVxID8vIChhcmVmIHJlIDMpKSAiLyIpCisgICAgICAg ICAgICA7OyBDdXR0aW5nIG9mZiB0aGUgYW5jaG9ycyBhZGRlZCBieSBgZGlyZWQtZ2xvYi1y ZWdleHAnLgorICAgICAgICAgICAgKHN1YnN0cmluZyByZSAyICgtIChsZW5ndGggcmUpIDIp KQorICAgICAgICAgICAgOzsgVGhpcyB3YXkgd2UgYWxsb3cgYSBnbG9iIHRvIG1hdGNoIGFn YWluc3QgYSBkaXJlY3RvcnkKKyAgICAgICAgICAgIDs7IG5hbWUsIG9yIGEgZmlsZSBuYW1l LiAgQW5kIHdoZW4gaXQgZW5kcyB3aXRoIC8gYWxyZWFkeSwKKyAgICAgICAgICAgIDs7IG5v IG5lZWQgdG8gYWRkIHRoZSBhbmNob3JpbmcuCisgICAgICAgICAgICAodW5sZXNzIChlcSA/ LyAoYXJlZiByZSAoLSAobGVuZ3RoIHJlKSAzKSkpCisgICAgICAgICAgICAgIDs7IEVpdGhl ciBtYXRjaCBhIGZ1bGwgbmFtZSBzZWdtZW50LCBvciBlb3MuCisgICAgICAgICAgICAgICJc XCg/Oi9cXHxcXCdcXCkiKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJh dGUgKHByb2opCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290IHByb2opKQorICAgICAg ICAgKGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICAoZmlsZXMgKGV0YWdzLXJl Z2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgICAodGFncy1maWxlIChldGFncy1yZWdl bi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAgICAgIChjdGFncy1wIChldGFncy1y ZWdlbi0tY3RhZ3MtcCkpCisgICAgICAgICAoY29tbWFuZCAoZm9ybWF0ICIlcyAlcyAlcyAt IC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFt CisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0tYnVpbGQt cHJvZ3JhbS1vcHRpb25zIGN0YWdzLXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjdGFncydzIGV0 YWdzIHJlcXVpcmVzICctTCcgZm9yIHN0ZGluIGlucHV0LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgY3RhZ3MtcCAiLUwiICIiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWdzLWZpbGUpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKG1hcGMgKGxh bWJkYSAoZikKKyAgICAgICAgICAgICAgKGluc2VydCBmICJcbiIpKQorICAgICAgICAgICAg ZmlsZXMpCisgICAgICAoc2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1pbikgKHBv aW50LW1heCkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBu aWwgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSB0KSkKKyAgICAoZXRhZ3MtcmVn ZW4tLXZpc2l0LXRhYmxlIHRhZ3MtZmlsZSByb290KSkpCisKKyhkZWZ1biBldGFncy1yZWdl bi0tdmlzaXQtdGFibGUgKHRhZ3MtZmlsZSByb290KQorICA7OyBJbnZhbGlkYXRlIHRoZSBz Y2FubmVkIHRhZ3MgYWZ0ZXIgYW55IGNoYW5nZSBpcyB3cml0dGVuIHRvIGRpc2suCisgIChh ZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQor ICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1u ZXcpCisgIChzZXRxIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgdGFncy1maWxlCisgICAgICAg IGV0YWdzLXJlZ2VuLS10YWdzLXJvb3Qgcm9vdCkKKyAgKHZpc2l0LXRhZ3MtdGFibGUgZXRh Z3MtcmVnZW4tLXRhZ3MtZmlsZSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tY3RhZ3MtcCAo KQorICAoc3RyaW5nLXNlYXJjaCAiQ3RhZ3MiCisgICAgICAgICAgICAgICAgIChzaGVsbC1j b21tYW5kLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMgLS12ZXJz aW9uIiBldGFncy1yZWdlbi1wcm9ncmFtKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWJ1 aWxkLXByb2dyYW0tb3B0aW9ucyAoY3RhZ3MtcCkKKyAgKHdoZW4gKGFuZCBldGFncy1yZWdl bi1yZWdleHAtYWxpc3QgY3RhZ3MtcCkKKyAgICAodXNlci1lcnJvciAiZXRhZ3MtcmVnZW4t cmVnZXhwLWFsaXN0IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBDdGFncyIpKQorICAobmNvbmMK KyAgIChtYXBjYW4KKyAgICAobGFtYmRhIChncm91cCkKKyAgICAgIChtYXBjYW4KKyAgICAg ICAobGFtYmRhIChsYW5nKQorICAgICAgICAgKG1hcGNhciAobGFtYmRhIChyZWdleHApCisg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiLS1yZWdleD0iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2hlbGwtcXVvdGUtYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICJ7JXN9JXMiIGxhbmcgcmVnZXhwKSkpKQorICAgICAgICAgICAg ICAgICAoY2RyIGdyb3VwKSkpCisgICAgICAgKGNhciBncm91cCkpKQorICAgIGV0YWdzLXJl Z2VuLXJlZ2V4cC1hbGlzdCkKKyAgIChtYXBjYXIgIydzaGVsbC1xdW90ZS1hcmd1bWVudAor ICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlvbnMpKSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSAoKQorICA7OyBUT0RPOiBNYXliZSBvbmx5IGRvIHRo aXMgd2hlbiBFbWFjcyBpcyBpZGxlIGZvciBhIGJpdC4gIE9yIGRlZmVyCisgIDs7IHRoZSB1 cGRhdGVzIGFuZCBkbyB0aGVtIGxhdGVyIGluIGJ1cnN0cyB3aGVuIHRoZSB0YWJsZSBpcyB1 c2VkLgorICAobGV0KiAoKGZpbGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAg KHRhZ3MtZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChnZXQtZmlsZS1idWZmZXIgZXRhZ3MtcmVnZW4tLXRhZ3Mt ZmlsZSkpKQorICAgICAgICAgKHJlbG5hbWUgKGNvbmNhdCAiLyIgKGZpbGUtcmVsYXRpdmUt bmFtZSBmaWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgICAgKGlnbm9y ZXMgZXRhZ3MtcmVnZW4taWdub3JlcykKKyAgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAo Y29uZAorICAgICAgICAgKChhbmQgZXRhZ3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAg ICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAg ICAgICAgICAgICAgKHNldHEgcHIgKHByb2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAg ICAoZXF1YWwgKHByb2plY3Qtcm9vdCBwcikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAg ICAgICAgICAgICAgIChtZW1iZXIgZmlsZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisg ICAgICAgICAgKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBz aG91bGQtc2NhbiB0KSkKKyAgICAgICAgICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxl LWJ1ZikKKyAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUt bmFtZSkpCisgICAgICAgICAgKHNldHEgc2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVu IChhbmQgc2hvdWxkLXNjYW4KKyAgICAgICAgICAgICAgICAgKG5vdCAoY2wtc29tZQorICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpZ25vcmUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgIChl dGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cCBpZ25vcmUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzKSkpCisg ICAgICAgIChldGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAo bGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4 IG5pbCkpCisgICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1yZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICh3aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5h bWUpIG5pbCB0KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAg ICAgIChzZWFyY2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGlu aGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAg ICAgICAgICAgICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkp KSkKKyAgICB0KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3Qg ZmlsZS1uYW1lcykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlv bnMgKGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1j dGFncy1wKSkpCisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6 IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7 IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuICBCdXQgYHNoZWxsLWNvbW1hbmQnIG1ha2VzIGl0 IGVhc3kgdG8KKyAgICA7OyBkaXJlY3Qgc3RkZXJyIHRvIGEgc2VwYXJhdGUgYnVmZmVyLgor ICAgIChzaGVsbC1jb21tYW5kCisgICAgIChmb3JtYXQgIiVzICVzICVzIC1vIC0iCisgICAg ICAgICAgICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbSAobWFwY29uY2F0ICMnaWRlbnRpdHkgb3B0 aW9ucyAiICIpCisgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2lkZW50aXR5IGZpbGUtbmFt ZXMgIiAiKSkKKyAgICAgdCBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lKSkKKyAg OzsgRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzPworICA7OyBDb21w bGV0aW9uIHRhYmxlIGlzIHRoZSBvbmx5IHJlbWFpbmluZyBwbGFjZSB3aGVyZSB0aGUKKyAg OzsgdXBkYXRlIGlzIG5vdCBpbmNyZW1lbnRhbC4KKyAgKHNldHEtZGVmYXVsdCB0YWdzLWNv bXBsZXRpb24tdGFibGUgbmlsKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1tYXJrLWFzLW5l dyAoKQorICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QKKyAgICAgICAgICAg ICAobm90IGJ1ZmZlci1maWxlLW51bWJlcikpCisgICAgKHNldHEtbG9jYWwgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIHQpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAg KCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZmZXIg KGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAoYW5k IGJ1ZmZlcgorICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHRhZ3Mt cmVzZXQtdGFncy10YWJsZXMpCisgICAgKHNldHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAg ICAgICAgdGFncy10YWJsZS1saXN0IG5pbAorICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdz LWZpbGUgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAo cmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmls ZSkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1h cmstYXMtbmV3KSkKKworKGRlZnZhciBldGFncy1yZWdlbi1tb2RlLW1hcCAobWFrZS1zcGFy c2Uta2V5bWFwKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFn cy1yZWdlbi1tb2RlCisgICJNaW5vciBtb2RlIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUg YW5kIHVwZGF0ZSB0YWdzIHRhYmxlcy4KKworVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0 aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCit0aGUgY3VycmVudCBwcm9q ZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0 aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuIgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0 YWdzLXJlZ2VuLW1vZGUKKyAgICAgIChwcm9nbgorICAgICAgICAoYWR2aWNlLWFkZCAnZXRh Z3MtLXhyZWYtYmFja2VuZCA6YmVmb3JlCisgICAgICAgICAgICAgICAgICAgICMnZXRhZ3Mt cmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgICAgICAoYWR2aWNlLWFkZCAndGFncy1jb21w bGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9uIDpiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAg IydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpKQorICAgIChhZHZpY2UtcmVtb3ZlICdl dGFncy0teHJlZi1iYWNrZW5kICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAg IChhZHZpY2UtcmVtb3ZlICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gIydl dGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNs ZWFudXApKSkKKworKHByb3ZpZGUgJ2V0YWdzLXJlZ2VuKQorCis7OzsgZXRhZ3MtcmVnZW4u ZWwgZW5kcyBoZXJlCg== --------------c1oUp20z0oKrVKmD4iWXq0F8-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 31 20:23:52 2023 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 01:23:52 +0000 Received: from localhost ([127.0.0.1]:47184 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK720-0000RM-4i for submit@debbugs.gnu.org; Sun, 31 Dec 2023 20:23:52 -0500 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:44577) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rK71x-0000R7-0b for 67687@debbugs.gnu.org; Sun, 31 Dec 2023 20:23:49 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 266573200A3C; Sun, 31 Dec 2023 20:23:41 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Sun, 31 Dec 2023 20:23:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704072220; x=1704158620; bh=+AscX1zc41m2c51orFKX6a84ALM7Z/i+YSwWkR2MFBg=; b= HkjwaJUJXP3ntCsNOzCaWOTbhpMlcAazrzy5Yqq02a0lh60WzSWy2hiR8cMBWnxX cmIIKc52SXSQgW5CgBxb9omU9C+Y3ZWwbak4JaSqdINQnE+ajQefjTGg3gZWg8vh RJD1cskUcsg9R8XeOoaKWzJ+GvgTb0vUhBrXuKed4fZq8tHMhp6xKPZJw1ECzBsQ fqP5qM8jCOfoNdCdf440PzPGMx+UfY5XQBYOCJ094jHN7maoh7+ugXuuWtsCqd0r RrthpvqRA+L/WnY7L0enGhFj6mKozttdDdGGAh40fKeC6MdXMqbyAaspuT/KjOXF 9Wn6FzkmG+0At0jIHzRzPw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704072220; x= 1704158620; bh=+AscX1zc41m2c51orFKX6a84ALM7Z/i+YSwWkR2MFBg=; b=R KUgSZ4asifh/1o32BKAvHP9o9hpjaPXo07xWoo42wYO2gDF9fR2p4gUWI0CZN08E Hvpn8Yz+/kpCezUmOWgu95Ojf7CWjacADjtiIEg8oIKgmoV7bfSNeAtCiTL4VLTZ n9GAOFeh3v2ul0fzddNL1/LKnfLb4ejOFdjVR8VQg6EFcs4kv7hEuC+fh0oUDNQ6 pT3BewPIk7a653BpyaEmbhnmVPDvnSIoWmvllnFTp/rmXIcLaC4kZu7H5OWYVaE9 GMoaudeG74QvaKhNlGgQIka2Sy/7kMKQ2FWf5aurkdqpq9rpSTDfoTEpZCDs9mNB olcNHrfGkfqhtsCpp4Q4Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdefledgfeegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 31 Dec 2023 20:23:38 -0500 (EST) Message-ID: <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> Date: Mon, 1 Jan 2024 03:23:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <8334vi2mwo.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 31/12/2023 21:27, Eli Zaretskii wrote: >> Date: Sun, 31 Dec 2023 19:53:27 +0200 >> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >> michael.albinus@gmx.de >> From: Dmitry Gutov >> >>>> And either way it seems like a prerequisite for enabling >>>> etags-regen-mode by default sometimes in the future. >>> >>> How so? The fact that I loaded TAGS doesn't necessarily mean I don't >>> want it updated when the sources change. Or what am I missing? >> >> a) We won't add new files to the index, because we (apparently) can't >> simply use the project's list of files -- there is no guarantee that it >> matches the fileset that the original author of the TAGS file had in mind. > > The user has etags-regen-ignores to control that. etags-regen-ignores wouldn't normally include filters that already are in project's ignores. But of course the user might choose to add them. >> b) There is no way to pick up the --regex options used for generating >> the original TAGS, or any other options we don't know about. > > There are defcustoms to control both of those. If all of these options are set to the expected values, what's stopping the user from calling 'M-x tags-reset-tags-tables' and having etags-regen-mode create the table on its own? The extra 10 seconds of waiting? Also note that if you have an existing TAGS file in the root of the project, with default configuration etags-regen-mode will pick it up to visit and refresh it where necessary (when there are changed or missing files). >> Either way, we get a poorly-defined behavior with edge cases that are >> likely to surprise the user at different points of time. So we might >> indeed grow such a capability, but it'll probably stay off by default. > > I agree that sometimes it could be against the user's expectations. > But I also think that other times it is according to user's > expectations. Which tells me that this is a separate issue that needs > a separate knob; we shouldn't deterministically deduce what users want > in this respect from the fact that he/she loaded an existing tags > table. Moreover, it is quite possible that even when the mode is > turned on, users might want sometimes to load tags tables manually. I don't mind adding additional knobs. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 07:07:34 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 12:07:34 +0000 Received: from localhost ([127.0.0.1]:47429 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKH4w-0003JD-4Z for submit@debbugs.gnu.org; Mon, 01 Jan 2024 07:07:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49730) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKH4u-0003Iy-1I for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 07:07:32 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rKH4m-0001Z5-Eq; Mon, 01 Jan 2024 07:07:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=9IGURZAjpRk0sEVxZHJ0FmsLkmdsafSnlTHjq0tT+Kc=; b=SL2Oa5ggTgcM VQVQVa+ngvYztVpXfxW5g33XD6g7+UW3DwNw/isFiRxBfyANcwPpvmuHQxUwzbI9Fo84uew2xtXJy 5mAfauInk4FUZ96YiAjYI2t5xVwQwpD+9uuM8RfODg5Yijqit8dMdpaKY6aTwH0D1AIhPuUxSoVKO dc3ySM3Pz+KFsps1gKYzb/A6BqkJjzVSFtzLeChMxEfkAHLYWTCWsAFDFMm3nVBLzeYlQq2u2S3Ys k3df38Pu9JTWzD1cWPy7yYPIRbwqNoirqwCnwJft+DTRxcOl3leXkoGRHkZTj5FNvKbrbZ8lFm5c1 2dzE9iQMHlQFsisl/MWqag==; Date: Mon, 01 Jan 2024 14:07:20 +0200 Message-Id: <83ttnx1clj.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> (message from Dmitry Gutov on Mon, 1 Jan 2024 03:23:36 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 1 Jan 2024 03:23:36 +0200 > Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > michael.albinus@gmx.de > From: Dmitry Gutov > > >> a) We won't add new files to the index, because we (apparently) can't > >> simply use the project's list of files -- there is no guarantee that it > >> matches the fileset that the original author of the TAGS file had in mind. > > > > The user has etags-regen-ignores to control that. > > etags-regen-ignores wouldn't normally include filters that already are > in project's ignores. But of course the user might choose to add them. > > >> b) There is no way to pick up the --regex options used for generating > >> the original TAGS, or any other options we don't know about. > > > > There are defcustoms to control both of those. > > If all of these options are set to the expected values, what's stopping > the user from calling 'M-x tags-reset-tags-tables' and having > etags-regen-mode create the table on its own? The extra 10 seconds of > waiting? > > Also note that if you have an existing TAGS file in the root of the > project, with default configuration etags-regen-mode will pick it up to > visit and refresh it where necessary (when there are changed or missing > files). > > >> Either way, we get a poorly-defined behavior with edge cases that are > >> likely to surprise the user at different points of time. So we might > >> indeed grow such a capability, but it'll probably stay off by default. > > > > I agree that sometimes it could be against the user's expectations. > > But I also think that other times it is according to user's > > expectations. Which tells me that this is a separate issue that needs > > a separate knob; we shouldn't deterministically deduce what users want > > in this respect from the fact that he/she loaded an existing tags > > table. Moreover, it is quite possible that even when the mode is > > turned on, users might want sometimes to load tags tables manually. > > I don't mind adding additional knobs. I guess for now it will be enough to document that invoking visit-tags-table disables the mode for that project. AFAICT this is not currently documented anywhere in the patch. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 10:47:28 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 15:47:28 +0000 Received: from localhost ([127.0.0.1]:48642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKKVj-0005ww-0Y for submit@debbugs.gnu.org; Mon, 01 Jan 2024 10:47:28 -0500 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:37209) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKKVg-0005wh-LM for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 10:47:26 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 6C0003200B44; Mon, 1 Jan 2024 10:47:15 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 01 Jan 2024 10:47:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1704124034; x=1704210434; bh=BFJp6lgDG2 zcE+uCPBS0NuobfSXAXbt5pZxsD2cH9EE=; b=e+YvVf10hEKct18EQvWv4rpYpk eet/X5/kUlR+j3WnOh53tJCKZ8/550h75vSctFzTxECfyWOskV+tHhDGk+8PEjj9 qlh6lWW5G3p0gYju+drmfCjWgCYi5mpDCZqU8a208g4i5ckJpFzBWbai9tqws3fi 3KGJc8IS8op7z6KFwhioT2uknc+3gJ1Y1fL50jKgjCW/vs0yZ10RLgEMkY/hLDgr HYt+GjqcCPZ4abK6TDN5iFQz3er3iw4QqTcBZG6TKGMWUfs+9nbaA2tn/mJKpkzp hb7oV9AeIZa0YOuJ7iganUGl6Zg4Y19IhAtICnwe5jSBObXBJnNgj/sbfRpw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1704124034; x=1704210434; bh=BFJp6lgDG2zcE+uCPBS0NuobfSXA Xbt5pZxsD2cH9EE=; b=TkY4FDBN2uitmKB/vULmPVhLGSR7IkO+D7hpXUI1yWpj N4W/Xh2OlArTW6KEcx7+bJfAA/vkrH2tHF2+hQXShBMejcfshjmpNYE223ZPy3su khIPWVCVTn3X2qh7dW7V+kpdANtHwZjFdDqoMLMkP1/nQa4SL6QlhHDHkIKcDCLl xatJY8fQJT7aUz0ZYLwIgSgqpdNZlO50jWBzBItLzm2nWjIH0pwPe2kT3eAYjhUD kYMZrGfyaYeLM7u92slvdMd6ZhOa141ia9wtuZZBLz/tyy8l8EYtk7fSwPCnDl62 F5LR/fTCSgmVgKu1TAAufMLzyQpOYVaVah8CJcDurA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegtddgkedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehleefudekudduveekieelgfeiffdvkefhkeeljeeujeegueekveffkeejjeev heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 10:47:12 -0500 (EST) Content-Type: multipart/mixed; boundary="------------pYMvmnLx4ROehGZTLDSiKerS" Message-ID: <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> Date: Mon, 1 Jan 2024 17:47:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83ttnx1clj.fsf@gnu.org> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------pYMvmnLx4ROehGZTLDSiKerS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 01/01/2024 14:07, Eli Zaretskii wrote: >>>> Either way, we get a poorly-defined behavior with edge cases that are >>>> likely to surprise the user at different points of time. So we might >>>> indeed grow such a capability, but it'll probably stay off by default. >>> I agree that sometimes it could be against the user's expectations. >>> But I also think that other times it is according to user's >>> expectations. Which tells me that this is a separate issue that needs >>> a separate knob; we shouldn't deterministically deduce what users want >>> in this respect from the fact that he/she loaded an existing tags >>> table. Moreover, it is quite possible that even when the mode is >>> turned on, users might want sometimes to load tags tables manually. >> I don't mind adding additional knobs. > I guess for now it will be enough to document that invoking > visit-tags-table disables the mode for that project. AFAICT this is > not currently documented anywhere in the patch. OK, added a paragraph to the mode's docstring. --------------pYMvmnLx4ROehGZTLDSiKerS Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v7.diff" Content-Disposition: attachment; filename="etags-regen-v7.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYmE0MGVmYTJlOWQuLjA5 MjhhZTVhMmRjIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTI3 MCw2ICsxMjcwLDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAxYmQ2MjZjOTYyCi0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MzEg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMS0y MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRy eSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMgb24gc2F2 ZS4KKzs7Cis7OyBUaGlzIG1vZGUgcHJvdmlkZXMgYXV0b21hdGljIGluZGV4aW5nIGZvciBF bWFjcyAiZ28gdG8gZGVmaW5pdGlvbiIKKzs7IGZlYXR1cmUsIHRoZSBgeHJlZi1nby1mb3J3 YXJkJyBjb21tYW5kIChib3VuZCB0byBgTS0uJyBieSBkZWZhdWx0KS4KKzs7Cis7OyBBdCB0 aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhvb2ss IGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChmb3IgZXhhbXBsZSwg dGhlIHVzZXIgc3dpdGNoaW5nIHRvCis7OyBhbm90aGVyIGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvCis7OyBzb21ldGhpbmcgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor KGRlY2xhcmUtZnVuY3Rpb24gZGlyZWQtZ2xvYi1yZWdleHAgImRpcmVkIikKKworKGRlZmN1 c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtIChleGVjdXRhYmxlLWZpbmQgImV0YWdzIikKKyAg Ik5hbWUgb2YgdGhlIGV0YWdzIHByb2dyYW0gdXNlZCBieSBgZXRhZ3MtcmVnZW4tbW9kZScu CisKK0lmIHlvdSBvbmx5IGhhdmUgYGN0YWdzJyBpbnN0YWxsZWQsIHlvdSBjYW4gYWxzbyBz ZXQgdGhpcyB0bworXCJjdGFncyAtZVwiLiAgU29tZSBmZWF0dXJlcyBtaWdodCBub3QgYmUg c3VwcG9ydGVkIHRoaXMgd2F5LiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBo ZXJlIHdvdWxkIGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9u IGl0IGJlaW5nIGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisg IDp0eXBlICdmaWxlCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSBldGFncy1y ZWdlbi10YWdzLWZpbGUgIlRBR1MiCisgICJOYW1lIG9mIHRoZSB0YWdzIGZpbGUgdG8gY3Jl YXRlIGluc2lkZSB0aGUgcHJvamVjdCBieSBgZXRhZ3MtcmVnZW4tbW9kZScuCisKK1RoZSB2 YWx1ZSBzaG91bGQgZWl0aGVyIGJlIGEgc2ltcGxlIGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5 CitzcGVjaWZpZWQpLCBvciBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcHJvamVjdCBy b290IGRpcmVjdG9yeQorYW5kIHJldHVybnMgYSBkaXN0aW5jdCBhYnNvbHV0ZSBmaWxlIG5h bWUgZm9yIGl0cyB0YWdzIGZpbGUuICBUaGUKK2xhdHRlciBwb3NzaWJpbGl0eSBpcyB1c2Vm dWwgd2hlbiB5b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBl bHNlLCBmb3IgZXhhbXBsZSBpbiBgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5Jy4iCisgIDp0 eXBlICcoY2hvaWNlIChzdHJpbmcgOnRhZyAiRmlsZSBuYW1lIikKKyAgICAgICAgICAgICAg ICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmaWxlIG5hbWUiKSkK KyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0t b3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIGZvciBldGFncyBw cm9ncmFtIGludm9rZWQgYnkgYGV0YWdzLXJlZ2VuLW1vZGUnLiIKKyAgOnR5cGUgJyhyZXBl YXQgc3RyaW5nKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVn ZW4tcmVnZXhwLWFsaXN0IG5pbAorICAiTWFwcGluZyBvZiBsYW5ndWFnZXMgdG8gZXRhZ3Mg cmVnZXhwcyBmb3IgYGV0YWdzLXJlZ2VuLW1vZGUnLgorCitUaGVzZSByZWdleHBzIGFyZSB1 c2VkIGluIGFkZGl0aW9uIHRvIHRoZSB0YWdzIG1hZGUgd2l0aCB0aGUKK3N0YW5kYXJkIHBh cnNpbmcgYmFzZWQgb24gdGhlIGxhbmd1YWdlLgorCitUaGUgdmFsdWUgbXVzdCBiZSBhIGxp c3Qgd2hlcmUgZWFjaCBlbGVtZW50IGhhcyB0aGUKK2Zvcm0gKExBTkdVQUdFUyAuIFRBRy1S RUdFWFBTKSB3aGVyZSBib3RoIExBTkdVQUdFUyBhbmQKK1RBRy1SRUdFWFBTIGFyZSBsaXN0 cyBvZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBvbmUgb2YgdGhlIHJl Y29nbml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBFYWNoIHRhZyByZWdl eHAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2RvY3VtZW50ZWQgZm9yIHRo ZSBgLS1yZWdleCcgYXJndW1lbnRzICh3aXRob3V0IGB7bGFuZ3VhZ2V9JykuCisKK1dlIGN1 cnJlbnRseSBzdXBwb3J0IG9ubHkgRW1hY3MncyBldGFncyBwcm9ncmFtIHdpdGggdGhpcyBv cHRpb24uIgorICA6dHlwZSAnKHJlcGVhdAorICAgICAgICAgIChjb25zCisgICAgICAgICAg IDp0YWcgIkxhbmd1YWdlcyBncm91cCIKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0 YWcgIkxhbmd1YWdlIG5hbWUiKSkKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0YWcg IlRhZyBSZWdleHAiKSkpKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2Fk CisocHV0ICdldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgJ3NhZmUtbG9jYWwtdmFyaWFibGUK KyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFsdWUpCisgICAg ICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAobGFtYmRhIChncm91cCkKKyAg ICAgICAgICAgICAgIChhbmQgKGNvbnNwIGdyb3VwKQorICAgICAgICAgICAgICAgICAgICAo bGlzdHAgKGNhciBncm91cCkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2RyIGdy b3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAoY2Fy IGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAo Y2RyIGdyb3VwKSkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBXZSBoYXZlIHRv IGxpc3QgYWxsIGV4dGVuc2lvbnM6IGV0YWdzIGZhbGxzIGJhY2sgdG8gRm9ydHJhbgorOzsg d2hlbiBpdCBjYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBmaWxlLgorOzsgaHR0 cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTgtMDEvbXNn MDAzMjMuaHRtbAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMKKyAg JygicmIiICJqcyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIgImgiICJoaCIgImhw cCIKKyAgICAiamF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAicGhwIiAiZXJsIiAi aHJsIgorICAgICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFzbSIgImFkcyIgImFk YiIgImFkYSIpCisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucyBmb3IgYGV0YWdzLXJlZ2VuLW1v ZGUnLgorCitGaWxlIGV4dGVuc2lvbnMgdG8gZ2VuZXJhdGUgdGhlIHRhZ3MgZm9yLiIKKyAg OnR5cGUgJyhyZXBlYXQgKHN0cmluZyA6dGFnICJGaWxlIGV4dGVuc2lvbiIpKQorICA6dmVy c2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1maWxl LWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUp IChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVlKSkpKQor Cis7OyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCByb290IGFuY2hvcmluZyB5ZXQuCisoZGVm Y3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9yZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBy dWxlcywgaW4gdGhlIGZvcm1hdCBvZiBgcHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICco cmVwZWF0CisgICAgICAgICAgKHN0cmluZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKQorICA6 dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1p Z25vcmVzICdzYWZlLWxvY2FsLXZhcmlhYmxlCisgICAgIChsYW1iZGEgKHZhbHVlKSAoYW5k IChsaXN0cCB2YWx1ZSkgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCB2YWx1ZSkpKSkKKworKGRl ZnZhciBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lICIqZXRhZ3MtcmVnZW4tdGFn cy1lcnJvcnMqIikKKworKGRlZnZhciBldGFncy1yZWdlbi0tcmVzY2FuLWZpbGVzLWxpbWl0 IDEwMCkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hbGwtbXRpbWVzIChwcm9qKQorICAobGV0 ICgoZmlsZXMgKGV0YWdzLXJlZ2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgIChtdGlt ZXMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpKQorICAgICAgICBmaWxlLW5hbWUt aGFuZGxlci1hbGlzdCkKKyAgICAoZG9saXN0IChmIGZpbGVzKQorICAgICAgKGNvbmRpdGlv bi1jYXNlIG5pbAorICAgICAgICAgIChwdXRoYXNoIGYKKyAgICAgICAgICAgICAgICAgICAo ZmlsZS1hdHRyaWJ1dGUtbW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAg KGZpbGUtYXR0cmlidXRlcyBmKSkKKyAgICAgICAgICAgICAgICAgICBtdGltZXMpCisgICAg ICAgIChmaWxlLW1pc3NpbmcgbmlsKSkpCisgICAgbXRpbWVzKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1jaG9vc2UtdGFncy1maWxlIChwcm9qKQorICAoaWYgKGZ1bmN0aW9ucCBldGFn cy1yZWdlbi10YWdzLWZpbGUpCisgICAgICAoZnVuY2FsbCBldGFncy1yZWdlbi10YWdzLWZp bGUgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAoZXhwYW5kLWZpbGUtbmFtZSBldGFncy1y ZWdlbi10YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLXJlZnJlc2ggKHByb2opCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChsZXQqICgo dGFncy1maWxlIChldGFncy1yZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAg ICAgICAgKHRhZ3MtbXRpbWUgKGZpbGUtYXR0cmlidXRlLW1vZGlmaWNhdGlvbi10aW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIHRhZ3MtZmlsZSkpKQor ICAgICAgICAgICAoYWxsLW10aW1lcyAoZXRhZ3MtcmVnZW4tLWFsbC1tdGltZXMgcHJvaikp CisgICAgICAgICAgIGFkZGVkLWZpbGVzCisgICAgICAgICAgIGNoYW5nZWQtZmlsZXMKKyAg ICAgICAgICAgcmVtb3ZlZC1maWxlcykKKyAgICAgIChldGFncy1yZWdlbi0tdmlzaXQtdGFi bGUgdGFncy1maWxlIChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAgICAoc2V0LWJ1ZmZlciAo Z2V0LWZpbGUtYnVmZmVyIHRhZ3MtZmlsZSkpCisgICAgICAoZG9saXN0IChmaWxlICh0YWdz LXRhYmxlLWZpbGVzKSkKKyAgICAgICAgKGxldCAoKG10aW1lIChnZXRoYXNoIGZpbGUgYWxs LW10aW1lcykpKQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgobnVsbCBtdGltZSkK KyAgICAgICAgICAgIChwdXNoIGZpbGUgcmVtb3ZlZC1maWxlcykpCisgICAgICAgICAgICgo dGltZS1sZXNzLXAgdGFncy1tdGltZSBtdGltZSkKKyAgICAgICAgICAgIChwdXNoIGZpbGUg Y2hhbmdlZC1maWxlcykKKyAgICAgICAgICAgIChyZW1oYXNoIGZpbGUgYWxsLW10aW1lcykp CisgICAgICAgICAgICh0CisgICAgICAgICAgICAocmVtaGFzaCBmaWxlIGFsbC1tdGltZXMp KSkpKQorICAgICAgKG1hcGhhc2gKKyAgICAgICAobGFtYmRhIChrZXkgX3ZhbHVlKQorICAg ICAgICAgKHB1c2gga2V5IGFkZGVkLWZpbGVzKSkKKyAgICAgICBhbGwtbXRpbWVzKQorICAg ICAgKGlmICg+ICgrIChsZW5ndGggYWRkZWQtZmlsZXMpCisgICAgICAgICAgICAgICAgKGxl bmd0aCBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgICAgIChsZW5ndGggcmVtb3ZlZC1m aWxlcykpCisgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXJlc2Nhbi1maWxlcy1saW1pdCkK KyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgIChtZXNzYWdlICJldGFncy1yZWdlbjog VG9vIG1hbnkgY2hhbmdlcywgZmFsbGluZyBiYWNrIHRvIGZ1bGwgcmVzY2FuIikKKyAgICAg ICAgICAgIChldGFncy1yZWdlbi0tdGFncy1jbGVhbnVwKSkKKyAgICAgICAgKGRvbGlzdCAo ZmlsZSAobmNvbmMgcmVtb3ZlZC1maWxlcyBjaGFuZ2VkLWZpbGVzKSkKKyAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXJlbW92ZS10YWcgZmlsZSkpCisgICAgICAgICh3aGVuIChvciBjaGFu Z2VkLWZpbGVzIGFkZGVkLWZpbGVzKQorICAgICAgICAgIChhcHBseSAjJ2V0YWdzLXJlZ2Vu LS1hcHBlbmQtdGFncworICAgICAgICAgICAgICAgICAobmNvbmMgY2hhbmdlZC1maWxlcyBh ZGRlZC1maWxlcykpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxlcyBhZGRlZC1m aWxlcyByZW1vdmVkLWZpbGVzKQorICAgICAgICAgIChsZXQgKChzYXZlLXNpbGVudGx5IHQp CisgICAgICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQorICAgICAgICAgICAg KHNhdmUtYnVmZmVyIDApKSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tbWF5YmUtZ2Vu ZXJhdGUgKCkKKyAgKGxldCAocHJvaikKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10 YWdzLXJvb3QKKyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVm YXVsdC1kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdz LWNsZWFudXApKQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290 KQorICAgICAgICAgICAgICAgOzsgSWYgZXhpc3RpbmcgdGFibGUgaXMgdmlzaXRlZCB0aGF0 J3Mgbm90IGdlbmVyYXRlZCBieQorICAgICAgICAgICAgICAgOzsgdGhpcyBtb2RlLCBza2lw IGFsbCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgKG5vdCAob3IgdGFncy1maWxl LW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAg ICAgICAgICAgICAoZmlsZS1leGlzdHMtcCAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZp bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChwcm9qZWN0 LWN1cnJlbnQpKSkpKQorICAgICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFi bGUsIHJlZnJlc2hpbmcuLi4iKQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2op KQorICAgICh3aGVuIChhbmQgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBw cm9qIChvciBwcm9qIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2Vu ZXJhdGluZyBuZXcgdGFncyB0YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUt dG8tc2Vjb25kcykpKQorICAgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJv aikKKyAgICAgICAgKG1lc3NhZ2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNl Y29uZHMpIHN0YXJ0KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChw cm9qKQorICAobGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChk ZWZhdWx0LWRpcmVjdG9yeSByb290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nh bm5pbmcgbW9yZSBlZmZpY2llbnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRl cmluZyBieSBnbG9iIHRvIHByb2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgor ICAgICAgICAgKGZpbGVzIChwcm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNo LXJlIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAg ICAgICAgKHJlZ2V4cC1vcHQgZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAg ICAgICAgICAgICAgICAiXFwnIikpCisgICAgICAgICAoaXItc3RhcnQgKDEtIChsZW5ndGgg cm9vdCkpKQorICAgICAgICAgKGlnbm9yZXMtcmVnZXhwcworICAgICAgICAgIChtYXBjYXIg IydldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cAorICAgICAgICAgICAgICAgICAgZXRhZ3Mt cmVnZW4taWdub3JlcykpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikg KG9yIChub3QgKHN0cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAg IChzdHJpbmctbWF0Y2gtcCAiL1xcLiMiIGYpIDtCYWNrdXAgZmlsZXMuCisgICAgICAgICAg ICAgICAgKGNsLXNvbWUgKGxhbWJkYSAoaWdub3JlKSAoc3RyaW5nLW1hdGNoIGlnbm9yZSBm IGlyLXN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzLXJlZ2V4cHMp KSkKKyAgICAgZmlsZXMpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhw IChpZ25vcmUpCisgIChyZXF1aXJlICdkaXJlZCkKKyAgOzsgSXQncyBzb21ld2hhdCBicml0 dGxlIHRvIHJlbHkgb24gRGlyZWQuCisgIChsZXQgKChyZSAoZGlyZWQtZ2xvYi1yZWdleHAg aWdub3JlKSkpCisgICAgOzsgV2UgY291bGQgaW1wbGVtZW50IHJvb3QgYW5jaG9yaW5nIGhl cmUsIGJ1dCBcXD0gZG9lc24ndCB3b3JrIGluCisgICAgOzsgc3RyaW5nLW1hdGNoIDotKC4K KyAgICAoY29uY2F0ICh1bmxlc3MgKGVxID8vIChhcmVmIHJlIDMpKSAiLyIpCisgICAgICAg ICAgICA7OyBDdXR0aW5nIG9mZiB0aGUgYW5jaG9ycyBhZGRlZCBieSBgZGlyZWQtZ2xvYi1y ZWdleHAnLgorICAgICAgICAgICAgKHN1YnN0cmluZyByZSAyICgtIChsZW5ndGggcmUpIDIp KQorICAgICAgICAgICAgOzsgVGhpcyB3YXkgd2UgYWxsb3cgYSBnbG9iIHRvIG1hdGNoIGFn YWluc3QgYSBkaXJlY3RvcnkKKyAgICAgICAgICAgIDs7IG5hbWUsIG9yIGEgZmlsZSBuYW1l LiAgQW5kIHdoZW4gaXQgZW5kcyB3aXRoIC8gYWxyZWFkeSwKKyAgICAgICAgICAgIDs7IG5v IG5lZWQgdG8gYWRkIHRoZSBhbmNob3JpbmcuCisgICAgICAgICAgICAodW5sZXNzIChlcSA/ LyAoYXJlZiByZSAoLSAobGVuZ3RoIHJlKSAzKSkpCisgICAgICAgICAgICAgIDs7IEVpdGhl ciBtYXRjaCBhIGZ1bGwgbmFtZSBzZWdtZW50LCBvciBlb3MuCisgICAgICAgICAgICAgICJc XCg/Oi9cXHxcXCdcXCkiKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJh dGUgKHByb2opCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290IHByb2opKQorICAgICAg ICAgKGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICAoZmlsZXMgKGV0YWdzLXJl Z2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgICAodGFncy1maWxlIChldGFncy1yZWdl bi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAgICAgIChjdGFncy1wIChldGFncy1y ZWdlbi0tY3RhZ3MtcCkpCisgICAgICAgICAoY29tbWFuZCAoZm9ybWF0ICIlcyAlcyAlcyAt IC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFt CisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0tYnVpbGQt cHJvZ3JhbS1vcHRpb25zIGN0YWdzLXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjdGFncydzIGV0 YWdzIHJlcXVpcmVzICctTCcgZm9yIHN0ZGluIGlucHV0LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgY3RhZ3MtcCAiLUwiICIiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWdzLWZpbGUpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKG1hcGMgKGxh bWJkYSAoZikKKyAgICAgICAgICAgICAgKGluc2VydCBmICJcbiIpKQorICAgICAgICAgICAg ZmlsZXMpCisgICAgICAoc2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1pbikgKHBv aW50LW1heCkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBu aWwgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSB0KSkKKyAgICAoZXRhZ3MtcmVn ZW4tLXZpc2l0LXRhYmxlIHRhZ3MtZmlsZSByb290KSkpCisKKyhkZWZ1biBldGFncy1yZWdl bi0tdmlzaXQtdGFibGUgKHRhZ3MtZmlsZSByb290KQorICA7OyBJbnZhbGlkYXRlIHRoZSBz Y2FubmVkIHRhZ3MgYWZ0ZXIgYW55IGNoYW5nZSBpcyB3cml0dGVuIHRvIGRpc2suCisgIChh ZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQor ICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1u ZXcpCisgIChzZXRxIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgdGFncy1maWxlCisgICAgICAg IGV0YWdzLXJlZ2VuLS10YWdzLXJvb3Qgcm9vdCkKKyAgKHZpc2l0LXRhZ3MtdGFibGUgZXRh Z3MtcmVnZW4tLXRhZ3MtZmlsZSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tY3RhZ3MtcCAo KQorICAoc3RyaW5nLXNlYXJjaCAiQ3RhZ3MiCisgICAgICAgICAgICAgICAgIChzaGVsbC1j b21tYW5kLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMgLS12ZXJz aW9uIiBldGFncy1yZWdlbi1wcm9ncmFtKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWJ1 aWxkLXByb2dyYW0tb3B0aW9ucyAoY3RhZ3MtcCkKKyAgKHdoZW4gKGFuZCBldGFncy1yZWdl bi1yZWdleHAtYWxpc3QgY3RhZ3MtcCkKKyAgICAodXNlci1lcnJvciAiZXRhZ3MtcmVnZW4t cmVnZXhwLWFsaXN0IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBDdGFncyIpKQorICAobmNvbmMK KyAgIChtYXBjYW4KKyAgICAobGFtYmRhIChncm91cCkKKyAgICAgIChtYXBjYW4KKyAgICAg ICAobGFtYmRhIChsYW5nKQorICAgICAgICAgKG1hcGNhciAobGFtYmRhIChyZWdleHApCisg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiLS1yZWdleD0iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2hlbGwtcXVvdGUtYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICJ7JXN9JXMiIGxhbmcgcmVnZXhwKSkpKQorICAgICAgICAgICAg ICAgICAoY2RyIGdyb3VwKSkpCisgICAgICAgKGNhciBncm91cCkpKQorICAgIGV0YWdzLXJl Z2VuLXJlZ2V4cC1hbGlzdCkKKyAgIChtYXBjYXIgIydzaGVsbC1xdW90ZS1hcmd1bWVudAor ICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlvbnMpKSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSAoKQorICA7OyBUT0RPOiBNYXliZSBvbmx5IGRvIHRo aXMgd2hlbiBFbWFjcyBpcyBpZGxlIGZvciBhIGJpdC4gIE9yIGRlZmVyCisgIDs7IHRoZSB1 cGRhdGVzIGFuZCBkbyB0aGVtIGxhdGVyIGluIGJ1cnN0cyB3aGVuIHRoZSB0YWJsZSBpcyB1 c2VkLgorICAobGV0KiAoKGZpbGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAg KHRhZ3MtZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChnZXQtZmlsZS1idWZmZXIgZXRhZ3MtcmVnZW4tLXRhZ3Mt ZmlsZSkpKQorICAgICAgICAgKHJlbG5hbWUgKGNvbmNhdCAiLyIgKGZpbGUtcmVsYXRpdmUt bmFtZSBmaWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgICAgKGlnbm9y ZXMgZXRhZ3MtcmVnZW4taWdub3JlcykKKyAgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAo Y29uZAorICAgICAgICAgKChhbmQgZXRhZ3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAg ICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAg ICAgICAgICAgICAgKHNldHEgcHIgKHByb2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAg ICAoZXF1YWwgKHByb2plY3Qtcm9vdCBwcikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAg ICAgICAgICAgICAgIChtZW1iZXIgZmlsZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisg ICAgICAgICAgKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBz aG91bGQtc2NhbiB0KSkKKyAgICAgICAgICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxl LWJ1ZikKKyAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUt bmFtZSkpCisgICAgICAgICAgKHNldHEgc2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVu IChhbmQgc2hvdWxkLXNjYW4KKyAgICAgICAgICAgICAgICAgKG5vdCAoY2wtc29tZQorICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpZ25vcmUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgIChl dGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cCBpZ25vcmUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzKSkpCisg ICAgICAgIChldGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAo bGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4 IG5pbCkpCisgICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1yZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICh3aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5h bWUpIG5pbCB0KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAg ICAgIChzZWFyY2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGlu aGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAg ICAgICAgICAgICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkp KSkKKyAgICB0KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3Qg ZmlsZS1uYW1lcykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlv bnMgKGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1j dGFncy1wKSkpCisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6 IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7 IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuICBCdXQgYHNoZWxsLWNvbW1hbmQnIG1ha2VzIGl0 IGVhc3kgdG8KKyAgICA7OyBkaXJlY3Qgc3RkZXJyIHRvIGEgc2VwYXJhdGUgYnVmZmVyLgor ICAgIChzaGVsbC1jb21tYW5kCisgICAgIChmb3JtYXQgIiVzICVzICVzIC1vIC0iCisgICAg ICAgICAgICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbSAobWFwY29uY2F0ICMnaWRlbnRpdHkgb3B0 aW9ucyAiICIpCisgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2lkZW50aXR5IGZpbGUtbmFt ZXMgIiAiKSkKKyAgICAgdCBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lKSkKKyAg OzsgRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzPworICA7OyBDb21w bGV0aW9uIHRhYmxlIGlzIHRoZSBvbmx5IHJlbWFpbmluZyBwbGFjZSB3aGVyZSB0aGUKKyAg OzsgdXBkYXRlIGlzIG5vdCBpbmNyZW1lbnRhbC4KKyAgKHNldHEtZGVmYXVsdCB0YWdzLWNv bXBsZXRpb24tdGFibGUgbmlsKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1tYXJrLWFzLW5l dyAoKQorICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QKKyAgICAgICAgICAg ICAobm90IGJ1ZmZlci1maWxlLW51bWJlcikpCisgICAgKHNldHEtbG9jYWwgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIHQpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAg KCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZmZXIg KGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAoYW5k IGJ1ZmZlcgorICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHRhZ3Mt cmVzZXQtdGFncy10YWJsZXMpCisgICAgKHNldHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAg ICAgICAgdGFncy10YWJsZS1saXN0IG5pbAorICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdz LWZpbGUgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAo cmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmls ZSkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1h cmstYXMtbmV3KSkKKworKGRlZnZhciBldGFncy1yZWdlbi1tb2RlLW1hcCAobWFrZS1zcGFy c2Uta2V5bWFwKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFn cy1yZWdlbi1tb2RlCisgICJNaW5vciBtb2RlIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUg YW5kIHVwZGF0ZSB0YWdzIHRhYmxlcy4KKworVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0 aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCit0aGUgY3VycmVudCBwcm9q ZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0 aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKK1RoZSBleGNlcHRpb24gaXMgbWFk ZSB3aGVuIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHNlbGVjdGVkIGEgdGFncwordGFibGUgbWFu dWFsbHkgKGZvciBleGFtcGxlLCB1c2luZyBcXFt2aXNpdC10YWdzLXRhYmxlXSkuICBUaGVu Cit0aGlzIG1vZGUgZG9lc24ndCBkbyBhbnl0aGluZy4gIFJlc2V0IHRoZSB2aXNpdGVkIHRh Z3MgdGFibGVzCit1c2luZyBcXFt0YWdzLXJlc2V0LXRhZ3MtdGFibGVzXS4iCisgIDpnbG9i YWwgdAorICAoaWYgZXRhZ3MtcmVnZW4tbW9kZQorICAgICAgKHByb2duCisgICAgICAgIChh ZHZpY2UtYWRkICdldGFncy0teHJlZi1iYWNrZW5kIDpiZWZvcmUKKyAgICAgICAgICAgICAg ICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisgICAgICAgIChhZHZpY2Ut YWRkICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gOmJlZm9yZQorICAgICAg ICAgICAgICAgICAgICAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0ZSkpCisgICAgKGFk dmljZS1yZW1vdmUgJ2V0YWdzLS14cmVmLWJhY2tlbmQgIydldGFncy1yZWdlbi0tbWF5YmUt Z2VuZXJhdGUpCisgICAgKGFkdmljZS1yZW1vdmUgJ3RhZ3MtY29tcGxldGlvbi1hdC1wb2lu dC1mdW5jdGlvbiAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0ZSkKKyAgICAoZXRhZ3Mt cmVnZW4tLXRhZ3MtY2xlYW51cCkpKQorCisocHJvdmlkZSAnZXRhZ3MtcmVnZW4pCisKKzs7 OyBldGFncy1yZWdlbi5lbCBlbmRzIGhlcmUK --------------pYMvmnLx4ROehGZTLDSiKerS-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 11:51:01 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 16:51:01 +0000 Received: from localhost ([127.0.0.1]:48665 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKLVF-0001GK-A0 for submit@debbugs.gnu.org; Mon, 01 Jan 2024 11:51:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58780) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKLVD-0001G5-0r for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 11:51:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rKLV3-00061d-Rq; Mon, 01 Jan 2024 11:50:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=oQM85VSbaSJv5BN1ZplckYpmxZ7EoDd3lmsEB0JrQng=; b=cMMcRShcMgi3 AAb0Qg2G/7sELi4qPLhqS1gI2TB+eDIzQFfnev2W0Y9ghr3OS4rcbjsnIv7b7hoKegFLt8dIDPSL8 Dc58XraXMqDcp0F/X1UYAb3yA2In4HzW3JZEDiJM3RtwDh/Z3kl8FCmtVrlkQDp8GJEkf4WI2b+J9 h655jD61wwrT3FZf1+d5ayBsmX3PPV5B2o0XwRgi6lV8QZshCkAdktxKccUD5S20tO7u3b0nIMVj2 MpNI8DP+j0b93NUxx2WlWGi4jTpEnqhO5ZVkYsuBtaWeC0nlFqzMu78F2QbT3bnhRYcHbcu1jifiY MvPz6MQe0L2Mxv3E/qj1sQ==; Date: Mon, 01 Jan 2024 18:50:34 +0200 Message-Id: <83il4d0zhh.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> (message from Dmitry Gutov on Mon, 1 Jan 2024 17:47:09 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 1 Jan 2024 17:47:09 +0200 > Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > michael.albinus@gmx.de > From: Dmitry Gutov > > > I guess for now it will be enough to document that invoking > > visit-tags-table disables the mode for that project. AFAICT this is > > not currently documented anywhere in the patch. > > OK, added a paragraph to the mode's docstring. > [...] > + > +The exception is made when the user has already selected a tags > +table manually (for example, using \\[visit-tags-table]). Then > +this mode doesn't do anything. Reset the visited tags tables > +using \\[tags-reset-tags-tables]." The above is only true for the project whose TAGS was manually visited, right? IOW, it's not that once the use invokes visit-tags-table once, this mode will be effectively disabled for the entire session, right? If so, I suggest to make it clear: If you select a tags table manually (for example, using \\[visit-tags-table]), then this mode will be effectively disabled for the project or the directory tree from which the tags table was visited (the mode will still auto-regenerate tags tables for other projects and directory trees). Use \\[tags-reset-tags-tables] to countermand the effect of a previous \\[visit-tags-table]. Otherwise, this LGTM, thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 12:23:44 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 17:23:44 +0000 Received: from localhost ([127.0.0.1]:48685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKM0t-0007FJ-Fa for submit@debbugs.gnu.org; Mon, 01 Jan 2024 12:23:43 -0500 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:60057) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKM0r-0007F5-Uj for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 12:23:42 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 4FDDA3200BA8; Mon, 1 Jan 2024 12:23:33 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 01 Jan 2024 12:23:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704129812; x=1704216212; bh=N3rcES6OAapa/RcCRD0U7tQRQ7w36h25RwlWpK0JQqI=; b= sLk9eFKrak4DMzv/xXMMj0hKdSHkQOvdSipWHYRubPUHUum4b+GkMXeEYAQuW1Tc Mhisx2i3baXKXlhrY/DWu4WIZ17xhhhxtYmbGfHZr1qcJMn89TVj9A7PpkDNJQ9x kFHuZa6Nftdg3MnriqxO27fBC50XsfiHXRyPPmEAgSKbC6CQHqxllh7Xq+Ruy5h4 mmSakWuNVlSjSEkqncJRAaNRwLGhTVL7IPomhbcJHu5571tUicAhMOw28OI4QLsI e9humlU5hBMzNAF5uNL0R7u3cbuse0jhf9LwD2PLoW0ukJylsimdqshEZclpZWvo 8GUVjtgY08IHQvTEnniGaA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704129812; x= 1704216212; bh=N3rcES6OAapa/RcCRD0U7tQRQ7w36h25RwlWpK0JQqI=; b=X J0Z+S9IwboqmWj9v1KS510E5rQm7TrB3+WBc3yl3j8B9YJ9Z9/PSRCPeBBWi3694 TgQgHl6R7gKy/WPGC5X7Z3v1Lj0jsBT/JJv1JIchSALJiIc9VaMgc3xhUNWkc5Hf P5GmcCb60DY4W/u0fH0WRh2ph85ugGJkCMWCc08CJDvJMzo15PFXn2dpt7tsiqPF hDi8cfOhUox+WtXGcI4DCpCkcqJ4guFlRhqy9RFfg9APu1do/kWijsZ+bS5YXFoa vM2Wt9pT9Q2x5RYuZM9ygmJ/dPYGgnHJOIXQCrb1NQ4fF6e11uSTmUAlEcWz6PeB qR+E9WEGNWLe/VTsRB8Ew== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegtddguddttdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefkffggfgfuvfevfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhm ihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrg htthgvrhhnpeetudeljeegheetgfehgeejkeeuhedvveeikeeufedtvddtveefhfdvveeg udejheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 12:23:31 -0500 (EST) Message-ID: <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> Date: Mon, 1 Jan 2024 19:23:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83il4d0zhh.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 01/01/2024 18:50, Eli Zaretskii wrote: >> Date: Mon, 1 Jan 2024 17:47:09 +0200 >> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >> michael.albinus@gmx.de >> From: Dmitry Gutov >> >>> I guess for now it will be enough to document that invoking >>> visit-tags-table disables the mode for that project. AFAICT this is >>> not currently documented anywhere in the patch. >> >> OK, added a paragraph to the mode's docstring. >> [...] >> + >> +The exception is made when the user has already selected a tags >> +table manually (for example, using \\[visit-tags-table]). Then >> +this mode doesn't do anything. Reset the visited tags tables >> +using \\[tags-reset-tags-tables]." > > The above is only true for the project whose TAGS was manually > visited, right? IOW, it's not that once the use invokes > visit-tags-table once, this mode will be effectively disabled for the > entire session, right? No, it's the latter. It's off for the whole session, just like a visited TAGS file is active for the whole session (not limited to any specific project). The current choice is optimized for making it possible to flip etags-regen-mode on globally while not interrupting the workflows of most (hopefully all) people who currently use etags. > If so, I suggest to make it clear: > > If you select a tags table manually (for example, using > \\[visit-tags-table]), then this mode will be effectively disabled > for the project or the directory tree from which the tags table was > visited (the mode will still auto-regenerate tags tables for other > projects and directory trees). Use \\[tags-reset-tags-tables] to > countermand the effect of a previous \\[visit-tags-table]. > > Otherwise, this LGTM, thanks. We could do something like this too, but a tags file, in general, can't always be attributed to a specific project. At least we won't always be able to do that correctly for custom-made tag files. For example, the user could have that file include another tags file from a different directory on the same level, just like we here do with directories 'src' and 'lisp'. If 'src' and 'lisp' were configured to be separate projects, a visited src/TAGS would be attributed to the 'src' project only, while in fact it covers both. So the simplest solution is not to try. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 12:39:28 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 17:39:28 +0000 Received: from localhost ([127.0.0.1]:48697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKMG7-0001r4-LH for submit@debbugs.gnu.org; Mon, 01 Jan 2024 12:39:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51160) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKMG6-0001qs-KJ for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 12:39:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rKMFz-00041e-9g; Mon, 01 Jan 2024 12:39:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=hXyvw+ePgVvyD6bHJPNlc04DokXYEr2DmE3GBIM/Wjw=; b=TR/z7aYoGSOU 2gH/sjW2ImhewS6ym+EPJQIEJ98JxvQOPh4U/g9ycBmeZZj9eTXUHjeJokPC8HktuimPUd8OtYNzb OQj4UFPvkRLzoH3buK+HamEKCqGRTtyeDyfc7hPP8Y2l9Ps0m/hYqnZKcYvJF7OvgoSVWKGs2CkfB RWZIkM2hUDmR6XQLoXW79uvAAXfR5u7RhBRtcL81Uk8/MLwttj9u7OYOp1OwakRX0PuKxeclvC3wR ooEmeHJEKYvGTW1AHdjQ/KklIE4GxbOTNK61R2VL/9HueIbdsJZsGtvI8qnd7DjJs0TPQJw9hN/pH H0YgvWQqYfXctXMOsst3VQ==; Date: Mon, 01 Jan 2024 19:39:16 +0200 Message-Id: <83frzh0x8b.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> (message from Dmitry Gutov on Mon, 1 Jan 2024 19:23:28 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 1 Jan 2024 19:23:28 +0200 > Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > michael.albinus@gmx.de > From: Dmitry Gutov > > On 01/01/2024 18:50, Eli Zaretskii wrote: > >> +The exception is made when the user has already selected a tags > >> +table manually (for example, using \\[visit-tags-table]). Then > >> +this mode doesn't do anything. Reset the visited tags tables > >> +using \\[tags-reset-tags-tables]." > > > > The above is only true for the project whose TAGS was manually > > visited, right? IOW, it's not that once the use invokes > > visit-tags-table once, this mode will be effectively disabled for the > > entire session, right? > > No, it's the latter. It's off for the whole session, just like a visited > TAGS file is active for the whole session (not limited to any specific > project). OK, then please tweak my suggested text to explain the situation correctly instead. > a tags file, in general, can't always be attributed to a specific > project. That's too bad, IMO, but it's a separate issue. One of the annoyances I had with tags was that it was difficult to have several independent tags tables loaded, each one for a different set of sources. I hoped that project.el has solved this already, but I guess we are not there yet. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 13:48:52 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 18:48:52 +0000 Received: from localhost ([127.0.0.1]:48759 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKNLH-000074-J7 for submit@debbugs.gnu.org; Mon, 01 Jan 2024 13:48:52 -0500 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:53493) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKNLF-00006M-1g for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 13:48:50 -0500 Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailout.west.internal (Postfix) with ESMTP id DBD573200C46; Mon, 1 Jan 2024 13:48:40 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Mon, 01 Jan 2024 13:48:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704134920; x=1704221320; bh=CDvMVzpZm2+GKsnz87qb8dzkmbuVE1lHlb7JOfcrGvY=; b= R/IMH3SxHtHVc8HmRto35EQbjYTkpAV1ngQa5bNxmdHJ/J0AXvQ8dw+39rYqWh3O tiw9Z/LQn2nMZLCgzEalkj+wCc/4ykEdWTvZgoljB7FJkhWO4O9P96qFzQkNM3ib BV6dMC7ueJ04PDNX2DoA7R7Rp9/LEke+n5KFTRkaxsmMSAfJ3ocvbCtj2sQqCjog TscJfzVKnb/NrQDa/1Og6oZa3e64DRY6Ca2kbtKFvxIv43p+PHElhDY5wLsj49rn 8zTi8q/5qfkzO0ZzZ3/kkw1ZOcOxKJMnC+mdaa4vibgetU5ta9KoX0dHGJhErkb9 hG9X8mZMgDnkupUZtr5iVw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704134920; x= 1704221320; bh=CDvMVzpZm2+GKsnz87qb8dzkmbuVE1lHlb7JOfcrGvY=; b=W JDsB4oeQCXO5A50ET7H78dUglWYkO/RBRLHuxLKA7PRRO8BH5lXF9422IfuJKr9d sxmJc3nHBdaLJWvaGrXHfqNjN4VgSC4DncCORnq9ndx3j3w07C/T6o2yUEV1nOXA 21yiv40QNVAKBxC1zQ8VhukDFxqxYXKH7b2+rjVA5wju2fsVTZfH+KjVT9SE0rMT PanUd2AJb3VUuhNHs852A8kTIKZOtBb8qQBcDwoVsxAf/gUmqEPEqMNMqpROClbG 1oqOj95Au3u60Mh7N8gTsUD5IfuqVPEs4GQgh8aZM8N6IVhHnCE9RHfvHDnvuGTW nZp0XO7j/kUIvaR5AlkDQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegtddguddujecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefkffggfgfuvfevfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhm ihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrg htthgvrhhnpeetudeljeegheetgfehgeejkeeuhedvveeikeeufedtvddtveefhfdvveeg udejheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 13:48:38 -0500 (EST) Message-ID: <285175f0-24f1-46c5-8559-8d52b1b30b76@gutov.dev> Date: Mon, 1 Jan 2024 20:48:37 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> <83frzh0x8b.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83frzh0x8b.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 01/01/2024 19:39, Eli Zaretskii wrote: >> Date: Mon, 1 Jan 2024 19:23:28 +0200 >> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >> michael.albinus@gmx.de >> From: Dmitry Gutov >> >> On 01/01/2024 18:50, Eli Zaretskii wrote: >>>> +The exception is made when the user has already selected a tags >>>> +table manually (for example, using \\[visit-tags-table]). Then >>>> +this mode doesn't do anything. Reset the visited tags tables >>>> +using \\[tags-reset-tags-tables]." >>> >>> The above is only true for the project whose TAGS was manually >>> visited, right? IOW, it's not that once the use invokes >>> visit-tags-table once, this mode will be effectively disabled for the >>> entire session, right? >> >> No, it's the latter. It's off for the whole session, just like a visited >> TAGS file is active for the whole session (not limited to any specific >> project). > > OK, then please tweak my suggested text to explain the situation > correctly instead. How about this? If you select a tags table manually (for example, using \\[visit-tags-table]), then this mode will be effectively disabled for the entire session. Use \\[tags-reset-tags-tables] to countermand the effect of a previous \\[visit-tags-table]. >> a tags file, in general, can't always be attributed to a specific >> project. > > That's too bad, IMO, but it's a separate issue. One of the annoyances > I had with tags was that it was difficult to have several independent > tags tables loaded, each one for a different set of sources. I hoped > that project.el has solved this already, but I guess we are not there > yet. etags-regen-mode kind of solves that, by checking and resynchronizing tags tables when you switch between projects. That works when a tags file already exists with the recognized name in that other project (e.g. because you worked on it just recently). Projectile has a different solution using local tags tables, which is easy to adapt to project.el: (defun project-visit-tags () (let* ((pr (project-current)) (tags-file (and pr (expand-file-name "TAGS" (project-root pr))))) (and tags-file (file-exists-p tags-file) (visit-tags-table tags-file t)))) (add-hook 'find-file-hook #'project-visit-tags) And if you limit the above to only certain projects (by e.g. checking for some additional file in the directory), then etags-regen-mode should stay active in the other projects, because it won't see the buffer-local bindings for tags-file-name and tags-table-list (the above snippet keeps the global value nil). The buffer-local tag tables are not that well-tested overall (e.g. even tags-reset-tags-tables resets the local binding, if available, rather than the global one), but this combination should work in a personal config. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 14:25:53 2024 Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 19:25:53 +0000 Received: from localhost ([127.0.0.1]:48806 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKNv6-0006DE-Tm for submit@debbugs.gnu.org; Mon, 01 Jan 2024 14:25:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41464) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKNv4-0006Cw-Ce for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 14:25:51 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rKNuw-0002NZ-6r; Mon, 01 Jan 2024 14:25:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ELodEKJ2EbYE9N9vGwN7zW5Z3pKninx8y8kRVq6OsIw=; b=QKf0SAjYGhvf PmAQA05P59NVPRfAyuGgL3FSgpf0H4sTxGSGfzcudHOhIHGvvfsITjQ3Y3QziqpXvesBazW4pm/NV xbloqUnVhTrCSOduL6r63uM4ZmVV6R64fxbFX5pHXHCp/MdXMLvcqY73aDhnBWHZ+5HZOVxLNtjQq r2Kw6KngrwEiYbCzysi2K+BZFe28f3W+iiHEmDaEkE4VakOyBc5j+YiJkHBquAj8icv2VjBtNsie+ NI7B7mG6B/LHaMDbNrV8XzRVySPW23JJkBvkFVAza0vR2mJiDDmB2bI24rCUpUbbCjFhYYJ382KCn N/OYoJQ8nTpH+dAFIk4l3Q==; Date: Mon, 01 Jan 2024 21:25:35 +0200 Message-Id: <83edf026vk.fsf@gnu.org> From: Eli Zaretskii To: Dmitry Gutov In-Reply-To: <285175f0-24f1-46c5-8559-8d52b1b30b76@gutov.dev> (message from Dmitry Gutov on Mon, 1 Jan 2024 20:48:37 +0200) Subject: Re: bug#67687: Feature request: automatic tags management References: <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> <83frzh0x8b.fsf@gnu.org> <285175f0-24f1-46c5-8559-8d52b1b30b76@gutov.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 1 Jan 2024 20:48:37 +0200 > Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > michael.albinus@gmx.de > From: Dmitry Gutov > > On 01/01/2024 19:39, Eli Zaretskii wrote: > >> Date: Mon, 1 Jan 2024 19:23:28 +0200 > >> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, > >> michael.albinus@gmx.de > >> From: Dmitry Gutov > >> > >> On 01/01/2024 18:50, Eli Zaretskii wrote: > >>>> +The exception is made when the user has already selected a tags > >>>> +table manually (for example, using \\[visit-tags-table]). Then > >>>> +this mode doesn't do anything. Reset the visited tags tables > >>>> +using \\[tags-reset-tags-tables]." > >>> > >>> The above is only true for the project whose TAGS was manually > >>> visited, right? IOW, it's not that once the use invokes > >>> visit-tags-table once, this mode will be effectively disabled for the > >>> entire session, right? > >> > >> No, it's the latter. It's off for the whole session, just like a visited > >> TAGS file is active for the whole session (not limited to any specific > >> project). > > > > OK, then please tweak my suggested text to explain the situation > > correctly instead. > > How about this? > > If you select a tags table manually (for example, using > \\[visit-tags-table]), then this mode will be effectively > disabled for the entire session. Use \\[tags-reset-tags-tables] > to countermand the effect of a previous \\[visit-tags-table]. SGTM, thanks. > (defun project-visit-tags () > (let* ((pr (project-current)) > (tags-file (and pr > (expand-file-name "TAGS" (project-root pr))))) > (and tags-file > (file-exists-p tags-file) > (visit-tags-table tags-file t)))) > > (add-hook 'find-file-hook #'project-visit-tags) This could work, but IMO it would be more elegant to avoid use of find-file-hook, and instead have some data structure that maps projects or directories to tags table files. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 19:40:21 2024 Received: (at 67687) by debbugs.gnu.org; 2 Jan 2024 00:40:21 +0000 Received: from localhost ([127.0.0.1]:48980 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKSpQ-0001WY-Mb for submit@debbugs.gnu.org; Mon, 01 Jan 2024 19:40:20 -0500 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:42138) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKSpO-0001WL-J0 for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 19:40:19 -0500 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-5534dcfdd61so15309714a12.0 for <67687@debbugs.gnu.org>; Mon, 01 Jan 2024 16:40:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704156010; x=1704760810; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=KFmeyARJzbXV6Fuq4W14Ay/6XH5aQseyJBaq//BRWCU=; b=ZpkFDFmM+8SJ49Y/uof2geP4PPOmc54N6R3d5zEkjsp8sTb4t8c7wam+2ztPOoXXI+ pNuXoXiP81UYxaiTv3aJyPqXbjDzDhMN/2x7FlQfW3+ai4Y0pCQsvluJXKEy++p9693U 2LikC8a1dIFxlJXBz+o2pIeu2aw7vUE84agsZIpg1lLSLlHuJ90kcLG9Ym4asSpEBNbA +Jzp9fw9PO8AHOtziRW4LqK+GPbMorTPidHZS64KN2arNT6c1/42whAK3a/z9HmUaEZo WpQVmGosjEl7QrdiiVEwp+2X1j7yXLyM+C8+y/I0SR48Ip/yU5Lksql9yCm2Ru4gag1z aUWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704156010; x=1704760810; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KFmeyARJzbXV6Fuq4W14Ay/6XH5aQseyJBaq//BRWCU=; b=F3fRdB27et6Q3gwTezmqgZsb92XXZ9X23xhfN2p9VYMkdpFAE7MvXaFd9XdtMFbM56 qXyDmDCypNRm9tnlTGVcTHptszIFoUDOQ4fGWN0MutTRb5o9o9COhhoDbnHNUxP8h7UD Pw8ecjqKritjT5pI6/yhCH3SzbSoN4m9fyVnxA5KJbyDH+AHE8wI3PQ4FMMTbVF8HlRC oXj4/qRevfUG4E6Di3URnE4tLoUmnVpgocVU159ahoJeIxFHXqStsdA9zbHZBgtUAFDO JYZ1T9XOOYxslgPsUZNqph0hUn49svDtdxTZXjJrOPTS1UNCthuRX6gOG4XPiLKAmt7J hu9w== X-Gm-Message-State: AOJu0YwOGUX44lOA5oEUE9IB1u3G24u8ALDRPQOdzBNbL3d6gfzlQ94N Syj4cYva5W159uXd+2k+KTbhF5KjNstKqeuBnyg= X-Google-Smtp-Source: AGHT+IE+CFeLhfJiEyglcGbh6poZrgAs4mS0YRgjnYPPl88LUQICGWp4u0Sz6j/aFCzrHkm+LxEFSKMpa9lmI5jYt20= X-Received: by 2002:a50:a453:0:b0:553:8396:ef48 with SMTP id v19-20020a50a453000000b005538396ef48mr16067794edb.23.1704156010470; Mon, 01 Jan 2024 16:40:10 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 1 Jan 2024 16:40:10 -0800 From: Stefan Kangas In-Reply-To: <2c7ce860-17cf-4955-8150-5474e36faca0@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> <2c7ce860-17cf-4955-8150-5474e36faca0@gutov.dev> MIME-Version: 1.0 Date: Mon, 1 Jan 2024 16:40:10 -0800 Message-ID: Subject: Re: bug#67687: Feature request: automatic tags management To: Dmitry Gutov , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Dmitry Gutov writes: >> Should this be marked unsafe? Actually, same question for all of the >> above defcustoms, given that we use `shell-command-to-string'. > > Given that this option doesn't have the 'safe-local-variable' property, > do we need to do something else? I was thinking of setting :risky t >>> +;; We have to list all extensions: etags falls back to Fortran >>> +;; when it cannot determine the type of the file. >> >> (A battle-tested default, if nothing else. ;-) > > I'd rather etags skipped unknown files, but there is no such option. Yeah, that might make more sense. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 20:31:22 2024 Received: (at 67687) by debbugs.gnu.org; 2 Jan 2024 01:31:22 +0000 Received: from localhost ([127.0.0.1]:49060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTco-0004r0-3o for submit@debbugs.gnu.org; Mon, 01 Jan 2024 20:31:22 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:38857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTcm-0004kr-EW for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 20:31:21 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 317975C00C0; Mon, 1 Jan 2024 20:31:13 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Mon, 01 Jan 2024 20:31:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704159073; x=1704245473; bh=y7yI91p79PPT9D/xzDcF0CRAFlj1LSOiou1COWj7Px8=; b= AhZirMrU0TZ7mnfwZM3gx4PKUfKU9vEj7wGY9pSEhq0FisriRBBpmV0URIEwU1fA ShoomnHTE9CAeJ1LLzRDn7emYlhCRNYbEMFgq7haGedvBcEZHvldvQzEXcCpfFC4 zylcz0gcT44+AvtMcHI20rG+cyG/ZuvCZLC97mp3pYoUwonZ3VptCYIrhISiPyJq RyT4uoLErIfPZSm/eUWd6Zrw//Mo20xB5cXNmL2hLKDVWOTzS5hs6o9zYyfuqRHF iCmfQxREV+S1SH1MD8NOqes0sTA1xn7vk9bK0YcdjqwEjtVdj8OoWBbaTo7GD7sa hNMV2QbeQlTlutXmn+BXyg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704159073; x= 1704245473; bh=y7yI91p79PPT9D/xzDcF0CRAFlj1LSOiou1COWj7Px8=; b=E hJw4qRGumcg9XIkfwg1A2C7se/EddZ0mwgNuEfQmB0WrtUubPcGWMXx6fvkWKdr4 cbzXDgVnm4k7y23P0xMcWHg4I2AJyIQqkMztX62Uq1eSxvCoDq08cMlAfNHndfUm XXwLus59x7CokkJ95uS4HcqGs7mdvgeb2Ms2DE1Jv+vc7it3s3nVciURblr7Gd9F y7fRB86FEOKYFUPueAyDlV+Vwm1qzZUkpUmwZ5OgjQO3P+VMnb7q07pu/+9CwyNu Yrdfxh8ARiz1t0nCdIqhaLv3GSaOavHrRSlreZfQKW7Jp/mz+TtcGhEQNkFmxTg3 itxPlN+YT2hdYGtgWGW1Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeguddgfeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 20:31:11 -0500 (EST) Message-ID: Date: Tue, 2 Jan 2024 03:31:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Stefan Kangas , Eli Zaretskii References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> <83y1de7jyr.fsf@gnu.org> <1a8c51fb-a114-42a4-ae40-8314d3f21104@gutov.dev> <83tto0400p.fsf@gnu.org> <6a684420-2098-4c9f-a17c-61150e9f3321@gutov.dev> <2c7ce860-17cf-4955-8150-5474e36faca0@gutov.dev> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 02/01/2024 02:40, Stefan Kangas wrote: > Dmitry Gutov writes: > >>> Should this be marked unsafe? Actually, same question for all of the >>> above defcustoms, given that we use `shell-command-to-string'. >> >> Given that this option doesn't have the 'safe-local-variable' property, >> do we need to do something else? > > I was thinking of setting > > :risky t I don't know, it seems like the users might want to set etags options from .dir-locals.el too. And the above would prompt the user every time they visit a file inside such project. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 01 20:40:18 2024 Received: (at 67687) by debbugs.gnu.org; 2 Jan 2024 01:40:18 +0000 Received: from localhost ([127.0.0.1]:49066 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTlS-0005Do-7C for submit@debbugs.gnu.org; Mon, 01 Jan 2024 20:40:18 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:48939) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTlP-0005DY-O8 for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 20:40:16 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 78F9F5C0144; Mon, 1 Jan 2024 20:40:08 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Mon, 01 Jan 2024 20:40:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704159608; x=1704246008; bh=3vW/FsGGa1iOMA4bzPgCmUAV7HAiTEa8CU9C2Vk+VzQ=; b= A6e49/jbJAsk5xA5wlzmRgq8MQ8H0ljTQ1vVEiN36BnShZxzqHbsK662w21GRico CvDCeTovtsbFVl8SeqtNkJf2krmN7aN5VweoMhYawtDCWwrvcsznGyac5uBSMq3M ouvlLc5NUVyPyH4sGN4LlepWgrmuT5fqbn2/+q5i1t8nvHxQh/0wZL7SOG7fsEtN pUztT6Jwp+OByRX+4DJlhMVfHK5sSMFdx6NeHrtdhEnnZ0QBApUv5DYM33mJrivF PEnnjbZNlVPK/Owjszezm1+SEI/lAp6naH9DIViiRBhpWl6/3iYmJVqRdgEj4P4t yKwNPwpgaXg1fI1NR4DHaA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704159608; x= 1704246008; bh=3vW/FsGGa1iOMA4bzPgCmUAV7HAiTEa8CU9C2Vk+VzQ=; b=z OJBvsiF8HyxIgx8Smh6Ar6HV+NbVrDG42JIKBvPk65Q2tDJ2Oemb73x4sgpIsxZK Jm44Bk+ftXNID2ENm7PUb3J3cZaGYa9mLsKG91oqXNuaznj8f8+Z5F+RY+Tmt3KS Owkc5Roiv3tOZmWC2iEniCtIgXIEVaEWtGfSJYETX5HXSxtPnaTcndoh95wZuvkn Jkfh0Zvd1Dul1ALe6hrd2xCh8O94xAGCD6/o2Pe21ZkV132TJHOAOvYqqbsvPiQs x+SovUtrCN4kmGQ7HLSiwQS0Bzvm+Hv+75WEWEAPVbit2j10Giwb6IhIeE6JRmgr U1woTkY+CAIK6ShcGTYZQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeguddgfeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepteduleejgeehtefgheegjeekueehvdevieekueeftddvtdevfefhvdevgedu jeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 20:40:06 -0500 (EST) Message-ID: <28e6ee3f-d09b-4350-a01a-29fd268ce8ce@gutov.dev> Date: Tue, 2 Jan 2024 03:40:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: Eli Zaretskii References: <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> <83frzh0x8b.fsf@gnu.org> <285175f0-24f1-46c5-8559-8d52b1b30b76@gutov.dev> <83edf026vk.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83edf026vk.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 01/01/2024 21:25, Eli Zaretskii wrote: >> Date: Mon, 1 Jan 2024 20:48:37 +0200 >> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >> michael.albinus@gmx.de >> From: Dmitry Gutov >> >> On 01/01/2024 19:39, Eli Zaretskii wrote: >>>> Date: Mon, 1 Jan 2024 19:23:28 +0200 >>>> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >>>> michael.albinus@gmx.de >>>> From: Dmitry Gutov >>>> >>>> On 01/01/2024 18:50, Eli Zaretskii wrote: >>>>>> +The exception is made when the user has already selected a tags >>>>>> +table manually (for example, using \\[visit-tags-table]). Then >>>>>> +this mode doesn't do anything. Reset the visited tags tables >>>>>> +using \\[tags-reset-tags-tables]." >>>>> >>>>> The above is only true for the project whose TAGS was manually >>>>> visited, right? IOW, it's not that once the use invokes >>>>> visit-tags-table once, this mode will be effectively disabled for the >>>>> entire session, right? >>>> >>>> No, it's the latter. It's off for the whole session, just like a visited >>>> TAGS file is active for the whole session (not limited to any specific >>>> project). >>> >>> OK, then please tweak my suggested text to explain the situation >>> correctly instead. >> >> How about this? >> >> If you select a tags table manually (for example, using >> \\[visit-tags-table]), then this mode will be effectively >> disabled for the entire session. Use \\[tags-reset-tags-tables] >> to countermand the effect of a previous \\[visit-tags-table]. > > SGTM, thanks. All right. I think I'll wait a days or two for any more comments and then install the feature. >> (defun project-visit-tags () >> (let* ((pr (project-current)) >> (tags-file (and pr >> (expand-file-name "TAGS" (project-root pr))))) >> (and tags-file >> (file-exists-p tags-file) >> (visit-tags-table tags-file t)))) >> >> (add-hook 'find-file-hook #'project-visit-tags) > > This could work, but IMO it would be more elegant to avoid use of > find-file-hook, and instead have some data structure that maps > projects or directories to tags table files. Looking into it, the variable default-tags-table-function seemed like it could work for this purpose, with settings like this: (defun my/project-default-tags-table () (let* ((pr (project-current)) (tags-file (and pr (expand-file-name "TAGS" (project-root pr))))) (and tags-file (file-exists-p tags-file) tags-file))) (setq tags-table-list '("~/vc/emacs-master/") ; List with all your projects default-tags-table-function #'my/project-default-tags-table) But alas it only changes which table is used first for finding a definition (before all others are tried), and all completions are collected from all completion tables in a global variable (tags-completion-table). So there is more work to be done to support simultaneously loaded independent tags tables. The new user option could look like this one, but it would also be used for the case of CONT=t, and tags-completion-table would need to be set buffer-locally in tags table buffers. Note that etags-regen-mode switches between the tables automatically already, so this would be orthogonal functionality at best. Though hopefully compatible, and something that'd help avoid rescanning the completions table when switching between projects. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 02 05:41:33 2024 Received: (at 67687) by debbugs.gnu.org; 2 Jan 2024 10:41:34 +0000 Received: from localhost ([127.0.0.1]:49461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcD1-00037H-4D for submit@debbugs.gnu.org; Tue, 02 Jan 2024 05:41:33 -0500 Received: from plesklin7.if1.ehiweb.it ([2a01:b600:1:61::1]:37512) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcCy-000376-Ry for 67687@debbugs.gnu.org; Tue, 02 Jan 2024 05:41:17 -0500 Received: from tucano.isti.cnr.it (tucano.isti.cnr.it [146.48.81.102]) by plesklin7.if1.ehiweb.it (Postfix) with ESMTPSA id 82E3C100344; Tue, 2 Jan 2024 11:41:11 +0100 (CET) Message-Id: <878r5810hk.fsf@tucano.isti.cnr.it> From: =?utf-8?Q?Francesco_Potort=C3=AC?= Date: Tue, 02 Jan 2024 11:41:11 +0100 To: Dmitry Gutov In-Reply-To: <95132856-65b0-4812-a124-52e0da674330@gutov.dev> (dmitry@gutov.dev) Subject: Re: bug#67687: Feature request: automatic tags management References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Organization: The GNU project X-fingerprint: 4B02 6187 5C03 D6B1 2E31 7666 09DF 2DC9 BE21 6115 X-PPP-Message-ID: <20240102104111.26760.92590@plesklin7.if1.ehiweb.it> X-PPP-Vhost: potorti.it X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) >a) We won't add new files to the index, because we (apparently) can't=20 >simply use the project's list of files -- there is no guarantee that it=20 >matches the fileset that the original author of the TAGS file had in mind. > >b) There is no way to pick up the --regex options used for generating=20 >the original TAGS, or any other options we don't know about. So if we=20 >were to just use the logic of regenerating tags for newly changed files,=20 >we would end up with a mix of tags in some files based on the set of=20 >--regex used in the past, and with tags for new files based on the=20 >configured set of --regex options. Maybe the TAGS files should contain information to regenerate them? From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 02 08:09:32 2024 Received: (at 67687) by debbugs.gnu.org; 2 Jan 2024 13:09:32 +0000 Received: from localhost ([127.0.0.1]:49597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeWS-000832-F4 for submit@debbugs.gnu.org; Tue, 02 Jan 2024 08:09:32 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:54383) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeWP-00082o-Is for 67687@debbugs.gnu.org; Tue, 02 Jan 2024 08:09:31 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id EC8F75C0193; Tue, 2 Jan 2024 08:09:21 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Tue, 02 Jan 2024 08:09:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704200961; x=1704287361; bh=TvbAaLIUdH6OdA8MAsFoXTn0iQ/nnSJT7WgMOHQOHxw=; b= TI8Zxm+HoSeMefTrAZbKHtt1HQf87jA7Y2r9I/4bscyN2aGz9tXIUVBfE8rqQGQe CrL+T4rvZ9SfXsWEybxWYP26SL2BhoKnol42hhM++BvJTnUiH1MUZOFdgLCGFtLc EUrf8YFjMh/u0TUmPWZ+dQnR9lWp6p/3ZX7ekugTpxSbtPqEmeqH6JIwgPi9PnUX +Hy/4Ef+W7mceX+kMPr64+ZYa8I+x/wFj1ARfmTi1lVe3bk6+aZX8bJtJ5jg01FG 6ilD0wMprqKEqKcnUyYXZca7lhcDTanN8hua0EMniCWYEPWMywpRAR4pg7K1QvuT AIKOiey5bvxZYV3aWxL75g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704200961; x= 1704287361; bh=TvbAaLIUdH6OdA8MAsFoXTn0iQ/nnSJT7WgMOHQOHxw=; b=h ILYFWgClnwbKWdvfgPbyaSHoUBZ/raAd2emxZ/vsJmp7XwBJHoCkURNn6ZONE+qt R6YAZwJkaogdWCFEKOBbo22iJl2su73St5YCEB+UAEkJX34vhv6RtWC0GZkhkQug 6Dz7JFldleeQiS7GmKLSnASQ8ed6H5i+cB6GN9G9L5SCe8RMP1q93jpGoIUVu42g gYGVbo1Gkdys73BdO9/V5XxJJYo2v1HcfoYgXZJa4+wky1ikZXoUApAo9vS+702e o6xSV8F7dCzD4Yf+CPv2rM8oCAgthDFXp+IiT0iMt5oH1C4ZpRsMG4BLCiRjhMZ0 slNtgiXL/WxdDjRANlZsw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegvddggeejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepgeelfeetkefghfdvhfdtgeevveevteetgeetveegtedthefhudekteehffeu keeknecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 2 Jan 2024 08:09:19 -0500 (EST) Message-ID: <3b5f4bf8-0167-4daf-9ce0-d1b61eede487@gutov.dev> Date: Tue, 2 Jan 2024 15:09:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management Content-Language: en-US To: =?UTF-8?Q?Francesco_Potort=C3=AC?= References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <878r5810hk.fsf@tucano.isti.cnr.it> From: Dmitry Gutov In-Reply-To: <878r5810hk.fsf@tucano.isti.cnr.it> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 02/01/2024 12:41, Francesco Potortì wrote: >> a) We won't add new files to the index, because we (apparently) can't >> simply use the project's list of files -- there is no guarantee that it >> matches the fileset that the original author of the TAGS file had in mind. >> >> b) There is no way to pick up the --regex options used for generating >> the original TAGS, or any other options we don't know about. So if we >> were to just use the logic of regenerating tags for newly changed files, >> we would end up with a mix of tags in some files based on the set of >> --regex used in the past, and with tags for new files based on the >> configured set of --regex options. > Maybe the TAGS files should contain information to regenerate them? It would ideally need something more nuanced, like a list of globs to match and a list of globs to ignore, so that, for example, new files could also be added to the index. And also the directory structure(s) involved (see my previous example of two dirs side-by-side)... overall, this seems like a difficult direction to proceed when we have an automatic approach for generating tags with its own settings already. From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 03 20:56:38 2024 Received: (at 67687-done) by debbugs.gnu.org; 4 Jan 2024 01:56:38 +0000 Received: from localhost ([127.0.0.1]:53365 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rLCyM-0002Cl-8p for submit@debbugs.gnu.org; Wed, 03 Jan 2024 20:56:38 -0500 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:37305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rLCyH-0002CT-Ib for 67687-done@debbugs.gnu.org; Wed, 03 Jan 2024 20:56:37 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id E850A5C024C; Wed, 3 Jan 2024 20:56:24 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 03 Jan 2024 20:56:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1704333384; x=1704419784; bh=pHlUYRzlCt/knu+FaFhxi3Ts/8rFLp+rJUNMx8NJ+b0=; b= dZRbx3PipDtlm+/Y5aPSSt6TmT/C0qbZHYfFp/zC1v7xh9cBY/zrS8X5BXNBj7YI Virqwg4sCONK/X2j7s0SIghsSFlaMUznoq2JJddVbspZ4bjM9VjLqY4YRqbnz+43 2UuNm+q40hlTp21QKSliSM2FZnk0K2s15K5mzbKA/VJ+qJnDRaM49MtLsjhxVZFP Fy297MDfvCVe6hucSYrLGrPLerEVDKEVo4em/T/86VFeV8TBYeqLkf+sEzTsfFK6 YJ1v00W9SRbFoYkRzWyLgQtxGbjKdnjSNpxgL7fGP6idsGG67Ww59NCb6PY2rjK5 AQJ64tFiFfRA6BMRrGqt7A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1704333384; x= 1704419784; bh=pHlUYRzlCt/knu+FaFhxi3Ts/8rFLp+rJUNMx8NJ+b0=; b=G EVegPv0uIEiyMaBWgCpyEWn3Wz/bLgHYvk5xde+27r5uAvVlF6kdKDIvLARHbA3C LhhKKkERCLvVwjZaKyIrczfGWuOXtW7t4rEcA7t708TBelcfRikYufMMCcuwgvd0 JTNQIbgx799hmxZdTDGz8KaCvqp/ZZ83PcpGWjuIfJ6OIkinliRTEnjxKxSbgVK9 snKzXnR/viAjKu1mP/4isAkz5SuDVBq0Hef7HvHFXs+ofQaUY9lZROw9hMTMBROw DPCQ0yPpsCTLS/EHvg5fY8pNbHIm+QqJL6ITAZOx86M5Jr7pdqQDixC3TKw324Q5 Mpz1BOEz6tUa74iF1Mo5w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegiedgfeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffhvfevfhgjtgfgsehtkeertddtvdejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepvdelieejveekjeelffegudeiudejfffhveduudffvdevteekgeevffejgfff leeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 3 Jan 2024 20:56:23 -0500 (EST) Message-ID: <3efc4f6f-da35-4cc7-a31e-1414037840f9@gutov.dev> Date: Thu, 4 Jan 2024 03:56:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#67687: Feature request: automatic tags management From: Dmitry Gutov To: Eli Zaretskii References: <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> <83il4d0zhh.fsf@gnu.org> <7361089b-a473-4770-9637-db5855e07aee@gutov.dev> <83frzh0x8b.fsf@gnu.org> <285175f0-24f1-46c5-8559-8d52b1b30b76@gutov.dev> <83edf026vk.fsf@gnu.org> <28e6ee3f-d09b-4350-a01a-29fd268ce8ce@gutov.dev> Content-Language: en-US In-Reply-To: <28e6ee3f-d09b-4350-a01a-29fd268ce8ce@gutov.dev> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 67687-done Cc: eskinjp@gmail.com, 67687-done@debbugs.gnu.org, michael.albinus@gmx.de, stefankangas@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On 02/01/2024 03:40, Dmitry Gutov wrote: > On 01/01/2024 21:25, Eli Zaretskii wrote: >>> Date: Mon, 1 Jan 2024 20:48:37 +0200 >>> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >>> michael.albinus@gmx.de >>> From: Dmitry Gutov >>> >>> On 01/01/2024 19:39, Eli Zaretskii wrote: >>>>> Date: Mon, 1 Jan 2024 19:23:28 +0200 >>>>> Cc: stefankangas@gmail.com, eskinjp@gmail.com, 67687@debbugs.gnu.org, >>>>> michael.albinus@gmx.de >>>>> From: Dmitry Gutov >>>>> >>>>> On 01/01/2024 18:50, Eli Zaretskii wrote: >>>>>>> +The exception is made when the user has already selected a tags >>>>>>> +table manually (for example, using \\[visit-tags-table]).  Then >>>>>>> +this mode doesn't do anything.  Reset the visited tags tables >>>>>>> +using \\[tags-reset-tags-tables]." >>>>>> >>>>>> The above is only true for the project whose TAGS was manually >>>>>> visited, right?  IOW, it's not that once the use invokes >>>>>> visit-tags-table once, this mode will be effectively disabled for the >>>>>> entire session, right? >>>>> >>>>> No, it's the latter. It's off for the whole session, just like a >>>>> visited >>>>> TAGS file is active for the whole session (not limited to any specific >>>>> project). >>>> >>>> OK, then please tweak my suggested text to explain the situation >>>> correctly instead. >>> >>> How about this? >>> >>> If you select a tags table manually (for example, using >>> \\[visit-tags-table]), then this mode will be effectively >>> disabled for the entire session.  Use \\[tags-reset-tags-tables] >>> to countermand the effect of a previous \\[visit-tags-table]. >> >> SGTM, thanks. > > All right. I think I'll wait a days or two for any more comments and > then install the feature. Pushed to master, and closing. Thanks to everyone for the discussion. From unknown Sun Jun 22 17:12:56 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 01 Feb 2024 12:24:17 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator