annotate man/xemacs/abbrevs.texi @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * 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): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents 576fb035e263
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
2 @node Abbrevs, Picture, Running, Top
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @chapter Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @cindex abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @cindex expansion (of abbrevs)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 An @dfn{abbrev} is a word which @dfn{expands} into some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 different text. Abbrevs are defined by the user to expand in specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 ways. For example, you might define @samp{foo} as an abbrev expanding to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 @samp{find outer otter}. With this abbrev defined, you would be able to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 get @samp{find outer otter } into the buffer by typing @kbd{f o o @key{SPC}}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @findex abbrev-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @vindex abbrev-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 Disabling Abbrev mode does not cause abbrev definitions to be discarded,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 but they do not expand until Abbrev mode is enabled again. The command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 @kbd{M-x abbrev-mode} toggles Abbrev mode; with a numeric argument, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 turns Abbrev mode on if the argument is positive, off otherwise.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 @xref{Minor Modes}. @code{abbrev-mode} is also a variable; Abbrev mode is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 on when the variable is non-@code{nil}. The variable @code{abbrev-mode}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 automatically becomes local to the current buffer when it is set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 Abbrev definitions can be @dfn{mode-specific}---active only in one major
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 mode. Abbrevs can also have @dfn{global} definitions that are active in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 all major modes. The same abbrev can have a global definition and various
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 mode-specific definitions for different major modes. A mode-specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 definition for the current major mode overrides a global definition.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 You can define Abbrevs interactively during an editing session. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 can also save lists of abbrev definitions in files and reload them in later
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 sessions. Some users keep extensive lists of abbrevs that they load in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 every session.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 A second kind of abbreviation facility is called the @dfn{dynamic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 expansion}. Dynamic abbrev expansion happens only when you give an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 explicit command and the result of the expansion depends only on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 current contents of the buffer. @xref{Dynamic Abbrevs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 @node Defining Abbrevs, Expanding Abbrevs, Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 @section Defining Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 @item C-x a g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 Define an abbrev to expand into some text before point
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 (@code{add-global-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 @item C-x a l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 Similar, but define an abbrev available only in the current major mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 (@code{add-mode-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 @item C-x a i g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 @item C-x a i l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 Define a word in the buffer as a mode-specific abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 (@code{inverse-add-mode-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @item M-x kill-all-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 After this command, no abbrev definitions remain in effect.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @kindex C-x a g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @findex add-global-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 The usual way to define an abbrev is to enter the text you want the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 abbrev to expand to, position point after it, and type @kbd{C-x a g}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 (@code{add-global-abbrev}). This reads the abbrev itself using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 minibuffer, and then defines it as an abbrev for one or more words
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 before point. Use a numeric argument to say how many words before point
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 should be taken as the expansion. For example, to define the abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 @samp{foo} as in the example above, insert the text @samp{find outer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 otter}, then type @*@kbd{C-u 3 C-x a g f o o @key{RET}}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 An argument of zero to @kbd{C-x a g} means to use the contents of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 region as the expansion of the abbrev being defined.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 @kindex C-x a l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 @findex add-mode-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 defines a mode-specific abbrev. Mode-specific abbrevs are active only in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 particular major mode. @kbd{C-x a l} defines an abbrev for the major mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 in effect at the time @kbd{C-x a l} is typed. The arguments work the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 same way they do for @kbd{C-x a g}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 @kindex C-x a i g
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 @findex inverse-add-global-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @kindex C-x a i l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 @findex inverse-add-mode-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 If the text of an abbrev you want is already in the buffer instead of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 the expansion, use command @kbd{C-x a i g} (@code{inverse-add-global-abbrev})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 instead of @kbd{C-x a g}, or use @kbd{C-x a i l}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 (@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a l}. These commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 are called ``inverse'' because they invert the meaning of the argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 found in the buffer and the argument read using the minibuffer.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 To change the definition of an abbrev, just add the new definition. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 will be asked to confirm if the abbrev has a prior definition. To remove
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 an abbrev definition, give a negative argument to @kbd{C-x a g} or @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 a l}. You must choose the command to specify whether to kill a global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 definition or a mode-specific definition for the current mode, since those
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 two definitions are independent for one abbrev.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 @findex kill-all-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 @kbd{M-x kill-all-abbrevs} removes all existing abbrev definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 @node Expanding Abbrevs, Editing Abbrevs, Defining Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 @section Controlling Abbrev Expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 An abbrev expands whenever it is in a buffer just before point and you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 type a self-inserting punctuation character (@key{SPC}, comma,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 etc.@:). Most often an abbrev is used by inserting the abbrev followed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 by punctuation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @vindex abbrev-all-caps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 outer otter}, @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @samp{FIND OUTER OTTER} or @samp{Find Outer Otter} according to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 variable @code{abbrev-all-caps} (a non-@code{nil} value chooses the first
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 of the two expansions).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 Two commands are available to control abbrev expansion:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 @item M-'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 Separate a prefix from a following abbrev to be expanded
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 (@code{abbrev-prefix-mark}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 @item C-x a e
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 @findex expand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 Expand the abbrev before point (@code{expand-abbrev}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 This is effective even when Abbrev mode is not enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 @item M-x unexpand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 Undo last abbrev expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 @item M-x expand-region-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 Expand some or all abbrevs found in the region.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 @kindex M-'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 @findex abbrev-prefix-mark
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 You may wish to expand an abbrev with a prefix attached. For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 if @samp{cnst} expands into @samp{construction}, you may want to use it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 to enter @samp{reconstruction}. It does not work to type @kbd{recnst},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 because that is not necessarily a defined abbrev. Instead, you can use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 the command @kbd{M-'} (@code{abbrev-prefix-mark}) between the prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 @samp{re} and the abbrev @samp{cnst}. First, insert @samp{re}. Then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 type @kbd{M-'}; this inserts a minus sign in the buffer to indicate that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 it has done its work. Then insert the abbrev @samp{cnst}. The buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 now contains @samp{re-cnst}. Now insert a punctuation character to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 expand the abbrev @samp{cnst} into @samp{construction}. The minus sign
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 is deleted at this point by @kbd{M-'}. The resulting text is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 desired @samp{reconstruction}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 If you actually want the text of the abbrev in the buffer, rather than
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 its expansion, insert the following punctuation with @kbd{C-q}. Thus,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @kbd{foo C-q -} leaves @samp{foo-} in the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @findex unexpand-abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 If you expand an abbrev by mistake, you can undo the expansion (replace
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 the expansion by the original abbrev text) with @kbd{M-x unexpand-abbrev}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 You can also use @kbd{C-_} (@code{undo}) to undo the expansion; but that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 will first undo the insertion of the punctuation character.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @findex expand-region-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 @kbd{M-x expand-region-abbrevs} searches through the region for defined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 abbrevs, and offers to replace each one it finds with its expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 This command is useful if you have typed text using abbrevs but forgot
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 to turn on Abbrev mode first. It may also be useful together with a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 special set of abbrev definitions for making several global replacements at
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 once. The command is effective even if Abbrev mode is not enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 @node Editing Abbrevs, Saving Abbrevs, Expanding Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 @section Examining and Editing Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 @item M-x list-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 Print a list of all abbrev definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 @item M-x edit-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 Edit a list of abbrevs; you can add, alter, or remove definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 @findex list-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 The output from @kbd{M-x list-abbrevs} looks like this:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 (lisp-mode-abbrev-table)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
189 "dk" 0 "define-key"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 (global-abbrev-table)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
191 "dfn" 0 "definition"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 (Some blank lines of no semantic significance, and some other abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 tables, have been omitted.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 A line containing a name in parentheses is the header for abbrevs in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 particular abbrev table; @code{global-abbrev-table} contains all the global
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 abbrevs, and the other abbrev tables that are named after major modes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 contain the mode-specific abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 Within each abbrev table, each non-blank line defines one abbrev. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 word at the beginning is the abbrev. The number that appears is the number
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 of times the abbrev has been expanded. Emacs keeps track of this to help
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 you see which abbrevs you actually use, in case you want to eliminate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 those that you don't use often. The string at the end of the line is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 expansion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 @findex edit-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 @kindex C-c C-c (Edit Abbrevs)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 @findex edit-abbrevs-redefine
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 definitions by editing a list of them in an Emacs buffer. The list has
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 the format described above. The buffer of abbrevs is called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 @samp{*Abbrevs*}, and is in Edit-Abbrevs mode. This mode redefines the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 key @kbd{C-c C-c} to install the abbrev definitions as specified in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 buffer. The @code{edit-abbrevs-redefine} command does this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 Any abbrevs not described in the buffer are eliminated when this is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 done.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 @code{edit-abbrevs} is actually the same as @code{list-abbrevs}, except
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 that it selects the buffer @samp{*Abbrevs*} whereas @code{list-abbrevs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 merely displays it in another window.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 @node Saving Abbrevs, Dynamic Abbrevs, Editing Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 @section Saving Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 These commands allow you to keep abbrev definitions between editing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 sessions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 @item M-x write-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 Write a file describing all defined abbrevs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 @item M-x read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 Read such an abbrev file and define abbrevs as specified there.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 @item M-x quietly-read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 Similar, but do not display a message about what is going on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 @item M-x define-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 Define abbrevs from buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 @item M-x insert-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 Insert all abbrevs and their expansions into the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 @findex write-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 Use @kbd{M-x write-abbrev-file} to save abbrev definitions for use in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 a later session. The command reads a file name using the minibuffer and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 writes a description of all current abbrev definitions into the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 specified file. The text stored in the file looks like the output of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 @kbd{M-x list-abbrevs}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 @findex read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @findex quietly-read-abbrev-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 @vindex abbrev-file-name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 @kbd{M-x read-abbrev-file} prompts for a file name using the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 minibuffer and reads the specified file, defining abbrevs according to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 its contents. @kbd{M-x quietly-read-abbrev-file} is the same but does
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 not display a message in the echo area; it is actually useful primarily
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
260 in the init file. @xref{Init File}. If you give an empty argument to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
261 either of these functions, the file name Emacs uses is the value of the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
262 variable @code{abbrev-file-name}, which is by default
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
263 @code{"~/.abbrev_defs"}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 @vindex save-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 Emacs offers to save abbrevs automatically if you have changed any of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 C-c}). Set the variable @code{save-abbrevs} to @code{nil} to inhibit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 this feature.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 @findex insert-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 @findex define-abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 similar to the previous commands but work on text in an Emacs buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 @kbd{M-x insert-abbrevs} inserts text into the current buffer before point,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 the entire current buffer and defines abbrevs accordingly.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 @node Dynamic Abbrevs,, Saving Abbrevs, Abbrevs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 @section Dynamic Abbrev Expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 The abbrev facility described above operates automatically as you insert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 text, but all abbrevs must be defined explicitly. By contrast,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 @dfn{dynamic abbrevs} allow the meanings of abbrevs to be determined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 automatically from the contents of the buffer, but dynamic abbrev expansion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 happens only when you request it explicitly.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 @kindex M-/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 @findex dabbrev-expand
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 @item M-/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 Expand the word in the buffer before point as a @dfn{dynamic abbrev},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 by searching in the buffer for words starting with that abbreviation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 (@code{dabbrev-expand}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 For example, if the buffer contains @samp{does this follow } and you type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 @kbd{f o M-/}, the effect is to insert @samp{follow} because that is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 last word in the buffer that starts with @samp{fo}. A numeric argument to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 @kbd{M-/} says to take the second, third, etc.@: distinct expansion found
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 looking backward from point. Repeating @kbd{M-/} searches for an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 alternative expansion by looking farther back. After the entire buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 before point has been considered, the buffer after point is searched.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 Dynamic abbrev expansion is completely independent of Abbrev mode; the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 expansion of a word with @kbd{M-/} is completely independent of whether it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 has a definition as an ordinary abbrev.