Mercurial > emacs
view lisp/auto-show.el @ 16842:72276b334084 before-thomas-posix1996 glibc-2_0_2 libc-970108 libc-970109 libc-970110 libc-970111 libc-970112 libc-970113 libc-970114 libc-970115 libc-970116 libc-970117 libc-970118 libc-970119 libc-970120 libc-970121 libc-970122 libc-970123 libc-970124 libc-970125 libc-970126 libc-970127 libc-970128 libc-970129 libc-970130 libc-970131 libc-970201 libc-970202 libc-970203 libc-970204 libc-970205 libc-970206 libc-970207 libc-970208 libc-970209 libc-970210 libc-970211 libc-970212 libc-970213 libc-970214 libc-970215 libc-970216 libc-970217 libc-970218 libc-970219 libc-970220 libc-970221 libc-970222 libc-970223 libc-970224 libc-970225 libc-970226 libc-970227 libc-970228 libc-970301 libc-970302 libc-970303 libc-970304 libc-970305 libc-970306 libc-970307 libc-970308 libc-970309 libc-970310 libc-970311 libc-970312 libc-970313 libc-970314 libc-970315 libc-970316 libc-970317 libc-970318 libc-970319 libc-970320 libc-970321 libc-970322 libc-970323 libc-970324 libc20x-970306 libc20x-97031 libc20x-970316 libc20x-970318 libc20x-970319 libc20x-970404 root-libc-2_0_x-branch
Add hppa1.1-hitachi-hiuxmpp support, passed along by rms.
author | David J. MacKenzie <djm@gnu.org> |
---|---|
date | Tue, 07 Jan 1997 19:29:28 +0000 |
parents | 84acc3adcd63 |
children | 8134c62c03d0 |
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.") (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." (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-toggle'." (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