From unknown Mon Jun 16 23:33:46 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#78794 <78794@debbugs.gnu.org> To: bug#78794 <78794@debbugs.gnu.org> Subject: Status: [PATCH] Pretiffy package-menu Reply-To: bug#78794 <78794@debbugs.gnu.org> Date: Tue, 17 Jun 2025 06:33:46 +0000 retitle 78794 [PATCH] Pretiffy package-menu reassign 78794 emacs submitter 78794 Elijah Gabe P=C3=A9rez severity 78794 normal tag 78794 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 14 22:07:42 2025 Received: (at submit) by debbugs.gnu.org; 15 Jun 2025 02:07:42 +0000 Received: from localhost ([127.0.0.1]:49861 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uQcmb-0003Zy-VY for submit@debbugs.gnu.org; Sat, 14 Jun 2025 22:07:42 -0400 Received: from lists.gnu.org ([2001:470:142::17]:60702) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uQcmZ-0003YA-C2 for submit@debbugs.gnu.org; Sat, 14 Jun 2025 22:07:39 -0400 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 1uQcmT-0004ko-U6 for bug-gnu-emacs@gnu.org; Sat, 14 Jun 2025 22:07:33 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uQcmS-00007p-8q for bug-gnu-emacs@gnu.org; Sat, 14 Jun 2025 22:07:33 -0400 Received: by mail-ot1-x342.google.com with SMTP id 46e09a7af769-72ecb4d9a10so3431692a34.3 for ; Sat, 14 Jun 2025 19:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749953250; x=1750558050; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=GDqCeUTvPG6taulvfCMzVT/EYKOtIr1ujpt652ENtjg=; b=cLAR33DS1mavEEncSrj8x7qDJlGBWkJoH/G2uBCO0SVQV5WBL/42QB8fQtz0RYZoho 2xGy6ZGQkKLXo6qehA3U1TA9t4Aof5nSzc//8wsn5z+uEOlm+oBwcLntMTSjec0hhxZ8 MvwjU4Dip2+o/P+8SNdoSP5eCPZZj7OpyZntUA/8ZwIBbMMyp5tS2yqP7fawh1co+dRI XYBTkmdMfan8magLR/i5ufNBI+ul0pO17Llz0Lyh3MKSg9XzzlddlAjOhsLd7kVMO7Rn zVE15/uOwtO5gypxAW9edat4+KY146Czb9C92uHA3UDmKqEC01vZky5t9JokTTnglreM Nxzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749953250; x=1750558050; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=GDqCeUTvPG6taulvfCMzVT/EYKOtIr1ujpt652ENtjg=; b=Iifua912De9hmtMId76ZmUCxp183NfSajHdGt5GHnZW53IISpM2QvtLqcfeYfPppPE 2i7i7ILkHCD2uaCMIwmURTDY2nro0cZXhb/tXMGSILwNow/0ppml74gw7X+9JHJQFqov k7mMpW2zn2O4rQnLaGa0sEpX/Frwaj3hqx/+6jTmgtmoMjD+2yEFImBiAqzq0STx3Cyz 9rg16Jkc+CB5IYibC3LCxJPrV1wknPdK75FTjJUxzvxaP3lTKUNvftQ7bQvQT7FpMZDD OzLI4+Q4KbwDOPKH6B9/ksSN8tOo5TFvaZaoTKwju1XVp9m3SWPSO3lQ6cJr1y9vdDwD kxAA== X-Gm-Message-State: AOJu0Yy7nLPOXaYN0b9tK+O6KOlfNpmOOQV9HnXLjOkYiTNn52g7bCj7 6HOFpFl6a9Obk22e8fKvL5D6alaYWzEzLfzpcm9L7Td/p1IKwBb9OqQE2oLMquu3 X-Gm-Gg: ASbGnct9lGFgiAEcsYYKGjY471C7Y4q/dxsIB1lwDXx4bktKcmZST7P0AuwjsszCkUj 72h+y4Psw8LRKzCr8KKFaC2drn3c4g1mNxRF6D1rYkOe/2jxXGq65fwGmwSa09Xkr3tSr9hRM1a XIlVpDGr1sGvcHTvOBNynJRbYQltW/LRq/diWFmOkjKjObFM5JHmQ3i4Ub8csllxRYKJl5G0dL+ rAKKBMOAmjnen9H1MsebnLlpnnsmZK7Bx7Jdl+ixpCn44OoP0f920kh4+bjqfjeGe/mUbGutSsv AdWn+U+DTQhU/8AAJR5ZkWT/mvk+0Q== X-Google-Smtp-Source: AGHT+IGxiz944qzpqq4/Xag/9U+cR2OAVvY+kQQoIejxjf/Oq0j/GkJa91+m+i303p5LPJP095B6AA== X-Received: by 2002:a05:6830:800a:b0:735:b0a3:e485 with SMTP id 46e09a7af769-73a363cd439mr3270277a34.25.1749953250132; Sat, 14 Jun 2025 19:07:30 -0700 (PDT) Received: from fedora ([2806:10ae:e:8d2b::1]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-73a284fea94sm739549a34.42.2025.06.14.19.07.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Jun 2025 19:07:29 -0700 (PDT) From: =?utf-8?Q?Elijah_Gabe_P=C3=A9rez?= To: bug-gnu-emacs@gnu.org Subject: [PATCH] Pretiffy package-menu X-Debbugs-Cc: Date: Sat, 14 Jun 2025 20:07:27 -0600 Message-ID: <87plf5iwps.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::342; envelope-from=eg642616@gmail.com; helo=mail-ot1-x342.google.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, DC_IMAGE_SPAM_HTML=0.1, DC_IMAGE_SPAM_TEXT=0.1, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action 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" --=-=-= Content-Type: text/plain Tags: patch Hello, This patch adds a few visual improvements to `package-menu-mode`. This add a new mode-line for package-menu which displays information about: Total packages installed, Total packages from all the packages archive, Total packages to upgrade and Total new packages available. And highlight packages marked for installation or deletion. I find this useful as the characters/tags can go unnoticed. Here is a screenshot of the result: --=-=-= Content-Type: image/png Content-Disposition: inline; filename="Captura desde 2025-06-14 20-05-30.png" Content-Transfer-Encoding: base64 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 CQkJSExMlPJTUlLw8ssvS1PPSkpKMHfuXBw6dAhoBft1hjUidlVVlexBxpbp06cjOTkZBoMBQUFB spczJSUlmDdvHo4cOSKVyeqsW3Vse7xWq5Wml1vZtm0bzGYzhg4dikdprnx79mfvocveejJ7WI+L ioqSrmN1sJXKf7R81vO/b1jXxrZXhH5H+lNaR47so615UPkANBPdh3/3sNh9eHc8uPUAxkojvLp8 FyjTJ8AHg6YMgu5pHfa8tgfD/284NAYNLHUW7HplF3RddZiaOxWaTpoWyXdEYWEhLl++3GYBrhzZ 98qVK/HgwQNMmzYN9fX1mDhxIjZs2KDYxtpSvy1tv23BkZMl8O9qQL8+XVqU74i20n9rtF8l2Mq3 frd9JlOin6biWnT0+OKIu9fv4vbl2zi85DAOLzkspa/0XIklpiWK5biqf4vFghdffBHV1dUoLCyU pcPJ/fft2xdlZWXSVPGysjLZC4vWILxXOHb8zw6o3TrMzRAIOpQWW767u7vkyKGh47Z1GJ2RnZ2N 0NBQac1rc2nulgbtyZ07d7B+/Xr85Cc/wf79+xEYGIi4uDjJObM32BUXF6O6uhohISGy4FvdunVD QUEB9uzZI72ldCbf3mBn+916/enTp2P79u1276Fr16748ssvceLECezYsQObNm3CxIkT22Uf8vak T58+WLRoESZMmCC92TcajThy5Ihsn+U5c+bgxRdfhMlkgqenp8v264xnnnkGOp0O//nPf5pch227 TdejvPzyy+jVqxfS09Ph5+eHEydOICUlBbDRv237ra2txc2bN9GjRw8pTa/X4/XXX8dvfvMbxMfH yx6+myvfnv1lZmY2erHk56csIrO17VjXlNp7seSKfDc3t0b9W0dRVlaGTp06tZmtPYo9/Vm/2/bx tg+4aIgboNFo4OXl5dA+2hqPhrWwj5YPAFRuKtBCGKuM8PL1gsrtv8f0iuqFuvt1qLxYCf8h/jj7 /llUXqzEnItzZM61EvlKyc7OxoABAxq92GoPtFot/vSnP2Ht2rXIy8vDggULMHv2bFkcg47Sr7P2 aw1o1VT/0pocPlHiMDq4s3xHtJX+lbZfRyh5vrNX/7aOriv66ejxxREGPwOSziZJv6/mX0XuglzM LGjenu6toX+1Wo2f/vSnOHjwoJSm5P779u2LU6dOoU+fPiCJ06dPNznLoNllanCoA3wCpO9my3/H Tw+35scpEAgeV1r82tff31+2JVBhYSF+9KMfyY6xWCxYunQpli5d2qiDzc7OxksvNT8oxONAWVkZ 6uvrERwcjMDAQBiNRvzzn/+U8q2O3D/+8Q9YLBZYLBbEx8fjueeekw0aarUaJ0+ehJ+fHxYuXChN iXcm3/pv91dffQWSqK+vl73htF7/2LFj0rTTyZMno1+/fqiqqoLJZMLMmTOxevVqjBgxAhs3bsTg wYNx6tSpRtPyH3cuXryIvXv3Svtfo2Eqru1MAzQ8YJCUHK22tl83NzeEhoY2miqnhKqqKpw/fx6r V69GXFwcwsLCZNvbdenSBRqNRhb4bs+ePRgwQB4NNSkpCWlpadDpdFi2bJli+b6+vnB3d5fJt+0r rNdXq9UICwtDWFgYfHx8sG/fPrtOS1OYzWbo9Xro9XqZrlpDvq+vr6zN2H5XQnFxMWbNmoXPPvtM SmuqP8zIyMCsWbNw5coVu7IKCgqk5R7tgT37KCwshFarlTn5Op0Od+/ele4lIiICW7ZscWofSnE0 fjhC00mDzr07o+z0d7tOlJ4ohf4ZPTyf8oTpjgnruq7DtWPXpPzbl/+7JZ+uiw4A8M3ubzBw4kB4 92i8Z6sz+UrpyO2Z0tLSUFJSAr1ej1deeQUrV65ETk6O7Ji21m9TOGu/zvoXKy21HytmC/HlmatN OtDO8p3RVvpX2n4doeT5zrZPvHDhAtRqNXx9fRXrpynaa3xpqX24ebihW1g36dO5T2eo3FTwG9Q8 57219P/qq68iLy9P+q3k/oODg5GXl4fQ0FCEhoYiLy+v0T/YLa2fZwzPwE3lhnPl52CmGWaa8XX5 13BTuaFbJ+fLvwSCJ4aWLt5euHAh/f39mZmZyYyMDPr7+3PJkiWyY06cOCEFiTp16pSUfvv2barV aubk5PDOnTtUqVT88MMPGRkZyfnz57u2qrydCA0NpV6vt5t3//596nQ6KZBYQEAAn3rqKSnIGBuC SAHg8OHDOXjwYALgL37xC0mGNcgZSb777rsEwLffflux/P79+xMAIyMjGRERQV9fX1l+fHw8AXDg wIEcOXIkATAqKkq6/qBBgwiAo0ePZmxsrHTsk0ZiYqLdICOxsbEMCwtjTk4ODxw4wEGDBnHMmDFk O9pvamoqg4KC7AYYsQ1y9ihms5m+vr4cP3488/PzuXPnTg4fPlwWZOaXv/wl+/fvz5ycHO7bt4+9 e/fmzJkzZfIXL15MNgR7U6vV/OqrrxTLj4uLY3BwMLOzs/nZZ58xPDxclj9p0iT27duXWVlZzM3N ZXR0NEeMGKGoXvLz8wlAFrDGGjQnPz9fkXxnQXxmzJjB7t27S/3bo+V3xrx58wiAAQEBUlpT/WFA QAAB2NVnfX09AwMDuX79esXXpotBzthgH1b9ZWVl8cc//rEs0CIbgutpNBquWrWK27dvp0ql4pkz ZxTZR1FREc+ePcuZM2dyxIgRPHv2LIuKimTym6ovJfxtzd+Y6p/K8/vO8/ze80ztlsrPF34u5X80 +iNuDNnIov1FvJh9kZuHbOb70e9L+ev81vHo8qO8fva69Ck/V65YvjOqq6vp4eEhC+TUHKz1N27c OI4bN65R/Tmz72HDhnHkyJHMy8tjbm4un3/+eb7wwguya7Slfp3lO2u/tv1LZmam3fbpiv2Q5Imv S9krZj1r7j1sUb4jXNW/FVfaryOcPd9ptVo+//zzzMzMZFZWFp999lnZOOqs/3+0v7alueOLPf0r GV9ctQ8rLQly5qr+bdt3TU0NNRpNs+4/PT2dPj4+3LZtG7du3UofHx/u3LlTdg1X6ifp0yQGrgvk 2B1jOXbHWAauC2TSp0l2jxVBzgRPKi12sE0mE2fPnk0fHx/6+Phw9uzZfPhQPtBUVlYyKCiIzz77 rOTYkeTu3bvp4eHBe/fukQ2RRHU6HQcMGMB///vfrtxPu+HIwSbJDz74gF26dGGnTp24YsUKyaG2 1sOtW7eYkJBAnU5Hb29vTpkyRVZHtg62yWRiz5496e3tzRs3biiSf+bMGQ4YMIAGg4FLlixplF9R UcHXX3+dBoOBnp6eHDdunCyC5OXLlxkXF0cvLy/qdDqOGTOGFy9ebKPa7BhKSkro4eHBvLzG0X/L y8s5fvx46vV66vV6jh8/njdv3iTb0X4rKirYuXNnvvfee43yHDnYJLl//3727t1b0u2uXbtkA/Cd O3c4ceJEdurUiT4+Ppw2bRprampk8q0ONkm+9tprDA8Pp8ViUST/ypUrfOGFF+jp6cno6Gju3LlT ll9TU8MpU6bQYDDQy8uL8fHxLC4uVlQvShxsZ/KdOSAVFRWMjY2ll5eX3fI7IzMzkwaDgUlJ3z1U NNUf/upXv6LBYJBFxbWyadMm+vr6sqqqSvG12QoOdnV1NSdPnkxvb296e3tz6tSprK6ubnTcRx99 xG7dutHHx4erVn33kOnMPoYOHSo9vFk/Q4cOlcluqr6UYDFbeOjNQ1zju4Zvd36b2W9k01z73Yuq ezfu8ePxH3OVfhVX6Vfx4/Ef896Ne1L+Kt0qLsdy2WeFdoVi+c745JNP2LlzZ0VR8+3hrP6c2fel S5ca9e/2dkBoK/06y3fWfp31L3TRfkjy7a1/Z0LyJy3Od4Sr+rfiavttCmfPd1qtlunp6YyOjpZ0 YLvLgTP9OHKw2U7ji6v2YaUlDrar+n+0fY8ZM6ZZ93/69GkC4OnTp3nq1Cnpuy2u1M8d4x0m709m yLshDHk3hCn7U1htsm9/wsEWPKmoaDsnWfBEQBLV1dXw8PCQ9s2NiYnB4cOHce/evXbbS1fgOhs3 bsT8+fNx5MgRDB8+vKOL02JycnLw2muvtVqk4R8CJ0+exKhRo/CHP/wBs2bNata5JpMJXl5eOH78 OMLDw9usjIKWMX36dBiNRuzevbujiyLoAB53/Xt6eiIrK0vxMinR/8t53PXfmhQUFCAiIgJGo7HJ oHcCwePIk7PvkkCirq4OXbt2lR6sHzx4gK+//hq+vr7CuX7MeOONN5CYmIiYmBgcOXKko4ujmP79 +yMrK0v6fe7cOVkANYFjDh8+jJdeegkzZ85stnNtS0REBFQqFVQqFbZu3dqqZRS0DJLIycnpsPXX go7lh6B/0f83zQ9B/87YunWrNC5FRER0dHEEgjZBxM9/AtFoNPjZz36GvXv3IioqChUVFaioqMCc OXM6umiCFrBhwwaEhIR0SLThljJ48GDMnz8fWq0Wd+/eRWpqqrC/ZtCnTx+sW7cOSUlJCo5ujFar xdmzZ2Vp9rYCFLQ/KpUK5eXlHV0MQQfxQ9C/6P+b5oegf2ckJCRg2LBhsrT22sZRIGgvxBTxJ5Sq qirMnj0bWVlZ0Gg0mDBhAtavXy+m4AjahaqqKvz617/GgQMH4OHhgalTpyI1NRUeHmKbDoFAIHic cTZFXPT/AoHgh45wsAUCgUAgEAgEAoFAIGgFxBpsgUAgEAgEAoFAIBAIWgHhYAsEAoFAIBAIBAKB QNAKCAdbIBAIBAKBQCAQCASCVkA42AKBQCAQCAQCgUAgELQCwsEWCAQCgUAgEAgEAoGgFRAOtkAg EAgEAoFAIBAIBK2AcLAFAoFAIBAIBAKBQCBoBYSDLRAIBAKBQCAQCAQCQSsgHGyBQCAQCAQCgUAg EAhaAeFgCwQCgUAgEAgEAoFA0Ar8P+NnvO3Ox4vcAAAAAElFTkSuQmCC --=-=-= Content-Type: text/plain -- - E.G via GNU Emacs and Org. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 14 22:12:45 2025 Received: (at 78794) by debbugs.gnu.org; 15 Jun 2025 02:12:45 +0000 Received: from localhost ([127.0.0.1]:49974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uQcrU-00047W-Sr for submit@debbugs.gnu.org; Sat, 14 Jun 2025 22:12:45 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:54783) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uQcrS-000475-ND for 78794@debbugs.gnu.org; Sat, 14 Jun 2025 22:12:43 -0400 Received: by mail-ot1-x342.google.com with SMTP id 46e09a7af769-72c173211feso1123342a34.1 for <78794@debbugs.gnu.org>; Sat, 14 Jun 2025 19:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749953556; x=1750558356; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:subject:to:from:from:to:cc :subject:date:message-id:reply-to; bh=9Iyf/0/JnEEW/xZZ9NFqnJf5KzxJxnF12xx5ru+9Cb8=; b=dVsYQdRE53U5Ff8370qMD8N2zw4b3yDASxZ6GWcvopOQY9f+hiw6BrJgKCQQc2X70q BCxuldoW5kO68/FHYkFc2nRU3xJYF4PoTBKdyzCxa/SHqwz2FR7aUMfDyv2941mpQrR0 CNx22QwTtbfL/CnnFsnJW432GFE+uRmWLxP6gMtRx2LZ7qVUV8Wj6aR5ziNRgxtkYG63 U5LDfX+oU4U2IwuLDD/zPqGsMfpc4FeFaLR3eQhzFUZaa+drU32zy3xiHmP5kR41/Cy2 hqSoWCHizVdEguG6yGWwfkiGPcGrvAQ0fW5jeY1euNzKvp9QUA2Ge/sQpnf3Q7RQrgIv nMAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749953556; x=1750558356; h=mime-version:user-agent:message-id:date:subject:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9Iyf/0/JnEEW/xZZ9NFqnJf5KzxJxnF12xx5ru+9Cb8=; b=gD8WgpnUBB+EbEflx+bCUpPLQ7T5uWwcZIK6PqVJuTyd+MckAZ9sByQ+3XGwX7N9NJ 7gNRaBeJb0NWTi+boLg31UzBOZa6nYopUEtdpwh5fwmQutQV/1HFEuR85O/rBQGR/ki8 pjzxy1xDFwJOYgJpPSnYMWaybNdfI4WBdKVwhgzS8YGQufDQWqf7dZcdF96SyGYP88ke TFQaf5MSKAY+gMpR28kD2TWV6z8NCDhcohxDA5+zl8HW11pS60o1/d4zuAk3jJgqCPKJ GvIQsG5icdJackePfHHVlCTVGtC+H/dpk760TJIXaKxugrt9uizx1GJDk54d0KnP6j4A cNLA== X-Gm-Message-State: AOJu0YwyPCeQsJFhvTL4bSSPfxROGuGunz1flexNdkT0RWbZX2RUt7Qb L/KdhQLOusV15LqaxbPE6HQIhw67p8U8qb7DwyTnv5WJFHUMuzZkWdA2BEtSHI7G X-Gm-Gg: ASbGncvC9swDAspjk4vT0tNGnpKpvQSYFA56rQqLA0GQ2F+IHemuokO2Qojr9O95+2W dIk2DTbCyobRbVnQ6MGJ9+Yi/WgGzxpmyQpZrdzEG21jmweD2gi0Lx+JXe+dQ459NcNzZmstoU9 pcz+lEBkt30bEcz9tB+Q2sjlbveMorpPa8VdSQl7vL/aeVLWscR124D64vOoC6c9tXhq3ndH2PB rRp0m9VB9H7Lpa/9zCC+r88I/LfQjFugx0m2Qe/Aof9+M0uUA/CrsImP7iJO8/M74132NCxaw3m fRi/Au2bOskZ9GXUxkHRa37D8YcYRQBLvgN/bg69 X-Google-Smtp-Source: AGHT+IEEr3Mv7x007ulO9e1QRCl2aBOlUsn6zz9QekAqX78sVzoHiKC57s3XE2NADEK8+QfbrWlyuA== X-Received: by 2002:a05:6808:6f87:b0:409:f8e:727f with SMTP id 5614622812f47-40a7c0fb994mr2961959b6e.3.1749953556442; Sat, 14 Jun 2025 19:12:36 -0700 (PDT) Received: from fedora ([2806:10ae:e:8d2b::1]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-61108f316f8sm560314eaf.40.2025.06.14.19.12.35 for <78794@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Jun 2025 19:12:35 -0700 (PDT) From: =?utf-8?Q?Elijah_Gabe_P=C3=A9rez?= To: 78794@debbugs.gnu.org Subject: [PATCH] Pretiffy package-menu Date: Sat, 14 Jun 2025 20:12:34 -0600 Message-ID: <87ikkxiwh9.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 78794 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.7 (/) --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Pretiffy-package-menu-Bug-78794.patch >From a3be7ce9837f6dcc41c07fc4ee8731584a82041a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?El=C3=ADas=20Gabriel=20P=C3=A9rez?= Date: Thu, 12 Jun 2025 22:23:52 -0600 Subject: [PATCH] Pretiffy package-menu (Bug#78794) Add package-menu mode-line which displays information about: Total packages installed, Total packages from all the packages archive, Total packages to upgrade and Total new packages available. Highlight packages marked for installation or deletion * lisp/emacs-lisp/package.el (package-menu-mode): Add package-menu mode-line format to 'mode-line-misc-info' (package-mark-install-line, package-mark-delete-line): New faces. (package-menu-install, package-menu-delete): Tweak for add overlays. (package-menu--overlay-line): New function. (package-menu-mode-line): New user option. (package-menu-mode-line-format, package-menu-mode-line-info): New buffer-local variables. (list-packages): Add 'package-menu-mode-line-format' to 'package--post-download-archives-hook'. * etc/NEWS: Announce changes. --- etc/NEWS | 9 +++ lisp/emacs-lisp/package.el | 161 ++++++++++++++++++++++++++++++++++++- 2 files changed, 167 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index edfd7f20f18..1534f61691e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1837,6 +1837,15 @@ the command will only copy those files. +++ *** package-x.el is now obsolete. +--- +*** New user option 'package-menu-mode-line'. +If non-nil, package-menu will display additional information about Total +packages installed, Total packages from all the package archives, Total +packages to upgrade and Total new packages available. + +--- +*** Package-menu now highlights packages marked for installation or deletion. + ** Xref --- diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 82fcf439a11..45dafabaeb8 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -3236,6 +3236,10 @@ package-menu-mode (setq mode-line-process '((package--downloads-in-progress ":Loading") (package-menu--transaction-status package-menu--transaction-status))) + (setq-local mode-line-misc-info + (append + mode-line-misc-info + package-menu-mode-line-format)) (setq tabulated-list-format `[("Package" ,package-name-column-width package-menu--name-predicate) ("Version" ,package-version-column-width package-menu--version-predicate) @@ -3642,6 +3646,28 @@ package-status-avail-obso "Face used on the status and version of avail-obso packages." :version "25.1") +(defface package-mark-install-line + '((((class color) (min-colors 88) (background light)) + :background "darkolivegreen1" :extend t) + (((class color) (min-colors 88) (background dark)) + :background "seagreen" :extend t) + (((class color) (min-colors 8)) + :background "green" :foreground "white" :extend t) + (t :inverse-video t :extend t)) + "Face used for highlight the line where a package is marked to install." + :version "31.1") + +(defface package-mark-delete-line + '((((class color) (min-colors 88) (background light)) + :background "rosybrown1" :extend t) + (((class color) (min-colors 88) (background dark)) + :background "indianred4" :extend t) + (((class color) (min-colors 8)) + :background "red" :foreground "white" :extend t) + (t :inverse-video t :extend t)) + "Face used for highlight the line where a package is marked to delete." + :version "31.1") + ;;; Package menu printing @@ -3702,6 +3728,50 @@ package-menu--refresh-contents (package-refresh-contents package-menu-async)) (define-obsolete-function-alias 'package-menu-refresh 'revert-buffer "27.1") +(define-fringe-bitmap + 'package-menu-install + (vector + #b000000 + #b001100 + #b001100 + #b111111 + #b111111 + #b001100 + #b001100 + #b000000) + nil nil 'center) + +(define-fringe-bitmap + 'package-menu-delete + (vector + #b000000 + #b000000 + #b000000 + #b111111 + #b111111 + #b000000 + #b000000 + #b000000) + nil nil 'center) + +(defun package-menu--overlay-line (face fringe fringe-face) + "Highlight whole line with face FACE and display FRINGE on current line." + (let ((ov (make-overlay (line-beginning-position) + (1+ (line-end-position))))) + (overlay-put ov 'pkg-menu-ov t) + (overlay-put ov 'evaporate t) + (when (display-graphic-p) + (overlay-put ov 'before-string + (propertize "x" 'display + `(left-fringe ,fringe ,fringe-face)))) + (overlay-put ov 'face face))) + +(defun package-menu--remove-overlay () + "Remove all overlays done by `package-menu--overlay-line' in current line." + (remove-overlays (line-beginning-position) + (1+ (line-end-position)) + 'pkg-menu-ov t)) + (defun package-menu-hide-package () "Hide in Package Menu packages that match a regexp. Prompt for the regexp to match against package names. @@ -3757,7 +3827,10 @@ package-menu-mark-delete (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("installed" "source" "dependency" "obsolete" "unsigned")) - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line + 'package-menu-delete + 'error) + (tabulated-list-put-tag "D" t)) (forward-line))) (defun package-menu-mark-install (&optional _num) @@ -3766,7 +3839,10 @@ package-menu-mark-install (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("available" "avail-obso" "new" "dependency")) - (tabulated-list-put-tag "I" t) + (progn (package-menu--overlay-line 'package-mark-install-line + 'package-menu-install + 'success) + (tabulated-list-put-tag "I" t)) (forward-line))) (defun package-menu-mark-unmark (&optional _num) @@ -3774,6 +3850,7 @@ package-menu-mark-unmark The current package is the package at point." (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) + (package-menu--remove-overlay) (tabulated-list-put-tag " " t)) (defun package-menu-backup-unmark () @@ -3781,6 +3858,7 @@ package-menu-backup-unmark (interactive nil package-menu-mode) (package--ensure-package-menu-mode) (forward-line -1) + (package-menu--remove-overlay) (tabulated-list-put-tag " ")) (defun package-menu-mark-obsolete-for-deletion () @@ -3791,7 +3869,10 @@ package-menu-mark-obsolete-for-deletion (goto-char (point-min)) (while (not (eobp)) (if (equal (package-menu-get-status) "obsolete") - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line + 'package-menu-delete + 'error) + (tabulated-list-put-tag "D" t)) (forward-line 1))))) (defvar package--quick-help-keys @@ -4207,6 +4288,78 @@ package-menu--mark-or-notify-upgrades (package-menu--mark-upgrades-1) (package-menu--find-and-notify-upgrades)))))) +;; Mode-line +(defcustom package-menu-mode-line t + "If non-nil, package-menu will display additional information in mode-line. +package-menu mode-line information includes: Total packages installed, +Total packages from all the packages archive, Total packages to upgrade +and Total new packages available." + :type 'boolean + :version "31.1") + +(defconst package-menu-mode-line-format + '((package-menu-mode-line + (:eval (when package-menu-mode-line-info + (symbol-value 'package-menu-mode-line-info)))))) + +(defvar-local package-menu-mode-line-info nil + "Variable which stores package-menu mode-line format.") + +(defun package-menu-mode-line-format () + "Display package-menu mode-line." + (when-let* (package-menu-mode-line + (buf (get-buffer "*Packages*")) + ((buffer-live-p buf))) + (with-current-buffer buf + (setq package-menu-mode-line-info + (let ((installed 0) + (new 0) + (total (length package-archive-contents)) + (to-upgrade (length (package-menu--find-upgrades))) + (total-help "Total packages of all package archives") + (installed-help "Total packages installed") + (upgrade-help "Total packages to upgrade") + (new-help "Total new packages available")) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (cond + ((member (package-menu-get-status) + '("installed" "dependency" "unsigned")) + (setq installed (1+ installed))) + ((equal (package-menu-get-status) "new") + (setq new (1+ new)))) + (forward-line))) + + ;; XXX: Add a efficient way for set these variables (?) + (setq installed (number-to-string installed)) + (setq total (number-to-string total)) + (setq to-upgrade (number-to-string to-upgrade)) + (setq new (number-to-string new)) + + (list + "[" + (propertize "Total: " 'help-echo total-help) + (propertize total + 'help-echo total-help + 'face 'font-lock-keyword-face) + " / " + (propertize "Installed: " 'help-echo installed-help) + (propertize installed + 'help-echo installed-help + 'face 'package-status-installed) + " / " + (propertize "To Upgrade: " 'help-echo upgrade-help) + (propertize to-upgrade + 'help-echo upgrade-help + 'face 'font-lock-keyword-face) + " / " + (propertize "New: " 'help-echo new-help) + (propertize new + 'help-echo new-help + 'face 'package-status-new) + "] ")))))) + ;;;###autoload (defun list-packages (&optional no-fetch) "Display a list of packages. @@ -4225,6 +4378,8 @@ list-packages #'package-menu--post-refresh) (add-hook 'package--post-download-archives-hook #'package-menu--mark-or-notify-upgrades 'append) + (add-hook 'package--post-download-archives-hook + #'package-menu-mode-line-format 'append) ;; Generate the Package Menu. (let ((buf (get-buffer-create "*Packages*"))) -- 2.49.0 --=-=-= Content-Type: text/plain -- - E.G via GNU Emacs and Org. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 15 01:36:33 2025 Received: (at 78794) by debbugs.gnu.org; 15 Jun 2025 05:36:33 +0000 Received: from localhost ([127.0.0.1]:52092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uQg2i-0005Ff-P6 for submit@debbugs.gnu.org; Sun, 15 Jun 2025 01:36:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60544) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uQg2g-0005F4-Ns for 78794@debbugs.gnu.org; Sun, 15 Jun 2025 01:36:31 -0400 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 1uQg2b-00038u-CI; Sun, 15 Jun 2025 01:36:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=3FA6U3XathlCP1px9KnM/plj362w2yCm1hbumj66ohU=; b=OguBBZKtsso0fbqau+Ew gxgePWBpkZyOE+GCEV64Z4IbSYDzMMlZVz1fkRif107BzW0wi9VdvMLSRd7P3rnuSr755c7OZPL06 Kp4s00Aut5TZJvYGd/mx5tq3zUGCLYPRVAsk71ZAO+LSGUwInyl0Psv00cqE6TDW4o4l7LPZrQBxe KfJfMivo5m2gNUce2rtDMMkbiSm+ZzukOGOLVyV84UOe5mDbLERATjBZc2wuajBPId04pwj/RkikT O7y9RrraensAVQ9sHLwT0zMQBov6TxZQnUZtDTr0xbYZPoIo9sRYkVt789skkp9qyBeie1FQW5s4w oNYN3bvlm4Aafw==; Date: Sun, 15 Jun 2025 08:36:20 +0300 Message-Id: <86bjqpr2gb.fsf@gnu.org> From: Eli Zaretskii To: Elijah Gabe =?iso-8859-1?Q?P=E9rez?= In-Reply-To: <87ikkxiwh9.fsf@gmail.com> (message from Elijah Gabe =?iso-8859-1?Q?P=E9rez?= on Sat, 14 Jun 2025 20:12:34 -0600) Subject: Re: bug#78794: [PATCH] Pretiffy package-menu References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78794 Cc: 78794@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: Elijah Gabe Pérez > Date: Sat, 14 Jun 2025 20:12:34 -0600 > > +--- > +*** New user option 'package-menu-mode-line'. > +If non-nil, package-menu will display additional information about Total > +packages installed, Total packages from all the package archives, Total > +packages to upgrade and Total new packages available. Any reason not to have this by default, and drop the option? > +(defface package-mark-install-line > + '((((class color) (min-colors 88) (background light)) > + :background "darkolivegreen1" :extend t) > + (((class color) (min-colors 88) (background dark)) > + :background "seagreen" :extend t) > + (((class color) (min-colors 8)) > + :background "green" :foreground "white" :extend t) If tty-color translation produces "green" from the two green shades you define for 88+ color displays, then the last part is not needed. > + (t :inverse-video t :extend t)) Isn't the mode line shown in inverse video by default in monochrome case? If so, this is not needed, either. > +(defface package-mark-delete-line > + '((((class color) (min-colors 88) (background light)) > + :background "rosybrown1" :extend t) > + (((class color) (min-colors 88) (background dark)) > + :background "indianred4" :extend t) > + (((class color) (min-colors 8)) > + :background "red" :foreground "white" :extend t) > + (t :inverse-video t :extend t)) > + "Face used for highlight the line where a package is marked to delete." > + :version "31.1") Same here. > +(define-fringe-bitmap > + 'package-menu-install > + (vector > + #b000000 > + #b001100 > + #b001100 > + #b111111 > + #b111111 > + #b001100 > + #b001100 > + #b000000) > + nil nil 'center) > + > +(define-fringe-bitmap > + 'package-menu-delete > + (vector > + #b000000 > + #b000000 > + #b000000 > + #b111111 > + #b111111 > + #b000000 > + #b000000 > + #b000000) > + nil nil 'center) Both colors _and_ fringe markers? Isn't than too much? > +;; Mode-line > +(defcustom package-menu-mode-line t > + "If non-nil, package-menu will display additional information in mode-line. > +package-menu mode-line information includes: Total packages installed, > +Total packages from all the packages archive, Total packages to upgrade > +and Total new packages available." Capitalization is wrong here: the last sentence should start with a capital letter, whereas the "Total something" parts should not be capitalized. > + ;; XXX: Add a efficient way for set these variables (?) What about this part? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 15 15:02:19 2025 Received: (at 78794) by debbugs.gnu.org; 15 Jun 2025 19:02:19 +0000 Received: from localhost ([127.0.0.1]:60785 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uQscU-0003qR-Ip for submit@debbugs.gnu.org; Sun, 15 Jun 2025 15:02:19 -0400 Received: from mail-oi1-x243.google.com ([2607:f8b0:4864:20::243]:57675) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uQscR-0003po-OZ for 78794@debbugs.gnu.org; Sun, 15 Jun 2025 15:02:16 -0400 Received: by mail-oi1-x243.google.com with SMTP id 5614622812f47-40a4bf1eb0dso2150855b6e.3 for <78794@debbugs.gnu.org>; Sun, 15 Jun 2025 12:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750014129; x=1750618929; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=lE028lR7wIdvBjDH0ApELmOZyTD328/Vzuvck9elJQw=; b=nNIo4nGMdIAsIeeKKbmT1ovApgEc/wVCMw57qI3zpi3oLYePqZeeR6uQShjh2O7LCC vsm29mNk7bALAsAHJslSNwOydGak/G6nQhN8sAqLhQk7/NKebnvxhgeGLcdpvOuN0lru lGPmM6j0weDd3wziezHCdm2qMjCrBU3vT87+z3nnnFidX9GqHG0LeKCRZDfwcnGz+KdR Bzlz9L/X0k/dTrtlI3V2gCpVAyEwT73kXm7gep6TTzF2VINn0wCfGgJUJPqoJubGQcbv 6NGSYkJv63Yfrtrln8YwNPQkDUzRmBhBnu71k7pc+o8exx43NWQq/1m0twgkb9cBg8A1 Nqng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750014129; x=1750618929; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lE028lR7wIdvBjDH0ApELmOZyTD328/Vzuvck9elJQw=; b=K1LGoL/zdphB+mMX5CN8Y1cMdW9JXW+m/dJW8pGevfTfMLngbi5z6ocf746tZHMjQq Xj2E/nJ/aMf1Ix5Ra1adsb9WcOVoQ26LwZDgW8PxYPssCbyy1kNfP70geAE15ZdjYqB0 HkIBYAUdAie5xy9m/fZkE+lbShzVlpIq2lw/A9Wi1UOMDi5HY9aWqAyEcmrBYz7kN480 kXSJNnBPOuTzDcA1v3Bq31E1dvcd89o5i4oQqcwCMNE1qG8N8M5Gpm8XoUPsSgOfj6jV peuQZ6a8qH1apFHEh+n6N7h3dV8E2vh8Fjmtq051Hu4G4ksUXzUqvc6ACIcyWhDc8T58 GTHw== X-Gm-Message-State: AOJu0Yxh1/ssT3Ga6jtKnldKZVLF2q6AGsd5OcBDv+7vP8zWsfyb0lSq 0cBRuY3nEChsTXKYwJVK6YOEh2X+LrIPX21DVRiFA6yoZPUv1oqLw+jCL/kX4iD7 X-Gm-Gg: ASbGncska3tLBF2hTX7ztW7ptcbhQ9GbrwJpPEOFnkCwz20BQG178YcewoyKfkJ5nuw C1TSeDHJZysUgAM6YdZAE1OIxxU2fLTeRFn1twY3EFSpeAgD3qiH/lcczpY1g5jpQ15Pr6v+Rvm 98v4K+g4HBj3Q83AfG2qLLly5VHR21Y/y1Y/Eqx4xCA0GR7N+EqcbbFyFonxsMmPOCDdtHeYvOx ShYpKN/Mea1TqunSFVlKb0NINVOkVY8dCstwCzmYeUOWK3debBdmR+NpnKCXxsibuDBwKBBQhtq XICRxuf2heX9FFXX2JKukD+qHNQWDg== X-Google-Smtp-Source: AGHT+IGmlIcejDsD+bGJ14MjLKY/ICbZPawa4fPgL5ixfoPVXDZDTWrJ3WWdjg5Id7xlkgAA0W1ojQ== X-Received: by 2002:a05:6808:60f:b0:406:6a36:230c with SMTP id 5614622812f47-40a7c166902mr3497603b6e.19.1750014128644; Sun, 15 Jun 2025 12:02:08 -0700 (PDT) Received: from fedora ([2806:10ae:e:8d2b::1]) by smtp.gmail.com with ESMTPSA id 5614622812f47-40a74172cb3sm1176241b6e.25.2025.06.15.12.02.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Jun 2025 12:02:07 -0700 (PDT) From: =?utf-8?Q?Elijah_Gabe_P=C3=A9rez?= To: Eli Zaretskii Subject: Re: bug#78794: [PATCH] Pretiffy package-menu In-Reply-To: <86bjqpr2gb.fsf@gnu.org> References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> <86bjqpr2gb.fsf@gnu.org> Date: Sun, 15 Jun 2025 13:02:06 -0600 Message-ID: <87ikkwakwh.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 78794 Cc: 78794@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: -0.7 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii writes: >> From: Elijah Gabe P=C3=A9rez >> Date: Sat, 14 Jun 2025 20:12:34 -0600 >>=20 >> +--- >> +*** New user option 'package-menu-mode-line'. >> +If non-nil, package-menu will display additional information about Total >> +packages installed, Total packages from all the package archives, Total >> +packages to upgrade and Total new packages available. > > Any reason not to have this by default, and drop the option? This is enabled by default (I forgot to include it in the NEWS entry). The reason why i decided make it an option is because some user may find it annoying. >> +(defface package-mark-install-line >> + '((((class color) (min-colors 88) (background light)) >> + :background "darkolivegreen1" :extend t) >> + (((class color) (min-colors 88) (background dark)) >> + :background "seagreen" :extend t) >> + (((class color) (min-colors 8)) >> + :background "green" :foreground "white" :extend t) > > If tty-color translation produces "green" from the two green shades > you define for 88+ color displays, then the last part is not needed. Fine. >> + (t :inverse-video t :extend t)) > > Isn't the mode line shown in inverse video by default in monochrome > case? If so, this is not needed, either. These faces are not for the mode-line, are for the package-menu buffer, specifically for highlight the line where a package was marked for install/delete. >> +(define-fringe-bitmap >> + 'package-menu-install >> + (vector >> + #b000000 >> + #b001100 >> + #b001100 >> + #b111111 >> + #b111111 >> + #b001100 >> + #b001100 >> + #b000000) >> + nil nil 'center) >> + >> +(define-fringe-bitmap >> + 'package-menu-delete >> + (vector >> + #b000000 >> + #b000000 >> + #b000000 >> + #b111111 >> + #b111111 >> + #b000000 >> + #b000000 >> + #b000000) >> + nil nil 'center) > > Both colors _and_ fringe markers? Isn't than too much? Well, I don't know what others say about this, the fringes were originally intended as an alternative to the "I" and "D" marks. Anyways I've added a better alternative to fringes. >> +;; Mode-line >> +(defcustom package-menu-mode-line t >> + "If non-nil, package-menu will display additional information in mode= -line. >> +package-menu mode-line information includes: Total packages installed, >> +Total packages from all the packages archive, Total packages to upgrade >> +and Total new packages available." > > Capitalization is wrong here: the last sentence should start with a > capital letter, whereas the "Total something" parts should not be > capitalized. Thanks, fixed. >> + ;; XXX: Add a efficient way for set these variables (?) > > What about this part? Oh, that was temporal, I was supposed to remove it before making the patch. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Pretiffy-package-menu-Bug-78794.patch >From b3e8b4471894948f44cfee61a0b5f9c9b9753ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?El=C3=ADas=20Gabriel=20P=C3=A9rez?= Date: Thu, 12 Jun 2025 22:23:52 -0600 Subject: [PATCH] Pretiffy package-menu (Bug#78794) Add package-menu mode-line which displays information about: total packages installed, total packages from all the packages archive, total packages to upgrade and total new packages available. Highlight packages marked for installation or deletion. And allow customize package-menu marks. * lisp/emacs-lisp/package.el (package-menu-mode): Add package-menu mode-line format to 'mode-line-misc-info' (package-mark-install-line, package-mark-delete-line): New faces. (package-menu-install, package-menu-delete): Tweak for add overlays. (package-menu--overlay-line): New function. (package-menu-mode-line package-menu-marks-indicators): New user options. (package-menu-mode-line-format, package-menu-mode-line-info): New buffer-local variables. (list-packages): Add 'package-menu-mode-line-format' to 'package--post-download-archives-hook'. * etc/NEWS: Announce changes. --- etc/NEWS | 15 +++++ lisp/emacs-lisp/package.el | 135 ++++++++++++++++++++++++++++++++++++- 2 files changed, 147 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index edfd7f20f18..4d272ce1999 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1837,6 +1837,21 @@ the command will only copy those files. +++ *** package-x.el is now obsolete. +--- +*** New user option 'package-menu-mode-line'. +If non-nil, package-menu will display additional information in +mode-line about total packages installed, total packages from all the +package archives, total packages to upgrade and total new packages +available. By default this is enabled. + +--- +*** New user option 'package-menu-marks-indicators'. +This option controls the kind of mark string to use in package-menu-mark +commands. + +--- +*** Package-menu now highlights packages marked for installation or deletion. + ** Xref --- diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 82fcf439a11..54a909df408 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -3236,6 +3236,10 @@ package-menu-mode (setq mode-line-process '((package--downloads-in-progress ":Loading") (package-menu--transaction-status package-menu--transaction-status))) + (setq-local mode-line-misc-info + (append + mode-line-misc-info + package-menu-mode-line-format)) (setq tabulated-list-format `[("Package" ,package-name-column-width package-menu--name-predicate) ("Version" ,package-version-column-width package-menu--version-predicate) @@ -3642,6 +3646,24 @@ package-status-avail-obso "Face used on the status and version of avail-obso packages." :version "25.1") +(defface package-mark-install-line + '((((class color) (min-colors 88) (background light)) + :background "darkolivegreen1" :extend t) + (((class color) (min-colors 88) (background dark)) + :background "seagreen" :extend t) + (t :inverse-video t :extend t)) + "Face used for highlight the line where a package is marked to install." + :version "31.1") + +(defface package-mark-delete-line + '((((class color) (min-colors 88) (background light)) + :background "rosybrown1" :extend t) + (((class color) (min-colors 88) (background dark)) + :background "indianred4" :extend t) + (t :inverse-video t :extend t)) + "Face used for highlight the line where a package is marked to delete." + :version "31.1") + ;;; Package menu printing @@ -3702,6 +3724,32 @@ package-menu--refresh-contents (package-refresh-contents package-menu-async)) (define-obsolete-function-alias 'package-menu-refresh 'revert-buffer "27.1") +(defcustom package-menu-marks-indicators + '((install . "I") + (delete . "D")) + "Alist indicators to indicate a package is marked to install or delete. +The value of each list must be in the formt: '(KIND . MARK) where KIND +is the kind mark performed (`install' or `delete') in package-menu and +MARK a string to use for mark the packages. This currently support +marks for install and delete." + :type '(list (cons symbol string) + (cons symbol string)) + :version "31.1") + +(defun package-menu--overlay-line (face) + "Highlight whole line with face FACE." + (let ((ov (make-overlay (line-beginning-position) + (1+ (line-end-position))))) + (overlay-put ov 'pkg-menu-ov t) + (overlay-put ov 'evaporate t) + (overlay-put ov 'face face))) + +(defun package-menu--remove-overlay () + "Remove all overlays done by `package-menu--overlay-line' in current line." + (remove-overlays (line-beginning-position) + (1+ (line-end-position)) + 'pkg-menu-ov t)) + (defun package-menu-hide-package () "Hide in Package Menu packages that match a regexp. Prompt for the regexp to match against package names. @@ -3757,7 +3805,9 @@ package-menu-mark-delete (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("installed" "source" "dependency" "obsolete" "unsigned")) - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line) + (tabulated-list-put-tag + (alist-get 'delete package-menu-marks-indicators) t)) (forward-line))) (defun package-menu-mark-install (&optional _num) @@ -3766,7 +3816,9 @@ package-menu-mark-install (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("available" "avail-obso" "new" "dependency")) - (tabulated-list-put-tag "I" t) + (progn (package-menu--overlay-line 'package-mark-install-line) + (tabulated-list-put-tag + (alist-get 'install package-menu-marks-indicators) t)) (forward-line))) (defun package-menu-mark-unmark (&optional _num) @@ -3774,6 +3826,7 @@ package-menu-mark-unmark The current package is the package at point." (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) + (package-menu--remove-overlay) (tabulated-list-put-tag " " t)) (defun package-menu-backup-unmark () @@ -3781,6 +3834,7 @@ package-menu-backup-unmark (interactive nil package-menu-mode) (package--ensure-package-menu-mode) (forward-line -1) + (package-menu--remove-overlay) (tabulated-list-put-tag " ")) (defun package-menu-mark-obsolete-for-deletion () @@ -3791,7 +3845,9 @@ package-menu-mark-obsolete-for-deletion (goto-char (point-min)) (while (not (eobp)) (if (equal (package-menu-get-status) "obsolete") - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line) + (tabulated-list-put-tag + (alist-get 'delete package-menu-marks-indicators) t)) (forward-line 1))))) (defvar package--quick-help-keys @@ -4207,6 +4263,77 @@ package-menu--mark-or-notify-upgrades (package-menu--mark-upgrades-1) (package-menu--find-and-notify-upgrades)))))) +;; Mode-line +(defcustom package-menu-mode-line t + "If non-nil, package-menu will display additional information in mode-line. +Package-menu mode-line information includes: total packages installed, +total packages from all the packages archive, total packages to upgrade +and total new packages available." + :type 'boolean + :version "31.1") + +(defconst package-menu-mode-line-format + '((package-menu-mode-line + (:eval (when package-menu-mode-line-info + (symbol-value 'package-menu-mode-line-info)))))) + +(defvar-local package-menu-mode-line-info nil + "Variable which stores package-menu mode-line format.") + +(defun package-menu-mode-line-format () + "Display package-menu mode-line." + (when-let* (package-menu-mode-line + (buf (get-buffer "*Packages*")) + ((buffer-live-p buf))) + (with-current-buffer buf + (setq package-menu-mode-line-info + (let ((installed 0) + (new 0) + (total (length package-archive-contents)) + (to-upgrade (length (package-menu--find-upgrades))) + (total-help "Total packages of all package archives") + (installed-help "Total packages installed") + (upgrade-help "Total packages to upgrade") + (new-help "Total new packages available")) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (cond + ((member (package-menu-get-status) + '("installed" "dependency" "unsigned")) + (setq installed (1+ installed))) + ((equal (package-menu-get-status) "new") + (setq new (1+ new)))) + (forward-line))) + + (setq installed (number-to-string installed)) + (setq total (number-to-string total)) + (setq to-upgrade (number-to-string to-upgrade)) + (setq new (number-to-string new)) + + (list + "[" + (propertize "Total: " 'help-echo total-help) + (propertize total + 'help-echo total-help + 'face 'font-lock-keyword-face) + " / " + (propertize "Installed: " 'help-echo installed-help) + (propertize installed + 'help-echo installed-help + 'face 'package-status-installed) + " / " + (propertize "To Upgrade: " 'help-echo upgrade-help) + (propertize to-upgrade + 'help-echo upgrade-help + 'face 'font-lock-keyword-face) + " / " + (propertize "New: " 'help-echo new-help) + (propertize new + 'help-echo new-help + 'face 'package-status-new) + "] ")))))) + ;;;###autoload (defun list-packages (&optional no-fetch) "Display a list of packages. @@ -4225,6 +4352,8 @@ list-packages #'package-menu--post-refresh) (add-hook 'package--post-download-archives-hook #'package-menu--mark-or-notify-upgrades 'append) + (add-hook 'package--post-download-archives-hook + #'package-menu-mode-line-format 'append) ;; Generate the Package Menu. (let ((buf (get-buffer-create "*Packages*"))) -- 2.49.0 --=-=-= Content-Type: text/plain -- - E.G via GNU Emacs and Org. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 16 02:29:40 2025 Received: (at 78794) by debbugs.gnu.org; 16 Jun 2025 06:29:40 +0000 Received: from localhost ([127.0.0.1]:40135 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uR3Lg-0004PF-2f for submit@debbugs.gnu.org; Mon, 16 Jun 2025 02:29:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53018) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uR3Ld-0004OP-Qn for 78794@debbugs.gnu.org; Mon, 16 Jun 2025 02:29:38 -0400 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 1uR3LX-0004Fk-Fg; Mon, 16 Jun 2025 02:29:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=EajsUjBj1FYuZ8u15Mioxk97Pjes4l0qlTyJ17IR4I0=; b=bw51zlEjfs5LF10tzvTG UB5Lk2XNai2U1Q6ChneulRm+t85WxEnvScQF4ofvRH3QA6RnsoIOMy55ga2AXz/sh0/I+g64sbMjp b7wM3crHcICyhnkmeBOSAhfkADSKyY2YafRMhmOZdEAWIh6YE+oeNVVq8owVLsA6fHh4F2l/BOL/4 bpABbGY8UlVBZAb3Z4ZlSOdOIjr37dHgody3Yk6DpUL2//ZtbE6+TGIOvAETRhgm96qsRhEMJiEcP HQHzFRk++cEc7dW1Rjy4YvopfOVU4jgBBfv7blYVhDsFbO6JZwXoD9QjsLPQFW/VjMrG6GG0txKc0 8osqtiLpvo1ExQ==; Date: Mon, 16 Jun 2025 09:29:27 +0300 Message-Id: <86frg0p5bs.fsf@gnu.org> From: Eli Zaretskii To: Elijah Gabe =?utf-8?Q?P=C3=A9rez?= , Philip Kaludercic In-Reply-To: <87ikkwakwh.fsf@gmail.com> (message from Elijah Gabe =?utf-8?Q?P=C3=A9rez?= on Sun, 15 Jun 2025 13:02:06 -0600) Subject: Re: bug#78794: [PATCH] Pretiffy package-menu References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> <86bjqpr2gb.fsf@gnu.org> <87ikkwakwh.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78794 Cc: 78794@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: Elijah Gabe PĂ©rez > Cc: 78794@debbugs.gnu.org > Date: Sun, 15 Jun 2025 13:02:06 -0600 > > >> +*** New user option 'package-menu-mode-line'. > >> +If non-nil, package-menu will display additional information about Total > >> +packages installed, Total packages from all the package archives, Total > >> +packages to upgrade and Total new packages available. > > > > Any reason not to have this by default, and drop the option? > > This is enabled by default (I forgot to include it in the NEWS entry). > The reason why i decided make it an option is because some user > may find it annoying. In what ways could it be annoying? Philip, do you see any reason to make this customizable with a boolean variable, and not via the usual mode-line customizations? Will many users want to remove this new information? > >> +(defface package-mark-install-line > >> + '((((class color) (min-colors 88) (background light)) > >> + :background "darkolivegreen1" :extend t) > >> + (((class color) (min-colors 88) (background dark)) > >> + :background "seagreen" :extend t) > >> + (((class color) (min-colors 8)) > >> + :background "green" :foreground "white" :extend t) > > > > If tty-color translation produces "green" from the two green shades > > you define for 88+ color displays, then the last part is not needed. > > Fine. > > >> + (t :inverse-video t :extend t)) > > > > Isn't the mode line shown in inverse video by default in monochrome > > case? If so, this is not needed, either. > > These faces are not for the mode-line, are for the package-menu buffer, > specifically for highlight the line where a package was marked for > install/delete. Then I think inverse-video is too radical. I'd suggest to use bold (if supported) or underline (if supported), with inverse-video being the last resort. > +(defface package-mark-install-line > + '((((class color) (min-colors 88) (background light)) > + :background "darkolivegreen1" :extend t) > + (((class color) (min-colors 88) (background dark)) > + :background "seagreen" :extend t) > + (t :inverse-video t :extend t)) This will cause any display with fewer than 88 colors use the inverse-video alternative. I suggest to remove the min-colors requirement, since it isn't needed. > +(defface package-mark-delete-line > + '((((class color) (min-colors 88) (background light)) > + :background "rosybrown1" :extend t) > + (((class color) (min-colors 88) (background dark)) > + :background "indianred4" :extend t) > + (t :inverse-video t :extend t)) Likewise. > +(defcustom package-menu-marks-indicators > + '((install . "I") > + (delete . "D")) > + "Alist indicators to indicate a package is marked to install or delete. > +The value of each list must be in the formt: '(KIND . MARK) where KIND > +is the kind mark performed (`install' or `delete') in package-menu and > +MARK a string to use for mark the packages. This currently support > +marks for install and delete." This doc string has several grammatical issues, and also lacks some important information. I suggest to rephrase as follows: "Indicators for packages to be installed or deleted. The value is an alist whose elements have the form (KIND . MARK), where KIND is the operation to perform, either `install' or `delete', and MARK is a string to indicate that the operation is pending for the package. The MARK string should satisfy the requirements of the TAG argument of `tabulated-list-put-tag', which see. It is displayed in the padding area of the package's line. Currently, only indicators for installing or deleting a package are supported." > + :type '(list (cons symbol string) > + (cons symbol string)) Can we come up with a meaningful :tag for the value? > +(defun package-menu--overlay-line (face) > + "Highlight whole line with face FACE." > + (let ((ov (make-overlay (line-beginning-position) > + (1+ (line-end-position))))) > + (overlay-put ov 'pkg-menu-ov t) > + (overlay-put ov 'evaporate t) > + (overlay-put ov 'face face))) Does package-menu use other faces in overlays, and if so, should we consider giving this overlay a non-default priority? > + (total-help "Total packages of all package archives") > + (installed-help "Total packages installed") > + (upgrade-help "Total packages to upgrade") > + (new-help "Total new packages available")) Please use "Total number of SOMETHING" in these help strings. Otherwise, it is not immediately clear what "Total" refers to. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 16 08:47:26 2025 Received: (at 78794) by debbugs.gnu.org; 16 Jun 2025 12:47:26 +0000 Received: from localhost ([127.0.0.1]:44233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uR9FE-0005PG-Gb for submit@debbugs.gnu.org; Mon, 16 Jun 2025 08:47:26 -0400 Received: from mout02.posteo.de ([185.67.36.66]:60605) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uR9F8-0005N9-Gq for 78794@debbugs.gnu.org; Mon, 16 Jun 2025 08:47:20 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D697B240103 for <78794@debbugs.gnu.org>; Mon, 16 Jun 2025 14:47:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=1984.ea087b; t=1750078031; bh=AVYbNWHYa3yCMWvVL2QCC/if+VyoCWgfkN5aNs2o58U=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:Content-Transfer-Encoding:From; b=PjLkZi9DOJiArF0lh0g/sx89Dto7gUIcsgeqMaliThL0svhqhLGGSh3X7MQBQGgdX Sj2SsX3EixSmg5GTWQo0n5m2EsXYff0kA5pwdkiq4MvCgTf8deSA36Dh50b+w2xlw6 Y/zbHtspmoaFpezO3wKOhQiJGSicA5wwdGIQONtgIJSlKPVHs6J+s7lh5NvCWkzYMR fm+tAuMPY6WPbiAuC/Hy8BsHgYFrPRJGYWPj8+4av2c4vexYFpchVrbw6Pv/i0H//e 9YEYgNm7p6GNP3prC8tA7YA2RCld67ckXvL892YKRxyKmJ/uPPvswB596ccVCXDn+Z RkqZRF/u0OS3KO111BaLSiIo7NjHLbFhIn+pRuMfjeD4VwerbDX7rdX852G/ZjGbae i/MsL44nT6aJOl2EaJkrGa2WCbwf+Aa7pdQOyQmsI0vzUzwMkNBCNrrPRiZfPwgHdG PUzPIVJKWrfWW+VdKB5uD3V5oDuYGOjcfRsuX1H/2CmOPszHsqp Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4bLVBl1CLfz9rxN; Mon, 16 Jun 2025 14:47:11 +0200 (CEST) From: Philip Kaludercic To: Eli Zaretskii Subject: Re: bug#78794: [PATCH] Pretiffy package-menu In-Reply-To: <86frg0p5bs.fsf@gnu.org> References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> <86bjqpr2gb.fsf@gnu.org> <87ikkwakwh.fsf@gmail.com> <86frg0p5bs.fsf@gnu.org> Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=philipk@posteo.net; url="https://keys.openpgp.org/vks/v1/by-email/philipk@posteo.net"; preference=signencrypt Date: Mon, 16 Jun 2025 12:47:10 +0000 Message-ID: <87ecvjetv5.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78794 Cc: 78794@debbugs.gnu.org, Elijah Gabe =?utf-8?Q?P=C3=A9rez?= 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 (---) Eli Zaretskii writes: >> From: Elijah Gabe P=C3=A9rez >> Cc: 78794@debbugs.gnu.org >> Date: Sun, 15 Jun 2025 13:02:06 -0600 >>=20 >> >> +*** New user option 'package-menu-mode-line'. >> >> +If non-nil, package-menu will display additional information about T= otal >> >> +packages installed, Total packages from all the package archives, To= tal >> >> +packages to upgrade and Total new packages available. >> > >> > Any reason not to have this by default, and drop the option? >>=20 >> This is enabled by default (I forgot to include it in the NEWS entry). >> The reason why i decided make it an option is because some user >> may find it annoying. > > In what ways could it be annoying? > > Philip, do you see any reason to make this customizable with a boolean > variable, and not via the usual mode-line customizations? Will many > users want to remove this new information? I agree that it doesn't seem like something that should be too annoying. >From the description, it reminds me of Flymake, that also displays the number of warnings and errors by default. I haven't heard frequent complaints about that. >> >> +(defface package-mark-install-line >> >> + '((((class color) (min-colors 88) (background light)) >> >> + :background "darkolivegreen1" :extend t) >> >> + (((class color) (min-colors 88) (background dark)) >> >> + :background "seagreen" :extend t) >> >> + (((class color) (min-colors 8)) >> >> + :background "green" :foreground "white" :extend t) >> > >> > If tty-color translation produces "green" from the two green shades >> > you define for 88+ color displays, then the last part is not needed. >>=20 >> Fine. >>=20 >> >> + (t :inverse-video t :extend t)) >> > >> > Isn't the mode line shown in inverse video by default in monochrome >> > case? If so, this is not needed, either. >>=20 >> These faces are not for the mode-line, are for the package-menu buffer, >> specifically for highlight the line where a package was marked for >> install/delete. > > Then I think inverse-video is too radical. I'd suggest to use bold > (if supported) or underline (if supported), with inverse-video being > the last resort. I would use the `highlight' face. We could also add a semantic "selection". >> +(defface package-mark-install-line >> + '((((class color) (min-colors 88) (background light)) >> + :background "darkolivegreen1" :extend t) >> + (((class color) (min-colors 88) (background dark)) >> + :background "seagreen" :extend t) >> + (t :inverse-video t :extend t)) > > This will cause any display with fewer than 88 colors use the > inverse-video alternative. I suggest to remove the min-colors > requirement, since it isn't needed. > >> +(defface package-mark-delete-line >> + '((((class color) (min-colors 88) (background light)) >> + :background "rosybrown1" :extend t) >> + (((class color) (min-colors 88) (background dark)) >> + :background "indianred4" :extend t) >> + (t :inverse-video t :extend t)) > > Likewise. > >> +(defcustom package-menu-marks-indicators >> + '((install . "I") >> + (delete . "D")) >> + "Alist indicators to indicate a package is marked to install or delet= e. >> +The value of each list must be in the formt: '(KIND . MARK) where KIND >> +is the kind mark performed (`install' or `delete') in package-menu and >> +MARK a string to use for mark the packages. This currently support >> +marks for install and delete." What is the reason we would want to customise this in the first place? > > This doc string has several grammatical issues, and also lacks some > important information. I suggest to rephrase as follows: > > "Indicators for packages to be installed or deleted. > The value is an alist whose elements have the form (KIND . MARK), > where KIND is the operation to perform, either `install' or `delete', > and MARK is a string to indicate that the operation is pending for > the package. The MARK string should satisfy the requirements of the > TAG argument of `tabulated-list-put-tag', which see. It is displayed > in the padding area of the package's line. > > Currently, only indicators for installing or deleting a package are > supported." > >> + :type '(list (cons symbol string) >> + (cons symbol string)) > > Can we come up with a meaningful :tag for the value? (I haven't check it, but...) is this the type of `package-menu-marks-indicators'? If so, we shouldn't document the user option as an Alist. >> +(defun package-menu--overlay-line (face) >> + "Highlight whole line with face FACE." >> + (let ((ov (make-overlay (line-beginning-position) >> + (1+ (line-end-position))))) >> + (overlay-put ov 'pkg-menu-ov t) >> + (overlay-put ov 'evaporate t) >> + (overlay-put ov 'face face))) > > Does package-menu use other faces in overlays, and if so, should we > consider giving this overlay a non-default priority? >From a quick search, we don't appear to use any overlays in package.el. >> + (total-help "Total packages of all package archives") >> + (installed-help "Total packages installed") >> + (upgrade-help "Total packages to upgrade") >> + (new-help "Total new packages available")) > > Please use "Total number of SOMETHING" in these help strings. > Otherwise, it is not immediately clear what "Total" refers to. 1+ From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 16 15:13:15 2025 Received: (at 78794) by debbugs.gnu.org; 16 Jun 2025 19:13:15 +0000 Received: from localhost ([127.0.0.1]:48831 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uRFGY-0005mY-AL for submit@debbugs.gnu.org; Mon, 16 Jun 2025 15:13:15 -0400 Received: from mail-oi1-x242.google.com ([2607:f8b0:4864:20::242]:57467) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uRFGQ-0005k4-Kf for 78794@debbugs.gnu.org; Mon, 16 Jun 2025 15:13:07 -0400 Received: by mail-oi1-x242.google.com with SMTP id 5614622812f47-407aaace4daso2373437b6e.2 for <78794@debbugs.gnu.org>; Mon, 16 Jun 2025 12:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750101176; x=1750705976; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=UyheHMjadSmM0OkgJSazBAspf4LDc0Ev0CsOFgLLJPs=; b=kJYqfdW6pZzbtoFqEEFmt/VFg8oYbeV3Y835wUsPWZ6wpT9lNY6uyIm04tPEs8y3cf ZSZ3b0FsIHgrmkaY4jbrdNDB6LxlrUC24NG7g8GRfkw73X73Igtg/nH4s/upP6ejdAek x0C/iHPbKaL89S+ClYrOKaAXLSlDiXguJajDVnld6Q8MxH++gPAFoeef2yWwWSCZsDVO mUUkt1+g9yMeriPTHHWrnEp8fbI73+dLvUkOdqwVqbJx1Uo0/cf4pS/E1iItF7QML5/l SnJakBOLOkoxgsW5he7NU+SNPBCtQUyf6C/4tpGDqN6yXZVq7oPzUhcpWuSwGq2XJY8n wkFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750101176; x=1750705976; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UyheHMjadSmM0OkgJSazBAspf4LDc0Ev0CsOFgLLJPs=; b=e0kV/3VCZ7z3x6nHLHsGF8Jet430SjJvvamoLaS7FWr4bujQiwWUBIXM5Gu5DHFkru KJ3x7aX00yScCaFaXzyFg0e7h7K3+AxAgHWfxqlzSYfonObSEQoLLbpR4+bzWq42biGp 4dPYkX/qYkBgXfU2MnJ+k9uSc1MwuoWfRfpbYYwjcaUGmezXvZEdeP9MDgtDwbTwyocs 4N7/ted1h4yuZb3gom6YZC4GezNkixUB1cpgrkXIbo/l1lTqgwj9EFcdTMfbj9X+vLZZ n5xD9QBjENMSzuNYi8qzIOTuQoulZOhGXLqGrqFcTb7Xqrp5byvgddsca/M9PNx63nXi CKjQ== X-Forwarded-Encrypted: i=1; AJvYcCXxWAzmnD0NL7HJG+YkAouVDg4w7GleIO1tThUkpI/zIpiB6DZzT+2p/6gtgxVbhDlj/0MC4A==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxgLSkXICccTlnq2/pcCKoibmQPFqi+Zk/BYCohba9r5UH6FyEI 0fL5mC5GSFB+JaUgsIFBdTqSfaZCeXT7N1IuMP7965N45n5cJuF+Ab72GWful+0x X-Gm-Gg: ASbGncuUcSSvLFt1TvMg6mD0EyrfOpRmEu4NEHKWW8/n9ri9zcYSICoV69Zd6yqqw1i lGnMYymjdsw6VEUEU8j+pmN1j3X8wy/nKxUuEUwTjU/nOTBv7oUnUSjL5IVilt26XeP7ugXHVPT MQcGQs5e/dOrEOIaLKqUDoQUPpoaAWwXX9QyDKmGwnXT5J8wIrUGBXARN0JrRAcaebUyWLvcw+Q ucYxRJU8LJP52LWT6Ex21iECOrFekfNmFLuUb6jyJb5+yyqldWppJRGvGxyUdbxWclP1yufH3EC J7kcM+eQaoCVWyPraGRLPxm22bx7jyrvBrKObqCB X-Google-Smtp-Source: AGHT+IGcZHHBEF4JQCECscVsOGkSypMtG4NR0yvZjWYnkzOv6LefOKwDZmpqr5RaMD7gyiCedCCC7Q== X-Received: by 2002:a05:6808:190f:b0:3fe:af0b:22f7 with SMTP id 5614622812f47-40a7c10aae4mr6785499b6e.11.1750101176031; Mon, 16 Jun 2025 12:12:56 -0700 (PDT) Received: from fedora ([2806:10ae:e:998c::1]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-61108f2f6fdsm932937eaf.35.2025.06.16.12.12.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jun 2025 12:12:55 -0700 (PDT) From: =?utf-8?Q?Elijah_Gabe_P=C3=A9rez?= To: Eli Zaretskii Subject: Re: bug#78794: [PATCH] Pretiffy package-menu In-Reply-To: <86frg0p5bs.fsf@gnu.org> References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> <86bjqpr2gb.fsf@gnu.org> <87ikkwakwh.fsf@gmail.com> <86frg0p5bs.fsf@gnu.org> Date: Mon, 16 Jun 2025 13:12:53 -0600 Message-ID: <87cyb3h556.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 78794 Cc: 78794@debbugs.gnu.org, Philip Kaludercic 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.7 (/) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> This is enabled by default (I forgot to include it in the NEWS entry). >> The reason why i decided make it an option is because some user >> may find it annoying. > > In what ways could it be annoying? Fine, I've removed the option. >> These faces are not for the mode-line, are for the package-menu buffer, >> specifically for highlight the line where a package was marked for >> install/delete. > > Then I think inverse-video is too radical. I'd suggest to use bold > (if supported) or underline (if supported), with inverse-video being > the last resort. I've changed it to use `highlight` face instead, following Philip suggestion. >> +(defcustom package-menu-marks-indicators >> + '((install . "I") >> + (delete . "D")) >> + "Alist indicators to indicate a package is marked to install or delete. >> +The value of each list must be in the formt: '(KIND . MARK) where KIND >> +is the kind mark performed (`install' or `delete') in package-menu and >> +MARK a string to use for mark the packages. This currently support >> +marks for install and delete." > > This doc string has several grammatical issues, and also lacks some > important information. I suggest to rephrase as follows: > > "Indicators for packages to be installed or deleted. > The value is an alist whose elements have the form (KIND . MARK), > where KIND is the operation to perform, either `install' or `delete', > and MARK is a string to indicate that the operation is pending for > the package. The MARK string should satisfy the requirements of the > TAG argument of `tabulated-list-put-tag', which see. It is displayed > in the padding area of the package's line. > > Currently, only indicators for installing or deleting a package are > supported." Thanks, it sounds better. >> +(defun package-menu--overlay-line (face) >> + "Highlight whole line with face FACE." >> + (let ((ov (make-overlay (line-beginning-position) >> + (1+ (line-end-position))))) >> + (overlay-put ov 'pkg-menu-ov t) >> + (overlay-put ov 'evaporate t) >> + (overlay-put ov 'face face))) > > Does package-menu use other faces in overlays, and if so, should we > consider giving this overlay a non-default priority? AFAIK, there are no other overlays in package-menu. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Pretiffy-package-menu-Bug-78794.patch >From a4829091eec260e35c9a67cbe39fb78ea48bd89a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?El=C3=ADas=20Gabriel=20P=C3=A9rez?= Date: Thu, 12 Jun 2025 22:23:52 -0600 Subject: [PATCH] Pretiffy package-menu (Bug#78794) Add package-menu mode-line which displays information about: total packages installed, total packages from all the packages archive, total packages to upgrade and total new packages available. Highlight packages marked for installation or deletion. And allow customize package-menu marks. * etc/NEWS: Announce changes. * lisp/emacs-lisp/package.el (package-menu-mode): Add package-menu mode-line format to 'mode-line-misc-info'. (package-mark-install-line, package-mark-delete-line): New faces. (package-menu-marks-indicators): New user options. (package-menu--overlay-line, package-menu--remove-overlay) (package-menu--set-mode-line-format): New functions. (package-menu-mark-delete, package-menu-mark-install) (package-menu-mark-unmark, package-menu-backup-unmark) (package-menu-mark-obsolete-for-deletion): Tweak for set/unset the overlays. (package-menu-mode-line-format, package-menu-mode-line-info): New buffer-local variables. (list-packages): Add 'package-menu--set-mode-line-format' to 'package--post-download-archives-hook'. --- etc/NEWS | 7 ++ lisp/emacs-lisp/package.el | 132 ++++++++++++++++++++++++++++++++++++- 2 files changed, 136 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 0c66ac38105..4b728075dbf 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1900,6 +1900,13 @@ the command will only copy those files. +++ *** package-x.el is now obsolete. +--- +*** New user option 'package-menu-marks-indicators'. +This option controls the kind of mark string to use in package-menu-mark +commands. + +--- +*** Package-menu now highlights packages marked for installation or deletion. ** RCIRC diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 82fcf439a11..5633ed1bdb5 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -3236,6 +3236,10 @@ package-menu-mode (setq mode-line-process '((package--downloads-in-progress ":Loading") (package-menu--transaction-status package-menu--transaction-status))) + (setq-local mode-line-misc-info + (append + mode-line-misc-info + package-menu-mode-line-format)) (setq tabulated-list-format `[("Package" ,package-name-column-width package-menu--name-predicate) ("Version" ,package-version-column-width package-menu--version-predicate) @@ -3642,6 +3646,24 @@ package-status-avail-obso "Face used on the status and version of avail-obso packages." :version "25.1") +(defface package-mark-install-line + '((((class color) (background light)) + :background "darkolivegreen1" :extend t) + (((class color) (background dark)) + :background "seagreen" :extend t) + (t :inherit (highlight) :extend t)) + "Face used for highlight the line where a package is marked to install." + :version "31.1") + +(defface package-mark-delete-line + '((((class color) (background light)) + :background "rosybrown1" :extend t) + (((class color) (background dark)) + :background "indianred4" :extend t) + (t :inherit (highlight) :extend t)) + "Face used for highlight the line where a package is marked to delete." + :version "31.1") + ;;; Package menu printing @@ -3702,6 +3724,37 @@ package-menu--refresh-contents (package-refresh-contents package-menu-async)) (define-obsolete-function-alias 'package-menu-refresh 'revert-buffer "27.1") +(defcustom package-menu-marks-indicators + '((install . "I") + (delete . "D")) + "Indicators for packages to be installed or deleted. +The value is an alist whose elements have the form (KIND . MARK), +where KIND is the operation to perform, either `install' or `delete', +and MARK is a string to indicate that the operation is pending for +the package. The MARK string should satisfy the requirements of the +TAG argument of `tabulated-list-put-tag', which see. It is displayed +in the padding area of the package's line. + +Currently, only indicators for installing or deleting a package are +supported." + :type '(list (cons :tag "Install mark indicator" symbol string) + (cons :tag "Delete mark indicator" symbol string)) + :version "31.1") + +(defun package-menu--overlay-line (face) + "Highlight whole line with face FACE." + (let ((ov (make-overlay (line-beginning-position) + (1+ (line-end-position))))) + (overlay-put ov 'pkg-menu-ov t) + (overlay-put ov 'evaporate t) + (overlay-put ov 'face face))) + +(defun package-menu--remove-overlay () + "Remove all overlays done by `package-menu--overlay-line' in current line." + (remove-overlays (line-beginning-position) + (1+ (line-end-position)) + 'pkg-menu-ov t)) + (defun package-menu-hide-package () "Hide in Package Menu packages that match a regexp. Prompt for the regexp to match against package names. @@ -3757,7 +3810,9 @@ package-menu-mark-delete (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("installed" "source" "dependency" "obsolete" "unsigned")) - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line) + (tabulated-list-put-tag + (alist-get 'delete package-menu-marks-indicators) t)) (forward-line))) (defun package-menu-mark-install (&optional _num) @@ -3766,7 +3821,9 @@ package-menu-mark-install (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) (if (member (package-menu-get-status) '("available" "avail-obso" "new" "dependency")) - (tabulated-list-put-tag "I" t) + (progn (package-menu--overlay-line 'package-mark-install-line) + (tabulated-list-put-tag + (alist-get 'install package-menu-marks-indicators) t)) (forward-line))) (defun package-menu-mark-unmark (&optional _num) @@ -3774,6 +3831,7 @@ package-menu-mark-unmark The current package is the package at point." (interactive "p" package-menu-mode) (package--ensure-package-menu-mode) + (package-menu--remove-overlay) (tabulated-list-put-tag " " t)) (defun package-menu-backup-unmark () @@ -3781,6 +3839,7 @@ package-menu-backup-unmark (interactive nil package-menu-mode) (package--ensure-package-menu-mode) (forward-line -1) + (package-menu--remove-overlay) (tabulated-list-put-tag " ")) (defun package-menu-mark-obsolete-for-deletion () @@ -3791,7 +3850,9 @@ package-menu-mark-obsolete-for-deletion (goto-char (point-min)) (while (not (eobp)) (if (equal (package-menu-get-status) "obsolete") - (tabulated-list-put-tag "D" t) + (progn (package-menu--overlay-line 'package-mark-delete-line) + (tabulated-list-put-tag + (alist-get 'delete package-menu-marks-indicators) t)) (forward-line 1))))) (defvar package--quick-help-keys @@ -4207,6 +4268,69 @@ package-menu--mark-or-notify-upgrades (package-menu--mark-upgrades-1) (package-menu--find-and-notify-upgrades)))))) +;; Mode-line +(defconst package-menu-mode-line-format + '((package-menu-mode-line-info + (:eval (symbol-value 'package-menu-mode-line-info))))) + +(defvar-local package-menu-mode-line-info nil + "Variable which stores package-menu mode-line format.") + +(defun package-menu--set-mode-line-format () + "Display package-menu mode-line." + (when-let* ((buf (get-buffer "*Packages*")) + ((buffer-live-p buf))) + (with-current-buffer buf + (setq package-menu-mode-line-info + (let ((installed 0) + (new 0) + (total (length package-archive-contents)) + (to-upgrade (length (package-menu--find-upgrades))) + (total-help "Total number of packages of all package archives") + (installed-help "Total number of packages installed") + (upgrade-help "Total number of packages to upgrade") + (new-help "Total number of new packages available")) + + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (let ((status (package-menu-get-status))) + (cond + ((member status + '("installed" "dependency" "unsigned")) + (setq installed (1+ installed))) + ((equal status "new") + (setq new (1+ new))))) + (forward-line))) + + (setq installed (number-to-string installed)) + (setq total (number-to-string total)) + (setq to-upgrade (number-to-string to-upgrade)) + (setq new (number-to-string new)) + + (list + "[" + (propertize "Total: " 'help-echo total-help) + (propertize total + 'help-echo total-help + 'face 'font-lock-keyword-face) + " / " + (propertize "Installed: " 'help-echo installed-help) + (propertize installed + 'help-echo installed-help + 'face 'package-status-installed) + " / " + (propertize "To Upgrade: " 'help-echo upgrade-help) + (propertize to-upgrade + 'help-echo upgrade-help + 'face 'font-lock-keyword-face) + " / " + (propertize "New: " 'help-echo new-help) + (propertize new + 'help-echo new-help + 'face 'package-status-new) + "] ")))))) + ;;;###autoload (defun list-packages (&optional no-fetch) "Display a list of packages. @@ -4225,6 +4349,8 @@ list-packages #'package-menu--post-refresh) (add-hook 'package--post-download-archives-hook #'package-menu--mark-or-notify-upgrades 'append) + (add-hook 'package--post-download-archives-hook + #'package-menu--set-mode-line-format 'append) ;; Generate the Package Menu. (let ((buf (get-buffer-create "*Packages*"))) -- 2.49.0 --=-=-= Content-Type: text/plain -- - E.G via GNU Emacs and Org. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 16 15:52:47 2025 Received: (at 78794) by debbugs.gnu.org; 16 Jun 2025 19:52:47 +0000 Received: from localhost ([127.0.0.1]:49000 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uRFss-0003pK-CO for submit@debbugs.gnu.org; Mon, 16 Jun 2025 15:52:47 -0400 Received: from mail-oa1-x41.google.com ([2001:4860:4864:20::41]:56447) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uRFsn-0003nR-HU for 78794@debbugs.gnu.org; Mon, 16 Jun 2025 15:52:44 -0400 Received: by mail-oa1-x41.google.com with SMTP id 586e51a60fabf-2da73158006so4030988fac.0 for <78794@debbugs.gnu.org>; Mon, 16 Jun 2025 12:52:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750103554; x=1750708354; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=35LgrxUzrrwxMtIt7U51yY3hsxV/t7Fu7V6CaQzXndQ=; b=DiEVE4Y0z3TXhEncF7XrM0hhdF6JOaWFEDRplUF1fyKHbUF/xsZ4guDQ4vkhw5JWUq pG4y1W+dbf6HjWdsG30J4z4+HFSbQdB3VE1xTtg5VbkdQrtzWKa9N5Qb26PXg/AePcJy D9W/a+mwnbmt0R17A+oB55LQdgVFqzxvaWA9XsKRLFwvYDnXU1enHmyA+u+osf+FHlv8 egJqORhQHc8Ewgpdwqf8Ts1jCX58t0eBkv/PoHSDCm0qUpOWK11gOkRcYFQbOKi1H08N EagiQ/UCbbnd6+MkKp/hcgMXlLXuU9E0HQ9CWJD34Drf1uLzOO3iJKVumUsSYbV4J6uH 5lHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750103554; x=1750708354; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=35LgrxUzrrwxMtIt7U51yY3hsxV/t7Fu7V6CaQzXndQ=; b=r1gfSY7dXzJZjHPJa8zLvTvK0W+IcrNUgKeS/HZqW2RMDTY3O0H1YOFDEw2KIodgge yhi0jqLSJqIU999X5AcwKN2vhg2hBsk67T6VCs2Pv00kOWMnrTIU1au5Ha6QfR0Ggns3 lZC1p1iBkq5v31U4n+hH1G53m/RHQN4r2GFLmS6UbLwWFOrRRs47iNWojJonetOHIjoP RmCpQfphSiu8gOd6y+CCp3bFLA16S0fQoGM6Tg21aBHqxuKkFwAppl603mH+/QKsK09E 7k+g5inNaO9YUZBNmHfAj25IBtzFyoHP0ybIiq/Oyr1cGh30iv9BeGXaH/PVpKPm5EWB TPNQ== X-Forwarded-Encrypted: i=1; AJvYcCWuhl+9jaNhhkPIFk/xc1+SpkvxZzsvtJ6DURDRcbk7r+hTlQf15+e+a6rasQM+DsFEnYfl4Q==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwMEKtBFshUdwGPK40sFWFsVEhNQTB1kR/XPPmut3jn9DStOZlr kgUNeCT0qkdXPiTT/1tnXKcVTRSDVTT+3oUFvxGjxNBovedZi/gjwRL68ZsWEGu+ X-Gm-Gg: ASbGncvrgf1qIRA+8t2J5iPtPn5J3/amRxsveGflADUtxF+aX8HfXcnF7T3Wdclq2F+ zcsIjz+G6KyyDCT05PSp0+MXV03grzI/Ebl03z/gaUXFJpXWycZsx3nctEfCEv13mcMY/NhnmjW tCHA/7bUixOHwzzfBhvEe0Qclbcz+yS9ku7Xt2X+tRdZ91N0kUM/NR52H5AicCHj3MgdzTI5wCW Utdl5GyFPRWn6VycUwzBVteZqmok2a/tTR7mrcyX/D31vDOsClT45AXTaroNXEXc+WnmOOJqViL wrd54AQ1vDVFEYUdircvEuySkrcRiw== X-Google-Smtp-Source: AGHT+IEib5u9U524W3IM4W3Yg0wsSqO7t6pyYaJDtBHezqjl7sriw0wwRWDBZ3Ha8tSt7lrFJ78MpA== X-Received: by 2002:a05:6870:e388:b0:2c8:5db8:f23a with SMTP id 586e51a60fabf-2eaf0847ed5mr5169913fac.20.1750103554332; Mon, 16 Jun 2025 12:52:34 -0700 (PDT) Received: from fedora ([2806:10ae:e:998c::1]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-61108ebe597sm1008532eaf.20.2025.06.16.12.52.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jun 2025 12:52:33 -0700 (PDT) From: =?utf-8?Q?Elijah_Gabe_P=C3=A9rez?= To: Philip Kaludercic Subject: Re: bug#78794: [PATCH] Pretiffy package-menu In-Reply-To: <87ecvjetv5.fsf@posteo.net> References: <87plf5iwps.fsf@gmail.com> <87ikkxiwh9.fsf@gmail.com> <86bjqpr2gb.fsf@gnu.org> <87ikkwakwh.fsf@gmail.com> <86frg0p5bs.fsf@gnu.org> <87ecvjetv5.fsf@posteo.net> Date: Mon, 16 Jun 2025 13:52:32 -0600 Message-ID: <87plf3mpkv.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 78794 Cc: 78794@debbugs.gnu.org, 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.7 (/) Philip Kaludercic writes: >>> +(defcustom package-menu-marks-indicators >>> + '((install . "I") >>> + (delete . "D")) >>> + "Alist indicators to indicate a package is marked to install or dele= te. >>> +The value of each list must be in the formt: '(KIND . MARK) where KIND >>> +is the kind mark performed (`install' or `delete') in package-menu and >>> +MARK a string to use for mark the packages. This currently support >>> +marks for install and delete." > > What is the reason we would want to customise this in the first place? IMO, the I and D characters looks somewhat ugly to me, making them customizable allows to change them to an Unicode/Emoji icon (or any other character), making them more recognizable according to the user's preferences (e.g. =F0=9F=97=91=EF=B8=8F/=E2=99=BB=EF=B8=8F and =E2=9C=85). >> This doc string has several grammatical issues, and also lacks some >> important information. I suggest to rephrase as follows: >> >> "Indicators for packages to be installed or deleted. >> The value is an alist whose elements have the form (KIND . MARK), >> where KIND is the operation to perform, either `install' or `delete', >> and MARK is a string to indicate that the operation is pending for >> the package. The MARK string should satisfy the requirements of the >> TAG argument of `tabulated-list-put-tag', which see. It is displayed >> in the padding area of the package's line. >> >> Currently, only indicators for installing or deleting a package are >> supported." >> >>> + :type '(list (cons symbol string) >>> + (cons symbol string)) >> >> Can we come up with a meaningful :tag for the value? > > (I haven't check it, but...) is this the type of > `package-menu-marks-indicators'? If so, we shouldn't document the user > option as an Alist. But what other name would be better? Honestly I decided to make this option a list instead of making a separated option for each mark, this is in case there are plans to add more options/marks in the future. --=20 - E.G via GNU Emacs and Org.