emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/comint.el


From: Richard M . Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/comint.el
Date: Sun, 17 Oct 2004 03:06:25 -0400

Index: emacs/lisp/comint.el
diff -c emacs/lisp/comint.el:1.301 emacs/lisp/comint.el:1.302
*** emacs/lisp/comint.el:1.301  Sun Oct 10 05:06:47 2004
--- emacs/lisp/comint.el        Sun Oct 17 06:51:10 2004
***************
*** 372,378 ****
    "Special hook run before input is sent to the process.
  These functions get one argument, a string containing the text to send.")
  
! (defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom)
    "Functions to call after output is inserted into the buffer.
  One possible function is `comint-postoutput-scroll-to-bottom'.
  These functions get one argument, a string containing the text as originally
--- 372,378 ----
    "Special hook run before input is sent to the process.
  These functions get one argument, a string containing the text to send.")
  
! (defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom 
comint-watch-for-password-prompt)
    "Functions to call after output is inserted into the buffer.
  One possible function is `comint-postoutput-scroll-to-bottom'.
  These functions get one argument, a string containing the text as originally
***************
*** 1901,1965 ****
  
  ;; These three functions are for entering text you don't want echoed or
  ;; saved -- typically passwords to ftp, telnet, or somesuch.
! ;; Just enter m-x send-invisible and type in your line, or add
! ;; `comint-watch-for-password-prompt' to `comint-output-filter-functions'.
! 
! (defun comint-read-noecho (prompt &optional stars)
!   "Read a single line of text from user without echoing, and return it.
! Prompt with argument PROMPT, a string.  Optional argument STARS causes
! input to be echoed with '*' characters on the prompt line.  Input ends with
! RET, LFD, or ESC.  DEL or C-h rubs out.  C-u kills line.  C-g aborts (if
! `inhibit-quit' is set because e.g. this function was called from a process
! filter and C-g is pressed, this function returns nil rather than a string).
! 
! Note that the keystrokes comprising the text can still be recovered
! \(temporarily) with \\[view-lossage].  Some people find this worrisome (see,
! however, `clear-this-command-keys').
! Once the caller uses the password, it can erase the password
! by doing (clear-string STRING)."
!   (let ((ans "")
!       (newans nil)
!       (c 0)
!       (echo-keystrokes 0)
!       (cursor-in-echo-area t)
!       (message-log-max nil)
!       (done nil))
!     (while (not done)
!       (if stars
!         (message "%s%s" prompt (make-string (length ans) ?*))
!       (message "%s" prompt))
!       ;; Use this instead of `read-char' to avoid "Non-character input-event".
!       (setq c (read-char-exclusive))
!       (cond ((= c ?\C-g)
!            ;; This function may get called from a process filter, where
!            ;; inhibit-quit is set.  In later versions of emacs read-char
!            ;; may clear quit-flag itself and return C-g.  That would make
!            ;; it impossible to quit this loop in a simple way, so
!            ;; re-enable it here (for backward-compatibility the check for
!            ;; quit-flag below would still be necessary, so this seems
!            ;; like the simplest way to do things).
!            (setq quit-flag t
!                  done t))
!           ((or (= c ?\r) (= c ?\n) (= c ?\e))
!            (setq done t))
!           ((= c ?\C-u)
!            (clear-string ans)
!            (setq ans ""))
!           ((and (/= c ?\b) (/= c ?\177))
!            (setq newans (concat ans (char-to-string c)))
!            (clear-string ans)
!            (setq ans newans))
!           ((> (length ans) 0)
!            (aset ans (1- (length ans)) 0)
!            (setq ans (substring ans 0 -1)))))
!     (if quit-flag
!       ;; Emulate a true quit, except that we have to return a value.
!       (prog1
!           (setq quit-flag nil)
!         (message "Quit")
!         (beep t))
!       (message "")
!       ans)))
  
  (defun send-invisible (&optional prompt)
    "Read a string without echoing.
--- 1901,1907 ----
  
  ;; These three functions are for entering text you don't want echoed or
  ;; saved -- typically passwords to ftp, telnet, or somesuch.
! ;; Just enter m-x send-invisible and type in your line.
  
  (defun send-invisible (&optional prompt)
    "Read a string without echoing.
***************
*** 1970,1976 ****
    (interactive "P")                   ; Defeat snooping via C-x ESC ESC
    (let ((proc (get-buffer-process (current-buffer))))
      (if proc
!       (let ((str (comint-read-noecho (or prompt "Non-echoed text: ") t)))
          (if (stringp str)
              (progn
                (comint-snapshot-last-prompt)
--- 1912,1918 ----
    (interactive "P")                   ; Defeat snooping via C-x ESC ESC
    (let ((proc (get-buffer-process (current-buffer))))
      (if proc
!       (let ((str (read-passwd (or prompt "Non-echoed text: "))))
          (if (stringp str)
              (progn
                (comint-snapshot-last-prompt)




reply via email to

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