changeset 15465:d2efb8b0d453

(rlogin): make comint-output-filter-functions local before adding hooks.
author Noah Friedman <friedman@splode.com>
date Thu, 20 Jun 1996 17:30:41 +0000
parents 230bc36941bf
children 5affe3230dfb
files lisp/rlogin.el
diffstat 1 files changed, 19 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/rlogin.el	Thu Jun 20 17:26:00 1996 +0000
+++ b/lisp/rlogin.el	Thu Jun 20 17:30:41 1996 +0000
@@ -23,7 +23,7 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
-;; $Id: rlogin.el,v 1.32 1996/05/08 00:52:30 friedman Exp rms $
+;; $Id: rlogin.el,v 1.33 1996/06/14 21:30:41 rms Exp friedman $
 
 ;;; Commentary:
 
@@ -187,7 +187,12 @@
       ;; comint-output-filter-functions is just like a hook, except that the
       ;; functions in that list are passed arguments.  add-hook serves well
       ;; enough for modifying it.
-      (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter)
+      ;; comint-output-filter-functions should already have a
+      ;; permanent-local property, at least in emacs 19.27 or later.
+      (if (fboundp 'make-local-hook)
+          (make-local-hook 'comint-output-filter-functions)
+        (make-local-variable 'comint-output-filter-functions))
+      (add-hook 'comint-output-filter-functions 'ftelnet-carriage-filter)
 
       (rlogin-mode)
 
@@ -196,17 +201,18 @@
       (make-local-variable 'rlogin-remote-user)
       (setq rlogin-remote-user user)
 
-      (cond
-       ((eq rlogin-directory-tracking-mode t)
-        ;; Do this here, rather than calling the tracking mode function, to
-        ;; avoid a gratuitous resync check; the default should be the
-        ;; user's home directory, be it local or remote.
-        (setq comint-file-name-prefix
-              (concat "/" rlogin-remote-user "@" rlogin-host ":"))
-        (cd-absolute comint-file-name-prefix))
-       ((null rlogin-directory-tracking-mode))
-       (t
-        (cd-absolute (concat comint-file-name-prefix "~/"))))))))
+      (condition-case ()
+          (cond ((eq rlogin-directory-tracking-mode t)
+                 ;; Do this here, rather than calling the tracking mode
+                 ;; function, to avoid a gratuitous resync check; the default
+                 ;; should be the user's home directory, be it local or remote.
+                 (setq comint-file-name-prefix
+                       (concat "/" rlogin-remote-user "@" rlogin-host ":"))
+                 (cd-absolute comint-file-name-prefix))
+                ((null rlogin-directory-tracking-mode))
+                (t
+                 (cd-absolute (concat comint-file-name-prefix "~/"))))
+        (error nil))))))
 
 (defun rlogin-mode ()
   "Set major-mode for rlogin sessions.