Mercurial > emacs
view lwlib/lwlib.h @ 51415:762217a72cae
Long overdue merge.
Don't require `compile' since it seems unnecessary.
For all internal variables and functions the docstring comments have
been converted into proper docstrings
(bibtex-maintainer-address, bibtex-maintainer-salutation)
(bibtex-version): Remove support for bug reporting.
(bibtex-field-delimiters, bibtex-entry-delimiters)
(bibtex-sort-ignore-string-entries, bibtex-maintain-sorted-entries)
Replace make-variable-buffer-local by make-local-variable for
(bibtex-entry-format): New tag `required-fields'.
(bibtex-maintain-sorted-entries): New var.
(bibtex-sort-entry-class, bibtex-sort-entry-class-alist): New vars.
(bibtex-predefined-month-strings, bibtex-predefined-strings):
Make into alists with pairs (abbreviation expansion).
(bibtex-autokey-titleword-change-strings)
(bibtex-autokey-transcriptions): Make into alists.
Add new replacement pairs.
(bibtex-autokey-use-crossref): New var.
Replace bibtex-autokey-year-use-crossref-entry because updated code
for autokey generation handles crossrefs independently of
particular fields.
(bibtex-reference-key, bibtex-mode-syntax-table):
Remove = because it can't be part of a string's key.
(bibtex-complete-key-cleanup): New var.
(bibtex-complete): Merge bibtex-complete-string and bibtex-complete-key
into it (and bind to M-tab).
(bibtex-valid-entry-re, bibtex-any-valid-entry-re)
(bibtex-valid-entry-whitespace-re, bibtex-empty-field-re)
(bibtex-quoted-string-re): New vars.
(bibtex-field-name-for-parsing): Don't make-variable-buffer-local.
(zmacs-regions): Declare to quieten the byte-compiler.
(bibtex-comment-start): Don't include the space.
(bibtex-font-lock-syntactic-keywords): New var.
(bibtex-font-lock-keywords): Remove the entry for @Comment.
(bibtex-parse-field-string): Merge the functionality of
bibtex-parse-field-string-braced, bibtex-parse-quoted-string and
bibtex-parse-field-string-quoted.
(bibtex-search-forward-field-string): Remove.
(bibtex-parse-association): Use when.
(bibtex-parse-field-name): Use when.
(bibtex-parse-field-text): Use when and cond.
(bibtex-parse-field): Use let.
(bibtex-search-forward-field, bibtex-search-backward-field):
Make bound optional, use let, setq, and cddr.
(bibtex-start-of-field, bibtex-start-of-name-in-field)
(bibtex-end-of-name-in-field): Use nth.
(bibtex-name-in-field, bibtex-text-in-field-bounds)
(bibtex-text-in-field, bibtex-type-in-head, bibtex-key-in-head)
(bibtex-text-in-string): New functions.
(bibtex-reference-key-in-string): New fun. Merge of
bibtex-start-of-reference-key-in-string and
bibtex-end-of-reference-key-in-string.
(bibtex-parse-string-prefix): Use let and when.
(bibtex-parse-string-postfix): Use when.
(bibtex-search-forward-string, bibtex-search-backward-string):
Use save-excursion and setq.
(bibtex-member-of-regexp): Use let.
(bibtex-assoc-of-regexp): Use caar und let.
(bibtex-skip-to-valid-entry): Return buffer position.
(bibtex-map-entries): Use save-excursion.
(bibtex-progress-message): Simplify.
(bibtex-search-entry): Use skip-chars-forward, when, save-match-data.
(bibtex-move-outside-of-entry): Handle the case that point is before
first entry.
(bibtex-enclosing-field): Use save-excursion, when.
(bibtex-format-field-delimiters): Merge into bibtex-format-entry.
(bibtex-enclosing-entry-maybe-empty-head): Simplify.
(bibtex-format-entry): Simplify. Handle new tag required-fields of
bibtex-entry-format.
(bibtex-autokey-abbrev): Accept negative values of len.
(bibtex-autokey-get-field, bibtex-autokey-demangle-title): New funs.
(bibtex-autokey-get-namefield, bibtex-autokey-get-namelist)
(bibtex-autokey-get-yearfield-digits, bibtex-autokey-get-yearfield)
(bibtex-autokey-get-titlestring): Remove.
(bibtex-autokey-get-names): Simplify.
(bibtex-autokey-get-titles): Rename to bibtex-autokey-get-title.
(bibtex-autokey-demangle-name): Simplify, avoid error messages.
(bibtex-generate-autokey): Simplify.
(bibtex-parse-keys): Simplify, use push.
(bibtex-parse-strings): New fun similar to bibtex-parse-keys.
(bibtex-string-files-init): New fun.
(bibtex-parse-buffers-stealthily): Use bibtex-parse-keys,
bibtex-string-files-init and bibtex-parse-strings.
(bibtex-complete): Rename to bibtex-complete-internal, use push,
bibtex-reference-key-in-string, no sorting.
(bibtex-complete-string-cleanup): New fun, displays expansion of
completed strings.
(bibtex-choose-completion-string): New fun. Required for
choose-completion-string-functions.
(bibtex-do-auto-fill): Remove. Set fill-prefix in bibtex-mode.
(bibtex-pop): Simplify.
(bibtex-mode): Move setting of bibtex-string to bibtex-parse-strings.
Set choose-completion-string-functions.
(bibtex-print-help-message,bibtex-make-field, bibtex-end-of-entry)
(bibtex-count-entries): Simplify.
(bibtex-entry-index, bibtex-lessp): New funs for generalized sorting
scheme of indices, see bibtex-maintain-sorted-entries.
(bibtex-sort-buffer): Use bibtex-lessp for sorting.
(bibtex-find-crossref, bibtex-find-entry): New funs.
(bibtex-find-entry-location): Rename to bibtex-prepare-new-entry, use
bibtex-lessp, Simplify.
(bibtex-validate): Simplify. Fixe bug of internal variable
questionable-month.
(bibtex-remove-OPT-or-ALT): Use when.
(bibtex-remove-delimiters, bibtex-kill-field, bibtex-kill-entry)
(bibtex-clean-entry, bibtex-fill-entry, bibtex-reformat): Simplify.
(bibtex-convert-alien): Use deactivate-mark rather than the
non-existent bibtex-mark-active variable.
(bibtex-complete-string, bibtex-complete-key): Merge into new
`smart' defun bibtex-complete.
(bibtex-String): Update for new sorting scheme, distinguish empty and
non-empty key strings.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 02 Jun 2003 22:30:09 +0000 |
parents | 23a1cea22d13 |
children | 695cf19ef79e d7ddb3e565de |
line wrap: on
line source
#ifndef LWLIB_H #define LWLIB_H #include <X11/Intrinsic.h> /* ** Widget values depend on the Widget type: ** ** widget: (name value key enabled data contents/selected) ** ** label: ("name" "string" NULL NULL NULL NULL) ** button: ("name" "string" "key" T/F data <default-button-p>) ** button w/menu: ** ("name" "string" "key" T/F data (label|button|button w/menu...)) ** menubar: ("name" NULL NULL T/F data (button w/menu)) ** selectable thing: ** ("name" "string" "key" T/F data T/F) ** checkbox: selectable thing ** radio: ("name" NULL NULL T/F data (selectable thing...)) ** strings: ("name" NULL NULL T/F data (selectable thing...)) ** text: ("name" "string" <ign> T/F data) ** main: ("name") */ typedef unsigned long LWLIB_ID; typedef enum _change_type { NO_CHANGE = 0, INVISIBLE_CHANGE = 1, VISIBLE_CHANGE = 2, STRUCTURAL_CHANGE = 3 } change_type; enum button_type { BUTTON_TYPE_NONE, BUTTON_TYPE_TOGGLE, BUTTON_TYPE_RADIO }; /* Menu separator types. */ enum menu_separator { /* These values are Motif compatible. */ SEPARATOR_NO_LINE, SEPARATOR_SINGLE_LINE, SEPARATOR_DOUBLE_LINE, SEPARATOR_SINGLE_DASHED_LINE, SEPARATOR_DOUBLE_DASHED_LINE, SEPARATOR_SHADOW_ETCHED_IN, SEPARATOR_SHADOW_ETCHED_OUT, SEPARATOR_SHADOW_ETCHED_IN_DASH, SEPARATOR_SHADOW_ETCHED_OUT_DASH, /* The following are supported by Lucid menus. */ SEPARATOR_SHADOW_DOUBLE_ETCHED_IN, SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT, SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH, SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH }; typedef struct _widget_value { /* name of widget */ char* name; /* value (meaning depend on widget type) */ char* value; /* keyboard equivalent. no implications for XtTranslations */ char* key; /* Help string or nil if none. GC finds this string through the frame's menu_bar_vector or through menu_items. */ Lisp_Object help; /* true if enabled */ Boolean enabled; /* true if selected */ Boolean selected; /* true if was edited (maintained by get_value) */ Boolean edited; /* The type of a button. */ enum button_type button_type; /* true if has changed (maintained by lw library) */ change_type change; /* true if this widget itself has changed, but not counting the other widgets found in the `next' field. */ change_type this_one_change; /* Contents of the sub-widgets, also selected slot for checkbox */ struct _widget_value* contents; /* data passed to callback */ XtPointer call_data; /* next one in the list */ struct _widget_value* next; /* slot for the toolkit dependent part. Always initialize to NULL. */ void* toolkit_data; /* tell us if we should free the toolkit data slot when freeing the widget_value itself. */ Boolean free_toolkit_data; /* we resource the widget_value structures; this points to the next one on the free list if this one has been deallocated. */ struct _widget_value *free_list; } widget_value; typedef void (*lw_callback) __P ((Widget w, LWLIB_ID id, void* data)); void lw_register_widget __P ((char* type, char* name, LWLIB_ID id, widget_value* val, lw_callback pre_activate_cb, lw_callback selection_cb, lw_callback post_activate_cb, lw_callback highlight_cb)); Widget lw_get_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); Widget lw_make_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); Widget lw_create_widget __P ((char* type, char* name, LWLIB_ID id, widget_value* val, Widget parent, Boolean pop_up_p, lw_callback pre_activate_cb, lw_callback selection_cb, lw_callback post_activate_cb, lw_callback highlight_cb)); LWLIB_ID lw_get_widget_id __P ((Widget w)); int lw_modify_all_widgets __P ((LWLIB_ID id, widget_value* val, Boolean deep_p)); void lw_destroy_widget __P ((Widget w)); void lw_destroy_all_widgets __P ((LWLIB_ID id)); void lw_destroy_everything __P ((void)); void lw_destroy_all_pop_ups __P ((void)); Widget lw_raise_all_pop_up_widgets __P ((void)); widget_value* lw_get_all_values __P ((LWLIB_ID id)); Boolean lw_get_some_values __P ((LWLIB_ID id, widget_value* val)); void lw_pop_up_all_widgets __P ((LWLIB_ID id)); void lw_pop_down_all_widgets __P ((LWLIB_ID id)); widget_value *malloc_widget_value (); void free_widget_value __P ((widget_value *)); void lw_popup_menu __P ((Widget, XEvent *)); /* Toolkit independent way of focusing on a Widget at the Xt level. */ void lw_set_keyboard_focus __P ((Widget parent, Widget w)); /* Silly Energize hack to invert the "sheet" button */ void lw_show_busy __P ((Widget w, Boolean busy)); /* Silly hack to assist with Lucid/Athena geometry management. */ void lw_refigure_widget __P ((Widget w, Boolean doit)); /* Toolkit independent way of determining if an event occurred on a menubar. */ Boolean lw_window_is_in_menubar __P ((Window win, Widget menubar_widget)); /* Manage resizing: TRUE permits resizing widget w; FALSE disallows it. */ void lw_allow_resizing __P ((Widget w, Boolean flag)); /* Set up the main window. */ void lw_set_main_areas __P ((Widget parent, Widget menubar, Widget work_area)); /* Value is non-zero if LABEL is a menu separator. If it is, *TYPE is set to an appropriate enumerator of type enum menu_separator. MOTIF_P non-zero means map separator types not supported by Motif to similar ones that are supported. */ int lw_separator_p __P ((char *label, enum menu_separator *type, int motif_p)); void lwlib_bcopy __P ((char*, char*, int)); #endif /* LWLIB_H */