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