X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/48395495d6f6602f666c11d0b38f6600b629ccfc..2c56fc2a3f106a1286ad793eed9bfaafd09a7411:/lisp/term.el diff --git a/lisp/term.el b/lisp/term.el index 43138fa6dd..41577c9030 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -245,86 +245,48 @@ ;; ---------------------------------------- ;; ;; 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 'AnSiTc' $cwd_hack" -;; end -;; alias popd 'popd ;echo "AnSiTc" $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 'AnSiTh' $host_hack ; \ -;; echo 'AnSiTu' $user_hack ;echo 'AnSiTc' $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 "AnSiTh" $host -;; echo "AnSiTu" $user -;; echo "AnSiTc" $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)