]> code.delx.au - gnu-emacs/blobdiff - lisp/term.el
First commit to scratch/follow. Make Isearch work with Follow Mode, etc.
[gnu-emacs] / lisp / term.el
index 43138fa6dd8b83ef14cf10f1e06b5c3bfaffe346..41577c90301a5e4f6bbb9b6ae93cb9e0490c06a3 100644 (file)
 ;;             ----------------------------------------
 ;;
 ;;  Notice: for directory/host/user tracking you need to have something
-;; like this in your shell startup script ( this is for tcsh but should
-;; be quite easy to port to other shells )
+;; like this in your shell startup script (this is for a POSIXish shell
+;; like Bash but should be quite easy to port to other shells)
 ;;
 ;;             ----------------------------------------
 ;;
-;;
-;;      set os = `uname`
-;;      set host = `hostname`
-;;      set date = `date`
+;;  # Set HOSTNAME if not already set.
+;;     : ${HOSTNAME=$(uname -n)}
 ;;
 ;;  # su does not change this but I'd like it to
 ;;
-;;      set user = `whoami`
+;;     USER=$(whoami)
 ;;
 ;;  # ...
 ;;
-;;      if ( eterm =~ $TERM ) then
-;;
-;;             echo --------------------------------------------------------------
-;;             echo Hello $user
-;;             echo Today is $date
-;;             echo We are on $host running $os under Emacs term mode
-;;             echo --------------------------------------------------------------
-;;
-;;             setenv EDITOR emacsclient
-;;
-;;   # Notice: $host and $user have been set before to 'hostname' and 'whoami'
-;;   # this is necessary because, f.e., certain versions of 'su' do not change
-;;   # $user, YMMV: if you don't want to fiddle with them define a couple
-;;   # of new variables and use these instead.
-;;   # NOTICE that there is a space between "AnSiT?" and $whatever NOTICE
-;;
-;;   # These are because we want the real cwd in the messages, not the login
-;;   # time one !
-;;
-;;             set cwd_hack='$cwd'
-;;             set host_hack='$host'
-;;             set user_hack='$user'
+;;     case $TERM in
+;;         eterm*)
 ;;
-;;   # Notice that the ^[ character is an ESC, not two chars.  You can
-;;   # get it in various ways, for example by typing
-;;   # echo -e '\033' > escape.file
-;;   # or by using your favorite editor
+;;             printf '%s\n' \
+;;              -------------------------------------------------------------- \
+;;              "Hello $user" \
+;;              "Today is $(date)" \
+;;              "We are on $HOSTNAME running $(uname) under Emacs term mode" \
+;;              --------------------------------------------------------------
 ;;
-;;             foreach temp (cd pushd)
-;;                     alias $temp "$temp \!* ; echo '\eAnSiTc' $cwd_hack"
-;;             end
-;;             alias popd 'popd ;echo "\eAnSiTc" $cwd'
+;;             export EDITOR=emacsclient
 ;;
-;;   # Every command that can modify the user/host/directory should be aliased
-;;   # as follows for the tracking mechanism to work.
+;;             # The \033 stands for ESC.
+;;             # There is a space between "AnSiT?" and $whatever.
 ;;
-;;             foreach temp ( rlogin telnet rsh sh ksh csh tcsh zsh bash tcl su )
-;;                     alias $temp "$temp \!* ; echo '\eAnSiTh' $host_hack ; \
-;;                                     echo '\eAnSiTu' $user_hack ;echo '\eAnSiTc' $cwd_hack"
-;;             end
+;;             cd()    { command cd    "$@"; printf '\033AnSiTc %s\n' "$PWD"; }
+;;             pushd() { command pushd "$@"; printf '\033AnSiTc %s\n' "$PWD"; }
+;;             popd()  { command popd  "$@"; printf '\033AnSiTc %s\n' "$PWD"; }
 ;;
-;;   # Start up & use color ls
+;;             printf '\033AnSiTc %s\n' "$PWD"
+;;             printf '\033AnSiTh %s\n' "$HOSTNAME"
+;;             printf '\033AnSiTu %s\n' "$USER"
 ;;
-;;             echo "\eAnSiTh" $host
-;;             echo "\eAnSiTu" $user
-;;             echo "\eAnSiTc" $cwd
-;;
-;;   # some housekeeping
-;;
-;;             unset cwd_hack
-;;             unset host_hack
-;;             unset user_hack
-;;             unset temp
-;;
-;;             eval `/bin/dircolors /home/marco/.emacs_dircolors`
-;;    endif
+;;             eval $(dircolors $HOME/.emacs_dircolors)
+;;     esac
 ;;
 ;;  # ...
 ;;
-;;  # Let's not clutter user space
-;;
-;;      unset os
-;;      unset date
-;;
 ;;
 
 ;;; Original Commentary:
@@ -1505,11 +1467,6 @@ Using \"emacs\" loses, because bash disables editing if $TERM == emacs.")
           (format "TERMINFO=%s" data-directory)
           (format term-termcap-format "TERMCAP="
                   term-term-name term-height term-width)
-          ;; We are going to get rid of the binding for EMACS,
-          ;; probably in Emacs 23, because it breaks
-          ;; `./configure' of some packages that expect it to
-          ;; say where to find EMACS.
-          (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
           (format "INSIDE_EMACS=%s,term:%s" emacs-version term-protocol-version)
           (format "LINES=%d" term-height)
           (format "COLUMNS=%d" term-width))
@@ -1654,7 +1611,7 @@ See also `term-read-input-ring'."
       (let ((ch (read-event)))
        (if (eq ch ?\s)
            (set-window-configuration conf)
-         (setq unread-command-events (list ch)))))))
+         (push ch unread-command-events))))))
 
 
 (defun term-regexp-arg (prompt)
@@ -1924,7 +1881,7 @@ A useful command to bind to SPC.  See `term-replace-by-expanded-history'."
 (defun term-within-quotes (beg end)
   "Return t if the number of quotes between BEG and END is odd.
 Quotes are single and double."
-  (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
+  (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)'" beg end))
        (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
     (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
 
@@ -4133,7 +4090,9 @@ Typing SPC flushes the help buffer."
            (set-window-configuration conf))
        (if (eq first ?\s)
            (set-window-configuration conf)
-         (setq unread-command-events (listify-key-sequence key)))))))
+         (setq unread-command-events
+                (nconc (listify-key-sequence key)
+                       unread-command-events)))))))
 
 ;; I need a make-term that doesn't surround with *s -mm
 (defun term-ansi-make-term (name program &optional startfile &rest switches)