aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2004-09-25 12:05:36 +0000
committerMiles Bader2004-09-25 12:05:36 +0000
commit8f92d598fb067c498704099b9ae241c086724bb0 (patch)
treed0f0442cad8dc15dfdb6d58b3d37bade9bdeb911
parent1e93b7ff336bc088a78bcc4aa43b2decd7183ae5 (diff)
parent4de43c8bd612fbcd97162dbdf4a74c2e157373e2 (diff)
downloademacs-8f92d598fb067c498704099b9ae241c086724bb0.tar.gz
emacs-8f92d598fb067c498704099b9ae241c086724bb0.zip
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-44
Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-562 Update from CVS: lisp/subr.el (after-change-major-mode-hook): Doc fix. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-563 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-570 Update from CVS
-rw-r--r--ChangeLog5
-rwxr-xr-xconfigure80
-rw-r--r--configure.in13
-rw-r--r--etc/NEWS32
-rw-r--r--leim/quail/uni-input.el5
-rw-r--r--lisp/ChangeLog90
-rw-r--r--lisp/calc/calc-graph.el14
-rw-r--r--lisp/calendar/calendar.el35
-rw-r--r--lisp/calendar/holidays.el112
-rw-r--r--lisp/ido.el276
-rw-r--r--lisp/image.el9
-rw-r--r--lisp/ls-lisp.el2
-rw-r--r--lisp/printing.el19
-rw-r--r--lisp/progmodes/tcl.el16
-rw-r--r--lisp/subr.el5
-rw-r--r--lisp/textmodes/enriched.el20
-rw-r--r--lispref/ChangeLog59
-rw-r--r--lispref/display.texi403
-rw-r--r--lispref/hooks.texi1
-rw-r--r--lispref/modes.texi89
-rw-r--r--lispref/text.texi64
-rw-r--r--man/ChangeLog9
-rw-r--r--man/calc.texi8
-rw-r--r--man/display.texi39
-rw-r--r--src/ChangeLog6
-rw-r--r--src/Makefile.in15
-rw-r--r--src/config.in3
27 files changed, 1193 insertions, 236 deletions
diff --git a/ChangeLog b/ChangeLog
index d7d85c039cc..a06d464ea91 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
12004-09-24 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * configure.in: Check for exec-shield.
4 * configure: Rebuild.
5
12004-08-06 Andreas Schwab <schwab@suse.de> 62004-08-06 Andreas Schwab <schwab@suse.de>
2 7
3 * Makefile.in (install-arch-indep, uninstall): Add flymake. 8 * Makefile.in (install-arch-indep, uninstall): Add flymake.
diff --git a/configure b/configure
index 0e74a04e700..204bf90b06d 100755
--- a/configure
+++ b/configure
@@ -310,7 +310,7 @@ ac_includes_default="\
310# include <unistd.h> 310# include <unistd.h>
311#endif" 311#endif"
312 312
313ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO EGREP LIBSOUND SET_MAKE PKG_CONFIG GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS' 313ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INSTALL_INFO EGREP SETARCH LIBSOUND SET_MAKE PKG_CONFIG GTK_CFLAGS GTK_LIBS ALLOCA liblockfile LIBOBJS NEED_SETGID KMEM_GROUP GETLOADAVG_LIBS version configuration canonical srcdir lispdir locallisppath lisppath x_default_search_path etcdir archlibdir docdir bitmapdir gamedir gameuser c_switch_system c_switch_machine LD_SWITCH_X_SITE LD_SWITCH_X_SITE_AUX C_SWITCH_X_SITE X_TOOLKIT_TYPE machfile opsysfile carbon_appdir LTLIBOBJS'
314ac_subst_files='' 314ac_subst_files=''
315 315
316# Initialize some variables set by options. 316# Initialize some variables set by options.
@@ -4278,6 +4278,80 @@ rm -f conftest*
4278 4278
4279 4279
4280 4280
4281echo "$as_me:$LINENO: checking for /proc/sys/kernel/exec-shield" >&5
4282echo $ECHO_N "checking for /proc/sys/kernel/exec-shield... $ECHO_C" >&6
4283if test "${ac_cv_file__proc_sys_kernel_exec_shield+set}" = set; then
4284 echo $ECHO_N "(cached) $ECHO_C" >&6
4285else
4286 test "$cross_compiling" = yes &&
4287 { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
4288echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
4289 { (exit 1); exit 1; }; }
4290if test -r "/proc/sys/kernel/exec-shield"; then
4291 ac_cv_file__proc_sys_kernel_exec_shield=yes
4292else
4293 ac_cv_file__proc_sys_kernel_exec_shield=no
4294fi
4295fi
4296echo "$as_me:$LINENO: result: $ac_cv_file__proc_sys_kernel_exec_shield" >&5
4297echo "${ECHO_T}$ac_cv_file__proc_sys_kernel_exec_shield" >&6
4298if test $ac_cv_file__proc_sys_kernel_exec_shield = yes; then
4299 emacs_cv_execshield=1
4300else
4301 emacs_cv_execshield=0
4302fi
4303
4304if test "$emacs_cv_execshield" = 1; then
4305 # Extract the first word of "setarch", so it can be a program name with args.
4306set dummy setarch; ac_word=$2
4307echo "$as_me:$LINENO: checking for $ac_word" >&5
4308echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4309if test "${ac_cv_path_SETARCH+set}" = set; then
4310 echo $ECHO_N "(cached) $ECHO_C" >&6
4311else
4312 case $SETARCH in
4313 [\\/]* | ?:[\\/]*)
4314 ac_cv_path_SETARCH="$SETARCH" # Let the user override the test with a path.
4315 ;;
4316 *)
4317 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4318for as_dir in $PATH
4319do
4320 IFS=$as_save_IFS
4321 test -z "$as_dir" && as_dir=.
4322 for ac_exec_ext in '' $ac_executable_extensions; do
4323 if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4324 ac_cv_path_SETARCH="$as_dir/$ac_word$ac_exec_ext"
4325 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4326 break 2
4327 fi
4328done
4329done
4330
4331 test -z "$ac_cv_path_SETARCH" && ac_cv_path_SETARCH="no"
4332 ;;
4333esac
4334fi
4335SETARCH=$ac_cv_path_SETARCH
4336
4337if test -n "$SETARCH"; then
4338 echo "$as_me:$LINENO: result: $SETARCH" >&5
4339echo "${ECHO_T}$SETARCH" >&6
4340else
4341 echo "$as_me:$LINENO: result: no" >&5
4342echo "${ECHO_T}no" >&6
4343fi
4344
4345
4346 if test "$setarch" != no; then
4347
4348cat >>confdefs.h <<\_ACEOF
4349#define HAVE_EXECSHIELD 1
4350_ACEOF
4351
4352 fi
4353fi
4354
4281#### Extract some information from the operating system and machine files. 4355#### Extract some information from the operating system and machine files.
4282 4356
4283{ echo "$as_me:$LINENO: checking the machine- and system-dependent files to find out 4357{ echo "$as_me:$LINENO: checking the machine- and system-dependent files to find out
@@ -13277,7 +13351,6 @@ done
13277 13351
13278 13352
13279 13353
13280
13281for ac_func in gethostname getdomainname dup2 \ 13354for ac_func in gethostname getdomainname dup2 \
13282rename closedir mkdir rmdir sysinfo \ 13355rename closedir mkdir rmdir sysinfo \
13283random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ 13356random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \
@@ -13286,7 +13359,7 @@ utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
13286__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \ 13359__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
13287sendto recvfrom getsockopt setsockopt getsockname getpeername \ 13360sendto recvfrom getsockopt setsockopt getsockname getpeername \
13288gai_strerror mkstemp getline getdelim mremap memmove fsync bzero \ 13361gai_strerror mkstemp getline getdelim mremap memmove fsync bzero \
13289memset memcmp memmove difftime memcpy mempcpy mblen mbrlen posix_memalign 13362memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign
13290do 13363do
13291as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13364as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
13292echo "$as_me:$LINENO: checking for $ac_func" >&5 13365echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -22002,6 +22075,7 @@ s,@RANLIB@,$RANLIB,;t t
22002s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t 22075s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
22003s,@INSTALL_INFO@,$INSTALL_INFO,;t t 22076s,@INSTALL_INFO@,$INSTALL_INFO,;t t
22004s,@EGREP@,$EGREP,;t t 22077s,@EGREP@,$EGREP,;t t
22078s,@SETARCH@,$SETARCH,;t t
22005s,@LIBSOUND@,$LIBSOUND,;t t 22079s,@LIBSOUND@,$LIBSOUND,;t t
22006s,@SET_MAKE@,$SET_MAKE,;t t 22080s,@SET_MAKE@,$SET_MAKE,;t t
22007s,@PKG_CONFIG@,$PKG_CONFIG,;t t 22081s,@PKG_CONFIG@,$PKG_CONFIG,;t t
diff --git a/configure.in b/configure.in
index b7318b8f805..52c35bb2b09 100644
--- a/configure.in
+++ b/configure.in
@@ -1286,6 +1286,17 @@ AC_LINK_IFELSE([main(){return 0;}],
1286dnl checks for Unix variants 1286dnl checks for Unix variants
1287AC_AIX 1287AC_AIX
1288 1288
1289dnl check if exec-shield is present.
1290AC_CHECK_FILE(/proc/sys/kernel/exec-shield, emacs_cv_execshield=1,
1291 emacs_cv_execshield=0)
1292if test "$emacs_cv_execshield" = 1; then
1293 AC_PATH_PROG(SETARCH, setarch, no)
1294 AC_SUBST(SETARCH)
1295 if test "$setarch" != no; then
1296 AC_DEFINE(HAVE_EXECSHIELD, 1, [Define to 1 if this OS has exec shield.])
1297 fi
1298fi
1299
1289#### Extract some information from the operating system and machine files. 1300#### Extract some information from the operating system and machine files.
1290 1301
1291AC_CHECKING([the machine- and system-dependent files to find out 1302AC_CHECKING([the machine- and system-dependent files to find out
@@ -2342,7 +2353,7 @@ utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
2342__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \ 2353__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
2343sendto recvfrom getsockopt setsockopt getsockname getpeername \ 2354sendto recvfrom getsockopt setsockopt getsockname getpeername \
2344gai_strerror mkstemp getline getdelim mremap memmove fsync bzero \ 2355gai_strerror mkstemp getline getdelim mremap memmove fsync bzero \
2345memset memcmp memmove difftime memcpy mempcpy mblen mbrlen posix_memalign) 2356memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign)
2346 2357
2347AC_CHECK_HEADERS(sys/un.h) 2358AC_CHECK_HEADERS(sys/un.h)
2348 2359
diff --git a/etc/NEWS b/etc/NEWS
index 67a93f109d6..9d63a7eda69 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -436,6 +436,7 @@ feature.
436 % emacsclient -s foo file1 436 % emacsclient -s foo file1
437 % emacsclient -s bar file2 437 % emacsclient -s bar file2
438 438
439+++
439** On window systems, lines which are exactly as wide as the window 440** On window systems, lines which are exactly as wide as the window
440(not counting the final newline character) are no longer broken into 441(not counting the final newline character) are no longer broken into
441two lines on the display (with just the newline on the second line). 442two lines on the display (with just the newline on the second line).
@@ -445,6 +446,7 @@ cursor will be displayed in the fringe when positioned on that newline.
445The new user option 'overflow-newline-into-fringe' may be set to nil to 446The new user option 'overflow-newline-into-fringe' may be set to nil to
446revert to the old behaviour of continuing such lines. 447revert to the old behaviour of continuing such lines.
447 448
449+++
448** The buffer boundaries (i.e. first and last line in the buffer) may 450** The buffer boundaries (i.e. first and last line in the buffer) may
449now be marked with angle bitmaps in the fringes. In addition, up and 451now be marked with angle bitmaps in the fringes. In addition, up and
450down arrow bitmaps may be shown at the top and bottom of the left or 452down arrow bitmaps may be shown at the top and bottom of the left or
@@ -1482,6 +1484,12 @@ appointments, paydays or anything else using a sexp.
1482year and day number, and moves to that date. Negative day numbers 1484year and day number, and moves to that date. Negative day numbers
1483count backward from the end of the year. 1485count backward from the end of the year.
1484 1486
1487---
1488** The functions `holiday-easter-etc' and `holiday-advent' now take
1489arguments, and only report on the specified holiday rather than all.
1490This makes customization of the variable `christian-holidays' simpler,
1491but existing customizations may need to be updated.
1492
1485** The function `simple-diary-display' now by default sets a header line. 1493** The function `simple-diary-display' now by default sets a header line.
1486This can be controlled through the variables `diary-header-line-flag' 1494This can be controlled through the variables `diary-header-line-flag'
1487and `diary-header-line-format'. 1495and `diary-header-line-format'.
@@ -2395,9 +2403,11 @@ operation.
2395if the file is indeed remote. (Before, the return value was t in 2403if the file is indeed remote. (Before, the return value was t in
2396this case.) 2404this case.)
2397 2405
2406+++
2398** The display space :width and :align-to text properties are now 2407** The display space :width and :align-to text properties are now
2399supported on text terminals. 2408supported on text terminals.
2400 2409
2410+++
2401** Support for displaying image slices 2411** Support for displaying image slices
2402 2412
2403*** New display property (slice X Y WIDTH HEIGHT) may be used with 2413*** New display property (slice X Y WIDTH HEIGHT) may be used with
@@ -2409,6 +2419,7 @@ specify image slice (X Y WIDTH HEIGHT).
2409*** New function insert-sliced-image inserts a given image as a 2419*** New function insert-sliced-image inserts a given image as a
2410specified number of evenly sized slices (rows x columns). 2420specified number of evenly sized slices (rows x columns).
2411 2421
2422+++
2412** New line-height and line-spacing properties for newline characters 2423** New line-height and line-spacing properties for newline characters
2413 2424
2414A newline may now have line-height and line-spacing text or overlay 2425A newline may now have line-height and line-spacing text or overlay
@@ -2445,10 +2456,10 @@ any of the forms described above, the value of SPACING is used as the
2445total height of the line, i.e. a varying number of pixels are inserted 2456total height of the line, i.e. a varying number of pixels are inserted
2446after each line to make each line exactly that many pixels high. 2457after each line to make each line exactly that many pixels high.
2447 2458
2448
2449** The buffer local line-spacing variable may now have a float value, 2459** The buffer local line-spacing variable may now have a float value,
2450which is used as a height relative to the default frame line height. 2460which is used as a height relative to the default frame line height.
2451 2461
2462+++
2452** Enhancements to stretch display properties 2463** Enhancements to stretch display properties
2453 2464
2454The display property stretch specification form `(space PROPS)', where 2465The display property stretch specification form `(space PROPS)', where
@@ -2505,6 +2516,7 @@ height) of the specified image.
2505The form `(+ EXPR ...)' adds up the value of the expressions. 2516The form `(+ EXPR ...)' adds up the value of the expressions.
2506The form `(- EXPR ...)' negates or subtracts the value of the expressions. 2517The form `(- EXPR ...)' negates or subtracts the value of the expressions.
2507 2518
2519+++
2508** Normally, the cursor is displayed at the end of any overlay and 2520** Normally, the cursor is displayed at the end of any overlay and
2509text property string that may be present at the current window 2521text property string that may be present at the current window
2510position. The cursor may now be placed on any character of such 2522position. The cursor may now be placed on any character of such
@@ -2522,7 +2534,10 @@ a terminal that supports at least this many colors. This is now the
2522preferred method for defining default faces in a way that makes a good 2534preferred method for defining default faces in a way that makes a good
2523use of the capabilities of the display. 2535use of the capabilities of the display.
2524 2536
2525** New function 'define-fringe-bitmap' can now be used to change the 2537+++
2538** Customizable fringe bitmaps
2539
2540*** New function 'define-fringe-bitmap' can now be used to change the
2526built-in fringe bitmaps, as well as create new fringe bitmaps. 2541built-in fringe bitmaps, as well as create new fringe bitmaps.
2527The return value is a number identifying the new fringe bitmap. 2542The return value is a number identifying the new fringe bitmap.
2528 2543
@@ -2530,15 +2545,15 @@ To change a built-in bitmap, do (require 'fringe) and identify the
2530bitmap to change with the value of the corresponding symbol, like 2545bitmap to change with the value of the corresponding symbol, like
2531`left-truncation-fringe-bitmap' or `continued-line-fringe-bitmap'. 2546`left-truncation-fringe-bitmap' or `continued-line-fringe-bitmap'.
2532 2547
2533** New function 'destroy-fringe-bitmap' may be used to destroy a 2548*** New function 'destroy-fringe-bitmap' may be used to destroy a
2534previously created bitmap, or restore a built-in bitmap. 2549previously created bitmap, or restore a built-in bitmap.
2535 2550
2536** New function 'set-fringe-bitmap-face' can now be used to set a 2551*** New function 'set-fringe-bitmap-face' can now be used to set a
2537specific face to be used for a specific fringe bitmap. Normally, 2552specific face to be used for a specific fringe bitmap. Normally,
2538this should be a face derived from the `fringe' face, specifying 2553this should be a face derived from the `fringe' face, specifying
2539the foreground color as the desired color of the bitmap. 2554the foreground color as the desired color of the bitmap.
2540 2555
2541** There are new display properties, left-fringe and right-fringe, 2556*** There are new display properties, left-fringe and right-fringe,
2542that can be used to show a specific bitmap in the left or right fringe 2557that can be used to show a specific bitmap in the left or right fringe
2543bitmap of the display line. 2558bitmap of the display line.
2544 2559
@@ -2547,7 +2562,7 @@ number identifying a fringe bitmap, either built-in or as returned by
2547`define-fringe-bitmap', and FACE is an optional face name to be used 2562`define-fringe-bitmap', and FACE is an optional face name to be used
2548for displaying the bitmap. 2563for displaying the bitmap.
2549 2564
2550** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT) 2565*** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT)
2551identifying the current fringe bitmaps in the display line at a given 2566identifying the current fringe bitmaps in the display line at a given
2552buffer position. A nil value means no bitmap. 2567buffer position. A nil value means no bitmap.
2553 2568
@@ -2614,18 +2629,23 @@ return value of `get-char-property' called with those arguments and
2614whose cdr is the overlay in which the property was found, or nil if 2629whose cdr is the overlay in which the property was found, or nil if
2615it was found as a text property or not found at all. 2630it was found as a text property or not found at all.
2616 2631
2632+++ (lispref)
2633??? (man)
2617** The mouse pointer shape in void text areas (i.e. after the end of a 2634** The mouse pointer shape in void text areas (i.e. after the end of a
2618line or below the last line in the buffer) of the text window is now 2635line or below the last line in the buffer) of the text window is now
2619controlled by the new variable `void-text-area-pointer'. The default 2636controlled by the new variable `void-text-area-pointer'. The default
2620is to use the `arrow' (non-text) pointer. Other choices are `text' 2637is to use the `arrow' (non-text) pointer. Other choices are `text'
2621(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. 2638(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
2622 2639
2640+++
2623** The mouse pointer shape over an image can now be controlled by the 2641** The mouse pointer shape over an image can now be controlled by the
2624:pointer image property. 2642:pointer image property.
2625 2643
2644+++
2626** The mouse pointer shape over ordinary text or images may now be 2645** The mouse pointer shape over ordinary text or images may now be
2627controlled/overriden via the `pointer' text property. 2646controlled/overriden via the `pointer' text property.
2628 2647
2648+++
2629** Images may now have an associated image map via the :map property. 2649** Images may now have an associated image map via the :map property.
2630 2650
2631An image map is an alist where each element has the format (AREA ID PLIST). 2651An image map is an alist where each element has the format (AREA ID PLIST).
diff --git a/leim/quail/uni-input.el b/leim/quail/uni-input.el
index 9e2c04278d6..41c5dd785cd 100644
--- a/leim/quail/uni-input.el
+++ b/leim/quail/uni-input.el
@@ -73,8 +73,9 @@
73 (ucs-input-insert-char key)) 73 (ucs-input-insert-char key))
74 (let ((last-command-char key) 74 (let ((last-command-char key)
75 (current-prefix-arg)) 75 (current-prefix-arg))
76 (condition-case nil 76 (condition-case err
77 (call-interactively (key-binding seq)))) 77 (call-interactively (key-binding seq))
78 (quail-error (message "%s" (cdr err)) (beep))))
78 (quail-delete-region) 79 (quail-delete-region)
79 (throw 'non-digit (append (reverse events) 80 (throw 'non-digit (append (reverse events)
80 (listify-key-sequence seq)))))) 81 (listify-key-sequence seq))))))
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8263604548b..a77f2206e58 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,93 @@
12004-09-25 Lars Hansen <larsh@math.ku.dk>
2
3 * ls-lisp.el (ls-lisp-format): Mark file names with poperty
4 dired-filename.
5
62004-09-25 Kim F. Storm <storm@cua.dk>
7
8 * ido.el (ido-max-directory-size): New defcustom.
9 (ido-decorations): Add "too big" element.
10 (ido-directory-too-big): New dynamic var.
11 (ido-may-cache-directory): Don't cache big directories.
12 (ido-directory-too-big-p): New defun.
13 (ido-set-current-directory): Update ido-directory-too-big.
14 (ido-read-internal): Make empty ido-cur-item if too-big.
15 (ido-buffer-internal): Use ido-read-internal directly instead of
16 ido-read-buffer.
17 (ido-file-internal): Init ido-directory-too-big.
18 (ido-complete): <TAB> If ido-directory-too-big is set, clear it,
19 and redo completion with full list.
20 (ido-toggle-ignore): <C-a> If ido-directory-too-big is set, clear
21 it, and show completions.
22 (ido-all-completions): Let bind ido-directory-too-big to nil.
23 (ido-exhibit): Handle ido-directory-too-big.
24 (ido-read-buffer): Handle fallback to read-buffer. Init
25 ido-directory-too-big.
26 (ido-read-file-name, ido-read-directory-name, ido-completing-read):
27 Init ido-directory-too-big.
28
292004-09-24 Luc Teirlinck <teirllm@auburn.edu>
30
31 * subr.el (delay-mode-hooks): Doc fix.
32
332004-09-23 Luc Teirlinck <teirllm@auburn.edu>
34
35 * textmodes/enriched.el
36 (enriched-default-text-properties-local-flag): New variable.
37 (enriched-mode): Make sure that enabling and disabling the mode is
38 a no-op. Doc fix.
39
402004-09-23 H,Ae(Bkon Malmedal <hmalmedal@yahoo.no> (tiny change)
41
42 * calendar/holidays.el (holiday-advent): Report on a specified day
43 offset from advent, not just advent.
44 (holiday-easter-etc): Report on one specified day offset from
45 easter, not all easter holidays. Various Easter holidays moved to
46 `christian-holidays' variable in calendar.el.
47 * calendar/calendar.el (christian-holidays): Adapt for new
48 behaviour of `holiday-advent' and `holiday-easter-etc' functions.
49
502004-09-23 Kim F. Storm <storm@cua.dk>
51
52 * image.el (insert-sliced-image): Add doc string.
53
54 * ido.el (ido-choice-list): New dynamic var for `list' context.
55 (ido-context-switch-command): New dynamic var.
56 (ido-define-mode-map): Generalize switch between file/buffer contexts.
57 (ido-read-internal): Handle new `list' context.
58 Handle insert-buffer and insert-file ido-exit values.
59 (ido-buffer-internal): New arg switch-cmd. Use it to setup
60 ido-context-switch-command. Handle insert-file ido-exit value.
61 (ido-read-buffer): Set ido-context-switch-command to 'ignore
62 unless it is already bound by caller.
63 (ido-file-internal): New arg switch-cmd. Use it to setup
64 ido-context-switch-command. Handle insert-buffer ido-exit value.
65 (ido-enter-insert-buffer, ido-enter-insert-file): New commands
66 used for context switching.
67 (ido-all-completions): Handle new `list' context.
68 (ido-make-choice-list): Return choices for `list' context.
69 (ido-find-file-in-dir, ido-display-file, ido-write-file)
70 (ido-display-buffer, ido-kill-buffer): Disable context switching.
71 (ido-insert-buffer, ido-insert-file): Setup context switching.
72 (ido-exhibit): Handle `list' context.
73 (ido-read-file-name): Disable context switching. Handle fallback.
74 (ido-read-directory-name): Disable context switching.
75 (ido-completing-read): New defun like completing-read. Setup and
76 use new `list' context.
77
782004-09-20 Jesper Harder <harder@ifa.au.dk>
79
80 * progmodes/tcl.el (inferior-tcl): Use pop-to-buffer.
81
822004-09-21 Luc Teirlinck <teirllm@auburn.edu>
83
84 * subr.el (after-change-major-mode-hook): Doc fix.
85
862004-09-21 Vinicius Jose Latorre <viniciusjl@ig.com.br>
87
88 * printing.el: Doc fix. Add a new tip about the use of gsprint instead
89 of ghostscript for monochrome PostScript file in Windows.
90
12004-09-21 Kenichi Handa <handa@m17n.org> 912004-09-21 Kenichi Handa <handa@m17n.org>
2 92
3 * descr-text.el (describe-char): Checking of quail activation 93 * descr-text.el (describe-char): Checking of quail activation
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index df7bbe377ab..70d044c202e 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -210,13 +210,13 @@
210 "title \"" (symbol-name (nth 1 ydata)) "\" " 210 "title \"" (symbol-name (nth 1 ydata)) "\" "
211 "with dots") 211 "with dots")
212 (setq pstyle (and (eq (car-safe pstyle) 'vec) (nth (1+ num) pstyle))) 212 (setq pstyle (and (eq (car-safe pstyle) 'vec) (nth (1+ num) pstyle)))
213 (setq lstyle (and (eq (car-safe lstyle) 'vec) (nth (1+ num) lstyle))) 213 (setq lstyle (and (eq (car-safe lstyle) 'vec) (nth (1+ num) lstyle))))
214 (calc-graph-set-styles 214 (calc-graph-set-styles
215 (or (and (Math-num-integerp lstyle) (math-trunc lstyle)) 215 (or (and (Math-num-integerp lstyle) (math-trunc lstyle))
216 0) 216 0)
217 (or (and (Math-num-integerp pstyle) (math-trunc pstyle)) 217 (or (and (Math-num-integerp pstyle) (math-trunc pstyle))
218 (if (eq (car-safe (calc-var-value (nth 2 ydata))) 'vec) 218 (if (eq (car-safe (calc-var-value (nth 2 ydata))) 'vec)
219 0 -1)))))) 219 0 -1)))))
220 220
221(defun calc-graph-lookup (thing) 221(defun calc-graph-lookup (thing)
222 (if (and (eq (car-safe thing) 'var) 222 (if (and (eq (car-safe thing) 'var)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 43171255bbe..9d38cde21ce 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -4,6 +4,7 @@
4;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc. 4;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
7;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
7;; Keywords: calendar 8;; Keywords: calendar
8;; Human-Keywords: calendar, Gregorian calendar, diary, holidays 9;; Human-Keywords: calendar, Gregorian calendar, diary, holidays
9 10
@@ -1046,13 +1047,43 @@ See the documentation for `calendar-holidays' for details."
1046(defcustom christian-holidays 1047(defcustom christian-holidays
1047 '((if all-christian-calendar-holidays 1048 '((if all-christian-calendar-holidays
1048 (holiday-fixed 1 6 "Epiphany")) 1049 (holiday-fixed 1 6 "Epiphany"))
1049 (holiday-easter-etc) 1050 (holiday-easter-etc 0 "Easter Sunday")
1051 (holiday-easter-etc -2 "Good Friday")
1052 (holiday-easter-etc -46 "Ash Wednesday")
1053 (if all-christian-calendar-holidays
1054 (holiday-easter-etc -63 "Septuagesima Sunday"))
1055 (if all-christian-calendar-holidays
1056 (holiday-easter-etc -56 "Sexagesima Sunday"))
1057 (if all-christian-calendar-holidays
1058 (holiday-easter-etc -49 "Shrove Sunday"))
1059 (if all-christian-calendar-holidays
1060 (holiday-easter-etc -48 "Shrove Monday"))
1061 (if all-christian-calendar-holidays
1062 (holiday-easter-etc -47 "Shrove Tuesday"))
1063 (if all-christian-calendar-holidays
1064 (holiday-easter-etc -14 "Passion Sunday"))
1065 (if all-christian-calendar-holidays
1066 (holiday-easter-etc -7 "Palm Sunday"))
1067 (if all-christian-calendar-holidays
1068 (holiday-easter-etc -3 "Maundy Thursday"))
1069 (if all-christian-calendar-holidays
1070 (holiday-easter-etc 35 "Rogation Sunday"))
1071 (if all-christian-calendar-holidays
1072 (holiday-easter-etc 39 "Ascension Day"))
1073 (if all-christian-calendar-holidays
1074 (holiday-easter-etc 49 "Pentecost (Whitsunday)"))
1075 (if all-christian-calendar-holidays
1076 (holiday-easter-etc 50 "Whitmonday"))
1077 (if all-christian-calendar-holidays
1078 (holiday-easter-etc 56 "Trinity Sunday"))
1079 (if all-christian-calendar-holidays
1080 (holiday-easter-etc 60 "Corpus Christi"))
1050 (if all-christian-calendar-holidays 1081 (if all-christian-calendar-holidays
1051 (holiday-greek-orthodox-easter)) 1082 (holiday-greek-orthodox-easter))
1052 (if all-christian-calendar-holidays 1083 (if all-christian-calendar-holidays
1053 (holiday-fixed 8 15 "Assumption")) 1084 (holiday-fixed 8 15 "Assumption"))
1054 (if all-christian-calendar-holidays 1085 (if all-christian-calendar-holidays
1055 (holiday-advent)) 1086 (holiday-advent 0 "Advent"))
1056 (holiday-fixed 12 25 "Christmas") 1087 (holiday-fixed 12 25 "Christmas")
1057 (if all-christian-calendar-holidays 1088 (if all-christian-calendar-holidays
1058 (holiday-julian 12 25 "Eastern Orthodox Christmas"))) 1089 (holiday-julian 12 25 "Eastern Orthodox Christmas")))
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 71f73f24b75..a1adc080b2f 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -1,8 +1,10 @@
1;;; holidays.el --- holiday functions for the calendar package 1;;; holidays.el --- holiday functions for the calendar package
2 2
3;; Copyright (C) 1989, 90, 92, 93, 94, 1997 Free Software Foundation, Inc. 3;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1997, 2004 Free
4;; Software Foundation, Inc.
4 5
5;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
7;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
6;; Keywords: holidays, calendar 8;; Keywords: holidays, calendar
7 9
8;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
@@ -398,86 +400,46 @@ date. If date is nil, or if the date is not visible, there is no holiday."
398 (string (if date (eval string)))) 400 (string (if date (eval string))))
399 (list (list date string))))))) 401 (list (list date string)))))))
400 402
401(defun holiday-advent () 403(defun holiday-advent (n string)
402 "Date of Advent, if visible in calendar window." 404 "Date of Nth day after advent (named STRING), if visible in calendar window."
403 (let ((year displayed-year) 405 (let ((year displayed-year)
404 (month displayed-month)) 406 (month displayed-month))
405 (increment-calendar-month month year -1) 407 (increment-calendar-month month year -1)
406 (let ((advent (calendar-gregorian-from-absolute 408 (let ((advent (calendar-gregorian-from-absolute
407 (calendar-dayname-on-or-before 0 409 (+ n
408 (calendar-absolute-from-gregorian 410 (calendar-dayname-on-or-before
409 (list 12 3 year)))))) 411 0
412 (calendar-absolute-from-gregorian
413 (list 12 3 year)))))))
410 (if (calendar-date-is-visible-p advent) 414 (if (calendar-date-is-visible-p advent)
411 (list (list advent "Advent")))))) 415 (list (list advent string))))))
412 416
413(defun holiday-easter-etc () 417(defun holiday-easter-etc (n string)
414 "List of dates related to Easter, as visible in calendar window." 418 "Date of Nth day after Easter (named STRING), if visible in calendar window."
415 (if (and (> displayed-month 5) (not all-christian-calendar-holidays)) 419 (let* ((century (1+ (/ displayed-year 100)))
416 nil;; Ash Wednesday, Good Friday, and Easter are not visible. 420 (shifted-epact ;; Age of moon for April 5...
417 (let* ((century (1+ (/ displayed-year 100))) 421 (% (+ 14 (* 11 (% displayed-year 19));; ...by Nicaean rule
418 (shifted-epact ;; Age of moon for April 5... 422 (- ;; ...corrected for the Gregorian century rule
419 (% (+ 14 (* 11 (% displayed-year 19));; ...by Nicaean rule 423 (/ (* 3 century) 4))
420 (- ;; ...corrected for the Gregorian century rule 424 (/ ;; ...corrected for Metonic cycle inaccuracy.
421 (/ (* 3 century) 4)) 425 (+ 5 (* 8 century)) 25)
422 (/ ;; ...corrected for Metonic cycle inaccuracy. 426 (* 30 century));; Keeps value positive.
423 (+ 5 (* 8 century)) 25) 427 30))
424 (* 30 century));; Keeps value positive. 428 (adjusted-epact ;; Adjust for 29.5 day month.
425 30)) 429 (if (or (= shifted-epact 0)
426 (adjusted-epact ;; Adjust for 29.5 day month. 430 (and (= shifted-epact 1) (< 10 (% displayed-year 19))))
427 (if (or (= shifted-epact 0) 431 (1+ shifted-epact)
428 (and (= shifted-epact 1) (< 10 (% displayed-year 19)))) 432 shifted-epact))
429 (1+ shifted-epact) 433 (paschal-moon ;; Day after the full moon on or after March 21.
430 shifted-epact)) 434 (- (calendar-absolute-from-gregorian (list 4 19 displayed-year))
431 (paschal-moon ;; Day after the full moon on or after March 21. 435 adjusted-epact))
432 (- (calendar-absolute-from-gregorian (list 4 19 displayed-year)) 436 (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7)))
433 adjusted-epact)) 437 (mandatory
434 (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7)))
435 (mandatory
436 (list 438 (list
437 (list (calendar-gregorian-from-absolute abs-easter) 439 (list (calendar-gregorian-from-absolute (+ abs-easter n))
438 "Easter Sunday") 440 string)))
439 (list (calendar-gregorian-from-absolute (- abs-easter 2)) 441 (output-list (filter-visible-calendar-holidays mandatory)))
440 "Good Friday") 442 output-list))
441 (list (calendar-gregorian-from-absolute (- abs-easter 46))
442 "Ash Wednesday")))
443 (optional
444 (list
445 (list (calendar-gregorian-from-absolute (- abs-easter 63))
446 "Septuagesima Sunday")
447 (list (calendar-gregorian-from-absolute (- abs-easter 56))
448 "Sexagesima Sunday")
449 (list (calendar-gregorian-from-absolute (- abs-easter 49))
450 "Shrove Sunday")
451 (list (calendar-gregorian-from-absolute (- abs-easter 48))
452 "Shrove Monday")
453 (list (calendar-gregorian-from-absolute (- abs-easter 47))
454 "Shrove Tuesday")
455 (list (calendar-gregorian-from-absolute (- abs-easter 14))
456 "Passion Sunday")
457 (list (calendar-gregorian-from-absolute (- abs-easter 7))
458 "Palm Sunday")
459 (list (calendar-gregorian-from-absolute (- abs-easter 3))
460 "Maundy Thursday")
461 (list (calendar-gregorian-from-absolute (+ abs-easter 35))
462 "Rogation Sunday")
463 (list (calendar-gregorian-from-absolute (+ abs-easter 39))
464 "Ascension Day")
465 (list (calendar-gregorian-from-absolute (+ abs-easter 49))
466 "Pentecost (Whitsunday)")
467 (list (calendar-gregorian-from-absolute (+ abs-easter 50))
468 "Whitmonday")
469 (list (calendar-gregorian-from-absolute (+ abs-easter 56))
470 "Trinity Sunday")
471 (list (calendar-gregorian-from-absolute (+ abs-easter 60))
472 "Corpus Christi")))
473 (output-list
474 (filter-visible-calendar-holidays mandatory)))
475 (if all-christian-calendar-holidays
476 (setq output-list
477 (append
478 (filter-visible-calendar-holidays optional)
479 output-list)))
480 output-list)))
481 443
482(defun holiday-greek-orthodox-easter () 444(defun holiday-greek-orthodox-easter ()
483 "Date of Easter according to the rule of the Council of Nicaea." 445 "Date of Easter according to the rule of the Council of Nicaea."
diff --git a/lisp/ido.el b/lisp/ido.el
index b82338ef85d..f9066544e1f 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -666,6 +666,14 @@ See also `ido-dir-file-cache' and `ido-save-directory-list-file'."
666 :type 'integer 666 :type 'integer
667 :group 'ido) 667 :group 'ido)
668 668
669(defcustom ido-max-directory-size 30000
670 "*Maximum size (in bytes) for directories to use ido completion.
671If you enter a directory with a size larger than this size, ido will
672not provide the normal completion. To show the completions, use C-a."
673 :type '(choice (const :tag "No limit" nil)
674 (integer :tag "Size in bytes" 30000))
675 :group 'ido)
676
669(defcustom ido-rotate-file-list-default nil 677(defcustom ido-rotate-file-list-default nil
670 "*Non-nil means that `ido' will always rotate file list to get default in front." 678 "*Non-nil means that `ido' will always rotate file list to get default in front."
671 :type 'boolean 679 :type 'boolean
@@ -699,9 +707,9 @@ Obsolete. Set 3rd element of `ido-decorations' instead."
699 :type '(choice string (const nil)) 707 :type '(choice string (const nil))
700 :group 'ido) 708 :group 'ido)
701 709
702(defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]") 710(defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]")
703 "*List of strings used by ido to display the alternatives in the minibuffer. 711 "*List of strings used by ido to display the alternatives in the minibuffer.
704There are 9 elements in this list: 712There are 10 elements in this list:
7051st and 2nd elements are used as brackets around the prospect list, 7131st and 2nd elements are used as brackets around the prospect list,
7063rd element is the separator between prospects (ignored if ido-separator is set), 7143rd element is the separator between prospects (ignored if ido-separator is set),
7074th element is the string inserted at the end of a truncated list of prospects, 7154th element is the string inserted at the end of a truncated list of prospects,
@@ -709,7 +717,8 @@ There are 9 elements in this list:
709can be completed using TAB, 717can be completed using TAB,
7107th element is the string displayed when there are a no matches, and 7187th element is the string displayed when there are a no matches, and
7118th element is displayed if there is a single match (and faces are not used). 7198th element is displayed if there is a single match (and faces are not used).
7129th element is displayed when the current directory is non-readable." 7209th element is displayed when the current directory is non-readable.
72110th element is displayed when directory exceeds `ido-max-directory-size'."
713 :type '(repeat string) 722 :type '(repeat string)
714 :group 'ido) 723 :group 'ido)
715 724
@@ -933,7 +942,7 @@ it doesn't interfere with other minibuffer usage.")
933;;; Variables with dynamic bindings. 942;;; Variables with dynamic bindings.
934;;; Declared here to keep the byte compiler quiet. 943;;; Declared here to keep the byte compiler quiet.
935 944
936;; Stores the current ido item type ('file, 'dir or 'buffer). 945;; Stores the current ido item type ('file, 'dir, 'buffer, or 'list).
937(defvar ido-cur-item) 946(defvar ido-cur-item)
938 947
939;; Stores the current list of items that will be searched through. 948;; Stores the current list of items that will be searched through.
@@ -942,6 +951,9 @@ it doesn't interfere with other minibuffer usage.")
942;; at the end of the list. Created by `ido-make-item-list'. 951;; at the end of the list. Created by `ido-make-item-list'.
943(defvar ido-cur-list) 952(defvar ido-cur-list)
944 953
954;; Stores the choice list for ido-completing-read
955(defvar ido-choice-list)
956
945;; Stores the list of items which are ignored when building 957;; Stores the list of items which are ignored when building
946;; `ido-cur-list'. It is in no specific order. 958;; `ido-cur-list'. It is in no specific order.
947(defvar ido-ignored-list) 959(defvar ido-ignored-list)
@@ -949,6 +961,9 @@ it doesn't interfere with other minibuffer usage.")
949;; Remember if current directory is non-readable (so we cannot do completion). 961;; Remember if current directory is non-readable (so we cannot do completion).
950(defvar ido-directory-nonreadable) 962(defvar ido-directory-nonreadable)
951 963
964;; Remember if current directory is 'huge' (so we don't want to do completion).
965(defvar ido-directory-too-big)
966
952;; Keep current item list if non-nil. 967;; Keep current item list if non-nil.
953(defvar ido-keep-item-list) 968(defvar ido-keep-item-list)
954 969
@@ -992,6 +1007,8 @@ it doesn't interfere with other minibuffer usage.")
992;; Stores temporary state of literal find file. 1007;; Stores temporary state of literal find file.
993(defvar ido-find-literal) 1008(defvar ido-find-literal)
994 1009
1010;; Set to 'ignore to inhibit switching between find-file/switch-buffer.
1011(defvar ido-context-switch-command)
995 1012
996;;; FUNCTIONS 1013;;; FUNCTIONS
997 1014
@@ -1077,6 +1094,8 @@ it doesn't interfere with other minibuffer usage.")
1077(defun ido-may-cache-directory (&optional dir) 1094(defun ido-may-cache-directory (&optional dir)
1078 (setq dir (or dir ido-current-directory)) 1095 (setq dir (or dir ido-current-directory))
1079 (cond 1096 (cond
1097 ((ido-directory-too-big-p dir)
1098 nil)
1080 ((and (ido-is-root-directory dir) 1099 ((and (ido-is-root-directory dir)
1081 (or ido-enable-tramp-completion 1100 (or ido-enable-tramp-completion
1082 (memq system-type '(windows-nt ms-dos)))) 1101 (memq system-type '(windows-nt ms-dos))))
@@ -1346,8 +1365,8 @@ This function also adds a hook to the minibuffer."
1346 (define-key map "?" 'ido-completion-help) 1365 (define-key map "?" 'ido-completion-help)
1347 1366
1348 (when (memq ido-cur-item '(file dir)) 1367 (when (memq ido-cur-item '(file dir))
1349 (define-key map "\C-b" 'ido-enter-switch-buffer) 1368 (define-key map "\C-b" (or ido-context-switch-command 'ido-enter-switch-buffer))
1350 (define-key map "\C-d" 'ido-enter-dired) 1369 (define-key map "\C-d" (or (and ido-context-switch-command 'ignore) 'ido-enter-dired))
1351 (define-key map "\C-f" 'ido-fallback-command) 1370 (define-key map "\C-f" 'ido-fallback-command)
1352 (define-key map [down] 'ido-next-match-dir) 1371 (define-key map [down] 'ido-next-match-dir)
1353 (define-key map [up] 'ido-prev-match-dir) 1372 (define-key map [up] 'ido-prev-match-dir)
@@ -1378,8 +1397,8 @@ This function also adds a hook to the minibuffer."
1378 ) 1397 )
1379 1398
1380 (when (eq ido-cur-item 'buffer) 1399 (when (eq ido-cur-item 'buffer)
1400 (define-key map "\C-f" (or ido-context-switch-command 'ido-enter-find-file))
1381 (define-key map "\C-b" 'ido-fallback-command) 1401 (define-key map "\C-b" 'ido-fallback-command)
1382 (define-key map "\C-f" 'ido-enter-find-file)
1383 (define-key map "\C-k" 'ido-kill-buffer-at-head) 1402 (define-key map "\C-k" 'ido-kill-buffer-at-head)
1384 ) 1403 )
1385 1404
@@ -1420,6 +1439,16 @@ This function also adds a hook to the minibuffer."
1420 (file-directory-p dir) 1439 (file-directory-p dir)
1421 (not (file-readable-p dir))))) 1440 (not (file-readable-p dir)))))
1422 1441
1442(defun ido-directory-too-big-p (dir)
1443 ;; Return t if dir is a directory, but too big to show
1444 ;; Do not check for non-readable directories via tramp, as this causes a premature
1445 ;; connect on incomplete tramp paths (after entring just method:).
1446 (let ((ido-enable-tramp-completion nil))
1447 (and (numberp ido-max-directory-size)
1448 (ido-final-slash dir)
1449 (file-directory-p dir)
1450 (> (nth 7 (file-attributes dir)) ido-max-directory-size))))
1451
1423(defun ido-set-current-directory (dir &optional subdir no-merge) 1452(defun ido-set-current-directory (dir &optional subdir no-merge)
1424 ;; Set ido's current directory to DIR or DIR/SUBDIR 1453 ;; Set ido's current directory to DIR or DIR/SUBDIR
1425 (setq dir (ido-final-slash dir t)) 1454 (setq dir (ido-final-slash dir t))
@@ -1434,6 +1463,8 @@ This function also adds a hook to the minibuffer."
1434 (if (get-buffer ido-completion-buffer) 1463 (if (get-buffer ido-completion-buffer)
1435 (kill-buffer ido-completion-buffer)) 1464 (kill-buffer ido-completion-buffer))
1436 (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir)) 1465 (setq ido-directory-nonreadable (ido-nonreadable-directory-p dir))
1466 (setq ido-directory-too-big (and (not ido-directory-nonreadable)
1467 (ido-directory-too-big-p dir)))
1437 t)) 1468 t))
1438 1469
1439(defun ido-set-current-home (&optional dir) 1470(defun ido-set-current-home (&optional dir)
@@ -1618,13 +1649,20 @@ If INITIAL is non-nil, it specifies the initial input string."
1618 ido-rescan nil)) 1649 ido-rescan nil))
1619 ((eq ido-cur-item 'file) 1650 ((eq ido-cur-item 'file)
1620 (setq ido-ignored-list nil 1651 (setq ido-ignored-list nil
1621 ido-cur-list (ido-make-file-list ido-default-item))) 1652 ido-cur-list (and (not ido-directory-nonreadable)
1653 (not ido-directory-too-big)
1654 (ido-make-file-list ido-default-item))))
1622 ((eq ido-cur-item 'dir) 1655 ((eq ido-cur-item 'dir)
1623 (setq ido-ignored-list nil 1656 (setq ido-ignored-list nil
1624 ido-cur-list (ido-make-dir-list ido-default-item))) 1657 ido-cur-list (and (not ido-directory-nonreadable)
1658 (not ido-directory-too-big)
1659 (ido-make-dir-list ido-default-item))))
1625 ((eq ido-cur-item 'buffer) 1660 ((eq ido-cur-item 'buffer)
1626 (setq ido-ignored-list nil 1661 (setq ido-ignored-list nil
1627 ido-cur-list (ido-make-buffer-list ido-default-item))) 1662 ido-cur-list (ido-make-buffer-list ido-default-item)))
1663 ((eq ido-cur-item 'list)
1664 (setq ido-ignored-list nil
1665 ido-cur-list (ido-make-choice-list ido-default-item)))
1628 (t nil)) 1666 (t nil))
1629 (setq ido-rotate-temp nil) 1667 (setq ido-rotate-temp nil)
1630 1668
@@ -1709,7 +1747,7 @@ If INITIAL is non-nil, it specifies the initial input string."
1709 ((eq ido-exit 'keep) 1747 ((eq ido-exit 'keep)
1710 (setq ido-keep-item-list t)) 1748 (setq ido-keep-item-list t))
1711 1749
1712 ((memq ido-exit '(dired fallback findfile findbuffer)) 1750 ((memq ido-exit '(dired fallback find-file switch-to-buffer insert-buffer insert-file))
1713 (setq done t)) 1751 (setq done t))
1714 1752
1715 ((eq ido-exit 'updir) 1753 ((eq ido-exit 'updir)
@@ -1789,19 +1827,26 @@ If INITIAL is non-nil, it specifies the initial input string."
1789 (exit-minibuffer)) 1827 (exit-minibuffer))
1790 1828
1791;;; MAIN FUNCTIONS 1829;;; MAIN FUNCTIONS
1792(defun ido-buffer-internal (method &optional fallback prompt default initial) 1830(defun ido-buffer-internal (method &optional fallback prompt default initial switch-cmd)
1793 ;; Internal function for ido-switch-buffer and friends 1831 ;; Internal function for ido-switch-buffer and friends
1794 (if (not ido-mode) 1832 (if (not ido-mode)
1795 (call-interactively (or fallback 'switch-to-buffer)) 1833 (call-interactively (or fallback 'switch-to-buffer))
1796 (let ((buf (ido-read-buffer (or prompt "Buffer: ") default nil initial))) 1834 (let* ((ido-context-switch-command switch-cmd)
1835 (ido-current-directory nil)
1836 (ido-directory-nonreadable nil)
1837 (ido-directory-too-big nil)
1838 (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default nil initial)))
1797 1839
1798 ;; Choose the buffer name: either the text typed in, or the head 1840 ;; Choose the buffer name: either the text typed in, or the head
1799 ;; of the list of matches 1841 ;; of the list of matches
1800 1842
1801 (cond 1843 (cond
1802 ((eq ido-exit 'findfile) 1844 ((eq ido-exit 'find-file)
1803 (ido-file-internal ido-default-file-method nil nil nil nil ido-text)) 1845 (ido-file-internal ido-default-file-method nil nil nil nil ido-text))
1804 1846
1847 ((eq ido-exit 'insert-file)
1848 (ido-file-internal 'insert 'insert-file nil "Insert file: " nil ido-text 'ido-enter-insert-buffer))
1849
1805 ((eq ido-exit 'fallback) 1850 ((eq ido-exit 'fallback)
1806 (let ((read-buffer-function nil)) 1851 (let ((read-buffer-function nil))
1807 (call-interactively (or fallback 'switch-to-buffer)))) 1852 (call-interactively (or fallback 'switch-to-buffer))))
@@ -1833,18 +1878,6 @@ If INITIAL is non-nil, it specifies the initial input string."
1833 (set-buffer-major-mode buf)) 1878 (set-buffer-major-mode buf))
1834 (ido-visit-buffer buf method t)))))) 1879 (ido-visit-buffer buf method t))))))
1835 1880
1836;;;###autoload
1837(defun ido-read-buffer (prompt &optional default require-match initial)
1838 "Replacement for the built-in `read-buffer'.
1839Return the name of a buffer selected.
1840PROMPT is the prompt to give to the user. DEFAULT if given is the default
1841buffer to be selected, which will go to the front of the list.
1842If REQUIRE-MATCH is non-nil, an existing-buffer must be selected.
1843If INITIAL is non-nil, it specifies the initial input string."
1844 (let ((ido-current-directory nil)
1845 (ido-directory-nonreadable nil))
1846 (ido-read-internal 'buffer prompt 'ido-buffer-history default require-match initial)))
1847
1848(defun ido-record-work-directory (&optional dir) 1881(defun ido-record-work-directory (&optional dir)
1849 (when (and (numberp ido-max-work-directory-list) (> ido-max-work-directory-list 0)) 1882 (when (and (numberp ido-max-work-directory-list) (> ido-max-work-directory-list 0))
1850 (if (and (setq dir (or dir ido-current-directory)) (> (length dir) 0)) 1883 (if (and (setq dir (or dir ido-current-directory)) (> (length dir) 0))
@@ -1886,12 +1919,15 @@ If INITIAL is non-nil, it specifies the initial input string."
1886 ;; Add final slash to result in case it was missing from DEFAULT-DIRECTORY. 1919 ;; Add final slash to result in case it was missing from DEFAULT-DIRECTORY.
1887 (ido-final-slash (expand-file-name (or dir default-directory)) t)) 1920 (ido-final-slash (expand-file-name (or dir default-directory)) t))
1888 1921
1889(defun ido-file-internal (method &optional fallback default prompt item initial) 1922(defun ido-file-internal (method &optional fallback default prompt item initial switch-cmd)
1890 ;; Internal function for ido-find-file and friends 1923 ;; Internal function for ido-find-file and friends
1891 (unless item 1924 (unless item
1892 (setq item 'file)) 1925 (setq item 'file))
1893 (let* ((ido-current-directory (ido-expand-directory default)) 1926 (let* ((ido-current-directory (ido-expand-directory default))
1894 (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory)) 1927 (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory))
1928 (ido-directory-too-big (and (not ido-directory-nonreadable)
1929 (ido-directory-too-big-p ido-current-directory)))
1930 (ido-context-switch-command switch-cmd)
1895 filename) 1931 filename)
1896 1932
1897 (cond 1933 (cond
@@ -1943,9 +1979,12 @@ If INITIAL is non-nil, it specifies the initial input string."
1943 (read-file-name-function nil)) 1979 (read-file-name-function nil))
1944 (call-interactively (or fallback 'find-file)))) 1980 (call-interactively (or fallback 'find-file))))
1945 1981
1946 ((eq ido-exit 'findbuffer) 1982 ((eq ido-exit 'switch-to-buffer)
1947 (ido-buffer-internal ido-default-buffer-method nil nil nil ido-text)) 1983 (ido-buffer-internal ido-default-buffer-method nil nil nil ido-text))
1948 1984
1985 ((eq ido-exit 'insert-buffer)
1986 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file))
1987
1949 ((eq ido-exit 'dired) 1988 ((eq ido-exit 'dired)
1950 (dired (concat ido-current-directory (or ido-text "")))) 1989 (dired (concat ido-current-directory (or ido-text ""))))
1951 1990
@@ -2062,6 +2101,12 @@ If INITIAL is non-nil, it specifies the initial input string."
2062 (setq ido-exit 'refresh) 2101 (setq ido-exit 'refresh)
2063 (exit-minibuffer)))) 2102 (exit-minibuffer))))
2064 2103
2104 (ido-directory-too-big
2105 (setq ido-directory-too-big nil)
2106 (setq ido-text-init ido-text)
2107 (setq ido-exit 'refresh)
2108 (exit-minibuffer))
2109
2065 ((not ido-matches) 2110 ((not ido-matches)
2066 (when ido-completion-buffer 2111 (when ido-completion-buffer
2067 (call-interactively (setq this-command ido-cannot-complete-command)))) 2112 (call-interactively (setq this-command ido-cannot-complete-command))))
@@ -2165,7 +2210,9 @@ If no merge has yet taken place, toggle automatic merging option."
2165(defun ido-toggle-ignore () 2210(defun ido-toggle-ignore ()
2166 "Toggle ignoring files specified with `ido-ignore-files'." 2211 "Toggle ignoring files specified with `ido-ignore-files'."
2167 (interactive) 2212 (interactive)
2168 (setq ido-process-ignore-lists (not ido-process-ignore-lists)) 2213 (if ido-directory-too-big
2214 (setq ido-directory-too-big nil)
2215 (setq ido-process-ignore-lists (not ido-process-ignore-lists)))
2169 (setq ido-text-init ido-text) 2216 (setq ido-text-init ido-text)
2170 (setq ido-exit 'refresh) 2217 (setq ido-exit 'refresh)
2171 (exit-minibuffer)) 2218 (exit-minibuffer))
@@ -2227,13 +2274,13 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
2227(defun ido-enter-find-file () 2274(defun ido-enter-find-file ()
2228 "Drop into find-file from buffer switching." 2275 "Drop into find-file from buffer switching."
2229 (interactive) 2276 (interactive)
2230 (setq ido-exit 'findfile) 2277 (setq ido-exit 'find-file)
2231 (exit-minibuffer)) 2278 (exit-minibuffer))
2232 2279
2233(defun ido-enter-switch-buffer () 2280(defun ido-enter-switch-buffer ()
2234 "Drop into ido-switch-buffer from file switching." 2281 "Drop into ido-switch-buffer from file switching."
2235 (interactive) 2282 (interactive)
2236 (setq ido-exit 'findbuffer) 2283 (setq ido-exit 'switch-to-buffer)
2237 (exit-minibuffer)) 2284 (exit-minibuffer))
2238 2285
2239(defun ido-enter-dired () 2286(defun ido-enter-dired ()
@@ -2242,6 +2289,18 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
2242 (setq ido-exit 'dired) 2289 (setq ido-exit 'dired)
2243 (exit-minibuffer)) 2290 (exit-minibuffer))
2244 2291
2292(defun ido-enter-insert-buffer ()
2293 "Drop into insert buffer from insert file."
2294 (interactive)
2295 (setq ido-exit 'insert-buffer)
2296 (exit-minibuffer))
2297
2298(defun ido-enter-insert-file ()
2299 "Drop into insert file from insert buffer."
2300 (interactive)
2301 (setq ido-exit 'insert-file)
2302 (exit-minibuffer))
2303
2245 2304
2246(defun ido-up-directory (&optional clear) 2305(defun ido-up-directory (&optional clear)
2247 "Go up one directory level." 2306 "Go up one directory level."
@@ -2295,6 +2354,7 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
2295 (not (equal dir ido-current-directory)) 2354 (not (equal dir ido-current-directory))
2296 (file-directory-p dir) 2355 (file-directory-p dir)
2297 (or (not must-match) 2356 (or (not must-match)
2357 ;; TODO. check for nonreadable and too-big.
2298 (ido-set-matches1 2358 (ido-set-matches1
2299 (if (eq ido-cur-item 'file) 2359 (if (eq ido-cur-item 'file)
2300 (ido-make-file-list1 dir) 2360 (ido-make-file-list1 dir)
@@ -2552,7 +2612,8 @@ for first matching file."
2552 2612
2553(defun ido-all-completions () 2613(defun ido-all-completions ()
2554 ;; Return unsorted list of all competions. 2614 ;; Return unsorted list of all competions.
2555 (let ((ido-process-ignore-lists nil)) 2615 (let ((ido-process-ignore-lists nil)
2616 (ido-directory-too-big nil))
2556 (cond 2617 (cond
2557 ((eq ido-cur-item 'file) 2618 ((eq ido-cur-item 'file)
2558 (ido-make-file-list1 ido-current-directory)) 2619 (ido-make-file-list1 ido-current-directory))
@@ -2560,6 +2621,8 @@ for first matching file."
2560 (ido-make-dir-list1 ido-current-directory)) 2621 (ido-make-dir-list1 ido-current-directory))
2561 ((eq ido-cur-item 'buffer) 2622 ((eq ido-cur-item 'buffer)
2562 (ido-make-buffer-list1)) 2623 (ido-make-buffer-list1))
2624 ((eq ido-cur-item 'list)
2625 ido-choice-list)
2563 (t nil)))) 2626 (t nil))))
2564 2627
2565 2628
@@ -2669,6 +2732,7 @@ for first matching file."
2669 (or ido-merge-ftp-work-directories 2732 (or ido-merge-ftp-work-directories
2670 (not (ido-is-ftp-directory dir))) 2733 (not (ido-is-ftp-directory dir)))
2671 (file-directory-p dir) 2734 (file-directory-p dir)
2735 ;; TODO. check for nonreadable and too-big.
2672 (setq fl (if (eq ido-cur-item 'file) 2736 (setq fl (if (eq ido-cur-item 'file)
2673 (ido-make-file-list1 dir t) 2737 (ido-make-file-list1 dir t)
2674 (ido-make-dir-list1 dir t)))) 2738 (ido-make-dir-list1 dir t))))
@@ -2722,6 +2786,20 @@ for first matching file."
2722 (run-hooks 'ido-make-buffer-list-hook) 2786 (run-hooks 'ido-make-buffer-list-hook)
2723 ido-temp-list)) 2787 ido-temp-list))
2724 2788
2789(defun ido-make-choice-list (default)
2790 ;; Return the current list of choices.
2791 ;; If DEFAULT is non-nil, and corresponds to an element of choices,
2792 ;; it is put to the start of the list.
2793 (let ((ido-temp-list ido-choice-list))
2794 (if default
2795 (progn
2796 (setq ido-temp-list
2797 (delete default ido-temp-list))
2798 (setq ido-temp-list
2799 (cons default ido-temp-list))))
2800 ; (run-hooks 'ido-make-choice-list-hook)
2801 ido-temp-list))
2802
2725(defun ido-to-end (items) 2803(defun ido-to-end (items)
2726 ;; Move the elements from ITEMS to the end of `ido-temp-list' 2804 ;; Move the elements from ITEMS to the end of `ido-temp-list'
2727 (mapcar 2805 (mapcar
@@ -2735,6 +2813,8 @@ for first matching file."
2735(defun ido-file-name-all-completions1 (dir) 2813(defun ido-file-name-all-completions1 (dir)
2736 (cond 2814 (cond
2737 ((ido-nonreadable-directory-p dir) '()) 2815 ((ido-nonreadable-directory-p dir) '())
2816 ;; do not check (ido-directory-too-big-p dir) here.
2817 ;; Caller must have done that if necessary.
2738 ((and ido-enable-tramp-completion 2818 ((and ido-enable-tramp-completion
2739 (string-match "\\`/\\([^/:]+:\\([^/:@]+@\\)?\\)\\'" dir)) 2819 (string-match "\\`/\\([^/:]+:\\([^/:@]+@\\)?\\)\\'" dir))
2740 2820
@@ -3277,7 +3357,7 @@ For details of keybindings, do `\\[describe-function] ido'."
3277The buffer name is selected interactively by typing a substring. 3357The buffer name is selected interactively by typing a substring.
3278For details of keybindings, do `\\[describe-function] ido'." 3358For details of keybindings, do `\\[describe-function] ido'."
3279 (interactive) 3359 (interactive)
3280 (ido-buffer-internal 'display 'display-buffer)) 3360 (ido-buffer-internal 'display 'display-buffer nil nil nil 'ignore))
3281 3361
3282;;;###autoload 3362;;;###autoload
3283(defun ido-kill-buffer () 3363(defun ido-kill-buffer ()
@@ -3285,7 +3365,7 @@ For details of keybindings, do `\\[describe-function] ido'."
3285The buffer name is selected interactively by typing a substring. 3365The buffer name is selected interactively by typing a substring.
3286For details of keybindings, do `\\[describe-function] ido'." 3366For details of keybindings, do `\\[describe-function] ido'."
3287 (interactive) 3367 (interactive)
3288 (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)))) 3368 (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)) nil 'ignore))
3289 3369
3290;;;###autoload 3370;;;###autoload
3291(defun ido-insert-buffer () 3371(defun ido-insert-buffer ()
@@ -3293,7 +3373,7 @@ For details of keybindings, do `\\[describe-function] ido'."
3293The buffer name is selected interactively by typing a substring. 3373The buffer name is selected interactively by typing a substring.
3294For details of keybindings, do `\\[describe-function] ido'." 3374For details of keybindings, do `\\[describe-function] ido'."
3295 (interactive) 3375 (interactive)
3296 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: ")) 3376 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil nil 'ido-enter-insert-file))
3297 3377
3298;;;###autoload 3378;;;###autoload
3299(defun ido-switch-buffer-other-frame () 3379(defun ido-switch-buffer-other-frame ()
@@ -3311,7 +3391,7 @@ For details of keybindings, do `\\[describe-function] ido'."
3311 (interactive "DDir: ") 3391 (interactive "DDir: ")
3312 (if (not (equal (substring dir -1) "/")) 3392 (if (not (equal (substring dir -1) "/"))
3313 (setq dir (concat dir "/"))) 3393 (setq dir (concat dir "/")))
3314 (ido-file-internal ido-default-file-method nil dir)) 3394 (ido-file-internal ido-default-file-method nil dir nil nil nil 'ignore))
3315 3395
3316;;;###autoload 3396;;;###autoload
3317(defun ido-find-file () 3397(defun ido-find-file ()
@@ -3404,7 +3484,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3404The file name is selected interactively by typing a substring. 3484The file name is selected interactively by typing a substring.
3405For details of keybindings, do `\\[describe-function] ido-find-file'." 3485For details of keybindings, do `\\[describe-function] ido-find-file'."
3406 (interactive) 3486 (interactive)
3407 (ido-file-internal 'display)) 3487 (ido-file-internal 'display nil nil nil nil nil 'ignore))
3408 3488
3409;;;###autoload 3489;;;###autoload
3410(defun ido-find-file-other-frame () 3490(defun ido-find-file-other-frame ()
@@ -3426,7 +3506,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3426 (ido-report-no-match nil) 3506 (ido-report-no-match nil)
3427 (ido-confirm-unique-completion t) 3507 (ido-confirm-unique-completion t)
3428 (ido-auto-merge-work-directories-length -1)) 3508 (ido-auto-merge-work-directories-length -1))
3429 (ido-file-internal 'write 'write-file nil "Write file: "))) 3509 (ido-file-internal 'write 'write-file nil "Write file: " nil nil 'ignore)))
3430 3510
3431;;;###autoload 3511;;;###autoload
3432(defun ido-insert-file () 3512(defun ido-insert-file ()
@@ -3434,7 +3514,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3434The file name is selected interactively by typing a substring. 3514The file name is selected interactively by typing a substring.
3435For details of keybindings, do `\\[describe-function] ido-find-file'." 3515For details of keybindings, do `\\[describe-function] ido-find-file'."
3436 (interactive) 3516 (interactive)
3437 (ido-file-internal 'insert 'insert-file nil "Insert file: ")) 3517 (ido-file-internal 'insert 'insert-file nil "Insert file: " nil nil 'ido-enter-insert-buffer))
3438 3518
3439;;;###autoload 3519;;;###autoload
3440(defun ido-dired () 3520(defun ido-dired ()
@@ -3515,7 +3595,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3515 3595
3516 ;; Handle explicit directory changes 3596 ;; Handle explicit directory changes
3517 (cond 3597 (cond
3518 ((eq ido-cur-item 'buffer) 3598 ((memq ido-cur-item '(buffer list))
3519 ) 3599 )
3520 3600
3521 ((= (length contents) 0) 3601 ((= (length contents) 0)
@@ -3571,7 +3651,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3571 (expand-file-name "/" ido-current-directory) 3651 (expand-file-name "/" ido-current-directory)
3572 "/")) 3652 "/"))
3573 (setq refresh t)) 3653 (setq refresh t))
3574 ((and ido-directory-nonreadable 3654 ((and (or ido-directory-nonreadable ido-directory-too-big)
3575 (file-directory-p (concat ido-current-directory (file-name-directory contents)))) 3655 (file-directory-p (concat ido-current-directory (file-name-directory contents))))
3576 (ido-set-current-directory 3656 (ido-set-current-directory
3577 (concat ido-current-directory (file-name-directory contents))) 3657 (concat ido-current-directory (file-name-directory contents)))
@@ -3633,6 +3713,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3633 3713
3634 (when (and (not ido-matches) 3714 (when (and (not ido-matches)
3635 (not ido-directory-nonreadable) 3715 (not ido-directory-nonreadable)
3716 (not ido-directory-too-big)
3636 ;; ido-rescan ? 3717 ;; ido-rescan ?
3637 ido-process-ignore-lists 3718 ido-process-ignore-lists
3638 ido-ignored-list) 3719 ido-ignored-list)
@@ -3656,7 +3737,8 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3656 (not (ido-is-root-directory)) 3737 (not (ido-is-root-directory))
3657 (> (length contents) 1) 3738 (> (length contents) 1)
3658 (not (string-match "[$]" contents)) 3739 (not (string-match "[$]" contents))
3659 (not ido-directory-nonreadable)) 3740 (not ido-directory-nonreadable)
3741 (not ido-directory-too-big))
3660 (ido-trace "merge?") 3742 (ido-trace "merge?")
3661 (if ido-use-merged-list 3743 (if ido-use-merged-list
3662 (ido-undo-merge-work-directory contents nil) 3744 (ido-undo-merge-work-directory contents nil)
@@ -3721,6 +3803,8 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3721 (cond 3803 (cond
3722 (ido-directory-nonreadable 3804 (ido-directory-nonreadable
3723 (or (nth 8 ido-decorations) " [Not readable]")) 3805 (or (nth 8 ido-decorations) " [Not readable]"))
3806 (ido-directory-too-big
3807 (or (nth 9 ido-decorations) " [Too big]"))
3724 (ido-report-no-match 3808 (ido-report-no-match
3725 (nth 6 ido-decorations)) ;; [No match] 3809 (nth 6 ido-decorations)) ;; [No match]
3726 (t ""))) 3810 (t "")))
@@ -3827,41 +3911,75 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3827(put 'dired-do-rename 'ido 'ignore) 3911(put 'dired-do-rename 'ido 'ignore)
3828 3912
3829;;;###autoload 3913;;;###autoload
3914(defun ido-read-buffer (prompt &optional default require-match)
3915 "Ido replacement for the built-in `read-buffer'.
3916Return the name of a buffer selected.
3917PROMPT is the prompt to give to the user. DEFAULT if given is the default
3918buffer to be selected, which will go to the front of the list.
3919If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
3920 (let* ((ido-current-directory nil)
3921 (ido-directory-nonreadable nil)
3922 (ido-directory-too-big nil)
3923 (ido-context-switch-command 'ignore)
3924 (buf (ido-read-internal 'buffer prompt 'ido-buffer-history default require-match)))
3925 (if (eq ido-exit 'fallback)
3926 (let ((read-buffer-function nil))
3927 (read-buffer prompt default require-match))
3928 buf)))
3929
3930;;;###autoload
3830(defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate) 3931(defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate)
3831 "Read file name, prompting with PROMPT and completing in directory DIR. 3932 "Ido replacement for the built-in `read-file-name'.
3933Read file name, prompting with PROMPT and completing in directory DIR.
3832See `read-file-name' for additional parameters." 3934See `read-file-name' for additional parameters."
3833 (cond 3935 (let (filename)
3834 ((or (eq predicate 'file-directory-p) 3936 (cond
3835 (eq (get this-command 'ido) 'dir) 3937 ((or (eq predicate 'file-directory-p)
3836 (memq this-command ido-read-file-name-as-directory-commands)) 3938 (eq (get this-command 'ido) 'dir)
3837 (ido-read-directory-name prompt dir default-filename mustmatch initial)) 3939 (memq this-command ido-read-file-name-as-directory-commands))
3838 ((and (not (eq (get this-command 'ido) 'ignore)) 3940 (setq filename
3839 (not (memq this-command ido-read-file-name-non-ido)) 3941 (ido-read-directory-name prompt dir default-filename mustmatch initial)))
3840 (or (null predicate) (eq predicate 'file-exists-p))) 3942 ((and (not (eq (get this-command 'ido) 'ignore))
3841 (let* (filename 3943 (not (memq this-command ido-read-file-name-non-ido))
3842 ido-saved-vc-hb 3944 (or (null predicate) (eq predicate 'file-exists-p)))
3843 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) 3945 (let* (ido-saved-vc-hb
3844 (ido-current-directory (ido-expand-directory dir)) 3946 (ido-context-switch-command 'ignore)
3845 (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) 3947 (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
3846 (ido-work-directory-index -1) 3948 (ido-current-directory (ido-expand-directory dir))
3847 (ido-work-file-index -1) 3949 (ido-directory-nonreadable (not (file-readable-p ido-current-directory)))
3848 (ido-find-literal nil)) 3950 (ido-directory-too-big (and (not ido-directory-nonreadable)
3849 (setq filename 3951 (ido-directory-too-big-p ido-current-directory)))
3850 (ido-read-internal 'file prompt 'ido-file-history default-filename mustmatch initial)) 3952 (ido-work-directory-index -1)
3851 (if filename 3953 (ido-work-file-index -1)
3852 (concat ido-current-directory filename)))) 3954 (ido-find-literal nil))
3853 (t 3955 (setq ido-exit nil)
3854 (let ((read-file-name-function nil)) 3956 (setq filename
3855 (read-file-name prompt dir default-filename mustmatch initial predicate))))) 3957 (ido-read-internal 'file prompt 'ido-file-history default-filename mustmatch initial))
3958 (cond
3959 ((eq ido-exit 'fallback)
3960 (setq filename 'fallback))
3961 (filename
3962 (setq filename
3963 (concat ido-current-directory filename))))))
3964 (t
3965 (setq filename 'fallback)))
3966 (if (eq filename 'fallback)
3967 (let ((read-file-name-function nil))
3968 (read-file-name prompt dir default-filename mustmatch initial predicate))
3969 filename)))
3856 3970
3857;;;###autoload 3971;;;###autoload
3858(defun ido-read-directory-name (prompt &optional dir default-dirname mustmatch initial) 3972(defun ido-read-directory-name (prompt &optional dir default-dirname mustmatch initial)
3859 "Read directory name, prompting with PROMPT and completing in directory DIR. 3973 "Ido replacement for the built-in `read-directory-name'.
3860See `read-file-name' for additional parameters." 3974Read directory name, prompting with PROMPT and completing in directory DIR.
3975See `read-directory-name' for additional parameters."
3861 (let* (filename 3976 (let* (filename
3977 (ido-context-switch-command 'ignore)
3862 ido-saved-vc-hb 3978 ido-saved-vc-hb
3863 (ido-current-directory (ido-expand-directory dir)) 3979 (ido-current-directory (ido-expand-directory dir))
3864 (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) 3980 (ido-directory-nonreadable (not (file-readable-p ido-current-directory)))
3981 (ido-directory-too-big (and (not ido-directory-nonreadable)
3982 (ido-directory-too-big-p ido-current-directory)))
3865 (ido-work-directory-index -1) 3983 (ido-work-directory-index -1)
3866 (ido-work-file-index -1)) 3984 (ido-work-file-index -1))
3867 (setq filename 3985 (setq filename
@@ -3871,5 +3989,29 @@ See `read-file-name' for additional parameters."
3871 ido-current-directory 3989 ido-current-directory
3872 (concat ido-current-directory filename))))) 3990 (concat ido-current-directory filename)))))
3873 3991
3992;;;###autoload
3993(defun ido-completing-read (prompt choices &optional predicate require-match initial-input hist def)
3994 "Ido replacement for the built-in `completing-read'.
3995Read a string in the minibuffer with ido-style completion.
3996PROMPT is a string to prompt with; normally it ends in a colon and a space.
3997CHOICES is a list of strings which are the possible completions.
3998PREDICATE is currently ignored; it is included to be compatible
3999 with `completing-read'.
4000If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless
4001 the input is (or completes to) an element of CHOICES or is null.
4002 If the input is null, `ido-completing-read' returns DEF, or an empty
4003 string if DEF is nil, regardless of the value of REQUIRE-MATCH.
4004If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
4005 with point positioned at the end.
4006HIST, if non-nil, specifies a history list.
4007DEF, if non-nil, is the default value."
4008 (let ((ido-current-directory nil)
4009 (ido-directory-nonreadable nil)
4010 (ido-directory-too-big nil)
4011 (ido-context-switch-command 'ignore)
4012 (ido-choice-list choices))
4013 (ido-read-internal 'list prompt hist def require-match initial-input)))
4014
4015
3874;;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da 4016;;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da
3875;;; ido.el ends here 4017;;; ido.el ends here
diff --git a/lisp/image.el b/lisp/image.el
index ad8fcafe8de..13fdf2f6e4c 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -228,6 +228,15 @@ height of the image; integer values are taken as pixel values."
228 228
229 229
230(defun insert-sliced-image (image &optional string area rows cols) 230(defun insert-sliced-image (image &optional string area rows cols)
231 "Insert IMAGE into current buffer at point.
232IMAGE is displayed by inserting STRING into the current buffer
233with a `display' property whose value is the image. STRING is
234defaulted if you omit it.
235AREA is where to display the image. AREA nil or omitted means
236display it in the text area, a value of `left-margin' means
237display it in the left marginal area, a value of `right-margin'
238means display it in the right marginal area.
239The image is automatically split into ROW x COLS slices."
231 (unless string (setq string " ")) 240 (unless string (setq string " "))
232 (unless (eq (car-safe image) 'image) 241 (unless (eq (car-safe image) 'image)
233 (error "Not an image: %s" image)) 242 (error "Not an image: %s" image))
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 521729b764f..8944d4c20c0 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -534,7 +534,7 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data."
534 " " 534 " "
535 (ls-lisp-format-time file-attr time-index now) 535 (ls-lisp-format-time file-attr time-index now)
536 " " 536 " "
537 file-name 537 (propertize file-name 'dired-filename t)
538 (if (stringp file-type) ; is a symbolic link 538 (if (stringp file-type) ; is a symbolic link
539 (concat " -> " file-type)) 539 (concat " -> " file-type))
540 "\n" 540 "\n"
diff --git a/lisp/printing.el b/lisp/printing.el
index 08303e0595d..a406e09b8c0 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -5,13 +5,13 @@
5 5
6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
8;; Time-stamp: <2004/07/20 21:44:43 vinicius> 8;; Time-stamp: <2004/09/21 22:51:58 vinicius>
9;; Keywords: wp, print, PostScript 9;; Keywords: wp, print, PostScript
10;; Version: 6.8 10;; Version: 6.8
11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
12 12
13(defconst pr-version "6.8" 13(defconst pr-version "6.8"
14 "printing.el, v 6.8 <2004/07/12 vinicius> 14 "printing.el, v 6.8 <2004/09/21 vinicius>
15 15
16Please send all bug fixes and enhancements to 16Please send all bug fixes and enhancements to
17 Vinicius Jose Latorre <viniciusjl@ig.com.br> 17 Vinicius Jose Latorre <viniciusjl@ig.com.br>
@@ -259,6 +259,17 @@ Please send all bug fixes and enhancements to
259;; PostScript printer. So, please, don't include this printer in 259;; PostScript printer. So, please, don't include this printer in
260;; `pr-txt-printer-alist' (which see). 260;; `pr-txt-printer-alist' (which see).
261;; 261;;
262;; 5. Use gsprint instead of ghostscript to print monochrome PostScript files
263;; in Windows. The gsprint utility is faster than ghostscript to print
264;; monochrome PostScript.
265;;
266;; The efficiency is similar to print non-monochrome PostScript file.
267;;
268;; Also the gsprint utility comes together with gsview distribution.
269;;
270;; For more information about gsprint see
271;; `http://www.cs.wisc.edu/~ghost/gsview/gsprint.htm'.
272;;
262;; 273;;
263;; Using `printing' 274;; Using `printing'
264;; ---------------- 275;; ----------------
@@ -922,6 +933,7 @@ Please send all bug fixes and enhancements to
922;; 933;;
923;; gswin32, gsview32 934;; gswin32, gsview32
924;; `http://www.gnu.org/software/ghostscript/ghostscript.html' 935;; `http://www.gnu.org/software/ghostscript/ghostscript.html'
936;; gsprint `http://www.cs.wisc.edu/~ghost/gsview/gsprint.htm'.
925;; enscript `http://people.ssh.fi/mtr/genscript/' 937;; enscript `http://people.ssh.fi/mtr/genscript/'
926;; psnup `http://www.dcs.ed.ac.uk/home/ajcd/psutils/index.html' 938;; psnup `http://www.dcs.ed.ac.uk/home/ajcd/psutils/index.html'
927;; redmon `http://www.cs.wisc.edu/~ghost/redmon/' 939;; redmon `http://www.cs.wisc.edu/~ghost/redmon/'
@@ -930,6 +942,9 @@ Please send all bug fixes and enhancements to
930;; Acknowledgments 942;; Acknowledgments
931;; --------------- 943;; ---------------
932;; 944;;
945;; Thanks to Lennart Borgman <lennart.borgman.073@student.lu.se> for gsprint
946;; suggestion (see tip 5 in section Tips).
947;;
933;; Thanks to Drew Adams <drew.adams@oracle.com> for suggestions: 948;; Thanks to Drew Adams <drew.adams@oracle.com> for suggestions:
934;; - directory processing. 949;; - directory processing.
935;; - `pr-path-alist' variable. 950;; - `pr-path-alist' variable.
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index ac370cc1030..6965dea9fc1 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1,6 +1,6 @@
1;;; tcl.el --- Tcl code editing commands for Emacs 1;;; tcl.el --- Tcl code editing commands for Emacs
2 2
3;; Copyright (C) 1994,98,1999,2000,01,02,2003 Free Software Foundation, Inc. 3;; Copyright (C) 1994,98,1999,2000,01,02,2003,2004 Free Software Foundation, Inc.
4 4
5;; Maintainer: FSF 5;; Maintainer: FSF
6;; Author: Tom Tromey <tromey@redhat.com> 6;; Author: Tom Tromey <tromey@redhat.com>
@@ -1104,15 +1104,13 @@ See documentation for function `inferior-tcl-mode' for more information."
1104 (list (if current-prefix-arg 1104 (list (if current-prefix-arg
1105 (read-string "Run Tcl: " tcl-application) 1105 (read-string "Run Tcl: " tcl-application)
1106 tcl-application))) 1106 tcl-application)))
1107 (if (not (comint-check-proc "*inferior-tcl*")) 1107 (unless (comint-check-proc "*inferior-tcl*")
1108 (progn 1108 (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
1109 (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil 1109 tcl-command-switches))
1110 tcl-command-switches)) 1110 (inferior-tcl-mode))
1111 (inferior-tcl-mode))) 1111 (set (make-local-variable 'tcl-application) cmd)
1112 (make-local-variable 'tcl-application)
1113 (setq tcl-application cmd)
1114 (setq inferior-tcl-buffer "*inferior-tcl*") 1112 (setq inferior-tcl-buffer "*inferior-tcl*")
1115 (switch-to-buffer "*inferior-tcl*")) 1113 (pop-to-buffer "*inferior-tcl*"))
1116 1114
1117(defalias 'run-tcl 'inferior-tcl) 1115(defalias 'run-tcl 'inferior-tcl)
1118 1116
diff --git a/lisp/subr.el b/lisp/subr.el
index bed5489a1dd..e5a967310d5 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1938,8 +1938,7 @@ in BODY."
1938(put 'delay-mode-hooks 'permanent-local t) 1938(put 'delay-mode-hooks 'permanent-local t)
1939 1939
1940(defvar after-change-major-mode-hook nil 1940(defvar after-change-major-mode-hook nil
1941 "Mode independent hook run at the end of major mode functions. 1941 "Normal hook run at the very end of major mode functions.")
1942This is run just before the mode dependent hooks.")
1943 1942
1944(defun run-mode-hooks (&rest hooks) 1943(defun run-mode-hooks (&rest hooks)
1945 "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. 1944 "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
@@ -1959,6 +1958,8 @@ Major mode functions should use this."
1959 1958
1960(defmacro delay-mode-hooks (&rest body) 1959(defmacro delay-mode-hooks (&rest body)
1961 "Execute BODY, but delay any `run-mode-hooks'. 1960 "Execute BODY, but delay any `run-mode-hooks'.
1961These hooks will be executed by the first following call to
1962`run-mode-hooks' that occurs outside any `delayed-mode-hooks' form.
1962Only affects hooks run in the current buffer." 1963Only affects hooks run in the current buffer."
1963 (declare (debug t)) 1964 (declare (debug t))
1964 `(progn 1965 `(progn
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index f25bec2d841..4db493803ef 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -154,6 +154,12 @@ them and their old values to `enriched-old-bindings'."
154The value is a list of \(VAR VALUE VAR VALUE...).") 154The value is a list of \(VAR VALUE VAR VALUE...).")
155(make-variable-buffer-local 'enriched-old-bindings) 155(make-variable-buffer-local 'enriched-old-bindings)
156 156
157;; The next variable is buffer local if and only if Enriched mode is
158;; enabled. The buffer local value records whether
159;; `default-text-properties' should remain buffer local when disabling
160;; Enriched mode. For technical reasons, the default value should be t.
161(defvar enriched-default-text-properties-local-flag t)
162
157;; Technical internal variable. Bound to t if `enriched-mode' is 163;; Technical internal variable. Bound to t if `enriched-mode' is
158;; being rerun by a major mode to allow it to restore buffer-local 164;; being rerun by a major mode to allow it to restore buffer-local
159;; variables and to correctly update `enriched-old-bindings'. 165;; variables and to correctly update `enriched-old-bindings'.
@@ -169,7 +175,7 @@ The value is a list of \(VAR VALUE VAR VALUE...).")
169 "Minor mode for editing text/enriched files. 175 "Minor mode for editing text/enriched files.
170These are files with embedded formatting information in the MIME standard 176These are files with embedded formatting information in the MIME standard
171text/enriched format. 177text/enriched format.
172Turning the mode on runs `enriched-mode-hook'. 178Turning the mode on or off runs `enriched-mode-hook'.
173 179
174More information about Enriched mode is available in the file 180More information about Enriched mode is available in the file
175etc/enriched.doc in the Emacs distribution directory. 181etc/enriched.doc in the Emacs distribution directory.
@@ -183,7 +189,11 @@ Commands:
183 (setq buffer-file-format (delq 'text/enriched buffer-file-format)) 189 (setq buffer-file-format (delq 'text/enriched buffer-file-format))
184 ;; restore old variable values 190 ;; restore old variable values
185 (while enriched-old-bindings 191 (while enriched-old-bindings
186 (set (pop enriched-old-bindings) (pop enriched-old-bindings)))) 192 (set (pop enriched-old-bindings) (pop enriched-old-bindings)))
193 (unless enriched-default-text-properties-local-flag
194 (kill-local-variable 'default-text-properties))
195 (kill-local-variable 'enriched-default-text-properties-local-flag)
196 (unless use-hard-newlines (use-hard-newlines 0)))
187 197
188 ((and (memq 'text/enriched buffer-file-format) 198 ((and (memq 'text/enriched buffer-file-format)
189 (not enriched-rerun-flag)) 199 (not enriched-rerun-flag))
@@ -196,7 +206,11 @@ Commands:
196 ;; These will be restored if we exit Enriched mode. 206 ;; These will be restored if we exit Enriched mode.
197 (setq enriched-old-bindings 207 (setq enriched-old-bindings
198 (list 'buffer-display-table buffer-display-table 208 (list 'buffer-display-table buffer-display-table
199 'default-text-properties default-text-properties)) 209 'default-text-properties default-text-properties
210 'use-hard-newlines use-hard-newlines))
211 (make-local-variable 'enriched-default-text-properties-local-flag)
212 (setq enriched-default-text-properties-local-flag
213 (local-variable-p 'default-text-properties))
200 (make-local-variable 'default-text-properties) 214 (make-local-variable 'default-text-properties)
201 (setq buffer-display-table enriched-display-table) 215 (setq buffer-display-table enriched-display-table)
202 (use-hard-newlines 1 (if enriched-rerun-flag 'never nil)) 216 (use-hard-newlines 1 (if enriched-rerun-flag 'never nil))
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 994f3b3199f..cb510c43e33 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,62 @@
12004-09-25 Richard M. Stallman <rms@gnu.org>
2
3 * text.texi (Special Properties): Cleanups in `cursor'.
4 Rewrites in `line-height' and `line-spacing'; exchange them.
5
6 * display.texi (Fringes): Rewrite previous change.
7 (Fringe Bitmaps): Merge text from Display Fringe Bitmaps. Rewrite.
8 (Display Fringe Bitmaps): Node deleted, text moved.
9 (Customizing Bitmaps): Split off from Fringe Bitmaps. Rewrite.
10 (Scroll Bars): Clarify set-window-scroll-bars.
11 (Pointer Shape): Rewrite.
12 (Specified Space): Clarify :align-to, etc.
13 (Pixel Specification): Use @var. Clarify new text.
14 (Other Display Specs): Clarify `slice'.
15 (Image Descriptors): Cleanups.
16 (Showing Images): Cleanups.
17
182004-09-24 Luc Teirlinck <teirllm@auburn.edu>
19
20 * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'.
21
22 * modes.texi: Various minor changes in addition to:
23 (Major Mode Conventions): Final call to `run-mode-hooks' should
24 not be inside the `delay-mode-hooks' form.
25 (Mode Hooks): New node.
26 (Hooks): Delete obsolete example.
27 Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new
28 node "Mode Hooks".
29
302004-09-22 Luc Teirlinck <teirllm@auburn.edu>
31
32 * display.texi: Correct various typos.
33 (Display): Rename node "Pointer Shapes" to "Pointer
34 Shape". (There is already a node called "Pointer Shapes" in
35 frames.texi.)
36 (Images): Remove non-existent node "Image Slices" from menu.
37
382004-09-23 Kim F. Storm <storm@cua.dk>
39
40 * text.texi (Special Properties): Add `cursor', `pointer',
41 `line-height', and `line-spacing' properties.
42
43 * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer
44 Shapes' to menu.
45 (Standard Faces): Doc fix for fringe face.
46 (Fringes): Add `overflow-newline-into-fringe' and
47 'indicate-buffer-boundaries'.
48 (Fringe Bitmaps, Pointer Shapes): New nodes.
49 (Display Property): Add 'Pixel Specification' and 'Display Fringe
50 Bitmaps' to menu.
51 (Specified Space): Describe pixel width and height.
52 (Pixel Specification): New node.
53 (Other Display Specs): Add `slice' property.
54 (Display Fringe Bitmaps): New node.
55 (Images): Add 'Image Slices' to menu.
56 (Image Descriptors): Add `:pointer' and `:map' properties.
57 (Showing Images): Add slice arg to `insert-image'. Add
58 'insert-sliced-image'.
59
12004-09-20 Richard M. Stallman <rms@gnu.org> 602004-09-20 Richard M. Stallman <rms@gnu.org>
2 61
3 * commands.texi (Key Sequence Input): 62 * commands.texi (Key Sequence Input):
diff --git a/lispref/display.texi b/lispref/display.texi
index fb9d7c79e0e..44eda6723d1 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -25,7 +25,10 @@ that Emacs presents to the user.
25* Faces:: A face defines a graphics style for text characters: 25* Faces:: A face defines a graphics style for text characters:
26 font, colors, etc. 26 font, colors, etc.
27* Fringes:: Controlling window fringes. 27* Fringes:: Controlling window fringes.
28* Fringe Bitmaps:: Displaying bitmaps in the window fringes.
29* Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes.
28* Scroll Bars:: Controlling vertical scroll bars. 30* Scroll Bars:: Controlling vertical scroll bars.
31* Pointer Shape:: Controlling the mouse pointer shape.
29* Display Property:: Enabling special display features. 32* Display Property:: Enabling special display features.
30* Images:: Displaying images in Emacs buffers. 33* Images:: Displaying images in Emacs buffers.
31* Buttons:: Adding clickable buttons to Emacs buffers. 34* Buttons:: Adding clickable buttons to Emacs buffers.
@@ -1486,7 +1489,7 @@ font. (This works only on certain systems.)
1486 1489
1487@item fringe 1490@item fringe
1488@kindex fringe @r{(face name)} 1491@kindex fringe @r{(face name)}
1489This face controls the colors of window fringes, the thin areas on 1492This face controls the default colors of window fringes, the thin areas on
1490either side that are used to display continuation and truncation glyphs. 1493either side that are used to display continuation and truncation glyphs.
1491 1494
1492@item minibuffer-prompt 1495@item minibuffer-prompt
@@ -2560,7 +2563,7 @@ non-@code{nil} value.
2560 2563
2561@defvar fringes-outside-margins 2564@defvar fringes-outside-margins
2562If the value is non-@code{nil}, the frames appear outside 2565If the value is non-@code{nil}, the frames appear outside
2563the display margins. 2566the display margins.
2564@end defvar 2567@end defvar
2565 2568
2566@defvar left-fringe-width 2569@defvar left-fringe-width
@@ -2596,6 +2599,191 @@ window is used. The value has the form @code{(@var{left-width}
2596@var{right-width} @var{frames-outside-margins})}. 2599@var{right-width} @var{frames-outside-margins})}.
2597@end defun 2600@end defun
2598 2601
2602@defvar overflow-newline-into-fringe
2603If this is non-@code{nil}, lines exactly as wide as the window (not
2604counting the final newline character) are not continued. Instead,
2605when point is at the end of the line, the cursor appears in the right
2606fringe.
2607@end defvar
2608
2609@node Fringe Bitmaps
2610@section Fringe Bitmaps
2611@cindex fringe bitmaps
2612@cindex bitmaps, fringe
2613
2614 The @dfn{fringe bitmaps} are tiny icons Emacs displays in the window
2615fringe (on a graphic display) to indicate truncated or continued
2616lines, buffer boundaries, overlay arrow, etc. The fringe bitmaps are
2617shared by all frames and windows. You can redefine the built-in
2618fringe bitmaps, and you can define new fringe bitmaps. However, Emacs
2619can handle only 255 different fringe bitmaps.
2620
2621 The way to display a bitmap in the left or right fringes for a given
2622line in a window is by specifying the @code{display} property for one
2623of the characters that appears in it. Use a display specification of
2624the form @code{(left-fringe @var{bitmap} [@var{face}])} or
2625@code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display
2626Property}). Here, @var{bitmap} is an integer identifying the bitmap
2627you want, and @var{face} (which is optional) is the name of the face
2628whose colors should be used for displaying the bitmap.
2629@c ??? Shouldn't the symbol name be used?
2630
2631 These are the symbols identify the standard fringe bitmaps.
2632Evaluate @code{(require 'fringe)} to define them. Each symbol's
2633value is an integer that identifies the corresponding bitmap.
2634
2635@table @asis
2636@item Truncation and continuation line bitmaps:
2637@code{left-truncation-fringe-bitmap},
2638@code{right-truncation-fringe-bitmap},
2639@code{continued-line-fringe-bitmap},
2640@code{continuation-line-fringe-bitmap}.
2641
2642@item Buffer indication bitmaps:
2643@code{up-arrow-fringe-bitmap},
2644@code{down-arrow-fringe-bitmap},
2645@code{top-left-angle-fringe-bitmap},
2646@code{top-right-angle-fringe-bitmap},
2647@code{bottom-left-angle-fringe-bitmap},
2648@code{bottom-right-angle-fringe-bitmap},
2649@code{left-bracket-fringe-bitmap},
2650@code{right-bracket-fringe-bitmap}.
2651
2652@item Empty line indication bitmap:
2653@code{empty-line-fringe-bitmap}.
2654
2655@item Overlay arrow bitmap:
2656@code{overlay-arrow-fringe-bitmap}.
2657
2658@item Bitmaps for displaying the cursor in right fringe:
2659@code{filled-box-cursor-fringe-bitmap},
2660@code{hollow-box-cursor-fringe-bitmap},
2661@code{hollow-square-fringe-bitmap}, @code{bar-cursor-fringe-bitmap},
2662@code{hbar-cursor-fringe-bitmap}.
2663
2664@item Value indicating that no fringe bitmap is present:
2665@code{no-fringe-bitmap}.
2666@c ??? I don't understand what that means.
2667@c ??? Where would you find that value?
2668
2669@item Value indicating a reference to an undefined bitmap:
2670@code{undef-fringe-bitmap}.
2671@c ??? I don't understand what that means.
2672@c ??? Where would you find that value?
2673@end table
2674
2675@defun fringe-bitmaps-at-pos &optional pos window
2676This function returns the fringe bitmaps of the display line
2677containing position @var{pos} in window @var{window}. The return
2678value has the form @code{(@var{left} . @var{right})}, where @var{left}
2679is a list of fringe bitmap numbers for left fringe, and @var{right} is
2680similar for the right fringe. These bitmap numbers are usually values
2681of symbols such as the ones listed above.
2682
2683@c ??? Why not return a list of symbols that identify the bitmaps?
2684@c ??? This is Lisp, not C.
2685
2686The value is @code{nil} if @var{pos} is not visible in @var{window}.
2687If @var{window} is @code{nil}, that stands for the selected window.
2688If @var{pos} is @code{nil}, that stands for the value of point in
2689@var{window}.
2690@end defun
2691
2692@node Customizing Bitmaps
2693@section Customizing Fringe Bitmaps
2694
2695@c ??? Why not pass a symbol as the first argument
2696@c ??? and define that symbol. It would be cleaner.
2697
2698@defun define-fringe-bitmap bits &optional height width align bitmap
2699This function defines a new fringe bitmap, or replaces an existing
2700bitmap.
2701
2702The argument @var{bits} specifies the image to use. It should be
2703either a string or a vector of integers, where each element (an
2704integer) corresponds to one row of the bitmap. Each bit of an integer
2705corresponds to one pixel of the bitmap.
2706@c ??? Is the low bit the leftmost or the rightmost bit?
2707
2708The height is normally the length of @var{bits}. However, you
2709can specify a different height with non-@code{nil} @var{height}. The width
2710is normally 8, but you can specify a different width with non-@code{nil}
2711@var{width}. The width must be an integer between 1 and 16.
2712
2713The argument @var{align} specifies the positioning of the bitmap
2714relative to the range of rows where it is used; the default is to
2715center the bitmap. The allowed values are @code{top}, @code{center},
2716or @code{bottom}.
2717
2718The @var{align} argument may also be a list @code{(@var{align}
2719@var{periodic})} where @var{align} is intepreted as described above.
2720If @var{periodic} is non-@code{nil}, it specifies that the rows in
2721@code{bits} should be repeated enough times to reach the specified
2722height.
2723
2724The argument @var{bitmap} specifies an existing bitmap to redefine.
2725You should pass the value of the symbol that identifies the bitmap.
2726
2727The return value on success is an integer identifying the new bitmap.
2728You should save that integer in a variable so it can be used to select
2729this bitmap. The value can also be @code{nil} of there are no more
2730free bitmap slots.
2731@c ??? Why not signal an error? That would be cleaner.
2732@end defun
2733
2734@defun destroy-fringe-bitmap bitmap
2735This function destroy the fringe bitmap identified by @var{bitmap}.
2736If @var{bitmap} identifies a standard fringe bitmap, it actually
2737restores the standard definition of that bitmap, instead of
2738eliminating it entirely.
2739@end defun
2740
2741@defun set-fringe-bitmap-face bitmap &optional face
2742This sets the face for the fringe bitmap @var{bitmap} to @var{face}.
2743If @var{face} is @code{nil}, it selects the @code{fringe} face. The
2744bitmap's face controls the color to draw it in.
2745
2746The face you use here should be derived from @code{fringe}, and should
2747specify only the foreground color.
2748@end defun
2749
2750@defvar indicate-buffer-boundaries
2751This buffer-local variable controls how the buffer boundaries and
2752window scrolling are indicated in the window fringes.
2753
2754Emacs can indicate the buffer boundaries---that is, the first and last
2755line in the buffer---with angle icons when they appear on the screen.
2756In addition, Emacs can display an up-arrow in the fringe to show
2757that there is text above the screen, and a down-arrow to show
2758there is text below the screen.
2759
2760There are four kinds of basic values:
2761
2762@table @asis
2763@item @code{nil}
2764Don't display the icons.
2765@item @code{left}
2766Display them in the left fringe.
2767@item @code{right}
2768Display them in the right fringe.
2769@item @var{anything-else}
2770Display the icon at the top of the window top in the left fringe, and other
2771in the right fringe.
2772@end table
2773
2774If value is a cons @code{(@var{angles} . @var{arrows})}, @var{angles}
2775controls the angle icons, and @var{arrows} controls the arrows. Both
2776@var{angles} and @var{arrows} work according to the table above.
2777Thus, @code{(t . right)} places the top angle icon in the left
2778fringe, the bottom angle icon in the right fringe, and both arrows in
2779the right fringe.
2780@end defvar
2781
2782@defvar default-indicate-buffer-boundaries
2783The value of this variable is the default value for
2784@code{indicate-buffer-boundaries} in buffers that do not override it.
2785@end defvar
2786
2599@node Scroll Bars 2787@node Scroll Bars
2600@section Scroll Bars 2788@section Scroll Bars
2601 2789
@@ -2609,18 +2797,19 @@ You can also control this for individual windows. Call the function
2609@code{set-window-scroll-bars} to specify what to do for a specific window: 2797@code{set-window-scroll-bars} to specify what to do for a specific window:
2610 2798
2611@defun set-window-scroll-bars window width &optional vertical-type horizontal-type 2799@defun set-window-scroll-bars window width &optional vertical-type horizontal-type
2612Set width and type of scroll bars of window @var{window}. 2800This function sets the width and type of scroll bars for window
2613If @var{window} is @code{nil}, the selected window is used. 2801@var{window}.
2802
2614@var{width} specifies the scroll bar width in pixels (@code{nil} means 2803@var{width} specifies the scroll bar width in pixels (@code{nil} means
2615use whatever is specified for width for the frame). 2804use the width specified for the frame). @var{vertical-type} specifies
2616@var{vertical-type} specifies whether to have a vertical scroll bar 2805whether to have a vertical scroll bar and, if so, where. The possible
2617and, if so, where. The possible values are @code{left}, @code{right} 2806values are @code{left}, @code{right} and @code{nil}, just like the
2618and @code{nil}, just like the values of the 2807values of the @code{vertical-scroll-bars} frame parameter.
2619@code{vertical-scroll-bars} frame parameter.
2620 2808
2621The argument @var{horizontal-type} is meant to specify whether and 2809The argument @var{horizontal-type} is meant to specify whether and
2622where to have horizontal scroll bars, but since they are not 2810where to have horizontal scroll bars, but since they are not
2623implemented, it has no effect. 2811implemented, it has no effect. If @var{window} is @code{nil}, the
2812selected window is used.
2624@end defun 2813@end defun
2625 2814
2626@defun window-scroll-bars &optional window 2815@defun window-scroll-bars &optional window
@@ -2644,6 +2833,26 @@ in a buffer that is already visible in a window, you can make the
2644window take note of the new values by calling @code{set-window-buffer} 2833window take note of the new values by calling @code{set-window-buffer}
2645specifying the same buffer that is already displayed. 2834specifying the same buffer that is already displayed.
2646 2835
2836@node Pointer Shape
2837@section Pointer Shape
2838
2839 Normally, the mouse pointer has the @code{text} shape over text and
2840the @code{arrow} shape over window areas which do not correspond to
2841any buffer text. You can specify the mouse pointer shape over text or
2842images via the @code{pointer} text property, and for images with the
2843@code{:pointer} and @code{:map} image properties.
2844
2845 The available pointer shapes are: @code{text} (or @code{nil}),
2846@code{arrow}, @code{hand}, @code{vdrag}, @code{hdrag},
2847@code{modeline}, and @code{hourglass}.
2848
2849@defvar void-text-area-pointer
2850@tindex void-text-area-pointer
2851This variable specifies the mouse pointer shape in void text areas,
2852i.e. the areas after the end of a line or below the last line in the
2853buffer. The default is to use the @code{arrow} (non-text) pointer.
2854@end defvar
2855
2647@node Display Property 2856@node Display Property
2648@section The @code{display} Property 2857@section The @code{display} Property
2649@cindex display specification 2858@cindex display specification
@@ -2659,6 +2868,7 @@ they mean.
2659 2868
2660@menu 2869@menu
2661* Specified Space:: Displaying one space with a specified width. 2870* Specified Space:: Displaying one space with a specified width.
2871* Pixel Specification:: Specifying space width or height in pixels.
2662* Other Display Specs:: Displaying an image; magnifying text; moving it 2872* Other Display Specs:: Displaying an image; magnifying text; moving it
2663 up or down on the page; adjusting the width 2873 up or down on the page; adjusting the width
2664 of spaces within text. 2874 of spaces within text.
@@ -2683,9 +2893,10 @@ can use in @var{props} to specify the weight of the space:
2683 2893
2684@table @code 2894@table @code
2685@item :width @var{width} 2895@item :width @var{width}
2686Specifies that the space width should be @var{width} times the normal 2896If @var{width} is an integer or floating point number, it specifies
2687character width. @var{width} can be an integer or floating point 2897that the space width should be @var{width} times the normal character
2688number. 2898width. @var{width} can also be a @dfn{pixel width} specification
2899(@pxref{Pixel Specification}).
2689 2900
2690@item :relative-width @var{factor} 2901@item :relative-width @var{factor}
2691Specifies that the width of the stretch should be computed from the 2902Specifies that the width of the stretch should be computed from the
@@ -2694,41 +2905,131 @@ same @code{display} property. The space width is the width of that
2694character, multiplied by @var{factor}. 2905character, multiplied by @var{factor}.
2695 2906
2696@item :align-to @var{hpos} 2907@item :align-to @var{hpos}
2697Specifies that the space should be wide enough to reach @var{hpos}. The 2908Specifies that the space should be wide enough to reach @var{hpos}.
2698value @var{hpos} is measured in units of the normal character width. It 2909If @var{hpos} is a number, it is measured in units of the normal
2699may be an integer or a floating point number. 2910character width. @var{hpos} can also be a @dfn{pixel width}
2911specification (@pxref{Pixel Specification}).
2700@end table 2912@end table
2701 2913
2702 You should use one and only one of the above properties. You can 2914 You should use one and only one of the above properties. You can
2703also specify the height of the space, with other properties: 2915also specify the height of the space, with these properties:
2704 2916
2705@table @code 2917@table @code
2706@item :height @var{height} 2918@item :height @var{height}
2707Specifies the height of the space, as @var{height}, 2919Specifies the height of the space.
2708measured in terms of the normal line height. 2920If @var{height} is an integer or floating point number, it specifies
2921that the space height should be @var{height} times the normal character
2922height. The @var{height} may also be a @dfn{pixel height} specification
2923(@pxref{Pixel Specification}).
2709 2924
2710@item :relative-height @var{factor} 2925@item :relative-height @var{factor}
2711Specifies the height of the space, multiplying the ordinary height 2926Specifies the height of the space, multiplying the ordinary height
2712of the text having this display specification by @var{factor}. 2927of the text having this display specification by @var{factor}.
2713 2928
2714@item :ascent @var{ascent} 2929@item :ascent @var{ascent}
2715Specifies that @var{ascent} percent of the height of the space should be 2930If the value of @var{ascent} is a non-negative number no greater than
2716considered as the ascent of the space---that is, the part above the 2931100, it specifies that @var{ascent} percent of the height of the space
2717baseline. The value of @var{ascent} must be a non-negative number no 2932should be considered as the ascent of the space---that is, the part
2718greater than 100. 2933above the baseline. The ascent may also be specified in pixel units
2934with a @dfn{pixel ascent} specification (@pxref{Pixel Specification}).
2935
2719@end table 2936@end table
2720 2937
2721 Don't use both @code{:height} and @code{:relative-height} together. 2938 Don't use both @code{:height} and @code{:relative-height} together.
2722 2939
2940 The @code{:height} and @code{:align-to} properties are supported on
2941non-graphic terminals, but the other space properties in this section
2942are not.
2943
2944@node Pixel Specification
2945@subsection Pixel Specification for Spaces
2946@cindex spaces, pixel specification
2947
2948 The value of the @code{:width}, @code{:align-to}, @code{:height},
2949and @code{:ascent} properties can be a special kind of expression that
2950is evaluated during redisplay. The result of the evaluation is used
2951as an absolute number of pixels.
2952
2953 The following expressions are supported:
2954
2955@example
2956@group
2957 @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | IMAGE | @var{form}
2958 @var{num} ::= @var{integer} | @var{float} | @var{symbol}
2959 @var{unit} ::= in | mm | cm | width | height
2960 @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
2961 | scroll-bar | text
2962 @var{pos} ::= left | center | right
2963 @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
2964 @var{op} ::= + | -
2965@end group
2966@end example
2967
2968 The form @var{num} specifies a fraction of the default frame font
2969height or width. The form @code{(@var{num})} specifies an absolute
2970number of pixels. If @var{num} is a symbol, @var{symbol}, its
2971buffer-local variable binding is used.
2972
2973 The @code{in}, @code{mm}, and @code{cm} units specify the number of
2974pixels per inch, millimeter, and centimeter, respectively. The
2975@code{width} and @code{height} units correspond to the default width
2976and height of the current face. An image specification @code{IMAGE}
2977corresponds to the width or height of the image.
2978
2979 The @code{left-fringe}, @code{right-fringe}, @code{left-margin},
2980@code{right-margin}, @code{scroll-bar}, and @code{text} elements
2981specify to the width of the corresponding area of the window.
2982
2983 The @code{left}, @code{center}, and @code{right} positions can be
2984used with @code{:align-to} to specify a position relative to the left
2985edge, center, or right edge of the text area.
2986
2987 Any of the above window elements (except @code{text}) can also be
2988used with @code{:align-to} to specify that the position is relative to
2989the left edge of the given area. Once the base offset for a relative
2990position has been set (by the first occurrence of one of these
2991symbols), further occurences of these symbols are interpreted as the
2992width of the specified area. For example, to align to the center of
2993the left-margin, use
2994
2995@example
2996:align-to (+ left-margin (0.5 . left-margin))
2997@end example
2998
2999 If no specific base offset is set for alignment, it is always relative
3000to the left edge of the text area. For example, @samp{:align-to 0} in a
3001header-line aligns with the first text column in the text area.
3002
3003 A value of the form @code{(@var{num} . @var{expr})} stands
3004multiplying the values of @var{num} and @var{expr}. For example,
3005@code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 .
3006IMAGE)} specifies half the width (or height) of the specified image.
3007
3008 The form @code{(+ @var{expr} ...)} adds up the value of the
3009expressions. The form @code{(- @var{expr} ...)} negates or subtracts
3010the value of the expressions.
3011
2723@node Other Display Specs 3012@node Other Display Specs
2724@subsection Other Display Specifications 3013@subsection Other Display Specifications
2725 3014
3015 Here are the other sorts of display specifications that you can use
3016in the @code{display} text property.
3017
2726@table @code 3018@table @code
2727@item (image . @var{image-props}) 3019@item (image . @var{image-props})
2728This is in fact an image descriptor (@pxref{Images}). When used as a 3020This is in fact an image descriptor (@pxref{Images}). When used as a
2729display specification, it means to display the image instead of the text 3021display specification, it means to display the image instead of the text
2730that has the display specification. 3022that has the display specification.
2731 3023
3024@item (slice @var{x} @var{y} @var{width} @var{height})
3025This specification together with @code{image} specifies a @dfn{slice}
3026(a partial area) of the image to display. The elements @var{y} and
3027@var{x} specify the top left corner of the slice, within the image;
3028@var{width} and @var{height} specify the width and height of the
3029slice. Integer values are numbers of pixels. A floating point number
3030in the range 0.0--1.0 stands for that fraction of the width or height
3031of the entire image.
3032
2732@item ((margin nil) @var{string}) 3033@item ((margin nil) @var{string})
2733@itemx @var{string} 3034@itemx @var{string}
2734A display specification of this form means to display @var{string} 3035A display specification of this form means to display @var{string}
@@ -3105,6 +3406,43 @@ specifying the color to assume for the background of the image.
3105If @var{mask} is @code{nil}, remove a mask from the image, if it has 3406If @var{mask} is @code{nil}, remove a mask from the image, if it has
3106one. Images in some formats include a mask which can be removed by 3407one. Images in some formats include a mask which can be removed by
3107specifying @code{:mask nil}. 3408specifying @code{:mask nil}.
3409
3410@item :pointer @var{shape}
3411This specifies the pointer shape when the mouse pointer is over this
3412image. @xref{Pointer Shapes}, for available pointer shapes.
3413
3414@item :map @var{map}
3415This associates an image map of @dfn{hot spots} with this image.
3416
3417An image map is an alist where each element has the format
3418@code{(@var{area} @var{id} @var{plist})}. An @var{area} is specified
3419as either a rectangle, a circle, or a polygon.
3420
3421A rectangle is a cons
3422@code{(rect . ((@var{x0} . @var{y0}) . (@var{x1} . @var{y1})))}
3423which specifies the pixel coordinates of the upper left and bottom right
3424corners of the rectangle area.
3425
3426A circle is a cons
3427@code{(circle . ((@var{x0} . @var{y0}) . @var{r}))}
3428which specifies the center and the radius of the circle; @var{r} may
3429be a float or integer.
3430
3431A polygon is a cons
3432@code{(poly . [@var{x0} @var{y0} @var{x1} @var{y1} ...])}
3433where each pair in the vector describes one corner in the polygon.
3434
3435When the mouse pointer is above a hot-spot area of an image, the
3436@var{plist} of that hot-spot is consulted; if it contains a @code{help-echo}
3437property it defines a tool-tip for the hot-spot, and if it contains
3438a @code{pointer} property, it defines the shape of the mouse cursor when
3439it is over the hot-spot.
3440@xref{Pointer Shapes}, for available pointer shapes.
3441
3442When you click the mouse when the mouse pointer is over a hot-spot, an
3443event is composed by combining the @var{id} of the hot-spot with the
3444mouse event; for instance, @code{[area4 mouse-1]} if the hot-spot's
3445@var{id} is @code{area4}.
3108@end table 3446@end table
3109 3447
3110@defun image-mask-p spec &optional frame 3448@defun image-mask-p spec &optional frame
@@ -3372,7 +3710,7 @@ The image is looked for first on @code{load-path} and then in
3372property yourself, but it is easier to use the functions in this 3710property yourself, but it is easier to use the functions in this
3373section. 3711section.
3374 3712
3375@defun insert-image image &optional string area 3713@defun insert-image image &optional string area slice
3376This function inserts @var{image} in the current buffer at point. The 3714This function inserts @var{image} in the current buffer at point. The
3377value @var{image} should be an image descriptor; it could be a value 3715value @var{image} should be an image descriptor; it could be a value
3378returned by @code{create-image}, or the value of a symbol defined with 3716returned by @code{create-image}, or the value of a symbol defined with
@@ -3385,11 +3723,26 @@ If it is @code{left-margin}, the image appears in the left margin;
3385@code{nil} or omitted, the image is displayed at point within the 3723@code{nil} or omitted, the image is displayed at point within the
3386buffer's text. 3724buffer's text.
3387 3725
3726The argument @var{slice} specifies a slice of the image to insert. If
3727@var{slice} is @code{nil} or omitted the whole image is inserted.
3728Otherwise, @var{slice} is a list @code{(@var{x} @var{y} @var{width}
3729@var{height})} which specifies the @var{x} and @var{y} positions and
3730@var{width} and @var{height} of the image area to insert. Integer
3731values are in units of pixels. A floating point number in the range
37320.0--1.0 stands for that fraction of the width or height of the entire
3733image.
3734
3388Internally, this function inserts @var{string} in the buffer, and gives 3735Internally, this function inserts @var{string} in the buffer, and gives
3389it a @code{display} property which specifies @var{image}. @xref{Display 3736it a @code{display} property which specifies @var{image}. @xref{Display
3390Property}. 3737Property}.
3391@end defun 3738@end defun
3392 3739
3740@defun insert-sliced-image image &optional string area rows cols
3741This function inserts @var{image} in the current buffer at point, like
3742@code{insert-image}, but splits the image into @var{rows}x@var{cols}
3743equally sized slices.
3744@end defun
3745
3393@defun put-image image pos &optional string area 3746@defun put-image image pos &optional string area
3394This function puts image @var{image} in front of @var{pos} in the 3747This function puts image @var{image} in front of @var{pos} in the
3395current buffer. The argument @var{pos} should be an integer or a 3748current buffer. The argument @var{pos} should be an integer or a
@@ -3498,7 +3851,7 @@ entries).
3498* Making Buttons:: Adding buttons to Emacs buffers. 3851* Making Buttons:: Adding buttons to Emacs buffers.
3499* Manipulating Buttons:: Getting and setting properties of buttons. 3852* Manipulating Buttons:: Getting and setting properties of buttons.
3500* Button Buffer Commands:: Buffer-wide commands and bindings for buttons. 3853* Button Buffer Commands:: Buffer-wide commands and bindings for buttons.
3501* Manipulating Button Types:: 3854* Manipulating Button Types::
3502@end menu 3855@end menu
3503 3856
3504@node Button Properties 3857@node Button Properties
diff --git a/lispref/hooks.texi b/lispref/hooks.texi
index ad5d709e720..1aa22b94686 100644
--- a/lispref/hooks.texi
+++ b/lispref/hooks.texi
@@ -35,6 +35,7 @@ however, we have renamed all of those.)
35@table @code 35@table @code
36@item activate-mark-hook 36@item activate-mark-hook
37@item after-change-functions 37@item after-change-functions
38@item after-change-major-mode-hook
38@item after-init-hook 39@item after-init-hook
39@item after-insert-file-functions 40@item after-insert-file-functions
40@item after-make-frame-functions 41@item after-make-frame-functions
diff --git a/lispref/modes.texi b/lispref/modes.texi
index 78b8fc440d7..f74f7c89da7 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2003 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2003, 2004
4@c Free Software Foundation, Inc. 4@c Free Software Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/modes 6@setfilename ../info/modes
@@ -103,6 +103,7 @@ Fundamental mode. Rmail mode is a complicated and specialized mode.
103* Mode Help:: Finding out how to use a mode. 103* Mode Help:: Finding out how to use a mode.
104* Derived Modes:: Defining a new major mode based on another major 104* Derived Modes:: Defining a new major mode based on another major
105 mode. 105 mode.
106* Mode Hooks:: Hooks run at the end of major mode functions.
106@end menu 107@end menu
107 108
108@node Major Mode Conventions 109@node Major Mode Conventions
@@ -276,7 +277,7 @@ other packages would interfere with them.
276Each major mode should have a @dfn{mode hook} named 277Each major mode should have a @dfn{mode hook} named
277@code{@var{modename}-mode-hook}. The major mode command should run that 278@code{@var{modename}-mode-hook}. The major mode command should run that
278hook, with @code{run-mode-hooks}, as the very last thing it 279hook, with @code{run-mode-hooks}, as the very last thing it
279does. @xref{Hooks}. 280does. @xref{Mode Hooks}.
280 281
281@item 282@item
282The major mode command may start by calling some other major mode 283The major mode command may start by calling some other major mode
@@ -284,9 +285,11 @@ command (called the @dfn{parent mode}) and then alter some of its
284settings. A mode that does this is called a @dfn{derived mode}. The 285settings. A mode that does this is called a @dfn{derived mode}. The
285recommended way to define one is to use @code{define-derived-mode}, 286recommended way to define one is to use @code{define-derived-mode},
286but this is not required. Such a mode should use 287but this is not required. Such a mode should use
287@code{delay-mode-hooks} around its entire body, including the call to 288@code{delay-mode-hooks} around its entire body (including the call to
288the parent mode command and the final call to @code{run-mode-hooks}. 289the parent mode command) @emph{except} for the final call to
289(Using @code{define-derived-mode} does this automatically.) 290@code{run-mode-hooks}, which runs the derived mode's hook. (Using
291@code{define-derived-mode} does this automatically.) @xref{Derived
292Modes}, and @ref{Mode Hooks}.
290 293
291@item 294@item
292If something special should be done if the user switches a buffer from 295If something special should be done if the user switches a buffer from
@@ -575,7 +578,7 @@ visited. It also processes local variables specified in the file text.
575in particular. Other major modes are defined in effect by comparison 578in particular. Other major modes are defined in effect by comparison
576with this one---their definitions say what to change, starting from 579with this one---their definitions say what to change, starting from
577Fundamental mode. The @code{fundamental-mode} function does @emph{not} 580Fundamental mode. The @code{fundamental-mode} function does @emph{not}
578run any hooks; you're not supposed to customize it. (If you want Emacs 581run any mode hooks; you're not supposed to customize it. (If you want Emacs
579to behave differently in Fundamental mode, change the @emph{global} 582to behave differently in Fundamental mode, change the @emph{global}
580state of Emacs.) 583state of Emacs.)
581@end deffn 584@end deffn
@@ -808,6 +811,58 @@ Do not write an @code{interactive} spec in the definition;
808@code{define-derived-mode} does that automatically. 811@code{define-derived-mode} does that automatically.
809@end defmac 812@end defmac
810 813
814@node Mode Hooks
815@subsection Mode Hooks
816
817The two last things a major mode function does is to run its mode
818hook and finally the mode independent normal hook
819@code{after-change-major-mode-hook}. If the major mode is a derived
820mode, that is if it calls another major mode (the parent mode) in its
821body, then the parent's mode hook is run just before the derived
822mode's hook. Neither the parent's mode hook nor
823@code{after-change-major-mode-hook} are run at the end of the actual
824call to the parent mode. This applies recursively if the parent mode
825has itself a parent. That is, the mode hooks of all major modes called
826directly or indirectly by the major mode function are all run in
827sequence at the end, just before @code{after-change-major-mode-hook}.
828
829If you are customizing a major mode, rather than defining one, the
830above is all you need to know about the hooks run at the end of a
831major mode. This also applies if you use @code{define-derived-mode}
832to define a major mode, because that macro will automatically
833implement the above for you.
834
835Programmers wishing to define a major mode without using
836@code{define-derived-mode}, should make sure that their major mode
837follows the above conventions. @xref{Major Mode Conventions}, for how
838this should be accomplished. Below, we give some implementation
839details.
840
841@defun run-mode-hooks &rest hookvars
842Major modes should run their mode hook using this function. It is
843similar to @code{run-hooks} (@pxref{Hooks}), but if run inside a
844@code{delay-mode-hooks} form, this function does not run any hooks.
845Instead, it arranges for @var{hookvars} to be run at a later call to
846the function. Otherwise, @code{run-mode-hooks} runs any delayed hooks
847in order, then @var{hookvars} and finally
848@code{after-change-major-mode-hook}.
849@end defun
850
851@defmac delay-mode-hooks body...
852This macro executes @var{body} like @code{progn}, but all calls to
853@code{run-mode-hooks} inside @var{body} delay running their hooks.
854They will be run by the first call to @code{run-mode-hooks} after exit
855from @code{delay-mode-hooks}.
856@end defmac
857
858@defvar after-change-major-mode-hook
859Every major mode function should run this normal hook at its very end.
860It normally does not need to do so explicitly. Indeed, a major mode
861function should normally run its mode hook with @code{run-mode-hooks}
862as the very last thing it does and @code{run-mode-hooks} runs
863@code{after-change-major-mode-hook} at its very end.
864@end defvar
865
811@node Minor Modes 866@node Minor Modes
812@section Minor Modes 867@section Minor Modes
813@cindex minor mode 868@cindex minor mode
@@ -2087,7 +2142,7 @@ if there is no subexpression numbered @var{subexp} in @var{matcher}.
2087Obviously, fontification of the subexpression numbered @var{subexp} will 2142Obviously, fontification of the subexpression numbered @var{subexp} will
2088not occur. However, fontification of other subexpressions (and other 2143not occur. However, fontification of other subexpressions (and other
2089regexps) will continue. If @var{laxmatch} is @code{nil}, and the 2144regexps) will continue. If @var{laxmatch} is @code{nil}, and the
2090specified subexpression is missing, then an error is signalled which 2145specified subexpression is missing, then an error is signaled which
2091terminates search-based fontification. 2146terminates search-based fontification.
2092 2147
2093Here are some examples of elements of this kind, and what they do: 2148Here are some examples of elements of this kind, and what they do:
@@ -2450,7 +2505,7 @@ a file, don't have to do anything to use this feature.
2450 2505
2451For buffers not visiting a file to have their state saved, the major 2506For buffers not visiting a file to have their state saved, the major
2452mode must bind the buffer local variable @code{desktop-save-buffer} to 2507mode must bind the buffer local variable @code{desktop-save-buffer} to
2453a non-nil value. 2508a non-@code{nil} value.
2454 2509
2455@defvar desktop-save-buffer 2510@defvar desktop-save-buffer
2456If this buffer-local variable is non-@code{nil}, the buffer will have 2511If this buffer-local variable is non-@code{nil}, the buffer will have
@@ -2563,26 +2618,8 @@ obsolete.) If the value is a function (either a lambda expression or
2563a symbol with a function definition), it is called. If it is a list 2618a symbol with a function definition), it is called. If it is a list
2564that isn't a function, its elements are called, consecutively. All 2619that isn't a function, its elements are called, consecutively. All
2565the hook functions are called with no arguments. 2620the hook functions are called with no arguments.
2566
2567For example, here's how @code{emacs-lisp-mode} runs its mode hook:
2568
2569@example
2570(run-hooks 'emacs-lisp-mode-hook)
2571@end example
2572@end defun 2621@end defun
2573 2622
2574@defun run-mode-hooks &rest hookvars
2575Like @code{run-hooks}, but is affected by the @code{delay-mode-hooks}
2576macro.
2577@end defun
2578
2579@defmac delay-mode-hooks body...
2580This macro executes the @var{body} forms but defers all calls to
2581@code{run-mode-hooks} within them until the end of @var{body}.
2582This macro enables a derived mode to arrange not to run
2583its parent modes' mode hooks until the end.
2584@end defmac
2585
2586@defun run-hook-with-args hook &rest args 2623@defun run-hook-with-args hook &rest args
2587This function is the way to run an abnormal hook and always call all 2624This function is the way to run an abnormal hook and always call all
2588of the hook functions. It calls each of the hook functions one by 2625of the hook functions. It calls each of the hook functions one by
diff --git a/lispref/text.texi b/lispref/text.texi
index c6e5aa34d05..82763db496c 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -2974,6 +2974,70 @@ Consecutive characters with the same @code{field} property constitute a
2974@code{beginning-of-line} stop moving at a field boundary. 2974@code{beginning-of-line} stop moving at a field boundary.
2975@xref{Fields}. 2975@xref{Fields}.
2976 2976
2977@item cursor
2978@kindex cursor @r{(text property)}
2979Normally, the cursor is displayed at the end of any overlay and text
2980property strings present at the current window position. You can
2981place the cursor on any desired character of these strings by giving
2982that character a non-@code{nil} @var{cursor} text property.
2983
2984@item pointer
2985@kindex pointer @r{(text property)}
2986This specifies a specific pointer shape when the mouse pointer is over
2987this text or image. See the variable @var{void-area-text-pointer}
2988for possible pointer shapes.
2989
2990@item line-spacing
2991@kindex line-spacing @r{(text property)}
2992A newline can have a @code{line-spacing} text or overlay property
2993that controls the height of the corresponding display line.
2994@c ??? Which display line is "corresponding"?
2995The @code{line-spacing} property overrides the default frame line
2996spacing and the buffer local @code{line-spacing} variable. We will
2997call the property value @var{line-spacing}.
2998
2999If @var{line-spacing} is a positive integer, the value specifies
3000additional vertical space, below the display line, in pixels.
3001
3002If @var{line-spacing} is a floating point number or cons, the
3003additional vertical space is the product of @var{line-spacing} and the
3004default frame line height.
3005
3006If the @var{line-spacing} value is a cons @code{(total .
3007@var{spacing})} where @var{spacing} is any of the forms described
3008above, the value of @var{spacing} specifies the total displayed height
3009of the line, regardless of the height of the characters in it. This
3010is equivalent to using the @code{line-height} property.
3011
3012@item line-height
3013@kindex line-height @r{(text property)}
3014A newline can have a @code{line-height} text or overlay property that
3015controls the total height of the corresponding display line.
3016@c ??? Which display line is "corresponding"?
3017We will call the property value @var{line-height}.
3018
3019If @var{line-height} is 0, the newline does not contribute to the
3020height of the display row; instead the height of the newline glyph is
3021reduced.
3022@c ??? That is not clear. Reduced how much?
3023In that case, any @code{line-spacing} property on
3024this newline is ignored. This can be used to tile small images or
3025image slices without adding blank areas between the images.
3026@c ??? Precisely which of these features does ``this'' mean?
3027
3028If @var{line-height} is a positive integer, the value specifies the
3029minimum line height in pixels. The line's ascent height is
3030increased as necessary to achieve the specified height.
3031
3032If @var{line-height} is a floating point number, the minimum line
3033height is the product of @var{line-height} and the default frame line
3034height.
3035
3036If @var{line-height} is a cons @code{(@var{ratio} . @var{face})}, the
3037minimum line height is calculated as @var{ratio} times the height of
3038face @var{face}. The @var{ratio} is an integer or a floating point
3039number. If @var{face} is @code{t}, it refers to the current face.
3040
2977@item modification-hooks 3041@item modification-hooks
2978@cindex change hooks for a character 3042@cindex change hooks for a character
2979@cindex hooks for changing a character 3043@cindex hooks for changing a character
diff --git a/man/ChangeLog b/man/ChangeLog
index 2e59da4e0f1..7b20cda2bc0 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,12 @@
12004-09-22 Luc Teirlinck <teirllm@auburn.edu>
2
3 * display.texi (Display Custom): Remove stray `@end defvar'.
4
52004-09-23 Kim F. Storm <storm@cua.dk>
6
7 * display.texi (Display Custom): Add `overflow-newline-into-fringe',
8 `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'.
9
12004-09-20 Richard M. Stallman <rms@gnu.org> 102004-09-20 Richard M. Stallman <rms@gnu.org>
2 11
3 * custom.texi (Hooks): Explain using setq to clear out a hook. 12 * custom.texi (Hooks): Explain using setq to clear out a hook.
diff --git a/man/calc.texi b/man/calc.texi
index 4aee142d198..8c3a3c5f92c 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -4108,7 +4108,13 @@ graphics window. For other kinds of displays, the default is to
4108display the graph in Emacs itself using rough character graphics. 4108display the graph in Emacs itself using rough character graphics.
4109Press @kbd{q} when you are done viewing the character graphics. 4109Press @kbd{q} when you are done viewing the character graphics.
4110 4110
4111Next, let's add the line we got from our least-squares fit: 4111Next, let's add the line we got from our least-squares fit.
4112@ifinfo
4113(If you are reading this tutorial on-line while running Calc, typing
4114@kbd{g a} may cause the tutorial to disappear from its window and be
4115replaced by a buffer named @samp{*Gnuplot Commands*}. The tutorial
4116will reappear when you terminate GNUPLOT by typing @kbd{g q}.)
4117@end ifinfo
4112 4118
4113@smallexample 4119@smallexample
4114@group 4120@group
diff --git a/man/display.texi b/man/display.texi
index b78eb8ab939..7d5e8ef84e0 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -990,6 +990,45 @@ the value of @code{truncate-lines}. For information about side-by-side
990windows, see @ref{Split Window}. See also @ref{Display,, Display, 990windows, see @ref{Split Window}. See also @ref{Display,, Display,
991elisp, The Emacs Lisp Reference Manual}. 991elisp, The Emacs Lisp Reference Manual}.
992 992
993@vindex overflow-newline-into-fringe
994 If the variable @code{overflow-newline-into-fringe} is
995non-@code{nil} on a window system, it specifies that lines which are
996exactly as wide as the window (not counting the final newline
997character) shall not be broken into two lines on the display (with
998just the newline on the second line). Instead, the newline
999overflows into the right fringe, and the cursor will be displayed in
1000the fringe when positioned on that newline.
1001
1002@vindex indicate-buffer-boundaries
1003 On a window system, Emacs may indicate the buffer boundaries in the
1004fringes. The buffer boundaries, i.e. first and last line in the
1005buffer, can be marked with angle bitmaps in the left or right fringe.
1006This can be combined with up and down arrow bitmaps shown at the top
1007and bottom of the left or right fringe if the window can be scrolled
1008in either direction.
1009
1010The buffer-local variable @code{indicate-buffer-boundaries} controls
1011how the buffer boundaries and window scrolling is indicated in the
1012fringes.
1013
1014If the value is @code{left} or @code{right}, both angle and arrow
1015bitmaps are displayed in the left or right fringe, respectively.
1016Any other non-@code{nil} value causes the bitmap on the top line to be
1017displayed in the left fringe, and the bitmap on the bottom line in the
1018right fringe.
1019
1020If value is a cons @code{(angles . arrows)}, the car specifies the
1021position of the angle bitmaps, and the cdr specifies the position of
1022the arrow bitmaps. For example, @code{(t . right)} places the top
1023angle bitmap in left fringe, the bottom angle bitmap in right fringe,
1024and both arrow bitmaps in right fringe. To show just the angle
1025bitmaps in the left fringe, but no arrow bitmaps, use @code{(left . nil)}.
1026
1027@vindex default-indicate-buffer-boundaries
1028 The value of the variable @code{default-indicate-buffer-boundaries}
1029is the default value for @code{indicate-buffer-boundaries} in buffers
1030that do not override it.
1031
993@vindex baud-rate 1032@vindex baud-rate
994 The variable @code{baud-rate} holds the output speed of the 1033 The variable @code{baud-rate} holds the output speed of the
995terminal, as far as Emacs knows. Setting this variable does not 1034terminal, as far as Emacs knows. Setting this variable does not
diff --git a/src/ChangeLog b/src/ChangeLog
index e71a0e3217d..f7e62c1ce21 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12004-09-24 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * config.in: Rebuild.
4
5 * Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
6
12004-09-18 Stefan Monnier <monnier@iro.umontreal.ca> 72004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
2 8
3 * xterm.c (x_term_init): Work around a bug in some X servers. 9 * xterm.c (x_term_init): Work around a bug in some X servers.
diff --git a/src/Makefile.in b/src/Makefile.in
index 007c0584c5a..950564f8fa4 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -887,6 +887,13 @@ LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
887#define OBJECTS_MACHINE 887#define OBJECTS_MACHINE
888#endif 888#endif
889 889
890#ifdef HAVE_EXECSHIELD
891#undef i386
892RUN_TEMACS = @SETARCH@ i386 ./temacs
893#else
894RUN_TEMACS = ./temacs
895#endif
896
890all: emacs${EXEEXT} OTHER_FILES 897all: emacs${EXEEXT} OTHER_FILES
891 898
892emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} 899emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
@@ -895,9 +902,9 @@ emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
895 ln temacs${EXEEXT} emacs${EXEEXT} 902 ln temacs${EXEEXT} emacs${EXEEXT}
896#else 903#else
897#ifdef HAVE_SHM 904#ifdef HAVE_SHM
898 LC_ALL=C ./temacs -nl -batch -l loadup dump 905 LC_ALL=C $(RUN_TEMACS) -nl -batch -l loadup dump
899#else /* ! defined (HAVE_SHM) */ 906#else /* ! defined (HAVE_SHM) */
900 LC_ALL=C ./temacs -batch -l loadup dump 907 LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
901#endif /* ! defined (HAVE_SHM) */ 908#endif /* ! defined (HAVE_SHM) */
902#endif /* ! defined (CANNOT_DUMP) */ 909#endif /* ! defined (CANNOT_DUMP) */
903 -./emacs -q -batch -f list-load-path-shadows 910 -./emacs -q -batch -f list-load-path-shadows
@@ -1326,9 +1333,9 @@ bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
1326 ln temacs${EXEEXT} bootstrap-emacs${EXEEXT} 1333 ln temacs${EXEEXT} bootstrap-emacs${EXEEXT}
1327#else 1334#else
1328#ifdef HAVE_SHM 1335#ifdef HAVE_SHM
1329 ./temacs -nl -batch -l loadup bootstrap 1336 $(RUN_TEMACS) -nl -batch -l loadup bootstrap
1330#else /* ! defined (HAVE_SHM) */ 1337#else /* ! defined (HAVE_SHM) */
1331 ./temacs --batch --load loadup bootstrap 1338 $(RUN_TEMACS) --batch --load loadup bootstrap
1332#endif /* ! defined (HAVE_SHM) */ 1339#endif /* ! defined (HAVE_SHM) */
1333 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT} 1340 mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
1334#endif /* ! defined (CANNOT_DUMP) */ 1341#endif /* ! defined (CANNOT_DUMP) */
diff --git a/src/config.in b/src/config.in
index 0fb4b3f3444..fac26db0a84 100644
--- a/src/config.in
+++ b/src/config.in
@@ -136,6 +136,9 @@ Boston, MA 02111-1307, USA. */
136/* Define to 1 if you have the `euidaccess' function. */ 136/* Define to 1 if you have the `euidaccess' function. */
137#undef HAVE_EUIDACCESS 137#undef HAVE_EUIDACCESS
138 138
139/* Define to 1 if this OS has exec shield. */
140#undef HAVE_EXECSHIELD
141
139/* Define to 1 if you have the <fcntl.h> header file. */ 142/* Define to 1 if you have the <fcntl.h> header file. */
140#undef HAVE_FCNTL_H 143#undef HAVE_FCNTL_H
141 144