annotate lisp/page.el @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents 6f72d9a709c3
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
1 ;;; page.el --- page motion commands for Emacs
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
2
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
3 ;; Copyright (C) 1985, 1997 Free Software Foundation, Inc.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
4
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
5 ;; Maintainer: FSF
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
6 ;; Keywords: extensions, dumped
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
7 ;; Keywords: wp convenience
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
8
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
10
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
11 ;; XEmacs is free software; you can redistribute it and/or modify it
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
12 ;; under the terms of the GNU General Public License as published by
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
14 ;; any later version.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
15
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
19 ;; General Public License for more details.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
20
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
22 ;; along with XEmacs; see the file COPYING. If not, write to the Free
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
23 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
24 ;; 02111-1307, USA.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
25
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
26 ;;; Synched up with: FSF 21.3.
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
27
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
28 ;;; Commentary:
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
29
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
30 ;; This file is dumped with XEmacs.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
31
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
32 ;; This code provides the page-oriented movement and selection commands
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
33 ;; documented in the XEmacs Reference Manual.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
34
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
35 ;;; Code:
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
36
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
37 (defun forward-page (&optional count)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
38 "Move forward to page boundary. With arg, repeat, or go back if negative.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
39 A page boundary is any line whose beginning matches the regexp
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
40 `page-delimiter'."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
41 (interactive "_p") ; XEmacs
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
42 (or count (setq count 1))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
43 (while (and (> count 0) (not (eobp)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
44 ;; In case the page-delimiter matches the null string,
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
45 ;; don't find a match without moving.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
46 (if (bolp) (forward-char 1))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
47 (if (re-search-forward page-delimiter nil t)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
48 nil
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
49 (goto-char (point-max)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
50 (setq count (1- count)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
51 (while (and (< count 0) (not (bobp)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
52 ;; In case the page-delimiter matches the null string,
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
53 ;; don't find a match without moving.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
54 (and (save-excursion (re-search-backward page-delimiter nil t))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
55 (= (match-end 0) (point))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
56 (goto-char (match-beginning 0)))
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents: 209
diff changeset
57 (backward-char 1)
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
58 (if (re-search-backward page-delimiter nil t)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
59 ;; We found one--move to the end of it.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
60 (goto-char (match-end 0))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
61 ;; We found nothing--go to beg of buffer.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
62 (goto-char (point-min)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
63 (setq count (1+ count))))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
64
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
65 (defun backward-page (&optional count)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
66 "Move backward to page boundary. With arg, repeat, or go fwd if negative.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
67 A page boundary is any line whose beginning matches the regexp
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
68 `page-delimiter'."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
69 (interactive "_p") ; XEmacs
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
70 (or count (setq count 1))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
71 (forward-page (- count)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
72
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
73 (defun mark-page (&optional arg)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
74 "Put mark at end of page, point at beginning.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
75 A numeric arg specifies to move forward or backward by that many pages,
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
76 thus marking a page other than the one point was originally in."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
77 (interactive "P")
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
78 (setq arg (if arg (prefix-numeric-value arg) 0))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
79 (if (> arg 0)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
80 (forward-page arg)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
81 (if (< arg 0)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
82 (forward-page (1- arg))))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
83 (forward-page)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
84 (push-mark nil t t)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
85 (forward-page -1))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
86
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
87 (defun narrow-to-page (&optional arg)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
88 "Make text outside current page invisible.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
89 A numeric arg specifies to move forward or backward by that many pages,
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
90 thus showing a page other than the one point was originally in."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
91 (interactive "P")
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
92 (setq arg (if arg (prefix-numeric-value arg) 0))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
93 (save-excursion
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
94 (widen)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
95 (if (> arg 0)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
96 (forward-page arg)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
97 (if (< arg 0)
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
98 (let ((adjust 0)
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
99 (opoint (point)))
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
100 ;; If we are not now at the beginning of a page,
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
101 ;; move back one extra time, to get to the start of this page.
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
102 (save-excursion
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
103 (beginning-of-line)
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
104 (or (and (looking-at page-delimiter)
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
105 (eq (match-end 0) opoint))
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
106 (setq adjust 1)))
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
107 (forward-page (- arg adjust)))))
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
108 ;; Find the end of the page.
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
109 (set-match-data nil)
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
110 (forward-page)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
111 ;; If we stopped due to end of buffer, stay there.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
112 ;; If we stopped after a page delimiter, put end of restriction
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
113 ;; at the beginning of that line.
2510
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
114 ;; Before checking the match that was found,
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
115 ;; verify that forward-page actually set the match data.
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
116 (if (and (match-beginning 0)
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
117 (save-excursion
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
118 (goto-char (match-beginning 0)) ; was (beginning-of-line)
6f72d9a709c3 [xemacs-hg @ 2005-01-26 09:56:05 by ben]
ben
parents: 446
diff changeset
119 (looking-at page-delimiter)))
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
120 (beginning-of-line))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
121 (narrow-to-region (point)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
122 (progn
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
123 ;; Find the top of the page.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
124 (forward-page -1)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
125 ;; If we found beginning of buffer, stay there.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
126 ;; If extra text follows page delimiter on same line,
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
127 ;; include it.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
128 ;; Otherwise, show text starting with following line.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
129 (if (and (eolp) (not (bobp)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
130 (forward-line 1))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
131 (point)))))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
132 (put 'narrow-to-page 'disabled t)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
133
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
134 (defun count-lines-page ()
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
135 "Report number of lines on current page, and how many are before or after point."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
136 (interactive "_") ; XEmacs
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
137 (save-excursion
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
138 (let ((opoint (point)) beg end
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
139 total before after)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
140 (forward-page)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
141 (beginning-of-line)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
142 (or (looking-at page-delimiter)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
143 (end-of-line))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
144 (setq end (point))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
145 (backward-page)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
146 (setq beg (point))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
147 (setq total (count-lines beg end)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
148 before (count-lines beg opoint)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
149 after (count-lines opoint end))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
150 (message "Page has %d lines (%d + %d)" total before after))))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
151
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
152 (defun what-page ()
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
153 "Print page and line number of point."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
154 (interactive "_") ; XEmacs
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
155 (save-restriction
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
156 (widen)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
157 (save-excursion
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
158 (beginning-of-line)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
159 (let ((count 1)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
160 (opoint (point)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
161 (goto-char 1)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
162 (while (re-search-forward page-delimiter opoint t)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
163 (setq count (1+ count)))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
164 (message "Page %d, line %d"
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
165 count
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
166 (1+ (count-lines (point) opoint)))))))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
167
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
168 ;;; Place `provide' at end of file.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
169 (provide 'page)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
170
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
171 ;;; page.el ends here