emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/dirtrack.el,v


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/dirtrack.el,v
Date: Mon, 29 Oct 2007 00:40:50 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/10/29 00:40:50

Index: dirtrack.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dirtrack.el,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- dirtrack.el 26 Jul 2007 05:26:21 -0000      1.22
+++ dirtrack.el 29 Oct 2007 00:40:50 -0000      1.23
@@ -57,18 +57,12 @@
 ;; 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.
+;; Determining this information may take some experimentation.  Using
+;; `dirtrack-debug-mode' may help; it causes the directory-tracking
+;; filter to log messages to the buffer `dirtrack-debug-buffer'.
 ;;
-;; 3) Add a hook to shell-mode to enable the directory tracking:
-;;
-;; (add-hook 'shell-mode-hook
-;;   (lambda () (add-hook 'comint-preoutput-filter-functions 'dirtrack nil t)))
-;;
-;; You may wish to turn ordinary shell tracking off by calling
-;; `shell-dirtrack-toggle' or setting `shell-dirtrackp'.
+;; 3) Activate `dirtrack-mode'.  You may wish to turn ordinary shell
+;; tracking off by calling `shell-dirtrack-mode'.
 ;;
 ;; Examples:
 ;;
@@ -147,7 +141,7 @@
   :type  'boolean)
 
 (defcustom dirtrack-debug-buffer "*Directory Tracking Log*"
-  "Buffer to write directory tracking debug information."
+  "Buffer in which to write directory tracking debug information."
   :group 'dirtrack
   :type  'string)
 
@@ -196,49 +190,49 @@
       (concat (match-string 1 dir) ":" (match-string 2 dir))
     dir))
 
-;; Copied from shell.el
-(defun dirtrack-toggle ()
-  "Enable or disable Dirtrack directory tracking in a shell buffer."
-  (interactive)
-  (if (setq dirtrackp (not dirtrackp))
+
+;;;###autoload
+(define-minor-mode dirtrack-mode
+  "Enable or disable Dirtrack directory tracking in a shell buffer.
+This provides an alternative to `shell-dirtrack-mode'."
+  nil nil nil
+  (if dirtrack-mode
       (add-hook 'comint-preoutput-filter-functions 'dirtrack nil t)
-    (remove-hook 'comint-preoutput-filter-functions 'dirtrack t))
-  (message "Directory tracking %s" (if dirtrackp "ON" "OFF")))
+    (remove-hook 'comint-preoutput-filter-functions 'dirtrack t)))
+
+(define-obsolete-function-alias 'dirtrack-toggle 'dirtrack-mode "23.1")
+(define-obsolete-variable-alias 'dirtrackp 'dirtrack-mode "23.1")
 
-(defun dirtrack-debug-toggle ()
+
+(define-minor-mode dirtrack-debug-mode
   "Enable or disable Dirtrack debugging."
-  (interactive)
-  (setq dirtrack-debug (not dirtrack-debug))
-  (message "Directory debugging %s" (if dirtrack-debug "ON" "OFF"))
-  (and dirtrack-debug
+  nil nil nil
+  (if dirtrack-debug-mode
        (display-buffer (get-buffer-create dirtrack-debug-buffer))))
 
+(define-obsolete-function-alias 'dirtrack-debug-toggle 'dirtrack-debug-mode
+  "23.1")
+(define-obsolete-variable-alias 'dirtrack-debug 'dirtrack-debug-mode "23.1")
+
+
 (defun dirtrack-debug-message (string)
-  (let ((buf (current-buffer))
-       (debug-buf (get-buffer-create dirtrack-debug-buffer))
-       )
-    (set-buffer debug-buf)
+  "Insert string at the end of `dirtrack-debug-buffer'."
+  (when dirtrack-debug-mode
+    (with-current-buffer (get-buffer-create dirtrack-debug-buffer)
     (goto-char (point-max))
-    (insert (concat string "\n"))
-    (set-buffer buf)
-  ))
+      (insert (concat string "\n")))))
 
 ;;;###autoload
 (defun dirtrack (input)
   "Determine the current directory by scanning the process output for a prompt.
 The prompt to look for is the first item in `dirtrack-list'.
 
-You can toggle directory tracking by using the function `dirtrack-toggle'.
+You can toggle directory tracking by using the function `dirtrack-mode'.
 
 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 (or (null dirtrackp)
-          ;; No output?
-          (eq (point) (point-min)))
-      nil
+function `dirtrack-debug-mode' to turn on debugging output."
+  (unless (or (null dirtrack-mode)
+              (eq (point) (point-min)))     ; no output?
     (let (prompt-path
          (current-dir default-directory)
          (dirtrack-regexp    (nth 0 dirtrack-list))
@@ -247,40 +241,31 @@
          (multi-line         (nth 2 dirtrack-list)))
       (save-excursion
         ;; No match
-        (if (null (string-match dirtrack-regexp input))
-            (and dirtrack-debug
+        (if (not (string-match dirtrack-regexp input))
                  (dirtrack-debug-message
-                  (format
-                   "Input `%s' failed to match `dirtrack-regexp'" input)))
+             (format "Input `%s' failed to match `dirtrack-regexp'" input))
           (setq prompt-path (match-string match-num input))
           ;; Empty string
           (if (not (> (length prompt-path) 0))
-              (and dirtrack-debug
-                   (dirtrack-debug-message "Match is empty string"))
+              (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
+                                       prompt-path)
+                  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)))
+             (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")))
+                    (string= current-dir (abbreviate-file-name prompt-path)))
+                (dirtrack-debug-message (format "Not changing directory"))
               ;; It's possible that Emacs will think the directory
               ;; won't exist (eg, rlogin buffers)
               (if (file-accessible-directory-p prompt-path)
                   ;; Change directory
                   (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)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]