Mercurial > hg > xemacs-beta
view src/xemacs.def.in.in @ 4407:4ee73bbe4f8e
Always use boyer_moore in ASCII or Latin-1 buffers with ASCII search strings.
2007-12-26 Aidan Kehoe <kehoea@parhasard.net>
* casetab.c:
Extend and correct some case table documentation.
* search.c (search_buffer):
Correct a bug where only the first entry for a character in the
case equivalence table was examined in determining if the
Boyer-Moore search algorithm is appropriate.
If there are case mappings outside of the charset and row of the
characters specified in the search string, those case mappings can
be safely ignored (and Boyer-Moore search can be used) if we know
from the buffer statistics that the corresponding characters cannot
occur.
* search.c (boyer_moore):
Assert that we haven't been passed a string with varying
characters sets or rows within character sets. That's what
simple_search is for.
In the very rare event that a character in the search string has a
canonical case mapping that is not in the same character set and
row, don't try to search for the canonical character, search for
some other character that is in the the desired character set and
row. Assert that the case table isn't corrupt.
Do not search for any character case mappings that cannot possibly
occur in the buffer, given the buffer metadata about its
contents.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 26 Dec 2007 17:30:16 +0100 |
parents | d674024a8674 |
children | 4363b75330ca |
line wrap: on
line source
/* Put the usual header here */ /* The symbol to import/export is on the left. If the symbol is not meant to be used directly, but a macro or inline function in the API expands to a form containing the symbol, then the macro or inline function is named in a comment to the right. */ #define NOT_C_CODE #include <config.h> NAME xemacs.exe EXPORTS /* Exported functions */ acons #ifdef NEW_GC alloc_lrecord /* alloc_lrecord_type */ lrecord_subr /* DEFSUBR */ lrecord_symbol_value_forward /* DEFVAR_SYMVAL_FWD */ #ifdef DEBUG_XEMACS mcpro_1 /* mcpro */ #endif mc_alloc /* DEFSUBR */ #else /* not NEW_GC */ alloc_automanaged_lcrecord /* old_alloc_lcrecord_type */ #endif /* not NEW_GC */ apply1 #ifdef USE_ASSERTIONS assert_failed /* abort(), assert(), etc. */ #endif build_ext_string build_intstring build_msg_intstring build_msg_string build_string #ifdef MULE bytecount_to_charcount_fun /* bytecount_to_charcount */ #endif call0 call1 call2 call3 call4 call5 call6 call7 call8 #ifdef MULE charcount_to_bytecount_fun /* charcount_to_bytecount */ #endif check_quit /* QUITP */ check_what_happened /* QUIT */ cons3 copy_lisp_object dead_wrong_type_argument /* CHECK_xxx */ #ifdef DEBUG_GCPRO debug_gcpro1 /* GCPRO1 */ debug_gcpro2 /* GCPRO2 */ debug_gcpro3 /* GCPRO3 */ debug_gcpro4 /* GCPRO4 */ debug_gcpro5 /* GCPRO5 */ debug_ungcpro /* UNGCPRO */ #endif deferror deferror_massage_name /* DEFERROR */ deferror_massage_name_and_message /* DEFERROR_STANDARD */ defkeyword defkeyword_massage_name /* DEFKEYWORD */ defsubr /* DEFSUBR */ defsubr_macro /* DEFSUBR_MACRO */ defsymbol defsymbol_nodump /* == defsymbol in modules */ defsymbol_massage_multiword_predicate /* DEFSYMBOL_MULTIWORD_PREDICATE */ defsymbol_massage_multiword_predicate_nodump /* DEFSYMBOL_MULTIWORD_PREDICATE_NO_DUMP */ defsymbol_massage_name /* DEFSYMBOL */ defsymbol_massage_name_nodump /* DEFSYMBOL_NO_DUMP == DEFSYMBOL in modules */ defvar_magic /* DEFVAR_LISP, DEFVAR_INT, ... */ dfc_coding_system_is_unicode /* TO_INTERNAL_FORMAT */ dfc_convert_to_external_format /* TO_EXTERNAL_FORMAT */ dfc_convert_to_internal_format /* TO_INTERNAL_FORMAT */ egetenv #ifndef EMODULES_GATHER_VERSION emodules_doc_subr /* CDOCSUBR */ emodules_doc_sym /* CDOCSYM */ #endif eputenv #ifdef DEBUG_XEMACS eq_with_ebola_notice /* EQ_WITH_EBOLA_NOTICE */ #endif #ifdef ERROR_CHECK_TYPES error_check_cons #ifdef HAVE_LDAP error_check_ldap #endif error_check_opaque_ptr #ifdef HAVE_POSTGRESQL error_check_pgconn error_check_pgresult #endif error_check_string #ifdef NEW_GC error_check_string_direct_data error_check_string_indirect_data #endif #endif free_opaque_ptr get_coding_system_for_text_file intern invalid_argument invalid_argument_2 invalid_constant invalid_operation invalid_operation_2 list1 list2 list3 list4 list5 list6 make_ext_string make_float make_opaque_ptr make_string make_vector maybe_invalid_operation message new_dfc_convert_copy_data /* C_STRING_TO_EXTERNAL, ... */ new_dfc_convert_malloc /* C_STRING_TO_EXTERNAL_MALLOC, ... */ new_dfc_convert_size /* C_STRING_TO_EXTERNAL, ... */ #ifdef MULE non_ascii_itext_copy_ichar /* itext_copy_ichar */ non_ascii_itext_ichar /* itext_ichar */ non_ascii_set_itext_ichar /* set_itext_ichar */ non_ascii_valid_ichar_p /* valid_ichar_p */ #endif out_of_memory /* The postgresql module uses this */ printing_unreadable_object record_unwind_protect record_unwind_protect_freeing report_process_error signal_circular_list_error /* EXTERNAL_LIST_LOOP* */ signal_circular_property_list_error /* EXTERNAL_PROPERTY_LIST_LOOP* */ signal_error signal_ferror signal_malformed_list_error /* EXTERNAL_LIST_LOOP* */ signal_malformed_property_list_error /* EXTERNAL_PROPERTY_LIST_LOOP* */ signal_quit /* QUIT */ slow_down_interrupts speed_up_interrupts #ifndef DEBUG_XEMACS staticpro staticpro_nodump #else staticpro_1 staticpro_nodump_1 #endif unbind_to_1 /* unbind_to */ #ifndef DEBUG_XEMACS unstaticpro_nodump #else unstaticpro_nodump_1 #endif vector1 vector2 vector3 warn_when_safe #ifdef ERROR_CHECK_TYPES wrap_record_1 #endif write_c_string write_fmt_string write_fmt_string_lisp write_string wrong_type_argument /* CONCHECK_xxx */ xemacs_c_alloca /* ALLOCA */ xfree_1 /* xfree */ xmalloc xmalloc_and_zero xrealloc xstrdup Dynarr_delete_many /* Dynarr_delete, Dynarr_delete_object, ... */ Dynarr_free Dynarr_insert_many /* Dynarr_add_{literal,lisp}_string */ Dynarr_newf /* Dynarr_new, Dynarr_new2 */ Dynarr_resize /* Dynarr_add */ Fappend Fapply Fbuffer_modified_p Fbuffer_name Fcall_with_condition_handler Fcons Fcurrent_buffer Fequal Feval Fexpand_abbrev Ffuncall Fget Fkill_buffer Flength Flist Fmake_list Fmake_string Fmake_symbol Fmake_vector Fnreverse Fprovide Fput Freverse Fset_buffer Fsignal Fthrow Fvector #ifdef ERROR_CHECK_TYPES XINT_1 #endif /* Exported variables */ __temp_alloca_size__ /* ALLOCA */ #ifdef DEBUG_XEMACS debug_issue_ebola_notices /* EQ_WITH_EBOLA_NOTICE */ #endif dont_check_for_quit /* QUITP, QUIT */ gcprolist /* GCPRO1, GCPRO2, ... */ initialized /* LOADHIST_ATTACH */ lrecord_cons /* CONSP */ lrecord_implementations_table /* RECORD_DUMPABLE */ lrecord_marker /* MARKERP */ #ifdef USE_KKCC lrecord_memory_descriptions /* INIT_LRECORD_IMPLEMENTATION */ #else lrecord_markers /* INIT_LRECORD_IMPLEMENTATION */ #endif lrecord_string /* STRINGP */ lrecord_symbol /* SYMBOLP */ lrecord_type_count /* INIT_EXTERNAL_LRECORD_IMPLEMENTATION */ lrecord_uid_counter need_to_check_c_alloca /* ALLOCA */ print_readably quit_check_signal_happened /* QUITP */ #ifdef ERROR_CHECK_MALLOC regex_malloc_disallowed /* REGEX_MALLOC_CHECK */ #endif #ifdef MULE rep_bytes_by_first_byte /* itext_ichar_len, INC_IBYTEPTR, ... */ #endif something_happened /* QUIT */ specpdl_depth_counter /* specpdl_depth */ Qconsp /* CHECK_CONS */ Qcritical /* QUIT, QUITP */ Qdelete Qfile_name /* Qdll_filename_encoding */ Qintegerp /* CHECK_INT, CONCHECK_INT */ Qinvalid_argument Qnative Qnil Qnotice #ifdef USE_UNION_TYPE Qnull_pointer /* DEFVAR_xxx */ #endif Qprocess_error Qsearch Qsimple Qstringp /* CHECK_STRING */ Qsymbolp /* CHECK_SYMBOL */ Qsyntax_error Qt Qunbound #ifdef USE_UNION_TYPE Qzero /* ZEROP */ #endif Vinhibit_quit /* QUIT, QUITP */ Vquit_flag /* QUIT, QUITP */