(define-key map [down] 'term-send-down)
(define-key map [right] 'term-send-right)
(define-key map [left] 'term-send-left)
+ (define-key map [C-up] 'term-send-ctrl-up)
+ (define-key map [C-down] 'term-send-ctrl-down)
+ (define-key map [C-right] 'term-send-ctrl-right)
+ (define-key map [C-left] 'term-send-ctrl-left)
(define-key map [delete] 'term-send-del)
(define-key map [deletechar] 'term-send-del)
(define-key map [backspace] 'term-send-backspace)
(term-set-escape-char (or term-escape-char ?\C-c))
-(defvar overflow-newline-into-fringe)
-
-(defun term-window-width ()
- (if (and (not (featurep 'xemacs))
- (display-graphic-p)
- overflow-newline-into-fringe
- ;; Subtract 1 from the width when any fringe has zero width,
- ;; not just the right fringe. Bug#18601.
- (/= (frame-parameter nil 'left-fringe) 0)
- (/= (frame-parameter nil 'right-fringe) 0))
- (window-body-width)
- (1- (window-body-width))))
-
\f
(put 'term-mode 'mode-class 'special)
(setq buffer-display-table term-display-table)
(set (make-local-variable 'term-home-marker) (copy-marker 0))
(set (make-local-variable 'term-height) (1- (window-height)))
- (set (make-local-variable 'term-width) (term-window-width))
+ (set (make-local-variable 'term-width) (window-max-chars-per-line))
(set (make-local-variable 'term-last-input-start) (make-marker))
(set (make-local-variable 'term-last-input-end) (make-marker))
(set (make-local-variable 'term-last-input-match) "")
(defun term-send-down () (interactive) (term-send-raw-string "\eOB"))
(defun term-send-right () (interactive) (term-send-raw-string "\eOC"))
(defun term-send-left () (interactive) (term-send-raw-string "\eOD"))
+(defun term-send-ctrl-up () (interactive) (term-send-raw-string "\e[1;5A"))
+(defun term-send-ctrl-down () (interactive) (term-send-raw-string "\e[1;5B"))
+(defun term-send-ctrl-right () (interactive) (term-send-raw-string "\e[1;5C"))
+(defun term-send-ctrl-left () (interactive) (term-send-raw-string "\e[1;5D"))
(defun term-send-home () (interactive) (term-send-raw-string "\e[1~"))
(defun term-send-insert() (interactive) (term-send-raw-string "\e[2~"))
(defun term-send-end () (interactive) (term-send-raw-string "\e[4~"))
(format "TERMINFO=%s" data-directory)
(format term-termcap-format "TERMCAP="
term-term-name term-height term-width)
+
+ ;; This is for backwards compatibility with Bash 4.3 and earlier.
+ ;; Remove this hack once Bash 4.4-or-later is common, 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))
;; \E[D - cursor left (terminfo: cub)
((eq char ?D)
(term-move-columns (- (max 1 term-terminal-parameter))))
+ ;; \E[G - cursor motion to absolute column (terminfo: hpa)
+ ((eq char ?G)
+ (term-move-columns (- (max 0 (min term-width term-terminal-parameter))
+ (term-current-column))))
;; \E[J - clear to end of screen (terminfo: ed, clear)
((eq char ?J)
(term-erase-in-display term-terminal-parameter))