2010-11-02 13 views
10

En OS X 10.5 Emacs 23.2, en modo Dired, si intento para ordenar por dired-sort-toggle-or-edit con argumento prefijo --sort=extension o -X, me sale:error en DIRED clasificar en OS X

insert-directory: Listing directory failed but `access-file' worked 

y el búfer Dired se vuelve vacío Intenté configurar

(setq dired-use-ls-dired nil) 

pero esto no tuvo ningún efecto. dired-sort-toggle-or-edit y ordenar por extensión parece funcionar bien en mi cuadro de Ubuntu. Alguien tiene una pista de lo que está pasando?

+0

Muchas gracias por crear una pregunta tan útil, que generó respuestas y comentarios que conducen a la solución. – lawlist

Respuesta

8

El ls que está instalado en OS X no es compatible con -X ni con argumentos largos como --sort. El ajuste dired-use-ls-dired no tendrá ningún efecto; dired siempre usará ls, pero si esa variable no es nula, pasará --dired a ls.

Si desea ese tipo de clasificación, probablemente pueda usar algo como fink para instalar coreutils, que proporcionará un ls más como el que está acostumbrado en Ubuntu.

+0

Ah, entonces ese es el problema ... extraño que FreeBSD no tenga ese tipo de clasificación. Y pensé que Fink estaba muerto, pero en realidad parece activo ... me pregunto por qué pensé eso. Gracias. – hatmatrix

+6

Instalé 'coreutils' a través de Homebrew, y aparentemente instala'/usr/local/bin/gls'. I 'ln 's' esto 'a'/usr/local/bin/ls' y luego no obtuve el error en Emacs. – duma

+4

@duma: Esto no funcionó para mí bajo Yosemite 10.10.3. Luego utilicé, además, '(setq insert-directory-program"/usr/local/bin/gls "); use el GNU ls' apropiado en '.emacs' y funcionó –

10

Por ahora, también he encontrado otra solución utilizando ls-lisp

(when (eq system-type 'darwin) 
    (require 'ls-lisp) 
    (setq ls-lisp-use-insert-directory-program nil)) 
+0

También puede usar eshell, cuyo ls incorporado comprende -X. –

+2

¿Es posible establecer 'insert-directory-program' como 'ls' de eshell? – hatmatrix

+0

gracias @crippledlambda Combiné esta respuesta y el comentario de duma sobre el anterior para configurar my-insert-directory-program en gls y todo me funciona ahora en mac OSX – mcheema

7

Éstos son los pasos para Emacs en ejecución en Snow Leopard 10.6.8 utilizando coreutils instalados a través de macports:

NOTA: Mis macports la instalación es diferente de la genérica (/opt/...) - es decir, yo uso /macports como raíz. No es necesario modificar la configuración raíz, solo es una preferencia personal mía. Para instalaciones macport de vanilla o configuraciones alternativas, ajuste la ruta en consecuencia.

sudo /macports/bin/port install coreutils 

Esto va dentro de la .emacs o init.el:

;; sort directories first 

(setq insert-directory-program "/macports/bin/gls") 

(setq dired-listing-switches "-aBhl --group-directories-first") 

NOTA: El uso de un enlace simbólico para gls/ls se no recomienda porque rompe la funcionalidad con macports instalar y muy probablemente otras cosas también.


Instalación alternativa para los usuarios que desean un mayor control:

Descargar: coreutils-8.21.tar.xz de: http://ftp.gnu.org/gnu/coreutils/

Si usted no tiene una utilidad para descomprimir un archivo *.xz, puede utilizar una utilidad como TheUnarchiver3.9.1.

Aquí es una referencia rápida para hacer el coreutils - He establecido la ubicación de instalación a mi propia preferencia personal en lugar del predeterminado:

./configure \ 
--prefix=/Users/HOME/.0.data/.0.emacs/elpa 

make 

sudo make install 

insertar estos en su archivo .emacs o init.el - ajustar la ruta en consecuencia:

;; sort directories first 

(setq insert-directory-program "/Users/HOME/.0.data/.0.emacs/elpa/bin/ls") 

(setq dired-listing-switches "-aBhl --group-directories-first")