Couple o' things:
1. When you add a new user interface feature, and you think people might not
like it, make sure you put something on the Options menu for this as well as
just documenting a magic incantation in NEWS.
2. Could we please please fix the namespace of the progress gauge, before it's
too late? I can fix it myself,
if you'd rather I do so; I just don't want to get into a conflict over this. I
think that you should make these
changes:
.*progress.* -> .*progress-gauge.*
progress -> remove this function
lprogress -> remove this function
Although you may have modelled progress gauges on messages, they are not the
same. In particular, a progress gauge is much more specialized than a message,
and correspondingly less frequent. Therefore, you should not use short,
ambiguous names, and there is no need for trivial convenience functions like
progress and lprogress.
Andy Piper wrote:
This actually fixes a whole bunch of bugs with gutters and friends
that
stopped progress gauges working properly. I have fixed these and it works
reasonably under X and windows so I have turned it on for font-lock. NEWS
documents how to turn it off if you don't like it.
This also fixes the 100% CPU bug under cygwin.
I am actually happy with the subwindow / gutter redisplay mechanism now. So
we just need to fix any remaining bugs.
andy
2000-03-16 Andy Piper <andy(a)xemacs.org>
* NEWS: update for new features.
* font-lock.el (font-lock-mode): use lprogress and friends for
progress management.
(font-lock-default-fontify-buffer): ditto.
(font-lock-fontify-syntactically-region): ditto.
(font-lock-fontify-keywords-region): ditto.
(font-lock-revert-cleanup): fix reverting.
(font-lock-revert-setup): ditto.
* gutter-items.el (progress-use-echo-area): new variable. Use the
echo area for progress gauges if non-nil.
(clear-progress): remove echo area stuff and defer to
clear-message.
(append-progress): dispatch non-command events after each progress
increment. Remove echo area stuff.
(abort-progress): remove echo area stuff and defer to
display-message.
(raw-append-progress): ditto. Dispatch non-command events after
gutter redisplay.
(display-progress): defer echo area stuff to display-message.
* event-Xt.c (emacs_Xt_force_event_pending): new function. Post a
synthetic event to the native system.
(reinit_vars_of_event_Xt): set force_event_pending to
emacs_Xt_force_event_pending.
* events.h (struct event_stream): add force_event_pending.
* specifier.c (recompute_one_cached_specifier_in_window): add
comment.
* redisplay.c (redisplay_frame): don't call
update_frame_subwindows. Reset subwindow cachels when
subwindows_changed, removing this was an optimization too far.
* redisplay-output.c (compare_runes): reorganize so that we catch
glyph changes when we want them. Set optimize_output when this
would help layouts.
(redisplay_output_layout): remove frame_really_changed, use
optimize_output instead.
* redisplay-msw.c (mswindows_output_display_block): reset
optimize_output after outputting a glyph.
* redisplay-x.c (x_output_display_block): ditto.
* redisplay-tty.c (tty_output_display_block): ditto.
* gutter.c: (specifier_vars_of_gutter): use new spec changed
functions.
(gutter_specs_changed): do specific gutter positions.
(top_gutter_specs_changed): new function. Only update the
specified gutter specs.
(bottom_gutter_specs_changed): ditto.
(left_gutter_specs_changed): ditto.
(right_gutter_specs_changed): ditto.
* gui.c (gui_item_hash_internal): new function, does a real hash.
(gui_item_id_hash): use it.
(gui_item_hash): hash the eval'ed gui_item.
* gui-x.c (popup_selection_callback): send an eval event to call
Fupdate_widget_instances.
* gui-msw.c (mswindows_handle_gui_wm_command): send an eval event
to call Fupdate_widget_instances.
* glyphs.h (struct Lisp_Image_Instance): add optimize_output flag.
(IMAGE_INSTANCE_OPTIMIZE_OUTPUT): access it.
* glyphs.c: (update_frame_subwindows): deleted.
(Fupdate_widget_instances): new function for updating the dirty
state of widgets that might have changed.
(syms_of_glyphs): add Qupdate_widget_instances.
(full_list_hash): hash a list completely.
(image_instance_hash): use it for items and properties.
* frame-msw.c (mswindows_size_frame_internal): remove unused
variable.
* faces.h (struct face_cachel): fix comment.
* event-stream.c (Fdispatch_non_command_events): new
function. Process non-command events, forcing an event cycle
beforehand.
(syms_of_event_stream): declare.
(event_stream_force_event_pending): new function. Force an event
on the native event queue so that an event cycle will occur next
time we check.
* event-msw.c:
(struct ntpipe_shove_stream):
(mswindows_enqueue_dispatch_event):
(mswindows_dequeue_dispatch_event):
(mswindows_cancel_dispatch_event):
(mswindows_pump_outstanding_events):
(mswindows_drain_windows_queue):
(mswindows_handle_paint):
(mswindows_wnd_proc):
(mswindows_key_to_emacs_keysym):
(get_process_input_waitable):
(emacs_mswindows_delete_stream_pair): re-indent file.
(mswindows_need_event): do not process further fds if the windows
fd is set, otherwise you get endless XM_BUMPQUEUE cycles. This
fixes the 100% cpu problem.
(reinit_vars_of_event_mswindows): set force_event_pending to 0.
* gutter-items.el (clear-progress):
(abort-progress): indentation changes.
(display-progress): don't clear progress.
(append-progress): compare messages with equal.
(raw-append-progress): use dispatch-non-command-events to flush
widget creation events.
------------------------------------------------------------------------
Name: prog.patch
prog.patch Type: Plain Text (text/plain)
Encoding: quoted-printable
------------------------------------------------------------------------
--------------------------------------------------------------
Dr Andy Piper
Senior Consultant Architect, BEA Systems Ltd
--
Ben
In order to save my hands, I am cutting back on my mail. I also write
as succinctly as possible -- please don't be offended. If you send me
mail, you _will_ get a response, but please be patient, especially for
XEmacs-related mail. If you need an immediate response and it is not
apparent in your message, please say so. Thanks for your understanding.
See also
http://www.666.com/ben/typing.html.