Gerd Moellmann [Fri, 24 Mar 2000 12:14:43 +0000 (12:14 +0000)]
(bootstrap-clean): If $(emacs) exists, build
loaddefs.el first. A loaddefs.el that's not up-to-date might
cause a bootstrap failure because things don't autoload as
expected.
Gerd Moellmann [Thu, 23 Mar 2000 13:53:14 +0000 (13:53 +0000)]
Changed the type of parameter passed to the
function defined by `quickurl-format-function'. Before only the
text of the URL was passed. Now the whole URL structure is passed
and the function is responsible for extracting the parts it
requires. Changed the default of `quickurl-format-function'
accordingly.
(quickurl-insert): Changed the `funcall' of
`quickurl-format-function' to match the above change.
(quickurl-list-insert): Changed the `url' case so that it makes
use of `quickurl-format-function', previous to this the format was
hard wired.
Stefan Monnier [Thu, 23 Mar 2000 02:39:58 +0000 (02:39 +0000)]
(makefile-warn-suspicious-lines): clean
up the code and the regexp and make sure the cursor is temporarily
moved to the suspicious line while querying the user.
Jason Rumney [Wed, 22 Mar 2000 23:15:30 +0000 (23:15 +0000)]
(single_submenu): Set help string to NULL if none.
(w32_menu_show): Set help string correctly.
(add-menu-item): Set help string in MIIM_DATA for menu item.
Load SetMenuItemInfoA explicitly.
(w32_menu_display_help): New function.
Jason Rumney [Wed, 22 Mar 2000 22:29:41 +0000 (22:29 +0000)]
(w32_wnd_proc): Handle WM_MENUSELECT message.
(QCdata): Moved to xdisp.c.
Include fontset.h after dispextern.h.
(Fx_create_frame): Do not create fontset.
(w32_load_system_font): Doc fix.
(Fx_close_connection): Free full_name if it is not shared.
Ken Raeburn [Wed, 22 Mar 2000 21:44:05 +0000 (21:44 +0000)]
Changes towards better type safety regarding intervals, primarily
regarding the "parent" handle. These just separate out the different
usages based on the type of parent (interval vs lisp object); later
changes will do type checking and enforcement.
* intervals.h (NULL_INTERVAL): Cast to INTERVAL type.
(INT_LISPLIKE): New macro.
(NULL_INTERVAL_P): Use it.
(INTERVAL_HAS_PARENT, INTERVAL_HAS_OBJECT, SET_INTERVAL_PARENT,
SET_INTERVAL_OBJECT, INTERVAL_PARENT, COPY_INTERVAL_PARENT,
GET_INTERVAL_OBJECT, INTERVAL_PARENT_OR_NULL): New macros.
* alloc.c (make_interval, gc_sweep): Use new macros; eliminate all
explicit references to "parent" field of struct interval and
associated unclean type conversions.
* intervals.c (create_root_interval, root_interval, rotate_right,
rotate_left, balance_possible_root_interval, split_interval_right,
split_interval_left, interval_start_pos, find_interval,
next_interval, previous_interval, update_interval,
adjust_intervals_for_insertion, delete_node, delete_interval,
adjust_intervals_for_deletion, merge_interval_right,
merge_interval_left, reproduce_tree, graft_intervals_into_buffer,
copy_intervals_to_string): Likewise.
* intervals.h (AM_LEFT_CHILD, AM_RIGHT_CHILD, RESET_INTERVAL):
Likewise.
* syntax.c (update_syntax_table): Likewise.
* intervals.c (reproduce_tree_obj): New function, like
reproduce_tree but takes a Lisp_Object for the parent. Declare
with prototype.
(graft_intervals_into_buffer): Use it when appropriate.
(reproduce_tree): Declare with prototype.
(balance_possible_root_interval): Check that the parent is a lisp
object before trying to examine its type.
Stefan Monnier [Wed, 22 Mar 2000 04:18:10 +0000 (04:18 +0000)]
(CHAR_CHARSET, CHARSET_LEADING_CODE_BASE): Add default
definitions for non-Emacs compilation.
(enum re_opcode_t): Remove (not)wordchar and move (not)syntaxspec
outside of `#ifdef emacs'.
(print_partial_compiled_pattern): Update.
(regex_compile): Use (not)syntaxspec(Sword) instead of (not)wordchar.
(re_compile_fastmap): Merge handling of charset and charset_not (for
emacs and non-emacs compilation as well).
Similarly for (not)categoryspec and (not)syntaxspec.
Don't use the fastmap when reaching `anychar' since the added
complexity is not justified.
(re_match_2_internal): Merge (not)wordchar (emacs and non-emacs)
and (not)syntaxspec. Merge (not)categoryspec.
Stefan Monnier [Wed, 22 Mar 2000 03:10:07 +0000 (03:10 +0000)]
(find-file-run-dired): Update docstring.
(find-directory-functions): New hook.
(find-file-noselect): Run find-directory-functions rather than
calling dired directly.
Stefan Monnier [Wed, 22 Mar 2000 02:57:23 +0000 (02:57 +0000)]
* pcvs.el: Add a minimal leading commentary.
(cvs-make-cvs-buffer): Change the header part by removing the startup
message and adding a `Module' entry. Also replace the FOOTER and
HEADER special fileinfos with the new support in ewoc for updating
its own footer and header.
(cvs-update-header): Update to use the header/footer of the ewoc.
(cvs-mode): Use define-derived-mode and set truncate-lines to t.
(cvs-is-within-p): New function.
(cvs-mode-run): Take advantage of `save-some-buffers's new ability
to only examine some subset of the buffers.
* pcvs-info.el (cvs-fileinfo-pp): Use the new property-preserving
`format' instead of our own ad-hoc functions.
Remove HEADER and FOOTER cases, now handled in the EWOC.
(cvs-fileinfo<): Remove HEADER and FOOTER cases.
* pcvs-parse.el (cvs-parse-run-table): Change message for unknown
output to avoid scaring the user.
(cvs-parse-table): Catch message for non-up-to-date commits.
* pcvs-defs.el (cvs-startup-message): Remove.
(cvs-global-menu): New autoloaded menu.
* pcvs-util.el (cvs-string-fill): Remove.
* emacs-lisp/ewoc.el (ewoc--create-special-node): Remove.
(ewoc--refresh-node): Don't take the whole EWOC but only the relevant
PP part of it and also make it work for footers and headers.
(ewoc-create): Drop POS and BUFFER arguments.
Use the DLL's dummy node to store the end-of-footer position.
(ewoc-map, ewoc-invalidate): Update call to ewoc--refresh-node.
(ewoc-refresh): Remove unused `header' variable.
(ewoc-(get|set)-hf): New functions.
Stefan Monnier [Wed, 22 Mar 2000 01:10:09 +0000 (01:10 +0000)]
(log-view-(msg|file)-(prev|next)): Rename from
log-view-*-(message|file) and use easy-mmode-define-navigation.
(log-view-message-re): Match SCCS format as well.
And match the revision line rather than the dashed separator line.
(log-view-mode): Use the new define-derived-mode.
(log-view-current-tag): Fill in with an actual implementation.
Stefan Monnier [Wed, 22 Mar 2000 01:01:36 +0000 (01:01 +0000)]
(cvs-status-(prev|next)): Rename from
cvs-status-(prev|next)-entry and use easy-mmode-define-navigation.
(cvs-tree-dstr-*): Rename from cvstree-dstr-* and use two ascii chars
to let the output "breathe" a little more (more readable).
Stefan Monnier [Wed, 22 Mar 2000 00:54:55 +0000 (00:54 +0000)]
(smerge-auto-leave): New function and variable.
(smerge-basic-map): Rename from smerge-basic-keymap.
Change the bindings for smerge-diff-*.
(smerge-*-map): Use easy-mmode-defmap.
(smerge-(next|prev)): Use easy-mmode-define-navigation.
(smerge-keep-*): Use smerge-auto-leave.
Gerd Moellmann [Tue, 21 Mar 2000 21:47:47 +0000 (21:47 +0000)]
(tags-case-fold-search): New user-option.
(tags-loop-eval): New function. Bind case-fold-search around eval
depending on the value of tags-case-fold-search.
(tags-loop-continue): Use tags-loop-eval.
(find-tag-in-order): Bind case-fold-search depending on the value
of tags-case-fold-search.
Stefan Monnier [Tue, 21 Mar 2000 16:59:17 +0000 (16:59 +0000)]
(diff-mode-*-map): use `easy-mmode-defmap'.
(diff-end-of-hunk): Return the end position for use in
`easy-mmode-define-navigation'.
(diff-recenter): Remove.
(diff-(next|prev)-*): Rename `diff-*-(prev|next)' and defined in terms
of `easy-mmode-define-navigation'.
(diff-kill-*): Rename `diff-*-kill' (for consistency with the
previous renaming) and fix to use new names.
(diff-merge-strings): Use \n as separator: simpler, faster.
(diff-mode): Use `define-derived-mode'.
Gerd Moellmann [Tue, 21 Mar 2000 16:13:31 +0000 (16:13 +0000)]
(check_lface_attrs) [GLYPH_DEBUG]: Fix syntax error.
(lface_fully_specified_p): Don't check contents of
LFACE_FONT_INDEX because that attribute is optional.
(realize_x_face): Remove now unwarranted xassert.
Stefan Monnier [Tue, 21 Mar 2000 15:35:06 +0000 (15:35 +0000)]
* derived.el (define-derived-mode): Don't autoload anymore.
Prefer the macro-only version provided by easy-mmode.el.
* emacs-lisp/easy-mmode.el (define-derived-mode): New name for
`easy-mmode-define-derived-mode'.
Use `combine-run-hooks'.
(easy-mmode-define-navigation): New macro.
Kenichi Handa [Tue, 21 Mar 2000 00:43:55 +0000 (00:43 +0000)]
Include fontset.h after dispextern.h.
(x_per_char_metric): Don't try FONT->default_char. Even if
pcm->width is zero, glyph bits may exist.
(x_encode_char): Always initialize char2b->byte1.
(x_get_char_face_and_encoding): Call FACE_FOR_CHAR to get face_id.
(x_get_glyph_face_and_encoding): New arg two_byte_p. Caller
changed.
(x_append_glyph): Set glyph->glyph_not_available_p.
(x_produce_glyphs): Set it->glyph_not_available_p. Don't set
it->charset. Handle the case that per char metric is not
available. If it->multibyte_p is zero and it->c is a multibyte
character, convert it to a unibyte character.
(struct glyph_string): Delete member `charset'.
(x_set_mouse_face_gc): Call FACE_FOR_CHAR to get face_id. Handle
the case that per char metric is not available correctly.
(x_fill_glyph_string): Handle the case that the specific glyph is
not available correctly.
(BUILD_CHAR_GLYPH_STRINGS): Don't set s->charset.
(BUILD_COMPOSITE_GLYPH_STRING): Likewise.
(x_new_font): Call FS_LOAD_FONT, not fs_load_font.
(x_new_fontset): Call fontset_ascii to get ASCII font name of the
fontset. Don't call FS_LOAD_FONT.
Kenichi Handa [Tue, 21 Mar 2000 00:43:10 +0000 (00:43 +0000)]
(Qx_charset_registry, Vface_default_registry):
Variables removed.
(clear_font_table, frame_update_line_height, load_face_font):
Adjusted for the change of fontset implementation.
(load_face_fontset_font): Function removed.
(pixel_point_size): New function.
(font_list): Argument type changed. Caller changed.
(LFACE_FONT): New macro.
(check_lface_attrs): Check attr[LFACE_FONT_INDEX].
(set_lface_from_font_name): Type of arg FONTNAME is changed to
Lisp_Object. Determine the font name by actually loading a font
by the specified pattern. Set LFACE_FONT (lface) to the specified
pattern. Even if a font is not found, don't try alternatives.
(Finternal_set_lisp_face_attribute): Handle `font' slot in lface.
(set_font_frame_param): If `font' is specified in lface, use it.
(Finternal_get_lisp_face_attribute): Handle `font' slot in lface.
(lface_same_font_attributes_p): Likewise.
(make_realized_face): Arguent changed. Caller changed. Set
face->ascii_face to face itself.
(free_realized_face): Free face->fontset if face is for ASCII.
(face_suitable_for_iso8859_1_p, face_suitable_for_charset_p,
deduce_unibyte_registry, x_charset_registry): Functions removed.
(free_realized_multibyte_face): New function.
(lookup_face, lookup_named_face, lookup_derived_face): Argument
changed. Caller changed.
(try_font_list): Argument type changed.
(face_fontset): Check `font' slot of ATTRS, not `family' slot.
(choose_face_font): Argument changed. Handle fontset properly.
(choose_face_fontset_font): Function removed.
(realize_default_face, realize_named_face): Don't remove the
former face here.
(realize_face): Argument changed. Caller changed. Remove face
with the arg former_face_id in advance. Load font for the new
face.
(realize_x_face): Argument changed. Caller changed. For a
multibyte character, share fontset with base_face. For a single
byte character, make a new realized fontset. Don't load a font
here.
(realize_tty_face): Argument changed. Caller changed.
(compute_char_face): Call FACE_FOR_CHAR, not FACE_FOR_CHARSET.
(face_at_buffer_position): Don't check multibyte_p for returning
DEFAULT_FACE_ID.
(face_at_string_position): Call FACE_SUITABLE_FOR_CHAR_P, not
FACE_SUITABLE_FOR_CHARSET_P.
(syms_of_xfaces): Remove code for Qx_charset_registry and
Vface_default_registry.
Kenichi Handa [Tue, 21 Mar 2000 00:38:14 +0000 (00:38 +0000)]
All codes rewritten or adjusted for the change of
fontset implementation. Now fontset is represented by char table.
(Vglobal_fontset_alist, font_idx_temp, my_strcasetbl): Variables
removed.
(my_strcasecmp): Function removed.
(Vfontset_table, next_fontset_id, Vdefault_fontset): New
variables.
(AREF, ASIZE): New macros.
(FONTSET_FROM_ID, FONTSET_ID, FONTSET_NAME, FONTSET_FRAME,
FONTSET_ASCII, FONTSET_BASE, BASE_FONTSET_P, FONTSET_REF,
FONTSET_REF_VIA_BASE, FONTSET_SET): New macros.
(fontset_ref, fontset_ref_via_base, fontset_set, make_fontset,
fontset_id_valid_p, font_family_registry, fontset_name,
fontset_ascii, free_face_fontset, face_suitable_for_char_p,
face_for_char, make_fontset_for_ascii_face, fontset_font_pattern):
New functions.
(fs_load_font): New arg FACE. Caller changed.
(fs_query_fontset): Argument changed. Caller changed.
(Fquery_fontset): call fs_query_fontset.
(fs_register_fontset, alloc_fontset_data, free_fontset_data):
Functions removed.
(clear_fontset_elements, check_registry_encoding,
check_fontset_name): New functions.
(syms_of_fontset): Set char-table-extra-slots property of fontset
to 3. Staticpro and initialize Vfontset_table and
Vdefault_fontset. Defsubr fontset_font and fontset_list.
Kenichi Handa [Tue, 21 Mar 2000 00:36:45 +0000 (00:36 +0000)]
(struct glyph): New member glyph_not_available_p.
Use 22 bits for face_id.
(enum lface_attribute_index): Add LFACE_FONT_INDEX.
(struct face): Delete member registry, new member ascii_face.
(FACE_SUITABLE_FOR_CHAR_P): Renamed from
FACE_SUITABLE_FOR_CHARSET_P. Caller changed.
(FACE_FOR_CHAR): Renamed from FACE_FOR_CHARSET. Caller changed.
(struct it): Delete member charset, new member
glyph_not_available_p.
Kenichi Handa [Tue, 21 Mar 2000 00:32:34 +0000 (00:32 +0000)]
(describe-font): Don't refer to
global-fontset-alist, instead call font-list.
(describe-fontset, list-fontsets, mule-diag): Likewise.
(print-fontset): Adjusted for the change of fontset
implementation.
Kenichi Handa [Tue, 21 Mar 2000 00:32:06 +0000 (00:32 +0000)]
(x-charset-registries): Variable
removed, instead the corresponding data is stored in the default
fontset.
(register-alternate-fontnames): Function removed.
(resolved-ascii-font): Variable removed.
(x-compose-font-name): Ignore the second argument REDOCE.
(x-complement-fontset-spec): Complement only an ASCII font and
element for those charsets than can use that ASCII font.
(generate-fontset-menu): Don't refer to global-fontset-alist,
instead call fontset-list.
(uninstantiated-fontset-alist): Variable removed.
(x-style-funcs-alist): Likewise.
(fontset-default-styles): Likewise.
(x-modify-font-name): Function removed.
(create-fontset-from-fontset-spec): Ignore the argument
STYLE-VARIANT.
(create-fontset-from-ascii-font): Docsting adjusted for the above
change.
(instantiate-fontset, resolve-fontset-name): Functions removed.
(fontset-list): Now implemented by C code.
Gerd Moellmann [Mon, 20 Mar 2000 12:24:13 +0000 (12:24 +0000)]
(handle_single_display_prop): Initialize local `value'.
(try_window_reusing_current_matrix): Don't call scroll run
function if run's current and desired position are the same;
this prevents cursor flickering.
Stefan Monnier [Sun, 19 Mar 2000 23:23:50 +0000 (23:23 +0000)]
(RE_STRING_CHAR): New macro.
(GET_CHAR_AFER_2): Remove.
(RE_TRANSLATE, RE_TRANSLATE_P): New macros moved from regex.h.
(enum re_opcode_t): Remove on_failure_jump_exclusive.
(print_partial_compiled_pattern, re_compile_fastmap)
(re_match_2_internal): Remove on_failure_jump_exclusive.
(regex_compile): Turn optimizable P+ loops into PP*, so that the
optimization only need to work for * (ie. can use of_keep_string_jump).
Remove the special case for .*\n since it is now covered by the general
optimization.
(re_search_2): Don't bother with `room'.
(skip_one_char): New function.
(skip_noops): Simplify since `memory' is not needed any more.
(mutually_exclusive_p): Restructure slightly to use `switch' and
add handling for "all" remaining cases.
(re_match_2_internal): Change on_failure_jump_smart to use
on_failure_keep_string_jump (and redirect the end-of-loop jump)
rather than on_failure_jump_exclusive.