From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Porter Newsgroups: gmane.emacs.devel Subject: Re: Friendlier dired experience [CODE INCLUDED] Date: Thu, 05 Nov 2020 10:18:51 -0600 Message-ID: <87o8kbwzdg.fsf@alphapapa.net> References: <20201103104340.q34kqfita55w2u7h@E15-2016.optimum.net> <20201104183228.xf7w4yf3fw3427y5@E15-2016.optimum.net> <20201105092232.fk4r5dexnay3eyln@E15-2016.optimum.net> <20201105143800.7vt5jfr4gg2wigyb@E15-2016.optimum.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19128"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Nov 05 17:21:08 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 1kai0a-0004rd-JS for ged-emacs-devel@m.gmane-mx.org; Thu, 05 Nov 2020 17:21:08 +0100 Original-Received: from localhost ([::1]:56888 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kai0Z-0001bp-H3 for ged-emacs-devel@m.gmane-mx.org; Thu, 05 Nov 2020 11:21:07 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:41428) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kahyg-0008UN-AF for emacs-devel@gnu.org; Thu, 05 Nov 2020 11:19:11 -0500 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:40258 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kahyc-0001IQ-GA for emacs-devel@gnu.org; Thu, 05 Nov 2020 11:19:09 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kahyR-0000iQ-Lp for emacs-devel@gnu.org; Thu, 05 Nov 2020 17:18:55 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/05 08:51:10 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, 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:258735 Archived-At: Stefan Monnier writes: >>> You'd still have the downside that the general bookmarks include all the >>> other non-directory bookmarks, so maybe it's not a good idea anyway. >>> [ I'm not using bookmarks very much, so my intuition here is poor. ] >> Why would that be a downside? > > That you can have name conflicts between the diredc and other bookmarks, > and that when selecting a diredc bookmark you'd have to see all those > other bookmarks which might make it more timeconsuming to find the > bookmark you're after. > > For the first problem, I don't have a good solution. > For the second, I think this actually hints at a need for the generic > bookmark-selection functionality to offer a way to first select a *type* > of bookmark and only then pick a name among the remaining candidates. > > [ And of course, in the absence of such generic support in bookmark.el, > diredc could do it on its own by offer a command which pre-filters > the list of bookmarks to only include those which refer to > directories. ] Some recent work I've done in Burly[0] touches on this. Because Burly uses its own bookmark handler function, it was easy to write a command that offers only bookmarks created with Burly by filtering them on the bookmark records' handler value.[1] However, when I tried to write a bookmark-listing command to display only Burly's bookmarks, it wasn't as easy to re-use existing functionality. I tried to re-use the list-bookmarks command by binding bookmarks-alist to a filtered alist, and that worked. The problem is that re-displaying the bookmarks list (e.g. after deleting a bookmark) shows the non-filtered bookmarks list. I then experimented with using buffer-local function advice in the list-bookmarks buffer to cause it to use the filtered bookmarks list when re-displaying, but it didn't seem to work. And even if it had, it would have been very hacky, so it didn't seem like a good solution. An idea I had was for the list-bookmarks command to use an optional filter function to filter the bookmarks-alist before displaying them, so the filter could persist after using commands to manipulate bookmarks.[2] (Note that the global value of bookmarks-alist would remain unchanged so that saving the bookmarks to disk still saves all bookmarks, not just the filtered ones.) Frankly, I wonder if list-bookmarks ought to be rewritten to use, e.g. tabulated-list-mode instead of its bespoke code. (Although I'm guessing that would break much of Drew's Bookmarks+ library...) 0: https://github.com/alphapapa/burly.el 1: https://github.com/alphapapa/burly.el/blob/e2ab1b2526ce84ad7dd17bf37c0079785619bc8e/burly.el#L156 2: https://github.com/alphapapa/burly.el/issues/14#issuecomment-719803053