annotate man/new-users-guide/files.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 f43f9ca6c7d9
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 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @node Files, Other Customizations, Modes, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @chapter Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @cindex files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 The basic unit of stored data in Unix is the @dfn{file}. To edit a file,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 you must tell Emacs to read the file into a buffer. This is called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 @dfn{visiting} the file. You can now edit the buffer and to save the
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
9 changes you must write the buffer back to the file.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 In addition to visiting and saving files, Emacs can delete, copy, rename,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 and append to files, and operate on file directories.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 * File Names:: How to type and edit file name arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 * Visiting:: Visiting a file prepares Emacs to edit the file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 * Saving Files:: How to save Emacs files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 @node File Names, Visiting, Files, Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 @section File Names
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 @cindex file names
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 Most of the Emacs commands that operate on a file require you to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 specify a file name. For example, you might specify the file name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 initially when you enter Emacs :
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 xemacs myfile RET
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 After you hit @key{RET}, you will enter XEmacs with "myfile" read into
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 the current buffer. If you do not specify the filename when entering
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 Emacs, you can use the @b{Open...} option from the @b{File} menu. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 will be prompted for a filename in the echo area:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 Find file: /usr/workspace/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 @vindex default-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 Type in a file name which you want to open after the "/" and hit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 @key{RET}. The specified file will be read into the current buffer. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 "/usr/workspace" might be the @dfn{default directory}. When Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 prompts you for a file, it uses the default-directory unless you specify
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 a directory. You can see what the default directory of the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 buffer is by using the @b{Describe Variable} option from the @b{Help}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 menu. When Emacs prompts you for the variable name to describe, type
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 444
diff changeset
52 @code{default-directory}. If you wish to open a file in some other
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 directory, use @key{DEL} or the @key{BackSpace} key to go back and type
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
54 the path name of the new directory.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 You can create a new directory by typing @kbd{M-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 make-directory}. This command will prompt you for a directory name:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 Create directory: /usr/workspace/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @findex make-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 @findex remove-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 @cindex creating-directories
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 @cindex removing-directories
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 After you type a directory name and press @key{RET}, a new directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 with the specified name will be created. If you do not wish to create a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 new directory, then simply press @kbd{C-g} to quit the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 command. Similarly, you can also remove a directory by using the command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 @kbd{remove-directory}. The command @kbd{M-x pwd} will print the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 buffer's default directory. For more information on file names,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 @xref{File Names,,,xemacs,XEmacs User's Manual}.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
75
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 @node Visiting, Saving Files, File Names, Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 @section Visiting Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 @cindex visiting files
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 To edit a file in Emacs you need to @dfn{visit} it. @dfn{Visiting} a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 file means copying its contents (or reading them) into the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 buffer. Emacs will create a new buffer for each file that you visit. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 buffer will be named after the file that you open. If you open a file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 @file{/usr/workspace/myfile.texinfo}, the buffer will be called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 "myfile.texinfo". If a buffer with this name already exists, a unique
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 name will be constructed by appending @samp{<2>}, @samp{<3>}, etc. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 this is the second buffer with the same name, a "<2>" will be appended,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 "<3>" for a third buffer and so on. The name of the buffer which is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 being displayed in the window will be shown both at the top and bottom
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 of the frame. Once you are in XEmacs, you can use the following
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 commands:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 @item C-x C-f
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 @findex find-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 @kindex C-x C-f
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 This command will visit a file (@code{find-file}). It will prompt you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 for a file name to visit. The @b{Open...} option from the @b{File} menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 does the same thing:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 Find file: /usr/workspace/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 Type in a filename and press @key{RET}. You will see a new buffer on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 screen with its name in the mode-line. If the filename you specify
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 already exists in Emacs, the buffer containing that file will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 selected. You will get an error message if the filename does not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 exist. If you still press @key{RET}, a new buffer with the given
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
112 filename will be displayed on the screen.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 @item C-x C-v
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 @kindex C-x C-v
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 @findex find-alternate-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 This command (@code{find-alternate-file}), will visit a different file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 instead of the one visited last. It is similar to @kbd{C-c C-f} except
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
119 that it kills the current buffer (after offering to save it).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @item C-x 5 C-f
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 @kindex C-x 5 C-f
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 @findex find-file-other-frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 This command will visit a file in another frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 (@code{find-file-other-frame}) without changing the current window or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 frame. The @b{Open in New Frame...} from the @b{File} menu will do the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 same thing. It will prompt you for a file name in the echo area. After
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 you type the file name and press @key{RET}, the specified file will be
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
129 read into a new buffer and displayed on a new frame.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 @node Saving Files, , Visiting, Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 @section Saving Files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 @cindex saving files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 The changes that you make after visiting a file will not be saved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 unless you save the buffer. When you save the buffer, Emacs writes the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 current contents of the buffer into the visited file. Some commands to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 save buffers are:
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 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 @item C-x C-s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 @findex save-buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 @kindex C-x C-s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 This command will permanently save the current buffer in its visited
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 file (@code{save-buffer}). You will see the following message in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 echo area if you save a file called "myfile.texinfo" :
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 Wrote /usr/workspace/myfile.texinfo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 Try using this command twice. You will get the above message the first
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 time you use this command, the second time you will get the following
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
156 message:
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 (No changes need to be saved)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 This message indicates that you haven't made any changes since the last
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
164 time you saved the file.
428
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 @item C-x s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 @kindex C-x s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 @findex save-some-buffers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 This command will save all the buffers in their visited files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 (@code{save-some-buffers}). It will prompt you for typing yes or no:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 Save file /usr/workspace/myfile.texinfo? (y or n)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 You will get the above message for all the buffers. Type "y" if you want
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
178 to save the buffer.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 @item C-x C-w
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 @findex write file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 @kindex C-x C-w
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 This command will prompt you for a file name and save the current buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 in that file. (@code{write-file}). You will see the following message in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 the echo area:
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 Write file: /usr/workspace/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 @noindent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 After you type in a file name, press @key{RET}. The buffer will be saved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 in a new file. You can make copies of a particular file using this
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
194 command.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 You can also undo all the changes made since the file was visited or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 saved by reading the text from the file again (called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 @dfn{reverting}). For more information on this option,
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
200 @xref{Reverting,,,xemacs,XEmacs User's Manual}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 @vindex make-backup-files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 When you save a file in Emacs, it destroys its old contents. However,
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 444
diff changeset
204 if you set the variable @code{make-backup-files} to non-@code{nil}
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 i.e. @samp{t}, Emacs will create a @dfn{backup} file. Select the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 @b{Describe variable} option from the @b{Help} menu and look at the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 documentation for this variable. Its default value should be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 @samp{t}. However, if its not then use @kbd{M-x set-variable} to set it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 to @samp{t} (@pxref{Setting Variables}). The backup file will contain
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 the contents from the last time you visited the file. Emacs also
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 provides options for creating numbered backups. For more information on
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
212 backups, @xref{Backup,,,xemacs,XEmacs User's Manual}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 @cindex auto saving
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 Emacs also saves all the files from time to time so that in case of a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 system crash you don't lose lot of your work. You will see the message
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 @samp{Auto-saving...} displayed in the echo area when the buffer is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 being saved automatically. The auto saved files are named by putting the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 character @samp{#} in front and back. For example a file called
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 "myfile.texinfo" would be named as @file{#myfile.texinfo#}. For
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 information on controlling auto-saving and recovering data from
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
222 auto-saving, @xref{Auto Save Files,,,xemacs,XEmacs User's Manual}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 @cindex simultaneous editing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 Emacs provides protection from simultaneous editing which occurs if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 two users are visiting the same file and trying to save their
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 changes. It will put a lock on a file which is being visited and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 modified. If any other user tries to modify that file, it will inform
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 the user about the lock and provide some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 options. For more information on protection against simultaneous
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 editing, @xref{Interlocking,,,xemacs,XEmacs User's Manual}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
251
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
252
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
253
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 428
diff changeset
254