Mercurial > emacs
view lisp/auto-show.el @ 17283:fcb47395bde7
Added a lot of new faces, they all start with
term- and follow a simple lexicographical convention. Note that
each change is commented: just search for -mm in the source.
(term-char-mode): Added all the "grey-keys" to term-raw-map.
(term-send-up): Similar, decided to go for the more xterm-like
\eOA bindings in place of the previous \e[A.
(term-buffer-maximum-size): New variable.
(term-mode): Added some make-local: now term-buffer-maximum-size,
ange-ftp-default-user/password/an-pwd.
(term-emulate-terminal): Quite some modifications to allow
multiple outstanding ANSI style commands: notably all the
-previous-parameter stuff. Call term-handle-ansi-terminal-messages.
(term-emulate-terminal): Added simple trimming function: at the
end we simply check if the buffer is > term-buffer-maximum-size
and cut it accordingly.
(term-handle-colors-array): New function.
(term-handle-ansi-terminal-messages): New function.
(term-handle-ansi-escape): Modified to allow ANSI coloring
(ansi-term): New function that creates multiple terminals. Put
in the standard C-x map too: I'm quite used to C-x C-f and C-c C-f
was too awkward.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 02 Apr 1997 03:46:39 +0000 |
parents | 8134c62c03d0 |
children | 93652fd3234d |
line wrap: on
line source
;;; auto-show.el --- perform automatic horizontal scrolling as point moves ;;; This file is in the public domain. ;;; Keywords: scroll display minor-mode ;;; Author: Pete Ware <ware@cis.ohio-state.edu> ;;; Maintainer: FSF ;;; Commentary: ;;; This file provides functions that ;;; automatically scroll the window horizontally when the point moves ;;; off the left or right side of the window. ;;; Once this library is loaded, automatic horizontal scrolling ;;; occurs whenever long lines are being truncated. ;;; To request truncation of long lines, set the variable ;;; Setting the variable `truncate-lines' to non-nil. ;;; You can do this for all buffers as follows: ;;; ;;; (set-default 'truncate-lines t) ;;; Here is how to do it for C mode only: ;;; ;;; (set-default 'truncate-lines nil) ; this is the original value ;;; (defun my-c-mode-hook () ;;; "Run when C-mode starts up. Changes ..." ;;; ... set various personal preferences ... ;;; (setq truncate-lines t)) ;;; (add-hook 'c-mode-hook 'my-c-mode-hook) ;;; ;;; ;;; As a finer level of control, you can still have truncated lines but ;;; without the automatic horizontal scrolling by setting the buffer ;;; local variable `auto-show-mode' to nil. The default value is t. ;;; The command `auto-show-mode' toggles the value of the variable ;;; `auto-show-mode'. ;;; Code: (defvar auto-show-mode t "*Non-nil enables automatic horizontal scrolling, when lines are truncated. The default value is t. To change the default, do this: (set-default 'auto-show-mode nil) See also command `auto-show-mode'. This variable has no effect when lines are not being truncated. This variable is automatically local in each buffer where it is set.") (make-variable-buffer-local 'auto-show-mode) (defvar auto-show-shift-amount 8 "*Extra columns to scroll. for automatic horizontal scrolling.") (defvar auto-show-show-left-margin-threshold 50 "*Threshold column for automatic horizontal scrolling to the right. If point is before this column, we try to scroll to make the left margin visible. Setting this to 0 disables this feature.") (defun auto-show-truncationp () "True if line truncation is enabled for the selected window." (or truncate-lines (and truncate-partial-width-windows (< (window-width) (frame-width))))) ;;;###autoload (defun auto-show-mode (arg) "Turn automatic horizontal scroll mode on or off. With arg, turn auto scrolling on if arg is positive, off otherwise. This mode is enabled or disabled for each buffer individually. It takes effect only when `truncate-lines' is non-nil." (interactive "P") (setq auto-show-mode (if (null arg) (not auto-show-mode) (> (prefix-numeric-value arg) 0)))) (defun auto-show-make-point-visible (&optional ignore-arg) "Scroll horizontally to make point visible, if that is enabled. This function only does something if `auto-show-mode' is non-nil and longlines are being truncated in the selected window. See also the command `auto-show-mode'." (interactive) (if (and auto-show-mode (auto-show-truncationp) (equal (window-buffer) (current-buffer))) (let* ((col (current-column)) ;column on line point is at (scroll (window-hscroll)) ;how far window is scrolled (w-width (- (window-width) (if (> scroll 0) 2 1))) ;how wide window is on the screen (right-col (+ scroll w-width))) (if (and (< col auto-show-show-left-margin-threshold) (< col (window-width)) (> scroll 0)) (scroll-right scroll) (if (< col scroll) ;to the left of the screen (scroll-right (+ (- scroll col) auto-show-shift-amount)) (if (or (> col right-col) ;to the right of the screen (and (= col right-col) (not (eolp)))) (scroll-left (+ auto-show-shift-amount (- col (+ scroll w-width)))) ) ) ) ) ) ) ;; Do auto-scrolling after commands. (add-hook 'post-command-hook 'auto-show-make-point-visible) ;; Do auto-scrolling in comint buffers after process output also. (add-hook 'comint-output-filter-functions 'auto-show-make-point-visible t) (provide 'auto-show) ;; auto-show.el ends here