# HG changeset patch # User Eli Zaretskii # Date 1219953885 0 # Node ID c8ff5ed1859f5ee051c97b52a99c1b9a19da2246 # Parent 670f2e2d74a26735461c71398ff35455f51de221 (msdos-previous-message): New variable. (msdos-show-help): New function. (msdos-initialize-window-system): Set show-help-function to msdos-show-help. diff -r 670f2e2d74a2 -r c8ff5ed1859f lisp/term/pc-win.el --- a/lisp/term/pc-win.el Thu Aug 28 19:35:47 2008 +0000 +++ b/lisp/term/pc-win.el Thu Aug 28 20:04:45 2008 +0000 @@ -255,6 +255,31 @@ (fset 'set-cursor-color 'ignore) ; Hardware determined by char under. (fset 'set-border-color 'ignore) ; Not useful. +(defvar msdos-previous-message nil + "The content of the echo area before help echo was displayed.") + +(defun msdos-show-help (help) + "Function installed as `show-help-function' on MSDOS frames." + (when (and (not (window-minibuffer-p)) ;Don't overwrite minibuffer contents. + ;; Don't know how to reproduce it in Elisp: + ;; Don't overwrite a keystroke echo. + ;; (NILP (echo_message_buffer) || ok_to_overwrite_keystroke_echo) + (not cursor-in-echo-area)) ;Don't overwrite a prompt. + (cond + ((stringp help) + (unless msdos-previous-message + (setq msdos-previous-message (current-message))) + (let ((message-truncate-lines t) + (message-log-max nil)) + (message "%s" (replace-regexp-in-string "\n" ", " help)))) + ((stringp msdos-previous-message) + (let ((message-log-max nil)) + (message "%s" msdos-previous-message) + (setq msdos-previous-message nil))) + (t + (message nil))))) + + ;; Initialization. ;; --------------------------------------------------------------------------- ;; This function is run, by faces.el:tty-create-frame-with-faces, only @@ -297,6 +322,8 @@ (msdos-face-setup) ;; Set up the initial frame. (msdos-setup-initial-frame) + ;; Help echo is displayed in the echo area. + (setq show-help-function 'msdos-show-help) ;; We want to delay the codepage-related setup until after user's ;; .emacs is processed, because people might define their ;; `dos-codepage-setup-hook' there.