From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: master 1e3b0f2: Improve doc strings of project.el Date: Fri, 10 Jul 2020 22:36:48 +0300 Message-ID: References: <87bllfqj82.fsf@warpmail.net> <83imfnxgt3.fsf@gnu.org> <626efe11-0f9c-081b-11dd-0d61cee8168d@yandex.ru> <83h7v7xf7w.fsf@gnu.org> <831rmayj55.fsf@gnu.org> <6dc2c2ac-8e17-f044-dc78-8c109f936ad2@yandex.ru> <83wo42w83e.fsf@gnu.org> <6762abf5-71c1-aa54-1bac-d4c90c20870b@yandex.ru> <831rmavsuq.fsf@gnu.org> <83a70wv4mj.fsf@gnu.org> <5542db0c-cc0d-2743-87ae-7728a0cc94bb@yandex.ru> <83ftaf2rj2.fsf@gnu.org> <43a8f8d4-83fb-f012-8e1d-c1a618b0ef59@yandex.ru> <83mu4m0vub.fsf@gnu.org> <44f2f1f4-ae34-f0bf-b153-f33b8ee6069f@yandex.ru> <83mu4fvjh3.fsf@gnu.org> <7c2e93d4-8d86-bbbb-77a0-bf5d73051907@yandex.ru> <83imf2t4w4.fsf@gnu.org> <95fd893e-0da5-4cdc-a3e8-3c22af750aae@yandex.ru> <837dvfs6wg.fsf@gnu.org> <8bc1f381-248f-5cee-c3c6-a29d411a2f74@yandex.ru> <837dvbphs0.fsf@gnu.org> <83365zp78d.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5189"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 Cc: philip@warpmail.net, theo@thornhill.no, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jul 10 21:37:49 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jtyqC-0001Gs-VC for ged-emacs-devel@m.gmane-mx.org; Fri, 10 Jul 2020 21:37:49 +0200 Original-Received: from localhost ([::1]:44526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jtyqC-0003C3-1u for ged-emacs-devel@m.gmane-mx.org; Fri, 10 Jul 2020 15:37:48 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jtypL-0002ca-Ae for emacs-devel@gnu.org; Fri, 10 Jul 2020 15:36:55 -0400 Original-Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:42163) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jtypJ-00060H-8j; Fri, 10 Jul 2020 15:36:55 -0400 Original-Received: by mail-wr1-x432.google.com with SMTP id o11so7062532wrv.9; Fri, 10 Jul 2020 12:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=o7lxaOLp35/xp8LWKkFQrtVvq+eYksIimJm8uvYURME=; b=QIws0SVqbbkRt3rotkd4hpjZMlUo/O5XV2LukGpSLFegOGINjCAob68B7yuVmWQUuB 3WF/QuomeUentkDzoKAqOE4/w1XP9zhIRc13xA7ydLFFwN+PdGZlvd0GL3JAfS7HGGiJ GQ4xivdjalLV1cMN46Jt8eUhIjXFnoFb8MP4FRWDXUqrLE7dt+craVQVAd08j7B4UDG0 kw1VgbdAC7KNwjVCfMgE90+ZMe+TdMnAOtAjvtCNg2D275kUy0OgPetqjnMYO09/kEJG FxScUzLHHU5XzFIH5o6As4WXbUXZU5HAF03GEuZZPevbEilqmheenRg4JBV2boI1jNJM rbQg== 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=o7lxaOLp35/xp8LWKkFQrtVvq+eYksIimJm8uvYURME=; b=qI+J5cZAnAUjRnLuKPCm4bzw0BaVW2IARCyRihhiEWhkDwZPjxyWrGurW2RxL3SgOA iFisc/lPLXjX/qVxf//fbTUMHlOYzPWcOk7bvBNwKGBeCOhiGfIW3ESKlWhGhteTywtv SBlktEvewwLBkTA0pJ8vfUNMnwicZBnwjjEFDCVdOVHJ3m9XrGzKCGxKHvvciA5esqIb V1bC9kzyQtjoArqJm1bTKXkMtiCpdCx1p//h91rUrk6eEp/JdZHJYszS71bjEKnN33Cy AKF8MR34h9Vj7vDXldsGZekbVzoLpLbTxpLHTiZJxOqkDtvJKqw7eIwVD/sHBzpp2ExT lQ0w== X-Gm-Message-State: AOAM5303L+BLG50DOrQlJlGekoOBVuI1fjd0fgSRis7fuf25Zd6kezKj SIra9nSGmiwqIti97jG2eWcXbXKe X-Google-Smtp-Source: ABdhPJwzsZi3d+xFjNnz4z+DDh2pKJysW1cj49LX/v2W/r37snguinDbJ0z6P+1BfIxyVrxhjwfXjA== X-Received: by 2002:adf:e40e:: with SMTP id g14mr75113737wrm.271.1594409810477; Fri, 10 Jul 2020 12:36:50 -0700 (PDT) Original-Received: from [192.168.0.3] ([66.205.73.129]) by smtp.googlemail.com with ESMTPSA id z10sm11931582wrm.21.2020.07.10.12.36.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 10 Jul 2020 12:36:49 -0700 (PDT) In-Reply-To: <83365zp78d.fsf@gnu.org> Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=raaahh@gmail.com; helo=mail-wr1-x432.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:252834 Archived-At: On 10.07.2020 21:14, Eli Zaretskii wrote: >>> Please do ask, because I don't see how could hundreds of buffers >>> belong to a project without being created by commands that know about >>> the project. >> >> They can open a bunch of files that reside in a project's directory >> (roughly speaking; if the project backend is directory-based). You don't >> need a command named project-* to do that. > > We could add something to find-file, like we do for VC-related files. I mean, yeah. We could. That would be one way to cache (eagerly). Then whatever operation that created those 6000 buffers would pay the price. > Maybe we should waste those CPU cycles, so that they don't add up. I'm inclined to say "no" (Tramp is slow enough). But that's a secondary decision. Whether we do cache eagerly (by wasting said CPU cycles in advance), or save per-buffer "current project" value on demand, either way that would mean caching it. And either way, that brings up the issue of cache invalidation. >> Which is most likely a plus for Tramp, we don't need to make buffer >> opening even slower there. > > We could have a defcustom to disable that for those who will seldom > if ever use project.el. And again, we do that for VC. Tramp has extra-special handling for VC. It probably wouldn't be able to do that for all possible project backends. >>>> * file or directory -> project >>>> * project -> list of files >>> >>> These should be updated when the file is added to a project or removed >>> from it. Or maybe I don't see the difficulties you have in mind. >> >> File can be added to a project in a multitude of different ways. By >> using Vim in a terminal, for instance. Or the 'touch' command. >> >> Removal also happens through different venues (removal in Dired, on 'rm' >> in the terminal, or changing the project configuration to ignore the >> said file). > > Why should we care about adding or removing a file that are not > visited in Emacs? A file already opened in Emacs might be added to some project this way (by editing project config, or doing 'git init'). Then, ideally, two things need to happen: - The "current project" cache of said buffer (if it is already visited) needs to be invalidated. - The "project-files" cache (currently not cached) of said project needs to be invalidated as well. When a file is removed from project, the latter needs to happen. >>> . it makes the doc string of project-switch-to-buffer intentionally >>> obfuscated by "explaining" stuff in terms of the implementation, >>> which makes it not very useful (as I already tried to explain in >>> the past) >> >> What are you suggesting? > > Explain what project-current does, most probably, right in that doc > string. project-current finds the current project of the buffer. Or the project to which the current buffer is related. Would that explanation make things better? The exact logic of project-current depends on the configuration of project-find-functions. >>> . the new doc string is confusing: "if 'project-current' returns the >>> same (equal) value" is incomplete, because it doesn't say the same >>> as what >> >> Same as the current project value, if any (otherwise, same as the value >> returned by the project selection prompt). > > Please fix the sentence, then. I'll do my best. >>> So that commit looks like a step backwards to me. >> >> Just because you don't like the new docstring? >> >> That's harsh. > > I didn't see any other significant changes, sorry. You asked for the buffer-matching logic not to depend on default-directory anymore. It doesn't. Now project-switch-to-buffer and project-kill-buffers should work with Stephen's backend, as well as any "manually managed project" backend you might choose to write.