anthony@cs.UAlberta.CA (Anthony Mutiso) (01/29/91)
Why doe the follow elisp code fail to work correct. ========= (defun my-redisplay-process-output-filter (proc str) (if (eq (current-buffer) (process-buffer proc)) (progn (goto-char (point-max)) (insert str)) (save-excursion (set-buffer (process-buffer proc)) (goto-char (point-max)) (insert str) (set-mark (point-max)) (save-window-excursion (select-window (get-buffer-window (process-buffer proc))) (if (not (pos-visible-in-window-p (point))) (recenter -1))))) (set-marker (process-mark proc) (point-max) (process-buffer proc)) str) ========= I do a (set-process-filter (get-buffer-process "*cmushell*") (function my-redisplay-process-output-filter)) to set this function to be a process filter for a shell process buffer. What I would like the function to do is cause all output to the buffer to be displayed even if another buffer is the current buffer. (For example when using tex-mode to tex a buffer, I would like to see the output appear as it arrives, so I do not have to do a CTRL-l to re-center the buffer (it happens auto-magically). The above function works, (well sort of), once, then it fails. Any attempt use the buffer, cause weird stuff to be sent to the buffer. In a shell buffer try the following (after setting the process-filter):- %> sleep 2; date<cr> Then switch to another window and watch. This should go fine the first time. Switch back to the shell window and try just a <cr>. The shell will hang for a while. You may have to do a keyboard-quit to break it and all this weird output should come screaming by. The output if based on what is previously in the buffer. Help!!! Anyone. Related Question: Does anyone have an elisp function that does what I am trying to implement? Namley scroll shell output as it arrives! Thanks Anthony -- Anthony Mutiso (403-492-2821) anthony@cs.ualberta.ca Department of Computing Science. anthony@alberta.UUCP University of Alberta anthony%alberta@ualtamts.bitnet Edmonton, Alberta. CANADA toni@ualtamts.bitnet