>>In dired files are sorted case sensitive. This does not make sense on an >>OS with case insensitive file system. Is there any way to get the >>listing in dired sorted case insensitive? > >If you're on Windows, dired is using the Lisp emulation of `ls', that >is, ls-lisp.el. You can configure it to be case insensitive. My .emacs >has this: > >(when (eq system-type 'windows-nt) > (setq ls-lisp-emulation 'MS-Windows > ls-lisp-dirs-first t > ls-lisp-ignore-case t > ls-lisp-verbosity (nconc (and (w32-using-nt) > '(links)) '(uid))))
I've been doing the same thing Juanma does (code above). But I wonder if there isn't a bug in `ls-lisp.el'. Notice the commented-out line in `ls-lisp-emulation' (below). Commenting it out does not make sense in light of the code of `ls-ignore-case', `ls-lisp-dirs-first', and `ls-lisp-verbosity', together with the fact that `ls-lisp.el' is preloaded. The latter options should not bother to test `ls-lisp-emulation'. They appear dependent on `ls-lisp-emulation', but if that is set by a user, it will be set _after_ all of these preloaded defcustoms, so the user will in any case be obliged to set each of these options, not just `ls-lisp-emulation'. IOW, the dependency code doesn't work. --- (defcustom ls-lisp-emulation (cond ((eq system-type 'macos) 'MacOS) ;; ((eq system-type 'windows-nt) 'MS-Windows) ((memq system-type '(hpux dgux usg-unix-v unisoft-unix rtu irix berkeley-unix)) 'UNIX)) ; very similar to GNU ;; Anything else defaults to nil, meaning GNU. "*Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX. Corresponding value is one of the atoms: nil, MacOS, MS-Windows, UNIX. Sets default values for: `ls-lisp-ignore-case', `ls-lisp-dirs-first', `ls-lisp-verbosity'. Need not match actual platform. Changing this option will have no effect until you restart Emacs." :type '(choice (const :tag "GNU" nil) (const MacOS) (const MS-Windows) (const UNIX)) :group 'ls-lisp) (defcustom ls-lisp-ignore-case ;; Name change for consistency with other option names. (or (memq ls-lisp-emulation '(MS-Windows MacOS)) (and (boundp 'ls-lisp-dired-ignore-case) ls-lisp-dired-ignore-case)) "*Non-nil causes ls-lisp alphabetic sorting to ignore case." :type 'boolean :group 'ls-lisp) (defcustom ls-lisp-dirs-first (eq ls-lisp-emulation 'MS-Windows) "*Non-nil causes ls-lisp to sort directories first in any ordering. \(Or last if it is reversed.) Follows Microsoft Windows Explorer." ;; Functionality suggested by Chris McMahan <[EMAIL PROTECTED]> :type 'boolean :group 'ls-lisp) (defcustom ls-lisp-verbosity (cond ((eq ls-lisp-emulation 'MacOS) nil) ((eq ls-lisp-emulation 'MS-Windows) (if (and (fboundp 'w32-using-nt) (w32-using-nt)) '(links))) ; distinguish NT/2K from 9x ((eq ls-lisp-emulation 'UNIX) '(links uid)) ; UNIX ls (t '(links uid gid))) ; GNU ls "*A list of optional file attributes that ls-lisp should display. It should contain none or more of the symbols: links, uid, gid. nil (or an empty list) means display none of them. Concepts come from UNIX: `links' means count of names associated with the file\; `uid' means user (owner) identifier\; `gid' means group identifier. If emulation is MacOS then default is nil\; if emulation is MS-Windows then default is `(links)' if platform is Windows NT/2K, nil otherwise\; if emulation is UNIX then default is `(links uid)'\; if emulation is GNU then default is `(links uid gid)'." ;; Functionality suggested by Howard Melman <[EMAIL PROTECTED]> :type '(set (const :tag "Show Link Count" links) (const :tag "Show User" uid) (const :tag "Show Group" gid)) :group 'ls-lisp) --- I suspect that what happened was that the code originally made sense (i.e. was consistent) with the line uncommented (and it would have made Lennart and me happy), but someone then decided that this should not be the behavior for Windows. Instead of removing or commenting-out the corresponding (i.e. dependent) code everywhere, which would have at least been consistent, only the Windows line in `ls-lisp-emulation' was commented out. I would like to see the commented line uncommented again, so that these variables all do what they were originally desiged to do for Windows. People, such as Edward, who want "consistent" behavior across platforms (e.g. showing columns that make no sense outside of Unix), could always change the option values, but the default values should make sense for each platform. This is especially important for novices. On Windows, it makes sense to show directories first, ignore case differences, and get rid of columns that make no sense. _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel