Always ends up this way, doesn't it?
I apologize to those waiting on the Mule on Windows code; I took what ended up
as a 2-3 week break to put in some gui stuff i was really wanting, including
dialog boxes and a bunch of stuff from an existing workspace.
This code has not yet been committed; I'll do that in a day or so.
BEFORE commenting on one of the items below, please read the source!
ben
Major UI changes:
-- real file dialog boxes under Windows
-- Under MS Win, keyboard traversal works in "question"-type dialog boxes [e.g.
the Revert-Buffer or Save-Buffers dialog boxes] and works somewhat in
general-type [currently, just the Edit->Search dialog box].
-- Help is now hyperlinkable. click on middle button or double-click of left
button links to help on that variable or function, and right button brings up
context menu entries allowing you to see the documentation or source on the
function and/or variable at point. If the normal right button menus were
specified using mode-popup-menu rather than just overriding from scratch, the
context items will appear automatically at the end.
-- Ctrl-T and Meta-T [capital T, with shift] move the current line one line down
and are suitable for autorepeat. transpose-lines is broken twice: its binding
is the nonrepeatable C-x C-t, and when you try to execute it many times, you
find that the *PREVIOUS* line is the one moving up or done.
-- Lisp-mode popup menu is different from menubar menu and more intelligently
suited for popup use.
Major Lisp changes:
-- general concept of "activate" action subsumes various random button2 hacks,
and you can configure the button strokes that do the activate action; currently
button2-click and button1-double-click. [note that this is button2-click, not
button2-down; this makes it possible to use button2-drag for something else,
e.g. initiate drag-drop. button2 is now bound to mouse-track, like button1,
giving you the ability to assign many different actions at once to it.]
-- extents can specify context menu items, which automatically appear when you
button3 on the extent.
-- new generalized function make-dialog-box for dialog boxes.
-- extents-at, extent-at-event, extents-at-event
-- "structured errors" -- `error' is now much more powerful and its expected
use
is for signalling errors of a particular type, just not type `error'; a whole
hierarchy of useful types has been created
-- mouse events now track button modifiers as well as key modifiers
-- "progress-display" renamed to "progress-feedback", and
lprogress-display ->
progress-feedback-with-label
2000-07-15 Ben Wing <ben(a)xemacs.org>
* autoload.el:
Fixed comments.
* cmdloop.el:
* cmdloop.el (yes-or-no-p):
* cmdloop.el (y-or-n-p):
Make these functions use should-use-dialog-box-p and not be
overridden in dialog.el.
* cus-dep.el:
* cus-dep.el (Custom-make-dependencies): Removed.
* cus-dep.el (Custom-make-dependencies-1): New.
* cus-dep.el (Custom-make-one-dependency): New.
New entry point for use in Makefiles, to avoid excessive
invocations.
* cus-edit.el (custom-variable-reset-saved):
* cus-edit.el (custom-variable-reset-standard):
* cus-edit.el (custom-save-resets):
Fix bytecompiler warnings.
* dialog.el:
* dialog.el (yes-or-no-p-dialog-box):
* dialog.el (yes-or-no-p-maybe-dialog-box): Removed.
* dialog.el (y-or-n-p-maybe-dialog-box): Removed.
* dialog.el (get-dialog-box-response):
* dialog.el (message-or-box):
* dialog.el (make-dialog-box):
* dialog.el (popup-dialog-box): New.
Avoid yes-or-no-p bogosities.
Create a general function `make-dialog-box' to encapsulate all
dialog box methods; easily extendable. popup-dialog-box now obsolete.
* dumped-lisp.el (preloaded-file-list):
Add dialog-items. Clean up. Group files by types.
* easymenu.el (easy-menu-add):
* easymenu.el (easy-menu-remove):
Account for accelerators.
* extents.el:
* extents.el (extent-list): New args, like in map-extents.
* extents.el (extent-at-event): New.
* extents.el (extents-at-event): New.
* font-lock.el:
* font-lock.el (font-lock-mode):
* font-lock.el (font-lock-default-fontify-buffer):
* font-lock.el (font-lock-default-unfontify-region):
* font-lock.el (font-lock-fontify-syntactically-region):
* font-lock.el (font-lock-fontify-keywords-region):
Use new progress-feedback names.
* font-lock.el (java-font-lock-identifier-regexp):
* font-lock.el (java-font-lock-class-name-regexp):
Fix bytecompiler warnings.
* gutter-items.el:
* gutter-items.el (progress-display-use-echo-area): Removed.
* gutter-items.el (progress-feedback-use-echo-area): New.
* gutter-items.el (progress-display-popup-period): Removed.
* gutter-items.el (progress-feedback-popup-period): New.
* gutter-items.el (set-progress-display-style): Removed.
* gutter-items.el (set-progress-feedback-style): New.
* gutter-items.el (progress-display-style): Removed.
* gutter-items.el (progress-feedback-style): New.
* gutter-items.el (progress-stack):
* gutter-items.el (progress-displayed-p): Removed.
* gutter-items.el (progress-feedbacked-p): New.
* gutter-items.el (clear-progress-display): Removed.
* gutter-items.el (clear-progress-feedback): New.
* gutter-items.el (progress-display-clear-when-idle): Removed.
* gutter-items.el (progress-feedback-clear-when-idle): New.
* gutter-items.el (remove-progress-display): Removed.
* gutter-items.el (remove-progress-feedback): New.
* gutter-items.el (progress-display-dispatch-non-command-events):
Removed.
* gutter-items.el (progress-feedback-dispatch-non-command-events): New.
* gutter-items.el (append-progress-display): Removed.
* gutter-items.el (append-progress-feedback): New.
* gutter-items.el (abort-progress-display): Removed.
* gutter-items.el (abort-progress-feedback): New.
* gutter-items.el (raw-append-progress-display): Removed.
* gutter-items.el (raw-append-progress-feedback): New.
* gutter-items.el (display-progress-display): Removed.
* gutter-items.el (display-progress-feedback): New.
* gutter-items.el (current-progress-display): Removed.
* gutter-items.el (current-progress-feedback): New.
* gutter-items.el (current-progress-display-label): Removed.
* gutter-items.el (current-progress-feedback-label): New.
* gutter-items.el (progress-display): Removed.
* gutter-items.el (progress-feedback): New.
Replace "progress-display" with "progress-feedback" globally.
* gutter-items.el (lprogress-display): Removed.
* gutter-items.el (progress-feedback-with-label): New.
Rename lprogress-display ==> progress-feedback-with-label.
* gutter-items.el (search-dialog-direction): Removed.
* gutter-items.el (search-dialog-text): Removed.
* gutter-items.el (search-dialog-callback): Removed.
* gutter-items.el (make-search-dialog): Removed.
Move to dialog-items.el.
* help.el:
* help.el (help-mode-quit):
* help.el (mode-for-help): New.
* help.el (help-sticky-window): New.
* help.el (help-window-config): New.
* help.el (with-displaying-help-buffer):
* help.el (function-at-event): New.
* help.el (help-symbol-regexp): New.
* help.el (help-symbol-run-function-1): New.
* help.el (help-symbol-run-function): New.
* help.el (help-symbol-function-context-menu): New.
* help.el (help-symbol-variable-context-menu): New.
* help.el (help-symbol-function-and-variable-context-menu): New.
* help.el (frob-help-extents): New.
* help.el (describe-function-1):
* help.el (variable-at-point):
* help.el (variable-at-event): New.
* help.el (describe-variable):
Major overhaul.
- Make functions and variables be mousable.
- Middle button hyperlinks.
- New context-menu entries.
* keydefs.el:
* keydefs.el (global-map):
New key bindings to move lines up and down.
* lisp-mode.el:
* lisp-mode.el (construct-lisp-mode-menu): New.
* lisp-mode.el (emacs-lisp-mode-popup-menu):
* lisp-mode.el (lisp-interaction-mode-menubar-menu):
* lisp-mode.el (emacs-lisp-mode-menubar-menu):
* lisp-mode.el (lisp-indent-function): Indent "flet" entries better.
Make popup and menubar menus be different. Popup menu uses
clicked location and automatically assumes symbol under the mouse
for various commands.
* menubar-items.el:
* menubar-items.el (bookmark-menu-filter): Add accelerators.
* menubar-items.el (buffers-menu-omit-chars-list): Include 'd'.
* menubar-items.el (global-popup-menu): Removed.
* menubar-items.el (mode-popup-menu): Removed.
* menubar-items.el (activate-popup-menu-hook): Removed.
* menubar-items.el (popup-mode-menu): Removed.
* menubar-items.el (popup-buffer-menu): Removed.
* menubar-items.el (popup-menubar-menu): Removed.
Move to menubar.el.
* menubar.el:
* menubar.el (global-popup-menu): New.
* menubar.el (mode-popup-menu): New.
* menubar.el (activate-popup-menu-hook): New.
* menubar.el (last-popup-menu-event): New.
* menubar.el (popup-mode-menu): New.
* menubar.el (popup-buffer-menu): New.
* menubar.el (popup-menubar-menu): New.
* menubar.el (menu-call-at-event): New.
Move non-content functions here. Add support for context menu
items on extents.
* minibuf.el (minibuffer-history-uniquify):
Typo fix.
* minibuf.el (read-file-name-1):
Call new file dialog box if it exists.
* minibuf.el (mouse-rfn-setup-vars):
Clean up "chop" action.
* mouse.el:
* mouse.el (button2): Now bound to mouse-track.
* mouse.el (click-inside-extent-p):
* mouse.el (point-inside-extent-p):
* mouse.el (point-inside-selection-p):
* mouse.el (mouse-drag-or-yank): Removed.
* mouse.el (mouse-begin-drag-n-drop): New.
* mouse.el (mouse-eval-sexp):
* mouse.el (mouse-track-activate-strokes): New.
* mouse.el (mouse-track-do-activate): New.
* mouse.el (mouse-track):
* mouse.el (default-mouse-track-event-is-with-button): New.
* mouse.el (default-mouse-track-cleanup-hook):
* mouse.el (default-mouse-track-drag-hook):
* mouse.el (default-mouse-track-drag-up-hook):
* mouse.el (default-mouse-track-click-hook):
Merge drag-n-drop into mouse-track.
Add general "activate" support to replace specific button2 kludges.
Use "button modifier" support in mouse-track.
* package-get.el (package-get-dependencies): Fix bytecompiler warnings.
* package-ui.el:
* package-ui.el (pui-menu):
* package-ui.el (pui-popup-context-sensitive): Removed.
Fix bytecompiler warnings.
Clean up popup code a bit.
* select.el (get-selection-no-error): Fix bytecompiler warnings.
* simple.el:
* simple.el (transpose-lines):
* simple.el (transpose-line-up): New.
* simple.el (transpose-line-down): New.
* simple.el (transpose-subr):
* simple.el (transpose-subr-1): Removed.
Clean up, add functions to move lines up and down.
* startup.el (mail-host-address):
* startup.el (user-mail-address):
Customize.
* subr.el:
* subr.el (set-symbol-value-in-buffer): New.
* subr.el (error):
* subr.el (check-argument-type):
* subr.el (defined-error-p): New.
Add structured error support.
* toolbar-items.el (toolbar-compile):
Use new make-dialog-box.
* update-elc.el:
* userlock.el (ask-user-about-lock-dbox):
* userlock.el (ask-user-about-supersession-threat-dbox):
* userlock.el (ask-user-about-lock):
* userlock.el (ask-user-about-supersession-threat):
Use new make-dialog-box.
Add safety checks; use should use-dialog-box-p.
* window-xemacs.el:
* window-xemacs.el (__buffer-dedicated-frame):
* window-xemacs.el (buffer-dedicated-frame): New.
* window-xemacs.el (set-buffer-dedicated-frame): New.
Move dedicated-frame stuff into lisp.
2000-07-15 Ben Wing <ben(a)xemacs.org>
* s/cygwin32.h:
* s/cygwin32.h (CYGWIN_CONV_PATH):
Add missing logb prototype for v1.1.
Use post-b20 names and alias to pre-b20 names when pre-b20.
* s/windowsnt.h: [5].
2000-07-15 Ben Wing <ben(a)xemacs.org>
* Makefile.in.in (x_objs):
* Makefile.in.in (sheap_objs):
* Makefile.in.in (objs):
added win32.o, cosmetic cleanups.
* alloc.c (Fmake_byte_code):
[[[1]]]: Changes for new LIST_LOOP, EXTERNAL_LIST_LOOP,
etc. macros which declare their own args now.
* alloc.c (syms_of_alloc):
[[[2]]]: Use DEFSYMBOL, DEFKEYWORD, DEFERROR and friends.
* buffer.c:
Moved buffer-dedicated-frame, set-buffer-dedicated-frame into lisp.
* buffer.c (Fget_file_buffer):
Fixed GCPRO problem.
* buffer.c (get_truename_buffer):
Fixed comment about GC checking.
* buffer.c (syms_of_buffer):
Undeclared those dedicated frame funs.
[2].
* buffer.h:
Define convenience macros for internal/external conversions.
[[[3]]]: Define codesys aliases Qcommand_argument_encoding
and Qenvironment_variable_encoding for cleaner code.
* bufslots.h:
Remove dedicated-frame; in lisp.
* bytecode.c (funcall_compiled_function):
[1].
* bytecode.c (syms_of_bytecode):
[2].
* console-msw.c:
* console-msw.c (mswindows_show_console): Rewrote.
* console-msw.c (Fmswindows_debugging_output): New.
Sends to OutputDebugString (special MSWin debugger interface).
* console-msw.c (Fmswindows_message_box):
Fixed stupid bugs so it works when called from kill-emacs.
* console-msw.c (syms_of_console_mswindows):
Declare Fmswindows_debugging_output.
* console-msw.h:
New MSWin prototypes.
* console-msw.h (struct mswindows_frame):
New entry last-click-mods for improved button-modifier support.
* console-msw.h (FRAME_MSWINDOWS_POPUP):
New struct entry `popup' with corresponding accessor.
* console-x.c:
* console-x.c (split_up_display_spec):
* console-x.c (get_display_arg_connection):
* console-x.c (x_semi_canonicalize_console_connection):
* console-x.c (x_canonicalize_device_connection):
[[[6]]]: Change char to more specific type.
[[[8]]]: Make use of abstracting codesys aliases defined in [3], [4];
* console-x.c (x_semi_canonicalize_console_connection):
* console-x.c (x_canonicalize_device_connection):
[[[9]]]: Fix up error signalling to use new structured error system.
* console-x.h:
[[[4]]]: Define codesys aliases:
Qlwlib_encoding, Qx_atom_name_encoding, Qx_font_name_encoding,
Qx_color_name_encoding, Qx_display_name_encoding.
* console.h (struct console_methods):
New method make_dialog_box_internal supersedes older
popup_dialog_box method.
* data.c:
Define many new errors, part of new structured errors.
* data.c (init_errors_once_early):
* data.c (syms_of_data):
[2].
* device-msw.c (mswindows_init_device):
[[[5]]]: Cleanup to support NT 3.51.
* device-msw.c (decode_devmode): Cleanup.
* device-msw.c (mswindows_handle_print_setup_dialog_box):
* device-msw.c (mswindows_handle_print_dialog_box):
* device-msw.c (mswindows_handle_page_setup_dialog_box):
* device-msw.c (syms_of_device_mswindows):
Delete the dialog box primitives recently introduced by Kirill and
instead interface to general dialog box interface.
* device-x.c:
* device-x.c (compute_x_app_name):
* device-x.c (x_init_device):
* device-x.c (Fx_valid_keysym_name_p):
* device-x.c (Fx_set_font_path):
[6].
[7].
* device.h (wrap_device): New.
First of its kind; meant to replace XSETDEVICE.
* dialog-msw.c: Many file-dialog symbols.
* dialog-msw.c (mswindows_register_popup_frame): New.
* dialog-msw.c (mswindows_is_dialog_msg): New.
For supporting kbd traversal in dialog boxes.
* dialog-msw.c (dialog_proc):
Support hitting ESC in dialogs.
* dialog-msw.c (struct):
Common dialog box errors.
* dialog-msw.c (handle_file_dialog_box): New.
Add file dialog code.
* dialog-msw.c (handle_question_dialog_box):
Redo existing code to support new question dialog syntax.
* dialog-msw.c (console_type_create_dialog_mswindows):
We support new dialog console method.
* dialog-msw.c (syms_of_dialog_mswindows):
* dialog-msw.c (vars_of_dialog_mswindows):
New file dialog symbols, vars.
* dialog-x.c:
* dialog-x.c (maybe_run_dbox_text_callback):
* dialog-x.c (dbox_descriptor_to_widget_value):
* dialog-x.c (x_make_dialog_box_internal):
* dialog-x.c (console_type_create_dialog_x):
Mule-ize entire file.
Redo to support question dialog syntax.
[6].
* dialog.c:
* dialog.c (Fmake_dialog_box_internal):
* dialog.c (syms_of_dialog):
Kill old popup-dialog-box, replace with new primitive.
Just call device method or signal error.
* eldap.c (Fldap_open):
* eldap.c (Fldap_search_basic):
* eldap.c (Fldap_add):
* eldap.c (Fldap_modify):
[1].
[7].
* emacs.c:
* emacs.c (make_arg_list_1):
* emacs.c (make_arg_list):
Mule-ize call to dll_init().
[6].
[8].
* emacs.c (make_argc_argv):
* emacs.c (free_argc_argv):
* emacs.c (init_cmdargs):
* emacs.c (main_1):
* emacs.c (Fkill_emacs):
* emacs.c (Fdump_emacs):
Update comments about what can be used in syms_* etc.
Call init_win32() when necessary.
Fix up MS Win dialog box in kill-buffer to actually work right.
[7].
* eval.c:
* eval.c (For):
* eval.c (Fand):
* eval.c (Fprogn):
* eval.c (Fprog1):
* eval.c (Fprog2):
* eval.c (FletX):
* eval.c (Flet):
* eval.c (condition_case_3):
* eval.c (Feval):
* eval.c (function_argcount):
* eval.c (funcall_lambda):
[1].
* eval.c (type_error): New.
* eval.c (maybe_type_error): New.
* eval.c (continuable_type_error): New.
* eval.c (maybe_continuable_type_error): New.
* eval.c (type_error_with_frob): New.
* eval.c (maybe_type_error_with_frob): New.
* eval.c (continuable_type_error_with_frob): New.
* eval.c (maybe_continuable_type_error_with_frob): New.
New functions for use with structured errors.
* event-Xt.c:
* event-Xt.c (x_event_to_emacs_event):
Buttons are now modifiers too.
* event-Xt.c (emacs_Xt_current_event_timestamp):
Implement new event method.
* event-Xt.c (reinit_vars_of_event_Xt): Set it.
* event-msw.c:
* event-msw.c (ntpipe_shove_writer): [5].
* event-msw.c (mswindows_enqueue_mouse_button_event):
* event-msw.c (mswindows_drain_windows_queue):
* event-msw.c (mswindows_wnd_proc): [7].
* event-msw.c (mswindows_current_layout_has_AltGr): [5].
* event-msw.c (mswindows_modifier_state):
Throughout: support new button modifiers.
* event-msw.c (emacs_mswindows_current_event_timestamp):
Implement new event method.
* event-msw.c (reinit_vars_of_event_mswindows): Set it.
* event-stream.c:
* event-stream.c (event_stream_current_event_timestamp): New.
* event-stream.c (maybe_kbd_translate): New functionality.
* event-stream.c (vars_of_event_stream):
Document new kbd-translate-table functionality.
* event-stream.c (Fcurrent_event_timestamp): New.
New primitive for use in fabricated events.
* event-stream.c (syms_of_event_stream): [2]. Declare new primitive.
* events-mod.h (XEMACS_MOD_BUTTON1): new button modifiers.
* events.c:
* events.c (Fmake_event):
* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY):
[1].
[9].
* events.c (format_event_object): fix gcc warnings.
* events.c (Fevent_timestamp): Document new primitives.
* events.c (TIMESTAMP_HALFSPACE): New.
* events.c (Fevent_timestamp_lessp): New. New primitive for
comparing timestamps correctly (half-space algorithm).
* events.c (Fevent_modifier_bits): Doc fix.
* events.c (Fevent_modifiers): Major doc addition.
* events.c (event_x_y_pixel_internal): Typo fix.
* events.c (syms_of_events): Declare new primitives.
* events.h:
Update long comment for button modifiers, timestamps.
* events.h (struct event_stream):
New current_event_timestamp method.
* extents.c:
* extents.c (extent_in_region_p):
* extents.c (decode_extent):
* extents.c (Fset_extent_parent):
* extents.c (decode_map_extents_flags):
Fix gcc warnings.
[9].
* extents.c (struct extent_at_arg):
* extents.c (decode_extent_at_flag):
* extents.c (extent_at_mapper):
* extents.c (extent_at_bytind):
* extents.c (Fextent_at): Adapt to new lower-level interface. [9].
* extents.c (Fextents_at): New primitive. [9].
* extents.c (symbol_to_glyph_layout): [9].
Support new primitive `extents-at'.
* extents.c (get_text_property_bytind):
extent_at_bytind has another arg.
[9].
* extents.c (syms_of_extents): New primitive.
* file-coding.c (Fmake_coding_system): [1].
* file-coding.c (subsidiary_coding_system): fix gcc warning
* file-coding.c (syms_of_file_coding): [2].
* fileio.c (Fexpand_file_name):
* fileio.c (Fsysnetunam):
* fileio.c (Ffile_exists_p):
* fileio.c (Ffile_executable_p):
* fileio.c (Fverify_visited_file_modtime):
Clean up GCPROing.
* fileio.c (syms_of_fileio): [2].
* filelock.c (lock_file_1):
* filelock.c (current_lock_owner):
* filelock.c (lock_if_free):
* filelock.c (lock_file):
* filelock.c (unlock_file):
Clean up GCPROing.
* fns.c (concat): Fix gcc warning.
* fns.c (Fmember):
* fns.c (Fold_member):
* fns.c (Fmemq):
* fns.c (Fold_memq):
* fns.c (memq_no_quit):
* fns.c (Fassoc):
* fns.c (Fold_assoc):
* fns.c (Fassq):
* fns.c (Fold_assq):
* fns.c (assq_no_quit):
* fns.c (Frassoc):
* fns.c (Fold_rassoc):
* fns.c (Frassq):
* fns.c (Fold_rassq):
* fns.c (rassq_no_quit):
* fns.c (Fdelete):
* fns.c (Fold_delete):
* fns.c (Fdelq):
* fns.c (Fold_delq):
* fns.c (delq_no_quit):
* fns.c (Fremassoc):
* fns.c (Fremassq):
* fns.c (remassq_no_quit):
* fns.c (Fremrassoc):
* fns.c (Fremrassq):
* fns.c (remrassq_no_quit):
* fns.c (Freverse):
* fns.c (mapcar1):
[1].
* frame-msw.c (mswindows_init_frame_1):
* frame-msw.c (mswindows_delete_frame):
Register popups with dialog code so keyboard traversing works.
* frame-tty.c (tty_raise_frame_no_select): [1].
* frame-x.c:
* frame-x.c (x_set_frame_text_value):
* frame-x.c (x_set_frame_properties):
* frame-x.c (x_create_widgets):
[7].
* frame.c:
* frame.c (Fmouse_pixel_position): Minor doc fixes.
* frame.h (wrap_frame): New.
Macro like wrap_device.
* general.c:
* general.c (SYMBOL):
* general.c (syms_of_general):
Major reorg. This is now just a wrapper and symbols themselves
are listed in general-slots.h.
* glyphs-eimage.c (tiff_instantiate): Need cast to fix warning.
* glyphs-msw.c (mswindows_resource_instantiate): [5].
* glyphs-msw.c (mswindows_native_layout_instantiate):
Add DS_CONTROL so keyboard traversal will work.
* glyphs-widget.c:
* glyphs-widget.c (syms_of_glyphs_widget):
Move some symbols to general-slots.h.
* glyphs-x.c:
* glyphs-x.c (xbm_instantiate_1):
* glyphs-x.c (x_xbm_instantiate):
* glyphs-x.c (x_xface_instantiate):
* glyphs-x.c (autodetect_instantiate):
* glyphs-x.c (cursor_font_instantiate):
* glyphs-x.c (x_update_widget):
* glyphs-x.c (x_widget_instantiate):
* glyphs.c (bitmap_to_lisp_data):
* glyphs.c (pixmap_to_lisp_data):
[7].
* glyphs.c (syms_of_glyphs):
[2].
* gui-x.c:
* gui-x.c (print_widget_value):
* 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):
* gui-x.c (gui_items_to_widget_values_1):
* gui-x.c (gui_items_to_widget_values):
* gui-x.c (syms_of_gui_x):
* gui-x.c (vars_of_gui_x):
Mule-ize entire file. Move menu-no-selection-hook to gui.c.
[9].
* gui-x.h:
Muleize, prototype changes matching gui-x.c.
* gui.c:
* gui.c (separator_string_p):
* gui.c (gui_item_add_keyval_pair):
* gui.c (make_gui_item_from_keywords_internal):
* gui.c (signal_too_long_error):
* gui.c (parse_gui_item_tree_item):
* gui.c (syms_of_gui):
* gui.c (vars_of_gui):
* gui.h:
menu-no-selection-hook moved here (used by MSWin).
Move some symbols to general-slots.h.
[6].
[9].
* insdel.c (get_buffer_pos_char):
* insdel.c (get_buffer_range_char):
Add GC comments.
* keymap.c (keymap_lookup_directly):
* keymap.c (keymap_store):
* keymap.c (ensure_meta_prefix_char_keymapp):
* keymap.c (describe_map):
* keymap.h:
Support new button modifiers.
* lisp-disunion.h (wrap_object):
* lisp-disunion.h (XSETOBJ):
Rename make_obj to wrap_object.
* lisp-union.h:
* lisp-union.h (make_int):
* lisp-union.h (make_char):
Support wrap_object.
* lisp.h:
* lisp.h (LIST_LOOP):
* lisp.h (EXTERNAL_LIST_LOOP):
* lisp.h (LIST_LOOP_2):
* lisp.h (EXTERNAL_LIST_LOOP_1):
* lisp.h (EXTERNAL_LIST_LOOP_2):
* lisp.h (EXTERNAL_LIST_LOOP_3):
* lisp.h (EXTERNAL_LIST_LOOP_4_NO_DECLARE):
* lisp.h (PRIVATE_EXTERNAL_LIST_LOOP_6):
* lisp.h (GET_EXTERNAL_LIST_LENGTH):
* lisp.h (EXTERNAL_ALIST_LOOP_5):
* lisp.h (EXTERNAL_ALIST_LOOP_6):
* lisp.h (EXTERNAL_ALIST_LOOP_6_NO_DECLARE):
* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE):
* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_7):
* lisp.h (struct Lisp_Symbol):
* lisp.h (maybe_continuable_error_with_frob):
Fix up section comments.
Add new types for char to indicate usage.
Delete symbols auto-generated from general-slots.h.
Add prototypes for structured error functions.
Add long comments describing looping macros and change interface
so that lvalues are automatically declared.
Add NO_DECLARE macro in case callers want to declare lvalues
themselves.
* lread.c (read_syntax_error):
* lread.c (continuable_read_syntax_error):
* lread.c (read_structure):
* lread.c (sequence_reader):
* lread.c (read_list_conser):
* lread.c (read_compiled_function):
Rename syntax_error and continuable_syntax_error to avoid clash
with same-named structured error functions.
* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
* menubar-msw.c (populate_menu_add_item):
* menubar-msw.c (populate_or_checksum_helper):
[5].
[9].
* menubar-x.c:
* menubar-x.c (menu_item_descriptor_to_widget_value_1):
Mule-ize whole file.
* menubar.c (Fnormalize_menu_item_name): Add optimization.
* mule-charset.c (Fmake_charset):
* mule-wnnfns.c (Fwnn_set_param):
[1].
* ntproc.c (create_child):
* ntproc.c (Fwin32_set_current_locale):
Add comments portending doom.
* objects-msw.c:
* objects-msw.c (old_font_enum_callback_2):
* objects-msw.c (font_enum_callback_1):
* objects-msw.c (mswindows_enumerate_fonts):
[5].
* objects-x.c:
* objects-x.c (allocate_nearest_color):
* objects-x.c (x_parse_nearest_color):
* objects-x.c (x_initialize_color_instance):
* objects-x.c (x_print_color_instance):
* objects-x.c (x_finalize_color_instance):
* objects-x.c (x_valid_color_name_p):
* objects-x.c (x_initialize_font_instance):
* objects-x.c (x_print_font_instance):
* objects-x.c (valid_x_font_name_p):
* objects-x.c (truename_via_FONT_prop):
* objects-x.c (truename_via_random_props):
* objects-x.c (truename_via_XListFonts):
* objects-x.c (x_font_truename):
* objects-x.c (x_font_instance_truename):
* objects-x.c (x_font_instance_properties):
* objects-x.c (x_list_fonts):
* objects-x.c (x_find_charset_font):
Mule-ize entire file.
[7].
* objects-x.h:
Mule-verify.
* print.c:
* print.c (std_handle_out_external):
* print.c (debug_print_no_newline):
* print.c (syms_of_print):
Output to all debugger kinds in debug-print.
Fix console-output code under MSWin to actually work.
* process-nt.c (send_signal):
* process-nt.c (nt_create_process):
Use newer Unicode macros.
* process-unix.c (unix_create_process):
* process-unix.c (unix_canonicalize_host_name):
* process-unix.c (unix_open_network_stream):
[7].
* scrollbar-x.c:
Mule-verify.
* search.c (syms_of_search):
[2].
* select-msw.c (mswindows_destroy_selection):
Use LIST_LOOP_2.
* select-x.c (symbol_to_x_atom):
[7].
* select.c (syms_of_select):
[2].
* sound.c (Fplay_sound_file):
[7].
* specifier.c:
* specifier.c (decode_specifier_type):
* specifier.c (Fvalid_specifier_locale_type_p):
* specifier.c (check_valid_locale_or_locale_type):
* specifier.c (decode_locale):
* specifier.c (decode_locale_type):
* specifier.c (decode_locale_list):
* specifier.c (check_valid_domain):
* specifier.c (decode_specifier_tag_set):
* specifier.c (Fcanonicalize_tag_set):
* specifier.c (Fdefine_specifier_tag):
* specifier.c (Fspecifier_tag_predicate):
* specifier.c (check_valid_inst_list):
* specifier.c (check_valid_spec_list):
* specifier.c (decode_how_to_add_specification):
* specifier.c (check_modifiable_specifier):
* specifier.c (specifier_add_spec):
* specifier.c (boolean_validate):
* specifier.c (display_table_validate):
[9].
* specifier.c (syms_of_specifier):
Move some symbols to general-slots.h.
[2].
* symbols.c:
* symbols.c (Fmapatoms):
* symbols.c (Fapropos_internal):
Add GCPROs.
* symbols.c (set_default_buffer_slot_variable):
* symbols.c (set_default_console_slot_variable):
[1].
* symbols.c (defsymbol_massage_name_1):
* symbols.c (defkeyword_massage_name):
* symbols.c (deferror_1):
* symbols.c (deferror):
* symbols.c (deferror_massage_name_and_message):
* symeval.h:
* symeval.h (DEFSYMBOL):
Support DEFSYMBOL*, DEFKEYWORD, DEFERROR
* symbols.c (syms_of_symbols):
[2].
* symsinit.h:
* symsinit.h (init_win32): New.
Also new is syms_of_dialog_mswindows.
* syswindows.h:
Add new Unicode macros, missing Cygwin wide-char functions,
convenience conversion macros for Qmswindows_tstr, macros for
encapsulating required MSWin <-> Cygwin filename conversions,
prototype for dynamically-extracted (not in NT 3.51) functions.
* toolbar-x.c:
Mule-verify.
* tooltalk.c (Fadd_tooltalk_message_arg):
* tooltalk.c (Fadd_tooltalk_pattern_attribute):
* tooltalk.c (Fadd_tooltalk_pattern_arg):
[7].
* tooltalk.c (syms_of_tooltalk):
[2].
* unexnt.c:
* unexnt.c (unexec):
Fix up headers, declaration of unexec() to be more standard.
--
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/chronic-pain/
? confdefs.h
? lib-src/etags.pdb
? lib-src/hexl.pdb
? lib-src/i.pdb
? lib-src/make-docfile.pdb
? lib-src/mmencode.pdb
? lib-src/movemail.pdb
? lib-src/sorted-doc.pdb
? lib-src/vc50.pdb
? lib-src/wakeup.pdb
? nt/obj
? src/win32.c.save
? src/win32.i
? src/NEEDTODUMP
? src/runxemacs.pdb
? src/xemacs.opt
? src/temacs.map
? src/temacs.opt
? src/temacs.pdb
? src/Xpm.dll
? src/testalloca.c
? src/testalloca.s
? src/temacs.bsc
? tests/automated/database-tests.el.bad
Index: ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/ChangeLog,v
retrieving revision 1.155.2.187
diff -u -r1.155.2.187 ChangeLog
--- ChangeLog 2000/07/13 04:55:52 1.155.2.187
+++ ChangeLog 2000/07/18 10:35:56
@@ -1,3 +1,8 @@
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * Makefile.in.in (configure):
+ all-elcs target now uses update-elc-2.el not update-elc.sh
+
2000-07-13 Martin Buchholz <martin(a)xemacs.org>
* configure.in: --with-menubars=yes should not be an error.
Index: Makefile.in.in
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/Attic/Makefile.in.in,v
retrieving revision 1.1.2.24
diff -u -r1.1.2.24 Makefile.in.in
--- Makefile.in.in 2000/07/10 05:19:41 1.1.2.24
+++ Makefile.in.in 2000/07/18 10:35:56
@@ -289,7 +289,8 @@
## Build XEmacs and recompile out-of-date and missing .elc files along
## the way.
all-elc all-elcs: lib-src lwlib dump-elcs src
- MAKE='$(MAKE)' EMACS='./src/$(PROGNAME)' $(SHELL)
${srcdir}/lib-src/update-elc.sh
+ ${blddir}/src/${PROGNAME} -batch -vanilla \
+ -l update-elc-2.el -f batch-update-elc-2 lisp
## Sub-target for all-elc.
dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs
Index: lib-src/ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lib-src/ChangeLog,v
retrieving revision 1.65.2.93
diff -u -r1.65.2.93 ChangeLog
--- ChangeLog 2000/07/13 00:42:23 1.65.2.93
+++ ChangeLog 2000/07/18 10:35:59
@@ -1,3 +1,9 @@
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * etags.c (add_regex): added commented out code for use figuring
+ out Windows quoting problems.
+ * hexl.c (main): fixed warnings about possible used uninitialized.
+
2000-07-12 Martin Buchholz <martin(a)xemacs.org>
* gnuserv.c:
Index: lib-src/etags.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lib-src/etags.c,v
retrieving revision 1.22.2.10
diff -u -r1.22.2.10 etags.c
--- etags.c 2000/06/12 04:17:45 1.22.2.10
+++ etags.c 2000/07/18 10:36:01
@@ -4840,6 +4840,10 @@
patbuf->buffer = NULL;
patbuf->allocated = 0;
+#if 0 /* useful when debugging windows quoting convention problems */
+ printf ("Compiling regex pattern: %s\n", regexp_pattern);
+#endif
+
err = re_compile_pattern (regexp_pattern, strlen (regexp_pattern), patbuf);
if (err != NULL)
{
Index: lib-src/hexl.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lib-src/hexl.c,v
retrieving revision 1.1.1.1.4.5
diff -u -r1.1.1.1.4.5 hexl.c
--- hexl.c 2000/07/11 01:01:18 1.1.1.1.4.5
+++ hexl.c 2000/07/18 10:36:01
@@ -149,7 +149,7 @@
#endif
for (;;)
{
- register int i, c, d;
+ register int i, c = 0, d;
#define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
@@ -195,7 +195,7 @@
string[17] = '\0';
for (;;)
{
- register int i, c;
+ register int i, c = 0;
for (i=0; i < 16; ++i)
{
Index: lisp/ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.156.2.403
diff -u -r1.156.2.403 ChangeLog
--- ChangeLog 2000/07/17 09:58:08 1.156.2.403
+++ ChangeLog 2000/07/18 10:36:04
@@ -1,3 +1,245 @@
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * autoload.el:
+ Fixed comments.
+
+ * cmdloop.el:
+ * cmdloop.el (yes-or-no-p):
+ * cmdloop.el (y-or-n-p):
+ Make these functions use should-use-dialog-box-p and not be
+ overridden in dialog.el.
+
+ * cus-dep.el:
+ * cus-dep.el (Custom-make-dependencies): Removed.
+ * cus-dep.el (Custom-make-dependencies-1): New.
+ * cus-dep.el (Custom-make-one-dependency): New.
+ New entry point for use in Makefiles, to avoid excessive
+ invocations.
+
+ * cus-edit.el (custom-variable-reset-saved):
+ * cus-edit.el (custom-variable-reset-standard):
+ * cus-edit.el (custom-save-resets):
+ Fix bytecompiler warnings.
+
+ * dialog.el:
+ * dialog.el (yes-or-no-p-dialog-box):
+ * dialog.el (yes-or-no-p-maybe-dialog-box): Removed.
+ * dialog.el (y-or-n-p-maybe-dialog-box): Removed.
+ * dialog.el (get-dialog-box-response):
+ * dialog.el (message-or-box):
+ * dialog.el (make-dialog-box):
+ * dialog.el (popup-dialog-box): New.
+ Avoid yes-or-no-p bogosities.
+ Create a general function `make-dialog-box' to encapsulate all
+ dialog box methods; easily extendable. popup-dialog-box now obsolete.
+
+ * dumped-lisp.el (preloaded-file-list):
+ Add dialog-items. Clean up. Group files by types.
+
+ * easymenu.el (easy-menu-add):
+ * easymenu.el (easy-menu-remove):
+ Account for accelerators.
+
+ * extents.el:
+ * extents.el (extent-list): New args, like in map-extents.
+ * extents.el (extent-at-event): New.
+ * extents.el (extents-at-event): New.
+
+ * font-lock.el:
+ * font-lock.el (font-lock-mode):
+ * font-lock.el (font-lock-default-fontify-buffer):
+ * font-lock.el (font-lock-default-unfontify-region):
+ * font-lock.el (font-lock-fontify-syntactically-region):
+ * font-lock.el (font-lock-fontify-keywords-region):
+ Use new progress-feedback names.
+
+ * font-lock.el (java-font-lock-identifier-regexp):
+ * font-lock.el (java-font-lock-class-name-regexp):
+ Fix bytecompiler warnings.
+
+ * gutter-items.el:
+ * gutter-items.el (progress-display-use-echo-area): Removed.
+ * gutter-items.el (progress-feedback-use-echo-area): New.
+ * gutter-items.el (progress-display-popup-period): Removed.
+ * gutter-items.el (progress-feedback-popup-period): New.
+ * gutter-items.el (set-progress-display-style): Removed.
+ * gutter-items.el (set-progress-feedback-style): New.
+ * gutter-items.el (progress-display-style): Removed.
+ * gutter-items.el (progress-feedback-style): New.
+ * gutter-items.el (progress-stack):
+ * gutter-items.el (progress-displayed-p): Removed.
+ * gutter-items.el (progress-feedbacked-p): New.
+ * gutter-items.el (clear-progress-display): Removed.
+ * gutter-items.el (clear-progress-feedback): New.
+ * gutter-items.el (progress-display-clear-when-idle): Removed.
+ * gutter-items.el (progress-feedback-clear-when-idle): New.
+ * gutter-items.el (remove-progress-display): Removed.
+ * gutter-items.el (remove-progress-feedback): New.
+ * gutter-items.el (progress-display-dispatch-non-command-events): Removed.
+ * gutter-items.el (progress-feedback-dispatch-non-command-events): New.
+ * gutter-items.el (append-progress-display): Removed.
+ * gutter-items.el (append-progress-feedback): New.
+ * gutter-items.el (abort-progress-display): Removed.
+ * gutter-items.el (abort-progress-feedback): New.
+ * gutter-items.el (raw-append-progress-display): Removed.
+ * gutter-items.el (raw-append-progress-feedback): New.
+ * gutter-items.el (display-progress-display): Removed.
+ * gutter-items.el (display-progress-feedback): New.
+ * gutter-items.el (current-progress-display): Removed.
+ * gutter-items.el (current-progress-feedback): New.
+ * gutter-items.el (current-progress-display-label): Removed.
+ * gutter-items.el (current-progress-feedback-label): New.
+ * gutter-items.el (progress-display): Removed.
+ * gutter-items.el (progress-feedback): New.
+ Replace "progress-display" with "progress-feedback"
globally.
+
+ * gutter-items.el (lprogress-display): Removed.
+ * gutter-items.el (progress-feedback-with-label): New.
+ Rename lprogress-display ==> progress-feedback-with-label.
+
+ * gutter-items.el (search-dialog-direction): Removed.
+ * gutter-items.el (search-dialog-text): Removed.
+ * gutter-items.el (search-dialog-callback): Removed.
+ * gutter-items.el (make-search-dialog): Removed.
+ Move to dialog-items.el.
+
+ * help.el:
+ * help.el (help-mode-quit):
+ * help.el (mode-for-help): New.
+ * help.el (help-sticky-window): New.
+ * help.el (help-window-config): New.
+ * help.el (with-displaying-help-buffer):
+ * help.el (function-at-event): New.
+ * help.el (help-symbol-regexp): New.
+ * help.el (help-symbol-run-function-1): New.
+ * help.el (help-symbol-run-function): New.
+ * help.el (help-symbol-function-context-menu): New.
+ * help.el (help-symbol-variable-context-menu): New.
+ * help.el (help-symbol-function-and-variable-context-menu): New.
+ * help.el (frob-help-extents): New.
+ * help.el (describe-function-1):
+ * help.el (variable-at-point):
+ * help.el (variable-at-event): New.
+ * help.el (describe-variable):
+ Major overhaul.
+ - Make functions and variables be mousable.
+ - Middle button hyperlinks.
+ - New context-menu entries.
+
+ * keydefs.el:
+ * keydefs.el (global-map):
+ New key bindings to move lines up and down.
+
+ * lisp-mode.el:
+ * lisp-mode.el (construct-lisp-mode-menu): New.
+ * lisp-mode.el (emacs-lisp-mode-popup-menu):
+ * lisp-mode.el (lisp-interaction-mode-menubar-menu):
+ * lisp-mode.el (emacs-lisp-mode-menubar-menu):
+ * lisp-mode.el (lisp-indent-function): Indent "flet" entries better.
+ Make popup and menubar menus be different. Popup menu uses
+ clicked location and automatically assumes symbol under the mouse
+ for various commands.
+
+ * menubar-items.el:
+ * menubar-items.el (bookmark-menu-filter): Add accelerators.
+ * menubar-items.el (buffers-menu-omit-chars-list): Include 'd'.
+
+ * menubar-items.el (global-popup-menu): Removed.
+ * menubar-items.el (mode-popup-menu): Removed.
+ * menubar-items.el (activate-popup-menu-hook): Removed.
+ * menubar-items.el (popup-mode-menu): Removed.
+ * menubar-items.el (popup-buffer-menu): Removed.
+ * menubar-items.el (popup-menubar-menu): Removed.
+ Move to menubar.el.
+
+ * menubar.el:
+ * menubar.el (global-popup-menu): New.
+ * menubar.el (mode-popup-menu): New.
+ * menubar.el (activate-popup-menu-hook): New.
+ * menubar.el (last-popup-menu-event): New.
+ * menubar.el (popup-mode-menu): New.
+ * menubar.el (popup-buffer-menu): New.
+ * menubar.el (popup-menubar-menu): New.
+ * menubar.el (menu-call-at-event): New.
+ Move non-content functions here. Add support for context menu
+ items on extents.
+
+ * minibuf.el (minibuffer-history-uniquify):
+ Typo fix.
+
+ * minibuf.el (read-file-name-1):
+ Call new file dialog box if it exists.
+
+ * minibuf.el (mouse-rfn-setup-vars):
+ Clean up "chop" action.
+
+ * mouse.el:
+ * mouse.el (button2): Now bound to mouse-track.
+ * mouse.el (click-inside-extent-p):
+ * mouse.el (point-inside-extent-p):
+ * mouse.el (point-inside-selection-p):
+ * mouse.el (mouse-drag-or-yank): Removed.
+ * mouse.el (mouse-begin-drag-n-drop): New.
+ * mouse.el (mouse-eval-sexp):
+ * mouse.el (mouse-track-activate-strokes): New.
+ * mouse.el (mouse-track-do-activate): New.
+ * mouse.el (mouse-track):
+ * mouse.el (default-mouse-track-event-is-with-button): New.
+ * mouse.el (default-mouse-track-cleanup-hook):
+ * mouse.el (default-mouse-track-drag-hook):
+ * mouse.el (default-mouse-track-drag-up-hook):
+ * mouse.el (default-mouse-track-click-hook):
+ Merge drag-n-drop into mouse-track.
+ Add general "activate" support to replace specific button2 kludges.
+ Use "button modifier" support in mouse-track.
+
+ * package-get.el (package-get-dependencies): Fix bytecompiler warnings.
+
+ * package-ui.el:
+ * package-ui.el (pui-menu):
+ * package-ui.el (pui-popup-context-sensitive): Removed.
+ Fix bytecompiler warnings.
+ Clean up popup code a bit.
+
+ * select.el (get-selection-no-error): Fix bytecompiler warnings.
+
+ * simple.el:
+ * simple.el (transpose-lines):
+ * simple.el (transpose-line-up): New.
+ * simple.el (transpose-line-down): New.
+ * simple.el (transpose-subr):
+ * simple.el (transpose-subr-1): Removed.
+ Clean up, add functions to move lines up and down.
+
+ * startup.el (mail-host-address):
+ * startup.el (user-mail-address):
+ Customize.
+
+ * subr.el:
+ * subr.el (set-symbol-value-in-buffer): New.
+ * subr.el (error):
+ * subr.el (check-argument-type):
+ * subr.el (defined-error-p): New.
+ Add structured error support.
+
+ * toolbar-items.el (toolbar-compile):
+ Use new make-dialog-box.
+
+ * update-elc.el:
+
+ * userlock.el (ask-user-about-lock-dbox):
+ * userlock.el (ask-user-about-supersession-threat-dbox):
+ * userlock.el (ask-user-about-lock):
+ * userlock.el (ask-user-about-supersession-threat):
+ Use new make-dialog-box.
+ Add safety checks; use should use-dialog-box-p.
+
+ * window-xemacs.el:
+ * window-xemacs.el (__buffer-dedicated-frame):
+ * window-xemacs.el (buffer-dedicated-frame): New.
+ * window-xemacs.el (set-buffer-dedicated-frame): New.
+ Move dedicated-frame stuff into lisp.
+
2000-07-17 Mike Sperber <mike(a)xemacs.org>
* cus-edit.el (custom-migrate-custom-file): Save init file before
Index: lisp/auto-autoloads.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/auto-autoloads.el,v
retrieving revision 1.16.2.21
diff -u -r1.16.2.21 auto-autoloads.el
--- auto-autoloads.el 2000/07/13 15:34:45 1.16.2.21
+++ auto-autoloads.el 2000/07/18 10:36:05
@@ -1273,7 +1273,7 @@
;;;***
-;;;### (autoloads (Info-elisp-ref Info-emacs-key Info-goto-emacs-key-command-node
Info-goto-emacs-command-node Info-emacs-command Info-search Info-visit-file Info-goto-node
Info-batch-rebuild-dir Info-query info) "info" "lisp/info.el")
+;;;### (autoloads (Info-elisp-ref Info-emacs-key Info-goto-emacs-key-command-node
Info-goto-emacs-command-node Info-emacs-command Info-search Info-visit-file Info-goto-node
Info-batch-rebuild-dir Info-find-node Info-query info) "info"
"lisp/info.el")
(defvar Info-directory-list nil "\
List of directories to search for Info documentation files.
@@ -1299,6 +1299,13 @@
(autoload 'Info-query "info" "\
Enter Info, the documentation browser. Prompt for name of Info file." t nil)
+
+(autoload 'Info-find-node "info" "\
+Go to an info node specified as separate FILENAME and NODENAME.
+Look for a plausible filename, or if not found then look for URL's and
+dispatch to the appropriate fn. NO-GOING-BACK is non-nil if
+recovering from an error in this function; it says do not attempt
+further (recursive) error recovery. TRYFILE is ??" nil nil)
(autoload 'Info-batch-rebuild-dir "info" "\
(Re)build info `dir' files in the directories remaining on the command line.
Index: lisp/autoload.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/autoload.el,v
retrieving revision 1.2.2.5
diff -u -r1.2.2.5 autoload.el
--- autoload.el 2000/07/15 09:54:12 1.2.2.5
+++ autoload.el 2000/07/18 10:36:05
@@ -2,7 +2,7 @@
;; Copyright (C) 1991, 1992, 1993, 1994, 1997 Free Software Foundation, Inc.
;; Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
-;; Copyright (C) 1996 Ben Wing.
+;; Copyright (C) 1996, 2000 Ben Wing.
;; Author: Roland McGrath <roland(a)gnu.ai.mit.edu>
;; Keywords: maint
@@ -542,10 +542,13 @@
(goto-char (point-max))
(insert "\n(provide '" sym ")\n")))))
-;; #### this function is almost identical, but subtly different,
-;; from batch-update-autoloads. Steve, it's your responsibility to
-;; clean this up. The two should be merged, but I'm not sure what
-;; package-creation scripts out there might be using this. --ben
+(defvar autoload-package-name nil)
+
+;; #### this function is almost identical to, but subtly different from,
+;; batch-update-autoloads. Both of these functions, unfortunately, are
+;; used in various build scripts in xemacs-packages. They should be
+;; merged. (However, it looks like no scripts pass more than one arg,
+;; making merging easy.) --ben
;;;###autoload
(defun batch-update-directory ()
@@ -576,7 +579,7 @@
(setq command-line-args-left nil)))
;; #### i created the following. this one and the last should be merged into
-;; batch-update-autoloads. --ben
+;; batch-update-autoloads and batch-update-one-directory. --ben
;;;###autoload
(defun batch-update-one-directory ()
Index: lisp/cmdloop.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/cmdloop.el,v
retrieving revision 1.9.2.3
diff -u -r1.9.2.3 cmdloop.el
--- cmdloop.el 2000/06/12 04:17:52 1.9.2.3
+++ cmdloop.el 2000/07/18 10:36:06
@@ -462,9 +462,28 @@
(sleep-for 2))))
ans)))
-;; these may be redefined later, but make the original def easily encapsulable
-(define-function 'yes-or-no-p 'yes-or-no-p-minibuf)
-(define-function 'y-or-n-p 'y-or-n-p-minibuf)
+(defun yes-or-no-p (prompt)
+ "Ask user a yes-or-no question. Return t if answer is yes.
+The question is asked with a dialog box or the minibuffer, as appropriate.
+Takes one argument, which is the string to display to ask the question.
+It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it.
+The user must confirm the answer with RET,
+and can edit it until it as been confirmed."
+ (if (should-use-dialog-box-p)
+ (yes-or-no-p-dialog-box prompt)
+ (yes-or-no-p-minibuf prompt)))
+
+(defun y-or-n-p (prompt)
+ "Ask user a \"y or n\" question. Return t if answer is
\"y\".
+Takes one argument, which is the string to display to ask the question.
+The question is asked with a dialog box or the minibuffer, as appropriate.
+It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
+No confirmation of the answer is requested; a single character is enough.
+Also accepts Space to mean yes, or Delete to mean no."
+ (if (should-use-dialog-box-p)
+ (yes-or-no-p-dialog-box prompt)
+ (y-or-n-p-minibuf prompt)))
+
(defun read-char ()
Index: lisp/cus-dep.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/cus-dep.el,v
retrieving revision 1.4.2.4
diff -u -r1.4.2.4 cus-dep.el
--- cus-dep.el 2000/07/15 10:11:02 1.4.2.4
+++ cus-dep.el 2000/07/18 10:36:06
@@ -31,7 +31,8 @@
;;; Commentary:
;; This file generates the custom-load files, loaded by cus-load.el.
-;; The only entry point is `Custom-make-dependencies'.
+;; Entry points are `Custom-make-dependencies' and
+;; `Custom-make-one-dependency'.
;; It works by scanning all the `.el' files in a directory, and
;; evaluates any `defcustom', `defgroup', or `defface' expression that
@@ -91,21 +92,7 @@
;; understand, but is in fact very easy to break. Be sure to read and
;; understand the commentary above!
-;;;###autoload
-(defun Custom-make-dependencies (&optional subdirs)
- "Extract custom dependencies from .el files in SUBDIRS.
-SUBDIRS is a list of directories. If it is nil, the command-line
-arguments are used. If it is a string, only that directory is
-processed. This function is especially useful in batch mode.
-
-Batch usage: xemacs -batch -l cus-dep.el -f Custom-make-dependencies DIRS"
- (interactive "DDirectory: ")
- (and (stringp subdirs)
- (setq subdirs (list subdirs)))
- (or subdirs
- ;; Usurp the command-line-args
- (setq subdirs command-line-args-left
- command-line-args-left nil))
+(defun Custom-make-dependencies-1 (subdirs)
(setq subdirs (mapcar #'expand-file-name subdirs))
(with-temp-buffer
(let ((enable-local-eval nil)
@@ -181,6 +168,31 @@
(insert "))\n"))))))
(insert "\n;;; custom-load.el ends here\n"))
(clrhash hash)))))))))
+
+(defun Custom-make-one-dependency ()
+ "Extract custom dependencies from .el files in one dir, on the command line.
+Like `Custom-make-dependencies' but snarfs only one command-line argument,
+making it useful in a chain of batch commands in a single XEmacs invocation."
+ (let ((subdir (car command-line-args-left)))
+ (setq command-line-args-left (cdr command-line-args-left))
+ (Custom-make-dependencies-1 (list subdir))))
+
+;;;###autoload
+(defun Custom-make-dependencies (&optional subdirs)
+ "Extract custom dependencies from .el files in SUBDIRS.
+SUBDIRS is a list of directories. If it is nil, the command-line
+arguments are used. If it is a string, only that directory is
+processed. This function is especially useful in batch mode.
+
+Batch usage: xemacs -batch -l cus-dep.el -f Custom-make-dependencies DIRS"
+ (interactive "DDirectory: ")
+ (and (stringp subdirs)
+ (setq subdirs (list subdirs)))
+ (or subdirs
+ ;; Usurp the command-line-args
+ (setq subdirs command-line-args-left
+ command-line-args-left nil))
+ (Custom-make-dependencies-1 subdirs))
(provide 'cus-dep)
Index: lisp/cus-edit.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/cus-edit.el,v
retrieving revision 1.8.2.16
diff -u -r1.8.2.16 cus-edit.el
--- cus-edit.el 2000/07/17 09:58:10 1.8.2.16
+++ cus-edit.el 2000/07/18 10:36:07
@@ -3344,6 +3344,7 @@
(defun custom-save-resets (property setter special)
(let (started-writing ignored-special)
+ (setq ignored-special ignored-special) ;; suppress byte-compiler warning
;; (custom-save-delete setter) Done by caller
(let ((standard-output (current-buffer))
(mapper `(lambda (object)
@@ -3367,7 +3368,8 @@
(setq ignored-special special)
(mapatoms mapper)
(when started-writing
- (princ ")\n")))))
+ (princ ")\n"))))
+ )
(defun custom-save-loaded-themes ()
Index: lisp/custom-load.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/custom-load.el,v
retrieving revision 1.5.2.20
diff -u -r1.5.2.20 custom-load.el
--- custom-load.el 2000/07/15 10:11:03 1.5.2.20
+++ custom-load.el 2000/07/18 10:36:08
@@ -17,12 +17,12 @@
(custom-add-loads 'menu '("menubar-items"))
(custom-add-loads 'minibuffer '("simple" "minibuf"))
(custom-add-loads 'log-message '("simple"))
-(custom-add-loads 'environment '("frame" "keydefs"
"minibuf" "modeline" "window-xemacs" "menubar"
"gutter" "x-init" "toolbar-items" "cus-edit"
"gnuserv" "sound"))
+(custom-add-loads 'environment '("frame" "keydefs"
"minibuf" "modeline" "window-xemacs" "menubar"
"gutter" "toolbar-items" "cus-edit" "gnuserv"
"sound" "x-init"))
(custom-add-loads 'sound '("sound"))
(custom-add-loads 'pui '("package-ui"))
(custom-add-loads 'terminals '("gnuserv"))
(custom-add-loads 'auto-save '("files" "auto-save"))
-(custom-add-loads 'mail '("simple"))
+(custom-add-loads 'mail '("simple" "startup"))
(custom-add-loads 'custom-menu '("cus-edit"))
(custom-add-loads 'docs '("hyper-apropos" "info"))
(custom-add-loads 'tools '("etags" "hyper-apropos"))
@@ -82,7 +82,7 @@
(custom-add-loads 'isearch '("isearch-mode"))
(custom-add-loads 'font-lock-faces '("font-lock"))
(custom-add-loads 'modeline '("modeline"))
-(custom-add-loads 'editing '("simple" "abbrev"
"fill" "mouse" "cus-edit" "dragdrop"))
+(custom-add-loads 'editing '("simple" "abbrev"
"fill" "mouse" "dragdrop" "cus-edit"))
(custom-add-loads 'matching '("simple" "isearch-mode"
"hyper-apropos"))
(custom-add-loads 'i18n '("cus-edit"))
(custom-add-loads 'info '("toolbar-items" "info"))
Index: lisp/dialog.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/dialog.el,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 dialog.el
--- dialog.el 2000/05/02 00:32:33 1.2.2.3
+++ dialog.el 2000/07/18 10:36:08
@@ -1,6 +1,7 @@
;;; dialog.el --- Dialog-box support for XEmacs
;; Copyright (C) 1991-4, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 2000 Ben Wing.
;; Maintainer: XEmacs Development Team
;; Keywords: extensions, internal, dumped
@@ -42,8 +43,10 @@
Return t if the answer is \"yes\".
Takes one argument, which is the string to display to ask the question."
(save-selected-frame
- (popup-dialog-box
- (list prompt ["Yes" yes t] ["No" no t] nil ["Cancel"
cancel t]))
+ (make-dialog-box 'question
+ :question prompt
+ :buttons '(["Yes" yes t] ["No" no t] nil
+ ["Cancel" cancel t]))
(let (event)
(catch 'ynp-done
(while t
@@ -54,41 +57,15 @@
((yes) (throw 'ynp-done t))
((no) (throw 'ynp-done nil))
((cancel menu-no-selection-hook) (signal 'quit nil))))
+ ;; safety check, so we're not endlessly stuck when no dialog box up
+ (unless (popup-up-p)
+ (signal 'quit nil))
(unless (button-release-event-p event) ; don't beep twice
(beep)
(message "please answer the dialog box")))))))
-(defun yes-or-no-p-maybe-dialog-box (prompt)
- "Ask user a yes-or-no question. Return t if answer is yes.
-The question is asked with a dialog box or the minibuffer, as appropriate.
-Takes one argument, which is the string to display to ask the question.
-It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it.
-The user must confirm the answer with RET,
-and can edit it until it as been confirmed."
- (if (should-use-dialog-box-p)
- (yes-or-no-p-dialog-box prompt)
- (yes-or-no-p-minibuf prompt)))
-
-(defun y-or-n-p-maybe-dialog-box (prompt)
- "Ask user a \"y or n\" question. Return t if answer is
\"y\".
-Takes one argument, which is the string to display to ask the question.
-The question is asked with a dialog box or the minibuffer, as appropriate.
-It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
-No confirmation of the answer is requested; a single character is enough.
-Also accepts Space to mean yes, or Delete to mean no."
- (if (should-use-dialog-box-p)
- (yes-or-no-p-dialog-box prompt)
- (y-or-n-p-minibuf prompt)))
-
-(when (fboundp 'popup-dialog-box)
- (fset 'yes-or-no-p 'yes-or-no-p-maybe-dialog-box)
- (fset 'y-or-n-p 'y-or-n-p-maybe-dialog-box))
-
-;; this is call-compatible with the horribly-named FSF Emacs function
-;; `x-popup-dialog'. I refuse to use that name.
+;; FSF has a similar function `x-popup-dialog'.
(defun get-dialog-box-response (position contents)
- ;; by Stig(a)hackvan.com
- ;; modified by pez(a)atlantic2.sbi.com
"Pop up a dialog box and return user's selection.
POSITION specifies which frame to use.
This is normally an event or a window or frame.
@@ -110,21 +87,21 @@
(select-frame position))
((windowp position)
(select-window position)))
- (let ((dbox (cons (car contents)
- (mapcar #'(lambda (x)
- (cond
- ((null x)
- nil)
- ((stringp x)
- `[,x 'ignore nil]) ;this will never get
- ;selected
- (t
- `[,(car x) (throw 'result ',(cdr x)) t])))
- (cdr contents))
- )))
- (catch 'result
- (popup-dialog-box dbox)
- (dispatch-event (next-command-event)))))
+ (catch 'result
+ (make-dialog-box 'question
+ :question (car contents)
+ :buttons
+ (mapcar #'(lambda (x)
+ (cond
+ ((null x)
+ nil)
+ ((stringp x)
+ ;;this will never get selected
+ `[,x 'ignore nil])
+ (t
+ `[,(car x) (throw 'result ',(cdr x)) t])))
+ (cdr contents)))
+ (dispatch-event (next-command-event))))
(defun message-box (fmt &rest args)
"Display a message, in a dialog box if possible.
@@ -144,8 +121,8 @@
str)))
(defun message-or-box (fmt &rest args)
- "Display a message in a dialog box or in the echo area.\n\
-If this command was invoked with the mouse, use a dialog box.\n\
+ "Display a message in a dialog box or in the echo area.
+If this command was invoked with the mouse, use a dialog box.
Otherwise, use the echo area.
The arguments are the same as to `format'.
@@ -154,64 +131,480 @@
(if (should-use-dialog-box-p)
(apply 'message-box fmt args)
(apply 'message fmt args)))
-
-(defun make-dialog-box (&optional spec props parent)
- "Create a frame suitable for use as a general dialog box.
-The frame is made a child of PARENT (defaults to the selected frame),
-and has additional properties PROPS, as well as `dialog-frame-plist'.
-SPEC is a string or glyph to be placed in the gutter. If INVISIBLE is
-non-nil then the frame is initially unmapped.
-Normally the created frame has no modelines, menubars, scrollbars,
-minibuffer or toolbars and is entirely covered by its gutter."
- (or parent (setq parent (selected-frame)))
- (let* ((ftop (frame-property parent 'top))
- (fleft (frame-property parent 'left))
- (fwidth (frame-pixel-width parent))
- (fheight (frame-pixel-height parent))
- (fonth (font-height (face-font 'default)))
- (fontw (font-width (face-font 'default)))
- (props (append props dialog-frame-plist))
- (dfheight (plist-get props 'height))
- (dfwidth (plist-get props 'width))
- (unmapped (plist-get props 'initially-unmapped))
- (gutter-spec spec)
- (name (or (plist-get props 'name) "XEmacs"))
- (frame nil))
- (plist-remprop props 'initially-unmapped)
- ;; allow the user to just provide a glyph
- (when (glyphp spec)
- (setq gutter-spec (copy-sequence "\n"))
- (set-extent-begin-glyph (make-extent 0 1 gutter-spec) spec))
- ;; under FVWM at least, if I don't specify the initial position,
- ;; it ends up always at (0, 0). xwininfo doesn't tell me
- ;; that there are any program-specified position hints, so
- ;; it must be an FVWM bug. So just be smashing and position
- ;; in the center of the selected frame.
- (setq frame (make-frame
- (append props
- `(popup ,parent initially-unmapped t
- menubar-visible-p nil
- has-modeline-p nil
- default-toolbar-visible-p nil
- top-gutter-visible-p t
- top-gutter-height ,(* dfheight fonth)
- top-gutter ,gutter-spec
- minibuffer none
- name ,name
- modeline-shadow-thickness 0
- vertical-scrollbar-visible-p nil
- horizontal-scrollbar-visible-p nil
- unsplittable t
- left ,(+ fleft (- (/ fwidth 2)
- (/ (* dfwidth fontw)
- 2)))
- top ,(+ ftop (- (/ fheight 2)
- (/ (* dfheight fonth)
- 2)))))))
- (set-face-foreground 'modeline [default foreground] frame)
- (set-face-background 'modeline [default background] frame)
- (unless unmapped (make-frame-visible frame))
- frame))
+(defun make-dialog-box (type &rest cl-keys)
+ "Pop up a dialog box.
+TYPE is a symbol, the type of dialog box. Remaining arguments are
+keyword-value pairs, specifying the particular characteristics of the
+dialog box. The allowed keywords are particular to each type, but
+some standard keywords are common to many types:
+
+:title
+ The title of the dialog box's window.
+
+:modal
+ If true, indicates that XEmacs will wait until the user is \"done\"
+ with the dialog box (usually, this means that a response has been
+ given). Typically, the response is returned. NOTE: Some dialog
+ boxes are always modal. If the dialog box is modal, `make-dialog-box'
+ returns immediately. The return value will be either nil or a
+ dialog box handle of some sort, e.g. a frame for type `general'.
+
+---------------------------------------------------------------------------
+
+Recognized types are
+
+general
+ A dialog box consisting of an XEmacs glyph, typically a `layout'
+ widget specifying a dialog box arrangement. This is the most
+ general and powerful dialog box type, but requires more work than
+ the other types below.
+
+question
+ A simple dialog box that displays a question and contains one or
+ more user-defined buttons to specify possible responses. (This is
+ compatible with the old built-in dialog boxes formerly specified
+ using `popup-dialog-box'.)
+
+file
+ A file dialog box, of the type typically used in the window system
+ XEmacs is running on.
+
+color
+ A color picker.
+
+find
+ A find dialog box.
+
+font
+ A font chooser.
+
+print
+ A dialog box used when printing (e.g. number of pages, printer).
+
+page-setup
+ A dialog box for setting page options (e.g. margins) for printing.
+
+replace
+ A find/replace dialog box.
+
+mswindows-message
+ An MS Windows-specific standard dialog box type similar to `question'.
+
+---------------------------------------------------------------------------
+
+For type `general':
+
+This type creates a frame and puts the specified widget layout in it.
+\(Currently this is done by eliminating all areas but the gutter and placing
+the layout there; but this is an implementation detail and may change.)
+
+The keywords allowed for `general' are
+
+:spec
+ The widget spec -- anything that can be passed to `make-glyph'.
+
+:title
+ The title of the frame.
+:parent
+ The frame is made a child of this frame (defaults to the selected frame).
+
+:properties
+ Additional properties of the frame, as well as `dialog-frame-plist'.
+
+---------------------------------------------------------------------------
+
+For type `question':
+
+The keywords allowed are
+
+:modal
+ t or nil (NOT YET IMPLEMENTED)
+:title
+ title
+:question
+ A string, the question.
+:buttons
+ A list, describing the buttons below the question. Each of these is a
+ vector, the syntax of which is essentially the same as that of popup menu
+ items. They may have any of the following forms:
+
+ [ \"name\" callback <active-p> ]
+ [ \"name\" callback <active-p> \"suffix\" ]
+ [ \"name\" callback :<keyword> <value> :<keyword>
<value> ... ]
+
+ The name is the string to display on the button; it is filtered through the
+ resource database, so it is possible for resources to override what string
+ is actually displayed.
+
+ Accelerators can be indicated in the string by putting the sequence
+ \"%_\" before the character corresponding to the key that will invoke
+ the button. Uppercase and lowercase accelerators are equivalent. The
+ sequence \"%%\" is also special, and is translated into a single %.
+
+ If the `callback' of a button is a symbol, then it must name a command.
+ It will be invoked with `call-interactively'. If it is a list, then it is
+ evaluated with `eval'.
+
+ One (and only one) of the buttons may be `nil'. This marker means that all
+ following buttons should be flushright instead of flushleft.
+
+ Though the keyword/value syntax is supported for dialog boxes just as in
+ popup menus, the only keyword which is both meaningful and fully implemented
+ for dialog box buttons is `:active'.
+
+---------------------------------------------------------------------------
+
+For type `file':
+
+The keywords allowed are
+
+:initial-filename
+ The initial filename to be placed in the dialog box (defaults to nothing).
+:initial-directory
+ The initial directory to be selected in the dialog box (defaults to the
+ current buffer's `default-directory).
+:filter-list
+ A list of (filter-desc filter ...)
+:title
+ The title of the dialog box (defaults to \"Open\").
+:allow-multi-select t or nil
+:create-prompt-on-nonexistent t or nil
+:overwrite-prompt t or nil
+:file-must-exist t or nil
+:no-network-button t or nil
+:no-read-only-return t or nil
+
+---------------------------------------------------------------------------
+
+For type `print':
+
+This invokes the Windows standard Print dialog.
+This dialog is usually invoked when the user selects the Print command.
+After the user presses OK, the program should start actual printout.
+
+The keywords allowed are
+
+:device
+ An 'msprinter device.
+:print-settings
+ A printer settings object.
+
+Exactly one of these keywords must be given.
+
+The function brings up the Print dialog, where the user can
+select a different printer and/or change printer options. Connection
+name can change as a result of selecting a different printer device. If
+a printer is specified, then changes are stored into the settings object
+currently selected into that printer. If a settings object is supplied,
+then changes are recorded into it, and, it it is selected into a
+printer, then changes are propagated to that printer
+too.
+
+Return value is nil if the user has canceled the dialog. Otherwise, it
+is a new plist, with the following properties:
+ name Printer device name, even if unchanged by the user.
+ from-page First page to print, 1-based. If not specified by the user,
+ then this value is not included in the plist.
+ to-page Last page to print, inclusive, 1-based. If not specified by
+ the user, then this value is not included in the plist.
+ copies Number of copies to print. Always returned.
+
+The DEVICE is destroyed and an error is signaled in case of
+initialization problem with the new printer.
+
+See also the `page-setup' and `print-setup' dialog boxes.
+
+---------------------------------------------------------------------------
+
+For type `page-setup':
+
+This invokes the Windows standard Page Setup dialog.
+This dialog is usually invoked in response to the Page Setup command, and
+used to chose such parameters as page orientation, print margins etc.
+Note that this dialog contains the \"Printer\" button, which invokes
+the Printer Setup dialog (see `msprinter-print-setup-dialog') so that the
+user can update the printer options or even select a different printer
+as well.
+
+The keywords allowed are
+
+:device
+ An 'msprinter device.
+:print-settings
+ A printer settings object.
+:properties
+ A plist of job properties.
+
+Exactly one of these keywords must be given.
+
+The function brings up the Page Setup dialog, where the user
+can select a different printer and/or change printer options.
+Connection name can change as a result of selecting a different printer
+device. If a printer is specified, then changes are stored into the
+settings object currently selected into that printer. If a settings
+object is supplied, then changes are recorded into it, and, it it is
+selected into a printer, then changes are propagated to that printer
+too.
+
+:properties specifies a plist of job properties;
+see `default-msprinter-frame-plist' for the complete list. The plist
+is used to initialize the dialog.
+
+Return value is nil if the user has canceled the dialog. Otherwise,
+it is a new plist, containing the new list of properties.
+
+The DEVICE is destroyed and an error is signaled in case of
+initialization problem with the new printer.
+
+See also the `print' and `print-setup' dialogs.
+
+---------------------------------------------------------------------------
+
+For type `print-setup':
+
+This invokes the Windows standard Print Setup dialog.
+This dialog is usually invoked when the user selects the Printer Setup
+command.
+
+The keywords allowed are
+
+:device
+ An 'msprinter device.
+:print-settings
+ A printer settings object.
+
+Exactly one of these keywords must be given.
+
+The function brings up the Print Setup dialog, where the user
+can select a different printer and/or change printer options.
+Connection name can change as a result of selecting a different printer
+device. If a printer is specified, then changes are stored into the
+settings object currently selected into that printer. If a settings
+object is supplied, then changes are recorded into it, and, it it is
+selected into a printer, then changes are propagated to that printer
+too.
+
+Return value is nil if the user has canceled the dialog. Otherwise, it
+is a new plist, with the following properties:
+ name Printer device name, even if unchanged by the user.
+
+The printer device is destroyed and an error is signaled if new printer
+is selected by the user, but cannot be initialized.
+
+See also the `print' and `page-setup' dialogs.
+
+---------------------------------------------------------------------------
+
+For type `mswindows-message':
+
+The keywords allowed are
+
+:title
+ The title of the dialog box.
+:message
+ The string to display.
+:flags
+ A symbol or list of symbols:
+
+ -- To specify the buttons in the message box:
+
+ abortretryignore
+ The message box contains three push buttons: Abort, Retry, and Ignore.
+ ok
+ The message box contains one push button: OK. This is the default.
+ okcancel
+ The message box contains two push buttons: OK and Cancel.
+ retrycancel
+ The message box contains two push buttons: Retry and Cancel.
+ yesno
+ The message box contains two push buttons: Yes and No.
+ yesnocancel
+ The message box contains three push buttons: Yes, No, and Cancel.
+
+
+ -- To display an icon in the message box:
+
+ iconexclamation, iconwarning
+ An exclamation-point icon appears in the message box.
+ iconinformation, iconasterisk
+ An icon consisting of a lowercase letter i in a circle appears in
+ the message box.
+ iconquestion
+ A question-mark icon appears in the message box.
+ iconstop, iconerror, iconhand
+ A stop-sign icon appears in the message box.
+
+
+ -- To indicate the default button:
+
+ defbutton1
+ The first button is the default button. This is the default.
+ defbutton2
+ The second button is the default button.
+ defbutton3
+ The third button is the default button.
+ defbutton4
+ The fourth button is the default button.
+
+
+ -- To indicate the modality of the dialog box:
+
+ applmodal
+ The user must respond to the message box before continuing work in
+ the window identified by the hWnd parameter. However, the user can
+ move to the windows of other applications and work in those windows.
+ Depending on the hierarchy of windows in the application, the user
+ may be able to move to other windows within the application. All
+ child windows of the parent of the message box are automatically
+ disabled, but popup windows are not. This is the default.
+ systemmodal
+ Same as applmodal except that the message box has the WS_EX_TOPMOST
+ style. Use system-modal message boxes to notify the user of serious,
+ potentially damaging errors that require immediate attention (for
+ example, running out of memory). This flag has no effect on the
+ user's ability to interact with windows other than those associated
+ with hWnd.
+ taskmodal
+ Same as applmodal except that all the top-level windows belonging to
+ the current task are disabled if the hWnd parameter is NULL. Use
+ this flag when the calling application or library does not have a
+ window handle available but still needs to prevent input to other
+ windows in the current application without suspending other
+ applications.
+
+
+ In addition, you can specify the following flags:
+
+ default-desktop-only
+ The desktop currently receiving input must be a default desktop;
+ otherwise, the function fails. A default desktop is one an
+ application runs on after the user has logged on.
+ help
+ Adds a Help button to the message box. Choosing the Help button or
+ pressing F1 generates a Help event.
+ right
+ The text is right-justified.
+ rtlreading
+ Displays message and caption text using right-to-left reading order
+ on Hebrew and Arabic systems.
+ setforeground
+ The message box becomes the foreground window. Internally, Windows
+ calls the SetForegroundWindow function for the message box.
+ topmost
+ The message box is created with the WS_EX_TOPMOST window style.
+ service-notification
+ Windows NT only: The caller is a service notifying the user of an
+ event. The function displays a message box on the current active
+ desktop, even if there is no user logged on to the computer. If
+ this flag is set, the hWnd parameter must be NULL. This is so the
+ message box can appear on a desktop other than the desktop
+ corresponding to the hWnd.
+
+
+ The return value is one of the following menu-item values returned by
+ the dialog box:
+
+ abort
+ Abort button was selected.
+ cancel
+ Cancel button was selected.
+ ignore
+ Ignore button was selected.
+ no
+ No button was selected.
+ ok
+ OK button was selected.
+ retry
+ Retry button was selected.
+ yes
+ Yes button was selected.
+
+ If a message box has a Cancel button, the function returns the
+ `cancel' value if either the ESC key is pressed or the Cancel button
+ is selected. If the message box has no Cancel button, pressing ESC has
+ no effect."
+ (if (not (eq type 'general))
+ (make-dialog-box-internal type cl-keys)
+ (cl-parsing-keywords
+ ((:title "XEmacs")
+ (:parent (selected-frame))
+ :properties
+ :spec)
+ ()
+ (let* ((ftop (frame-property cl-parent 'top))
+ (fleft (frame-property cl-parent 'left))
+ (fwidth (frame-pixel-width cl-parent))
+ (fheight (frame-pixel-height cl-parent))
+ (fonth (font-height (face-font 'default)))
+ (fontw (font-width (face-font 'default)))
+ (cl-properties (append cl-properties dialog-frame-plist))
+ (dfheight (plist-get cl-properties 'height))
+ (dfwidth (plist-get cl-properties 'width))
+ (unmapped (plist-get cl-properties 'initially-unmapped))
+ (gutter-spec cl-spec)
+ (name (or (plist-get cl-properties 'name) "XEmacs"))
+ (frame nil))
+ (plist-remprop cl-properties 'initially-unmapped)
+ ;; allow the user to just provide a glyph
+ (or (glyphp cl-spec) (setq cl-spec (make-glyph cl-spec)))
+ (setq gutter-spec (copy-sequence "\n"))
+ (set-extent-begin-glyph (make-extent 0 1 gutter-spec) cl-spec)
+ ;; under FVWM at least, if I don't specify the initial position,
+ ;; it ends up always at (0, 0). xwininfo doesn't tell me
+ ;; that there are any program-specified position hints, so
+ ;; it must be an FVWM bug. So just be smashing and position
+ ;; in the center of the selected frame.
+ (setq frame (make-frame
+ (append cl-properties
+ `(popup ,cl-parent initially-unmapped t
+ menubar-visible-p nil
+ has-modeline-p nil
+ default-toolbar-visible-p nil
+ top-gutter-visible-p t
+ top-gutter-height ,(* dfheight fonth)
+ top-gutter ,gutter-spec
+ minibuffer none
+ name ,name
+ modeline-shadow-thickness 0
+ vertical-scrollbar-visible-p nil
+ horizontal-scrollbar-visible-p nil
+ unsplittable t
+ left ,(+ fleft (- (/ fwidth 2)
+ (/ (* dfwidth fontw)
+ 2)))
+ top ,(+ ftop (- (/ fheight 2)
+ (/ (* dfheight fonth)
+ 2)))))))
+ (set-face-foreground 'modeline [default foreground] frame)
+ (set-face-background 'modeline [default background] frame)
+ (unless unmapped (make-frame-visible frame))
+ (let ((newbuf (generate-new-buffer " *dialog box*")))
+ (set-buffer-dedicated-frame newbuf frame)
+ (set-frame-property frame 'dialog-box-buffer newbuf)
+ (with-current-buffer newbuf
+ (setq frame-title-format cl-title)
+ (make-local-hook 'delete-frame-hook)
+ (add-hook 'delete-frame-hook
+ #'(lambda (frame)
+ (kill-buffer (frame-property frame
+ 'dialog-box-buffer))))))
+ frame))))
+
+(make-obsolete 'popup-dialog-box 'make-dialog-box)
+(defun popup-dialog-box (desc)
+ "Obsolete equivalent of (make-dialog-box 'question ...).
+
+\(popup-dialog-box (QUESTION BUTTONS ...)
+
+is equivalent to
+
+\(make-dialog-box 'question :question QUESTION :buttons BUTTONS)"
+ (check-argument-type 'stringp (car desc))
+ (or (consp (cdr desc))
+ (error 'syntax-error
+ "Dialog descriptor must supply at least one button"
+ desc))
+ (make-dialog-box 'question :question (car desc) :buttons (cdr desc)))
;;; dialog.el ends here
Index: lisp/dumped-lisp.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/dumped-lisp.el,v
retrieving revision 1.30.2.17
diff -u -r1.30.2.17 dumped-lisp.el
--- dumped-lisp.el 2000/07/13 15:34:48 1.30.2.17
+++ dumped-lisp.el 2000/07/18 10:36:08
@@ -87,19 +87,41 @@
; auto-gc-threshold
"itimer-autosave"
"printer"
+
+ ;;;;;;;;;;;;;;;;;; GUI support
+ (when-feature window-system "gui")
+ (when-feature window-system "mouse")
+ (when-feature window-system "mode-motion")
(when-feature toolbar "toolbar")
(when-feature scrollbar "scrollbar")
(when-feature menubar "menubar")
(when-feature dialog "dialog")
- (when-feature mule "mule-charset")
+ (when-feature gutter "gutter")
+ (when-feature dragdrop-api "dragdrop")
+ "select"
+
+ ;;;;;;;;;;;;;;;;;; Content for GUI's
+ ;; There used to be window-system inserted in the when-feature,
+ ;; but IMHO your configure script should turn off the menubar,
+ ;; toolbar, etc. features when there is no window system. We
+ ;; should just be able to assume that, if (featurep 'menubar),
+ ;; the menubar should work and if items are added, they can be
+ ;; seen clearly and usefully.
+ (when-feature (and (not infodock) menubar) "menubar-items")
+ (when-feature (and gutter) "gutter-items")
+ (when-feature (and (not infodock) toolbar) "toolbar-items")
+ (when-feature (and (not infodock) dialog) "dialog-items")
+
+ ;;;;;;;;;;;;;;;;;; Coding-system support
(when-feature file-coding "coding")
- (when-feature mule "mule-coding")
-;; Handle I/O of files with extended characters.
(when-feature file-coding "code-files")
-;; Handle process with encoding/decoding non-ascii coding-system.
(when-feature file-coding "code-process")
+
+ ;;;;;;;;;;;;;;;;;; MULE support
+ (when-feature mule "mule-charset")
+ (when-feature mule "mule-coding")
+ ;; All files after this can have extended characters in them.
(when-feature mule "mule-help")
-;; Load the remaining basic files.
(when-feature mule "mule-category")
(when-feature mule "mule-ccl")
(when-feature mule "mule-misc")
@@ -158,17 +180,13 @@
;; Moved to sunpro-load.el - the default only for Sun.
;;(pureload "mime-setup")
;;; mule-load.el ends here
- (when-feature (and gutter window-system) "gutter")
- (when-feature window-system "gui")
- (when-feature window-system "mode-motion")
- (when-feature window-system "mouse")
- "select"
- (when-feature dragdrop-api "dragdrop")
-;; preload the X code, for faster startup.
- (when-feature (and (not infodock)
- (or x mswindows) menubar) "menubar-items")
+
+;; preload InfoDock stuff. should almost certainly not be here if
+;; id-menus is not here. infodock needs to figure out a clever way to
+;; advise this stuff or we need to export a clean way for infodock or
+;; others to control this programmatically.
(when-feature (and infodock (or x mswindows) menubar) "id-menus")
- (when-feature (and gutter window-system) "gutter-items")
+;; preload the X code.
(when-feature x "x-faces")
(when-feature x "x-iso8859-1")
(when-feature x "x-mouse")
@@ -176,8 +194,6 @@
(when-feature (and x scrollbar) "x-scrollbar")
(when-feature x "x-misc")
(when-feature x "x-init")
- (when-feature (and (not infodock)
- window-system toolbar) "toolbar-items")
(when-feature x "x-win-xfree86")
(when-feature x "x-win-sun")
;; preload the mswindows code.
Index: lisp/easymenu.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/easymenu.el,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 easymenu.el
--- easymenu.el 2000/01/26 11:36:30 1.2.2.3
+++ easymenu.el 2000/07/18 10:36:08
@@ -181,7 +181,11 @@
(setq mode-popup-menu (if (> (length easy-menu-all-popups) 1)
(cons (easy-menu-title)
(reverse easy-menu-all-popups))
- (car easy-menu-all-popups)))
+ (let ((same-as-menu
+ (car easy-menu-all-popups)))
+ (cons (normalize-menu-item-name
+ (car same-as-menu))
+ (cdr same-as-menu)))))
(cond ((null current-menubar)
;; Don't add it to a non-existing menubar.
@@ -205,7 +209,11 @@
mode-popup-menu (if (< (length easy-menu-all-popups) 1)
(cons (easy-menu-title)
(reverse easy-menu-all-popups))
- (car easy-menu-all-popups)))
+ (let ((same-as-menu
+ (car easy-menu-all-popups)))
+ (cons (normalize-menu-item-name
+ (car same-as-menu))
+ (cdr same-as-menu)))))
(and current-menubar
(assoc (car menu) current-menubar)
Index: lisp/extents.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/extents.el,v
retrieving revision 1.4
diff -u -r1.4 extents.el
--- extents.el 1998/03/31 20:11:03 1.4
+++ extents.el 2000/07/18 10:36:09
@@ -1,6 +1,7 @@
;;; extents.el --- miscellaneous extent functions not written in C
;; Copyright (C) 1993-4, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 2000 Ben Wing.
;; Keywords: internal, dumped
@@ -25,8 +26,11 @@
;;; Commentary:
-;; some help from stig(a)hackvan.com here.
+;;; Authorship:
+;; Created 1995 Ben Wing.
+;; mapcar-extents (and extent-list?) from stig(a)hackvan.com, c. 1996.
+
;;; Code:
;; an alternative to map-extents.
@@ -53,7 +57,7 @@
buffer-or-string from to nil flags property value)
(nreverse *result*)))
-(defun extent-list (&optional buffer-or-string from to flags)
+(defun extent-list (&optional buffer-or-string from to flags property value)
"Return a list of the extents in BUFFER-OR-STRING.
BUFFER-OR-STRING defaults to the current buffer if omitted.
FROM and TO can be used to limit the range over which extents are
@@ -65,11 +69,28 @@
end of BUFFER-OR-STRING, respectively.
FLAGS controls how end cases are treated. For a discussion of this,
-and exactly what ``overlap'' means, see `map-extents'.
+and exactly what ``overlap'' means, see `map-extents'. PROPERTY and VALUE
+are also as in `map-extents'.
If you want to map a function over the extents in a buffer or string,
-consider using `map-extents' or `mapcar-extents' instead."
- (mapcar-extents 'identity nil buffer-or-string from to flags))
+consider using `map-extents' or `mapcar-extents' instead.
+
+See also `extents-at'."
+ (mapcar-extents 'identity nil buffer-or-string from to flags property value))
+
+(defun extent-at-event (event &optional property before at-flag)
+ "Return the smallest extent under EVENT, if any.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'."
+ (let* ((win (event-window event))
+ (p (event-point event)))
+ (and win p (extent-at p (window-buffer win) property before at-flag))))
+
+(defun extents-at-event (event &optional property before at-flag)
+ "Return a list of all extents under EVENT.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'."
+ (let* ((win (event-window event))
+ (p (event-point event)))
+ (and win p (extents-at p (window-buffer win) property before at-flag))))
(defun extent-string (extent)
"Return the string delimited by the bounds of EXTENT."
Index: lisp/font-lock.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/font-lock.el,v
retrieving revision 1.7.2.21
diff -u -r1.7.2.21 font-lock.el
--- font-lock.el 2000/07/13 06:19:47 1.7.2.21
+++ font-lock.el 2000/07/18 10:36:10
@@ -2,7 +2,7 @@
;; Copyright (C) 1992-1995, 1997 Free Software Foundation, Inc.
;; Copyright (C) 1995 Amdahl Corporation.
-;; Copyright (C) 1996 Ben Wing.
+;; Copyright (C) 1996, 2000 Ben Wing.
;; Author: Jamie Zawinski <jwz(a)jwz.org>, for the LISPM Preservation Society.
;; Minimally merged with FSF 19.34 by Barry Warsaw <bwarsaw(a)python.org>
@@ -893,9 +893,10 @@
((or (null maximum-size) (<= (buffer-size) maximum-size))
(font-lock-fontify-buffer))
(font-lock-verbose
- (lprogress-display 'font-lock
- "Fontifying %s... buffer too big." 'abort
- (buffer-name)))))
+ (progress-feedback-with-label
+ 'font-lock
+ "Fontifying %s... buffer too big." 'abort
+ (buffer-name)))))
(font-lock-fontified
(setq font-lock-fontified nil)
(font-lock-unfontify-region (point-min) (point-max))
@@ -1060,8 +1061,8 @@
(font-lock-mode 0)))
(set (make-local-variable 'font-lock-fontified) t)
(when (and aborted font-lock-verbose)
- (lprogress-display 'font-lock "Fontifying %s... aborted."
- 'abort (buffer-name))))
+ (progress-feedback-with-label 'font-lock "Fontifying %s... aborted."
+ 'abort (buffer-name))))
(run-hooks 'font-lock-after-fontify-buffer-hook)))
(defun font-lock-default-unfontify-buffer ()
@@ -1100,7 +1101,8 @@
(defun font-lock-default-unfontify-region (beg end &optional maybe-loudly)
(when (and maybe-loudly font-lock-verbose
(>= (- end beg) font-lock-message-threshold))
- (lprogress-display 'font-lock "Fontifying %s..." 0 (buffer-name)))
+ (progress-feedback-with-label 'font-lock "Fontifying %s..." 0
+ (buffer-name)))
(let ((modified (buffer-modified-p))
(buffer-undo-list t) (inhibit-read-only t)
buffer-file-name buffer-file-truename)
@@ -1347,8 +1349,9 @@
nil
(when (and font-lock-verbose
(>= (- end start) font-lock-message-threshold))
- (lprogress-display 'font-lock "Fontifying %s... (syntactically)" 5
- (buffer-name)))
+ (progress-feedback-with-label 'font-lock
+ "Fontifying %s... (syntactically)" 5
+ (buffer-name)))
(font-lock-unfontify-region start end loudly)
(goto-char start)
(if (> end (point-max)) (setq end (point-max)))
@@ -1560,8 +1563,9 @@
(+ (/ (* (- (point) start) 95) (* (- end start) nkeywords))
(/ (* iter 95) nkeywords) 5))
(when (and loudly (> progress old-progress))
- (lprogress-display 'font-lock "Fontifying %s... (regexps)"
- progress bufname))
+ (progress-feedback-with-label 'font-lock
+ "Fontifying %s... (regexps)"
+ progress bufname))
(setq old-progress progress)
;; Apply each highlight to this instance of `matcher', which may be
;; specific highlights or more keywords anchored to `matcher'.
@@ -1578,7 +1582,9 @@
(setq highlights (cdr highlights))))
(setq iter (1+ iter))
(setq keywords (cdr keywords))))
- (if loudly (lprogress-display 'font-lock "Fontifying %s... " 100
(buffer-name)))))
+ (if loudly
+ (progress-feedback-with-label 'font-lock "Fontifying %s... " 100
+ (buffer-name)))))
;; Various functions.
@@ -2336,19 +2342,19 @@
"\\|long\\|short\\|void\\)\\>")
"Regexp which should match a primitive type.")
-(let ((capital-letter "A-Z\300-\326\330-\337")
- (letter "a-zA-Z_$\300-\326\330-\366\370-\377")
- (digit "0-9"))
(defvar java-font-lock-identifier-regexp
- (concat "\\<\\([" letter "][" letter digit
"]*\\)\\>")
+ (let ((letter "a-zA-Z_$\300-\326\330-\366\370-\377")
+ (digit "0-9"))
+ (concat "\\<\\([" letter "][" letter digit
"]*\\)\\>"))
"Regexp which should match all Java identifiers.")
(defvar java-font-lock-class-name-regexp
- (concat "\\<\\([" capital-letter "][" letter digit
"]*\\)\\>")
+ (let ((capital-letter "A-Z\300-\326\330-\337")
+ (letter "a-zA-Z_$\300-\326\330-\366\370-\377")
+ (digit "0-9"))
+ (concat "\\<\\([" capital-letter "][" letter digit
"]*\\)\\>"))
"Regexp which should match a class or an interface name.
The name is assumed to begin with a capital letter.")
-)
-
(let ((java-modifier-regexp
(concat "\\<\\(abstract\\|const\\|final\\|native\\|"
Index: lisp/gutter-items.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/Attic/gutter-items.el,v
retrieving revision 1.1.2.50
diff -u -r1.1.2.50 gutter-items.el
--- gutter-items.el 2000/05/11 10:29:30 1.1.2.50
+++ gutter-items.el 2000/07/18 10:36:10
@@ -2,6 +2,7 @@
;; Copyright (C) 1999 Free Software Foundation, Inc.
;; Copyright (C) 1999, 2000 Andy Piper.
+;; Copyright (C) 2000 Ben Wing.
;; Maintainer: XEmacs Development Team
;; Keywords: frames, extensions, internal, dumped
@@ -356,7 +357,7 @@
;; progress display
;; ripped off from message display
;;
-(defcustom progress-display-use-echo-area nil
+(defcustom progress-feedback-use-echo-area nil
"*Whether progress gauge display should display in the echo area.
If NIL then progress gauges will be displayed with whatever native widgets
are available on the current console. If non-NIL then progress display will be
@@ -367,7 +368,7 @@
(defvar progress-glyph-height 24
"Height of the progress gauge glyph.")
-(defvar progress-display-popup-period 0.5
+(defvar progress-feedback-popup-period 0.5
"The time that the progress gauge should remain up after completion")
;; private variables
@@ -382,9 +383,9 @@
:pixel-width 250
:descriptor "Progress"]))
-(defun set-progress-display-style (style)
+(defun set-progress-feedback-style (style)
"Control the appearance of the progress gauge.
-If STYLE is 'large, the default, then the progress-display text is
+If STYLE is 'large, the default, then the progress-feedback text is
displayed above the gauge itself. If STYLE is 'small then the gauge
and text are arranged side-by-side."
(cond
@@ -418,22 +419,22 @@
;; 'quit is special and acts "asynchronously".
:callback 'quit])])])))))
-(defcustom progress-display-style 'large
+(defcustom progress-feedback-style 'large
"*Control the appearance of the progress gauge.
-If 'large, the default, then the progress-display text is displayed
+If 'large, the default, then the progress-feedback text is displayed
above the gauge itself. If 'small then the gauge and text are arranged
side-by-side."
:group 'gutter
:type '(choice (const :tag "large" large)
(const :tag "small" small))
:set #'(lambda (var val)
- (set-progress-display-style val)))
+ (set-progress-feedback-style val)))
(defvar progress-stack nil
"An alist of label/string pairs representing active progress gauges.
The first element in the list is currently displayed in the gutter area.
-Do not modify this directly--use the `progress-display' or
-`display-progress-display'/`clear-progress-display' functions.")
+Do not modify this directly--use the `progress-feedback' or
+`display-progress-feedback'/`clear-progress-feedback' functions.")
(defvar progress-abort-glyph
(make-glyph
@@ -444,7 +445,7 @@
:pixel-height progress-glyph-height
:orientation horizontal])]))
-(defun progress-displayed-p (&optional return-string frame)
+(defun progress-feedback-displayed-p (&optional return-string frame)
"Return a non-nil value if a progress gauge is presently displayed in the
gutter area. If optional argument RETURN-STRING is non-nil,
return a string containing the message, otherwise just return t."
@@ -456,7 +457,7 @@
;;; Returns the string which remains in the echo area, or nil if none.
;;; If label is nil, the whole message stack is cleared.
-(defun clear-progress-display (&optional label frame no-restore)
+(defun clear-progress-feedback (&optional label frame no-restore)
"Remove any progress gauge with LABEL from the progress gauge-stack,
erasing it from the gutter area if it's currently displayed there.
If a message remains at the head of the progress-stack and NO-RESTORE
@@ -467,10 +468,10 @@
Unless you need the return value or you need to specify a label,
you should just use (progress nil)."
(if (or (not (valid-image-instantiator-format-p 'progress-gauge frame))
- progress-display-use-echo-area)
+ progress-feedback-use-echo-area)
(clear-message label frame nil no-restore)
(or frame (setq frame (selected-frame)))
- (remove-progress-display label frame)
+ (remove-progress-feedback label frame)
(let ((inhibit-read-only t)
(zmacs-region-stays zmacs-region-stays)) ; preserve from change
(erase-buffer (get-buffer-create " *Gutter Area*")))
@@ -478,19 +479,19 @@
nil ; just preparing to put another msg up
(if progress-stack
(let ((oldmsg (cdr (car progress-stack))))
- (raw-append-progress-display oldmsg nil frame)
+ (raw-append-progress-feedback oldmsg nil frame)
oldmsg)
;; nothing to display so get rid of the gauge
(set-specifier bottom-gutter-border-width 0 frame)
(set-gutter-element-visible-p bottom-gutter-visible-p
'progress nil frame)))))
-(defun progress-display-clear-when-idle (&optional label)
+(defun progress-feedback-clear-when-idle (&optional label)
(add-one-shot-hook 'pre-idle-hook
`(lambda ()
- (clear-progress-display ',label))))
+ (clear-progress-feedback ',label))))
-(defun remove-progress-display (&optional label frame)
+(defun remove-progress-feedback (&optional label frame)
;; If label is nil, we want to remove all matching progress gauges.
(while (and progress-stack
(or (null label) ; null label means clear whole stack
@@ -504,7 +505,7 @@
(setcdr s (cdr (cdr s))))
(setq s (cdr s)))))))
-(defun progress-display-dispatch-non-command-events ()
+(defun progress-feedback-dispatch-non-command-events ()
;; don't allow errors to hose things
(condition-case t
;; (sit-for 0) is too agressive and cause more display than we
@@ -512,7 +513,7 @@
(dispatch-non-command-events)
nil))
-(defun append-progress-display (label message &optional value frame)
+(defun append-progress-feedback (label message &optional value frame)
(or frame (setq frame (selected-frame)))
;; Add a new entry to the message-stack, or modify an existing one
(let* ((top (car progress-stack))
@@ -527,19 +528,19 @@
(glyph-image-instance progress-gauge-glyph
(frame-selected-window frame))
:value value)
- (raw-append-progress-display message value frame))
+ (raw-append-progress-feedback message value frame))
(redisplay-gutter-area))
(push (cons label message) progress-stack)
- (raw-append-progress-display message value frame))
- (progress-display-dispatch-non-command-events)
+ (raw-append-progress-feedback message value frame))
+ (progress-feedback-dispatch-non-command-events)
;; either get command events or sit waiting for them
(when (eq value 100)
-; (sit-for progress-display-popup-period nil)
- (clear-progress-display label))))
+; (sit-for progress-feedback-popup-period nil)
+ (clear-progress-feedback label))))
-(defun abort-progress-display (label message &optional frame)
+(defun abort-progress-feedback (label message &optional frame)
(if (or (not (valid-image-instantiator-format-p 'progress-gauge frame))
- progress-display-use-echo-area)
+ progress-feedback-use-echo-area)
(display-message label (concat message "aborted.") frame)
(or frame (setq frame (selected-frame)))
;; Add a new entry to the message-stack, or modify an existing one
@@ -569,13 +570,13 @@
;; we have to do this so redisplay is up-to-date and so
;; redisplay-gutter-area performs optimally.
(redisplay-gutter-area)
- (sit-for progress-display-popup-period nil)
- (clear-progress-display label frame)
+ (sit-for progress-feedback-popup-period nil)
+ (clear-progress-feedback label frame)
(set-extent-begin-glyph ext progress-layout-glyph)
(set-gutter-element bottom-gutter 'progress gutter-string frame)
)))))
-(defun raw-append-progress-display (message &optional value frame)
+(defun raw-append-progress-feedback (message &optional value frame)
(unless (equal message "")
(let* ((inhibit-read-only t)
(zmacs-region-stays zmacs-region-stays)
@@ -605,7 +606,7 @@
;; checking for user events
(progn
(redisplay-gutter-area)
- (progress-display-dispatch-non-command-events))
+ (progress-feedback-dispatch-non-command-events))
;; otherwise make the gutter visible and redraw the frame
(set-specifier bottom-gutter-height 'autodetect frame)
(set-gutter-element-visible-p bottom-gutter-visible-p
@@ -613,36 +614,36 @@
;; we have to do this so redisplay is up-to-date and so
;; redisplay-gutter-area performs optimally. This may also
;; make sure the frame geometry looks ok.
- (progress-display-dispatch-non-command-events)
+ (progress-feedback-dispatch-non-command-events)
(redisplay-frame frame)
))))
-(defun display-progress-display (label message &optional value frame)
+(defun display-progress-feedback (label message &optional value frame)
"Display a progress gauge and message in the bottom gutter area.
First argument LABEL is an identifier for this message. MESSAGE is
-the string to display. Use `clear-progress-display' to remove a labelled
+the string to display. Use `clear-progress-feedback' to remove a labelled
message."
(cond ((eq value 'abort)
- (abort-progress-display label message frame))
+ (abort-progress-feedback label message frame))
((or (not (valid-image-instantiator-format-p 'progress-gauge frame))
- progress-display-use-echo-area)
+ progress-feedback-use-echo-area)
(display-message label
(concat message (if (eq value 100) "done."
(make-string (/ value 5) ?.)))
frame))
(t
- (append-progress-display label message value frame))))
+ (append-progress-feedback label message value frame))))
-(defun current-progress-display (&optional frame)
+(defun current-progress-feedback (&optional frame)
"Return the current progress gauge in the gutter area, or nil.
The FRAME argument is currently unused."
(cdr (car progress-stack)))
;;; may eventually be frame-dependent
-(defun current-progress-display-label (&optional frame)
+(defun current-progress-feedback-label (&optional frame)
(car (car progress-stack)))
-(defun progress-display (fmt &optional value &rest args)
+(defun progress-feedback (fmt &optional value &rest args)
"Print a progress gauge and message in the bottom gutter area of the frame.
The arguments are the same as to `format'.
@@ -650,12 +651,12 @@
(save-excursion
(if (and (null fmt) (null args))
(prog1 nil
- (clear-progress-display nil))
+ (clear-progress-feedback nil))
(let ((str (apply 'format fmt args)))
- (display-progress-display 'progress str value)
+ (display-progress-feedback 'progress str value)
str))))
-(defun lprogress-display (label fmt &optional value &rest args)
+(defun progress-feedback-with-label (label fmt &optional value &rest args)
"Print a progress gauge and message in the bottom gutter area of the frame.
First argument LABEL is an identifier for this progress gauge. The rest of the
arguments are the same as to `format'."
@@ -664,75 +665,10 @@
(save-excursion
(if (and (null fmt) (null args))
(prog1 nil
- (clear-progress-display label nil))
+ (clear-progress-feedback label nil))
(let ((str (apply 'format fmt args)))
- (display-progress-display label str value)
+ (display-progress-feedback label str value)
str))))
-
-;;
-;; Simple search dialog
-;;
-(defvar search-dialog-direction t)
-(defvar search-dialog-text
- (make-glyph
- [edit-field :width 15 :descriptor "" :active t :face default]))
-
-(defun search-dialog-callback (parent image-instance event)
- (save-selected-frame
- (select-frame parent)
- (funcall (if search-dialog-direction
- 'search-forward 'search-backward)
- (image-instance-property
- (glyph-image-instance search-dialog-text
- (frame-selected-window
- (event-channel event))) :text))
- (isearch-highlight (match-beginning 0) (match-end 0))))
-
-(defun make-search-dialog ()
- "Popup a search dialog box."
- (interactive)
- (let* ((parent (selected-frame)))
- (set-buffer-dedicated-frame
- (get-buffer-create "Dialog")
- (make-dialog-box
- (make-glyph
- `[layout
- :orientation horizontal :justify left
- :height 10 :width 40
- :border [string :data "Search"]
- :items
- ([layout :orientation vertical :justify left
- :items
- ([string :data "Search for:"]
- [button :descriptor "Match case"
- :style toggle
- :selected (not case-fold-search)
- :callback (setq case-fold-search
- (not case-fold-search))]
- [button :descriptor "Forwards"
- :style radio
- :selected search-dialog-direction
- :callback (setq search-dialog-direction t)]
- [button :descriptor "Backwards"
- :style radio
- :selected (not search-dialog-direction)
- :callback (setq search-dialog-direction nil)]
- )]
- [layout :orientation vertical :justify left
- :items
- (search-dialog-text
- [button :width 10 :descriptor "Find Next"
- :callback-ex
- (lambda (image-instance event)
- (search-dialog-callback ,parent
- image-instance event))]
- [button :width 10 :descriptor "Cancel"
- :callback-ex
- (lambda (image-instance event)
- (isearch-dehighlight)
- (delete-frame
- (event-channel event)))])])])
- '(height 10 width 40)))))
(provide 'gutter-items)
;;; gutter-items.el ends here.
Index: lisp/help.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/help.el,v
retrieving revision 1.26.2.13
diff -u -r1.26.2.13 help.el
--- help.el 2000/04/28 15:17:12 1.26.2.13
+++ help.el 2000/07/18 10:36:11
@@ -240,10 +240,8 @@
otherwise it is killed."
(interactive)
(let ((buf (current-buffer)))
- (cond ((frame-property (selected-frame) 'help-window-config)
- (set-window-configuration
- (frame-property (selected-frame) 'help-window-config))
- (set-frame-property (selected-frame) 'help-window-config nil))
+ (cond (help-window-config
+ (set-window-configuration help-window-config))
((not (one-window-p))
(delete-window)))
(if bury
@@ -480,6 +478,21 @@
;; another name (which is a shame, because w-d-h-b is a perfect name
;; for a macro) that uses with-displaying-help-buffer internally.
+(defcustom mode-for-help 'help-mode
+ "*Mode that help buffers are put into.")
+
+(defvar help-sticky-window nil
+;; Window into which help buffers will be displayed, rather than
+;; always searching for a new one. This is INTERNAL and liable to
+;; change its interface and/or name at any moment. It should be
+;; bound, not set.
+)
+
+(defvar help-window-config nil)
+
+(make-variable-buffer-local 'help-window-config)
+(put 'help-window-config 'permanent-local t)
+
(defun with-displaying-help-buffer (thunk &optional name)
"Form which makes a help buffer with given NAME and evaluates BODY there.
The actual name of the buffer is generated by the function `help-buffer-name'."
@@ -492,19 +505,28 @@
(mapcar 'window-frame
(windows-of-buffer buffer-name)))))))
(help-register-and-maybe-prune-excess buffer-name)
- (prog1 (with-output-to-temp-buffer buffer-name
- (prog1 (funcall thunk)
- (save-excursion
- (set-buffer standard-output)
- (help-mode))))
+ ;; if help-sticky-window is bogus or deleted, get rid of it.
+ (if (and help-sticky-window (or (not (windowp help-sticky-window))
+ (not (window-live-p help-sticky-window))))
+ (setq help-sticky-window nil))
+ (prog1
+ (let ((temp-buffer-show-function
+ (if help-sticky-window
+ #'(lambda (buffer)
+ (set-window-buffer help-sticky-window buffer))
+ temp-buffer-show-function)))
+ (with-output-to-temp-buffer buffer-name
+ (prog1 (funcall thunk)
+ (save-excursion
+ (set-buffer standard-output)
+ (funcall mode-for-help)))))
(let ((helpwin (get-buffer-window buffer-name)))
(when helpwin
- (with-current-buffer (window-buffer helpwin)
- ;; If the *Help* buffer is already displayed on this
- ;; frame, don't override the previous configuration
- (when help-not-visible
- (set-frame-property (selected-frame)
- 'help-window-config winconfig)))
+ ;; If the *Help* buffer is already displayed on this
+ ;; frame, don't override the previous configuration
+ (when help-not-visible
+ (with-current-buffer (window-buffer helpwin)
+ (setq help-window-config winconfig)))
(when help-selects-help-window
(select-window helpwin))
(cond ((eq helpwin (selected-window))
@@ -922,6 +944,21 @@
(setq obj (read (current-buffer)))
(and (symbolp obj) (fboundp obj) obj)))))))
+(defun function-at-event (event)
+ "Return the function whose name is around the position of EVENT.
+EVENT should be a mouse event. When calling from a popup or context menu,
+use `last-popup-menu-event' to find out where the mouse was clicked.
+\(You cannot use (interactive \"e\"), unfortunately. This returns a
+misc-user event.)
+
+If the event contains no position, or the position is not over text, or
+there is no function around that point, nil is returned."
+ (if (and event (event-buffer event) (event-point event))
+ (save-excursion
+ (set-buffer (event-buffer event))
+ (goto-char (event-point event))
+ (function-at-point))))
+
;; Default to nil for the non-hackers? Not until we find a way to
;; distinguish hackers from non-hackers automatically!
(defcustom describe-function-show-arglist t
@@ -1065,7 +1102,120 @@
(string-match "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" doc))
(setq doc (substring doc 0 (match-beginning 0))))
doc))
+; (let ((name-char "[-+a-zA-Z0-9_*]") (sym-char
"[-+a-zA-Z0-9_:*]"))
+; (list
+; ;;
+; ;; The symbol itself.
+; (list (concat "\\`\\(" name-char "+\\)\\(:\\)?")
+; '(1 (if (match-beginning 2)
+; 'font-lock-function-name-face
+; 'font-lock-variable-name-face)
+; nil t))
+; ;;
+; ;; Words inside `' which tend to be symbol names.
+; (list (concat "`\\(" sym-char sym-char "+\\)'")
+; 1 '(prog1
+; 'font-lock-reference-face
+; (add-list-mode-item (match-beginning 1)
+; (match-end 1)
+; nil
+; 'help-follow-reference))
+; t)
+; ;;
+; ;; CLisp `:' keywords as references.
+; (list (concat "\\<:" sym-char "+\\>") 0
'font-lock-reference-face t)))
+
+(defvar help-symbol-regexp
+ (let ((sym-char "[+a-zA-Z0-9_:*]")
+ (sym-char-no-dash "[-+a-zA-Z0-9_:*]"))
+ (concat "\\("
+ ;; a symbol with a - in it.
+ "\\<\\(" sym-char-no-dash "+\\(-" sym-char-no-dash
"+\\)+\\)\\>"
+ "\\|"
+ "`\\(" sym-char "+\\)'"
+ "\\)")))
+
+(defun help-symbol-run-function-1 (ev ex fun)
+ (let ((help-sticky-window
+ ;; if we were called from a help buffer, make sure the new help
+ ;; goes in the same window.
+ (if (and (event-buffer ev)
+ (symbol-value-in-buffer 'help-window-config
+ (event-buffer ev)))
+ (event-window ev)
+ help-sticky-window)))
+ (funcall fun (extent-property ex 'help-symbol))))
+
+(defun help-symbol-run-function (fun)
+ (let ((ex (extent-at-event last-popup-menu-event 'help-symbol)))
+ (when ex
+ (help-symbol-run-function-1 last-popup-menu-event ex fun))))
+
+(defvar help-symbol-function-context-menu
+ '("---"
+ ["View %_Documentation" (help-symbol-run-function 'describe-function)]
+ ["Find %_Function Source" (help-symbol-run-function 'find-function)]
+ ))
+
+(defvar help-symbol-variable-context-menu
+ '("---"
+ ["View %_Documentation" (help-symbol-run-function 'describe-variable)]
+ ["Find %_Variable Source" (help-symbol-run-function 'find-variable)]
+ ))
+
+(defvar help-symbol-function-and-variable-context-menu
+ '("---"
+ ["View Function %_Documentation" (help-symbol-run-function
+ 'describe-function)]
+ ["View Variable D%_ocumentation" (help-symbol-run-function
+ 'describe-variable)]
+ ["Find %_Function Source" (help-symbol-run-function 'find-function)]
+ ["Find %_Variable Source" (help-symbol-run-function 'find-variable)]
+ ))
+(defun frob-help-extents (buffer)
+ ;; Look through BUFFER, starting at the buffer's point and continuing
+ ;; till end of file, and find documented functions and variables.
+ ;; any such symbol found is tagged with an extent, that sets up these
+ ;; properties:
+ ;; 1. mouse-face is 'highlight (so the extent gets highlighted on mouse over)
+ ;; 2. help-symbol is the name of the symbol.
+ ;; 3. context-menu is a list of context menu items, specific to whether
+ ;; the symbol is a function, variable, or both.
+ ;; 4. activate-function will cause the function or variable to be described,
+ ;; replacing the existing help contents.
+ (save-excursion
+ (set-buffer buffer)
+ (let (b e name)
+ (while (re-search-forward help-symbol-regexp nil t)
+ (setq b (or (match-beginning 2) (match-beginning 4)))
+ (setq e (or (match-end 2) (match-end 4)))
+ (setq name (buffer-substring b e))
+ (let* ((sym (intern-soft name))
+ (var (and sym (boundp sym)
+ (documentation-property sym
+ 'variable-documentation t)))
+ (fun (and sym (fboundp sym)
+ (documentation sym t))))
+ (when (or var fun)
+ (let ((ex (make-extent b e)))
+ (set-extent-property ex 'mouse-face 'highlight)
+ (set-extent-property ex 'help-symbol sym)
+ (set-extent-property
+ ex 'context-menu
+ (cond ((and var fun)
+ help-symbol-function-and-variable-context-menu)
+ (var help-symbol-variable-context-menu)
+ (fun help-symbol-function-context-menu)))
+ (set-extent-property
+ ex 'activate-function
+ (if fun
+ #'(lambda (ev ex)
+ (help-symbol-run-function-1 ev ex 'describe-function))
+ #'(lambda (ev ex)
+ (help-symbol-run-function-1 ev ex 'describe-variable))))
+ ))))))) ;; 11 parentheses!
+
(defun describe-function-1 (function &optional nodoc)
"This function does the work for `describe-function'."
(princ (format "`%s' is " function))
@@ -1161,7 +1311,13 @@
(unless (and obsolete aliases)
(let ((doc (function-documentation function t)))
(princ "Documentation:\n")
- (princ doc)
+ (let ((oldp (point standard-output))
+ newp)
+ (princ doc)
+ (setq newp (point standard-output))
+ (goto-char oldp standard-output)
+ (frob-help-extents standard-output)
+ (goto-char newp standard-output))
(unless (or (equal doc "")
(eq ?\n (aref doc (1- (length doc)))))
(terpri)))))))))
@@ -1175,7 +1331,6 @@
(message nil)
(message (function-arglist function)))
-
(defun variable-at-point ()
(ignore-errors
(with-syntax-table emacs-lisp-mode-syntax-table
@@ -1188,6 +1343,21 @@
(let ((obj (read (current-buffer))))
(and (symbolp obj) (boundp obj) obj))))))
+(defun variable-at-event (event)
+ "Return the variable whose name is around the position of EVENT.
+EVENT should be a mouse event. When calling from a popup or context menu,
+use `last-popup-menu-event' to find out where the mouse was clicked.
+\(You cannot use (interactive \"e\"), unfortunately. This returns a
+misc-user event.)
+
+If the event contains no position, or the position is not over text, or
+there is no variable around that point, nil is returned."
+ (if (and event (event-buffer event) (event-point event))
+ (save-excursion
+ (set-buffer (event-buffer event))
+ (goto-char (event-point event))
+ (variable-at-point))))
+
(defun variable-obsolete-p (variable)
"Return non-nil if VARIABLE is obsolete."
(not (null (get variable 'byte-obsolete-variable))))
@@ -1316,7 +1486,13 @@
(when (or (not obsolete) (not aliases))
(if doc
;; note: documentation-property calls substitute-command-keys.
- (princ doc)
+ (let ((oldp (point standard-output))
+ newp)
+ (princ doc)
+ (setq newp (point standard-output))
+ (goto-char oldp standard-output)
+ (frob-help-extents standard-output)
+ (goto-char newp standard-output))
(princ "not documented as a variable."))))
(terpri)))
(format "variable `%s'" variable)))
@@ -1448,6 +1624,5 @@
(if (stringp string)
(with-displaying-help-buffer
(insert string)))))
-
;;; help.el ends here
Index: lisp/info.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/info.el,v
retrieving revision 1.15.2.17
diff -u -r1.15.2.17 info.el
--- info.el 2000/07/16 13:58:44 1.15.2.17
+++ info.el 2000/07/18 10:36:12
@@ -660,7 +660,7 @@
(equal Info-current-file filename)
(not Info-novice)
(string= "dir" (file-name-nondirectory Info-current-file))
- (if (y-or-n-p-maybe-dialog-box
+ (if (y-or-n-p
(format "Leave Info file `%s'? "
(file-name-nondirectory Info-current-file)))
(message "")
@@ -2879,7 +2879,7 @@
(interactive)
;; Do this first, so nothing has changed if user C-g's at query.
(and (buffer-modified-p)
- (y-or-n-p-maybe-dialog-box "Save the file? ")
+ (y-or-n-p "Save the file? ")
(save-buffer))
(use-local-map Info-mode-map)
(setq major-mode 'Info-mode)
Index: lisp/keydefs.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/keydefs.el,v
retrieving revision 1.6.2.4
diff -u -r1.6.2.4 keydefs.el
--- keydefs.el 2000/05/18 09:27:23 1.6.2.4
+++ keydefs.el 2000/07/18 10:36:12
@@ -272,6 +272,10 @@
(define-key global-map "\M-\C-t" 'transpose-sexps)
(define-key global-map "\C-x\C-t" 'transpose-lines)
+;; XEmacs: much more reasonable and useful key definitions.
+(define-key global-map '(control T) 'transpose-line-down)
+(define-key global-map '(meta T) 'transpose-line-up)
+
(define-key global-map "\M-;" 'indent-for-comment)
(define-key global-map "\M-j" 'indent-new-comment-line)
(define-key global-map "\M-\C-j" 'indent-new-comment-line)
Index: lisp/lisp-mode.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/lisp-mode.el,v
retrieving revision 1.10.2.4
diff -u -r1.10.2.4 lisp-mode.el
--- lisp-mode.el 2000/03/22 01:19:48 1.10.2.4
+++ lisp-mode.el 2000/07/18 10:36:12
@@ -43,59 +43,90 @@
(defvar emacs-lisp-mode-syntax-table nil)
(defvar lisp-mode-abbrev-table nil)
-;; XEmacs change
-(defvar lisp-interaction-mode-popup-menu
- (purecopy '("Lisp-Interaction"
- ["Evaluate Last %_S-expression" eval-last-sexp]
- ["Evaluate %_Whole Buffer" eval-current-buffer]
- ["Evaluate Re%_gion" eval-region
- :active (region-exists-p)]
- "---"
- ["%_Evaluate This Defun" eval-defun]
- ["%_Instrument This Defun for Debugging" edebug-defun]
- "---"
- ["Find %_Function Source..." find-function
+(defun construct-lisp-mode-menu (popup-p emacs-lisp-p)
+ (flet ((popup-wrap (form)
+ (if popup-p `(menu-call-at-event ',form) form)))
+ `(,@(if emacs-lisp-p
+ `(["%_Byte-Compile This File" ,(popup-wrap
+ 'emacs-lisp-byte-compile)]
+ ["B%_yte-Compile/Load This File"
+ ,(popup-wrap 'emacs-lisp-byte-compile-and-load)]
+ ["Byte-%_Recompile Directory..."
+ ,(popup-wrap 'byte-recompile-directory)]
+ "---"))
+ ["Evaluate Last %_S-expression" ,(popup-wrap 'eval-last-sexp)]
+ ["Evaluate %_Whole Buffer" ,(popup-wrap 'eval-current-buffer)]
+ ["Evaluate Re%_gion" eval-region :active (region-exists-p)]
+ "---"
+ ["%_Evaluate This Defun" ,(popup-wrap 'eval-defun)]
+ ["%_Instrument This Defun for Debugging" ,(popup-wrap 'edebug-defun)]
+ "---"
+ ,@(if popup-p
+ '(["Find %_Function"
+ (find-function (menu-call-at-event '(function-at-point)))
+ :suffix (let ((fun (menu-call-at-event '(function-at-point))))
+ (if fun (symbol-name fun) ""))
+ :active (and (fboundp 'find-function)
+ (menu-call-at-event '(function-at-point)))]
+ ["Find %_Variable"
+ (find-variable (menu-call-at-event '(variable-at-point)))
+ :suffix (let ((fun (menu-call-at-event '(variable-at-point))))
+ (if fun (symbol-name fun) ""))
+ :active (and (fboundp 'find-variable)
+ (menu-call-at-event '(variable-at-point)))]
+ ["Describe %_Function"
+ (describe-function (menu-call-at-event '(function-at-point)))
+ :suffix (let ((fun (menu-call-at-event '(function-at-point))))
+ (if fun (symbol-name fun) ""))
+ :active (and (fboundp 'describe-function)
+ (menu-call-at-event '(function-at-point)))]
+ ["Describe %_Variable"
+ (describe-variable (menu-call-at-event '(variable-at-point)))
+ :suffix (let ((fun (menu-call-at-event '(variable-at-point))))
+ (if fun (symbol-name fun) ""))
+ :active (and (fboundp 'describe-variable)
+ (menu-call-at-event '(variable-at-point)))])
+ '(["Find %_Function..." find-function
:active (fboundp 'find-function)]
- ["Find %_Variable Source..." find-variable
+ ["Find %_Variable..." find-variable
:active (fboundp 'find-variable)]
- ["%_Trace Function..." trace-function-background]
- ["%_Untrace All Functions" untrace-all
- :active (fboundp 'untrace-all)]
- "---"
- ["%_Comment Out Region" comment-region
- :active (region-exists-p)]
- "---"
- ["Indent %_Line or Region"
- (if (region-exists-p)
- (call-interactively 'indent-region)
- (call-interactively 'lisp-indent-line))]
- ["Indent B%_alanced Expression" indent-sexp]
- ["Indent %_Defun"
- (progn
- (beginning-of-defun)
- (indent-sexp))]
- "---"
- "Look for debug-on-error under Options->General"
- )))
+ ["Describe %_Function..." describe-function
+ :active (fboundp 'describe-function)]
+ ["Describe %_Variable..." describe-variable
+ :active (fboundp 'describe-variable)]))
+ ["%_Trace Function..." trace-function-background]
+ ["%_Untrace All Functions" untrace-all
+ :active (fboundp 'untrace-all)]
+ "---"
+ ["%_Comment Out Region" comment-region :active (region-exists-p)]
+ "---"
+ ["Indent %_Line or Region"
+ ,(popup-wrap '(if (region-exists-p)
+ (call-interactively 'indent-region)
+ (call-interactively 'lisp-indent-line)))]
+ ["Indent B%_alanced Expression" ,(popup-wrap 'indent-sexp)]
+ ["Indent %_Defun"
+ ,(popup-wrap '(progn
+ (beginning-of-defun)
+ (indent-sexp)))]
+ "---"
+ "Look for debug-on-error under Options->General"
+ )))
+
+(defvar lisp-interaction-mode-popup-menu
+ (cons "Lisp-Interaction" (construct-lisp-mode-menu t nil)))
(defvar emacs-lisp-mode-popup-menu
- (purecopy
- (nconc
- '("Emacs-Lisp"
- ["%_Byte-Compile This File" emacs-lisp-byte-compile]
- ["B%_yte-Compile/Load This File" emacs-lisp-byte-compile-and-load]
- ["Byte-%_Recompile Directory..." byte-recompile-directory]
- "---")
- (cdr lisp-interaction-mode-popup-menu))))
+ (cons "Emacs-Lisp" (construct-lisp-mode-menu t t)))
;Don't have a menubar entry in Lisp Interaction mode. Otherwise, the
;*scratch* buffer has a Lisp menubar item! Very confusing.
;Jan Vroonhof really wants this, so it's back. --ben
(defvar lisp-interaction-mode-menubar-menu
- (purecopy (cons "%_Lisp" (cdr lisp-interaction-mode-popup-menu))))
+ (cons "%_Lisp" (construct-lisp-mode-menu nil nil)))
(defvar emacs-lisp-mode-menubar-menu
- (purecopy (cons "%_Lisp" (cdr emacs-lisp-mode-popup-menu))))
+ (cons "%_Lisp" (construct-lisp-mode-menu nil t)))
(if (not emacs-lisp-mode-syntax-table)
(let ((i 0))
@@ -667,8 +698,16 @@
(let ((function (buffer-substring (point)
(progn (forward-sexp 1) (point))))
method)
- (setq method (or (get (intern-soft function) 'lisp-indent-function)
- (get (intern-soft function) 'lisp-indent-hook)))
+ (if (condition-case nil
+ (save-excursion
+ (backward-up-list 1)
+ (backward-up-list 1)
+ (backward-up-list 1)
+ (looking-at "(flet\\s-"))
+ (error nil))
+ (setq method 'defun)
+ (setq method (or (get (intern-soft function) 'lisp-indent-function)
+ (get (intern-soft function) 'lisp-indent-hook))))
(cond ((or (eq method 'defun)
(and (null method)
(> (length function) 3)
Index: lisp/menubar-items.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/menubar-items.el,v
retrieving revision 1.6.2.29
diff -u -r1.6.2.29 menubar-items.el
--- menubar-items.el 2000/05/21 01:40:33 1.6.2.29
+++ menubar-items.el 2000/07/18 10:36:13
@@ -1483,9 +1483,10 @@
`(,(if definedp
'("%_Jump to Bookmark"
:filter (lambda (&rest junk)
- (mapcar #'(lambda (bmk)
- `[,bmk (bookmark-jump ',bmk)])
- (bookmark-all-names))))
+ (submenu-generate-accelerator-spec
+ (mapcar #'(lambda (bmk)
+ `[,bmk (bookmark-jump ',bmk)])
+ (bookmark-all-names)))))
["%_Jump to Bookmark" nil nil])
["Set %_Bookmark" bookmark-set
:active (fboundp 'bookmark-set)]
@@ -1500,9 +1501,10 @@
,(if definedp
'("%_Delete Bookmark"
:filter (lambda (&rest junk)
- (mapcar #'(lambda (bmk)
- `[,bmk (bookmark-delete ',bmk)])
- (bookmark-all-names))))
+ (submenu-generate-accelerator-spec
+ (mapcar #'(lambda (bmk)
+ `[,bmk (bookmark-delete ',bmk)])
+ (bookmark-all-names)))))
["%_Delete Bookmark" nil nil])
["%_Edit Bookmark List" bookmark-bmenu-list ,definedp]
"---"
@@ -1517,7 +1519,7 @@
"Customization of `Buffers' menu."
:group 'menu)
-(defvar buffers-menu-omit-chars-list '(?b ?p ?l))
+(defvar buffers-menu-omit-chars-list '(?b ?p ?l ?d))
(defcustom buffers-menu-max-size 25
"*Maximum number of entries which may appear on the \"Buffers\" menu.
@@ -1875,7 +1877,6 @@
(cadr lang)))])
tutorial-supported-languages)))))
-
(set-menubar default-menubar)
@@ -1903,133 +1904,12 @@
["U%_nsplit Window" delete-other-windows]
))
-(defvar global-popup-menu nil
- "The global popup menu. This is present in all modes.
-See the function `popup-menu' for a description of menu syntax.")
-
-(defvar mode-popup-menu nil
- "The mode-specific popup menu. Automatically buffer local.
-This is appended to the default items in `global-popup-menu'.
-See the function `popup-menu' for a description of menu syntax.")
-(make-variable-buffer-local 'mode-popup-menu)
-
;; In an effort to avoid massive menu clutter, this mostly worthless menu is
;; superseded by any local popup menu...
(setq-default mode-popup-menu default-popup-menu)
-(defvar activate-popup-menu-hook nil
- "Function or functions run before a mode-specific popup menu is made visible.
-These functions are called with no arguments, and should interrogate and
-modify the value of `global-popup-menu' or `mode-popup-menu' as desired.
-Note: this hook is only run if you use `popup-mode-menu' for activating the
-global and mode-specific commands; if you have your own binding for button3,
-this hook won't be run.")
-
-(defun popup-mode-menu ()
- "Pop up a menu of global and mode-specific commands.
-The menu is computed by combining `global-popup-menu' and
`mode-popup-menu'."
- (interactive "@_")
- (run-hooks 'activate-popup-menu-hook)
- (popup-menu
- (cond ((and global-popup-menu mode-popup-menu)
- ;; Merge global-popup-menu and mode-popup-menu
- (check-menu-syntax mode-popup-menu)
- (let* ((title (car mode-popup-menu))
- (items (cdr mode-popup-menu))
- mode-filters)
- ;; Strip keywords from local menu for attaching them at the top
- (while (and items
- (keywordp (car items)))
- ;; Push both keyword and its argument.
- (push (pop items) mode-filters)
- (push (pop items) mode-filters))
- (setq mode-filters (nreverse mode-filters))
- ;; If mode-filters contains a keyword already present in
- ;; `global-popup-menu', you will probably lose.
- (append (list (car global-popup-menu))
- mode-filters
- (cdr global-popup-menu)
- '("---" "---")
- (if popup-menu-titles (list title))
- (if popup-menu-titles '("---" "---"))
- items)))
- (t
- (or mode-popup-menu
- global-popup-menu
- (error "No menu defined in this buffer"))))))
-
-(defun popup-buffer-menu (event)
- "Pop up a copy of the Buffers menu (from the menubar) where the mouse is
clicked."
- (interactive "e")
- (let ((window (and (event-over-text-area-p event) (event-window event)))
- (bmenu nil))
- (or window
- (error "Pointer must be in a normal window"))
- (select-window window)
- (if current-menubar
- (setq bmenu (assoc "%_Buffers" current-menubar)))
- (if (null bmenu)
- (setq bmenu (assoc "%_Buffers" default-menubar)))
- (if (null bmenu)
- (error "Can't find the Buffers menu"))
- (popup-menu bmenu)))
-
-(defun popup-menubar-menu (event)
- "Pop up a copy of menu that also appears in the menubar."
- (interactive "e")
- (let ((window (and (event-over-text-area-p event) (event-window event)))
- popup-menubar)
- (or window
- (error "Pointer must be in a normal window"))
- (select-window window)
- (and current-menubar (run-hooks 'activate-menubar-hook))
- ;; #### Instead of having to copy this just to safely get rid of
- ;; any nil what we should really do is fix up the internal menubar
- ;; code to just ignore nil if generating a popup menu
- (setq popup-menubar (delete nil (copy-sequence (or current-menubar
- default-menubar))))
- (popup-menu (cons "%_Menubar Menu" popup-menubar))
- ))
-
-(global-set-key 'button3 'popup-mode-menu)
-;; shift button3 and shift button2 are reserved for Hyperbole
-(global-set-key '(meta control button3) 'popup-buffer-menu)
-;; The following command is way too dangerous with Custom.
-;; (global-set-key '(meta shift button3) 'popup-menubar-menu)
-
-;; Here's a test of the cool new menu features (from Stig).
-
-;;(setq mode-popup-menu
-;; '("Test Popup Menu"
-;; :filter cdr
-;; ["this item won't appear because of the menu filter" ding t]
-;; "--:singleLine"
-;; "singleLine"
-;; "--:doubleLine"
-;; "doubleLine"
-;; "--:singleDashedLine"
-;; "singleDashedLine"
-;; "--:doubleDashedLine"
-;; "doubleDashedLine"
-;; "--:noLine"
-;; "noLine"
-;; "--:shadowEtchedIn"
-;; "shadowEtchedIn"
-;; "--:shadowEtchedOut"
-;; "shadowEtchedOut"
-;; "--:shadowDoubleEtchedIn"
-;; "shadowDoubleEtchedIn"
-;; "--:shadowDoubleEtchedOut"
-;; "shadowDoubleEtchedOut"
-;; "--:shadowEtchedInDash"
-;; "shadowEtchedInDash"
-;; "--:shadowEtchedOutDash"
-;; "shadowEtchedOutDash"
-;; "--:shadowDoubleEtchedInDash"
-;; "shadowDoubleEtchedInDash"
-;; "--:shadowDoubleEtchedOutDash"
-;; "shadowDoubleEtchedOutDash"
-;; ))
+
+;; misc
(defun xemacs-splash-buffer ()
"Redisplay XEmacs splash screen in a buffer."
Index: lisp/menubar.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/menubar.el,v
retrieving revision 1.6.2.4
diff -u -r1.6.2.4 menubar.el
--- menubar.el 2000/04/16 08:33:25 1.6.2.4
+++ menubar.el 2000/07/18 10:36:13
@@ -461,6 +461,199 @@
(enable-menu-item-1 path t nil))
+
+;;;;;;; popup menus
+
+(defvar global-popup-menu nil
+ "The global popup menu. This is present in all modes.
+See the function `popup-menu' for a description of menu syntax.")
+
+(defvar mode-popup-menu nil
+ "The mode-specific popup menu. Automatically buffer local.
+This is appended to the default items in `global-popup-menu'.
+See the function `popup-menu' for a description of menu syntax.")
+(make-variable-buffer-local 'mode-popup-menu)
+
+(defvar activate-popup-menu-hook nil
+ "Function or functions run before a mode-specific popup menu is made visible.
+These functions are called with no arguments, and should interrogate and
+modify the value of `global-popup-menu' or `mode-popup-menu' as desired.
+Note: this hook is only run if you use `popup-mode-menu' for activating the
+global and mode-specific commands; if you have your own binding for button3,
+this hook won't be run.")
+
+(defvar last-popup-menu-event nil
+ "The mouse event that invoked the last popup menu.
+NOTE: This is EXPERIMENTAL and may change at any time.")
+
+(defun popup-mode-menu (&optional event)
+ "Pop up a menu of global and mode-specific commands.
+The menu is computed by combining `global-popup-menu' and `mode-popup-menu'
+with any items derived from the `context-menu' property of the extent where the
+button was clicked."
+ (interactive "_e")
+ (setq last-popup-menu-event
+ (or (and event (button-event-p event) event)
+ (let* ((mouse-pos (mouse-position))
+ (win (car mouse-pos))
+ (x (cadr mouse-pos))
+ (y (cddr mouse-pos))
+ (edges (window-pixel-edges win))
+ (winx (first edges))
+ (winy (second edges))
+ (x (+ x winx))
+ (y (+ y winy)))
+ (make-event 'button-press
+ `(button 3 x ,x y ,y channel ,(window-frame win)
+ timestamp ,(current-event-timestamp
+ (cdfw-console win)))))))
+ (run-hooks 'activate-popup-menu-hook)
+ (let* ((context-window (and event (event-window event)))
+ (context-point (and event (event-point event)))
+ (context-extents (and context-window
+ context-point
+ (extents-at context-point
+ (window-buffer context-window)
+ 'context-menu)))
+ (context-menu-items
+ (apply 'append (mapcar #'(lambda (extent)
+ (extent-property extent 'context-menu))
+ context-extents))))
+ (popup-menu
+ (cond ((and global-popup-menu mode-popup-menu)
+ ;; Merge global-popup-menu and mode-popup-menu
+ (check-menu-syntax mode-popup-menu)
+ (let* ((title (car mode-popup-menu))
+ (items (cdr mode-popup-menu))
+ mode-filters)
+ ;; Strip keywords from local menu for attaching them at the top
+ (while (and items
+ (keywordp (car items)))
+ ;; Push both keyword and its argument.
+ (push (pop items) mode-filters)
+ (push (pop items) mode-filters))
+ (setq mode-filters (nreverse mode-filters))
+ ;; If mode-filters contains a keyword already present in
+ ;; `global-popup-menu', you will probably lose.
+ (append (list (car global-popup-menu))
+ mode-filters
+ (cdr global-popup-menu)
+ '("---" "---")
+ (if popup-menu-titles (list title))
+ (if popup-menu-titles '("---" "---"))
+ items
+ context-menu-items)))
+ (t
+ (append
+ (or mode-popup-menu
+ global-popup-menu
+ (error "No menu defined in this buffer"))
+ context-menu-items))))
+
+ (while (popup-up-p)
+ (dispatch-event (next-event)))
+
+ ))
+
+(defun popup-buffer-menu (event)
+ "Pop up a copy of the Buffers menu (from the menubar) where the mouse is
clicked."
+ (interactive "e")
+ (let ((window (and (event-over-text-area-p event) (event-window event)))
+ (bmenu nil))
+ (or window
+ (error "Pointer must be in a normal window"))
+ (select-window window)
+ (if current-menubar
+ (setq bmenu (assoc "%_Buffers" current-menubar)))
+ (if (null bmenu)
+ (setq bmenu (assoc "%_Buffers" default-menubar)))
+ (if (null bmenu)
+ (error "Can't find the Buffers menu"))
+ (popup-menu bmenu)))
+
+(defun popup-menubar-menu (event)
+ "Pop up a copy of menu that also appears in the menubar."
+ (interactive "e")
+ (let ((window (and (event-over-text-area-p event) (event-window event)))
+ popup-menubar)
+ (or window
+ (error "Pointer must be in a normal window"))
+ (select-window window)
+ (and current-menubar (run-hooks 'activate-menubar-hook))
+ ;; #### Instead of having to copy this just to safely get rid of
+ ;; any nil what we should really do is fix up the internal menubar
+ ;; code to just ignore nil if generating a popup menu
+ (setq popup-menubar (delete nil (copy-sequence (or current-menubar
+ default-menubar))))
+ (popup-menu (cons "%_Menubar Menu" popup-menubar))
+ ))
+
+(defun menu-call-at-event (form &optional event default-behavior-fallback)
+ "Call FORM while temporarily setting point to the position in EVENT.
+NOTE: This is EXPERIMENTAL and may change at any time.
+
+FORM is called the way forms in menu specs are: i.e. if a symbol, it's called
+with `call-interactively', otherwise with `eval'. EVENT defaults to
+`last-popup-menu-event', making this function especially useful in popup
+menus. The buffer and point are set temporarily within a `save-excursion'.
+If EVENT is not a mouse event, or was not over a buffer, nothing
+happens unless DEFAULT-BEHAVIOR-FALLBACK is non-nil, in which case the
+FORM is called normally."
+ (or event (setq event last-popup-menu-event))
+ (let ((buf (event-buffer event))
+ (p (event-closest-point event)))
+ (cond ((and buf p (> p 0))
+ (save-excursion
+ (set-buffer buf)
+ (goto-char p)
+ (if (symbolp form)
+ (call-interactively form)
+ (eval form))))
+ (default-behavior-fallback
+ (if (symbolp form)
+ (call-interactively form)
+ (eval form))))))
+
+(global-set-key 'button3 'popup-mode-menu)
+;; shift button3 and shift button2 are reserved for Hyperbole
+(global-set-key '(meta control button3) 'popup-buffer-menu)
+;; The following command is way too dangerous with Custom.
+;; (global-set-key '(meta shift button3) 'popup-menubar-menu)
+
+;; Here's a test of the cool new menu features (from Stig).
+
+;;(setq mode-popup-menu
+;; '("Test Popup Menu"
+;; :filter cdr
+;; ["this item won't appear because of the menu filter" ding t]
+;; "--:singleLine"
+;; "singleLine"
+;; "--:doubleLine"
+;; "doubleLine"
+;; "--:singleDashedLine"
+;; "singleDashedLine"
+;; "--:doubleDashedLine"
+;; "doubleDashedLine"
+;; "--:noLine"
+;; "noLine"
+;; "--:shadowEtchedIn"
+;; "shadowEtchedIn"
+;; "--:shadowEtchedOut"
+;; "shadowEtchedOut"
+;; "--:shadowDoubleEtchedIn"
+;; "shadowDoubleEtchedIn"
+;; "--:shadowDoubleEtchedOut"
+;; "shadowDoubleEtchedOut"
+;; "--:shadowEtchedInDash"
+;; "shadowEtchedInDash"
+;; "--:shadowEtchedOutDash"
+;; "shadowEtchedOutDash"
+;; "--:shadowDoubleEtchedInDash"
+;; "shadowDoubleEtchedInDash"
+;; "--:shadowDoubleEtchedOutDash"
+;; "shadowDoubleEtchedOutDash"
+;; ))
+
(defun get-popup-menu-response (menu-desc &optional event)
"Pop up the given menu and wait for a response.
This blocks until the response is received, and returns the misc-user
Index: lisp/minibuf.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/minibuf.el,v
retrieving revision 1.14.2.21
diff -u -r1.14.2.21 minibuf.el
--- minibuf.el 2000/05/11 16:32:17 1.14.2.21
+++ minibuf.el 2000/07/18 10:36:14
@@ -52,7 +52,7 @@
(defcustom minibuffer-history-uniquify t
"*Non-nil means when adding an item to a minibuffer history, remove
-previous occurances of the same item from the history list first,
+previous occurrences of the same item from the history list first,
rather than just consing the new element onto the front of the list."
:type 'boolean
:group 'minibuffer)
@@ -1660,9 +1660,29 @@
must-match initial-contents
completer)
(if (should-use-dialog-box-p)
- ;; this calls read-file-name-2
- (mouse-read-file-name-1 history prompt dir default must-match
- initial-contents completer)
+ (condition-case nil
+ (let ((file
+ (apply #'make-dialog-box
+ 'file `(:title ,(capitalize-string-as-title
+ ;; Kludge: Delete ": " off the end.
+ (replace-in-string prompt ": $" ""))
+ ,@(and dir (list :initial-directory
+ dir))
+ :file-must-exist ,must-match
+ ,@(and initial-contents
+ (list :initial-filename
+ initial-contents))))))
+ ;; hack -- until we implement reading a directory properly,
+ ;; allow a file as indicating the directory it's in
+ (if (and (eq completer 'read-directory-name-internal)
+ (not (file-directory-p file)))
+ (file-name-directory file)
+ file))
+ (unimplemented
+ ;; this calls read-file-name-2
+ (mouse-read-file-name-1 history prompt dir default must-match
+ initial-contents completer)
+ ))
(add-one-shot-hook
'minibuffer-setup-hook
(lambda ()
@@ -1946,13 +1966,8 @@
;; a specifier would be nice.
(set (make-local-variable 'frame-title-format)
(capitalize-string-as-title
- ;; Delete ": " off the end. There must be an easier way!
- (let ((end-pos (length prompt)))
- (if (and (> end-pos 0) (eq (aref prompt (1- end-pos)) ? ))
- (setq end-pos (1- end-pos)))
- (if (and (> end-pos 0) (eq (aref prompt (1- end-pos)) ?:))
- (setq end-pos (1- end-pos)))
- (substring prompt 0 end-pos))))
+ ;; Kludge: Delete ": " off the end.
+ (replace-in-string prompt ": $" "")))
;; ensure that killing the frame works right,
;; instead of leaving us in the minibuffer.
(add-local-hook 'delete-frame-hook
Index: lisp/mouse.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/mouse.el,v
retrieving revision 1.19.2.8
diff -u -r1.19.2.8 mouse.el
--- mouse.el 2000/01/26 11:36:31 1.19.2.8
+++ mouse.el 2000/07/18 10:36:15
@@ -2,7 +2,7 @@
;; Copyright (C) 1988, 1992-4, 1997 Free Software Foundation, Inc.
;; Copyright (C) 1995 Tinker Systems
-;; Copyright (C) 1995, 1996 Ben Wing.
+;; Copyright (C) 1995, 1996, 2000 Ben Wing.
;; Maintainer: XEmacs Development Team
;; Keywords: mouse, dumped
@@ -30,6 +30,15 @@
;; This file is dumped with XEmacs (when window system support is compiled in).
+;;; Authorship:
+
+;; Probably originally derived from FSF 19 pre-release.
+;; much hacked upon by Jamie Zawinski and crew, pre-1994.
+;; (only mouse-motion stuff currently remains from that era)
+;; all mouse-track stuff completely rewritten by Ben Wing, 1995-1996.
+;; mouse-eval-sexp and *-inside-extent-p from Stig, 1995.
+;; vertical divider code c. 1998 from ?.
+
;;; Code:
(provide 'mouse)
@@ -39,16 +48,7 @@
(global-set-key '(control button1) 'mouse-track-insert)
(global-set-key '(control shift button1) 'mouse-track-delete-and-insert)
(global-set-key '(meta button1) 'mouse-track-do-rectangle)
-
-;; drops are now handled in dragdrop.el (ograf(a)fga.de)
-
-;; enable drag regions (ograf(a)fga.de)
-;; if button2 is dragged from within a region, this becomes a drop
-;;
-;; this must be changed to the new api
-(if (featurep '(or offix cde mswindows))
- (global-set-key 'button2 'mouse-drag-or-yank)
- (global-set-key 'button2 'mouse-yank))
+(global-set-key 'button2 'mouse-track)
(defgroup mouse nil
"Window system-independent mouse support."
@@ -185,7 +185,6 @@
(defun click-inside-extent-p (click extent)
"Return non-nil if the button event is within the primary selection-extent.
Return nil otherwise."
- ;; stig(a)hackvan.com
(let ((ewin (event-window click))
(epnt (event-point click)))
(and ewin
@@ -206,7 +205,6 @@
"Return t if point is within the bounds of the primary selection extent.
Return t is point is at the end position of the extent.
Return nil otherwise."
- ;; stig(a)hackvan.com
(and extent
(eq (current-buffer)
(extent-object extent))
@@ -214,35 +212,27 @@
(>= (extent-end-position extent) (point))))
(defun point-inside-selection-p ()
- ;; by Stig(a)hackvan.com
(or (point-inside-extent-p primary-selection-extent)
(point-inside-extent-p zmacs-region-extent)))
-(defun mouse-drag-or-yank (event)
- "Either drag or paste the current selection.
-If the variable `mouse-yank-at-point' is non-nil,
-move the cursor to the location of the click before pasting.
-This functions has to be improved. Currently it is just a (working) test."
- ;; by Oliver Graf <ograf(a)fga.de>
- (interactive "e")
- (if (click-inside-extent-p event zmacs-region-extent)
- ;; okay, this is a drag
- (cond ((featurep 'offix)
- (offix-start-drag-region
- event
- (extent-start-position zmacs-region-extent)
- (extent-end-position zmacs-region-extent)))
- ((featurep 'cde)
- ;; should also work with CDE
- (cde-start-drag-region event
- (extent-start-position zmacs-region-extent)
- (extent-end-position zmacs-region-extent)))
- (t (error "No offix or CDE support compiled in")))
- ;; no drag, call region-funct
- (and (not mouse-yank-at-point)
- (mouse-set-point event))
- (funcall mouse-yank-function))
- )
+(defun mouse-begin-drag-n-drop (event)
+ "Begin a drag-n-drop operation.
+EVENT should be the button event that initiated the drag.
+Returns whether a drag was begun."
+ ;; #### barely implemented.
+ (when (click-inside-selection-p event)
+ (cond ((featurep 'offix)
+ (offix-start-drag-region
+ event
+ (extent-start-position zmacs-region-extent)
+ (extent-end-position zmacs-region-extent))
+ t)
+ ((featurep 'cde)
+ ;; should also work with CDE
+ (cde-start-drag-region event
+ (extent-start-position zmacs-region-extent)
+ (extent-end-position zmacs-region-extent))
+ t))))
(defun mouse-eval-sexp (click force-window)
"Evaluate the sexp under the mouse. Usually, this is the last sexp before
@@ -257,7 +247,6 @@
you can use `mouse-eval-sexp' to interactively test code that acts upon a
buffer...something you cannot do with the standard `eval-last-sexp' function.
It's also fantastic for debugging regular expressions."
- ;; by Stig(a)hackvan.com
(interactive "e\nP")
(let (exp val result-str)
(setq exp (save-window-excursion
@@ -503,6 +492,36 @@
:type '(choice integer (const :tag "Disabled" nil))
:group 'mouse)
+(defcustom mouse-track-activate-strokes '(button1-double-click button2-click)
+ "List of mouse strokes that can cause \"activation\" of the text extent
+under the mouse. The exact meaning of \"activation\" is dependent on the
+text clicked on and the mode of the buffer, but typically entails actions
+such as following a hyperlink or selecting an entry in a completion buffer.
+
+Possible list entries are
+
+button1-click
+button1-double-click
+button1-triple-click
+button1-down
+button2-click
+button2-double-click
+button2-triple-click
+button2-down
+
+As a general rule, you should not use the \"-down\" values, because this
+makes it impossible to have other simultaneous actions, such as selection."
+ :type '(set
+ button1-click
+ button1-double-click
+ button1-triple-click
+ button1-down
+ button2-click
+ button2-double-click
+ button2-triple-click
+ button2-down)
+ :group 'mouse)
+
(defvar mouse-track-x-threshold '(face-width 'default)
"Minimum number of pixels in the X direction for a drag to be initiated.
If the mouse is moved more than either the X or Y threshold while the
@@ -539,6 +558,15 @@
'mouse-track-scroll-undefined
(copy-event event)))))
+(defun mouse-track-do-activate (event)
+ "Execute the activate function under EVENT, if any.
+Return true if the function was activated."
+ (let ((ex (extent-at-event event 'activate-function)))
+ (when ex
+ (funcall (extent-property ex 'activate-function)
+ event ex)
+ t)))
+
(defun mouse-track-run-hook (hook event &rest args)
;; ugh, can't use run-hook-with-args-until-success because we have
;; to get the value using symbol-value-in-buffer. Doing a
@@ -585,9 +613,9 @@
)
(defun mouse-track (event)
- "Make a selection with the mouse. This should be bound to a mouse button.
-The behavior of XEmacs during mouse selection is customizable using various
-hooks and variables: see `mouse-track-click-hook', `mouse-track-drag-hook',
+ "Generalized mouse-button handler. This should be bound to a mouse button.
+The behavior of this function is customizable using various hooks and
+variables: see `mouse-track-click-hook', `mouse-track-drag-hook',
`mouse-track-drag-up-hook', `mouse-track-down-hook', `mouse-track-up-hook',
`mouse-track-cleanup-hook', `mouse-track-multi-click-time',
`mouse-track-scroll-delay', `mouse-track-x-threshold', and
@@ -1110,9 +1138,26 @@
(disown-selection)))))
(setq default-mouse-track-down-event nil))))
+;; return t if the button or motion event involved the specified button.
+(defun default-mouse-track-event-is-with-button (event n)
+ (cond ((button-event-p event)
+ (= n (event-button event)))
+ ((motion-event-p event)
+ (memq (cdr
+ (assq n '((1 . button1) (2 . button2) (3 . button3)
+ (4 . button4) (5 . button5))))
+ (event-modifiers event)))))
+
(defun default-mouse-track-down-hook (event click-count)
- (setq default-mouse-track-down-event (copy-event event))
- nil)
+ (cond ((default-mouse-track-event-is-with-button event 1)
+ (if (and (memq 'button1-down mouse-track-activate-strokes)
+ (mouse-track-do-activate event))
+ t
+ (setq default-mouse-track-down-event (copy-event event))
+ nil))
+ ((default-mouse-track-event-is-with-button event 2)
+ (and (memq 'button2-down mouse-track-activate-strokes)
+ (mouse-track-do-activate event)))))
(defun default-mouse-track-cleanup-extents-hook ()
(remove-hook 'pre-command-hook 'default-mouse-track-cleanup-extents-hook)
@@ -1133,7 +1178,8 @@
(if (consp extent) ; rectangle-p
(mapcar func extent)
(if extent
- (funcall func extent))))))
+ (funcall func extent)))))
+ t)
(defun default-mouse-track-cleanup-extent ()
(let ((dead-func
@@ -1153,13 +1199,16 @@
(setq default-mouse-track-extent nil)))))
(defun default-mouse-track-drag-hook (event click-count was-timeout)
- (default-mouse-track-deal-with-down-event click-count)
- (default-mouse-track-set-point event default-mouse-track-window)
- (default-mouse-track-cleanup-extent)
- (default-mouse-track-next-move default-mouse-track-min-anchor
- default-mouse-track-max-anchor
- default-mouse-track-extent)
- t)
+ (cond ((default-mouse-track-event-is-with-button event 1)
+ (default-mouse-track-deal-with-down-event click-count)
+ (default-mouse-track-set-point event default-mouse-track-window)
+ (default-mouse-track-cleanup-extent)
+ (default-mouse-track-next-move default-mouse-track-min-anchor
+ default-mouse-track-max-anchor
+ default-mouse-track-extent)
+ t)
+ ((default-mouse-track-event-is-with-button event 2)
+ (mouse-begin-drag-n-drop event))))
(defun default-mouse-track-return-dragged-selection (event)
(default-mouse-track-cleanup-extent)
@@ -1210,15 +1259,45 @@
result))
(defun default-mouse-track-drag-up-hook (event click-count)
- (let ((result (default-mouse-track-return-dragged-selection event)))
- (if result
- (default-mouse-track-maybe-own-selection result 'PRIMARY)))
- t)
+ (when (default-mouse-track-event-is-with-button event 1)
+ (let ((result (default-mouse-track-return-dragged-selection event)))
+ (if result
+ (default-mouse-track-maybe-own-selection result 'PRIMARY)))
+ t))
(defun default-mouse-track-click-hook (event click-count)
- (default-mouse-track-drag-hook event click-count nil)
- (default-mouse-track-drag-up-hook event click-count)
- t)
+ (cond ((default-mouse-track-event-is-with-button event 1)
+ (if (and
+ (or (and (= click-count 1)
+ (memq 'button1-click
+ mouse-track-activate-strokes))
+ (and (= click-count 2)
+ (memq 'button1-double-click
+ mouse-track-activate-strokes))
+ (and (= click-count 3)
+ (memq 'button1-triple-click
+ mouse-track-activate-strokes)))
+ (mouse-track-do-activate event))
+ t
+ (default-mouse-track-drag-hook event click-count nil)
+ (default-mouse-track-drag-up-hook event click-count)
+ t))
+ ((default-mouse-track-event-is-with-button event 2)
+ (if (and
+ (or (and (= click-count 1)
+ (memq 'button2-click
+ mouse-track-activate-strokes))
+ (and (= click-count 2)
+ (memq 'button2-double-click
+ mouse-track-activate-strokes))
+ (and (= click-count 3)
+ (memq 'button2-triple-click
+ mouse-track-activate-strokes)))
+ (mouse-track-do-activate event))
+ t
+ (mouse-yank event)
+ t))))
+
(add-hook 'mouse-track-down-hook 'default-mouse-track-down-hook)
(add-hook 'mouse-track-drag-hook 'default-mouse-track-drag-hook)
Index: lisp/package-admin.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/package-admin.el,v
retrieving revision 1.4.2.11
diff -u -r1.4.2.11 package-admin.el
--- package-admin.el 2000/01/26 11:36:33 1.4.2.11
+++ package-admin.el 2000/07/18 10:36:15
@@ -441,7 +441,8 @@
;; Delete empty directories.
(if dirs
(let ( (orig-default-directory default-directory)
- directory files file )
+ ;; directory files file
+ )
;; Make sure we preserve the existing `default-directory'.
;; JV, why does this change the default directory? Does it indeed?
(unwind-protect
Index: lisp/package-get.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/package-get.el,v
retrieving revision 1.13.2.28
diff -u -r1.13.2.28 package-get.el
--- package-get.el 2000/06/14 20:24:03 1.13.2.28
+++ package-get.el 2000/07/18 10:36:16
@@ -639,7 +639,6 @@
(mapcar
#'(lambda (reqd)
(let* ((reqd-package (package-get-package-provider
reqd))
- (reqd-version (cadr reqd-package))
(reqd-name (car reqd-package)))
(if (null reqd-name)
(error "Unable to find a provider for
%s" reqd))
Index: lisp/package-ui.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/package-ui.el,v
retrieving revision 1.1.2.11
diff -u -r1.1.2.11 package-ui.el
--- package-ui.el 2000/06/21 19:07:02 1.1.2.11
+++ package-ui.el 2000/07/18 10:36:16
@@ -521,17 +521,6 @@
(error "No package under cursor!")))
)))
-;;; "Why is there no standard function to do this?"
-(defun pui-popup-context-sensitive (event)
- (interactive "e")
- (save-excursion
- (set-buffer (event-buffer event))
- (goto-char (event-point event))
- (popup-menu pui-menu event)
- ;; I agree with dired.el - this is seriously bogus.
- (while (popup-menu-up-p)
- (dispatch-event (next-event)))))
-
(defvar pui-menu
'("Packages"
["Toggle install " pui-toggle-package-key :active (pui-current-package)
:suffix (format "`%s'" (or (pui-current-package) "..."))]
@@ -547,6 +536,16 @@
["Help" pui-help t]
["Quit" pui-quit t]))
+;;; "Why is there no standard function to do this?"
+(defun pui-popup-context-sensitive (event)
+ (interactive "e")
+ (save-excursion
+ (set-buffer (event-buffer event))
+ (goto-char (event-point event))
+ (popup-menu pui-menu event)
+ ;; I agree with dired.el - this is seriously bogus.
+ (while (popup-up-p)
+ (dispatch-event (next-event)))))
(defun list-packages-mode ()
"Symbols in the leftmost column:
Index: lisp/replace.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/replace.el,v
retrieving revision 1.4.2.4
diff -u -r1.4.2.4 replace.el
--- replace.el 1999/08/27 15:08:12 1.4.2.4
+++ replace.el 2000/07/18 10:36:16
@@ -604,7 +604,7 @@
;; XEmacs
(defun perform-replace-next-event (event)
- (if isearch-highlight
+ (if search-highlight
(let ((aborted t))
(unwind-protect
(progn
Index: lisp/select.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/select.el,v
retrieving revision 1.5.2.10
diff -u -r1.5.2.10 select.el
--- select.el 2000/07/16 11:32:53 1.5.2.10
+++ select.el 2000/07/18 10:36:16
@@ -87,7 +87,7 @@
The argument TYPE (default `PRIMARY') says which selection,
and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule)
says how to convert the data. Returns NIL if there is no selection"
- (condition-case err (get-selection type data-type) (t nil)))
+ (condition-case nil (get-selection type data-type) (t nil)))
(defun get-selection (&optional type data-type)
"Return the value of a window-system selection.
Index: lisp/simple.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/simple.el,v
retrieving revision 1.24.2.16
diff -u -r1.24.2.16 simple.el
--- simple.el 2000/06/12 04:17:53 1.24.2.16
+++ simple.el 2000/07/18 10:36:18
@@ -2378,6 +2378,7 @@
(defun transpose-lines (arg)
"Exchange current line and previous line, leaving point after both.
+This can be used to
With argument ARG, takes previous line and moves it past ARG lines.
With argument 0, interchanges line point is in with line mark is in."
(interactive "*p")
@@ -2393,67 +2394,86 @@
(forward-line arg)))
arg))
-(eval-when-compile
- ;; avoid byte-compiler warnings...
- (defvar start1)
- (defvar start2)
- (defvar end1)
- (defvar end2))
+(defun transpose-line-up (arg)
+ "Move current line one line up, leaving point at beginning of that line.
+This can be run repeatedly to move to current line up a number of lines."
+ (interactive "*p")
+ ;; Move forward over a line,
+ ;; but create a newline if none exists yet.
+ (end-of-line)
+ (if (eobp)
+ (newline)
+ (forward-char 1))
+ (transpose-lines (- arg))
+ (forward-line -1))
+
+(defun transpose-line-down (arg)
+ "Move current line one line down, leaving point at beginning of that line.
+This can be run repeatedly to move to current line down a number of lines."
+ (interactive "*p")
+ ;; Move forward over a line,
+ ;; but create a newline if none exists yet.
+ (end-of-line)
+ (if (eobp)
+ (newline)
+ (forward-char 1))
+ (transpose-lines arg)
+ (forward-line -1))
-; start[12] and end[12] used in transpose-subr-1 below
(defun transpose-subr (mover arg)
(let (start1 end1 start2 end2)
- (if (= arg 0)
- (progn
- (save-excursion
- (funcall mover 1)
- (setq end2 (point))
- (funcall mover -1)
- (setq start2 (point))
- (goto-char (mark t)) ; XEmacs
- (funcall mover 1)
- (setq end1 (point))
- (funcall mover -1)
- (setq start1 (point))
- (transpose-subr-1))
- (exchange-point-and-mark t))) ; XEmacs
- (while (> arg 0)
- (funcall mover -1)
- (setq start1 (point))
- (funcall mover 1)
- (setq end1 (point))
- (funcall mover 1)
- (setq end2 (point))
- (funcall mover -1)
- (setq start2 (point))
- (transpose-subr-1)
- (goto-char end2)
- (setq arg (1- arg)))
- (while (< arg 0)
- (funcall mover -1)
- (setq start2 (point))
- (funcall mover -1)
- (setq start1 (point))
- (funcall mover 1)
- (setq end1 (point))
- (funcall mover 1)
- (setq end2 (point))
- (transpose-subr-1)
- (setq arg (1+ arg)))))
+ ;; XEmacs -- use flet instead of defining a separate function and
+ ;; relying on dynamic scope!!!
+ (flet ((transpose-subr-1 ()
+ (if (> (min end1 end2) (max start1 start2))
+ (error "Don't have two things to transpose"))
+ (let ((word1 (buffer-substring start1 end1))
+ (word2 (buffer-substring start2 end2)))
+ (delete-region start2 end2)
+ (goto-char start2)
+ (insert word1)
+ (goto-char (if (< start1 start2) start1
+ (+ start1 (- (length word1) (length word2)))))
+ (delete-char (length word1))
+ (insert word2))))
+ (if (= arg 0)
+ (progn
+ (save-excursion
+ (funcall mover 1)
+ (setq end2 (point))
+ (funcall mover -1)
+ (setq start2 (point))
+ (goto-char (mark t)) ; XEmacs
+ (funcall mover 1)
+ (setq end1 (point))
+ (funcall mover -1)
+ (setq start1 (point))
+ (transpose-subr-1))
+ (exchange-point-and-mark t))) ; XEmacs
+ (while (> arg 0)
+ (funcall mover -1)
+ (setq start1 (point))
+ (funcall mover 1)
+ (setq end1 (point))
+ (funcall mover 1)
+ (setq end2 (point))
+ (funcall mover -1)
+ (setq start2 (point))
+ (transpose-subr-1)
+ (goto-char end2)
+ (setq arg (1- arg)))
+ (while (< arg 0)
+ (funcall mover -1)
+ (setq start2 (point))
+ (funcall mover -1)
+ (setq start1 (point))
+ (funcall mover 1)
+ (setq end1 (point))
+ (funcall mover 1)
+ (setq end2 (point))
+ (transpose-subr-1)
+ (setq arg (1+ arg))))))
-; start[12] and end[12] used free
-(defun transpose-subr-1 ()
- (if (> (min end1 end2) (max start1 start2))
- (error "Don't have two things to transpose"))
- (let ((word1 (buffer-substring start1 end1))
- (word2 (buffer-substring start2 end2)))
- (delete-region start2 end2)
- (goto-char start2)
- (insert word1)
- (goto-char (if (< start1 start2) start1
- (+ start1 (- (length word1) (length word2)))))
- (delete-char (length word1))
- (insert word2)))
(defcustom comment-column 32
"*Column to indent right-margin comments to.
Index: lisp/startup.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/startup.el,v
retrieving revision 1.24.2.19
diff -u -r1.24.2.19 startup.el
--- startup.el 2000/07/17 09:58:10 1.24.2.19
+++ startup.el 2000/07/18 10:36:19
@@ -159,13 +159,17 @@
;;We do that if this regexp matches the locale name
;;specified by the LC_ALL, LC_CTYPE and LANG environment variables.")
-(defvar mail-host-address nil
- "*Name of this machine, for purposes of naming users.")
+(defcustom mail-host-address nil
+ "*Name of this machine, for purposes of naming users."
+ :type 'string
+ :group 'mail)
-(defvar user-mail-address nil
+(defcustom user-mail-address nil
"*Full mailing address of this user.
This is initialized based on `mail-host-address',
-after your init file is read, in case it sets `mail-host-address'.")
+after your init file is read, in case it sets `mail-host-address'."
+ :type 'string
+ :group 'mail)
(defvar auto-save-list-file-prefix "~/.saves-"
"Prefix for generating auto-save-list-file-name.
Index: lisp/subr.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/subr.el,v
retrieving revision 1.8.2.15
diff -u -r1.8.2.15 subr.el
--- subr.el 2000/04/28 09:25:17 1.8.2.15
+++ subr.el 2000/07/18 10:36:19
@@ -351,6 +351,15 @@
(setplist new (copy-list (symbol-plist symbol))))
new))
+(defun set-symbol-value-in-buffer (sym val buffer)
+ "Set the value of SYM to VAL in BUFFER. Useful with buffer-local variables.
+If SYM has a buffer-local value in BUFFER, or will have one if set, this
+function allows you to set the local value.
+
+NOTE: At some point, this will be moved into C and will be very fast."
+ (with-current-buffer buffer
+ (set sym val)))
+
;;;; String functions.
;; XEmacs
@@ -596,25 +605,126 @@
;;; Error functions
-(defun error (&rest args)
- "Signal an error, making error message by passing all args to `format'.
+(defun error (datum &rest args)
+ "Signal a non-continuable error.
+DATUM should normally be an error symbol, i.e. a symbol defined using
+`define-error'. ARGS will be made into a list, and DATUM and ARGS passed
+as the two arguments to `signal', the most basic error handling function.
+
This error is not continuable: you cannot continue execution after the
-error using the debugger `r' command. See also `cerror'."
- (while t
- (apply 'cerror args)))
+error using the debugger `r' command. See also `cerror'.
-(defun cerror (&rest args)
+The correct semantics of ARGS varies from error to error, but for most
+errors that need to be generated in Lisp code, the first argument
+should be a string describing the *context* of the error (i.e. the
+exact operation being performed and what went wrong), and the remaining
+arguments or \"frobs\" (most often, there is one) specify the
+offending object(s) and/or provide additional details such as the exact
+error when a file error occurred, e.g.:
+
+-- the buffer in which an editing error occurred.
+-- an invalid value that was encountered. (In such cases, the string
+ should describe the purpose or \"semantics\" of the value [e.g. if the
+ value is an argument to a function, the name of the argument; if the value
+ is the value corresponding to a keyword, the name of the keyword; if the
+ value is supposed to be a list length, say this and say what the purpose
+ of the list is; etc.] as well as specifying why the value is invalid, if
+ that's not self-evident.)
+-- the file in which an error occurred. (In such cases, there should be a
+ second frob, probably a string, specifying the exact error that occurred.
+ This does not occur in the string that precedes the first frob, because
+ that frob describes the exact operation that was happening.
+
+For historical compatibility, DATUM can also be a string. In this case,
+DATUM and ARGS are passed together as the arguments to `format', and then
+an error is signalled using the error symbol `error' and formatted string.
+Although this usage of `error' is very common, it is deprecated because it
+totally defeats the purpose of having structured errors. There is now
+a rich set of defined errors you can use:
+
+error
+ syntax-error
+ invalid-read-syntax
+ list-formation-error
+ malformed-list
+ malformed-property-list
+ circular-list
+ circular-property-list
+
+ invalid-argument
+ wrong-type-argument
+ args-out-of-range
+ wrong-number-of-arguments
+ invalid-function
+ no-catch
+
+ invalid-state
+ void-function
+ cyclic-function-indirection
+ void-variable
+ cyclic-variable-indirection
+
+ invalid-operation
+ invalid-change
+ setting-constant
+ editing-error
+ beginning-of-buffer
+ end-of-buffer
+ buffer-read-only
+ io-error
+ end-of-file
+ arith-error
+ range-error
+ domain-error
+ singularity-error
+ overflow-error
+ underflow-error
+
+The five most common errors you will probably use or base your new
+errors off of are `syntax-error', `invalid-argument', `invalid-state',
+`invalid-operation', and `invalid-change'. Note the semantic differences:
+
+-- `syntax-error' is for errors in complex structures: parsed strings, lists,
+ and the like.
+-- `invalid-argument' is for errors in a simple value. Typically, the entire
+ value, not just one part of it, is wrong.
+-- `invalid-state' means that some settings have been changed in such a way
+ that their current state is unallowable. More and more, code is being
+ written more carefully, and catches the error when the settings are being
+ changed, rather than afterwards. This leads us to the next error:
+-- `invalid-change' means that an attempt is being made to change some settings
+ into an invalid state. `invalid-change' is a type of `invalid-operation'.
+-- `invalid-operation' refers to all cases where code is trying to do something
+ that's disallowed. This includes file errors, buffer errors (e.g. running
+ off the end of a buffer), `invalid-change' as just mentioned, and
+ arithmetic errors.
+
+See also `cerror', `signal', and `signal-error'."
+ (while t (apply
+ 'cerror datum args)))
+
+(defun cerror (datum &rest args)
"Like `error' but signals a continuable error."
- (signal 'error (list (apply 'format args))))
+ (cond ((stringp datum)
+ (signal 'error (list (apply 'format datum args))))
+ ((defined-error-p datum)
+ (signal datum args))
+ (t
+ (error 'invalid-argument "datum not string or error symbol" datum))))
(defmacro check-argument-type (predicate argument)
"Check that ARGUMENT satisfies PREDICATE.
-If not, signal a continuable `wrong-type-argument' error until the
-returned value satisfies PREDICATE, and assign the returned value
-to ARGUMENT."
- `(if (not (,(eval predicate) ,argument))
- (setq ,argument
- (wrong-type-argument ,predicate ,argument))))
+This is a macro, and ARGUMENT is not evaluated. If ARGUMENT is an lvalue,
+this function signals a continuable `wrong-type-argument' error until the
+returned value satisfies PREDICATE, and assigns the returned value
+to ARGUMENT. Otherwise, this function signals a non-continuable
+`wrong-type-argument' error if the returned value does not satisfy PREDICATE."
+ (if (symbolp argument)
+ `(if (not (,(eval predicate) ,argument))
+ (setq ,argument
+ (wrong-type-argument ,predicate ,argument)))
+ `(if (not (,(eval predicate) ,argument))
+ (signal-error 'wrong-type-argument (list ,predicate ,argument)))))
(defun signal-error (error-symbol data)
"Signal a non-continuable error. Args are ERROR-SYMBOL, and associated DATA.
@@ -645,6 +755,10 @@
(let ((conds (get inherits-from 'error-conditions)))
(or conds (signal-error 'error (list "Not an error symbol"
error-sym)))
(put error-sym 'error-conditions (cons error-sym conds))))
+
+(defun defined-error-p (sym)
+ "Returns non-nil if SYM names a currently-defined error."
+ (and (symbolp sym) (not (null (get sym 'error-conditions)))))
;;;; Miscellanea.
Index: lisp/toolbar-items.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/toolbar-items.el,v
retrieving revision 1.4.2.1
diff -u -r1.4.2.1 toolbar-items.el
--- toolbar-items.el 1998/12/05 16:54:52 1.4.2.1
+++ toolbar-items.el 2000/07/18 10:36:19
@@ -308,12 +308,13 @@
(compile compile-command)
(setq toolbar-compile-already-run t)
(if (should-use-dialog-box-p)
- (popup-dialog-box
- `(,(concat "Compile:\n " compile-command)
- ["Compile" (compile compile-command) t]
- ["Edit command" compile t]
- nil
- ["Cancel" (message "Quit") t]))
+ (make-dialog-box 'question
+ :question (concat "Compile:\n " compile-command)
+ :buttons
+ '(["Compile" (compile compile-command) t]
+ ["Edit command" compile t]
+ nil
+ ["Cancel" (message "Quit") t]))
(compile compile-command))))
;;
Index: lisp/update-elc.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/update-elc.el,v
retrieving revision 1.18.2.7
diff -u -r1.18.2.7 update-elc.el
--- update-elc.el 2000/05/11 10:29:31 1.18.2.7
+++ update-elc.el 2000/07/18 10:36:21
@@ -1,8 +1,9 @@
;;; update-elc.el --- Bytecompile out-of-date dumped files
;; Copyright (C) 1997 Free Software Foundation, Inc.
-;; Copyright (C) 1996 Unknown
+;; Copyright (C) 1996 Sun Microsystems, Inc.
+;; Author: Ben Wing <ben(a)xemacs.org>, Steven L Baur <steve(a)xemacs.org>
;; Maintainer: XEmacs Development Team
;; Keywords: internal
@@ -38,6 +39,8 @@
;; (the idea here is that you can bootstrap if your .ELC files
;; are missing or badly out-of-date)
+
+;; See also update-elc-2.el
;;; Code:
Index: lisp/userlock.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/userlock.el,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 userlock.el
--- userlock.el 1999/03/01 17:48:26 1.1.2.1
+++ userlock.el 2000/07/18 10:36:21
@@ -132,31 +132,38 @@
;;; dialog-box versions [XEmacs]
(defun ask-user-about-lock-dbox (fn opponent)
- (let ((echo-keystrokes 0)
- (dbox
- (cons
- (format "%s is locking %s\n
+ (let ((echo-keystrokes 0))
+ (make-dialog-box
+ 'question
+ :question (format "%s is locking %s\n
It has been detected that you want to modify a file that
someone else has already started modifying in XEmacs."
- opponent fn)
- '(["Steal Lock\n\nThe other user will\nbecome the intruder" steal t]
- ["Proceed\n\nEdit file at your own\n\(and the other user's) risk"
- proceed t]
- nil
- ["Abort\n\nDon't modify the buffer\n" yield t]))))
- (popup-dialog-box dbox)
+ opponent fn)
+ :buttons
+ '(["Steal Lock\n\nThe other user will\nbecome the intruder" steal t]
+ ["Proceed\n\nEdit file at your own\n\(and the other user's) risk"
+ proceed t]
+ nil
+ ["Abort\n\nDon't modify the buffer\n" yield t]))
(catch 'aual-done
(while t
(let ((event (next-command-event)))
- (cond ((and (misc-user-event-p event) (eq (event-object event) 'proceed))
+ (cond ((and (misc-user-event-p event)
+ (eq (event-object event) 'proceed))
(throw 'aual-done nil))
- ((and (misc-user-event-p event) (eq (event-object event) 'steal))
+ ((and (misc-user-event-p event)
+ (eq (event-object event) 'steal))
(throw 'aual-done t))
- ((and (misc-user-event-p event) (eq (event-object event) 'yield))
+ ((and (misc-user-event-p event)
+ (eq (event-object event) 'yield))
(signal 'file-locked (list "File is locked" fn opponent)))
((and (misc-user-event-p event)
(eq (event-object event) 'menu-no-selection-hook))
(signal 'quit nil))
+ ;; safety check, so we're not endlessly stuck when no
+ ;; dialog box up
+ ((not (popup-up-p))
+ (signal 'quit nil))
((button-release-event-p event) ;; don't beep twice
nil)
(t
@@ -164,20 +171,21 @@
(message "please answer the dialog box"))))))))
(defun ask-user-about-supersession-threat-dbox (fn)
- (let ((echo-keystrokes 0)
- (dbox
- (cons
- (format "File %s has changed on disk
+ (let ((echo-keystrokes 0))
+ (make-dialog-box
+ 'question
+ :question
+ (format "File %s has changed on disk
since its buffer was last read in or saved.
Do you really want to edit the buffer? " fn)
- '(["Yes\n\nEdit the buffer anyway,\nignoring the disk file"
- proceed t]
- ["No\n\nDon't modify the buffer\n" yield t]
- nil
- ["No\n\nDon't modify the buffer\nbut revert it" revert t]
- ))))
- (popup-dialog-box dbox)
+ :buttons
+ '(["Yes\n\nEdit the buffer anyway,\nignoring the disk file"
+ proceed t]
+ ["No\n\nDon't modify the buffer\n" yield t]
+ nil
+ ["No\n\nDon't modify the buffer\nbut revert it" revert t]
+ ))
(catch 'auast-done
(while t
(let ((event (next-command-event)))
@@ -195,6 +203,10 @@
((and (misc-user-event-p event)
(eq (event-object event) 'menu-no-selection-hook))
(signal 'quit nil))
+ ;; safety check, so we're not endlessly stuck when no
+ ;; dialog box up
+ ((not (popup-up-p))
+ (signal 'quit nil))
((button-release-event-p event) ;; don't beep twice
nil)
(t
@@ -214,10 +226,7 @@
return nil (edit the file even though it is locked).
You can rewrite it to use any criterion you like to choose which one to do."
(discard-input)
- (if (and (fboundp 'popup-dialog-box)
- (or (button-press-event-p last-command-event)
- (button-release-event-p last-command-event)
- (misc-user-event-p last-command-event)))
+ (if (should-use-dialog-box-p)
(ask-user-about-lock-dbox fn opponent)
(ask-user-about-lock-minibuf fn opponent)))
@@ -231,10 +240,7 @@
You can rewrite this to use any criterion you like to choose which one to do.
The buffer in question is current when this function is called."
(discard-input)
- (if (and (fboundp 'popup-dialog-box)
- (or (button-press-event-p last-command-event)
- (button-release-event-p last-command-event)
- (misc-user-event-p last-command-event)))
+ (if (should-use-dialog-box-p)
(ask-user-about-supersession-threat-dbox fn)
(ask-user-about-supersession-threat-minibuf fn)))
Index: lisp/window-xemacs.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/window-xemacs.el,v
retrieving revision 1.9
diff -u -r1.9 window-xemacs.el
--- window-xemacs.el 1998/05/24 05:40:31 1.9
+++ window-xemacs.el 2000/07/18 10:36:21
@@ -191,6 +191,29 @@
;;;;;;;;;;;;; display-buffer, moved here from C. Hallelujah.
+(make-variable-buffer-local '__buffer-dedicated-frame)
+
+(defun buffer-dedicated-frame (&optional buffer)
+ "Return the frame dedicated to this BUFFER, or nil if there is none.
+No argument or nil as argument means use current buffer as BUFFER."
+ (let ((buffer (decode-buffer buffer)))
+ (let ((frame (symbol-value-in-buffer '__buffer-dedicated-frame buffer)))
+ ;; XEmacs addition: if the frame is dead, silently make it go away.
+ (when (and (framep frame) (not (frame-live-p frame)))
+ (with-current-buffer buffer
+ (setq __buffer-dedicated-frame nil))
+ (setq frame nil))
+ frame)))
+
+(defun set-buffer-dedicated-frame (buffer frame)
+ "For this BUFFER, set the FRAME dedicated to it.
+FRAME must be a frame or nil."
+ (let ((buffer (decode-buffer buffer)))
+ (and frame
+ (check-argument-type #'frame-live-p frame))
+ (with-current-buffer buffer
+ (setq __buffer-dedicated-frame frame))))
+
(defvar display-buffer-function nil
"If non-nil, function to call to handle `display-buffer'.
It will receive three args: the same as those to `display-buffer'.")
Index: lisp/x-faces.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/x-faces.el,v
retrieving revision 1.12.2.6
diff -u -r1.12.2.6 x-faces.el
--- x-faces.el 2000/06/12 02:44:45 1.12.2.6
+++ x-faces.el 2000/07/18 10:36:22
@@ -203,7 +203,7 @@
"Given an X font specification, this attempts to make a `bold-italic' font.
If it fails, it returns nil."
;; This is haired up to avoid loading the "intermediate" fonts.
- (if *try-oblique-before-italic-fonts*
+ (if try-oblique-before-italic-fonts
(or (try-font-name
(x-frob-font-slant (x-frob-font-weight font "bold") "o") device)
(try-font-name
Index: lwlib/ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lwlib/ChangeLog,v
retrieving revision 1.1.2.88
diff -u -r1.1.2.88 ChangeLog
--- ChangeLog 2000/07/10 05:28:56 1.1.2.88
+++ ChangeLog 2000/07/18 10:36:22
@@ -1,3 +1,8 @@
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * xlwradioP.h:
+ Remove duplicate definition of streq().
+
2000-07-09 Martin Buchholz <martin(a)xemacs.org>
* xlwcheckbox.c:
Index: lwlib/xlwradioP.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lwlib/Attic/xlwradioP.h,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 xlwradioP.h
--- xlwradioP.h 2000/07/10 05:28:55 1.1.2.4
+++ xlwradioP.h 2000/07/18 10:36:22
@@ -40,7 +40,9 @@
*
***********************************************************************/
-#define streq(a, b) ( strcmp((a), (b)) == 0 )
+/* Already in Xaw/ToggleP.h, and not used by us.
+ #define streq(a, b) ( strcmp((a), (b)) == 0 )
+*/
typedef void (*XawDiamondProc) (Widget);
Index: nt/ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/nt/ChangeLog,v
retrieving revision 1.41.2.105
diff -u -r1.41.2.105 ChangeLog
--- ChangeLog 2000/07/14 01:55:12 1.41.2.105
+++ ChangeLog 2000/07/18 10:36:25
@@ -1,3 +1,22 @@
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * xemacs.mak:
+ added new file win32.c.
+ took out unused alloca.c.
+ * xemacs.mak (update-elc-2): added new target for rebuilding the
+ remaining .elcs after dumped. its dependency is added for target
+ all.
+ * xemacs.mak (update-auto-and-custom):
+ cleaned up ; now it byte-compiles custom-load.el.
+ * xemacs.mak (mostlyclean):
+ * xemacs.mak (clean):
+ * xemacs.mak (nicenclean):
+ * xemacs.mak (distclean):
+ * xemacs.mak (realclean):
+ * xemacs.mak (versionclean):
+ Redid all the clean targets, to be similar to what's in the
+ standard Makefile.
+
2000-07-14 IKEYAMA Tomonori <tomonori(a)suiyokai.org>
* config.h: Import C++ compilation stuff from src/config.h.
Index: nt/xemacs.mak
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/nt/xemacs.mak,v
retrieving revision 1.41.2.54
diff -u -r1.41.2.54 xemacs.mak
--- xemacs.mak 2000/07/07 00:15:30 1.41.2.54
+++ xemacs.mak 2000/07/18 10:36:25
@@ -1,6 +1,6 @@
# Makefile for Microsoft NMAKE
# Copyright (C) 1995 Board of Trustees, University of Illinois.
-# Copyright (C) 1995, 1996 Ben Wing.
+# Copyright (C) 1995, 1996, 2000 Ben Wing.
# Copyright (C) 1995 Sun Microsystems, Inc.
# Copyright (C) 1998 Free Software Foundation, Inc.
#
@@ -630,7 +630,6 @@
DOC_SRC1=\
$(SRC)\abbrev.c \
$(SRC)\alloc.c \
- $(SRC)\alloca.c \
$(SRC)\blocktype.c \
$(SRC)\buffer.c \
$(SRC)\bytecode.c \
@@ -717,6 +716,7 @@
$(SRC)\tparam.c \
$(SRC)\undo.c \
$(SRC)\window.c \
+ $(SRC)\win32.c \
$(SRC)\widget.c
!if $(HAVE_X_WINDOWS)
@@ -917,7 +917,6 @@
$(TEMACS_DUMP_OBJS)\
$(OUTDIR)\abbrev.obj \
$(OUTDIR)\alloc.obj \
- $(OUTDIR)\alloca.obj \
$(OUTDIR)\blocktype.obj \
$(OUTDIR)\buffer.obj \
$(OUTDIR)\bytecode.obj \
@@ -999,7 +998,8 @@
$(OUTDIR)\tparam.obj \
$(OUTDIR)\undo.obj \
$(OUTDIR)\widget.obj \
- $(OUTDIR)\window.obj
+ $(OUTDIR)\window.obj \
+ $(OUTDIR)\win32.obj
# Rules
@@ -1364,7 +1364,7 @@
# use this rule to build the complete system
all: installation $(OUTDIR)\nul $(LASTFILE) $(LWLIB) \
$(LIB_SRC_TOOLS) $(TEMACS) update-elc $(DOC) $(PROGNAME) \
- update-auto-and-custom info
+ update-elc-2 update-auto-and-custom info
temacs: $(LASTFILE) $(TEMACS)
@@ -1392,43 +1392,42 @@
@$(DEL) "$(PACKAGE_PREFIX)\xemacs-packages\PlaceHolder"
@$(DEL) PlaceHolder
-distclean:
- $(DEL) *.bak
- $(DEL) *.orig
- $(DEL) *.rej
- $(DEL) *.tmp
+mostlyclean:
$(DEL) $(XEMACS)\Installation
- cd $(OUTDIR)
- $(DEL) *.lib
- $(DEL) *.obj
- $(DEL) *.pdb
- $(DEL) *.res
- $(DEL) *.sbr
- cd $(XEMACS)\$(TEMACS_DIR)
- $(DEL) config.h
- $(DEL) paths.h
- $(DEL) Emacs.ad.h
- $(DEL) *.bak
- $(DEL) *.orig
- $(DEL) *.rej
- $(DEL) *.exe
- $(DEL) *.map
- $(DEL) *.bsc
- $(DEL) *.pdb
- cd $(LIB_SRC)
- $(DEL) DOC
- $(DEL) *.bak
- $(DEL) *.orig
- $(DEL) *.rej
- $(DEL) *.exe
- $(DEL) *.obj
- $(DEL) *.pdb
- $(DEL) *.res
- $(DEL) $(CONFIG_VALUES)
- cd $(LISP)
- $(DEL) /s /q *.bak *.elc *.orig *.rej
- cd $(INFODIR)
- $(DEL) *.info*
+ $(DEL) $(OUTDIR)\*.lib $(OUTDIR)\*.obj $(OUTDIR)\*.pdb
+ $(DEL) $(OUTDIR)\*.res $(OUTDIR)\*.sbr
+ $(DEL) $(SRC)\*.exe $(SRC)\*.map $(SRC)\*.bsc $(SRC)\*.pdb
+ $(DEL) $(LIB_SRC)\*.exe $(LIB_SRC)\*.obj $(LIB_SRC)\*.pdb
+ $(DEL) $(LIB_SRC)\*.res
+
+clean: mostlyclean versionclean
+ $(DEL) $(XEMACS)\TAGS
+
+nicenclean: clean
+ $(DEL) $(NT)\*.bak $(NT)\*.orig $(NT)\*.rej $(NT)\*.tmp
+ $(DEL) $(LIB_SRC)\*.bak $(LIB_SRC)\*.orig $(LIB_SRC)\*.rej
+ $(DEL) $(LIB_SRC)\*.tmp
+ $(DEL) $(SRC)\*.bak $(SRC)\*.orig $(SRC)\*.rej $(SRC)\*.tmp
+ $(DEL) /s $(LISP)\*.bak $(LISP)\*.orig $(LISP)\*.rej $(LISP)\*.tmp
+
+## This is used in making a distribution.
+## Do not use it on development directories!
+distclean: nicenclean
+ $(DEL) $(SRC)\config.h $(SRC)\paths.h $(SRC)\Emacs.ad.h
+ $(DEL) $(LIB_SRC)\$(CONFIG_VALUES)
+ $(DEL) $(INFODIR)\*.info*
+ $(DEL) /s /q $(LISP)\*.elc
+
+realclean: distclean
+
+versionclean:
+ $(DEL) $(SRC)\xemacs.exe $(LIB_SRC)\DOC
+
+#not sure about those wildcards. DOS wildcards are stupid compared to Unix,
+#and could end up deleting *everything* instead of just backup files or
+#whatever.
+#extraclean: realclean
+# $(DEL) *~ *.*~ #* m\*~ m\#* s\*~ s\#*
depend:
cd $(SRC)
@@ -1545,16 +1544,23 @@
@type $(XEMACS)\Installation
@echo --------------------------------------------------------------------
-# Update auto-autoloads.el and custom-load.el similar to what
-# XEmacs.rules does for xemacs-packages.
+# Update out-of-date .elcs, other than needed for dumping.
+update-elc-2:
+ $(XEMACS_BATCH) -l update-elc-2.el -f batch-update-elc-2 $(LISP)
+
+# Update auto-autoloads.el and custom-load.el, similar to what
+# XEmacs.rules does for xemacs-packages. This used to delete
+# auto-autoloads.el first, but that's a bad idea, because it forces
+# rebuilding from scratch, which is time-consuming; and the autoload
+# code is specifically written to do in-place updating. However, if
+# your auto-autoload file is messed up and you want it rebuilt from
+# scratch, delete it from the command line and then nmake with this
+# target.
update-auto-and-custom:
-# Don't delete this, because it forces rebuilding from scratch,
-# which is time-consuming; and the autoload code is specifically
-# written to do in-place updating.
-# @$(DEL) $(LISP)\auto-autoloads.el
# Combine into one invocation to avoid repeated startup penalty.
- $(XEMACS_BATCH) -l autoload -f batch-update-one-directory $(LISP) -f
batch-byte-compile-one-file $(LISP)\auto-autoloads.el -l cus-dep -f
Custom-make-dependencies $(LISP)
+ $(XEMACS_BATCH) -l autoload -f batch-update-one-directory $(LISP) -f
batch-byte-compile-one-file $(LISP)\auto-autoloads.el -l cus-dep -f
Custom-make-one-dependency $(LISP) -f batch-byte-compile-one-file $(LISP)\custom-load.el
@$(DEL) $(LISP)\auto-autoloads.el~
+ @$(DEL) $(LISP)\custom-load.el~
# DO NOT DELETE THIS LINE -- make depend depends on it.
Index: src/ChangeLog
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.154.2.640
diff -u -r1.154.2.640 ChangeLog
--- ChangeLog 2000/07/18 03:43:12 1.154.2.640
+++ ChangeLog 2000/07/18 10:36:27
@@ -1,9 +1,647 @@
+<<<<<<< ChangeLog
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * s/cygwin32.h:
+ * s/cygwin32.h (CYGWIN_CONV_PATH):
+ Add missing logb prototype for v1.1.
+ Use post-b20 names and alias to pre-b20 names when pre-b20.
+
+ * s/windowsnt.h: [5].
+
+2000-07-15 Ben Wing <ben(a)xemacs.org>
+
+ * Makefile.in.in (x_objs):
+ * Makefile.in.in (sheap_objs):
+ * Makefile.in.in (objs):
+ added win32.o, cosmetic cleanups.
+
+ * alloc.c (Fmake_byte_code):
+ [[[1]]]: Changes for new LIST_LOOP, EXTERNAL_LIST_LOOP,
+ etc. macros which declare their own args now.
+
+ * alloc.c (syms_of_alloc):
+ [[[2]]]: Use DEFSYMBOL, DEFKEYWORD, DEFERROR and friends.
+
+ * buffer.c:
+ Moved buffer-dedicated-frame, set-buffer-dedicated-frame into lisp.
+
+ * buffer.c (Fget_file_buffer):
+ Fixed GCPRO problem.
+
+ * buffer.c (get_truename_buffer):
+ Fixed comment about GC checking.
+
+ * buffer.c (syms_of_buffer):
+ Undeclared those dedicated frame funs.
+ [2].
+
+ * buffer.h:
+ Define convenience macros for internal/external conversions.
+ [[[3]]]: Define codesys aliases Qcommand_argument_encoding
+ and Qenvironment_variable_encoding for cleaner code.
+
+ * bufslots.h:
+ Remove dedicated-frame; in lisp.
+
+ * bytecode.c (funcall_compiled_function):
+ [1].
+
+ * bytecode.c (syms_of_bytecode):
+ [2].
+
+ * console-msw.c:
+ * console-msw.c (mswindows_show_console): Rewrote.
+
+ * console-msw.c (Fmswindows_debugging_output): New.
+ Sends to OutputDebugString (special MSWin debugger interface).
+
+ * console-msw.c (Fmswindows_message_box):
+ Fixed stupid bugs so it works when called from kill-emacs.
+
+ * console-msw.c (syms_of_console_mswindows):
+ Declare Fmswindows_debugging_output.
+
+ * console-msw.h:
+ New MSWin prototypes.
+
+ * console-msw.h (struct mswindows_frame):
+ New entry last-click-mods for improved button-modifier support.
+
+ * console-msw.h (FRAME_MSWINDOWS_POPUP):
+ New struct entry `popup' with corresponding accessor.
+
+ * console-x.c:
+ * console-x.c (split_up_display_spec):
+ * console-x.c (get_display_arg_connection):
+ * console-x.c (x_semi_canonicalize_console_connection):
+ * console-x.c (x_canonicalize_device_connection):
+ [[[6]]]: Change char to more specific type.
+ [[[8]]]: Make use of abstracting codesys aliases defined in [3], [4];
+
+ * console-x.c (x_semi_canonicalize_console_connection):
+ * console-x.c (x_canonicalize_device_connection):
+ [[[9]]]: Fix up error signalling to use new structured error system.
+
+ * console-x.h:
+ [[[4]]]: Define codesys aliases:
+ Qlwlib_encoding, Qx_atom_name_encoding, Qx_font_name_encoding,
+ Qx_color_name_encoding, Qx_display_name_encoding.
+
+ * console.h (struct console_methods):
+ New method make_dialog_box_internal supersedes older
+ popup_dialog_box method.
+
+ * data.c:
+ Define many new errors, part of new structured errors.
+
+ * data.c (init_errors_once_early):
+ * data.c (syms_of_data):
+ [2].
+
+ * device-msw.c (mswindows_init_device):
+ [[[5]]]: Cleanup to support NT 3.51.
+
+ * device-msw.c (decode_devmode): Cleanup.
+
+ * device-msw.c (mswindows_handle_print_setup_dialog_box):
+ * device-msw.c (mswindows_handle_print_dialog_box):
+ * device-msw.c (mswindows_handle_page_setup_dialog_box):
+ * device-msw.c (syms_of_device_mswindows):
+ Delete the dialog box primitives recently introduced by Kirill and
+ instead interface to general dialog box interface.
+
+ * device-x.c:
+ * device-x.c (compute_x_app_name):
+ * device-x.c (x_init_device):
+ * device-x.c (Fx_valid_keysym_name_p):
+ * device-x.c (Fx_set_font_path):
+ [6].
+ [7].
+
+ * device.h (wrap_device): New.
+ First of its kind; meant to replace XSETDEVICE.
+
+ * dialog-msw.c: Many file-dialog symbols.
+
+ * dialog-msw.c (mswindows_register_popup_frame): New.
+ * dialog-msw.c (mswindows_is_dialog_msg): New.
+ For supporting kbd traversal in dialog boxes.
+
+ * dialog-msw.c (dialog_proc):
+ Support hitting ESC in dialogs.
+
+ * dialog-msw.c (struct):
+ Common dialog box errors.
+
+ * dialog-msw.c (handle_file_dialog_box): New.
+ Add file dialog code.
+
+ * dialog-msw.c (handle_question_dialog_box):
+ Redo existing code to support new question dialog syntax.
+
+ * dialog-msw.c (console_type_create_dialog_mswindows):
+ We support new dialog console method.
+
+ * dialog-msw.c (syms_of_dialog_mswindows):
+ * dialog-msw.c (vars_of_dialog_mswindows):
+ New file dialog symbols, vars.
+
+ * dialog-x.c:
+ * dialog-x.c (maybe_run_dbox_text_callback):
+ * dialog-x.c (dbox_descriptor_to_widget_value):
+ * dialog-x.c (x_make_dialog_box_internal):
+ * dialog-x.c (console_type_create_dialog_x):
+ Mule-ize entire file.
+ Redo to support question dialog syntax.
+ [6].
+
+ * dialog.c:
+ * dialog.c (Fmake_dialog_box_internal):
+ * dialog.c (syms_of_dialog):
+ Kill old popup-dialog-box, replace with new primitive.
+ Just call device method or signal error.
+
+ * eldap.c (Fldap_open):
+ * eldap.c (Fldap_search_basic):
+ * eldap.c (Fldap_add):
+ * eldap.c (Fldap_modify):
+ [1].
+ [7].
+
+ * emacs.c:
+ * emacs.c (make_arg_list_1):
+ * emacs.c (make_arg_list):
+ Mule-ize call to dll_init().
+ [6].
+ [8].
+
+ * emacs.c (make_argc_argv):
+ * emacs.c (free_argc_argv):
+ * emacs.c (init_cmdargs):
+ * emacs.c (main_1):
+ * emacs.c (Fkill_emacs):
+ * emacs.c (Fdump_emacs):
+ Update comments about what can be used in syms_* etc.
+ Call init_win32() when necessary.
+ Fix up MS Win dialog box in kill-buffer to actually work right.
+ [7].
+
+ * eval.c:
+ * eval.c (For):
+ * eval.c (Fand):
+ * eval.c (Fprogn):
+ * eval.c (Fprog1):
+ * eval.c (Fprog2):
+ * eval.c (FletX):
+ * eval.c (Flet):
+ * eval.c (condition_case_3):
+ * eval.c (Feval):
+ * eval.c (function_argcount):
+ * eval.c (funcall_lambda):
+ [1].
+
+ * eval.c (type_error): New.
+ * eval.c (maybe_type_error): New.
+ * eval.c (continuable_type_error): New.
+ * eval.c (maybe_continuable_type_error): New.
+ * eval.c (type_error_with_frob): New.
+ * eval.c (maybe_type_error_with_frob): New.
+ * eval.c (continuable_type_error_with_frob): New.
+ * eval.c (maybe_continuable_type_error_with_frob): New.
+ New functions for use with structured errors.
+
+ * event-Xt.c:
+ * event-Xt.c (x_event_to_emacs_event):
+ Buttons are now modifiers too.
+
+ * event-Xt.c (emacs_Xt_current_event_timestamp):
+ Implement new event method.
+ * event-Xt.c (reinit_vars_of_event_Xt): Set it.
+
+ * event-msw.c:
+ * event-msw.c (ntpipe_shove_writer): [5].
+ * event-msw.c (mswindows_enqueue_mouse_button_event):
+ * event-msw.c (mswindows_drain_windows_queue):
+ * event-msw.c (mswindows_wnd_proc): [7].
+ * event-msw.c (mswindows_current_layout_has_AltGr): [5].
+ * event-msw.c (mswindows_modifier_state):
+ Throughout: support new button modifiers.
+
+ * event-msw.c (emacs_mswindows_current_event_timestamp):
+ Implement new event method.
+ * event-msw.c (reinit_vars_of_event_mswindows): Set it.
+
+ * event-stream.c:
+ * event-stream.c (event_stream_current_event_timestamp): New.
+ * event-stream.c (maybe_kbd_translate): New functionality.
+ * event-stream.c (vars_of_event_stream):
+ Document new kbd-translate-table functionality.
+
+ * event-stream.c (Fcurrent_event_timestamp): New.
+ New primitive for use in fabricated events.
+ * event-stream.c (syms_of_event_stream): [2]. Declare new primitive.
+
+ * events-mod.h (XEMACS_MOD_BUTTON1): new button modifiers.
+
+ * events.c:
+ * events.c (Fmake_event):
+ * events.c (WRONG_EVENT_TYPE_FOR_PROPERTY):
+ [1].
+ [9].
+
+ * events.c (format_event_object): fix gcc warnings.
+
+ * events.c (Fevent_timestamp): Document new primitives.
+
+ * events.c (TIMESTAMP_HALFSPACE): New.
+
+ * events.c (Fevent_timestamp_lessp): New. New primitive for
+ comparing timestamps correctly (half-space algorithm).
+
+ * events.c (Fevent_modifier_bits): Doc fix.
+
+ * events.c (Fevent_modifiers): Major doc addition.
+ * events.c (event_x_y_pixel_internal): Typo fix.
+ * events.c (syms_of_events): Declare new primitives.
+
+ * events.h:
+ Update long comment for button modifiers, timestamps.
+
+ * events.h (struct event_stream):
+ New current_event_timestamp method.
+
+ * extents.c:
+ * extents.c (extent_in_region_p):
+ * extents.c (decode_extent):
+ * extents.c (Fset_extent_parent):
+ * extents.c (decode_map_extents_flags):
+ Fix gcc warnings.
+ [9].
+
+ * extents.c (struct extent_at_arg):
+ * extents.c (decode_extent_at_flag):
+ * extents.c (extent_at_mapper):
+ * extents.c (extent_at_bytind):
+ * extents.c (Fextent_at): Adapt to new lower-level interface. [9].
+ * extents.c (Fextents_at): New primitive. [9].
+ * extents.c (symbol_to_glyph_layout): [9].
+ Support new primitive `extents-at'.
+
+
+ * extents.c (get_text_property_bytind):
+ extent_at_bytind has another arg.
+ [9].
+
+ * extents.c (syms_of_extents): New primitive.
+
+ * file-coding.c (Fmake_coding_system): [1].
+ * file-coding.c (subsidiary_coding_system): fix gcc warning
+ * file-coding.c (syms_of_file_coding): [2].
+
+ * fileio.c (Fexpand_file_name):
+ * fileio.c (Fsysnetunam):
+ * fileio.c (Ffile_exists_p):
+ * fileio.c (Ffile_executable_p):
+ * fileio.c (Fverify_visited_file_modtime):
+ Clean up GCPROing.
+
+ * fileio.c (syms_of_fileio): [2].
+
+ * filelock.c (lock_file_1):
+ * filelock.c (current_lock_owner):
+ * filelock.c (lock_if_free):
+ * filelock.c (lock_file):
+ * filelock.c (unlock_file):
+ Clean up GCPROing.
+
+ * fns.c (concat): Fix gcc warning.
+
+ * fns.c (Fmember):
+ * fns.c (Fold_member):
+ * fns.c (Fmemq):
+ * fns.c (Fold_memq):
+ * fns.c (memq_no_quit):
+ * fns.c (Fassoc):
+ * fns.c (Fold_assoc):
+ * fns.c (Fassq):
+ * fns.c (Fold_assq):
+ * fns.c (assq_no_quit):
+ * fns.c (Frassoc):
+ * fns.c (Fold_rassoc):
+ * fns.c (Frassq):
+ * fns.c (Fold_rassq):
+ * fns.c (rassq_no_quit):
+ * fns.c (Fdelete):
+ * fns.c (Fold_delete):
+ * fns.c (Fdelq):
+ * fns.c (Fold_delq):
+ * fns.c (delq_no_quit):
+ * fns.c (Fremassoc):
+ * fns.c (Fremassq):
+ * fns.c (remassq_no_quit):
+ * fns.c (Fremrassoc):
+ * fns.c (Fremrassq):
+ * fns.c (remrassq_no_quit):
+ * fns.c (Freverse):
+ * fns.c (mapcar1):
+ [1].
+
+ * frame-msw.c (mswindows_init_frame_1):
+ * frame-msw.c (mswindows_delete_frame):
+ Register popups with dialog code so keyboard traversing works.
+
+ * frame-tty.c (tty_raise_frame_no_select): [1].
+
+ * frame-x.c:
+ * frame-x.c (x_set_frame_text_value):
+ * frame-x.c (x_set_frame_properties):
+ * frame-x.c (x_create_widgets):
+ [7].
+
+ * frame.c:
+ * frame.c (Fmouse_pixel_position): Minor doc fixes.
+
+ * frame.h (wrap_frame): New.
+ Macro like wrap_device.
+
+ * general.c:
+ * general.c (SYMBOL):
+ * general.c (syms_of_general):
+ Major reorg. This is now just a wrapper and symbols themselves
+ are listed in general-slots.h.
+
+ * glyphs-eimage.c (tiff_instantiate): Need cast to fix warning.
+ * glyphs-msw.c (mswindows_resource_instantiate): [5].
+
+ * glyphs-msw.c (mswindows_native_layout_instantiate):
+ Add DS_CONTROL so keyboard traversal will work.
+
+ * glyphs-widget.c:
+ * glyphs-widget.c (syms_of_glyphs_widget):
+ Move some symbols to general-slots.h.
+
+ * glyphs-x.c:
+ * glyphs-x.c (xbm_instantiate_1):
+ * glyphs-x.c (x_xbm_instantiate):
+ * glyphs-x.c (x_xface_instantiate):
+ * glyphs-x.c (autodetect_instantiate):
+ * glyphs-x.c (cursor_font_instantiate):
+ * glyphs-x.c (x_update_widget):
+ * glyphs-x.c (x_widget_instantiate):
+ * glyphs.c (bitmap_to_lisp_data):
+ * glyphs.c (pixmap_to_lisp_data):
+ [7].
+
+ * glyphs.c (syms_of_glyphs):
+ [2].
+
+ * gui-x.c:
+ * gui-x.c (print_widget_value):
+ * 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):
+ * gui-x.c (gui_items_to_widget_values_1):
+ * gui-x.c (gui_items_to_widget_values):
+ * gui-x.c (syms_of_gui_x):
+ * gui-x.c (vars_of_gui_x):
+ Mule-ize entire file. Move menu-no-selection-hook to gui.c.
+ [9].
+
+ * gui-x.h:
+ Muleize, prototype changes matching gui-x.c.
+
+ * gui.c:
+ * gui.c (separator_string_p):
+ * gui.c (gui_item_add_keyval_pair):
+ * gui.c (make_gui_item_from_keywords_internal):
+ * gui.c (signal_too_long_error):
+ * gui.c (parse_gui_item_tree_item):
+ * gui.c (syms_of_gui):
+ * gui.c (vars_of_gui):
+ * gui.h:
+ menu-no-selection-hook moved here (used by MSWin).
+ Move some symbols to general-slots.h.
+ [6].
+ [9].
+
+ * insdel.c (get_buffer_pos_char):
+ * insdel.c (get_buffer_range_char):
+ Add GC comments.
+
+ * keymap.c (keymap_lookup_directly):
+ * keymap.c (keymap_store):
+ * keymap.c (ensure_meta_prefix_char_keymapp):
+ * keymap.c (describe_map):
+ * keymap.h:
+ Support new button modifiers.
+
+ * lisp-disunion.h (wrap_object):
+ * lisp-disunion.h (XSETOBJ):
+ Rename make_obj to wrap_object.
+
+ * lisp-union.h:
+ * lisp-union.h (make_int):
+ * lisp-union.h (make_char):
+ Support wrap_object.
+
+ * lisp.h:
+ * lisp.h (LIST_LOOP):
+ * lisp.h (EXTERNAL_LIST_LOOP):
+ * lisp.h (LIST_LOOP_2):
+ * lisp.h (EXTERNAL_LIST_LOOP_1):
+ * lisp.h (EXTERNAL_LIST_LOOP_2):
+ * lisp.h (EXTERNAL_LIST_LOOP_3):
+ * lisp.h (EXTERNAL_LIST_LOOP_4_NO_DECLARE):
+ * lisp.h (PRIVATE_EXTERNAL_LIST_LOOP_6):
+ * lisp.h (GET_EXTERNAL_LIST_LENGTH):
+ * lisp.h (EXTERNAL_ALIST_LOOP_5):
+ * lisp.h (EXTERNAL_ALIST_LOOP_6):
+ * lisp.h (EXTERNAL_ALIST_LOOP_6_NO_DECLARE):
+ * lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE):
+ * lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_7):
+ * lisp.h (struct Lisp_Symbol):
+ * lisp.h (maybe_continuable_error_with_frob):
+ Fix up section comments.
+ Add new types for char to indicate usage.
+ Delete symbols auto-generated from general-slots.h.
+ Add prototypes for structured error functions.
+ Add long comments describing looping macros and change interface
+ so that lvalues are automatically declared.
+ Add NO_DECLARE macro in case callers want to declare lvalues
+ themselves.
+
+ * lread.c (read_syntax_error):
+ * lread.c (continuable_read_syntax_error):
+ * lread.c (read_structure):
+ * lread.c (sequence_reader):
+ * lread.c (read_list_conser):
+ * lread.c (read_compiled_function):
+ Rename syntax_error and continuable_syntax_error to avoid clash
+ with same-named structured error functions.
+
+ * menubar-msw.c (mswindows_translate_menu_or_dialog_item):
+ * menubar-msw.c (populate_menu_add_item):
+ * menubar-msw.c (populate_or_checksum_helper):
+ [5].
+ [9].
+
+ * menubar-x.c:
+ * menubar-x.c (menu_item_descriptor_to_widget_value_1):
+ Mule-ize whole file.
+
+ * menubar.c (Fnormalize_menu_item_name): Add optimization.
+
+ * mule-charset.c (Fmake_charset):
+ * mule-wnnfns.c (Fwnn_set_param):
+ [1].
+
+ * ntproc.c (create_child):
+ * ntproc.c (Fwin32_set_current_locale):
+ Add comments portending doom.
+
+ * objects-msw.c:
+ * objects-msw.c (old_font_enum_callback_2):
+ * objects-msw.c (font_enum_callback_1):
+ * objects-msw.c (mswindows_enumerate_fonts):
+ [5].
+
+ * objects-x.c:
+ * objects-x.c (allocate_nearest_color):
+ * objects-x.c (x_parse_nearest_color):
+ * objects-x.c (x_initialize_color_instance):
+ * objects-x.c (x_print_color_instance):
+ * objects-x.c (x_finalize_color_instance):
+ * objects-x.c (x_valid_color_name_p):
+ * objects-x.c (x_initialize_font_instance):
+ * objects-x.c (x_print_font_instance):
+ * objects-x.c (valid_x_font_name_p):
+ * objects-x.c (truename_via_FONT_prop):
+ * objects-x.c (truename_via_random_props):
+ * objects-x.c (truename_via_XListFonts):
+ * objects-x.c (x_font_truename):
+ * objects-x.c (x_font_instance_truename):
+ * objects-x.c (x_font_instance_properties):
+ * objects-x.c (x_list_fonts):
+ * objects-x.c (x_find_charset_font):
+ Mule-ize entire file.
+ [7].
+
+ * objects-x.h:
+ Mule-verify.
+
+ * print.c:
+ * print.c (std_handle_out_external):
+ * print.c (debug_print_no_newline):
+ * print.c (syms_of_print):
+ Output to all debugger kinds in debug-print.
+ Fix console-output code under MSWin to actually work.
+
+ * process-nt.c (send_signal):
+ * process-nt.c (nt_create_process):
+ Use newer Unicode macros.
+
+ * process-unix.c (unix_create_process):
+ * process-unix.c (unix_canonicalize_host_name):
+ * process-unix.c (unix_open_network_stream):
+ [7].
+
+ * scrollbar-x.c:
+ Mule-verify.
+
+ * search.c (syms_of_search):
+ [2].
+
+ * select-msw.c (mswindows_destroy_selection):
+ Use LIST_LOOP_2.
+
+ * select-x.c (symbol_to_x_atom):
+ [7].
+
+ * select.c (syms_of_select):
+ [2].
+
+ * sound.c (Fplay_sound_file):
+ [7].
+
+ * specifier.c:
+ * specifier.c (decode_specifier_type):
+ * specifier.c (Fvalid_specifier_locale_type_p):
+ * specifier.c (check_valid_locale_or_locale_type):
+ * specifier.c (decode_locale):
+ * specifier.c (decode_locale_type):
+ * specifier.c (decode_locale_list):
+ * specifier.c (check_valid_domain):
+ * specifier.c (decode_specifier_tag_set):
+ * specifier.c (Fcanonicalize_tag_set):
+ * specifier.c (Fdefine_specifier_tag):
+ * specifier.c (Fspecifier_tag_predicate):
+ * specifier.c (check_valid_inst_list):
+ * specifier.c (check_valid_spec_list):
+ * specifier.c (decode_how_to_add_specification):
+ * specifier.c (check_modifiable_specifier):
+ * specifier.c (specifier_add_spec):
+ * specifier.c (boolean_validate):
+ * specifier.c (display_table_validate):
+ [9].
+
+ * specifier.c (syms_of_specifier):
+ Move some symbols to general-slots.h.
+ [2].
+
+ * symbols.c:
+ * symbols.c (Fmapatoms):
+ * symbols.c (Fapropos_internal):
+ Add GCPROs.
+
+ * symbols.c (set_default_buffer_slot_variable):
+ * symbols.c (set_default_console_slot_variable):
+ [1].
+
+ * symbols.c (defsymbol_massage_name_1):
+ * symbols.c (defkeyword_massage_name):
+ * symbols.c (deferror_1):
+ * symbols.c (deferror):
+ * symbols.c (deferror_massage_name_and_message):
+ * symeval.h:
+ * symeval.h (DEFSYMBOL):
+ Support DEFSYMBOL*, DEFKEYWORD, DEFERROR
+
+ * symbols.c (syms_of_symbols):
+ [2].
+
+ * symsinit.h:
+ * symsinit.h (init_win32): New.
+ Also new is syms_of_dialog_mswindows.
+
+ * syswindows.h:
+ Add new Unicode macros, missing Cygwin wide-char functions,
+ convenience conversion macros for Qmswindows_tstr, macros for
+ encapsulating required MSWin <-> Cygwin filename conversions,
+ prototype for dynamically-extracted (not in NT 3.51) functions.
+
+ * toolbar-x.c:
+ Mule-verify.
+
+ * tooltalk.c (Fadd_tooltalk_message_arg):
+ * tooltalk.c (Fadd_tooltalk_pattern_attribute):
+ * tooltalk.c (Fadd_tooltalk_pattern_arg):
+ [7].
+
+ * tooltalk.c (syms_of_tooltalk):
+ [2].
+
+ * unexnt.c:
+ * unexnt.c (unexec):
+ Fix up headers, declaration of unexec() to be more standard.
+
+=======
2000-07-17 Alastair J. Houghton <ajhoughton(a)lineone.net>
* gpmevent.c (tty_selection_exists_p):
* gpmevent.c (tty_own_selection):
Updated parameter lists.
+>>>>>>> 1.154.2.640
2000-07-15 Alastair J. Houghton <ajhoughton(a)lineone.net>
* select.h (selection-alist): Removed declaration.
Index: src/Makefile.in.in
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/Makefile.in.in,v
retrieving revision 1.81.2.26
diff -u -r1.81.2.26 Makefile.in.in
--- Makefile.in.in 2000/07/08 09:14:24 1.81.2.26
+++ Makefile.in.in 2000/07/18 10:36:28
@@ -134,12 +134,12 @@
X11_libs = $(LIBI18N)
#endif /* HAVE_X_WINDOWS */
-#if defined (HEAP_IN_DATA) && !defined(PDUMP)
-sheap_obj=sheap.o
+#if defined (HEAP_IN_DATA) && !defined (PDUMP)
+sheap_objs=sheap.o
#endif
-#if defined(MINGW) || defined(CYGWIN)
-res_obj=xemacs_res.o
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+win32_objs=win32.o xemacs_res.o
#endif
## -Demacs is needed to make some files produce the correct version
@@ -193,9 +193,9 @@
macros.o marker.o md5.o minibuf.o objects.o opaque.o\
print.o process.o profile.o\
rangetab.o redisplay.o redisplay-output.o regex.o\
- search.o select.o $(sheap_obj) signal.o sound.o\
+ search.o select.o $(sheap_objs) signal.o sound.o\
specifier.o strftime.o symbols.o syntax.o sysdep.o\
- undo.o $(x_objs) widget.o window.o $(res_obj)
+ undo.o $(x_objs) widget.o window.o $(win32_objs)
obj_rtl = $(objs:.o=.c.rtl)
Index: src/alloc.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/alloc.c,v
retrieving revision 1.42.2.61
diff -u -r1.42.2.61 alloc.c
--- alloc.c 2000/05/01 11:00:02 1.42.2.61
+++ alloc.c 2000/07/18 10:36:29
@@ -1451,7 +1451,6 @@
/* Check for valid formal parameter list now, to allow us to use
SPECBIND_FAST_UNSAFE() later in funcall_compiled_function(). */
{
- Lisp_Object symbol, tail;
EXTERNAL_LIST_LOOP_3 (symbol, arglist, tail)
{
CHECK_SYMBOL (symbol);
@@ -3974,9 +3973,9 @@
void
syms_of_alloc (void)
{
- defsymbol (&Qpre_gc_hook, "pre-gc-hook");
- defsymbol (&Qpost_gc_hook, "post-gc-hook");
- defsymbol (&Qgarbage_collecting, "garbage-collecting");
+ DEFSYMBOL (Qpre_gc_hook);
+ DEFSYMBOL (Qpost_gc_hook);
+ DEFSYMBOL (Qgarbage_collecting);
DEFSUBR (Fcons);
DEFSUBR (Flist);
Index: src/buffer.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/buffer.c,v
retrieving revision 1.36.2.34
diff -u -r1.36.2.34 buffer.c
--- buffer.c 2000/07/16 11:32:57 1.36.2.34
+++ buffer.c 2000/07/18 10:36:30
@@ -439,7 +439,7 @@
*/
(filename))
{
- /* This function can GC. GC checked 1997.04.06. */
+ /* This function can GC. GC checked and fixed 7-11-2000 ben. */
REGISTER Lisp_Object buf;
struct gcpro gcpro1;
@@ -474,15 +474,17 @@
dn = Ffile_name_directory (filename);
fn = Ffile_truename (dn, Qnil);
if (! NILP (fn)) dn = fn;
- fn = Fexpand_file_name (Ffile_name_nondirectory (filename),
- dn);
+ /* Formerly the two calls below were combined, but that is
+ not GC-safe because the first call returns unprotected
+ data and the second call can GC. --ben */
+ fn = Ffile_name_nondirectory (filename);
+ fn = Fexpand_file_name (fn, dn);
}
filename = fn;
NUNGCPRO;
}
{
- Lisp_Object elt;
LIST_LOOP_2 (elt, Vbuffer_alist)
{
buf = Fcdr (elt);
@@ -534,6 +536,7 @@
Lisp_Object
get_truename_buffer (REGISTER Lisp_Object filename)
{
+ /* This function can GC. GC correct 7-11-00 ben */
/* FSFmacs has its own code here and doesn't call get-file-buffer.
That's because their equivalent of find-file-compare-truenames
(find-file-existing-other-name) isn't looked at in get-file-buffer.
@@ -869,37 +872,6 @@
return result;
}
-DEFUN ("buffer-dedicated-frame", Fbuffer_dedicated_frame, 0, 1, 0, /*
-Return the frame dedicated to this BUFFER, or nil if there is none.
-No argument or nil as argument means use current buffer as BUFFER.
-*/
- (buffer))
-{
- struct buffer *buf = decode_buffer (buffer, 0);
-
- /* XEmacs addition: if the frame is dead, silently make it go away. */
- if (!NILP (buf->dedicated_frame) &&
- !FRAME_LIVE_P (XFRAME (buf->dedicated_frame)))
- buf->dedicated_frame = Qnil;
-
- return buf->dedicated_frame;
-}
-
-DEFUN ("set-buffer-dedicated-frame", Fset_buffer_dedicated_frame, 2, 2, 0, /*
-For this BUFFER, set the FRAME dedicated to it.
-FRAME must be a frame or nil.
-*/
- (buffer, frame))
-{
- struct buffer *buf = decode_buffer (buffer, 0);
-
- if (!NILP (frame))
- CHECK_LIVE_FRAME (frame); /* XEmacs change */
-
- return buf->dedicated_frame = frame;
-}
-
-
DEFUN ("buffer-modified-p", Fbuffer_modified_p, 0, 1, 0, /*
Return t if BUFFER was modified since its file was last read or saved.
@@ -2186,8 +2158,6 @@
DEFSUBR (Fbuffer_base_buffer);
DEFSUBR (Fbuffer_indirect_children);
DEFSUBR (Fbuffer_local_variables);
- DEFSUBR (Fbuffer_dedicated_frame);
- DEFSUBR (Fset_buffer_dedicated_frame);
DEFSUBR (Fbuffer_modified_p);
DEFSUBR (Fset_buffer_modified_p);
DEFSUBR (Fbuffer_modified_tick);
@@ -2208,8 +2178,8 @@
DEFSUBR (Fbuffer_memory_usage);
#endif
- deferror (&Qprotected_field, "protected-field",
- "Attempt to modify a protected field", Qerror);
+ DEFERROR (Qprotected_field, "Attempt to modify a protected field",
+ Qinvalid_change);
}
void
Index: src/buffer.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/buffer.h,v
retrieving revision 1.13.2.20
diff -u -r1.13.2.20 buffer.h
--- buffer.h 2000/05/07 12:56:43 1.13.2.20
+++ buffer.h 2000/07/18 10:36:31
@@ -1311,6 +1311,25 @@
Remove this as soon as my Mule code is integrated. */
#define Qmswindows_tstr Qnative
#endif
+
+/* More stand-ins */
+#define Qcommand_argument_encoding Qnative
+#define Qenvironment_variable_encoding Qnative
+
+/* Convenience macros for extremely common invocations */
+#define C_TO_EXTERNAL(in, out, coding_system) \
+ TO_EXTERNAL_FORMAT (C_STRING, in, C_STRING_ALLOCA, out, coding_system)
+#define C_TO_EXTERNAL_MALLOC(in, out, coding_system) \
+ TO_EXTERNAL_FORMAT (C_STRING, in, C_STRING_MALLOC, out, coding_system)
+#define EXTERNAL_TO_C(in, out, coding_system) \
+ TO_INTERNAL_FORMAT (C_STRING, in, C_STRING_ALLOCA, out, coding_system)
+#define EXTERNAL_TO_C_MALLOC(in, out, coding_system) \
+ TO_INTERNAL_FORMAT (C_STRING, in, C_STRING_MALLOC, out, coding_system)
+#define LISP_TO_EXTERNAL(in, out, coding_system) \
+ TO_EXTERNAL_FORMAT (LISP_STRING, in, C_STRING_ALLOCA, out, coding_system)
+#define LISP_TO_EXTERNAL_MALLOC(in, out, coding_system) \
+ TO_EXTERNAL_FORMAT (LISP_STRING, in, C_STRING_MALLOC, out, coding_system)
+
/************************************************************************/
/* */
Index: src/bufslots.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/bufslots.h,v
retrieving revision 1.6.2.3
diff -u -r1.6.2.3 bufslots.h
--- bufslots.h 1999/10/26 01:11:41 1.6.2.3
+++ bufslots.h 2000/07/18 10:36:31
@@ -189,9 +189,7 @@
/* FSFmacs has overlay stuff here. We have extent info elsewhere in the
struct buffer. */
- /* If dedicated_frame is non-nil, display_buffer tries to use it instead
- of the current frame */
- MARKED_SLOT (dedicated_frame);
+ /* dedicated_frame in lisp */
/* Lisp of symbols naming the file format used for visited file. */
MARKED_SLOT (file_format);
Index: src/bytecode.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/bytecode.c,v
retrieving revision 1.13.2.19
diff -u -r1.13.2.19 bytecode.c
--- bytecode.c 2000/06/12 04:18:06 1.13.2.19
+++ bytecode.c 2000/07/18 10:36:31
@@ -471,7 +471,6 @@
funcall_compiled_function (Lisp_Object fun, int nargs, Lisp_Object args[])
{
/* This function can GC */
- Lisp_Object symbol, tail;
int speccount = specpdl_depth();
REGISTER int i = 0;
Lisp_Compiled_Function *f = XCOMPILED_FUNCTION (fun);
@@ -486,24 +485,26 @@
and local variables of fun. So just reserve it once. */
SPECPDL_RESERVE (f->specpdl_depth);
- /* Fmake_byte_code() guaranteed that f->arglist is a valid list
- containing only non-constant symbols. */
- LIST_LOOP_3 (symbol, f->arglist, tail)
- {
- if (EQ (symbol, Qand_rest))
- {
- tail = XCDR (tail);
- symbol = XCAR (tail);
- SPECBIND_FAST_UNSAFE (symbol, Flist (nargs - i, &args[i]));
- goto run_code;
- }
- else if (EQ (symbol, Qand_optional))
- optional = 1;
- else if (i == nargs && !optional)
- goto wrong_number_of_arguments;
- else
- SPECBIND_FAST_UNSAFE (symbol, i < nargs ? args[i++] : Qnil);
- }
+ {
+ /* Fmake_byte_code() guaranteed that f->arglist is a valid list
+ containing only non-constant symbols. */
+ LIST_LOOP_3 (symbol, f->arglist, tail)
+ {
+ if (EQ (symbol, Qand_rest))
+ {
+ tail = XCDR (tail);
+ symbol = XCAR (tail);
+ SPECBIND_FAST_UNSAFE (symbol, Flist (nargs - i, &args[i]));
+ goto run_code;
+ }
+ else if (EQ (symbol, Qand_optional))
+ optional = 1;
+ else if (i == nargs && !optional)
+ goto wrong_number_of_arguments;
+ else
+ SPECBIND_FAST_UNSAFE (symbol, i < nargs ? args[i++] : Qnil);
+ }
+ }
if (i < nargs)
goto wrong_number_of_arguments;
@@ -2410,8 +2411,7 @@
{
INIT_LRECORD_IMPLEMENTATION (compiled_function);
- deferror (&Qinvalid_byte_code, "invalid-byte-code",
- "Invalid byte code", Qerror);
+ DEFERROR_STANDARD (Qinvalid_byte_code, Qinvalid_state);
defsymbol (&Qbyte_code, "byte-code");
defsymbol (&Qcompiled_functionp, "compiled-function-p");
Index: src/console-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/console-msw.c,v
retrieving revision 1.4.2.13
diff -u -r1.4.2.13 console-msw.c
--- console-msw.c 2000/06/13 01:40:03 1.4.2.13
+++ console-msw.c 2000/07/18 10:36:32
@@ -182,17 +182,15 @@
void
mswindows_show_console (void)
{
+ /* What I really want is for the console window to appear on top of other
+ windows, but NOT get the focus. This seems hard-to-impossible under
+ Windows. The following sequence seems to do the best possible, along
+ with keeping the console window on top when xemacs --help is used. */
HWND hwnd = mswindows_get_console_hwnd ();
- ShowWindow (hwnd, SW_SHOWNA);
-
- /* I tried to raise the window to the top without activating
- it, but this fails. Apparently Windows just doesn't like
- having the active window not be on top. So instead, we
- at least put it just below our own window, where part of it
- will likely be seen. */
- SetWindowPos (hwnd, GetForegroundWindow (), 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOMOVE | SWP_NOSENDCHANGING |
- SWP_NOACTIVATE);
+ HWND hwndf = GetFocus ();
+ ShowWindow (hwnd, SW_SHOW);
+ BringWindowToTop (hwnd);
+ SetFocus (hwndf);
}
static int mswindows_console_buffered = 0;
@@ -237,7 +235,38 @@
return GetVersion () & 0x80000000;
}
+DEFUN ("mswindows-debugging-output", Fmswindows_debugging_output, 1, 1, 0, /*
+Write CHAR-OR-STRING to the Windows debugger, using OutputDebugString().
+This function can be used as the STREAM argument of Fprint() or the like.
+*/
+ (char_or_string))
+{
+ Extbyte *extstr;
+
+ if (STRINGP (char_or_string))
+ {
+ TO_EXTERNAL_FORMAT (LISP_STRING, char_or_string,
+ C_STRING_ALLOCA, extstr,
+ Qmswindows_tstr);
+ OutputDebugString (extstr);
+ }
+ else
+ {
+ Bufbyte str[MAX_EMCHAR_LEN + 1];
+ Bytecount len;
+
+ CHECK_CHAR_COERCE_INT (char_or_string);
+ len = set_charptr_emchar (str, XCHAR (char_or_string));
+ str[len] = '\0';
+ TO_EXTERNAL_FORMAT (C_STRING, str,
+ C_STRING_ALLOCA, extstr,
+ Qmswindows_tstr);
+ OutputDebugString (extstr);
+ }
+ return char_or_string;
+}
+
#ifdef DEBUG_XEMACS
/*
@@ -445,11 +474,8 @@
Extbyte *msgout;
Extbyte *titleout = 0;
UINT sty = 0;
-
- if (noninteractive)
- return Qcancel;
- if (!CONSP (flags))
+ if (!LISTP (flags))
{
CHECK_SYMBOL (flags);
flags = list1 (flags);
@@ -555,6 +581,8 @@
void
syms_of_console_mswindows (void)
{
+ DEFSUBR (Fmswindows_debugging_output);
+
defsymbol (&Qabortretryignore, "abortretryignore");
defsymbol (&Qapplmodal, "applmodal");
defsymbol (&Qdefault_desktop_only, "default-desktop-only");
Index: src/console-msw.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/console-msw.h,v
retrieving revision 1.22.2.25
diff -u -r1.22.2.25 console-msw.h
--- console-msw.h 2000/07/11 23:44:32 1.22.2.25
+++ console-msw.h 2000/07/18 10:36:32
@@ -178,6 +178,9 @@
/* Time of last click event, for button 2 emul */
DWORD last_click_time;
+ /* Mods of last click event */
+ DWORD last_click_mods;
+
/* Coordinates of last click event, screen-relative */
POINTS last_click_point;
#ifdef HAVE_TOOLBARS
@@ -210,6 +213,7 @@
int ignore_next_rbutton_up : 1;
int sizing : 1;
int paint_pending : 1; /* Whether a WM_PAINT magic event has been queued */
+ int popup : 1; /* frame is a popup frame */
/* Geometry, in characters, as specified by proplist during frame
creation. Memebers are set to -1 for unspecified */
@@ -236,6 +240,7 @@
#define FRAME_MSWINDOWS_CHARWIDTH(f) (FRAME_MSWINDOWS_DATA (f)->charwidth)
#define FRAME_MSWINDOWS_CHARHEIGHT(f) (FRAME_MSWINDOWS_DATA (f)->charheight)
#define FRAME_MSWINDOWS_TARGET_RECT(f) (FRAME_MSWINDOWS_DATA (f)->target_rect)
+#define FRAME_MSWINDOWS_POPUP(f) (FRAME_MSWINDOWS_DATA (f)->popup)
/* Frame check and validation macros */
#define FRAME_MSWINDOWS_P(frm) CONSOLE_TYPESYM_MSWINDOWS_P (FRAME_TYPE (frm))
@@ -301,6 +306,7 @@
void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest);
HWND mswindows_get_selected_frame_hwnd (void);
void mswindows_enqueue_magic_event (HWND hwnd, UINT msg);
+int mswindows_is_dialog_msg (MSG *msg);
/* win32 DDE management library */
#define MSWINDOWS_DDE_ITEM_OPEN "Open"
@@ -364,7 +370,18 @@
int mswindows_windows9x_p (void);
-
void mswindows_output_last_error (char *frob);
+
+Lisp_Object mswindows_handle_print_dialog_box (struct frame *f,
+ Lisp_Object keys);
+Lisp_Object mswindows_handle_page_setup_dialog_box (struct frame *f,
+ Lisp_Object keys);
+Lisp_Object mswindows_handle_print_setup_dialog_box (struct frame *f,
+ Lisp_Object keys);
+
+void mswindows_register_popup_frame (Lisp_Object frame);
+void mswindows_unregister_popup_frame (Lisp_Object frame);
+
+void mswindows_destroy_selection (Lisp_Object selection);
#endif /* INCLUDED_console_msw_h_ */
Index: src/console-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/console-x.c,v
retrieving revision 1.3.2.4
diff -u -r1.3.2.4 console-x.c
--- console-x.c 2000/02/16 02:06:50 1.3.2.4
+++ console-x.c 2000/07/18 10:36:32
@@ -20,6 +20,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized by Ben Wing, 7-10-00. */
+
/* Authorship:
Ben Wing: January 1996, for 19.14.
@@ -29,6 +31,7 @@
#include "lisp.h"
#include "console-x.h"
+#include "buffer.h"
#include "process.h" /* canonicalize_host_name */
#include "redisplay.h" /* for display_arg */
@@ -44,9 +47,9 @@
split_up_display_spec (Lisp_Object display, int *hostname_length,
int *display_length, int *screen_length)
{
- char *dotptr;
+ Bufbyte *dotptr;
- dotptr = strrchr ((char *) XSTRING_DATA (display), ':');
+ dotptr = strrchr (XSTRING_DATA (display), ':');
if (!dotptr)
{
*hostname_length = XSTRING_LENGTH (display);
@@ -54,12 +57,11 @@
}
else
{
- *hostname_length = dotptr - (char *) XSTRING_DATA (display);
+ *hostname_length = dotptr - XSTRING_DATA (display);
dotptr = strchr (dotptr, '.');
if (dotptr)
- *display_length = (dotptr - (char *) XSTRING_DATA (display)
- - *hostname_length);
+ *display_length = (dotptr - XSTRING_DATA (display) - *hostname_length);
else
*display_length = XSTRING_LENGTH (display) - *hostname_length;
}
@@ -102,7 +104,7 @@
static Lisp_Object
get_display_arg_connection (void)
{
- const char *disp_name;
+ const Extbyte *disp_name;
/* If the user didn't explicitly specify a display to use when
they called make-x-device, then we first check to see if a
@@ -114,7 +116,7 @@
{
int elt;
int argc;
- char **argv;
+ Extbyte **argv;
Lisp_Object conn;
make_argc_argv (Vx_initial_argv_list, &argc, &argv);
@@ -127,7 +129,8 @@
if (elt + 1 == argc)
{
suppress_early_error_handler_backtrace = 1;
- error ("-display specified with no arg");
+ type_error (Qinvalid_argument,
+ "-display specified with no arg");
}
else
{
@@ -140,12 +143,12 @@
/* assert: display_arg is only set if we found the display
arg earlier so we can't fail to find it now. */
assert (disp_name != NULL);
- conn = build_ext_string (disp_name, Qctext);
+ conn = build_ext_string (disp_name, Qcommand_argument_encoding);
free_argc_argv (argv);
return conn;
}
else
- return build_ext_string (XDisplayName (0), Qctext);
+ return build_ext_string (XDisplayName (0), Qx_display_name_encoding);
}
/* "semi-canonicalize" means convert to a nicer form for printing, but
@@ -181,8 +184,7 @@
/* Check for a couple of standard special cases */
if (string_byte (XSTRING (connection), 0) == ':')
connection = concat2 (build_string ("localhost"), connection);
- else if (!strncmp ((const char *) XSTRING_DATA (connection),
- "unix:", 5))
+ else if (!strncmp (XSTRING_DATA (connection), "unix:", 5))
connection = concat2 (build_string ("localhost:"),
Fsubstring (connection, make_int (5), Qnil));
@@ -260,7 +262,7 @@
split_up_display_spec (connection, &hostname_length, &display_length,
&screen_length);
- screen_str = build_string ((const char *) XSTRING_DATA (connection)
+ screen_str = build_string (XSTRING_DATA (connection)
+ hostname_length + display_length);
connection = x_canonicalize_console_connection (connection, errb);
Index: src/console-x.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/console-x.h,v
retrieving revision 1.11.2.9
diff -u -r1.11.2.9 console-x.h
--- console-x.h 2000/02/16 02:07:00 1.11.2.9
+++ console-x.h 2000/07/18 10:36:32
@@ -491,6 +491,23 @@
extern Lisp_Object Vx_initial_argv_list; /* #### ugh! */
+/* Standins for various X encodings, until we know them better */
+
+/* !!#### Need to verify the encoding used in lwlib -- Qnative or Qctext?
+ Almost certainly the former. Use a standin for now. */
+#define Qlwlib_encoding Qnative
+
+#define Qx_atom_name_encoding Qctext
+/* font names are often stored in atoms, so it gets sticky if we set this
+ to something different from atom-name encoding */
+#define Qx_font_name_encoding Qctext
+
+#define Qx_color_name_encoding Qctext
+
+/* the following probably must agree with Qcommand_argument_encoding and
+ Qenvironment_variable_encoding */
+#define Qx_display_name_encoding Qnative
+
#endif /* HAVE_X_WINDOWS */
#endif /* INCLUDED_console_x_h_ */
Index: src/console.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/console.h,v
retrieving revision 1.22.2.26
diff -u -r1.22.2.26 console.h
--- console.h 2000/07/13 09:06:33 1.22.2.26
+++ console.h 2000/07/18 10:36:32
@@ -294,7 +294,9 @@
#ifdef HAVE_DIALOGS
/* dialog methods */
- void (*popup_dialog_box_method) (struct frame *, Lisp_Object dbox_desc);
+ Lisp_Object (*make_dialog_box_internal_method) (struct frame *,
+ Lisp_Object type,
+ Lisp_Object keys);
#endif
};
Index: src/data.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/data.c,v
retrieving revision 1.24.2.19
diff -u -r1.24.2.19 data.c
--- data.c 2000/07/04 10:35:56 1.24.2.19
+++ data.c 2000/07/18 10:36:33
@@ -1,6 +1,7 @@
/* Primitive operations on Lisp data types for XEmacs Lisp interpreter.
Copyright (C) 1985, 1986, 1988, 1992, 1993, 1994, 1995
Free Software Foundation, Inc.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -39,17 +40,22 @@
Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound;
Lisp_Object Qerror_conditions, Qerror_message;
-Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
-Lisp_Object Qvoid_variable, Qcyclic_variable_indirection;
-Lisp_Object Qvoid_function, Qcyclic_function_indirection;
-Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
+Lisp_Object Qerror, Qquit, Qsyntax_error, Qinvalid_read_syntax;
+Lisp_Object Qlist_formation_error;
Lisp_Object Qmalformed_list, Qmalformed_property_list;
Lisp_Object Qcircular_list, Qcircular_property_list;
-Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
+Lisp_Object Qinvalid_argument, Qwrong_type_argument, Qargs_out_of_range;
+Lisp_Object Qwrong_number_of_arguments, Qinvalid_function, Qno_catch;
+Lisp_Object Qinternal_error, Qinvalid_state;
+Lisp_Object Qvoid_variable, Qcyclic_variable_indirection;
+Lisp_Object Qvoid_function, Qcyclic_function_indirection;
+Lisp_Object Qinvalid_operation, Qinvalid_change;
+Lisp_Object Qsetting_constant;
+Lisp_Object Qediting_error;
+Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
Lisp_Object Qio_error, Qend_of_file;
Lisp_Object Qarith_error, Qrange_error, Qdomain_error;
Lisp_Object Qsingularity_error, Qoverflow_error, Qunderflow_error;
-Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
Lisp_Object Qintegerp, Qnatnump, Qsymbolp;
Lisp_Object Qlistp, Qtrue_list_p, Qweak_listp;
Lisp_Object Qconsp, Qsubrp;
@@ -2027,8 +2033,8 @@
void
init_errors_once_early (void)
{
- defsymbol (&Qerror_conditions, "error-conditions");
- defsymbol (&Qerror_message, "error-message");
+ DEFSYMBOL (Qerror_conditions);
+ DEFSYMBOL (Qerror_message);
/* We declare the errors here because some other deferrors depend
on some of the errors below. */
@@ -2036,62 +2042,64 @@
/* ERROR is used as a signaler for random errors for which nothing
else is right */
- deferror (&Qerror, "error", "error", Qnil);
- deferror (&Qquit, "quit", "Quit", Qnil);
+ DEFERROR (Qerror, "error", Qnil);
+ DEFERROR_STANDARD (Qquit, Qnil);
- deferror (&Qwrong_type_argument, "wrong-type-argument",
- "Wrong type argument", Qerror);
- deferror (&Qargs_out_of_range, "args-out-of-range", "Args out of
range",
- Qerror);
- deferror (&Qvoid_function, "void-function",
- "Symbol's function definition is void", Qerror);
- deferror (&Qcyclic_function_indirection, "cyclic-function-indirection",
- "Symbol's chain of function indirections contains a loop", Qerror);
- deferror (&Qvoid_variable, "void-variable",
- "Symbol's value as variable is void", Qerror);
- deferror (&Qcyclic_variable_indirection, "cyclic-variable-indirection",
- "Symbol's chain of variable indirections contains a loop", Qerror);
- deferror (&Qsetting_constant, "setting-constant",
- "Attempt to set a constant symbol", Qerror);
- deferror (&Qinvalid_read_syntax, "invalid-read-syntax",
- "Invalid read syntax", Qerror);
+ DEFERROR (Qunimplemented, "Feature not yet implemented", Qerror);
+ DEFERROR_STANDARD (Qsyntax_error, Qerror);
+ DEFERROR_STANDARD (Qinvalid_read_syntax, Qsyntax_error);
+ DEFERROR_STANDARD (Qlist_formation_error, Qsyntax_error);
/* Generated by list traversal macros */
- deferror (&Qmalformed_list, "malformed-list",
- "Malformed list", Qerror);
- deferror (&Qmalformed_property_list, "malformed-property-list",
- "Malformed property list", Qmalformed_list);
- deferror (&Qcircular_list, "circular-list",
- "Circular list", Qerror);
- deferror (&Qcircular_property_list, "circular-property-list",
- "Circular property list", Qcircular_list);
-
- deferror (&Qinvalid_function, "invalid-function", "Invalid
function",
- Qerror);
- deferror (&Qwrong_number_of_arguments, "wrong-number-of-arguments",
- "Wrong number of arguments", Qerror);
- deferror (&Qno_catch, "no-catch", "No catch for tag",
- Qerror);
- deferror (&Qbeginning_of_buffer, "beginning-of-buffer",
- "Beginning of buffer", Qerror);
- deferror (&Qend_of_buffer, "end-of-buffer", "End of buffer",
Qerror);
- deferror (&Qbuffer_read_only, "buffer-read-only", "Buffer is
read-only",
- Qerror);
+ DEFERROR_STANDARD (Qmalformed_list, Qlist_formation_error);
+ DEFERROR_STANDARD (Qmalformed_property_list, Qmalformed_list);
+ DEFERROR_STANDARD (Qcircular_list, Qlist_formation_error);
+ DEFERROR_STANDARD (Qcircular_property_list, Qcircular_list);
+
+ DEFERROR_STANDARD (Qinvalid_argument, Qerror);
+ DEFERROR_STANDARD (Qwrong_type_argument, Qinvalid_argument);
+ DEFERROR_STANDARD (Qargs_out_of_range, Qinvalid_argument);
+ DEFERROR_STANDARD (Qwrong_number_of_arguments, Qinvalid_argument);
+ DEFERROR_STANDARD (Qinvalid_function, Qinvalid_argument);
+ DEFERROR (Qno_catch, "No catch for tag", Qinvalid_argument);
- deferror (&Qio_error, "io-error", "IO Error", Qerror);
- deferror (&Qend_of_file, "end-of-file", "End of stream",
Qio_error);
+ DEFERROR_STANDARD (Qinternal_error, Qerror);
- deferror (&Qarith_error, "arith-error", "Arithmetic error",
Qerror);
- deferror (&Qrange_error, "range-error", "Arithmetic range
error",
- Qarith_error);
- deferror (&Qdomain_error, "domain-error", "Arithmetic domain
error",
- Qarith_error);
- deferror (&Qsingularity_error, "singularity-error",
- "Arithmetic singularity error", Qdomain_error);
- deferror (&Qoverflow_error, "overflow-error",
- "Arithmetic overflow error", Qdomain_error);
- deferror (&Qunderflow_error, "underflow-error",
- "Arithmetic underflow error", Qdomain_error);
+ DEFERROR (Qinvalid_state, "Properties or values have been set incorrectly",
+ Qerror);
+ DEFERROR (Qvoid_function, "Symbol's function definition is void",
+ Qinvalid_state);
+ DEFERROR (Qcyclic_function_indirection,
+ "Symbol's chain of function indirections contains a loop",
+ Qinvalid_state);
+ DEFERROR (Qvoid_variable, "Symbol's value as variable is void",
+ Qinvalid_state);
+ DEFERROR (Qcyclic_variable_indirection,
+ "Symbol's chain of variable indirections contains a loop",
+ Qinvalid_state);
+
+ DEFERROR (Qinvalid_operation,
+ "Operation not allowed or error during operation", Qerror);
+ DEFERROR (Qinvalid_change, "Attempt to set properties or values
incorrectly",
+ Qinvalid_operation);
+ DEFERROR (Qsetting_constant, "Attempt to set a constant symbol",
+ Qinvalid_change);
+
+ DEFERROR (Qediting_error, "Invalid operation during editing",
+ Qinvalid_operation);
+ DEFERROR_STANDARD (Qbeginning_of_buffer, Qediting_error);
+ DEFERROR_STANDARD (Qend_of_buffer, Qediting_error);
+ DEFERROR (Qbuffer_read_only, "Buffer is read-only", Qediting_error);
+
+ DEFERROR (Qio_error, "IO Error", Qinvalid_operation);
+ DEFERROR (Qend_of_file, "End of file or stream", Qio_error);
+
+ DEFERROR (Qarith_error, "Arithmetic error", Qinvalid_operation);
+ DEFERROR (Qrange_error, "Arithmetic range error", Qarith_error);
+ DEFERROR (Qdomain_error, "Arithmetic domain error", Qarith_error);
+ DEFERROR (Qsingularity_error, "Arithmetic singularity error",
Qdomain_error);
+ DEFERROR (Qoverflow_error, "Arithmetic overflow error", Qdomain_error);
+ DEFERROR (Qunderflow_error, "Arithmetic underflow error", Qdomain_error);
}
void
@@ -2099,35 +2107,35 @@
{
INIT_LRECORD_IMPLEMENTATION (weak_list);
- defsymbol (&Qquote, "quote");
- defsymbol (&Qlambda, "lambda");
- defsymbol (&Qlistp, "listp");
- defsymbol (&Qtrue_list_p, "true-list-p");
- defsymbol (&Qconsp, "consp");
- defsymbol (&Qsubrp, "subrp");
- defsymbol (&Qsymbolp, "symbolp");
- defsymbol (&Qintegerp, "integerp");
- defsymbol (&Qcharacterp, "characterp");
- defsymbol (&Qnatnump, "natnump");
- defsymbol (&Qstringp, "stringp");
- defsymbol (&Qarrayp, "arrayp");
- defsymbol (&Qsequencep, "sequencep");
- defsymbol (&Qbufferp, "bufferp");
- defsymbol (&Qbitp, "bitp");
- defsymbol (&Qbit_vectorp, "bit-vector-p");
- defsymbol (&Qvectorp, "vectorp");
- defsymbol (&Qchar_or_string_p, "char-or-string-p");
- defsymbol (&Qmarkerp, "markerp");
- defsymbol (&Qinteger_or_marker_p, "integer-or-marker-p");
- defsymbol (&Qinteger_or_char_p, "integer-or-char-p");
- defsymbol (&Qinteger_char_or_marker_p, "integer-char-or-marker-p");
- defsymbol (&Qnumberp, "numberp");
- defsymbol (&Qnumber_char_or_marker_p, "number-char-or-marker-p");
- defsymbol (&Qcdr, "cdr");
- defsymbol (&Qweak_listp, "weak-list-p");
+ DEFSYMBOL (Qquote);
+ DEFSYMBOL (Qlambda);
+ DEFSYMBOL (Qlistp);
+ DEFSYMBOL (Qtrue_list_p);
+ DEFSYMBOL (Qconsp);
+ DEFSYMBOL (Qsubrp);
+ DEFSYMBOL (Qsymbolp);
+ DEFSYMBOL (Qintegerp);
+ DEFSYMBOL (Qcharacterp);
+ DEFSYMBOL (Qnatnump);
+ DEFSYMBOL (Qstringp);
+ DEFSYMBOL (Qarrayp);
+ DEFSYMBOL (Qsequencep);
+ DEFSYMBOL (Qbufferp);
+ DEFSYMBOL (Qbitp);
+ DEFSYMBOL_MULTIWORD_PREDICATE (Qbit_vectorp);
+ DEFSYMBOL (Qvectorp);
+ DEFSYMBOL (Qchar_or_string_p);
+ DEFSYMBOL (Qmarkerp);
+ DEFSYMBOL (Qinteger_or_marker_p);
+ DEFSYMBOL (Qinteger_or_char_p);
+ DEFSYMBOL (Qinteger_char_or_marker_p);
+ DEFSYMBOL (Qnumberp);
+ DEFSYMBOL (Qnumber_char_or_marker_p);
+ DEFSYMBOL (Qcdr);
+ DEFSYMBOL_MULTIWORD_PREDICATE (Qweak_listp);
#ifdef LISP_FLOAT_TYPE
- defsymbol (&Qfloatp, "floatp");
+ DEFSYMBOL (Qfloatp);
#endif /* LISP_FLOAT_TYPE */
DEFSUBR (Fwrong_type_argument);
Index: src/depend
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/depend,v
retrieving revision 1.15.2.14
diff -u -r1.15.2.14 depend
--- depend 2000/05/02 04:41:04 1.15.2.14
+++ depend 2000/07/18 10:36:33
@@ -7,48 +7,47 @@
#endif
LISP_H = lisp.h config.h $(LISP_UNION_H)
#ifdef HAVE_MS_WINDOWS
-console-msw.o: $(LISP_H) conslots.h console-msw.h console.h events.h lisp-disunion.h
lisp-union.h lrecord.h opaque.h symeval.h symsinit.h systime.h
-device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h
console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
-dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h
systime.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h
console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h menubar.h
mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h
select.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h
systime.h systty.h syswait.h toolbar.h
-frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h window.h winslots.h
-glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h
objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h
toolbar.h window.h winslots.h
-gui-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-menubar-msw.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-msw.h
console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h
objects.h specifier.h symeval.h symsinit.h
-redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h
device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h
lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
window.h winslots.h
-scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h
frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h
scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h
winslots.h
-select-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h frame.h frameslots.h
glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h select.h
specifier.h symeval.h symsinit.h toolbar.h
-toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+console-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h events.h
general-slots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h
symsinit.h syscommctrl.h systime.h syswindows.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h
console.h device.h events.h faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h sysdep.h systime.h syswindows.h
toolbar.h window.h winslots.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+dired-msw.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h
sysproc.h systime.h syswindows.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h
console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h
general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h
scrollbar-msw.h scrollbar.h select.h specifier.h symeval.h symsinit.h syscommctrl.h
sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h
toolbar.h window.h winslots.h
+frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h events.h faces.h frame.h frameslots.h general-slots.h glyphs-msw.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h faces.h file-coding.h frame.h frameslots.h general-slots.h glyphs-msw.h glyphs.h
gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h
objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
syscommctrl.h sysfile.h syswindows.h toolbar.h window.h winslots.h
+gui-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+menubar-msw.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-msw.h
console.h device.h elhash.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h menubar-msw.h menubar.h mule-charset.h opaque.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h systime.h
syswindows.h toolbar.h window.h winslots.h
+objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
general-slots.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-msw.h objects.h specifier.h symeval.h symsinit.h syscommctrl.h syswindows.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h
device.h events.h faces.h frame.h frameslots.h general-slots.h glyphs-msw.h glyphs.h gui.h
gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h
objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h sysdep.h
systime.h syswindows.h toolbar.h window.h winslots.h
+scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h
frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h
systime.h syswindows.h toolbar.h window.h winslots.h
+select-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h frame.h frameslots.h
general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h
scrollbar.h select.h specifier.h symeval.h symsinit.h syscommctrl.h syswindows.h toolbar.h
window.h winslots.h
+toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h
elhash.h faces.h frame.h frameslots.h general-slots.h glyphs-msw.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h syswindows.h toolbar.h window.h
winslots.h
#endif
#ifdef HAVE_X_WINDOWS
-balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h
lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xintrinsic.h
-console-x.o: $(LISP_H) conslots.h console-x.h console.h lisp-disunion.h lisp-union.h
lrecord.h process.h redisplay.h symeval.h symsinit.h xintrinsic.h
-device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h
offix-types.h offix.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h
xintrinsicp.h xmu.h
-dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h
conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h
gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
xintrinsic.h
-frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h
EmacsShell.h ExternalShell.h buffer.h bufslots.h conslots.h console-x.h console.h device.h
dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h
glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h
objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
xmprimitivep.h xmu.h
-glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h conslots.h
console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h
glyphs.h gui-x.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
-gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h xintrinsic.h
-input-method-xfs.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h
commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h
glyphs.h gui-x.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h menubar.h
mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h
toolbar.h window.h winslots.h xintrinsic.h
-objects-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h
specifier.h symeval.h symsinit.h xintrinsic.h
-redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h
bufslots.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h
frameslots.h glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h
mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h
xintrinsic.h xintrinsicp.h xmprimitivep.h
-scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h
console.h device.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h lisp-disunion.h
lisp-union.h lrecord.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h xintrinsic.h
-select-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h
symsinit.h systime.h toolbar.h xintrinsic.h
-toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h
bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h
glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h
general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xintrinsic.h
+console-x.o: $(LISP_H) conslots.h console-x.h console.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h process.h redisplay.h symeval.h symsinit.h xintrinsic.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h elhash.h events.h faces.h frame.h frameslots.h general-slots.h
glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h
xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h
conslots.h console-x.h console.h device.h events.h frame.h frameslots.h general-slots.h
glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h
winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h
EmacsShell.h ExternalShell.h buffer.h bufslots.h conslots.h console-x.h console.h device.h
dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h general-slots.h
glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h
specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h conslots.h
console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h general-slots.h
glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h
xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h events.h frame.h frameslots.h general-slots.h glyphs.h gui-x.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xfs.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h
console.h device.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h
commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h
general-slots.h glyphs.h gui-x.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h
menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
general-slots.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h
objects.h specifier.h symeval.h symsinit.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h
bufslots.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h
frameslots.h general-slots.h glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h
lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h
window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h
console.h device.h frame.h frameslots.h general-slots.h glyphs-x.h glyphs.h gui-x.h gui.h
lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-x.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h
bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h
general-slots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
#endif
#ifdef HAVE_DATABASE
-database.o: $(LISP_H) buffer.h bufslots.h database.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
+database.o: $(LISP_H) buffer.h bufslots.h database.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
#endif
#ifdef MULE
-mule-canna.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h symeval.h symsinit.h
-mule-ccl.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h
lrecord.h mule-ccl.h mule-charset.h symeval.h symsinit.h
-mule-charset.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h
elhash.h faces.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h
mule-charset.h symeval.h symsinit.h
-mule-mcpath.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h sysfile.h
-mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h window.h winslots.h
-mule.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h regex.h symeval.h symsinit.h
+mule-canna.o: $(LISP_H) buffer.h bufslots.h file-coding.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h file-coding.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-ccl.h mule-charset.h symeval.h symsinit.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h
elhash.h faces.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-ccl.h mule-charset.h symeval.h symsinit.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h window.h
winslots.h
+mule.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h regex.h
symeval.h symsinit.h
#endif
#ifdef EXTERNAL_WIDGET
ExternalClient-Xlib.o: extw-Xlib.h
@@ -57,162 +56,163 @@
extw-Xlib.o: config.h extw-Xlib.h
extw-Xt.o: config.h extw-Xlib.h extw-Xt.h
#endif
-EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h
buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h
glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h
buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h
general-slots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
-abbrev.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h
syntax.h window.h winslots.h
-alloc.o: $(LISP_H) alloc.h backtrace.h buffer.h bufslots.h bytecode.h chartab.h
conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h
systime.h toolbar.h window.h winslots.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h general-slots.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h
symsinit.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) alloc.h backtrace.h buffer.h bufslots.h bytecode.h chartab.h
conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
sysfile.h systime.h toolbar.h window.h winslots.h
alloca.o: config.h
balloon_help.o: balloon_help.h config.h xintrinsic.h
-blocktype.o: $(LISP_H) blocktype.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-buffer.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h
device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdep.h sysfile.h
toolbar.h window.h winslots.h
-bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h chartab.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
syntax.h
-callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h commands.h events.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h
symsinit.h systime.h window.h winslots.h
-callproc.o: $(LISP_H) buffer.h bufslots.h commands.h file-coding.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h nt.h process.h redisplay.h
scrollbar.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h
systty.h window.h winslots.h
-casefiddle.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-casetab.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h opaque.h symeval.h symsinit.h
-chartab.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h syntax.h
-cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h
-cmdloop.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h
toolbar.h window.h winslots.h
-cmds.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h
events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h
systime.h systty.h toolbar.h window.h winslots.h
-console-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h
-console.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h
events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-data.o: $(LISP_H) buffer.h bufslots.h bytecode.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h sysfloat.h syssignal.h
-debug.o: $(LISP_H) bytecode.h debug.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-device-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
-device.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h events.h
faces.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
syssignal.h systime.h toolbar.h window.h winslots.h
-dgif_lib.o: gifrlib.h
-dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h
-dired.o: $(LISP_H) buffer.h bufslots.h commands.h elhash.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h ndir.h opaque.h regex.h symeval.h symsinit.h sysdep.h sysdir.h
sysfile.h syspwd.h systime.h
-doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h insdel.h keymap.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
-doprnt.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h symeval.h symsinit.h
-dragdrop.o: $(LISP_H) dragdrop.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-dumper.o: $(LISP_H) alloc.h conslots.h console-stream.h console.h dump-id.h dumper.h
elhash.h lisp-disunion.h lisp-union.h lrecord.h specifier.h symeval.h symsinit.h
sysfile.h
-dynarr.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+blocktype.o: $(LISP_H) blocktype.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+buffer.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h
device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h general-slots.h
glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h
process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdep.h
sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h chartab.h
general-slots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h
symsinit.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h commands.h events.h general-slots.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h
symeval.h symsinit.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h commands.h file-coding.h general-slots.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h nt.h process.h
redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h
systime.h systty.h syswindows.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
+chartab.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h frame.h frameslots.h
general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h
systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
events.h frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h general-slots.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h
events.h frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h
syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h faces.h file-coding.h frame.h frameslots.h general-slots.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h
toolbar.h window.h winslots.h
+console.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h
events.h frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfloat.h syssignal.h
+debug.o: $(LISP_H) bytecode.h debug.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h symeval.h symsinit.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h events.h faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
window.h winslots.h
+device.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h events.h
faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h keymap.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+dgif_lib.o: $(LISP_H) general-slots.h gifrlib.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h sysfile.h
+dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h general-slots.h
glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h window.h winslots.h
+dired.o: $(LISP_H) buffer.h bufslots.h commands.h elhash.h general-slots.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h opaque.h regex.h symeval.h
symsinit.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h general-slots.h insdel.h keymap.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h symeval.h symsinit.h
+dragdrop.o: $(LISP_H) dragdrop.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+dumper.o: $(LISP_H) alloc.h conslots.h console-stream.h console.h dump-id.h dumper.h
elhash.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h nt.h specifier.h symeval.h
symsinit.h sysfile.h syswindows.h
+dynarr.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
ecrt0.o: config.h
-editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h
device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
-eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h opaque.h symeval.h symsinit.h sysdep.h
-elhash.o: $(LISP_H) bytecode.h elhash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h
device.h dump-id.h dumper.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h
systty.h toolbar.h
-emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h
file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h
-esd.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h
-eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h
console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h
symsinit.h
-event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h
buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h
elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h
offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
sysproc.h syssignal.h systime.h systty.h toolbar.h xintrinsic.h xintrinsicp.h
-event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h commands.h conslots.h console.h
device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h
insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h menubar.h
mule-charset.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h
sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
-event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h
frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h process.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h
syswait.h toolbar.h
-event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h
events.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h
symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
-events.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h
device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
xintrinsic.h
-extents.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h debug.h device.h elhash.h
extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h process.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-faces.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h extents.h
faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h window.h winslots.h
-file-coding.o: $(LISP_H) buffer.h bufslots.h chartab.h elhash.h file-coding.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h mule-charset.h opaque.h
symeval.h symsinit.h
-fileio.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h
file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h ndir.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h window.h
winslots.h
-filelock.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h ndir.h paths.h symeval.h symsinit.h sysdir.h sysfile.h syspwd.h
syssignal.h
-filemode.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
sysfile.h
-floatfns.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
sysfloat.h syssignal.h
-fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h events.h
extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h
-font-lock.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h
frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h
-frame.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h extents.h
faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h
lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h window.h winslots.h
-free-hook.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-general.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-getloadavg.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
sysfile.h
-gif_io.o: gifrlib.h sysfile.h
-glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h
file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysfile.h toolbar.h
-glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h
faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h window.h winslots.h
-glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h chartab.h conslots.h console.h
device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h
device.h events.h extents.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h
line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h
toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h sysdep.h
+elhash.o: $(LISP_H) bytecode.h elhash.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h symeval.h symsinit.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h
device.h dump-id.h dumper.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nt.h paths.h process.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h
systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h
file-coding.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+esd.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h miscplay.h
symeval.h symsinit.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h
console.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h
symeval.h symsinit.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h
buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h
elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h general-slots.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h
objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h commands.h conslots.h console.h
device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h general-slots.h
glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h
menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h
frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h
systime.h systty.h syswait.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h
events.h general-slots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h
process.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h
systty.h
+events.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h
device.h events-mod.h events.h extents.h frame.h frameslots.h general-slots.h glyphs.h
gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h
window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h debug.h device.h elhash.h
extents.h faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h gutter.h insdel.h
keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h process.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h extents.h
faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h chartab.h elhash.h file-coding.h
general-slots.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h
mule-charset.h opaque.h symeval.h symsinit.h
+fileio.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h
file-coding.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h ndir.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h
window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h ndir.h paths.h symeval.h symsinit.h sysdir.h sysfile.h syspwd.h
syssignal.h
+filemode.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h sysfile.h
+floatfns.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h sysfloat.h syssignal.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h events.h
extents.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysfile.h systime.h toolbar.h window.h winslots.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h
frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h
toolbar.h window.h winslots.h
+frame.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h extents.h
faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h gutter.h lisp-disunion.h
lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+free-hook.o: $(LISP_H) general-slots.h hash.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+general.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+getloadavg.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h sysfile.h
+gif_io.o: config.h gifrlib.h sysfile.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h
file-coding.h frame.h frameslots.h general-slots.h gifrlib.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h
winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h
faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h chartab.h conslots.h console.h
device.h elhash.h faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h opaque.h rangetab.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
gmalloc.o: config.h getpagesize.h
-gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h events-mod.h
events.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h
process.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h systty.h
-gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-gutter.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h
frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-hash.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-hftctl.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-hpplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.h symeval.h
symsinit.h
-imgproc.o: $(LISP_H) imgproc.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-indent.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h faces.h
frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
-inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h chartab.h
conslots.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h
file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h
postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
syntax.h systime.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
-input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
-insdel.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h frame.h
frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h
lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h
-intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h lisp-disunion.h lisp-union.h
lrecord.h symeval.h symsinit.h
-keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h elhash.h
events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-libsst.o: $(LISP_H) libsst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-line-number.o: $(LISP_H) buffer.h bufslots.h line-number.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h symeval.h symsinit.h
-linuxplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h nativesound.h
symeval.h symsinit.h sysfile.h syssignal.h
-lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h file-coding.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h symeval.h symsinit.h sysfile.h
sysfloat.h
-lstream.o: $(LISP_H) buffer.h bufslots.h insdel.h lisp-disunion.h lisp-union.h lrecord.h
lstream.h mule-charset.h symeval.h symsinit.h sysfile.h
-macros.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h
frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h
macros.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h
toolbar.h window.h winslots.h
+gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h events-mod.h
events.h general-slots.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h process.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h
systty.h
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h general-slots.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+gutter.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h
frameslots.h general-slots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h window.h winslots.h
+hash.o: $(LISP_H) general-slots.h hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+hftctl.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+hpplay.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h nativesound.h
symeval.h symsinit.h
+imgproc.o: $(LISP_H) general-slots.h imgproc.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+indent.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h faces.h
frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h chartab.h
conslots.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h
file-coding.h frame.h frameslots.h general-slots.h glyphs-x.h glyphs.h gui-x.h gui.h
keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h
opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h syntax.h systime.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h frame.h
frameslots.h general-slots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h window.h winslots.h
+intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h general-slots.h
lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h elhash.h
events-mod.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h
keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+libsst.o: $(LISP_H) general-slots.h libsst.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+line-number.o: $(LISP_H) buffer.h bufslots.h general-slots.h line-number.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+linuxplay.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h miscplay.h
nativesound.h symeval.h symsinit.h sysfile.h syssignal.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h file-coding.h general-slots.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h symeval.h
symsinit.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h general-slots.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h
frame.h frameslots.h general-slots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h
lrecord.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
systime.h toolbar.h window.h winslots.h
malloc.o: config.h getpagesize.h
-marker.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h
-md5.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h
lstream.h mule-charset.h symeval.h symsinit.h
-menubar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h menubar.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
-minibuf.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-stream.h console.h
device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h systime.h toolbar.h window.h winslots.h
-miscplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h
symsinit.h sysfile.h syssignal.h
-nas.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h
syssignal.h
-nt.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nt.h ntheap.h symeval.h symsinit.h
sysfile.h sysproc.h syssignal.h systime.h
-ntheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h ntheap.h symeval.h symsinit.h
-ntplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.h symeval.h
symsinit.h sysfile.h
-ntproc.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nt.h ntheap.h process.h symeval.h
symsinit.h sysfile.h sysproc.h syssignal.h systime.h syswait.h
-objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-tty.h objects.h specifier.h
symeval.h symsinit.h syssignal.h systty.h
-objects.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h faces.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
+marker.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h symeval.h symsinit.h
+md5.o: $(LISP_H) buffer.h bufslots.h file-coding.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h
+menubar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h general-slots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h
lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-stream.h console.h
device.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+miscplay.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h miscplay.h
symeval.h symsinit.h sysfile.h syssignal.h
+nas.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h sysdep.h syssignal.h
+nt.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h ndir.h nt.h
ntheap.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h
syswindows.h
+ntheap.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h ntheap.h
symeval.h symsinit.h syswindows.h
+ntplay.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h nativesound.h
nt.h symeval.h symsinit.h sysfile.h syswindows.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h
general-slots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nt.h ntheap.h
process.h symeval.h symsinit.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h
syswait.h syswindows.h
+objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h general-slots.h
insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-tty.h objects.h
specifier.h symeval.h symsinit.h syssignal.h systty.h
+objects.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h faces.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h window.h winslots.h
offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
-opaque.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h opaque.h symeval.h symsinit.h
-postgresql.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h postgresql.h symeval.h symsinit.h sysdep.h
-print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-msw.h
console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h
gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
-process-nt.o: $(LISP_H) conslots.h console-msw.h console.h hash.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h process.h procimpl.h symeval.h symsinit.h
sysdep.h
-process-unix.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h
file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h
systty.h syswait.h toolbar.h window.h winslots.h
-process.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h
systty.h syswait.h toolbar.h window.h winslots.h
-profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h lisp-disunion.h lisp-union.h
lrecord.h symeval.h symsinit.h syssignal.h systime.h
-ralloc.o: $(LISP_H) getpagesize.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
-rangetab.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h rangetab.h symeval.h
symsinit.h
+opaque.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h opaque.h
symeval.h symsinit.h
+postgresql.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h postgresql.h symeval.h symsinit.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-msw.h
console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h
general-slots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syscommctrl.h
sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+process-nt.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h
general-slots.h hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h
nt.h process.h procimpl.h symeval.h symsinit.h syscommctrl.h sysdep.h syswindows.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h
file-coding.h frame.h frameslots.h general-slots.h glyphs.h gui.h hash.h lisp-disunion.h
lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h
systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
events.h file-coding.h frame.h frameslots.h general-slots.h glyphs.h gui.h hash.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h
procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h
syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h general-slots.h hash.h
lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h syssignal.h systime.h
+ralloc.o: $(LISP_H) general-slots.h getpagesize.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+rangetab.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h rangetab.h
symeval.h symsinit.h
realpath.o: config.h
-redisplay-output.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-redisplay-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h
device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
window.h winslots.h
-redisplay.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-tty.h console.h
debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h
gui.h gutter.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h menubar.h
mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h syssignal.h systty.h toolbar.h window.h winslots.h
-regex.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h regex.h symeval.h symsinit.h syntax.h
-scrollbar.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
-search.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h opaque.h regex.h symeval.h symsinit.h syntax.h
-select.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h
toolbar.h
-sgiplay.o: $(LISP_H) libst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-sheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h sheap-adjust.h symeval.h
symsinit.h
-signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h
gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h sysdep.h syssignal.h systime.h toolbar.h
-sound.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nativesound.h redisplay.h symeval.h
symsinit.h sysdep.h xintrinsic.h
-specifier.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h
frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
window.h winslots.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h
device.h events.h faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-tty.h objects.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h
systty.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-tty.h console.h
debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h
general-slots.h glyphs.h gui.h gutter.h insdel.h line-number.h lisp-disunion.h
lisp-union.h lrecord.h menubar.h mule-charset.h objects.h process.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h regex.h symeval.h symsinit.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h
frame.h frameslots.h general-slots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h
toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h insdel.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h regex.h symeval.h
symsinit.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h
+sgiplay.o: $(LISP_H) general-slots.h libst.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+sheap.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h sheap-adjust.h
symeval.h symsinit.h
+signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h
general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h
scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h
toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h
general-slots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nativesound.h
redisplay.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h
frame.h frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h
strcat.o: config.h
strcmp.o: config.h
strcpy.o: config.h
-strftime.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+strftime.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
sunOS-fix.o: config.h
-sunplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.h symeval.h
symsinit.h sysdep.h syssignal.h
-sunpro.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-symbols.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h elhash.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-syntax.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h syntax.h
-sysdep.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h ndir.h ntheap.h process.h redisplay.h scrollbar.h
specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syssignal.h systime.h
systty.h syswait.h toolbar.h window.h winslots.h
+sunplay.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h nativesound.h
symeval.h symsinit.h sysdep.h syssignal.h
+sunpro.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+symbols.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h elhash.h general-slots.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+syntax.o: $(LISP_H) buffer.h bufslots.h chartab.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h
console.h device.h events.h frame.h frameslots.h general-slots.h glyphs.h gui.h
lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h ntheap.h process.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h
sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h
winslots.h
sysdll.o: config.h sysdll.h
-termcap.o: $(LISP_H) conslots.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
+termcap.o: $(LISP_H) conslots.h console.h device.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h symeval.h symsinit.h
terminfo.o: config.h
-tests.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h
mule-charset.h opaque.h symeval.h symsinit.h
-toolbar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h
redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-tooltalk.o: $(LISP_H) buffer.h bufslots.h elhash.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h process.h symeval.h symsinit.h tooltalk.h
+tests.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h lstream.h mule-charset.h opaque.h symeval.h symsinit.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h
frameslots.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h
winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h elhash.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h process.h symeval.h symsinit.h tooltalk.h
tparam.o: config.h
-undo.o: $(LISP_H) buffer.h bufslots.h extents.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h
-unexaix.o: $(LISP_H) getpagesize.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+undo.o: $(LISP_H) buffer.h bufslots.h extents.h general-slots.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+unexaix.o: $(LISP_H) general-slots.h getpagesize.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
unexalpha.o: config.h
unexapollo.o: config.h
unexconvex.o: config.h getpagesize.h
unexcw.o: config.h sysfile.h
-unexec.o: $(LISP_H) getpagesize.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
+unexec.o: $(LISP_H) general-slots.h getpagesize.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h
unexelf.o: config.h
-unexelfsgi.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+unexelfsgi.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h symeval.h
symsinit.h
unexenix.o: config.h
unexfreebsd.o: config.h
unexhp9k3.o: config.h sysdep.h
unexhp9k800.o: config.h
unexmips.o: config.h getpagesize.h
-unexnt.o: config.h ntheap.h
+unexnt.o: config.h nt.h ntheap.h syswindows.h
unexsunos4.o: config.h
-vm-limit.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h mem-limits.h symeval.h
symsinit.h
-widget.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h
mule-charset.h symeval.h symsinit.h
-window.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h
faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h
symsinit.h toolbar.h window.h winslots.h
-xgccache.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
xgccache.h
+vm-limit.o: $(LISP_H) general-slots.h lisp-disunion.h lisp-union.h lrecord.h mem-limits.h
symeval.h symsinit.h
+widget.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h symeval.h symsinit.h
+win32.o: $(LISP_H) buffer.h bufslots.h general-slots.h lisp-disunion.h lisp-union.h
lrecord.h mule-charset.h nt.h symeval.h symsinit.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h
faces.h frame.h frameslots.h general-slots.h glyphs.h gui.h gutter.h lisp-disunion.h
lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h
symeval.h symsinit.h toolbar.h window.h winslots.h
+xgccache.o: $(LISP_H) general-slots.h hash.h lisp-disunion.h lisp-union.h lrecord.h
symeval.h symsinit.h xgccache.h
xmu.o: config.h
Index: src/device-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/device-msw.c,v
retrieving revision 1.20.2.21
diff -u -r1.20.2.21 device-msw.c
--- device-msw.c 2000/07/08 09:14:26 1.20.2.21
+++ device-msw.c 2000/07/18 10:36:33
@@ -146,9 +146,16 @@
wc.lpszMenuName = NULL;
wc.lpszClassName = XEMACS_CLASS;
- wc.hIconSm = (HICON) LoadImage (GetModuleHandle (NULL), XEMACS_CLASS,
- IMAGE_ICON, 16, 16, 0);
- RegisterClassEx (&wc);
+ if (xLoadImageA) /* not in NT 3.5 */
+ wc.hIconSm = (HICON) xLoadImageA (GetModuleHandle (NULL), XEMACS_CLASS,
+ IMAGE_ICON, 16, 16, 0);
+ else
+ wc.hIconSm = 0;
+
+ if (xRegisterClassExA) /* not in NT 3.5 */
+ xRegisterClassExA (&wc);
+ else
+ RegisterClassA ((WNDCLASS *) &wc.style);
#ifdef HAVE_WIDGETS
xzero (wc);
@@ -157,7 +164,10 @@
wc.lpfnWndProc = (WNDPROC) mswindows_control_wnd_proc;
wc.lpszClassName = XEMACS_CONTROL_CLASS;
wc.hInstance = NULL;
- RegisterClassEx (&wc);
+ if (xRegisterClassExA) /* not in NT 3.5 */
+ xRegisterClassExA (&wc);
+ else
+ RegisterClassA ((WNDCLASS *) &wc.style);
#endif
#if defined (HAVE_TOOLBARS) || defined (HAVE_WIDGETS)
@@ -640,12 +650,8 @@
return XDEVMODE (dev);
else
{
- struct device* d = decode_device (dev);
- Lisp_Object device;
- XSETDEVICE (device, d);
- CHECK_MSPRINTER_DEVICE (device);
- ensure_not_printing (d);
- return XDEVMODE (DEVICE_MSPRINTER_DEVMODE (d));
+ ensure_not_printing (XDEVICE (dev));
+ return XDEVMODE (DEVICE_MSPRINTER_DEVMODE (XDEVICE (dev)));
}
}
@@ -707,71 +713,68 @@
}
}
-DEFUN ("msprinter-print-setup-dialog", Fmsprinter_print_setup_dialog, 1, 1, 0,
/*
-Invoke Windows standard Printer Setup dialog.
-This dialog is usually invoked when the user selects the Printer Setup
-command.
-
-DEVICE must be either an 'msprinter device, or a printer settings
-object. The function brings up the Printer Setup dialog, where the user
-can select a different printer and/or change printer options.
-Connection name can change as a result of selecting a different printer
-device. If a printer is specified, then changes are stored into the
-settings object currently selected into that printer. If a settings
-object is supplied, then changes are recorded into it, and, it it is
-selected into a printer, then changes are propagated to that printer
-too.
-
-Return value is nil if the user has canceled the dialog. Otherwise, it
-is a new plist, with the following properties:
- name Printer device name, even if unchanged by the user.
-
-The printer device is destroyed and an error is signaled if new printer
-is selected by the user, but cannot be initialized.
-
-See also `msprinter-print-dialog' and `msprinter-page-setup-dialog'.
-*/
- (device))
+Lisp_Object
+mswindows_handle_print_setup_dialog_box (struct frame *f, Lisp_Object keys)
{
- return print_dialog_worker (device, 0);
-}
+ Lisp_Object device = Qunbound, settings = Qunbound;
-DEFUN ("msprinter-print-dialog", Fmsprinter_print_dialog, 1, 1, 0, /*
-Invoke Windows standard Print dialog.
-This dialog is usually invoked when the user selects the Print command.
-After the user presses OK, the program should start actual printout.
-
-DEVICE must be either an 'msprinter device, or a printer settings
-object. The function brings up the Print dialog, where the user can
-select a different printer and/or change printer options. Connection
-name can change as a result of selecting a different printer device. If
-a printer is specified, then changes are stored into the settings object
-currently selected into that printer. If a settings object is supplied,
-then changes are recorded into it, and, it it is selected into a
-printer, then changes are propagated to that printer
-too.
-
-Return value is nil if the user has canceled the dialog. Otherwise, it
-is a new plist, with the following properties:
- name Printer device name, even if unchanged by the user.
- from-page First page to print, 1-based. If not specified by the user,
- then this value is not included in the plist.
- to-page Last page to print, inclusive, 1-based. If not specified by
- the user, then this value is not included in the plist.
- copies Number of copies to print. Always returned.
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
+ {
+ if (EQ (key, Q_device))
+ {
+ device = wrap_device (decode_device (value));
+ CHECK_MSPRINTER_DEVICE (device);
+ }
+ else if (EQ (key, Q_printer_settings))
+ {
+ CHECK_DEVMODE (value);
+ settings = value;
+ }
+ else
+ syntax_error ("Unrecognized print-dialog keyword", key);
+ }
+ }
-The DEVICE is destroyed and an error is signaled in case of
-initialization problem with the new printer.
+ if ((UNBOUNDP (device) && UNBOUNDP (settings)) ||
+ (!UNBOUNDP (device) && !UNBOUNDP (settings)))
+ syntax_error ("Exactly one of :device and :printer-settings must be
given",
+ keys);
-See also `msprinter-setup-print-dialog' and
-`msprinter-page-setup-dialog'.
-*/
- (device))
-{
- return print_dialog_worker (device, 1);
+ return print_dialog_worker (!UNBOUNDP (device) ? device : settings, 0);
}
+Lisp_Object
+mswindows_handle_print_dialog_box (struct frame *f, Lisp_Object keys)
+{
+ Lisp_Object device = Qunbound, settings = Qunbound;
+
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
+ {
+ if (EQ (key, Q_device))
+ {
+ device = wrap_device (decode_device (value));
+ CHECK_MSPRINTER_DEVICE (device);
+ }
+ else if (EQ (key, Q_printer_settings))
+ {
+ CHECK_DEVMODE (value);
+ settings = value;
+ }
+ else
+ syntax_error ("Unrecognized print-dialog keyword", key);
+ }
+ }
+
+ if ((UNBOUNDP (device) && UNBOUNDP (settings)) ||
+ (!UNBOUNDP (device) && !UNBOUNDP (settings)))
+ syntax_error ("Exactly one of :device and :printer-settings must be
given",
+ keys);
+ return print_dialog_worker (!UNBOUNDP (device) ? device : settings, 1);
+}
+
static int
plist_get_margin (Lisp_Object plist, Lisp_Object prop)
{
@@ -789,70 +792,78 @@
return Fcons (prop, Fcons (val, plist));
}
-DEFUN ("msprinter-page-setup-dialog", Fmsprinter_page_setup_dialog, 1, 2, 0,
/*
-Invoke Windows standard Page Setup dialog.
-This dialog is usually invoked in response to Page Setup command, and
-used to chose such parameters as page orientation, print margins etc.
-Note that this dialog contains the "Printer" button, which invokes
-Printer Setup dialog (see `msprinter-print-setup-dialog') so that the
-user can update the printer options or even select a different printer
-as well.
-
-DEVICE must be either an 'msprinter device, or a printer settings
-object. The function brings up the Page Setup dialog, where the user
-can select a different printer and/or change printer options.
-Connection name can change as a result of selecting a different printer
-device. If a printer is specified, then changes are stored into the
-settings object currently selected into that printer. If a settings
-object is supplied, then changes are recorded into it, and, it it is
-selected into a printer, then changes are propagated to that printer
-too.
-
-PLIST is a plist of job properties;
-see `default-msprinter-frame-plist' for the complete list. The plist
-is used to initialize the dialog.
+Lisp_Object
+mswindows_handle_page_setup_dialog_box (struct frame *f, Lisp_Object keys)
+{
+ Lisp_Object device = Qunbound, settings = Qunbound;
+ Lisp_Object plist = Qnil;
-Return value is nil if the user has canceled the dialog. Otherwise,
-it is a new plist, containing the new list of properties.
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
+ {
+ if (EQ (key, Q_device))
+ {
+ device = wrap_device (decode_device (value));
+ CHECK_MSPRINTER_DEVICE (device);
+ }
+ else if (EQ (key, Q_printer_settings))
+ {
+ CHECK_DEVMODE (value);
+ settings = value;
+ }
+ else if (EQ (key, Q_properties))
+ {
+ CHECK_LIST (value);
+ plist = value;
+ }
+ else
+ syntax_error ("Unrecognized page-setup dialog keyword", key);
+ }
+ }
-The DEVICE is destroyed and an error is signaled in case of
-initialization problem with the new printer.
+ if ((UNBOUNDP (device) && UNBOUNDP (settings)) ||
+ (!UNBOUNDP (device) && !UNBOUNDP (settings)))
+ syntax_error ("Exactly one of :device and :printer-settings must be
given",
+ keys);
-See also `msprinter-print-setup-dialog' and `msprinter-print-dialog'.
-*/
- (device, plist))
-{
- Lisp_Devmode *ldm = decode_devmode (device);
- PAGESETUPDLG pd;
+ if (UNBOUNDP (device))
+ device = settings;
- memset (&pd, 0, sizeof (pd));
- pd.lStructSize = sizeof (pd);
- pd.hwndOwner = mswindows_get_selected_frame_hwnd ();
- pd.Flags = PSD_MARGINS;
- pd.rtMargin.left = plist_get_margin (plist, Qleft_margin);
- pd.rtMargin.top = plist_get_margin (plist, Qtop_margin);
- pd.rtMargin.right = plist_get_margin (plist, Qright_margin);
- pd.rtMargin.bottom = plist_get_margin (plist, Qbottom_margin);
- pd.hDevMode = devmode_to_hglobal (ldm);
+ {
+ Lisp_Devmode *ldm = decode_devmode (device);
+ PAGESETUPDLG pd;
- if (!PageSetupDlg (&pd))
- {
- global_free_2_maybe (pd.hDevNames, pd.hDevMode);
- return Qnil;
- }
+ memset (&pd, 0, sizeof (pd));
+ pd.lStructSize = sizeof (pd);
+ pd.hwndOwner = mswindows_get_selected_frame_hwnd ();
+ pd.Flags = PSD_MARGINS;
+ pd.rtMargin.left = plist_get_margin (plist, Qleft_margin);
+ pd.rtMargin.top = plist_get_margin (plist, Qtop_margin);
+ pd.rtMargin.right = plist_get_margin (plist, Qright_margin);
+ pd.rtMargin.bottom = plist_get_margin (plist, Qbottom_margin);
+ pd.hDevMode = devmode_to_hglobal (ldm);
- if (pd.hDevMode)
- handle_devmode_changes (ldm, pd.hDevNames, pd.hDevMode);
+ if (!PageSetupDlg (&pd))
+ {
+ global_free_2_maybe (pd.hDevNames, pd.hDevMode);
+ return Qnil;
+ }
- /* Finally, build the resulting plist */
- {
- Lisp_Object result = Qnil;
- int mm_p = pd.Flags & PSD_INHUNDREDTHSOFMILLIMETERS;
- result = plist_set_margin (result, Qbottom_margin, pd.rtMargin.bottom, mm_p);
- result = plist_set_margin (result, Qright_margin, pd.rtMargin.right, mm_p);
- result = plist_set_margin (result, Qtop_margin, pd.rtMargin.top, mm_p);
- result = plist_set_margin (result, Qleft_margin, pd.rtMargin.left, mm_p);
- return result;
+ if (pd.hDevMode)
+ handle_devmode_changes (ldm, pd.hDevNames, pd.hDevMode);
+
+ /* Finally, build the resulting plist */
+ {
+ Lisp_Object result = Qnil;
+ int mm_p = pd.Flags & PSD_INHUNDREDTHSOFMILLIMETERS;
+ result = plist_set_margin (result, Qbottom_margin, pd.rtMargin.bottom,
+ mm_p);
+ result = plist_set_margin (result, Qright_margin, pd.rtMargin.right,
+ mm_p);
+ result = plist_set_margin (result, Qtop_margin, pd.rtMargin.top, mm_p);
+ result = plist_set_margin (result, Qleft_margin, pd.rtMargin.left, mm_p);
+ return result;
+ }
}
}
@@ -1158,9 +1169,6 @@
{
INIT_LRECORD_IMPLEMENTATION (devmode);
- DEFSUBR (Fmsprinter_print_setup_dialog);
- DEFSUBR (Fmsprinter_print_dialog);
- DEFSUBR (Fmsprinter_page_setup_dialog);
DEFSUBR (Fmsprinter_get_settings);
DEFSUBR (Fmsprinter_select_settings);
DEFSUBR (Fmsprinter_apply_settings);
Index: src/device-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/device-x.c,v
retrieving revision 1.33.2.22
diff -u -r1.33.2.22 device-x.c
--- device-x.c 2000/06/12 04:18:08 1.33.2.22
+++ device-x.c 2000/07/18 10:36:34
@@ -21,6 +21,8 @@
/* Synched up with: Not in FSF. */
+/* 7-8-00 !!#### This file needs definite Mule review. */
+
/* Original authors: Jamie Zawinski and the FSF */
/* Rewritten by Ben Wing and Chuck Thompson. */
@@ -246,11 +248,11 @@
* Finally, if all else fails, return `xemacs', as it is more
* appropriate (X11R5 returns `main').
*/
-static char *
-compute_x_app_name (int argc, char **argv)
+static Extbyte *
+compute_x_app_name (int argc, Extbyte **argv)
{
int i;
- char *ptr;
+ Extbyte *ptr;
for (i = 1; i < argc - 1; i++)
if (!strncmp(argv[i], "-name", max (2, strlen (argv[1]))))
@@ -459,7 +461,7 @@
Display *dpy;
Widget app_shell;
int argc;
- char **argv;
+ Extbyte **argv;
const char *app_class;
const char *app_name;
const char *disp_name;
@@ -549,9 +551,7 @@
make_argc_argv (Vx_initial_argv_list, &argc, &argv);
- TO_EXTERNAL_FORMAT (LISP_STRING, display,
- C_STRING_ALLOCA, disp_name,
- Qctext);
+ LISP_TO_EXTERNAL (display, disp_name, Qctext);
/*
* Break apart the old XtOpenDisplay call into XOpenDisplay and
@@ -573,9 +573,7 @@
if (STRINGP (Vx_emacs_application_class) &&
XSTRING_LENGTH (Vx_emacs_application_class) > 0)
- TO_EXTERNAL_FORMAT (LISP_STRING, Vx_emacs_application_class,
- C_STRING_ALLOCA, app_class,
- Qctext);
+ LISP_TO_EXTERNAL (Vx_emacs_application_class, app_class, Qctext);
else
{
app_class = (NILP (Vx_emacs_application_class) &&
@@ -595,7 +593,7 @@
Yuck. */
XtDisplayInitialize (Xt_app_con, dpy, compute_x_app_name (argc, argv),
app_class, emacs_options,
- XtNumber (emacs_options), &argc, argv);
+ XtNumber (emacs_options), &argc, (char **) argv);
speed_up_interrupts ();
screen = DefaultScreen (dpy);
@@ -617,9 +615,7 @@
if (STRINGP (Vx_app_defaults_directory) &&
XSTRING_LENGTH (Vx_app_defaults_directory) > 0)
{
- TO_EXTERNAL_FORMAT (LISP_STRING, Vx_app_defaults_directory,
- C_STRING_ALLOCA, data_dir,
- Qfile_name);
+ LISP_TO_EXTERNAL (Vx_app_defaults_directory, data_dir, Qfile_name);
path = (char *)alloca (strlen (data_dir) + strlen (locale) + 7);
sprintf (path, "%s%s/Emacs", data_dir, locale);
if (!access (path, R_OK))
@@ -627,9 +623,7 @@
}
else if (STRINGP (Vdata_directory) && XSTRING_LENGTH (Vdata_directory) >
0)
{
- TO_EXTERNAL_FORMAT (LISP_STRING, Vdata_directory,
- C_STRING_ALLOCA, data_dir,
- Qfile_name);
+ LISP_TO_EXTERNAL (Vdata_directory, data_dir, Qfile_name);
path = (char *)alloca (strlen (data_dir) + 13 + strlen (locale) + 7);
sprintf (path, "%sapp-defaults/%s/Emacs", data_dir, locale);
if (!access (path, R_OK))
@@ -785,9 +779,10 @@
#ifdef HAVE_WMCOMMAND
{
int new_argc;
- char **new_argv;
+ Extbyte **new_argv;
make_argc_argv (Vcommand_line_args, &new_argc, &new_argv);
- XSetCommand (XtDisplay (app_shell), XtWindow (app_shell), new_argv, new_argc);
+ XSetCommand (XtDisplay (app_shell), XtWindow (app_shell),
+ (char **) new_argv, new_argc);
free_argc_argv (new_argv);
}
#endif /* HAVE_WMCOMMAND */
@@ -1687,9 +1682,7 @@
const char *keysym_ext;
CHECK_STRING (keysym);
- TO_EXTERNAL_FORMAT (LISP_STRING, keysym,
- C_STRING_ALLOCA, keysym_ext,
- Qctext);
+ LISP_TO_EXTERNAL (keysym, keysym_ext, Qctext);
return XStringToKeysym (keysym_ext) ? Qt : Qnil;
}
@@ -1935,9 +1928,7 @@
EXTERNAL_LIST_LOOP (path_entry, font_path)
{
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (path_entry),
- C_STRING_ALLOCA, directories[i++],
- Qfile_name);
+ LISP_TO_EXTERNAL (XCAR (path_entry), directories[i++], Qfile_name);
}
expect_x_error (dpy);
Index: src/device.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/device.h,v
retrieving revision 1.8.2.11
diff -u -r1.8.2.11 device.h
--- device.h 2000/07/07 00:15:26 1.8.2.11
+++ device.h 2000/07/18 10:36:34
@@ -220,6 +220,7 @@
DECLARE_LRECORD (device, struct device);
#define XDEVICE(x) XRECORD (x, device, struct device)
#define XSETDEVICE(x, p) XSETRECORD (x, p, device)
+#define wrap_device(p) wrap_object (device, p)
#define DEVICEP(x) RECORDP (x, device)
#define CHECK_DEVICE(x) CHECK_RECORD (x, device)
#define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device)
Index: src/dialog-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/dialog-msw.c,v
retrieving revision 1.5.2.6
diff -u -r1.5.2.6 dialog-msw.c
--- dialog-msw.c 2000/06/13 01:40:03 1.5.2.6
+++ dialog-msw.c 2000/07/18 10:36:35
@@ -1,5 +1,6 @@
/* Implements elisp-programmable dialog boxes -- MS Windows interface.
Copyright (C) 1998 Kirill M. Katsnelson <kkm(a)kis.ru>
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -33,11 +34,33 @@
#include "gui.h"
#include "opaque.h"
+#include <cderr.h>
+#include <commdlg.h>
+
+Lisp_Object Qdialog_box_error;
+
+static Lisp_Object Q_initial_directory;
+static Lisp_Object Q_initial_filename;
+static Lisp_Object Q_filter_list;
+static Lisp_Object Q_title;
+static Lisp_Object Q_allow_multi_select;
+static Lisp_Object Q_create_prompt_on_nonexistent;
+static Lisp_Object Q_overwrite_prompt;
+static Lisp_Object Q_file_must_exist;
+static Lisp_Object Q_no_network_button;
+static Lisp_Object Q_no_read_only_return;
+
/* List containing all dialog data structures of currently popped up
- dialogs. Each item is a cons of frame object and a vector of
- callbacks for buttons in the dialog, in order */
+ dialogs. Each item is (frame object . (vector of callbacks for
+ buttons in the dialog, in order . opaque_ptr holding hwnd of
+ dialog)) */
static Lisp_Object Vdialog_data_list;
+/* List of popup frames wanting keyboard traversal handled */
+static Lisp_Object Vpopup_frame_list;
+
+Lisp_Object Vdefault_file_dialog_filter_alist;
+
/* DLUs per character metrics */
#define X_DLU_PER_CHAR 4
#define Y_DLU_PER_CHAR 8
@@ -110,6 +133,40 @@
#define ID_ITEM_BIAS 32
+void
+mswindows_register_popup_frame (Lisp_Object frame)
+{
+ Vpopup_frame_list = Fcons (frame, Vpopup_frame_list);
+}
+
+void
+mswindows_unregister_popup_frame (Lisp_Object frame)
+{
+ Vpopup_frame_list = delq_no_quit (frame, Vpopup_frame_list);
+}
+
+/* Dispatch message to any dialog boxes. Return non-zero if dispatched. */
+int
+mswindows_is_dialog_msg (MSG *msg)
+{
+ LIST_LOOP_2 (data, Vdialog_data_list)
+ {
+ HWND dialog_hwnd = (HWND) get_opaque_ptr (XCDR (XCDR (data)));
+ if (IsDialogMessage (dialog_hwnd, msg))
+ return 1;
+ }
+
+ {
+ LIST_LOOP_2 (popup, Vpopup_frame_list)
+ {
+ HWND hwnd = FRAME_MSWINDOWS_HANDLE (XFRAME (popup));
+ if (IsDialogMessage (hwnd, msg))
+ return 1;
+ }
+ }
+ return 0;
+}
+
/* Dialog procedure */
static BOOL CALLBACK
dialog_proc (HWND hwnd, UINT msg, WPARAM w_param, LPARAM l_param)
@@ -132,13 +189,21 @@
{
Lisp_Object fn, arg, data;
VOID_TO_LISP (data, GetWindowLong (hwnd, DWL_USER));
-
- assert (w_param >= ID_ITEM_BIAS
- && w_param < XVECTOR_LENGTH (XCDR (data)) + ID_ITEM_BIAS);
- get_gui_callback (XVECTOR_DATA (XCDR (data)) [w_param - ID_ITEM_BIAS],
- &fn, &arg);
- mswindows_enqueue_misc_user_event (XCAR (data), fn, arg);
+ if (w_param != IDCANCEL) /* user pressed escape */
+ {
+ assert (w_param >= ID_ITEM_BIAS
+ && w_param
+ < XVECTOR_LENGTH (XCAR (XCDR (data))) + ID_ITEM_BIAS);
+
+ get_gui_callback (XVECTOR_DATA (XCAR (XCDR (data)))
+ [w_param - ID_ITEM_BIAS],
+ &fn, &arg);
+ mswindows_enqueue_misc_user_event (XCAR (data), fn, arg);
+ }
+ else
+ mswindows_enqueue_misc_user_event (XCAR (data), Qrun_hooks,
+ Qmenu_no_selection_hook);
DestroyWindow (hwnd);
}
@@ -211,13 +276,130 @@
Dynarr_add_many (template, &zeroes, slippage); \
}
-static void
-mswindows_popup_dialog_box (struct frame* f, Lisp_Object desc)
+static struct
+{
+ int errmess;
+ char *errname;
+} common_dialog_errors[] =
+{
+ { CDERR_DIALOGFAILURE, "CDERR_DIALOGFAILURE" },
+ { CDERR_FINDRESFAILURE, "CDERR_FINDRESFAILURE" },
+ { CDERR_INITIALIZATION, "CDERR_INITIALIZATION" },
+ { CDERR_LOADRESFAILURE, "CDERR_LOADRESFAILURE" },
+ { CDERR_LOADSTRFAILURE, "CDERR_LOADSTRFAILURE" },
+ { CDERR_LOCKRESFAILURE, "CDERR_LOCKRESFAILURE" },
+ { CDERR_MEMALLOCFAILURE, "CDERR_MEMALLOCFAILURE" },
+ { CDERR_MEMLOCKFAILURE, "CDERR_MEMLOCKFAILURE" },
+ { CDERR_NOHINSTANCE, "CDERR_NOHINSTANCE" },
+ { CDERR_NOHOOK, "CDERR_NOHOOK" },
+ { CDERR_NOTEMPLATE, "CDERR_NOTEMPLATE" },
+ { CDERR_REGISTERMSGFAIL, "CDERR_REGISTERMSGFAIL" },
+ { CDERR_STRUCTSIZE, "CDERR_STRUCTSIZE" },
+ { PDERR_CREATEICFAILURE, "PDERR_CREATEICFAILURE" },
+ { PDERR_DEFAULTDIFFERENT, "PDERR_DEFAULTDIFFERENT" },
+ { PDERR_DNDMMISMATCH, "PDERR_DNDMMISMATCH" },
+ { PDERR_GETDEVMODEFAIL, "PDERR_GETDEVMODEFAIL" },
+ { PDERR_INITFAILURE, "PDERR_INITFAILURE" },
+ { PDERR_LOADDRVFAILURE, "PDERR_LOADDRVFAILURE" },
+ { PDERR_NODEFAULTPRN, "PDERR_NODEFAULTPRN" },
+ { PDERR_NODEVICES, "PDERR_NODEVICES" },
+ { PDERR_PARSEFAILURE, "PDERR_PARSEFAILURE" },
+ { PDERR_PRINTERNOTFOUND, "PDERR_PRINTERNOTFOUND" },
+ { PDERR_RETDEFFAILURE, "PDERR_RETDEFFAILURE" },
+ { PDERR_SETUPFAILURE, "PDERR_SETUPFAILURE" },
+ { CFERR_MAXLESSTHANMIN, "CFERR_MAXLESSTHANMIN" },
+ { CFERR_NOFONTS, "CFERR_NOFONTS" },
+ { FNERR_BUFFERTOOSMALL, "FNERR_BUFFERTOOSMALL" },
+ { FNERR_INVALIDFILENAME, "FNERR_INVALIDFILENAME" },
+ { FNERR_SUBCLASSFAILURE, "FNERR_SUBCLASSFAILURE" },
+ { FRERR_BUFFERLENGTHZERO, "FRERR_BUFFERLENGTHZERO" },
+};
+
+static Lisp_Object
+handle_file_dialog_box (struct frame *f, Lisp_Object keys)
+{
+ OPENFILENAME ofn;
+ char fnbuf[8000];
+
+ xzero (ofn);
+ ofn.lStructSize = sizeof (ofn);
+ ofn.hwndOwner = FRAME_MSWINDOWS_HANDLE (f);
+ ofn.lpstrFile = fnbuf;
+ ofn.nMaxFile = sizeof (fnbuf) / XETCHAR_SIZE;
+ xetcscpy (fnbuf, XETEXT (""));
+
+ LOCAL_FILE_FORMAT_TO_TSTR (Fexpand_file_name (build_string (""), Qnil),
+ ofn.lpstrInitialDir);
+
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
+ {
+ if (EQ (key, Q_initial_filename))
+ {
+ Extbyte *fnout;
+
+ CHECK_STRING (value);
+ LOCAL_FILE_FORMAT_TO_TSTR (value, fnout);
+ xetcscpy (fnbuf, fnout);
+ }
+ else if (EQ (key, Q_title))
+ {
+ CHECK_STRING (value);
+ LISP_TO_TSTR (value, ofn.lpstrTitle);
+ }
+ else if (EQ (key, Q_initial_directory))
+ LOCAL_FILE_FORMAT_TO_TSTR (Fexpand_file_name (value, Qnil),
+ ofn.lpstrInitialDir);
+ else if (EQ (key, Q_file_must_exist))
+ {
+ if (!NILP (value))
+ ofn.Flags |= OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
+ else
+ ofn.Flags &= ~(OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST);
+ }
+ else
+ syntax_error ("Unrecognized file-dialog keyword", key);
+ }
+ }
+
+ if (!GetOpenFileName (&ofn))
+ {
+ DWORD err = CommDlgExtendedError ();
+ if (!err)
+ {
+ while (1)
+ signal_quit ();
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; i < countof (common_dialog_errors); i++)
+ {
+ if (common_dialog_errors[i].errmess == err)
+ signal_type_error (Qdialog_box_error,
+ "Creating file-dialog-box",
+ build_string
+ (common_dialog_errors[i].errname));
+ }
+
+ signal_type_error (Qdialog_box_error,
+ "Unknown common dialog box error???",
+ make_int (err));
+ }
+ }
+
+ return tstr_to_local_file_format (ofn.lpstrFile);
+}
+
+static Lisp_Object
+handle_question_dialog_box (struct frame *f, Lisp_Object keys)
{
Lisp_Object_dynarr *dialog_items = Dynarr_new (Lisp_Object);
unsigned_char_dynarr *template = Dynarr_new (unsigned_char);
unsigned int button_row_width = 0;
unsigned int text_width, text_height;
+ Lisp_Object question = Qnil, title = Qnil;
int unbind_count = specpdl_depth ();
record_unwind_protect (free_dynarr_opaque_ptr,
@@ -226,31 +408,56 @@
make_opaque_ptr (template));
/* A big NO NEED to GCPRO gui_items stored in the array: they are just
- pointers into DESC list, which is GC-protected by the caller */
+ pointers into KEYS list, which is GC-protected by the caller */
- /* Parse each item in the dialog into gui_item structs, and stuff a dynarr
- of these. Calculate button row width in this loop too */
{
- Lisp_Object item_cons;
-
- EXTERNAL_LIST_LOOP (item_cons, XCDR (desc))
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
{
- if (!NILP (XCAR (item_cons)))
+ if (EQ (key, Q_question))
{
- Lisp_Object gitem = gui_parse_item_keywords (XCAR (item_cons));
- Dynarr_add (dialog_items, gitem);
- button_row_width += button_width (XGUI_ITEM (gitem)->name)
- + X_BUTTON_MARGIN;
+ CHECK_STRING (value);
+ question = value;
}
+ else if (EQ (key, Q_title))
+ {
+ CHECK_STRING (value);
+ title = value;
+ }
+ else if (EQ (key, Q_buttons))
+ {
+ Lisp_Object item_cons;
+
+ /* Parse each item in the dialog into gui_item structs,
+ and stuff a dynarr of these. Calculate button row width
+ in this loop too */
+ EXTERNAL_LIST_LOOP (item_cons, value)
+ {
+ if (!NILP (XCAR (item_cons)))
+ {
+ Lisp_Object gitem =
+ gui_parse_item_keywords (XCAR (item_cons));
+ Dynarr_add (dialog_items, gitem);
+ button_row_width += button_width (XGUI_ITEM (gitem)->name)
+ + X_BUTTON_MARGIN;
+ }
+ }
+
+ button_row_width -= X_BUTTON_MARGIN;
+ }
+ else
+ syntax_error ("Unrecognized question-dialog keyword", key);
}
- if (Dynarr_length (dialog_items) == 0)
- signal_simple_error ("Dialog descriptor provides no active items",
desc);
- button_row_width -= X_BUTTON_MARGIN;
}
+ if (Dynarr_length (dialog_items) == 0)
+ syntax_error ("Dialog descriptor provides no buttons", keys);
+
+ if (NILP (question))
+ syntax_error ("Dialog descriptor provides no question", keys);
+
/* Determine the final width layout */
{
- Bufbyte *p = XSTRING_DATA (XCAR (desc));
+ Bufbyte *p = XSTRING_DATA (question);
Charcount string_max = 0, this_length = 0;
while (1)
{
@@ -280,17 +487,17 @@
/* Now calculate the height for the text control */
{
- Bufbyte *p = XSTRING_DATA (XCAR (desc));
+ Bufbyte *p = XSTRING_DATA (question);
Charcount break_at = text_width / X_DLU_PER_CHAR;
Charcount char_pos = 0;
int num_lines = 1;
Emchar ch;
- while ((ch = charptr_emchar (p)) != (Emchar)'\0')
+ while ((ch = charptr_emchar (p)) != (Emchar) '\0')
{
INC_CHARPTR (p);
- char_pos += ch != (Emchar)'\n';
- if (ch == (Emchar)'\n' || char_pos == break_at)
+ char_pos += ch != (Emchar) '\n';
+ if (ch == (Emchar) '\n' || char_pos == break_at)
{
++num_lines;
char_pos = 0;
@@ -324,9 +531,12 @@
/* We want no menu and standard class */
Dynarr_add_many (template, &zeroes, 4);
- /* And the third is the dialog title. "XEmacs" as long as we do not supply
- one in descriptor. Note that the string must be in Unicode. */
- Dynarr_add_many (template, L"XEmacs", 14);
+ /* And the third is the dialog title. "XEmacs" unless one is supplied.
+ Note that the string must be in Unicode. */
+ if (NILP (title))
+ Dynarr_add_many (template, L"XEmacs", 14);
+ else
+ push_lisp_string_as_unicode (template, title);
/* We want standard dialog font */
Dynarr_add_many (template, L"\x08MS Shell Dlg", 28);
@@ -348,7 +558,7 @@
Dynarr_add_many (template, &static_class_id, sizeof (static_class_id));
/* Next thing to add is control text, as Unicode string */
- push_lisp_string_as_unicode (template, XCAR (desc));
+ push_lisp_string_as_unicode (template, question);
/* Specify 0 length creation data */
Dynarr_add_many (template, &zeroes, 2);
@@ -408,43 +618,99 @@
data structure for the new dialog, which will contain callbacks
and the frame for these callbacks. This structure has to be
GC-protected. The data structure itself is a cons of frame object
- and a vector of callbacks; for the protection reasons it is put
- into a statically protected list. */
+ and a cons of a vector of callbacks and an opaque ptr holding the
+ dialog's hwnd; for the protection reasons it is put into a
+ statically protected list. */
{
- Lisp_Object frame, vector, dialog_data;
+ Lisp_Object frame, vector, opaque_ptr, dialog_data;
+ HWND dialog_hwnd;
int i;
XSETFRAME (frame, f);
vector = make_vector (Dynarr_length (dialog_items), Qunbound);
- dialog_data = Fcons (frame, vector);
+ opaque_ptr = make_opaque_ptr (0);
+ dialog_data = Fcons (frame, Fcons (vector, opaque_ptr));
for (i = 0; i < Dynarr_length (dialog_items); i++)
XVECTOR_DATA (vector) [i] =
XGUI_ITEM (*Dynarr_atp (dialog_items, i))->callback;
/* Woof! Everything is ready. Pop pop pop in now! */
- if (!CreateDialogIndirectParam (NULL,
- (LPDLGTEMPLATE) Dynarr_atp (template, 0),
- FRAME_MSWINDOWS_HANDLE (f), dialog_proc,
- (LPARAM) LISP_TO_VOID (dialog_data)))
+ dialog_hwnd =
+ CreateDialogIndirectParam (NULL,
+ (LPDLGTEMPLATE) Dynarr_atp (template, 0),
+ FRAME_MSWINDOWS_HANDLE (f), dialog_proc,
+ (LPARAM) LISP_TO_VOID (dialog_data));
+ if (!dialog_hwnd)
/* Something went wrong creating the dialog */
- signal_simple_error ("System error creating dialog", desc);
+ signal_type_error (Qdialog_box_error, "Creating dialog", keys);
+ set_opaque_ptr (opaque_ptr, (void *) dialog_hwnd);
Vdialog_data_list = Fcons (dialog_data, Vdialog_data_list);
}
/* Cease protection and free dynarrays */
unbind_to (unbind_count, Qnil);
+ return Qnil;
+}
+
+static Lisp_Object
+mswindows_make_dialog_box_internal (struct frame* f, Lisp_Object type,
+ Lisp_Object keys)
+{
+ if (EQ (type, Qfile))
+ return handle_file_dialog_box (f, keys);
+ else if (EQ (type, Qquestion))
+ return handle_question_dialog_box (f, keys);
+ else if (EQ (type, Qprint))
+ return mswindows_handle_print_dialog_box (f, keys);
+ else if (EQ (type, Qpage_setup))
+ return mswindows_handle_page_setup_dialog_box (f, keys);
+ else if (EQ (type, Qprint_setup))
+ return mswindows_handle_print_setup_dialog_box (f, keys);
+ else
+ signal_type_error (Qunimplemented, "Dialog box type", type);
+ return Qnil;
}
void
console_type_create_dialog_mswindows (void)
+{
+ CONSOLE_HAS_METHOD (mswindows, make_dialog_box_internal);
+}
+
+void
+syms_of_dialog_mswindows (void)
{
- CONSOLE_HAS_METHOD (mswindows, popup_dialog_box);
+ DEFKEYWORD (Q_initial_directory);
+ DEFKEYWORD (Q_initial_filename);
+ DEFKEYWORD (Q_filter_list);
+ DEFKEYWORD (Q_title);
+ DEFKEYWORD (Q_allow_multi_select);
+ DEFKEYWORD (Q_create_prompt_on_nonexistent);
+ DEFKEYWORD (Q_overwrite_prompt);
+ DEFKEYWORD (Q_file_must_exist);
+ DEFKEYWORD (Q_no_network_button);
+ DEFKEYWORD (Q_no_read_only_return);
+
+ /* Errors */
+ DEFERROR_STANDARD (Qdialog_box_error, Qinvalid_operation);
}
void
vars_of_dialog_mswindows (void)
{
+ Vpopup_frame_list = Qnil;
+
Vdialog_data_list = Qnil;
staticpro (&Vdialog_data_list);
+
+ DEFVAR_LISP ("default-file-dialog-filter-alist",
+ &Vdefault_file_dialog_filter_alist /*
+*/ );
+ Vdefault_file_dialog_filter_alist =
+ list5 (Fcons (build_string ("Text Files"), build_string
("*.txt")),
+ Fcons (build_string ("C Files"), build_string ("*.c;*.h")),
+ Fcons (build_string ("Elisp Files"), build_string ("*.el")),
+ Fcons (build_string ("HTML Files"), build_string
("*.html;*.html")),
+ Fcons (build_string ("All Files"), build_string ("*.*")));
}
Index: src/dialog-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/dialog-x.c,v
retrieving revision 1.6.2.6
diff -u -r1.6.2.6 dialog-x.c
--- dialog-x.c 2000/04/28 15:17:17 1.6.2.6
+++ dialog-x.c 2000/07/18 10:36:35
@@ -1,6 +1,7 @@
/* Implements elisp-programmable dialog boxes -- X interface.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -21,6 +22,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized by Ben Wing, 7-8-00. */
+
#include <config.h>
#include "lisp.h"
@@ -40,7 +43,6 @@
static void
maybe_run_dbox_text_callback (LWLIB_ID id)
{
- /* !!#### This function has not been Mule-ized */
widget_value *wv;
int got_some;
wv = xmalloc_widget_value ();
@@ -49,7 +51,7 @@
if (got_some)
{
Lisp_Object text_field_callback;
- char *text_field_value = wv->value;
+ Extbyte *text_field_value = wv->value;
VOID_TO_LISP (text_field_callback, wv->call_data);
text_field_callback = XCAR (XCDR (text_field_callback));
if (text_field_value)
@@ -57,7 +59,8 @@
void *tmp =
LISP_TO_VOID (cons3 (Qnil,
list2 (text_field_callback,
- build_string (text_field_value)),
+ build_ext_string (text_field_value,
+ Qlwlib_encoding)),
Qnil));
popup_selection_callback (0, id, (XtPointer) tmp);
}
@@ -106,19 +109,14 @@
lw_set_keyboard_focus (FRAME_X_SHELL_WIDGET (f), FRAME_X_TEXT_WIDGET (f));
}
-static const char * const button_names [] = {
+static const Extbyte * const button_names [] = {
"button1", "button2", "button3", "button4",
"button5",
"button6", "button7", "button8", "button9",
"button10" };
-/* can't have static frame locals because of some broken compilers */
-static char tmp_dbox_name [255];
-
static widget_value *
-dbox_descriptor_to_widget_value (Lisp_Object desc)
+dbox_descriptor_to_widget_value (Lisp_Object keys)
{
- /* !!#### This function has not been Mule-ized */
/* This function can GC */
- char *name;
int lbuttons = 0, rbuttons = 0;
int partition_seen = 0;
int text_field_p = 0;
@@ -127,14 +125,34 @@
int n = 0;
int count = specpdl_depth ();
Lisp_Object wv_closure, gui_item;
+ Lisp_Object question = Qnil, title = Qnil, buttons = Qnil;
- CHECK_CONS (desc);
- CHECK_STRING (XCAR (desc));
- name = (char *) XSTRING_DATA (LISP_GETTEXT (XCAR (desc)));
- desc = XCDR (desc);
- if (!CONSP (desc))
- error ("dialog boxes must have some buttons");
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, keys)
+ {
+ if (EQ (key, Q_question))
+ {
+ CHECK_STRING (value);
+ question = value;
+ }
+ else if (EQ (key, Q_title))
+ {
+ CHECK_STRING (value);
+ title = value;
+ }
+ else if (EQ (key, Q_buttons))
+ {
+ CHECK_LIST (value);
+ buttons = value;
+ }
+ else
+ syntax_error ("Unrecognized question-dialog keyword", key);
+ }
+ }
+ if (NILP (question))
+ syntax_error ("Dialog descriptor provides no question", keys);
+
/* Inhibit GC during this conversion. The reasons for this are
the same as in menu_item_descriptor_to_widget_value(); see
the large comment above that function. */
@@ -151,62 +169,69 @@
wv_closure = make_opaque_ptr (kids);
record_unwind_protect (widget_value_unwind, wv_closure);
prev->name = xstrdup ("message");
- prev->value = xstrdup (name);
+ LISP_TO_EXTERNAL_MALLOC (question, prev->value, Qlwlib_encoding);
prev->enabled = 1;
-
- for (; !NILP (desc); desc = Fcdr (desc))
- {
- Lisp_Object button = XCAR (desc);
- widget_value *wv;
- if (NILP (button))
- {
- if (partition_seen)
- error ("more than one partition (nil) seen in dbox spec");
- partition_seen = 1;
- continue;
- }
- CHECK_VECTOR (button);
- wv = xmalloc_widget_value ();
-
- gui_item = gui_parse_item_keywords (button);
- if (!button_item_to_widget_value (Qdialog,
- gui_item, wv, allow_text_p, 1, 0))
- {
- free_widget_value_tree (wv);
- continue;
- }
-
- if (wv->type == TEXT_TYPE)
- {
- text_field_p = 1;
- allow_text_p = 0; /* only allow one */
- }
- else /* it's a button */
- {
- allow_text_p = 0; /* only allow text field at the front */
- if (wv->value) xfree (wv->value);
- wv->value = wv->name; /* what a mess... */
- wv->name = xstrdup (button_names [n]);
-
- if (partition_seen)
- rbuttons++;
- else
- lbuttons++;
- n++;
-
- if (lbuttons > 9 || rbuttons > 9)
- error ("too many buttons (9)"); /* #### this leaks */
- }
-
- prev->next = wv;
- prev = wv;
- }
+ {
+ EXTERNAL_LIST_LOOP_2 (button, buttons)
+ {
+ widget_value *wv;
+
+ if (NILP (button))
+ {
+ if (partition_seen)
+ syntax_error ("More than one partition (nil) seen in dbox spec",
+ keys);
+ partition_seen = 1;
+ continue;
+ }
+ CHECK_VECTOR (button);
+ wv = xmalloc_widget_value ();
+
+ gui_item = gui_parse_item_keywords (button);
+ if (!button_item_to_widget_value (Qdialog,
+ gui_item, wv, allow_text_p, 1, 0))
+ {
+ free_widget_value_tree (wv);
+ continue;
+ }
+
+ if (wv->type == TEXT_TYPE)
+ {
+ text_field_p = 1;
+ allow_text_p = 0; /* only allow one */
+ }
+ else /* it's a button */
+ {
+ allow_text_p = 0; /* only allow text field at the front */
+ if (wv->value)
+ xfree (wv->value);
+ wv->value = wv->name; /* what a mess... */
+ wv->name = xstrdup (button_names [n]);
+
+ if (partition_seen)
+ rbuttons++;
+ else
+ lbuttons++;
+ n++;
+
+ if (lbuttons > 9 || rbuttons > 9)
+ syntax_error ("Too many buttons (9)",
+ keys); /* #### this leaks */
+ }
+
+ prev->next = wv;
+ prev = wv;
+ }
+ }
if (n == 0)
- error ("dialog boxes must have some buttons");
+ syntax_error ("Dialog boxes must have some buttons", keys);
+
{
- char type = (text_field_p ? 'P' : 'Q');
+ Extbyte type = (text_field_p ? 'P' : 'Q');
+ static Extbyte tmp_dbox_name [255];
+
widget_value *dbox;
sprintf (tmp_dbox_name, "%c%dBR%d", type, lbuttons + rbuttons, rbuttons);
dbox = xmalloc_widget_value ();
@@ -220,14 +245,18 @@
}
}
-static void
-x_popup_dialog_box (struct frame* f, Lisp_Object dbox_desc)
+static Lisp_Object
+x_make_dialog_box_internal (struct frame* f, Lisp_Object type,
+ Lisp_Object keys)
{
int dbox_id;
widget_value *data;
Widget parent, dbox;
+
+ if (!EQ (type, Qquestion))
+ signal_type_error (Qunimplemented, "Dialog box type", type);
- data = dbox_descriptor_to_widget_value (dbox_desc);
+ data = dbox_descriptor_to_widget_value (keys);
parent = FRAME_X_SHELL_WIDGET (f);
@@ -257,6 +286,8 @@
popup_up_p++;
lw_pop_up_all_widgets (dbox_id);
+
+ return Qnil;
}
void
@@ -267,7 +298,7 @@
void
console_type_create_dialog_x (void)
{
- CONSOLE_HAS_METHOD (x, popup_dialog_box);
+ CONSOLE_HAS_METHOD (x, make_dialog_box_internal);
}
void
Index: src/dialog.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/dialog.c,v
retrieving revision 1.3.2.1
diff -u -r1.3.2.1 dialog.c
--- dialog.c 2000/03/13 07:27:52 1.3.2.1
+++ dialog.c 2000/07/18 10:36:35
@@ -1,6 +1,7 @@
/* Implements elisp-programmable dialog boxes -- generic.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -23,68 +24,34 @@
#include <config.h>
#include "lisp.h"
+
#include "frame.h"
#include "device.h"
-DEFUN ("popup-dialog-box", Fpopup_dialog_box, 1, 1, 0, /*
-Pop up a dialog box.
-A dialog box description is a list.
-
-The first element of a dialog box must be a string, which is the title or
-question.
-
-The rest of the elements are descriptions of the dialog box's buttons.
-Each of these is a vector, the syntax of which is essentially the same as
-that of popup menu items. They may have any of the following forms:
-
- [ "name" callback <active-p> ]
- [ "name" callback <active-p> "suffix" ]
- [ "name" callback :<keyword> <value> :<keyword>
<value> ... ]
-
-The name is the string to display on the button; it is filtered through the
-resource database, so it is possible for resources to override what string
-is actually displayed.
-
-Accelerators can be indicated in the string by putting the sequence
-"%_" before the character corresponding to the key that will invoke
-the button. Uppercase and lowercase accelerators are equivalent. The
-sequence "%%" is also special, and is translated into a single %.
-
-If the `callback' of a button is a symbol, then it must name a command.
-It will be invoked with `call-interactively'. If it is a list, then it is
-evaluated with `eval'.
-
-One (and only one) of the buttons may be `nil'. This marker means that all
-following buttons should be flushright instead of flushleft.
-
-Though the keyword/value syntax is supported for dialog boxes just as in
-popup menus, the only keyword which is both meaningful and fully implemented
-for dialog box buttons is `:active'. */
- (dbox_desc))
+DEFUN ("make-dialog-box-internal", Fmake_dialog_box_internal, 2, 2, 0, /*
+Internal helper function for `make-dialog-box'.
+This handles all dialog-box types except `general'.
+TYPE is the same as the first argument to `make-dialog-box', and KEYS
+a list of the remaining arguments.
+*/
+ (type, keys))
{
struct frame *f = selected_frame ();
struct device *d = XDEVICE (f->device);
-
- if (!HAS_DEVMETH_P (d, popup_dialog_box))
- signal_simple_error ("Device does not support dialogs", f->device);
- if (SYMBOLP (dbox_desc))
- dbox_desc = Fsymbol_value (dbox_desc);
- CHECK_CONS (dbox_desc);
- CHECK_STRING (XCAR (dbox_desc));
- if (!CONSP (XCDR (dbox_desc)))
- signal_simple_error ("Dialog descriptor must supply at least one button",
- dbox_desc);
+ CHECK_SYMBOL (type);
- DEVMETH (d, popup_dialog_box, (f, dbox_desc));
+ if (!HAS_DEVMETH_P (d, make_dialog_box_internal))
+ signal_type_error (Qunimplemented,
+ "Device does not support dialogs", f->device);
- return Qnil;
+ return DEVMETH (d, make_dialog_box_internal, (f, type, keys));
}
void
syms_of_dialog (void)
{
- DEFSUBR (Fpopup_dialog_box);
+ DEFSUBR (Fmake_dialog_box_internal);
}
void
Index: src/eldap.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/eldap.c,v
retrieving revision 1.13.2.17
diff -u -r1.13.2.17 eldap.c
--- eldap.c 2000/03/21 02:06:41 1.13.2.17
+++ eldap.c 2000/07/18 10:36:35
@@ -218,77 +218,73 @@
int ldap_sizelimit = 0;
int err;
- Lisp_Object list, keyword, value;
-
CHECK_STRING (host);
- EXTERNAL_PROPERTY_LIST_LOOP (list, keyword, value, plist)
- {
- /* TCP Port */
- if (EQ (keyword, Qport))
- {
- CHECK_INT (value);
- ldap_port = XINT (value);
- }
- /* Authentication method */
- if (EQ (keyword, Qauth))
- {
- if (EQ (value, Qsimple))
- ldap_auth = LDAP_AUTH_SIMPLE;
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (keyword, value, plist)
+ {
+ /* TCP Port */
+ if (EQ (keyword, Qport))
+ {
+ CHECK_INT (value);
+ ldap_port = XINT (value);
+ }
+ /* Authentication method */
+ if (EQ (keyword, Qauth))
+ {
+ if (EQ (value, Qsimple))
+ ldap_auth = LDAP_AUTH_SIMPLE;
#ifdef LDAP_AUTH_KRBV41
- else if (EQ (value, Qkrbv41))
- ldap_auth = LDAP_AUTH_KRBV41;
+ else if (EQ (value, Qkrbv41))
+ ldap_auth = LDAP_AUTH_KRBV41;
#endif
#ifdef LDAP_AUTH_KRBV42
- else if (EQ (value, Qkrbv42))
- ldap_auth = LDAP_AUTH_KRBV42;
+ else if (EQ (value, Qkrbv42))
+ ldap_auth = LDAP_AUTH_KRBV42;
#endif
- else
- signal_simple_error ("Invalid authentication method", value);
- }
- /* Bind DN */
- else if (EQ (keyword, Qbinddn))
- {
- CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value,
- C_STRING_ALLOCA, ldap_binddn,
- Qnative);
- }
- /* Password */
- else if (EQ (keyword, Qpasswd))
- {
- CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value,
- C_STRING_ALLOCA, ldap_passwd,
- Qnative);
- }
- /* Deref */
- else if (EQ (keyword, Qderef))
- {
- if (EQ (value, Qnever))
- ldap_deref = LDAP_DEREF_NEVER;
- else if (EQ (value, Qsearch))
- ldap_deref = LDAP_DEREF_SEARCHING;
- else if (EQ (value, Qfind))
- ldap_deref = LDAP_DEREF_FINDING;
- else if (EQ (value, Qalways))
- ldap_deref = LDAP_DEREF_ALWAYS;
- else
- signal_simple_error ("Invalid deref value", value);
- }
- /* Timelimit */
- else if (EQ (keyword, Qtimelimit))
- {
- CHECK_INT (value);
- ldap_timelimit = XINT (value);
- }
- /* Sizelimit */
- else if (EQ (keyword, Qsizelimit))
- {
- CHECK_INT (value);
- ldap_sizelimit = XINT (value);
- }
- }
+ else
+ signal_simple_error ("Invalid authentication method", value);
+ }
+ /* Bind DN */
+ else if (EQ (keyword, Qbinddn))
+ {
+ CHECK_STRING (value);
+ LISP_TO_EXTERNAL (value, ldap_binddn, Qnative);
+ }
+ /* Password */
+ else if (EQ (keyword, Qpasswd))
+ {
+ CHECK_STRING (value);
+ LISP_TO_EXTERNAL (value, ldap_passwd, Qnative);
+ }
+ /* Deref */
+ else if (EQ (keyword, Qderef))
+ {
+ if (EQ (value, Qnever))
+ ldap_deref = LDAP_DEREF_NEVER;
+ else if (EQ (value, Qsearch))
+ ldap_deref = LDAP_DEREF_SEARCHING;
+ else if (EQ (value, Qfind))
+ ldap_deref = LDAP_DEREF_FINDING;
+ else if (EQ (value, Qalways))
+ ldap_deref = LDAP_DEREF_ALWAYS;
+ else
+ signal_simple_error ("Invalid deref value", value);
+ }
+ /* Timelimit */
+ else if (EQ (keyword, Qtimelimit))
+ {
+ CHECK_INT (value);
+ ldap_timelimit = XINT (value);
+ }
+ /* Sizelimit */
+ else if (EQ (keyword, Qsizelimit))
+ {
+ CHECK_INT (value);
+ ldap_sizelimit = XINT (value);
+ }
+ }
+ }
if (ldap_port == 0)
{
@@ -297,7 +293,7 @@
/* Connect to the server and bind */
slow_down_interrupts ();
- ld = ldap_open ((char *)XSTRING_DATA (host), ldap_port);
+ ld = ldap_open ((char *) XSTRING_DATA (host), ldap_port);
speed_up_interrupts ();
if (ld == NULL )
@@ -477,9 +473,7 @@
{
Lisp_Object current = XCAR (attrs);
CHECK_STRING (current);
- TO_EXTERNAL_FORMAT (LISP_STRING, current,
- C_STRING_ALLOCA, ldap_attributes[i],
- Qnative);
+ LISP_TO_EXTERNAL (current, ldap_attributes[i], Qnative);
++i;
}
ldap_attributes[i] = NULL;
@@ -638,9 +632,7 @@
CHECK_CONS (current);
CHECK_STRING (XCAR (current));
ldap_mods_ptrs[i] = &(ldap_mods[i]);
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (current),
- C_STRING_ALLOCA, ldap_mods[i].mod_type,
- Qnative);
+ LISP_TO_EXTERNAL (XCAR (current), ldap_mods[i].mod_type, Qnative);
ldap_mods[i].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
values = XCDR (current);
if (CONSP (values))
@@ -746,9 +738,7 @@
signal_simple_error ("Invalid LDAP modification type", mod_op);
current = XCDR (current);
CHECK_STRING (XCAR (current));
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (current),
- C_STRING_ALLOCA, ldap_mods[i].mod_type,
- Qnative);
+ LISP_TO_EXTERNAL (XCAR (current), ldap_mods[i].mod_type, Qnative);
values = XCDR (current);
len = XINT (Flength (values));
bervals = alloca_array (struct berval, len);
Index: src/emacs.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/emacs.c,v
retrieving revision 1.82.2.69
diff -u -r1.82.2.69 emacs.c
--- emacs.c 2000/07/13 12:00:01 1.82.2.69
+++ emacs.c 2000/07/18 10:36:36
@@ -368,7 +368,7 @@
int debug_paths;
/* Save argv and argc. */
-static char **initial_argv;
+static Extbyte **initial_argv;
static int initial_argc;
static void sort_args (int argc, char **argv);
@@ -623,7 +623,7 @@
/* Code for dealing with Lisp access to the Unix command line */
static Lisp_Object
-make_arg_list_1 (int argc, char **argv, int skip_args)
+make_arg_list_1 (int argc, Extbyte **argv, int skip_args)
{
Lisp_Object result = Qnil;
REGISTER int i;
@@ -636,17 +636,26 @@
if (i == 0)
{
/* Do not trust to what crt0 has stuffed into argv[0] */
- char full_exe_path [MAX_PATH];
+ char full_exe_path[MAX_PATH];
+ Lisp_Object fullpath;
+
GetModuleFileName (NULL, full_exe_path, MAX_PATH);
- result = Fcons (build_ext_string (full_exe_path, Qfile_name),
- result);
+ fullpath = build_ext_string (full_exe_path, Qmswindows_tstr);
+ result = Fcons (fullpath, result);
#if defined(HAVE_SHLIB)
- (void)dll_init(full_exe_path);
+ {
+ Extbyte *fullpathext;
+
+ LISP_TO_EXTERNAL (fullpath, fullpathext,
+ Qdll_filename_encoding);
+ (void) dll_init (fullpathext);
+ }
#endif
}
else
#endif
- result = Fcons (build_ext_string (argv [i], Qfile_name),
+ result = Fcons (build_ext_string (argv[i],
+ Qcommand_argument_encoding),
result);
}
}
@@ -654,7 +663,7 @@
}
Lisp_Object
-make_arg_list (int argc, char **argv)
+make_arg_list (int argc, Extbyte **argv)
{
return make_arg_list_1 (argc, argv, 0);
}
@@ -662,21 +671,19 @@
/* Calling functions are also responsible for calling free_argc_argv
when they are done with the generated list. */
void
-make_argc_argv (Lisp_Object argv_list, int *argc, char ***argv)
+make_argc_argv (Lisp_Object argv_list, int *argc, Extbyte ***argv)
{
Lisp_Object next;
int n = XINT (Flength (argv_list));
REGISTER int i;
- *argv = (char**) xmalloc ((n+1) * sizeof (char*));
+ *argv = (Extbyte**) xmalloc ((n+1) * sizeof (Extbyte*));
for (i = 0, next = argv_list; i < n; i++, next = XCDR (next))
{
- const char *temp;
+ const Extbyte *temp;
CHECK_STRING (XCAR (next));
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (next),
- C_STRING_ALLOCA, temp,
- Qnative);
+ LISP_TO_EXTERNAL (XCAR (next), temp, Qcommand_argument_encoding);
(*argv) [i] = xstrdup (temp);
}
(*argv) [n] = 0;
@@ -684,7 +691,7 @@
}
void
-free_argc_argv (char **argv)
+free_argc_argv (Extbyte **argv)
{
int elt = 0;
@@ -697,7 +704,7 @@
}
static void
-init_cmdargs (int argc, char **argv, int skip_args)
+init_cmdargs (int argc, Extbyte **argv, int skip_args)
{
initial_argv = argv;
initial_argc = argc;
@@ -1139,7 +1146,7 @@
init_symbols_once_early ();
/* Declare the basic symbols pertaining to errors,
- So that deferror() can be called. */
+ So that DEFERROR*() can be called. */
init_errors_once_early ();
/* Make sure that opaque pointers can be created. */
@@ -1148,13 +1155,13 @@
/* Now declare all the symbols and define all the Lisp primitives.
The *only* thing that the syms_of_*() functions are allowed to do
- is call one of the following three functions:
+ is call one of the following:
INIT_LRECORD_IMPLEMENTATION()
- defsymbol()
+ defsymbol(), DEFSYMBOL(), or DEFSYMBOL_MULTIWORD_PREDICATE()
defsubr() (i.e. DEFSUBR)
- deferror()
- defkeyword()
+ deferror(), DEFERROR(), or DEFERROR_STANDARD()
+ defkeyword() or DEFKEYWORD()
Order does not matter in these functions.
*/
@@ -1290,6 +1297,7 @@
#ifdef HAVE_MS_WINDOWS
syms_of_console_mswindows ();
syms_of_device_mswindows ();
+ syms_of_dialog_mswindows ();
syms_of_frame_mswindows ();
syms_of_objects_mswindows ();
syms_of_select_mswindows ();
@@ -2047,7 +2055,8 @@
first because many of the functions below
call egetenv() to get environment variables. */
init_lread (); /* Set up the Lisp reader. */
- init_cmdargs (argc, argv, skip_args); /* Create list Vcommand_line_args */
+ init_cmdargs (argc, (Extbyte **) argv,
+ skip_args); /* Create list Vcommand_line_args */
init_buffer (); /* Set default directory of *scratch* buffer */
#ifdef WIN32_NATIVE
@@ -2064,6 +2073,9 @@
#ifdef SUNPRO
init_sunpro (); /* Set up Sunpro usage tracking */
#endif
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+ init_win32 ();
+#endif
#if defined (HAVE_NATIVE_SOUND) && defined (hp9000s800)
init_hpplay ();
#endif
@@ -2663,10 +2675,12 @@
UNGCPRO;
#ifdef HAVE_MS_WINDOWS
- /* If we displayed a message on the console and we're exiting due to
- init error, then we must allow the user to see this message. */
- if (mswindows_message_outputted && INTP (arg) && XINT (arg) != 0)
- Fmswindows_message_box (build_string ("Initialization error"),
+ /* If we displayed a message on the console, then we must allow the
+ user to see this message. This may be unnecessary, but can't hurt,
+ and we can't necessarily check arg; e.g. xemacs --help kills with
+ argument 0. */
+ if (mswindows_message_outputted)
+ Fmswindows_message_box (build_string ("Messages outputted. XEmacs is
exiting."),
Qnil, Qnil);
#endif
@@ -2890,14 +2904,10 @@
char *intoname_ext;
char *symname_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, intoname,
- C_STRING_ALLOCA, intoname_ext,
- Qfile_name);
+ LISP_TO_EXTERNAL (intoname, intoname_ext, Qfile_name);
if (STRINGP (symname))
- TO_EXTERNAL_FORMAT (LISP_STRING, symname,
- C_STRING_ALLOCA, symname_ext,
- Qfile_name);
+ LISP_TO_EXTERNAL (symname, symname_ext, Qfile_name);
else
symname_ext = 0;
Index: src/eval.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/eval.c,v
retrieving revision 1.27.2.26
diff -u -r1.27.2.26 eval.c
--- eval.c 2000/07/11 04:14:18 1.27.2.26
+++ eval.c 2000/07/18 10:36:39
@@ -1,6 +1,7 @@
/* Evaluator for XEmacs Lisp interpreter.
Copyright (C) 1985-1987, 1992-1994 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -637,7 +638,7 @@
(args))
{
/* This function can GC */
- REGISTER Lisp_Object arg, val;
+ REGISTER Lisp_Object val;
LIST_LOOP_2 (arg, args)
{
@@ -656,7 +657,7 @@
(args))
{
/* This function can GC */
- REGISTER Lisp_Object arg, val = Qt;
+ REGISTER Lisp_Object val = Qt;
LIST_LOOP_2 (arg, args)
{
@@ -732,7 +733,7 @@
(args))
{
/* This function can GC */
- REGISTER Lisp_Object val, clause;
+ REGISTER Lisp_Object val;
LIST_LOOP_2 (clause, args)
{
@@ -758,7 +759,7 @@
{
/* This function can GC */
/* Caller must provide a true list in ARGS */
- REGISTER Lisp_Object form, val = Qnil;
+ REGISTER Lisp_Object val = Qnil;
struct gcpro gcpro1;
GCPRO1 (args);
@@ -784,7 +785,7 @@
(args))
{
/* This function can GC */
- REGISTER Lisp_Object val, form;
+ REGISTER Lisp_Object val;
struct gcpro gcpro1;
val = Feval (XCAR (args));
@@ -809,7 +810,7 @@
(args))
{
/* This function can GC */
- REGISTER Lisp_Object val, form, tail;
+ REGISTER Lisp_Object val;
struct gcpro gcpro1;
Feval (XCAR (args));
@@ -819,8 +820,10 @@
GCPRO1 (val);
- LIST_LOOP_3 (form, args, tail)
- Feval (form);
+ {
+ LIST_LOOP_2 (form, args)
+ Feval (form);
+ }
UNGCPRO;
return val;
@@ -836,7 +839,6 @@
(args))
{
/* This function can GC */
- Lisp_Object var, tail;
Lisp_Object varlist = XCAR (args);
Lisp_Object body = XCDR (args);
int speccount = specpdl_depth();
@@ -877,7 +879,6 @@
(args))
{
/* This function can GC */
- Lisp_Object var, tail;
Lisp_Object varlist = XCAR (args);
Lisp_Object body = XCDR (args);
int speccount = specpdl_depth();
@@ -897,36 +898,40 @@
gcpro1.nvars = 0;
idx = 0;
- LIST_LOOP_3 (var, varlist, tail)
- {
- Lisp_Object *value = &temps[idx++];
- if (SYMBOLP (var))
- *value = Qnil;
- else
- {
- Lisp_Object tem;
- CHECK_CONS (var);
- tem = XCDR (var);
- if (NILP (tem))
- *value = Qnil;
- else
- {
- CHECK_CONS (tem);
- *value = Feval (XCAR (tem));
- gcpro1.nvars = idx;
-
- if (!NILP (XCDR (tem)))
- signal_simple_error
- ("`let' bindings can have only one value-form", var);
- }
- }
- }
+ {
+ LIST_LOOP_2 (var, varlist)
+ {
+ Lisp_Object *value = &temps[idx++];
+ if (SYMBOLP (var))
+ *value = Qnil;
+ else
+ {
+ Lisp_Object tem;
+ CHECK_CONS (var);
+ tem = XCDR (var);
+ if (NILP (tem))
+ *value = Qnil;
+ else
+ {
+ CHECK_CONS (tem);
+ *value = Feval (XCAR (tem));
+ gcpro1.nvars = idx;
+
+ if (!NILP (XCDR (tem)))
+ signal_simple_error
+ ("`let' bindings can have only one value-form", var);
+ }
+ }
+ }
+ }
idx = 0;
- LIST_LOOP_3 (var, varlist, tail)
- {
- specbind (SYMBOLP (var) ? var : XCAR (var), temps[idx++]);
- }
+ {
+ LIST_LOOP_2 (var, varlist)
+ {
+ specbind (SYMBOLP (var) ? var : XCAR (var), temps[idx++]);
+ }
+ }
UNGCPRO;
@@ -1689,8 +1694,6 @@
condition_case_3 (Lisp_Object bodyform, Lisp_Object var, Lisp_Object handlers)
{
/* This function can GC */
- Lisp_Object handler;
-
EXTERNAL_LIST_LOOP_2 (handler, handlers)
{
if (NILP (handler))
@@ -1703,7 +1706,6 @@
;
else
{
- Lisp_Object condition;
EXTERNAL_LIST_LOOP_2 (condition, conditions)
if (!SYMBOLP (condition))
goto invalid_condition_handler;
@@ -2247,6 +2249,264 @@
/****************** Error functions class 2 ******************/
/* Class 2: Printf-like functions that signal an error.
+ These functions signal an error of a specified type, whose data
+ is a single string, created using the arguments. */
+
+/* dump an error message; called like printf */
+
+DOESNT_RETURN
+type_error (Lisp_Object type, const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ signal_error (type, list1 (obj));
+}
+
+void
+maybe_type_error (Lisp_Object type, Lisp_Object class, Error_behavior errb,
+ const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ maybe_signal_error (type, list1 (obj), class, errb);
+}
+
+Lisp_Object
+continuable_type_error (Lisp_Object type, const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ return Fsignal (type, list1 (obj));
+}
+
+Lisp_Object
+maybe_continuable_type_error (Lisp_Object type, Lisp_Object class,
+ Error_behavior errb, const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return Qnil;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ return maybe_signal_continuable_error (type, list1 (obj), class, errb);
+}
+
+
+/****************** Error functions class 3 ******************/
+
+/* Class 3: Signal an error with a string and an associated object.
+ These functions signal an error of a specified type, whose data
+ is two objects, a string and a related Lisp object (usually the object
+ where the error is occurring). */
+
+DOESNT_RETURN
+signal_type_error (Lisp_Object type, const char *reason, Lisp_Object frob)
+{
+ signal_error (type, list2 (build_translated_string (reason), frob));
+}
+
+void
+maybe_signal_type_error (Lisp_Object type, const char *reason,
+ Lisp_Object frob, Lisp_Object class,
+ Error_behavior errb)
+{
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return;
+ maybe_signal_error (type, list2 (build_translated_string (reason), frob),
+ class, errb);
+}
+
+Lisp_Object
+signal_type_continuable_error (Lisp_Object type, const char *reason,
+ Lisp_Object frob)
+{
+ return Fsignal (type, list2 (build_translated_string (reason), frob));
+}
+
+Lisp_Object
+maybe_signal_type_continuable_error (Lisp_Object type, const char *reason,
+ Lisp_Object frob, Lisp_Object class,
+ Error_behavior errb)
+{
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return Qnil;
+ return maybe_signal_continuable_error
+ (type, list2 (build_translated_string (reason),
+ frob), class, errb);
+}
+
+
+/****************** Error functions class 4 ******************/
+
+/* Class 4: Printf-like functions that signal an error.
+ These functions signal an error of a specified type, whose data
+ is a two objects, a string (created using the arguments) and a
+ Lisp object.
+*/
+
+DOESNT_RETURN
+type_error_with_frob (Lisp_Object type, Lisp_Object frob, const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ signal_error (type, list2 (obj, frob));
+}
+
+void
+maybe_type_error_with_frob (Lisp_Object type, Lisp_Object frob,
+ Lisp_Object class, Error_behavior errb,
+ const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ maybe_signal_error (type, list2 (obj, frob), class, errb);
+}
+
+Lisp_Object
+continuable_type_error_with_frob (Lisp_Object type, Lisp_Object frob,
+ const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ return Fsignal (type, list2 (obj, frob));
+}
+
+Lisp_Object
+maybe_continuable_type_error_with_frob (Lisp_Object type, Lisp_Object frob,
+ Lisp_Object class, Error_behavior errb,
+ const char *fmt, ...)
+{
+ Lisp_Object obj;
+ va_list args;
+
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return Qnil;
+
+ va_start (args, fmt);
+ obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1,
+ args);
+ va_end (args);
+
+ /* Fsignal GC-protects its args */
+ return maybe_signal_continuable_error (type, list2 (obj, frob),
+ class, errb);
+}
+
+
+/****************** Error functions class 5 ******************/
+
+/* Class 5: Signal an error with a string and two associated objects.
+ These functions signal an error of a specified type, whose data
+ is three objects, a string and two related Lisp objects. */
+
+DOESNT_RETURN
+signal_type_error_2 (Lisp_Object type, const char *reason,
+ Lisp_Object frob0, Lisp_Object frob1)
+{
+ signal_error (type, list3 (build_translated_string (reason), frob0,
+ frob1));
+}
+
+void
+maybe_signal_type_error_2 (Lisp_Object type, const char *reason,
+ Lisp_Object frob0, Lisp_Object frob1,
+ Lisp_Object class, Error_behavior errb)
+{
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return;
+ maybe_signal_error (type, list3 (build_translated_string (reason), frob0,
+ frob1), class, errb);
+}
+
+
+Lisp_Object
+signal_type_continuable_error_2 (Lisp_Object type, const char *reason,
+ Lisp_Object frob0, Lisp_Object frob1)
+{
+ return Fsignal (type, list3 (build_translated_string (reason), frob0,
+ frob1));
+}
+
+Lisp_Object
+maybe_signal_type_continuable_error_2 (Lisp_Object type, const char *reason,
+ Lisp_Object frob0, Lisp_Object frob1,
+ Lisp_Object class, Error_behavior errb)
+{
+ /* Optimization: */
+ if (ERRB_EQ (errb, ERROR_ME_NOT))
+ return Qnil;
+ return maybe_signal_continuable_error
+ (type, list3 (build_translated_string (reason), frob0,
+ frob1),
+ class, errb);
+}
+
+
+/****************** Simple error functions class 2 ******************/
+
+/* Simple class 2: Printf-like functions that signal an error.
These functions signal an error of type Qerror, whose data
is a single string, created using the arguments. */
@@ -2322,9 +2582,9 @@
}
-/****************** Error functions class 3 ******************/
+/****************** Simple error functions class 3 ******************/
-/* Class 3: Signal an error with a string and an associated object.
+/* Simple class 3: Signal an error with a string and an associated object.
These functions signal an error of type Qerror, whose data
is two objects, a string and a related Lisp object (usually the object
where the error is occurring). */
@@ -2365,9 +2625,9 @@
}
-/****************** Error functions class 4 ******************/
+/****************** Simple error functions class 4 ******************/
-/* Class 4: Printf-like functions that signal an error.
+/* Simple class 4: Printf-like functions that signal an error.
These functions signal an error of type Qerror, whose data
is a two objects, a string (created using the arguments) and a
Lisp object.
@@ -2445,9 +2705,9 @@
}
-/****************** Error functions class 5 ******************/
+/****************** Simple error functions class 5 ******************/
-/* Class 5: Signal an error with a string and two associated objects.
+/* Simple class 5: Signal an error with a string and two associated objects.
These functions signal an error of type Qerror, whose data
is three objects, a string and two related Lisp objects. */
@@ -2552,6 +2812,31 @@
{
signal_error (Qcircular_property_list, list1 (list));
}
+
+DOESNT_RETURN
+syntax_error (const char *reason, Lisp_Object frob)
+{
+ signal_type_error (Qsyntax_error, reason, frob);
+}
+
+DOESNT_RETURN
+syntax_error_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2)
+{
+ signal_type_error_2 (Qsyntax_error, reason, frob1, frob2);
+}
+
+DOESNT_RETURN
+invalid_argument (const char *reason, Lisp_Object frob)
+{
+ signal_type_error (Qinvalid_argument, reason, frob);
+}
+
+DOESNT_RETURN
+invalid_argument_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2)
+{
+ signal_type_error_2 (Qinvalid_argument, reason, frob1, frob2);
+}
+
/************************************************************************/
/* User commands */
@@ -2996,7 +3281,6 @@
gcpro1.nvars = 0;
{
- REGISTER Lisp_Object arg;
LIST_LOOP_2 (arg, original_args)
{
*p++ = Feval (arg);
@@ -3026,7 +3310,6 @@
gcpro1.nvars = 0;
{
- REGISTER Lisp_Object arg;
LIST_LOOP_2 (arg, original_args)
{
*p++ = Feval (arg);
@@ -3058,7 +3341,6 @@
gcpro1.nvars = 0;
{
- REGISTER Lisp_Object arg;
LIST_LOOP_2 (arg, original_args)
{
*p++ = Feval (arg);
@@ -3103,7 +3385,6 @@
gcpro1.nvars = 0;
{
- REGISTER Lisp_Object arg;
LIST_LOOP_2 (arg, original_args)
{
*p++ = Feval (arg);
@@ -3356,7 +3637,6 @@
{
int argcount = 0;
- Lisp_Object arg;
EXTERNAL_LIST_LOOP_2 (arg, arglist)
{
@@ -3495,7 +3775,7 @@
funcall_lambda (Lisp_Object fun, int nargs, Lisp_Object args[])
{
/* This function can GC */
- Lisp_Object symbol, arglist, body, tail;
+ Lisp_Object arglist, body, tail;
int speccount = specpdl_depth();
REGISTER int i = 0;
@@ -3510,7 +3790,7 @@
{
int optional = 0, rest = 0;
- EXTERNAL_LIST_LOOP_3 (symbol, arglist, tail)
+ EXTERNAL_LIST_LOOP_2 (symbol, arglist)
{
if (!SYMBOLP (symbol))
goto invalid_function;
Index: src/event-Xt.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/event-Xt.c,v
retrieving revision 1.41.2.27
diff -u -r1.41.2.27 event-Xt.c
--- event-Xt.c 2000/06/12 04:18:11 1.41.2.27
+++ event-Xt.c 2000/07/18 10:36:41
@@ -1143,6 +1143,25 @@
if (*state & xd->SuperMask) modifiers |= XEMACS_MOD_SUPER;
if (*state & xd->HyperMask) modifiers |= XEMACS_MOD_HYPER;
if (*state & xd->AltMask) modifiers |= XEMACS_MOD_ALT;
+ {
+ int numero_de_botao = -1;
+
+ if (!key_event_p)
+ numero_de_botao = x_event->xbutton.button;
+
+ /* the button gets noted either in the button or the modifiers
+ field, but not both. */
+ if (numero_de_botao != 1 && (*state & Button1Mask))
+ modifiers |= XEMACS_MOD_BUTTON1;
+ if (numero_de_botao != 2 && (*state & Button2Mask))
+ modifiers |= XEMACS_MOD_BUTTON2;
+ if (numero_de_botao != 3 && (*state & Button3Mask))
+ modifiers |= XEMACS_MOD_BUTTON3;
+ if (numero_de_botao != 4 && (*state & Button4Mask))
+ modifiers |= XEMACS_MOD_BUTTON4;
+ if (numero_de_botao != 5 && (*state & Button5Mask))
+ modifiers |= XEMACS_MOD_BUTTON5;
+ }
/* Ignore the Caps_Lock key if:
- any other modifiers are down, so that Caps_Lock doesn't
@@ -1277,6 +1296,11 @@
if (ev->state & xd->SuperMask) modifiers |= XEMACS_MOD_SUPER;
if (ev->state & xd->HyperMask) modifiers |= XEMACS_MOD_HYPER;
if (ev->state & xd->AltMask) modifiers |= XEMACS_MOD_ALT;
+ if (ev->state & Button1Mask) modifiers |= XEMACS_MOD_BUTTON1;
+ if (ev->state & Button2Mask) modifiers |= XEMACS_MOD_BUTTON2;
+ if (ev->state & Button3Mask) modifiers |= XEMACS_MOD_BUTTON3;
+ if (ev->state & Button4Mask) modifiers |= XEMACS_MOD_BUTTON4;
+ if (ev->state & Button5Mask) modifiers |= XEMACS_MOD_BUTTON5;
/* Currently ignores Shift_Lock but probably shouldn't
(but it definitely should ignore Caps_Lock). */
emacs_event->event.motion.modifiers = modifiers;
@@ -1319,6 +1343,11 @@
if (state & xd->SuperMask) modifiers |= XEMACS_MOD_SUPER;
if (state & xd->HyperMask) modifiers |= XEMACS_MOD_HYPER;
if (state & xd->AltMask) modifiers |= XEMACS_MOD_ALT;
+ if (state & Button1Mask) modifiers |= XEMACS_MOD_BUTTON1;
+ if (state & Button2Mask) modifiers |= XEMACS_MOD_BUTTON2;
+ if (state & Button3Mask) modifiers |= XEMACS_MOD_BUTTON3;
+ if (state & Button4Mask) modifiers |= XEMACS_MOD_BUTTON4;
+ if (state & Button5Mask) modifiers |= XEMACS_MOD_BUTTON5;
if (state & Button5Mask) button = Button5;
if (state & Button4Mask) button = Button4;
@@ -2914,6 +2943,21 @@
return 0;
}
+static int
+emacs_Xt_current_event_timestamp (struct console *c)
+{
+ /* semi-yuck. */
+ Lisp_Object devs = CONSOLE_DEVICE_LIST (c);
+
+ if (NILP (devs))
+ return 0;
+ else
+ {
+ struct device *d = XDEVICE (XCAR (devs));
+ return DEVICE_X_LAST_SERVER_TIMESTAMP (d);
+ }
+}
+
/************************************************************************/
/* replacement for standard string-to-pixel converter */
@@ -3139,6 +3183,8 @@
Xt_event_stream->quit_p_cb = emacs_Xt_quit_p;
Xt_event_stream->create_stream_pair_cb = emacs_Xt_create_stream_pair;
Xt_event_stream->delete_stream_pair_cb = emacs_Xt_delete_stream_pair;
+ Xt_event_stream->current_event_timestamp_cb =
+ emacs_Xt_current_event_timestamp;
the_Xt_timeout_blocktype = Blocktype_new (struct Xt_timeout_blocktype);
Index: src/event-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/event-msw.c,v
retrieving revision 1.38.2.52
diff -u -r1.38.2.52 event-msw.c
--- event-msw.c 2000/07/13 09:06:33 1.38.2.52
+++ event-msw.c 2000/07/18 10:36:42
@@ -96,7 +96,8 @@
static Lisp_Object mswindows_find_console (HWND hwnd);
static Lisp_Object mswindows_key_to_emacs_keysym (int mswindows_key, int mods,
int extendedp);
-static int mswindows_modifier_state (BYTE* keymap, int has_AltGr);
+static int mswindows_modifier_state (BYTE* keymap, DWORD fwKeys,
+ int has_AltGr);
static void mswindows_set_chord_timer (HWND hwnd);
static int mswindows_button2_near_enough (POINTS p1, POINTS p2);
static int mswindows_current_layout_has_AltGr (void);
@@ -161,6 +162,8 @@
/* Count of wound timers */
static int mswindows_pending_timers_count;
+
+static DWORD mswindows_last_mouse_button_state;
/************************************************************************/
/* Pipe instream - reads process output */
@@ -600,7 +603,8 @@
SetEvent (s->hev_thread);
/* Give it a chance to run -- this dramatically improves performance
of things like crypt. */
- (void) SwitchToThread ();
+ if (xSwitchToThread) /* not in Win9x or NT 3.51 */
+ (void) xSwitchToThread ();
return size;
}
@@ -959,7 +963,7 @@
static void
mswindows_enqueue_mouse_button_event (HWND hwnd, UINT msg, POINTS where,
- DWORD when)
+ int mods, DWORD when)
{
int downp = (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN ||
msg == WM_RBUTTONDOWN);
@@ -979,7 +983,7 @@
((msg==WM_RBUTTONDOWN || msg==WM_RBUTTONUP) ? 3 : 2);
event->event.button.x = where.x;
event->event.button.y = where.y;
- event->event.button.modifiers = mswindows_modifier_state (NULL, 0);
+ event->event.button.modifiers = mswindows_modifier_state (NULL, mods, 0);
if (downp)
{
@@ -1270,6 +1274,12 @@
while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
+ if (mswindows_is_dialog_msg (&msg))
+ {
+ mswindows_unmodalize_signal_maybe ();
+ continue;
+ }
+
/* We have to translate messages that are not sent to the main
window. This is so that key presses work ok in things like
edit fields. However, we *musn't* translate message for the
@@ -2124,7 +2134,7 @@
else
memcpy (keymap_sticky, keymap_orig, 256);
- mods = mswindows_modifier_state (keymap_sticky, has_AltGr);
+ mods = mswindows_modifier_state (keymap_sticky, (DWORD) -1, has_AltGr);
/* Handle non-printables */
if (!NILP (keysym = mswindows_key_to_emacs_keysym (wParam, mods,
@@ -2245,7 +2255,9 @@
if one wants to exercise fingers playing chords on the mouse,
he is allowed to do that! */
mswindows_enqueue_mouse_button_event (hwnd, message_,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_MBUTTON,
+ GetMessageTime());
break;
case WM_LBUTTONUP:
@@ -2263,7 +2275,11 @@
msframe->button2_is_down = 0;
msframe->ignore_next_rbutton_up = 1;
mswindows_enqueue_mouse_button_event (hwnd, WM_MBUTTONUP,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam
+ &~ (MK_LBUTTON | MK_MBUTTON
+ | MK_RBUTTON),
+ GetMessageTime());
}
else
{
@@ -2271,10 +2287,14 @@
{
msframe->button2_need_rbutton = 0;
mswindows_enqueue_mouse_button_event (hwnd, WM_LBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_LBUTTON,
+ GetMessageTime());
}
mswindows_enqueue_mouse_button_event (hwnd, WM_LBUTTONUP,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_LBUTTON,
+ GetMessageTime());
}
break;
@@ -2293,7 +2313,11 @@
msframe->button2_is_down = 0;
msframe->ignore_next_lbutton_up = 1;
mswindows_enqueue_mouse_button_event (hwnd, WM_MBUTTONUP,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam
+ &~ (MK_LBUTTON | MK_MBUTTON
+ | MK_RBUTTON),
+ GetMessageTime());
}
else
{
@@ -2301,10 +2325,14 @@
{
msframe->button2_need_lbutton = 0;
mswindows_enqueue_mouse_button_event (hwnd, WM_RBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_RBUTTON,
+ GetMessageTime());
}
mswindows_enqueue_mouse_button_event (hwnd, WM_RBUTTONUP,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_RBUTTON,
+ GetMessageTime());
}
break;
@@ -2316,18 +2344,28 @@
KillTimer (hwnd, BUTTON_2_TIMER_ID);
msframe->button2_need_lbutton = 0;
msframe->button2_need_rbutton = 0;
- if (mswindows_button2_near_enough (msframe->last_click_point, MAKEPOINTS
(lParam)))
+ if (mswindows_button2_near_enough (msframe->last_click_point,
+ MAKEPOINTS (lParam)))
{
mswindows_enqueue_mouse_button_event (hwnd, WM_MBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam
+ &~ (MK_LBUTTON | MK_MBUTTON
+ | MK_RBUTTON),
+ GetMessageTime());
msframe->button2_is_down = 1;
}
else
{
mswindows_enqueue_mouse_button_event (hwnd, WM_RBUTTONDOWN,
- msframe->last_click_point, msframe->last_click_time);
+ msframe->last_click_point,
+ msframe->last_click_mods
+ &~ MK_RBUTTON,
+ msframe->last_click_time);
mswindows_enqueue_mouse_button_event (hwnd, WM_LBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_LBUTTON,
+ GetMessageTime());
}
}
else
@@ -2335,6 +2373,7 @@
mswindows_set_chord_timer (hwnd);
msframe->button2_need_rbutton = 1;
msframe->last_click_point = MAKEPOINTS (lParam);
+ msframe->last_click_mods = wParam;
}
msframe->last_click_time = GetMessageTime();
break;
@@ -2347,18 +2386,28 @@
KillTimer (hwnd, BUTTON_2_TIMER_ID);
msframe->button2_need_lbutton = 0;
msframe->button2_need_rbutton = 0;
- if (mswindows_button2_near_enough (msframe->last_click_point, MAKEPOINTS
(lParam)))
+ if (mswindows_button2_near_enough (msframe->last_click_point,
+ MAKEPOINTS (lParam)))
{
mswindows_enqueue_mouse_button_event (hwnd, WM_MBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam
+ &~ (MK_LBUTTON | MK_MBUTTON
+ | MK_RBUTTON),
+ GetMessageTime());
msframe->button2_is_down = 1;
}
else
{
mswindows_enqueue_mouse_button_event (hwnd, WM_LBUTTONDOWN,
- msframe->last_click_point, msframe->last_click_time);
+ msframe->last_click_point,
+ msframe->last_click_mods
+ &~ MK_LBUTTON,
+ msframe->last_click_time);
mswindows_enqueue_mouse_button_event (hwnd, WM_RBUTTONDOWN,
- MAKEPOINTS (lParam), GetMessageTime());
+ MAKEPOINTS (lParam),
+ wParam &~ MK_RBUTTON,
+ GetMessageTime());
}
}
else
@@ -2366,6 +2415,7 @@
mswindows_set_chord_timer (hwnd);
msframe->button2_need_lbutton = 1;
msframe->last_click_point = MAKEPOINTS (lParam);
+ msframe->last_click_mods = wParam;
}
msframe->last_click_time = GetMessageTime();
break;
@@ -2380,13 +2430,19 @@
{
msframe->button2_need_lbutton = 0;
mswindows_enqueue_mouse_button_event (hwnd, WM_RBUTTONDOWN,
- msframe->last_click_point, msframe->last_click_time);
+ msframe->last_click_point,
+ msframe->last_click_mods
+ &~ MK_RBUTTON,
+ msframe->last_click_time);
}
else if (msframe->button2_need_rbutton)
{
msframe->button2_need_rbutton = 0;
mswindows_enqueue_mouse_button_event (hwnd, WM_LBUTTONDOWN,
- msframe->last_click_point, msframe->last_click_time);
+ msframe->last_click_point,
+ msframe->last_click_mods
+ &~ MK_LBUTTON,
+ msframe->last_click_time);
}
}
else
@@ -2417,7 +2473,8 @@
event->event_type = pointer_motion_event;
event->event.motion.x = MAKEPOINTS(lParam).x;
event->event.motion.y = MAKEPOINTS(lParam).y;
- event->event.motion.modifiers = mswindows_modifier_state (NULL, 0);
+ event->event.motion.modifiers =
+ mswindows_modifier_state (NULL, wParam, 0);
mswindows_enqueue_dispatch_event (emacs_event);
}
@@ -2453,9 +2510,7 @@
{
/* I think this is safe since the text will only go away
when the toolbar does...*/
- TO_EXTERNAL_FORMAT (LISP_STRING, btext,
- C_STRING_ALLOCA, tttext->lpszText,
- Qnative);
+ LISP_TO_EXTERNAL (btext, tttext->lpszText, Qnative);
}
#endif
}
@@ -2815,7 +2870,8 @@
event->channel = mswindows_find_frame(hwnd);
event->timestamp = GetMessageTime();
event->event.misc.button = 1; /* #### Should try harder */
- event->event.misc.modifiers = mswindows_modifier_state (NULL, 0);
+ event->event.misc.modifiers = mswindows_modifier_state (NULL,
+ (DWORD) -1, 0);
event->event.misc.x = point.x;
event->event.misc.y = point.y;
event->event.misc.function = Qdragdrop_drop_dispatch;
@@ -2941,8 +2997,10 @@
time when a key typed at autorepeat rate of 30 cps! */
static HKL last_hkl = 0;
static int last_hkl_has_AltGr;
+ HKL current_hkl = (HKL) -1;
- HKL current_hkl = GetKeyboardLayout (0);
+ if (xGetKeyboardLayout) /* not in NT 3.5 */
+ current_hkl = xGetKeyboardLayout (0);
if (current_hkl != last_hkl)
{
TCHAR c;
@@ -2962,11 +3020,20 @@
/* Returns the state of the modifier keys in the format expected by the
* Lisp_Event key_data, button_data and motion_data modifiers member */
static int
-mswindows_modifier_state (BYTE* keymap, int has_AltGr)
+mswindows_modifier_state (BYTE* keymap, DWORD fwKeys, int has_AltGr)
{
int mods = 0;
+ int keys_is_real = 0;
BYTE keymap2[256];
+ if (fwKeys == (DWORD) -1)
+ fwKeys = mswindows_last_mouse_button_state;
+ else
+ {
+ keys_is_real = 1;
+ mswindows_last_mouse_button_state = fwKeys;
+ }
+
if (keymap == NULL)
{
keymap = keymap2;
@@ -2974,6 +3041,8 @@
has_AltGr = mswindows_current_layout_has_AltGr ();
}
+ /* #### should look at fwKeys for MK_CONTROL. I don't understand how
+ AltGr works. */
if (has_AltGr && (keymap [VK_LCONTROL] & 0x80) && (keymap
[VK_RMENU] & 0x80))
{
mods |= (keymap [VK_LMENU] & 0x80) ? XEMACS_MOD_META : 0;
@@ -2985,7 +3054,11 @@
mods |= (keymap [VK_CONTROL] & 0x80) ? XEMACS_MOD_CONTROL : 0;
}
- mods |= (keymap [VK_SHIFT] & 0x80) ? XEMACS_MOD_SHIFT : 0;
+ mods |= (keys_is_real ? fwKeys & MK_SHIFT : (keymap [VK_SHIFT] & 0x80))
+ ? XEMACS_MOD_SHIFT : 0;
+ mods |= fwKeys & MK_LBUTTON ? XEMACS_MOD_BUTTON1 : 0;
+ mods |= fwKeys & MK_MBUTTON ? XEMACS_MOD_BUTTON2 : 0;
+ mods |= fwKeys & MK_RBUTTON ? XEMACS_MOD_BUTTON3 : 0;
return mods;
}
@@ -3473,6 +3546,12 @@
: HANDLE_TO_USID (get_ntpipe_input_stream_waitable (XLSTREAM (instream))));
}
+static int
+emacs_mswindows_current_event_timestamp (struct console *c)
+{
+ return GetTickCount ();
+}
+
#ifndef HAVE_X_WINDOWS
/* This is called from GC when a process object is about to be freed.
If we've still got pointers to it in this file, we're gonna lose hard.
@@ -3527,6 +3606,8 @@
mswindows_event_stream->create_stream_pair_cb = emacs_mswindows_create_stream_pair;
mswindows_event_stream->delete_stream_pair_cb = emacs_mswindows_delete_stream_pair;
#endif
+ mswindows_event_stream->current_event_timestamp_cb =
+ emacs_mswindows_current_event_timestamp;
}
void
Index: src/event-stream.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/event-stream.c,v
retrieving revision 1.45.2.27
diff -u -r1.45.2.27 event-stream.c
--- event-stream.c 2000/05/21 01:40:39 1.45.2.27
+++ event-stream.c 2000/07/18 10:36:44
@@ -610,6 +610,14 @@
event_stream->quit_p_cb ();
}
+static int
+event_stream_current_event_timestamp (struct console *c)
+{
+ if (event_stream && event_stream->current_event_timestamp_cb)
+ return event_stream->current_event_timestamp_cb (c);
+ else
+ return 0;
+}
/**********************************************************************/
@@ -767,6 +775,17 @@
XEVENT (event)->event.key.keysym = traduit;
did_translate = 1;
}
+ else if (CHARP (traduit))
+ {
+ Lisp_Event ev2;
+
+ zero_event (&ev2);
+ character_to_event (XCHAR (traduit), &ev2,
+ XCONSOLE (EVENT_CHANNEL (XEVENT (event))), 1, 1);
+ XEVENT (event)->event.key.keysym = ev2.event.key.keysym;
+ XEVENT (event)->event.key.modifiers |= ev2.event.key.modifiers;
+ did_translate = 1;
+ }
}
#ifdef DEBUG_XEMACS
@@ -4416,6 +4435,23 @@
}
+
+DEFUN ("current-event-timestamp", Fcurrent_event_timestamp, 0, 1, 0, /*
+Return the current event timestamp of the window system associated with CONSOLE.
+CONSOLE defaults to the selected console if omitted.
+*/
+ (console))
+{
+ struct console *c = decode_console (console);
+ int tiempo = event_stream_current_event_timestamp (c);
+
+ /* This junk is so that timestamps don't get to be negative, but contain
+ as many bits as this particular emacs will allow.
+ */
+ return make_int (((1L << (VALBITS - 1)) - 1) & tiempo);
+}
+
+
/************************************************************************/
/* initialization */
/************************************************************************/
@@ -4429,8 +4465,7 @@
defsymbol (&Qdisabled, "disabled");
defsymbol (&Qcommand_event_p, "command-event-p");
- deferror (&Qundefined_keystroke_sequence,
"undefined-keystroke-sequence",
- "Undefined keystroke sequence", Qerror);
+ DEFERROR_STANDARD (Qundefined_keystroke_sequence, Qinvalid_argument);
DEFSUBR (Frecent_keys);
DEFSUBR (Frecent_keys_ring_size);
@@ -4453,6 +4488,7 @@
DEFSUBR (Fthis_command_keys);
DEFSUBR (Freset_this_command_lengths);
DEFSUBR (Fopen_dribble_file);
+ DEFSUBR (Fcurrent_event_timestamp);
defsymbol (&Qpre_command_hook, "pre-command-hook");
defsymbol (&Qpost_command_hook, "post-command-hook");
@@ -4736,6 +4772,10 @@
keysym changed and its modifiers left alone. This is useful for
dealing with non-standard X keyboards, such as the grievous damage
that Sun has inflicted upon the world.
+-- If an entry maps a symbol to a character, then a key-press event
+ whose keysym is the former symbol (with any modifiers at all) gets
+ changed into a key-press event matching the latter character, and the
+ resulting modifiers are the union of the original and new modifiers.
-- If an entry maps a character to a character, then a key-press event
matching the former character gets converted to a key-press event
matching the latter character. This is useful on ASCII terminals
@@ -4744,6 +4784,16 @@
-- If an entry maps a character to a symbol, then a key-press event
matching the character gets converted to a key-press event whose
keysym is the given symbol and which has no modifiers.
+
+Here's an example: This makes typing parens and braces easier by rerouting
+their positions to eliminate the need to use the Shift key.
+
+ (keyboard-translate ?[ ?()
+ (keyboard-translate ?] ?))
+ (keyboard-translate ?{ ?[)
+ (keyboard-translate ?} ?])
+ (keyboard-translate 'f11 ?{)
+ (keyboard-translate 'f12 ?})
*/ );
DEFVAR_LISP ("retry-undefined-key-binding-unshifted",
Index: src/events-mod.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/events-mod.h,v
retrieving revision 1.2.2.1
diff -u -r1.2.2.1 events-mod.h
--- events-mod.h 2000/03/13 07:27:56 1.2.2.1
+++ events-mod.h 2000/07/18 10:36:44
@@ -6,3 +6,8 @@
#define XEMACS_MOD_HYPER (1<<3)
#define XEMACS_MOD_ALT (1<<4)
#define XEMACS_MOD_SHIFT (1<<5) /* not used for dual-case characters */
+#define XEMACS_MOD_BUTTON1 (1<<6)
+#define XEMACS_MOD_BUTTON2 (1<<7)
+#define XEMACS_MOD_BUTTON3 (1<<8)
+#define XEMACS_MOD_BUTTON4 (1<<9)
+#define XEMACS_MOD_BUTTON5 (1<<10)
Index: src/events.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/events.c,v
retrieving revision 1.41.2.17
diff -u -r1.41.2.17 events.c
--- events.c 2000/06/12 04:18:12 1.41.2.17
+++ events.c 2000/07/18 10:36:44
@@ -418,7 +418,6 @@
*/
(type, plist))
{
- Lisp_Object tail, keyword, value;
Lisp_Object event = Qnil;
Lisp_Event *e;
EMACS_INT coord_x = 0, coord_y = 0;
@@ -449,7 +448,7 @@
(e.g. CHANNEL), which we don't want in empty events. */
e->event_type = empty_event;
if (!NILP (plist))
- error ("Cannot set properties of empty event");
+ syntax_error ("Cannot set properties of empty event", plist);
UNGCPRO;
return event;
}
@@ -472,7 +471,7 @@
else
{
/* Not allowed: Qprocess, Qtimeout, Qmagic, Qeval, Qmagic_eval. */
- signal_simple_error ("Invalid event type", type);
+ invalid_argument ("Invalid event type", type);
}
EVENT_CHANNEL (e) = Qnil;
@@ -480,164 +479,169 @@
plist = Fcopy_sequence (plist);
Fcanonicalize_plist (plist, Qnil);
-#define WRONG_EVENT_TYPE_FOR_PROPERTY(type, prop) \
- error_with_frob (prop, "Invalid property for %s event", \
- string_data (symbol_name (XSYMBOL (type))))
+#define WRONG_EVENT_TYPE_FOR_PROPERTY(type, prop) \
+ syntax_error_2 ("Invalid property for event type", prop, type)
- EXTERNAL_PROPERTY_LIST_LOOP (tail, keyword, value, plist)
- {
- if (EQ (keyword, Qchannel))
- {
- if (e->event_type == key_press_event)
- {
- if (!CONSOLEP (value))
- value = wrong_type_argument (Qconsolep, value);
- }
- else
- {
- if (!FRAMEP (value))
- value = wrong_type_argument (Qframep, value);
- }
- EVENT_CHANNEL (e) = value;
- }
- else if (EQ (keyword, Qkey))
- {
- switch (e->event_type)
- {
- case key_press_event:
- if (!SYMBOLP (value) && !CHARP (value))
- signal_simple_error ("Invalid event key", value);
- e->event.key.keysym = value;
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qbutton))
- {
- CHECK_NATNUM (value);
- check_int_range (XINT (value), 0, 7);
-
- switch (e->event_type)
- {
- case button_press_event:
- case button_release_event:
- e->event.button.button = XINT (value);
- break;
- case misc_user_event:
- e->event.misc.button = XINT (value);
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qmodifiers))
- {
- int modifiers = 0;
- Lisp_Object sym;
-
- EXTERNAL_LIST_LOOP_2 (sym, value)
- {
- if (EQ (sym, Qcontrol)) modifiers |= XEMACS_MOD_CONTROL;
- else if (EQ (sym, Qmeta)) modifiers |= XEMACS_MOD_META;
- else if (EQ (sym, Qsuper)) modifiers |= XEMACS_MOD_SUPER;
- else if (EQ (sym, Qhyper)) modifiers |= XEMACS_MOD_HYPER;
- else if (EQ (sym, Qalt)) modifiers |= XEMACS_MOD_ALT;
- else if (EQ (sym, Qsymbol)) modifiers |= XEMACS_MOD_ALT;
- else if (EQ (sym, Qshift)) modifiers |= XEMACS_MOD_SHIFT;
- else
- signal_simple_error ("Invalid key modifier", sym);
- }
-
- switch (e->event_type)
- {
- case key_press_event:
- e->event.key.modifiers = modifiers;
- break;
- case button_press_event:
- case button_release_event:
- e->event.button.modifiers = modifiers;
- break;
- case pointer_motion_event:
- e->event.motion.modifiers = modifiers;
- break;
- case misc_user_event:
- e->event.misc.modifiers = modifiers;
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qx))
- {
- switch (e->event_type)
- {
- case pointer_motion_event:
- case button_press_event:
- case button_release_event:
- case misc_user_event:
- /* Allow negative values, so we can specify toolbar
- positions. */
- CHECK_INT (value);
- coord_x = XINT (value);
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qy))
- {
- switch (e->event_type)
- {
- case pointer_motion_event:
- case button_press_event:
- case button_release_event:
- case misc_user_event:
- /* Allow negative values; see above. */
- CHECK_INT (value);
- coord_y = XINT (value);
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qtimestamp))
- {
- CHECK_NATNUM (value);
- e->timestamp = XINT (value);
- }
- else if (EQ (keyword, Qfunction))
- {
- switch (e->event_type)
- {
- case misc_user_event:
- e->event.eval.function = value;
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else if (EQ (keyword, Qobject))
- {
- switch (e->event_type)
- {
- case misc_user_event:
- e->event.eval.object = value;
- break;
- default:
- WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
- break;
- }
- }
- else
- signal_simple_error_2 ("Invalid property", keyword, value);
- }
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (keyword, value, plist)
+ {
+ if (EQ (keyword, Qchannel))
+ {
+ if (e->event_type == key_press_event)
+ {
+ if (!CONSOLEP (value))
+ value = wrong_type_argument (Qconsolep, value);
+ }
+ else
+ {
+ if (!FRAMEP (value))
+ value = wrong_type_argument (Qframep, value);
+ }
+ EVENT_CHANNEL (e) = value;
+ }
+ else if (EQ (keyword, Qkey))
+ {
+ switch (e->event_type)
+ {
+ case key_press_event:
+ if (!SYMBOLP (value) && !CHARP (value))
+ syntax_error ("Invalid event key", value);
+ e->event.key.keysym = value;
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qbutton))
+ {
+ CHECK_NATNUM (value);
+ check_int_range (XINT (value), 0, 7);
+
+ switch (e->event_type)
+ {
+ case button_press_event:
+ case button_release_event:
+ e->event.button.button = XINT (value);
+ break;
+ case misc_user_event:
+ e->event.misc.button = XINT (value);
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qmodifiers))
+ {
+ int modifiers = 0;
+
+ EXTERNAL_LIST_LOOP_2 (sym, value)
+ {
+ if (EQ (sym, Qcontrol)) modifiers |= XEMACS_MOD_CONTROL;
+ else if (EQ (sym, Qmeta)) modifiers |= XEMACS_MOD_META;
+ else if (EQ (sym, Qsuper)) modifiers |= XEMACS_MOD_SUPER;
+ else if (EQ (sym, Qhyper)) modifiers |= XEMACS_MOD_HYPER;
+ else if (EQ (sym, Qalt)) modifiers |= XEMACS_MOD_ALT;
+ else if (EQ (sym, Qsymbol)) modifiers |= XEMACS_MOD_ALT;
+ else if (EQ (sym, Qshift)) modifiers |= XEMACS_MOD_SHIFT;
+ else if (EQ (sym, Qbutton1)) modifiers |= XEMACS_MOD_BUTTON1;
+ else if (EQ (sym, Qbutton2)) modifiers |= XEMACS_MOD_BUTTON2;
+ else if (EQ (sym, Qbutton3)) modifiers |= XEMACS_MOD_BUTTON3;
+ else if (EQ (sym, Qbutton4)) modifiers |= XEMACS_MOD_BUTTON4;
+ else if (EQ (sym, Qbutton5)) modifiers |= XEMACS_MOD_BUTTON5;
+ else
+ syntax_error ("Invalid key modifier", sym);
+ }
+
+ switch (e->event_type)
+ {
+ case key_press_event:
+ e->event.key.modifiers = modifiers;
+ break;
+ case button_press_event:
+ case button_release_event:
+ e->event.button.modifiers = modifiers;
+ break;
+ case pointer_motion_event:
+ e->event.motion.modifiers = modifiers;
+ break;
+ case misc_user_event:
+ e->event.misc.modifiers = modifiers;
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qx))
+ {
+ switch (e->event_type)
+ {
+ case pointer_motion_event:
+ case button_press_event:
+ case button_release_event:
+ case misc_user_event:
+ /* Allow negative values, so we can specify toolbar
+ positions. */
+ CHECK_INT (value);
+ coord_x = XINT (value);
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qy))
+ {
+ switch (e->event_type)
+ {
+ case pointer_motion_event:
+ case button_press_event:
+ case button_release_event:
+ case misc_user_event:
+ /* Allow negative values; see above. */
+ CHECK_INT (value);
+ coord_y = XINT (value);
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qtimestamp))
+ {
+ CHECK_NATNUM (value);
+ e->timestamp = XINT (value);
+ }
+ else if (EQ (keyword, Qfunction))
+ {
+ switch (e->event_type)
+ {
+ case misc_user_event:
+ e->event.eval.function = value;
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else if (EQ (keyword, Qobject))
+ {
+ switch (e->event_type)
+ {
+ case misc_user_event:
+ e->event.eval.object = value;
+ break;
+ default:
+ WRONG_EVENT_TYPE_FOR_PROPERTY (type, keyword);
+ break;
+ }
+ }
+ else
+ syntax_error_2 ("Invalid property", keyword, value);
+ }
+ }
/* Insert the channel, if missing. */
if (NILP (EVENT_CHANNEL (e)))
@@ -680,19 +684,25 @@
{
case key_press_event:
if (UNBOUNDP (e->event.key.keysym))
- error ("A key must be specified to make a keypress event");
+ syntax_error ("A key must be specified to make a keypress event",
+ plist);
break;
case button_press_event:
if (!e->event.button.button)
- error ("A button must be specified to make a button-press event");
+ syntax_error
+ ("A button must be specified to make a button-press event",
+ plist);
break;
case button_release_event:
if (!e->event.button.button)
- error ("A button must be specified to make a button-release event");
+ syntax_error
+ ("A button must be specified to make a button-release event",
+ plist);
break;
case misc_user_event:
if (NILP (e->event.misc.function))
- error ("A function must be specified to make a misc-user event");
+ syntax_error ("A function must be specified to make a misc-user event",
+ plist);
break;
default:
break;
@@ -1278,6 +1288,7 @@
case dead_event: strcpy (buf, "DEAD-EVENT"); return;
default:
abort ();
+ return;
}
#define modprint1(x) do { strcpy (buf, (x)); buf += sizeof (x)-1; } while (0)
#define modprint(x,y) do { if (brief) modprint1 (y); else modprint1 (x); } while (0)
@@ -1441,6 +1452,10 @@
DEFUN ("event-timestamp", Fevent_timestamp, 1, 1, 0, /*
Return the timestamp of the event object EVENT.
+Timestamps are measured in milliseconds since the start of the window system.
+They are NOT related to any current time measurement.
+They should be compared with `event-timestamp<'.
+See also `current-event-timestamp'.
*/
(event))
{
@@ -1452,6 +1467,28 @@
XEVENT (event)->timestamp);
}
+#define TIMESTAMP_HALFSPACE (1L << (VALBITS - 2))
+
+DEFUN ("event-timestamp<", Fevent_timestamp_lessp, 2, 2, 0, /*
+Return true if timestamp TIME1 is earlier than timestamp TIME2.
+This correctly handles timestamp wrap.
+See also `event-timestamp' and `current-event-timestamp'.
+*/
+ (time1, time2))
+{
+ int t1, t2;
+
+ CHECK_NATNUM (time1);
+ CHECK_NATNUM (time2);
+ t1 = XINT (time1);
+ t2 = XINT (time2);
+
+ if (t1 < t2)
+ return t2 - t1 < TIMESTAMP_HALFSPACE ? Qt : Qnil;
+ else
+ return t1 - t2 < TIMESTAMP_HALFSPACE ? Qnil : Qt;
+}
+
#define CHECK_EVENT_TYPE(e,t1,sym) do { \
CHECK_LIVE_EVENT (e); \
if (XEVENT(e)->event_type != (t1)) \
@@ -1509,9 +1546,9 @@
}
DEFUN ("event-modifier-bits", Fevent_modifier_bits, 1, 1, 0, /*
-Return a number representing the modifier keys which were down
+Return a number representing the modifier keys and buttons which were down
when the given mouse or keyboard event was produced.
-See also the function event-modifiers.
+See also the function `event-modifiers'.
*/
(event))
{
@@ -1535,21 +1572,67 @@
}
DEFUN ("event-modifiers", Fevent_modifiers, 1, 1, 0, /*
-Return a list of symbols, the names of the modifier keys
+Return a list of symbols, the names of the modifier keys and buttons
which were down when the given mouse or keyboard event was produced.
-See also the function event-modifier-bits.
+See also the function `event-modifier-bits'.
+
+The possible symbols in the list are
+
+`shift': The Shift key. Will not appear, in general, on key events
+ where the keysym is an ASCII character, because using Shift
+ on such a character converts it into another character rather
+ than actually just adding a Shift modifier.
+
+`control': The Control key.
+
+`meta': The Meta key. On PC's and PC-style keyboards, this is generally
+ labelled \"Alt\"; Meta is a holdover from early Lisp Machines and
+ such, propagated through the X Window System. On Sun keyboards,
+ this key is labelled with a diamond.
+
+`alt': The \"Alt\" key. Alt is in quotes because this does not
refer
+ to what it obviously should refer to, namely the Alt key on PC
+ keyboards. Instead, it refers to the key labelled Alt on Sun
+ keyboards, and to no key at all on PC keyboards.
+
+`super': The Super key. Most keyboards don't have any such key, but
+ under X Windows using `xmodmap' you can assign any key (such as
+ an underused right-shift, right-control, or right-alt key) to
+ this key modifier. No support currently exists under MS Windows
+ for generating these modifiers.
+
+`hyper': The Hyper key. Works just like the Super key.
+
+`button1': The mouse buttons. This means that the specified button was held
+`button2': down at the time the event occurred. NOTE: For button-press
+`button3': events, the button that was just pressed down does NOT appear in
+`button4': the modifiers.
+`button5':
+
+Button modifiers are currently ignored when defining and looking up key and
+mouse strokes in keymaps. This could be changed, which would allow a user to
+create button-chord actions, use a button as a key modifier and do other
+clever things.
*/
(event))
{
int mod = XINT (Fevent_modifier_bits (event));
Lisp_Object result = Qnil;
+ struct gcpro gcpro1;
+
+ GCPRO1 (result);
if (mod & XEMACS_MOD_SHIFT) result = Fcons (Qshift, result);
if (mod & XEMACS_MOD_ALT) result = Fcons (Qalt, result);
if (mod & XEMACS_MOD_HYPER) result = Fcons (Qhyper, result);
if (mod & XEMACS_MOD_SUPER) result = Fcons (Qsuper, result);
if (mod & XEMACS_MOD_META) result = Fcons (Qmeta, result);
if (mod & XEMACS_MOD_CONTROL) result = Fcons (Qcontrol, result);
- return result;
+ if (mod & XEMACS_MOD_BUTTON1) result = Fcons (Qbutton1, result);
+ if (mod & XEMACS_MOD_BUTTON2) result = Fcons (Qbutton2, result);
+ if (mod & XEMACS_MOD_BUTTON3) result = Fcons (Qbutton3, result);
+ if (mod & XEMACS_MOD_BUTTON4) result = Fcons (Qbutton4, result);
+ if (mod & XEMACS_MOD_BUTTON5) result = Fcons (Qbutton5, result);
+ RETURN_UNGCPRO (Fnreverse (result));
}
static int
@@ -1584,7 +1667,7 @@
w = find_window_by_pixel_pos (*x, *y, f->root_window);
if (!w)
- return 1; /* #### What should really happen here. */
+ return 1; /* #### What should really happen here? */
*x -= w->pixel_left;
*y -= w->pixel_top;
@@ -2191,6 +2274,7 @@
DEFSUBR (Fevent_properties);
DEFSUBR (Fevent_timestamp);
+ DEFSUBR (Fevent_timestamp_lessp);
DEFSUBR (Fevent_key);
DEFSUBR (Fevent_button);
DEFSUBR (Fevent_modifier_bits);
Index: src/events.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/events.h,v
retrieving revision 1.20.2.10
diff -u -r1.20.2.10 events.h
--- events.h 2000/03/16 11:21:50 1.20.2.10
+++ events.h 2000/07/18 10:36:45
@@ -130,10 +130,9 @@
event_stream layer to translate to this format.
NOTE: #### All timestamps should be measured as milliseconds since XEmacs
- started. Currently many or most events have a 0 as their
- timestamp value, and for other timestamps, they are raw server
- timestamps. (The X protocol doesn't provide any easy way of
- translating between server time and real process time; yuck.)
+ started. Currently they are raw server timestamps. (The X protocol
+ doesn't provide any easy way of translating between server time and
+ real process time; yuck.)
Every event type has the following structures:
@@ -176,6 +175,7 @@
If this is an integer, it will be in the printing
ASCII range: >32 and <127.
modifiers Bucky-bits on that key: control, meta, etc.
+ Also includes buttons.
For many keys, Shift is not a bit; that is implicit
in the keyboard layout.
@@ -183,12 +183,12 @@
button_release_event
button What button went down or up.
modifiers Bucky-bits on that button: shift, control, meta, etc.
+ Also includes other buttons (not the one pressed).
x, y Where it was at the button-state-change (in pixels).
pointer_motion_event
x, y Where it was after it moved (in pixels).
modifiers Bucky-bits down when the motion was detected.
- (Possibly not all window systems will provide this?)
process_event
process the XEmacs "process" object in question
@@ -336,6 +336,7 @@
int /* flags */);
USID (*delete_stream_pair_cb) (Lisp_Object /* instream */,
Lisp_Object /* outstream */);
+ int (*current_event_timestamp_cb) (struct console *);
};
/* Flags for create_stream_pair_cb() FLAGS parameter */
Index: src/extents.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/extents.c,v
retrieving revision 1.27.2.22
diff -u -r1.27.2.22 extents.c
--- extents.c 2000/04/28 06:06:02 1.27.2.22
+++ extents.c 2000/07/18 10:36:47
@@ -1,6 +1,6 @@
/* Copyright (c) 1994, 1995 Free Software Foundation, Inc.
Copyright (c) 1995 Sun Microsystems, Inc.
- Copyright (c) 1995, 1996 Ben Wing.
+ Copyright (c) 1995, 1996, 2000 Ben Wing.
This file is part of XEmacs.
@@ -1860,7 +1860,7 @@
case ME_ALL_EXTENTS_OPEN: start_open = 1, end_open = 1; break;
case ME_ALL_EXTENTS_CLOSED_OPEN: start_open = 0, end_open = 1; break;
case ME_ALL_EXTENTS_OPEN_CLOSED: start_open = 1, end_open = 0; break;
- default: abort(); break;
+ default: abort(); return 0;
}
start = buffer_or_string_bytind_to_startind (obj, from,
@@ -1895,7 +1895,7 @@
retval = (start <= exs && exs <= end) || (start <= exe && exe
<= end);
break;
default:
- abort(); break;
+ abort(); return 0;
}
return flags & ME_NEGATE_IN_REGION ? !retval : retval;
}
@@ -3245,8 +3245,9 @@
if ((NILP (obj) && (flags & DE_MUST_HAVE_BUFFER))
|| (extent_detached_p (extent) && (flags & DE_MUST_BE_ATTACHED)))
{
- signal_simple_error ("extent doesn't belong to a buffer or string",
- extent_obj);
+ signal_type_error (Qinvalid_argument,
+ "extent doesn't belong to a buffer or string",
+ extent_obj);
}
return extent;
@@ -3536,7 +3537,9 @@
return Qnil;
for (rest = parent; !NILP (rest); rest = extent_parent (XEXTENT (rest)))
if (EQ (rest, extent))
- signal_simple_error ("Circular parent chain would result", extent);
+ signal_type_error (Qinvalid_change,
+ "Circular parent chain would result",
+ extent);
if (NILP (parent))
{
remove_extent_from_children_list (XEXTENT (cur_parent), extent);
@@ -3899,7 +3902,8 @@
EQ (sym, Qstart_and_end_in_region) ? ME_START_AND_END_IN_REGION :
EQ (sym, Qstart_or_end_in_region) ? ME_START_OR_END_IN_REGION :
EQ (sym, Qnegate_in_region) ? ME_NEGATE_IN_REGION :
- (signal_simple_error ("Invalid `map-extents' flag", sym), 0);
+ (signal_type_error (Qinvalid_argument,
+ "Invalid `map-extents' flag", sym), 0);
flags = XCDR (flags);
}
@@ -4237,11 +4241,12 @@
struct extent_at_arg
{
- EXTENT best_match;
+ Lisp_Object best_match; /* or list of extents */
Memind best_start;
Memind best_end;
Lisp_Object prop;
EXTENT before;
+ int all_extents;
};
enum extent_at_flag
@@ -4262,7 +4267,8 @@
if (EQ (at_flag, Qbefore)) return EXTENT_AT_BEFORE;
if (EQ (at_flag, Qat)) return EXTENT_AT_AT;
- signal_simple_error ("Invalid AT-FLAG in `extent-at'", at_flag);
+ signal_type_error (Qinvalid_argument,
+ "Invalid AT-FLAG in `extent-at'", at_flag);
return EXTENT_AT_AFTER; /* unreached */
}
@@ -4284,13 +4290,15 @@
return 0;
}
+ if (!closure->all_extents)
{
- EXTENT current = closure->best_match;
-
- if (!current)
+ EXTENT current;
+
+ if (NILP (closure->best_match))
goto accept;
+ current = XEXTENT (closure->best_match);
/* redundant but quick test */
- else if (extent_start (current) > extent_start (e))
+ if (extent_start (current) > extent_start (e))
return 0;
/* we return the "last" best fit, instead of the first --
@@ -4303,20 +4311,27 @@
else
return 0;
accept:
- closure->best_match = e;
+ XSETEXTENT (closure->best_match, e);
closure->best_start = extent_start (e);
closure->best_end = extent_end (e);
}
+ else
+ {
+ Lisp_Object extent;
+
+ XSETEXTENT (extent, e);
+ closure->best_match = Fcons (extent, closure->best_match);
+ }
return 0;
}
static Lisp_Object
extent_at_bytind (Bytind position, Lisp_Object object, Lisp_Object property,
- EXTENT before, enum extent_at_flag at_flag)
+ EXTENT before, enum extent_at_flag at_flag, int all_extents)
{
struct extent_at_arg closure;
- Lisp_Object extent_obj;
+ struct gcpro gcpro1;
/* it might be argued that invalid positions should cause
errors, but the principle of least surprise dictates that
@@ -4334,20 +4349,21 @@
: position > buffer_or_string_absolute_end_byte (object)))
return Qnil;
- closure.best_match = 0;
+ closure.best_match = Qnil;
closure.prop = property;
closure.before = before;
+ closure.all_extents = all_extents;
+ GCPRO1 (closure.best_match);
map_extents_bytind (at_flag == EXTENT_AT_BEFORE ? position - 1 : position,
at_flag == EXTENT_AT_AFTER ? position + 1 : position,
extent_at_mapper, (void *) &closure, object, 0,
ME_START_OPEN | ME_ALL_EXTENTS_CLOSED);
-
- if (!closure.best_match)
- return Qnil;
-
- XSETEXTENT (extent_obj, closure.best_match);
- return extent_obj;
+ if (all_extents)
+ closure.best_match = Fnreverse (closure.best_match);
+ UNGCPRO;
+
+ return closure.best_match;
}
DEFUN ("extent-at", Fextent_at, 1, 5, 0, /*
@@ -4390,11 +4406,63 @@
before_extent = 0;
else
before_extent = decode_extent (before, DE_MUST_BE_ATTACHED);
+ if (before_extent && !EQ (object, extent_object (before_extent)))
+ signal_type_error (Qinvalid_argument,
+ "extent not in specified buffer or string", object);
+ fl = decode_extent_at_flag (at_flag);
+
+ return extent_at_bytind (position, object, property, before_extent, fl, 0);
+}
+
+DEFUN ("extents-at", Fextents_at, 1, 5, 0, /*
+Find all extents at POS in OBJECT having PROPERTY set.
+Normally, an extent is "at" POS if it overlaps the region (POS, POS+1);
+ i.e. if it covers the character after POS. (However, see the definition
+ of AT-FLAG.)
+This provides similar functionality to `extent-list', but does so in a way
+ that is compatible with `extent-at'. (For example, errors due to POS out of
+ range are ignored; this makes it safer to use this function in response to
+ a mouse event, because in many cases previous events have changed the buffer
+ contents.)
+OBJECT specifies a buffer or string and defaults to the current buffer.
+PROPERTY defaults to nil, meaning that any extent will do.
+Properties are attached to extents with `set-extent-property', which see.
+Returns nil if POS is invalid or there is no matching extent at POS.
+If the fourth argument BEFORE is not nil, it must be an extent; any returned
+ extent will precede that extent. This feature allows `extents-at' to be
+ used by a loop over extents.
+AT-FLAG controls how end cases are handled, and should be one of:
+
+nil or `after' An extent is at POS if it covers the character
+ after POS. This is consistent with the way
+ that text properties work.
+`before' An extent is at POS if it covers the character
+ before POS.
+`at' An extent is at POS if it overlaps or abuts POS.
+ This includes all zero-length extents at POS.
+
+Note that in all cases, the start-openness and end-openness of the extents
+considered is ignored. If you want to pay attention to those properties,
+you should use `map-extents', which gives you more control.
+*/
+ (pos, object, property, before, at_flag))
+{
+ Bytind position;
+ EXTENT before_extent;
+ enum extent_at_flag fl;
+
+ object = decode_buffer_or_string (object);
+ position = get_buffer_or_string_pos_byte (object, pos, GB_NO_ERROR_IF_BAD);
+ if (NILP (before))
+ before_extent = 0;
+ else
+ before_extent = decode_extent (before, DE_MUST_BE_ATTACHED);
if (before_extent && !EQ (object, extent_object (before_extent)))
- signal_simple_error ("extent not in specified buffer or string", object);
+ signal_type_error (Qinvalid_argument,
+ "extent not in specified buffer or string", object);
fl = decode_extent_at_flag (at_flag);
- return extent_at_bytind (position, object, property, before_extent, fl);
+ return extent_at_bytind (position, object, property, before_extent, fl, 1);
}
/* ------------------------------- */
@@ -4999,7 +5067,8 @@
if (EQ (layout_obj, Qwhitespace)) return GL_WHITESPACE;
if (EQ (layout_obj, Qtext)) return GL_TEXT;
- signal_simple_error ("Unknown glyph layout type", layout_obj);
+ signal_type_error (Qinvalid_argument,
+ "Unknown glyph layout type", layout_obj);
return GL_TEXT; /* unreached */
}
@@ -5965,14 +6034,14 @@
/* text_props_only specifies whether we only consider text-property
extents (those with the 'text-prop property set) or all extents. */
if (!text_props_only)
- extent = extent_at_bytind (position, object, prop, 0, fl);
+ extent = extent_at_bytind (position, object, prop, 0, fl, 0);
else
{
EXTENT prior = 0;
while (1)
{
extent = extent_at_bytind (position, object, Qtext_prop, prior,
- fl);
+ fl, 0);
if (NILP (extent))
return Qnil;
if (EQ (prop, Fextent_property (extent, Qtext_prop, Qnil)))
@@ -6504,7 +6573,8 @@
prop = Fextent_property (extent, Qtext_prop, Qnil);
if (NILP (prop))
- signal_simple_error ("Internal error: no text-prop", extent);
+ signal_type_error (Qinternal_error,
+ "Internal error: no text-prop", extent);
val = Fextent_property (extent, prop, Qnil);
#if 0
/* removed by bill perry, 2/9/97
@@ -6512,8 +6582,9 @@
** with a value of Qnil. This is bad bad bad.
*/
if (NILP (val))
- signal_simple_error_2 ("Internal error: no text-prop",
- extent, prop);
+ signal_type_error_2 (Qinternal_error,
+ "Internal error: no text-prop",
+ extent, prop);
#endif
Fput_text_property (from, to, prop, val, Qnil);
return Qnil; /* important! */
@@ -6757,6 +6828,7 @@
DEFSUBR (Fmap_extents);
DEFSUBR (Fmap_extent_children);
DEFSUBR (Fextent_at);
+ DEFSUBR (Fextents_at);
DEFSUBR (Fset_extent_initial_redisplay_function);
DEFSUBR (Fextent_face);
Index: src/file-coding.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/file-coding.c,v
retrieving revision 1.7.2.40
diff -u -r1.7.2.40 file-coding.c
--- file-coding.c 2000/04/03 08:01:27 1.7.2.40
+++ file-coding.c 2000/07/18 10:36:48
@@ -882,7 +882,6 @@
(name, type, doc_string, props))
{
Lisp_Coding_System *codesys;
- Lisp_Object rest, key, value;
enum coding_system_type ty;
int need_to_setup_eol_systems = 1;
@@ -914,92 +913,94 @@
CHECK_STRING (doc_string);
CODING_SYSTEM_DOC_STRING (codesys) = doc_string;
- EXTERNAL_PROPERTY_LIST_LOOP (rest, key, value, props)
- {
- if (EQ (key, Qmnemonic))
- {
- if (!NILP (value))
- CHECK_STRING (value);
- CODING_SYSTEM_MNEMONIC (codesys) = value;
- }
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, props)
+ {
+ if (EQ (key, Qmnemonic))
+ {
+ if (!NILP (value))
+ CHECK_STRING (value);
+ CODING_SYSTEM_MNEMONIC (codesys) = value;
+ }
- else if (EQ (key, Qeol_type))
- {
- need_to_setup_eol_systems = NILP (value);
- if (EQ (value, Qt))
- value = Qnil;
- CODING_SYSTEM_EOL_TYPE (codesys) = symbol_to_eol_type (value);
- }
+ else if (EQ (key, Qeol_type))
+ {
+ need_to_setup_eol_systems = NILP (value);
+ if (EQ (value, Qt))
+ value = Qnil;
+ CODING_SYSTEM_EOL_TYPE (codesys) = symbol_to_eol_type (value);
+ }
- else if (EQ (key, Qpost_read_conversion)) CODING_SYSTEM_POST_READ_CONVERSION
(codesys) = value;
- else if (EQ (key, Qpre_write_conversion)) CODING_SYSTEM_PRE_WRITE_CONVERSION
(codesys) = value;
+ else if (EQ (key, Qpost_read_conversion)) CODING_SYSTEM_POST_READ_CONVERSION (codesys) =
value;
+ else if (EQ (key, Qpre_write_conversion)) CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys) =
value;
#ifdef MULE
- else if (ty == CODESYS_ISO2022)
- {
+ else if (ty == CODESYS_ISO2022)
+ {
#define FROB_INITIAL_CHARSET(charset_num) \
CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, charset_num) = \
((EQ (value, Qt) || EQ (value, Qnil)) ? value : Fget_charset (value))
- if (EQ (key, Qcharset_g0)) FROB_INITIAL_CHARSET (0);
- else if (EQ (key, Qcharset_g1)) FROB_INITIAL_CHARSET (1);
- else if (EQ (key, Qcharset_g2)) FROB_INITIAL_CHARSET (2);
- else if (EQ (key, Qcharset_g3)) FROB_INITIAL_CHARSET (3);
+ if (EQ (key, Qcharset_g0)) FROB_INITIAL_CHARSET (0);
+ else if (EQ (key, Qcharset_g1)) FROB_INITIAL_CHARSET (1);
+ else if (EQ (key, Qcharset_g2)) FROB_INITIAL_CHARSET (2);
+ else if (EQ (key, Qcharset_g3)) FROB_INITIAL_CHARSET (3);
#define FROB_FORCE_CHARSET(charset_num) \
CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT (codesys, charset_num) = !NILP (value)
- else if (EQ (key, Qforce_g0_on_output)) FROB_FORCE_CHARSET (0);
- else if (EQ (key, Qforce_g1_on_output)) FROB_FORCE_CHARSET (1);
- else if (EQ (key, Qforce_g2_on_output)) FROB_FORCE_CHARSET (2);
- else if (EQ (key, Qforce_g3_on_output)) FROB_FORCE_CHARSET (3);
+ else if (EQ (key, Qforce_g0_on_output)) FROB_FORCE_CHARSET (0);
+ else if (EQ (key, Qforce_g1_on_output)) FROB_FORCE_CHARSET (1);
+ else if (EQ (key, Qforce_g2_on_output)) FROB_FORCE_CHARSET (2);
+ else if (EQ (key, Qforce_g3_on_output)) FROB_FORCE_CHARSET (3);
#define FROB_BOOLEAN_PROPERTY(prop) \
CODING_SYSTEM_ISO2022_##prop (codesys) = !NILP (value)
- else if (EQ (key, Qshort)) FROB_BOOLEAN_PROPERTY (SHORT);
- else if (EQ (key, Qno_ascii_eol)) FROB_BOOLEAN_PROPERTY (NO_ASCII_EOL);
- else if (EQ (key, Qno_ascii_cntl)) FROB_BOOLEAN_PROPERTY (NO_ASCII_CNTL);
- else if (EQ (key, Qseven)) FROB_BOOLEAN_PROPERTY (SEVEN);
- else if (EQ (key, Qlock_shift)) FROB_BOOLEAN_PROPERTY (LOCK_SHIFT);
- else if (EQ (key, Qno_iso6429)) FROB_BOOLEAN_PROPERTY (NO_ISO6429);
- else if (EQ (key, Qescape_quoted)) FROB_BOOLEAN_PROPERTY (ESCAPE_QUOTED);
-
- else if (EQ (key, Qinput_charset_conversion))
- {
- codesys->iso2022.input_conv =
- Dynarr_new (charset_conversion_spec);
- parse_charset_conversion_specs (codesys->iso2022.input_conv,
- value);
- }
- else if (EQ (key, Qoutput_charset_conversion))
- {
- codesys->iso2022.output_conv =
- Dynarr_new (charset_conversion_spec);
- parse_charset_conversion_specs (codesys->iso2022.output_conv,
- value);
- }
- else
- signal_simple_error ("Unrecognized property", key);
- }
- else if (EQ (type, Qccl))
- {
- if (EQ (key, Qdecode))
- {
- CHECK_VECTOR (value);
- CODING_SYSTEM_CCL_DECODE (codesys) = value;
- }
- else if (EQ (key, Qencode))
- {
- CHECK_VECTOR (value);
- CODING_SYSTEM_CCL_ENCODE (codesys) = value;
- }
- else
- signal_simple_error ("Unrecognized property", key);
- }
+ else if (EQ (key, Qshort)) FROB_BOOLEAN_PROPERTY (SHORT);
+ else if (EQ (key, Qno_ascii_eol)) FROB_BOOLEAN_PROPERTY (NO_ASCII_EOL);
+ else if (EQ (key, Qno_ascii_cntl)) FROB_BOOLEAN_PROPERTY (NO_ASCII_CNTL);
+ else if (EQ (key, Qseven)) FROB_BOOLEAN_PROPERTY (SEVEN);
+ else if (EQ (key, Qlock_shift)) FROB_BOOLEAN_PROPERTY (LOCK_SHIFT);
+ else if (EQ (key, Qno_iso6429)) FROB_BOOLEAN_PROPERTY (NO_ISO6429);
+ else if (EQ (key, Qescape_quoted)) FROB_BOOLEAN_PROPERTY (ESCAPE_QUOTED);
+
+ else if (EQ (key, Qinput_charset_conversion))
+ {
+ codesys->iso2022.input_conv =
+ Dynarr_new (charset_conversion_spec);
+ parse_charset_conversion_specs (codesys->iso2022.input_conv,
+ value);
+ }
+ else if (EQ (key, Qoutput_charset_conversion))
+ {
+ codesys->iso2022.output_conv =
+ Dynarr_new (charset_conversion_spec);
+ parse_charset_conversion_specs (codesys->iso2022.output_conv,
+ value);
+ }
+ else
+ signal_simple_error ("Unrecognized property", key);
+ }
+ else if (EQ (type, Qccl))
+ {
+ if (EQ (key, Qdecode))
+ {
+ CHECK_VECTOR (value);
+ CODING_SYSTEM_CCL_DECODE (codesys) = value;
+ }
+ else if (EQ (key, Qencode))
+ {
+ CHECK_VECTOR (value);
+ CODING_SYSTEM_CCL_ENCODE (codesys) = value;
+ }
+ else
+ signal_simple_error ("Unrecognized property", key);
+ }
#endif /* MULE */
- else
- signal_simple_error ("Unrecognized property", key);
- }
+ else
+ signal_simple_error ("Unrecognized property", key);
+ }
+ }
if (need_to_setup_eol_systems)
setup_eol_coding_systems (codesys);
@@ -1218,7 +1219,7 @@
case EOL_LF: new_coding_system = CODING_SYSTEM_EOL_LF (cs); break;
case EOL_CR: new_coding_system = CODING_SYSTEM_EOL_CR (cs); break;
case EOL_CRLF: new_coding_system = CODING_SYSTEM_EOL_CRLF (cs); break;
- default: abort ();
+ default: abort (); return Qnil;
}
return NILP (new_coding_system) ? coding_system : new_coding_system;
@@ -5567,8 +5568,7 @@
{
INIT_LRECORD_IMPLEMENTATION (coding_system);
- deferror (&Qcoding_system_error, "coding-system-error",
- "Coding-system error", Qio_error);
+ DEFERROR_STANDARD (Qcoding_system_error, Qio_error);
DEFSUBR (Fcoding_system_p);
DEFSUBR (Ffind_coding_system);
Index: src/fileio.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/fileio.c,v
retrieving revision 1.51.2.24
diff -u -r1.51.2.24 fileio.c
--- fileio.c 2000/06/12 04:18:12 1.51.2.24
+++ fileio.c 2000/07/18 10:36:50
@@ -740,7 +740,7 @@
*/
(name, default_directory))
{
- /* This function can GC */
+ /* This function can GC. GC-checked 7-11-00 ben */
Bufbyte *nm;
Bufbyte *newdir, *p, *o;
@@ -757,6 +757,10 @@
#ifdef CYGWIN
char *user;
#endif
+ struct gcpro gcpro1, gcpro2;
+
+ /* both of these get set below */
+ GCPRO2 (name, default_directory);
CHECK_STRING (name);
@@ -764,8 +768,11 @@
call the corresponding file handler. */
handler = Ffind_file_name_handler (name, Qexpand_file_name);
if (!NILP (handler))
- return call3_check_string (handler, Qexpand_file_name, name,
- default_directory);
+ {
+ UNGCPRO;
+ return call3_check_string (handler, Qexpand_file_name, name,
+ default_directory);
+ }
/* Use the buffer's default-directory if DEFAULT_DIRECTORY is omitted. */
if (NILP (default_directory))
@@ -777,7 +784,10 @@
{
handler = Ffind_file_name_handler (default_directory, Qexpand_file_name);
if (!NILP (handler))
- return call3 (handler, Qexpand_file_name, name, default_directory);
+ {
+ UNGCPRO;
+ return call3 (handler, Qexpand_file_name, name, default_directory);
+ }
}
o = XSTRING_DATA (default_directory);
@@ -809,13 +819,8 @@
&& ! (IS_DIRECTORY_SEP (o[0]))
#endif /* not WIN32_NATIVE */
)
- {
- struct gcpro gcpro1;
- GCPRO1 (name);
- default_directory = Fexpand_file_name (default_directory, Qnil);
- UNGCPRO;
- }
+ default_directory = Fexpand_file_name (default_directory, Qnil);
#ifdef FILE_SYSTEM_CASE
name = FILE_SYSTEM_CASE (name);
@@ -918,11 +923,11 @@
XSTRING_DATA (name)[0] = DRIVE_LETTER (drive);
XSTRING_DATA (name)[1] = ':';
}
- return name;
+ RETURN_UNGCPRO (name);
#else /* not WIN32_NATIVE */
if (nm == XSTRING_DATA (name))
- return name;
- return build_string ((char *) nm);
+ RETURN_UNGCPRO (name);
+ RETURN_UNGCPRO (build_string ((char *) nm));
#endif /* not WIN32_NATIVE */
}
}
@@ -1236,7 +1241,7 @@
CORRECT_DIR_SEPS (target);
#endif /* WIN32_NATIVE */
- return make_string (target, o - target);
+ RETURN_UNGCPRO (make_string (target, o - target));
}
DEFUN ("file-truename", Ffile_truename, 1, 2, 0, /*
@@ -2130,8 +2135,8 @@
/* netunam, being a strange-o system call only used once, is not
encapsulated. */
- TO_EXTERNAL_FORMAT (LISP_STRING, path, C_STRING_ALLOCA, path_ext, Qfile_name);
- TO_EXTERNAL_FORMAT (LISP_STRING, login, C_STRING_ALLOCA, login_ext, Qnative);
+ LISP_TO_EXTERNAL (path, path_ext, Qfile_name);
+ LISP_TO_EXTERNAL (login, login_ext, Qnative);
netresult = netunam (path_ext, login_ext);
@@ -2202,7 +2207,7 @@
*/
(filename))
{
- /* This function can call lisp */
+ /* This function can call lisp; GC checked 7-11-00 ben */
Lisp_Object abspath;
Lisp_Object handler;
struct stat statbuf;
@@ -2229,7 +2234,7 @@
(filename))
{
- /* This function can GC. GC checked 1997.04.10. */
+ /* This function can GC. GC checked 07-11-2000 ben. */
Lisp_Object abspath;
Lisp_Object handler;
struct gcpro gcpro1;
@@ -3116,7 +3121,7 @@
int failure;
int save_errno = 0;
struct stat st;
- Lisp_Object fn;
+ Lisp_Object fn = Qnil;
int speccount = specpdl_depth ();
int visiting_other = STRINGP (visit);
int visiting = (EQ (visit, Qt) || visiting_other);
@@ -3125,12 +3130,23 @@
Lisp_Object annotations = Qnil;
struct buffer *given_buffer;
Bufpos start1, end1;
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
+ struct gcpro ngcpro1, ngcpro2;
+ Lisp_Object curbuf;
+
+ XSETBUFFER (curbuf, current_buffer);
- /* #### dmoore - if Fexpand_file_name or handlers kill the buffer,
+ /* start, end, visit, and append are never modified in this fun
+ so we don't protect them. */
+ GCPRO5 (visit_file, filename, codesys, lockname, annotations);
+ NGCPRO2 (curbuf, fn);
+
+ /* [[ dmoore - if Fexpand_file_name or handlers kill the buffer,
we should signal an error rather than blissfully continuing
along. ARGH, this function is going to lose lose lose. We need
to protect the current_buffer from being destroyed, but the
- multiple return points make this a pain in the butt. */
+ multiple return points make this a pain in the butt. ]] we do
+ protect curbuf now. --ben */
#ifdef FILE_CODING
codesys = Fget_coding_system (codesys);
@@ -3144,9 +3160,6 @@
{
Lisp_Object handler;
- struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
-
- GCPRO5 (start, filename, visit, visit_file, lockname);
if (visiting_other)
visit_file = Fexpand_file_name (visit, Qnil);
@@ -3154,11 +3167,11 @@
visit_file = filename;
filename = Fexpand_file_name (filename, Qnil);
- UNGCPRO;
-
if (NILP (lockname))
lockname = visit_file;
+ /* We used to UNGCPRO here. BAD! visit_file is used below after
+ more Lisp calling. */
/* If the file name has special constructs in it,
call the corresponding file handler. */
handler = Ffind_file_name_handler (filename, Qwrite_region);
@@ -3177,21 +3190,15 @@
current_buffer->filename = visit_file;
MARK_MODELINE_CHANGED;
}
+ NUNGCPRO;
+ UNGCPRO;
return val;
}
}
#ifdef CLASH_DETECTION
if (!auto_saving)
- {
- Lisp_Object curbuf;
- struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
-
- XSETBUFFER (curbuf, current_buffer);
- GCPRO5 (start, filename, visit_file, lockname, curbuf);
- lock_file (lockname);
- UNGCPRO;
- }
+ lock_file (lockname);
#endif /* CLASH_DETECTION */
/* Special kludge to simplify auto-saving. */
@@ -3237,9 +3244,9 @@
{
Lisp_Object desc_locative = Fcons (make_int (desc), Qnil);
Lisp_Object instream = Qnil, outstream = Qnil;
- struct gcpro gcpro1, gcpro2;
+ struct gcpro nngcpro1, nngcpro2;
/* need to gcpro; QUIT could happen out of call to write() */
- GCPRO2 (instream, outstream);
+ NNGCPRO2 (instream, outstream);
record_unwind_protect (close_file_unwind, desc_locative);
@@ -3297,7 +3304,6 @@
save_errno = errno;
}
Lstream_close (XLSTREAM (instream));
- UNGCPRO;
#ifdef HAVE_FSYNC
/* Note fsync appears to change the modtime on BSD4.2 (both vax and sun).
@@ -3331,6 +3337,8 @@
as necessary). */
XCAR (desc_locative) = Qnil;
unbind_to (speccount, Qnil);
+
+ NNUNGCPRO;
}
stat ((char *) XSTRING_DATA (fn), &st);
@@ -3360,6 +3368,8 @@
}
else if (quietly)
{
+ NUNGCPRO;
+ UNGCPRO;
return Qnil;
}
@@ -3369,19 +3379,21 @@
message ("Wrote %s", XSTRING_DATA (visit_file));
else
{
- struct gcpro gcpro1;
Lisp_Object fsp;
- GCPRO1 (fn);
+ struct gcpro nngcpro1;
+ NNGCPRO1 (fsp);
fsp = Ffile_symlink_p (fn);
if (NILP (fsp))
message ("Wrote %s", XSTRING_DATA (fn));
else
message ("Wrote %s (symlink to %s)",
XSTRING_DATA (fn), XSTRING_DATA (fsp));
- UNGCPRO;
+ NNUNGCPRO;
}
}
+ NUNGCPRO;
+ UNGCPRO;
return Qnil;
}
@@ -3633,7 +3645,7 @@
*/
(buf))
{
- /* This function can call lisp */
+ /* This function can call lisp; GC checked 7-11-00 ben */
struct buffer *b;
struct stat st;
Lisp_Object handler;
@@ -4149,9 +4161,8 @@
defsymbol (&Qformat_annotate_function, "format-annotate-function");
defsymbol (&Qcompute_buffer_file_truename,
"compute-buffer-file-truename");
- deferror (&Qfile_error, "file-error", "File error",
Qio_error);
- deferror (&Qfile_already_exists, "file-already-exists",
- "File already exists", Qfile_error);
+ DEFERROR_STANDARD (Qfile_error, Qio_error);
+ DEFERROR_STANDARD (Qfile_already_exists, Qfile_error);
DEFSUBR (Ffind_file_name_handler);
Index: src/filelock.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/filelock.c,v
retrieving revision 1.10.2.7
diff -u -r1.10.2.7 filelock.c
--- filelock.c 2000/04/22 00:43:56 1.10.2.7
+++ filelock.c 2000/07/18 10:36:50
@@ -123,6 +123,7 @@
static int
lock_file_1 (char *lfname, int force)
{
+ /* Does not GC. */
int err;
char *lock_info_str;
char *host_name;
@@ -160,6 +161,7 @@
static int
current_lock_owner (lock_info_type *owner, char *lfname)
{
+ /* Does not GC. */
int len, ret;
int local_owner = 0;
char *at, *dot;
@@ -257,6 +259,7 @@
static int
lock_if_free (lock_info_type *clasher, char *lfname)
{
+ /* Does not GC. */
if (lock_file_1 (lfname, 0) == 0)
{
int locker;
@@ -298,7 +301,7 @@
void
lock_file (Lisp_Object fn)
{
- /* This function can GC. */
+ /* This function can GC. GC checked 7-11-00 ben */
/* dmoore - and can destroy current_buffer and all sorts of other
mean nasty things with pointy teeth. If you call this make sure
you protect things right. */
@@ -325,7 +328,7 @@
if (!NILP (subject_buf)
&& NILP (Fverify_visited_file_modtime (subject_buf))
&& !NILP (Ffile_exists_p (fn)))
- call1_in_buffer (XBUFFER(subject_buf),
+ call1_in_buffer (XBUFFER (subject_buf),
Qask_user_about_supersession_threat, fn);
}
@@ -358,6 +361,7 @@
void
unlock_file (Lisp_Object fn)
{
+ /* This can GC */
register char *lfname;
struct gcpro gcpro1;
Index: src/fns.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/fns.c,v
retrieving revision 1.30.2.42
diff -u -r1.30.2.42 fns.c
--- fns.c 2000/06/12 04:18:13 1.30.2.42
+++ fns.c 2000/07/18 10:36:51
@@ -710,6 +710,7 @@
string_result_ptr = string_result;
break;
default:
+ val = Qnil;
abort ();
}
}
@@ -1219,7 +1220,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt, tail;
EXTERNAL_LIST_LOOP_3 (list_elt, list, tail)
{
if (internal_equal (elt, list_elt, 0))
@@ -1236,7 +1236,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt, tail;
EXTERNAL_LIST_LOOP_3 (list_elt, list, tail)
{
if (internal_old_equal (elt, list_elt, 0))
@@ -1251,7 +1250,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt, tail;
EXTERNAL_LIST_LOOP_3 (list_elt, list, tail)
{
if (EQ_WITH_EBOLA_NOTICE (elt, list_elt))
@@ -1268,7 +1266,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt, tail;
EXTERNAL_LIST_LOOP_3 (list_elt, list, tail)
{
if (HACKEQ_UNSAFE (elt, list_elt))
@@ -1280,7 +1277,6 @@
Lisp_Object
memq_no_quit (Lisp_Object elt, Lisp_Object list)
{
- Lisp_Object list_elt, tail;
LIST_LOOP_3 (list_elt, list, tail)
{
if (EQ_WITH_EBOLA_NOTICE (elt, list_elt))
@@ -1296,7 +1292,6 @@
(key, list))
{
/* This function can GC. */
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (internal_equal (key, elt_car, 0))
@@ -1312,7 +1307,6 @@
(key, list))
{
/* This function can GC. */
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (internal_old_equal (key, elt_car, 0))
@@ -1336,7 +1330,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (EQ_WITH_EBOLA_NOTICE (key, elt_car))
@@ -1354,7 +1347,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (HACKEQ_UNSAFE (key, elt_car))
@@ -1370,7 +1362,6 @@
assq_no_quit (Lisp_Object key, Lisp_Object list)
{
/* This cannot GC. */
- Lisp_Object elt;
LIST_LOOP_2 (elt, list)
{
Lisp_Object elt_car = XCAR (elt);
@@ -1386,7 +1377,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (internal_equal (key, elt_cdr, 0))
@@ -1401,7 +1391,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (internal_old_equal (key, elt_cdr, 0))
@@ -1416,7 +1405,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (EQ_WITH_EBOLA_NOTICE (key, elt_cdr))
@@ -1431,7 +1419,6 @@
*/
(key, list))
{
- Lisp_Object elt, elt_car, elt_cdr;
EXTERNAL_ALIST_LOOP_4 (elt, elt_car, elt_cdr, list)
{
if (HACKEQ_UNSAFE (key, elt_cdr))
@@ -1445,7 +1432,6 @@
Lisp_Object
rassq_no_quit (Lisp_Object key, Lisp_Object list)
{
- Lisp_Object elt;
LIST_LOOP_2 (elt, list)
{
Lisp_Object elt_cdr = XCDR (elt);
@@ -1466,7 +1452,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt;
EXTERNAL_LIST_LOOP_DELETE_IF (list_elt, list,
(internal_equal (elt, list_elt, 0)));
return list;
@@ -1481,7 +1466,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt;
EXTERNAL_LIST_LOOP_DELETE_IF (list_elt, list,
(internal_old_equal (elt, list_elt, 0)));
return list;
@@ -1496,7 +1480,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt;
EXTERNAL_LIST_LOOP_DELETE_IF (list_elt, list,
(EQ_WITH_EBOLA_NOTICE (elt, list_elt)));
return list;
@@ -1511,7 +1494,6 @@
*/
(elt, list))
{
- Lisp_Object list_elt;
EXTERNAL_LIST_LOOP_DELETE_IF (list_elt, list,
(HACKEQ_UNSAFE (elt, list_elt)));
return list;
@@ -1523,7 +1505,6 @@
Lisp_Object
delq_no_quit (Lisp_Object elt, Lisp_Object list)
{
- Lisp_Object list_elt;
LIST_LOOP_DELETE_IF (list_elt, list,
(EQ_WITH_EBOLA_NOTICE (elt, list_elt)));
return list;
@@ -1573,7 +1554,6 @@
*/
(key, list))
{
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
internal_equal (key, XCAR (elt), 0)));
@@ -1597,7 +1577,6 @@
*/
(key, list))
{
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
EQ_WITH_EBOLA_NOTICE (key, XCAR (elt))));
@@ -1609,7 +1588,6 @@
Lisp_Object
remassq_no_quit (Lisp_Object key, Lisp_Object list)
{
- Lisp_Object elt;
LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
EQ_WITH_EBOLA_NOTICE (key, XCAR (elt))));
@@ -1625,7 +1603,6 @@
*/
(value, list))
{
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
internal_equal (value, XCDR (elt), 0)));
@@ -1641,7 +1618,6 @@
*/
(value, list))
{
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
EQ_WITH_EBOLA_NOTICE (value, XCDR (elt))));
@@ -1652,7 +1628,6 @@
Lisp_Object
remrassq_no_quit (Lisp_Object value, Lisp_Object list)
{
- Lisp_Object elt;
LIST_LOOP_DELETE_IF (elt, list,
(CONSP (elt) &&
EQ_WITH_EBOLA_NOTICE (value, XCDR (elt))));
@@ -1692,7 +1667,6 @@
(list))
{
Lisp_Object reversed_list = Qnil;
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_2 (elt, list)
{
reversed_list = Fcons (elt, reversed_list);
@@ -2958,12 +2932,11 @@
if (vals == 0) we don't have any free space available and
don't want to eat up any more stack with alloca().
- So we use EXTERNAL_LIST_LOOP_3 and GCPRO the tail. */
+ So we use EXTERNAL_LIST_LOOP_3_NO_DECLARE and GCPRO the tail. */
if (vals)
{
Lisp_Object *val = vals;
- Lisp_Object elt;
LIST_LOOP_2 (elt, sequence)
*val++ = elt;
@@ -2979,12 +2952,13 @@
else
{
Lisp_Object elt, tail;
+ EMACS_INT len_unused;
struct gcpro ngcpro1;
NGCPRO1 (tail);
{
- EXTERNAL_LIST_LOOP_3 (elt, sequence, tail)
+ EXTERNAL_LIST_LOOP_4_NO_DECLARE (elt, sequence, tail, len_unused)
{
args[1] = elt;
Ffuncall (2, args);
Index: src/frame-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame-msw.c,v
retrieving revision 1.29.2.24
diff -u -r1.29.2.24 frame-msw.c
--- frame-msw.c 2000/07/11 23:44:32 1.29.2.24
+++ frame-msw.c 2000/07/18 10:36:51
@@ -188,6 +188,7 @@
rect_default.top = rect.top + POPUP_OFFSET;
char_to_real_pixel_size (f, POPUP_WIDTH, POPUP_HEIGHT,
&rect_default.width, &rect_default.height);
+ FRAME_MSWINDOWS_POPUP (f) = 1;
}
AdjustWindowRectEx(&rect, style, ADJR_MENUFLAG, exstyle);
@@ -217,6 +218,9 @@
SetWindowLong (hwnd, XWL_FRAMEOBJ, (LONG)LISP_TO_VOID(frame_obj));
FRAME_MSWINDOWS_DC(f) = GetDC (hwnd);
SetTextAlign (FRAME_MSWINDOWS_DC(f), TA_BASELINE | TA_LEFT | TA_NOUPDATECP);
+
+ if (FRAME_MSWINDOWS_POPUP (f))
+ mswindows_register_popup_frame (frame_obj);
}
static void
@@ -287,6 +291,9 @@
{
if (f->frame_data)
{
+ Lisp_Object frame;
+ XSETFRAME (frame, f);
+ mswindows_unregister_popup_frame (frame);
ReleaseDC(FRAME_MSWINDOWS_HANDLE(f), FRAME_MSWINDOWS_DC(f));
DestroyWindow(FRAME_MSWINDOWS_HANDLE(f));
xfree (f->frame_data);
Index: src/frame-tty.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame-tty.c,v
retrieving revision 1.8.2.2
diff -u -r1.8.2.2 frame-tty.c
--- frame-tty.c 1999/11/19 10:57:06 1.8.2.2
+++ frame-tty.c 2000/07/18 10:36:51
@@ -124,7 +124,6 @@
static void
tty_raise_frame_no_select (struct frame *f)
{
- Lisp_Object frame;
LIST_LOOP_2 (frame, DEVICE_FRAME_LIST (XDEVICE (FRAME_DEVICE (f))))
{
struct frame *o = XFRAME (frame);
Index: src/frame-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame-x.c,v
retrieving revision 1.41.2.16
diff -u -r1.41.2.16 frame-x.c
--- frame-x.c 2000/03/13 07:27:57 1.41.2.16
+++ frame-x.c 2000/07/18 10:36:52
@@ -23,6 +23,8 @@
/* Substantially rewritten for XEmacs. */
+/* 7-8-00 !!#### This file needs definite Mule review. */
+
#include <config.h>
#include "lisp.h"
@@ -662,9 +664,7 @@
{
const char * tmp;
encoding = DEVICE_XATOM_COMPOUND_TEXT (XDEVICE (FRAME_DEVICE (f)));
- TO_EXTERNAL_FORMAT (C_STRING, value,
- C_STRING_ALLOCA, tmp,
- Qctext);
+ C_TO_EXTERNAL (value, tmp, Qctext);
new_XtValue = (String) tmp;
break;
}
@@ -766,9 +766,7 @@
if (XSTRING_LENGTH (prop) == 0)
continue;
- TO_EXTERNAL_FORMAT (LISP_STRING, prop,
- C_STRING_ALLOCA, extprop,
- Qctext);
+ LISP_TO_EXTERNAL (prop, extprop, Qctext);
if (STRINGP (val))
{
const Extbyte *extval;
@@ -1876,9 +1874,7 @@
#endif
if (STRINGP (f->name))
- TO_EXTERNAL_FORMAT (LISP_STRING, f->name,
- C_STRING_ALLOCA, name,
- Qctext);
+ LISP_TO_EXTERNAL (f->name, name, Qctext);
else
name = "emacs";
Index: src/frame.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame.c,v
retrieving revision 1.37.2.33
diff -u -r1.37.2.33 frame.c
--- frame.c 2000/07/11 23:44:33 1.37.2.33
+++ frame.c 2000/07/18 10:36:53
@@ -1748,13 +1748,14 @@
DEFUN ("mouse-pixel-position", Fmouse_pixel_position, 0, 1, 0, /*
Return a list (WINDOW X . Y) giving the current mouse window and position.
-The position is given in pixel units, where (0, 0) is the upper-left corner.
+The position is given in pixel units, where (0, 0) is the upper-left corner
+of the window.
When the cursor is not over a window, the return value is a list (nil nil).
DEVICE specifies the device on which to read the mouse position, and
defaults to the selected device. If the device is a mouseless terminal
-or Emacs hasn't been programmed to read its mouse position, it returns
+or XEmacs hasn't been programmed to read its mouse position, it returns
the device's selected window for WINDOW and nil for X and Y.
*/
(device))
Index: src/frame.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame.h,v
retrieving revision 1.18.2.15
diff -u -r1.18.2.15 frame.h
--- frame.h 2000/05/03 14:47:04 1.18.2.15
+++ frame.h 2000/07/18 10:36:54
@@ -242,6 +242,7 @@
DECLARE_LRECORD (frame, struct frame);
#define XFRAME(x) XRECORD (x, frame, struct frame)
#define XSETFRAME(x, p) XSETRECORD (x, p, frame)
+#define wrap_frame(p) wrap_object (p)
#define FRAMEP(x) RECORDP (x, frame)
#define CHECK_FRAME(x) CHECK_RECORD (x, frame)
#define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame)
Index: src/general.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/general.c,v
retrieving revision 1.13.2.17
diff -u -r1.13.2.17 general.c
--- general.c 2000/07/13 09:06:34 1.13.2.17
+++ general.c 2000/07/18 10:36:54
@@ -1,6 +1,6 @@
/* Commonly-used symbols
Copyright (C) 1995 Sun Microsystems.
- Copyright (C) 1995, 1996 Ben Wing.
+ Copyright (C) 1995, 1996, 2000 Ben Wing.
This file is part of XEmacs.
@@ -21,353 +21,32 @@
/* Synched up with: Not in FSF. */
-/* The purpose of this file is as a central place to stick symbols
- that don't have any obvious connection to any particular module
- and might be used in many different contexts.
+/* See general-slots.h.
+*/
- #### More should be put here.
- */
-
#include <config.h>
#include "lisp.h"
-Lisp_Object Qabort;
-Lisp_Object Qactually_requested;
-Lisp_Object Qafter;
-Lisp_Object Qall;
-Lisp_Object Qand;
-Lisp_Object Qappend;
-Lisp_Object Qassoc;
-Lisp_Object Qat;
-Lisp_Object Qautodetect;
-Lisp_Object Qbad_variable;
-Lisp_Object Qbefore;
-Lisp_Object Qbinary;
-Lisp_Object Qbitmap;
-Lisp_Object Qboolean;
-Lisp_Object Qbottom;
-Lisp_Object Qbottom_margin;
-Lisp_Object Qbuffer;
-Lisp_Object Qbutton;
-Lisp_Object Qcancel;
-Lisp_Object Qcategory;
-Lisp_Object Qcenter;
-Lisp_Object Qchannel;
-Lisp_Object Qchar;
-Lisp_Object Qcharacter;
-Lisp_Object Qchars;
-Lisp_Object Qcolor;
-Lisp_Object Qcolumns;
-Lisp_Object Qcommand;
-Lisp_Object Qconsole;
-Lisp_Object Qcopies;
-Lisp_Object Qcritical;
-Lisp_Object Qctext;
-Lisp_Object Qcursor;
-Lisp_Object Qdata;
-Lisp_Object Qdead;
-Lisp_Object Qdefault;
-Lisp_Object Qdelete;
-Lisp_Object Qdelq;
-Lisp_Object Qdevice;
-Lisp_Object Qdialog;
-Lisp_Object Qdimension;
-Lisp_Object Qdisplay;
-Lisp_Object Qdoc_string;
-Lisp_Object Qduplex;
-Lisp_Object Qdynarr_overhead;
-Lisp_Object Qempty;
-Lisp_Object Qeq;
-Lisp_Object Qeql;
-Lisp_Object Qequal;
-Lisp_Object Qeval;
-Lisp_Object Qextents;
-Lisp_Object Qface;
-Lisp_Object Qfile_name;
-Lisp_Object Qfont;
-Lisp_Object Qframe;
-Lisp_Object Qfrom_page;
-Lisp_Object Qfull_assoc;
-Lisp_Object Qfuncall;
-Lisp_Object Qfunction;
-Lisp_Object Qgap_overhead;
-Lisp_Object Qgeneric;
-Lisp_Object Qgeometry;
-Lisp_Object Qglobal;
-Lisp_Object Qgutter;
-Lisp_Object Qheight;
-Lisp_Object Qhelp;
-Lisp_Object Qhighlight;
-Lisp_Object Qhorizontal;
-Lisp_Object Qicon;
-Lisp_Object Qid;
-Lisp_Object Qignore;
-Lisp_Object Qimage;
-Lisp_Object Qinfo;
-Lisp_Object Qinherit;
-Lisp_Object Qinteger;
-Lisp_Object Qinternal;
-Lisp_Object Qkey;
-Lisp_Object Qkey_assoc;
-Lisp_Object Qkeyboard;
-Lisp_Object Qkeymap;
-Lisp_Object Qlandscape;
-Lisp_Object Qlast_command;
-Lisp_Object Qleft;
-Lisp_Object Qleft_margin;
-Lisp_Object Qlet;
-Lisp_Object Qlist;
-Lisp_Object Qmagic;
-Lisp_Object Qmalloc_overhead;
-Lisp_Object Qmarkers;
-Lisp_Object Qmax;
-Lisp_Object Qmemory;
-Lisp_Object Qmenubar;
-Lisp_Object Qmessage;
-Lisp_Object Qminus;
-Lisp_Object Qmodifiers;
-Lisp_Object Qmotion;
-Lisp_Object Qmsprinter;
-Lisp_Object Qmswindows;
-Lisp_Object Qname;
-Lisp_Object Qno;
-Lisp_Object Qnone;
-Lisp_Object Qnot;
-Lisp_Object Qnothing;
-Lisp_Object Qnotice;
-Lisp_Object Qobject;
-Lisp_Object Qok;
-Lisp_Object Qold_assoc;
-Lisp_Object Qold_delete;
-Lisp_Object Qold_delq;
-Lisp_Object Qold_rassoc;
-Lisp_Object Qold_rassq;
-Lisp_Object Qonly;
-Lisp_Object Qor;
-Lisp_Object Qorientation;
-Lisp_Object Qother;
-Lisp_Object Qpointer;
-Lisp_Object Qpopup;
-Lisp_Object Qportrait;
-Lisp_Object Qprint;
-Lisp_Object Qprinter;
-Lisp_Object Qprocess;
-Lisp_Object Qprovide;
-Lisp_Object Qrassoc;
-Lisp_Object Qrassq;
-Lisp_Object Qrequire;
-Lisp_Object Qresource;
-Lisp_Object Qretry;
-Lisp_Object Qreturn;
-Lisp_Object Qreverse;
-Lisp_Object Qright;
-Lisp_Object Qright_margin;
-Lisp_Object Qsearch;
-Lisp_Object Qselected;
-Lisp_Object Qsignal;
-Lisp_Object Qsimple;
-Lisp_Object Qsize;
-Lisp_Object Qspace;
-Lisp_Object Qspecifier;
-Lisp_Object Qstream;
-Lisp_Object Qstring;
-Lisp_Object Qsymbol;
-Lisp_Object Qsyntax;
-Lisp_Object Qterminal;
-Lisp_Object Qtest;
-Lisp_Object Qtext;
-Lisp_Object Qthis_command;
-Lisp_Object Qtimeout;
-Lisp_Object Qtimestamp;
-Lisp_Object Qtoolbar;
-Lisp_Object Qtop;
-Lisp_Object Qtop_margin;
-Lisp_Object Qto_page;
-Lisp_Object Qtty;
-Lisp_Object Qtype;
-Lisp_Object Qundecided;
-Lisp_Object Qundefined;
-Lisp_Object Qunimplemented;
-Lisp_Object Qvalue_assoc;
-Lisp_Object Qvertical;
-Lisp_Object Qwarning;
-Lisp_Object Qwidget;
-Lisp_Object Qwidth;
-Lisp_Object Qwindow;
-Lisp_Object Qwindow_system;
-Lisp_Object Qx;
-Lisp_Object Qy;
-Lisp_Object Qyes;
+#define SYMBOL(fou) Lisp_Object fou
+#define SYMBOL_KEYWORD(la_cle_est_fou) Lisp_Object la_cle_est_fou
+#define SYMBOL_GENERAL(tout_le_monde, est_fou) Lisp_Object tout_le_monde
+
+#include "general-slots.h"
+
+#undef SYMBOL
+#undef SYMBOL_KEYWORD
+#undef SYMBOL_GENERAL
void
syms_of_general (void)
{
- defsymbol (&Qabort, "abort");
- defsymbol (&Qactually_requested, "actually-requested");
- defsymbol (&Qafter, "after");
- defsymbol (&Qall, "all");
- defsymbol (&Qand, "and");
- defsymbol (&Qappend, "append");
- defsymbol (&Qassoc, "assoc");
- defsymbol (&Qat, "at");
- defsymbol (&Qautodetect, "autodetect");
- defsymbol (&Qbad_variable, "bad-variable");
- defsymbol (&Qbefore, "before");
- defsymbol (&Qbinary, "binary");
- defsymbol (&Qbitmap, "bitmap");
- defsymbol (&Qboolean, "boolean");
- defsymbol (&Qbottom, "bottom");
- defsymbol (&Qbottom_margin, "bottom-margin");
- defsymbol (&Qbuffer, "buffer");
- defsymbol (&Qbutton, "button");
- defsymbol (&Qcancel, "cancel");
- defsymbol (&Qcategory, "category");
- defsymbol (&Qcenter, "center");
- defsymbol (&Qchannel, "channel");
- defsymbol (&Qchar, "char");
- defsymbol (&Qcharacter, "character");
- defsymbol (&Qchars, "chars");
- defsymbol (&Qcolor, "color");
- defsymbol (&Qcolumns, "columns");
- defsymbol (&Qcommand, "command");
- defsymbol (&Qconsole, "console");
- defsymbol (&Qcopies, "copies");
- defsymbol (&Qcritical, "critical");
- defsymbol (&Qctext, "ctext");
- defsymbol (&Qcursor, "cursor");
- defsymbol (&Qdata, "data");
- defsymbol (&Qdead, "dead");
- defsymbol (&Qdefault, "default");
- defsymbol (&Qdelete, "delete");
- defsymbol (&Qdelq, "delq");
- defsymbol (&Qdevice, "device");
- defsymbol (&Qdialog, "dialog");
- defsymbol (&Qdimension, "dimension");
- defsymbol (&Qdisplay, "display");
- defsymbol (&Qdoc_string, "doc-string");
- defsymbol (&Qduplex, "duplex");
- defsymbol (&Qdynarr_overhead, "dynarr-overhead");
- defsymbol (&Qempty, "empty");
- defsymbol (&Qeq, "eq");
- defsymbol (&Qeql, "eql");
- defsymbol (&Qequal, "equal");
- defsymbol (&Qeval, "eval");
- defsymbol (&Qextents, "extents");
- defsymbol (&Qface, "face");
- defsymbol (&Qfile_name, "file-name");
- defsymbol (&Qfont, "font");
- defsymbol (&Qframe, "frame");
- defsymbol (&Qfrom_page, "from-page");
- defsymbol (&Qfunction, "function");
- defsymbol (&Qfull_assoc, "full-assoc");
- defsymbol (&Qfuncall, "funcall");
- defsymbol (&Qfunction, "function");
- defsymbol (&Qgap_overhead, "gap-overhead");
- defsymbol (&Qgeneric, "generic");
- defsymbol (&Qgeometry, "geometry");
- defsymbol (&Qglobal, "global");
- defsymbol (&Qgutter, "gutter");
- defsymbol (&Qheight, "height");
- defsymbol (&Qhelp, "help");
- defsymbol (&Qhighlight, "highlight");
- defsymbol (&Qhorizontal, "horizontal");
- defsymbol (&Qicon, "icon");
- defsymbol (&Qid, "id");
- defsymbol (&Qignore, "ignore");
- defsymbol (&Qimage, "image");
- defsymbol (&Qinfo, "info");
- defsymbol (&Qinherit, "inherit");
- defsymbol (&Qinteger, "integer");
- defsymbol (&Qinternal, "internal");
- defsymbol (&Qkey, "key");
- defsymbol (&Qkey_assoc, "key-assoc");
- defsymbol (&Qkeyboard, "keyboard");
- defsymbol (&Qkeymap, "keymap");
- defsymbol (&Qlandscape, "landscape");
- defsymbol (&Qlast_command, "last-command");
- defsymbol (&Qleft, "left");
- defsymbol (&Qleft_margin, "left-margin");
- defsymbol (&Qlet, "let");
- defsymbol (&Qlist, "list");
- defsymbol (&Qmagic, "magic");
- defsymbol (&Qmalloc_overhead, "malloc-overhead");
- defsymbol (&Qmarkers, "markers");
- defsymbol (&Qmax, "max");
- defsymbol (&Qmemory, "memory");
- defsymbol (&Qmenubar, "menubar");
- defsymbol (&Qmessage, "message");
- defsymbol (&Qminus, "-");
- defsymbol (&Qmodifiers, "modifiers");
- defsymbol (&Qmotion, "motion");
- defsymbol (&Qmsprinter, "msprinter");
- defsymbol (&Qmswindows, "mswindows");
- defsymbol (&Qname, "name");
- defsymbol (&Qno, "no");
- defsymbol (&Qnone, "none");
- defsymbol (&Qnot, "not");
- defsymbol (&Qnothing, "nothing");
- defsymbol (&Qnotice, "notice");
- defsymbol (&Qobject, "object");
- defsymbol (&Qok, "ok");
- defsymbol (&Qold_assoc, "old-assoc");
- defsymbol (&Qold_delete, "old-delete");
- defsymbol (&Qold_delq, "old-delq");
- defsymbol (&Qold_rassoc, "old-rassoc");
- defsymbol (&Qold_rassq, "old-rassq");
- defsymbol (&Qonly, "only");
- defsymbol (&Qor, "or");
- defsymbol (&Qorientation, "orientation");
- defsymbol (&Qother, "other");
- defsymbol (&Qpointer, "pointer");
- defsymbol (&Qpopup, "popup");
- defsymbol (&Qportrait, "portrait");
- defsymbol (&Qprint, "print");
- defsymbol (&Qprinter, "printer");
- defsymbol (&Qprocess, "process");
- defsymbol (&Qprovide, "provide");
- defsymbol (&Qrassoc, "rassoc");
- defsymbol (&Qrassq, "rassq");
- defsymbol (&Qrequire, "require");
- defsymbol (&Qresource, "resource");
- defsymbol (&Qretry, "retry");
- defsymbol (&Qreturn, "return");
- defsymbol (&Qreverse, "reverse");
- defsymbol (&Qright, "right");
- defsymbol (&Qright_margin, "right-margin");
- defsymbol (&Qsearch, "search");
- defsymbol (&Qselected, "selected");
- defsymbol (&Qsignal, "signal");
- defsymbol (&Qsimple, "simple");
- defsymbol (&Qsize, "size");
- defsymbol (&Qspace, "space");
- defsymbol (&Qspecifier, "specifier");
- defsymbol (&Qstream, "stream");
- defsymbol (&Qstring, "string");
- defsymbol (&Qsymbol, "symbol");
- defsymbol (&Qsyntax, "syntax");
- defsymbol (&Qterminal, "terminal");
- defsymbol (&Qtest, "test");
- defsymbol (&Qtext, "text");
- defsymbol (&Qthis_command, "this-command");
- defsymbol (&Qtimeout, "timeout");
- defsymbol (&Qtimestamp, "timestamp");
- defsymbol (&Qtoolbar, "toolbar");
- defsymbol (&Qtop, "top");
- defsymbol (&Qtop_margin, "top-margin");
- defsymbol (&Qto_page, "to-page");
- defsymbol (&Qtty, "tty");
- defsymbol (&Qtype, "type");
- defsymbol (&Qundecided, "undecided");
- defsymbol (&Qundefined, "undefined");
- defsymbol (&Qunimplemented, "unimplemented");
- defsymbol (&Qvalue_assoc, "value-assoc");
- defsymbol (&Qvertical, "vertical");
- defsymbol (&Qwarning, "warning");
- defsymbol (&Qwidget, "widget");
- defsymbol (&Qwidth, "width");
- defsymbol (&Qwindow, "window");
- defsymbol (&Qwindow_system, "window-system");
- defsymbol (&Qx, "x");
- defsymbol (&Qy, "y");
- defsymbol (&Qyes, "yes");
+#define SYMBOL(loco) DEFSYMBOL (loco)
+#define SYMBOL_KEYWORD(meshugeneh) DEFKEYWORD (meshugeneh)
+#define SYMBOL_GENERAL(vachement, fou) defsymbol (&vachement, fou)
+
+#include "general-slots.h"
+
+#undef SYMBOL
+#undef SYMBOL_KEYWORD
+#undef SYMBOL_GENERAL
}
Index: src/glyphs-eimage.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs-eimage.c,v
retrieving revision 1.3.2.17
diff -u -r1.3.2.17 glyphs-eimage.c
--- glyphs-eimage.c 2000/05/03 14:47:05 1.3.2.17
+++ glyphs-eimage.c 2000/07/18 10:36:54
@@ -1255,7 +1255,7 @@
mem_struct.len = len;
mem_struct.index = 0;
- unwind.tiff = TIFFClientOpen ("memfile", "r", &mem_struct,
+ unwind.tiff = TIFFClientOpen ("memfile", "r", (thandle_t)
&mem_struct,
(TIFFReadWriteProc)tiff_memory_read,
(TIFFReadWriteProc)tiff_memory_write,
tiff_memory_seek, tiff_memory_close, tiff_memory_size,
Index: src/glyphs-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs-msw.c,v
retrieving revision 1.21.2.59
diff -u -r1.21.2.59 glyphs-msw.c
--- glyphs-msw.c 2000/06/12 04:18:14 1.21.2.59
+++ glyphs-msw.c 2000/07/18 10:36:55
@@ -1315,13 +1315,33 @@
signal_simple_error ("Invalid resource identifier", resource_id);
/* load the image */
- if (!(himage = LoadImage (hinst, resid, type, 0, 0,
- LR_CREATEDIBSECTION | LR_DEFAULTSIZE |
- LR_SHARED |
- (!NILP (file) ? LR_LOADFROMFILE : 0))))
+ if (xLoadImageA) /* not in NT 3.5 */
{
- signal_simple_error ("Cannot load image", instantiator);
+ if (!(himage = xLoadImageA (hinst, resid, type, 0, 0,
+ LR_CREATEDIBSECTION | LR_DEFAULTSIZE |
+ LR_SHARED |
+ (!NILP (file) ? LR_LOADFROMFILE : 0))))
+ signal_simple_error ("Cannot load image", instantiator);
}
+ else
+ {
+ /* Is this correct? I don't really care. */
+ switch (type)
+ {
+ case IMAGE_BITMAP:
+ himage = LoadBitmap (hinst, resid);
+ break;
+ case IMAGE_CURSOR:
+ himage = LoadCursor (hinst, resid);
+ break;
+ case IMAGE_ICON:
+ himage = LoadIcon (hinst, resid);
+ break;
+ }
+
+ if (!himage)
+ signal_simple_error ("Cannot load image", instantiator);
+ }
if (hinst)
FreeLibrary (hinst);
@@ -2527,12 +2547,12 @@
pointer_bg, dest_mask, domain, "STATIC",
/* Approximation to styles available with
an XEmacs layout. */
- EQ (IMAGE_INSTANCE_LAYOUT_BORDER (ii),
- Qetched_in) ||
- EQ (IMAGE_INSTANCE_LAYOUT_BORDER (ii),
- Qetched_out) ||
- GLYPHP (IMAGE_INSTANCE_LAYOUT_BORDER (ii))
- ? SS_ETCHEDFRAME : SS_SUNKEN,
+ (EQ (IMAGE_INSTANCE_LAYOUT_BORDER (ii),
+ Qetched_in) ||
+ EQ (IMAGE_INSTANCE_LAYOUT_BORDER (ii),
+ Qetched_out) ||
+ GLYPHP (IMAGE_INSTANCE_LAYOUT_BORDER (ii))
+ ? SS_ETCHEDFRAME : SS_SUNKEN) | DS_CONTROL,
0);
}
Index: src/glyphs-widget.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/Attic/glyphs-widget.c,v
retrieving revision 1.1.2.44
diff -u -r1.1.2.44 glyphs-widget.c
--- glyphs-widget.c 2000/06/22 04:47:08 1.1.2.44
+++ glyphs-widget.c 2000/07/18 10:36:55
@@ -58,9 +58,6 @@
DEFINE_IMAGE_INSTANTIATOR_FORMAT (native_layout);
Lisp_Object Qnative_layout;
-Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items;
-Lisp_Object Q_image, Q_text, Q_orientation, Q_justify, Q_border;
-Lisp_Object Q_margin_width;
Lisp_Object Qetched_in, Qetched_out, Qbevel_in, Qbevel_out;
#ifdef DEBUG_WIDGETS
@@ -1254,18 +1251,6 @@
void
syms_of_glyphs_widget (void)
{
- defkeyword (&Q_descriptor, ":descriptor");
- defkeyword (&Q_height, ":height");
- defkeyword (&Q_width, ":width");
- defkeyword (&Q_properties, ":properties");
- defkeyword (&Q_items, ":items");
- defkeyword (&Q_image, ":image");
- defkeyword (&Q_text, ":text");
- defkeyword (&Q_orientation, ":orientation");
- defkeyword (&Q_justify, ":justify");
- defkeyword (&Q_border, ":border");
- defkeyword (&Q_margin_width, ":margin-width");
-
defsymbol (&Qetched_in, "etched-in");
defsymbol (&Qetched_out, "etched-out");
defsymbol (&Qbevel_in, "bevel-in");
Index: src/glyphs-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs-x.c,v
retrieving revision 1.49.2.72
diff -u -r1.49.2.72 glyphs-x.c
--- glyphs-x.c 2000/07/09 06:32:15 1.49.2.72
+++ glyphs-x.c 2000/07/18 10:36:56
@@ -25,6 +25,8 @@
/* Synched up with: Not in FSF. */
+/* 7-8-00 This file is more or less Mule-ized in my Mule workspace. */
+
/* Original author: Jamie Zawinski for 19.8
font-truename stuff added by Jamie Zawinski for 19.10
subwindow support added by Chuck Thompson
@@ -1163,9 +1165,7 @@
{
const char *ext_data;
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (mask_data))),
- C_STRING_ALLOCA, ext_data,
- Qbinary);
+ LISP_TO_EXTERNAL (XCAR (XCDR (XCDR (mask_data))), ext_data, Qbinary);
mask = pixmap_from_xbm_inline (IMAGE_INSTANCE_DEVICE (ii),
XINT (XCAR (mask_data)),
XINT (XCAR (XCDR (mask_data))),
@@ -1189,9 +1189,7 @@
assert (!NILP (data));
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (data))),
- C_STRING_ALLOCA, ext_data,
- Qbinary);
+ LISP_TO_EXTERNAL (XCAR (XCDR (XCDR (data))), ext_data, Qbinary);
xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
pointer_bg, dest_mask, XINT (XCAR (data)),
@@ -1677,9 +1675,7 @@
assert (!NILP (data));
- TO_EXTERNAL_FORMAT (LISP_STRING, data,
- C_STRING_ALLOCA, dstring,
- Qbinary);
+ LISP_TO_EXTERNAL (data, dstring, Qbinary);
if ((p = strchr (dstring, ':')))
{
@@ -1851,9 +1847,7 @@
if (dest_mask & IMAGE_POINTER_MASK)
{
const char *name_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, data,
- C_STRING_ALLOCA, name_ext,
- Qfile_name);
+ LISP_TO_EXTERNAL (data, name_ext, Qfile_name);
if (XmuCursorNameToIndex (name_ext) != -1)
{
result = alist_to_tagged_vector (Qcursor_font, alist);
@@ -2053,9 +2047,7 @@
if (!(dest_mask & IMAGE_POINTER_MASK))
incompatible_image_types (instantiator, dest_mask, IMAGE_POINTER_MASK);
- TO_EXTERNAL_FORMAT (LISP_STRING, data,
- C_STRING_ALLOCA, name_ext,
- Qfile_name);
+ LISP_TO_EXTERNAL (data, name_ext, Qfile_name);
if ((i = XmuCursorNameToIndex (name_ext)) == -1)
signal_simple_error ("Unrecognized cursor-font name", data);
@@ -2232,9 +2224,7 @@
{
char* str;
Lisp_Object val = IMAGE_INSTANCE_WIDGET_TEXT (p);
- TO_EXTERNAL_FORMAT (LISP_STRING, val,
- C_STRING_ALLOCA, str,
- Qnative);
+ LISP_TO_EXTERNAL (val, str, Qnative);
wv->value = str;
}
@@ -2449,9 +2439,7 @@
IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET;
if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
- TO_EXTERNAL_FORMAT (LISP_STRING, IMAGE_INSTANCE_WIDGET_TEXT (ii),
- C_STRING_ALLOCA, nm,
- Qnative);
+ LISP_TO_EXTERNAL (IMAGE_INSTANCE_WIDGET_TEXT (ii), nm, Qnative);
ii->data = xnew_and_zero (struct x_subwindow_data);
Index: src/glyphs.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs.c,v
retrieving revision 1.23.2.74
diff -u -r1.23.2.74 glyphs.c
--- glyphs.c 2000/06/22 04:47:08 1.23.2.74
+++ glyphs.c 2000/07/18 10:36:58
@@ -2472,9 +2472,7 @@
int result;
const char *filename_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, name,
- C_STRING_ALLOCA, filename_ext,
- Qfile_name);
+ LISP_TO_EXTERNAL (name, filename_ext, Qfile_name);
result = read_bitmap_data_from_file (filename_ext, &w, &h,
&data, xhot, yhot);
@@ -2718,9 +2716,7 @@
int result;
char *fname = 0;
- TO_EXTERNAL_FORMAT (LISP_STRING, name,
- C_STRING_ALLOCA, fname,
- Qfile_name);
+ LISP_TO_EXTERNAL (name, fname, Qfile_name);
result = XpmReadFileToData (fname, &data);
if (result == XpmSuccess)
@@ -4774,22 +4770,22 @@
DEFSUBR (Fset_console_type_image_conversion_list);
DEFSUBR (Fconsole_type_image_conversion_list);
- defkeyword (&Q_file, ":file");
- defkeyword (&Q_data, ":data");
- defkeyword (&Q_face, ":face");
- defkeyword (&Q_pixel_height, ":pixel-height");
- defkeyword (&Q_pixel_width, ":pixel-width");
+ DEFKEYWORD (Q_file);
+ DEFKEYWORD (Q_data);
+ DEFKEYWORD (Q_face);
+ DEFKEYWORD (Q_pixel_height);
+ DEFKEYWORD (Q_pixel_width);
#ifdef HAVE_XPM
- defkeyword (&Q_color_symbols, ":color-symbols");
+ DEFKEYWORD (Q_color_symbols);
#endif
#ifdef HAVE_WINDOW_SYSTEM
- defkeyword (&Q_mask_file, ":mask-file");
- defkeyword (&Q_mask_data, ":mask-data");
- defkeyword (&Q_hotspot_x, ":hotspot-x");
- defkeyword (&Q_hotspot_y, ":hotspot-y");
- defkeyword (&Q_foreground, ":foreground");
- defkeyword (&Q_background, ":background");
+ DEFKEYWORD (Q_mask_file);
+ DEFKEYWORD (Q_mask_data);
+ DEFKEYWORD (Q_hotspot_x);
+ DEFKEYWORD (Q_hotspot_y);
+ DEFKEYWORD (Q_foreground);
+ DEFKEYWORD (Q_background);
#endif
/* image specifiers */
@@ -4873,10 +4869,7 @@
DEFSUBR (Fglyph_animated_timeout_handler);
/* Errors */
- deferror (&Qimage_conversion_error,
- "image-conversion-error",
- "image-conversion error", Qio_error);
-
+ DEFERROR_STANDARD (Qimage_conversion_error, Qio_error);
}
static const struct lrecord_description image_specifier_description[] = {
Index: src/gui-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui-x.c,v
retrieving revision 1.14.2.26
diff -u -r1.14.2.26 gui-x.c
--- gui-x.c 2000/05/03 14:47:10 1.14.2.26
+++ gui-x.c 2000/07/18 10:36:58
@@ -1,6 +1,6 @@
/* General GUI code -- X-specific. (menubars, scrollbars, toolbars, dialogs)
Copyright (C) 1995 Board of Trustees, University of Illinois.
- Copyright (C) 1995, 1996 Ben Wing.
+ Copyright (C) 1995, 1996, 2000 Ben Wing.
Copyright (C) 1995 Sun Microsystems, Inc.
Copyright (C) 1998 Free Software Foundation, Inc.
@@ -23,6 +23,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized by Ben Wing, 7-8-00. */
+
#include <config.h>
#include "lisp.h"
@@ -40,8 +42,6 @@
#include "redisplay.h"
#include "opaque.h"
-Lisp_Object Qmenu_no_selection_hook;
-
/* we need a unique id for each popup menu, dialog box, and scrollbar */
static unsigned int lwlib_id_tick;
@@ -153,8 +153,9 @@
static void
print_widget_value (widget_value *wv, int depth)
{
- /* !!#### This function has not been Mule-ized */
- char d [200];
+ /* strings in wv are in external format; use printf not stdout_out
+ because the latter takes internal-format strings */
+ Extbyte d [200];
int i;
for (i = 0; i < depth; i++) d[i] = ' ';
d[depth]=0;
@@ -312,11 +313,11 @@
((void) (slot = (!NILP (form))))
#endif
-char *
-menu_separator_style (const char *s)
+Extbyte *
+menu_separator_style_and_to_external (const Bufbyte *s)
{
- const char *p;
- char first;
+ const Bufbyte *p;
+ Bufbyte first;
if (!s || s[0] == '\0')
return NULL;
@@ -336,18 +337,25 @@
? NULL /* single etched is the default */
: xstrdup ("shadowDoubleEtchedIn"));
else if (*p == ':')
- return xstrdup (p+1);
+ {
+ Extbyte *retval;
+ C_TO_EXTERNAL_MALLOC (p + 1, retval, Qlwlib_encoding);
+ return retval;
+ }
+
return NULL;
}
-char *
-strdup_and_add_accel (char *name)
+Extbyte *
+add_accel_and_to_external (Lisp_Object string)
{
int i;
int found_accel = 0;
+ Extbyte *retval;
+ Bufbyte *name = XSTRING_DATA (string);
- for (i=0; name[i]; ++i)
+ for (i = 0; name[i]; ++i)
if (name[i] == '%' && name[i+1] == '_')
{
found_accel = 1;
@@ -355,15 +363,17 @@
}
if (found_accel)
- return xstrdup (name);
+ LISP_TO_EXTERNAL_MALLOC (string, retval, Qlwlib_encoding);
else
{
- char *chars = (char *) alloca (strlen (name) + 3);
+ Bufbyte *chars = (Bufbyte *) alloca (strlen (name) + 3);
chars[0] = '%';
chars[1] = '_';
- memcpy (chars+2, name, strlen (name) + 1);
- return xstrdup (chars);
+ memcpy (chars + 2, name, strlen (name) + 1);
+ C_TO_EXTERNAL_MALLOC (chars, retval, Qlwlib_encoding);
}
+
+ return retval;
}
/* This does the dirty work. gc_currently_forbidden is 1 when this is called.
@@ -374,7 +384,6 @@
int allow_text_field_p, int no_keys_p,
int menu_entry_p)
{
- /* !!#### This function has not been Mule-ized */
/* This function cannot GC because gc_currently_forbidden is set when
it's called */
Lisp_Gui_Item* pgui = 0;
@@ -383,17 +392,16 @@
if (STRINGP (gui_item))
{
wv->type = TEXT_TYPE;
- wv->name = (char *) XSTRING_DATA (gui_item);
- wv->name = strdup_and_add_accel (wv->name);
+ wv->name = add_accel_and_to_external (gui_item);
return 1;
}
else if (!GUI_ITEMP (gui_item))
- signal_simple_error("need a string or a gui_item here", gui_item);
+ syntax_error ("need a string or a gui_item here", gui_item);
pgui = XGUI_ITEM (gui_item);
if (!NILP (pgui->filter))
- signal_simple_error(":filter keyword not permitted on leaf nodes",
gui_item);
+ syntax_error (":filter keyword not permitted on leaf nodes", gui_item);
#ifdef HAVE_MENUBARS
if (menu_entry_p && !gui_item_included_p (gui_item, Vmenubar_configuration))
@@ -407,13 +415,11 @@
pgui->name = Feval (pgui->name);
CHECK_STRING (pgui->name);
- wv->name = (char *) XSTRING_DATA (pgui->name);
- wv->name = xstrdup (wv->name);
+ wv->name = add_accel_and_to_external (pgui->name);
wv->accel = LISP_TO_VOID (gui_item_accelerator (gui_item));
if (!NILP (pgui->suffix))
{
- const char *const_bogosity;
Lisp_Object suffix2;
/* Shortcut to avoid evaluating suffix each time */
@@ -425,11 +431,7 @@
CHECK_STRING (suffix2);
}
- TO_EXTERNAL_FORMAT (LISP_STRING, suffix2,
- C_STRING_ALLOCA, const_bogosity,
- Qfile_name);
- wv->value = (char *) const_bogosity;
- wv->value = xstrdup (wv->value);
+ LISP_TO_EXTERNAL_MALLOC (suffix2, wv->value, Qlwlib_encoding);
}
wv_set_evalable_slot (wv->enabled, pgui->active);
@@ -451,7 +453,7 @@
CHECK_STRING (pgui->keys);
pgui->keys = Fsubstitute_command_keys (pgui->keys);
if (XSTRING_LENGTH (pgui->keys) > 0)
- wv->key = xstrdup ((char *) XSTRING_DATA (pgui->keys));
+ LISP_TO_EXTERNAL_MALLOC (pgui->keys, wv->key, Qlwlib_encoding);
else
wv->key = 0;
}
@@ -461,7 +463,7 @@
/* #### Warning, dependency here on current_buffer and point */
where_is_to_char (pgui->callback, buf);
if (buf [0])
- wv->key = xstrdup (buf);
+ C_TO_EXTERNAL_MALLOC (buf, wv->key, Qlwlib_encoding);
else
wv->key = 0;
}
@@ -469,14 +471,16 @@
CHECK_SYMBOL (pgui->style);
if (NILP (pgui->style))
{
+ Bufbyte *intname;
/* If the callback is nil, treat this item like unselectable text.
This way, dashes will show up as a separator. */
if (!wv->enabled)
wv->type = BUTTON_TYPE;
- if (separator_string_p (wv->name))
+ EXTERNAL_TO_C (wv->name, intname, Qlwlib_encoding);
+ if (separator_string_p (intname))
{
wv->type = SEPARATOR_TYPE;
- wv->value = menu_separator_style (wv->name);
+ wv->value = menu_separator_style_and_to_external (intname);
}
else
{
@@ -509,20 +513,21 @@
#endif
}
else
- signal_simple_error_2 ("Unknown style", pgui->style, gui_item);
+ syntax_error_2 ("Unknown style", pgui->style, gui_item);
if (!allow_text_field_p && (wv->type == TEXT_TYPE))
- signal_simple_error ("Text field not allowed in this context", gui_item);
+ syntax_error ("Text field not allowed in this context", gui_item);
if (!NILP (pgui->selected) && EQ (pgui->style, Qtext))
- signal_simple_error (
- ":selected only makes sense with :style toggle, radio or button",
- gui_item);
+ syntax_error
+ (":selected only makes sense with :style toggle, radio or button",
+ gui_item);
return 1;
}
/* parse tree's of gui items into widget_value hierarchies */
-static void gui_item_children_to_widget_values (Lisp_Object gui_object_instance,
+static void gui_item_children_to_widget_values (Lisp_Object
+ gui_object_instance,
Lisp_Object items,
widget_value* parent);
@@ -537,7 +542,7 @@
/* now walk the tree creating widget_values as appropriate */
if (!CONSP (items))
{
- wv = xmalloc_widget_value();
+ wv = xmalloc_widget_value ();
if (parent)
parent->contents = wv;
else
@@ -552,15 +557,13 @@
prev->next = 0;
}
else
- {
- wv->value = xstrdup (wv->name); /* what a mess... */
- }
+ wv->value = xstrdup (wv->name); /* what a mess... */
}
else
{
/* first one is the parent */
if (CONSP (XCAR (items)))
- signal_simple_error ("parent item must not be a list", XCAR (items));
+ syntax_error ("parent item must not be a list", XCAR (items));
if (parent)
wv = gui_items_to_widget_values_1 (gui_object_instance,
@@ -598,14 +601,13 @@
widget_value *
gui_items_to_widget_values (Lisp_Object gui_object_instance, Lisp_Object items)
{
- /* !!#### This function has not been Mule-ized */
/* This function can GC */
widget_value *control = 0, *tmp = 0;
int count = specpdl_depth ();
Lisp_Object wv_closure;
if (NILP (items))
- signal_simple_error ("must have some items", items);
+ syntax_error ("must have some items", items);
/* Inhibit GC during this conversion. The reasons for this are
the same as in menu_item_descriptor_to_widget_value(); see
@@ -616,7 +618,7 @@
/* Also make sure that we free the partially-created widget_value
tree on Lisp error. */
- control = xmalloc_widget_value();
+ control = xmalloc_widget_value ();
wv_closure = make_opaque_ptr (control);
record_unwind_protect (widget_value_unwind, wv_closure);
@@ -698,8 +700,6 @@
syms_of_gui_x (void)
{
INIT_LRECORD_IMPLEMENTATION (popup_data);
-
- defsymbol (&Qmenu_no_selection_hook, "menu-no-selection-hook");
}
void
@@ -721,14 +721,4 @@
Vpopup_callbacks = Qnil;
staticpro (&Vpopup_callbacks);
-
-#if 0
- /* This DEFVAR_LISP is just for the benefit of make-docfile. */
- /* #### misnamed */
- DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /*
-Function or functions to call when a menu or dialog box is dismissed
-without a selection having been made.
-*/ );
-#endif
- Fset (Qmenu_no_selection_hook, Qnil);
}
Index: src/gui-x.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui-x.h,v
retrieving revision 1.5.2.8
diff -u -r1.5.2.8 gui-x.h
--- gui-x.h 2000/04/28 15:17:22 1.5.2.8
+++ gui-x.h 2000/07/18 10:36:58
@@ -1,6 +1,6 @@
/* General GUI code -- X-specific header file.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
- Copyright (C) 1996 Ben Wing.
+ Copyright (C) 1996, 2000 Ben Wing.
This file is part of XEmacs.
@@ -21,6 +21,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized by Ben Wing, 7-8-00. */
+
#ifndef INCLUDED_gui_x_h_
#define INCLUDED_gui_x_h_
@@ -68,15 +70,14 @@
void free_popup_widget_value_tree (widget_value *wv);
void popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
XtPointer client_data);
-char *strdup_and_add_accel (char *name);
+Extbyte *add_accel_and_to_external (Lisp_Object string);
int button_item_to_widget_value (Lisp_Object gui_object_instance,
Lisp_Object gui_item, widget_value *wv,
int allow_text_field_p, int no_keys_p,
int menu_entry_p);
widget_value * gui_items_to_widget_values (Lisp_Object gui_object_instance,
Lisp_Object items);
-Lisp_Object menu_name_to_accelerator (char *name);
-char *menu_separator_style (const char *s);
+Extbyte *menu_separator_style_and_to_external (const Bufbyte *s);
Lisp_Object widget_value_unwind (Lisp_Object closure);
#endif /* INCLUDED_gui_x_h_ */
Index: src/gui.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui.c,v
retrieving revision 1.10.2.29
diff -u -r1.10.2.29 gui.c
--- gui.c 2000/05/03 14:47:11 1.10.2.29
+++ gui.c 2000/07/18 10:36:58
@@ -23,6 +23,9 @@
/* Synched up with: Not in FSF. */
+/* This file not quite Mule-ized yet but will be when merged with my
+ Mule workspace. --ben */
+
#include <config.h>
#include "lisp.h"
#include "gui.h"
@@ -30,10 +33,7 @@
#include "buffer.h"
#include "bytecode.h"
-Lisp_Object Q_active, Q_suffix, Q_keys, Q_style, Q_selected;
-Lisp_Object Q_filter, Q_config, Q_included, Q_key_sequence;
-Lisp_Object Q_accelerator, Q_label, Q_callback, Q_callback_ex, Q_value;
-Lisp_Object Qtoggle, Qradio;
+Lisp_Object Qmenu_no_selection_hook;
static Lisp_Object parse_gui_item_tree_list (Lisp_Object list);
@@ -53,10 +53,10 @@
#endif /* HAVE_POPUPS */
int
-separator_string_p (const char *s)
+separator_string_p (const Bufbyte *s)
{
- const char *p;
- char first;
+ const Bufbyte *p;
+ Bufbyte first;
if (!s || s[0] == '\0')
return 0;
@@ -118,7 +118,7 @@
Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item);
if (!KEYWORDP (key))
- signal_simple_error_2 ("Non-keyword in gui item", key,
pgui_item->name);
+ syntax_error_2 ("Non-keyword in gui item", key, pgui_item->name);
if (EQ (key, Q_suffix)) pgui_item->suffix = val;
else if (EQ (key, Q_active)) pgui_item->active = val;
@@ -138,10 +138,10 @@
if (SYMBOLP (val) || CHARP (val))
pgui_item->accelerator = val;
else if (ERRB_EQ (errb, ERROR_ME))
- signal_simple_error ("Bad keyboard accelerator", val);
+ syntax_error ("Bad keyboard accelerator", val);
}
else if (ERRB_EQ (errb, ERROR_ME))
- signal_simple_error_2 ("Unknown keyword in gui item", key,
+ syntax_error_2 ("Unknown keyword in gui item", key,
pgui_item->name);
}
@@ -198,7 +198,7 @@
contents = XVECTOR_DATA (item);
if (length < 1)
- signal_simple_error ("GUI item descriptors must be at least 1 elts long",
item);
+ syntax_error ("GUI item descriptors must be at least 1 elts long", item);
/* length 1: [ "name" ]
length 2: [ "name" callback ]
@@ -233,7 +233,7 @@
{
int i;
if ((length - start) & 1)
- signal_simple_error (
+ syntax_error (
"GUI item descriptor has an odd number of keywords and values",
item);
@@ -384,7 +384,7 @@
static DOESNT_RETURN
signal_too_long_error (Lisp_Object name)
{
- signal_simple_error ("GUI item produces too long displayable string", name);
+ syntax_error ("GUI item produces too long displayable string", name);
}
#ifdef HAVE_WINDOW_SYSTEM
@@ -658,7 +658,7 @@
CHECK_STRING (entry);
}
else
- signal_simple_error ("item must be a vector or a string", entry);
+ syntax_error ("item must be a vector or a string", entry);
RETURN_UNGCPRO (ret);
}
@@ -714,24 +714,8 @@
syms_of_gui (void)
{
INIT_LRECORD_IMPLEMENTATION (gui_item);
-
- defkeyword (&Q_active, ":active");
- defkeyword (&Q_suffix, ":suffix");
- defkeyword (&Q_keys, ":keys");
- defkeyword (&Q_key_sequence,":key-sequence");
- defkeyword (&Q_style, ":style");
- defkeyword (&Q_selected, ":selected");
- defkeyword (&Q_filter, ":filter");
- defkeyword (&Q_config, ":config");
- defkeyword (&Q_included, ":included");
- defkeyword (&Q_accelerator, ":accelerator");
- defkeyword (&Q_label, ":label");
- defkeyword (&Q_callback, ":callback");
- defkeyword (&Q_callback_ex, ":callback-ex");
- defkeyword (&Q_value, ":value");
- defsymbol (&Qtoggle, "toggle");
- defsymbol (&Qradio, "radio");
+ defsymbol (&Qmenu_no_selection_hook, "menu-no-selection-hook");
#ifdef HAVE_POPUPS
DEFSUBR (Fpopup_up_p);
@@ -741,4 +725,13 @@
void
vars_of_gui (void)
{
+#if 0
+ /* This DEFVAR_LISP is just for the benefit of make-docfile. */
+ /* #### misnamed */
+ DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /*
+Function or functions to call when a menu or dialog box is dismissed
+without a selection having been made.
+*/ );
+#endif
+ Fset (Qmenu_no_selection_hook, Qnil);
}
Index: src/gui.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui.h,v
retrieving revision 1.6.2.16
diff -u -r1.6.2.16 gui.h
--- gui.h 2000/04/28 15:17:22 1.6.2.16
+++ gui.h 2000/07/18 10:36:58
@@ -27,7 +27,7 @@
#ifndef INCLUDED_gui_h_
#define INCLUDED_gui_h_
-int separator_string_p (const char *s);
+int separator_string_p (const Bufbyte *s);
void get_gui_callback (Lisp_Object, Lisp_Object *, Lisp_Object *);
extern int popup_up_p;
@@ -63,10 +63,6 @@
#define CHECK_GUI_ITEM(x) CHECK_RECORD (x, gui_item)
#define CONCHECK_GUI_ITEM(x) CONCHECK_RECORD (x, gui_item)
-extern Lisp_Object Q_accelerator, Q_active, Q_config, Q_filter, Q_included;
-extern Lisp_Object Q_keys, Q_selected, Q_suffix, Qradio, Qtoggle;
-extern Lisp_Object Q_key_sequence, Q_label, Q_callback, Q_callback_ex, Q_value;
-
void gui_item_add_keyval_pair (Lisp_Object,
Lisp_Object key, Lisp_Object val,
Error_behavior errb);
@@ -88,6 +84,8 @@
void gui_item_init (Lisp_Object gui_item);
Lisp_Object parse_gui_item_tree_children (Lisp_Object list);
Lisp_Object copy_gui_item_tree (Lisp_Object arg);
+
+extern Lisp_Object Qmenu_no_selection_hook;
/* this is mswindows biased but reasonably safe I think */
#define GUI_ITEM_ID_SLOTS 8
Index: src/insdel.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/insdel.c,v
retrieving revision 1.19.2.14
diff -u -r1.19.2.14 insdel.c
--- insdel.c 2000/06/12 04:18:16 1.19.2.14
+++ insdel.c 2000/07/18 10:36:59
@@ -1194,6 +1194,7 @@
Bufpos
get_buffer_pos_char (struct buffer *b, Lisp_Object pos, unsigned int flags)
{
+ /* Does not GC */
Bufpos ind;
Bufpos min_allowed, max_allowed;
@@ -1243,6 +1244,7 @@
get_buffer_range_char (struct buffer *b, Lisp_Object from, Lisp_Object to,
Bufpos *from_out, Bufpos *to_out, unsigned int flags)
{
+ /* Does not GC */
Bufpos min_allowed, max_allowed;
min_allowed = (flags & GB_ALLOW_PAST_ACCESSIBLE) ?
Index: src/keymap.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/keymap.c,v
retrieving revision 1.27.2.18
diff -u -r1.27.2.18 keymap.c
--- keymap.c 2000/04/02 12:38:38 1.27.2.18
+++ keymap.c 2000/07/18 10:37:00
@@ -463,8 +463,11 @@
{
Lisp_Keymap *k;
- if ((modifiers & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_META | XEMACS_MOD_SUPER |
XEMACS_MOD_HYPER
- | XEMACS_MOD_ALT | XEMACS_MOD_SHIFT)) != 0)
+ modifiers &= ~(XEMACS_MOD_BUTTON1 | XEMACS_MOD_BUTTON2 | XEMACS_MOD_BUTTON3
+ | XEMACS_MOD_BUTTON4 | XEMACS_MOD_BUTTON5);
+ if ((modifiers & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_META | XEMACS_MOD_SUPER
+ | XEMACS_MOD_HYPER | XEMACS_MOD_ALT | XEMACS_MOD_SHIFT))
+ != 0)
abort ();
k = XKEYMAP (keymap);
@@ -641,6 +644,8 @@
int modifiers = key->modifiers;
Lisp_Keymap *k = XKEYMAP (keymap);
+ modifiers &= ~(XEMACS_MOD_BUTTON1 | XEMACS_MOD_BUTTON2 | XEMACS_MOD_BUTTON3
+ | XEMACS_MOD_BUTTON4 | XEMACS_MOD_BUTTON5);
assert ((modifiers & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_META
| XEMACS_MOD_SUPER | XEMACS_MOD_HYPER
| XEMACS_MOD_ALT | XEMACS_MOD_SHIFT)) == 0);
@@ -1702,7 +1707,10 @@
XVECTOR_DATA (new_keys) [i] = XVECTOR_DATA (keys) [i];
}
else
- abort ();
+ {
+ new_keys = Qnil;
+ abort ();
+ }
if (EQ (keys, new_keys))
error_with_frob (mpc_binding,
@@ -4123,12 +4131,18 @@
if (!NILP (elt_prefix))
buffer_insert_lisp_string (buf, elt_prefix);
- if (modifiers & XEMACS_MOD_META) buffer_insert_c_string (buf, "M-");
- if (modifiers & XEMACS_MOD_CONTROL) buffer_insert_c_string (buf, "C-");
- if (modifiers & XEMACS_MOD_SUPER) buffer_insert_c_string (buf, "S-");
- if (modifiers & XEMACS_MOD_HYPER) buffer_insert_c_string (buf, "H-");
- if (modifiers & XEMACS_MOD_ALT) buffer_insert_c_string (buf,
"Alt-");
- if (modifiers & XEMACS_MOD_SHIFT) buffer_insert_c_string (buf,
"Sh-");
+ if (modifiers & XEMACS_MOD_META)
+ buffer_insert_c_string (buf, "M-");
+ if (modifiers & XEMACS_MOD_CONTROL)
+ buffer_insert_c_string (buf, "C-");
+ if (modifiers & XEMACS_MOD_SUPER)
+ buffer_insert_c_string (buf, "S-");
+ if (modifiers & XEMACS_MOD_HYPER)
+ buffer_insert_c_string (buf, "H-");
+ if (modifiers & XEMACS_MOD_ALT)
+ buffer_insert_c_string (buf, "Alt-");
+ if (modifiers & XEMACS_MOD_SHIFT)
+ buffer_insert_c_string (buf, "Sh-");
if (SYMBOLP (keysym))
{
Lisp_Object code = Fget (keysym, Vcharacter_set_property, Qnil);
Index: src/keymap.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/keymap.h,v
retrieving revision 1.5.2.4
diff -u -r1.5.2.4 keymap.h
--- keymap.h 2000/02/07 07:59:32 1.5.2.4
+++ keymap.h 2000/07/18 10:37:00
@@ -39,6 +39,7 @@
EXFUN (Fwhere_is_internal, 5);
extern Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qshift, Qsuper;
+extern Lisp_Object Qbutton1, Qbutton2, Qbutton3, Qbutton4, Qbutton5;
extern Lisp_Object Vmeta_prefix_char;
Lisp_Object get_keymap (Lisp_Object object, int errorp, int autoload);
Index: src/lisp-disunion.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/lisp-disunion.h,v
retrieving revision 1.9.2.5
diff -u -r1.9.2.5 lisp-disunion.h
--- lisp-disunion.h 2000/02/16 02:06:40 1.9.2.5
+++ lisp-disunion.h 2000/07/18 10:37:00
@@ -76,7 +76,7 @@
typedef EMACS_INT Lisp_Object;
#define Lisp_Type_Int_Bit (Lisp_Type_Int_Even & Lisp_Type_Int_Odd)
-#define make_obj(vartype, x) ((Lisp_Object) (x))
+#define wrap_object(vartype, ptr) ((Lisp_Object) (ptr))
#define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) | Lisp_Type_Int_Bit))
#define make_char(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char))
#define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS)
@@ -96,7 +96,7 @@
#define EQ(x,y) ((x) == (y))
#define XSETINT(var, value) ((void) ((var) = make_int (value)))
#define XSETCHAR(var, value) ((void) ((var) = make_char (value)))
-#define XSETOBJ(var, vartype, value) ((void) ((var) = make_obj (vartype, value)))
+#define XSETOBJ(var, vartype, value) ((void) ((var) = wrap_object (vartype, value)))
/* Convert between a (void *) and a Lisp_Object, as when the
Lisp_Object is passed to a toolkit callback function */
Index: src/lisp-union.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/lisp-union.h,v
retrieving revision 1.8.2.7
diff -u -r1.8.2.7 lisp-union.h
--- lisp-union.h 2000/04/20 01:50:58 1.8.2.7
+++ lisp-union.h 2000/07/18 10:37:00
@@ -105,7 +105,7 @@
make_int (EMACS_INT val)
{
Lisp_Object obj;
- XSETINT(obj, val);
+ XSETINT (obj, val);
return obj;
}
@@ -114,7 +114,16 @@
make_char (Emchar val)
{
Lisp_Object obj;
- XSETCHAR(obj, val);
+ XSETCHAR (obj, val);
+ return obj;
+}
+
+INLINE_HEADER Lisp_Object wrap_object (void *ptr);
+INLINE_HEADER Lisp_Object
+wrap_object (void *ptr)
+{
+ Lisp_Object obj;
+ XSETOBJ (obj, xyzzy, ptr);
return obj;
}
Index: src/lisp.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/lisp.h,v
retrieving revision 1.38.2.69
diff -u -r1.38.2.69 lisp.h
--- lisp.h 2000/07/13 09:06:34 1.38.2.69
+++ lisp.h 2000/07/18 10:37:02
@@ -1,7 +1,7 @@
/* Fundamental definitions for XEmacs Lisp interpreter.
Copyright (C) 1985-1987, 1992-1995 Free Software Foundation, Inc.
Copyright (C) 1993-1996 Richard Mlynarik.
- Copyright (C) 1995, 1996 Ben Wing.
+ Copyright (C) 1995, 1996, 2000 Ben Wing.
This file is part of XEmacs.
@@ -29,6 +29,8 @@
/* general definitions */
/************************************************************************/
+/* ------------------------ include files ------------------- */
+
/* We include the following generally useful header files so that you
don't have to worry about prototypes when using the standard C
library functions and macros. These files shouldn't be excessively
@@ -43,7 +45,7 @@
#include <sys/types.h>
#include <limits.h>
-/* ---- Dynamic arrays ---- */
+/* ------------------------ dynamic arrays ------------------- */
#define Dynarr_declare(type) \
type *base; \
@@ -96,8 +98,6 @@
size_t Dynarr_memory_usage (void *d, struct overhead_stats *stats);
#endif
-#include "symsinit.h" /* compiler warning suppression */
-
/* Also define min() and max(). (Some compilers put them in strange
places that won't be referenced by the above include files, such
as 'macros.h' under Solaris.) */
@@ -276,16 +276,57 @@
maybe for simple structures like Dynarrs); that keeps them private
to the routines that actually use them. */
+/* ------------------------------- */
+/* basic char/int typedefs */
+/* ------------------------------- */
+
+/* The definitions we put here use typedefs to convey additional meaning to
+ types that by themselves are pretty general. Stuff pointed to by a
+ char * or unsigned char * will nearly always be one of four types:
+ a) pointer to internally-formatted text; b) pointer to text in some
+ external format, which can be defined as all formats other than the
+ internal one; c) pure ASCII text; d) binary data that is not meant to
+ be interpreted as text. [A fifth possible type "e) a general pointer
+ to memory" should be replaced with void *.] By using these more specific
+ types in lieu of the general ones, you clear up greatly the confusions
+ that inevitably will occur when it's not clearly known the semantics of
+ a char * argument being studied. */
+
+typedef unsigned char UChar;
+
/* The data representing the text in a buffer is logically a set
of Bufbytes, declared as follows. */
+
+typedef UChar Bufbyte;
+
+/* Explicitly signed or unsigned versions: */
+typedef UChar UBufbyte;
+typedef char SBufbyte;
+
+/* The data representing a string in "external" format (binary or any
+ external encoding) is logically a set of Extbytes, declared as follows. */
+
+typedef UChar Extbyte; /* #### I REALLY think this should be a char. This
+ is more logical and will fix enough char-UChar
+ inconsistencies that maybe we'll be able to stop
+ turning off those warnings. --ben */
+
+/* Explicitly signed or unsigned versions: */
+typedef UChar UExtbyte;
+typedef char SExtbyte;
+
+/* A byte in a string in binary format: */
-typedef unsigned char Bufbyte;
+typedef char Char_Binary;
+typedef UChar UChar_Binary;
-/* The data representing a string in "external" format (simple
- binary format) is logically a set of Extbytes, declared as follows. */
+/* A byte in a string in entirely US-ASCII format: (Nothing outside
+ the range 00 - 7F) */
-typedef unsigned char Extbyte;
+typedef char Char_ASCII;
+typedef UChar UChar_ASCII;
+
/* To the user, a buffer is made up of characters, declared as follows.
In the non-Mule world, characters and Bufbytes are equivalent.
In the Mule world, a character requires (typically) 1 to 4
@@ -312,6 +353,10 @@
/* Length in bytes of a string in external format */
typedef EMACS_INT Extcount;
+/* ------------------------------- */
+/* structure/other typedefs */
+/* ------------------------------- */
+
typedef struct lstream Lstream;
typedef unsigned int face_index;
@@ -552,12 +597,12 @@
/************************************************************************/
-/* Definitions of basic Lisp objects */
+/** Definitions of basic Lisp objects **/
/************************************************************************/
#include "lrecord.h"
-/*********** unbound ***********/
+/*------------------------------ unbound -------------------------------*/
/* Qunbound is a special Lisp_Object (actually of type
symbol-value-forward), that can never be visible to
@@ -566,7 +611,7 @@
#define UNBOUNDP(val) EQ (val, Qunbound)
-/*********** cons ***********/
+/*------------------------------- cons ---------------------------------*/
/* In a cons, the markbit of the car is the gc mark bit */
@@ -616,96 +661,113 @@
x = wrong_type_argument (Qlistp, x); \
} while (0)
-/* For a list that's known to be in valid list format --
- will abort() if the list is not in valid format */
-#define LIST_LOOP(tail, list) \
- for (tail = list; \
- !NILP (tail); \
- tail = XCDR (tail))
+/*---------------------- list traversal macros -------------------------*/
-#define LIST_LOOP_2(elt, list) \
- Lisp_Object tail##elt; \
- LIST_LOOP_3(elt, list, tail##elt)
+/* Note: These macros are for traversing through a list in some format,
+ and executing code that you specify on each member of the list.
-#define LIST_LOOP_3(elt, list, tail) \
- for (tail = list; \
- NILP (tail) ? \
- 0 : (elt = XCAR (tail), 1); \
- tail = XCDR (tail))
-
-#define GET_LIST_LENGTH(list, len) do { \
- Lisp_Object GLL_tail; \
- for (GLL_tail = list, len = 0; \
- !NILP (GLL_tail); \
- GLL_tail = XCDR (GLL_tail), ++len) \
- DO_NOTHING; \
-} while (0)
-
-#define GET_EXTERNAL_LIST_LENGTH(list, len) \
-do { \
- Lisp_Object GELL_elt, GELL_tail; \
- EXTERNAL_LIST_LOOP_4 (GELL_elt, list, GELL_tail, len) \
- ; \
-} while (0)
+ There are two kinds of macros, those requiring surrounding braces, and
+ those not requiring this. Which type of macro will be indicated.
+ The general format for using a brace-requiring macro is
+
+ {
+ LIST_LOOP_3 (elt, list, tail)
+ execute_code_here;
+ }
+
+ or
+
+ {
+ LIST_LOOP_3 (elt, list, tail)
+ {
+ execute_code_here;
+ }
+ }
+
+ You can put variable declarations between the brace and beginning of
+ macro, but NOTHING ELSE.
+
+ The brace-requiring macros typically declare themselves any arguments
+ that are initialized and iterated by the macros. If for some reason
+ you need to declare these arguments yourself (e.g. to do something on
+ them before the iteration starts, use the _NO_DECLARE versions of the
+ macros.)
+*/
-/* For a list that's known to be in valid list format, where we may
- be deleting the current element out of the list --
- will abort() if the list is not in valid format */
-#define LIST_LOOP_DELETING(consvar, nextconsvar, list) \
- for (consvar = list; \
- !NILP (consvar) ? (nextconsvar = XCDR (consvar), 1) :0; \
- consvar = nextconsvar)
+/* There are two basic kinds of macros: those that handle "internal" lists
+ that are known to be correctly structured (i.e. first element is a cons
+ or nil, and the car of each cons is also a cons or nil, and there are
+ no circularities), and those that handle "external" lists, where the
+ list may have any sort of invalid formation. This is reflected in
+ the names: those with "EXTERNAL_" work with external lists, and those
+ without this prefix work with internal lists. The internal-list
+ macros will hit an assertion failure if the structure is ill-formed;
+ the external-list macros will signal an error in this case, either a
+ malformed-list error or a circular-list error.
+
+ Note also that the simplest external list iterator, EXTERNAL_LIST_LOOP,
+ does *NOT* check for circularities. Therefore, make sure you call
+ QUIT each iteration or so. However, it's probably easier just to use
+ EXTERNAL_LIST_LOOP_2, which is easier to use in any case.
+*/
-/* Delete all elements of external list LIST
- satisfying CONDITION, an expression referring to variable ELT */
-#define EXTERNAL_LIST_LOOP_DELETE_IF(elt, list, condition) do { \
- Lisp_Object prev_tail_##list = Qnil; \
- Lisp_Object tail_##list; \
- EMACS_INT len_##list; \
- EXTERNAL_LIST_LOOP_4 (elt, list, tail_##list, len_##list) \
- { \
- if (condition) \
- { \
- if (NILP (prev_tail_##list)) \
- list = XCDR (tail_##list); \
- else \
- XCDR (prev_tail_##list) = XCDR (tail_##list); \
- /* Keep tortoise from ever passing hare. */ \
- len_##list = 0; \
- } \
- else \
- prev_tail_##list = tail_##list; \
- } \
-} while (0)
+/* LIST_LOOP and EXTERNAL_LIST_LOOP are the simplest macros. They don't
+ require brace surrounding, and iterate through a list, which may or may
+ not known to be syntactically correct. EXTERNAL_LIST_LOOP is for those
+ not known to be correct, and it detects and signals a malformed list
+ error when encountering a problem. Circularities, however, are not
+ handled, and cause looping forever, so make sure to include a QUIT.
+ These functions also accept two args, TAIL (set progressively to each
+ cons starting with the first), and LIST, the list to iterate over.
+ TAIL needs to be defined by the program.
+
+ In each iteration, you can retrieve the current list item using XCAR
+ (tail), or destructively modify the list using XSETCAR (tail,
+ ...). */
-/* Delete all elements of true non-circular list LIST
- satisfying CONDITION, an expression referring to variable ELT */
-#define LIST_LOOP_DELETE_IF(elt, list, condition) do { \
- Lisp_Object prev_tail_##list = Qnil; \
- Lisp_Object tail_##list; \
- LIST_LOOP_3 (elt, list, tail_##list) \
- { \
- if (condition) \
- { \
- if (NILP (prev_tail_##list)) \
- list = XCDR (tail_##list); \
- else \
- XCDR (prev_tail_##list) = XCDR (tail_##list); \
- } \
- else \
- prev_tail_##list = tail_##list; \
- } \
-} while (0)
+#define LIST_LOOP(tail, list) \
+ for (tail = list; \
+ !NILP (tail); \
+ tail = XCDR (tail))
-/* For a list that may not be in valid list format --
- will signal an error if the list is not in valid format */
#define EXTERNAL_LIST_LOOP(tail, list) \
for (tail = list; !NILP (tail); tail = XCDR (tail)) \
if (!CONSP (tail)) \
signal_malformed_list_error (list); \
else
+/* The following macros are the "core" macros for list traversal.
+
+ *** ALL OF THESE MACROS MUST BE DECLARED INSIDE BRACES -- SEE ABOVE. ***
+
+ LIST_LOOP_2 and EXTERNAL_LIST_LOOP_2 are the standard, most-often used
+ macros. They take two arguments, an element variable ELT and the list
+ LIST. ELT is automatically declared, and set to each element in turn
+ from LIST.
+
+ LIST_LOOP_3 and EXTERNAL_LIST_LOOP_3 are the same, but they have a third
+ argument TAIL, another automatically-declared variable. At each iteration,
+ this one points to the cons cell for which ELT is the car.
+
+ EXTERNAL_LIST_LOOP_4 is like EXTERNAL_LIST_LOOP_3 but takes an additional
+ LEN argument, again automatically declared, which counts the number of
+ iterations gone by. It is 0 during the first iteration.
+
+ EXTERNAL_LIST_LOOP_4_NO_DECLARE is like EXTERNAL_LIST_LOOP_4 but none
+ of the variables are automatically declared, and so you need to declare
+ them yourself. (ELT and TAIL are Lisp_Objects, and LEN is an EMACS_INT.)
+*/
+#define LIST_LOOP_2(elt, list) \
+ LIST_LOOP_3(elt, list, unused_tail_##elt)
+
+#define LIST_LOOP_3(elt, list, tail) \
+ Lisp_Object elt, tail; \
+ for (tail = list; \
+ NILP (tail) ? \
+ 0 : (elt = XCAR (tail), 1); \
+ tail = XCDR (tail))
+
/* The following macros are for traversing lisp lists.
Signal an error if LIST is not properly acyclic and nil-terminated.
@@ -719,28 +781,34 @@
#define EXTERNAL_LIST_LOOP_1(list) \
Lisp_Object ELL1_elt, ELL1_hare, ELL1_tortoise; \
EMACS_INT ELL1_len; \
-EXTERNAL_LIST_LOOP_6 (ELL1_elt, list, ELL1_len, ELL1_hare, \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (ELL1_elt, list, ELL1_len, ELL1_hare, \
ELL1_tortoise, CIRCULAR_LIST_SUSPICION_LENGTH)
#define EXTERNAL_LIST_LOOP_2(elt, list) \
-Lisp_Object hare_##elt, tortoise_##elt; \
+Lisp_Object elt, hare_##elt, tortoise_##elt; \
EMACS_INT len_##elt; \
-EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, hare_##elt, \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, hare_##elt, \
tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
#define EXTERNAL_LIST_LOOP_3(elt, list, tail) \
-Lisp_Object tortoise_##elt; \
+Lisp_Object elt, tail, tortoise_##elt; \
EMACS_INT len_##elt; \
-EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, tail, \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, tail, \
tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
-#define EXTERNAL_LIST_LOOP_4(elt, list, tail, len) \
+#define EXTERNAL_LIST_LOOP_4_NO_DECLARE(elt, list, tail, len) \
Lisp_Object tortoise_##elt; \
-EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \
+ tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
+
+#define EXTERNAL_LIST_LOOP_4(elt, list, tail, len) \
+Lisp_Object elt, tail, tortoise_##elt; \
+EMACS_INT len; \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len, tail, \
tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
-#define EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \
+#define PRIVATE_EXTERNAL_LIST_LOOP_6(elt, list, len, hare, \
tortoise, suspicion_length) \
for (tortoise = hare = list, len = 0; \
\
@@ -759,37 +827,171 @@
((void) signal_circular_list_error (list)) : \
((void) 0)))))
+/* GET_LIST_LENGTH and GET_EXTERNAL_LIST_LENGTH:
+
+ These two macros return the length of LIST (either an internal or external
+ list, according to which macro is used), stored into LEN (which must
+ be declared by the caller). Circularities are trapped in external lists
+ (and cause errors). Neither macro need be declared inside brackets. */
+
+#define GET_LIST_LENGTH(list, len) do { \
+ Lisp_Object GLL_tail; \
+ for (GLL_tail = list, len = 0; \
+ !NILP (GLL_tail); \
+ GLL_tail = XCDR (GLL_tail), ++len) \
+ DO_NOTHING; \
+} while (0)
+#define GET_EXTERNAL_LIST_LENGTH(list, len) \
+do { \
+ Lisp_Object GELL_elt, GELL_tail; \
+ EXTERNAL_LIST_LOOP_4_NO_DECLARE (GELL_elt, list, GELL_tail, len) \
+ ; \
+} while (0)
+/* For a list that's known to be in valid list format, where we may
+ be deleting the current element out of the list --
+ will abort() if the list is not in valid format */
+#define LIST_LOOP_DELETING(consvar, nextconsvar, list) \
+ for (consvar = list; \
+ !NILP (consvar) ? (nextconsvar = XCDR (consvar), 1) :0; \
+ consvar = nextconsvar)
+
+/* LIST_LOOP_DELETE_IF and EXTERNAL_LIST_LOOP_DELETE_IF:
+
+ These two macros delete all elements of LIST (either an internal or
+ external list, according to which macro is used) satisfying
+ CONDITION, a C expression referring to variable ELT. ELT is
+ automatically declared. Circularities are trapped in external
+ lists (and cause errors). Neither macro need be declared inside
+ brackets. */
+
+#define LIST_LOOP_DELETE_IF(elt, list, condition) do { \
+ /* Do not use ##list when creating new variables because \
+ that may not be just a variable name. */ \
+ Lisp_Object prev_tail_##elt = Qnil; \
+ LIST_LOOP_3 (elt, list, tail_##elt) \
+ { \
+ if (condition) \
+ { \
+ if (NILP (prev_tail_##elt)) \
+ list = XCDR (tail_##elt); \
+ else \
+ XCDR (prev_tail_##elt) = XCDR (tail_##elt); \
+ } \
+ else \
+ prev_tail_##elt = tail_##elt; \
+ } \
+} while (0)
+
+#define EXTERNAL_LIST_LOOP_DELETE_IF(elt, list, condition) do { \
+ Lisp_Object prev_tail_##elt = Qnil; \
+ EXTERNAL_LIST_LOOP_4 (elt, list, tail_##elt, len_##elt) \
+ { \
+ if (condition) \
+ { \
+ if (NILP (prev_tail_##elt)) \
+ list = XCDR (tail_##elt); \
+ else \
+ XCDR (prev_tail_##elt) = XCDR (tail_##elt); \
+ /* Keep tortoise from ever passing hare. */ \
+ len_##elt = 0; \
+ } \
+ else \
+ prev_tail_##elt = tail_##elt; \
+ } \
+} while (0)
+
+
+/* Macros for looping over external alists.
+
+ *** ALL OF THESE MACROS MUST BE DECLARED INSIDE BRACES -- SEE ABOVE. ***
+
+ EXTERNAL_ALIST_LOOP_4 is similar to EXTERNAL_LIST_LOOP_2, but it
+ assumes the elements are aconses (the elements in an alist) and
+ sets two additional argument variables ELT_CAR and ELT_CDR to the
+ car and cdr of the acons. All of the variables ELT, ELT_CAR and
+ ELT_CDR are automatically declared.
+
+ EXTERNAL_ALIST_LOOP_5 adds a TAIL argument to EXTERNAL_ALIST_LOOP_4,
+ just like EXTERNAL_LIST_LOOP_3 does, and again TAIL is automatically
+ declared.
+
+ EXTERNAL_ALIST_LOOP_6 adds a LEN argument to EXTERNAL_ALIST_LOOP_5,
+ just like EXTERNAL_LIST_LOOP_4 does, and again LEN is automatically
+ declared.
+
+ EXTERNAL_ALIST_LOOP_6_NO_DECLARE does not declare any of its arguments,
+ just like EXTERNAL_LIST_LOOP_4_NO_DECLARE, and so these must be declared
+ manually.
+ */
+
/* Optimized and safe macros for looping over external alists. */
#define EXTERNAL_ALIST_LOOP_4(elt, elt_car, elt_cdr, list) \
+Lisp_Object elt, elt_car, elt_cdr; \
Lisp_Object hare_##elt, tortoise_##elt; \
EMACS_INT len_##elt; \
-EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
+PRIVATE_EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
len_##elt, hare_##elt, tortoise_##elt, \
CIRCULAR_LIST_SUSPICION_LENGTH)
#define EXTERNAL_ALIST_LOOP_5(elt, elt_car, elt_cdr, list, tail) \
+Lisp_Object elt, elt_car, elt_cdr, tail; \
Lisp_Object tortoise_##elt; \
EMACS_INT len_##elt; \
-EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
+PRIVATE_EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
len_##elt, tail, tortoise_##elt, \
CIRCULAR_LIST_SUSPICION_LENGTH) \
#define EXTERNAL_ALIST_LOOP_6(elt, elt_car, elt_cdr, list, tail, len) \
+Lisp_Object elt, elt_car, elt_cdr, tail; \
+EMACS_INT len; \
Lisp_Object tortoise_##elt; \
-EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
+PRIVATE_EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
len, tail, tortoise_##elt, \
CIRCULAR_LIST_SUSPICION_LENGTH)
+#define EXTERNAL_ALIST_LOOP_6_NO_DECLARE(elt, elt_car, elt_cdr, list, \
+ tail, len) \
+Lisp_Object tortoise_##elt; \
+PRIVATE_EXTERNAL_ALIST_LOOP_8 (elt, elt_car, elt_cdr, list, \
+ len, tail, tortoise_##elt, \
+ CIRCULAR_LIST_SUSPICION_LENGTH)
-#define EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, len, hare, \
- tortoise, suspicion_length) \
-EXTERNAL_LIST_LOOP_6 (elt, list, len, hare, tortoise, suspicion_length) \
+
+#define PRIVATE_EXTERNAL_ALIST_LOOP_8(elt, elt_car, elt_cdr, list, len, \
+ hare, tortoise, suspicion_length) \
+PRIVATE_EXTERNAL_LIST_LOOP_6 (elt, list, len, hare, tortoise, \
+ suspicion_length) \
if (CONSP (elt) ? (elt_car = XCAR (elt), elt_cdr = XCDR (elt), 0) :1) \
continue; \
else
+/* Macros for looping over external property lists.
+
+ *** ALL OF THESE MACROS MUST BE DECLARED INSIDE BRACES -- SEE ABOVE. ***
+
+ EXTERNAL_PROPERTY_LIST_LOOP_3 maps over an external list assumed to
+ be a property list, consisting of alternating pairs of keys
+ (typically symbols or keywords) and values. Each iteration
+ processes one such pair out of LIST, assigning the two elements to
+ KEY and VALUE respectively. Malformed lists and circularities are
+ trapped as usual, and in addition, property lists with an odd number
+ of elements also signal an error.
+
+ EXTERNAL_PROPERTY_LIST_LOOP_4 adds a TAIL argument to
+ EXTERNAL_PROPERTY_LIST_LOOP_3, just like EXTERNAL_LIST_LOOP_3 does,
+ and again TAIL is automatically declared.
+
+ EXTERNAL_PROPERTY_LIST_LOOP_5 adds a LEN argument to
+ EXTERNAL_PROPERTY_LIST_LOOP_4, just like EXTERNAL_LIST_LOOP_4 does,
+ and again LEN is automatically declared. Note that in this case,
+ LEN counts the iterations, NOT the total number of list elements
+ processed, which is 2 * LEN.
+
+ EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE does not declare any of its
+ arguments, just like EXTERNAL_LIST_LOOP_4_NO_DECLARE, and so these
+ must be declared manually. */
/* Optimized and safe macros for looping over external property lists. */
#define EXTERNAL_PROPERTY_LIST_LOOP_3(key, value, list) \
@@ -810,6 +1012,12 @@
EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len, tail, \
tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH)
+#define EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE(key, value, list, \
+ tail, len) \
+Lisp_Object tortoise_##key; \
+EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len, tail, \
+ tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH)
+
#define EXTERNAL_PROPERTY_LIST_LOOP_7(key, value, list, len, hare, \
tortoise, suspicion_length) \
@@ -818,7 +1026,8 @@
((CONSP (hare) && \
(key = XCAR (hare), \
hare = XCDR (hare), \
- CONSP (hare))) ? \
+ (CONSP (hare) ? 1 : \
+ (signal_malformed_property_list_error (list), 0)))) ? \
(value = XCAR (hare), 1) : \
(NILP (hare) ? 0 : \
(signal_malformed_property_list_error (list), 0))); \
@@ -905,7 +1114,7 @@
signal_malformed_list_error (CTL_list); \
} while (0)
-/*********** string ***********/
+/*------------------------------ string --------------------------------*/
struct Lisp_String
{
@@ -980,7 +1189,7 @@
offsetof (flexible_array_structtype, flexible_array_field[0])) * \
(flexible_array_length))
-/*********** vector ***********/
+/*------------------------------ vector --------------------------------*/
struct Lisp_Vector
{
@@ -1005,7 +1214,7 @@
#define vector_data(v) ((v)->contents)
#define XVECTOR_DATA(s) vector_data (XVECTOR (s))
-/*********** bit vector ***********/
+/*---------------------------- bit vectors -----------------------------*/
#if (LONGBITS < 16)
#error What the hell?!
@@ -1075,9 +1284,8 @@
#define BIT_VECTOR_LONG_STORAGE(len) \
(((len) + LONGBITS_POWER_OF_2 - 1) >> LONGBITS_LOG2)
+/*------------------------------ symbol --------------------------------*/
-/*********** symbol ***********/
-
typedef struct Lisp_Symbol Lisp_Symbol;
struct Lisp_Symbol
{
@@ -1110,7 +1318,7 @@
#define symbol_function(s) ((s)->function)
#define symbol_plist(s) ((s)->plist)
-/*********** subr ***********/
+/*------------------------------- subr ---------------------------------*/
typedef Lisp_Object (*lisp_fn_t) (void);
@@ -1137,8 +1345,9 @@
#define SUBR_FUNCTION(subr,max_args) \
((Lisp_Object (*) (EXFUN_##max_args)) (subr)->subr_fn)
#define subr_name(subr) ((subr)->name)
+
+/*------------------------------ marker --------------------------------*/
-/*********** marker ***********/
typedef struct Lisp_Marker Lisp_Marker;
struct Lisp_Marker
@@ -1164,7 +1373,7 @@
#define marker_next(m) ((m)->next)
#define marker_prev(m) ((m)->prev)
-/*********** char ***********/
+/*------------------------------- char ---------------------------------*/
#define CHARP(x) (XTYPE (x) == Lisp_Type_Char)
@@ -1188,7 +1397,7 @@
#define CONCHECK_CHAR(x) CONCHECK_NONRECORD (x, Lisp_Type_Char, Qcharacterp)
-/*********** float ***********/
+/*------------------------------ float ---------------------------------*/
#ifdef LISP_FLOAT_TYPE
@@ -1243,7 +1452,7 @@
#endif /* not LISP_FLOAT_TYPE */
-/*********** int ***********/
+/*-------------------------------- int ---------------------------------*/
#define ZEROP(x) EQ (x, Qzero)
@@ -1325,7 +1534,7 @@
} while (0)
-/*********** readonly objects ***********/
+/*--------------------------- readonly objects -------------------------*/
#define CHECK_C_WRITEABLE(obj) \
do { if (c_readonly (obj)) c_write_error (obj); } while (0)
@@ -1336,7 +1545,7 @@
#define C_READONLY(obj) (C_READONLY_RECORD_HEADER_P(XRECORD_LHEADER (obj)))
#define LISP_READONLY(obj) (LISP_READONLY_RECORD_HEADER_P(XRECORD_LHEADER (obj)))
-/*********** structures ***********/
+/*----------------------------- structrures ----------------------------*/
typedef struct structure_keyword_entry structure_keyword_entry;
struct structure_keyword_entry
@@ -1377,7 +1586,7 @@
Lisp_Object value,
Error_behavior errb));
-/*********** weak lists ***********/
+/*---------------------------- weak lists ------------------------------*/
enum weak_list_type
{
@@ -1418,7 +1627,7 @@
int finish_marking_weak_lists (void);
void prune_weak_lists (void);
-/*********** lcrecord lists ***********/
+/*-------------------------- lcrecord-list -----------------------------*/
struct lcrecord_list
{
@@ -1988,6 +2197,26 @@
typedef unsigned long uintptr_t;
#endif
+
+/************************************************************************/
+/* prototypes */
+/************************************************************************/
+
+/* NOTE: Prototypes should go HERE, not in various header files, unless
+ they specifically reference a type that's not defined in lisp.h.
+ (And even then, you might consider adding the type to lisp.h.)
+
+ The idea is that header files typically contain the innards of objects,
+ and we want to minimize the number of "dependencies" of one file on
+ the specifics of such objects. Putting prototypes here minimizes the
+ number of header files that need to be included -- good for a number
+ of reasons. --ben */
+
+/*--------------- prototypes for various public c functions ------------*/
+
+/* Prototypes for all init/syms_of/vars_of initialization functions. */
+#include "symsinit.h"
+
/* Defined in alloc.c */
void release_breathing_space (void);
Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object);
@@ -2136,9 +2365,9 @@
int stderr_out (const char *, ...) PRINTF_ARGS (1, 2);
int stdout_out (const char *, ...) PRINTF_ARGS (1, 2);
SIGTYPE fatal_error_signal (int);
-Lisp_Object make_arg_list (int, char **);
-void make_argc_argv (Lisp_Object, int *, char ***);
-void free_argc_argv (char **);
+Lisp_Object make_arg_list (int, Extbyte **);
+void make_argc_argv (Lisp_Object, int *, Extbyte ***);
+void free_argc_argv (Extbyte **);
Lisp_Object decode_env_path (const char *, const char *);
Lisp_Object decode_path (const char *);
/* Nonzero means don't do interactive redisplay and don't change tty modes */
@@ -2151,9 +2380,53 @@
/* Defined in eval.c */
DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, Lisp_Object));
-void maybe_signal_error (Lisp_Object, Lisp_Object, Lisp_Object, Error_behavior);
+void maybe_signal_error (Lisp_Object, Lisp_Object, Lisp_Object,
+ Error_behavior);
Lisp_Object maybe_signal_continuable_error (Lisp_Object, Lisp_Object,
Lisp_Object, Error_behavior);
+DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (type_error (Lisp_Object,
+ const char *,
+ ...), 2, 3);
+void maybe_type_error (Lisp_Object, Lisp_Object, Error_behavior, const char *,
+ ...) PRINTF_ARGS (4, 5);
+Lisp_Object continuable_type_error (Lisp_Object, const char *, ...)
+ PRINTF_ARGS (2, 3);
+Lisp_Object maybe_continuable_type_error (Lisp_Object, Lisp_Object,
+ Error_behavior,
+ const char *, ...)
+ PRINTF_ARGS (4, 5);
+DECLARE_DOESNT_RETURN (signal_type_error (Lisp_Object, const char *,
+ Lisp_Object));
+void maybe_signal_type_error (Lisp_Object, const char *, Lisp_Object,
+ Lisp_Object, Error_behavior);
+Lisp_Object signal_type_continuable_error (Lisp_Object, const char *,
+ Lisp_Object);
+Lisp_Object maybe_signal_type_continuable_error (Lisp_Object, const char *,
+ Lisp_Object,
+ Lisp_Object, Error_behavior);
+DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (type_error_with_frob
+ (Lisp_Object, Lisp_Object,
+ const char *,
+ ...), 3, 4);
+void maybe_type_error_with_frob (Lisp_Object, Lisp_Object, Lisp_Object,
+ Error_behavior,
+ const char *, ...) PRINTF_ARGS (5, 6);
+Lisp_Object continuable_type_error_with_frob (Lisp_Object, Lisp_Object,
+ const char *,
+ ...) PRINTF_ARGS (3, 4);
+Lisp_Object maybe_continuable_type_error_with_frob
+(Lisp_Object, Lisp_Object, Lisp_Object, Error_behavior, const char *, ...)
+ PRINTF_ARGS (5, 6);
+DECLARE_DOESNT_RETURN (signal_type_error_2 (Lisp_Object, const char *,
+ Lisp_Object, Lisp_Object));
+void maybe_signal_type_error_2 (Lisp_Object, const char *, Lisp_Object,
+ Lisp_Object, Lisp_Object, Error_behavior);
+Lisp_Object signal_type_continuable_error_2 (Lisp_Object, const char *,
+ Lisp_Object, Lisp_Object);
+Lisp_Object maybe_signal_type_continuable_error_2 (Lisp_Object, const char *,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object,
+ Error_behavior);
DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (error (const char *,
...), 1, 2);
void maybe_error (Lisp_Object, Error_behavior, const char *,
@@ -2190,6 +2463,16 @@
DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object));
DECLARE_DOESNT_RETURN (signal_circular_property_list_error (Lisp_Object));
+DECLARE_DOESNT_RETURN (syntax_error (const char *reason, Lisp_Object frob));
+DECLARE_DOESNT_RETURN (syntax_error_2 (const char *reason, Lisp_Object frob1,
+ Lisp_Object frob2));
+DECLARE_DOESNT_RETURN (invalid_argument (const char *reason,
+ Lisp_Object frob));
+DECLARE_DOESNT_RETURN (invalid_argument_2 (const char *reason,
+ Lisp_Object frob1,
+ Lisp_Object frob2));
+
+
Lisp_Object signal_void_function_error (Lisp_Object);
Lisp_Object signal_invalid_function_error (Lisp_Object);
Lisp_Object signal_wrong_number_of_arguments_error (Lisp_Object, int);
@@ -2549,8 +2832,9 @@
Lisp_Object save_window_excursion_unwind (Lisp_Object);
Lisp_Object display_buffer (Lisp_Object, Lisp_Object, Lisp_Object);
-/* The following were machine generated 19980312 */
+/*--------------- prototypes for Lisp primitives in C ------------*/
+/* The following were machine generated 19980312 */
EXFUN (Faccept_process_output, 3);
EXFUN (Fadd1, 1);
@@ -2798,98 +3082,107 @@
EXFUN (Fvertical_motion, 3);
EXFUN (Fwiden, 1);
+/*--------------- prototypes for constant symbols ------------*/
-extern Lisp_Object Q_style, Qabort, Qactually_requested;
+extern Lisp_Object Q_style;
extern Lisp_Object Qactivate_menubar_hook;
-extern Lisp_Object Qafter, Qall, Qand, Qappend;
-extern Lisp_Object Qarith_error, Qarrayp, Qassoc, Qat, Qautodetect, Qautoload;
-extern Lisp_Object Qbackground, Qbackground_pixmap, Qbad_variable, Qbefore;
-extern Lisp_Object Qbeginning_of_buffer, Qbig5, Qbinary;
-extern Lisp_Object Qbitmap, Qbitp, Qblinking;
-extern Lisp_Object Qboolean, Qbottom, Qbottom_margin, Qbuffer;
-extern Lisp_Object Qbuffer_glyph_p, Qbuffer_live_p, Qbuffer_read_only, Qbutton;
-extern Lisp_Object Qbyte_code, Qcall_interactively, Qcancel, Qcategory;
+extern Lisp_Object Qarith_error;
+extern Lisp_Object Qarrayp, Qautoload;
+extern Lisp_Object Qbackground, Qbackground_pixmap;
+extern Lisp_Object Qbeginning_of_buffer, Qbig5;
+extern Lisp_Object Qbitp, Qblinking;
+extern Lisp_Object Qbuffer_glyph_p, Qbuffer_live_p, Qbuffer_read_only;
+extern Lisp_Object Qbyte_code, Qcall_interactively;
extern Lisp_Object Qcategory_designator_p, Qcategory_table_value_p, Qccl, Qcdr;
-extern Lisp_Object Qchannel, Qchar, Qchar_or_string_p, Qcharacter, Qcharacterp;
-extern Lisp_Object Qchars, Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3;
-extern Lisp_Object Qcenter, Qcircular_list, Qcircular_property_list;
+extern Lisp_Object Qchar_or_string_p, Qcharacterp;
+extern Lisp_Object Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3;
+extern Lisp_Object Qcircular_list, Qcircular_property_list;
extern Lisp_Object Qcoding_system_error;
-extern Lisp_Object Qcolor, Qcolor_pixmap_image_instance_p;
-extern Lisp_Object Qcolumns, Qcommand, Qcommandp, Qcompletion_ignore_case;
-extern Lisp_Object Qconsole, Qconsole_live_p, Qconst_specifier, Qcopies, Qcr;
-extern Lisp_Object Qcritical, Qcrlf, Qctext, Qcurrent_menubar, Qctext, Qcursor;
-extern Lisp_Object Qcyclic_variable_indirection, Qdata, Qdead, Qdecode;
-extern Lisp_Object Qdefault, Qdefun, Qdelete, Qdelq, Qdevice, Qdevice_live_p;
-extern Lisp_Object Qdialog;
-extern Lisp_Object Qdim, Qdimension, Qdisabled, Qdisplay, Qdisplay_table;
-extern Lisp_Object Qdoc_string, Qdomain_error, Qduplex, Qdynarr_overhead;
-extern Lisp_Object Qempty, Qencode, Qend_of_buffer, Qend_of_file, Qend_open;
-extern Lisp_Object Qeol_cr, Qeol_crlf, Qeol_lf, Qeol_type, Qeq, Qeql, Qequal;
+extern Lisp_Object Qcolor_pixmap_image_instance_p;
+extern Lisp_Object Qcommandp, Qcompletion_ignore_case;
+extern Lisp_Object Qconsole_live_p, Qconst_specifier, Qcr;
+extern Lisp_Object Qcrlf, Qcurrent_menubar, Qctext;
+extern Lisp_Object Qcyclic_variable_indirection, Qdecode;
+extern Lisp_Object Qdefun, Qdevice_live_p;
+extern Lisp_Object Qdim, Qdisabled, Qdisplay_table;
+extern Lisp_Object Qdomain_error;
+extern Lisp_Object Qediting_error;
+extern Lisp_Object Qencode, Qend_of_buffer, Qend_of_file, Qend_open;
+extern Lisp_Object Qeol_cr, Qeol_crlf, Qeol_lf, Qeol_type;
extern Lisp_Object Qerror, Qerror_conditions, Qerror_message, Qescape_quoted;
-extern Lisp_Object Qeval, Qevent_live_p, Qexit, Qextent_live_p, Qextents;
-extern Lisp_Object Qexternal_debugging_output, Qface, Qfeaturep;
-extern Lisp_Object Qfile_name, Qfile_error;
-extern Lisp_Object Qfont, Qforce_g0_on_output, Qforce_g1_on_output;
+extern Lisp_Object Qevent_live_p, Qexit, Qextent_live_p;
+extern Lisp_Object Qexternal_debugging_output, Qfeaturep;
+extern Lisp_Object Qfile_error;
+extern Lisp_Object Qforce_g0_on_output, Qforce_g1_on_output;
extern Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output, Qforeground;
-extern Lisp_Object Qformat, Qframe, Qframe_live_p, Qfrom_page, Qfull_assoc;
-extern Lisp_Object Qfuncall, Qfunction;
-extern Lisp_Object Qgap_overhead, Qgeneric, Qgeometry, Qglobal, Qheight;
-extern Lisp_Object Qhelp, Qhighlight, Qhorizontal, Qicon;
-extern Lisp_Object Qicon_glyph_p, Qid, Qidentity, Qignore, Qimage, Qinfo;
-extern Lisp_Object Qinherit;
+extern Lisp_Object Qformat, Qframe_live_p;
+extern Lisp_Object Qicon_glyph_p, Qidentity;
extern Lisp_Object Qinhibit_quit, Qinhibit_read_only;
-extern Lisp_Object Qinput_charset_conversion, Qinteger;
+extern Lisp_Object Qinput_charset_conversion;
extern Lisp_Object Qinteger_char_or_marker_p, Qinteger_or_char_p;
-extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive, Qinternal;
-extern Lisp_Object Qinvalid_function, Qinvalid_read_syntax, Qio_error;
-extern Lisp_Object Qiso2022, Qkey, Qkey_assoc, Qkeyboard, Qkeymap;
-extern Lisp_Object Qlambda, Qlast_command, Qlayout, Qlandscape;
-extern Lisp_Object Qleft, Qleft_margin, Qlet, Qlf;
-extern Lisp_Object Qlist, Qlistp, Qload, Qlock_shift, Qmacro, Qmagic;
+extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive;
+extern Lisp_Object Qinternal_error, Qinvalid_argument;
+extern Lisp_Object Qinvalid_change, Qinvalid_function, Qinvalid_operation;
+extern Lisp_Object Qinvalid_read_syntax, Qinvalid_state;
+extern Lisp_Object Qio_error;
+extern Lisp_Object Qiso2022;
+extern Lisp_Object Qlambda, Qlayout;
+extern Lisp_Object Qlf;
+extern Lisp_Object Qlist_formation_error;
+extern Lisp_Object Qlistp, Qload, Qlock_shift, Qmacro;
extern Lisp_Object Qmakunbound, Qmalformed_list, Qmalformed_property_list;
-extern Lisp_Object Qmalloc_overhead, Qmark, Qmarkers;
-extern Lisp_Object Qmenubar;
-extern Lisp_Object Qmax, Qmemory, Qmessage, Qminus, Qmnemonic, Qmodifiers;
-extern Lisp_Object Qmono_pixmap_image_instance_p, Qmotion;
-extern Lisp_Object Qmouse_leave_buffer_hook, Qmsprinter, Qmswindows;
-extern Lisp_Object Qname, Qnas, Qnatnump, Qnative_layout;
-extern Lisp_Object Qno, Qno_ascii_cntl, Qno_ascii_eol, Qno_catch;
-extern Lisp_Object Qno_conversion, Qno_iso6429, Qnone, Qnot, Qnothing;
-extern Lisp_Object Qnothing_image_instance_p, Qnotice;
+extern Lisp_Object Qmark;
+extern Lisp_Object Qmnemonic;
+extern Lisp_Object Qmono_pixmap_image_instance_p;
+extern Lisp_Object Qmouse_leave_buffer_hook;
+extern Lisp_Object Qnas, Qnatnump, Qnative_layout;
+extern Lisp_Object Qno_ascii_cntl, Qno_ascii_eol, Qno_catch;
+extern Lisp_Object Qno_conversion, Qno_iso6429;
+extern Lisp_Object Qnothing_image_instance_p;
extern Lisp_Object Qnumber_char_or_marker_p, Qnumberp;
-extern Lisp_Object Qobject, Qok, Qold_assoc, Qold_delete, Qold_delq;
-extern Lisp_Object Qold_rassoc;
-extern Lisp_Object Qold_rassq, Qonly, Qor, Qother;
-extern Lisp_Object Qorientation, Qoutput_charset_conversion;
-extern Lisp_Object Qoverflow_error, Qpoint, Qpointer, Qpointer_glyph_p;
-extern Lisp_Object Qpointer_image_instance_p, Qportrait, Qpost_read_conversion;
-extern Lisp_Object Qpre_write_conversion, Qprint, Qprinter, Qprint_length;
-extern Lisp_Object Qprint_string_length, Qprocess, Qprogn, Qprovide, Qquit;
-extern Lisp_Object Qquote, Qrange_error, Qrassoc, Qrassq, Qread_char;
+extern Lisp_Object Qoutput_charset_conversion;
+extern Lisp_Object Qoverflow_error, Qpoint, Qpointer_glyph_p;
+extern Lisp_Object Qpointer_image_instance_p, Qpost_read_conversion;
+extern Lisp_Object Qpre_write_conversion, Qprint_length;
+extern Lisp_Object Qprint_string_length, Qprogn, Qquit;
+extern Lisp_Object Qquote, Qrange_error, Qread_char;
extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler;
-extern Lisp_Object Qregion_beginning, Qregion_end, Qrequire, Qresource;
-extern Lisp_Object Qretry, Qreturn, Qreverse, Qright, Qright_margin;
+extern Lisp_Object Qregion_beginning, Qregion_end;
extern Lisp_Object Qrun_hooks, Qsans_modifiers;
-extern Lisp_Object Qsave_buffers_kill_emacs, Qsearch, Qselected;
+extern Lisp_Object Qsave_buffers_kill_emacs;
extern Lisp_Object Qself_insert_command, Qself_insert_defer_undo;
extern Lisp_Object Qsequencep, Qset, Qsetting_constant;
extern Lisp_Object Qseven, Qshift_jis, Qshort;
-extern Lisp_Object Qsignal, Qsimple, Qsingularity_error, Qsize, Qspace;
-extern Lisp_Object Qspecifier, Qstandard_input, Qstandard_output, Qstart_open;
-extern Lisp_Object Qstream, Qstring, Qstring_lessp, Qsubwindow;
+extern Lisp_Object Qsingularity_error;
+extern Lisp_Object Qstandard_input, Qstandard_output;
+extern Lisp_Object Qstart_open;
+extern Lisp_Object Qstring_lessp, Qsubwindow;
extern Lisp_Object Qsubwindow_image_instance_p;
-extern Lisp_Object Qsymbol, Qsyntax, Qt, Qterminal, Qtest;
-extern Lisp_Object Qtext, Qtext_image_instance_p, Qthis_command, Qtimeout;
-extern Lisp_Object Qtimestamp, Qtoolbar, Qtop, Qtop_margin, Qtop_level;
-extern Lisp_Object Qto_page, Qtrue_list_p, Qtty, Qtype;
-extern Lisp_Object Qunbound, Qundecided, Qundefined, Qunderflow_error;
-extern Lisp_Object Qunderline, Qunimplemented, Quser_files_and_directories;
-extern Lisp_Object Qvalue_assoc, Qvalues;
-extern Lisp_Object Qvariable_documentation, Qvariable_domain, Qvertical;
-extern Lisp_Object Qvoid_function, Qvoid_variable, Qwarning;
-extern Lisp_Object Qwidth, Qwidget, Qwindow;
-extern Lisp_Object Qwindow_live_p, Qwindow_system, Qwrong_number_of_arguments;
-extern Lisp_Object Qwrong_type_argument, Qx, Qy, Qyes, Qyes_or_no_p;
+extern Lisp_Object Qsyntax_error, Qt;
+extern Lisp_Object Qtext_image_instance_p;
+extern Lisp_Object Qtop_level;
+extern Lisp_Object Qtrue_list_p;
+extern Lisp_Object Qunbound, Qunderflow_error;
+extern Lisp_Object Qunderline, Quser_files_and_directories;
+extern Lisp_Object Qvalues;
+extern Lisp_Object Qvariable_documentation, Qvariable_domain;
+extern Lisp_Object Qvoid_function, Qvoid_variable;
+extern Lisp_Object Qwindow_live_p, Qwrong_number_of_arguments;
+extern Lisp_Object Qwrong_type_argument, Qyes_or_no_p;
+
+#define SYMBOL(fou) extern Lisp_Object fou
+#define SYMBOL_KEYWORD(la_cle_est_fou) extern Lisp_Object la_cle_est_fou
+#define SYMBOL_GENERAL(tout_le_monde, est_fou) \
+ extern Lisp_Object tout_le_monde
+
+#include "general-slots.h"
+
+#undef SYMBOL
+#undef SYMBOL_KEYWORD
+#undef SYMBOL_GENERAL
+
+/*--------------- prototypes for variables of type Lisp_Object ------------*/
+
extern Lisp_Object Vactivate_menubar_hook, Vascii_canon_table;
extern Lisp_Object Vascii_downcase_table, Vascii_eqv_table;
extern Lisp_Object Vascii_upcase_table, Vautoload_queue, Vblank_menubar;
Index: src/lread.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/lread.c,v
retrieving revision 1.36.2.20
diff -u -r1.36.2.20 lread.c
--- lread.c 2000/06/12 04:18:17 1.36.2.20
+++ lread.c 2000/07/18 10:37:03
@@ -218,14 +218,14 @@
static DOESNT_RETURN
-syntax_error (const char *string)
+read_syntax_error (const char *string)
{
signal_error (Qinvalid_read_syntax,
list1 (build_translated_string (string)));
}
static Lisp_Object
-continuable_syntax_error (const char *string)
+continuable_read_syntax_error (const char *string)
{
return Fsignal (Qinvalid_read_syntax,
list1 (build_translated_string (string)));
@@ -2120,17 +2120,17 @@
GCPRO2 (orig_list, already_seen);
if (c != '(')
- RETURN_UNGCPRO (continuable_syntax_error ("#s not followed by paren"));
+ RETURN_UNGCPRO (continuable_read_syntax_error ("#s not followed by
paren"));
list = read_list (readcharfun, ')', 0, 0);
orig_list = list;
{
int len = XINT (Flength (list));
if (len == 0)
- RETURN_UNGCPRO (continuable_syntax_error
+ RETURN_UNGCPRO (continuable_read_syntax_error
("structure type not specified"));
if (!(len & 1))
RETURN_UNGCPRO
- (continuable_syntax_error
+ (continuable_read_syntax_error
("structures must have alternating keyword/value pairs"));
}
@@ -2767,9 +2767,9 @@
unreadchar (readcharfun, ch);
#ifdef FEATUREP_SYNTAX
if (ch == ']')
- syntax_error ("\"]\" in a list");
+ read_syntax_error ("\"]\" in a list");
else if (ch == ')')
- syntax_error ("\")\" in a vector");
+ read_syntax_error ("\")\" in a vector");
#endif
state = ((conser) (readcharfun, state, len));
}
@@ -2809,15 +2809,15 @@
goto done;
}
else if (ch == ']')
- syntax_error ("']' in a list");
+ read_syntax_error ("']' in a list");
else if (ch == ')')
- syntax_error ("')' in a vector");
+ read_syntax_error ("')' in a vector");
else
#endif
if (ch != '.')
signal_simple_error ("BUG! Internal reader error", elt);
else if (!s->allow_dotted_lists)
- syntax_error ("\".\" in a vector");
+ read_syntax_error ("\".\" in a vector");
else
{
if (!NILP (s->tail))
@@ -2835,7 +2835,7 @@
goto done;
}
}
- syntax_error (". in wrong context");
+ read_syntax_error (". in wrong context");
}
}
@@ -3030,7 +3030,7 @@
len = XINT (Flength (stuff));
if (len < COMPILED_STACK_DEPTH + 1 || len > COMPILED_DOMAIN + 1)
return
- continuable_syntax_error ("#[...] used with wrong number of elements");
+ continuable_read_syntax_error ("#[...] used with wrong number of
elements");
for (iii = 0; CONSP (stuff); iii++)
{
Index: src/menubar-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/menubar-msw.c,v
retrieving revision 1.16.2.12
diff -u -r1.16.2.12 menubar-msw.c
--- menubar-msw.c 2000/06/13 01:40:05 1.16.2.12
+++ menubar-msw.c 2000/07/18 10:37:03
@@ -139,7 +139,7 @@
while ((ptr = (Bufbyte *) memchr (ptr, '&', len - (ptr - item))) != NULL)
{
if (len + 2 > maxlen)
- signal_simple_error ("Menu item produces too long displayable string",
+ syntax_error ("Menu item produces too long displayable string",
error_name);
memmove (ptr + 1, ptr, (len - (ptr - item)) + 1);
len++;
@@ -172,7 +172,7 @@
if (!*accel)
{
if (len + 2 > maxlen)
- signal_simple_error ("Menu item produces too long displayable string",
+ syntax_error ("Menu item produces too long displayable string",
error_name);
ptr = item;
memmove (ptr + 1, ptr, len + 1);
@@ -310,6 +310,9 @@
int flush_right, int bar_p)
{
MENUITEMINFO item_info;
+ UINT oldflags = MF_BYPOSITION;
+ UINT olduidnewitem = 0;
+ LPCTSTR oldlpnewitem = 0;
item_info.cbSize = sizeof (item_info);
item_info.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID;
@@ -321,12 +324,17 @@
{
/* Separator or unselectable text */
if (separator_string_p (XSTRING_DATA (item)))
- item_info.fType = MFT_SEPARATOR;
+ {
+ item_info.fType = MFT_SEPARATOR;
+ oldflags |= MF_SEPARATOR;
+ }
else
{
item_info.fType = MFT_STRING;
item_info.fState = MFS_DISABLED;
item_info.dwTypeData = XSTRING_DATA (item);
+ oldflags |= MF_STRING | MF_DISABLED;
+ oldlpnewitem = item_info.dwTypeData;
}
}
else if (CONSP (item))
@@ -343,17 +351,20 @@
menu_parse_submenu_keywords (item, gui_item);
if (!STRINGP (pgui_item->name))
- signal_simple_error ("Menu name (first element) must be a string",
+ syntax_error ("Menu name (first element) must be a string",
item);
if (!gui_item_included_p (gui_item, Vmenubar_configuration))
- {
- UNGCPRO;
- goto done;
- }
+ {
+ UNGCPRO;
+ goto done;
+ }
if (!gui_item_active_p (gui_item))
- item_info.fState = MFS_GRAYED;
+ {
+ item_info.fState = MFS_GRAYED;
+ oldflags |= MF_GRAYED;
+ }
/* Temptation is to put 'else' right here. Although, the
displayed item won't have an arrow indicating that it is a
popup. So we go ahead a little bit more and create a popup */
@@ -362,6 +373,9 @@
item_info.fMask |= MIIM_SUBMENU;
item_info.dwTypeData = displayable_menu_item (gui_item, bar_p, &accel);
item_info.hSubMenu = submenu;
+ olduidnewitem = (UINT) submenu;
+ oldlpnewitem = item_info.dwTypeData;
+ oldflags |= MF_POPUP;
if (accel && bar_p)
*accel_list = Fcons (make_char (accel), *accel_list);
@@ -396,16 +410,19 @@
GCPRO2 (gui_item, *accel_list);
if (!gui_item_included_p (gui_item, Vmenubar_configuration))
- {
- UNGCPRO;
- goto done;
- }
+ {
+ UNGCPRO;
+ goto done;
+ }
if (!STRINGP (pgui_item->name))
pgui_item->name = Feval (pgui_item->name);
if (!gui_item_active_p (gui_item))
- item_info.fState = MFS_GRAYED;
+ {
+ item_info.fState = MFS_GRAYED;
+ oldflags = MF_GRAYED;
+ }
style = (NILP (pgui_item->selected) || NILP (Feval (pgui_item->selected))
? Qnil : pgui_item->style);
@@ -414,10 +431,13 @@
{
item_info.fType |= MFT_RADIOCHECK;
item_info.fState |= MFS_CHECKED;
+ oldflags |= MF_CHECKED; /* Can't support radio-button checkmarks
+ under 3.51 */
}
else if (EQ (style, Qtoggle))
{
item_info.fState |= MFS_CHECKED;
+ oldflags |= MF_CHECKED;
}
id = allocate_menu_item_id (path, pgui_item->name,
@@ -427,6 +447,9 @@
item_info.wID = (UINT) XINT (id);
item_info.fType |= MFT_STRING;
item_info.dwTypeData = displayable_menu_item (gui_item, bar_p, &accel);
+ olduidnewitem = item_info.wID;
+ oldflags |= MF_STRING;
+ oldlpnewitem = item_info.dwTypeData;
if (accel && bar_p)
*accel_list = Fcons (make_char (accel), *accel_list);
@@ -434,14 +457,15 @@
UNGCPRO;
}
else
- {
- signal_simple_error ("Malformed menu item descriptor", item);
- }
+ syntax_error ("Malformed menu item descriptor", item);
if (flush_right)
- item_info.fType |= MFT_RIGHTJUSTIFY;
+ item_info.fType |= MFT_RIGHTJUSTIFY; /* can't support in 3.51 */
- InsertMenuItem (menu, UINT_MAX, TRUE, &item_info);
+ if (xInsertMenuItemA)
+ xInsertMenuItemA (menu, UINT_MAX, TRUE, &item_info);
+ else
+ InsertMenu (menu, UINT_MAX, oldflags, olduidnewitem, oldlpnewitem);
done:;
}
@@ -488,7 +512,7 @@
/* Check that menu name is specified when expected */
if (NILP (pgui_item->name) && deep_p)
- signal_simple_error ("Menu must have a name", desc);
+ syntax_error ("Menu must have a name", desc);
/* Apply filter if specified */
if (!NILP (pgui_item->filter))
@@ -530,7 +554,8 @@
InsertMenu (menu, 0, MF_BYPOSITION | MF_STRING | MF_DISABLED,
0, XSTRING_DATA(pgui_item->name));
InsertMenu (menu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
- SetMenuDefaultItem (menu, 0, MF_BYPOSITION);
+ if (xSetMenuDefaultItem) /* not in NT 3.5x */
+ xSetMenuDefaultItem (menu, 0, MF_BYPOSITION);
}
}
Index: src/menubar-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/menubar-x.c,v
retrieving revision 1.18.2.16
diff -u -r1.18.2.16 menubar-x.c
--- menubar-x.c 2000/04/28 15:17:23 1.18.2.16
+++ menubar-x.c 2000/07/18 10:37:03
@@ -1,6 +1,7 @@
/* Implements an elisp-programmable menubar -- X interface.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -21,6 +22,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized by Ben Wing, 7-8-00. */
+
/* Authorship:
Created 16-dec-91 by Jamie Zawinski.
@@ -102,7 +105,6 @@
/* This function cannot GC.
It is only called from menu_item_descriptor_to_widget_value, which
prohibits GC. */
- /* !!#### This function has not been Mule-ized */
int menubar_root_p = (menu_type == MENUBAR_TYPE && depth == 0);
int count = specpdl_depth ();
int partition_seen = 0;
@@ -113,21 +115,16 @@
if (STRINGP (desc))
{
- char *string_chars = (char *) XSTRING_DATA (desc);
+ Bufbyte *string_chars = XSTRING_DATA (desc);
wv->type = (separator_string_p (string_chars) ? SEPARATOR_TYPE :
TEXT_TYPE);
-#if 1
- /* #### - should internationalize with X resources instead.
- Not so! --ben */
- string_chars = GETTEXT (string_chars);
-#endif
if (wv->type == SEPARATOR_TYPE)
{
- wv->value = menu_separator_style (string_chars);
+ wv->value = menu_separator_style_and_to_external (string_chars);
}
else
{
- wv->name = xstrdup (string_chars);
+ LISP_TO_EXTERNAL_MALLOC (desc, wv->name, Qlwlib_encoding);
wv->enabled = 1;
/* dverna Dec. 98: command_builder_operate_menu_accelerator will
manipulate the accel as a Lisp_Object if the widget has a name.
@@ -164,10 +161,9 @@
int active_spec = 0;
wv->type = CASCADE_TYPE;
wv->enabled = 1;
- wv->name = (char *) XSTRING_DATA (LISP_GETTEXT (XCAR (desc)));
- wv->name = strdup_and_add_accel (wv->name);
+ wv->name = add_accel_and_to_external (XCAR (desc));
- accel = gui_name_accelerator (LISP_GETTEXT (XCAR (desc)));
+ accel = gui_name_accelerator (XCAR (desc));
wv->accel = LISP_TO_VOID (accel);
desc = Fcdr (desc);
@@ -177,8 +173,7 @@
Lisp_Object cascade = desc;
desc = Fcdr (desc);
if (NILP (desc))
- signal_simple_error ("Keyword in menu lacks a value",
- cascade);
+ syntax_error ("Keyword in menu lacks a value", cascade);
val = Fcar (desc);
desc = Fcdr (desc);
if (EQ (key, Q_included))
@@ -195,14 +190,14 @@
|| CHARP (val))
wv->accel = LISP_TO_VOID (val);
else
- signal_simple_error ("bad keyboard accelerator", val);
+ syntax_error ("bad keyboard accelerator", val);
}
else if (EQ (key, Q_label))
{
/* implement in 21.2 */
}
else
- signal_simple_error ("Unknown menu cascade keyword", cascade);
+ syntax_error ("Unknown menu cascade keyword", cascade);
}
if ((!NILP (config_tag)
@@ -256,7 +251,7 @@
title_wv->enabled = 1;
title_wv->next = sep_wv;
sep_wv->type = SEPARATOR_TYPE;
- sep_wv->value = menu_separator_style ("==");
+ sep_wv->value = menu_separator_style_and_to_external ("==");
sep_wv->next = 0;
wv->contents = title_wv;
@@ -289,8 +284,7 @@
}
else
{
- signal_simple_error ("Menu name (first element) must be a string",
- desc);
+ syntax_error ("Menu name (first element) must be a string", desc);
}
if (deep_p || menubar_root_p)
@@ -302,8 +296,9 @@
if (menubar_root_p && NILP (child)) /* the partition */
{
if (partition_seen)
- error (
- "More than one partition (nil) in menubar description");
+ syntax_error
+ ("More than one partition (nil) in menubar description",
+ desc);
partition_seen = 1;
next = xmalloc_widget_value ();
next->type = PUSHRIGHT_TYPE;
@@ -326,9 +321,9 @@
wv = NULL;
}
else if (NILP (desc))
- error ("nil may not appear in menu descriptions");
+ syntax_error ("nil may not appear in menu descriptions", desc);
else
- signal_simple_error ("Unrecognized menu descriptor", desc);
+ syntax_error ("Unrecognized menu descriptor", desc);
menu_item_done:
Index: src/menubar.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/menubar.c,v
retrieving revision 1.12.2.10
diff -u -r1.12.2.10 menubar.c
--- menubar.c 2000/03/13 07:28:01 1.12.2.10
+++ menubar.c 2000/07/18 10:37:04
@@ -371,6 +371,10 @@
INC_CHARPTR (name_data);
}
+ if (string_result_ptr - string_result == XSTRING_LENGTH (name)
+ && !memcmp (string_result, XSTRING_DATA (name), XSTRING_LENGTH (name)))
+ return name;
+
return make_string (string_result, string_result_ptr - string_result);
}
Index: src/mule-charset.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/mule-charset.c,v
retrieving revision 1.12.2.29
diff -u -r1.12.2.29 mule-charset.c
--- mule-charset.c 2000/05/02 04:36:06 1.12.2.29
+++ mule-charset.c 2000/07/18 10:37:04
@@ -690,7 +690,6 @@
int type;
Lisp_Object registry = Qnil;
Lisp_Object charset;
- Lisp_Object rest, keyword, value;
Lisp_Object ccl_program = Qnil;
Lisp_Object short_name = Qnil, long_name = Qnil;
@@ -702,85 +701,87 @@
if (!NILP (charset))
signal_simple_error ("Cannot redefine existing charset", name);
- EXTERNAL_PROPERTY_LIST_LOOP (rest, keyword, value, props)
- {
- if (EQ (keyword, Qshort_name))
- {
- CHECK_STRING (value);
- short_name = value;
- }
-
- if (EQ (keyword, Qlong_name))
- {
- CHECK_STRING (value);
- long_name = value;
- }
-
- else if (EQ (keyword, Qdimension))
- {
- CHECK_INT (value);
- dimension = XINT (value);
- if (dimension < 1 || dimension > 2)
- signal_simple_error ("Invalid value for 'dimension", value);
- }
-
- else if (EQ (keyword, Qchars))
- {
- CHECK_INT (value);
- chars = XINT (value);
- if (chars != 94 && chars != 96)
- signal_simple_error ("Invalid value for 'chars", value);
- }
-
- else if (EQ (keyword, Qcolumns))
- {
- CHECK_INT (value);
- columns = XINT (value);
- if (columns != 1 && columns != 2)
- signal_simple_error ("Invalid value for 'columns", value);
- }
-
- else if (EQ (keyword, Qgraphic))
- {
- CHECK_INT (value);
- graphic = XINT (value);
- if (graphic < 0 || graphic > 1)
- signal_simple_error ("Invalid value for 'graphic", value);
- }
-
- else if (EQ (keyword, Qregistry))
- {
- CHECK_STRING (value);
- registry = value;
- }
-
- else if (EQ (keyword, Qdirection))
- {
- if (EQ (value, Ql2r))
- direction = CHARSET_LEFT_TO_RIGHT;
- else if (EQ (value, Qr2l))
- direction = CHARSET_RIGHT_TO_LEFT;
- else
- signal_simple_error ("Invalid value for 'direction", value);
- }
-
- else if (EQ (keyword, Qfinal))
- {
- CHECK_CHAR_COERCE_INT (value);
- final = XCHAR (value);
- if (final < '0' || final > '~')
- signal_simple_error ("Invalid value for 'final", value);
- }
-
- else if (EQ (keyword, Qccl_program))
- {
- CHECK_VECTOR (value);
- ccl_program = value;
- }
-
- else
- signal_simple_error ("Unrecognized property", keyword);
- }
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP (keyword, value, props)
+ {
+ if (EQ (keyword, Qshort_name))
+ {
+ CHECK_STRING (value);
+ short_name = value;
+ }
+
+ if (EQ (keyword, Qlong_name))
+ {
+ CHECK_STRING (value);
+ long_name = value;
+ }
+
+ else if (EQ (keyword, Qdimension))
+ {
+ CHECK_INT (value);
+ dimension = XINT (value);
+ if (dimension < 1 || dimension > 2)
+ signal_simple_error ("Invalid value for 'dimension", value);
+ }
+
+ else if (EQ (keyword, Qchars))
+ {
+ CHECK_INT (value);
+ chars = XINT (value);
+ if (chars != 94 && chars != 96)
+ signal_simple_error ("Invalid value for 'chars", value);
+ }
+
+ else if (EQ (keyword, Qcolumns))
+ {
+ CHECK_INT (value);
+ columns = XINT (value);
+ if (columns != 1 && columns != 2)
+ signal_simple_error ("Invalid value for 'columns", value);
+ }
+
+ else if (EQ (keyword, Qgraphic))
+ {
+ CHECK_INT (value);
+ graphic = XINT (value);
+ if (graphic < 0 || graphic > 1)
+ signal_simple_error ("Invalid value for 'graphic", value);
+ }
+
+ else if (EQ (keyword, Qregistry))
+ {
+ CHECK_STRING (value);
+ registry = value;
+ }
+
+ else if (EQ (keyword, Qdirection))
+ {
+ if (EQ (value, Ql2r))
+ direction = CHARSET_LEFT_TO_RIGHT;
+ else if (EQ (value, Qr2l))
+ direction = CHARSET_RIGHT_TO_LEFT;
+ else
+ signal_simple_error ("Invalid value for 'direction", value);
+ }
+
+ else if (EQ (keyword, Qfinal))
+ {
+ CHECK_CHAR_COERCE_INT (value);
+ final = XCHAR (value);
+ if (final < '0' || final > '~')
+ signal_simple_error ("Invalid value for 'final", value);
+ }
+
+ else if (EQ (keyword, Qccl_program))
+ {
+ CHECK_VECTOR (value);
+ ccl_program = value;
+ }
+
+ else
+ signal_simple_error ("Unrecognized property", keyword);
+ }
+ }
if (!final)
error ("'final must be specified");
Index: src/mule-wnnfns.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/mule-wnnfns.c,v
retrieving revision 1.15.2.2
diff -u -r1.15.2.2 mule-wnnfns.c
--- mule-wnnfns.c 1999/10/10 12:40:13 1.15.2.2
+++ mule-wnnfns.c 2000/07/18 10:37:05
@@ -1066,7 +1066,6 @@
{
int rc;
struct wnn_param param;
- Lisp_Object tail, key, val;
int snum;
if ((snum = check_wnn_server_type ()) == -1) return Qnil;
@@ -1074,34 +1073,36 @@
rc = jl_param_get (wnnfns_buf[snum], ¶m);
if (rc < 0) return Qnil;
- EXTERNAL_PROPERTY_LIST_LOOP (tail, key, val, Vsetvalues_alist)
- {
- int setval;
- CHECK_INT (val);
- setval = XINT (val);
- if (EQ (key, Qwnn_n)) param.n = setval;
- else if (EQ (key, Qwnn_nsho)) param.nsho = setval;
- else if (EQ (key, Qwnn_hindo)) param.p1 = setval;
- else if (EQ (key, Qwnn_len)) param.p2 = setval;
- else if (EQ (key, Qwnn_jiri)) param.p3 = setval;
- else if (EQ (key, Qwnn_flag)) param.p4 = setval;
- else if (EQ (key, Qwnn_jisho)) param.p5 = setval;
- else if (EQ (key, Qwnn_sbn)) param.p6 = setval;
- else if (EQ (key, Qwnn_dbn_len)) param.p7 = setval;
- else if (EQ (key, Qwnn_sbn_cnt)) param.p8 = setval;
- else if (EQ (key, Qwnn_suuji)) param.p9 = setval;
- else if (EQ (key, Qwnn_kana)) param.p10 = setval;
- else if (EQ (key, Qwnn_eisuu)) param.p11 = setval;
- else if (EQ (key, Qwnn_kigou)) param.p12 = setval;
- else if (EQ (key, Qwnn_toji_kakko)) param.p13 = setval;
- else if (EQ (key, Qwnn_fuzokogo)) param.p14 = setval;
- else if (EQ (key, Qwnn_kaikakko)) param.p15 = setval;
- else
- {
- signal_simple_error ("Invalid wnn keyword", key);
- return Qnil;
- }
- }
+ {
+ EXTERNAL_PROPERTY_LIST_LOOP_3 (key, val, Vsetvalues_alist)
+ {
+ int setval;
+ CHECK_INT (val);
+ setval = XINT (val);
+ if (EQ (key, Qwnn_n)) param.n = setval;
+ else if (EQ (key, Qwnn_nsho)) param.nsho = setval;
+ else if (EQ (key, Qwnn_hindo)) param.p1 = setval;
+ else if (EQ (key, Qwnn_len)) param.p2 = setval;
+ else if (EQ (key, Qwnn_jiri)) param.p3 = setval;
+ else if (EQ (key, Qwnn_flag)) param.p4 = setval;
+ else if (EQ (key, Qwnn_jisho)) param.p5 = setval;
+ else if (EQ (key, Qwnn_sbn)) param.p6 = setval;
+ else if (EQ (key, Qwnn_dbn_len)) param.p7 = setval;
+ else if (EQ (key, Qwnn_sbn_cnt)) param.p8 = setval;
+ else if (EQ (key, Qwnn_suuji)) param.p9 = setval;
+ else if (EQ (key, Qwnn_kana)) param.p10 = setval;
+ else if (EQ (key, Qwnn_eisuu)) param.p11 = setval;
+ else if (EQ (key, Qwnn_kigou)) param.p12 = setval;
+ else if (EQ (key, Qwnn_toji_kakko)) param.p13 = setval;
+ else if (EQ (key, Qwnn_fuzokogo)) param.p14 = setval;
+ else if (EQ (key, Qwnn_kaikakko)) param.p15 = setval;
+ else
+ {
+ signal_simple_error ("Invalid wnn keyword", key);
+ return Qnil;
+ }
+ }
+ }
#if 0
printf("wnn_n = %d\n",param.n);
Index: src/ntproc.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/ntproc.c,v
retrieving revision 1.14.2.22
diff -u -r1.14.2.22 ntproc.c
--- ntproc.c 2000/06/13 01:40:06 1.14.2.22
+++ ntproc.c 2000/07/18 10:37:05
@@ -410,8 +410,10 @@
start.hStdError = GetStdHandle (STD_ERROR_HANDLE);
/* Explicitly specify no security */
+ /* #### not supported under win98, but will go away */
if (!InitializeSecurityDescriptor (&sec_desc, SECURITY_DESCRIPTOR_REVISION))
goto EH_Fail;
+ /* #### not supported under win98, but will go away */
if (!SetSecurityDescriptorDacl (&sec_desc, TRUE, NULL, FALSE))
goto EH_Fail;
sec_attrs.nLength = sizeof (sec_attrs);
@@ -1252,6 +1254,7 @@
if (!IsValidLocale (XINT (lcid), LCID_SUPPORTED))
return Qnil;
+ /* #### not supported under win98, but will go away */
if (!SetThreadLocale (XINT (lcid)))
return Qnil;
Index: src/objects-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/objects-msw.c,v
retrieving revision 1.19.2.16
diff -u -r1.19.2.16 objects-msw.c
--- objects-msw.c 2000/05/03 14:47:13 1.19.2.16
+++ objects-msw.c 2000/07/18 10:37:06
@@ -961,6 +961,69 @@
};
static int CALLBACK
+old_font_enum_callback_2 (ENUMLOGFONT FAR *lpelfe, NEWTEXTMETRIC FAR *lpntme,
+ int FontType, struct font_enum_t *font_enum)
+{
+ char fontname[MSW_FONTSIZE];
+ Lisp_Object fontname_lispstr;
+ int i;
+
+ /*
+ * The enumerated font weights are not to be trusted because:
+ * a) lpelfe->elfStyle is only filled in for TrueType fonts.
+ * b) Not all Bold and Italic styles of all fonts (inluding some Vector,
+ * Truetype and Raster fonts) are enumerated.
+ * I guess that fonts for which Bold and Italic styles are generated
+ * 'on-the-fly' are not enumerated. It would be overly restrictive to
+ * disallow Bold And Italic weights for these fonts, so we just leave
+ * weights unspecified. This means that we have to weed out duplicates of
+ * those fonts that do get enumerated with different weights.
+ */
+ if (FontType == 0 /*vector*/ || FontType == TRUETYPE_FONTTYPE)
+ /* Scalable, so leave pointsize blank */
+ sprintf (fontname, "%s::::", lpelfe->elfLogFont.lfFaceName);
+ else
+ /* Formula for pointsize->height from LOGFONT docs in Platform SDK */
+ sprintf (fontname, "%s::%d::", lpelfe->elfLogFont.lfFaceName,
+ MulDiv (lpntme->tmHeight - lpntme->tmInternalLeading,
+ 72, GetDeviceCaps (font_enum->hdc, LOGPIXELSY)));
+
+ /*
+ * The enumerated font character set strings are not to be trusted because
+ * lpelfe->elfScript is returned in the host language and not in English.
+ * We can't know a priori the translations of "Western", "Central
European"
+ * etc into the host language, so we must use English. The same argument
+ * applies to the font weight string when matching fonts.
+ */
+ for (i=0; i<countof (charset_map); i++)
+ if (lpelfe->elfLogFont.lfCharSet == charset_map[i].value)
+ {
+ strcat (fontname, charset_map[i].name);
+ break;
+ }
+ if (i==countof (charset_map))
+ strcpy (fontname, charset_map[0].name);
+
+ /* Add the font name to the list if not already there */
+ fontname_lispstr = build_string (fontname);
+ if (NILP (memq_no_quit (fontname_lispstr, font_enum->list)))
+ font_enum->list = Fcons (fontname_lispstr, font_enum->list);
+
+ return 1;
+}
+
+static int CALLBACK
+old_font_enum_callback_1 (ENUMLOGFONT FAR *lpelfe, NEWTEXTMETRIC FAR *lpntme,
+ int FontType, struct font_enum_t *font_enum)
+{
+ /* This function gets called once per facename per character set.
+ * We call a second callback to enumerate the fonts in each facename */
+ return EnumFontFamilies (font_enum->hdc, lpelfe->elfLogFont.lfFaceName,
+ (FONTENUMPROC) old_font_enum_callback_2,
+ (LPARAM) font_enum);
+}
+
+static int CALLBACK
font_enum_callback_2 (ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme,
int FontType, struct font_enum_t *font_enum)
{
@@ -1018,9 +1081,9 @@
{
/* This function gets called once per facename per character set.
* We call a second callback to enumerate the fonts in each facename */
- return EnumFontFamiliesEx (font_enum->hdc, &lpelfe->elfLogFont,
- (FONTENUMPROC) font_enum_callback_2,
- (LPARAM) font_enum, 0);
+ return xEnumFontFamiliesExA (font_enum->hdc, &lpelfe->elfLogFont,
+ (FONTENUMPROC) font_enum_callback_2,
+ (LPARAM) font_enum, 0);
}
/*
@@ -1040,8 +1103,13 @@
logfont.lfPitchAndFamily = DEFAULT_PITCH;
font_enum.hdc = hdc;
font_enum.list = Qnil;
- EnumFontFamiliesEx (hdc, &logfont, (FONTENUMPROC) font_enum_callback_1,
- (LPARAM) (&font_enum), 0);
+ if (xEnumFontFamiliesExA)
+ xEnumFontFamiliesExA (hdc, &logfont, (FONTENUMPROC) font_enum_callback_1,
+ (LPARAM) (&font_enum), 0);
+ else /* NT 3.5x */
+ EnumFontFamilies (hdc, 0, (FONTENUMPROC) old_font_enum_callback_1,
+ (LPARAM) (&font_enum));
+
return font_enum.list;
}
Index: src/objects-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/objects-x.c,v
retrieving revision 1.9.2.9
diff -u -r1.9.2.9 objects-x.c
--- objects-x.c 2000/06/12 04:18:19 1.9.2.9
+++ objects-x.c 2000/07/18 10:37:06
@@ -2,7 +2,7 @@
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Board of Trustees, University of Illinois.
Copyright (C) 1995 Tinker Systems.
- Copyright (C) 1995, 1996 Ben Wing.
+ Copyright (C) 1995, 1996, 2000 Ben Wing.
Copyright (C) 1995 Sun Microsystems, Inc.
This file is part of XEmacs.
@@ -26,6 +26,8 @@
/* Authors: Jamie Zawinski, Chuck Thompson, Ben Wing */
+/* This file Mule-ized by Ben Wing, 7-10-00. */
+
#include <config.h>
#include "lisp.h"
@@ -135,7 +137,8 @@
bl = color_def->blue << (bbits - 8);
else
bl = color_def->blue >> (8 - bbits);
- color_def->pixel = (rd << rshift) | (gr << gshift) | (bl <<
bshift);
+ color_def->pixel = (rd << rshift) | (gr << gshift) | (bl <<
+ bshift);
status = 3;
}
}
@@ -162,14 +165,14 @@
int x;
if( cells == NULL )
- {
- cells = alloca_array (XColor, no_cells);
- for (x = 0; x < no_cells; x++)
- cells[x].pixel = x;
-
- /* read the current colormap */
- XQueryColors (display, colormap, cells, no_cells);
- }
+ {
+ cells = alloca_array (XColor, no_cells);
+ for (x = 0; x < no_cells; x++)
+ cells[x].pixel = x;
+
+ /* read the current colormap */
+ XQueryColors (display, colormap, cells, no_cells);
+ }
nearest = 0;
/* I'm assuming CSE so I'm not going to condense this. */
@@ -177,20 +180,24 @@
* ((color_def->red >> 8) - (cells[0].red >> 8)))
+
(((color_def->green >> 8) - (cells[0].green >> 8))
- * ((color_def->green >> 8) - (cells[0].green >> 8)))
+ * ((color_def->green >> 8) - (cells[0].green >>
+ 8)))
+
(((color_def->blue >> 8) - (cells[0].blue >> 8))
- * ((color_def->blue >> 8) - (cells[0].blue >> 8))));
+ * ((color_def->blue >> 8) - (cells[0].blue >>
+ 8))));
for (x = 1; x < no_cells; x++)
{
trial_delta = ((((color_def->red >> 8) - (cells[x].red >> 8))
* ((color_def->red >> 8) - (cells[x].red >> 8)))
+
(((color_def->green >> 8) - (cells[x].green >> 8))
- * ((color_def->green >> 8) - (cells[x].green >> 8)))
+ * ((color_def->green >> 8) - (cells[x].green >>
+ 8)))
+
(((color_def->blue >> 8) - (cells[x].blue >> 8))
- * ((color_def->blue >> 8) - (cells[x].blue >> 8))));
+ * ((color_def->blue >> 8) - (cells[x].blue >>
+ 8))));
/* less? Ignore cells marked as previously failing */
if( (trial_delta < nearest_delta) &&
@@ -204,22 +211,22 @@
color_def->green = cells[nearest].green;
color_def->blue = cells[nearest].blue;
if (XAllocColor (display, colormap, color_def) != 0)
- status = 2;
+ status = 2;
else
- /* LSK: Either the colour map has changed since
- * we read it, or the colour is allocated
- * read/write... Mark this cmap entry so it's
- * ignored in the next iteration.
- */
- cells[nearest].pixel = ULONG_MAX;
+ /* LSK: Either the colour map has changed since
+ * we read it, or the colour is allocated
+ * read/write... Mark this cmap entry so it's
+ * ignored in the next iteration.
+ */
+ cells[nearest].pixel = ULONG_MAX;
}
}
return status;
}
-int
-x_parse_nearest_color (struct device *d, XColor *color, Bufbyte *name,
- Bytecount len, Error_behavior errb)
+static int
+x_parse_nearest_color (struct device *d, XColor *color, Lisp_Object name,
+ Error_behavior errb)
{
Display *dpy = DEVICE_X_DISPLAY (d);
Colormap cmap = DEVICE_X_COLORMAP (d);
@@ -229,24 +236,20 @@
xzero (*color);
{
const Extbyte *extname;
- Extcount extnamelen;
- TO_EXTERNAL_FORMAT (DATA, (name, len),
- ALLOCA, (extname, extnamelen),
- Qbinary);
- result = XParseColor (dpy, cmap, (char *) extname, color);
+ LISP_TO_EXTERNAL (name, extname, Qx_color_name_encoding);
+ result = XParseColor (dpy, cmap, extname, color);
}
if (!result)
{
- maybe_signal_simple_error ("Unrecognized color", make_string (name,
len),
- Qcolor, errb);
+ maybe_signal_simple_error ("Unrecognized color", name, Qcolor, errb);
return 0;
}
result = allocate_nearest_color (dpy, cmap, visual, color);
if (!result)
{
- maybe_signal_simple_error ("Couldn't allocate color",
- make_string (name, len), Qcolor, errb);
+ maybe_signal_simple_error ("Couldn't allocate color", name, Qcolor,
+ errb);
return 0;
}
@@ -260,10 +263,7 @@
XColor color;
int result;
- result = x_parse_nearest_color (XDEVICE (device), &color,
- XSTRING_DATA (name),
- XSTRING_LENGTH (name),
- errb);
+ result = x_parse_nearest_color (XDEVICE (device), &color, name, errb);
if (!result)
return 0;
@@ -284,7 +284,7 @@
Lisp_Object printcharfun,
int escapeflag)
{
- char buf[100];
+ Bufbyte buf[100];
XColor color = COLOR_INSTANCE_X_COLOR (c);
sprintf (buf, " %ld=(%X,%X,%X)",
color.pixel, color.red, color.green, color.blue);
@@ -300,7 +300,8 @@
{
if (COLOR_INSTANCE_X_DEALLOC (c))
{
- XFreeColors (DEVICE_X_DISPLAY (XDEVICE (c->device)), DEVICE_X_COLORMAP (XDEVICE
(c->device)),
+ XFreeColors (DEVICE_X_DISPLAY (XDEVICE (c->device)),
+ DEVICE_X_COLORMAP (XDEVICE (c->device)),
&COLOR_INSTANCE_X_COLOR (c).pixel, 1, 0);
}
}
@@ -348,11 +349,10 @@
XColor c;
Display *dpy = DEVICE_X_DISPLAY (d);
Colormap cmap = DEVICE_X_COLORMAP (d);
+ const Extbyte *extname;
- const char *extname;
+ LISP_TO_EXTERNAL (color, extname, Qx_color_name_encoding);
- TO_EXTERNAL_FORMAT (LISP_STRING, color, C_STRING_ALLOCA, extname, Qctext);
-
return XParseColor (dpy, cmap, extname, &c);
}
@@ -367,9 +367,9 @@
{
Display *dpy = DEVICE_X_DISPLAY (XDEVICE (device));
XFontStruct *xf;
- const char *extname;
+ const Extbyte *extname;
- TO_EXTERNAL_FORMAT (LISP_STRING, f->name, C_STRING_ALLOCA, extname, Qctext);
+ LISP_TO_EXTERNAL (f->name, extname, Qx_font_name_encoding);
xf = XLoadQueryFont (dpy, extname);
if (!xf)
@@ -466,7 +466,7 @@
Lisp_Object printcharfun,
int escapeflag)
{
- char buf[200];
+ Bufbyte buf[200];
sprintf (buf, " 0x%lx", (unsigned long) FONT_INSTANCE_X_FONT (f)->fid);
write_c_string (buf, printcharfun);
}
@@ -570,14 +570,14 @@
that the various servers are actually doing, please let me know! -- jwz. */
static int
-valid_x_font_name_p (Display *dpy, char *name)
+valid_x_font_name_p (Display *dpy, Extbyte *name)
{
/* Maybe this should be implemented by calling XLoadFont and trapping
the error. That would be a lot of work, and wasteful as hell, but
might be more correct.
*/
int nnames = 0;
- char **names = 0;
+ SExtbyte **names = 0;
if (! name)
return 0;
names = XListFonts (dpy, name, 1, &nnames);
@@ -586,11 +586,11 @@
return (nnames != 0);
}
-static char *
+static Extbyte *
truename_via_FONT_prop (Display *dpy, XFontStruct *font)
{
unsigned long value = 0;
- char *result = 0;
+ Extbyte *result = 0;
if (XGetFontProperty (font, XA_FONT, &value))
result = XGetAtomName (dpy, value);
/* result is now 0, or the string value of the FONT property. */
@@ -606,19 +606,19 @@
return result; /* this must be freed by caller if non-0 */
}
-static char *
+static Extbyte *
truename_via_random_props (Display *dpy, XFontStruct *font)
{
struct device *d = get_device_from_display (dpy);
unsigned long value = 0;
- char *foundry, *family, *weight, *slant, *setwidth, *add_style;
+ Extbyte *foundry, *family, *weight, *slant, *setwidth, *add_style;
unsigned long pixel, point, res_x, res_y;
- char *spacing;
+ Extbyte *spacing;
unsigned long avg_width;
- char *registry, *encoding;
- char composed_name [2048];
+ Extbyte *registry, *encoding;
+ Extbyte composed_name [2048];
int ok = 0;
- char *result;
+ Extbyte *result;
#define get_string(atom,var) \
if (XGetFontProperty (font, (atom), &value)) \
@@ -661,7 +661,7 @@
if (ok)
{
int L = strlen (composed_name) + 1;
- result = (char *) xmalloc (L);
+ result = (Extbyte *) xmalloc (L);
strncpy (result, composed_name, L);
}
else
@@ -683,11 +683,11 @@
/* Unbounded, for sufficiently small values of infinity... */
#define MAX_FONT_COUNT 5000
-static char *
-truename_via_XListFonts (Display *dpy, char *font_name)
+static Extbyte *
+truename_via_XListFonts (Display *dpy, Extbyte *font_name)
{
- char *result = 0;
- char **names;
+ Extbyte *result = 0;
+ SExtbyte **names;
int count = 0;
#ifndef XOPENFONT_SORTS
@@ -699,6 +699,7 @@
/* But the world I live in is much more perverse. */
names = XListFonts (dpy, font_name, MAX_FONT_COUNT, &count);
while (count--)
+ /* !!#### Not Mule-friendly */
/* If names[count] is lexicographically less than result, use it.
(#### Should we be comparing case-insensitively?) */
if (result == 0 || (strcmp (result, names [count]) < 0))
@@ -714,11 +715,11 @@
}
static Lisp_Object
-x_font_truename (Display *dpy, char *name, XFontStruct *font)
+x_font_truename (Display *dpy, Extbyte *name, XFontStruct *font)
{
- char *truename_FONT = 0;
- char *truename_random = 0;
- char *truename = 0;
+ Extbyte *truename_FONT = 0;
+ Extbyte *truename_random = 0;
+ Extbyte *truename = 0;
/* The search order is:
- if FONT property exists, and is a valid name, return it.
@@ -763,7 +764,7 @@
if (truename)
{
- Lisp_Object result = build_string (truename);
+ Lisp_Object result = build_ext_string (truename, Qx_font_name_encoding);
XFree (truename);
return result;
}
@@ -779,18 +780,20 @@
if (NILP (FONT_INSTANCE_X_TRUENAME (f)))
{
Display *dpy = DEVICE_X_DISPLAY (d);
- char *name = (char *) XSTRING_DATA (f->name);
{
+ Extbyte *nameext;
+
+ LISP_TO_EXTERNAL (f->name, nameext, Qx_font_name_encoding);
FONT_INSTANCE_X_TRUENAME (f) =
- x_font_truename (dpy, name, FONT_INSTANCE_X_FONT (f));
+ x_font_truename (dpy, nameext, FONT_INSTANCE_X_FONT (f));
}
if (NILP (FONT_INSTANCE_X_TRUENAME (f)))
{
Lisp_Object font_instance;
XSETFONT_INSTANCE (font_instance, f);
-
+
maybe_signal_simple_error ("Couldn't determine font truename",
- font_instance, Qfont, errb);
+ font_instance, Qfont, errb);
/* Ok, just this once, return the font name as the truename.
(This is only used by Fequal() right now.) */
return f->name;
@@ -812,11 +815,14 @@
props = FONT_INSTANCE_X_FONT (f)->properties;
for (i = FONT_INSTANCE_X_FONT (f)->n_properties - 1; i >= 0; i--)
{
- char *name_str = 0;
- char *val_str = 0;
Lisp_Object name, value;
Atom atom = props [i].name;
- name_str = XGetAtomName (dpy, atom);
+ Bufbyte *name_str = 0;
+ Extbyte *namestrext = XGetAtomName (dpy, atom);
+
+ if (namestrext)
+ EXTERNAL_TO_C (namestrext, name_str, Qx_atom_name_encoding);
+
name = (name_str ? intern (name_str) : Qnil);
if (name_str &&
(atom == XA_FONT ||
@@ -841,12 +847,14 @@
!strcmp (name_str, "RELATIVE_WEIGHT") ||
!strcmp (name_str, "STYLE")))
{
- val_str = XGetAtomName (dpy, props [i].card32);
- value = (val_str ? build_string (val_str) : Qnil);
+ Extbyte *val_str = XGetAtomName (dpy, props [i].card32);
+
+ value = (val_str ? build_ext_string (val_str, Qx_atom_name_encoding)
+ : Qnil);
}
else
value = make_int (props [i].card32);
- if (name_str) XFree (name_str);
+ if (namestrext) XFree (namestrext);
result = Fcons (Fcons (name, value), result);
}
return result;
@@ -855,19 +863,18 @@
static Lisp_Object
x_list_fonts (Lisp_Object pattern, Lisp_Object device)
{
- char **names;
+ SExtbyte **names;
int count = 0;
Lisp_Object result = Qnil;
- const char *patternext;
+ const Extbyte *patternext;
- TO_EXTERNAL_FORMAT (LISP_STRING, pattern,
- C_STRING_ALLOCA, patternext,
- Qbinary);
+ LISP_TO_EXTERNAL (pattern, patternext, Qx_font_name_encoding);
names = XListFonts (DEVICE_X_DISPLAY (XDEVICE (device)),
patternext, MAX_FONT_COUNT, &count);
while (count--)
- result = Fcons (build_ext_string (names [count], Qbinary), result);
+ result = Fcons (build_ext_string (names[count], Qx_font_name_encoding),
+ result);
if (names)
XFreeFontNames (names);
return result;
@@ -929,28 +936,24 @@
static Lisp_Object
x_find_charset_font (Lisp_Object device, Lisp_Object font, Lisp_Object charset)
{
- char **names;
+ Extbyte **names;
int count = 0;
Lisp_Object result = Qnil;
- const char *patternext;
+ const Extbyte *patternext;
int i;
- TO_EXTERNAL_FORMAT (LISP_STRING, font,
- C_STRING_ALLOCA, patternext,
- Qbinary);
+ LISP_TO_EXTERNAL (font, patternext, Qx_font_name_encoding);
names = XListFonts (DEVICE_X_DISPLAY (XDEVICE (device)),
patternext, MAX_FONT_COUNT, &count);
/* #### This code seems awfully bogus -- mrb */
for (i = 0; i < count; i ++)
{
- const char *intname;
+ const Bufbyte *intname;
- TO_INTERNAL_FORMAT (C_STRING, names[i],
- C_STRING_ALLOCA, intname,
- Qbinary);
+ EXTERNAL_TO_C (names[i], intname, Qx_font_name_encoding);
if (x_font_spec_matches_charset (XDEVICE (device), charset,
- (Bufbyte *) intname, Qnil, 0, -1))
+ intname, Qnil, 0, -1))
{
result = build_string (intname);
break;
Index: src/objects-x.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/objects-x.h,v
retrieving revision 1.2.2.1
diff -u -r1.2.2.1 objects-x.h
--- objects-x.h 2000/01/22 12:04:15 1.2.2.1
+++ objects-x.h 2000/07/18 10:37:06
@@ -22,6 +22,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized (more like Mule-verified) by Ben Wing, 7-10-00. */
+
#ifndef INCLUDED_objects_x_h_
#define INCLUDED_objects_x_h_
@@ -43,10 +45,8 @@
#define COLOR_INSTANCE_X_COLOR(c) (X_COLOR_INSTANCE_DATA (c)->color)
#define COLOR_INSTANCE_X_DEALLOC(c) (X_COLOR_INSTANCE_DATA (c)->dealloc_on_gc)
-int allocate_nearest_color (Display *display, Colormap screen_colormap, Visual *visual,
- XColor *color_def);
-int x_parse_nearest_color (struct device *d, XColor *color, Bufbyte *name,
- Bytecount len, Error_behavior errb);
+int allocate_nearest_color (Display *display, Colormap screen_colormap,
+ Visual *visual, XColor *color_def);
/*****************************************************************************
Font-Instance
Index: src/print.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/print.c,v
retrieving revision 1.27.2.21
diff -u -r1.27.2.21 print.c
--- print.c 2000/06/26 14:11:58 1.27.2.21
+++ print.c 2000/07/18 10:37:07
@@ -52,8 +52,12 @@
/* The subroutine object for external-debugging-output is kept here
for the convenience of the debugger. */
-Lisp_Object Qexternal_debugging_output;
+Lisp_Object Qexternal_debugging_output, Qalternate_debugging_output;
+#ifdef HAVE_MS_WINDOWS
+Lisp_Object Qmswindows_debugging_output;
+#endif
+
/* Avoid actual stack overflow in print. */
static int print_depth;
@@ -105,10 +109,6 @@
int stdout_needs_newline;
-#ifdef WIN32_NATIVE
-static int no_useful_stderr;
-#endif
-
static void
std_handle_out_external (FILE *stream, Lisp_Object lstream,
const Extbyte *extptr, Extcount extlen,
@@ -120,12 +120,14 @@
if (stream)
{
#ifdef WIN32_NATIVE
- if (!no_useful_stderr)
- no_useful_stderr = GetStdHandle (STD_ERROR_HANDLE) == 0 ? 1 : -1;
+ HANDLE errhand = GetStdHandle (STD_INPUT_HANDLE);
+ int no_useful_stderr = errhand == 0 || errhand == INVALID_HANDLE_VALUE;
+ if (!no_useful_stderr)
+ no_useful_stderr = !PeekNamedPipe (errhand, 0, 0, 0, 0, 0);
/* we typically have no useful stdout/stderr under windows if we're
being invoked graphically. */
- if (!noninteractive || no_useful_stderr > 0)
+ if (no_useful_stderr)
mswindows_output_console_string (extptr, extlen);
else
#endif
@@ -1512,13 +1514,9 @@
UNGCPRO;
}
-/* #ifdef DEBUG_XEMACS */
-/* I don't like seeing `Note: Strange doc (not fboundp) for function
- alternate-debugging-output @ 429542' -slb */
-/* #### Eek! Any clue how to get rid of it? In fact, how about
- getting rid of this function altogether? Does anything actually
- *use* it? --hniksic */
+/* Useful on systems or in places where writing to stdout is unavailable or
+ not working. */
static int alternate_do_pointer;
static char alternate_do_string[5000];
@@ -1546,7 +1544,6 @@
alternate_do_string[alternate_do_pointer] = 0;
return character;
}
-/* #endif / * DEBUG_XEMACS */
DEFUN ("external-debugging-output", Fexternal_debugging_output, 1, 3, 0, /*
Write CHAR-OR-STRING to stderr or stdout.
@@ -1658,6 +1655,12 @@
Vprint_level = make_int (debug_print_level);
print_internal (debug_print_obj, Qexternal_debugging_output, 1);
+ alternate_do_pointer = 0;
+ print_internal (debug_print_obj, Qalternate_debugging_output, 1);
+#ifdef HAVE_MS_WINDOWS
+ /* Write out to the debugger, as well */
+ print_internal (debug_print_obj, Qmswindows_debugging_output, 1);
+#endif
Vinhibit_quit = save_Vinhibit_quit;
Vprint_level = save_Vprint_level;
@@ -1783,6 +1786,10 @@
DEFSUBR (Fexternal_debugging_output);
DEFSUBR (Fopen_termscript);
defsymbol (&Qexternal_debugging_output, "external-debugging-output");
+ defsymbol (&Qalternate_debugging_output, "alternate-debugging-output");
+#ifdef HAVE_MS_WINDOWS
+ defsymbol (&Qmswindows_debugging_output, "mswindows-debugging-output");
+#endif
DEFSUBR (Fwith_output_to_temp_buffer);
}
Index: src/process-nt.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/process-nt.c,v
retrieving revision 1.11.2.22
diff -u -r1.11.2.22 process-nt.c
--- process-nt.c 2000/06/13 01:40:07 1.11.2.22
+++ process-nt.c 2000/07/18 10:37:07
@@ -608,7 +608,7 @@
static int
send_signal (struct nt_process_data *cp, int pid, int signo)
{
- return send_signal_the_nt_way (cp, pid, signo)
+ return (!mswindows_windows9x_p () && send_signal_the_nt_way (cp, pid, signo))
|| send_signal_the_95_way (cp, pid, signo);
}
@@ -720,31 +720,34 @@
already does this. */
/* Find out whether the application is windowed or not */
- {
- /* SHGetFileInfo tends to return ERROR_FILE_NOT_FOUND on most
- errors. This leads to bogus error message. */
- DWORD image_type;
- char *p = strrchr ((char *)XSTRING_DATA (program), '.');
- if (p != NULL &&
- (stricmp (p, ".exe") == 0 ||
- stricmp (p, ".com") == 0 ||
- stricmp (p, ".bat") == 0 ||
- stricmp (p, ".cmd") == 0))
- {
- image_type = SHGetFileInfo ((char *)XSTRING_DATA (program), 0,NULL,
- 0, SHGFI_EXETYPE);
- }
- else
- {
- char progname[MAX_PATH];
- sprintf (progname, "%s.exe", (char *)XSTRING_DATA (program));
- image_type = SHGetFileInfo (progname, 0, NULL, 0, SHGFI_EXETYPE);
- }
- if (image_type == 0)
- signal_cannot_launch (program, (GetLastError () == ERROR_FILE_NOT_FOUND
- ? ERROR_BAD_FORMAT : GetLastError ()));
- windowed = HIWORD (image_type) != 0;
- }
+ if (xSHGetFileInfoA)
+ {
+ /* SHGetFileInfo tends to return ERROR_FILE_NOT_FOUND on most
+ errors. This leads to bogus error message. */
+ DWORD image_type;
+ char *p = strrchr ((char *)XSTRING_DATA (program), '.');
+ if (p != NULL &&
+ (stricmp (p, ".exe") == 0 ||
+ stricmp (p, ".com") == 0 ||
+ stricmp (p, ".bat") == 0 ||
+ stricmp (p, ".cmd") == 0))
+ {
+ image_type = xSHGetFileInfoA ((char *)XSTRING_DATA (program), 0,NULL,
+ 0, SHGFI_EXETYPE);
+ }
+ else
+ {
+ char progname[MAX_PATH];
+ sprintf (progname, "%s.exe", (char *)XSTRING_DATA (program));
+ image_type = xSHGetFileInfoA (progname, 0, NULL, 0, SHGFI_EXETYPE);
+ }
+ if (image_type == 0)
+ signal_cannot_launch (program, (GetLastError () == ERROR_FILE_NOT_FOUND
+ ? ERROR_BAD_FORMAT : GetLastError ()));
+ windowed = HIWORD (image_type) != 0;
+ }
+ else /* NT 3.5; we have no idea so just guess. */
+ windowed = 0;
/* Decide whether to do I/O on process handles, or just mark the
process exited immediately upon successful launching. We do I/O if the
@@ -1024,7 +1027,7 @@
TO_EXTERNAL_FORMAT (C_STRING, quoted_args[i], ALLOCA,
(extarg[i], extargcount[i]), Qmswindows_tstr);
/* account for space and terminating null */
- total_cmdline_len += extargcount[i] + EITCHAR_SIZE;
+ total_cmdline_len += extargcount[i] + XETCHAR_SIZE;
}
command_line = alloca_array (char, total_cmdline_len);
@@ -1033,11 +1036,11 @@
{
memcpy (command_ptr, extarg[i], extargcount[i]);
command_ptr += extargcount[i];
- EICOPY_TCHAR (command_ptr, ' ');
- command_ptr += EITCHAR_SIZE;
+ XECOPY_TCHAR (command_ptr, ' ');
+ command_ptr += XETCHAR_SIZE;
}
- EICOPY_TCHAR (command_ptr, '\0');
- command_ptr += EITCHAR_SIZE;
+ XECOPY_TCHAR (command_ptr, '\0');
+ command_ptr += XETCHAR_SIZE;
}
}
/* Set `proc_env' to a nul-separated array of the strings in
Index: src/process-unix.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/process-unix.c,v
retrieving revision 1.11.2.21
diff -u -r1.11.2.21 process-unix.c
--- process-unix.c 2000/07/14 02:22:28 1.11.2.21
+++ process-unix.c 2000/07/18 10:37:08
@@ -928,9 +928,7 @@
}
new_argv[i + 1] = 0;
- TO_EXTERNAL_FORMAT (LISP_STRING, cur_dir,
- C_STRING_ALLOCA, current_dir,
- Qfile_name);
+ LISP_TO_EXTERNAL (cur_dir, current_dir, Qfile_name);
child_setup (xforkin, xforkout, xforkout, new_argv, current_dir);
}
@@ -1440,15 +1438,13 @@
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = 0;
- TO_EXTERNAL_FORMAT (LISP_STRING, host, C_STRING_ALLOCA, ext_host, Qnative);
+ LISP_TO_EXTERNAL (host, ext_host, Qnative);
retval = getaddrinfo (ext_host, NULL, &hints, &res);
if (retval != 0)
{
char *gai_error;
- TO_INTERNAL_FORMAT (C_STRING, gai_strerror (retval),
- C_STRING_ALLOCA, gai_error,
- Qnative);
+ EXTERNAL_TO_C (gai_strerror (retval), gai_error, Qnative);
maybe_error (Qprocess, ERROR_ME_NOT,
"%s \"%s\"", gai_error, XSTRING_DATA (host));
canonname = host;
@@ -1523,9 +1519,7 @@
else
{
CHECK_STRING (service);
- TO_EXTERNAL_FORMAT (LISP_STRING, service,
- C_STRING_ALLOCA, portstring,
- Qnative);
+ LISP_TO_EXTERNAL (service, portstring, Qnative);
port = 0;
}
@@ -1537,15 +1531,13 @@
else /* EQ (protocol, Qudp) */
hints.ai_socktype = SOCK_DGRAM;
hints.ai_protocol = 0;
- TO_EXTERNAL_FORMAT (LISP_STRING, host, C_STRING_ALLOCA, ext_host, Qnative);
+ LISP_TO_EXTERNAL (host, ext_host, Qnative);
retval = getaddrinfo (ext_host, portstring, &hints, &res);
if (retval != 0)
{
char *gai_error;
- TO_INTERNAL_FORMAT (C_STRING, gai_strerror (retval),
- C_STRING_ALLOCA, gai_error,
- Qnative);
+ EXTERNAL_TO_C (gai_strerror (retval), gai_error, Qnative);
error ("%s/%s %s", XSTRING_DATA (host), portstring, gai_error);
}
Index: src/scrollbar-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/scrollbar-x.c,v
retrieving revision 1.14.2.6
diff -u -r1.14.2.6 scrollbar-x.c
--- scrollbar-x.c 2000/04/01 13:27:32 1.14.2.6
+++ scrollbar-x.c 2000/07/18 10:37:08
@@ -23,6 +23,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized (more like Mule-verified) by Ben Wing, 7-8-00. */
+
#include <config.h>
#include "lisp.h"
Index: src/search.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/search.c,v
retrieving revision 1.14.2.9
diff -u -r1.14.2.9 search.c
--- search.c 2000/02/16 02:07:14 1.14.2.9
+++ search.c 2000/07/18 10:37:09
@@ -2543,8 +2543,8 @@
syms_of_search (void)
{
- deferror (&Qsearch_failed, "search-failed", "Search failed",
Qerror);
- deferror (&Qinvalid_regexp, "invalid-regexp", "Invalid regexp",
Qerror);
+ DEFERROR_STANDARD (Qsearch_failed, Qinvalid_operation);
+ DEFERROR_STANDARD (Qinvalid_regexp, Qsyntax_error);
DEFSUBR (Flooking_at);
DEFSUBR (Fposix_looking_at);
Index: src/select-msw.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/select-msw.c,v
retrieving revision 1.7.2.9
diff -u -r1.7.2.9 select-msw.c
--- select-msw.c 2000/07/16 11:32:57 1.7.2.9
+++ select-msw.c 2000/07/18 10:37:09
@@ -529,17 +529,15 @@
void
mswindows_destroy_selection (Lisp_Object selection)
{
- Lisp_Object alist_elt;
-
/* Do nothing if this isn't for the clipboard. */
if (!EQ (selection, QCLIPBOARD))
return;
/* Right. We need to delete everything in Vhandle_alist. */
- alist_elt = Vhandle_alist;
-
- for (alist_elt; !NILP (alist_elt); alist_elt = Fcdr (alist_elt))
- GlobalFree ((HGLOBAL) get_opaque_ptr (XCDR (alist_elt)));
+ {
+ LIST_LOOP_2 (elt, Vhandle_alist)
+ GlobalFree ((HGLOBAL) get_opaque_ptr (elt));
+ }
Vhandle_alist = Qnil;
}
Index: src/select-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/Attic/select-x.c,v
retrieving revision 1.1.2.9
diff -u -r1.1.2.9 select-x.c
--- select-x.c 2000/07/16 11:32:58 1.1.2.9
+++ select-x.c 2000/07/18 10:37:10
@@ -139,9 +139,7 @@
{
const char *nameext;
- TO_EXTERNAL_FORMAT (LISP_STRING, Fsymbol_name (sym),
- C_STRING_ALLOCA, nameext,
- Qctext);
+ LISP_TO_EXTERNAL (Fsymbol_name (sym), nameext, Qctext);
return XInternAtom (display, nameext, only_if_exists ? True : False);
}
}
Index: src/select.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/Attic/select.c,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 select.c
--- select.c 2000/07/16 11:32:58 1.1.2.4
+++ select.c 2000/07/18 10:37:10
@@ -651,6 +651,7 @@
{
DEFSUBR (Fown_selection_internal);
DEFSUBR (Fget_selection_internal);
+ DEFSUBR (Fget_selection_timestamp);
DEFSUBR (Fselection_exists_p);
DEFSUBR (Fdisown_selection_internal);
DEFSUBR (Fselection_owner_p);
@@ -703,9 +704,7 @@
defsymbol (&Qreplace_all, "replace-all");
defsymbol (&Qreplace_existing, "replace-existing");
- deferror (&Qselection_conversion_error,
- "selection-conversion-error",
- "selection-conversion error", Qio_error);
+ DEFERROR_STANDARD (Qselection_conversion_error, Qio_error);
}
void
Index: src/sound.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/sound.c,v
retrieving revision 1.9.2.16
diff -u -r1.9.2.16 sound.c
--- sound.c 2000/07/13 13:33:15 1.9.2.16
+++ sound.c 2000/07/18 10:37:10
@@ -120,9 +120,7 @@
{
char *fileext;
- TO_EXTERNAL_FORMAT (LISP_STRING, file,
- C_STRING_ALLOCA, fileext,
- Qfile_name);
+ LISP_TO_EXTERNAL (file, fileext, Qfile_name);
/* #### NAS code should allow specification of a device. */
if (nas_play_sound_file (fileext, vol))
return Qnil;
@@ -135,9 +133,7 @@
char *fileext;
int result;
- TO_EXTERNAL_FORMAT (LISP_STRING, file,
- C_STRING_ALLOCA, fileext,
- Qfile_name);
+ LISP_TO_EXTERNAL (file, fileext, Qfile_name);
/* #### ESD uses alarm(). But why should we also stop SIGIO? */
stop_interrupts ();
@@ -153,9 +149,7 @@
{
const char *fileext;
- TO_EXTERNAL_FORMAT (LISP_STRING, file,
- C_STRING_ALLOCA, fileext,
- Qfile_name);
+ LISP_TO_EXTERNAL (file, fileext, Qfile_name);
/* The sound code doesn't like getting SIGIO interrupts.
Unix sucks! */
stop_interrupts ();
Index: src/specifier.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/specifier.c,v
retrieving revision 1.15.2.21
diff -u -r1.15.2.21 specifier.c
--- specifier.c 2000/07/13 09:06:36 1.15.2.21
+++ specifier.c 2000/07/18 10:37:11
@@ -41,15 +41,15 @@
#include "rangetab.h"
Lisp_Object Qspecifierp;
-Lisp_Object Qprepend, Qremove_tag_set_prepend, Qremove_tag_set_append;
-Lisp_Object Qremove_locale, Qremove_locale_type, Qremove_all;
-Lisp_Object Qfallback;
+Lisp_Object Qremove_tag_set_prepend, Qremove_tag_set_append;
+Lisp_Object Qremove_locale, Qremove_locale_type;
-/* Qinteger, Qboolean, Qgeneric defined in general.c. */
-Lisp_Object Qnatnum;
-
Lisp_Object Qconsole_type, Qdevice_class;
+Lisp_Object Qspecifier_syntax_error;
+Lisp_Object Qspecifier_argument_error;
+Lisp_Object Qspecifier_change_error;
+
static Lisp_Object Vuser_defined_tags;
typedef struct specifier_type_entry specifier_type_entry;
@@ -68,7 +68,8 @@
static const struct lrecord_description ste_description_1[] = {
{ XD_LISP_OBJECT, offsetof (specifier_type_entry, symbol) },
- { XD_STRUCT_PTR, offsetof (specifier_type_entry, meths), 1,
&specifier_methods_description },
+ { XD_STRUCT_PTR, offsetof (specifier_type_entry, meths), 1,
+ &specifier_methods_description },
{ XD_END }
};
@@ -385,14 +386,16 @@
};
static const struct lrecord_description specifier_description[] = {
- { XD_STRUCT_PTR, offsetof (Lisp_Specifier, methods), 1,
&specifier_methods_description },
+ { XD_STRUCT_PTR, offsetof (Lisp_Specifier, methods), 1,
+ &specifier_methods_description },
{ XD_LO_LINK, offsetof (Lisp_Specifier, next_specifier) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, global_specs) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, device_specs) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, frame_specs) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, window_specs) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, buffer_specs) },
- { XD_STRUCT_PTR, offsetof (Lisp_Specifier, caching), 1,
&specifier_caching_description },
+ { XD_STRUCT_PTR, offsetof (Lisp_Specifier, caching), 1,
+ &specifier_caching_description },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, magic_parent) },
{ XD_LISP_OBJECT, offsetof (Lisp_Specifier, fallback) },
{ XD_SPECIFIER_END }
@@ -425,8 +428,8 @@
return Dynarr_at (the_specifier_type_entry_dynarr, i).meths;
}
- maybe_signal_simple_error ("Invalid specifier type", type,
- Qspecifier, errb);
+ maybe_signal_type_error (Qspecifier_argument_error, "Invalid specifier
type",
+ type, Qspecifier, errb);
return 0;
}
@@ -646,7 +649,8 @@
? Qt : Qnil;
}
-DEFUN ("valid-specifier-locale-type-p", Fvalid_specifier_locale_type_p, 1, 1,
0, /*
+DEFUN ("valid-specifier-locale-type-p", Fvalid_specifier_locale_type_p, 1, 1,
0,
+ /*
Given a specifier LOCALE-TYPE, return non-nil if it is valid.
Valid locale types are 'global, 'device, 'frame, 'window, and
'buffer.
\(Note, however, that in functions that accept either a locale or a locale
@@ -670,7 +674,8 @@
!NILP (Fvalid_specifier_locale_p (locale)) ||
!NILP (Fvalid_specifier_locale_type_p (locale)))
return;
- signal_simple_error ("Invalid specifier locale or locale type", locale);
+ signal_type_error (Qspecifier_argument_error,
+ "Invalid specifier locale or locale type", locale);
}
DEFUN ("specifier-locale-type-from-locale",
Fspecifier_locale_type_from_locale,
@@ -681,7 +686,8 @@
{
/* This cannot GC. */
if (NILP (Fvalid_specifier_locale_p (locale)))
- signal_simple_error ("Invalid specifier locale", locale);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier locale",
+ locale);
if (DEVICEP (locale)) return Qdevice;
if (FRAMEP (locale)) return Qframe;
if (WINDOWP (locale)) return Qwindow;
@@ -699,7 +705,8 @@
else if (!NILP (Fvalid_specifier_locale_p (locale)))
return locale;
else
- signal_simple_error ("Invalid specifier locale", locale);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier locale",
+ locale);
return Qnil;
}
@@ -714,7 +721,8 @@
if (EQ (locale_type, Qwindow)) return LOCALE_WINDOW;
if (EQ (locale_type, Qbuffer)) return LOCALE_BUFFER;
- signal_simple_error ("Invalid specifier locale type", locale_type);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier locale
type",
+ locale_type);
return LOCALE_GLOBAL; /* not reached */
}
@@ -729,7 +737,6 @@
}
else if (CONSP (locale))
{
- Lisp_Object elt;
EXTERNAL_LIST_LOOP_2 (elt, locale)
check_valid_locale_or_locale_type (elt);
return locale;
@@ -751,7 +758,8 @@
check_valid_domain (Lisp_Object domain)
{
if (NILP (Fvalid_specifier_domain_p (domain)))
- signal_simple_error ("Invalid specifier domain", domain);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier domain",
+ domain);
}
Lisp_Object
@@ -827,7 +835,8 @@
if (!NILP (Fvalid_specifier_tag_p (tag_set)))
return list1 (tag_set);
if (NILP (Fvalid_specifier_tag_set_p (tag_set)))
- signal_simple_error ("Invalid specifier tag-set", tag_set);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier tag-set",
+ tag_set);
return tag_set;
}
@@ -890,7 +899,7 @@
(tag_set))
{
if (NILP (Fvalid_specifier_tag_set_p (tag_set)))
- signal_simple_error ("Invalid tag set", tag_set);
+ signal_type_error (Qspecifier_argument_error, "Invalid tag set", tag_set);
return canonicalize_tag_set (tag_set);
}
@@ -920,7 +929,8 @@
return 1;
}
-DEFUN ("device-matches-specifier-tag-set-p",
Fdevice_matches_specifier_tag_set_p, 2, 2, 0, /*
+DEFUN ("device-matches-specifier-tag-set-p",
+ Fdevice_matches_specifier_tag_set_p, 2, 2, 0, /*
Return non-nil if DEVICE matches specifier tag set TAG-SET.
This means that DEVICE matches each tag in the tag set. (Every
tag recognized by XEmacs has a predicate associated with it that
@@ -931,7 +941,7 @@
CHECK_LIVE_DEVICE (device);
if (NILP (Fvalid_specifier_tag_set_p (tag_set)))
- signal_simple_error ("Invalid tag set", tag_set);
+ signal_type_error (Qspecifier_argument_error, "Invalid tag set", tag_set);
return device_matches_specifier_tag_set_p (device, tag_set) ? Qt : Qnil;
}
@@ -954,12 +964,13 @@
CHECK_SYMBOL (tag);
if (valid_device_class_p (tag) ||
valid_console_type_p (tag))
- signal_simple_error ("Cannot redefine built-in specifier tags", tag);
+ signal_type_error (Qspecifier_change_error,
+ "Cannot redefine built-in specifier tags", tag);
/* Try to prevent common instantiators and locales from being
redefined, to reduce ambiguity */
if (NILP (tag) || EQ (tag, Qt) || EQ (tag, Qall) || EQ (tag, Qglobal))
- signal_simple_error ("Cannot define nil, t, 'all, or 'global",
- tag);
+ signal_type_error (Qspecifier_change_error, "Cannot define nil, t, 'all, or
'global",
+ tag);
assoc = assq_no_quit (tag, Vuser_defined_tags);
if (NILP (assoc))
{
@@ -1032,7 +1043,8 @@
}
}
-DEFUN ("device-matching-specifier-tag-list",
Fdevice_matching_specifier_tag_list,
+DEFUN ("device-matching-specifier-tag-list",
+ Fdevice_matching_specifier_tag_list,
0, 1, 0, /*
Return a list of all specifier tags matching DEVICE.
DEVICE defaults to the selected device if omitted.
@@ -1088,7 +1100,8 @@
CHECK_SYMBOL (tag);
if (NILP (Fvalid_specifier_tag_p (tag)))
- signal_simple_error ("Invalid specifier tag", tag);
+ signal_type_error (Qspecifier_argument_error, "Invalid specifier tag",
+ tag);
/* Make up some predicates for the built-in types */
@@ -1215,19 +1228,22 @@
if (!CONSP (rest))
{
- maybe_signal_simple_error ("Invalid instantiator list", inst_list,
+ maybe_signal_type_error (Qspecifier_syntax_error,
+ "Invalid instantiator list", inst_list,
Qspecifier, errb);
return Qnil;
}
if (!CONSP (inst_pair = XCAR (rest)))
{
- maybe_signal_simple_error ("Invalid instantiator pair", inst_pair,
+ maybe_signal_type_error (Qspecifier_syntax_error,
+ "Invalid instantiator pair", inst_pair,
Qspecifier, errb);
return Qnil;
}
if (NILP (Fvalid_specifier_tag_set_p (tag_set = XCAR (inst_pair))))
{
- maybe_signal_simple_error ("Invalid specifier tag", tag_set,
+ maybe_signal_type_error (Qspecifier_syntax_error,
+ "Invalid specifier tag", tag_set,
Qspecifier, errb);
return Qnil;
}
@@ -1270,13 +1286,15 @@
Lisp_Object spec, locale;
if (!CONSP (rest) || !CONSP (spec = XCAR (rest)))
{
- maybe_signal_simple_error ("Invalid specification list", spec_list,
+ maybe_signal_type_error (Qspecifier_syntax_error,
+ "Invalid specification list", spec_list,
Qspecifier, errb);
return Qnil;
}
if (NILP (Fvalid_specifier_locale_p (locale = XCAR (spec))))
{
- maybe_signal_simple_error ("Invalid specifier locale", locale,
+ maybe_signal_type_error (Qspecifier_syntax_error,
+ "Invalid specifier locale", locale,
Qspecifier, errb);
return Qnil;
}
@@ -1326,7 +1344,8 @@
if (EQ (Qremove_all, how_to_add))
return SPEC_REMOVE_ALL;
- signal_simple_error ("Invalid `how-to-add' flag", how_to_add);
+ signal_type_error (Qspecifier_argument_error, "Invalid `how-to-add'
flag",
+ how_to_add);
return SPEC_PREPEND; /* not reached */
}
@@ -1350,7 +1369,8 @@
{
if (NILP (Vunlock_ghost_specifiers)
&& GHOST_SPECIFIER_P (XSPECIFIER (spec)))
- signal_simple_error ("Attempt to modify read-only specifier",
+ signal_type_error (Qspecifier_change_error,
+ "Attempt to modify read-only specifier",
list1 (spec));
}
@@ -1762,7 +1782,10 @@
else if (add_meth == SPEC_APPEND)
tem = nconc2 (*orig_inst_list, list_to_build_up);
else
- abort ();
+ {
+ abort ();
+ tem = Qnil;
+ }
*orig_inst_list = tem;
@@ -2370,7 +2393,8 @@
}
}
-DEFUN ("check-valid-specifier-matchspec", Fcheck_valid_specifier_matchspec, 2,
2, 0, /*
+DEFUN ("check-valid-specifier-matchspec", Fcheck_valid_specifier_matchspec, 2,
+ 2, 0, /*
Signal an error if MATCHSPEC is invalid for SPECIFIER-TYPE.
See `specifier-matching-instance' for a description of matchspecs.
*/
@@ -2758,7 +2782,8 @@
return UNBOUNDP (val) ? default_ : val;
}
-DEFUN ("specifier-matching-instance-from-inst-list",
Fspecifier_matching_instance_from_inst_list,
+DEFUN ("specifier-matching-instance-from-inst-list",
+ Fspecifier_matching_instance_from_inst_list,
4, 5, 0, /*
Attempt to convert a particular inst-list into an instance.
This attempts to instantiate INST-LIST in the given DOMAIN
@@ -3092,7 +3117,8 @@
boolean_validate (Lisp_Object instantiator)
{
if (!EQ (instantiator, Qt) && !EQ (instantiator, Qnil))
- signal_simple_error ("Must be t or nil", instantiator);
+ signal_type_error (Qspecifier_argument_error, "Must be t or nil",
+ instantiator);
}
DEFUN ("boolean-specifier-p", Fboolean_specifier_p, 1, 1, 0, /*
@@ -3140,7 +3166,8 @@
if (!VALID_SINGLE_DISPTABLE_INSTANTIATOR_P (instantiator))
{
lose:
- dead_wrong_type_argument (display_table_specifier_methods->predicate_symbol,
+ dead_wrong_type_argument
+ (display_table_specifier_methods->predicate_symbol,
instantiator);
}
}
@@ -3167,13 +3194,12 @@
{
INIT_LRECORD_IMPLEMENTATION (specifier);
- defsymbol (&Qspecifierp, "specifierp");
+ DEFSYMBOL (Qspecifierp);
- defsymbol (&Qconsole_type, "console-type");
- defsymbol (&Qdevice_class, "device-class");
+ DEFSYMBOL (Qconsole_type);
+ DEFSYMBOL (Qdevice_class);
- /* Qinteger, Qboolean, Qgeneric defined in general.c */
- defsymbol (&Qnatnum, "natnum");
+ /* specifier types defined in general.c. */
DEFSUBR (Fvalid_specifier_type_p);
DEFSUBR (Fspecifier_type_list);
@@ -3227,15 +3253,16 @@
in the syms_of() functions. */
/* locales are defined in general.c. */
-
- defsymbol (&Qprepend, "prepend");
- defsymbol (&Qremove_tag_set_prepend, "remove-tag-set-prepend");
- defsymbol (&Qremove_tag_set_append, "remove-tag-set-append");
- defsymbol (&Qremove_locale, "remove-locale");
- defsymbol (&Qremove_locale_type, "remove-locale-type");
- defsymbol (&Qremove_all, "remove-all");
- defsymbol (&Qfallback, "fallback");
+ /* some how-to-add flags in general.c. */
+ DEFSYMBOL (Qremove_tag_set_prepend);
+ DEFSYMBOL (Qremove_tag_set_append);
+ DEFSYMBOL (Qremove_locale);
+ DEFSYMBOL (Qremove_locale_type);
+
+ DEFERROR_STANDARD (Qspecifier_syntax_error, Qsyntax_error);
+ DEFERROR_STANDARD (Qspecifier_argument_error, Qinvalid_argument);
+ DEFERROR_STANDARD (Qspecifier_change_error, Qinvalid_change);
}
void
@@ -3261,7 +3288,8 @@
SPECIFIER_HAS_METHOD (boolean, validate);
- INITIALIZE_SPECIFIER_TYPE (display_table, "display-table",
"display-table-p");
+ INITIALIZE_SPECIFIER_TYPE (display_table, "display-table",
+ "display-table-p");
SPECIFIER_HAS_METHOD (display_table, validate);
}
Index: src/symbols.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/symbols.c,v
retrieving revision 1.22.2.27
diff -u -r1.22.2.27 symbols.c
--- symbols.c 2000/02/21 23:07:12 1.22.2.27
+++ symbols.c 2000/07/18 10:37:12
@@ -1,6 +1,6 @@
/* "intern" and friends -- moved here from lread.c and data.c
Copyright (C) 1985-1989, 1992-1994 Free Software Foundation, Inc.
- Copyright (C) 1995 Ben Wing.
+ Copyright (C) 1995, 2000 Ben Wing.
This file is part of XEmacs.
@@ -449,11 +449,15 @@
*/
(function, obarray))
{
+ struct gcpro gcpro1;
+
if (NILP (obarray))
obarray = Vobarray;
obarray = check_obarray (obarray);
+ GCPRO1 (obarray);
map_obarray (obarray, mapatoms_1, &function);
+ UNGCPRO;
return Qnil;
}
@@ -495,14 +499,17 @@
(regexp, predicate))
{
struct appropos_mapper_closure closure;
+ struct gcpro gcpro1;
CHECK_STRING (regexp);
closure.regexp = regexp;
closure.predicate = predicate;
closure.accumulation = Qnil;
+ GCPRO1 (closure.accumulation);
map_obarray (Vobarray, apropos_mapper, &closure);
closure.accumulation = Fsort (closure.accumulation, Qstring_lessp);
+ UNGCPRO;
return closure.accumulation;
}
@@ -1137,8 +1144,6 @@
if (mask > 0) /* Not always per-buffer */
{
- Lisp_Object elt;
-
/* Set value in each buffer which hasn't shadowed the default */
LIST_LOOP_2 (elt, Vbuffer_alist)
{
@@ -1179,8 +1184,6 @@
if (mask > 0) /* Not always per-console */
{
- Lisp_Object console;
-
/* Set value in each console which hasn't shadowed the default */
LIST_LOOP_2 (console, Vconsole_list)
{
@@ -3210,6 +3213,59 @@
#endif
}
+static void
+defsymbol_massage_name_1 (Lisp_Object *location, const char *name, int dump_p,
+ int multiword_predicate_p)
+{
+ char temp[500];
+ int len = strlen (name) - 1;
+ int i;
+
+ if (multiword_predicate_p)
+ assert (len + 1 < sizeof (temp));
+ else
+ assert (len < sizeof (temp));
+ strcpy (temp, name + 1); /* Remove initial Q */
+ if (multiword_predicate_p)
+ {
+ strcpy (temp + len - 1, "_p");
+ len++;
+ }
+ for (i = 0; i < len; i++)
+ if (temp[i] == '_')
+ temp[i] = '-';
+ *location = Fintern (make_string ((const Bufbyte *) temp, len), Qnil);
+ if (dump_p)
+ staticpro (location);
+ else
+ staticpro_nodump (location);
+}
+
+void
+defsymbol_massage_name_nodump (Lisp_Object *location, const char *name)
+{
+ defsymbol_massage_name_1 (location, name, 0, 0);
+}
+
+void
+defsymbol_massage_name (Lisp_Object *location, const char *name)
+{
+ defsymbol_massage_name_1 (location, name, 1, 0);
+}
+
+void
+defsymbol_massage_multiword_predicate_nodump (Lisp_Object *location,
+ const char *name)
+{
+ defsymbol_massage_name_1 (location, name, 0, 1);
+}
+
+void
+defsymbol_massage_multiword_predicate (Lisp_Object *location, const char *name)
+{
+ defsymbol_massage_name_1 (location, name, 1, 1);
+}
+
void
defsymbol_nodump (Lisp_Object *location, const char *name)
{
@@ -3235,6 +3291,20 @@
Fset (*location, *location);
}
+void
+defkeyword_massage_name (Lisp_Object *location, const char *name)
+{
+ char temp[500];
+ int len = strlen (name);
+
+ assert (len < sizeof (temp));
+ strcpy (temp, name);
+ temp[1] = ':'; /* it's an underscore in the C variable */
+
+ defsymbol_massage_name (location, temp);
+ Fset (*location, *location);
+}
+
#ifdef DEBUG_XEMACS
/* Check that nobody spazzed writing a DEFUN. */
static void
@@ -3322,12 +3392,15 @@
XSYMBOL (sym)->function = Fcons (Qmacro, fun);
}
-void
-deferror (Lisp_Object *symbol, const char *name, const char *messuhhj,
- Lisp_Object inherits_from)
+static void
+deferror_1 (Lisp_Object *symbol, const char *name, const char *messuhhj,
+ Lisp_Object inherits_from, int massage_p)
{
Lisp_Object conds;
- defsymbol (symbol, name);
+ if (massage_p)
+ defsymbol_massage_name (symbol, name);
+ else
+ defsymbol (symbol, name);
assert (SYMBOLP (inherits_from));
conds = Fget (inherits_from, Qerror_conditions, Qnil);
@@ -3339,47 +3412,79 @@
}
void
+deferror (Lisp_Object *symbol, const char *name, const char *messuhhj,
+ Lisp_Object inherits_from)
+{
+ deferror_1 (symbol, name, messuhhj, inherits_from, 0);
+}
+
+void
+deferror_massage_name (Lisp_Object *symbol, const char *name,
+ const char *messuhhj, Lisp_Object inherits_from)
+{
+ deferror_1 (symbol, name, messuhhj, inherits_from, 1);
+}
+
+void
+deferror_massage_name_and_message (Lisp_Object *symbol, const char *name,
+ Lisp_Object inherits_from)
+{
+ char temp[500];
+ int i;
+ int len = strlen (name) - 1;
+
+ assert (len < sizeof (temp));
+ strcpy (temp, name + 1); /* Remove initial Q */
+ temp[0] = toupper (temp[0]);
+ for (i = 0; i < len; i++)
+ if (temp[i] == '_')
+ temp[i] = ' ';
+
+ deferror_1 (symbol, name, temp, inherits_from, 1);
+}
+
+void
syms_of_symbols (void)
{
- defsymbol (&Qvariable_documentation, "variable-documentation");
- defsymbol (&Qvariable_domain, "variable-domain"); /* I18N3 */
- defsymbol (&Qad_advice_info, "ad-advice-info");
- defsymbol (&Qad_activate, "ad-activate");
-
- defsymbol (&Qget_value, "get-value");
- defsymbol (&Qset_value, "set-value");
- defsymbol (&Qbound_predicate, "bound-predicate");
- defsymbol (&Qmake_unbound, "make-unbound");
- defsymbol (&Qlocal_predicate, "local-predicate");
- defsymbol (&Qmake_local, "make-local");
-
- defsymbol (&Qboundp, "boundp");
- defsymbol (&Qglobally_boundp, "globally-boundp");
- defsymbol (&Qmakunbound, "makunbound");
- defsymbol (&Qsymbol_value, "symbol-value");
- defsymbol (&Qset, "set");
- defsymbol (&Qsetq_default, "setq-default");
- defsymbol (&Qdefault_boundp, "default-boundp");
- defsymbol (&Qdefault_value, "default-value");
- defsymbol (&Qset_default, "set-default");
- defsymbol (&Qmake_variable_buffer_local, "make-variable-buffer-local");
- defsymbol (&Qmake_local_variable, "make-local-variable");
- defsymbol (&Qkill_local_variable, "kill-local-variable");
- defsymbol (&Qkill_console_local_variable,
"kill-console-local-variable");
- defsymbol (&Qsymbol_value_in_buffer, "symbol-value-in-buffer");
- defsymbol (&Qsymbol_value_in_console, "symbol-value-in-console");
- defsymbol (&Qlocal_variable_p, "local-variable-p");
-
- defsymbol (&Qconst_integer, "const-integer");
- defsymbol (&Qconst_boolean, "const-boolean");
- defsymbol (&Qconst_object, "const-object");
- defsymbol (&Qconst_specifier, "const-specifier");
- defsymbol (&Qdefault_buffer, "default-buffer");
- defsymbol (&Qcurrent_buffer, "current-buffer");
- defsymbol (&Qconst_current_buffer, "const-current-buffer");
- defsymbol (&Qdefault_console, "default-console");
- defsymbol (&Qselected_console, "selected-console");
- defsymbol (&Qconst_selected_console, "const-selected-console");
+ DEFSYMBOL (Qvariable_documentation);
+ DEFSYMBOL (Qvariable_domain); /* I18N3 */
+ DEFSYMBOL (Qad_advice_info);
+ DEFSYMBOL (Qad_activate);
+
+ DEFSYMBOL (Qget_value);
+ DEFSYMBOL (Qset_value);
+ DEFSYMBOL (Qbound_predicate);
+ DEFSYMBOL (Qmake_unbound);
+ DEFSYMBOL (Qlocal_predicate);
+ DEFSYMBOL (Qmake_local);
+
+ DEFSYMBOL (Qboundp);
+ DEFSYMBOL (Qglobally_boundp);
+ DEFSYMBOL (Qmakunbound);
+ DEFSYMBOL (Qsymbol_value);
+ DEFSYMBOL (Qset);
+ DEFSYMBOL (Qsetq_default);
+ DEFSYMBOL (Qdefault_boundp);
+ DEFSYMBOL (Qdefault_value);
+ DEFSYMBOL (Qset_default);
+ DEFSYMBOL (Qmake_variable_buffer_local);
+ DEFSYMBOL (Qmake_local_variable);
+ DEFSYMBOL (Qkill_local_variable);
+ DEFSYMBOL (Qkill_console_local_variable);
+ DEFSYMBOL (Qsymbol_value_in_buffer);
+ DEFSYMBOL (Qsymbol_value_in_console);
+ DEFSYMBOL (Qlocal_variable_p);
+
+ DEFSYMBOL (Qconst_integer);
+ DEFSYMBOL (Qconst_boolean);
+ DEFSYMBOL (Qconst_object);
+ DEFSYMBOL (Qconst_specifier);
+ DEFSYMBOL (Qdefault_buffer);
+ DEFSYMBOL (Qcurrent_buffer);
+ DEFSYMBOL (Qconst_current_buffer);
+ DEFSYMBOL (Qdefault_console);
+ DEFSYMBOL (Qselected_console);
+ DEFSYMBOL (Qconst_selected_console);
DEFSUBR (Fintern);
DEFSUBR (Fintern_soft);
Index: src/symeval.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/symeval.h,v
retrieving revision 1.4.2.12
diff -u -r1.4.2.12 symeval.h
--- symeval.h 2000/02/21 23:07:06 1.4.2.12
+++ symeval.h 2000/07/18 10:37:12
@@ -1,5 +1,6 @@
/* Definitions of symbol-value forwarding for XEmacs Lisp interpreter.
Copyright (C) 1985, 1986, 1987, 1992, 1993 Free Software Foundation, Inc.
+ Copyright (C) 2000 Ben Wing.
This file is part of XEmacs.
@@ -281,13 +282,38 @@
void defsubr_macro (Lisp_Subr *);
#define DEFSUBR_MACRO(Fname) defsubr_macro (&S##Fname)
+void defsymbol_massage_name (Lisp_Object *location, const char *name);
+void defsymbol_massage_name_nodump (Lisp_Object *location, const char *name);
+void defsymbol_massage_multiword_predicate (Lisp_Object *location,
+ const char *name);
+void defsymbol_massage_multiword_predicate_nodump (Lisp_Object *location,
+ const char *name);
void defsymbol (Lisp_Object *location, const char *name);
void defsymbol_nodump (Lisp_Object *location, const char *name);
+#define DEFSYMBOL(name) defsymbol_massage_name (&##name, #name)
+#define DEFSYMBOL_NO_DUMP(name) defsymbol_massage_name_nodump (&##name, #name)
+#define DEFSYMBOL_MULTIWORD_PREDICATE(name) \
+ defsymbol_massage_multiword_predicate (&##name, #name)
+#define DEFSYMBOL_MULTIWORD_PREDICATE_NO_DUMP(name) \
+ defsymbol_massage_multiword_predicate_nodump (&##name, #name)
+
void defkeyword (Lisp_Object *location, const char *name);
+void defkeyword_massage_name (Lisp_Object *location, const char *name);
+#define DEFKEYWORD(name) defkeyword_massage_name (&##name, #name)
void deferror (Lisp_Object *symbol, const char *name,
const char *message, Lisp_Object inherits_from);
+void deferror_massage_name (Lisp_Object *symbol, const char *name,
+ const char *message, Lisp_Object inherits_from);
+void deferror_massage_name_and_message (Lisp_Object *symbol, const char *name,
+ Lisp_Object inherits_from);
+#define DEFERROR(name, message, inherits_from) \
+ deferror_massage_name (&##name, #name, message, inherits_from)
+/* In this case, the error message is the same as the name, modulo some
+ prettifying */
+#define DEFERROR_STANDARD(name, inherits_from) \
+ deferror_massage_name_and_message (&##name, #name, inherits_from)
/* Macros we use to define forwarded Lisp variables.
These are used in the syms_of_FILENAME functions. */
Index: src/symsinit.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/symsinit.h,v
retrieving revision 1.31.2.26
diff -u -r1.31.2.26 symsinit.h
--- symsinit.h 2000/06/12 04:18:24 1.31.2.26
+++ symsinit.h 2000/07/18 10:37:13
@@ -67,6 +67,7 @@
void syms_of_device_mswindows (void);
void syms_of_device_x (void);
void syms_of_device (void);
+void syms_of_dialog_mswindows (void);
void syms_of_dialog_x (void);
void syms_of_dialog (void);
void syms_of_dired (void);
@@ -448,5 +449,6 @@
void init_xemacs_process (void);
void init_redisplay (void);
void init_sunpro (void);
+void init_win32 (void);
#endif /* INCLUDED_symsinit_h_ */
Index: src/syswindows.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/Attic/syswindows.h,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 syswindows.h
--- syswindows.h 2000/06/13 01:40:08 1.1.2.5
+++ syswindows.h 2000/07/18 10:37:13
@@ -166,13 +166,128 @@
/* Definitions for Mule under MS Windows */
-/* extern int mswindows_windows9x_p; */
-/* #define EIUNICODE_P (!mswindows_windows9x_p) */
-#define EIUNICODE_P 0
-
-#define EITCHAR_SIZE (EIUNICODE_P ? sizeof (WCHAR) : sizeof (CHAR))
-#define EITEXT(arg) (EIUNICODE_P ? L##arg : (arg))
-#define EICOPY_TCHAR(ptr, ch) \
- (EIUNICODE_P ? (* (LPWSTR) (ptr) = L##ch) : (* (LPSTR) (ptr) = (ch)))
+#include <wchar.h>
+
+#ifdef CYGWIN
+
+/* All but wcscmp and wcslen left out of Cygwin headers -- but present
+ in /usr/include/mingw32/string.h! */
+wchar_t* wcscat (wchar_t*, const wchar_t*);
+wchar_t* wcschr (const wchar_t*, wchar_t);
+int wcscoll (const wchar_t*, const wchar_t*);
+wchar_t* wcscpy (wchar_t*, const wchar_t*);
+size_t wcscspn (const wchar_t*, const wchar_t*);
+/* Note: No wcserror in CRTDLL. */
+wchar_t* wcsncat (wchar_t*, const wchar_t*, size_t);
+int wcsncmp(const wchar_t*, const wchar_t*, size_t);
+wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t);
+wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
+wchar_t* wcsrchr(const wchar_t*, wchar_t);
+size_t wcsspn(const wchar_t*, const wchar_t*);
+wchar_t* wcsstr(const wchar_t*, const wchar_t*);
+wchar_t* wcstok(wchar_t*, const wchar_t*);
+size_t wcsxfrm(wchar_t*, const wchar_t*, size_t);
+
+#endif /* CYGWIN */
+
+// extern int mswindows_windows9x_p;
+/* #define XEUNICODE_P (!mswindows_windows9x_p) */
+#define XEUNICODE_P 0
+
+#define XETCHAR_SIZE (XEUNICODE_P ? sizeof (WCHAR) : sizeof (CHAR))
+#define MAX_XETCHAR_SIZE sizeof (WCHAR)
+#define XETEXT1(arg) (XEUNICODE_P ? ((char *) (L##arg)) : (arg))
+/* We need to do this indirection in case ARG is also a manifest constant.
+ I don't really understand why. --ben */
+#define XETEXT(arg) XETEXT1(arg)
+#define XECOPY_TCHAR(ptr, ch) \
+ (XEUNICODE_P ? (* (LPWSTR) (ptr) = L##ch) : (* (LPSTR) (ptr) = (ch)))
+#define xetcslen(arg) (XEUNICODE_P ? wcslen ((wchar_t *) arg) : strlen (arg))
+#define xetcscmp(s1, s2) \
+ (XEUNICODE_P ? wcscmp ((wchar_t *) s1, (wchar_t *) s2) \
+ : strcmp (s1, s2))
+#define xetcscpy(s1, s2) \
+ (XEUNICODE_P ? (char *) wcscpy ((wchar_t *) s1, (wchar_t *) s2) \
+ : strcpy (s1, s2))
+#define xetcschr(s, ch) \
+ (XEUNICODE_P ? (char *) wcschr ((wchar_t *) s, (WCHAR) ch) \
+ : strchr (s, ch))
+#define xetcsrchr(s, ch) \
+ (XEUNICODE_P ? (char *) wcsrchr ((wchar_t *) s, (WCHAR) ch) \
+ : strrchr (s, ch))
+
+#define C_TO_TSTR(in, out) C_TO_EXTERNAL (in, out, Qmswindows_tstr)
+#define C_TO_TSTR_MALLOC(in, out) \
+ C_TO_EXTERNAL_MALLOC (in, out, Qmswindows_tstr)
+#define TSTR_TO_C(in, out) EXTERNAL_TO_C (in, out, Qmswindows_tstr)
+#define TSTR_TO_C_MALLOC(in, out) \
+ EXTERNAL_TO_C_MALLOC (in, out, Qmswindows_tstr)
+#define LISP_TO_TSTR(in, out) LISP_TO_EXTERNAL (in, out, Qmswindows_tstr)
+#define LISP_TO_TSTR_MALLOC(in, out) \
+ LISP_TO_EXTERNAL_MALLOC (in, out, Qmswindows_tstr)
+
+#define LOCAL_FILE_FORMAT_TO_TSTR(path, out) \
+do { \
+ Bufbyte *lttff; \
+ \
+ LOCAL_TO_WIN32_FILE_FORMAT (path, lttff); \
+ C_TO_TSTR (lttff, out); \
+} while (0)
+
+Lisp_Object tstr_to_local_file_format (Extbyte *pathout);
+
+#ifdef CYGWIN
+#define LOCAL_TO_WIN32_FILE_FORMAT(path, pathout) \
+do { \
+ Lisp_Object ltwff1 = (path); \
+ int ltwff2 = \
+ cygwin_posix_to_win32_path_list_buf_size (XSTRING_DATA (ltwff1)); \
+ pathout = (Bufbyte *) alloca (ltwff2); \
+ cygwin_posix_to_win32_path_list (XSTRING_DATA (ltwff1), pathout); \
+} while (0)
+#else
+#define LOCAL_TO_WIN32_FILE_FORMAT(path, pathout) \
+do { \
+ (pathout) = XSTRING_DATA (path); \
+} while (0)
+#endif
+
+#ifdef CYGWIN
+#define WIN32_TO_LOCAL_FILE_FORMAT(path, pathout) \
+do { \
+ Bufbyte *wtlff1 = (path); \
+ int wtlff2 = \
+ cygwin_win32_to_posix_path_list_buf_size (wtlff1); \
+ Bufbyte *wtlff3 = (Bufbyte *) alloca (wtlff2); \
+ cygwin_win32_to_posix_path_list (wtlff1, wtlff3); \
+ (pathout) = build_string (wtlff3); \
+} while (0)
+#else
+#define WIN32_TO_LOCAL_FILE_FORMAT(path, pathout) \
+do { \
+ (pathout) = build_string (path); \
+} while (0)
+#endif
+
+extern BOOL (WINAPI *xSwitchToThread) (VOID);
+
+extern HKL (WINAPI *xGetKeyboardLayout) (DWORD);
+extern BOOL (WINAPI *xSetMenuDefaultItem) (HMENU, UINT, UINT);
+extern BOOL (WINAPI *xInsertMenuItemA) (HMENU, UINT, BOOL, LPCMENUITEMINFOA);
+extern BOOL (WINAPI *xInsertMenuItemW) (HMENU, UINT, BOOL, LPCMENUITEMINFOW);
+extern HANDLE (WINAPI *xLoadImageA) (HINSTANCE, LPCSTR, UINT, int, int, UINT);
+extern HANDLE (WINAPI *xLoadImageW) (HINSTANCE, LPCWSTR, UINT, int, int, UINT);
+extern ATOM (WINAPI *xRegisterClassExA) (CONST WNDCLASSEXA *);
+extern ATOM (WINAPI *xRegisterClassExW) (CONST WNDCLASSEXW *);
+
+extern int (WINAPI *xEnumFontFamiliesExA) (HDC, LPLOGFONTA, FONTENUMPROCA,
+ LPARAM, DWORD);
+extern int (WINAPI *xEnumFontFamiliesExW) (HDC, LPLOGFONTW, FONTENUMPROCW,
+ LPARAM, DWORD);
+
+extern DWORD (WINAPI *xSHGetFileInfoA) (LPCSTR, DWORD, SHFILEINFOA FAR *, UINT,
+ UINT);
+extern DWORD (WINAPI *xSHGetFileInfoW) (LPCWSTR, DWORD, SHFILEINFOW FAR *,
+ UINT, UINT);
#endif /* INCLUDED_syswindows_h_ */
Index: src/toolbar-x.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/toolbar-x.c,v
retrieving revision 1.12.2.5
diff -u -r1.12.2.5 toolbar-x.c
--- toolbar-x.c 2000/02/07 07:59:28 1.12.2.5
+++ toolbar-x.c 2000/07/18 10:37:13
@@ -23,6 +23,8 @@
/* Synched up with: Not in FSF. */
+/* This file Mule-ized (more like Mule-verified) by Ben Wing, 7-8-00. */
+
#include <config.h>
#include "lisp.h"
Index: src/tooltalk.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/tooltalk.c,v
retrieving revision 1.13.2.11
diff -u -r1.13.2.11 tooltalk.c
--- tooltalk.c 2000/02/21 23:07:00 1.13.2.11
+++ tooltalk.c 2000/07/18 10:37:13
@@ -773,7 +773,7 @@
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_message_arg_val_set (m, n, value_ext);
}
else if (EQ (attribute, Qtt_status))
@@ -798,7 +798,7 @@
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
(*fun_str) (m, value_ext);
}
@@ -914,13 +914,13 @@
{
const char *vtype_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, vtype, C_STRING_ALLOCA, vtype_ext, Qnative);
+ LISP_TO_EXTERNAL (vtype, vtype_ext, Qnative);
if (NILP (value))
tt_message_arg_add (m, n, vtype_ext, NULL);
else if (STRINGP (value))
{
const char *value_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_message_arg_add (m, n, vtype_ext, value_ext);
}
else if (INTP (value))
@@ -1025,28 +1025,28 @@
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_file_add (p, value_ext);
}
else if (EQ (attribute, Qtt_object))
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_object_add (p, value_ext);
}
else if (EQ (attribute, Qtt_op))
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_op_add (p, value_ext);
}
else if (EQ (attribute, Qtt_otype))
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_otype_add (p, value_ext);
}
else if (EQ (attribute, Qtt_scope))
@@ -1058,21 +1058,21 @@
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_sender_add (p, value_ext);
}
else if (EQ (attribute, Qtt_sender_ptype))
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_sender_ptype_add (p, value_ext);
}
else if (EQ (attribute, Qtt_session))
{
const char *value_ext;
CHECK_STRING (value);
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_session_add (p, value_ext);
}
else if (EQ (attribute, Qtt_state))
@@ -1113,13 +1113,13 @@
{
const char *vtype_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, vtype, C_STRING_ALLOCA, vtype_ext, Qnative);
+ LISP_TO_EXTERNAL (vtype, vtype_ext, Qnative);
if (NILP (value))
tt_pattern_arg_add (p, n, vtype_ext, NULL);
else if (STRINGP (value))
{
const char *value_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative);
+ LISP_TO_EXTERNAL (value, value_ext, Qnative);
tt_pattern_arg_add (p, n, vtype_ext, value_ext);
}
else if (INTP (value))
@@ -1368,7 +1368,7 @@
defsymbol (&Qtt_reply, "reply");
defsymbol (&Qtt_fail, "fail");
- deferror (&Qtooltalk_error, "tooltalk-error", "ToolTalk error",
Qio_error);
+ DEFERROR (Qtooltalk_error, "ToolTalk error", Qio_error);
}
void
Index: src/unexnt.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/unexnt.c,v
retrieving revision 1.7.2.9
diff -u -r1.7.2.9 unexnt.c
--- unexnt.c 2000/06/12 04:18:27 1.7.2.9
+++ unexnt.c 2000/07/18 10:37:14
@@ -56,11 +56,10 @@
* version of my_ebss in lastfile.c and a new firstfile.c file. jhar */
#include <config.h>
-#include <stdlib.h> /* _fmode */
-#include <stdio.h>
-#include <fcntl.h>
-#include <windows.h>
+#include "lisp.h"
+#include "syswindows.h"
+
#include "nt.h"
#include "ntheap.h"
@@ -170,9 +169,9 @@
}
/* Dump out .data and .bss sections into a new executable. */
-void
-unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
- void *entry_address)
+int
+unexec (char *new_name, char *old_name, unsigned int start_data,
+ unsigned int start_bss, unsigned int entry_address)
{
file_data in_file, out_file;
char out_filename[MAX_PATH], in_filename[MAX_PATH];
@@ -267,6 +266,8 @@
close_file_data (&in_file);
close_file_data (&out_file);
+
+ return 0;
}
/* Routines to manipulate NT executable file sections. */
Index: src/s/cygwin32.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/s/cygwin32.h,v
retrieving revision 1.14.2.18
diff -u -r1.14.2.18 cygwin32.h
--- cygwin32.h 2000/07/08 09:14:28 1.14.2.18
+++ cygwin32.h 2000/07/18 10:37:14
@@ -61,11 +61,20 @@
# endif
# endif
+# if CYGWIN_VERSION_DLL_MAJOR < 20
+
void cygwin32_win32_to_posix_path_list (const char*, char*);
int cygwin32_win32_to_posix_path_list_buf_size (const char*);
void cygwin32_posix_to_win32_path_list (const char*, char*);
int cygwin32_posix_to_win32_path_list_buf_size (const char*);
-# if CYGWIN_VERSION_DLL_MAJOR < 20
+
+#define cygwin_win32_to_posix_path_list cygwin32_win32_to_posix_path_list
+#define cygwin_win32_to_posix_path_list_buf_size \
+ cygwin32_win32_to_posix_path_list_buf_size
+#define cygwin_posix_to_win32_path_list cygwin32_posix_to_win32_path_list
+#define cygwin_posix_to_win32_path_list_buf_size \
+ cygwin32_posix_to_win32_path_list_buf_size
+
struct timeval;
struct timezone;
struct itimerval;
@@ -89,6 +98,13 @@
int srandom (unsigned seed);
long random (void);
+# else /* not CYGWIN_VERSION_DLL_MAJOR < 20 */
+
+void cygwin_win32_to_posix_path_list (const char*, char*);
+int cygwin_win32_to_posix_path_list_buf_size (const char*);
+void cygwin_posix_to_win32_path_list (const char*, char*);
+int cygwin_posix_to_win32_path_list_buf_size (const char*);
+
# endif /* CYGWIN_VERSION_DLL_MAJOR < 20 */
# if CYGWIN_VERSION_DLL_MAJOR <= 20
@@ -96,6 +112,9 @@
double logb (double);
# endif /* CYGWIN_VERSION_DLL_MAJOR <= 20 */
+/* Still left out of 1.1! */
+double logb (double);
+
#endif
#ifndef ORDINARY_LINK
@@ -203,11 +222,11 @@
#define SYSTEM_PURESIZE_EXTRA 15000
#define CYGWIN_CONV_PATH(src, dst) \
-dst = alloca (cygwin32_win32_to_posix_path_list_buf_size(src)); \
-cygwin32_win32_to_posix_path_list(src, dst)
+dst = alloca (cygwin_win32_to_posix_path_list_buf_size(src)); \
+cygwin_win32_to_posix_path_list(src, dst)
#define CYGWIN_WIN32_PATH(src, dst) \
-dst = alloca (cygwin32_posix_to_win32_path_list_buf_size(src)); \
-cygwin32_posix_to_win32_path_list(src, dst)
+dst = alloca (cygwin_posix_to_win32_path_list_buf_size(src)); \
+cygwin_posix_to_win32_path_list(src, dst)
/*
* stolen from usg.
Index: src/s/windowsnt.h
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/s/windowsnt.h,v
retrieving revision 1.15.2.15
diff -u -r1.15.2.15 windowsnt.h
--- windowsnt.h 2000/06/13 01:40:10 1.15.2.15
+++ windowsnt.h 2000/07/18 10:37:14
@@ -357,6 +357,16 @@
#endif
#endif
+/* Force the various NT 4 structures and constants to be included; we're
+ careful not to call (or even link with) functions not in NT 3.51 when
+ running on 3.51, but when running on NT 4 or Win9x, we use the later
+ functions, and need their headers. */
+/* The VC++ (5.0, at least) headers treat WINVER non-existent as 0x0400 */
+#if defined (WINVER) && WINVER < 0x0400
+# undef WINVER
+# define WINVER 0x0400
+#endif
+
/* MSVC 6.0 has a mechanism to declare functions which never return */
#if (_MSC_VER >= 1200)
#define DOESNT_RETURN __declspec(noreturn) void