[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/dirtrack.el
From: |
Juanma Barranquero |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/dirtrack.el |
Date: |
Fri, 31 Jan 2003 10:15:15 -0500 |
Index: emacs/lisp/dirtrack.el
diff -c emacs/lisp/dirtrack.el:1.11 emacs/lisp/dirtrack.el:1.12
*** emacs/lisp/dirtrack.el:1.11 Wed Feb 7 18:38:46 2001
--- emacs/lisp/dirtrack.el Fri Jan 31 10:15:15 2003
***************
*** 5,11 ****
;; Author: Peter Breton <address@hidden>
;; Created: Sun Nov 17 1996
;; Keywords: processes
! ;; Time-stamp: <1999-02-21 01:27:24 pbreton>
;; This file is part of GNU Emacs.
--- 5,11 ----
;; Author: Peter Breton <address@hidden>
;; Created: Sun Nov 17 1996
;; Keywords: processes
! ;; Time-stamp: <2003-01-31 16:15:05 jbarranquero>
;; This file is part of GNU Emacs.
***************
*** 42,49 ****
;; 1) Set your shell's prompt to contain the current working directory.
;; You may need to consult your shell's documentation to find out how to
;; do this.
! ;;
! ;; Note that directory tracking is done by matching regular expressions,
;; therefore it is *VERY IMPORTANT* for your prompt to be easily
;; distinguishable from other output. If your prompt regexp is too general,
;; you will see error messages from the dirtrack filter as it attempts to cd
--- 42,49 ----
;; 1) Set your shell's prompt to contain the current working directory.
;; You may need to consult your shell's documentation to find out how to
;; do this.
! ;;
! ;; Note that directory tracking is done by matching regular expressions,
;; therefore it is *VERY IMPORTANT* for your prompt to be easily
;; distinguishable from other output. If your prompt regexp is too general,
;; you will see error messages from the dirtrack filter as it attempts to cd
***************
*** 52,67 ****
;; 2) Set the variable `dirtrack-list' to an appropriate value. This
;; should be a list of two elements: the first is a regular expression
;; which matches your prompt up to and including the pathname part.
! ;; The second is a number which tells which regular expression group to
;; match to extract only the pathname. If you use a multi-line prompt,
;; add 't' as a third element. Note that some of the functions in
;; 'comint.el' assume a single-line prompt (eg, comint-bol).
! ;;
;; Determining this information may take some experimentation. Setting
;; the variable `dirtrack-debug' may help; it causes the directory-tracking
;; filter to log messages to the buffer `dirtrack-debug-buffer'. You can
easily
;; toggle this setting with the `dirtrack-debug-toggle' function.
! ;;
;; 3) Add a hook to shell-mode to enable the directory tracking:
;;
;; (add-hook 'shell-mode-hook
--- 52,67 ----
;; 2) Set the variable `dirtrack-list' to an appropriate value. This
;; should be a list of two elements: the first is a regular expression
;; which matches your prompt up to and including the pathname part.
! ;; The second is a number which tells which regular expression group to
;; match to extract only the pathname. If you use a multi-line prompt,
;; add 't' as a third element. Note that some of the functions in
;; 'comint.el' assume a single-line prompt (eg, comint-bol).
! ;;
;; Determining this information may take some experimentation. Setting
;; the variable `dirtrack-debug' may help; it causes the directory-tracking
;; filter to log messages to the buffer `dirtrack-debug-buffer'. You can
easily
;; toggle this setting with the `dirtrack-debug-toggle' function.
! ;;
;; 3) Add a hook to shell-mode to enable the directory tracking:
;;
;; (add-hook 'shell-mode-hook
***************
*** 83,108 ****
;; 'dirtrack-list' is set to (list "^\\([/~].*\\)address@hidden *" 1 t)
;;
;; I'd appreciate other examples from people who use this package.
! ;;
;; Here's one from Stephen Eglen:
;;
;; Running under tcsh:
;; (setq-default dirtrack-list '("^%E \\([^ ]+\\)" 1))
! ;;
;; It might be worth mentioning in your file that emacs sources start up
;; files of the form: ~/.emacs_<SHELL> where <SHELL> is the name of the
;; shell. So for example, I have the following in ~/.emacs_tcsh:
! ;;
;; set prompt = "%%E %~ %h% "
! ;;
;; This produces a prompt of the form:
! ;; %E /var/spool 10%
! ;;
;; This saves me from having to use the %E prefix in other non-emacs
;; shells.
;;
;; A final note:
! ;;
;; I run LOTS of shell buffers through Emacs, sometimes as different users
;; (eg, when logged in as myself, I'll run a root shell in the same Emacs).
;; If you do this, and the shell prompt contains a ~, Emacs will interpret
--- 83,108 ----
;; 'dirtrack-list' is set to (list "^\\([/~].*\\)address@hidden *" 1 t)
;;
;; I'd appreciate other examples from people who use this package.
! ;;
;; Here's one from Stephen Eglen:
;;
;; Running under tcsh:
;; (setq-default dirtrack-list '("^%E \\([^ ]+\\)" 1))
! ;;
;; It might be worth mentioning in your file that emacs sources start up
;; files of the form: ~/.emacs_<SHELL> where <SHELL> is the name of the
;; shell. So for example, I have the following in ~/.emacs_tcsh:
! ;;
;; set prompt = "%%E %~ %h% "
! ;;
;; This produces a prompt of the form:
! ;; %E /var/spool 10%
! ;;
;; This saves me from having to use the %E prefix in other non-emacs
;; shells.
;;
;; A final note:
! ;;
;; I run LOTS of shell buffers through Emacs, sometimes as different users
;; (eg, when logged in as myself, I'll run a root shell in the same Emacs).
;; If you do this, and the shell prompt contains a ~, Emacs will interpret
***************
*** 134,144 ****
(defcustom dirtrack-list (list "^emacs \\([a-zA-Z]:.*\\)>" 1)
"*List for directory tracking.
First item is a regexp that describes where to find the path in a prompt.
! Second is a number, the regexp group to match. Optional third item is
! whether the prompt is multi-line. If nil or omitted, prompt is assumed to
be on a single line."
:group 'dirtrack
! :type '(sexp (regexp :tag "Prompt Expression")
(integer :tag "Regexp Group")
(boolean :tag "Multiline Prompt")
)
--- 134,144 ----
(defcustom dirtrack-list (list "^emacs \\([a-zA-Z]:.*\\)>" 1)
"*List for directory tracking.
First item is a regexp that describes where to find the path in a prompt.
! Second is a number, the regexp group to match. Optional third item is
! whether the prompt is multi-line. If nil or omitted, prompt is assumed to
be on a single line."
:group 'dirtrack
! :type '(sexp (regexp :tag "Prompt Expression")
(integer :tag "Regexp Group")
(boolean :tag "Multiline Prompt")
)
***************
*** 166,173 ****
(make-variable-buffer-local 'dirtrackp)
! (defcustom dirtrack-directory-function
! (if (memq system-type (list 'ms-dos 'windows-nt))
'dirtrack-windows-directory-function
'dirtrack-default-directory-function)
"*Function to apply to the prompt directory for comparison purposes."
--- 166,173 ----
(make-variable-buffer-local 'dirtrackp)
! (defcustom dirtrack-directory-function
! (if (memq system-type (list 'ms-dos 'windows-nt 'cygwin))
'dirtrack-windows-directory-function
'dirtrack-default-directory-function)
"*Function to apply to the prompt directory for comparison purposes."
***************
*** 175,182 ****
:type 'function
)
! (defcustom dirtrack-canonicalize-function
! (if (memq system-type (list 'ms-dos 'windows-nt))
'downcase 'identity)
"*Function to apply to the default directory for comparison purposes."
:group 'dirtrack
--- 175,182 ----
:type 'function
)
! (defcustom dirtrack-canonicalize-function
! (if (memq system-type (list 'ms-dos 'windows-nt 'cygwin))
'downcase 'identity)
"*Function to apply to the default directory for comparison purposes."
:group 'dirtrack
***************
*** 204,210 ****
(defun dirtrack-windows-directory-function (dir)
"Return a canonical directory for comparison purposes.
! Such a directory is all lowercase, has forward-slashes as delimiters,
and ends with a forward slash."
(let ((directory dir))
(setq directory (downcase (dirtrack-replace-slash directory t)))
--- 204,210 ----
(defun dirtrack-windows-directory-function (dir)
"Return a canonical directory for comparison purposes.
! Such a directory is all lowercase, has forward-slashes as delimiters,
and ends with a forward slash."
(let ((directory dir))
(setq directory (downcase (dirtrack-replace-slash directory t)))
***************
*** 217,229 ****
(defun dirtrack-replace-slash (string &optional opposite)
"Replace forward slashes with backwards ones.
! If additional argument is non-nil, replace backwards slashes with
forward ones."
! (let ((orig (if opposite
! dirtrack-backward-slash
dirtrack-forward-slash))
! (replace (if opposite
! dirtrack-forward-slash
dirtrack-backward-slash))
(newstring string)
)
--- 217,229 ----
(defun dirtrack-replace-slash (string &optional opposite)
"Replace forward slashes with backwards ones.
! If additional argument is non-nil, replace backwards slashes with
forward ones."
! (let ((orig (if opposite
! dirtrack-backward-slash
dirtrack-forward-slash))
! (replace (if opposite
! dirtrack-forward-slash
dirtrack-backward-slash))
(newstring string)
)
***************
*** 266,272 ****
If directory tracking does not seem to be working, you can use the
function `dirtrack-debug-toggle' to turn on debugging output.
! You can enable directory tracking by adding this function to
`comint-output-filter-functions'.
"
(if (null dirtrackp)
--- 266,272 ----
If directory tracking does not seem to be working, you can use the
function `dirtrack-debug-toggle' to turn on debugging output.
! You can enable directory tracking by adding this function to
`comint-output-filter-functions'.
"
(if (null dirtrackp)
***************
*** 286,318 ****
;; No match
(if (null matched)
(and dirtrack-debug
! (dirtrack-debug-message
! (format
! "Input `%s' failed to match regexp: %s"
input dirtrack-regexp)))
! (setq prompt-path
(substring input
(match-beginning match-num) (match-end match-num)))
;; Empty string
(if (not (> (length prompt-path) 0))
(and dirtrack-debug
! (dirtrack-debug-message "Match is empty string"))
;; Transform prompts into canonical forms
(setq prompt-path (funcall dirtrack-directory-function
prompt-path))
(setq current-dir (funcall dirtrack-canonicalize-function
current-dir))
(and dirtrack-debug
! (dirtrack-debug-message
(format
"Prompt is %s\nCurrent directory is %s"
! prompt-path current-dir)))
;; Compare them
(if (or (string= current-dir prompt-path)
! (string= current-dir
(abbreviate-file-name prompt-path)))
(and dirtrack-debug
! (dirtrack-debug-message
(format "Not changing directory")))
;; It's possible that Emacs will think the directory
;; won't exist (eg, rlogin buffers)
--- 286,318 ----
;; No match
(if (null matched)
(and dirtrack-debug
! (dirtrack-debug-message
! (format
! "Input `%s' failed to match regexp: %s"
input dirtrack-regexp)))
! (setq prompt-path
(substring input
(match-beginning match-num) (match-end match-num)))
;; Empty string
(if (not (> (length prompt-path) 0))
(and dirtrack-debug
! (dirtrack-debug-message "Match is empty string"))
;; Transform prompts into canonical forms
(setq prompt-path (funcall dirtrack-directory-function
prompt-path))
(setq current-dir (funcall dirtrack-canonicalize-function
current-dir))
(and dirtrack-debug
! (dirtrack-debug-message
(format
"Prompt is %s\nCurrent directory is %s"
! prompt-path current-dir)))
;; Compare them
(if (or (string= current-dir prompt-path)
! (string= current-dir
(abbreviate-file-name prompt-path)))
(and dirtrack-debug
! (dirtrack-debug-message
(format "Not changing directory")))
;; It's possible that Emacs will think the directory
;; won't exist (eg, rlogin buffers)
***************
*** 321,327 ****
(and (shell-process-cd prompt-path)
(run-hooks 'dirtrack-directory-change-hook)
dirtrack-debug
! (dirtrack-debug-message
(format "Changing directory to %s" prompt-path)))
(error "Directory %s does not exist" prompt-path)))
)))))
--- 321,327 ----
(and (shell-process-cd prompt-path)
(run-hooks 'dirtrack-directory-change-hook)
dirtrack-debug
! (dirtrack-debug-message
(format "Changing directory to %s" prompt-path)))
(error "Directory %s does not exist" prompt-path)))
)))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/dirtrack.el,
Juanma Barranquero <=