From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 Aug 2021 12:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 50297@debbugs.gnu.org Cc: Dmitry Gutov X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.163041408811219 (code B ref -1); Tue, 31 Aug 2021 12:49:01 +0000 Received: (at submit) by debbugs.gnu.org; 31 Aug 2021 12:48:08 +0000 Received: from localhost ([127.0.0.1]:33267 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3BM-0002up-Ek for submit@debbugs.gnu.org; Tue, 31 Aug 2021 08:48:08 -0400 Received: from lists.gnu.org ([209.51.188.17]:43348) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3BH-0002uH-Ld for submit@debbugs.gnu.org; Tue, 31 Aug 2021 08:48:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38320) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL3BG-0006Ur-Kw for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2021 08:47:59 -0400 Received: from mout02.posteo.de ([185.67.36.66]:46731) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL3BD-0000LC-Ie for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2021 08:47:58 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 5A3E0240104 for ; Tue, 31 Aug 2021 14:47:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1630414072; bh=w1HP9z1M6Y7MElJRyHM/u8LnfKbr0Jl//9TCl2jOUUs=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=HSn7p0dSH4udJcz2rxTTane9DS0bYrwPAUblYNyYNVmriKMBPpC/2tmG78x8m1SjN ha9FJSZVBP7914/uDTQzNRxLNA7aFZHFdJ/4m3imPBrJjOJ992ydC+LVnJO00JEXai BoNxksW68roXNSijHPsZSjE3JUsa/BkhiAB0EbPgiV2G0XFMa6RygXPL6J2MC6ZYL1 Fx40VJNBgP6MvpzYwZxCoWPr80sCwwNVXjqtc68cSzprNhl1l9YsZigFJtn2BKE29Y iwf2+pnSKCm8dcMAyaqZqLYrXHP68CcreYTslipjy31oWAJsYvEgn/RWuknmHEH17U X4s8GzaG4rwxg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4GzRml39Hvz6tmV; Tue, 31 Aug 2021 14:47:51 +0200 (CEST) From: Philip Kaludercic Autocrypt: addr=philipk@posteo.net; prefer-encrypt=mutual; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Tue, 31 Aug 2021 12:47:50 +0000 Message-ID: <87h7f5ok5l.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=185.67.36.66; envelope-from=philipk@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) 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.3 (--) --=-=-= Content-Type: text/plain The following patch introduces a few functions for aggregate project maintenance: - project-find-projects-under Select a directory with projects to index all at once. - project-remove-zombie-projects Check if all known projects still exist and remove those that don't anymore - project-remove-projects-under Remove all projects in a directory (inverse of project-find-projects-under). Especially the last two are useful to maintain a clean project list without having to manually remove every project one by one. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-aggregate-project-discovery-and-maintenance-func.patch >From 3431a9123753d769f10621d2f5f6ef72ab0e2f3a Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Tue, 31 Aug 2021 14:12:13 +0200 Subject: [PATCH] Add aggregate project discovery and maintenance functions * project.el (project-remember-project): Add optional no-write argument (project-find-projects-under): Add command (project-remove-zombie-projects): Add command (project-remove-known-projects): Add command --- lisp/progmodes/project.el | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index ae9bf03571..2f251393e2 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1261,9 +1261,10 @@ project--write-project-list (write-region nil nil filename nil 'silent)))) ;;;###autoload -(defun project-remember-project (pr) +(defun project-remember-project (pr &optional no-write) "Add project PR to the front of the project list. -Save the result in `project-list-file' if the list of projects has changed." +Save the result in `project-list-file' if the list of projects +has changed, and NO-WRITE is nil." (project--ensure-read-project-list) (let ((dir (project-root pr))) (unless (equal (caar project--list) dir) @@ -1271,7 +1272,8 @@ project-remember-project (when (equal dir (car ent)) (setq project--list (delq ent project--list)))) (push (list dir) project--list) - (project--write-project-list)))) + (unless no-write + (project--write-project-list))))) (defun project--remove-from-project-list (project-root report-message) "Remove directory PROJECT-ROOT of a missing project from the project list. @@ -1325,6 +1327,35 @@ project-execute-extended-command (let ((default-directory (project-root (project-current t)))) (call-interactively #'execute-extended-command))) +(defun project-find-projects-under (dir) + "Index all projects below a directory DIR." + (interactive "DDirectory: ") + (let ((count 0)) + (dolist (subdir (directory-files dir t nil t)) + (when-let (pr (project--find-in-directory subdir)) + (project-remember-project pr t) + (message "Found %s..." (project-root pr)) + (setq count (1+ count)))) + (if (zerop count) + (message "No projects found") + (project--write-project-list) + (message "%d project%s found" + count (if (= count 1) "" "s"))))) + +(defun project-remove-zombie-projects () + "Remove all known projects that don't exist any more." + (interactive) + (dolist (proj (project-known-project-roots)) + (unless (file-exists-p proj) + (project-remove-known-project proj)))) + +(defun project-remove-known-projects (dir) + "Remove all known projects below a directory DIR." + (interactive "DDirectory: ") + (dolist (proj (project-known-project-roots)) + (when (file-in-directory-p proj dir) + (project-remove-known-project proj)))) + ;;; Project switching -- 2.30.2 --=-=-= Content-Type: text/plain In GNU Emacs 28.0.50 (build 7, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw scroll bars) of 2021-08-26 built on icterid Repository revision: b74afe63d02f126127d9211c0d1c1dc2cf5dd5bb Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure LDFLAGS=-flto 'CFLAGS=-O2 -march=native -mtune=native -pipe' --with-native-compiler' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM LUCID ZLIB Important settings: value of $EMACSLOADPATH: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Git-Log-View Minor modes in effect: TeX-PDF-mode: t global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t icomplete-mode: t rcirc-track-minor-mode: t display-time-mode: t winner-mode: t windmove-mode: t electric-pair-mode: t recentf-mode: t save-place-mode: t savehist-mode: t show-paren-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t temp-buffer-resize-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t Load-path shadows: /home/philip/.config/emacs/elpa/transient-0.3.6/transient hides /home/philip/Code/src/emacs/lisp/transient ~/.config/emacs/site-lisp/autoload hides /home/philip/Code/src/emacs/lisp/emacs-lisp/autoload Features: (shadow emacsbug tramp-archive tramp-gvfs tramp-cache zeroconf tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat ls-lisp flymake-cc macrostep-c cmacexp macrostep preview tex-buf tex-fold reftex-dcr reftex-auc reftex reftex-loaddefs reftex-vars font-latex latex latex-flymake tex-ispell tex-style tex texmathp tex-mode latexenc apropos eieio-opt speedbar ezimage dframe shortdoc vc-annotate help-at-pt gnus-fun cl-print debug backtrace pulse find-func rect markdown-mode shell-command+ rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-enc xmltok xref find-dired grep mhtml-mode css-mode smie eww xdg url-queue mm-url color js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs sgml-mode facemenu whitespace make-mode dired-aux ffap avy magit-extras bug-reference face-remap magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff git-commit log-edit add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor term ehelp eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util shell pcomplete server magit-mode transient format-spec magit-git magit-section magit-utils dash vc-fossil vc-mtn vc-hg vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs icomplete project memory-report char-fold misearch multi-isearch mailalias bbdb-pgp url-http url-gw url-cache url-auth cus-edit pp cus-start finder-inf bbdb-message autocrypt-message smerge-mode diff-mode jka-compr mule-util smiley gnus-cite flow-fill mm-archive mail-extr gnus-async gnus-bcklg qp sort gnus-ml disp-table autocrypt-gnus autocrypt nndraft nnmh epa-file gnutls network-stream nsm nnmaildir nnfolder vc-backup log-view pcvs-util vc vc-dispatcher diff time-stamp bbdb-gnus bbdb-mua bbdb-com crm nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig nntp gnus-cache gnus-sum shr kinsoku svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec epa mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win modus-vivendi-theme paredit checkdoc flymake-proc flymake warnings thingatpt flyspell ispell noutline outline easy-mmode gnus-dired dired-x dired dired-loaddefs rcirc parse-time iso8601 rx time bbdb bbdb-site timezone sendmail gnus nnheader gnus-util rmail rmail-loaddefs time-date mail-utils hippie-exp winner windmove elec-pair recentf tree-widget wid-edit saveplace savehist paren modus-operandi-theme modus-themes holidays hol-loaddefs cal-menu calendar cal-loaddefs cus-load setup load compile text-property-search comint ansi-color autoload lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr tex-site geiser-impl help-fns radix-tree geiser-custom geiser-base ring slime-autoloads info package let-alist derived edmacro kmacro pcase cl-extra help-mode browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq byte-opt gv bytecomp byte-compile cconv epg epg-config subr-x cl-loaddefs cl-lib iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 1167755 519125) (symbols 48 100287 1576) (strings 32 294014 1164412) (string-bytes 1 10068553) (vectors 16 85242) (vector-slots 8 1729184 892975) (floats 8 776 1974) (intervals 56 55886 9874) (buffers 992 65)) -- Philip K. --=-=-=-- From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Sep 2021 01:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic , 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16304584696101 (code B ref 50297); Wed, 01 Sep 2021 01:08:02 +0000 Received: (at 50297) by debbugs.gnu.org; 1 Sep 2021 01:07:49 +0000 Received: from localhost ([127.0.0.1]:35693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLEjF-0001aK-88 for submit@debbugs.gnu.org; Tue, 31 Aug 2021 21:07:49 -0400 Received: from mail-wr1-f49.google.com ([209.85.221.49]:45908) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLEjD-0001a8-JW for 50297@debbugs.gnu.org; Tue, 31 Aug 2021 21:07:48 -0400 Received: by mail-wr1-f49.google.com with SMTP id n5so1836761wro.12 for <50297@debbugs.gnu.org>; Tue, 31 Aug 2021 18:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=04f77fC2q1hoggfI5IXYXzjpcDGIgSDS6dWidb6mAFo=; b=eb0a2bQGgPq2P6n/zuJfFc9CLO+e8ktWB3M3DHwZqSvX+KTf/ylhi+SDdb1FTu0lGQ 3XpJiXlJB5uhvRx/nYKQll4PPtfYS6dal3HPdNrJoRRX/ACSXca1zwLkfJcUuzvobPAf 86IwiqJh5DekqJrhoE31S9tnDFokxxT+iVY0Tut463vuUx8kZFbOrdgK1c17het7pmC+ FCT3NL+MZzJffOMHA2diJAxM0tS8lw1nUf9Z7ZzjDQI8FbxxEBD5yZ9Llp0kGBS9vos8 pLG7YottbiwnY4ebY6q13blYCZEBYhsA8vhL2Y6uhSrPIOKQwbKNu1Gm1ko5gjGRiwk/ SmJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=04f77fC2q1hoggfI5IXYXzjpcDGIgSDS6dWidb6mAFo=; b=I+OWSKCrOKUJYMJa6jvk3I+a3zWbZsE5zOnBrHT0Ehjay0Bqze0Ev7ol/lb3FEkyHI 7pPS4Snwa36NyG7c+KdBj/Z0xgPxTauHstICiSikRXHdzCEDanxTSdHYeXbTMfccAboi eyAq9ixlydLaBG0cD4WLP8zpcqRQVsFNv4Ek92Kju1z1R/a3HXsGm8uxMOyOK9d8OUQG fhpyhnPCCd4qzgOUh8Edjts0bfokDPWXHfCBdO8b5W2RKefzD4zIxbm5dI4MgxdBulMW dEr+KaqWXSyF2t2FqifI6wsxjOIYD2DvdRgpdPG7eocfLozo8ZPkX123SiiU/K+sxXBC Jiqw== X-Gm-Message-State: AOAM533CV4k5qt8xQoR3glAl+o3OSMvHSIuDWm/DdmaDOLX2xgdGU1ro XlW5BelEawzB4Qkl3VK5nzshtKhT+Ig= X-Google-Smtp-Source: ABdhPJwhhd2Q9cAxkbsCRLvTrxSoNOR3cfwLXKF+MKW7ef+CgTK4CXhrRe5B/Zc97j13fLqzpQQ2fQ== X-Received: by 2002:a5d:440d:: with SMTP id z13mr34300638wrq.216.1630458461639; Tue, 31 Aug 2021 18:07:41 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id a129sm4328345wme.14.2021.08.31.18.07.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 31 Aug 2021 18:07:40 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> From: Dmitry Gutov Message-ID: <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> Date: Wed, 1 Sep 2021 04:07:39 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <87h7f5ok5l.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) Hi! On 31.08.2021 15:47, Philip Kaludercic wrote: > > The following patch introduces a few functions for aggregate project > maintenance: > > - project-find-projects-under > Select a directory with projects to index all at once. I wonder how popular this is going to be. Do you have a flat directory with projects which you only want scanned one time? Another issue, is that it's not going to find nested projects (and project.el does support those). Suppose we do add it, how about the name 'project-remember-projects-under'? By analogy with 'project-remember-project'. Adding a new arg for the latter is fine by me either way. > - project-remove-zombie-projects > Check if all known projects still exist and remove those > that don't anymore Perhaps we should rename 'project-remove-known-project' to 'project-forget-known-project'? That would make for a nice symmetry. Then this function could be called 'project-forget-zombie-projects'. I'm thinking about this about the slight connotation of 'remove' which can mean removing from disk. Another approach would be to call this or similar code automatically before saving the list (and cap the number of remembered projects), but that comes with its own tradeoffs. > - project-remove-projects-under > Remove all projects in a directory (inverse of > project-find-projects-under). Similar question about popularity, but this one won't have a problem with semantics, at least (recursive-vs-non-recursive). > Especially the last two are useful to maintain a clean project list > without having to manually remove every project one by one. What if the goal was to maintain a clean project list but minimize the manual management of it by the user? Can you imagine a solution for that? What would be the downsides, compared to the present proposal? From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 Sep 2021 13:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16305894269240 (code B ref 50297); Thu, 02 Sep 2021 13:31:01 +0000 Received: (at 50297) by debbugs.gnu.org; 2 Sep 2021 13:30:26 +0000 Received: from localhost ([127.0.0.1]:40022 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLmnR-0002Oy-PT for submit@debbugs.gnu.org; Thu, 02 Sep 2021 09:30:26 -0400 Received: from mout01.posteo.de ([185.67.36.65]:55827) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLmnP-0002Oj-GR for 50297@debbugs.gnu.org; Thu, 02 Sep 2021 09:30:24 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 41892240026 for <50297@debbugs.gnu.org>; Thu, 2 Sep 2021 15:30:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1630589417; bh=wRFn1O8pHYeCBO72IAT1VbCFhlhJyJqF9sSK9LmdTAQ=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=IHtv3iAu/KSC3FOsyONpU0yLp6se7IX5EhI9XAJIk/oqfbyLAUXVmvEYoMH7lWPIi wjX5Lvvx2JrhjIwL15wETytTsG/34SQhHWLrQa9XMjoQXaFudPb0N2SuMpLETpb5P5 qLzqSZw4AfXZytYtAFFUOi5LOg8SGsVvCYBk5rWv7mEB41QIzobVhvb2IsxOF6ImPM uFm6dkm3zu38x8XYSanYraorDYeKvY5F5YV36gJIyDqOQlW+IAOcLG/ZaljeuwKfuA fHjbxEj3b+fMkJP8KqXD6kuOVcnLK2x/zYtMcmAgEWIBLMIBHFiUZSsrf7R9ccEZQv rpNn1EXONr/zw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4H0hcm0Fchz6tmD; Thu, 2 Sep 2021 15:30:15 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=mutual; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Thu, 02 Sep 2021 13:30:15 +0000 In-Reply-To: <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> (Dmitry Gutov's message of "Wed, 1 Sep 2021 04:07:39 +0300") Message-ID: <87mtovds0o.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) 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 (---) Dmitry Gutov writes: > Hi! > > On 31.08.2021 15:47, Philip Kaludercic wrote: >> The following patch introduces a few functions for aggregate project >> maintenance: >> - project-find-projects-under >> Select a directory with projects to index all at once. > > I wonder how popular this is going to be. Do you have a flat directory > with projects which you only want scanned one time? I clone most code into a directory, and I have seen others do so too. That being said, it might just be something unusual in the big picture. > Another issue, is that it's not going to find nested projects (and > project.el does support those). My first implementation of the command tried to so something like that, but it was rather slow (even if I currently only have 20 projects checked out), and indexed a lot of projects that I wasn't interested in. Maybe I can look into how it can be accelerated or only search for nested projects when a prefix argument is supplied/not supplied. > Suppose we do add it, how about the name > 'project-remember-projects-under'? By analogy with > 'project-remember-project'. I like it. > Adding a new arg for the latter is fine by me either way. > >> - project-remove-zombie-projects >> Check if all known projects still exist and remove those >> that don't anymore > > Perhaps we should rename 'project-remove-known-project' to > 'project-forget-known-project'? That would make for a nice symmetry. > > Then this function could be called 'project-forget-zombie-projects'. This also make sense. Initially I wanted to name the command that way, but then decided to go with "remove" to keep the naming consistent. > I'm thinking about this about the slight connotation of 'remove' which > can mean removing from disk. > > Another approach would be to call this or similar code automatically > before saving the list (and cap the number of remembered projects), > but that comes with its own tradeoffs. I can try it out, but I fear it might lead to annoying pauses, especially when a project was indexed via TRAMP. >> - project-remove-projects-under >> Remove all projects in a directory (inverse of >> project-find-projects-under). > > Similar question about popularity, but this one won't have a problem > with semantics, at least (recursive-vs-non-recursive). > >> Especially the last two are useful to maintain a clean project list >> without having to manually remove every project one by one. > > What if the goal was to maintain a clean project list but minimize the > manual management of it by the user? > > Can you imagine a solution for that? What would be the downsides, > compared to the present proposal? I can imagine zombie projects being cleaned up automatically, but the motivation to write project-remove-projects-under was to remove projects that were falsely indexed. An entirely different approach might be to implement a tabulated list major mode to manage projects, comparable to package-list. -- Philip Kaludercic From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 Sep 2021 14:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163059396318048 (code B ref 50297); Thu, 02 Sep 2021 14:47:02 +0000 Received: (at 50297) by debbugs.gnu.org; 2 Sep 2021 14:46:03 +0000 Received: from localhost ([127.0.0.1]:41718 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLnyd-0004h1-23 for submit@debbugs.gnu.org; Thu, 02 Sep 2021 10:46:03 -0400 Received: from mout02.posteo.de ([185.67.36.66]:59665) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLnyY-0004gE-J4 for 50297@debbugs.gnu.org; Thu, 02 Sep 2021 10:46:02 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id DF059240101 for <50297@debbugs.gnu.org>; Thu, 2 Sep 2021 16:45:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1630593951; bh=S5X218jxI14UW+XXyrICeVHJtM4d2uf5skrXAjc8zyg=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=B/LSmORPH/BIr0ItOG7dc7ASXkfaEPzFJJZJg9NQ6tTIkXhlQj44YW3JSCdo1h6AA Vki7Wxjf2BV6/jP0iTl1VLjkwUglvnJWFW5fSvvzy0bk2bQextIrfZ4mfUmX7UNP+c oWO5DJdEJiLtrImec7G4cGKIPg2i717NgF61FU8A7/6+1LN5Mi5k3dGT6JDPZWJlOF 3x/93NjYQhGfBqEx8fewr2s9d0Ny63buzJPvmAehwYZ6UYrMRm+3lgfC+/lkM3jt/4 +gGjNKzSYu7PZeMBKZWVztF14Qr5mY3FKE99Dd4le9Ifbjq7xpbrGPmNDHyssGtnNg MJh/ekM4QJo6A== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4H0kHy6m3pz6tm4; Thu, 2 Sep 2021 16:45:50 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> <87mtovds0o.fsf@posteo.net> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=mutual; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Thu, 02 Sep 2021 14:45:50 +0000 In-Reply-To: <87mtovds0o.fsf@posteo.net> (Philip Kaludercic's message of "Thu, 02 Sep 2021 15:30:15 +0200") Message-ID: <87ilzjdoip.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) 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 (---) --=-=-= Content-Type: text/plain Philip Kaludercic writes: > An entirely different approach might be to implement a tabulated list > major mode to manage projects, comparable to package-list. For the sake of it, it tried it out how this might look like. It feels clunky as of now, doesn't implement everything that it should and it might make more sense to provide as an additional package. --=-=-= Content-Type: text/plain Content-Disposition: inline diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index e420a4ccca..b438249b95 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1327,6 +1327,102 @@ project-execute-extended-command (let ((default-directory (project-root (project-current t)))) (call-interactively #'execute-extended-command))) + +;;; Project managment + +(defun project-list-generate-list () + "Generate a list of projects for `tabulated-list-mode'." + (let (entries) + (dolist (root (project-known-project-roots)) + (when-let* ((proj (project--find-in-directory root)) + (root (project-root proj)) + ;; XXX: Name and Type are just to keep the buffer + ;; from looking too empty. + (name (capitalize + (file-name-nondirectory + (directory-file-name root)))) + (type (if (consp proj) (format "%S" (car proj)) "??")) + (data (vector name type root))) + (push (list root data) entries))) + entries)) + +(defun project-list-select () + "Select the project at point." + (interactive) + (project-switch-project (tabulated-list-get-id))) + +(defun project-list-mark-forget () + "Mark the project at point to be forgotten." + (interactive) + (save-mark-and-excursion + (save-restriction + (narrow-to-region (region-beginning) (region-end)) + (goto-char (point-min)) + (while (not (eobp)) + (tabulated-list-put-tag "F" t))))) + +(defun project-list-forget-zombies () + "Mark the project at point to be forgotten." + (interactive) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (unless (file-exists-p (tabulated-list-get-id)) + (tabulated-list-put-tag "F" t))))) + +(defun project-list-unmark () + "Unmark the project at point." + (save-mark-and-excursion + (save-restriction + (narrow-to-region (region-beginning) (region-end)) + (goto-char (point-min)) + (while (not (eobp)) + (tabulated-list-put-tag " " t))))) + +(defun project-list-execute () + "Preform marked actions on the project list." + (interactive) + (let (forget-list) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (when (eq (char-after) ?F) + (push (tabulated-list-get-id) forget-list)) + (forward-line))) + (when (yes-or-no-p (format "Forget %d projects? " (length forget-list))) + (mapc #'project-remove-known-project forget-list) + (tabulated-list-clear-all-tags) + (tabulated-list-print)))) + +(defvar project-list-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "RET") #'project-list-select) + (define-key map (kbd "f") #'project-list-mark-forget) + (define-key map (kbd "d") #'project-list-mark-forget) + (define-key map (kbd "z") #'project-list-forget-zombies) + (define-key map (kbd "u") #'project-list-unmark) + (define-key map (kbd "x") #'project-list-execute) + map)) + +(define-derived-mode project-list-mode tabulated-list-mode "Project List" + "Major mode for browsing the list of known projects." + (setq tabulated-list-format [("Name" 16 t) + ("Type" 4 nil) + ("Path" 0 t)] + tabulated-list-entries #'project-list-generate-list + tabulated-list-padding 2) + (tabulated-list-init-header) + (tabulated-list-print)) + +;;;###autoload +(defun project-list-projects () + "Display a list of all known projects." + (interactive) + (project--ensure-read-project-list) + (with-current-buffer (get-buffer-create "*Projects*") + (project-list-mode) + (pop-to-buffer-same-window (current-buffer)))) + ;;; Project switching --=-=-= Content-Type: text/plain -- Philip Kaludercic --=-=-=-- From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 Sep 2021 15:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org, Dmitry Gutov Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.1630598223552 (code B ref 50297); Thu, 02 Sep 2021 15:58:01 +0000 Received: (at 50297) by debbugs.gnu.org; 2 Sep 2021 15:57:03 +0000 Received: from localhost ([127.0.0.1]:41819 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLp5L-00008q-JH for submit@debbugs.gnu.org; Thu, 02 Sep 2021 11:57:03 -0400 Received: from relay12.mail.gandi.net ([217.70.178.232]:43719) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLp5K-00007i-1c for 50297@debbugs.gnu.org; Thu, 02 Sep 2021 11:57:02 -0400 Received: (Authenticated sender: juri@linkov.net) by relay12.mail.gandi.net (Postfix) with ESMTPSA id EC1D320000B; Thu, 2 Sep 2021 15:56:54 +0000 (UTC) From: Juri Linkov Organization: LINKOV.NET References: <87h7f5ok5l.fsf@posteo.net> <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> <87mtovds0o.fsf@posteo.net> <87ilzjdoip.fsf@posteo.net> Date: Thu, 02 Sep 2021 18:56:09 +0300 In-Reply-To: <87ilzjdoip.fsf@posteo.net> (Philip Kaludercic's message of "Thu, 02 Sep 2021 14:45:50 +0000") Message-ID: <87ilzj0ynu.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) 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 (-) >> An entirely different approach might be to implement a tabulated list >> major mode to manage projects, comparable to package-list. > > For the sake of it, it tried it out how this might look like. It feels > clunky as of now, doesn't implement everything that it should and it > might make more sense to provide as an additional package. This is like music players that provide an option to scan a folder for music files, then allow to manage found files in a list. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Sep 2021 00:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: Theodor Thornhill , 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163063053426892 (code B ref 50297); Fri, 03 Sep 2021 00:56:02 +0000 Received: (at 50297) by debbugs.gnu.org; 3 Sep 2021 00:55:34 +0000 Received: from localhost ([127.0.0.1]:42376 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLxUT-0006zg-L8 for submit@debbugs.gnu.org; Thu, 02 Sep 2021 20:55:33 -0400 Received: from mail-wm1-f51.google.com ([209.85.128.51]:34610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLxUS-0006zT-8y for 50297@debbugs.gnu.org; Thu, 02 Sep 2021 20:55:32 -0400 Received: by mail-wm1-f51.google.com with SMTP id v20-20020a1cf714000000b002e71f4d2026so2046021wmh.1 for <50297@debbugs.gnu.org>; Thu, 02 Sep 2021 17:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=2Z3DcOQ76u8YpkO5Ms9hGCAWo3DV33uIIq9d4aVpqSs=; b=mprEeWT2uh8/VVumYSLAwmRzECG3eNIpPqb/yBI4hvHXrS1+ywh7HBOaWANN+AWd0U 5XQDGdvQY/taUDmtsvBa2WIOAlGFgf9JJbKsWEs5Vepujm7R06mywH/24PRkSN9WNUX5 1plrazyq9uOVZHXljhilsk1iZhPWGxZmc/UAEsUjPBFQDP/0xLZTscolL60O/w/zLers 5+m8ntsRxuGIQNkZtrdfoHCZx8AocSuEx3sGDrNfIsJiwdgxs6pqqCWAL/swZpFtmEVN QILIwbEGOVU4rT5JQP2KVJ1UsZpD58Eskny2UdE3Ufrb+W/1iZ2TwLlwqlhRJodQDw4E aQZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2Z3DcOQ76u8YpkO5Ms9hGCAWo3DV33uIIq9d4aVpqSs=; b=BLyEt8acHZroHLTlaYdWrdRkPvtjnZUL8gp5ez9U4lPCFh9gyh88N5VIgh/3T8Fs0X XyqjrTbisJoAeUdBMsyXUDdp9TCm95tiOLAALuPZOxcLvAkxpH1hCMJBvDU4jf+gXLFN RD0hKz7E1ENZ42+2i3O1QOm++6IWGURQzyOow0EswC6BKx1Dj4W+sRyoGQY9lxRQxHOK PgLTFnbT4g/mPGPjZ2wkwoeVhcqPwL1mMbCOHLMztRbEQlzo6nUNPq7njW8qHwVVJhBi bJFhqQj3TA+09EhhJc25ZEgOw4qsZHzBF5H1S9i0rbCqYydx1A07+9BEwMnsbzxegLut 0GZg== X-Gm-Message-State: AOAM530bebBWkbB0Jrg+OOS5eenqoKZuza6B6eo1n1/1kJdrrxcCkGD7 7jIDzixYxem5AgebLcdzZas= X-Google-Smtp-Source: ABdhPJzxht121mtag/lthy/NOfIi2ronBHb8TQMY2JILXp83zahEh0SkZ04HmwLUSCzFtM8nw0d6zQ== X-Received: by 2002:a1c:a9ce:: with SMTP id s197mr5542853wme.173.1630630526157; Thu, 02 Sep 2021 17:55:26 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id k37sm2615194wms.18.2021.09.02.17.55.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Sep 2021 17:55:25 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> <87mtovds0o.fsf@posteo.net> From: Dmitry Gutov Message-ID: <729bfc0b-cb5f-c278-a4a4-60e4ef723f0f@yandex.ru> Date: Fri, 3 Sep 2021 03:55:24 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87mtovds0o.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 02.09.2021 16:30, Philip Kaludercic wrote: >>> - project-find-projects-under >>> Select a directory with projects to index all at once. >> >> I wonder how popular this is going to be. Do you have a flat directory >> with projects which you only want scanned one time? > > I clone most code into a directory, and I have seen others do so > too. That being said, it might just be something unusual in the big > picture. I think it's usual enough, but since we try to enable all kinds of practices, we should try to handle as many as feasible. I'm mostly worried about the semantics here: we say we scan all the projects in said directory, but we can miss some (or many). That can be fixed with an edit to the docstring, of course (e.g. "directly below"). >> Another issue, is that it's not going to find nested projects (and >> project.el does support those). > > My first implementation of the command tried to so something like that, > but it was rather slow (even if I currently only have 20 projects > checked out), and indexed a lot of projects that I wasn't interested > in. Maybe I can look into how it can be accelerated or only search for > nested projects when a prefix argument is supplied/not supplied. It might be fine as it is, behavior-wise. It never occurred to me to ask or search for such functionality, though, so me might want to wait for others to chime in (who will want to use this). I'm usually fine with 'C-x C-f' when visiting a project the first time. >> Suppose we do add it, how about the name >> 'project-remember-projects-under'? By analogy with >> 'project-remember-project'. > > I like it. > >> Adding a new arg for the latter is fine by me either way. >> >>> - project-remove-zombie-projects >>> Check if all known projects still exist and remove those >>> that don't anymore >> >> Perhaps we should rename 'project-remove-known-project' to >> 'project-forget-known-project'? That would make for a nice symmetry. >> >> Then this function could be called 'project-forget-zombie-projects'. > > This also make sense. Initially I wanted to name the command that way, > but then decided to go with "remove" to keep the naming consistent. We might encounter some resistance (the command has been with us for half a year), but let's try it, at least. We can also ask Theodor whether he has already used the current name, project-remove-known-project, in some Lisp code. >> I'm thinking about this about the slight connotation of 'remove' which >> can mean removing from disk. >> >> Another approach would be to call this or similar code automatically >> before saving the list (and cap the number of remembered projects), >> but that comes with its own tradeoffs. > > I can try it out, but I fear it might lead to annoying pauses, > especially when a project was indexed via TRAMP. We could skip remote projects entirely in that function (leaving it to the user to 'forget' them manually), or only do it for already connected hosts. The latter could still take some time, though. Do you expect project-forget-zombie-projects to be useful to remote hosts as well? Do you also have directories on remote hosts that contain many projects? >>> Especially the last two are useful to maintain a clean project list >>> without having to manually remove every project one by one. >> >> What if the goal was to maintain a clean project list but minimize the >> manual management of it by the user? >> >> Can you imagine a solution for that? What would be the downsides, >> compared to the present proposal? > > I can imagine zombie projects being cleaned up automatically, but > the motivation to write project-remove-projects-under was to remove > projects that were falsely indexed. Could you elaborate? Falsely meaning projects you simply don't want to return to? A whole directory of them? > An entirely different approach might be to implement a tabulated list > major mode to manage projects, comparable to package-list. I don't object to supporting this approach, built-in or in a third-party package, as long as we're reasonably sure there is no low-touch, automatic solution we can use with a similar success for the problem in question. If there's none, or if we found such, and then figured that some manual management on top of it can still be useful, that is fine. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Sep 2021 01:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163063097827653 (code B ref 50297); Fri, 03 Sep 2021 01:03:01 +0000 Received: (at 50297) by debbugs.gnu.org; 3 Sep 2021 01:02:58 +0000 Received: from localhost ([127.0.0.1]:42381 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLxbe-0007Bx-JV for submit@debbugs.gnu.org; Thu, 02 Sep 2021 21:02:58 -0400 Received: from mail-wm1-f43.google.com ([209.85.128.43]:40639) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mLxba-0007Bh-RC for 50297@debbugs.gnu.org; Thu, 02 Sep 2021 21:02:57 -0400 Received: by mail-wm1-f43.google.com with SMTP id x2-20020a1c7c02000000b002e6f1f69a1eso2682335wmc.5 for <50297@debbugs.gnu.org>; Thu, 02 Sep 2021 18:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=mJJPOxcHgDLYLysl3t9mUyUpSbCwH/TphEh7MEvjyy4=; b=iNMZZCuYSwaRxYq8f6YlBAiraov0ZuGmvud5CmlRd1Vy08GLkW+l0mlvPWrmlqKnQq iq2PVV09yihzSR4lD4w1vvLyKgKMvLwbesEsAODM1qWmbdm66/k4FrIHST85Iu5r+VRr xmKo59GmZA/liCKzX1aH+fJ5AV79XTq4OJelHngkPg3+h+LXu6GiRY/ccs0y36hBrWZv AuGVqDzqTXbLf0/JsC92o1OwMHDx+LDQqLqlTyAw1sDGs1/LDNedtB7xv1TkRV1lrCwV E/+A0dUCfnSo5utjnV2uQpzCwjxmisf89VZ+iEFHR3s4dxgxvx5Y+NWpu5S4jDcEUrk1 iSxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=mJJPOxcHgDLYLysl3t9mUyUpSbCwH/TphEh7MEvjyy4=; b=Hr89SMnfVwYJtaosDjEMe4QLv6B1fa/f88jPThqfpzbDJFbC0gRa+Pic7UE7nlzk/Y mDC4yzjP8ELcW0ho4KfpJE8YJv8T3mdB7+6mp6chPQq6ebiZBOVeKSstJF3mLw1PaKO1 fZCUY75IMAIQLATtjIORQGRouccfyKrmWsBGDaFIiL8wSmDhUV/OAHODuD96EtCDXDgM IpzruqhjeYdUUCJp/QDLMq8R1JhqE+NDntGxfso9LGPilsaaiatSDnFzTuiPV/RXz9i7 UrbnrqV26/7Cs5A9ELju2fmLs8fX5fmCDg6WpiqdtO4XF8hbqb8qGkmCK00Rw6P5kQE+ BhRw== X-Gm-Message-State: AOAM530Xn/LZK6JR5JVfZWw5A9PKGtcF2Qh0kBJZdTyCjgQ93XBDahF/ 3FMKM9tiWGaSDEXBrvBZ+Bhb+y6upck= X-Google-Smtp-Source: ABdhPJy+E1ynscu9KOYZ5G3xwjXhc3Z6yrqrHjtUqFoeTHqm89YniY9UVTZbvwXUL1DLGL6YK9+ILQ== X-Received: by 2002:a1c:3942:: with SMTP id g63mr540049wma.134.1630630968858; Thu, 02 Sep 2021 18:02:48 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id k25sm3481149wrd.42.2021.09.02.18.02.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Sep 2021 18:02:48 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <5c88cae7-4175-9c1e-cf20-188883e6e617@yandex.ru> <87mtovds0o.fsf@posteo.net> <87ilzjdoip.fsf@posteo.net> From: Dmitry Gutov Message-ID: <6bceb9d2-07c5-9382-4209-76e643595a4c@yandex.ru> Date: Fri, 3 Sep 2021 04:02:47 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87ilzjdoip.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 02.09.2021 17:45, Philip Kaludercic wrote: > For the sake of it, it tried it out how this might look like. It feels > clunky as of now, doesn't implement everything that it should and it > might make more sense to provide as an additional package. I like it as an idea, but probably wouldn't use the UI itself much. At this point it's up to you which of the approaches to put forward, though. I was also thinking that the "read project" prompt itself could serve like such a listing which could be edited by the user on-the-fly. But that would require some extension of the completing-read facility. The closest analogy is how icomplete-fido-kill (C-k) can delete a file if it's called during file name completion. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 21 11:47:01 2021 Received: (at control) by debbugs.gnu.org; 21 Sep 2021 15:47:02 +0000 Received: from localhost ([127.0.0.1]:47573 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mShz3-0005X8-HM for submit@debbugs.gnu.org; Tue, 21 Sep 2021 11:47:01 -0400 Received: from mail-pg1-f171.google.com ([209.85.215.171]:44704) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mShyo-0005F4-Kf for control@debbugs.gnu.org; Tue, 21 Sep 2021 11:46:46 -0400 Received: by mail-pg1-f171.google.com with SMTP id s11so21093176pgr.11 for ; Tue, 21 Sep 2021 08:46:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=TbB9Ba1fal+LyCDvFDw/iw7Xjr7GHmrO9OoWMdgbN4U=; b=nOrfVQFMmjknX6WISwlxvNeiv9M3bPik0PVpn+KVBQ0YHSZbV8lqaW/ttn2aBtuVqA sNXvd7DqoXbZ+1/EbORqV0WFJiI/B+oJ6bXtlqpZ0VMKx9LcW3xMNWeDvKYG6xsVhjXS SgGCVBcMHJ/sdnR3qTp8f51Fhk35cHQQoKIfOExNBNs6HSVBu1lQmNJtzqRGed44y4ui /uK0qrZC9pE/+rRiiOcw1O2nl825TO374SxFZmV9x3byGGzNoyOzTvNnA5IipqBI/vy+ VD5QdwWjNSYHtX/Hhuil4ykmjq5ZRHjuhTP9evqFl8g950tBj0bt3WR2gW4J3qwgH0nP EuRQ== X-Gm-Message-State: AOAM533XiisX3m5+pjPs71qTkUSVnosG352AA4yzS9GWLMj8nT8EyHpr /iUaWA48wlKrsV2AIo2WFk5LIzXtnVo8mFCQxnmeCKc/ X-Google-Smtp-Source: ABdhPJwY4TB8Ozq4LYrO6Ruom8+34IQqT0tNxf9Z0PM3Ig09HVxfEUR6zs/W1eEc4thBIEzLC0zLYsGyIn99MeOhLgs= X-Received: by 2002:a63:a311:: with SMTP id s17mr28369253pge.359.1632239201100; Tue, 21 Sep 2021 08:46:41 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 21 Sep 2021 08:46:40 -0700 From: Stefan Kangas MIME-Version: 1.0 Date: Tue, 21 Sep 2021 08:46:40 -0700 Message-ID: Subject: control message for bug #50297 To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: control 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.5 (/) severity 50297 wishlist quit From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 00:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic , 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163227071218237 (code B ref 50297); Wed, 22 Sep 2021 00:32:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 00:31:52 +0000 Received: from localhost ([127.0.0.1]:48298 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSqAy-0004k5-CM for submit@debbugs.gnu.org; Tue, 21 Sep 2021 20:31:52 -0400 Received: from mail-wr1-f53.google.com ([209.85.221.53]:38463) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSqAx-0004jq-4q for 50297@debbugs.gnu.org; Tue, 21 Sep 2021 20:31:51 -0400 Received: by mail-wr1-f53.google.com with SMTP id u18so1730179wrg.5 for <50297@debbugs.gnu.org>; Tue, 21 Sep 2021 17:31:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=F1OOeZ0yQB1O6Yuw0s66IzCwMCibbC+ef2aIIM2bz6U=; b=K4+i1RNq37eJFIG1idbVJmC81aCXD0UAtP8esgqZw30MDhs1O8UNjSmP38OeondQq6 HspDMtxiX5Lal13GcqOM622+2rtJ6RWTNlgcCIk/9TWH9QiM/L5iylDXo2e3mL/84LFd zB21Ou34SwHgG17GEwF8yO2obp4szzjmf/4XBhkNqbuOqT1g9CvTrt1c7yNiOblzo/B+ WvwIpuCB8oWP94PtJHCd/iH8j3T/b4R/bmSGAc+leimmaGQPORdZtJoQguBpREK4XUij gIGN9I/t56x+NEPkdwj8yigppsemum7947dpOhN69ikvNuKBrg/0uk3TRNUenrZJUdNp JEzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=F1OOeZ0yQB1O6Yuw0s66IzCwMCibbC+ef2aIIM2bz6U=; b=3kHPpzaHAW4CBs3cRPVvh6tyjuJcmvjMke74VPJrpyJPvS+U0YbIikJyCyoTBV/Ged YqcF19qoRz2ELmG6Zipjy9P4T/GPoDddfpIta6+bshlpHFwiqR5IFZzQCUQXUtCZungr WP8VCp9GXGklA8aESHxF20azYmUYud1sL5LDIMxKQbwWiCFDwGqbnWt8yumGXdWQ3unY mcyCPriFSM5Ywmn/sLS8862tn8A/m/dto3af6V+E2okvZyyxkcbtclruEAl1sHnd/qrt gamH+w4pIB60WR2/+yvUR3gEwkEXSIv+LFgsTcAHmU1NKCapwXDANRKavj4r+agNyXl0 ZmQQ== X-Gm-Message-State: AOAM530M2ZA7babukNZDXpOJnkvb9F/4xiocqX0fBm863X8jc0dC0O9n vJ/DPnKOIe/Bu9Bl/2Z94L3jUzJvJn4= X-Google-Smtp-Source: ABdhPJzEB0kUtTxDlY0E2tFKZX/qmLQzzaQ9RQvwtw5iXOkmTK9DUYp6uiKshLdaP2W/JnC3dKOxPQ== X-Received: by 2002:a7b:c4d5:: with SMTP id g21mr7288106wmk.47.1632270705276; Tue, 21 Sep 2021 17:31:45 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id q11sm503216wrn.65.2021.09.21.17.31.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Sep 2021 17:31:44 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> From: Dmitry Gutov Message-ID: Date: Wed, 22 Sep 2021 03:31:42 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87h7f5ok5l.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 31.08.2021 15:47, Philip Kaludercic wrote: > The following patch introduces a few functions for aggregate project > maintenance: > > - project-find-projects-under > Select a directory with projects to index all at once. > - project-remove-zombie-projects > Check if all known projects still exist and remove those > that don't anymore > - project-remove-projects-under > Remove all projects in a directory (inverse of > project-find-projects-under). > > Especially the last two are useful to maintain a clean project list > without having to manually remove every project one by one. OK, so I have done the rename: we now have project-forget-project. While I'm not necessarily a fan of the tabulated list approach, the above list looks sensible. Let's just name them to fit the current scheme better: project-remember-projects-under project-forget-projects-under project-forget-zombie-projects And whatever ambiguities about recursive search can be solved through better descriptions in docstrings. We could also add a hook like project-after-read-list-hook, which people would be able to use for cleanup, e.g. adding project-forget-zombie-projects to it. Not sure whether to add it there by default, though. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 07:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16322949146315 (code B ref 50297); Wed, 22 Sep 2021 07:16:02 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 07:15:14 +0000 Received: from localhost ([127.0.0.1]:48710 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSwTJ-0001dn-P9 for submit@debbugs.gnu.org; Wed, 22 Sep 2021 03:15:14 -0400 Received: from mout01.posteo.de ([185.67.36.65]:47665) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSwTG-0001dL-RF for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 03:15:12 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id B7CD6240026 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 09:15:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632294904; bh=zpdygopdnGziknu7wmv7LM7W6k/0ZqZzc3aZnumrR9E=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=rCc/Vz6Tp76Ot/EaHI7/ojtDNBWVE9/CplkOeUW7KR4Y5E0H3tDRsjAYwE8xifFu9 15qNEdmQQj2UiT1F3xt+QHKDBTlU5ijrf057G9DA1O96RqvgLgRwVkkbLzFXpYoJME 0p6ob5nr2YqbFEfBvfnn5yLzVe3/UVo6h3WCV8XPjf2E3s4e+nUtfvgP7m0A+ip01a yfW6QREVlzSwTJavkr59CmHiiPzsmgBRW3EsxVhgZKyv7FkofhRg7YZpSwk90W4a8o yzssyrWy+wv98iNR2aITkJFKxfmn3Of9h3Acmxzq7hrN1Jxs6DSwIbGhojZIXGXrT/ cwjCy3n+JuQQQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HDqLc09gPz9rxY; Wed, 22 Sep 2021 09:15:03 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Wed, 22 Sep 2021 07:15:00 +0000 In-Reply-To: (Dmitry Gutov's message of "Wed, 22 Sep 2021 03:31:42 +0300") Message-ID: <877df9qdxn.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) 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 (---) Dmitry Gutov writes: > On 31.08.2021 15:47, Philip Kaludercic wrote: >> The following patch introduces a few functions for aggregate project >> maintenance: >> - project-find-projects-under >> Select a directory with projects to index all at once. >> - project-remove-zombie-projects >> Check if all known projects still exist and remove those >> that don't anymore >> - project-remove-projects-under >> Remove all projects in a directory (inverse of >> project-find-projects-under). >> Especially the last two are useful to maintain a clean project list >> without having to manually remove every project one by one. > > OK, so I have done the rename: we now have project-forget-project. > > While I'm not necessarily a fan of the tabulated list approach, the > above list looks sensible. Let's just name them to fit the current > scheme better: > > project-remember-projects-under > project-forget-projects-under > project-forget-zombie-projects It is also my impression that the tabulated list doesn't make too much sense (for now). > And whatever ambiguities about recursive search can be solved through > better descriptions in docstrings. Ok, I will update the patches and refine the documentation. My plan would be to be non-recursive by default, and recurse if a prefix argument is given. > We could also add a hook like project-after-read-list-hook, which > people would be able to use for cleanup, e.g. adding > project-forget-zombie-projects to it. Not sure whether to add it there > by default, though. The question is does it make sense to not always forget zombies? This depends on the real-world performance. If it is a noticeable burden (at least on some systems), users might prefer adding the function to kill-emacs-hook instead of a project-after-read-list-hook. -- Philip Kaludercic From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 12:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163231284417510 (code B ref 50297); Wed, 22 Sep 2021 12:15:02 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 12:14:04 +0000 Received: from localhost ([127.0.0.1]:49003 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT18W-0004YK-Lm for submit@debbugs.gnu.org; Wed, 22 Sep 2021 08:14:04 -0400 Received: from mail-wr1-f42.google.com ([209.85.221.42]:38519) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT18U-0004Xg-DX for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 08:14:03 -0400 Received: by mail-wr1-f42.google.com with SMTP id u18so6152547wrg.5 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 05:14:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=pvBn5mA1PV24GjDDP7uha1RL30v+uZrexfab+t1lOo0=; b=H9yTxcDgaMkUcc8/NdNjledYmt//pfM4Zb512ihlhjUomyEb7tpMfLYQxuIqe1tMPX k09qMSXyUSSQo+lbwzMYFxeMzdH6J8XXeL6WDtSKuNpXGRHjvgdftb0kMRMMgei+Avl2 +nLjyd4XjEfGWOdE6XJLhW1wOR/QAJbP6EAnplDDaSliiixOls+Kt/gfNWYo44H9wR/T PwNpvCt1sflUDFcLFHMrjDhdWGAW4mpACyXcM56XCRA4BzkWx+AuRLQk29pDZjUtZIBz xgi+kLCBY7/1jFZ20tMgj2WWMNW9a2SjXz0Dk6AfZeNRWPtu9519Mkn4mvU5IaNe5hqb cErw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=pvBn5mA1PV24GjDDP7uha1RL30v+uZrexfab+t1lOo0=; b=CCGeyfiwmchV1yJnIVl9nlffGjbs6A0AQBxcZGP6rw/ObrY/vsTWX6e4/FJLDgnCiu x0U4TgoIKAOPnoB4X4sKsqTrS2x8LvTXD53jqHJ5NJmvJ0L2McYWy5RXu/XnoyJ6sePq 3Q0lbsj3+QJlpD98lfBQsNIltjhI7pnkuvy1/YcNHT12ALhG/j/9ZzwUOT8zw86HHyfz 1Te6UmiXxb8NAsMpDQdNVeeHozxccOkz5+iODU4G0E6JGgYb+sY+MtCeiA9lI3ZS5Hul +OmxHODetZCzb6T9E723MyG7vBy2KTdWuay0ep8/a53ae1i7gbrc7ekW2L+Zyew021qk 0Ayg== X-Gm-Message-State: AOAM531B5Bu/hCtyMVgx55KI/NitQvsF9m+06JTlbbqiOLUDLGo4gM0G CuBeqNX0GMWvLKlUdN5qJerzwOHgFEQ= X-Google-Smtp-Source: ABdhPJx+7BZZF/E5a6jQCL7wdjeLtXdnvAOdiojAeeQAozBNnpBz5a/kAOkag3CoKSoGQ/YusPu1Qw== X-Received: by 2002:adf:d1cf:: with SMTP id b15mr15281774wrd.181.1632312836541; Wed, 22 Sep 2021 05:13:56 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id o19sm2184288wrg.60.2021.09.22.05.13.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 05:13:56 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <877df9qdxn.fsf@posteo.net> From: Dmitry Gutov Message-ID: Date: Wed, 22 Sep 2021 15:13:53 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <877df9qdxn.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 22.09.2021 10:15, Philip Kaludercic wrote: >> And whatever ambiguities about recursive search can be solved through >> better descriptions in docstrings. > > Ok, I will update the patches and refine the documentation. My plan > would be to be non-recursive by default, and recurse if a prefix > argument is given. If you like. No recursive option seems also okay. >> We could also add a hook like project-after-read-list-hook, which >> people would be able to use for cleanup, e.g. adding >> project-forget-zombie-projects to it. Not sure whether to add it there >> by default, though. > > The question is does it make sense to not always forget zombies? This > depends on the real-world performance. FWIW, speaking of Tramp, we can either avoid cleaning remote dirs, or at least make sure the connection is on before checking (and skip those where it is not). And another way to limit the performance impact is to cap the number of projects in history. > If it is a noticeable burden (at > least on some systems), users might prefer adding the function to > kill-emacs-hook instead of a project-after-read-list-hook. kill-emacs-hook is also a good place to use it indeed. Maybe we don't need the other hook. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 16:19:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Philip Kaludercic , 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163232753528914 (code B ref 50297); Wed, 22 Sep 2021 16:19:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 16:18:55 +0000 Received: from localhost ([127.0.0.1]:51498 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT4xS-0007WH-GX for submit@debbugs.gnu.org; Wed, 22 Sep 2021 12:18:55 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:33391) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT4xM-0007Vo-IP for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 12:18:53 -0400 Received: (Authenticated sender: juri@linkov.net) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id CE4D5FF805; Wed, 22 Sep 2021 16:18:40 +0000 (UTC) From: Juri Linkov Organization: LINKOV.NET References: <87h7f5ok5l.fsf@posteo.net> Date: Wed, 22 Sep 2021 19:00:14 +0300 In-Reply-To: (Dmitry Gutov's message of "Wed, 22 Sep 2021 03:31:42 +0300") Message-ID: <87r1dg298p.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) 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 (-) > While I'm not necessarily a fan of the tabulated list approach, the above > list looks sensible. We already have a lot of 'list-*' commands for everything like 'list-packages', 'list-timers', etc. So sooner or later 'list-projects' will need to be added anyway, with the minimal requirement of using that list for quicker and more visual project switching with 'RET' like in 'list-buffers', and also for issuing commands on a group of selected projects, etc. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 16:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov Cc: Philip Kaludercic , 50297@debbugs.gnu.org, Dmitry Gutov Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163232908932665 (code B ref 50297); Wed, 22 Sep 2021 16:45:02 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 16:44:49 +0000 Received: from localhost ([127.0.0.1]:51555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT5MX-0008Un-60 for submit@debbugs.gnu.org; Wed, 22 Sep 2021 12:44:49 -0400 Received: from mout02.posteo.de ([185.67.36.66]:57755) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT5MS-0008UJ-3C for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 12:44:48 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 9E061240101 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 18:44:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632329077; bh=GTvldH3rhuiS6QlFvLy0HZDmMfWV45Ot1HtfNBqZr/E=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=aUt/OWXx0drcaIaKYpyXC+CSnNu5016Nery+eFxaJeb1C0nbG2fVkZP8tUMCfrhS8 FZEq09g5pSbrVhC2sJEGh99KgD3gtYXR9wrTyZQHDPNw921h5ilLbfpcZPTRT/O7Pw z7oEeO4rQJv0bMbnPY3vUoyA24jjz8V+QLOleYg+hSDRnXWPCE/lW/S2j8SeJGPGwk u8a6JjTZ44RTizZTyPw/BBjLutqQs4gfs2zThOjkWEzmT63VzO+G89IJYPz1PMkle9 nw3KE05SX7bXw9J6bn19DJ2TDtetbnhFqOz5skycM2UW/HYWxKxOW3l/14VSptwmKX LXFeqYRrS2M9g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HF3zm61wsz6tmN; Wed, 22 Sep 2021 18:44:36 +0200 (CEST) From: Philip Kaludercic In-Reply-To: <87r1dg298p.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 22 Sep 2021 19:00:14 +0300") References: <87h7f5ok5l.fsf@posteo.net> <87r1dg298p.fsf@mail.linkov.net> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=mutual; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Wed, 22 Sep 2021 16:44:35 +0000 Message-ID: <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) 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 (---) Juri Linkov writes: >> While I'm not necessarily a fan of the tabulated list approach, the above >> list looks sensible. > > We already have a lot of 'list-*' commands for everything like > 'list-packages', 'list-timers', etc. So sooner or later > 'list-projects' will need to be added anyway, with the minimal > requirement of using that list for quicker and more visual > project switching with 'RET' like in 'list-buffers', and > also for issuing commands on a group of selected projects, etc. I think it would make sense to have some kind of a way to name projects, either by extracting the information from the VCS or via an alias. When I tried implementing something like this, the only two columns I could come up with to present were type (that isn't to interesting to begin with) and project root. This seems a too meagre to warren a list-projects function. -- Philip Kaludercic From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 17:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic , Juri Linkov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16323320616905 (code B ref 50297); Wed, 22 Sep 2021 17:35:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 17:34:21 +0000 Received: from localhost ([127.0.0.1]:51614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT68T-0001nJ-3E for submit@debbugs.gnu.org; Wed, 22 Sep 2021 13:34:21 -0400 Received: from mail-wr1-f51.google.com ([209.85.221.51]:41670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT68R-0001n1-Gq for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 13:34:20 -0400 Received: by mail-wr1-f51.google.com with SMTP id w29so9134287wra.8 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 10:34:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=RT7RnvhM02zlXUS+TwuuMsjpzELTmLqk6jOTlVcNUyQ=; b=j+8ffHpbu0LS4IYbSnoRoXq0ljYtPOignlbCJzeeNtLUSMUlKt3eZ4enJcf/4bPKXW teR/8Eg8WbhWWBNJzhJFxWHfc+IoGot4On2fBz7EfVEL0/Fp7IOO1jfXxy58zt5OtEyO lIPA7cAc29UUSs4uxfRyJEOf2mLRrdSI4MuHByEcWd4LXg50hTdpppe2907U4ghg/h7k FKK4LK75e6vEwcnzD7aiDoF8lki6cnaTX03QBqvLfz971lWONUr4vQaG516DS0BteEBI t9D6PiDCPKHA3NF8iYiCP/Kp02HP77yjy/2ZNojqO/biHFC0vV0DOE1Wu3Kj1EeeBfkR +jYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=RT7RnvhM02zlXUS+TwuuMsjpzELTmLqk6jOTlVcNUyQ=; b=n8KQwRSqWv0qdWGobQMBKn2YYt8X3Jvw5MnGQAtMzRxjHGf2q+foRc1boa2fbKKZ/d 2R/YiZQ9F138KlbONJU8InvB2mSUAzzFx+039GAHIcLhQIUxNFq4q+AXEeUhB14dyOQv S+glZNaMDFAKzO1mlSQQ7f/mLZZvH50pfKEPmj7+Gtqadwx8uEx9d7fuH56RG7S2IXWz y+QePy8E7A4pZFBJ/evN0MEcRFzMzYO9gdXtWde91ZE22i/q4PXY0h9X9FTMxjcHmD4z 0KsYafNn7cZ0SZ6AhN76SvQwkjleYThmPZOZTBXRJsjaQfO4cCiXEa/RGAMZFesrhCFP Tg1A== X-Gm-Message-State: AOAM530IuTByfQTGOFXSYupZS9zvjrvW5NEYYREjU59lGibeT0Ry+nRy AuAahQtqc0oRGdl8pYnsaojecAn9jsE= X-Google-Smtp-Source: ABdhPJwYczA5ZwyqZ+jWFse92qwLb+ne1ADA5ZXAmYTB66AKxlRXoFFU/1LBxkjcR4FhW7DDi+HKzQ== X-Received: by 2002:a7b:c405:: with SMTP id k5mr291346wmi.24.1632332053138; Wed, 22 Sep 2021 10:34:13 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id 10sm6219915wmi.1.2021.09.22.10.34.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 10:34:12 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <87r1dg298p.fsf@mail.linkov.net> <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> From: Dmitry Gutov Message-ID: <87cbdb43-7813-3341-3830-8811423a23b6@yandex.ru> Date: Wed, 22 Sep 2021 20:34:09 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 22.09.2021 19:44, Philip Kaludercic wrote: > I think it would make sense to have some kind of a way to name projects, > either by extracting the information from the VCS or via an > alias. If we add this feature, I think most of the names will be more or less equal to project root's base name. So it's not like this will add much in the way of variety to the table. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 18:07:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org, Juri Linkov Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163233401110859 (code B ref 50297); Wed, 22 Sep 2021 18:07:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 18:06:51 +0000 Received: from localhost ([127.0.0.1]:51638 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT6du-0002p5-RE for submit@debbugs.gnu.org; Wed, 22 Sep 2021 14:06:50 -0400 Received: from mout01.posteo.de ([185.67.36.65]:52595) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT6dq-0002ol-Sk for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 14:06:50 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 08B14240029 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 20:06:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632334000; bh=E5B3UGHfNNK5kRfH4ro3iRL5SLKzBdKxFnvAX9mWLZ8=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=REIrDMPzJzBId/1XazVCSe9q6hiIlAxDnO3jHT84j0cdEbUusNfJp4k0TUBxytIhw zCE9dLIG2HaAnopMyxS/MJUQA64ZX1WNBu93WRU+85GmOdKuRMjQmASllfQF/ayI91 x0JatO3FldgKahdn3XF3fXqdi/r7D2rdYS+z84lZNyPhb6t2+tHrkCL0+xP9UNP564 dRasyYON/OLnFed+eouShUHTv4gadccECdAWpQfsTzIFRl3aPsKYyqoVUCMEEdXB1I cEZnM0EZ/bdqTOWgWlyrh0yFyhllxNy4CQHHwudCTHjMxrKQlMYuBl8j2Rfv2Y1xTE 8asZpGkQmQYaA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HF5pQ4rcnz9rxV; Wed, 22 Sep 2021 20:06:38 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> <87r1dg298p.fsf@mail.linkov.net> <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> <87cbdb43-7813-3341-3830-8811423a23b6@yandex.ru> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Wed, 22 Sep 2021 18:06:37 +0000 In-Reply-To: <87cbdb43-7813-3341-3830-8811423a23b6@yandex.ru> (Dmitry Gutov's message of "Wed, 22 Sep 2021 20:34:09 +0300") Message-ID: <87y27opjrm.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) 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 (---) Dmitry Gutov writes: > On 22.09.2021 19:44, Philip Kaludercic wrote: >> I think it would make sense to have some kind of a way to name projects, >> either by extracting the information from the VCS or via an >> alias. > > If we add this feature, I think most of the names will be more or less > equal to project root's base name. So it's not like this will add much > in the way of variety to the table. Currently yes. But if we were to store more metadata about a project (nickname, first access, last access, etc.) maybe it might make more sense. -- Philip Kaludercic From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 18:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org, Juri Linkov Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163233513612939 (code B ref 50297); Wed, 22 Sep 2021 18:26:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 18:25:36 +0000 Received: from localhost ([127.0.0.1]:51666 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT6w4-0003Md-F1 for submit@debbugs.gnu.org; Wed, 22 Sep 2021 14:25:36 -0400 Received: from mail-wr1-f51.google.com ([209.85.221.51]:43723) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT6w3-0003MP-8L for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 14:25:35 -0400 Received: by mail-wr1-f51.google.com with SMTP id w17so9553328wrv.10 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 11:25:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=OJ5touU3yO7Vlo2Wal+66CfLyKJF9N2Lo+PViyOD3ic=; b=EdR42kya/vgP9Hy/yB6A6wQX1agVdYd43f5YeOeMP2/JP+HF2yLUWSJpu8OChnnCKW OIaMZH58czDXrKvvvkB8nNjQ2AqXz9d9qsMaHFQs4GOKragRw6+Sn4kJOsMt4R4zlYtG 3P31A9/TwA2SKSm+i0A6+40ytInnzq+B0QEFJo6logjnIERqnroITip8tV81quoNQo4s cAcUEsfiWAqBFCIsJpqMXUCEmXZ94riUNvG4RiGoT2OcNqbvniZIqMrdB6q2ay4MQwls IlvupjIn+qAvtdpiwkM1yBR1x13SbZDUx2naTXINHM5tHL6+vr8Wk2Y/9XrJsEYeqAwU FGMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=OJ5touU3yO7Vlo2Wal+66CfLyKJF9N2Lo+PViyOD3ic=; b=pQwcu+L4yGi4UEO/SDNHyKQOcW/SFGGA85z4ty7KYpPe2JMlYmg7q9fYntAUfA0mFp IG77oVvVbzPKIZ57xz/w2xLb7vmpL1Hds4+T8nciOZw1BZIwgWxxJvfB+ACWXBlFdOvY wqMJdXAs3FTXyZ7uE6Kw7izdxTiHZhziwBPA4BlCN4jMhmeyH3mtTcbcSSRnLyfjvGAB 2xaNEubzD/Bp1Fwhil5wWJlRPOyk+AiWd1Ef03F1oqrJe+yndw+Zl3by2CjUkbB6vLdr OA7RR6UxbNowsBFFQJsZG6JZMMuEt5GANxwN2q+/QQl2OWyCdRegiyW38ZWgNLabvmCY 6CnQ== X-Gm-Message-State: AOAM533ZqcJ8Rm0HGHI5a3Z4NxinPhvu84cOzHCRMI45K//7gMgR/fpw 4TdTOyfo4svCti01cTD/1yk= X-Google-Smtp-Source: ABdhPJy8TGrnwAxCJ00De21HJItjQNcn1k89w+qf0dk5qW1R+K3gU7kG0tFClmBzDW1TCHET1UTg5A== X-Received: by 2002:a5d:6ca2:: with SMTP id a2mr395339wra.291.1632335129363; Wed, 22 Sep 2021 11:25:29 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id p5sm3488963wrd.25.2021.09.22.11.25.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 11:25:28 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <87r1dg298p.fsf@mail.linkov.net> <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> <87cbdb43-7813-3341-3830-8811423a23b6@yandex.ru> <87y27opjrm.fsf@posteo.net> From: Dmitry Gutov Message-ID: <623bb362-c5d1-4074-78db-72460ae5f67d@yandex.ru> Date: Wed, 22 Sep 2021 21:25:25 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87y27opjrm.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 22.09.2021 21:06, Philip Kaludercic wrote: > Currently yes. But if we were to store more metadata about a project > (nickname, first access, last access, etc.) maybe it might make more > sense. That's possible, yes. We could start storing access times right now, if you like. I don't know where else we would use them, though. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 18:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org, Juri Linkov Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163233684816010 (code B ref 50297); Wed, 22 Sep 2021 18:55:01 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 18:54:08 +0000 Received: from localhost ([127.0.0.1]:51700 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT7Nf-0004AA-TC for submit@debbugs.gnu.org; Wed, 22 Sep 2021 14:54:08 -0400 Received: from mout01.posteo.de ([185.67.36.65]:60459) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT7Nc-00049e-6m for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 14:54:07 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id BE6F5240026 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 20:53:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632336837; bh=oUbw/Ihgb0nCNI4HHyMhSlVxF31qlq6c2NxR17jY6sE=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=EbohTw/Z0XOVG//+sUh0S7UlS/2/AW7Q1y14JRCJGSEEN8uetZdTKzCX+m/ir5TfL 8kZMZAMZJj41iVAqb9x5bZcoKMNDlMICXJ4PUSYee+9VH5ZcVPD0HXYFIHQkZwJCSP 0lCmNIux4fDW/ljpZS6fP/AKpcFMpvDqhH6UFrBI0m5PWxJ6+ulCgeyAIhO6AFSO+F 7tBdVWXDWAATiGGm7st5AUcbN2TI8mX1LYEgiMbNl4MtO5jRdx8wdFG4jR1nzmq2sM BDvblvjDnsddPNPrXz8u6k2le2QeMCwcoFBAte/tVaKe0sFjvLpesqcjOsOSvUMWZR Ysx3KN7w+cyBA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HF6s013lYz9rxY; Wed, 22 Sep 2021 20:53:56 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> <87r1dg298p.fsf@mail.linkov.net> <87fstw4l1o.fsf@barbet.mail-host-address-is-not-set> <87cbdb43-7813-3341-3830-8811423a23b6@yandex.ru> <87y27opjrm.fsf@posteo.net> <623bb362-c5d1-4074-78db-72460ae5f67d@yandex.ru> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Wed, 22 Sep 2021 18:53:55 +0000 In-Reply-To: <623bb362-c5d1-4074-78db-72460ae5f67d@yandex.ru> (Dmitry Gutov's message of "Wed, 22 Sep 2021 21:25:25 +0300") Message-ID: <87tuicphks.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) 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 (---) Dmitry Gutov writes: > On 22.09.2021 21:06, Philip Kaludercic wrote: >> Currently yes. But if we were to store more metadata about a project >> (nickname, first access, last access, etc.) maybe it might make more >> sense. > > That's possible, yes. > > We could start storing access times right now, if you like. I don't > know where else we would use them, though. I don't think there is any use for that either right now, so I wouldn't argue that it should be added immediately. -- Philip Kaludercic From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Sep 2021 18:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163233694716177 (code B ref 50297); Wed, 22 Sep 2021 18:56:02 +0000 Received: (at 50297) by debbugs.gnu.org; 22 Sep 2021 18:55:47 +0000 Received: from localhost ([127.0.0.1]:51705 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT7PH-0004Cr-79 for submit@debbugs.gnu.org; Wed, 22 Sep 2021 14:55:47 -0400 Received: from mout02.posteo.de ([185.67.36.66]:48301) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mT7PF-0004Cb-Jx for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 14:55:46 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id A5C8D240101 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 20:55:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632336938; bh=NKNFQF3Dw8m9eKiFx6T4hAzxMVpYkyNh7Pq0o5+GSqo=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=ixUeVZx7oVdLWkqT6EPfqBxj3Fkwv8jy+nCZKuKPh6FV41ShpS/5ULzyaqNMRRN0f x7VbtHj8tFO+gzk+N+qHqGtrOd2uknN0Srma1wGyRd1vjRN+RfWor5fFLa/H9IMDSw A6Hr6/ZQIOmCc699QyRDVQ+5haPpY+Zcsn5V2prp7MHlBhQVIlwF2oTQPm6dZKm0Pv J+FM/BJQdSC8LqrV4rvUevFwFWnXbeKa2wiY9+Eox1c9KaqiZ3dXZqksKSm7Ridu2D Luvg+EwyJJOSKuq4bSJzE04TK/zCIHVMyftqTP0KE8KAN7jm7c+dDjkO/D7LPd6nfv REY5l3SGw/o0A== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HF6tx6yQQz9rxV; Wed, 22 Sep 2021 20:55:37 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Wed, 22 Sep 2021 18:55:37 +0000 In-Reply-To: (Dmitry Gutov's message of "Wed, 22 Sep 2021 03:31:42 +0300") Message-ID: <87lf3ophhy.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) 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 (---) --=-=-= Content-Type: text/plain Here is the updated patch, with the new names and optional recursion: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-aggregate-project-discovery-and-maintenance-func.patch >From 4779aae9d1c18cd2dc2b8f54322b48b0e11ac5fb Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Tue, 31 Aug 2021 14:12:13 +0200 Subject: [PATCH] Add aggregate project discovery and maintenance functions * project.el (project-remember-project): Add optional no-write argument (project-remember-projects-under): Add command (project-forget-zombie-projects): Add command (project-forget-known-projects): Add command --- lisp/progmodes/project.el | 72 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index ebd21d4b60..977b1ae185 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1290,9 +1290,10 @@ project--write-project-list (write-region nil nil filename nil 'silent)))) ;;;###autoload -(defun project-remember-project (pr) +(defun project-remember-project (pr &optional no-write) "Add project PR to the front of the project list. -Save the result in `project-list-file' if the list of projects has changed." +Save the result in `project-list-file' if the list of projects +has changed, and NO-WRITE is nil." (project--ensure-read-project-list) (let ((dir (project-root pr))) (unless (equal (caar project--list) dir) @@ -1300,7 +1301,8 @@ project-remember-project (when (equal dir (car ent)) (setq project--list (delq ent project--list)))) (push (list dir) project--list) - (project--write-project-list)))) + (unless no-write + (project--write-project-list))))) (defun project--remove-from-project-list (project-root report-message) "Remove directory PROJECT-ROOT of a missing project from the project list. @@ -1357,6 +1359,70 @@ project-execute-extended-command (let ((default-directory (project-root (project-current t)))) (call-interactively #'execute-extended-command))) +(defun project-remember-projects-under (dir &optional recursive) + "Index all projects below a directory DIR. +If RECURSIVE is non-nil, recurse into all subdirectories to find +more projects. After finishing, a message is printed summarizing +the progress. The function returns the number of detected +projects." + (interactive "DDirectory: \nP") + (project--ensure-read-project-list) + (let ((queue (directory-files dir t nil t)) (count 0) + (known (make-hash-table + :size (* 2 (length project--list)) + :test #'equal ))) + (dolist (project (mapcar #'car project--list)) + (puthash project t known)) + (while queue + (when-let ((subdir (pop queue)) + ((file-directory-p subdir)) + ((not (gethash subdir known)))) + (when-let (pr (project--find-in-directory subdir)) + (project-remember-project pr t) + (message "Found %s..." (project-root pr)) + (setq count (1+ count))) + (when (and recursive (file-symlink-p subdir)) + (setq queue (nconc (directory-files subdir t nil t) queue)) + (puthash subdir t known)))) + (unless (eq recursive 'in-progress) + (if (zerop count) + (message "No projects were found") + (project--write-project-list) + (message "%d project%s were found" + count (if (= count 1) "" "s")))) + count)) + +(defun project-forget-zombie-projects () + "Forget all known projects that don't exist any more." + (interactive) + (dolist (proj (project-known-project-roots)) + (unless (file-exists-p proj) + (project-remove-known-project proj)))) + +(defun project-forget-known-projects (dir &optional recursive) + "Forget all known projects below a directory DIR. +If RECURSIVE is non-nil, recurse into all subdirectories to +remove all known projects. After finishing, a message is printed +summarizing the progress. The function returns the number of +forgotten projects." + (interactive "DDirectory: \nP") + (let ((count 0)) + (if recursive + (dolist (proj (project-known-project-roots)) + (when (file-in-directory-p proj dir) + (project-remove-known-project proj) + (setq count (1+ count)))) + (dolist (proj (project-known-project-roots)) + (when (file-equal-p (file-name-directory proj) dir) + (project-remove-known-project proj) + (setq count (1+ count))))) + (if (zerop count) + (message "No projects were forgotten") + (project--write-project-list) + (message "%d project%s were forgotten" + count (if (= count 1) "" "s"))) + count)) + ;;; Project switching -- 2.30.2 --=-=-= Content-Type: text/plain -- Philip Kaludercic --=-=-=-- From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 23 Sep 2021 02:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16323650944218 (code B ref 50297); Thu, 23 Sep 2021 02:45:02 +0000 Received: (at 50297) by debbugs.gnu.org; 23 Sep 2021 02:44:54 +0000 Received: from localhost ([127.0.0.1]:52309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTEjG-00015y-11 for submit@debbugs.gnu.org; Wed, 22 Sep 2021 22:44:54 -0400 Received: from mail-wr1-f54.google.com ([209.85.221.54]:45966) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTEjE-00015l-6L for 50297@debbugs.gnu.org; Wed, 22 Sep 2021 22:44:52 -0400 Received: by mail-wr1-f54.google.com with SMTP id d21so12581958wra.12 for <50297@debbugs.gnu.org>; Wed, 22 Sep 2021 19:44:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=qRzvOnxoBDNlsZTOiwSNLStUg234+Ea8kMKAmvAu6uk=; b=a6AD9ZvIIGmG0kEtntErr/JA1EpP6sFbZW+zBO82s9meFI8DgvfuEKZ0Gwtt6xi5xX db17+eMM+Oeh0vnhWgkh9LWUNPvFjU56jWOeesMCbOsMZWXbNXaj62RooPIEjwroSgOv kQ4ZtHfG5tUjAv/dHw92VoUp+sQEmRkzrE3cUGM0AltDLo8R1MOT/zSwQgad1bGttUcQ OxtdHe7qUYv4ymN25mL2xeU9c3lchrF7eBm2jnnI6wU5t3CEofyhDz1CH5VP3gook0nX SgQa4Tx/1V53uLKLpgHfqC/E1XkR0cm1JEl9+VU3t/nA/oJ0kJBlskF26qrBhwxG7O1F EPHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=qRzvOnxoBDNlsZTOiwSNLStUg234+Ea8kMKAmvAu6uk=; b=SsFBorYM9rQwQboqY6lguWbdg9kDqTqGAVL2nKW0iquC7/QBTzKSmBAyKqhDvCgNeN U0ymLjmnj2vnF54ZoGKtu4BZSKhPN16mpZaNxpMURXwc+55RcDHehHuo6TsLhs92s9f8 zIXsxm2MazmInzqnOGxuqfJ8V7XUwvROO5P9uBPJa+BKlxRyTA+sKqMaxZ9ib5lVViU2 g+W3EmofGkVOvr8aPbzPCh9TFu4fI0HhdPcP0PNDn5LXAQZoqC9rxvZMd9Lbj9kae+Qo sdWFswsmwigk9qnk3dPG++ShxVue6XKUxP9bT8UtQ6lMaBgV6XSmL6JLx7YiUh5s01KK N6yw== X-Gm-Message-State: AOAM532Hxxm6uwIwlNowAaHHaAl6E9vX8dvl+eETySe2rXCTbfabSeoR 73RTABBnBlzfikgwmWpTcqJt4KeB7bs= X-Google-Smtp-Source: ABdhPJz/S/XIYyuaoNmHzUCVLrF2+ZFYyWzqmG9b5ae3K9lj4t9ETZNynZustzmiWwDt7DVVM/dFig== X-Received: by 2002:adf:d1eb:: with SMTP id g11mr2166703wrd.31.1632365086343; Wed, 22 Sep 2021 19:44:46 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id t6sm7394696wmj.12.2021.09.22.19.44.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 19:44:45 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <87lf3ophhy.fsf@posteo.net> From: Dmitry Gutov Message-ID: <0e6238a4-9a35-f70e-051a-3a75ac6fc583@yandex.ru> Date: Thu, 23 Sep 2021 05:44:44 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87lf3ophhy.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 22.09.2021 21:55, Philip Kaludercic wrote: > + (project-remove-known-project proj)))) This one is called 'project-forget-project' now. > +(defun project-forget-known-projects (dir &optional recursive) And let's call this one 'project-forget-projects-under'. Looks good otherwise, thanks. From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el In-Reply-To: <87h7f5ok5l.fsf@posteo.net> Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 23 Sep 2021 10:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.163239407824558 (code B ref 50297); Thu, 23 Sep 2021 10:48:02 +0000 Received: (at 50297) by debbugs.gnu.org; 23 Sep 2021 10:47:58 +0000 Received: from localhost ([127.0.0.1]:52799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTMGj-0006O2-Jk for submit@debbugs.gnu.org; Thu, 23 Sep 2021 06:47:58 -0400 Received: from mout02.posteo.de ([185.67.36.66]:43771) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTMGg-0006Nj-Kg for 50297@debbugs.gnu.org; Thu, 23 Sep 2021 06:47:56 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 0C82A240107 for <50297@debbugs.gnu.org>; Thu, 23 Sep 2021 12:47:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632394067; bh=c3Kw7iUUohHmsvbKAfRtmsz+JFBBBq4xFbHTcddLYew=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=K/+X7lDCAIruU7IPha8syQ1blIfSvOavAjkYlbSzE9GKdWdnrVZbviceRjJSv1wGJ EMm73cSfRT7pk9e3zSnJKH7QW+iVwkJgRU4HlDa+AZOi7SCXdYwf7dMraYArdfEfai OG+1D4F/7StbL/tCV6LEHfwrKLOMwhfVVBqcO3Eyqv+XpbPW5NYDTKdLh9GAAh8rU9 Gv2WUgUi/1Yeo6+/Y7YQL1J2jREN5ipbYkndQodNBi4oscghZDFqrWP2sEE0F/DYB1 Yq834+jJ/MST/TgSBGjWj76ibW9ih+MqGtngMJkeo0+03W5nN46t9Uz+sP/laDT455 vMva0bnjhLKiQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HFX14258yz9rxB; Thu, 23 Sep 2021 12:47:20 +0200 (CEST) From: Philip Kaludercic References: <87h7f5ok5l.fsf@posteo.net> <87lf3ophhy.fsf@posteo.net> <0e6238a4-9a35-f70e-051a-3a75ac6fc583@yandex.ru> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Thu, 23 Sep 2021 10:46:18 +0000 Message-ID: <87czoz7eo5.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) 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 (---) --=-=-= Content-Type: text/plain Dmitry Gutov writes: > On 22.09.2021 21:55, Philip Kaludercic wrote: >> + (project-remove-known-project proj)))) > > This one is called 'project-forget-project' now. > >> +(defun project-forget-known-projects (dir &optional recursive) > > And let's call this one 'project-forget-projects-under'. > > Looks good otherwise, thanks. Sorry about that, forgot to byte-compile before preparing the patch. This should fix the issues: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-aggregate-project-discovery-and-maintenance-func.patch >From 45492ec9fb9f2706f6ac0e7317ec1b0f7ce25091 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Tue, 31 Aug 2021 14:12:13 +0200 Subject: [PATCH] Add aggregate project discovery and maintenance functions * project.el (project-remember-project): Add optional no-write argument (project-remember-projects-under): Add command (project-forget-zombie-projects): Add command (project-forget-projects-under): Add command --- lisp/progmodes/project.el | 72 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 9b63f4b1bc..57a961c260 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1296,9 +1296,10 @@ project--write-project-list (write-region nil nil filename nil 'silent)))) ;;;###autoload -(defun project-remember-project (pr) +(defun project-remember-project (pr &optional no-write) "Add project PR to the front of the project list. -Save the result in `project-list-file' if the list of projects has changed." +Save the result in `project-list-file' if the list of projects +has changed, and NO-WRITE is nil." (project--ensure-read-project-list) (let ((dir (project-root pr))) (unless (equal (caar project--list) dir) @@ -1306,7 +1307,8 @@ project-remember-project (when (equal dir (car ent)) (setq project--list (delq ent project--list)))) (push (list dir) project--list) - (project--write-project-list)))) + (unless no-write + (project--write-project-list))))) (defun project--remove-from-project-list (project-root report-message) "Remove directory PROJECT-ROOT of a missing project from the project list. @@ -1363,6 +1365,70 @@ project-execute-extended-command (let ((default-directory (project-root (project-current t)))) (call-interactively #'execute-extended-command))) +(defun project-remember-projects-under (dir &optional recursive) + "Index all projects below a directory DIR. +If RECURSIVE is non-nil, recurse into all subdirectories to find +more projects. After finishing, a message is printed summarizing +the progress. The function returns the number of detected +projects." + (interactive "DDirectory: \nP") + (project--ensure-read-project-list) + (let ((queue (directory-files dir t nil t)) (count 0) + (known (make-hash-table + :size (* 2 (length project--list)) + :test #'equal ))) + (dolist (project (mapcar #'car project--list)) + (puthash project t known)) + (while queue + (when-let ((subdir (pop queue)) + ((file-directory-p subdir)) + ((not (gethash subdir known)))) + (when-let (pr (project--find-in-directory subdir)) + (project-remember-project pr t) + (message "Found %s..." (project-root pr)) + (setq count (1+ count))) + (when (and recursive (file-symlink-p subdir)) + (setq queue (nconc (directory-files subdir t nil t) queue)) + (puthash subdir t known)))) + (unless (eq recursive 'in-progress) + (if (zerop count) + (message "No projects were found") + (project--write-project-list) + (message "%d project%s were found" + count (if (= count 1) "" "s")))) + count)) + +(defun project-forget-zombie-projects () + "Forget all known projects that don't exist any more." + (interactive) + (dolist (proj (project-known-project-roots)) + (unless (file-exists-p proj) + (project-forget-project proj)))) + +(defun project-forget-projects-under (dir &optional recursive) + "Forget all known projects below a directory DIR. +If RECURSIVE is non-nil, recurse into all subdirectories to +remove all known projects. After finishing, a message is printed +summarizing the progress. The function returns the number of +forgotten projects." + (interactive "DDirectory: \nP") + (let ((count 0)) + (if recursive + (dolist (proj (project-known-project-roots)) + (when (file-in-directory-p proj dir) + (project-forget-project proj) + (setq count (1+ count)))) + (dolist (proj (project-known-project-roots)) + (when (file-equal-p (file-name-directory proj) dir) + (project-forget-project proj) + (setq count (1+ count))))) + (if (zerop count) + (message "No projects were forgotten") + (project--write-project-list) + (message "%d project%s were forgotten" + count (if (= count 1) "" "s"))) + count)) + ;;; Project switching -- 2.30.2 --=-=-= Content-Type: text/plain -- Philip Kaludercic --=-=-=-- From unknown Thu Sep 11 18:37:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#50297: 28.0.50; Aggregate project functions for project.el Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 23 Sep 2021 11:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50297 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 50297@debbugs.gnu.org Received: via spool by 50297-submit@debbugs.gnu.org id=B50297.16323981767704 (code B ref 50297); Thu, 23 Sep 2021 11:57:02 +0000 Received: (at 50297) by debbugs.gnu.org; 23 Sep 2021 11:56:16 +0000 Received: from localhost ([127.0.0.1]:52846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTNKp-00020B-NH for submit@debbugs.gnu.org; Thu, 23 Sep 2021 07:56:15 -0400 Received: from mail-wr1-f50.google.com ([209.85.221.50]:34785) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTNKn-0001zu-Ru for 50297@debbugs.gnu.org; Thu, 23 Sep 2021 07:56:14 -0400 Received: by mail-wr1-f50.google.com with SMTP id t8so16555153wri.1 for <50297@debbugs.gnu.org>; Thu, 23 Sep 2021 04:56:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=MFwH65ONTXAgBBNUP7z91bP9JmtE4nIoAigvNyCeHMo=; b=qEQblBUpABgF9ZC3znqEAthjnDkOzS1GpoFXTWopIsg9l3Dw2nGOs2oifA2Wtuy6MM wbm60htetFYixia7PR/P/WKs12R6Ja+tK+KXve3/uE5lGlHb0INMOlxGJ7sG3JSEXhaj q9lucgDuX/Yuu37ibZNFyO6Xh8BuQJ/QVUyT8ybQQZcKEgO6RpgIOqy12OkJJqiNs+WJ JeKE9COMOy3VJun05AwYL8K8MReS8VoCA/9xtuw7l1gxnUAH5qAomYYIPPcyHn7r1+/T qkltidDxRte52i8WcfvvOYjddFuWb5qIZlg+0mOPs/Y2HamKK2HeMa1e7AeNXdrkefD5 xUwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=MFwH65ONTXAgBBNUP7z91bP9JmtE4nIoAigvNyCeHMo=; b=zzYnAPm1+G05c1KEHM2JyKE5dtXh1j7TytIvmQckpDudGEN/zEFEMut2O15joodsS+ SMIRlQTyN3gM3f1Jzb2cGxXBHr3bqE4UZWL92A/TGOBBnBTUYcMn3Km9IdsmCyCReX77 a/s76yK8WMZ+yRKa1rLmeVTWcfLGmN64v61HiuCBabE46qn6pJ913eciJ7sZsb3xsqYJ UVG+6SPcaeoMn7qBsL1M0otWbSRXIwbD+4K6araRrnP+njlYXFtC3ADogZCX4ZZogxsX UzUCtPZfR/huDjCtg306O/v+G3jU8w7wqVdzZSppXt0tcbMRmtTJpgQ6KQpla9HKLlYV m6Cw== X-Gm-Message-State: AOAM530S3oUPjKq+ndhlQSFhJVq2BNZd6HMGWFFv3X+NhZbQ2+nm8oBB mQJHEtzOFmree0iUn+Yyx7jCnybYw3w= X-Google-Smtp-Source: ABdhPJww4f+QUEDGI7bY/b/h0sNHE+qDmQS9a1H65T8bvisSuLgKaD6MbxFkduhDI7gN8Md+BKT3qQ== X-Received: by 2002:a05:600c:aca:: with SMTP id c10mr8085671wmr.174.1632398167720; Thu, 23 Sep 2021 04:56:07 -0700 (PDT) Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id 10sm8419818wmi.1.2021.09.23.04.56.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Sep 2021 04:56:07 -0700 (PDT) References: <87h7f5ok5l.fsf@posteo.net> <87lf3ophhy.fsf@posteo.net> <0e6238a4-9a35-f70e-051a-3a75ac6fc583@yandex.ru> <87czoz7eo5.fsf@posteo.net> From: Dmitry Gutov Message-ID: <274f1110-41f9-b5a5-c1ab-6b3c51eb9b49@yandex.ru> Date: Thu, 23 Sep 2021 14:56:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <87czoz7eo5.fsf@posteo.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) 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.6 (/) On 23.09.2021 13:46, Philip Kaludercic wrote: > Sorry about that, forgot to byte-compile before preparing the > patch. This should fix the issues: Thanks. You can go ahead and install. Just add NEWS entries for the commands. From unknown Thu Sep 11 18:37:11 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Philip Kaludercic Subject: bug#50297: closed (Re: bug#50297: 28.0.50; Aggregate project functions for project.el) Message-ID: References: <875yur7av5.fsf@posteo.net> <87h7f5ok5l.fsf@posteo.net> X-Gnu-PR-Message: they-closed 50297 X-Gnu-PR-Package: emacs Reply-To: 50297@debbugs.gnu.org Date: Thu, 23 Sep 2021 12:09:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1632398942-9073-1" This is a multi-part message in MIME format... ------------=_1632398942-9073-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #50297: 28.0.50; Aggregate project functions for project.el which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 50297@debbugs.gnu.org. --=20 50297: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D50297 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1632398942-9073-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 50297-done) by debbugs.gnu.org; 23 Sep 2021 12:08:50 +0000 Received: from localhost ([127.0.0.1]:52872 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTNWr-0002Lj-7P for submit@debbugs.gnu.org; Thu, 23 Sep 2021 08:08:50 -0400 Received: from mout01.posteo.de ([185.67.36.65]:50443) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTNWo-0002LS-LJ for 50297-done@debbugs.gnu.org; Thu, 23 Sep 2021 08:08:40 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id D6921240029 for <50297-done@debbugs.gnu.org>; Thu, 23 Sep 2021 14:08:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1632398911; bh=TZEfeZA3dqIeP0R2HZHoiJO7GmFPbniAPJ3SrHf1Ov0=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=LB4hpCZy6wVWjWCG17GgTwoMIWoAPNJqsiygokCW2zcqQ1y+p3ZcafyZzyiCQlXA8 rwp1v0yV/jtPIkFmK1eiZvuiuHbYFm5IM912BqmRcqmRtAuvDI2OHWQkw9E6z8Dlj4 rsfDHUXBe9/mJcasn47+BEfSdcrpsX1Ju8NBiojBRtc6er8U6rubb2vtSwYsOVgG5l 8fenjHR65I8JjAqhRsj/FDZ03IXGKLVoQxxf7pwXZ8as2ttqv6/aGSO4XEd8dPUfqP sY2GWQWRiwtou5UjUUNgB5oRRcMDvvNZK/Fjod2EdYqTEEBK8TDcHVR7iOcXz4UA21 Fhm4eGNlaRKxQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HFYpk606yz9rxD; Thu, 23 Sep 2021 14:08:30 +0200 (CEST) From: Philip Kaludercic To: Dmitry Gutov Subject: Re: bug#50297: 28.0.50; Aggregate project functions for project.el References: <87h7f5ok5l.fsf@posteo.net> <87lf3ophhy.fsf@posteo.net> <0e6238a4-9a35-f70e-051a-3a75ac6fc583@yandex.ru> <87czoz7eo5.fsf@posteo.net> <274f1110-41f9-b5a5-c1ab-6b3c51eb9b49@yandex.ru> Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Thu, 23 Sep 2021 12:08:30 +0000 In-Reply-To: <274f1110-41f9-b5a5-c1ab-6b3c51eb9b49@yandex.ru> (Dmitry Gutov's message of "Thu, 23 Sep 2021 14:56:05 +0300") Message-ID: <875yur7av5.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50297-done Cc: 50297-done@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 (-) Dmitry Gutov writes: > On 23.09.2021 13:46, Philip Kaludercic wrote: >> Sorry about that, forgot to byte-compile before preparing the >> patch. This should fix the issues: > > Thanks. You can go ahead and install. > > Just add NEWS entries for the commands. Done and pushed. -- Philip Kaludercic ------------=_1632398942-9073-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 31 Aug 2021 12:48:08 +0000 Received: from localhost ([127.0.0.1]:33267 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3BM-0002up-Ek for submit@debbugs.gnu.org; Tue, 31 Aug 2021 08:48:08 -0400 Received: from lists.gnu.org ([209.51.188.17]:43348) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3BH-0002uH-Ld for submit@debbugs.gnu.org; Tue, 31 Aug 2021 08:48:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38320) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL3BG-0006Ur-Kw for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2021 08:47:59 -0400 Received: from mout02.posteo.de ([185.67.36.66]:46731) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL3BD-0000LC-Ie for bug-gnu-emacs@gnu.org; Tue, 31 Aug 2021 08:47:58 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 5A3E0240104 for ; Tue, 31 Aug 2021 14:47:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1630414072; bh=w1HP9z1M6Y7MElJRyHM/u8LnfKbr0Jl//9TCl2jOUUs=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=HSn7p0dSH4udJcz2rxTTane9DS0bYrwPAUblYNyYNVmriKMBPpC/2tmG78x8m1SjN ha9FJSZVBP7914/uDTQzNRxLNA7aFZHFdJ/4m3imPBrJjOJ992ydC+LVnJO00JEXai BoNxksW68roXNSijHPsZSjE3JUsa/BkhiAB0EbPgiV2G0XFMa6RygXPL6J2MC6ZYL1 Fx40VJNBgP6MvpzYwZxCoWPr80sCwwNVXjqtc68cSzprNhl1l9YsZigFJtn2BKE29Y iwf2+pnSKCm8dcMAyaqZqLYrXHP68CcreYTslipjy31oWAJsYvEgn/RWuknmHEH17U X4s8GzaG4rwxg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4GzRml39Hvz6tmV; Tue, 31 Aug 2021 14:47:51 +0200 (CEST) From: Philip Kaludercic To: bug-gnu-emacs@gnu.org Subject: 28.0.50; Aggregate project functions for project.el Autocrypt: addr=philipk@posteo.net; prefer-encrypt=mutual; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB Date: Tue, 31 Aug 2021 12:47:50 +0000 Message-ID: <87h7f5ok5l.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=185.67.36.66; envelope-from=philipk@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit Cc: Dmitry Gutov 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.3 (--) --=-=-= Content-Type: text/plain The following patch introduces a few functions for aggregate project maintenance: - project-find-projects-under Select a directory with projects to index all at once. - project-remove-zombie-projects Check if all known projects still exist and remove those that don't anymore - project-remove-projects-under Remove all projects in a directory (inverse of project-find-projects-under). Especially the last two are useful to maintain a clean project list without having to manually remove every project one by one. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-aggregate-project-discovery-and-maintenance-func.patch >From 3431a9123753d769f10621d2f5f6ef72ab0e2f3a Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Tue, 31 Aug 2021 14:12:13 +0200 Subject: [PATCH] Add aggregate project discovery and maintenance functions * project.el (project-remember-project): Add optional no-write argument (project-find-projects-under): Add command (project-remove-zombie-projects): Add command (project-remove-known-projects): Add command --- lisp/progmodes/project.el | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index ae9bf03571..2f251393e2 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1261,9 +1261,10 @@ project--write-project-list (write-region nil nil filename nil 'silent)))) ;;;###autoload -(defun project-remember-project (pr) +(defun project-remember-project (pr &optional no-write) "Add project PR to the front of the project list. -Save the result in `project-list-file' if the list of projects has changed." +Save the result in `project-list-file' if the list of projects +has changed, and NO-WRITE is nil." (project--ensure-read-project-list) (let ((dir (project-root pr))) (unless (equal (caar project--list) dir) @@ -1271,7 +1272,8 @@ project-remember-project (when (equal dir (car ent)) (setq project--list (delq ent project--list)))) (push (list dir) project--list) - (project--write-project-list)))) + (unless no-write + (project--write-project-list))))) (defun project--remove-from-project-list (project-root report-message) "Remove directory PROJECT-ROOT of a missing project from the project list. @@ -1325,6 +1327,35 @@ project-execute-extended-command (let ((default-directory (project-root (project-current t)))) (call-interactively #'execute-extended-command))) +(defun project-find-projects-under (dir) + "Index all projects below a directory DIR." + (interactive "DDirectory: ") + (let ((count 0)) + (dolist (subdir (directory-files dir t nil t)) + (when-let (pr (project--find-in-directory subdir)) + (project-remember-project pr t) + (message "Found %s..." (project-root pr)) + (setq count (1+ count)))) + (if (zerop count) + (message "No projects found") + (project--write-project-list) + (message "%d project%s found" + count (if (= count 1) "" "s"))))) + +(defun project-remove-zombie-projects () + "Remove all known projects that don't exist any more." + (interactive) + (dolist (proj (project-known-project-roots)) + (unless (file-exists-p proj) + (project-remove-known-project proj)))) + +(defun project-remove-known-projects (dir) + "Remove all known projects below a directory DIR." + (interactive "DDirectory: ") + (dolist (proj (project-known-project-roots)) + (when (file-in-directory-p proj dir) + (project-remove-known-project proj)))) + ;;; Project switching -- 2.30.2 --=-=-= Content-Type: text/plain In GNU Emacs 28.0.50 (build 7, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw scroll bars) of 2021-08-26 built on icterid Repository revision: b74afe63d02f126127d9211c0d1c1dc2cf5dd5bb Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure LDFLAGS=-flto 'CFLAGS=-O2 -march=native -mtune=native -pipe' --with-native-compiler' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM LUCID ZLIB Important settings: value of $EMACSLOADPATH: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Git-Log-View Minor modes in effect: TeX-PDF-mode: t global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t icomplete-mode: t rcirc-track-minor-mode: t display-time-mode: t winner-mode: t windmove-mode: t electric-pair-mode: t recentf-mode: t save-place-mode: t savehist-mode: t show-paren-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t temp-buffer-resize-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t Load-path shadows: /home/philip/.config/emacs/elpa/transient-0.3.6/transient hides /home/philip/Code/src/emacs/lisp/transient ~/.config/emacs/site-lisp/autoload hides /home/philip/Code/src/emacs/lisp/emacs-lisp/autoload Features: (shadow emacsbug tramp-archive tramp-gvfs tramp-cache zeroconf tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat ls-lisp flymake-cc macrostep-c cmacexp macrostep preview tex-buf tex-fold reftex-dcr reftex-auc reftex reftex-loaddefs reftex-vars font-latex latex latex-flymake tex-ispell tex-style tex texmathp tex-mode latexenc apropos eieio-opt speedbar ezimage dframe shortdoc vc-annotate help-at-pt gnus-fun cl-print debug backtrace pulse find-func rect markdown-mode shell-command+ rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-enc xmltok xref find-dired grep mhtml-mode css-mode smie eww xdg url-queue mm-url color js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs sgml-mode facemenu whitespace make-mode dired-aux ffap avy magit-extras bug-reference face-remap magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff git-commit log-edit add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor term ehelp eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util shell pcomplete server magit-mode transient format-spec magit-git magit-section magit-utils dash vc-fossil vc-mtn vc-hg vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs icomplete project memory-report char-fold misearch multi-isearch mailalias bbdb-pgp url-http url-gw url-cache url-auth cus-edit pp cus-start finder-inf bbdb-message autocrypt-message smerge-mode diff-mode jka-compr mule-util smiley gnus-cite flow-fill mm-archive mail-extr gnus-async gnus-bcklg qp sort gnus-ml disp-table autocrypt-gnus autocrypt nndraft nnmh epa-file gnutls network-stream nsm nnmaildir nnfolder vc-backup log-view pcvs-util vc vc-dispatcher diff time-stamp bbdb-gnus bbdb-mua bbdb-com crm nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig nntp gnus-cache gnus-sum shr kinsoku svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec epa mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win modus-vivendi-theme paredit checkdoc flymake-proc flymake warnings thingatpt flyspell ispell noutline outline easy-mmode gnus-dired dired-x dired dired-loaddefs rcirc parse-time iso8601 rx time bbdb bbdb-site timezone sendmail gnus nnheader gnus-util rmail rmail-loaddefs time-date mail-utils hippie-exp winner windmove elec-pair recentf tree-widget wid-edit saveplace savehist paren modus-operandi-theme modus-themes holidays hol-loaddefs cal-menu calendar cal-loaddefs cus-load setup load compile text-property-search comint ansi-color autoload lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr tex-site geiser-impl help-fns radix-tree geiser-custom geiser-base ring slime-autoloads info package let-alist derived edmacro kmacro pcase cl-extra help-mode browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq byte-opt gv bytecomp byte-compile cconv epg epg-config subr-x cl-loaddefs cl-lib iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 1167755 519125) (symbols 48 100287 1576) (strings 32 294014 1164412) (string-bytes 1 10068553) (vectors 16 85242) (vector-slots 8 1729184 892975) (floats 8 776 1974) (intervals 56 55886 9874) (buffers 992 65)) -- Philip K. --=-=-=-- ------------=_1632398942-9073-1--