From: Drew Adams <drew.adams@oracle.com>
To: Arthur Miller <arthur.miller@live.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 11:55:46 -0700 (PDT) [thread overview]
Message-ID: <0957af50-7f85-455a-9d2c-e96451727872@default> (raw)
In-Reply-To: <VI1PR06MB45265603DFF6BE71DBD819EB96BD0@VI1PR06MB4526.eurprd06.prod.outlook.com>
[-- Attachment #1: Type: text/plain, Size: 1862 bytes --]
> I think format string asks for more documentation and
> more cognitive effort on part of user :-) and as such
> maybe it is better to have it as part of Dired+.
>
> Kind-of more for hard-core users who prefer much
> deeper level of customization?
Emacs users are of all kinds. No user who
doesn't understand `format' would need to
make that particular option-value choice.
This is no different from options we have
that have a catch-all choice of a function,
which they can use to get pretty much any
behavior.
And that's another reasonable alternative
here to a choice of a format string: a
function that accepts the current switches
as its (first) argument.
That's even more general, and it wouldn't
freak out a user unfamiliar with format
strings. ;-)
And that also covers truncating, trivially.
There's nothing special about truncating.
It just happens to correspond directly to
your immediate problem: a long list of
switches.
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'
If Emacs doesn't want to go this route then
I guess I'll just use it for Dired+.
___
I do think your suggestion of mouseover
the mode-line indication showing the full
switches is a good one.
I've added command `diredp-change-ls-switches'
to Dired+, and added it to menu-bar menu `Dir'
(aka `Subdir'). It shows the current switches
in the prompt, so you can just hit `C-g' if all
you want is see what the current switches are.
And because it's in the menu, you can get to
it by clicking the lighter in the mode-line.
(Menu `Dir' is the first menu listed when you
click.)
[-- Attachment #2: dired-2020-05-15a.patch --]
[-- Type: application/octet-stream, Size: 2747 bytes --]
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
next prev parent reply other threads:[~2020-05-15 18:55 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 [this message]
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
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=0957af50-7f85-455a-9d2c-e96451727872@default \
--to=drew.adams@oracle.com \
--cc=41250@debbugs.gnu.org \
--cc=arthur.miller@live.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).