X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/3a801d0c71755fad1c33585e7ed54d9dc240999c..b336bfcdf39f1e4d35bff4a7bd01d3b4bca8f516:/lisp/reposition.el diff --git a/lisp/reposition.el b/lisp/reposition.el index 45d58ec1f7..9bc00795fe 100644 --- a/lisp/reposition.el +++ b/lisp/reposition.el @@ -1,16 +1,18 @@ ;;; reposition.el --- center a Lisp function or comment on the screen -;; Copyright (C) 1991 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1994, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Michael D. Ernst +;; Created: Jan 1991 ;; Maintainer: FSF ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,24 +20,21 @@ ;; 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. If not, see . ;;; 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: @@ -71,13 +70,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 @@ -119,16 +119,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. @@ -169,9 +169,6 @@ first comment line visible (if point is in a comment)." ;;(repos-debug-macro "4") )))) -;;;###autoload -(define-key esc-map "\C-l" 'resposition-window) - ;;; Auxiliary functions ;; Return number of screen lines between START and END. @@ -190,9 +187,11 @@ 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) +;; arch-tag: 79487039-3bd7-4ab5-a3e8-ecf3b4919010 ;;; reposition.el ends here