-;;; em-dirs.el --- directory navigation commands
+;;; em-dirs.el --- directory navigation commands -*- lexical-binding:t -*-
-;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2015 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@gnu.org>
(require 'esh-opt)
;;;###autoload
-(eshell-defgroup eshell-dirs nil
+(progn
+(defgroup eshell-dirs nil
"Directory navigation involves changing directories, examining the
current directory, maintaining a directory stack, and also keeping
track of a history of the last directory locations the user was in.
Emacs does provide standard Lisp definitions of `pwd' and `cd', but
they lack somewhat in feel from the typical shell equivalents."
:tag "Directory navigation"
- :group 'eshell-module)
+ :group 'eshell-module))
;;; User Variables:
-(defcustom eshell-dirs-load-hook '(eshell-dirs-initialize)
+(defcustom eshell-dirs-load-hook nil
"A hook that gets run when `eshell-dirs' is loaded."
+ :version "24.1" ; removed eshell-dirs-initialize
:type 'hook
:group 'eshell-dirs)
directories gets pushed, and its size is unlimited.
`eshell-last-dir-ring' is meant for users who don't use `pushd'
-explicity very much, but every once in a while would like to return to
+explicitly very much, but every once in a while would like to return to
a previously visited directory without having to type in the whole
thing again."
:type 'integer
(when eshell-cd-on-directory
(make-local-variable 'eshell-interpreter-alist)
(setq eshell-interpreter-alist
- (cons (cons 'eshell-lone-directory-p
+ (cons (cons #'(lambda (file args)
+ (eshell-lone-directory-p file))
'eshell-dirs-substitute-cd)
eshell-interpreter-alist)))
(defun eshell-save-some-last-dir ()
"Save the list-dir-ring for any open Eshell buffers."
- (eshell-for buf (buffer-list)
+ (dolist (buf (buffer-list))
(if (buffer-live-p buf)
(with-current-buffer buf
(if (and eshell-mode
eshell-user-names)))))))
(defun eshell/pwd (&rest args)
- "Change output from `pwd` to be cleaner."
+ "Change output from ‘pwd’ to be cleaner."
(let* ((path default-directory)
(len (length path)))
(if (and (> len 1)
index (1+ index)))))
oldpath))
-(defvar dired-directory)
-
(defun eshell/cd (&rest args) ; all but first ignored
"Alias to extend the behavior of `cd'."
(setq args (eshell-flatten-list args))
(path
(setq path (eshell-expand-multiple-dots path))))
(unless handled
- (setq dired-directory (or path "~"))
- (let ((curdir (eshell/pwd)))
- (unless (equal curdir dired-directory)
+ (let ((curdir (eshell/pwd))
+ (newdir (or path "~")))
+ (unless (equal curdir newdir)
(eshell-add-to-dir-ring curdir))
- (let ((result (cd dired-directory)))
+ (let ((result (cd newdir)))
(and eshell-cd-shows-directory
(eshell-printn result)))
(run-hooks 'eshell-directory-change-hook)