;; ----------------------------------------
;;
;; 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:
(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))
(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)
(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))))
(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)