Mercurial > emacs
view lisp/textmodes/page.el @ 1548:cbed5e520f81
version 1.28.8
(fortran-indent-to-column): Make turning of lines that begin with
`fortran-continuation-string' into properly formated continuation
lines work for fortran TAB mode.
Cleaned up some doc strings.
(fortran-abbrev-help, fortran-prepare-abbrev-list-buffer): Use
`insert-abbrev-table-description' and make buffer in abbrevs-mode.
Many changes since version 1.28.3. Added auto-fill-mode, support
for some Fortran 90 statements. Adjust comments to conform to new
gnu conventions.
(fortran-mode): Fix `comment-line-start-skip' by changing \\1 to
\\2 and include cpp statements in matching. Changes for auto fill.
(fortran-auto-fill-mode, fortran-do-auto-fill,
fortran-break-line): New functions to implement auto fill.
(fortran-indent-line, fortran-reindent-then-newline-and-indent):
Added auto fill support.
(find-comment-start-skip, is-in-fortran-string-p): New functions.
(fortran-electric-line-number): Works better in overwrite mode.
(fortran-indent-comment, fortran-indent-line,
fortran-indent-to-column): Use find-comment-start-skip instead of
searching for `comment-start-skip'.
(fortran-mode, calculate-fortran-indent): Added indentation
for fortran 90 statements.
(fortran-next-statement, fortran-previous-statement): Bug fixes.
(fortran-mode, calculate-fortran-indent,
fortran-setup-tab-format-style, fortran-setup-fixed-format-style):
`fortran-comment-line-column' meaning changed. Now defaults to 0.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 05 Nov 1992 20:25:10 +0000 |
parents | 8f64d3122435 |
children | f287613dfc28 |
line wrap: on
line source
;;; page.el --- page motion commands for emacs. ;; Copyright (C) 1985 Free Software Foundation, Inc. ;; Maintainer: FSF ;; This file is part of GNU Emacs. ;; 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. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; 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. ;;; Code: (defun forward-page (&optional count) "Move forward to page boundary. With arg, repeat, or go back if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (or count (setq count 1)) (while (and (> count 0) (not (eobp))) ;; In case the page-delimiter matches the null string, ;; don't find a match without moving. (if (bolp) (forward-char 1)) (if (re-search-forward page-delimiter nil t) nil (goto-char (point-max))) (setq count (1- count))) (while (and (< count 0) (not (bobp))) (forward-char -1) (if (re-search-backward page-delimiter nil t) (goto-char (match-end 0)) (goto-char (point-min))) (setq count (1+ count)))) (defun backward-page (&optional count) "Move backward to page boundary. With arg, repeat, or go fwd if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (or count (setq count 1)) (forward-page (- count))) (defun mark-page (&optional arg) "Put mark at end of page, point at beginning. A numeric arg specifies to move forward or backward by that many pages, thus marking a page other than the one point was originally in." (interactive "P") (setq arg (if arg (prefix-numeric-value arg) 0)) (if (> arg 0) (forward-page arg) (if (< arg 0) (forward-page (1- arg)))) (forward-page) (push-mark nil t) (forward-page -1)) (defun narrow-to-page (&optional arg) "Make text outside current page invisible. A numeric arg specifies to move forward or backward by that many pages, thus showing a page other than the one point was originally in." (interactive "P") (setq arg (if arg (prefix-numeric-value arg) 0)) (save-excursion (widen) (if (> arg 0) (forward-page arg) (if (< arg 0) (forward-page (1- arg)))) ;; Find the end of the page. (forward-page) ;; If we stopped due to end of buffer, stay there. ;; If we stopped after a page delimiter, put end of restriction ;; at the beginning of that line. (if (save-excursion (beginning-of-line) (looking-at page-delimiter)) (beginning-of-line)) (narrow-to-region (point) (progn ;; Find the top of the page. (forward-page -1) ;; If we found beginning of buffer, stay there. ;; If extra text follows page delimiter on same line, ;; include it. ;; Otherwise, show text starting with following line. (if (and (eolp) (not (bobp))) (forward-line 1)) (point))))) (put 'narrow-to-page 'disabled t) (defun count-lines-page () "Report number of lines on current page, and how many are before or after point." (interactive) (save-excursion (let ((opoint (point)) beg end total before after) (forward-page) (beginning-of-line) (or (looking-at page-delimiter) (end-of-line)) (setq end (point)) (backward-page) (setq beg (point)) (setq total (count-lines beg end) before (count-lines beg opoint) after (count-lines opoint end)) (message "Page has %d lines (%d + %d)" total before after)))) (defun what-page () "Print page and line number of point." (interactive) (save-restriction (widen) (save-excursion (beginning-of-line) (let ((count 1) (opoint (point))) (goto-char 1) (while (re-search-forward page-delimiter opoint t) (setq count (1+ count))) (message "Page %d, line %d" count (1+ (count-lines (point) opoint))))))) ;;; page.el ends here