Mercurial > hg > xemacs-beta
changeset 5212:4f98237e23fc
Automated merge with ssh://sperber-guest@hg.debian.org//hg/xemacs/xemacs
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 16 May 2010 12:49:49 +0100 |
parents | 23f00bfd78a4 (current diff) cdca98f2d36f (diff) |
children | 7abb91db1e64 2157ecaedc1d |
files | src/ChangeLog |
diffstat | 9 files changed, 73 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Fri May 07 14:35:00 2010 +0100 +++ b/lisp/ChangeLog Sun May 16 12:49:49 2010 +0100 @@ -1,3 +1,9 @@ +2010-05-16 Aidan Kehoe <kehoea@parhasard.net> + + * files.el (default-file-system-ignore-case): + Move this to fileio.c, where it's a constant boolean variable + initialised at dump time. + 2010-04-29 Aidan Kehoe <kehoea@parhasard.net> * cmdloop.el (suggest-key-bindings):
--- a/lisp/files.el Fri May 07 14:35:00 2010 +0100 +++ b/lisp/files.el Sun May 16 12:49:49 2010 +0100 @@ -4515,17 +4515,8 @@ ;; END SYNC WITH FSF 21.2. -;; XEmacs: -(defvar default-file-system-ignore-case (and - (memq system-type '(windows-nt - cygwin32 - darwin)) - t) - "What `file-system-ignore-case-p' returns by default. -This is in the case that nothing in `file-system-case-alist' matches.") - -;; Question; do any of the Linuxes mount Windows partitions in a fixed -;; place? +;; XEmacs. Question; do any of the Linuxes mount Windows partitions in +;; a fixed place? (defvar file-system-case-alist nil "Alist to decide where file name case is significant.
--- a/src/ChangeLog Fri May 07 14:35:00 2010 +0100 +++ b/src/ChangeLog Sun May 16 12:49:49 2010 +0100 @@ -1,3 +1,32 @@ +2010-05-16 Aidan Kehoe <kehoea@parhasard.net> + + Move `default-file-system-ignore-case' to C; pay attention to it + in creating the directory hash tables for #'locate-file. Fix a bug + where #'eq was specified when creating directory hash tables in + dired.c. + + * config.h.in (DEFAULT_FILE_SYSTEM_IGNORE_CASE): This is 1 on + Darwin. + * dired.c (make_directory_hash_table): If + #'file-system-ignore-case-p gives non-nil for a directory, created + the associated hash table with #'equalp as its test. Never use + #'eq as a directory hash table test. + * fileio.c (vars_of_fileio): + Move `default-file-system-ignore-case' here, so it can be a + constant boolean reflecting a compile-time #define. + * lisp.h: Update the declaration of make_directory_hash_table; + remove the declaration of wasteful_word_to_lisp, which was + #ifdef'd out. + * lread.c (Flocate_file): Take out a debugging statement from + this function. + (locate_file_refresh_hashing): Call make_directory_hash_table with + a Lisp string, not an Ibyte pointer. + (vars_of_lread): If DEFAULT_FILE_SYSTEM_IGNORE_CASE is defined, + use #'equalp as the hash table test for locate-file-hash-table, + not #'equal. + * s/win32-common.h (DEFAULT_FILE_SYSTEM_IGNORE_CASE): + Case should normally be ignored in file names on Win32. + 2010-04-29 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Fquote, Ffunction): Error on more than one argument to
--- a/src/config.h.in Fri May 07 14:35:00 2010 +0100 +++ b/src/config.h.in Sun May 16 12:49:49 2010 +0100 @@ -339,6 +339,7 @@ /* Darwin; realpath corrects for case: */ #ifdef HAVE_DYLD #define REALPATH_CORRECTS_CASE 1 +#define DEFAULT_FILE_SYSTEM_IGNORE_CASE 1 #endif #undef HAVE_LIBINTL
--- a/src/dired.c Fri May 07 14:35:00 2010 +0100 +++ b/src/dired.c Sun May 16 12:49:49 2010 +0100 @@ -46,6 +46,7 @@ Lisp_Object Qfile_name_completion; Lisp_Object Qfile_name_all_completions; Lisp_Object Qfile_attributes; +Lisp_Object Qfile_system_ignore_case_p; static Lisp_Object close_directory_unwind (Lisp_Object unwind_obj) @@ -777,14 +778,21 @@ Lisp_Object -make_directory_hash_table (const Ibyte *path) +make_directory_hash_table (Lisp_Object path) { DIR *d; - if ((d = qxe_opendir (path))) + if ((d = qxe_opendir (XSTRING_DATA (path)))) { + Lisp_Object hash_table_test = Qequal, hash = Qnil; DIRENTRY *dp; - Lisp_Object hash = - make_lisp_hash_table (20, HASH_TABLE_NON_WEAK, Qeq); + + if (!UNBOUNDP (XSYMBOL_FUNCTION (Qfile_system_ignore_case_p)) + && !NILP (call1 (Qfile_system_ignore_case_p, path))) + { + hash_table_test = Qequalp; + } + + hash = make_lisp_hash_table (20, HASH_TABLE_NON_WEAK, hash_table_test); while ((dp = qxe_readdir (d))) { @@ -942,6 +950,7 @@ DEFSYMBOL (Qfile_name_completion); DEFSYMBOL (Qfile_name_all_completions); DEFSYMBOL (Qfile_attributes); + DEFSYMBOL (Qfile_system_ignore_case_p); DEFSUBR (Fdirectory_files); DEFSUBR (Ffile_name_completion);
--- a/src/fileio.c Fri May 07 14:35:00 2010 +0100 +++ b/src/fileio.c Sun May 16 12:49:49 2010 +0100 @@ -108,6 +108,8 @@ Lisp_Object Vdirectory_sep_char; +int default_file_system_ignore_case; + #ifdef HAVE_FSYNC /* Nonzero means skip the call to fsync in Fwrite-region. */ int write_region_inhibit_fsync; @@ -4560,6 +4562,16 @@ what the normal separator is. */ ); Vdirectory_sep_char = make_char (DEFAULT_DIRECTORY_SEP); + + DEFVAR_CONST_BOOL ("default-file-system-ignore-case", &default_file_system_ignore_case /* +What `file-system-ignore-case-p' returns by default. +This is in the case that nothing in `file-system-case-alist' matches. +*/ ); +#ifdef DEFAULT_FILE_SYSTEM_IGNORE_CASE + default_file_system_ignore_case = DEFAULT_FILE_SYSTEM_IGNORE_CASE; +#else + default_file_system_ignore_case = 0; +#endif } void
--- a/src/lisp.h Fri May 07 14:35:00 2010 +0100 +++ b/src/lisp.h Sun May 16 12:49:49 2010 +0100 @@ -4504,8 +4504,7 @@ extern Lisp_Object Vx_initial_argv_list; /* Defined in dired.c */ -Lisp_Object make_directory_hash_table (const Ibyte *); -Lisp_Object wasteful_word_to_lisp (unsigned int); +Lisp_Object make_directory_hash_table (Lisp_Object); /* Defined in doc.c */ EXFUN (Fsubstitute_command_keys, 1);
--- a/src/lread.c Fri May 07 14:35:00 2010 +0100 +++ b/src/lread.c Sun May 16 12:49:49 2010 +0100 @@ -894,9 +894,6 @@ { /* This function can GC */ Lisp_Object tp; - static int locate_file_called; - - ++locate_file_called; CHECK_STRING (filename); @@ -918,8 +915,7 @@ static Lisp_Object locate_file_refresh_hashing (Lisp_Object directory) { - Lisp_Object hash = - make_directory_hash_table (XSTRING_DATA (directory)); + Lisp_Object hash = make_directory_hash_table (directory); if (!NILP (hash)) Fputhash (directory, hash, Vlocate_file_hash_table); @@ -3483,7 +3479,12 @@ Vlocate_file_hash_table = make_lisp_hash_table (200, HASH_TABLE_NON_WEAK, - Qequal); +#ifdef DEFAULT_FILE_SYSTEM_IGNORE_CASE + Qequalp +#else + Qequal +#endif + ); staticpro (&Vlocate_file_hash_table); #ifdef DEBUG_XEMACS symbol_value (XSYMBOL (intern ("Vlocate-file-hash-table")))