unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Arthur Miller <arthur.miller@live.com>
To: Drew Adams <drew.adams@oracle.com>
Cc: 41250@debbugs.gnu.org, Juri Linkov <juri@linkov.net>
Subject: bug#41250: 28.0.50; Dired displays unconditionally ls-switches on modeline
Date: Fri, 15 May 2020 21:54:50 +0200	[thread overview]
Message-ID: <VI1PR06MB45262D0792D96FB34459A10B96BD0@VI1PR06MB4526.eurprd06.prod.outlook.com> (raw)
In-Reply-To: <0957af50-7f85-455a-9d2c-e96451727872@default> (Drew Adams's message of "Fri, 15 May 2020 11:55:46 -0700 (PDT)")

Drew Adams <drew.adams@oracle.com> writes:

> Attached is a patch that does what I think
> should be done.  The option value can be:
>
> nil - to get the current behavior
> `as-is' - show the full switches
> an integer - show first N chars of switches
> a function - show whatever it returns, when
>              passed `dired-actual-switches'

Cool. I was actually sitting and coding but you have already done it,
nice.

I have just one question/suggestion:

You first choice: indicate by name or date, else full. Does it really
need to be there? ls-switches are displayed only when dired is not
sorted by name or date, i.e. custom hence displaying ls switches as part
of mode name. Thus this customization only touches displaying of
switches when they are displayd. I.e. it should be about "how", not "when".

To explain my thought: that is a hard-coded behaviour which user can't
customize anway. By looking at your code, that bevahviour indeed
persists. 2nd choice is the one that actually consider how switches will
be displayed.

I have same consideration about 3rd choice too. Function choice gives
option to run custom hook as format. I think it is cool to have custom
format function to display when in dired mode, so I like it, but it is a
bit different purpose then regulating display of switches. As I perceive it.
Maybe it should get it's own custom variable instead? Like
dired-mode-line-display-hook or something similar?

2nd option, one with number does what the proposed variable name
suggests. Personally I ment to code just short (first switch) and long
(all switches), since probably the first one is the most important one.
I would also prefer nil to mean don't show switches at all, but it works
with N chars set to 0 as well I guess. 

Observe also that if I turn off display by using 0 chars as suggested
there will be a small gap between word "Dired" and closing parenthesis.
It will look like: (Dired ) on modeline. Not a deal breaker, but kind of
small artefact. Easily fixed though. I can rework it if you wish, but
since it is yours, you might prefer to do it yourself.

That is just my opinion, in general I think it does the jobb anyway, so
if you guys are happy, I am happy. As long as it is possible to get rid
of switches on modeline in some way, it is an improvement.

> diff -u dired.el dired-2020-05-15a-PATCHED.el
> --- dired.el	2020-05-15 11:23:32.804823800 -0700
> +++ dired-2020-05-15a-PATCHED.el	2020-05-15 11:26:20.702051000 -0700
> @@ -4114,22 +4114,40 @@
>    "Non-nil means the Dired sort command is disabled.
>  The idea is to set this buffer-locally in special Dired buffers.")
>  
> +(defcustom dired-switches-in-mode-line nil
> +  "How to indicate `dired-actual-switches' in mode-line.
> +Possible values:
> + * `nil':    Indicate name-or-date sort order, if possible.
> +             Else show full switches.
> + * `as-is':  Show full switches.
> + * Integer:  Show only the first N chars of full switches.
> + * Function: Pass `dired-actual-switches' as arg and show result."
> +  :group 'Dired-Plus
> +  :type '(choice
> +          (const    :tag "Indicate by name or date, else full"   nil)
> +          (const    :tag "Show full switches"                    as-is)
> +          (integer  :tag "Show first N chars of switches" :value 10)
> +          (function :tag "Format with function"           :value identity)))
> +
>  (defun dired-sort-set-mode-line ()
> -  ;; Set mode line display according to dired-actual-switches.
> -  ;; Mode line display of "by name" or "by date" guarantees the user a
> -  ;; match with the corresponding regexps.  Non-matching switches are
> -  ;; shown literally.
> +  "Set mode-line according to option `dired-switches-in-mode-line'."
>    (when (eq major-mode 'dired-mode)
>      (setq mode-name
> -	  (let (case-fold-search)
> -	    (cond ((string-match-p
> -		    dired-sort-by-name-regexp dired-actual-switches)
> -		   "Dired by name")
> -		  ((string-match-p
> -		    dired-sort-by-date-regexp dired-actual-switches)
> -		   "Dired by date")
> -		  (t
> -		   (concat "Dired " dired-actual-switches)))))
> +	  (let ((case-fold-search  nil))
> +            (if dired-switches-in-mode-line
> +                (concat "Dired "
> +                        (cond ((integerp dired-switches-in-mode-line)
> +                               (substring dired-actual-switches
> +                                          0 dired-switches-in-mode-line))
> +                              ((functionp dired-switches-in-mode-line)
> +                               (format "%s" (funcall dired-switches-in-mode-line
> +                                                     dired-actual-switches)))
> +                              (t dired-actual-switches)))
> +              (cond ((string-match-p dired-sort-by-name-regexp dired-actual-switches)
> +                     "Dired by name")
> +                    ((string-match-p dired-sort-by-date-regexp dired-actual-switches)
> +                     "Dired by date")
> +                    (t (concat "Dired " dired-actual-switches))))))
>      (force-mode-line-update)))
>  
>  (define-obsolete-function-alias 'dired-sort-set-modeline





  parent reply	other threads:[~2020-05-15 19:54 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14  1:42 bug#41250: 28.0.50; Dired displays unconditionally ls-switches on modeline Arthur Miller
2020-05-14 22:33 ` Juri Linkov
2020-05-14 23:42   ` Drew Adams
2020-05-15  8:44     ` Arthur Miller
2020-05-15 18:55       ` Drew Adams
2020-05-15 19:09         ` Eli Zaretskii
2020-05-15 21:08           ` Arthur Miller
2020-05-15 22:19             ` Drew Adams
2020-05-17  3:09               ` Arthur Miller
2020-05-17  6:59                 ` Drew Adams
2020-05-17 11:12                   ` Arthur Miller
2020-05-16  6:34             ` Eli Zaretskii
2020-05-16 12:18               ` Arthur Miller
2020-05-17  3:01               ` Arthur Miller
2020-05-17 15:17                 ` Eli Zaretskii
2020-05-17 16:34                   ` Arthur Miller
2020-05-17 16:42                     ` Eli Zaretskii
2020-05-17 22:57                       ` Arthur Miller
2020-05-17 23:37                         ` Stefan Kangas
2020-05-18 15:08                           ` Arthur Miller
2020-05-18 14:25                         ` Eli Zaretskii
     [not found]           ` <<VI1PR06MB4526BAF92DBDCEA6A75D7A0196BD0@VI1PR06MB4526.eurprd06.prod.outlook.com>
     [not found]             ` <<835zcwv15e.fsf@gnu.org>
2020-05-16 14:42               ` Drew Adams
2020-05-15 19:54         ` Arthur Miller [this message]
2020-05-15 22:19           ` Drew Adams
2020-05-15 22:24             ` Drew Adams
2020-09-30 16:02               ` Lars Ingebrigtsen
2020-09-30 19:04                 ` Juri Linkov
2020-09-30 19:30                   ` Lars Ingebrigtsen
2020-09-30 19:58                     ` Juri Linkov
2020-09-30 19:59                       ` Lars Ingebrigtsen
2020-10-01 19:37                         ` Juri Linkov
2020-10-01 19:59                           ` Lars Ingebrigtsen
2020-10-02  6:31                             ` Eli Zaretskii
2020-10-02 14:10                               ` Lars Ingebrigtsen
2020-10-02 14:57                                 ` Eli Zaretskii
2020-10-03 17:36                                   ` Lars Ingebrigtsen
2020-10-02  6:54                             ` Juri Linkov
2020-10-02 14:14                               ` Lars Ingebrigtsen
2020-10-02 14:59                                 ` Eli Zaretskii
2020-10-03 17:38                                   ` Lars Ingebrigtsen
2020-10-04 19:44                                 ` Juri Linkov
2020-10-05  7:08                                   ` Lars Ingebrigtsen
2020-10-05 20:15                                     ` Juri Linkov
2020-10-06  1:37                                       ` Lars Ingebrigtsen
2020-10-05 15:49                                   ` Glenn Morris
2020-10-05 20:12                                     ` Juri Linkov
2020-10-05 21:31                                       ` Andreas Schwab
2020-10-06 13:08                                         ` Stefan Monnier
2020-10-06 13:28                                           ` Andreas Schwab
2020-10-05 23:06                                       ` Glenn Morris
2020-10-06  7:13                                         ` Andreas Schwab
2020-10-06  7:18                                           ` Eli Zaretskii
2020-10-06  7:28                                             ` Eli Zaretskii
2020-10-06  7:48                                               ` Andreas Schwab
2020-10-06  8:18                                                 ` Eli Zaretskii
2020-10-06  8:44                                                   ` Andreas Schwab
2020-10-06  9:03                                                     ` Eli Zaretskii
2020-10-06  9:17                                                       ` Andreas Schwab
2020-10-06  9:24                                                         ` Eli Zaretskii
2020-10-06  9:45                                                           ` Andreas Schwab
2020-10-06  7:52                                             ` Juri Linkov
2020-10-01 20:01                           ` Lars Ingebrigtsen
2020-10-01  2:30                     ` Eli Zaretskii
2020-10-01  2:39                       ` Lars Ingebrigtsen
2020-10-01  9:24                         ` Andy Moreton
2020-09-30 21:07                   ` Drew Adams
2020-10-01  1:25                     ` Lars Ingebrigtsen
2020-10-01 16:35                       ` Drew Adams
2020-09-30 20:56                 ` Drew Adams
2020-05-16 23:11         ` Juri Linkov
2020-05-17  1:16           ` Drew Adams
2020-05-15  6:43   ` Eli Zaretskii
2020-05-15  8:40     ` Arthur Miller
2020-05-15 10:15       ` Eli Zaretskii
2020-05-15 10:50         ` Arthur Miller
2020-10-06 11:36 ` Mattias Engdegård
     [not found] <<VI1PR06MB45265DF0191578C413A3B37C96BC0@VI1PR06MB4526.eurprd06.prod.outlook.com>
     [not found] ` <<87v9ky9p6o.fsf@mail.linkov.net>
     [not found]   ` <<654acc31-015d-4552-bd9b-3b8c69661fcd@default>
     [not found]     ` <<VI1PR06MB45265603DFF6BE71DBD819EB96BD0@VI1PR06MB4526.eurprd06.prod.outlook.com>
     [not found]       ` <<0957af50-7f85-455a-9d2c-e96451727872@default>
     [not found]         ` <<83a729uiaq.fsf@gnu.org>
2020-05-15 21:00           ` Drew Adams
2020-05-15 21:14             ` Arthur Miller
2020-05-15 22:04             ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=VI1PR06MB45262D0792D96FB34459A10B96BD0@VI1PR06MB4526.eurprd06.prod.outlook.com \
    --to=arthur.miller@live.com \
    --cc=41250@debbugs.gnu.org \
    --cc=drew.adams@oracle.com \
    --cc=juri@linkov.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).