If your ls program supports the ‘--dired’ option, Dired automatically passes it that option; this causes ls to emit special escape sequences for certain unusual file names, without which Dired will not be able to parse those names. The first time you run Dired in an Emacs session, it checks whether ls supports the ‘--dired’ option by calling it once with that option. If the exit code is 0, Dired will subsequently use the ‘--dired’ option; otherwise it will not. You can inhibit this check by customizing the variable dired-use-ls-dired. The value unspecified (the default) means to perform the check; any other non-nil value means to use the ‘--dired’ option; and nil means not to use the ‘--dired’ option.
On MS-Windows and MS-DOS systems, and also on some remote systems, Emacs emulates ls. See Emulation of ls on MS-Windows, for options and peculiarities of this emulation.
Geez I didn't realize dired relies on shelling out to ls. Why the fuck would you go through all the trouble of
- shelling out to an unreliable program and doing all the parsing work;
- adding a special mode for yourself to another piece of software, which may or may not be present;
- adding a user customization point;
- adding an emulation of said software when it's not present;
when you are in a real programming language, and all you need to get the clean data directly is readdir(3) and stat(3) (or their Windows equivalents)? This is unbelievable.
hprotagonist|1 year ago
On MS-Windows and MS-DOS systems, and also on some remote systems, Emacs emulates ls. See Emulation of ls on MS-Windows, for options and peculiarities of this emulation.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Di...
https://www.gnu.org/software/emacs/manual/html_node/emacs/ls...
oefrha|1 year ago
- shelling out to an unreliable program and doing all the parsing work;
- adding a special mode for yourself to another piece of software, which may or may not be present;
- adding a user customization point;
- adding an emulation of said software when it's not present;
when you are in a real programming language, and all you need to get the clean data directly is readdir(3) and stat(3) (or their Windows equivalents)? This is unbelievable.
User23|1 year ago