From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.devel Subject: Re: dired, toggle ls flags? [elisp] Date: Mon, 29 Apr 2024 01:25:16 +0200 Message-ID: <87y18x9ijn.fsf@dataswamp.org> References: <87cyqab06f.fsf@dataswamp.org> <87mspdvocn.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24077"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: emacs-devel@gnu.org Cancel-Lock: sha1:Ac1810Gk8BBRhLWVesXshglZA7o= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Apr 29 07:47:26 2024 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 1s1JrJ-00062Q-2f for ged-emacs-devel@m.gmane-mx.org; Mon, 29 Apr 2024 07:47:25 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s1Jqc-0003po-EO; Mon, 29 Apr 2024 01:46:43 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s1Dtz-0006l5-5m for emacs-devel@gnu.org; Sun, 28 Apr 2024 19:25:47 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s1Dtl-0000Vg-F6 for emacs-devel@gnu.org; Sun, 28 Apr 2024 19:25:45 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1s1Dti-0004qF-6s for emacs-devel@gnu.org; Mon, 29 Apr 2024 01:25:30 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 29 Apr 2024 01:46:20 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:318308 Archived-At: Michael Heerdegen wrote: >> How can I hit a key, say h, to toggle the -h flag for ls >> in dired? >> >> Answer, like this! >> >> But question, is there already a better way to do it? > > IIUC, the intended way of changing any flags is C-u s. > Is this good enough? It is the general case, which one should always have. The specific case, which you do often, you want faster than that, often. However this is actually a nontrivial thing to do for the arbitrary specific case, since, well, take a look at my initial configuration (setq dired-listing-switches "-A -G -h -l -X --group-directories-first --time-style=long-iso -I \"*.meta\" -I \"#*#\" -I \"*.elc\"") And it can actually get even worse, as those initial options can be expressed -AGhlX as well! So to toggle in general some arbitrary option or option argument, one would have to parse all those cases: short options with and without arguments, and the same for long options, and then grouped short options as well. So it is a lot of work for a small gain, agreed. > We don't have a toggle for all flags. We don't have toggle at all, right? But you can set it explicitely to whatever you want using what is already there, which should be fast enough. If one wants to toggle, well, I'll use my poor man's solution for the time being at least all tho it would be interesting to do this so it would work for the entire ls(1) option and argument syntax and also in an elegant lispy way. Because not only ls use that syntax as you know, but a lot of other GNU tools - maybe one can convince oneself it isn't overengineering? Also, maybe some other part of Emacs maybe has this kind of GNU CLI parser already? -- underground experts united https://dataswamp.org/~incal