Function: ido-set-current-directory

ido-set-current-directory is a byte-compiled function defined in ido.el.gz.

Signature

(ido-set-current-directory DIR &optional SUBDIR NO-MERGE)

Source Code

;; Defined in /usr/src/emacs/lisp/ido.el.gz
(defun ido-set-current-directory (dir &optional subdir no-merge)
  ;; Set ido's current directory to DIR or DIR/SUBDIR
  (unless (and ido-enable-tramp-completion
	       (string-match "\\`/[^/]*@\\'" dir))
    (setq dir (ido-final-slash dir t)))
  (setq ido-use-merged-list nil
	ido-try-merged-list (not no-merge))
  (when subdir
    (setq dir (concat dir subdir))
    (unless (and ido-enable-tramp-completion
		 (string-match "\\`/[^/]*@\\'" dir))
      (setq dir (ido-final-slash dir t))))
  (and ido-completion-buffer
       (get-buffer ido-completion-buffer)
       (kill-buffer ido-completion-buffer))
  (cond
   ((equal dir ido-current-directory)
    nil)
   ((ido-is-unc-root dir)
    (ido-trace "unc" dir)
    (setq ido-current-directory dir)
    (setq ido-directory-nonreadable nil)
    (setq ido-directory-too-big nil)
    t)
   (t
    (ido-trace "cd" dir)
    (setq ido-current-directory dir)
    (and ido-completion-buffer
	 (get-buffer ido-completion-buffer)
	 (kill-buffer ido-completion-buffer))
    (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir))
    (setq ido-directory-too-big (and (not ido-directory-nonreadable)
				     (ido-directory-too-big-p dir)))
    t)))