(move_gap): Use move_gap_both.
(move_gap_both): New function.
(gap_left, gap_right): Take both charpos and bytepos args.
(adjust_markers_gap_motion): Renamed from adjust_markers and simplified.
(adjust_markers_for_delete): New function.
(adjust_markers_for_insert): Take args in chars and bytes.
Also new arg BEFORE_MARKERS. One call does all marker updating
needed for any insert.
(adjust_point): Take 2 args and update PT and PT_BYTE.
(make_gap): Handle bytes vs chars.
(insert, insert_and_inherit): Handle bytes vs chars.
Pass new BEFORE_MARKERS arg to insert_1.
(insert_before_markers, insert_before_markers_and_inherit): Likewise.
(insert_from_string, insert_from_string_before_markers): Likewise.
(insert_from_buffer): Likewise.
(insert_1): Handle bytes vs chars. New arg BEFORE_MARKERS.
(insert_from_string_1, insert_from_buffer_1): Likewise.
(replace_range): Likewise.
(del_range_2): New subroutine, taken from del_range_1.
(del_range_1): Use del_range_2.
(del_range_byte, del_range_both): New functions.
(DECODE_POSITION): New macro.
(CHAR_TO_BYTE, BYTE_TO_CHAR): New macros.
(BEG_BYTE, BEGV_BYTE, PT_BYTE, GPT_BYTE)
(ZV_BYTE, Z_BYTE): New macros.
(BUF_BEG_BYTE, BUF_BEGV_BYTE, BUF_PT_BYTE, BUF_GPT_BYTE)
(BUF_ZV_BYTE, BUF_Z_BYTE): New macros.
(BUF_GAP_END_ADDR): New macro.
(BEGV_ADDR, PT_ADDR, GPT_ADDR, GAP_END_ADDR, ZV_ADDR, Z_ADDR):
Use the new ..._byte buffer data.
(BUFFER_CEILING_OF, BUFFER_FLOOR_OF): Likewise.
(BUF_GPT_ADDR, BUF_Z_ADDR): Likewise.
(SET_PT_BOTH, TEMP_SET_PT_BOTH): New macros.
(SET_PT, TEMP_SET_PT, BUF_SET_PT, BUF_TEMP_SET_PT):
Call functions with new arg order.
(SET_BUF_BEGV, SET_BUF_BEGV_BOTH): New macros.
(SET_BUF_PT): Macro deleted.
(SET_BUF_ZV): Set charpos and bytepos.
(SET_BUF_ZV_BOTH, SET_BUF_PT_BOTH): New macros.
(BYTE_POS_ADDR): Renamed from POS_ADDR.
(CHAR_POS_ADDR): New macro.
(FETCH_BYTE): Use BYTE_POS_ADDR.
(FETCH_MULTIBYTE_CHAR): Use ..._BYTE macros.
(BUF_CHAR_ADDRESS): Convert charpos to bytepos.
(BUF_BYTE_ADDRESS): New macro, like the old BUF_CHAR_ADDRESS.
(PTR_BYTE_POS): Renamed from PTR_CHAR_POS.
(BUF_PTR_BYTE_POS): New macro.
(BUF_FETCH_CHAR, BUF_FETCH_BYTE, BUF_FETCH_MULTIBYTE_CHAR): New macros.
(struct buffer_text): New fields gpt_byte, z_byte.
(struct buffer): New fields pt_byte, begv_byte, zv_byte.
(Fprocess_send_region): Make bytepos for send_process.
(read_process_output): Save, restore, and update both kinds of ptrs.
(send_process): OFFSET is now in bytes.
(PRINTDECLARE): Declare old_point_byte and start_point_byte.
(PRINTPREPARE): For a marker, set old_point_byte and start_point_byte.
Set both kinds of PT from the marker.
(PRINTFINISH): For a marker, use set_marker_both.
Restore both kinds of PT.
(print): For strings and symbols, handle multibyte chars.
(readchar_backlog): New variable.
(readchar): When fetching from buffer or marker,
use readchar_backlog to fetch bytes from a character.
(unreadchar): Increment readchar_backlog.
(readevalloop, Fread): Init readchar_backlog.
(scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
(find_defun_start): Additional arg POS_BYTE.
Save final byte pos in find_start_value_byte.
(find_start_value_byte): New variable.
(Fforward_comment): Scan by bytes and chars.
(Fbackward_prefix_chars): Scan by bytes and chars.
(scan_words, scan_sexps_forward): Scan bytes as well as chars.
(skip_chars, scan_lists): Scan by bytes and chars. Now static.
(char_quoted): Take charpos and bytepos as args.
(back_comment): Likewise.
(update_syntax_table): Arg renamed.
(inc_bytepos, dec_bytepos): New functions.
(looking_at_1): Use bytepos to call re_search_2.
Convert search regs to charpos, if search succeeded.
(search_buffer): Likewise. Also convert charpos <-> bytepos
in non-regexp case.
(scan_buffer): Convert charpos <-> bytepos.
(scan_newline): New function.
(find_next_newline): Function deleted.
(set_search_regs): Args now in bytes; convert to charpos.
(Freplace_match): Convert charpos <-> bytepos when scanning case.
(forward_point): Function deleted.
(Fforward_point): Just add.
(Fforward_char): Don't call forward_point, just add.
(Fforward_line): Use scan_newline.
(Fdelete_char): No need for forward_point, just add.
(Fdelete_backward_char): Handle bytes and chars.
(internal_self_insert): Handle bytes and chars.
(Fmake_indirect_buffer): Use set_marker_both.
(set_buffer_internal_1): Likewise.
(set_buffer_temp): Likewise.
(set_buffer_temp): Update BUF_PT_BYTE, BUF_BEGV_BYTE and BUF_ZV_BYTE.
(Fmake_indirect_buffer, set_buffer_internal_1):
Set up the pt, begv and zv markers with both kinds of position.
Set BUF_PT_BYTE, BUF_BEGV_BYTE, BUF_ZV_BYTE.
(Fget_buffer_create): Set BUF_..._BYTE.
(marker_byte_position): Renamed from marker_position.
(marker_position): New function returns the charpos.
(Fbuffer_has_markers_at): Test the marker's charpos.
(set_marker_restricted, Fset_marker): Set both kinds of position.
Optimize case where POSITION is a marker.
(set_marker_both, set_marker_restricted_both): New functions.
(Fmarker_position): Use the charpos.
(charpos_to_bytepos, bytepos_to_charpos): New functions.
(buf_charpos_to_bytepos, buf_bytepos_to_charpos): New functions.
(redisplay_internal): Use scan_newline.
(try_window_id): Use scan_newline.
(display_text_line): Use scan_newline.
(pos_tab_indent): Moved from indent,c. Now static.
Take POS in bytes and chars. Callers changed.
(redisplay_window): Handle byte and char positions.
(try_window): Don't move W->start if it's already at right place.
(display_count_lines): Several changes in args.
Do the work directly.
(display_scan_buffer): Function deleted.
(decode_mode_spec): Pass new arg.
(message_log_check_duplicate): Take charpos and bytepos args.
(message_dolog): Use markers to update old PT, BEGV, ZV.
Use scan_newline. Handle positions in bytes and chars.
(try_window): Pass bytepos to and from display_text_line.
(try_window_id): Likewise. Use byte pos as well as charpos.
(redisplay_internal): Handle bytepos for tlbufpos.
(Fset_window_buffer): Use set_marker_both.
(Fselect_window, Fscroll_other_window, save_window_save): Likewise.
(Fset_window_configuration): Pass p->mark itself to Fset_marker
and set_marker_restricted_both.
(temp_output_buffer_show): Use set_marker_restricted_both.
(window_scroll): Save and restore both kinds of pointers.
(Fdelete_other_windows): Rely on vmotion to give bytepos.
Use set_marker_both. Use byte positions.
(Frecenter): Likewise.
(Fmove_to_window_line): Use set_marker_both and Fgoto_char.
(Fchars_in_string): Update call to CHAR_HEAD_P.
(chars_in_text, str_cmpchar_id, Fcompose_string): Likewise.
(Fchar_boundary_p): Always return 0.
(Fchars_in_region): Just subtract the arguments.
(chars_in_text): New function.
(Ffind_charset_region): Scan in bytepos as well as charpos.
(Finsert_file_contents): Update call to CHAR_HEAD_P.
(Fwrite_region): Use scan_newline.
(restore_point_unwind): Now static. Use Fgoto_char.
(Funhandled_file_name_directory): Doc fix.
(Finsert_file_contents): Handle bytes vs chars.
(Fwrite_region): Handle bytes vs chars.
(a_write): Take args in bytes; handle annotations labeled in chars.
(e_write): Rename args.
(Funhandled_file_name_directory): Doc fix.
(a_write, e_write): Now static.
(Fminibuffer_complete_word): Handle bytes vs characters
when comparing buffer against string.
(temp_echo_area_glyphs): Save, update, delete text using
byte and char positions.
(read_minibuf): BACKUP_N counts bytes.
(describe_abbrev): Return void.
(write_abbrev): Return void.
(Fexpand_abbrev): Scan in bytepos along with charpos.
(Funexpand_abbrev): Use bytepos to delete the expansion.
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
(info-lookup-make-completions): Catch errors one file at a time.
Use a special temp buffer, not the usual info buffer,
and never display it in a window.
(Vminor_mode_overriding_map_alist): New variable.
(syms_of_keymap): Set up Lisp var.
(current_minor_maps): Use Vminor_mode_overriding_map_alist first,
then Vminor_mode_map_alist.
Some comment, doc and bug fixes.
(ps-print-version): New version number (3.05.3) and doc fix.
(ps-output-string-prim, ps-begin-job, ps-control-character)
(ps-plot-region): Bug fix.
(ps-print-control-characters): New custom var.
(ps-string-escape-codes, ps-string-control-codes): New var.
(ps-color-device, ps-font-lock-face-attributes, ps-eval-switch)
(ps-flatten-list, ps-flatten-list-1): New fn.
(ps-setup): Update current setup.
(ps-begin-file): Adjust PostScript header file.
(ps-plot, ps-face-attribute-list): Little programming improvement.
(ps-print-prologue-1): Replace NumberOfZebra by ZebraHeight.
(ps-print-without-faces, ps-print-with-faces): Little reprogramming.
(ps-plot-with-face): Get color only on color screen device.
(ps-build-reference-face-lists): Handle obsolete
font-lock-face-attributes.
(ps-print-ensure-fontified): Little programming setting.
(ps-generate-postscript-with-faces): Adjust initializations, get color
only on color screen device.
(ps-generate): Replace (if A B) by (and A B).
(ps-do-despool): Dynamic evaluation for ps-lpr-switches,
Replace (if A B) by (and A B).
(color-instance-rgb-components, ps-color-values): Replace
pixel-components by color-instance-rgb-components.
(ps-xemacs-face-kind-p): Replace face-font by face-font-instance,
replace x-font-properties by font-instance-properties.
(previous-matching-history-element): Bind
case-fold-search to nil if REGEXP contains an uppercase letter.
(previous-matching-history-element, next-matching-history-element):
Doc fixes.
Dave Love [Mon, 22 Dec 1997 19:26:10 +0000 (19:26 +0000)]
(browse-url-path-regexp, browse-url-short-regexp,
browse-url-regexp): Variables deleted. (They were moved to
thingatpt.el.)
(browse-url-filename-alist): Default now has leading ange-ftp-type
patterns so that the "^/+" pattern doesn't mung such names in
advance.
(browse-url-file-url): Don't do explicit ange-ftp path munging
here.
(browse-url-netscape-program): Doc addition.
Doc fixes. Changed `append' to `nconc'
in a number of places. Changed the separator in menus
from "---" to "--" to work in Windows 95.
(msb--home-path): New internal variable to cache the value of $HOME.
(msb--strip-path): Now handles MSDOG style of file names.
(msb--init-file-alist): Now expands `buffer-file-name'.
(msb--format-title): New subroutine for `msb--choose-file-menu'.
(msb--choose-file-menu): Use msb--format-title. Minor simplifications.
(Vsignal_USR1_hook, Vsignal_USR2_hook): New variables.
(syms_of_emacs): Set up Lisp variables.
(handle_USR1_signal, handle_USR2_signal): New signal handlers.
(main): Set up signal handlers.
(calendar-french-single-byteify): New function.
(calendar-goto-french-date): Use calendar-french-single-byteify
instead of changing enable-multibyte-characters.
test french-calendar-accents.
Karl Heuer [Fri, 19 Dec 1997 14:58:42 +0000 (14:58 +0000)]
(iswitchb-completion-help): Multiple TAB presses
scroll the completion window.
(iswitchb-read-buffer): New function to act as drop-in replacement
for read-buffer.