X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e516799970be4553edae8ca46d5f64852befec77..3c53a3cf83c218772d9bcfde4cd60c1face33e93:/lisp/reposition.el diff --git a/lisp/reposition.el b/lisp/reposition.el index 9a6a9e2322..0811f8dd57 100644 --- a/lisp/reposition.el +++ b/lisp/reposition.el @@ -1,10 +1,10 @@ ;;; reposition.el --- center a Lisp function or comment on the screen +;; Copyright (C) 1991, 1994 Free Software Foundation, Inc. + ;; Author: Michael D. Ernst +;; Created: Jan 1991 ;; Maintainer: FSF -;; Last-Modified: 13 May 1991 - -;; Copyright (C) 1991 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -19,24 +19,23 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. ;;; Commentary: -;;; Written by Michael D. Ernst, mernst@theory.lcs.mit.edu, Jan 1991. +;; Reposition-window makes an entire function definition or comment visible, +;; or, if it is already visible, places it at the top of the window; +;; additional invocations toggle the visibility of comments preceding the +;; code. For the gory details, see the documentation for reposition-window; +;; rather than reading that, you may just want to play with it. -;;; Reposition-window makes an entire function definition or comment visible, -;;; or, if it is already visible, places it at the top of the window; -;;; additional invocations toggle the visibility of comments preceding the -;;; code. For the gory details, see the documentation for reposition-window; -;;; rather than reading that, you may just want to play with it. - -;;; This tries pretty hard to do the recentering correctly; the precise -;;; action depends on what the buffer looks like. If you find a situation -;;; where it doesn't behave well, let me know. This function is modeled -;;; after one of the same name in ZMACS, but the code is all-new and the -;;; behavior in some situations differs. +;; This tries pretty hard to do the recentering correctly; the precise +;; action depends on what the buffer looks like. If you find a situation +;; where it doesn't behave well, let me know. This function is modeled +;; after one of the same name in ZMACS, but the code is all-new and the +;; behavior in some situations differs. ;;; Code: @@ -72,13 +71,14 @@ first comment line visible (if point is in a comment)." (repos-count-screen-lines-signed ;; the beginning of the preceding comment (save-excursion - (forward-char 1) (end-of-defun -1) + (if (not (eobp)) (forward-char 1)) + (end-of-defun -1) ;; Skip whitespace, newlines, and form feeds. - (re-search-forward "[^\\s \n\014]") - (backward-char 1) + (if (re-search-forward "[^ \t\n\f]" nil t) + (backward-char 1)) (point)) here))) - (defun-height + (defun-height (repos-count-screen-lines-signed (save-excursion (end-of-defun 1) ; so comments associate with following defuns @@ -120,16 +120,16 @@ first comment line visible (if point is in a comment)." ;; whose first line is offscreen. ;; Avoid moving definition up even if defun runs offscreen; ;; we care more about getting the comment onscreen. - + (cond ((= line ht) ;; cursor on last screen line (and so in a comment) (if arg (progn (end-of-defun) (beginning-of-defun))) (recenter 0) ;;(repos-debug-macro "2a") ) - + ;; This condition, copied from case 4, may not be quite right - + ((and arg (< ht comment-height)) ;; Can't get first comment line onscreen. ;; Go there and try again. @@ -170,8 +170,7 @@ first comment line visible (if point is in a comment)." ;;(repos-debug-macro "4") )))) -;;;###autoload -(define-key esc-map "\C-l" 'resposition-window) +;;;###autoload (define-key esc-map "\C-l" 'reposition-window) ;;; Auxiliary functions @@ -191,9 +190,10 @@ first comment line visible (if point is in a comment)." lines (- lines)))) -; (defmacro repos-debug-macro (case-no) -; (` (message -; (concat "Case " (, case-no) ": %s %s %s %s %s") -; ht line comment-height defun-height defun-depth))) +;; (defmacro repos-debug-macro (case-no) +;; `(message (concat "Case " ,case-no ": %s %s %s %s %s") +;; ht line comment-height defun-height defun-depth)) + +(provide 'reposition) ;;; reposition.el ends here